pi-apexlang 0.2.2 → 0.4.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 (239) hide show
  1. package/README.md +22 -5
  2. package/THIRD_PARTY_NOTICES.md +2 -2
  3. package/UPSTREAM.json +2 -2
  4. package/docs/assets/overview.en.png +0 -0
  5. package/docs/assets/overview.en.svg +89 -0
  6. package/docs/assets/overview.uk.png +0 -0
  7. package/docs/assets/overview.uk.svg +89 -0
  8. package/docs/en/README.md +41 -0
  9. package/docs/en/architecture.md +73 -0
  10. package/docs/en/getting-started.md +77 -0
  11. package/docs/en/maintenance.md +83 -0
  12. package/docs/en/tool-reference.md +85 -0
  13. package/docs/uk/README.md +41 -0
  14. package/docs/uk/architecture.md +73 -0
  15. package/docs/uk/getting-started.md +77 -0
  16. package/docs/uk/maintenance.md +83 -0
  17. package/docs/uk/tool-reference.md +85 -0
  18. package/extensions/apexlang/index.ts +19 -10
  19. package/extensions/lib/apexlang-cli.d.mts +1 -2
  20. package/extensions/lib/apexlang-cli.mjs +18 -13
  21. package/extensions/lib/apexlang-local-validate.mjs +83 -0
  22. package/extensions/lib/apexlang-local-validator.py +116 -0
  23. package/extensions/lib/apexlang-runtime-validate.mjs +76 -0
  24. package/package.json +2 -1
  25. package/skills/apexlang/APEXlang Skills and Workflows.md +325 -0
  26. package/skills/apexlang/README.md +6 -6
  27. package/skills/apexlang/RELEASE-NOTES.md +2 -2
  28. package/skills/apexlang/SKILL.md +24 -19
  29. package/skills/apexlang/agents/openai.yaml +4 -3
  30. package/skills/apexlang/assets/apex-generation/components.registry.json +1001 -16
  31. package/skills/apexlang/assets/apexlang/domains-catalog.json +6 -1
  32. package/skills/apexlang/assets/component-attributes.json +1924 -180
  33. package/skills/apexlang/assets/component-policies.json +19 -10
  34. package/skills/apexlang/assets/contracts/grammar-semantic-rules.json +134 -0
  35. package/skills/apexlang/assets/contracts/package-layers.json +56 -0
  36. package/skills/apexlang/assets/contracts/page-construction-packs.json +154 -0
  37. package/skills/apexlang/assets/contracts/page-patterns.json +119 -0
  38. package/skills/apexlang/assets/grammar/apexlang.ebnf +11743 -0
  39. package/skills/apexlang/assets/indexes/font-apex-icon-index.json +1699 -0
  40. package/skills/apexlang/assets/routing-catalog-main.json +11 -10
  41. package/skills/apexlang/assets/routing-load-policy.json +35 -9
  42. package/skills/apexlang/assets/rules-mapping.json +110 -2
  43. package/skills/apexlang/assets/rules.catalog.json +1298 -0
  44. package/skills/apexlang/assets/validator-fix-recipes.json +372 -17
  45. package/skills/apexlang/assets/workspace-intelligence.json +7 -10
  46. package/skills/apexlang/manifest.json +268 -12
  47. package/skills/apexlang/references/domains/README.md +1 -1
  48. package/skills/apexlang/references/domains/page-components/buttons.md +2 -2
  49. package/skills/apexlang/references/domains/page-components/page-items.md +3 -3
  50. package/skills/apexlang/references/domains/page-components/regions/region-display-selector/workflow-region-display-selector.md +69 -0
  51. package/skills/apexlang/references/domains/page-components/regions.md +1 -0
  52. package/skills/apexlang/references/domains/template-components/comments.md +61 -0
  53. package/skills/apexlang/references/domains/template-components/registry.md +2 -0
  54. package/skills/apexlang/references/domains/template-components/templates.md +47 -0
  55. package/skills/apexlang/references/domains/template-components/timeline.md +51 -0
  56. package/skills/apexlang/references/ops/one-message-router-contract.md +2 -2
  57. package/skills/apexlang/references/ops/runtime-gates/01-direct-sqlcl-import.md +1 -1
  58. package/skills/apexlang/references/ops/runtime-gates/02-direct-sqlcl-validate-gate.md +1 -1
  59. package/skills/apexlang/references/ops/runtime-gates.md +17 -16
  60. package/skills/apexlang/references/ops/sqlcl-agents/00-connection-gate.md +7 -7
  61. package/skills/apexlang/references/ops/sqlcl.md +7 -8
  62. package/skills/apexlang/references/policies/compiler-prop-map.md +6 -4
  63. package/skills/apexlang/references/policies/governance/00-governance.md +2 -2
  64. package/skills/apexlang/references/policies/memory-bank/00-guard/ai.guard.md +126 -922
  65. package/skills/apexlang/references/policies/memory-bank/20-data/apex.logic.md +3 -3
  66. package/skills/apexlang/references/policies/memory-bank/20-data/db.connection.md +9 -11
  67. package/skills/apexlang/references/policies/memory-bank/30-pages/apex.cards-page.md +95 -0
  68. package/skills/apexlang/references/policies/memory-bank/30-pages/apex.page.md +2 -2
  69. package/skills/apexlang/references/policies/memory-bank/30-pages/apex.smart-filter-search.md +145 -74
  70. package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-interactions.md +9 -2
  71. package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-media.md +6 -5
  72. package/skills/apexlang/references/policies/memory-bank/systemPatterns.md +9 -1
  73. package/skills/apexlang/references/workflows/apex-generation/agents/20-agent-draft.md +51 -232
  74. package/skills/apexlang/references/workflows/apex-generation/agents/30-agent-critique.md +49 -449
  75. package/skills/apexlang/references/workflows/apex-generation/agents/40-agent-revision.md +38 -238
  76. package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-test-matrix.md +8 -2
  77. package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-validation-notes.md +19 -3
  78. package/skills/apexlang/references/workflows/apex-generation/registry.md +15 -1
  79. package/skills/apexlang/references/workflows/apex-generation/templates.md +1 -1
  80. package/skills/apexlang/references/workflows/apex-generation.md +1 -1
  81. package/skills/apexlang/references/workflows/apexlang/apexlang-execution-model.md +5 -5
  82. package/skills/apexlang/references/workflows/apexlang/prompt-contracts.md +81 -10
  83. package/skills/apexlang/references/workflows/apexlang/workflow-create-app-from-fr-and-model.md +18 -7
  84. package/skills/apexlang/release-notes.json +156 -0
  85. package/skills/apexlang/runtime/grammar_contract.mjs +1166 -0
  86. package/skills/apexlang/runtime/internal/python/format_apexlang.py +210 -0
  87. package/skills/apexlang/runtime/internal/python/validate_apexlang.py +14142 -5843
  88. package/skills/apexlang/runtime/internal/python/validator_common.py +2 -0
  89. package/skills/apexlang/runtime/lib/catalogs.mjs +1026 -0
  90. package/skills/apexlang/runtime/lib/common.mjs +35 -0
  91. package/skills/apexlang/runtime/runtime.bundle.mjs +457 -57
  92. package/skills/apexlang/templates/items/combobox/combobox.explicit-defaults.md +1 -1
  93. package/skills/apexlang/templates/items/date-picker/date-picker._common.md +1 -1
  94. package/skills/apexlang/templates/items/date-picker/date-picker.explicit-defaults.md +1 -1
  95. package/skills/apexlang/templates/items/file-upload/file-upload._common.md +30 -24
  96. package/skills/apexlang/templates/items/file-upload/file-upload.compact-template.md +6 -0
  97. package/skills/apexlang/templates/items/file-upload/file-upload.explicit-defaults.md +23 -8
  98. package/skills/apexlang/templates/items/file-upload/file-upload.minimal.md +6 -0
  99. package/skills/apexlang/templates/items/hidden-item/hidden-item._common.md +1 -1
  100. package/skills/apexlang/templates/items/hidden-item/hidden-item.explicit-defaults.md +1 -1
  101. package/skills/apexlang/templates/items/items._common.md +3 -2
  102. package/skills/apexlang/templates/items/list-manager/list-manager.explicit-defaults.md +1 -1
  103. package/skills/apexlang/templates/items/markdown-editor/markdown-editor._common.md +1 -1
  104. package/skills/apexlang/templates/items/markdown-editor/markdown-editor.explicit-defaults.md +1 -1
  105. package/skills/apexlang/templates/items/number-field/number-field._common.md +8 -6
  106. package/skills/apexlang/templates/items/number-field/number-field.explicit-defaults.md +12 -2
  107. package/skills/apexlang/templates/items/popup-lov/popup-lov.explicit-defaults.md +1 -1
  108. package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor._common.md +1 -1
  109. package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor.explicit-defaults.md +1 -1
  110. package/skills/apexlang/templates/items/select-many/standard.md +1 -1
  111. package/skills/apexlang/templates/items/shuttle/shuttle.explicit-defaults.md +1 -1
  112. package/skills/apexlang/templates/items/switch/switch._common.md +8 -8
  113. package/skills/apexlang/templates/items/switch/switch.explicit-defaults.md +1 -1
  114. package/skills/apexlang/templates/items/text-area/text-area._common.md +2 -3
  115. package/skills/apexlang/templates/items/text-area/text-area.explicit-defaults.md +1 -1
  116. package/skills/apexlang/templates/items/text-area/text-area.required-length.md +1 -3
  117. package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.explicit-defaults.md +1 -1
  118. package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.required-length.md +1 -3
  119. package/skills/apexlang/templates/items/text-field/text-field._common.md +2 -3
  120. package/skills/apexlang/templates/items/text-field/text-field.explicit-defaults.md +1 -1
  121. package/skills/apexlang/templates/items/text-field/text-field.required-length.md +1 -3
  122. package/skills/apexlang/templates/page-examples/faceted-search/faceted-search.example.md +0 -5
  123. package/skills/apexlang/templates/page-examples/form-page/form-page.example.md +0 -9
  124. package/skills/apexlang/templates/page-examples/interactive-report-page/interactive-report-page.example.md +2 -2
  125. package/skills/apexlang/templates/page-examples/login-page/login-page.example.md +0 -8
  126. package/skills/apexlang/templates/page-examples/task-definition-initiated-tasks-page/task-definition-initiated-tasks-page.example.md +7 -17
  127. package/skills/apexlang/templates/page-examples/task-definition-my-tasks-page/task-definition-my-tasks-page.example.md +7 -65
  128. package/skills/apexlang/templates/page-examples/task-definition-task-details/task-definition-task-details.example.md +38 -201
  129. package/skills/apexlang/templates/region-components/calendar/calendar.custom-styling.md +3 -1
  130. package/skills/apexlang/templates/region-components/calendar/calendar.faceted-search.md +3 -2
  131. package/skills/apexlang/templates/region-components/cards/README.md +12 -4
  132. package/skills/apexlang/templates/region-components/cards/cards._common.md +176 -37
  133. package/skills/apexlang/templates/region-components/cards/cards._index.md +2 -1
  134. package/skills/apexlang/templates/region-components/cards/cards.refresh-after-dialog.md +46 -0
  135. package/skills/apexlang/templates/region-components/cards/cards.refresh-on-change.md +58 -0
  136. package/skills/apexlang/templates/region-components/cards/cards.rest-source.md +54 -18
  137. package/skills/apexlang/templates/region-components/cards/cards.standard.md +37 -21
  138. package/skills/apexlang/templates/region-components/chart/chart._series._common.md +1 -4
  139. package/skills/apexlang/templates/region-components/chart/chart.pie.md +6 -2
  140. package/skills/apexlang/templates/region-components/chart/chart.status-meter-gauge.md +1 -1
  141. package/skills/apexlang/templates/region-components/chart/chart.stock.md +2 -0
  142. package/skills/apexlang/templates/region-components/chart/features/chart.feature-chart-links.md +9 -7
  143. package/skills/apexlang/templates/region-components/faceted-search/faceted-search._common.md +1 -14
  144. package/skills/apexlang/templates/region-components/form/form._items._common.md +1 -5
  145. package/skills/apexlang/templates/region-components/interactive-report/interactive-report._columns._common.md +2 -6
  146. package/skills/apexlang/templates/region-components/interactive-report/interactive-report.page-header-actions.md +1 -7
  147. package/skills/apexlang/templates/region-components/list/README.md +1 -1
  148. package/skills/apexlang/templates/region-components/list/list._common.md +1 -1
  149. package/skills/apexlang/templates/region-components/map/map.backgrounds.md +12 -10
  150. package/skills/apexlang/templates/region-components/map/map.layer.extruded-polygons.md +16 -12
  151. package/skills/apexlang/templates/region-components/map/map.layer.heat-map.md +10 -7
  152. package/skills/apexlang/templates/region-components/map/map.layer.lines.md +10 -8
  153. package/skills/apexlang/templates/region-components/map/map.layer.polygons.md +21 -18
  154. package/skills/apexlang/templates/region-components/map/map.region.background-custom.md +25 -19
  155. package/skills/apexlang/templates/region-components/map/map.region.background-shared.md +19 -13
  156. package/skills/apexlang/templates/region-components/map/map.region.bbox-sql.md +13 -13
  157. package/skills/apexlang/templates/region-components/map/map.region.bbox-static.md +2 -2
  158. package/skills/apexlang/templates/region-components/map/map.region.browser-location.md +3 -7
  159. package/skills/apexlang/templates/region-components/map/map.region.init-position-sql.md +7 -7
  160. package/skills/apexlang/templates/region-components/region-display-selector/README.md +5 -2
  161. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._common.md +60 -7
  162. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._index.md +4 -1
  163. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.permutations.md +55 -0
  164. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.standard.md +91 -5
  165. package/skills/apexlang/templates/region-components/smart-filter-search/README.md +6 -2
  166. package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._common.md +107 -46
  167. package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._index.md +4 -3
  168. package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search.standard.md +33 -17
  169. package/skills/apexlang/templates/shared-components/component-settings/component-settings._common.md +1 -0
  170. package/skills/apexlang/templates/shared-components/component-settings.example.md +1 -0
  171. package/skills/apexlang/templates/shared-components/email-templates.example.md +1 -1
  172. package/skills/apexlang/templates/shared-components/rest-data-sources/example_rest_data_source.example.md +40 -46
  173. package/skills/apexlang/templates/shared-components/task-definitions/action-task.example.md +2 -30
  174. package/skills/apexlang/templates/shared-components/task-definitions/approve-request.example.md +3 -31
  175. package/skills/apexlang/templates/template-components/README.md +27 -15
  176. package/skills/apexlang/templates/template-components/avatar/README.md +56 -0
  177. package/skills/apexlang/templates/template-components/avatar/avatar._common.md +149 -0
  178. package/skills/apexlang/templates/template-components/avatar/avatar._index.md +42 -0
  179. package/skills/apexlang/templates/template-components/{avatar._template_options.md → avatar/avatar._template_options.md} +1 -1
  180. package/skills/apexlang/templates/template-components/avatar/avatar.report-icon.md +48 -0
  181. package/skills/apexlang/templates/template-components/avatar/avatar.report-image-url-column.md +62 -0
  182. package/skills/apexlang/templates/template-components/avatar/avatar.report-initials.md +54 -0
  183. package/skills/apexlang/templates/template-components/badge/README.md +38 -0
  184. package/skills/apexlang/templates/template-components/badge/badge._common.md +183 -0
  185. package/skills/apexlang/templates/template-components/badge/badge._index.md +20 -0
  186. package/skills/apexlang/templates/template-components/badge/badge.report-link.md +66 -0
  187. package/skills/apexlang/templates/template-components/badge/badge.report-minimal.md +76 -0
  188. package/skills/apexlang/templates/template-components/comments/README.md +20 -0
  189. package/skills/apexlang/templates/template-components/comments/comments._common.md +43 -0
  190. package/skills/apexlang/templates/template-components/comments/comments._index.md +25 -0
  191. package/skills/apexlang/templates/template-components/{comments._template_options.md → comments/comments._template_options.md} +2 -1
  192. package/skills/apexlang/templates/template-components/comments/comments.apex-task-comments.md +77 -0
  193. package/skills/apexlang/templates/template-components/comments/comments.partial-column.md +120 -0
  194. package/skills/apexlang/templates/template-components/comments/comments.permutations.md +425 -0
  195. package/skills/apexlang/templates/template-components/content-row/README.md +1 -1
  196. package/skills/apexlang/templates/template-components/content-row/content-row._common.md +1 -1
  197. package/skills/apexlang/templates/template-components/content-row/content-row._index.md +1 -1
  198. package/skills/apexlang/templates/template-components/content-row/content-row._template_options.md +1 -1
  199. package/skills/apexlang/templates/template-components/flexbox-container/README.md +9 -0
  200. package/skills/apexlang/templates/template-components/flexbox-container/flexbox-container._index.md +13 -0
  201. package/skills/apexlang/templates/template-components/media-list/README.md +100 -0
  202. package/skills/apexlang/templates/template-components/media-list/media-list._common.md +174 -0
  203. package/skills/apexlang/templates/template-components/media-list/media-list._index.md +50 -0
  204. package/skills/apexlang/templates/template-components/{media-list._template_options.md → media-list/media-list._template_options.md} +8 -2
  205. package/skills/apexlang/templates/template-components/media-list/media-list.partial.md +50 -0
  206. package/skills/apexlang/templates/template-components/media-list/media-list.report-avatar-badge.md +76 -0
  207. package/skills/apexlang/templates/template-components/media-list/media-list.report-base.md +71 -0
  208. package/skills/apexlang/templates/template-components/media-list/media-list.report-grouped.md +40 -0
  209. package/skills/apexlang/templates/template-components/media-list/media-list.report-layouts.md +50 -0
  210. package/skills/apexlang/templates/template-components/media-list/media-list.report-link.md +53 -0
  211. package/skills/apexlang/templates/template-components/metric-card/README.md +19 -4
  212. package/skills/apexlang/templates/template-components/metric-card/metric-card._common.md +122 -29
  213. package/skills/apexlang/templates/template-components/metric-card/metric-card._index.md +6 -0
  214. package/skills/apexlang/templates/template-components/metric-card/metric-card._template_options.md +47 -2
  215. package/skills/apexlang/templates/template-components/metric-card/metric-card.partial-minimal.md +51 -0
  216. package/skills/apexlang/templates/template-components/metric-card/metric-card.permutations.md +56 -0
  217. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-avatar-badge.md +98 -0
  218. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-grouping-selection.md +131 -0
  219. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-link.md +66 -0
  220. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-minimal.md +97 -0
  221. package/skills/apexlang/templates/template-components/template-components.registry.json +90 -1
  222. package/skills/apexlang/templates/template-components/timeline/README.md +19 -0
  223. package/skills/apexlang/templates/template-components/timeline/timeline._common.md +43 -0
  224. package/skills/apexlang/templates/template-components/timeline/timeline._index.md +24 -0
  225. package/skills/apexlang/templates/template-components/{timeline._template_options.md → timeline/timeline._template_options.md} +2 -1
  226. package/skills/apexlang/templates/template-components/timeline/timeline.permutations.md +399 -0
  227. package/skills/apexlang/templates/template-components/timeline/timeline.report-sample-data.md +168 -0
  228. package/skills/apexlang/templates/workspace-components/credentials/credentials-for-open-ai.example.md +1 -1
  229. package/skills/apexlang/templates/workspace-components/generative-ai-services/open-ai.example.md +8 -6
  230. package/skills/apexlang/tools/apexctl.mjs +167 -4
  231. package/skills/apexlang/tools/compiler-truth-audit.mjs +95 -63
  232. package/skills/apexlang/tools/query-valid-props-context.mjs +30 -0
  233. package/skills/apexlang/tools/query-valid-props-normalize.mjs +1 -0
  234. package/skills/apexlang/tools/query-valid-props-runtime.mjs +13 -8
  235. package/skills/apexlang/tools/query-valid-props-semantics.mjs +391 -0
  236. package/skills/apexlang/tools/query-valid-props-template-components.mjs +15 -1
  237. package/skills/apexlang/tools/query-valid-props.mjs +198 -216
  238. /package/skills/apexlang/templates/template-components/{badge._template_options.md → badge/badge._template_options.md} +0 -0
  239. /package/skills/apexlang/templates/template-components/{flexbox-container._template_options.md → flexbox-container/flexbox-container._template_options.md} +0 -0
