@cratis/scene.blueprint.default 4.13.0 → 4.14.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 (79) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/gallery/GalleryScreenPreview.js +6 -3
  3. package/dist/cjs/gallery/GalleryScreenPreview.js.map +1 -1
  4. package/dist/cjs/gallery/TemplatePreviewState.js +17 -0
  5. package/dist/cjs/gallery/TemplatePreviewState.js.map +1 -0
  6. package/dist/cjs/gallery/applyTemplatePreviewState.js +91 -0
  7. package/dist/cjs/gallery/applyTemplatePreviewState.js.map +1 -0
  8. package/dist/cjs/gallery/navigation.js +7 -0
  9. package/dist/cjs/gallery/navigation.js.map +1 -1
  10. package/dist/cjs/gallery/screens.js +10 -1
  11. package/dist/cjs/gallery/screens.js.map +1 -1
  12. package/dist/cjs/gallery/statusTemplates.js +2 -1
  13. package/dist/cjs/gallery/statusTemplates.js.map +1 -1
  14. package/dist/cjs/gallery/supportTemplates.js +2 -1
  15. package/dist/cjs/gallery/supportTemplates.js.map +1 -1
  16. package/dist/cjs/gallery/widgets.js +20 -6
  17. package/dist/cjs/gallery/widgets.js.map +1 -1
  18. package/dist/cjs/gallery/workspaceTemplates.js +116 -3
  19. package/dist/cjs/gallery/workspaceTemplates.js.map +1 -1
  20. package/dist/cjs/index.js +7 -0
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/esm/gallery/ApplicationScreens.stories.d.ts +1 -0
  23. package/dist/esm/gallery/ApplicationScreens.stories.d.ts.map +1 -1
  24. package/dist/esm/gallery/ApplicationScreens.stories.js +2 -1
  25. package/dist/esm/gallery/ApplicationScreens.stories.js.map +1 -1
  26. package/dist/esm/gallery/GalleryScreenPreview.d.ts +3 -1
  27. package/dist/esm/gallery/GalleryScreenPreview.d.ts.map +1 -1
  28. package/dist/esm/gallery/GalleryScreenPreview.js +6 -3
  29. package/dist/esm/gallery/GalleryScreenPreview.js.map +1 -1
  30. package/dist/esm/gallery/PreviewStates.stories.d.ts +36 -0
  31. package/dist/esm/gallery/PreviewStates.stories.d.ts.map +1 -0
  32. package/dist/esm/gallery/PreviewStates.stories.js +27 -0
  33. package/dist/esm/gallery/PreviewStates.stories.js.map +1 -0
  34. package/dist/esm/gallery/TemplatePreviewState.d.ts +7 -0
  35. package/dist/esm/gallery/TemplatePreviewState.d.ts.map +1 -0
  36. package/dist/esm/gallery/TemplatePreviewState.js +15 -0
  37. package/dist/esm/gallery/TemplatePreviewState.js.map +1 -0
  38. package/dist/esm/gallery/applyTemplatePreviewState.d.ts +6 -0
  39. package/dist/esm/gallery/applyTemplatePreviewState.d.ts.map +1 -0
  40. package/dist/esm/gallery/applyTemplatePreviewState.js +87 -0
  41. package/dist/esm/gallery/applyTemplatePreviewState.js.map +1 -0
  42. package/dist/esm/gallery/index.d.ts +2 -0
  43. package/dist/esm/gallery/index.d.ts.map +1 -1
  44. package/dist/esm/gallery/index.js +2 -0
  45. package/dist/esm/gallery/index.js.map +1 -1
  46. package/dist/esm/gallery/navigation.d.ts.map +1 -1
  47. package/dist/esm/gallery/navigation.js +7 -0
  48. package/dist/esm/gallery/navigation.js.map +1 -1
  49. package/dist/esm/gallery/screens.d.ts.map +1 -1
  50. package/dist/esm/gallery/screens.js +10 -1
  51. package/dist/esm/gallery/screens.js.map +1 -1
  52. package/dist/esm/gallery/statusTemplates.js +2 -1
  53. package/dist/esm/gallery/statusTemplates.js.map +1 -1
  54. package/dist/esm/gallery/supportTemplates.js +2 -1
  55. package/dist/esm/gallery/supportTemplates.js.map +1 -1
  56. package/dist/esm/gallery/widgets.d.ts +1 -1
  57. package/dist/esm/gallery/widgets.d.ts.map +1 -1
  58. package/dist/esm/gallery/widgets.js +20 -6
  59. package/dist/esm/gallery/widgets.js.map +1 -1
  60. package/dist/esm/gallery/workspaceTemplates.d.ts +1 -0
  61. package/dist/esm/gallery/workspaceTemplates.d.ts.map +1 -1
  62. package/dist/esm/gallery/workspaceTemplates.js +118 -6
  63. package/dist/esm/gallery/workspaceTemplates.js.map +1 -1
  64. package/dist/esm/index.js +3 -1
  65. package/dist/esm/index.js.map +1 -1
  66. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  67. package/gallery/ApplicationScreens.stories.tsx +4 -1
  68. package/gallery/GalleryScreenPreview.tsx +8 -3
  69. package/gallery/PreviewStates.stories.tsx +56 -0
  70. package/gallery/TemplatePreviewState.ts +20 -0
  71. package/gallery/applyTemplatePreviewState.ts +69 -0
  72. package/gallery/index.ts +2 -0
  73. package/gallery/navigation.ts +1 -0
  74. package/gallery/screens.ts +2 -1
  75. package/gallery/statusTemplates.ts +1 -1
  76. package/gallery/supportTemplates.ts +1 -1
  77. package/gallery/widgets.ts +14 -5
  78. package/gallery/workspaceTemplates.ts +58 -4
  79. package/package.json +8 -7
