@cratis/scene.blueprint.default 4.40.0 → 4.42.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 (251) hide show
  1. package/ComponentName.ts +9 -0
  2. package/defaultBlueprint.ts +1 -0
  3. package/defaultBlueprintComponents.ts +4 -1
  4. package/dist/cjs/ComponentName.js +3 -0
  5. package/dist/cjs/ComponentName.js.map +1 -1
  6. package/dist/cjs/defaultBlueprint.js +20 -1
  7. package/dist/cjs/defaultBlueprint.js.map +1 -1
  8. package/dist/cjs/defaultBlueprintComponentMetadata.js +11 -0
  9. package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
  10. package/dist/cjs/defaultBlueprintComponents.js +17 -0
  11. package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
  12. package/dist/cjs/foundation/ActionButton.js.map +1 -1
  13. package/dist/cjs/foundation/ActionButtonControl.js +46 -0
  14. package/dist/cjs/foundation/ActionButtonControl.js.map +1 -0
  15. package/dist/cjs/foundation/DialogFrame.js +196 -0
  16. package/dist/cjs/foundation/DialogFrame.js.map +1 -0
  17. package/dist/cjs/foundation/FormScreenBody.js +13 -3
  18. package/dist/cjs/foundation/FormScreenBody.js.map +1 -1
  19. package/dist/cjs/foundation/Notice.js +51 -0
  20. package/dist/cjs/foundation/Notice.js.map +1 -0
  21. package/dist/cjs/foundation/formModel.js +1 -0
  22. package/dist/cjs/foundation/formModel.js.map +1 -1
  23. package/dist/cjs/foundation/foundationComponentMetadata.js +22 -0
  24. package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
  25. package/dist/cjs/foundation/foundationDescriptors.js +89 -0
  26. package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
  27. package/dist/cjs/foundation/foundationSamples.js +29 -0
  28. package/dist/cjs/foundation/foundationSamples.js.map +1 -1
  29. package/dist/cjs/foundation/foundationStrings.js +3 -1
  30. package/dist/cjs/foundation/foundationStrings.js.map +1 -1
  31. package/dist/cjs/foundation/templates/boardScreenTemplate.js +76 -0
  32. package/dist/cjs/foundation/templates/boardScreenTemplate.js.map +1 -0
  33. package/dist/cjs/foundation/templates/dashboardScreenTemplate.js +128 -0
  34. package/dist/cjs/foundation/templates/dashboardScreenTemplate.js.map +1 -0
  35. package/dist/cjs/foundation/templates/dialogTemplates.js +254 -0
  36. package/dist/cjs/foundation/templates/dialogTemplates.js.map +1 -0
  37. package/dist/cjs/foundation/templates/formScreenTemplate.js +71 -0
  38. package/dist/cjs/foundation/templates/formScreenTemplate.js.map +1 -0
  39. package/dist/cjs/foundation/templates/index.js +57 -0
  40. package/dist/cjs/foundation/templates/index.js.map +1 -0
  41. package/dist/cjs/foundation/templates/listScreenTemplate.js +124 -0
  42. package/dist/cjs/foundation/templates/listScreenTemplate.js.map +1 -0
  43. package/dist/cjs/foundation/templates/masterDetailScreenTemplate.js +79 -0
  44. package/dist/cjs/foundation/templates/masterDetailScreenTemplate.js.map +1 -0
  45. package/dist/cjs/foundation/templates/recordPageTemplate.js +137 -0
  46. package/dist/cjs/foundation/templates/recordPageTemplate.js.map +1 -0
  47. package/dist/cjs/foundation/templates/stateScreenTemplates.js +252 -0
  48. package/dist/cjs/foundation/templates/stateScreenTemplates.js.map +1 -0
  49. package/dist/cjs/foundation/templates/templateParts.js +38 -0
  50. package/dist/cjs/foundation/templates/templateParts.js.map +1 -0
  51. package/dist/cjs/foundation/templates/wizardScreenTemplate.js +95 -0
  52. package/dist/cjs/foundation/templates/wizardScreenTemplate.js.map +1 -0
  53. package/dist/cjs/foundation/templates/workspaceScreenTemplate.js +62 -0
  54. package/dist/cjs/foundation/templates/workspaceScreenTemplate.js.map +1 -0
  55. package/dist/cjs/gallery/GalleryDialogPreview.js +62 -0
  56. package/dist/cjs/gallery/GalleryDialogPreview.js.map +1 -0
  57. package/dist/cjs/gallery/GalleryScreenPreview.js +78 -4
  58. package/dist/cjs/gallery/GalleryScreenPreview.js.map +1 -1
  59. package/dist/cjs/gallery/applicationChrome.js +18 -1
  60. package/dist/cjs/gallery/applicationChrome.js.map +1 -1
  61. package/dist/cjs/gallery/composeScreen.js +5 -3
  62. package/dist/cjs/gallery/composeScreen.js.map +1 -1
  63. package/dist/cjs/gallery/dialogTemplates.js +41 -36
  64. package/dist/cjs/gallery/dialogTemplates.js.map +1 -1
  65. package/dist/cjs/gallery/screens.js +87 -3
  66. package/dist/cjs/gallery/screens.js.map +1 -1
  67. package/dist/cjs/index.js +61 -5
  68. package/dist/cjs/index.js.map +1 -1
  69. package/dist/esm/ComponentName.d.ts +3 -0
  70. package/dist/esm/ComponentName.d.ts.map +1 -1
  71. package/dist/esm/ComponentName.js +3 -0
  72. package/dist/esm/ComponentName.js.map +1 -1
  73. package/dist/esm/defaultBlueprint.d.ts.map +1 -1
  74. package/dist/esm/defaultBlueprint.js +20 -1
  75. package/dist/esm/defaultBlueprint.js.map +1 -1
  76. package/dist/esm/defaultBlueprintComponentMetadata.js +11 -0
  77. package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
  78. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
  79. package/dist/esm/defaultBlueprintComponents.js +17 -0
  80. package/dist/esm/defaultBlueprintComponents.js.map +1 -1
  81. package/dist/esm/foundation/ActionButton.d.ts +1 -1
  82. package/dist/esm/foundation/ActionButton.d.ts.map +1 -1
  83. package/dist/esm/foundation/ActionButton.js.map +1 -1
  84. package/dist/esm/foundation/ActionButtonControl.d.ts +3 -0
  85. package/dist/esm/foundation/ActionButtonControl.d.ts.map +1 -0
  86. package/dist/esm/foundation/ActionButtonControl.js +44 -0
  87. package/dist/esm/foundation/ActionButtonControl.js.map +1 -0
  88. package/dist/esm/foundation/DialogFrame.d.ts +14 -0
  89. package/dist/esm/foundation/DialogFrame.d.ts.map +1 -0
  90. package/dist/esm/foundation/DialogFrame.js +190 -0
  91. package/dist/esm/foundation/DialogFrame.js.map +1 -0
  92. package/dist/esm/foundation/FormScreenBody.d.ts.map +1 -1
  93. package/dist/esm/foundation/FormScreenBody.js +13 -3
  94. package/dist/esm/foundation/FormScreenBody.js.map +1 -1
  95. package/dist/esm/foundation/Notice.d.ts +3 -0
  96. package/dist/esm/foundation/Notice.d.ts.map +1 -0
  97. package/dist/esm/foundation/Notice.js +49 -0
  98. package/dist/esm/foundation/Notice.js.map +1 -0
  99. package/dist/esm/foundation/formModel.d.ts +2 -1
  100. package/dist/esm/foundation/formModel.d.ts.map +1 -1
  101. package/dist/esm/foundation/formModel.js +1 -0
  102. package/dist/esm/foundation/formModel.js.map +1 -1
  103. package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
  104. package/dist/esm/foundation/foundationComponentMetadata.js +22 -0
  105. package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -1
  106. package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -1
  107. package/dist/esm/foundation/foundationDescriptors.js +89 -0
  108. package/dist/esm/foundation/foundationDescriptors.js.map +1 -1
  109. package/dist/esm/foundation/foundationSamples.d.ts.map +1 -1
  110. package/dist/esm/foundation/foundationSamples.js +29 -0
  111. package/dist/esm/foundation/foundationSamples.js.map +1 -1
  112. package/dist/esm/foundation/foundationStrings.d.ts +2 -0
  113. package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
  114. package/dist/esm/foundation/foundationStrings.js +3 -1
  115. package/dist/esm/foundation/foundationStrings.js.map +1 -1
  116. package/dist/esm/foundation/index.d.ts +4 -0
  117. package/dist/esm/foundation/index.d.ts.map +1 -1
  118. package/dist/esm/foundation/index.js +4 -0
  119. package/dist/esm/foundation/index.js.map +1 -1
  120. package/dist/esm/foundation/templates/boardScreenTemplate.d.ts +3 -0
  121. package/dist/esm/foundation/templates/boardScreenTemplate.d.ts.map +1 -0
  122. package/dist/esm/foundation/templates/boardScreenTemplate.js +74 -0
  123. package/dist/esm/foundation/templates/boardScreenTemplate.js.map +1 -0
  124. package/dist/esm/foundation/templates/dashboardScreenTemplate.d.ts +3 -0
  125. package/dist/esm/foundation/templates/dashboardScreenTemplate.d.ts.map +1 -0
  126. package/dist/esm/foundation/templates/dashboardScreenTemplate.js +126 -0
  127. package/dist/esm/foundation/templates/dashboardScreenTemplate.js.map +1 -0
  128. package/dist/esm/foundation/templates/dialogTemplates.d.ts +20 -0
  129. package/dist/esm/foundation/templates/dialogTemplates.d.ts.map +1 -0
  130. package/dist/esm/foundation/templates/dialogTemplates.js +243 -0
  131. package/dist/esm/foundation/templates/dialogTemplates.js.map +1 -0
  132. package/dist/esm/foundation/templates/formScreenTemplate.d.ts +3 -0
  133. package/dist/esm/foundation/templates/formScreenTemplate.d.ts.map +1 -0
  134. package/dist/esm/foundation/templates/formScreenTemplate.js +69 -0
  135. package/dist/esm/foundation/templates/formScreenTemplate.js.map +1 -0
  136. package/dist/esm/foundation/templates/index.d.ts +13 -0
  137. package/dist/esm/foundation/templates/index.d.ts.map +1 -0
  138. package/dist/esm/foundation/templates/index.js +27 -0
  139. package/dist/esm/foundation/templates/index.js.map +1 -0
  140. package/dist/esm/foundation/templates/listScreenTemplate.d.ts +3 -0
  141. package/dist/esm/foundation/templates/listScreenTemplate.d.ts.map +1 -0
  142. package/dist/esm/foundation/templates/listScreenTemplate.js +122 -0
  143. package/dist/esm/foundation/templates/listScreenTemplate.js.map +1 -0
  144. package/dist/esm/foundation/templates/masterDetailScreenTemplate.d.ts +3 -0
  145. package/dist/esm/foundation/templates/masterDetailScreenTemplate.d.ts.map +1 -0
  146. package/dist/esm/foundation/templates/masterDetailScreenTemplate.js +77 -0
  147. package/dist/esm/foundation/templates/masterDetailScreenTemplate.js.map +1 -0
  148. package/dist/esm/foundation/templates/recordPageTemplate.d.ts +3 -0
  149. package/dist/esm/foundation/templates/recordPageTemplate.d.ts.map +1 -0
  150. package/dist/esm/foundation/templates/recordPageTemplate.js +135 -0
  151. package/dist/esm/foundation/templates/recordPageTemplate.js.map +1 -0
  152. package/dist/esm/foundation/templates/stateScreenTemplates.d.ts +8 -0
  153. package/dist/esm/foundation/templates/stateScreenTemplates.d.ts.map +1 -0
  154. package/dist/esm/foundation/templates/stateScreenTemplates.js +245 -0
  155. package/dist/esm/foundation/templates/stateScreenTemplates.js.map +1 -0
  156. package/dist/esm/foundation/templates/templateParts.d.ts +6 -0
  157. package/dist/esm/foundation/templates/templateParts.d.ts.map +1 -0
  158. package/dist/esm/foundation/templates/templateParts.js +33 -0
  159. package/dist/esm/foundation/templates/templateParts.js.map +1 -0
  160. package/dist/esm/foundation/templates/wizardScreenTemplate.d.ts +3 -0
  161. package/dist/esm/foundation/templates/wizardScreenTemplate.d.ts.map +1 -0
  162. package/dist/esm/foundation/templates/wizardScreenTemplate.js +93 -0
  163. package/dist/esm/foundation/templates/wizardScreenTemplate.js.map +1 -0
  164. package/dist/esm/foundation/templates/workspaceScreenTemplate.d.ts +3 -0
  165. package/dist/esm/foundation/templates/workspaceScreenTemplate.d.ts.map +1 -0
  166. package/dist/esm/foundation/templates/workspaceScreenTemplate.js +60 -0
  167. package/dist/esm/foundation/templates/workspaceScreenTemplate.js.map +1 -0
  168. package/dist/esm/gallery/FoundationDialogs.stories.d.ts +35 -0
  169. package/dist/esm/gallery/FoundationDialogs.stories.d.ts.map +1 -0
  170. package/dist/esm/gallery/FoundationDialogs.stories.js +38 -0
  171. package/dist/esm/gallery/FoundationDialogs.stories.js.map +1 -0
  172. package/dist/esm/gallery/GalleryDialogPreview.d.ts +17 -0
  173. package/dist/esm/gallery/GalleryDialogPreview.d.ts.map +1 -0
  174. package/dist/esm/gallery/GalleryDialogPreview.js +59 -0
  175. package/dist/esm/gallery/GalleryDialogPreview.js.map +1 -0
  176. package/dist/esm/gallery/GalleryScreenPreview.d.ts +13 -2
  177. package/dist/esm/gallery/GalleryScreenPreview.d.ts.map +1 -1
  178. package/dist/esm/gallery/GalleryScreenPreview.js +77 -5
  179. package/dist/esm/gallery/GalleryScreenPreview.js.map +1 -1
  180. package/dist/esm/gallery/applicationChrome.d.ts.map +1 -1
  181. package/dist/esm/gallery/applicationChrome.js +18 -1
  182. package/dist/esm/gallery/applicationChrome.js.map +1 -1
  183. package/dist/esm/gallery/composeScreen.d.ts.map +1 -1
  184. package/dist/esm/gallery/composeScreen.js +5 -3
  185. package/dist/esm/gallery/composeScreen.js.map +1 -1
  186. package/dist/esm/gallery/dialogTemplates.d.ts.map +1 -1
  187. package/dist/esm/gallery/dialogTemplates.js +42 -37
  188. package/dist/esm/gallery/dialogTemplates.js.map +1 -1
  189. package/dist/esm/gallery/index.d.ts +1 -0
  190. package/dist/esm/gallery/index.d.ts.map +1 -1
  191. package/dist/esm/gallery/index.js +1 -0
  192. package/dist/esm/gallery/index.js.map +1 -1
  193. package/dist/esm/gallery/screens.d.ts.map +1 -1
  194. package/dist/esm/gallery/screens.js +87 -3
  195. package/dist/esm/gallery/screens.js.map +1 -1
  196. package/dist/esm/index.js +17 -1
  197. package/dist/esm/index.js.map +1 -1
  198. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  199. package/foundation/ActionButton.tsx +1 -1
  200. package/foundation/ActionButtonControl.tsx +37 -0
  201. package/foundation/DialogFrame.tsx +138 -0
  202. package/foundation/FormScreenBody.tsx +6 -3
  203. package/foundation/Notice.tsx +33 -0
  204. package/foundation/formModel.ts +1 -0
  205. package/foundation/foundationComponentMetadata.ts +3 -0
  206. package/foundation/foundationDescriptors.ts +41 -0
  207. package/foundation/foundationSamples.ts +3 -0
  208. package/foundation/foundationStrings.ts +2 -0
  209. package/foundation/index.ts +4 -0
  210. package/foundation/templates/boardScreenTemplate.ts +28 -0
  211. package/foundation/templates/dashboardScreenTemplate.ts +37 -0
  212. package/foundation/templates/dialogTemplates.ts +114 -0
  213. package/foundation/templates/formScreenTemplate.ts +28 -0
  214. package/foundation/templates/index.ts +28 -0
  215. package/foundation/templates/listScreenTemplate.ts +37 -0
  216. package/foundation/templates/masterDetailScreenTemplate.ts +28 -0
  217. package/foundation/templates/recordPageTemplate.ts +36 -0
  218. package/foundation/templates/stateScreenTemplates.ts +107 -0
  219. package/foundation/templates/templateParts.ts +30 -0
  220. package/foundation/templates/wizardScreenTemplate.ts +33 -0
  221. package/foundation/templates/workspaceScreenTemplate.ts +27 -0
  222. package/gallery/FoundationDialogs.stories.tsx +74 -0
  223. package/gallery/GalleryDialogPreview.tsx +68 -0
  224. package/gallery/GalleryScreenPreview.tsx +64 -5
  225. package/gallery/applicationChrome.ts +6 -1
  226. package/gallery/composeScreen.ts +4 -2
  227. package/gallery/dialogTemplates.ts +22 -17
  228. package/gallery/index.ts +1 -0
  229. package/gallery/screens.ts +18 -2
  230. package/package.json +10 -8
  231. package/sampleData/foundation-en.json +661 -0
  232. package/shell/layout.css +219 -0
  233. package/thumbnails/BoardScreen.svg +15 -0
  234. package/thumbnails/ConfirmDialog.svg +12 -0
  235. package/thumbnails/DashboardScreen.svg +18 -0
  236. package/thumbnails/DetailDialog.svg +11 -0
  237. package/thumbnails/ErrorScreen.svg +11 -0
  238. package/thumbnails/FilterDialog.svg +16 -0
  239. package/thumbnails/ForbiddenScreen.svg +10 -0
  240. package/thumbnails/FormDialog.svg +12 -0
  241. package/thumbnails/FormScreen.svg +14 -0
  242. package/thumbnails/ListScreen.svg +16 -0
  243. package/thumbnails/LoginScreen.svg +12 -0
  244. package/thumbnails/LookupDialog.svg +13 -0
  245. package/thumbnails/MasterDetailScreen.svg +22 -0
  246. package/thumbnails/NotFoundScreen.svg +9 -0
  247. package/thumbnails/QuickCreateDialog.svg +12 -0
  248. package/thumbnails/RecordPage.svg +17 -0
  249. package/thumbnails/SideSheet.svg +13 -0
  250. package/thumbnails/WizardScreen.svg +16 -0
  251. package/thumbnails/WorkspaceScreen.svg +12 -0
