@happyvertical/smrt-svelte 0.55.23 → 0.56.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 (108) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +2 -2
  3. package/agents/overview-surfaces.md +117 -6
  4. package/agents/screens.md +171 -5
  5. package/dist/components/command-palette/CommandPaletteDialog.svelte +1 -1
  6. package/dist/components/overview/OverviewGrid.svelte +8 -4
  7. package/dist/components/overview/OverviewGrid.svelte.d.ts.map +1 -1
  8. package/dist/components/overview/WidgetOptionsForm.svelte +13 -2
  9. package/dist/components/overview/WidgetOptionsForm.svelte.d.ts.map +1 -1
  10. package/dist/components/overview/format.d.ts +3 -12
  11. package/dist/components/overview/format.d.ts.map +1 -1
  12. package/dist/components/overview/format.js +2 -45
  13. package/dist/components/overview/grid-types.d.ts +6 -11
  14. package/dist/components/overview/grid-types.d.ts.map +1 -1
  15. package/dist/components/overview/index.d.ts +5 -1
  16. package/dist/components/overview/index.d.ts.map +1 -1
  17. package/dist/components/overview/index.js +3 -0
  18. package/dist/components/overview/recipe-widgets.d.ts +6 -3
  19. package/dist/components/overview/recipe-widgets.d.ts.map +1 -1
  20. package/dist/components/overview/recipe-widgets.js +9 -0
  21. package/dist/components/overview/record.d.ts +51 -0
  22. package/dist/components/overview/record.d.ts.map +1 -0
  23. package/dist/components/overview/record.js +146 -0
  24. package/dist/components/overview/registry.d.ts +3 -0
  25. package/dist/components/overview/registry.d.ts.map +1 -1
  26. package/dist/components/overview/registry.js +25 -0
  27. package/dist/components/overview/server.d.ts +5 -1
  28. package/dist/components/overview/server.d.ts.map +1 -1
  29. package/dist/components/overview/server.js +5 -1
  30. package/dist/components/overview/types.d.ts +29 -0
  31. package/dist/components/overview/types.d.ts.map +1 -1
  32. package/dist/components/overview/widgets/ChartWidget.svelte +5 -265
  33. package/dist/components/overview/widgets/ChartWidget.svelte.d.ts +1 -1
  34. package/dist/components/overview/widgets/ChartWidget.svelte.d.ts.map +1 -1
  35. package/dist/components/overview/widgets/LineItemsWidget.svelte +144 -0
  36. package/dist/components/overview/widgets/LineItemsWidget.svelte.d.ts +6 -0
  37. package/dist/components/overview/widgets/LineItemsWidget.svelte.d.ts.map +1 -0
  38. package/dist/components/overview/widgets/RecordListWidget.svelte +67 -3
  39. package/dist/components/overview/widgets/RecordListWidget.svelte.d.ts.map +1 -1
  40. package/dist/components/overview/widgets/RecordTable.svelte +167 -0
  41. package/dist/components/overview/widgets/RecordTable.svelte.d.ts +21 -0
  42. package/dist/components/overview/widgets/RecordTable.svelte.d.ts.map +1 -0
  43. package/dist/components/overview/widgets/RelatedWidget.svelte +117 -0
  44. package/dist/components/overview/widgets/RelatedWidget.svelte.d.ts +6 -0
  45. package/dist/components/overview/widgets/RelatedWidget.svelte.d.ts.map +1 -0
  46. package/dist/components/overview/widgets/core.d.ts +13 -2
  47. package/dist/components/overview/widgets/core.d.ts.map +1 -1
  48. package/dist/components/overview/widgets/core.js +43 -2
  49. package/dist/components/overview/widgets/data.d.ts +97 -8
  50. package/dist/components/overview/widgets/data.d.ts.map +1 -1
  51. package/dist/components/overview/widgets/line-totals.d.ts +48 -0
  52. package/dist/components/overview/widgets/line-totals.d.ts.map +1 -0
  53. package/dist/components/overview/widgets/line-totals.js +91 -0
  54. package/dist/components/overview/widgets/record-loaders.d.ts +63 -0
  55. package/dist/components/overview/widgets/record-loaders.d.ts.map +1 -0
  56. package/dist/components/overview/widgets/record-loaders.js +150 -0
  57. package/dist/components/overview/widgets/record-table.d.ts +45 -0
  58. package/dist/components/overview/widgets/record-table.d.ts.map +1 -0
  59. package/dist/components/overview/widgets/record-table.js +201 -0
  60. package/dist/components/overview/widgets/record-widgets.d.ts +27 -0
  61. package/dist/components/overview/widgets/record-widgets.d.ts.map +1 -0
  62. package/dist/components/overview/widgets/record-widgets.js +100 -0
  63. package/dist/components/screens/DetailScreen.svelte +105 -6
  64. package/dist/components/screens/DetailScreen.svelte.d.ts.map +1 -1
  65. package/dist/components/screens/EditForm.svelte +39 -3
  66. package/dist/components/screens/EditForm.svelte.d.ts.map +1 -1
  67. package/dist/components/screens/RecipeScreens.svelte +18 -18
  68. package/dist/components/screens/RecipeScreens.svelte.d.ts.map +1 -1
  69. package/dist/components/screens/RecordHeader.svelte +238 -0
  70. package/dist/components/screens/RecordHeader.svelte.d.ts +26 -0
  71. package/dist/components/screens/RecordHeader.svelte.d.ts.map +1 -0
  72. package/dist/components/screens/RecordScreen.svelte +511 -0
  73. package/dist/components/screens/RecordScreen.svelte.d.ts +5 -0
  74. package/dist/components/screens/RecordScreen.svelte.d.ts.map +1 -0
  75. package/dist/components/screens/columns.d.ts +29 -0
  76. package/dist/components/screens/columns.d.ts.map +1 -0
  77. package/dist/components/screens/columns.js +115 -0
  78. package/dist/components/screens/fields.d.ts +12 -2
  79. package/dist/components/screens/fields.d.ts.map +1 -1
  80. package/dist/components/screens/fields.js +37 -5
  81. package/dist/components/screens/index.d.ts +7 -2
  82. package/dist/components/screens/index.d.ts.map +1 -1
  83. package/dist/components/screens/index.js +6 -1
  84. package/dist/components/screens/record-header.d.ts +51 -0
  85. package/dist/components/screens/record-header.d.ts.map +1 -0
  86. package/dist/components/screens/record-header.js +118 -0
  87. package/dist/components/screens/relations.d.ts +49 -0
  88. package/dist/components/screens/relations.d.ts.map +1 -0
  89. package/dist/components/screens/relations.js +98 -0
  90. package/dist/components/screens/roles.d.ts +56 -0
  91. package/dist/components/screens/roles.d.ts.map +1 -0
  92. package/dist/components/screens/roles.js +174 -0
  93. package/dist/components/screens/types.d.ts +182 -1
  94. package/dist/components/screens/types.d.ts.map +1 -1
  95. package/dist/components/screens/values.d.ts +23 -1
  96. package/dist/components/screens/values.d.ts.map +1 -1
  97. package/dist/components/screens/values.js +80 -4
  98. package/dist/components/workspace/admin-shell/AdminShell.svelte +4 -4
  99. package/dist/components/workspace/admin-shell/ShellIconButton.svelte +2 -2
  100. package/dist/components/workspace/admin-shell/TenantNav.svelte +8 -8
  101. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +3 -3
  102. package/dist/i18n/strings.overview.d.ts +25 -0
  103. package/dist/i18n/strings.overview.d.ts.map +1 -1
  104. package/dist/i18n/strings.overview.js +25 -0
  105. package/dist/i18n/strings.screens.d.ts +8 -0
  106. package/dist/i18n/strings.screens.d.ts.map +1 -1
  107. package/dist/i18n/strings.screens.js +8 -0
  108. package/package.json +16 -16