@@ -5,15 +5,15 @@ import '../layouts/shellComponents.js';
5
5
  import '../layouts/appShell.js';
6
6
  import '../layouts/fullPage.js';
7
7
  import { TemplateSlotName } from './TemplateSlotName.js';
8
- import { button, externalComponent, card, text } from './elements.js';
9
- import { widget, table, statCard, pageHeader, formActions, emptyState, field } from './widgets.js';
8
+ import { button, externalComponent, text, card } from './elements.js';
9
+ import { widget, table, statCard, pageHeader, formActions, field, emptyState } from './widgets.js';
10
10
  import { sakaiCompositionProvenance, defaultBlueprintTemplateProvenance } from '../templateProvenance.js';
11
11
 
12
12
  // Copyright (c) Cratis. All rights reserved.
13
13
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
14
14
  /**
15
- * The five workhorse shapes inside an application shell: a dashboard, a list, a detail, a form and the
16
- * designed empty state.
15
+ * The six workhorse shapes inside an application shell: a dashboard, a list, master/detail, a detail, a
16
+ * form and the designed empty state.
17
17
  *
18
18
  * Every one fits the layout's `content` slot, and every one carries realistic seeded content rather than
19
19
  * placeholder text. A gallery whose dashboard shows four boxes labeled "Card" proves the renderer runs; a
@@ -196,7 +196,8 @@ import { sakaiCompositionProvenance, defaultBlueprintTemplateProvenance } from '
196
196
  })
197
197
  ]),
198
198
  externalComponent('crud-search', 'inputText', {
199
- placeholder: 'Search products'
199
+ placeholder: 'Search products',
200
+ ariaLabel: 'Search products'
200
201
  })
201
202
  ],
202
203
  [TemplateSlotName.Body]: [
@@ -320,6 +321,116 @@ import { sakaiCompositionProvenance, defaultBlueprintTemplateProvenance } from '
320
321
  ...defaultBlueprintTemplateProvenance
321
322
  }
322
323
  };
324
+ /**
325
+ * Master/detail: the list and the selected record side by side, so working through records does not mean
326
+ * leaving the list. The detail region is an outlet that accepts detail screens, which is what lets a row's
327
+ * destination open a full detail screen in place.
328
+ *
329
+ * At a compact width the two stack, list first, because side-by-side on a phone is two unreadable halves.
330
+ */ const masterDetailTemplate = {
331
+ name: 'MasterDetail',
332
+ fitsSlot: SlotName.Content,
333
+ slots: [
334
+ {
335
+ name: TemplateSlotName.Header
336
+ },
337
+ {
338
+ name: TemplateSlotName.Primary
339
+ },
340
+ {
341
+ name: TemplateSlotName.SidePanel
342
+ }
343
+ ],
344
+ outlets: [
345
+ {
346
+ name: 'master-detail.detail',
347
+ description: 'The selected record.',
348
+ accepts: [
349
+ 'Detail'
350
+ ]
351
+ }
352
+ ],
353
+ arrangement: {
354
+ root: column([
355
+ slotLeaf(TemplateSlotName.Header),
356
+ grid([
357
+ slotLeaf(TemplateSlotName.Primary),
358
+ slotLeaf(TemplateSlotName.SidePanel)
359
+ ], 2, 16)
360
+ ], 16),
361
+ overrides: [
362
+ {
363
+ width: WidthSizeClass.Compact,
364
+ root: column([
365
+ slotLeaf(TemplateSlotName.Header),
366
+ slotLeaf(TemplateSlotName.Primary),
367
+ slotLeaf(TemplateSlotName.SidePanel)
368
+ ], 16)
369
+ }
370
+ ]
371
+ },
372
+ content: {
373
+ [TemplateSlotName.Header]: [
374
+ pageHeader('master-header', 'Customers', '1,204 customers, 38 with overdue invoices')
375
+ ],
376
+ [TemplateSlotName.Primary]: [
377
+ table('customers-table', [
378
+ {
379
+ field: 'name',
380
+ header: 'Customer'
381
+ },
382
+ {
383
+ field: 'city',
384
+ header: 'City'
385
+ },
386
+ {
387
+ field: 'balance',
388
+ header: 'Balance'
389
+ }
390
+ ], [
391
+ {
392
+ name: 'Northwind Traders',
393
+ city: 'Seattle',
394
+ balance: '$4,200.00'
395
+ },
396
+ {
397
+ name: 'Contoso Ltd',
398
+ city: 'Oslo',
399
+ balance: '$0.00'
400
+ },
401
+ {
402
+ name: 'Fabrikam',
403
+ city: 'Lyon',
404
+ balance: '$12,940.50'
405
+ },
406
+ {
407
+ name: 'Adventure Works',
408
+ city: 'Denver',
409
+ balance: '$318.20'
410
+ }
411
+ ], 'No customers match the search')
412
+ ],
413
+ [TemplateSlotName.SidePanel]: [
414
+ widget('customer-detail', 'Northwind Traders', [
415
+ text('customer-contact', 'Contact: Amelia Nyquist'),
416
+ text('customer-terms', 'Payment terms: 30 days'),
417
+ externalComponent('customer-status', 'tag', {
418
+ value: 'Overdue',
419
+ severity: 'warning'
420
+ }),
421
+ button('customer-open', 'Open customer', {
422
+ severity: 'primary'
423
+ })
424
+ ])
425
+ ]
426
+ },
427
+ displayName: 'Master/detail',
428
+ description: 'A list beside the selected record, stacking on narrow screens.',
429
+ metadata: {
430
+ ...defaultBlueprintTemplateProvenance,
431
+ type: 'Workspace'
432
+ }
433
+ };
323
434
  /** The form: fields, grouped, with the actions that close them. */ const formPageTemplate = {
324
435
  name: 'FormPage',
325
436
  fitsSlot: SlotName.Content,
@@ -395,10 +506,11 @@ import { sakaiCompositionProvenance, defaultBlueprintTemplateProvenance } from '
395
506
  /** The five workspace templates. */ const workspaceTemplates = [
396
507
  dashboardTemplate,
397
508
  crudListTemplate,
509
+ masterDetailTemplate,
398
510
  detailViewTemplate,
399
511
  formPageTemplate,
400
512
  emptyTemplate
401
513
  ];
402
514
 
403
- export { crudListTemplate, dashboardTemplate, detailViewTemplate, emptyTemplate, formPageTemplate, workspaceTemplates };
515
+ export { crudListTemplate, dashboardTemplate, detailViewTemplate, emptyTemplate, formPageTemplate, masterDetailTemplate, workspaceTemplates };
404
516
  //# sourceMappingURL=workspaceTemplates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceTemplates.js","sources":["../../../gallery/workspaceTemplates.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, WidthSizeClass } from '@cratis/scene.model';\nimport { SlotName, column, grid, slotLeaf } from '../layouts';\nimport { TemplateSlotName } from './TemplateSlotName';\nimport { button, card, externalComponent, text } from './elements';\nimport { emptyState, field, formActions, pageHeader, statCard, table, widget } from './widgets';\nimport { defaultBlueprintTemplateProvenance, sakaiCompositionProvenance } from '../templateProvenance';\n\n/**\n * The five workhorse shapes inside an application shell: a dashboard, a list, a detail, a form and the\n * designed empty state.\n *\n * Every one fits the layout's `content` slot, and every one carries realistic seeded content rather than\n * placeholder text. A gallery whose dashboard shows four boxes labeled \"Card\" proves the renderer runs; a\n * gallery whose dashboard shows revenue, orders, customers and a real table proves the blueprint is worth\n * starting an application from.\n */\n\n/**\n * The dashboard: four figures across the top, then two columns of larger widgets.\n *\n * This is Sakai's composition, and the reason to copy it is that it is the arrangement people already read\n * fluently - the eye takes the row of numbers first and then settles into the detail.\n *\n * Its own arrangement collapses the two columns into one at a compact width, because a two-column widget\n * grid on a phone is two columns of unreadable slivers.\n */\nexport const dashboardTemplate: ScreenTemplate = {\n name: 'Dashboard',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Stats }, { name: TemplateSlotName.Primary }, { name: TemplateSlotName.Secondary }],\n arrangement: {\n root: column([slotLeaf(TemplateSlotName.Stats), grid([slotLeaf(TemplateSlotName.Primary, { span: 2 }), slotLeaf(TemplateSlotName.Secondary)], 3, 16)]),\n overrides: [\n {\n width: WidthSizeClass.Compact,\n root: column([slotLeaf(TemplateSlotName.Stats), slotLeaf(TemplateSlotName.Primary), slotLeaf(TemplateSlotName.Secondary)], 16),\n },\n ],\n },\n content: {\n [TemplateSlotName.Stats]: [\n statCard('stat-revenue', 'Revenue', '$284,120', '+12.4% this month', 'pi pi-dollar'),\n statCard('stat-orders', 'Orders', '1,842', '+3.1% this month', 'pi pi-shopping-cart'),\n statCard('stat-customers', 'Customers', '9,410', '+128 new', 'pi pi-users'),\n statCard('stat-open', 'Open tickets', '17', '-4 since Monday', 'pi pi-inbox'),\n ],\n [TemplateSlotName.Primary]: [\n widget('widget-revenue', 'Revenue over time', [\n table(\n 'revenue-table',\n [\n { field: 'month', header: 'Month' },\n { field: 'revenue', header: 'Revenue' },\n { field: 'change', header: 'Change' },\n ],\n [\n { month: 'March', revenue: '$284,120', change: '+12.4%' },\n { month: 'February', revenue: '$252,780', change: '+4.1%' },\n { month: 'January', revenue: '$242,830', change: '-1.8%' },\n { month: 'December', revenue: '$247,290', change: '+9.6%' },\n ],\n ),\n ]),\n widget('widget-orders', 'Recent orders', [\n table(\n 'orders-table',\n [\n { field: 'reference', header: 'Reference' },\n { field: 'customer', header: 'Customer' },\n { field: 'total', header: 'Total' },\n { field: 'status', header: 'Status' },\n ],\n [\n { reference: 'ORD-4192', customer: 'Northwind Traders', total: '$1,240.00', status: 'Shipped' },\n { reference: 'ORD-4191', customer: 'Contoso Ltd', total: '$318.50', status: 'Packing' },\n { reference: 'ORD-4188', customer: 'Fabrikam', total: '$2,980.00', status: 'Awaiting payment' },\n { reference: 'ORD-4184', customer: 'Adventure Works', total: '$76.20', status: 'Shipped' },\n ],\n ),\n ]),\n ],\n [TemplateSlotName.Secondary]: [\n widget('widget-activity', 'Activity', [externalComponent('activity-timeline', 'timeline', { align: 'left' })]),\n widget('widget-capacity', 'Warehouse capacity', [externalComponent('capacity-bar', 'progressBar', { value: 68 })]),\n ],\n },\n displayName: 'Dashboard',\n description: 'Four stat cards over two columns of widgets - the composition every template line opens with.',\n metadata: { ...sakaiCompositionProvenance },\n};\n\n/** The list: a filter toolbar, a real table, and the row actions a list needs. */\nexport const crudListTemplate: ScreenTemplate = {\n name: 'CrudList',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Toolbar }, { name: TemplateSlotName.Body }],\n content: {\n [TemplateSlotName.Toolbar]: [\n pageHeader('crud-header', 'Products', '412 products across 9 categories', [\n button('crud-new', 'New product', { severity: 'primary', icon: 'pi pi-plus' }),\n button('crud-import', 'Import', { severity: 'secondary', icon: 'pi pi-upload' }),\n ]),\n externalComponent('crud-search', 'inputText', { placeholder: 'Search products' }),\n ],\n [TemplateSlotName.Body]: [\n table(\n 'products-table',\n [\n { field: 'code', header: 'Code' },\n { field: 'name', header: 'Name' },\n { field: 'category', header: 'Category' },\n { field: 'price', header: 'Price' },\n { field: 'stock', header: 'In stock' },\n ],\n [\n { code: 'P-1001', name: 'Bamboo Watch', category: 'Accessories', price: '$65.00', stock: 24 },\n { code: 'P-1002', name: 'Black Watch', category: 'Accessories', price: '$72.00', stock: 61 },\n { code: 'P-1003', name: 'Blue Band', category: 'Fitness', price: '$79.00', stock: 2 },\n { code: 'P-1004', name: 'Blue T-Shirt', category: 'Clothing', price: '$29.00', stock: 25 },\n { code: 'P-1005', name: 'Bracelet', category: 'Accessories', price: '$15.00', stock: 73 },\n ],\n ),\n ],\n },\n displayName: 'List',\n description: 'A searchable table with a header, primary action and row data.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The detail: a summary panel beside the record's own sections. */\nexport const detailViewTemplate: ScreenTemplate = {\n name: 'DetailView',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Header }, { name: TemplateSlotName.Body }, { name: TemplateSlotName.SidePanel }],\n content: {\n [TemplateSlotName.Header]: [\n pageHeader('detail-header', 'Bamboo Watch', 'P-1001 · Accessories', [\n button('detail-edit', 'Edit', { severity: 'primary', icon: 'pi pi-pencil' }),\n button('detail-archive', 'Archive', { severity: 'secondary', icon: 'pi pi-inbox' }),\n ]),\n ],\n [TemplateSlotName.Body]: [\n widget('detail-description', 'Description', [\n text('detail-description-text', 'A bamboo-cased watch with a sapphire face and a recycled steel strap.'),\n ]),\n widget('detail-history', 'Price history', [externalComponent('detail-history-timeline', 'timeline', { align: 'left' })]),\n ],\n [TemplateSlotName.SidePanel]: [\n widget('detail-summary', 'Summary', [\n text('detail-stock', 'In stock: 24'),\n text('detail-reserved', 'Reserved: 3'),\n externalComponent('detail-status', 'tag', { value: 'Active', severity: 'success' }),\n ]),\n ],\n },\n displayName: 'Detail',\n description: 'One record: a header with actions, its sections, and a summary panel.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The form: fields, grouped, with the actions that close them. */\nexport const formPageTemplate: ScreenTemplate = {\n name: 'FormPage',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Header }, { name: TemplateSlotName.Body }, { name: TemplateSlotName.Actions }],\n content: {\n [TemplateSlotName.Header]: [pageHeader('form-header', 'New product', 'Everything marked with an asterisk is required')],\n [TemplateSlotName.Body]: [\n card('form-card', [\n field('form-name', 'Name', 'inputText', { placeholder: 'Bamboo Watch' }),\n field('form-code', 'Code', 'inputText', { placeholder: 'P-1001' }),\n field('form-category', 'Category', 'dropdown', { options: ['Accessories', 'Clothing', 'Fitness'] }),\n field('form-price', 'Price', 'inputNumber', { mode: 'currency', currency: 'USD' }),\n field('form-available', 'Available from', 'calendar', {}),\n field('form-notes', 'Notes', 'inputTextarea', { rows: 4 }),\n ]),\n ],\n [TemplateSlotName.Actions]: [formActions('form-actions', 'Create product')],\n },\n displayName: 'Form',\n description: 'A grouped form with the field types an application actually uses.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The empty state: what a list looks like before anything exists, designed rather than apologized for. */\nexport const emptyTemplate: ScreenTemplate = {\n name: 'Empty',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Body }],\n content: {\n [TemplateSlotName.Body]: [\n emptyState('empty-state', 'No products yet', 'Products you create will show up here, with their stock and pricing.', 'Create the first product'),\n ],\n },\n displayName: 'Empty state',\n description: 'The designed empty state for a list that has nothing in it yet.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The five workspace templates. */\nexport const workspaceTemplates: ScreenTemplate[] = [dashboardTemplate, crudListTemplate, detailViewTemplate, formPageTemplate, emptyTemplate];\n"],"names":["dashboardTemplate","name","fitsSlot","SlotName","Content","slots","TemplateSlotName","Stats","Primary","Secondary","arrangement","root","column","slotLeaf","grid","span","overrides","width","WidthSizeClass","Compact","content","statCard","widget","table","field","header","month","revenue","change","reference","customer","total","status","externalComponent","align","value","displayName","description","metadata","sakaiCompositionProvenance","crudListTemplate","Toolbar","Body","pageHeader","button","severity","icon","placeholder","code","category","price","stock","defaultBlueprintTemplateProvenance","detailViewTemplate","Header","SidePanel","text","formPageTemplate","Actions","card","options","mode","currency","rows","formActions","emptyTemplate","emptyState","workspaceTemplates"],"mappings":"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"}
1
+ {"version":3,"file":"workspaceTemplates.js","sources":["../../../gallery/workspaceTemplates.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, WidthSizeClass } from '@cratis/scene.model';\nimport { SlotName, column, grid, slotLeaf } from '../layouts';\nimport { TemplateSlotName } from './TemplateSlotName';\nimport { button, card, externalComponent, text } from './elements';\nimport { emptyState, field, formActions, pageHeader, statCard, table, widget } from './widgets';\nimport { defaultBlueprintTemplateProvenance, sakaiCompositionProvenance } from '../templateProvenance';\n\n/**\n * The six workhorse shapes inside an application shell: a dashboard, a list, master/detail, a detail, a\n * form and the designed empty state.\n *\n * Every one fits the layout's `content` slot, and every one carries realistic seeded content rather than\n * placeholder text. A gallery whose dashboard shows four boxes labeled \"Card\" proves the renderer runs; a\n * gallery whose dashboard shows revenue, orders, customers and a real table proves the blueprint is worth\n * starting an application from.\n */\n\n/**\n * The dashboard: four figures across the top, then two columns of larger widgets.\n *\n * This is Sakai's composition, and the reason to copy it is that it is the arrangement people already read\n * fluently - the eye takes the row of numbers first and then settles into the detail.\n *\n * Its own arrangement collapses the two columns into one at a compact width, because a two-column widget\n * grid on a phone is two columns of unreadable slivers.\n */\nexport const dashboardTemplate: ScreenTemplate = {\n name: 'Dashboard',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Stats }, { name: TemplateSlotName.Primary }, { name: TemplateSlotName.Secondary }],\n arrangement: {\n root: column([slotLeaf(TemplateSlotName.Stats), grid([slotLeaf(TemplateSlotName.Primary, { span: 2 }), slotLeaf(TemplateSlotName.Secondary)], 3, 16)]),\n overrides: [\n {\n width: WidthSizeClass.Compact,\n root: column([slotLeaf(TemplateSlotName.Stats), slotLeaf(TemplateSlotName.Primary), slotLeaf(TemplateSlotName.Secondary)], 16),\n },\n ],\n },\n content: {\n [TemplateSlotName.Stats]: [\n statCard('stat-revenue', 'Revenue', '$284,120', '+12.4% this month', 'pi pi-dollar'),\n statCard('stat-orders', 'Orders', '1,842', '+3.1% this month', 'pi pi-shopping-cart'),\n statCard('stat-customers', 'Customers', '9,410', '+128 new', 'pi pi-users'),\n statCard('stat-open', 'Open tickets', '17', '-4 since Monday', 'pi pi-inbox'),\n ],\n [TemplateSlotName.Primary]: [\n widget('widget-revenue', 'Revenue over time', [\n table(\n 'revenue-table',\n [\n { field: 'month', header: 'Month' },\n { field: 'revenue', header: 'Revenue' },\n { field: 'change', header: 'Change' },\n ],\n [\n { month: 'March', revenue: '$284,120', change: '+12.4%' },\n { month: 'February', revenue: '$252,780', change: '+4.1%' },\n { month: 'January', revenue: '$242,830', change: '-1.8%' },\n { month: 'December', revenue: '$247,290', change: '+9.6%' },\n ],\n ),\n ]),\n widget('widget-orders', 'Recent orders', [\n table(\n 'orders-table',\n [\n { field: 'reference', header: 'Reference' },\n { field: 'customer', header: 'Customer' },\n { field: 'total', header: 'Total' },\n { field: 'status', header: 'Status' },\n ],\n [\n { reference: 'ORD-4192', customer: 'Northwind Traders', total: '$1,240.00', status: 'Shipped' },\n { reference: 'ORD-4191', customer: 'Contoso Ltd', total: '$318.50', status: 'Packing' },\n { reference: 'ORD-4188', customer: 'Fabrikam', total: '$2,980.00', status: 'Awaiting payment' },\n { reference: 'ORD-4184', customer: 'Adventure Works', total: '$76.20', status: 'Shipped' },\n ],\n ),\n ]),\n ],\n [TemplateSlotName.Secondary]: [\n widget('widget-activity', 'Activity', [externalComponent('activity-timeline', 'timeline', { align: 'left' })]),\n widget('widget-capacity', 'Warehouse capacity', [externalComponent('capacity-bar', 'progressBar', { value: 68 })]),\n ],\n },\n displayName: 'Dashboard',\n description: 'Four stat cards over two columns of widgets - the composition every template line opens with.',\n metadata: { ...sakaiCompositionProvenance },\n};\n\n/** The list: a filter toolbar, a real table, and the row actions a list needs. */\nexport const crudListTemplate: ScreenTemplate = {\n name: 'CrudList',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Toolbar }, { name: TemplateSlotName.Body }],\n content: {\n [TemplateSlotName.Toolbar]: [\n pageHeader('crud-header', 'Products', '412 products across 9 categories', [\n button('crud-new', 'New product', { severity: 'primary', icon: 'pi pi-plus' }),\n button('crud-import', 'Import', { severity: 'secondary', icon: 'pi pi-upload' }),\n ]),\n externalComponent('crud-search', 'inputText', { placeholder: 'Search products', ariaLabel: 'Search products' }),\n ],\n [TemplateSlotName.Body]: [\n table(\n 'products-table',\n [\n { field: 'code', header: 'Code' },\n { field: 'name', header: 'Name' },\n { field: 'category', header: 'Category' },\n { field: 'price', header: 'Price' },\n { field: 'stock', header: 'In stock' },\n ],\n [\n { code: 'P-1001', name: 'Bamboo Watch', category: 'Accessories', price: '$65.00', stock: 24 },\n { code: 'P-1002', name: 'Black Watch', category: 'Accessories', price: '$72.00', stock: 61 },\n { code: 'P-1003', name: 'Blue Band', category: 'Fitness', price: '$79.00', stock: 2 },\n { code: 'P-1004', name: 'Blue T-Shirt', category: 'Clothing', price: '$29.00', stock: 25 },\n { code: 'P-1005', name: 'Bracelet', category: 'Accessories', price: '$15.00', stock: 73 },\n ],\n ),\n ],\n },\n displayName: 'List',\n description: 'A searchable table with a header, primary action and row data.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The detail: a summary panel beside the record's own sections. */\nexport const detailViewTemplate: ScreenTemplate = {\n name: 'DetailView',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Header }, { name: TemplateSlotName.Body }, { name: TemplateSlotName.SidePanel }],\n content: {\n [TemplateSlotName.Header]: [\n pageHeader('detail-header', 'Bamboo Watch', 'P-1001 · Accessories', [\n button('detail-edit', 'Edit', { severity: 'primary', icon: 'pi pi-pencil' }),\n button('detail-archive', 'Archive', { severity: 'secondary', icon: 'pi pi-inbox' }),\n ]),\n ],\n [TemplateSlotName.Body]: [\n widget('detail-description', 'Description', [\n text('detail-description-text', 'A bamboo-cased watch with a sapphire face and a recycled steel strap.'),\n ]),\n widget('detail-history', 'Price history', [externalComponent('detail-history-timeline', 'timeline', { align: 'left' })]),\n ],\n [TemplateSlotName.SidePanel]: [\n widget('detail-summary', 'Summary', [\n text('detail-stock', 'In stock: 24'),\n text('detail-reserved', 'Reserved: 3'),\n externalComponent('detail-status', 'tag', { value: 'Active', severity: 'success' }),\n ]),\n ],\n },\n displayName: 'Detail',\n description: 'One record: a header with actions, its sections, and a summary panel.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/**\n * Master/detail: the list and the selected record side by side, so working through records does not mean\n * leaving the list. The detail region is an outlet that accepts detail screens, which is what lets a row's\n * destination open a full detail screen in place.\n *\n * At a compact width the two stack, list first, because side-by-side on a phone is two unreadable halves.\n */\nexport const masterDetailTemplate: ScreenTemplate = {\n name: 'MasterDetail',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Header }, { name: TemplateSlotName.Primary }, { name: TemplateSlotName.SidePanel }],\n outlets: [{ name: 'master-detail.detail', description: 'The selected record.', accepts: ['Detail'] }],\n arrangement: {\n root: column([slotLeaf(TemplateSlotName.Header), grid([slotLeaf(TemplateSlotName.Primary), slotLeaf(TemplateSlotName.SidePanel)], 2, 16)], 16),\n overrides: [\n {\n width: WidthSizeClass.Compact,\n root: column([slotLeaf(TemplateSlotName.Header), slotLeaf(TemplateSlotName.Primary), slotLeaf(TemplateSlotName.SidePanel)], 16),\n },\n ],\n },\n content: {\n [TemplateSlotName.Header]: [pageHeader('master-header', 'Customers', '1,204 customers, 38 with overdue invoices')],\n [TemplateSlotName.Primary]: [\n table(\n 'customers-table',\n [\n { field: 'name', header: 'Customer' },\n { field: 'city', header: 'City' },\n { field: 'balance', header: 'Balance' },\n ],\n [\n { name: 'Northwind Traders', city: 'Seattle', balance: '$4,200.00' },\n { name: 'Contoso Ltd', city: 'Oslo', balance: '$0.00' },\n { name: 'Fabrikam', city: 'Lyon', balance: '$12,940.50' },\n { name: 'Adventure Works', city: 'Denver', balance: '$318.20' },\n ],\n 'No customers match the search',\n ),\n ],\n [TemplateSlotName.SidePanel]: [\n widget('customer-detail', 'Northwind Traders', [\n text('customer-contact', 'Contact: Amelia Nyquist'),\n text('customer-terms', 'Payment terms: 30 days'),\n externalComponent('customer-status', 'tag', { value: 'Overdue', severity: 'warning' }),\n button('customer-open', 'Open customer', { severity: 'primary' }),\n ]),\n ],\n },\n displayName: 'Master/detail',\n description: 'A list beside the selected record, stacking on narrow screens.',\n metadata: { ...defaultBlueprintTemplateProvenance, type: 'Workspace' },\n};\n\n/** The form: fields, grouped, with the actions that close them. */\nexport const formPageTemplate: ScreenTemplate = {\n name: 'FormPage',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Header }, { name: TemplateSlotName.Body }, { name: TemplateSlotName.Actions }],\n content: {\n [TemplateSlotName.Header]: [pageHeader('form-header', 'New product', 'Everything marked with an asterisk is required')],\n [TemplateSlotName.Body]: [\n card('form-card', [\n field('form-name', 'Name', 'inputText', { placeholder: 'Bamboo Watch' }),\n field('form-code', 'Code', 'inputText', { placeholder: 'P-1001' }),\n field('form-category', 'Category', 'dropdown', { options: ['Accessories', 'Clothing', 'Fitness'] }),\n field('form-price', 'Price', 'inputNumber', { mode: 'currency', currency: 'USD' }),\n field('form-available', 'Available from', 'calendar', {}),\n field('form-notes', 'Notes', 'inputTextarea', { rows: 4 }),\n ]),\n ],\n [TemplateSlotName.Actions]: [formActions('form-actions', 'Create product')],\n },\n displayName: 'Form',\n description: 'A grouped form with the field types an application actually uses.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The empty state: what a list looks like before anything exists, designed rather than apologized for. */\nexport const emptyTemplate: ScreenTemplate = {\n name: 'Empty',\n fitsSlot: SlotName.Content,\n slots: [{ name: TemplateSlotName.Body }],\n content: {\n [TemplateSlotName.Body]: [\n emptyState('empty-state', 'No products yet', 'Products you create will show up here, with their stock and pricing.', 'Create the first product'),\n ],\n },\n displayName: 'Empty state',\n description: 'The designed empty state for a list that has nothing in it yet.',\n metadata: { ...defaultBlueprintTemplateProvenance },\n};\n\n/** The five workspace templates. */\nexport const workspaceTemplates: ScreenTemplate[] = [dashboardTemplate, crudListTemplate, masterDetailTemplate, detailViewTemplate, formPageTemplate, emptyTemplate];\n"],"names":["dashboardTemplate","name","fitsSlot","SlotName","Content","slots","TemplateSlotName","Stats","Primary","Secondary","arrangement","root","column","slotLeaf","grid","span","overrides","width","WidthSizeClass","Compact","content","statCard","widget","table","field","header","month","revenue","change","reference","customer","total","status","externalComponent","align","value","displayName","description","metadata","sakaiCompositionProvenance","crudListTemplate","Toolbar","Body","pageHeader","button","severity","icon","placeholder","ariaLabel","code","category","price","stock","defaultBlueprintTemplateProvenance","detailViewTemplate","Header","SidePanel","text","masterDetailTemplate","outlets","accepts","city","balance","type","formPageTemplate","Actions","card","options","mode","currency","rows","formActions","emptyTemplate","emptyState","workspaceTemplates"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -21,7 +21,7 @@ export { entriesInGroup, navigationContributionPoint, navigationContributions, n
21
21
  export { applicationChrome, fullPageChrome } from './gallery/applicationChrome.js';
22
22
  export { composeScreenElement, nestScreenTemplates, templateContentInLayout } from './gallery/composeScreen.js';
23
23
  export { featureSectionTemplate, moduleWorkspaceTemplate, nestingChainTemplates, sliceSectionTemplate } from './gallery/nesting.js';
24
- export { crudListTemplate, dashboardTemplate, detailViewTemplate, emptyTemplate, formPageTemplate, workspaceTemplates } from './gallery/workspaceTemplates.js';
24
+ export { crudListTemplate, dashboardTemplate, detailViewTemplate, emptyTemplate, formPageTemplate, masterDetailTemplate, workspaceTemplates } from './gallery/workspaceTemplates.js';
25
25
  export { documentationTemplate, helpTemplate, invoiceTemplate, profileSettingsTemplate, supportTemplates, userManagementTemplate } from './gallery/supportTemplates.js';
26
26
  export { authTemplates, forgotPasswordTemplate, lockScreenTemplate, loginTemplate, newPasswordTemplate, registerTemplate, verificationTemplate } from './gallery/authTemplates.js';
27
27
  export { accessDeniedTemplate, errorTemplate, landingTemplate, notFoundTemplate, statusTemplates } from './gallery/statusTemplates.js';
@@ -32,6 +32,8 @@ export { componentNamesIn, distinctComponentNames } from './gallery/componentNam
32
32
  export { galleryComponentCatalog, galleryPreviewProfile, galleryProfile } from './gallery/previewProfile.js';
33
33
  export { resolveElementComponentNames } from './gallery/resolveElementNames.js';
34
34
  export { GalleryScreenPreview, galleryPreviewRegistry } from './gallery/GalleryScreenPreview.js';
35
+ export { TemplatePreviewState } from './gallery/TemplatePreviewState.js';
36
+ export { applyTemplatePreviewState, hasPreviewData, previewErrorMessage } from './gallery/applyTemplatePreviewState.js';
35
37
  export { readBoolean, readNumber, readOptionalString, readRecords, readString, readStrings, recordString } from './shell/elementProperties.js';
36
38
  export { readThemeOptions, themeOptionsFor } from './shell/ThemeOption.js';
37
39
  export { AppShell } from './shell/AppShell.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}