package/ComponentName.ts CHANGED
@@ -112,6 +112,15 @@ export enum ComponentName {
112
112
  /** A module's sections as tabs or a left rail. */
113
113
  SubNavigation = 'subNavigation',
114
114
 
115
+ /** The head of a dialog template: title, message, consequences and the close button, and the focus handling of the dialog it opens in. */
116
+ DialogFrame = 'dialogFrame',
117
+
118
+ /** One action of a screen or dialog, with the permission rule and the behaviors of the element. */
119
+ ActionButton = 'actionButton',
120
+
121
+ /** One message about the region it sits in, as a live region. */
122
+ Notice = 'notice',
123
+
115
124
  /** The bar that appears when records are selected, with the bulk actions. */
116
125
  BulkBar = 'bulkBar',
117
126
 
@@ -46,6 +46,7 @@ export const defaultBlueprintManifest: ScenePackage = {
46
46
  module: '@cratis/scene.blueprint.default',
47
47
  license: 'MIT',
48
48
  licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE',
49
+ sampleData: [{ id: 'foundation-en', title: 'Foundation · English', locale: 'en-GB', path: 'sampleData/foundation-en.json' }],
49
50
  };
50
51
 
51
52
  /**
@@ -4,7 +4,7 @@
4
4
  import { ComponentRegistry, componentRegistryKey } from '@cratis/scene.react';
5
5
  import { ComponentName } from './ComponentName';
6
6
  import { defaultBlueprintName } from './packageName';
7
- import { BulkBar, DataList, FormScreenBody, GlobalSearch, KanbanBoard, NotificationsButton, SubNavigation, TabSet, WizardProgress, ActivityFeed, ApprovalChainStepper, AvatarStack, ChartWrapper, ChecklistSection, ColumnChooser, FileUploader, EmptyState, FilterBuilder, OrgTree, PermissionMatrix, SavedViewsMenu, StatCard, StatusChip, TrendChip } from './foundation';
7
+ import { ActionButtonControl, DialogFrame, Notice, BulkBar, DataList, FormScreenBody, GlobalSearch, KanbanBoard, NotificationsButton, SubNavigation, TabSet, WizardProgress, ActivityFeed, ApprovalChainStepper, AvatarStack, ChartWrapper, ChecklistSection, ColumnChooser, FileUploader, EmptyState, FilterBuilder, OrgTree, PermissionMatrix, SavedViewsMenu, StatCard, StatusChip, TrendChip } from './foundation';
8
8
  import {
9
9
  AppShell,
10
10
  Breadcrumb,
@@ -67,6 +67,9 @@ export const defaultBlueprintComponents: ComponentRegistry = {
67
67
  [componentRegistryKey(defaultBlueprintName, ComponentName.DataList)]: DataList,
68
68
  [componentRegistryKey(defaultBlueprintName, ComponentName.TabSet)]: TabSet,
69
69
  [componentRegistryKey(defaultBlueprintName, ComponentName.SubNavigation)]: SubNavigation,
70
+ [componentRegistryKey(defaultBlueprintName, ComponentName.DialogFrame)]: DialogFrame,
71
+ [componentRegistryKey(defaultBlueprintName, ComponentName.ActionButton)]: ActionButtonControl,
72
+ [componentRegistryKey(defaultBlueprintName, ComponentName.Notice)]: Notice,
70
73
  [componentRegistryKey(defaultBlueprintName, ComponentName.BulkBar)]: BulkBar,
71
74
  [componentRegistryKey(defaultBlueprintName, ComponentName.GlobalSearch)]: GlobalSearch,
72
75
  [componentRegistryKey(defaultBlueprintName, ComponentName.NotificationsButton)]: NotificationsButton,
@@ -44,6 +44,9 @@
44
44
  /** List of records as table, cards or grouped, with search, sort, paging, selection and row actions. */ ComponentName["DataList"] = "dataList";
45
45
  /** Tabs with a panel for each, kept in the address. */ ComponentName["TabSet"] = "tabSet";
46
46
  /** A module's sections as tabs or a left rail. */ ComponentName["SubNavigation"] = "subNavigation";
47
+ /** The head of a dialog template: title, message, consequences and the close button, and the focus handling of the dialog it opens in. */ ComponentName["DialogFrame"] = "dialogFrame";
48
+ /** One action of a screen or dialog, with the permission rule and the behaviors of the element. */ ComponentName["ActionButton"] = "actionButton";
49
+ /** One message about the region it sits in, as a live region. */ ComponentName["Notice"] = "notice";
47
50
  /** The bar that appears when records are selected, with the bulk actions. */ ComponentName["BulkBar"] = "bulkBar";
48
51
  /** A search box for the topbar or a toolbar. */ ComponentName["GlobalSearch"] = "globalSearch";
49
52
  /** The topbar bell with the unread count. */ ComponentName["NotificationsButton"] = "notificationsButton";
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentName.js","sources":["../../ComponentName.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 bare names this package declares components under.\n *\n * A page template writes a bare name and `resolveComponentName` decides which active package wins it, so\n * these names are public API: renaming one breaks every template that referenced it, in this package and\n * in anyone else's. Keeping them in one enum means the manifest, the registry and every template\n * reference the same symbol, and the specs can prove all three agree rather than hoping they do.\n */\nexport enum ComponentName {\n /** The application shell - topbar, sidebar, breadcrumb, content, footer and an optional right panel. */\n AppShell = 'appShell',\n\n /** The chrome-less shell - content, an optional branding aside, and the configurator. */\n FullPageShell = 'fullPageShell',\n\n /** The fixed strip across the top of the application shell. */\n Topbar = 'topbar',\n\n /** The sidebar's own chrome, inside the shell-positioned panel. */\n Sidebar = 'sidebar',\n\n /** A navigation list. */\n Menu = 'menu',\n\n /** One entry in a navigation list, optionally with a submenu. */\n MenuItem = 'menuItem',\n\n /** The trail above the content. */\n Breadcrumb = 'breadcrumb',\n\n /** The strip below the content. */\n Footer = 'footer',\n\n /** The inspector panel down the right-hand edge. */\n RightPanel = 'rightPanel',\n\n /** The floating configurator: color scheme, layout mode, menu theme and theme. */\n ConfigPanel = 'configPanel',\n\n /** A screen's title, subtitle and actions. */\n PageHeader = 'pageHeader',\n\n /** The scrim behind a floating sidebar, which also closes it. */\n Mask = 'mask',\n\n /** The brand mark. */\n Logo = 'logo',\n\n /** The signed-in user's avatar and menu. */\n UserMenu = 'userMenu',\n\n /** Switches between the themes a host offers. */\n ThemeSwitcher = 'themeSwitcher',\n\n /** Switches between the layout modes. */\n LayoutModeSwitcher = 'layoutModeSwitcher',\n\n /** An icon, a headline, a hint and one primary action: what a region says when it has nothing to show. */\n EmptyState = 'emptyState',\n\n /** One key figure with its label, trend and comparison period. */\n StatCard = 'statCard',\n\n /** A change drawn as a direction, a magnitude and whether it is good. */\n TrendChip = 'trendChip',\n\n /** A status as a semantic color, an icon and its text. */\n StatusChip = 'statusChip',\n\n /** One chart - line, bar, stacked, donut or funnel - with its legend and a table of the same data. */\n ChartWrapper = 'chartWrapper',\n\n /** Conditions on fields, joined by AND or OR in nested groups. */\n FilterBuilder = 'filterBuilder',\n\n /** Which columns a table shows, and in what order. */\n ColumnChooser = 'columnChooser',\n\n /** A list's saved views as a menu button. */\n SavedViewsMenu = 'savedViewsMenu',\n\n /** Sections of tasks with owner, due date and progress. */\n ChecklistSection = 'checklistSection',\n\n /** What happened to a record, grouped by day. */\n ActivityFeed = 'activityFeed',\n\n /** Overlapping avatars for the people on a record. */\n AvatarStack = 'avatarStack',\n\n /** A drop zone and file picker with type and size checks. */\n FileUploader = 'fileUploader',\n\n /** The steps a request goes through, who decides each, and where it stands. */\n ApprovalChainStepper = 'approvalChainStepper',\n\n /** An organization as an expandable tree. */\n OrgTree = 'orgTree',\n\n /** Roles across, permissions down, a checkbox where they meet. */\n PermissionMatrix = 'permissionMatrix',\n\n /** List of records as table, cards or grouped, with search, sort, paging, selection and row actions. */\n DataList = 'dataList',\n\n /** Tabs with a panel for each, kept in the address. */\n TabSet = 'tabSet',\n\n /** A module's sections as tabs or a left rail. */\n SubNavigation = 'subNavigation',\n\n /** The bar that appears when records are selected, with the bulk actions. */\n BulkBar = 'bulkBar',\n\n /** A search box for the topbar or a toolbar. */\n GlobalSearch = 'globalSearch',\n\n /** The topbar bell with the unread count. */\n NotificationsButton = 'notificationsButton',\n\n /** Columns mapped to a status with cards that move between them. */\n KanbanBoard = 'kanbanBoard',\n\n /** The steps, back/next/finish and draft save of a linear wizard. */\n WizardProgress = 'wizardProgress',\n\n /** Sections of validated fields with the save bar and unsaved-changes guard. */\n FormScreenBody = 'formScreenBody',\n}\n"],"names":["ComponentName"],"mappings":";;AAAA;AACA;AAEA;;;;;;;IAQO,IAAKA,aAAAA,iBAAAA,SAAAA,aAAAA,EAAAA;6GAC8F,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;8FAGf,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;oEAG1B,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;wEAGI,aAAA,CAAA,SAAA,CAAA,GAAA,SAAA;8BAG1C,aAAA,CAAA,MAAA,CAAA,GAAA,MAAA;sEAGwC,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;wCAG9B,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;wCAGA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;yDAGiB,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;uFAG8B,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;mDAGpC,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;sEAGmB,aAAA,CAAA,MAAA,CAAA,GAAA,MAAA;2BAG3C,aAAA,CAAA,MAAA,CAAA,GAAA,MAAA;iDAGsB,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;sDAGK,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;8CAGR,aAAA,CAAA,oBAAA,CAAA,GAAA,oBAAA;+GAGiE,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;uEAGxC,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;8EAGO,aAAA,CAAA,WAAA,CAAA,GAAA,WAAA;+DAGf,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;2GAG4C,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;uEAGpC,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;2DAGZ,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;kDAGT,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;gEAGc,aAAA,CAAA,kBAAA,CAAA,GAAA,kBAAA;sDAGV,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;2DAGK,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;kEAGO,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;oFAGkB,aAAA,CAAA,sBAAA,CAAA,GAAA,sBAAA;kDAGlC,aAAA,CAAA,SAAA,CAAA,GAAA,SAAA;uEAGqB,aAAA,CAAA,kBAAA,CAAA,GAAA,kBAAA;6GAGsC,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;4DAGjD,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;uDAGL,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;kFAG2B,aAAA,CAAA,SAAA,CAAA,GAAA,SAAA;qDAG7B,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;kDAGH,aAAA,CAAA,qBAAA,CAAA,GAAA,qBAAA;yEAGuB,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;0EAGC,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;qFAGW,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;AAtHtEA,IAAAA,OAAAA,aAAAA;AAwHX,CAAA,CAAA,EAAA;;"}
1
+ {"version":3,"file":"ComponentName.js","sources":["../../ComponentName.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 bare names this package declares components under.\n *\n * A page template writes a bare name and `resolveComponentName` decides which active package wins it, so\n * these names are public API: renaming one breaks every template that referenced it, in this package and\n * in anyone else's. Keeping them in one enum means the manifest, the registry and every template\n * reference the same symbol, and the specs can prove all three agree rather than hoping they do.\n */\nexport enum ComponentName {\n /** The application shell - topbar, sidebar, breadcrumb, content, footer and an optional right panel. */\n AppShell = 'appShell',\n\n /** The chrome-less shell - content, an optional branding aside, and the configurator. */\n FullPageShell = 'fullPageShell',\n\n /** The fixed strip across the top of the application shell. */\n Topbar = 'topbar',\n\n /** The sidebar's own chrome, inside the shell-positioned panel. */\n Sidebar = 'sidebar',\n\n /** A navigation list. */\n Menu = 'menu',\n\n /** One entry in a navigation list, optionally with a submenu. */\n MenuItem = 'menuItem',\n\n /** The trail above the content. */\n Breadcrumb = 'breadcrumb',\n\n /** The strip below the content. */\n Footer = 'footer',\n\n /** The inspector panel down the right-hand edge. */\n RightPanel = 'rightPanel',\n\n /** The floating configurator: color scheme, layout mode, menu theme and theme. */\n ConfigPanel = 'configPanel',\n\n /** A screen's title, subtitle and actions. */\n PageHeader = 'pageHeader',\n\n /** The scrim behind a floating sidebar, which also closes it. */\n Mask = 'mask',\n\n /** The brand mark. */\n Logo = 'logo',\n\n /** The signed-in user's avatar and menu. */\n UserMenu = 'userMenu',\n\n /** Switches between the themes a host offers. */\n ThemeSwitcher = 'themeSwitcher',\n\n /** Switches between the layout modes. */\n LayoutModeSwitcher = 'layoutModeSwitcher',\n\n /** An icon, a headline, a hint and one primary action: what a region says when it has nothing to show. */\n EmptyState = 'emptyState',\n\n /** One key figure with its label, trend and comparison period. */\n StatCard = 'statCard',\n\n /** A change drawn as a direction, a magnitude and whether it is good. */\n TrendChip = 'trendChip',\n\n /** A status as a semantic color, an icon and its text. */\n StatusChip = 'statusChip',\n\n /** One chart - line, bar, stacked, donut or funnel - with its legend and a table of the same data. */\n ChartWrapper = 'chartWrapper',\n\n /** Conditions on fields, joined by AND or OR in nested groups. */\n FilterBuilder = 'filterBuilder',\n\n /** Which columns a table shows, and in what order. */\n ColumnChooser = 'columnChooser',\n\n /** A list's saved views as a menu button. */\n SavedViewsMenu = 'savedViewsMenu',\n\n /** Sections of tasks with owner, due date and progress. */\n ChecklistSection = 'checklistSection',\n\n /** What happened to a record, grouped by day. */\n ActivityFeed = 'activityFeed',\n\n /** Overlapping avatars for the people on a record. */\n AvatarStack = 'avatarStack',\n\n /** A drop zone and file picker with type and size checks. */\n FileUploader = 'fileUploader',\n\n /** The steps a request goes through, who decides each, and where it stands. */\n ApprovalChainStepper = 'approvalChainStepper',\n\n /** An organization as an expandable tree. */\n OrgTree = 'orgTree',\n\n /** Roles across, permissions down, a checkbox where they meet. */\n PermissionMatrix = 'permissionMatrix',\n\n /** List of records as table, cards or grouped, with search, sort, paging, selection and row actions. */\n DataList = 'dataList',\n\n /** Tabs with a panel for each, kept in the address. */\n TabSet = 'tabSet',\n\n /** A module's sections as tabs or a left rail. */\n SubNavigation = 'subNavigation',\n\n /** The head of a dialog template: title, message, consequences and the close button, and the focus handling of the dialog it opens in. */\n DialogFrame = 'dialogFrame',\n\n /** One action of a screen or dialog, with the permission rule and the behaviors of the element. */\n ActionButton = 'actionButton',\n\n /** One message about the region it sits in, as a live region. */\n Notice = 'notice',\n\n /** The bar that appears when records are selected, with the bulk actions. */\n BulkBar = 'bulkBar',\n\n /** A search box for the topbar or a toolbar. */\n GlobalSearch = 'globalSearch',\n\n /** The topbar bell with the unread count. */\n NotificationsButton = 'notificationsButton',\n\n /** Columns mapped to a status with cards that move between them. */\n KanbanBoard = 'kanbanBoard',\n\n /** The steps, back/next/finish and draft save of a linear wizard. */\n WizardProgress = 'wizardProgress',\n\n /** Sections of validated fields with the save bar and unsaved-changes guard. */\n FormScreenBody = 'formScreenBody',\n}\n"],"names":["ComponentName"],"mappings":";;AAAA;AACA;AAEA;;;;;;;IAQO,IAAKA,aAAAA,iBAAAA,SAAAA,aAAAA,EAAAA;6GAC8F,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;8FAGf,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;oEAG1B,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;wEAGI,aAAA,CAAA,SAAA,CAAA,GAAA,SAAA;8BAG1C,aAAA,CAAA,MAAA,CAAA,GAAA,MAAA;sEAGwC,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;wCAG9B,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;wCAGA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;yDAGiB,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;uFAG8B,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;mDAGpC,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;sEAGmB,aAAA,CAAA,MAAA,CAAA,GAAA,MAAA;2BAG3C,aAAA,CAAA,MAAA,CAAA,GAAA,MAAA;iDAGsB,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;sDAGK,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;8CAGR,aAAA,CAAA,oBAAA,CAAA,GAAA,oBAAA;+GAGiE,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;uEAGxC,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;8EAGO,aAAA,CAAA,WAAA,CAAA,GAAA,WAAA;+DAGf,aAAA,CAAA,YAAA,CAAA,GAAA,YAAA;2GAG4C,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;uEAGpC,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;2DAGZ,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;kDAGT,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;gEAGc,aAAA,CAAA,kBAAA,CAAA,GAAA,kBAAA;sDAGV,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;2DAGK,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;kEAGO,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;oFAGkB,aAAA,CAAA,sBAAA,CAAA,GAAA,sBAAA;kDAGlC,aAAA,CAAA,SAAA,CAAA,GAAA,SAAA;uEAGqB,aAAA,CAAA,kBAAA,CAAA,GAAA,kBAAA;6GAGsC,aAAA,CAAA,UAAA,CAAA,GAAA,UAAA;4DAGjD,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;uDAGL,aAAA,CAAA,eAAA,CAAA,GAAA,eAAA;+IAGwF,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;wGAGvC,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;sEAGlC,aAAA,CAAA,QAAA,CAAA,GAAA,QAAA;kFAGY,aAAA,CAAA,SAAA,CAAA,GAAA,SAAA;qDAG7B,aAAA,CAAA,cAAA,CAAA,GAAA,cAAA;kDAGH,aAAA,CAAA,qBAAA,CAAA,GAAA,qBAAA;yEAGuB,aAAA,CAAA,aAAA,CAAA,GAAA,aAAA;0EAGC,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;qFAGW,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;AA/HtEA,IAAAA,OAAAA,aAAAA;AAiIX,CAAA,CAAA,EAAA;;"}
@@ -15,6 +15,17 @@ require('./foundation/foundationSamples.js');
15
15
  var defaultBlueprintComponents = require('./defaultBlueprintComponents.js');