@@ -1,6 +1,6 @@
1
1
  import type { Component, Snippet } from 'svelte';
2
2
  import type { OverviewController } from './controller.svelte.js';
3
- import type { OverviewOptions, OverviewWidget, RegisteredWidget, WidgetComponentProps } from './types.js';
3
+ import type { OverviewWidget, WidgetComponentProps, WidgetOptionsEditorProps } from './types.js';
4
4
  /** A model the option editor offers for `model` fields. */
5
5
  export interface OverviewModelChoice {
6
6
  value: string;
@@ -16,6 +16,8 @@ export interface OverviewGridProps {
16
16
  * unavailable.
17
17
  */
18
18
  components?: ReadonlyMap<string, Component<WidgetComponentProps>>;
19
+ /** Resolved custom option editors (see `resolveWidgetOptionsEditors`). */
20
+ optionEditors?: ReadonlyMap<string, Component<WidgetOptionsEditorProps>>;
19
21
  /**
20
22
  * Edit mode. Omit to follow the shell's layout editor (the pencil), so a
21
23
  * grid inside `AppShell` edits with the rest of the page.
@@ -43,14 +45,7 @@ export interface OverviewFormIssue {
43
45
  code: string;
44
46
  }
45
47
  /** Props of `WidgetOptionsForm`. */
46
- export interface WidgetOptionsFormProps {
47
- /** The widget type being configured. */
48
- definition: RegisteredWidget;
49
- /** Current options (an existing widget) or starting values. */
50
- initial: OverviewOptions;
51
- models?: readonly OverviewModelChoice[];
52
- /** Saves; returns issues to show, or `null` when it worked. */
53
- onsave: (options: OverviewOptions) => OverviewFormIssue[] | null;
54
- oncancel: () => void;
55
- }
48
+ export type WidgetOptionsFormProps = WidgetOptionsEditorProps & {
49
+ optionsEditor?: Component<WidgetOptionsEditorProps>;
50
+ };
56
51
  //# sourceMappingURL=grid-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grid-types.d.ts","sourceRoot":"","sources":["../../../src/components/overview/grid-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,UAAU,EAAE,kBAAkB,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAClE;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,iEAAiE;IACjE,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,0DAA0D;IAC1D,aAAa,CAAC,EAAE,SAAS,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oCAAoC;AACpC,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,+DAA+D;IAC/D,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACjE,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB"}
1
+ {"version":3,"file":"grid-types.d.ts","sourceRoot":"","sources":["../../../src/components/overview/grid-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,UAAU,EAAE,kBAAkB,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAClE,0EAA0E;IAC1E,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACzE;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,iEAAiE;IACjE,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,0DAA0D;IAC1D,aAAa,CAAC,EAAE,SAAS,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oCAAoC;AACpC,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,GAAG;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC"}
@@ -15,12 +15,16 @@ export { default as OverviewAssistantUndo } from './OverviewAssistantUndo.svelte
15
15
  export { default as OverviewGrid } from './OverviewGrid.svelte';
16
16
  export { spanFromKey, spanFromPointer } from './resize.js';
17
17
  export * from './server.js';
18
+ export type { WidgetOptionsEditorProps } from './types.js';
18
19
  export { default as WidgetOptionsForm } from './WidgetOptionsForm.svelte';
19
20
  export { default as ChartWidget } from './widgets/ChartWidget.svelte';
20
21
  export { type CoreWidgetLoaders, createChartWidget, createMetricWidget, createNoteWidget, createRecordListWidget, createShortcutsWidget, registerCoreWidgets, } from './widgets/core.js';
21
- export { type ChartWidgetData, type MetricWidgetData, type RecordListWidgetData, type ShortcutEntry, type ShortcutNavSection, type ShortcutsWidgetData, shortcutsFromNav, } from './widgets/data.js';
22
+ export { type ChartWidgetData, type LineItemsWidgetData, type MetricWidgetData, type RecordListColumn, type RecordListRow, type RecordListWidgetData, type RecordStatusTone, type RelatedWidgetData, type RelatedWidgetTab, type ShortcutEntry, type ShortcutNavSection, type ShortcutsWidgetData, shortcutsFromNav, } from './widgets/data.js';
23
+ export { default as LineItemsWidget } from './widgets/LineItemsWidget.svelte';
22
24
  export { default as MetricWidget } from './widgets/MetricWidget.svelte';
23
25
  export { default as NoteWidget } from './widgets/NoteWidget.svelte';
24
26
  export { default as RecordListWidget } from './widgets/RecordListWidget.svelte';
27
+ export { default as RelatedWidget } from './widgets/RelatedWidget.svelte';
28
+ export { createLineItemsWidget, createRelatedWidget, registerRecordWidgets, } from './widgets/record-widgets.js';
25
29
  export { default as ShortcutsWidget } from './widgets/ShortcutsWidget.svelte';
26
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/overview/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,aAAa,EACb,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EACL,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/overview/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,aAAa,EACb,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EACL,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC"}
@@ -18,7 +18,10 @@ export { default as WidgetOptionsForm } from './WidgetOptionsForm.svelte';
18
18
  export { default as ChartWidget } from './widgets/ChartWidget.svelte';
19
19
  export { createChartWidget, createMetricWidget, createNoteWidget, createRecordListWidget, createShortcutsWidget, registerCoreWidgets, } from './widgets/core.js';
20
20
  export { shortcutsFromNav, } from './widgets/data.js';
21
+ export { default as LineItemsWidget } from './widgets/LineItemsWidget.svelte';
21
22
  export { default as MetricWidget } from './widgets/MetricWidget.svelte';
22
23
  export { default as NoteWidget } from './widgets/NoteWidget.svelte';
23
24
  export { default as RecordListWidget } from './widgets/RecordListWidget.svelte';
25
+ export { default as RelatedWidget } from './widgets/RelatedWidget.svelte';
26
+ export { createLineItemsWidget, createRelatedWidget, registerRecordWidgets, } from './widgets/record-widgets.js';
24
27
  export { default as ShortcutsWidget } from './widgets/ShortcutsWidget.svelte';
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * Svelte-free apart from type imports, so a server load can call it.
12
12
  */
13
- import type { RecipeDefinition, RecipeExportRef } from '@happyvertical/smrt-types';
13
+ import type { RecipeExportRef, RecipeSurface } from '@happyvertical/smrt-types';
14
14
  import type { WidgetRegistry } from './registry.js';
15
15
  /**
16
16
  * Resolves one export of a module: `resolveExport('@acme/shop/svelte',
@@ -18,8 +18,11 @@ import type { WidgetRegistry } from './registry.js';
18
18
  * stub); it may reject or return `undefined` for something it does not know.
19
19
  */
20
20
  export type RecipeExportResolver = (specifier: string, exportName: string) => unknown | Promise<unknown>;
21
- /** The part of a recipe this helper reads; a manifest `RecipeDefinition` fits. */
22
- export type RecipeWidgetSource = Pick<RecipeDefinition, 'id'> & Partial<Pick<RecipeDefinition, 'surfaces'>>;
21
+ /** The part of a recipe this helper reads; manifests and readonly recipe statics fit. */
22
+ export interface RecipeWidgetSource {
23
+ id: string;
24
+ surfaces?: readonly RecipeSurface[];
25
+ }
23
26
  export interface RegisterRecipeWidgetsOptions {
24
27
  /** Replace a type that is already registered instead of skipping it. */
25
28
  replace?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"recipe-widgets.d.ts","sourceRoot":"","sources":["../../../src/components/overview/recipe-widgets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEhB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAWpD;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,kFAAkF;AAClF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;AAE9C,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AAED,MAAM,MAAM,sBAAsB;AAChC,wEAAwE;AACtE,gBAAgB;AAClB,2DAA2D;GACzD,SAAS;AACX,4EAA4E;GAC1E,YAAY,CAAC;AAEjB,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,sBAAsB,CAAC;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,sDAAsD;IACtD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,GAAG,MAAM,GAC5B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUlD;AAqFD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,aAAa,EAAE,oBAAoB,EACnC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,wBAAwB,CAAC,CAyDnC"}
1
+ {"version":3,"file":"recipe-widgets.d.ts","sourceRoot":"","sources":["../../../src/components/overview/recipe-widgets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAWpD;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AAED,MAAM,MAAM,sBAAsB;AAChC,wEAAwE;AACtE,gBAAgB;AAClB,2DAA2D;GACzD,SAAS;AACX,4EAA4E;GAC1E,YAAY,CAAC;AAEjB,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,sBAAsB,CAAC;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,sDAAsD;IACtD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,GAAG,MAAM,GAC5B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUlD;AAkGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,aAAa,EAAE,oBAAoB,EACnC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,wBAAwB,CAAC,CAyDnC"}
@@ -39,6 +39,9 @@ function isModuleWithDefault(value) {
39
39
  }
40
40
  function toDefinition(surface, resolveExport, migrate) {
41
41
  const component = once(() => resolveRef(surface.export, resolveExport));
42
+ const optionsEditor = surface.optionsEditor
43
+ ? once(() => resolveRef(surface.optionsEditor, resolveExport))
44
+ : undefined;
42
45
  const loadFn = surface.data?.load
43
46
  ? once(() => resolveRef(surface.data?.load, resolveExport))
44
47
  : undefined;
@@ -67,6 +70,12 @@ function toDefinition(surface, resolveExport, migrate) {
67
70
  def.maxSpan = surface.maxSpan;
68
71
  if (migrate)
69
72
  def.migrate = migrate;
73
+ if (optionsEditor) {
74
+ def.loadOptionsEditor = async () => {
75
+ const value = await optionsEditor();
76
+ return (isModuleWithDefault(value) ? value.default : value);
77
+ };
78
+ }
70
79
  if (loadFn) {
71
80
  const load = async (options, ctx) => {
72
81
  const fn = await loadFn();
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The default overview of a record view (#3718 record page), persisted per
3
+ * model kind under `detail:<model>`: a summary strip of `metric` tiles
4
+ * (a count per related relation, and the sum of its money column where it
5
+ * has one), then the `line-items` table and totals when the model has an
6
+ * `items` relation, then one tabbed `related` widget over the `children`
7
+ * relations. Every piece is an ordinary widget, so a person can remove,
8
+ * move or replace it from the layout editor; `related: 'panels'` keeps the
9
+ * earlier one `records` panel per relation.
10
+ *
11
+ * Svelte-free. The widgets use the parent-filter vocabulary: `filter:
12
+ * 'parent'` plus the FK on the child (`field` for a count or a records
13
+ * panel; `parentField` when `field` is the measured one) confine the
14
+ * host's query to rows that point at `ctx.record.id`. `related` and
15
+ * `line-items` load through the host's `records` loader
16
+ * (`registerRecordWidgets`), so the shell's own loaders need no data access.
17
+ */
18
+ import type { ScreenRelation } from '../screens/relations.js';
19
+ import type { ScreenCollectionDefinition } from '../screens/types.js';
20
+ import type { OverviewDefinition } from './types.js';
21
+ export interface RecordOverviewOptions {
22
+ /** Overview id; defaults to `recordOverviewId(definition.objectRef)`. */
23
+ id?: string;
24
+ /** The summary strip of `metric` tiles (default on). */
25
+ metrics?: boolean;
26
+ /** Most tiles in the strip (default {@link RECORD_OVERVIEW_MAX_METRICS}). */
27
+ maxMetrics?: number;
28
+ /**
29
+ * `tabs` (default): one `related` widget with a tab per relation.
30
+ * `panels`: one `records` panel per relation, with role-chosen columns.
31
+ */
32
+ related?: 'tabs' | 'panels';
33
+ }
34
+ /** Widget types a record overview offers by default. */
35
+ export declare const RECORD_OVERVIEW_ALLOWED: readonly string[];
36
+ /** Tiles in the default summary strip. */
37
+ export declare const RECORD_OVERVIEW_MAX_METRICS = 4;
38
+ /** Rows a default `records` panel shows. */
39
+ export declare const RECORD_OVERVIEW_LIMIT = 5;
40
+ /**
41
+ * `detail:<model>` as an overview id. A qualified model id
42
+ * (`@acme/shop:Customer`) carries characters an overview id cannot
43
+ * (`OVERVIEW_PAGE_ID_PATTERN`), so `@`, `/` and `:` fold to dots:
44
+ * `detail:acme.shop.Customer`. Stable per model kind.
45
+ */
46
+ export declare function recordOverviewId(model: string): string;
47
+ /** Span of a default `records` panel: two side by side on a wide page. */
48
+ export declare const RECORD_OVERVIEW_PANEL_SPAN = 2;
49
+ /** The default record overview of `definition` for its relations. */
50
+ export declare function recordOverview(definition: ScreenCollectionDefinition, relations: readonly ScreenRelation[], options?: RecordOverviewOptions): OverviewDefinition;
51
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/components/overview/record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,YAAY,CAAC;AAGrE,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC7B;AAED,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAOpD,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtD;AAwBD,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,UAAU,EAAE,0BAA0B,EACtC,SAAS,EAAE,SAAS,cAAc,EAAE,EACpC,OAAO,GAAE,qBAA0B,GAClC,kBAAkB,CAgGpB"}
@@ -0,0 +1,146 @@
1
+ import { relationKey } from '../screens/relations.js';
2
+ import { defineOverview } from './model.js';
3
+ import { formatColumnsOption } from './widgets/record-table.js';
4
+ /** Widget types a record overview offers by default. */
5
+ export const RECORD_OVERVIEW_ALLOWED = [
6
+ 'related',
7
+ 'line-items',
8
+ 'records',
9
+ 'metric',
10
+ 'chart',
11
+ 'note',
12
+ ];
13
+ /** Tiles in the default summary strip. */
14
+ export const RECORD_OVERVIEW_MAX_METRICS = 4;
15
+ /** Rows a default `records` panel shows. */
16
+ export const RECORD_OVERVIEW_LIMIT = 5;
17
+ /**
18
+ * `detail:<model>` as an overview id. A qualified model id
19
+ * (`@acme/shop:Customer`) carries characters an overview id cannot
20
+ * (`OVERVIEW_PAGE_ID_PATTERN`), so `@`, `/` and `:` fold to dots:
21
+ * `detail:acme.shop.Customer`. Stable per model kind.
22
+ */
23
+ export function recordOverviewId(model) {
24
+ const folded = model
25
+ .replace(/^@/, '')
26
+ .replace(/[/:]+/g, '.')
27
+ .replace(/[^A-Za-z0-9_.-]/g, '-')
28
+ .replace(/^[^A-Za-z0-9]+/, '');
29
+ return `detail:${folded || 'record'}`;
30
+ }
31
+ /**
32
+ * A default widget's id, from its relation rather than its position:
33
+ * `<prefix>-<Class>-<field>` (`records-Order-customerId`). The same relation
34
+ * keeps its id whichever other relations a host shows (a host may narrow the
35
+ * defaults to the models one app has), and never collides with the `w<n>`
36
+ * ids `nextWidgetId` gives added widgets, so a stored override stays valid
37
+ * against the full and the narrowed definition alike.
38
+ */
39
+ function relationWidgetId(prefix, relation, taken) {
40
+ const base = `${prefix}-${relationKey(relation)}`
41
+ .replace(/[^A-Za-z0-9_-]+/g, '-')
42
+ .slice(0, 60);
43
+ let id = base;
44
+ for (let n = 2; taken.has(id); n += 1)
45
+ id = `${base}-${n}`;
46
+ taken.add(id);
47
+ return id;
48
+ }
49
+ /** Span of a default `records` panel: two side by side on a wide page. */
50
+ export const RECORD_OVERVIEW_PANEL_SPAN = 2;
51
+ /** The default record overview of `definition` for its relations. */
52
+ export function recordOverview(definition, relations, options = {}) {
53
+ const children = relations.filter((r) => r.kind === 'children');
54
+ const items = relations.filter((r) => r.kind === 'items');
55
+ const defaults = [];
56
+ const models = [];
57
+ const taken = new Set();
58
+ for (const relation of [...items, ...children]) {
59
+ if (!models.includes(relation.model))
60
+ models.push(relation.model);
61
+ }
62
+ if (options.metrics !== false) {
63
+ const max = options.maxMetrics ?? RECORD_OVERVIEW_MAX_METRICS;
64
+ const strip = [];
65
+ for (const relation of children) {
66
+ if (strip.length >= max)
67
+ break;
68
+ strip.push({
69
+ id: relationWidgetId('count', relation, taken),
70
+ type: 'metric',
71
+ span: 1,
72
+ options: {
73
+ title: relation.label,
74
+ model: relation.model,
75
+ measure: 'count',
76
+ field: relation.field,
77
+ filter: 'parent',
78
+ },
79
+ });
80
+ const money = (relation.columns ?? []).find((c) => c.role === 'money');
81
+ if (!money || strip.length >= max)
82
+ continue;
83
+ strip.push({
84
+ id: relationWidgetId('sum', relation, taken),
85
+ type: 'metric',
86
+ span: 1,
87
+ options: {
88
+ title: `${relation.label} · ${money.label}`,
89
+ model: relation.model,
90
+ measure: 'sum',
91
+ field: money.key,
92
+ filter: 'parent',
93
+ parentField: relation.field,
94
+ },
95
+ });
96
+ }
97
+ defaults.push(...strip);
98
+ }
99
+ const lines = items[0];
100
+ if (lines) {
101
+ defaults.push({
102
+ id: relationWidgetId('items', lines, taken),
103
+ type: 'line-items',
104
+ span: 4,
105
+ options: { title: lines.label, relation: relationKey(lines) },
106
+ });
107
+ }
108
+ if (options.related === 'panels') {
109
+ for (const relation of children) {
110
+ defaults.push({
111
+ id: relationWidgetId('records', relation, taken),
112
+ type: 'records',
113
+ span: RECORD_OVERVIEW_PANEL_SPAN,
114
+ options: {
115
+ title: relation.label,
116
+ model: relation.model,
117
+ field: relation.field,
118
+ filter: 'parent',
119
+ sort: 'createdAt',
120
+ direction: 'desc',
121
+ limit: RECORD_OVERVIEW_LIMIT,
122
+ ...((relation.columns ?? []).length > 0
123
+ ? {
124
+ columns: formatColumnsOption((relation.columns ?? []).map((c) => c.key)),
125
+ }
126
+ : {}),
127
+ },
128
+ });
129
+ }
130
+ }
131
+ else if (children.length > 0) {
132
+ taken.add('related');
133
+ defaults.push({
134
+ id: 'related',
135
+ type: 'related',
136
+ span: 4,
137
+ options: { limit: RECORD_OVERVIEW_LIMIT },
138
+ });
139
+ }
140
+ return defineOverview({
141
+ id: options.id ?? recordOverviewId(definition.objectRef),
142
+ allowed: RECORD_OVERVIEW_ALLOWED,
143
+ models: models.length > 0 ? models : undefined,
144
+ defaults,
145
+ });
146
+ }
@@ -34,6 +34,7 @@ export declare function registerWidget<Data>(def: WidgetDefinition<Data>, option
34
34
  }): () => void;
35
35
  /** A resolved component for each widget type that has one. */
36
36
  export type WidgetComponents = Map<string, Component<WidgetComponentProps>>;
37
+ export type WidgetOptionsEditors = Map<string, Component<import('./types.js').WidgetOptionsEditorProps>>;
37
38
  /**
38
39
  * Resolve the components for `types`: eager components as is, lazy ones by
39
40
  * awaiting `loadComponent`. Call it in a universal page load (or before
@@ -42,4 +43,6 @@ export type WidgetComponents = Map<string, Component<WidgetComponentProps>>;
42
43
  * renders as unavailable.
43
44
  */
44
45
  export declare function resolveWidgetComponents(types: Iterable<string>, registry?: WidgetRegistry): Promise<WidgetComponents>;
46
+ /** Resolve custom recipe option editors only in a browser or universal UI host. */
47
+ export declare function resolveWidgetOptionsEditors(types: Iterable<string>, registry?: WidgetRegistry): Promise<WidgetOptionsEditors>;
45
48
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/components/overview/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAIL,KAAK,gBAAgB,EAGrB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAyCpB,wCAAwC;AACxC,qBAAa,cAAc;;IAGzB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EACX,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC3B,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,MAAM,IAAI;IAab,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,8CAA8C;IAC9C,KAAK,IAAI,MAAM,EAAE;IAIjB,IAAI,IAAI,gBAAgB,EAAE;CAG3B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,EAAE,cAAuC,CAAC;AAE5E,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,IAAI,EACjC,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC3B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,MAAM,IAAI,CAEZ;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAQ5E;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,QAAQ,GAAE,cAAsC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CAyB3B"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/components/overview/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAIL,KAAK,gBAAgB,EAGrB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAyCpB,wCAAwC;AACxC,qBAAa,cAAc;;IAGzB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EACX,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC3B,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,MAAM,IAAI;IAab,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,8CAA8C;IAC9C,KAAK,IAAI,MAAM,EAAE;IAIjB,IAAI,IAAI,gBAAgB,EAAE;CAG3B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,EAAE,cAAuC,CAAC;AAE5E,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,IAAI,EACjC,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC3B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,MAAM,IAAI,CAEZ;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,GAAG,CACpC,MAAM,EACN,SAAS,CAAC,OAAO,YAAY,EAAE,wBAAwB,CAAC,CACzD,CAAC;AAQF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,QAAQ,GAAE,cAAsC,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,mFAAmF;AACnF,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,QAAQ,GAAE,cAAsC,GAC/C,OAAO,CAAC,oBAAoB,CAAC,CA2B/B"}
@@ -110,3 +110,28 @@ export async function resolveWidgetComponents(types, registry = defaultWidgetReg
110
110
  }));
111
111
  return out;
112
112
  }
113
+ /** Resolve custom recipe option editors only in a browser or universal UI host. */
114
+ export async function resolveWidgetOptionsEditors(types, registry = defaultWidgetRegistry) {
115
+ const out = new Map();
116
+ await Promise.all([...new Set(types)].map(async (type) => {
117
+ const def = registry.get(type);
118
+ if (!def)
119
+ return;
120
+ if (def.optionsEditor) {
121
+ out.set(type, def.optionsEditor);
122
+ return;
123
+ }
124
+ if (!def.loadOptionsEditor)
125
+ return;
126
+ try {
127
+ const loaded = await def.loadOptionsEditor();
128
+ out.set(type, (typeof loaded === 'object' && loaded !== null && 'default' in loaded
129
+ ? loaded.default
130
+ : loaded));
131
+ }
132
+ catch {
133
+ // The descriptor-driven editor remains available as a safe fallback.
134
+ }
135
+ }));
136
+ return out;
137
+ }
@@ -10,7 +10,11 @@ export { type LoadOverviewOptions, loadOverview, type WidgetLoadInput, } from '.
10
10
  export { applyOverviewOverride, checkOverviewOverride, defineOverview, diffOverview, isEmptyOverride, nextWidgetId, type OverviewOverrideCheck, parseOverviewDocument, parseOverviewOverride, type ResolvedOverview, resolveOverview, type SanitizeOptions, sanitizeOverview, } from './model.js';
11
11
  export { allowedWidgetTypes, type DescribeOverviewInput, describeOverview, OVERVIEW_MAX_OPERATIONS, OVERVIEW_OPERATION_KINDS, OVERVIEW_OPERATION_SCHEMA, type OverviewAddOperation, type OverviewConfigureOperation, type OverviewDescription, type OverviewMoveOperation, type OverviewOperation, type OverviewOperationIssue, type OverviewOperationIssueCode, type OverviewOperationKind, type OverviewOperationResult, type OverviewOptionDescription, type OverviewPlan, type OverviewRemoveOperation, type OverviewResizeOperation, type OverviewWidgetTypeDescription, type PlanOverviewOperationsInput, planOverviewOperations, } from './operations.js';
12
12
  export { parseRecipeExportRef, type RecipeExportResolver, type RecipeWidgetRegistration, type RecipeWidgetSkip, type RecipeWidgetSkipReason, type RecipeWidgetSource, type RegisterRecipeWidgetsOptions, registerRecipeWidgets, } from './recipe-widgets.js';
13
- export { createWidgetRegistry, defaultWidgetRegistry, registerWidget, resolveWidgetComponents, type WidgetComponents, WidgetRegistry, } from './registry.js';
13
+ export { RECORD_OVERVIEW_ALLOWED, RECORD_OVERVIEW_LIMIT, RECORD_OVERVIEW_MAX_METRICS, RECORD_OVERVIEW_PANEL_SPAN, type RecordOverviewOptions, recordOverview, recordOverviewId, } from './record.js';
14
+ export { createWidgetRegistry, defaultWidgetRegistry, registerWidget, resolveWidgetComponents, resolveWidgetOptionsEditors, type WidgetComponents, type WidgetOptionsEditors, WidgetRegistry, } from './registry.js';
14
15
  export { assertWidgetOptionFields, defaultWidgetOptions, IDENTIFIER_PATTERN, MODEL_PATTERN, optionsEqual, validateWidgetOptions, } from './schema.js';
15
16
  export * from './types.js';
17
+ export { type LineItemsTotals, type LineTotalKey, type LineTotalLine, type LineTotalsMismatch, type LineTotalsResult, lineItemTotals, sumLineAmounts, } from './widgets/line-totals.js';
18
+ export { createLineItemsLoader, createRelatedLoader, LINE_ITEMS_LIMIT, lineItemsOptions, lineItemsRelation, RELATED_WIDGET_LIMIT, RELATED_WIDGET_MAX_TABS, type RecordWidgetsOptions, relatedRelations, relatedTabOptions, } from './widgets/record-loaders.js';
19
+ export { DEFAULT_STATUS_TONES, formatColumnsOption, formatRecordCell, lineItemColumns, parseColumnsOption, RECORD_TABLE_MAX_COLUMNS, RECORD_TABLE_MAX_ROWS, type RecordCellContext, relatedColumns, statusLabel, statusTone, } from './widgets/record-table.js';
16
20
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/components/overview/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/components/overview/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,cAAc,EACd,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,cAAc,EACd,WAAW,EACX,UAAU,GACX,MAAM,2BAA2B,CAAC"}
@@ -10,6 +10,10 @@ export { loadOverview, } from './load.js';
10
10
  export { applyOverviewOverride, checkOverviewOverride, defineOverview, diffOverview, isEmptyOverride, nextWidgetId, parseOverviewDocument, parseOverviewOverride, resolveOverview, sanitizeOverview, } from './model.js';
11
11
  export { allowedWidgetTypes, describeOverview, OVERVIEW_MAX_OPERATIONS, OVERVIEW_OPERATION_KINDS, OVERVIEW_OPERATION_SCHEMA, planOverviewOperations, } from './operations.js';
12
12
  export { parseRecipeExportRef, registerRecipeWidgets, } from './recipe-widgets.js';
13
- export { createWidgetRegistry, defaultWidgetRegistry, registerWidget, resolveWidgetComponents, WidgetRegistry, } from './registry.js';
13
+ export { RECORD_OVERVIEW_ALLOWED, RECORD_OVERVIEW_LIMIT, RECORD_OVERVIEW_MAX_METRICS, RECORD_OVERVIEW_PANEL_SPAN, recordOverview, recordOverviewId, } from './record.js';
14
+ export { createWidgetRegistry, defaultWidgetRegistry, registerWidget, resolveWidgetComponents, resolveWidgetOptionsEditors, WidgetRegistry, } from './registry.js';
14
15
  export { assertWidgetOptionFields, defaultWidgetOptions, IDENTIFIER_PATTERN, MODEL_PATTERN, optionsEqual, validateWidgetOptions, } from './schema.js';
15
16
  export * from './types.js';
17
+ export { lineItemTotals, sumLineAmounts, } from './widgets/line-totals.js';
18
+ export { createLineItemsLoader, createRelatedLoader, LINE_ITEMS_LIMIT, lineItemsOptions, lineItemsRelation, RELATED_WIDGET_LIMIT, RELATED_WIDGET_MAX_TABS, relatedRelations, relatedTabOptions, } from './widgets/record-loaders.js';
19
+ export { DEFAULT_STATUS_TONES, formatColumnsOption, formatRecordCell, lineItemColumns, parseColumnsOption, RECORD_TABLE_MAX_COLUMNS, RECORD_TABLE_MAX_ROWS, relatedColumns, statusLabel, statusTone, } from './widgets/record-table.js';
@@ -158,6 +158,12 @@ export interface WidgetComponentProps<Data = unknown> {
158
158
  */
159
159
  presentation?: 'card' | 'plain';
160
160
  }
161
+ /** The record an overview is rendered on (a record view, `RecordScreen`). */
162
+ export interface WidgetRecordContext {
163
+ /** Qualified model id (`objectRef`) of the record. */
164
+ model: string;
165
+ id: string;
166
+ }
161
167
  /**
162
168
  * Context a widget `load` runs with. The host builds it inside the page's
163
169
  * server load from the request principal: the user's permissions, the
@@ -170,6 +176,12 @@ export interface WidgetLoadContext {
170
176
  /** Aborts when the load times out or the request ends. */
171
177
  signal?: AbortSignal;
172
178
  locale?: string;
179
+ /**
180
+ * The record a record overview is rendered on. A `records` / `metric`
181
+ * loader honours `options.filter === 'parent'` by confining its query to
182
+ * rows whose `options.field` equals `record.id`.
183
+ */
184
+ record?: WidgetRecordContext;
173
185
  [capability: string]: unknown;
174
186
  }
175
187
  /**
@@ -184,6 +196,17 @@ export type WidgetMigrate = (options: Record<string, unknown>, fromVersion: numb
184
196
  export type WidgetComponentModule<Data> = Component<WidgetComponentProps<Data>> | {
185
197
  default: Component<WidgetComponentProps<Data>>;
186
198
  };
199
+ /** Props for a custom widget option editor. Saving still passes through the registry schema. */
200
+ export interface WidgetOptionsEditorProps {
201
+ definition: RegisteredWidget;
202
+ initial: OverviewOptions;
203
+ models?: readonly {
204
+ value: string;
205
+ label: string;
206
+ }[];
207
+ onsave: (options: OverviewOptions) => WidgetOptionIssue[] | null;
208
+ oncancel: () => void;
209
+ }
187
210
  /** What `registerWidget` takes. */
188
211
  export interface WidgetDefinition<Data = unknown> {
189
212
  /** Lowercase kebab id, e.g. `metric`. */
@@ -205,6 +228,12 @@ export interface WidgetDefinition<Data = unknown> {
205
228
  * resolves these before rendering with `resolveWidgetComponents`.
206
229
  */
207
230
  loadComponent?: () => Promise<WidgetComponentModule<Data>>;
231
+ /** Custom editor for dependent or remotely loaded option choices. */
232
+ optionsEditor?: Component<WidgetOptionsEditorProps>;
233
+ /** Resolves a custom editor lazily from a recipe export. */
234
+ loadOptionsEditor?: () => Promise<Component<WidgetOptionsEditorProps> | {
235
+ default: Component<WidgetOptionsEditorProps>;
236
+ }>;
208
237
  /** Server loader; absent for widgets that render from options alone. */
209
238
  load?: WidgetLoad<Data>;
210
239
  /** Overview ids this widget may appear in; omit for any. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/overview/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/overview/types.ts"],"names":[],"mappings":"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"}