@cratis/scene.blueprint.default 4.38.0 → 4.40.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 (167) hide show
  1. package/ComponentName.ts +27 -0
  2. package/defaultBlueprintComponents.ts +10 -1
  3. package/dist/cjs/ComponentName.js +9 -0
  4. package/dist/cjs/ComponentName.js.map +1 -1
  5. package/dist/cjs/defaultBlueprintComponents.js +19 -1
  6. package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
  7. package/dist/cjs/foundation/BulkBar.js +62 -0
  8. package/dist/cjs/foundation/BulkBar.js.map +1 -0
  9. package/dist/cjs/foundation/DataList.js +436 -0
  10. package/dist/cjs/foundation/DataList.js.map +1 -0
  11. package/dist/cjs/foundation/FormScreenBody.js +447 -0
  12. package/dist/cjs/foundation/FormScreenBody.js.map +1 -0
  13. package/dist/cjs/foundation/FoundationStates.js +2 -1
  14. package/dist/cjs/foundation/FoundationStates.js.map +1 -1
  15. package/dist/cjs/foundation/GlobalSearch.js +54 -0
  16. package/dist/cjs/foundation/GlobalSearch.js.map +1 -0
  17. package/dist/cjs/foundation/KanbanBoard.js +222 -0
  18. package/dist/cjs/foundation/KanbanBoard.js.map +1 -0
  19. package/dist/cjs/foundation/NotificationsButton.js +45 -0
  20. package/dist/cjs/foundation/NotificationsButton.js.map +1 -0
  21. package/dist/cjs/foundation/SubNavigation.js +72 -0
  22. package/dist/cjs/foundation/SubNavigation.js.map +1 -0
  23. package/dist/cjs/foundation/TabSet.js +101 -0
  24. package/dist/cjs/foundation/TabSet.js.map +1 -0
  25. package/dist/cjs/foundation/WizardProgress.js +185 -0
  26. package/dist/cjs/foundation/WizardProgress.js.map +1 -0
  27. package/dist/cjs/foundation/boardModel.js +67 -0
  28. package/dist/cjs/foundation/boardModel.js.map +1 -0
  29. package/dist/cjs/foundation/formModel.js +158 -0
  30. package/dist/cjs/foundation/formModel.js.map +1 -0
  31. package/dist/cjs/foundation/foundationComponentMetadata.js +54 -0
  32. package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
  33. package/dist/cjs/foundation/foundationDescriptors.js +400 -0
  34. package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
  35. package/dist/cjs/foundation/foundationSamples.js +303 -0
  36. package/dist/cjs/foundation/foundationSamples.js.map +1 -1
  37. package/dist/cjs/foundation/foundationStrings.js +72 -0
  38. package/dist/cjs/foundation/foundationStrings.js.map +1 -1
  39. package/dist/cjs/foundation/listModel.js +200 -0
  40. package/dist/cjs/foundation/listModel.js.map +1 -0
  41. package/dist/cjs/foundation/tabModel.js +41 -0
  42. package/dist/cjs/foundation/tabModel.js.map +1 -0
  43. package/dist/cjs/foundation/urlState.js +57 -0
  44. package/dist/cjs/foundation/urlState.js.map +1 -0
  45. package/dist/cjs/foundation/useCompactWidth.js +23 -0
  46. package/dist/cjs/foundation/useCompactWidth.js.map +1 -0
  47. package/dist/cjs/foundation/wizardModel.js +50 -0
  48. package/dist/cjs/foundation/wizardModel.js.map +1 -0
  49. package/dist/cjs/index.js +71 -0
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/esm/ComponentName.d.ts +10 -1
  52. package/dist/esm/ComponentName.d.ts.map +1 -1
  53. package/dist/esm/ComponentName.js +9 -0
  54. package/dist/esm/ComponentName.js.map +1 -1
  55. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
  56. package/dist/esm/defaultBlueprintComponents.js +19 -1
  57. package/dist/esm/defaultBlueprintComponents.js.map +1 -1
  58. package/dist/esm/foundation/BulkBar.d.ts +4 -0
  59. package/dist/esm/foundation/BulkBar.d.ts.map +1 -0
  60. package/dist/esm/foundation/BulkBar.js +59 -0
  61. package/dist/esm/foundation/BulkBar.js.map +1 -0
  62. package/dist/esm/foundation/DataList.d.ts +3 -0
  63. package/dist/esm/foundation/DataList.d.ts.map +1 -0
  64. package/dist/esm/foundation/DataList.js +434 -0
  65. package/dist/esm/foundation/DataList.js.map +1 -0
  66. package/dist/esm/foundation/FormScreenBody.d.ts +3 -0
  67. package/dist/esm/foundation/FormScreenBody.d.ts.map +1 -0
  68. package/dist/esm/foundation/FormScreenBody.js +445 -0
  69. package/dist/esm/foundation/FormScreenBody.js.map +1 -0
  70. package/dist/esm/foundation/FoundationStates.js +2 -1
  71. package/dist/esm/foundation/FoundationStates.js.map +1 -1
  72. package/dist/esm/foundation/GlobalSearch.d.ts +3 -0
  73. package/dist/esm/foundation/GlobalSearch.d.ts.map +1 -0
  74. package/dist/esm/foundation/GlobalSearch.js +52 -0
  75. package/dist/esm/foundation/GlobalSearch.js.map +1 -0
  76. package/dist/esm/foundation/KanbanBoard.d.ts +3 -0
  77. package/dist/esm/foundation/KanbanBoard.d.ts.map +1 -0
  78. package/dist/esm/foundation/KanbanBoard.js +220 -0
  79. package/dist/esm/foundation/KanbanBoard.js.map +1 -0
  80. package/dist/esm/foundation/NotificationsButton.d.ts +3 -0
  81. package/dist/esm/foundation/NotificationsButton.d.ts.map +1 -0
  82. package/dist/esm/foundation/NotificationsButton.js +43 -0
  83. package/dist/esm/foundation/NotificationsButton.js.map +1 -0
  84. package/dist/esm/foundation/SubNavigation.d.ts +3 -0
  85. package/dist/esm/foundation/SubNavigation.d.ts.map +1 -0
  86. package/dist/esm/foundation/SubNavigation.js +70 -0
  87. package/dist/esm/foundation/SubNavigation.js.map +1 -0
  88. package/dist/esm/foundation/TabSet.d.ts +3 -0
  89. package/dist/esm/foundation/TabSet.d.ts.map +1 -0
  90. package/dist/esm/foundation/TabSet.js +99 -0
  91. package/dist/esm/foundation/TabSet.js.map +1 -0
  92. package/dist/esm/foundation/WizardProgress.d.ts +3 -0
  93. package/dist/esm/foundation/WizardProgress.d.ts.map +1 -0
  94. package/dist/esm/foundation/WizardProgress.js +183 -0
  95. package/dist/esm/foundation/WizardProgress.js.map +1 -0
  96. package/dist/esm/foundation/boardModel.d.ts +22 -0
  97. package/dist/esm/foundation/boardModel.d.ts.map +1 -0
  98. package/dist/esm/foundation/boardModel.js +61 -0
  99. package/dist/esm/foundation/boardModel.js.map +1 -0
  100. package/dist/esm/foundation/formModel.d.ts +48 -0
  101. package/dist/esm/foundation/formModel.d.ts.map +1 -0
  102. package/dist/esm/foundation/formModel.js +147 -0
  103. package/dist/esm/foundation/formModel.js.map +1 -0
  104. package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
  105. package/dist/esm/foundation/foundationComponentMetadata.js +54 -0
  106. package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -1
  107. package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -1
  108. package/dist/esm/foundation/foundationDescriptors.js +400 -0
  109. package/dist/esm/foundation/foundationDescriptors.js.map +1 -1
  110. package/dist/esm/foundation/foundationSamples.d.ts.map +1 -1
  111. package/dist/esm/foundation/foundationSamples.js +303 -0
  112. package/dist/esm/foundation/foundationSamples.js.map +1 -1
  113. package/dist/esm/foundation/foundationStrings.d.ts +72 -0
  114. package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
  115. package/dist/esm/foundation/foundationStrings.js +72 -0
  116. package/dist/esm/foundation/foundationStrings.js.map +1 -1
  117. package/dist/esm/foundation/index.d.ts +16 -0
  118. package/dist/esm/foundation/index.d.ts.map +1 -1
  119. package/dist/esm/foundation/index.js +16 -0
  120. package/dist/esm/foundation/index.js.map +1 -1
  121. package/dist/esm/foundation/listModel.d.ts +49 -0
  122. package/dist/esm/foundation/listModel.d.ts.map +1 -0
  123. package/dist/esm/foundation/listModel.js +183 -0
  124. package/dist/esm/foundation/listModel.js.map +1 -0
  125. package/dist/esm/foundation/tabModel.d.ts +10 -0
  126. package/dist/esm/foundation/tabModel.d.ts.map +1 -0
  127. package/dist/esm/foundation/tabModel.js +37 -0
  128. package/dist/esm/foundation/tabModel.js.map +1 -0
  129. package/dist/esm/foundation/urlState.d.ts +4 -0
  130. package/dist/esm/foundation/urlState.d.ts.map +1 -0
  131. package/dist/esm/foundation/urlState.js +53 -0
  132. package/dist/esm/foundation/urlState.js.map +1 -0
  133. package/dist/esm/foundation/useCompactWidth.d.ts +3 -0
  134. package/dist/esm/foundation/useCompactWidth.d.ts.map +1 -0
  135. package/dist/esm/foundation/useCompactWidth.js +20 -0
  136. package/dist/esm/foundation/useCompactWidth.js.map +1 -0
  137. package/dist/esm/foundation/wizardModel.d.ts +16 -0
  138. package/dist/esm/foundation/wizardModel.d.ts.map +1 -0
  139. package/dist/esm/foundation/wizardModel.js +43 -0
  140. package/dist/esm/foundation/wizardModel.js.map +1 -0
  141. package/dist/esm/index.js +16 -0
  142. package/dist/esm/index.js.map +1 -1
  143. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  144. package/foundation/BulkBar.tsx +38 -0
  145. package/foundation/DataList.tsx +208 -0
  146. package/foundation/FormScreenBody.tsx +196 -0
  147. package/foundation/FoundationStates.tsx +1 -1
  148. package/foundation/GlobalSearch.tsx +33 -0
  149. package/foundation/KanbanBoard.tsx +97 -0
  150. package/foundation/NotificationsButton.tsx +28 -0
  151. package/foundation/SubNavigation.tsx +49 -0
  152. package/foundation/TabSet.tsx +65 -0
  153. package/foundation/WizardProgress.tsx +109 -0
  154. package/foundation/boardModel.ts +64 -0
  155. package/foundation/formModel.ts +146 -0
  156. package/foundation/foundationComponentMetadata.ts +9 -0
  157. package/foundation/foundationDescriptors.ts +195 -0
  158. package/foundation/foundationSamples.ts +56 -0
  159. package/foundation/foundationStrings.ts +72 -0
  160. package/foundation/index.ts +16 -0
  161. package/foundation/listModel.ts +190 -0
  162. package/foundation/tabModel.ts +41 -0
  163. package/foundation/urlState.ts +52 -0
  164. package/foundation/useCompactWidth.ts +23 -0
  165. package/foundation/wizardModel.ts +54 -0
  166. package/package.json +8 -8
  167. package/shell/layout.css +513 -0