16
16
  var packageName = require('./packageName.js');
17
17
  var defaultBlueprintThemes = require('./themes/defaultBlueprintThemes.js');
18
+ require('./foundation/templates/boardScreenTemplate.js');
19
+ require('./foundation/templates/dashboardScreenTemplate.js');
20
+ require('./foundation/templates/formScreenTemplate.js');
21
+ require('./foundation/templates/listScreenTemplate.js');
22
+ require('./foundation/templates/masterDetailScreenTemplate.js');
23
+ require('./foundation/templates/recordPageTemplate.js');
24
+ require('./foundation/templates/wizardScreenTemplate.js');
25
+ require('./foundation/templates/workspaceScreenTemplate.js');
26
+ require('./foundation/templates/templateParts.js');
27
+ require('./foundation/templates/dialogTemplates.js');
28
+ require('./foundation/templates/stateScreenTemplates.js');
18
29
  require('./gallery/elements.js');
19
30
  require('./gallery/navigation.js');
20
31
  var LayoutName = require('./layouts/LayoutName.js');
@@ -74,7 +85,15 @@ require('./gallery/GalleryScreenPreview.js');
74
85
  description: 'Application shells with eight menu modes, the components that fill their slots, and a full screen and dialog template set.',
75
86
  module: '@cratis/scene.blueprint.default',