@@ -0,0 +1,131 @@
1
+ ---
2
+ templateId: metric-card.report-grouping-selection
3
+ componentType: templateComponent
4
+ imports:
5
+ - metric-card.common
6
+ - metric-card.report-minimal
7
+ version: 1.0
8
+ description: Report-mode Metric Card with deterministic grouping and optional native row selection.
9
+ ---
10
+
11
+ # Purpose
12
+
13
+ Generate grouped Metric Cards or selection-enabled Metric Cards with stable row identity and correctly typed same-page items.
14
+
15
+ # Grouped Output Template
16
+
17
+ ```apx
18
+ region {{regionStaticId}} (
19
+ type: themeTemplateComponent/metricCard
20
+ orderBy {
21
+ type: staticValue
22
+ orderByClause: {{groupColumn}} asc, {{primaryKeyColumn}} asc
23
+ }
24
+ componentAppearance {
25
+ display: report
26
+ }
27
+ settings {
28
+ title: &{{settings.titleColumn}}.
29
+ metric: &{{settings.metricColumn}}.
30
+ }
31
+ plugin-grouping {
32
+ groupTitle: {{grouping.title}}
33
+ groupIcon: {{grouping.icon}}
34
+ }
35
+ column {{groupColumn}} (
36
+ layout {
37
+ sequence: 10
38
+ }
39
+ appearance {
40
+ group: true
41
+ }
42
+ source {
43
+ databaseColumn: {{groupColumn}}
44
+ dataType: varchar2
45
+ }
46
+ )
47
+ )
48
+ ```
49
+
50
+ # Selection Templates
51
+
52
+ ```apx
53
+ rowSelection {
54
+ type: focusOnly
55
+ }
56
+ ```
57
+
58
+ ```apx
59
+ rowSelection {
60
+ type: singleSelection
61
+ currentSelectionPageItem: {{selection.currentItem}}
62
+ }
63
+
64
+ pageItem {{selection.currentItem}} (
65
+ type: hidden
66
+ layout {
67
+ sequence: {{selection.currentItemSequence}}
68
+ slot: regionBody
69
+ }
70
+ security {
71
+ sessionStateProtection: unrestricted
72
+ }
73
+ comments {
74
+ comments: Same-page dynamic-action ownership: native Metric Card selection updates this client-owned UI state after render, so checksum-based SSP would block the intended flow.
75
+ }
76
+ )
77
+ ```
78
+
79
+ ```apx
80
+ rowSelection {
81
+ type: multipleSelection
82
+ currentSelectionPageItem: {{selection.currentItem}}
83
+ selectAllPageItem: {{selection.selectAllItem}}
84
+ }
85
+
86
+ pageItem {{selection.currentItem}} (
87
+ type: hidden
88
+ layout {
89
+ sequence: {{selection.currentItemSequence}}
90
+ slot: regionBody
91
+ }
92
+ security {
93
+ sessionStateProtection: unrestricted
94
+ }
95
+ comments {
96
+ comments: Same-page dynamic-action ownership: native Metric Card selection updates this client-owned UI state after render, so checksum-based SSP would block the intended flow.
97
+ }
98
+ )
99
+
100
+ pageItem {{selection.selectAllItem}} (
101
+ type: checkbox
102
+ label {
103
+ label: Select All
104
+ alignment: left
105
+ }
106
+ help {
107
+ helpText: Select or clear all metric cards.
108
+ }
109
+ layout {
110
+ sequence: {{selection.selectAllItemSequence}}
111
+ region: @{{selection.toolbarRegion}}
112
+ slot: regionBody
113
+ }
114
+ )
115
+ ```
116
+
117
+ # Conditional Rendering Rules
118
+
119
+ - Use grouping and selection only when requested; they are independent features.
120
+ - Grouping requires at least one child column with `appearance.group: true` and top-level static ordering beginning with every grouped column in declaration order. The `plugin-grouping` block is optional when no custom group title/icon is needed.
121
+ - `groupIcon` requires `groupTitle`.
122
+ - Every selection mode requires a child column with `source.primaryKey: true`.
123
+ - `focusOnly` emits no page-item bindings.
124
+ - `singleSelection` uses a same-page hidden current-selection item with documented `sessionStateProtection: unrestricted` and no select-all item.
125
+ - `multipleSelection` uses the same protected-by-classification hidden current-selection item plus a checkbox or switch select-all item.
126
+
127
+ # Validation Checklist
128
+
129
+ - Group columns lead deterministic ordering.
130
+ - Selection item names resolve to page items of the required types.
131
+ - Exactly one stable identity column is marked as the primary key for ordinary single-key sources.
@@ -0,0 +1,66 @@
1
+ ---
2
+ templateId: metric-card.report-link
3
+ componentType: templateComponent
4
+ imports:
5
+ - metric-card.common
6
+ - metric-card.report-minimal
7
+ version: 1.0
8
+ description: Report-mode Metric Card with a declarative row link.
9
+ ---
10
+
11
+ # Purpose
12
+
13
+ Add compiler-backed row navigation to each Metric Card.
14
+
15
+ # Output Template
16
+
17
+ ```apx
18
+ region {{regionStaticId}} (
19
+ type: themeTemplateComponent/metricCard
20
+ componentAppearance {
21
+ display: report
22
+ }
23
+ settings {
24
+ title: &{{settings.titleColumn}}.
25
+ metric: &{{settings.metricColumn}}.
26
+ }
27
+ action open-details (
28
+ position: link
29
+ layout {
30
+ sequence: 10
31
+ }
32
+ behavior {
33
+ type: redirectThisApp
34
+ target: {
35
+ page: {{target.pageId}}
36
+ items: {
37
+ {{target.itemName}}: &{{target.sourceKeyColumn}}.
38
+ }
39
+ }
40
+ }
41
+ security {
42
+ authorizationScheme: {{action.authorizationScheme}}
43
+ }
44
+ )
45
+ )
46
+ ```
47
+
48
+ # Conditional Rendering Rules
49
+
50
+ - Use only `position: link`.
51
+ - Omit `template` and `label`; Metric Card exposes no action templates and the link position does not request a label.
52
+ - Include the source key in the query and child columns. Mark it as `source.primaryKey: true` when stable row identity is required.
53
+ - Omit action security when page authentication is sufficient. Otherwise reference an existing authorization scheme.
54
+ - Use a declarative target for same-app navigation. Do not build `f?p=` strings or inline JavaScript URLs.
55
+ - Use `redirectOtherApp` with a declarative `target` for a different APEX application.
56
+ - Use `redirectUrl` only with a reviewed safe `targetUrl`; omit `target`. Reject dangerous schemes, protocol-relative URLs, control characters, wholly dynamic destinations, and substitutions outside query parameters. Keep the scheme, host, path, and fragment static.
57
+ - Optional `linkAttributes` must be static and must not contain inline event handlers, URL-bearing attributes, scriptable CSS, or unsafe URL schemes. A new-window target also requires `rel="noopener"` or `rel="noreferrer"`.
58
+ - Use `triggerAction` only when a matching event consumer/dynamic action exists; omit both `target` and `targetUrl`.
59
+
60
+ # Validation Checklist
61
+
62
+ - Target page and item mappings are explicit.
63
+ - Every `&COLUMN.` action mapping is projected by the source.
64
+ - Action has deterministic layout sequence and declarative behavior.
65
+ - Any `targetUrl` is reviewed and safe, with substitutions limited to query parameters; any `linkAttributes` are static and contain no inline handlers or URL override.
66
+ - Authorization alias, when present, already exists in the target application.
@@ -0,0 +1,97 @@
1
+ ---
2
+ templateId: metric-card.report-minimal
3
+ componentType: templateComponent
4
+ imports:
5
+ - metric-card.common
6
+ version: 1.0
7
+ description: Minimal report-mode Metric Card with source-backed title and metric values.
8
+ ---
9
+
10
+ # Purpose
11
+
12
+ Render one or more Metric Cards from a normalized report source using native title, metric, and meta attributes.
13
+
14
+ # Output Template
15
+
16
+ ````apx
17
+ region {{regionStaticId}} (
18
+ name: {{name}}
19
+ type: themeTemplateComponent/metricCard
20
+ source {
21
+ location: localDatabase
22
+ type: sqlQuery
23
+ sqlQuery:
24
+ ```sql
25
+ {{source.sqlQuery}}
26
+ ```
27
+ }
28
+ layout {
29
+ sequence: {{layout.sequence}}
30
+ slot: body
31
+ }
32
+ appearance {
33
+ template: @/blank-with-attributes
34
+ templateOptions: #DEFAULT#
35
+ }
36
+ componentAppearance {
37
+ display: report
38
+ }
39
+ settings {
40
+ title: &{{settings.titleColumn}}.
41
+ metric: &{{settings.metricColumn}}.
42
+ meta: &{{settings.metaColumn}}.
43
+ layout: {{settings.layout}}
44
+ }
45
+ column {{settings.titleColumn}} (
46
+ layout {
47
+ sequence: 10
48
+ }
49
+ appearance {
50
+ group: false
51
+ }
52
+ source {
53
+ databaseColumn: {{settings.titleColumn}}
54
+ dataType: varchar2
55
+ }
56
+ )
57
+ column {{settings.metricColumn}} (
58
+ layout {
59
+ sequence: 20
60
+ }
61
+ appearance {
62
+ group: false
63
+ }
64
+ source {
65
+ databaseColumn: {{settings.metricColumn}}
66
+ dataType: {{metricColumn.dataType}}
67
+ }
68
+ )
69
+ column {{settings.metaColumn}} (
70
+ layout {
71
+ sequence: 30
72
+ }
73
+ appearance {
74
+ group: false
75
+ }
76
+ source {
77
+ databaseColumn: {{settings.metaColumn}}
78
+ dataType: varchar2
79
+ }
80
+ )
81
+ )
82
+ ````
83
+
84
+ # Conditional Rendering Rules
85
+
86
+ - `settings.metric` is required.
87
+ - Omit `settings.title`, `settings.meta`, and their columns when the design does not need them.
88
+ - Use `&COLUMN.` substitution for query-backed title, metric, and meta text.
89
+ - Use one source row per card. Normalize independent metrics into the same aliases, typically with `UNION ALL`.
90
+ - Replace the SQL metavariable only after every referenced database object and column has authoritative evidence. A literal `dual` smoke test is valid only for explicit test fixtures.
91
+
92
+ # Validation Checklist
93
+
94
+ - Every projected alias has a child column.
95
+ - Metric data type matches the delivered projection.
96
+ - Layout uses a supported Metric Card layout token.
97
+ - SQL returns raw values and contains no presentation HTML.
@@ -4,19 +4,36 @@
4
4
  {
5
5
  "slug": "actions",
6
6
  "kind": "helper",
7
+ "readme": "actions/README.md",
7
8
  "index": "actions/actions._index.md",
8
9
  "common": "actions/actions._common.md",
10
+ "files": ["actions/actions._template_options.md"],
9
11
  "scenarios": [
10
12
  "actions/actions.inline-button.md",
11
13
  "actions/actions.menu-trigger.md",
12
14
  "actions/actions.nested-group.md"
13
15
  ]
14
16
  },