@@ -1 +1 @@
1
- {"version":3,"file":"foundationComponentMetadata.js","sources":["../../../foundation/foundationComponentMetadata.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 { ComponentMetadata, componentMetadata as m } from '@cratis/scene.react';\nimport { ComponentName } from '../ComponentName';\n\n/**\n * The category, icon, keywords and picker badge of every foundation component (CMP1), keyed by bare component name.\n * The names are those of `ComponentName`; the metadata of the rest of the package lives in `defaultBlueprintComponentMetadata`.\n */\nexport const foundationComponentMetadata: Record<string, ComponentMetadata> = {\n [ComponentName.EmptyState]: m('Empty state', ComponentCategory.Feedback, 'inbox', ['no data', 'nothing', 'blank slate', 'zero state']),\n [ComponentName.StatCard]: m('Stat card', ComponentCategory.DataDisplay, 'gauge', ['kpi', 'metric', 'figure', 'number', 'dashboard']),\n [ComponentName.TrendChip]: m('Trend chip', ComponentCategory.DataDisplay, 'trending-up', ['delta', 'change', 'arrow', 'comparison']),\n [ComponentName.StatusChip]: m('Status chip', ComponentCategory.DataDisplay, 'badge-check', ['badge', 'state', 'tag', 'label']),\n [ComponentName.ChartWrapper]: m('Chart', ComponentCategory.DataDisplay, 'chart-line', ['graph', 'line', 'bar', 'stacked', 'donut', 'pie', 'funnel', 'plot']),\n [ComponentName.FilterBuilder]: m('Filter builder', ComponentCategory.Input, 'list-filter', ['filter', 'query', 'conditions', 'and or', 'search']),\n [ComponentName.ColumnChooser]: m('Column chooser', ComponentCategory.Actions, 'columns-3', ['columns', 'fields', 'show hide', 'table']),\n [ComponentName.SavedViewsMenu]: m('Saved views menu', ComponentCategory.Actions, 'bookmark', ['views', 'presets', 'saved filters']),\n [ComponentName.ChecklistSection]: m('Checklist', ComponentCategory.DataDisplay, 'list-checks', ['tasks', 'todo', 'onboarding', 'progress', 'steps']),\n [ComponentName.ActivityFeed]: m('Activity feed', ComponentCategory.DataDisplay, 'activity', ['timeline', 'history', 'comments', 'audit', 'log']),\n [ComponentName.AvatarStack]: m('Avatar stack', ComponentCategory.DataDisplay, 'users', ['people', 'members', 'assignees', 'team']),\n [ComponentName.FileUploader]: m('File uploader', ComponentCategory.Input, 'upload', ['attachments', 'files', 'drop zone', 'documents']),\n [ComponentName.ApprovalChainStepper]: m('Approval chain', ComponentCategory.Navigation, 'workflow', ['approvals', 'steps', 'workflow', 'sign off', 'stepper']),\n [ComponentName.OrgTree]: m('Org tree', ComponentCategory.DataDisplay, 'network', ['organization', 'hierarchy', 'org chart', 'reports to', 'tree']),\n [ComponentName.PermissionMatrix]: m('Permission matrix', ComponentCategory.Input, 'shield-check', ['roles', 'permissions', 'access', 'grants', 'rbac']),\n};\n"],"names":["foundationComponentMetadata","ComponentName","EmptyState","m","ComponentCategory","Feedback","StatCard","DataDisplay","TrendChip","StatusChip","ChartWrapper","FilterBuilder","Input","ColumnChooser","Actions","SavedViewsMenu","ChecklistSection","ActivityFeed","AvatarStack","FileUploader","ApprovalChainStepper","Navigation","OrgTree","PermissionMatrix"],"mappings":";;;;AAAA;AACA;AAMA;;;UAIaA,2BAAAA,GAAiE;IAC1E,CAACC,aAAAA,CAAcC,UAAU,GAAGC,kBAAE,aAAA,EAAeC,iBAAAA,CAAkBC,QAAQ,EAAE,OAAA,EAAS;AAAC,QAAA,SAAA;AAAW,QAAA,SAAA;AAAW,QAAA,aAAA;AAAe,QAAA;AAAa,KAAA,CAAA;IACrI,CAACJ,aAAAA,CAAcK,QAAQ,GAAGH,kBAAE,WAAA,EAAaC,iBAAAA,CAAkBG,WAAW,EAAE,OAAA,EAAS;AAAC,QAAA,KAAA;AAAO,QAAA,QAAA;AAAU,QAAA,QAAA;AAAU,QAAA,QAAA;AAAU,QAAA;AAAY,KAAA,CAAA;IACnI,CAACN,aAAAA,CAAcO,SAAS,GAAGL,kBAAE,YAAA,EAAcC,iBAAAA,CAAkBG,WAAW,EAAE,aAAA,EAAe;AAAC,QAAA,OAAA;AAAS,QAAA,QAAA;AAAU,QAAA,OAAA;AAAS,QAAA;AAAa,KAAA,CAAA;IACnI,CAACN,aAAAA,CAAcQ,UAAU,GAAGN,kBAAE,aAAA,EAAeC,iBAAAA,CAAkBG,WAAW,EAAE,aAAA,EAAe;AAAC,QAAA,OAAA;AAAS,QAAA,OAAA;AAAS,QAAA,KAAA;AAAO,QAAA;AAAQ,KAAA,CAAA;IAC7H,CAACN,aAAAA,CAAcS,YAAY,GAAGP,kBAAE,OAAA,EAASC,iBAAAA,CAAkBG,WAAW,EAAE,YAAA,EAAc;AAAC,QAAA,OAAA;AAAS,QAAA,MAAA;AAAQ,QAAA,KAAA;AAAO,QAAA,SAAA;AAAW,QAAA,OAAA;AAAS,QAAA,KAAA;AAAO,QAAA,QAAA;AAAU,QAAA;AAAO,KAAA,CAAA;IAC3J,CAACN,aAAAA,CAAcU,aAAa,GAAGR,kBAAE,gBAAA,EAAkBC,iBAAAA,CAAkBQ,KAAK,EAAE,aAAA,EAAe;AAAC,QAAA,QAAA;AAAU,QAAA,OAAA;AAAS,QAAA,YAAA;AAAc,QAAA,QAAA;AAAU,QAAA;AAAS,KAAA,CAAA;IAChJ,CAACX,aAAAA,CAAcY,aAAa,GAAGV,kBAAE,gBAAA,EAAkBC,iBAAAA,CAAkBU,OAAO,EAAE,WAAA,EAAa;AAAC,QAAA,SAAA;AAAW,QAAA,QAAA;AAAU,QAAA,WAAA;AAAa,QAAA;AAAQ,KAAA,CAAA;IACtI,CAACb,aAAAA,CAAcc,cAAc,GAAGZ,kBAAE,kBAAA,EAAoBC,iBAAAA,CAAkBU,OAAO,EAAE,UAAA,EAAY;AAAC,QAAA,OAAA;AAAS,QAAA,SAAA;AAAW,QAAA;AAAgB,KAAA,CAAA;IAClI,CAACb,aAAAA,CAAce,gBAAgB,GAAGb,kBAAE,WAAA,EAAaC,iBAAAA,CAAkBG,WAAW,EAAE,aAAA,EAAe;AAAC,QAAA,OAAA;AAAS,QAAA,MAAA;AAAQ,QAAA,YAAA;AAAc,QAAA,UAAA;AAAY,QAAA;AAAQ,KAAA,CAAA;IACnJ,CAACN,aAAAA,CAAcgB,YAAY,GAAGd,kBAAE,eAAA,EAAiBC,iBAAAA,CAAkBG,WAAW,EAAE,UAAA,EAAY;AAAC,QAAA,UAAA;AAAY,QAAA,SAAA;AAAW,QAAA,UAAA;AAAY,QAAA,OAAA;AAAS,QAAA;AAAM,KAAA,CAAA;IAC/I,CAACN,aAAAA,CAAciB,WAAW,GAAGf,kBAAE,cAAA,EAAgBC,iBAAAA,CAAkBG,WAAW,EAAE,OAAA,EAAS;AAAC,QAAA,QAAA;AAAU,QAAA,SAAA;AAAW,QAAA,WAAA;AAAa,QAAA;AAAO,KAAA,CAAA;IACjI,CAACN,aAAAA,CAAckB,YAAY,GAAGhB,kBAAE,eAAA,EAAiBC,iBAAAA,CAAkBQ,KAAK,EAAE,QAAA,EAAU;AAAC,QAAA,aAAA;AAAe,QAAA,OAAA;AAAS,QAAA,WAAA;AAAa,QAAA;AAAY,KAAA,CAAA;IACtI,CAACX,aAAAA,CAAcmB,oBAAoB,GAAGjB,kBAAE,gBAAA,EAAkBC,iBAAAA,CAAkBiB,UAAU,EAAE,UAAA,EAAY;AAAC,QAAA,WAAA;AAAa,QAAA,OAAA;AAAS,QAAA,UAAA;AAAY,QAAA,UAAA;AAAY,QAAA;AAAU,KAAA,CAAA;IAC7J,CAACpB,aAAAA,CAAcqB,OAAO,GAAGnB,kBAAE,UAAA,EAAYC,iBAAAA,CAAkBG,WAAW,EAAE,SAAA,EAAW;AAAC,QAAA,cAAA;AAAgB,QAAA,WAAA;AAAa,QAAA,WAAA;AAAa,QAAA,YAAA;AAAc,QAAA;AAAO,KAAA,CAAA;IACjJ,CAACN,aAAAA,CAAcsB,gBAAgB,GAAGpB,kBAAE,mBAAA,EAAqBC,iBAAAA,CAAkBQ,KAAK,EAAE,cAAA,EAAgB;AAAC,QAAA,OAAA;AAAS,QAAA,aAAA;AAAe,QAAA,QAAA;AAAU,QAAA,QAAA;AAAU,QAAA;AAAO,KAAA;AAC1J;;"}
1
+ {"version":3,"file":"foundationComponentMetadata.js","sources":["../../../foundation/foundationComponentMetadata.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 { ComponentMetadata, componentMetadata as m } from '@cratis/scene.react';\nimport { ComponentName } from '../ComponentName';\n\n/**\n * The category, icon, keywords and picker badge of every foundation component (CMP1), keyed by bare component name.\n * The names are those of `ComponentName`; the metadata of the rest of the package lives in `defaultBlueprintComponentMetadata`.\n */\nexport const foundationComponentMetadata: Record<string, ComponentMetadata> = {\n [ComponentName.EmptyState]: m('Empty state', ComponentCategory.Feedback, 'inbox', ['no data', 'nothing', 'blank slate', 'zero state']),\n [ComponentName.StatCard]: m('Stat card', ComponentCategory.DataDisplay, 'gauge', ['kpi', 'metric', 'figure', 'number', 'dashboard']),\n [ComponentName.TrendChip]: m('Trend chip', ComponentCategory.DataDisplay, 'trending-up', ['delta', 'change', 'arrow', 'comparison']),\n [ComponentName.StatusChip]: m('Status chip', ComponentCategory.DataDisplay, 'badge-check', ['badge', 'state', 'tag', 'label']),\n [ComponentName.ChartWrapper]: m('Chart', ComponentCategory.DataDisplay, 'chart-line', ['graph', 'line', 'bar', 'stacked', 'donut', 'pie', 'funnel', 'plot']),\n [ComponentName.FilterBuilder]: m('Filter builder', ComponentCategory.Input, 'list-filter', ['filter', 'query', 'conditions', 'and or', 'search']),\n [ComponentName.ColumnChooser]: m('Column chooser', ComponentCategory.Actions, 'columns-3', ['columns', 'fields', 'show hide', 'table']),\n [ComponentName.SavedViewsMenu]: m('Saved views menu', ComponentCategory.Actions, 'bookmark', ['views', 'presets', 'saved filters']),\n [ComponentName.ChecklistSection]: m('Checklist', ComponentCategory.DataDisplay, 'list-checks', ['tasks', 'todo', 'onboarding', 'progress', 'steps']),\n [ComponentName.ActivityFeed]: m('Activity feed', ComponentCategory.DataDisplay, 'activity', ['timeline', 'history', 'comments', 'audit', 'log']),\n [ComponentName.AvatarStack]: m('Avatar stack', ComponentCategory.DataDisplay, 'users', ['people', 'members', 'assignees', 'team']),\n [ComponentName.FileUploader]: m('File uploader', ComponentCategory.Input, 'upload', ['attachments', 'files', 'drop zone', 'documents']),\n [ComponentName.ApprovalChainStepper]: m('Approval chain', ComponentCategory.Navigation, 'workflow', ['approvals', 'steps', 'workflow', 'sign off', 'stepper']),\n [ComponentName.OrgTree]: m('Org tree', ComponentCategory.DataDisplay, 'network', ['organization', 'hierarchy', 'org chart', 'reports to', 'tree']),\n [ComponentName.PermissionMatrix]: m('Permission matrix', ComponentCategory.Input, 'shield-check', ['roles', 'permissions', 'access', 'grants', 'rbac']),\n [ComponentName.DataList]: m('Data list', ComponentCategory.DataDisplay, 'table', ['table', 'grid', 'records', 'cards', 'collection', 'list']),\n [ComponentName.TabSet]: m('Tab set', ComponentCategory.Navigation, 'panel-top', ['tabs', 'sections', 'panels']),\n [ComponentName.SubNavigation]: m('Sub-navigation', ComponentCategory.Navigation, 'panel-left', ['module', 'sections', 'rail', 'tabs']),\n [ComponentName.BulkBar]: m('Bulk bar', ComponentCategory.Actions, 'check-check', ['selection', 'bulk', 'batch', 'actions']),\n [ComponentName.GlobalSearch]: m('Search', ComponentCategory.Input, 'search', ['search', 'find', 'query']),\n [ComponentName.NotificationsButton]: m('Notifications button', ComponentCategory.Actions, 'bell', ['bell', 'alerts', 'unread']),\n [ComponentName.KanbanBoard]: m('Kanban board', ComponentCategory.DataDisplay, 'kanban', ['board', 'kanban', 'columns', 'pipeline', 'cards']),\n [ComponentName.WizardProgress]: m('Wizard', ComponentCategory.Navigation, 'footprints', ['wizard', 'steps', 'stepper', 'multi-step']),\n [ComponentName.FormScreenBody]: m('Form', ComponentCategory.Forms, 'text-cursor-input', ['form', 'fields', 'sections', 'validation']),\n};\n"],"names":["foundationComponentMetadata","ComponentName","EmptyState","m","ComponentCategory","Feedback","StatCard","DataDisplay","TrendChip","StatusChip","ChartWrapper","FilterBuilder","Input","ColumnChooser","Actions","SavedViewsMenu","ChecklistSection","ActivityFeed","AvatarStack","FileUploader","ApprovalChainStepper","Navigation","OrgTree","PermissionMatrix","DataList","TabSet","SubNavigation","BulkBar","GlobalSearch","NotificationsButton","KanbanBoard","WizardProgress","FormScreenBody","Forms"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"foundationDescriptors.d.ts","sourceRoot":"","sources":["../../../foundation/foundationDescriptors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAyC,MAAM,qBAAqB,CAAC;AAcxI,eAAO,MAAM,QAAQ,qBAAsG,CAAC;AAiB5H,eAAO,MAAM,IAAI,SAAU,MAAM,SAAS,MAAM,SAAS,MAAM,aAAa,MAAM,cAAc,kBAAkB,EAAE,gBAAgB,MAAM,KAAG,kBACoC,CAAC;AAMlL,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,EAkBvD,CAAC;AAOF,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAiStD,CAAC"}
1
+ {"version":3,"file":"foundationDescriptors.d.ts","sourceRoot":"","sources":["../../../foundation/foundationDescriptors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAyC,MAAM,qBAAqB,CAAC;AAgBxI,eAAO,MAAM,QAAQ,qBAAsG,CAAC;AAiB5H,eAAO,MAAM,IAAI,SAAU,MAAM,SAAS,MAAM,SAAS,MAAM,aAAa,MAAM,cAAc,kBAAkB,EAAE,gBAAgB,MAAM,KAAG,kBACoC,CAAC;AAMlL,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,EAkBvD,CAAC;AAOF,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAketD,CAAC"}
@@ -4,6 +4,8 @@ import { ComponentName } from '../ComponentName.js';
4
4
  import { defaultBlueprintName } from '../packageName.js';
5
5
  import { ActivityKind } from './activityModel.js';
6
6
  import { ApprovalState } from './approvalModel.js';
7
+ import { CellKind, ListVariant } from './listModel.js';
8
+ import { FormFieldType, FormMode } from './formModel.js';
7
9
  import { ChartKind } from './chartGeometry.js';
8
10
  import { ComponentState } from './ComponentState.js';
9
11
  import { FilterFieldType } from './filterModel.js';
@@ -619,6 +621,404 @@ const formats = {
619
621
  valueOutputProperty(PropertyValueType.Json, 'The grants as the user has changed them: rows of role and permission, published as they change.'),
620
622
  ...standardStateProperties
621
623
  ]
624
+ },
625
+ {
626
+ component: key(ComponentName.DataList),
627
+ displayName: 'Data list',
628
+ description: 'The records of a collection as a table, as cards or grouped with subtotals, with search, sort, paging and selection that live in the address. On a phone a table becomes cards.',
629
+ properties: [
630
+ {
631
+ path: 'rows',
632
+ label: 'Rows',
633
+ group: 'Data',
634
+ valueType: PropertyValueType.Json,
635
+ acceptedBindingKinds: bindable,
636
+ default: [],
637
+ description: 'The records; bind to a query result.'
638
+ },
639
+ {
640
+ ...list('columns', 'Columns', 'Data', 'Column', [
641
+ text('field', 'Field', 'Data', 'The result field the column shows.', {
642
+ constraints: {
643
+ required: true
644
+ },
645
+ editorKind: PropertyEditorKind.Field
646
+ }),
647
+ text('header', 'Header', 'Content'),
648
+ choice('kind', 'Kind', 'Appearance', {
649
+ [CellKind.Text]: 'Text',
650
+ [CellKind.Number]: 'Number',
651
+ [CellKind.Currency]: 'Currency',
652
+ [CellKind.Date]: 'Date',
653
+ [CellKind.Status]: 'Status'
654
+ }, CellKind.Text),
655
+ flag('sortable', 'Sortable', 'Behavior', undefined, {
656
+ default: true
657
+ }),
658
+ text('currency', 'Currency', 'Appearance'),
659
+ {
660
+ path: 'tones',
661
+ label: 'Status tones',
662
+ group: 'Appearance',
663
+ valueType: PropertyValueType.Object,
664
+ editorKind: PropertyEditorKind.StringMap,
665
+ description: 'The tone (success, warning, danger, info, neutral) of each status value.'
666
+ }
667
+ ], 'What is shown.'),
668
+ acceptedBindingKinds: bindable
669
+ },
670
+ choice('variant', 'Layout', 'Appearance', {
671
+ [ListVariant.Table]: 'Table',
672
+ [ListVariant.Cards]: 'Cards',
673
+ [ListVariant.Grouped]: 'Grouped'
674
+ }, ListVariant.Table),
675
+ flag('collapse', 'Cards on a phone', 'Appearance', 'A table becomes cards on a phone-wide screen; nothing is hidden.', {
676
+ default: true
677
+ }),
678
+ text('idField', 'Id field', 'Data', undefined, {
679
+ default: 'id',
680
+ editorKind: PropertyEditorKind.Field
681
+ }),
682
+ text('titleField', 'Title field', 'Data', 'The field that names a row for assistive technology and a card.', {
683
+ editorKind: PropertyEditorKind.Field
684
+ }),
685
+ text('groupBy', 'Group by', 'Data', undefined, {
686
+ editorKind: PropertyEditorKind.Field
687
+ }),
688
+ text('totalField', 'Subtotal field', 'Data', undefined, {
689
+ editorKind: PropertyEditorKind.Field
690
+ }),
691
+ number('pageSize', 'Rows per page', 'Behavior', '0 shows every row.', {
692
+ default: 0,
693
+ constraints: {
694
+ minimum: 0,
695
+ integer: true
696
+ }
697
+ }),
698
+ choice('selectionMode', 'Selection', 'Behavior', {
699
+ none: 'None',
700
+ single: 'One row',
701
+ multiple: 'Many rows'
702
+ }, 'none'),
703
+ {
704
+ path: 'rowActions',
705
+ label: 'Row actions',
706
+ group: 'Behavior',
707
+ valueType: PropertyValueType.Json,
708
+ editorKind: PropertyEditorKind.StringList,
709
+ default: [],
710
+ description: 'The actions in each row\'s menu; each is the action output.'
711
+ },
712
+ rule('actionPermission', 'Row action permission', 'Whether row actions work, refuse with a reason or are not shown.'),
713
+ text('search', 'Search', 'Data', 'The search text; bind to the search box output.', {
714
+ acceptedBindingKinds: bindable
715
+ }),
716
+ {
717
+ path: 'filter',
718
+ label: 'Filter',
719
+ group: 'Data',
720
+ valueType: PropertyValueType.Object,
721
+ acceptedBindingKinds: bindable,
722
+ description: 'The filter builder\'s value.'
723
+ },
724
+ text('sort', 'Sort', 'Data', 'The sorted field; a leading - is descending.'),
725
+ text('urlKey', 'Address prefix', 'Behavior', 'Keeps search, sort, page and selection in the address under this prefix.'),
726
+ valueOutputProperty(PropertyValueType.Json, 'The selected row id (single) or ids (many).'),
727
+ {
728
+ path: 'action',
729
+ label: 'Requested action',
730
+ group: 'Outputs',
731
+ valueType: PropertyValueType.Json,
732
+ readOnly: true,
733
+ output: true,
734
+ description: 'The row action the user chose, with its row id.'
735
+ },
736
+ ...standardStateProperties.filter((property)=>property.path !== 'actionPermission')
737
+ ]
738
+ },
739
+ {
740
+ component: key(ComponentName.TabSet),
741
+ displayName: 'Tab set',
742
+ description: 'Tabs with a panel for each: the content of tab `overview` is the slot `overview`. The active tab is kept in the address.',
743
+ properties: [
744
+ {
745
+ ...list('tabs', 'Tabs', 'Data', 'Tab', [
746
+ text('id', 'Id', 'Data', 'Also the name of the slot that holds the tab\'s content.', {
747
+ constraints: {
748
+ required: true
749
+ }
750
+ }),
751
+ text('label', 'Label', 'Content'),
752
+ text('badge', 'Count', 'Content'),
753
+ flag('disabled', 'Disabled', 'Behavior')
754
+ ], 'The tabs a record page offers.'),
755
+ acceptedBindingKinds: bindable
756
+ },
757
+ text('activeTab', 'Active tab', 'Behavior'),
758
+ text('urlKey', 'Address parameter', 'Behavior', 'Keeps the active tab in the address under this name.'),
759
+ text('label', 'Label', 'Accessibility'),
760
+ valueOutputProperty(PropertyValueType.String, 'The id of the active tab.'),
761
+ ...standardStateProperties.filter((property)=>property.path !== 'label')
762
+ ]
763
+ },
764
+ {
765
+ component: key(ComponentName.SubNavigation),
766
+ displayName: 'Sub-navigation',
767
+ description: 'A module\'s own sections as a tab bar or a left rail. Choosing one changes only the section.',
768
+ properties: [
769
+ {
770
+ ...list('items', 'Sections', 'Data', 'Section', [
771
+ text('id', 'Id', 'Data', undefined, {
772
+ constraints: {
773
+ required: true
774
+ }
775
+ }),
776
+ text('label', 'Label', 'Content'),
777
+ text('badge', 'Count', 'Content'),
778
+ flag('disabled', 'Disabled', 'Behavior')
779
+ ], 'The sections.'),
780
+ acceptedBindingKinds: bindable
781
+ },
782
+ choice('orientation', 'Orientation', 'Appearance', {
783
+ horizontal: 'Tabs',
784
+ vertical: 'Left rail'
785
+ }, 'horizontal'),
786
+ text('activeItem', 'Active section', 'Behavior'),
787
+ text('urlKey', 'Address parameter', 'Behavior'),
788
+ text('label', 'Label', 'Accessibility'),
789
+ valueOutputProperty(PropertyValueType.String, 'The id of the active section.'),
790
+ ...standardStateProperties.filter((property)=>property.path !== 'label')
791
+ ]
792
+ },
793
+ {
794
+ component: key(ComponentName.BulkBar),
795
+ displayName: 'Bulk bar',
796
+ description: 'Appears when records are selected, says how many, offers the bulk actions and clears the selection.',
797
+ properties: [
798
+ {
799
+ path: 'selection',
800
+ label: 'Selection',
801
+ group: 'Data',
802
+ valueType: PropertyValueType.Json,
803
+ acceptedBindingKinds: bindable,
804
+ description: 'The selected records or their count; bind to the list\'s value.'
805
+ },
806
+ {
807
+ path: 'actions',
808
+ label: 'Actions',
809
+ group: 'Behavior',
810
+ valueType: PropertyValueType.Json,
811
+ editorKind: PropertyEditorKind.StringList,
812
+ default: []
813
+ },
814
+ rule('actionPermission', 'Action permission', 'Whether the bulk actions work, refuse with a reason or are not shown.'),
815
+ text('locale', 'Locale', 'Content'),
816
+ {
817
+ path: 'strings',
818
+ label: 'Text overrides',
819
+ group: 'Content',
820
+ valueType: PropertyValueType.Object,
821
+ editorKind: PropertyEditorKind.StringMap
822
+ }
823
+ ]
824
+ },
825
+ {
826
+ component: key(ComponentName.GlobalSearch),
827
+ displayName: 'Search',
828
+ description: 'A search box for the topbar or a list\'s toolbar. The text is the value output and can live in the address.',
829
+ properties: [
830
+ text('text', 'Initial text', 'Data'),
831
+ text('placeholder', 'Placeholder', 'Content'),
832
+ text('label', 'Label', 'Accessibility'),
833
+ text('urlKey', 'Address parameter', 'Behavior'),
834
+ valueOutputProperty(PropertyValueType.String, 'The search text.'),
835
+ {
836
+ path: 'strings',
837
+ label: 'Text overrides',
838
+ group: 'Content',
839
+ valueType: PropertyValueType.Object,
840
+ editorKind: PropertyEditorKind.StringMap
841
+ }
842
+ ]
843
+ },
844
+ {
845
+ component: key(ComponentName.NotificationsButton),
846
+ displayName: 'Notifications button',
847
+ description: 'The bell of the topbar with the unread count, said in words as well as in the badge.',
848
+ properties: [
849
+ number('count', 'Unread', 'Data', 'Bind to a query result.', {
850
+ constraints: {
851
+ minimum: 0,
852
+ integer: true
853
+ }
854
+ }),
855
+ text('locale', 'Locale', 'Content'),
856
+ {
857
+ path: 'strings',
858
+ label: 'Text overrides',
859
+ group: 'Content',
860
+ valueType: PropertyValueType.Object,
861
+ editorKind: PropertyEditorKind.StringMap
862
+ }
863
+ ]
864
+ },
865
+ {
866
+ component: key(ComponentName.KanbanBoard),
867
+ displayName: 'Kanban board',
868
+ description: 'Columns mapped to a status, with cards that move by dragging or by their own Move-to menu. The new arrangement is the value output.',
869
+ properties: [
870
+ {
871
+ ...list('columns', 'Columns', 'Data', 'Column', [
872
+ text('id', 'Id', 'Data', 'The status or stage value.', {
873
+ constraints: {
874
+ required: true
875
+ }
876
+ }),
877
+ text('label', 'Label', 'Content'),
878
+ number('limit', 'Limit', 'Behavior', 'The most cards the stage should hold; 0 is no limit.', {
879
+ constraints: {
880
+ minimum: 0,
881
+ integer: true
882
+ }
883
+ })
884
+ ], 'The stages.'),
885
+ acceptedBindingKinds: bindable
886
+ },
887
+ {
888
+ ...list('cards', 'Cards', 'Data', 'Card', [
889
+ text('id', 'Id', 'Data', undefined, {
890
+ constraints: {
891
+ required: true
892
+ }
893
+ }),
894
+ text('title', 'Title', 'Data', undefined, {
895
+ constraints: {
896
+ required: true
897
+ }
898
+ }),
899
+ text('column', 'Column', 'Data', 'The id of the column the card is in.'),
900
+ text('assignee', 'Assignee', 'Data'),
901
+ {
902
+ path: 'badges',
903
+ label: 'Badges',
904
+ group: 'Data',
905
+ valueType: PropertyValueType.Json,
906
+ editorKind: PropertyEditorKind.StringList,
907
+ default: []
908
+ }
909
+ ], 'The cards, from a query.'),
910
+ acceptedBindingKinds: bindable
911
+ },
912
+ rule('editPermission', 'Move permission', 'Enabled lets cards move; otherwise the board is read-only.'),
913
+ valueOutputProperty(PropertyValueType.Json, 'Each card\'s id and column, published as cards move.'),
914
+ ...standardStateProperties
915
+ ]
916
+ },
917
+ {
918
+ component: key(ComponentName.WizardProgress),
919
+ displayName: 'Wizard',
920
+ description: 'A linear wizard: the steps, back/next/finish and the draft save. The content of step `details` is the slot `details`; the last step is the review.',
921
+ properties: [
922
+ {
923
+ ...list('steps', 'Steps', 'Data', 'Step', [
924
+ text('id', 'Id', 'Data', 'Also the name of the slot that holds the step\'s content.', {
925
+ constraints: {
926
+ required: true
927
+ }
928
+ }),
929
+ text('label', 'Label', 'Content'),
930
+ flag('valid', 'Valid', 'Data', 'Whether the step\'s fields are valid; an invalid step blocks Next.', {
931
+ default: true,
932
+ acceptedBindingKinds: bindable
933
+ })
934
+ ], 'The steps in order.'),
935
+ acceptedBindingKinds: bindable
936
+ },
937
+ text('currentStep', 'Current step', 'Behavior'),
938
+ text('urlKey', 'Address parameter', 'Behavior', 'Keeps the current step in the address so a refresh resumes.'),
939
+ valueOutputProperty(PropertyValueType.String, 'The id of the current step.'),
940
+ ...standardStateProperties
941
+ ]
942
+ },
943
+ {
944
+ component: key(ComponentName.FormScreenBody),
945
+ displayName: 'Form',
946
+ description: 'Titled sections of fields in a one-to-three column grid, with inline validation, a save bar, the unsaved-changes guard and four modes.',
947
+ properties: [
948
+ {
949
+ ...list('sections', 'Sections', 'Data', 'Section', [
950
+ text('id', 'Id', 'Data'),
951
+ text('title', 'Title', 'Content'),
952
+ number('columns', 'Columns', 'Appearance', undefined, {
953
+ default: 1,
954
+ constraints: {
955
+ minimum: 1,
956
+ maximum: 3,
957
+ integer: true
958
+ }
959
+ }),
960
+ list('fields', 'Fields', 'Data', 'Field', [
961
+ text('name', 'Name', 'Data', undefined, {
962
+ constraints: {
963
+ required: true
964
+ },
965
+ editorKind: PropertyEditorKind.Field
966
+ }),
967
+ text('label', 'Label', 'Content'),
968
+ choice('type', 'Type', 'Data', Object.fromEntries(Object.values(FormFieldType).map((type)=>[
969
+ type,
970
+ type
971
+ ])), FormFieldType.Text),
972
+ flag('required', 'Required', 'Data'),
973
+ {
974
+ path: 'options',
975
+ label: 'Options',
976
+ group: 'Data',
977
+ valueType: PropertyValueType.Json,
978
+ editorKind: PropertyEditorKind.StringList,
979
+ default: []
980
+ },
981
+ number('span', 'Columns spanned', 'Appearance', undefined, {
982
+ default: 1,
983
+ constraints: {
984
+ minimum: 1,
985
+ maximum: 3,
986
+ integer: true
987
+ }
988
+ }),
989
+ text('placeholder', 'Placeholder', 'Content'),
990
+ text('help', 'Help text', 'Content')
991
+ ])
992
+ ], 'The groups of fields.'),
993
+ acceptedBindingKinds: bindable
994
+ },
995
+ {
996
+ path: 'values',
997
+ label: 'Values',
998
+ group: 'Data',
999
+ valueType: PropertyValueType.Object,
1000
+ acceptedBindingKinds: bindable,
1001
+ description: 'The record being edited; empty when creating.'
1002
+ },
1003
+ {
1004
+ path: 'errors',
1005
+ label: 'Server errors',
1006
+ group: 'Data',
1007
+ valueType: PropertyValueType.Json,
1008
+ acceptedBindingKinds: bindable,
1009
+ description: 'Field errors from the server, as { field: message }; one for an unknown field is shown as a general error.'
1010
+ },
1011
+ choice('mode', 'Mode', 'Behavior', {
1012
+ [FormMode.Create]: 'Create',
1013
+ [FormMode.Edit]: 'Edit',
1014
+ [FormMode.ReadOnly]: 'Read-only',
1015
+ [FormMode.Settings]: 'Settings (a save for each section)'
1016
+ }, FormMode.Create),
1017
+ rule('editPermission', 'Edit permission', 'Enabled lets the user change fields; otherwise the form is read-only.'),
1018
+ rule('savePermission', 'Save permission', 'Whether Save works, refuses with a reason or is not shown.'),
1019
+ valueOutputProperty(PropertyValueType.Object, 'The values as the user has edited them.'),
1020
+ ...standardStateProperties
1021
+ ]
622
1022
  }
623
1023
  ];
624
1024