76
87
  license: 'MIT',
77
- licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE'
88
+ licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE',
89
+ sampleData: [
90
+ {
91
+ id: 'foundation-en',
92
+ title: 'Foundation · English',
93
+ locale: 'en-GB',
94
+ path: 'sampleData/foundation-en.json'
95
+ }
96
+ ]
78
97
  };
79
98
  /**
80
99
  * The default blueprint as a loadable bundle.
@@ -1 +1 @@
1
- {"version":3,"file":"defaultBlueprint.js","sources":["../../defaultBlueprint.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 { PackageKind, ScenePackage } from '@cratis/scene.model';\nimport { ScenePackageBundle, describeComponents } from '@cratis/scene.react';\nimport { ComponentName } from './ComponentName';\nimport { defaultBlueprintComponentMetadata } from './defaultBlueprintComponentMetadata';\nimport { foundationDescriptors } from './foundation';\nimport { defaultBlueprintComponents } from './defaultBlueprintComponents';\nimport { galleryDialogTemplates, galleryScreenTemplates, galleryScreens } from './gallery';\nimport { LayoutName, defaultLayouts } from './layouts';\nimport { defaultBlueprintName } from './packageName';\nimport { defaultBlueprintThemes } from './themes';\n\n/**\n * The default blueprint's declaration.\n *\n * A blueprint is the package an application picks once to get a coherent shape: the {@link Layout}s that\n * are its base navigational look, the {@link ScreenTemplate}s and {@link DialogTemplate}s that go inside\n * them, the components that fill their slots, and the themes that color all of it. Picking the parts\n * separately is how an application ends up with a sidebar from one design language and a form from\n * another.\n *\n * The dependency list is what makes a blueprint honest about what it is built from. This one declares\n * PrimeReact - the shell's buttons, breadcrumb, overlay menu and drawer are PrimeReact 10 components - and\n * Cratis Components, which its screen templates fill their content with. A profile that activated this\n * blueprint without them would render a shell whose every control was a dashed red placeholder, and\n * `resolvePackageDependencies` exists to catch that when the profile is configured rather than when\n * someone opens the page.\n *\n * `layouts` lists only true application shells. A dashboard, a CRUD list or a sign-in screen is a screen\n * template, not a layout, and is listed as one.\n */\nexport const defaultBlueprintManifest: ScenePackage = {\n name: defaultBlueprintName,\n version: '1.0.0',\n kind: PackageKind.Blueprint,\n dependencies: [{ name: 'PrimeReact' }, { name: 'Cratis.Components' }],\n components: Object.values(ComponentName),\n layouts: Object.values(LayoutName),\n screenTemplates: galleryScreenTemplates.map(template => template.name),\n dialogTemplates: galleryDialogTemplates.map(template => template.name),\n themes: defaultBlueprintThemes.map(theme => theme.name),\n displayName: 'Cratis Default Blueprint',\n description: 'Application shells with eight menu modes, the components that fill their slots, and a full screen and dialog template set.',\n module: '@cratis/scene.blueprint.default',\n license: 'MIT',\n licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE',\n};\n\n/**\n * The default blueprint as a loadable bundle.\n *\n * The manifest names things; this provides them. `validatePackageBundle` is what proves the two agree, and\n * this package's specs run it - a manifest promising a component the bundle never registered renders as a\n * dashed red placeholder somewhere deep inside a screen, a long way from the declaration that caused it.\n *\n * The screens are the gallery: real {@link Screen} instances naming a layout, a screen template and the\n * content that fills it, so a preview boots them through the real engine as a working miniature\n * application rather than a set of pictures.\n */\nexport const defaultBlueprint: ScenePackageBundle = {\n manifest: defaultBlueprintManifest,\n components: defaultBlueprintComponents,\n layouts: defaultLayouts,\n screenTemplates: galleryScreenTemplates,\n dialogTemplates: galleryDialogTemplates,\n screens: galleryScreens,\n themes: defaultBlueprintThemes,\n descriptors: describeComponents(defaultBlueprintManifest.name, foundationDescriptors, defaultBlueprintComponentMetadata),\n};\n"],"names":["defaultBlueprintManifest","name","defaultBlueprintName","version","kind","PackageKind","Blueprint","dependencies","components","Object","values","ComponentName","layouts","LayoutName","screenTemplates","galleryScreenTemplates","map","template","dialogTemplates","galleryDialogTemplates","themes","defaultBlueprintThemes","theme","displayName","description","module","license","licenseUrl","defaultBlueprint","manifest","defaultBlueprintComponents","defaultLayouts","screens","galleryScreens","descriptors","describeComponents","foundationDescriptors","defaultBlueprintComponentMetadata"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAaA;;;;;;;;;;;;;;;;;;UAmBaA,wBAAAA,GAAyC;IAClDC,IAAAA,EAAMC,gCAAAA;IACNC,OAAAA,EAAS,OAAA;AACTC,IAAAA,IAAAA,EAAMC,wBAAYC,SAAS;IAC3BC,YAAAA,EAAc;AAAC,QAAA;YAAEN,IAAAA,EAAM;AAAa,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAoB;AAAE,KAAA;IACrEO,UAAAA,EAAYC,MAAAA,CAAOC,MAAM,CAACC,2BAAAA,CAAAA;IAC1BC,OAAAA,EAASH,MAAAA,CAAOC,MAAM,CAACG,qBAAAA,CAAAA;AACvBC,IAAAA,eAAAA,EAAiBC,+BAAuBC,GAAG,CAACC,CAAAA,QAAAA,GAAYA,SAAShB,IAAI,CAAA;AACrEiB,IAAAA,eAAAA,EAAiBC,uCAAuBH,GAAG,CAACC,CAAAA,QAAAA,GAAYA,SAAShB,IAAI,CAAA;AACrEmB,IAAAA,MAAAA,EAAQC,8CAAuBL,GAAG,CAACM,CAAAA,KAAAA,GAASA,MAAMrB,IAAI,CAAA;IACtDsB,WAAAA,EAAa,0BAAA;IACbC,WAAAA,EAAa,4HAAA;IACbC,MAAAA,EAAQ,iCAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,UAAAA,EAAY;AAChB;AAEA;;;;;;;;;;UAWaC,gBAAAA,GAAuC;IAChDC,QAAAA,EAAU7B,wBAAAA;IACVQ,UAAAA,EAAYsB,qDAAAA;IACZlB,OAAAA,EAASmB,6BAAAA;IACTjB,eAAAA,EAAiBC,8BAAAA;IACjBG,eAAAA,EAAiBC,sCAAAA;IACjBa,OAAAA,EAASC,sBAAAA;IACTb,MAAAA,EAAQC,6CAAAA;AACRa,IAAAA,WAAAA,EAAaC,8BAAAA,CAAmBnC,wBAAAA,CAAyBC,IAAI,EAAEmC,2CAAAA,EAAuBC,mEAAAA;AAC1F;;;"}
1
+ {"version":3,"file":"defaultBlueprint.js","sources":["../../defaultBlueprint.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 { PackageKind, ScenePackage } from '@cratis/scene.model';\nimport { ScenePackageBundle, describeComponents } from '@cratis/scene.react';\nimport { ComponentName } from './ComponentName';\nimport { defaultBlueprintComponentMetadata } from './defaultBlueprintComponentMetadata';\nimport { foundationDescriptors } from './foundation';\nimport { defaultBlueprintComponents } from './defaultBlueprintComponents';\nimport { galleryDialogTemplates, galleryScreenTemplates, galleryScreens } from './gallery';\nimport { LayoutName, defaultLayouts } from './layouts';\nimport { defaultBlueprintName } from './packageName';\nimport { defaultBlueprintThemes } from './themes';\n\n/**\n * The default blueprint's declaration.\n *\n * A blueprint is the package an application picks once to get a coherent shape: the {@link Layout}s that\n * are its base navigational look, the {@link ScreenTemplate}s and {@link DialogTemplate}s that go inside\n * them, the components that fill their slots, and the themes that color all of it. Picking the parts\n * separately is how an application ends up with a sidebar from one design language and a form from\n * another.\n *\n * The dependency list is what makes a blueprint honest about what it is built from. This one declares\n * PrimeReact - the shell's buttons, breadcrumb, overlay menu and drawer are PrimeReact 10 components - and\n * Cratis Components, which its screen templates fill their content with. A profile that activated this\n * blueprint without them would render a shell whose every control was a dashed red placeholder, and\n * `resolvePackageDependencies` exists to catch that when the profile is configured rather than when\n * someone opens the page.\n *\n * `layouts` lists only true application shells. A dashboard, a CRUD list or a sign-in screen is a screen\n * template, not a layout, and is listed as one.\n */\nexport const defaultBlueprintManifest: ScenePackage = {\n name: defaultBlueprintName,\n version: '1.0.0',\n kind: PackageKind.Blueprint,\n dependencies: [{ name: 'PrimeReact' }, { name: 'Cratis.Components' }],\n components: Object.values(ComponentName),\n layouts: Object.values(LayoutName),\n screenTemplates: galleryScreenTemplates.map(template => template.name),\n dialogTemplates: galleryDialogTemplates.map(template => template.name),\n themes: defaultBlueprintThemes.map(theme => theme.name),\n displayName: 'Cratis Default Blueprint',\n description: 'Application shells with eight menu modes, the components that fill their slots, and a full screen and dialog template set.',\n module: '@cratis/scene.blueprint.default',\n license: 'MIT',\n licenseUrl: 'https://github.com/Cratis/Scene/blob/main/LICENSE',\n sampleData: [{ id: 'foundation-en', title: 'Foundation · English', locale: 'en-GB', path: 'sampleData/foundation-en.json' }],\n};\n\n/**\n * The default blueprint as a loadable bundle.\n *\n * The manifest names things; this provides them. `validatePackageBundle` is what proves the two agree, and\n * this package's specs run it - a manifest promising a component the bundle never registered renders as a\n * dashed red placeholder somewhere deep inside a screen, a long way from the declaration that caused it.\n *\n * The screens are the gallery: real {@link Screen} instances naming a layout, a screen template and the\n * content that fills it, so a preview boots them through the real engine as a working miniature\n * application rather than a set of pictures.\n */\nexport const defaultBlueprint: ScenePackageBundle = {\n manifest: defaultBlueprintManifest,\n components: defaultBlueprintComponents,\n layouts: defaultLayouts,\n screenTemplates: galleryScreenTemplates,\n dialogTemplates: galleryDialogTemplates,\n screens: galleryScreens,\n themes: defaultBlueprintThemes,\n descriptors: describeComponents(defaultBlueprintManifest.name, foundationDescriptors, defaultBlueprintComponentMetadata),\n};\n"],"names":["defaultBlueprintManifest","name","defaultBlueprintName","version","kind","PackageKind","Blueprint","dependencies","components","Object","values","ComponentName","layouts","LayoutName","screenTemplates","galleryScreenTemplates","map","template","dialogTemplates","galleryDialogTemplates","themes","defaultBlueprintThemes","theme","displayName","description","module","license","licenseUrl","sampleData","id","title","locale","path","defaultBlueprint","manifest","defaultBlueprintComponents","defaultLayouts","screens","galleryScreens","descriptors","describeComponents","foundationDescriptors","defaultBlueprintComponentMetadata"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAaA;;;;;;;;;;;;;;;;;;UAmBaA,wBAAAA,GAAyC;IAClDC,IAAAA,EAAMC,gCAAAA;IACNC,OAAAA,EAAS,OAAA;AACTC,IAAAA,IAAAA,EAAMC,wBAAYC,SAAS;IAC3BC,YAAAA,EAAc;AAAC,QAAA;YAAEN,IAAAA,EAAM;AAAa,SAAA;AAAG,QAAA;YAAEA,IAAAA,EAAM;AAAoB;AAAE,KAAA;IACrEO,UAAAA,EAAYC,MAAAA,CAAOC,MAAM,CAACC,2BAAAA,CAAAA;IAC1BC,OAAAA,EAASH,MAAAA,CAAOC,MAAM,CAACG,qBAAAA,CAAAA;AACvBC,IAAAA,eAAAA,EAAiBC,+BAAuBC,GAAG,CAACC,CAAAA,QAAAA,GAAYA,SAAShB,IAAI,CAAA;AACrEiB,IAAAA,eAAAA,EAAiBC,uCAAuBH,GAAG,CAACC,CAAAA,QAAAA,GAAYA,SAAShB,IAAI,CAAA;AACrEmB,IAAAA,MAAAA,EAAQC,8CAAuBL,GAAG,CAACM,CAAAA,KAAAA,GAASA,MAAMrB,IAAI,CAAA;IACtDsB,WAAAA,EAAa,0BAAA;IACbC,WAAAA,EAAa,4HAAA;IACbC,MAAAA,EAAQ,iCAAA;IACRC,OAAAA,EAAS,KAAA;IACTC,UAAAA,EAAY,mDAAA;IACZC,UAAAA,EAAY;AAAC,QAAA;YAAEC,EAAAA,EAAI,eAAA;YAAiBC,KAAAA,EAAO,sBAAA;YAAwBC,MAAAA,EAAQ,OAAA;YAASC,IAAAA,EAAM;AAAgC;AAAE;AAChI;AAEA;;;;;;;;;;UAWaC,gBAAAA,GAAuC;IAChDC,QAAAA,EAAUlC,wBAAAA;IACVQ,UAAAA,EAAY2B,qDAAAA;IACZvB,OAAAA,EAASwB,6BAAAA;IACTtB,eAAAA,EAAiBC,8BAAAA;IACjBG,eAAAA,EAAiBC,sCAAAA;IACjBkB,OAAAA,EAASC,sBAAAA;IACTlB,MAAAA,EAAQC,6CAAAA;AACRkB,IAAAA,WAAAA,EAAaC,8BAAAA,CAAmBxC,wBAAAA,CAAyBC,IAAI,EAAEwC,2CAAAA,EAAuBC,mEAAAA;AAC1F;;;"}
@@ -11,6 +11,17 @@ require('./foundation/foundationDescriptors.js');
11
11
  var foundationComponentMetadata = require('./foundation/foundationComponentMetadata.js');
12
12
  require('./foundation/foundationSamples.js');
13
13
  require('./defaultBlueprintComponents.js');
14
+ require('./foundation/templates/boardScreenTemplate.js');
15
+ require('./foundation/templates/dashboardScreenTemplate.js');
16
+ require('./foundation/templates/formScreenTemplate.js');
17
+ require('./foundation/templates/listScreenTemplate.js');
18
+ require('./foundation/templates/masterDetailScreenTemplate.js');
19
+ require('./foundation/templates/recordPageTemplate.js');
20
+ require('./foundation/templates/wizardScreenTemplate.js');
21
+ require('./foundation/templates/workspaceScreenTemplate.js');
22
+ require('./foundation/templates/templateParts.js');
23
+ require('./foundation/templates/dialogTemplates.js');
24
+ require('./foundation/templates/stateScreenTemplates.js');
14
25
 
15
26
  // Copyright (c) Cratis. All rights reserved.
16
27
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
@@ -1 +1 @@
1
- {"version":3,"file":"defaultBlueprintComponentMetadata.js","sources":["../../defaultBlueprintComponentMetadata.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 { ComponentCategory } from '@cratis/scene.model';\nimport { foundationComponentMetadata } from './foundation';\nimport { ComponentMetadata, componentMetadata as m, navigationDesignMode } from '@cratis/scene.react';\n\n/** The category, icon, keywords and picker badge of every component of the package (CMP1), keyed by bare component name. */\nexport const defaultBlueprintComponentMetadata: Record<string, ComponentMetadata> = {\n ...foundationComponentMetadata,\n appShell: m('Application shell', ComponentCategory.Layout, 'app-window', ['layout', 'frame', 'chrome']),\n fullPageShell: m('Full page shell', ComponentCategory.Layout, 'maximize', ['layout', 'fullscreen', 'frame']),\n topbar: m('Topbar', ComponentCategory.Navigation, 'panel-top', ['header', 'top bar', 'navigation'], 'Tp', navigationDesignMode()),\n sidebar: m('Side bar', ComponentCategory.Navigation, 'panel-left', ['navigation', 'menu', 'side panel'], 'Sb', navigationDesignMode({ sidebar: true })),\n menu: m('Menu', ComponentCategory.Navigation, 'menu', ['navigation', 'list', 'links']),\n menuItem: m('Menu item', ComponentCategory.Navigation, 'minus', ['link', 'entry', 'navigation']),\n breadcrumb: m('Breadcrumbs', ComponentCategory.Navigation, 'chevron-right', ['trail', 'path', 'navigation']),\n footer: m('Footer', ComponentCategory.Layout, 'panel-bottom', ['bottom', 'page footer']),\n rightPanel: m('Right panel', ComponentCategory.Layout, 'panel-right', ['side panel', 'drawer', 'aside']),\n configPanel: m('Config panel', ComponentCategory.Layout, 'settings', ['settings', 'layout options', 'preferences']),\n pageHeader: m('Page header', ComponentCategory.Layout, 'heading', ['title', 'header', 'page title']),\n mask: m('Mask', ComponentCategory.Feedback, 'layers', ['overlay', 'scrim', 'backdrop']),\n logo: m('Logo', ComponentCategory.DataDisplay, 'badge', ['brand', 'identity', 'image']),\n userMenu: m('User menu', ComponentCategory.Actions, 'circle-user', ['account', 'profile', 'sign out']),\n themeSwitcher: m('Theme switcher', ComponentCategory.Actions, 'palette', ['theme', 'dark mode', 'colors']),\n layoutModeSwitcher: m('Layout mode switcher', ComponentCategory.Actions, 'layout-dashboard', ['layout', 'mode', 'navigation style']),\n};\n"],"names":["defaultBlueprintComponentMetadata","foundationComponentMetadata","appShell","m","ComponentCategory","Layout","fullPageShell","topbar","Navigation","navigationDesignMode","sidebar","menu","menuItem","breadcrumb","footer","rightPanel","configPanel","pageHeader","mask","Feedback","logo","DataDisplay","userMenu","Actions","themeSwitcher","layoutModeSwitcher"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAMA,6HACO,MAAMA,iCAAAA,GAAuE;AAChF,IAAA,GAAGC,uDAA2B;AAC9BC,IAAAA,QAAAA,EAAUC,6BAAAA,CAAE,mBAAA,EAAqBC,6BAAAA,CAAkBC,MAAM,EAAE,YAAA,EAAc;AAAC,QAAA,QAAA;AAAU,QAAA,OAAA;AAAS,QAAA;AAAS,KAAA,CAAA;AACtGC,IAAAA,aAAAA,EAAeH,6BAAAA,CAAE,iBAAA,EAAmBC,6BAAAA,CAAkBC,MAAM,EAAE,UAAA,EAAY;AAAC,QAAA,QAAA;AAAU,QAAA,YAAA;AAAc,QAAA;AAAQ,KAAA,CAAA;AAC3GE,IAAAA,MAAAA,EAAQJ,6BAAAA,CAAE,QAAA,EAAUC,6BAAAA,CAAkBI,UAAU,EAAE,WAAA,EAAa;AAAC,QAAA,QAAA;AAAU,QAAA,SAAA;AAAW,QAAA;AAAa,KAAA,EAAE,IAAA,EAAMC,gCAAAA,EAAAA,CAAAA;AAC1GC,IAAAA,OAAAA,EAASP,6BAAAA,CAAE,UAAA,EAAYC,6BAAAA,CAAkBI,UAAU,EAAE,YAAA,EAAc;AAAC,QAAA,YAAA;AAAc,QAAA,MAAA;AAAQ,QAAA;AAAa,KAAA,EAAE,MAAMC,gCAAAA,CAAqB;QAAEC,OAAAA,EAAS;AAAK,KAAA,CAAA,CAAA;AACpJC,IAAAA,IAAAA,EAAMR,6BAAAA,CAAE,MAAA,EAAQC,6BAAAA,CAAkBI,UAAU,EAAE,MAAA,EAAQ;AAAC,QAAA,YAAA;AAAc,QAAA,MAAA;AAAQ,QAAA;AAAQ,KAAA,CAAA;AACrFI,IAAAA,QAAAA,EAAUT,6BAAAA,CAAE,WAAA,EAAaC,6BAAAA,CAAkBI,UAAU,EAAE,OAAA,EAAS;AAAC,QAAA,MAAA;AAAQ,QAAA,OAAA;AAAS,QAAA;AAAa,KAAA,CAAA;AAC/FK,IAAAA,UAAAA,EAAYV,6BAAAA,CAAE,aAAA,EAAeC,6BAAAA,CAAkBI,UAAU,EAAE,eAAA,EAAiB;AAAC,QAAA,OAAA;AAAS,QAAA,MAAA;AAAQ,QAAA;AAAa,KAAA,CAAA;AAC3GM,IAAAA,MAAAA,EAAQX,6BAAAA,CAAE,QAAA,EAAUC,6BAAAA,CAAkBC,MAAM,EAAE,cAAA,EAAgB;AAAC,QAAA,QAAA;AAAU,QAAA;AAAc,KAAA,CAAA;AACvFU,IAAAA,UAAAA,EAAYZ,6BAAAA,CAAE,aAAA,EAAeC,6BAAAA,CAAkBC,MAAM,EAAE,aAAA,EAAe;AAAC,QAAA,YAAA;AAAc,QAAA,QAAA;AAAU,QAAA;AAAQ,KAAA,CAAA;AACvGW,IAAAA,WAAAA,EAAab,6BAAAA,CAAE,cAAA,EAAgBC,6BAAAA,CAAkBC,MAAM,EAAE,UAAA,EAAY;AAAC,QAAA,UAAA;AAAY,QAAA,gBAAA;AAAkB,QAAA;AAAc,KAAA,CAAA;AAClHY,IAAAA,UAAAA,EAAYd,6BAAAA,CAAE,aAAA,EAAeC,6BAAAA,CAAkBC,MAAM,EAAE,SAAA,EAAW;AAAC,QAAA,OAAA;AAAS,QAAA,QAAA;AAAU,QAAA;AAAa,KAAA,CAAA;AACnGa,IAAAA,IAAAA,EAAMf,6BAAAA,CAAE,MAAA,EAAQC,6BAAAA,CAAkBe,QAAQ,EAAE,QAAA,EAAU;AAAC,QAAA,SAAA;AAAW,QAAA,OAAA;AAAS,QAAA;AAAW,KAAA,CAAA;AACtFC,IAAAA,IAAAA,EAAMjB,6BAAAA,CAAE,MAAA,EAAQC,6BAAAA,CAAkBiB,WAAW,EAAE,OAAA,EAAS;AAAC,QAAA,OAAA;AAAS,QAAA,UAAA;AAAY,QAAA;AAAQ,KAAA,CAAA;AACtFC,IAAAA,QAAAA,EAAUnB,6BAAAA,CAAE,WAAA,EAAaC,6BAAAA,CAAkBmB,OAAO,EAAE,aAAA,EAAe;AAAC,QAAA,SAAA;AAAW,QAAA,SAAA;AAAW,QAAA;AAAW,KAAA,CAAA;AACrGC,IAAAA,aAAAA,EAAerB,6BAAAA,CAAE,gBAAA,EAAkBC,6BAAAA,CAAkBmB,OAAO,EAAE,SAAA,EAAW;AAAC,QAAA,OAAA;AAAS,QAAA,WAAA;AAAa,QAAA;AAAS,KAAA,CAAA;AACzGE,IAAAA,kBAAAA,EAAoBtB,6BAAAA,CAAE,sBAAA,EAAwBC,6BAAAA,CAAkBmB,OAAO,EAAE,kBAAA,EAAoB;AAAC,QAAA,QAAA;AAAU,QAAA,MAAA;AAAQ,QAAA;AAAmB,KAAA;AACvI;;"}
1
+ {"version":3,"file":"defaultBlueprintComponentMetadata.js","sources":["../../defaultBlueprintComponentMetadata.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 { ComponentCategory } from '@cratis/scene.model';\nimport { foundationComponentMetadata } from './foundation';\nimport { ComponentMetadata, componentMetadata as m, navigationDesignMode } from '@cratis/scene.react';\n\n/** The category, icon, keywords and picker badge of every component of the package (CMP1), keyed by bare component name. */\nexport const defaultBlueprintComponentMetadata: Record<string, ComponentMetadata> = {\n ...foundationComponentMetadata,\n appShell: m('Application shell', ComponentCategory.Layout, 'app-window', ['layout', 'frame', 'chrome']),\n fullPageShell: m('Full page shell', ComponentCategory.Layout, 'maximize', ['layout', 'fullscreen', 'frame']),\n topbar: m('Topbar', ComponentCategory.Navigation, 'panel-top', ['header', 'top bar', 'navigation'], 'Tp', navigationDesignMode()),\n sidebar: m('Side bar', ComponentCategory.Navigation, 'panel-left', ['navigation', 'menu', 'side panel'], 'Sb', navigationDesignMode({ sidebar: true })),\n menu: m('Menu', ComponentCategory.Navigation, 'menu', ['navigation', 'list', 'links']),\n menuItem: m('Menu item', ComponentCategory.Navigation, 'minus', ['link', 'entry', 'navigation']),\n breadcrumb: m('Breadcrumbs', ComponentCategory.Navigation, 'chevron-right', ['trail', 'path', 'navigation']),\n footer: m('Footer', ComponentCategory.Layout, 'panel-bottom', ['bottom', 'page footer']),\n rightPanel: m('Right panel', ComponentCategory.Layout, 'panel-right', ['side panel', 'drawer', 'aside']),\n configPanel: m('Config panel', ComponentCategory.Layout, 'settings', ['settings', 'layout options', 'preferences']),\n pageHeader: m('Page header', ComponentCategory.Layout, 'heading', ['title', 'header', 'page title']),\n mask: m('Mask', ComponentCategory.Feedback, 'layers', ['overlay', 'scrim', 'backdrop']),\n logo: m('Logo', ComponentCategory.DataDisplay, 'badge', ['brand', 'identity', 'image']),\n userMenu: m('User menu', ComponentCategory.Actions, 'circle-user', ['account', 'profile', 'sign out']),\n themeSwitcher: m('Theme switcher', ComponentCategory.Actions, 'palette', ['theme', 'dark mode', 'colors']),\n layoutModeSwitcher: m('Layout mode switcher', ComponentCategory.Actions, 'layout-dashboard', ['layout', 'mode', 'navigation style']),\n};\n"],"names":["defaultBlueprintComponentMetadata","foundationComponentMetadata","appShell","m","ComponentCategory","Layout","fullPageShell","topbar","Navigation","navigationDesignMode","sidebar","menu","menuItem","breadcrumb","footer","rightPanel","configPanel","pageHeader","mask","Feedback","logo","DataDisplay","userMenu","Actions","themeSwitcher","layoutModeSwitcher"],"mappings":"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"}
@@ -24,6 +24,9 @@ var PermissionMatrix = require('./foundation/PermissionMatrix.js');
24
24
  var DataList = require('./foundation/DataList.js');
25
25
  var TabSet = require('./foundation/TabSet.js');
26
26
  var SubNavigation = require('./foundation/SubNavigation.js');
27
+ var DialogFrame = require('./foundation/DialogFrame.js');
28
+ var Notice = require('./foundation/Notice.js');
29
+ var ActionButtonControl = require('./foundation/ActionButtonControl.js');
27
30
  var BulkBar = require('./foundation/BulkBar.js');
28
31
  var GlobalSearch = require('./foundation/GlobalSearch.js');
29
32
  var NotificationsButton = require('./foundation/NotificationsButton.js');
@@ -33,6 +36,17 @@ var FormScreenBody = require('./foundation/FormScreenBody.js');
33
36
  require('./foundation/foundationDescriptors.js');
34
37
  require('./foundation/foundationComponentMetadata.js');
35
38
  require('./foundation/foundationSamples.js');
39
+ require('./foundation/templates/boardScreenTemplate.js');
40
+ require('./foundation/templates/dashboardScreenTemplate.js');
41
+ require('./foundation/templates/formScreenTemplate.js');
42
+ require('./foundation/templates/listScreenTemplate.js');
43
+ require('./foundation/templates/masterDetailScreenTemplate.js');
44
+ require('./foundation/templates/recordPageTemplate.js');
45
+ require('./foundation/templates/wizardScreenTemplate.js');
46
+ require('./foundation/templates/workspaceScreenTemplate.js');
47
+ require('./foundation/templates/templateParts.js');
48
+ require('./foundation/templates/dialogTemplates.js');
49
+ require('./foundation/templates/stateScreenTemplates.js');
36
50
  var AppShell = require('./shell/AppShell.js');
37
51
  var FullPageShell = require('./shell/FullPageShell.js');
38
52
  var Topbar = require('./shell/Topbar.js');
@@ -94,6 +108,9 @@ var LayoutModeSwitcher = require('./shell/LayoutModeSwitcher.js');
94
108
  [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.DataList)]: DataList.DataList,
95
109
  [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.TabSet)]: TabSet.TabSet,
96
110
  [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.SubNavigation)]: SubNavigation.SubNavigation,
111
+ [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.DialogFrame)]: DialogFrame.DialogFrame,
112
+ [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.ActionButton)]: ActionButtonControl.ActionButtonControl,
113
+ [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.Notice)]: Notice.Notice,
97
114
  [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.BulkBar)]: BulkBar.BulkBar,