17
+ {
18
+ "slug": "avatar",
19
+ "kind": "template-component",
20
+ "readme": "avatar/README.md",
21
+ "index": "avatar/avatar._index.md",
22
+ "common": "avatar/avatar._common.md",
23
+ "files": ["avatar/avatar._template_options.md"],
24
+ "scenarios": [
25
+ "avatar/avatar.report-initials.md",
26
+ "avatar/avatar.report-icon.md",
27
+ "avatar/avatar.report-image-url-column.md"
28
+ ]
29
+ },
15
30
  {
16
31
  "slug": "button",
17
32
  "kind": "helper",
33
+ "readme": "button/README.md",
18
34
  "index": "button/button._index.md",
19
35
  "common": "button/button._common.md",
36
+ "files": ["button/button._template_options.md"],
20
37
  "scenarios": [
21
38
  "button/button.navigation.md",
22
39
  "button/button.hot-icon.md",
@@ -26,8 +43,10 @@
26
43
  {
27
44
  "slug": "content-row",
28
45
  "kind": "template-component",
46
+ "readme": "content-row/README.md",
29
47
  "index": "content-row/content-row._index.md",
30
48
  "common": "content-row/content-row._common.md",
49
+ "files": ["content-row/content-row._template_options.md"],
31
50
  "scenarios": [
32
51
  "content-row/content-row.partial-minimal.md",
33
52
  "content-row/content-row.partial-rich-content.md",
@@ -43,8 +62,78 @@
43
62
  {
44
63
  "slug": "metric-card",
45
64
  "kind": "template-component",
65
+ "readme": "metric-card/README.md",
46
66
  "index": "metric-card/metric-card._index.md",
47
- "common": "metric-card/metric-card._common.md"
67
+ "common": "metric-card/metric-card._common.md",
68
+ "files": ["metric-card/metric-card._template_options.md"],
69
+ "scenarios": [
70
+ "metric-card/metric-card.partial-minimal.md",
71
+ "metric-card/metric-card.report-minimal.md",
72
+ "metric-card/metric-card.report-avatar-badge.md",
73
+ "metric-card/metric-card.report-link.md",
74
+ "metric-card/metric-card.report-grouping-selection.md",
75
+ "metric-card/metric-card.permutations.md"
76
+ ]
77
+ },
78
+ {
79
+ "slug": "badge",
80
+ "kind": "template-component",
81
+ "readme": "badge/README.md",
82
+ "index": "badge/badge._index.md",
83
+ "common": "badge/badge._common.md",
84
+ "files": ["badge/badge._template_options.md"],
85
+ "scenarios": [
86
+ "badge/badge.report-minimal.md",
87
+ "badge/badge.report-link.md"
88
+ ]
89
+ },
90
+ {
91
+ "slug": "comments",
92
+ "kind": "template-component",
93
+ "readme": "comments/README.md",
94
+ "index": "comments/comments._index.md",
95
+ "common": "comments/comments._common.md",
96
+ "files": ["comments/comments._template_options.md"],
97
+ "scenarios": [
98
+ "comments/comments.apex-task-comments.md",
99
+ "comments/comments.partial-column.md",
100
+ "comments/comments.permutations.md"
101
+ ]
102
+ },
103
+ {
104
+ "slug": "flexbox-container",
105
+ "kind": "template-component",
106
+ "readme": "flexbox-container/README.md",
107
+ "index": "flexbox-container/flexbox-container._index.md",
108
+ "files": ["flexbox-container/flexbox-container._template_options.md"]
109
+ },
110
+ {
111
+ "slug": "media-list",
112
+ "kind": "template-component",
113
+ "readme": "media-list/README.md",
114
+ "index": "media-list/media-list._index.md",
115
+ "common": "media-list/media-list._common.md",
116
+ "files": ["media-list/media-list._template_options.md"],
117
+ "scenarios": [
118
+ "media-list/media-list.partial.md",
119
+ "media-list/media-list.report-base.md",
120
+ "media-list/media-list.report-avatar-badge.md",
121
+ "media-list/media-list.report-link.md",
122
+ "media-list/media-list.report-grouped.md",
123
+ "media-list/media-list.report-layouts.md"
124
+ ]
125
+ },
126
+ {
127
+ "slug": "timeline",
128
+ "kind": "template-component",
129
+ "readme": "timeline/README.md",
130
+ "index": "timeline/timeline._index.md",
131
+ "common": "timeline/timeline._common.md",
132
+ "files": [
133
+ "timeline/timeline._template_options.md",
134
+ "timeline/timeline.report-sample-data.md",
135
+ "timeline/timeline.permutations.md"
136
+ ]
48
137
  }
49
138
  ]
50
139
  }
@@ -0,0 +1,19 @@
1
+ # Timeline Templates
2
+
3
+ Canonical Universal Theme Timeline template-component guidance.
4
+
5
+ ## Usage
6
+
7
+ - Load `timeline._index.md` first.
8
+ - Load `timeline._common.md` for the shared generation contract.
9
+ - Load `timeline._template_options.md` only when validating Timeline attributes or enum values.
10
+ - Choose the report sample or a single permutation branch after the source mappings are proven.
11
+ - Follow `references/domains/template-components/timeline.md` for compiler authority and unsupported metadata.
12
+
13
+ ## Template Catalog
14
+
15
+ - `timeline._index.md`
16
+ - `timeline._common.md`
17
+ - `timeline._template_options.md`
18
+ - `timeline.report-sample-data.md`
19
+ - `timeline.permutations.md`
@@ -0,0 +1,43 @@
1
+ ---
2
+ templateId: timeline.common
3
+ componentType: templateComponent
4
+ version: 1.0
5
+ description: Shared canonical contract for Timeline template-component generation.
6
+ ---
7
+
8
+ # Purpose
9
+
10
+ Define the shared source, appearance, settings, nested-component, and column contract for Timeline regions.
11
+
12
+ # Generation Rules (MANDATORY)
13
+
14
+ 1. Use `type: themeTemplateComponent/timeline` and `componentAppearance.display: partial` or `report`.
15
+ 2. Every Timeline region must include `source`, `componentAppearance`, and `settings`.
16
+ 3. Map the required `settings.userName`, `settings.date`, and `settings.title` values to verified source columns. `settings.description` is optional.
17
+ 4. Keep explicit child `column (...)` declarations aligned with every projected report source column and its data type.
18
+ 5. Enable Avatar and Badge rendering only through `settings.displayAvatar` and `settings.displayBadge`; keep each flag synchronized with its nested block.
19
+ 6. When Avatar is enabled, emit `plugin-avatar.type` and `plugin-avatar.shape`, plus exactly one payload matching `icon`, `image`, or `initials`.
20
+ 7. Use a dedicated projected initials column, not the full user-name column. URL-column images must use a declared varchar2 column containing only an application-managed static-file URL.
21
+ 8. When Badge is enabled, emit `plugin-badge.label` and `plugin-badge.value`; optional state, icon, display, style, and shape values must come from the family-local inventories.
22
+ 9. Do not emit report-level `applyThemeColors`, `style`, grouping, pagination type/count, messages, or actions until a target-build compiler contract proves those structures.
23
+ 10. Use `timeline._template_options.md` as attribute inventory only. Compiler-backed APEXlang legality remains authoritative.
24
+
25
+ # Variable Contract
26
+
27
+ | Name | Required | Type | Notes |
28
+ |------|----------|------|-------|
29
+ | source | yes | block | Use a supported source mode with verified mappings. |
30
+ | componentAppearance.display | yes | enum | `partial` or `report`. |
31
+ | settings.userName | yes | column | Verified user-name column. |
32
+ | settings.date | yes | column | Verified event date or date-range column. |
33
+ | settings.title | yes | column | Verified event title column. |
34
+ | settings.description | optional | column | Verified description column. |
35
+ | settings.displayAvatar | optional | boolean | Must agree with `plugin-avatar` presence. |
36
+ | settings.displayBadge | optional | boolean | Must agree with `plugin-badge` presence. |
37
+ | plugin-avatar | conditional | block | Required only when Avatar display is enabled. |
38
+ | plugin-badge | conditional | block | Required only when Badge display is enabled. |
39
+ | column | conditional | child component | Required for report projections and every referenced mapping. |
40
+
41
+ # Authority Boundary
42
+
43
+ The Universal Theme export includes metadata that the current APEXlang compiler rejects. Follow the Timeline workflow and target-build compiler validation for any structure not shown by the canonical fixtures.
@@ -0,0 +1,24 @@
1
+ ---
2
+ templateId: region.timeline.index
3
+ componentType: region
4
+ version: 1.0
5
+ imports:
6
+ - timeline._common.md
7
+ - timeline._template_options.md
8
+ description: Routing entrypoint for Timeline template-component regions.
9
+ ---
10
+
11
+ # Purpose
12
+
13
+ Select the narrowest supported Timeline report or partial configuration.
14
+
15
+ # Load Order
16
+
17
+ 1. Load `timeline._common.md`.
18
+ 2. Load `timeline._template_options.md` when attribute or enum evidence is required.
19
+ 3. Load exactly one matching example: `timeline.report-sample-data.md` for the canonical report shape or `timeline.permutations.md` for conditional branches.
20
+ 4. Load the shared Avatar or Badge inventory only when the requested nested component is enabled.
21
+
22
+ # Authority
23
+
24
+ Use the Timeline workflow for compiler-backed legality. Theme-export `REPORT` and `REPORT_GROUP` metadata is inventory evidence only.
@@ -3,8 +3,9 @@
3
3
  These entries come from `create_plugin_attribute` and `create_plugin_attr_value`, not from `wwv_flow_template_options`.
4
4
 
5
5
  Apply these values through the owning component's settings plus the shared avatar and badge owner files when those substructures are enabled.
6
- Load `avatar._template_options.md` and `badge._template_options.md` for the shared substructures used by Timeline.
6
+ Load `../avatar/avatar._template_options.md` and `../badge/badge._template_options.md` for the shared substructures used by Timeline.
7
7
  Emit only exact accepted values from this inventory. Do not concatenate adjacent values into one token and do not substitute labels or implementation details.
8
+ Rows scoped to `REPORT` or `REPORT_GROUP` record Universal Theme export metadata only; they do not prove an APEXlang emission shape. The current Timeline compiler contract rejects root report attributes and exposes no supported grouping block, so follow the Timeline workflow and do not emit those rows.
8
9
 
9
10
  When a row includes `values=`, pass the left-hand side of each `name=>return_value` pair.
10
11