98
115
  [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.GlobalSearch)]: GlobalSearch.GlobalSearch,
99
116
  [scene_react.componentRegistryKey(packageName.defaultBlueprintName, ComponentName.ComponentName.NotificationsButton)]: NotificationsButton.NotificationsButton,
@@ -1 +1 @@
1
- {"version":3,"file":"defaultBlueprintComponents.js","sources":["../../defaultBlueprintComponents.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 { ComponentRegistry, componentRegistryKey } from '@cratis/scene.react';\nimport { ComponentName } from './ComponentName';\nimport { defaultBlueprintName } from './packageName';\nimport { BulkBar, DataList, FormScreenBody, GlobalSearch, KanbanBoard, NotificationsButton, SubNavigation, TabSet, WizardProgress, ActivityFeed, ApprovalChainStepper, AvatarStack, ChartWrapper, ChecklistSection, ColumnChooser, FileUploader, EmptyState, FilterBuilder, OrgTree, PermissionMatrix, SavedViewsMenu, StatCard, StatusChip, TrendChip } from './foundation';\nimport {\n AppShell,\n Breadcrumb,\n ConfigPanel,\n Footer,\n FullPageShell,\n LayoutModeSwitcher,\n Logo,\n Mask,\n Menu,\n MenuItem,\n PageHeader,\n RightPanel,\n Sidebar,\n ThemeSwitcher,\n Topbar,\n UserMenu,\n} from './shell';\n\n/**\n * The components this package registers, keyed the way the renderer looks them up.\n *\n * Every key is built with `componentRegistryKey` rather than written out, because the separator between\n * package and component name is the registry's own business - it is deliberately not the `.` a screen uses\n * to qualify a name, so that a package name containing dots stays unambiguous. Building a key by hand is\n * how a component ends up registered under something no lookup will ever produce.\n */\nexport const defaultBlueprintComponents: ComponentRegistry = {\n [componentRegistryKey(defaultBlueprintName, ComponentName.AppShell)]: AppShell,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FullPageShell)]: FullPageShell,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Topbar)]: Topbar,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Sidebar)]: Sidebar,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Menu)]: Menu,\n [componentRegistryKey(defaultBlueprintName, ComponentName.MenuItem)]: MenuItem,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Breadcrumb)]: Breadcrumb,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Footer)]: Footer,\n [componentRegistryKey(defaultBlueprintName, ComponentName.RightPanel)]: RightPanel,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ConfigPanel)]: ConfigPanel,\n [componentRegistryKey(defaultBlueprintName, ComponentName.PageHeader)]: PageHeader,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Mask)]: Mask,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Logo)]: Logo,\n [componentRegistryKey(defaultBlueprintName, ComponentName.UserMenu)]: UserMenu,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ThemeSwitcher)]: ThemeSwitcher,\n [componentRegistryKey(defaultBlueprintName, ComponentName.LayoutModeSwitcher)]: LayoutModeSwitcher,\n [componentRegistryKey(defaultBlueprintName, ComponentName.EmptyState)]: EmptyState,\n [componentRegistryKey(defaultBlueprintName, ComponentName.StatCard)]: StatCard,\n [componentRegistryKey(defaultBlueprintName, ComponentName.TrendChip)]: TrendChip,\n [componentRegistryKey(defaultBlueprintName, ComponentName.StatusChip)]: StatusChip,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ChartWrapper)]: ChartWrapper,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FilterBuilder)]: FilterBuilder,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ColumnChooser)]: ColumnChooser,\n [componentRegistryKey(defaultBlueprintName, ComponentName.SavedViewsMenu)]: SavedViewsMenu,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ChecklistSection)]: ChecklistSection,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ActivityFeed)]: ActivityFeed,\n [componentRegistryKey(defaultBlueprintName, ComponentName.AvatarStack)]: AvatarStack,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FileUploader)]: FileUploader,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ApprovalChainStepper)]: ApprovalChainStepper,\n [componentRegistryKey(defaultBlueprintName, ComponentName.OrgTree)]: OrgTree,\n [componentRegistryKey(defaultBlueprintName, ComponentName.PermissionMatrix)]: PermissionMatrix,\n [componentRegistryKey(defaultBlueprintName, ComponentName.DataList)]: DataList,\n [componentRegistryKey(defaultBlueprintName, ComponentName.TabSet)]: TabSet,\n [componentRegistryKey(defaultBlueprintName, ComponentName.SubNavigation)]: SubNavigation,\n [componentRegistryKey(defaultBlueprintName, ComponentName.BulkBar)]: BulkBar,\n [componentRegistryKey(defaultBlueprintName, ComponentName.GlobalSearch)]: GlobalSearch,\n [componentRegistryKey(defaultBlueprintName, ComponentName.NotificationsButton)]: NotificationsButton,\n [componentRegistryKey(defaultBlueprintName, ComponentName.KanbanBoard)]: KanbanBoard,\n [componentRegistryKey(defaultBlueprintName, ComponentName.WizardProgress)]: WizardProgress,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FormScreenBody)]: FormScreenBody,\n};\n"],"names":["defaultBlueprintComponents","componentRegistryKey","defaultBlueprintName","ComponentName","AppShell","FullPageShell","Topbar","Sidebar","Menu","MenuItem","Breadcrumb","Footer","RightPanel","ConfigPanel","PageHeader","Mask","Logo","UserMenu","ThemeSwitcher","LayoutModeSwitcher","EmptyState","StatCard","TrendChip","StatusChip","ChartWrapper","FilterBuilder","ColumnChooser","SavedViewsMenu","ChecklistSection","ActivityFeed","AvatarStack","FileUploader","ApprovalChainStepper","OrgTree","PermissionMatrix","DataList","TabSet","SubNavigation","BulkBar","GlobalSearch","NotificationsButton","KanbanBoard","WizardProgress","FormScreenBody"],"mappings":"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"}
1
+ {"version":3,"file":"defaultBlueprintComponents.js","sources":["../../defaultBlueprintComponents.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 { ComponentRegistry, componentRegistryKey } from '@cratis/scene.react';\nimport { ComponentName } from './ComponentName';\nimport { defaultBlueprintName } from './packageName';\nimport { ActionButtonControl, DialogFrame, Notice, BulkBar, DataList, FormScreenBody, GlobalSearch, KanbanBoard, NotificationsButton, SubNavigation, TabSet, WizardProgress, ActivityFeed, ApprovalChainStepper, AvatarStack, ChartWrapper, ChecklistSection, ColumnChooser, FileUploader, EmptyState, FilterBuilder, OrgTree, PermissionMatrix, SavedViewsMenu, StatCard, StatusChip, TrendChip } from './foundation';\nimport {\n AppShell,\n Breadcrumb,\n ConfigPanel,\n Footer,\n FullPageShell,\n LayoutModeSwitcher,\n Logo,\n Mask,\n Menu,\n MenuItem,\n PageHeader,\n RightPanel,\n Sidebar,\n ThemeSwitcher,\n Topbar,\n UserMenu,\n} from './shell';\n\n/**\n * The components this package registers, keyed the way the renderer looks them up.\n *\n * Every key is built with `componentRegistryKey` rather than written out, because the separator between\n * package and component name is the registry's own business - it is deliberately not the `.` a screen uses\n * to qualify a name, so that a package name containing dots stays unambiguous. Building a key by hand is\n * how a component ends up registered under something no lookup will ever produce.\n */\nexport const defaultBlueprintComponents: ComponentRegistry = {\n [componentRegistryKey(defaultBlueprintName, ComponentName.AppShell)]: AppShell,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FullPageShell)]: FullPageShell,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Topbar)]: Topbar,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Sidebar)]: Sidebar,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Menu)]: Menu,\n [componentRegistryKey(defaultBlueprintName, ComponentName.MenuItem)]: MenuItem,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Breadcrumb)]: Breadcrumb,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Footer)]: Footer,\n [componentRegistryKey(defaultBlueprintName, ComponentName.RightPanel)]: RightPanel,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ConfigPanel)]: ConfigPanel,\n [componentRegistryKey(defaultBlueprintName, ComponentName.PageHeader)]: PageHeader,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Mask)]: Mask,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Logo)]: Logo,\n [componentRegistryKey(defaultBlueprintName, ComponentName.UserMenu)]: UserMenu,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ThemeSwitcher)]: ThemeSwitcher,\n [componentRegistryKey(defaultBlueprintName, ComponentName.LayoutModeSwitcher)]: LayoutModeSwitcher,\n [componentRegistryKey(defaultBlueprintName, ComponentName.EmptyState)]: EmptyState,\n [componentRegistryKey(defaultBlueprintName, ComponentName.StatCard)]: StatCard,\n [componentRegistryKey(defaultBlueprintName, ComponentName.TrendChip)]: TrendChip,\n [componentRegistryKey(defaultBlueprintName, ComponentName.StatusChip)]: StatusChip,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ChartWrapper)]: ChartWrapper,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FilterBuilder)]: FilterBuilder,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ColumnChooser)]: ColumnChooser,\n [componentRegistryKey(defaultBlueprintName, ComponentName.SavedViewsMenu)]: SavedViewsMenu,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ChecklistSection)]: ChecklistSection,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ActivityFeed)]: ActivityFeed,\n [componentRegistryKey(defaultBlueprintName, ComponentName.AvatarStack)]: AvatarStack,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FileUploader)]: FileUploader,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ApprovalChainStepper)]: ApprovalChainStepper,\n [componentRegistryKey(defaultBlueprintName, ComponentName.OrgTree)]: OrgTree,\n [componentRegistryKey(defaultBlueprintName, ComponentName.PermissionMatrix)]: PermissionMatrix,\n [componentRegistryKey(defaultBlueprintName, ComponentName.DataList)]: DataList,\n [componentRegistryKey(defaultBlueprintName, ComponentName.TabSet)]: TabSet,\n [componentRegistryKey(defaultBlueprintName, ComponentName.SubNavigation)]: SubNavigation,\n [componentRegistryKey(defaultBlueprintName, ComponentName.DialogFrame)]: DialogFrame,\n [componentRegistryKey(defaultBlueprintName, ComponentName.ActionButton)]: ActionButtonControl,\n [componentRegistryKey(defaultBlueprintName, ComponentName.Notice)]: Notice,\n [componentRegistryKey(defaultBlueprintName, ComponentName.BulkBar)]: BulkBar,\n [componentRegistryKey(defaultBlueprintName, ComponentName.GlobalSearch)]: GlobalSearch,\n [componentRegistryKey(defaultBlueprintName, ComponentName.NotificationsButton)]: NotificationsButton,\n [componentRegistryKey(defaultBlueprintName, ComponentName.KanbanBoard)]: KanbanBoard,\n [componentRegistryKey(defaultBlueprintName, ComponentName.WizardProgress)]: WizardProgress,\n [componentRegistryKey(defaultBlueprintName, ComponentName.FormScreenBody)]: FormScreenBody,\n};\n"],"names":["defaultBlueprintComponents","componentRegistryKey","defaultBlueprintName","ComponentName","AppShell","FullPageShell","Topbar","Sidebar","Menu","MenuItem","Breadcrumb","Footer","RightPanel","ConfigPanel","PageHeader","Mask","Logo","UserMenu","ThemeSwitcher","LayoutModeSwitcher","EmptyState","StatCard","TrendChip","StatusChip","ChartWrapper","FilterBuilder","ColumnChooser","SavedViewsMenu","ChecklistSection","ActivityFeed","AvatarStack","FileUploader","ApprovalChainStepper","OrgTree","PermissionMatrix","DataList","TabSet","SubNavigation","DialogFrame","ActionButton","ActionButtonControl","Notice","BulkBar","GlobalSearch","NotificationsButton","KanbanBoard","WizardProgress","FormScreenBody"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionButton.js","sources":["../../../foundation/ActionButton.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 { ReactNode } from 'react';\nimport { PermissionRule } from './PermissionRule';\n\nexport interface ActionButtonProps {\n /** The permission rule that decides whether the control works, refuses or is not rendered. */\n rule?: PermissionRule;\n\n /** Why the control is disabled, announced and shown as its tooltip. */\n disabledReason: string;\n\n /** What the control does when pressed. */\n onClick?: (event: { stopPropagation(): void }) => void;\n\n /** The emphasis of the button. */\n emphasis?: 'primary' | 'secondary' | 'quiet';\n\n children: ReactNode;\n}\n\n/**\n * The one button every foundation component starts an action with, so the permission rule of spec Part B 1.5 is honoured in one place:\n * hidden renders nothing; disabled stays focusable-by-description (`aria-disabled`) and carries the reason, rather than a bare\n * greyed control nobody can explain.\n */\nexport function ActionButton({ rule = PermissionRule.Enabled, disabledReason, onClick, emphasis = 'primary', children }: ActionButtonProps) {\n if (rule === PermissionRule.Hidden) return undefined;\n\n const disabled = rule === PermissionRule.Disabled;\n return (\n <button type='button' className='foundation-button' data-emphasis={emphasis} aria-disabled={disabled || undefined}\n title={disabled ? disabledReason : undefined} onClick={disabled ? undefined : onClick}>\n {children}\n {disabled && <span className='foundation-visually-hidden'>{`. ${disabledReason}`}</span>}\n </button>\n );\n}\n"],"names":["ActionButton","rule","PermissionRule","Enabled","disabledReason","onClick","emphasis","children","Hidden","undefined","disabled","Disabled","_jsxs","button","type","className","data-emphasis","aria-disabled","title","_jsx","span"],"mappings":";;;;;AAAA;AACA;AAqBA;;;;AAIC,IACM,SAASA,YAAAA,CAAa,EAAEC,IAAAA,GAAOC,8BAAeC,OAAO,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAAA,GAAW,SAAS,EAAEC,QAAQ,EAAqB,EAAA;AACtI,IAAA,IAAIN,IAAAA,KAASC,6BAAAA,CAAeM,MAAM,EAAE,OAAOC,SAAAA;IAE3C,MAAMC,QAAAA,GAAWT,IAAAA,KAASC,6BAAAA,CAAeS,QAAQ;AACjD,IAAA,qBACIC,eAAA,CAACC,QAAAA,EAAAA;QAAOC,IAAAA,EAAK,QAAA;QAASC,SAAAA,EAAU,mBAAA;QAAoBC,eAAAA,EAAeV,QAAAA;AAAUW,QAAAA,eAAAA,EAAeP,QAAAA,IAAYD,SAAAA;AACpGS,QAAAA,KAAAA,EAAOR,WAAWN,cAAAA,GAAiBK,SAAAA;AAAWJ,QAAAA,OAAAA,EAASK,WAAWD,SAAAA,GAAYJ,OAAAA;;AAC7EE,YAAAA,QAAAA;AACAG,YAAAA,QAAAA,kBAAYS,cAAA,CAACC,MAAAA,EAAAA;gBAAKL,SAAAA,EAAU,4BAAA;0BAA8B,CAAC,EAAE,EAAEX,cAAAA,CAAAA;;;;AAG5E;;"}
1
+ {"version":3,"file":"ActionButton.js","sources":["../../../foundation/ActionButton.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 { ReactNode } from 'react';\nimport { PermissionRule } from './PermissionRule';\n\nexport interface ActionButtonProps {\n /** The permission rule that decides whether the control works, refuses or is not rendered. */\n rule?: PermissionRule;\n\n /** Why the control is disabled, announced and shown as its tooltip. */\n disabledReason: string;\n\n /** What the control does when pressed. */\n onClick?: (event: { stopPropagation(): void }) => void;\n\n /** The emphasis of the button. */\n emphasis?: 'primary' | 'secondary' | 'quiet' | 'danger';\n\n children: ReactNode;\n}\n\n/**\n * The one button every foundation component starts an action with, so the permission rule of spec Part B 1.5 is honoured in one place:\n * hidden renders nothing; disabled stays focusable-by-description (`aria-disabled`) and carries the reason, rather than a bare\n * greyed control nobody can explain.\n */\nexport function ActionButton({ rule = PermissionRule.Enabled, disabledReason, onClick, emphasis = 'primary', children }: ActionButtonProps) {\n if (rule === PermissionRule.Hidden) return undefined;\n\n const disabled = rule === PermissionRule.Disabled;\n return (\n <button type='button' className='foundation-button' data-emphasis={emphasis} aria-disabled={disabled || undefined}\n title={disabled ? disabledReason : undefined} onClick={disabled ? undefined : onClick}>\n {children}\n {disabled && <span className='foundation-visually-hidden'>{`. ${disabledReason}`}</span>}\n </button>\n );\n}\n"],"names":["ActionButton","rule","PermissionRule","Enabled","disabledReason","onClick","emphasis","children","Hidden","undefined","disabled","Disabled","_jsxs","button","type","className","data-emphasis","aria-disabled","title","_jsx","span"],"mappings":";;;;;AAAA;AACA;AAqBA;;;;AAIC,IACM,SAASA,YAAAA,CAAa,EAAEC,IAAAA,GAAOC,8BAAeC,OAAO,EAAEC,cAAc,EAAEC,OAAO,EAAEC,QAAAA,GAAW,SAAS,EAAEC,QAAQ,EAAqB,EAAA;AACtI,IAAA,IAAIN,IAAAA,KAASC,6BAAAA,CAAeM,MAAM,EAAE,OAAOC,SAAAA;IAE3C,MAAMC,QAAAA,GAAWT,IAAAA,KAASC,6BAAAA,CAAeS,QAAQ;AACjD,IAAA,qBACIC,eAAA,CAACC,QAAAA,EAAAA;QAAOC,IAAAA,EAAK,QAAA;QAASC,SAAAA,EAAU,mBAAA;QAAoBC,eAAAA,EAAeV,QAAAA;AAAUW,QAAAA,eAAAA,EAAeP,QAAAA,IAAYD,SAAAA;AACpGS,QAAAA,KAAAA,EAAOR,WAAWN,cAAAA,GAAiBK,SAAAA;AAAWJ,QAAAA,OAAAA,EAASK,WAAWD,SAAAA,GAAYJ,OAAAA;;AAC7EE,YAAAA,QAAAA;AACAG,YAAAA,QAAAA,kBAAYS,cAAA,CAACC,MAAAA,EAAAA;gBAAKL,SAAAA,EAAU,4BAAA;0BAA8B,CAAC,EAAE,EAAEX,cAAAA,CAAAA;;;;AAG5E;;"}
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var elementProperties = require('../shell/elementProperties.js');
5
+ var ActionButton = require('./ActionButton.js');
6
+ var foundationStrings = require('./foundationStrings.js');
7
+ var PermissionRule = require('./PermissionRule.js');
8
+
9
+ // Copyright (c) Cratis. All rights reserved.
10
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
11
+ const emphases = [
12
+ 'primary',
13
+ 'secondary',
14
+ 'quiet',
15
+ 'danger'
16
+ ];
17
+ /**
18
+ * The `actionButton` component: one action of a screen or a dialog, drawn the way every action of the foundation is.
19
+ *
20
+ * `label` is what it does - a verb, never "OK" - and `emphasis` is `primary`, `secondary`, `quiet` or `danger` (the confirming button of a destructive
21
+ * dialog). It honours the permission rule of spec Part B 1.5 through `permission`: enabled, disabled (shown, refusing, and saying why) or not rendered.
22
+ * Pressing it runs the behaviors attached to the element, which is how a document makes it close a dialog, navigate or execute a command; with
23
+ * `targetScreen` and no behavior it goes to that screen, as the shell's links do.
24
+ */ function ActionButtonControl({ element, interactions }) {
25
+ const strings = foundationStrings.readFoundationStrings(element);
26
+ const requested = elementProperties.readOptionalString(element, 'emphasis');
27
+ const emphasis = emphases.includes(requested ?? '') ? requested : 'primary';
28
+ const target = elementProperties.readOptionalString(element, 'targetScreen');
29
+ return /*#__PURE__*/ jsxRuntime.jsx("span", {
30
+ className: "foundation foundation-action",
31
+ "data-scene-id": element.id,
32
+ children: /*#__PURE__*/ jsxRuntime.jsx(ActionButton.ActionButton, {
33
+ rule: PermissionRule.readPermissionRule(element),
34
+ emphasis: emphasis,
35
+ disabledReason: elementProperties.readOptionalString(element, 'disabledReason') ?? strings.disabledNoPermission,
36
+ onClick: (event)=>{
37
+ if (interactions?.onClick) interactions.onClick(event);
38
+ else if (target && typeof window !== 'undefined') window.location.hash = `#/${target}`;
39
+ },
40
+ children: elementProperties.readOptionalString(element, 'label') ?? ''
41
+ })
42
+ });
43
+ }
44
+
45
+ exports.ActionButtonControl = ActionButtonControl;
46
+ //# sourceMappingURL=ActionButtonControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButtonControl.js","sources":["../../../foundation/ActionButtonControl.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 { RegisteredComponentProps } from '@cratis/scene.react';\nimport { readOptionalString } from '../shell/elementProperties';\nimport { ActionButton } from './ActionButton';\nimport { readFoundationStrings } from './foundationStrings';\nimport { readPermissionRule } from './PermissionRule';\n\nconst emphases = ['primary', 'secondary', 'quiet', 'danger'] as const;\n\n/**\n * The `actionButton` component: one action of a screen or a dialog, drawn the way every action of the foundation is.\n *\n * `label` is what it does - a verb, never \"OK\" - and `emphasis` is `primary`, `secondary`, `quiet` or `danger` (the confirming button of a destructive\n * dialog). It honours the permission rule of spec Part B 1.5 through `permission`: enabled, disabled (shown, refusing, and saying why) or not rendered.\n * Pressing it runs the behaviors attached to the element, which is how a document makes it close a dialog, navigate or execute a command; with\n * `targetScreen` and no behavior it goes to that screen, as the shell's links do.\n */\nexport function ActionButtonControl({ element, interactions }: RegisteredComponentProps) {\n const strings = readFoundationStrings(element);\n const requested = readOptionalString(element, 'emphasis');\n const emphasis = (emphases as readonly string[]).includes(requested ?? '') ? (requested as typeof emphases[number]) : 'primary';\n const target = readOptionalString(element, 'targetScreen');\n\n return (\n <span className='foundation foundation-action' data-scene-id={element.id}>\n <ActionButton rule={readPermissionRule(element)} emphasis={emphasis} disabledReason={readOptionalString(element, 'disabledReason') ?? strings.disabledNoPermission}\n onClick={event => {\n if (interactions?.onClick) interactions.onClick(event);\n else if (target && typeof window !== 'undefined') window.location.hash = `#/${target}`;\n }}>\n {readOptionalString(element, 'label') ?? ''}\n </ActionButton>\n </span>\n );\n}\n"],"names":["emphases","ActionButtonControl","element","interactions","strings","readFoundationStrings","requested","readOptionalString","emphasis","includes","target","_jsx","span","className","data-scene-id","id","ActionButton","rule","readPermissionRule","disabledReason","disabledNoPermission","onClick","event","window","location","hash"],"mappings":";;;;;;;;AAAA;AACA;AAQA,MAAMA,QAAAA,GAAW;AAAC,IAAA,SAAA;AAAW,IAAA,WAAA;AAAa,IAAA,OAAA;AAAS,IAAA;AAAS,CAAA;AAE5D;;;;;;;AAOC,IACM,SAASC,mBAAAA,CAAoB,EAAEC,OAAO,EAAEC,YAAY,EAA4B,EAAA;AACnF,IAAA,MAAMC,UAAUC,uCAAAA,CAAsBH,OAAAA,CAAAA;IACtC,MAAMI,SAAAA,GAAYC,qCAAmBL,OAAAA,EAAS,UAAA,CAAA;AAC9C,IAAA,MAAMM,WAAW,QAACR,CAA+BS,QAAQ,CAACH,SAAAA,IAAa,MAAOA,SAAAA,GAAwC,SAAA;IACtH,MAAMI,MAAAA,GAASH,qCAAmBL,OAAAA,EAAS,cAAA,CAAA;AAE3C,IAAA,qBACIS,cAAA,CAACC,MAAAA,EAAAA;QAAKC,SAAAA,EAAU,8BAAA;AAA+BC,QAAAA,eAAAA,EAAeZ,QAAQa,EAAE;AACpE,QAAA,QAAA,gBAAAJ,cAAA,CAACK,yBAAAA,EAAAA;AAAaC,YAAAA,IAAAA,EAAMC,iCAAAA,CAAmBhB,OAAAA,CAAAA;YAAUM,QAAAA,EAAUA,QAAAA;AAAUW,YAAAA,cAAAA,EAAgBZ,oCAAAA,CAAmBL,OAAAA,EAAS,gBAAA,CAAA,IAAqBE,OAAAA,CAAQgB,oBAAoB;AAC9JC,YAAAA,OAAAA,EAASC,CAAAA,KAAAA,GAAAA;AACL,gBAAA,IAAInB,YAAAA,EAAckB,OAAAA,EAASlB,YAAAA,CAAakB,OAAO,CAACC,KAAAA,CAAAA;AAC3C,qBAAA,IAAIZ,MAAAA,IAAU,OAAOa,MAAAA,KAAW,WAAA,EAAaA,MAAAA,CAAOC,QAAQ,CAACC,IAAI,GAAG,CAAC,EAAE,EAAEf,MAAAA,CAAAA,CAAQ;AAC1F,YAAA,CAAA;AACCH,YAAAA,QAAAA,EAAAA,oCAAAA,CAAmBL,SAAS,OAAA,CAAA,IAAY;;;AAIzD;;"}
@@ -0,0 +1,196 @@
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 elementProperties = require('../shell/elementProperties.js');
7
+ var FoundationIcon = require('./FoundationIcon.js');
8
+ var foundationStrings = require('./foundationStrings.js');
9
+ var formatting = require('./formatting.js');
10
+ var useCompactWidth = require('./useCompactWidth.js');
11
+
12
+ /** Where a dialog is drawn: in the middle of the page, as a drawer from the inline end, or filling the page. */ var DialogPlacement = /*#__PURE__*/ function(DialogPlacement) {
13
+ DialogPlacement["Center"] = "center";
14
+ DialogPlacement["Side"] = "side";
15
+ DialogPlacement["Full"] = "full";
16
+ return DialogPlacement;
17
+ }({});
18
+ /** What a dialog is about: an ordinary one, or one that cannot be undone and is drawn in the danger colors. */ var DialogTone = /*#__PURE__*/ function(DialogTone) {
19
+ DialogTone["Default"] = "default";
20
+ DialogTone["Danger"] = "danger";
21
+ return DialogTone;
22
+ }({});
23
+ const focusable = 'input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';
24
+ /** Reads the placement property, falling back to the center for anything that is not one of the three. */ function readDialogPlacement(element) {
25
+ const value = elementProperties.readOptionalString(element, 'placement');
26
+ return value === "side" || value === "full" ? value : "center";
27
+ }
28
+ /** The placement a dialog is drawn with in a window of the given width class: a phone gets every dialog at full height and width (spec Part B 2.10, 1.5). */ const placementFor = (requested, compact)=>compact ? "full" : requested;
29
+ /** The elements a dialog's focus can rest on, in document order, that are not hidden. */ const focusableIn = (host)=>Array.from(host.querySelectorAll(focusable)).filter((candidate)=>!candidate.hidden && candidate.closest('[hidden]') === null);
30
+ /**
31
+ * The `dialogFrame` component: the head of a dialog template and everything that makes what the host draws around it behave as a dialog.
32
+ *
33
+ * It draws the heading (`title`, `subtitle`), an optional `message` and `consequences` list - what a confirmation says will happen - and a close button.
34
+ * The host draws the box a dialog template opens in (a `role="dialog" aria-modal="true"` element); this component takes that element on and gives it the
35
+ * parts of a dialog that must not differ from one template to the next:
36
+ *
37
+ * - it is named by the heading, takes focus when it opens (the first field, else the primary action, else the close button), keeps Tab inside it, and
38
+ * gives focus back to whatever opened it when it goes;
39
+ * - Escape and the close button run the behaviors attached to this element (a `CloseDialog` action), and close the dialog themselves when none is attached;
40
+ * - `placement` is `center` (default), `side` (a drawer from the inline end, which a right-to-left locale mirrors) or `full`; on a phone every dialog fills the page;
41
+ * - `tone` `danger` draws a dialog that cannot be undone in the danger colors.
42
+ *
43
+ * Every text it says comes from the strings table and the locale of the element, so an application localizes it like any foundation component.
44
+ */ function DialogFrame({ element, interactions }) {
45
+ const frame = react.useRef(null);
46
+ const heading = react.useId();
47
+ const navigation = react.useContext(scene_react.SceneNavigationContextInternal);
48
+ const compact = useCompactWidth.useCompactWidth();
49
+ const strings = foundationStrings.readFoundationStrings(element);
50
+ const locale = formatting.readLocale(element);
51
+ const title = elementProperties.readOptionalString(element, 'title') ?? '';
52
+ const subtitle = elementProperties.readOptionalString(element, 'subtitle');
53
+ const message = elementProperties.readOptionalString(element, 'message');
54
+ const consequences = elementProperties.readStrings(element, 'consequences');
55
+ const placement = placementFor(readDialogPlacement(element), compact);
56
+ const tone = element.properties.tone === "danger" ? "danger" : "default";
57
+ const onClick = interactions?.onClick;
58
+ const close = react.useCallback(()=>{
59
+ if (onClick) onClick({
60
+ stopPropagation: ()=>undefined
61
+ });
62
+ else navigation?.closeDialog();
63
+ }, [
64
+ onClick,
65
+ navigation
66
+ ]);
67
+ const closeRef = react.useRef(close);
68
+ closeRef.current = close;
69
+ react.useEffect(()=>{
70
+ const host = frame.current?.closest('[role="dialog"]');
71
+ if (!host) return;
72
+ const opener = document.activeElement instanceof HTMLElement ? document.activeElement : undefined;
73
+ const before = {
74
+ className: host.className,
75
+ labelledBy: host.getAttribute('aria-labelledby'),
76
+ placement: host.getAttribute('data-placement'),
77
+ tone: host.getAttribute('data-tone')
78
+ };
79
+ host.classList.add('foundation', 'foundation-dialog-host');
80
+ host.setAttribute('aria-labelledby', heading);
81
+ host.setAttribute('data-placement', placement);
82
+ host.setAttribute('data-tone', tone);
83
+ host.dir = formatting.isRightToLeft(locale) ? 'rtl' : host.dir;
84
+ const closeButton = frame.current?.querySelector('.foundation-dialog-close');
85
+ const targets = focusableIn(host);
86
+ (targets.find((target)=>/^(INPUT|SELECT|TEXTAREA)$/.test(target.tagName)) ?? targets.find((target)=>target !== closeButton) ?? closeButton)?.focus();
87
+ const onKeyDown = (event)=>{
88
+ if (event.key === 'Escape') {
89
+ event.preventDefault();
90
+ closeRef.current();
91
+ } else if (event.key === 'Tab') {
92
+ const inside = focusableIn(host);
93
+ if (inside.length === 0) {
94
+ event.preventDefault();
95
+ return;
96
+ }
97
+ const first = inside[0];
98
+ const last = inside[inside.length - 1];
99
+ if (event.shiftKey && (document.activeElement === first || !host.contains(document.activeElement))) {
100
+ event.preventDefault();
101
+ last.focus();
102
+ } else if (!event.shiftKey && (document.activeElement === last || !host.contains(document.activeElement))) {
103
+ event.preventDefault();
104
+ first.focus();
105
+ }
106
+ }
107
+ };
108
+ host.addEventListener('keydown', onKeyDown);
109
+ return ()=>{
110
+ host.removeEventListener('keydown', onKeyDown);
111
+ host.className = before.className;
112
+ for (const [name, value] of [
113
+ [
114
+ 'aria-labelledby',
115
+ before.labelledBy
116
+ ],
117
+ [
118
+ 'data-placement',
119
+ before.placement
120
+ ],
121
+ [
122
+ 'data-tone',
123
+ before.tone
124
+ ]
125
+ ]){
126
+ if (value === null) host.removeAttribute(name);
127
+ else host.setAttribute(name, value);
128
+ }
129
+ if (opener?.isConnected) opener.focus();
130
+ };
131
+ }, [
132
+ heading,
133
+ placement,
134
+ tone,
135
+ locale
136
+ ]);
137
+ return /*#__PURE__*/ jsxRuntime.jsxs("header", {
138
+ ref: frame,
139
+ className: "foundation foundation-dialog-frame",
140
+ "data-scene-id": element.id,
141
+ "data-placement": placement,
142
+ "data-tone": tone,
143
+ lang: locale,
144
+ dir: formatting.isRightToLeft(locale) ? 'rtl' : undefined,
145
+ children: [
146
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
147
+ className: "foundation-dialog-heading",
148
+ children: [
149
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
150
+ className: "foundation-dialog-titles",
151
+ children: [
152
+ /*#__PURE__*/ jsxRuntime.jsx("h2", {
153
+ id: heading,
154
+ className: "foundation-dialog-title",
155
+ children: title
156
+ }),
157
+ subtitle && /*#__PURE__*/ jsxRuntime.jsx("p", {
158
+ className: "foundation-dialog-subtitle",
159
+ children: subtitle
160
+ })
161
+ ]
162
+ }),
163
+ /*#__PURE__*/ jsxRuntime.jsx("button", {
164
+ type: "button",
165
+ className: "foundation-dialog-close",
166
+ "aria-label": foundationStrings.formatText(strings.dialogClose, {
167
+ title
168
+ }),
169
+ onClick: close,
170
+ children: /*#__PURE__*/ jsxRuntime.jsx(FoundationIcon.FoundationIcon, {
171
+ name: "close"
172
+ })
173
+ })
174
+ ]
175
+ }),
176
+ message && /*#__PURE__*/ jsxRuntime.jsx("p", {
177
+ className: "foundation-dialog-message",
178
+ children: message
179
+ }),
180
+ consequences.length > 0 && /*#__PURE__*/ jsxRuntime.jsx("ul", {
181
+ className: "foundation-dialog-consequences",
182
+ "aria-label": strings.dialogConsequences,
183
+ children: consequences.map((consequence)=>/*#__PURE__*/ jsxRuntime.jsx("li", {
184
+ children: consequence
185
+ }, consequence))
186
+ })
187
+ ]
188
+ });
189
+ }
190
+
191
+ exports.DialogFrame = DialogFrame;
192
+ exports.DialogPlacement = DialogPlacement;
193
+ exports.DialogTone = DialogTone;
194
+ exports.placementFor = placementFor;
195
+ exports.readDialogPlacement = readDialogPlacement;
196
+ //# sourceMappingURL=DialogFrame.js.map