@specverse/engines 4.1.28 → 4.2.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 (237) hide show
  1. package/assets/examples/manifests/frontend-only.yaml +3 -6
  2. package/assets/examples/manifests/fullstack-app.yaml +5 -7
  3. package/assets/examples/manifests/fullstack-monorepo.yaml +3 -6
  4. package/dist/inference/comprehensive-engine.d.ts.map +1 -1
  5. package/dist/inference/comprehensive-engine.js +3 -19
  6. package/dist/inference/comprehensive-engine.js.map +1 -1
  7. package/dist/inference/core/rule-engine.d.ts +31 -0
  8. package/dist/inference/core/rule-engine.d.ts.map +1 -1
  9. package/dist/inference/core/rule-engine.js +117 -33
  10. package/dist/inference/core/rule-engine.js.map +1 -1
  11. package/dist/inference/core/rule-file-types.d.ts +0 -2
  12. package/dist/inference/core/rule-file-types.d.ts.map +1 -1
  13. package/dist/inference/core/rule-file-types.js +3 -6
  14. package/dist/inference/core/rule-file-types.js.map +1 -1
  15. package/dist/inference/core/rule-loader.d.ts +5 -15
  16. package/dist/inference/core/rule-loader.d.ts.map +1 -1
  17. package/dist/inference/core/rule-loader.js +43 -132
  18. package/dist/inference/core/rule-loader.js.map +1 -1
  19. package/dist/inference/core/types.d.ts +0 -6
  20. package/dist/inference/core/types.d.ts.map +1 -1
  21. package/dist/inference/core/types.js +0 -4
  22. package/dist/inference/core/types.js.map +1 -1
  23. package/dist/inference/logical/generators/component-type-resolver.d.ts +0 -26
  24. package/dist/inference/logical/generators/component-type-resolver.d.ts.map +1 -1
  25. package/dist/inference/logical/generators/component-type-resolver.js +0 -19
  26. package/dist/inference/logical/generators/component-type-resolver.js.map +1 -1
  27. package/dist/inference/logical/generators/specialist-view-expander.d.ts +1 -17
  28. package/dist/inference/logical/generators/specialist-view-expander.d.ts.map +1 -1
  29. package/dist/inference/logical/generators/specialist-view-expander.js +0 -15
  30. package/dist/inference/logical/generators/specialist-view-expander.js.map +1 -1
  31. package/dist/inference/logical/generators/view-generator.d.ts +4 -14
  32. package/dist/inference/logical/generators/view-generator.d.ts.map +1 -1
  33. package/dist/inference/logical/generators/view-generator.js +6 -26
  34. package/dist/inference/logical/generators/view-generator.js.map +1 -1
  35. package/dist/inference/logical/index.d.ts +2 -2
  36. package/dist/inference/logical/index.d.ts.map +1 -1
  37. package/dist/inference/logical/logical-engine.d.ts.map +1 -1
  38. package/dist/inference/logical/logical-engine.js +17 -80
  39. package/dist/inference/logical/logical-engine.js.map +1 -1
  40. package/dist/inference/quint-transpiler.d.ts +5 -3
  41. package/dist/inference/quint-transpiler.d.ts.map +1 -1
  42. package/dist/inference/quint-transpiler.js +11 -6
  43. package/dist/inference/quint-transpiler.js.map +1 -1
  44. package/dist/libs/instance-factories/applications/templates/generic/main-generator.js +3 -3
  45. package/dist/libs/instance-factories/applications/templates/react/api-client-generator.js +16 -6
  46. package/dist/libs/instance-factories/applications/templates/react-starter/app-tsx-generator.js +110 -0
  47. package/dist/libs/instance-factories/applications/templates/react-starter/dashboard-body-composer.js +121 -0
  48. package/dist/libs/instance-factories/applications/templates/react-starter/detail-body-composer.js +78 -0
  49. package/dist/libs/instance-factories/applications/templates/react-starter/form-body-composer.js +190 -0
  50. package/dist/libs/instance-factories/applications/templates/react-starter/helpers-emitter.js +45 -0
  51. package/dist/libs/instance-factories/applications/templates/react-starter/html-to-jsx.js +192 -0
  52. package/dist/libs/instance-factories/applications/templates/react-starter/list-body-composer.js +46 -0
  53. package/dist/libs/instance-factories/applications/templates/react-starter/orchestrator.js +30 -0
  54. package/dist/libs/instance-factories/applications/templates/react-starter/package-json-generator.js +38 -0
  55. package/dist/libs/instance-factories/applications/templates/react-starter/regen-safety.js +89 -0
  56. package/dist/libs/instance-factories/applications/templates/react-starter/view-emitter.js +56 -0
  57. package/dist/libs/instance-factories/applications/templates/react-starter/views-generator.js +66 -0
  58. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +14 -11
  59. package/dist/libs/instance-factories/controllers/templates/fastify/server-generator.js +11 -3
  60. package/dist/libs/instance-factories/services/templates/prisma/controller-generator.js +27 -17
  61. package/dist/libs/instance-factories/shared/path-resolver.js +1 -1
  62. package/dist/realize/index.d.ts.map +1 -1
  63. package/dist/realize/index.js +15 -22
  64. package/dist/realize/index.js.map +1 -1
  65. package/dist/registry/utils/manifest-adapter.d.ts +8 -1
  66. package/dist/registry/utils/manifest-adapter.d.ts.map +1 -1
  67. package/dist/registry/utils/manifest-adapter.js +8 -1
  68. package/dist/registry/utils/manifest-adapter.js.map +1 -1
  69. package/libs/instance-factories/applications/react-app-starter.yaml +150 -0
  70. package/libs/instance-factories/applications/templates/generic/main-generator.ts +3 -3
  71. package/libs/instance-factories/applications/templates/react/api-client-generator.ts +16 -6
  72. package/libs/instance-factories/applications/templates/react-starter/README.md +211 -0
  73. package/libs/instance-factories/applications/templates/react-starter/__tests__/dashboard-body-composer.test.ts +153 -0
  74. package/libs/instance-factories/applications/templates/react-starter/__tests__/detail-body-composer.test.ts +145 -0
  75. package/libs/instance-factories/applications/templates/react-starter/__tests__/form-body-composer.test.ts +175 -0
  76. package/libs/instance-factories/applications/templates/react-starter/__tests__/helpers-emitter.test.ts +55 -0
  77. package/libs/instance-factories/applications/templates/react-starter/__tests__/html-to-jsx.test.ts +140 -0
  78. package/libs/instance-factories/applications/templates/react-starter/__tests__/list-body-composer.test.ts +146 -0
  79. package/libs/instance-factories/applications/templates/react-starter/__tests__/orchestrator.test.ts +163 -0
  80. package/libs/instance-factories/applications/templates/react-starter/__tests__/parity-p2-factory-imports.test.ts +116 -0
  81. package/libs/instance-factories/applications/templates/react-starter/__tests__/parity-p3-rendered-output.test.ts +183 -0
  82. package/libs/instance-factories/applications/templates/react-starter/__tests__/regen-safety.test.ts +144 -0
  83. package/libs/instance-factories/applications/templates/react-starter/__tests__/starter-generators.test.ts +114 -0
  84. package/libs/instance-factories/applications/templates/react-starter/__tests__/view-emitter.test.ts +107 -0
  85. package/libs/instance-factories/applications/templates/react-starter/__tests__/views-generator.test.ts +139 -0
  86. package/libs/instance-factories/applications/templates/react-starter/app-tsx-generator.ts +141 -0
  87. package/libs/instance-factories/applications/templates/react-starter/dashboard-body-composer.ts +174 -0
  88. package/libs/instance-factories/applications/templates/react-starter/detail-body-composer.ts +135 -0
  89. package/libs/instance-factories/applications/templates/react-starter/form-body-composer.ts +306 -0
  90. package/libs/instance-factories/applications/templates/react-starter/helpers-emitter.ts +60 -0
  91. package/libs/instance-factories/applications/templates/react-starter/html-to-jsx.ts +334 -0
  92. package/libs/instance-factories/applications/templates/react-starter/list-body-composer.ts +120 -0
  93. package/libs/instance-factories/applications/templates/react-starter/orchestrator.ts +80 -0
  94. package/libs/instance-factories/applications/templates/react-starter/package-json-generator.ts +57 -0
  95. package/libs/instance-factories/applications/templates/react-starter/regen-safety.ts +157 -0
  96. package/libs/instance-factories/applications/templates/react-starter/skeletons/dashboard.tsx.template +47 -0
  97. package/libs/instance-factories/applications/templates/react-starter/skeletons/detail.tsx.template +94 -0
  98. package/libs/instance-factories/applications/templates/react-starter/skeletons/form.tsx.template +114 -0
  99. package/libs/instance-factories/applications/templates/react-starter/skeletons/list.tsx.template +72 -0
  100. package/libs/instance-factories/applications/templates/react-starter/view-emitter.ts +151 -0
  101. package/libs/instance-factories/applications/templates/react-starter/views-generator.ts +137 -0
  102. package/libs/instance-factories/cli/templates/commander/command-generator.ts +14 -11
  103. package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +11 -3
  104. package/libs/instance-factories/services/templates/prisma/controller-generator.ts +27 -17
  105. package/libs/instance-factories/shared/path-resolver.ts +8 -2
  106. package/package.json +3 -3
  107. package/dist/libs/instance-factories/applications/templates/react/_view-components-source.js +0 -530
  108. package/dist/libs/instance-factories/applications/templates/react/app-tsx-generator.js +0 -73
  109. package/dist/libs/instance-factories/applications/templates/react/field-helpers-generator.js +0 -99
  110. package/dist/libs/instance-factories/applications/templates/react/package-json-generator.js +0 -49
  111. package/dist/libs/instance-factories/applications/templates/react/pattern-adapter-generator.js +0 -156
  112. package/dist/libs/instance-factories/applications/templates/react/react-pattern-adapter.js +0 -935
  113. package/dist/libs/instance-factories/applications/templates/react/relationship-field-generator.js +0 -143
  114. package/dist/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.js +0 -646
  115. package/dist/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.js +0 -65
  116. package/dist/libs/instance-factories/applications/templates/react/view-dashboard-generator.js +0 -143
  117. package/dist/libs/instance-factories/applications/templates/react/view-detail-generator.js +0 -143
  118. package/dist/libs/instance-factories/applications/templates/react/view-form-generator.js +0 -355
  119. package/dist/libs/instance-factories/applications/templates/react/view-list-generator.js +0 -91
  120. package/dist/libs/instance-factories/applications/templates/react/view-router-generator.js +0 -79
  121. package/dist/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.js.bak +0 -244
  122. package/dist/libs/instance-factories/views/index.js +0 -48
  123. package/dist/libs/instance-factories/views/templates/react/adapters/antd-adapter.js +0 -742
  124. package/dist/libs/instance-factories/views/templates/react/adapters/mui-adapter.js +0 -824
  125. package/dist/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.js +0 -719
  126. package/dist/libs/instance-factories/views/templates/react/app-generator.js +0 -45
  127. package/dist/libs/instance-factories/views/templates/react/components-generator.js +0 -820
  128. package/dist/libs/instance-factories/views/templates/react/forms-generator.js +0 -275
  129. package/dist/libs/instance-factories/views/templates/react/frontend-package-json-generator.js +0 -46
  130. package/dist/libs/instance-factories/views/templates/react/hooks-generator.js +0 -81
  131. package/dist/libs/instance-factories/views/templates/react/index-css-generator.js +0 -9
  132. package/dist/libs/instance-factories/views/templates/react/index-html-generator.js +0 -23
  133. package/dist/libs/instance-factories/views/templates/react/main-tsx-generator.js +0 -21
  134. package/dist/libs/instance-factories/views/templates/react/react-component-generator.js +0 -299
  135. package/dist/libs/instance-factories/views/templates/react/router-generator.js +0 -136
  136. package/dist/libs/instance-factories/views/templates/react/router-generic-generator.js +0 -107
  137. package/dist/libs/instance-factories/views/templates/react/shared-utils-generator.js +0 -187
  138. package/dist/libs/instance-factories/views/templates/react/spec-json-generator.js +0 -7
  139. package/dist/libs/instance-factories/views/templates/react/types-generator.js +0 -56
  140. package/dist/libs/instance-factories/views/templates/react/views-metadata-generator.js +0 -27
  141. package/dist/libs/instance-factories/views/templates/react/vite-config-generator.js +0 -29
  142. package/dist/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js +0 -261
  143. package/dist/libs/instance-factories/views/templates/shared/adapter-types.js +0 -34
  144. package/dist/libs/instance-factories/views/templates/shared/atomic-components-registry.js +0 -800
  145. package/dist/libs/instance-factories/views/templates/shared/base-generator.js +0 -305
  146. package/dist/libs/instance-factories/views/templates/shared/component-metadata.js +0 -517
  147. package/dist/libs/instance-factories/views/templates/shared/composite-pattern-types.js +0 -0
  148. package/dist/libs/instance-factories/views/templates/shared/composite-patterns.js +0 -445
  149. package/dist/libs/instance-factories/views/templates/shared/index.js +0 -80
  150. package/dist/libs/instance-factories/views/templates/shared/pattern-validator.js +0 -210
  151. package/dist/libs/instance-factories/views/templates/shared/property-mapper.js +0 -492
  152. package/dist/libs/instance-factories/views/templates/shared/syntax-mapper.js +0 -321
  153. package/dist/realize/index.js.bak +0 -758
  154. package/libs/instance-factories/applications/react-app.yaml +0 -186
  155. package/libs/instance-factories/applications/templates/react/_view-components-source.ts +0 -555
  156. package/libs/instance-factories/applications/templates/react/app-tsx-generator.ts +0 -94
  157. package/libs/instance-factories/applications/templates/react/field-helpers-generator.ts +0 -106
  158. package/libs/instance-factories/applications/templates/react/package-json-generator.ts +0 -57
  159. package/libs/instance-factories/applications/templates/react/pattern-adapter-generator.ts +0 -179
  160. package/libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx +0 -1347
  161. package/libs/instance-factories/applications/templates/react/relationship-field-generator.ts +0 -150
  162. package/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.ts +0 -704
  163. package/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.ts +0 -84
  164. package/libs/instance-factories/applications/templates/react/view-dashboard-generator.ts +0 -150
  165. package/libs/instance-factories/applications/templates/react/view-detail-generator.ts +0 -150
  166. package/libs/instance-factories/applications/templates/react/view-form-generator.ts +0 -362
  167. package/libs/instance-factories/applications/templates/react/view-list-generator.ts +0 -98
  168. package/libs/instance-factories/applications/templates/react/view-router-generator.ts +0 -89
  169. package/libs/instance-factories/views/README.md +0 -62
  170. package/libs/instance-factories/views/index.d.ts +0 -13
  171. package/libs/instance-factories/views/index.d.ts.map +0 -1
  172. package/libs/instance-factories/views/index.js +0 -18
  173. package/libs/instance-factories/views/index.js.map +0 -1
  174. package/libs/instance-factories/views/index.ts +0 -45
  175. package/libs/instance-factories/views/react-components.yaml +0 -129
  176. package/libs/instance-factories/views/templates/ARCHITECTURE.md +0 -198
  177. package/libs/instance-factories/views/templates/react/adapters/antd-adapter.ts +0 -869
  178. package/libs/instance-factories/views/templates/react/adapters/mui-adapter.ts +0 -953
  179. package/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.ts +0 -806
  180. package/libs/instance-factories/views/templates/react/app-generator.ts +0 -55
  181. package/libs/instance-factories/views/templates/react/components-generator.ts +0 -938
  182. package/libs/instance-factories/views/templates/react/forms-generator.ts +0 -325
  183. package/libs/instance-factories/views/templates/react/frontend-package-json-generator.ts +0 -57
  184. package/libs/instance-factories/views/templates/react/hooks-generator.ts +0 -106
  185. package/libs/instance-factories/views/templates/react/index-css-generator.ts +0 -14
  186. package/libs/instance-factories/views/templates/react/index-html-generator.ts +0 -34
  187. package/libs/instance-factories/views/templates/react/main-tsx-generator.ts +0 -29
  188. package/libs/instance-factories/views/templates/react/react-component-generator.d.ts +0 -152
  189. package/libs/instance-factories/views/templates/react/react-component-generator.d.ts.map +0 -1
  190. package/libs/instance-factories/views/templates/react/react-component-generator.js +0 -398
  191. package/libs/instance-factories/views/templates/react/react-component-generator.js.map +0 -1
  192. package/libs/instance-factories/views/templates/react/react-component-generator.ts +0 -533
  193. package/libs/instance-factories/views/templates/react/router-generator.ts +0 -197
  194. package/libs/instance-factories/views/templates/react/router-generic-generator.ts +0 -132
  195. package/libs/instance-factories/views/templates/react/shared-utils-generator.ts +0 -196
  196. package/libs/instance-factories/views/templates/react/spec-json-generator.ts +0 -17
  197. package/libs/instance-factories/views/templates/react/types-generator.ts +0 -76
  198. package/libs/instance-factories/views/templates/react/views-metadata-generator.ts +0 -42
  199. package/libs/instance-factories/views/templates/react/vite-config-generator.ts +0 -38
  200. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.d.ts.map +0 -1
  201. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js.map +0 -1
  202. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.ts +0 -474
  203. package/libs/instance-factories/views/templates/shared/__tests__/composite-patterns.test.ts +0 -242
  204. package/libs/instance-factories/views/templates/shared/adapter-types.d.ts +0 -77
  205. package/libs/instance-factories/views/templates/shared/adapter-types.d.ts.map +0 -1
  206. package/libs/instance-factories/views/templates/shared/adapter-types.js +0 -47
  207. package/libs/instance-factories/views/templates/shared/adapter-types.js.map +0 -1
  208. package/libs/instance-factories/views/templates/shared/adapter-types.ts +0 -142
  209. package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts +0 -63
  210. package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts.map +0 -1
  211. package/libs/instance-factories/views/templates/shared/atomic-components-registry.js +0 -822
  212. package/libs/instance-factories/views/templates/shared/atomic-components-registry.js.map +0 -1
  213. package/libs/instance-factories/views/templates/shared/atomic-components-registry.ts +0 -908
  214. package/libs/instance-factories/views/templates/shared/base-generator.d.ts +0 -247
  215. package/libs/instance-factories/views/templates/shared/base-generator.d.ts.map +0 -1
  216. package/libs/instance-factories/views/templates/shared/base-generator.js +0 -363
  217. package/libs/instance-factories/views/templates/shared/base-generator.js.map +0 -1
  218. package/libs/instance-factories/views/templates/shared/base-generator.ts +0 -608
  219. package/libs/instance-factories/views/templates/shared/component-metadata.d.ts +0 -254
  220. package/libs/instance-factories/views/templates/shared/component-metadata.d.ts.map +0 -1
  221. package/libs/instance-factories/views/templates/shared/component-metadata.js +0 -602
  222. package/libs/instance-factories/views/templates/shared/component-metadata.js.map +0 -1
  223. package/libs/instance-factories/views/templates/shared/component-metadata.ts +0 -803
  224. package/libs/instance-factories/views/templates/shared/composite-pattern-types.ts +0 -250
  225. package/libs/instance-factories/views/templates/shared/composite-patterns.ts +0 -535
  226. package/libs/instance-factories/views/templates/shared/index.ts +0 -68
  227. package/libs/instance-factories/views/templates/shared/pattern-validator.ts +0 -279
  228. package/libs/instance-factories/views/templates/shared/property-mapper.d.ts +0 -149
  229. package/libs/instance-factories/views/templates/shared/property-mapper.d.ts.map +0 -1
  230. package/libs/instance-factories/views/templates/shared/property-mapper.js +0 -580
  231. package/libs/instance-factories/views/templates/shared/property-mapper.js.map +0 -1
  232. package/libs/instance-factories/views/templates/shared/property-mapper.ts +0 -700
  233. package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts +0 -143
  234. package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts.map +0 -1
  235. package/libs/instance-factories/views/templates/shared/syntax-mapper.js +0 -420
  236. package/libs/instance-factories/views/templates/shared/syntax-mapper.js.map +0 -1
  237. package/libs/instance-factories/views/templates/shared/syntax-mapper.ts +0 -539
@@ -1,800 +0,0 @@
1
- const ATOMIC_COMPONENTS_REGISTRY = {
2
- // =========================================================================
3
- // DATA DISPLAY (9 types)
4
- // =========================================================================
5
- table: {
6
- type: "table",
7
- name: "Table",
8
- category: "data-display",
9
- description: "Tabular data display with rows, columns, sorting, and pagination",
10
- properties: ["columns", "sortable", "filterable", "pagination", "compact", "selectable", "exportable"],
11
- canHaveChildren: false,
12
- example: `
13
- taskTable:
14
- type: table
15
- model: Task
16
- columns: [title, status, priority, assignee, dueDate]
17
- features: [sorting, filtering, pagination]
18
- `
19
- },
20
- list: {
21
- type: "list",
22
- name: "List",
23
- category: "data-display",
24
- description: "Vertical list of items, often with avatars or icons",
25
- properties: ["items", "itemTemplate", "dividers", "dense", "interactive"],
26
- canHaveChildren: true,
27
- example: `
28
- userList:
29
- type: list
30
- model: User
31
- properties:
32
- dense: true
33
- dividers: true
34
- `
35
- },
36
- grid: {
37
- type: "grid",
38
- name: "Grid",
39
- category: "data-display",
40
- description: "Grid layout for cards or items",
41
- properties: ["columns", "gap", "responsive", "itemsPerRow"],
42
- canHaveChildren: true,
43
- example: `
44
- projectGrid:
45
- type: grid
46
- properties:
47
- columns: 3
48
- gap: medium
49
- responsive: true
50
- `
51
- },
52
- card: {
53
- type: "card",
54
- name: "Card",
55
- category: "data-display",
56
- description: "Container with optional header, content, and actions",
57
- properties: ["title", "subtitle", "variant", "elevation", "clickable", "hoverable", "compact", "showTrend", "metric"],
58
- canHaveChildren: true,
59
- example: `
60
- budgetCard:
61
- type: card
62
- properties:
63
- variant: metric
64
- showTrend: true
65
- metric: budget
66
- `
67
- },
68
- chart: {
69
- type: "chart",
70
- name: "Chart",
71
- category: "data-display",
72
- description: "Data visualization (line, bar, pie, etc.)",
73
- properties: ["chartType", "data", "responsive", "showLegend", "interactive", "exportable"],
74
- canHaveChildren: false,
75
- example: `
76
- trendChart:
77
- type: chart
78
- properties:
79
- chartType: trend
80
- responsive: true
81
- showLegend: true
82
- `
83
- },
84
- tree: {
85
- type: "tree",
86
- name: "Tree",
87
- category: "data-display",
88
- description: "Hierarchical tree structure",
89
- properties: ["data", "expandable", "selectable", "checkboxes", "defaultExpanded"],
90
- canHaveChildren: false,
91
- example: `
92
- categoryTree:
93
- type: tree
94
- properties:
95
- expandable: true
96
- defaultExpanded: false
97
- `
98
- },
99
- timeline: {
100
- type: "timeline",
101
- name: "Timeline",
102
- category: "data-display",
103
- description: "Chronological event timeline",
104
- properties: ["orientation", "showDateMarkers", "showDuration", "showUser"],
105
- canHaveChildren: true,
106
- example: `
107
- activityTimeline:
108
- type: timeline
109
- properties:
110
- orientation: vertical
111
- showDateMarkers: true
112
- `
113
- },
114
- avatar: {
115
- type: "avatar",
116
- name: "Avatar",
117
- category: "data-display",
118
- description: "User avatar or profile image",
119
- properties: ["src", "alt", "size", "shape", "initials", "badge"],
120
- canHaveChildren: false,
121
- example: `
122
- userAvatar:
123
- type: avatar
124
- properties:
125
- size: medium
126
- shape: circle
127
- `
128
- },
129
- image: {
130
- type: "image",
131
- name: "Image",
132
- category: "data-display",
133
- description: "Image display with optional caption",
134
- properties: ["src", "alt", "width", "height", "objectFit", "caption", "lazy"],
135
- canHaveChildren: false,
136
- example: `
137
- projectImage:
138
- type: image
139
- properties:
140
- objectFit: cover
141
- lazy: true
142
- `
143
- },
144
- // =========================================================================
145
- // FORMS & INPUTS (11 types)
146
- // =========================================================================
147
- form: {
148
- type: "form",
149
- name: "Form",
150
- category: "forms-inputs",
151
- description: "Form container with validation and submission",
152
- properties: ["onSubmit", "validation", "autoSave", "showValidation", "layout"],
153
- canHaveChildren: true,
154
- example: `
155
- taskForm:
156
- type: form
157
- properties:
158
- autoSave: false
159
- showValidation: true
160
- `
161
- },
162
- input: {
163
- type: "input",
164
- name: "Input",
165
- category: "forms-inputs",
166
- description: "Text input field",
167
- properties: ["label", "placeholder", "required", "type", "disabled", "error", "helperText", "icon", "multiline"],
168
- canHaveChildren: false,
169
- example: `
170
- titleInput:
171
- type: input
172
- properties:
173
- label: "Title"
174
- placeholder: "Enter task title"
175
- required: true
176
- `
177
- },
178
- textarea: {
179
- type: "textarea",
180
- name: "Textarea",
181
- category: "forms-inputs",
182
- description: "Multi-line text input",
183
- properties: ["label", "placeholder", "rows", "required", "maxLength", "resize"],
184
- canHaveChildren: false,
185
- example: `
186
- descriptionInput:
187
- type: textarea
188
- properties:
189
- label: "Description"
190
- rows: 4
191
- `
192
- },
193
- select: {
194
- type: "select",
195
- name: "Select",
196
- category: "forms-inputs",
197
- description: "Dropdown selection",
198
- properties: ["label", "options", "required", "multiple", "placeholder", "searchable"],
199
- canHaveChildren: false,
200
- example: `
201
- statusSelect:
202
- type: select
203
- properties:
204
- label: "Status"
205
- options: [todo, in_progress, done]
206
- required: true
207
- `
208
- },
209
- checkbox: {
210
- type: "checkbox",
211
- name: "Checkbox",
212
- category: "forms-inputs",
213
- description: "Checkbox for boolean values",
214
- properties: ["label", "checked", "disabled", "indeterminate"],
215
- canHaveChildren: false,
216
- example: `
217
- completedCheckbox:
218
- type: checkbox
219
- properties:
220
- label: "Completed"
221
- `
222
- },
223
- radio: {
224
- type: "radio",
225
- name: "Radio",
226
- category: "forms-inputs",
227
- description: "Radio button group",
228
- properties: ["label", "options", "orientation", "required"],
229
- canHaveChildren: false,
230
- example: `
231
- priorityRadio:
232
- type: radio
233
- properties:
234
- label: "Priority"
235
- options: [low, medium, high]
236
- orientation: horizontal
237
- `
238
- },
239
- slider: {
240
- type: "slider",
241
- name: "Slider",
242
- category: "forms-inputs",
243
- description: "Slider for numeric ranges",
244
- properties: ["label", "min", "max", "step", "value", "marks", "showValue"],
245
- canHaveChildren: false,
246
- example: `
247
- progressSlider:
248
- type: slider
249
- properties:
250
- label: "Progress"
251
- min: 0
252
- max: 100
253
- showValue: true
254
- `
255
- },
256
- switch: {
257
- type: "switch",
258
- name: "Switch",
259
- category: "forms-inputs",
260
- description: "Toggle switch for boolean values",
261
- properties: ["label", "checked", "disabled", "size"],
262
- canHaveChildren: false,
263
- example: `
264
- notificationsSwitch:
265
- type: switch
266
- properties:
267
- label: "Enable Notifications"
268
- `
269
- },
270
- autocomplete: {
271
- type: "autocomplete",
272
- name: "Autocomplete",
273
- category: "forms-inputs",
274
- description: "Searchable dropdown with autocomplete",
275
- properties: ["label", "options", "multiple", "searchable", "placeholder", "limit", "freeSolo"],
276
- canHaveChildren: false,
277
- example: `
278
- assigneeSelect:
279
- type: autocomplete
280
- model: User
281
- properties:
282
- label: "Assignee"
283
- searchable: true
284
- `
285
- },
286
- datepicker: {
287
- type: "datepicker",
288
- name: "DatePicker",
289
- category: "forms-inputs",
290
- description: "Date selection input",
291
- properties: ["label", "format", "minDate", "maxDate", "required", "showTime", "range"],
292
- canHaveChildren: false,
293
- example: `
294
- dueDatePicker:
295
- type: datepicker
296
- properties:
297
- label: "Due Date"
298
- format: "MM/DD/YYYY"
299
- `
300
- },
301
- timepicker: {
302
- type: "timepicker",
303
- name: "TimePicker",
304
- category: "forms-inputs",
305
- description: "Time selection input",
306
- properties: ["label", "format", "required", "step", "use24Hour"],
307
- canHaveChildren: false,
308
- example: `
309
- meetingTime:
310
- type: timepicker
311
- properties:
312
- label: "Meeting Time"
313
- use24Hour: false
314
- `
315
- },
316
- // =========================================================================
317
- // ACTIONS (5 types)
318
- // =========================================================================
319
- button: {
320
- type: "button",
321
- name: "Button",
322
- category: "actions",
323
- description: "Clickable button",
324
- properties: ["label", "variant", "size", "disabled", "loading", "icon", "onClick", "type"],
325
- canHaveChildren: false,
326
- example: `
327
- submitButton:
328
- type: button
329
- properties:
330
- label: "Submit"
331
- variant: primary
332
- type: submit
333
- `
334
- },
335
- "button-group": {
336
- type: "button-group",
337
- name: "ButtonGroup",
338
- category: "actions",
339
- description: "Group of related buttons",
340
- properties: ["orientation", "variant", "size", "buttons"],
341
- canHaveChildren: true,
342
- example: `
343
- actions:
344
- type: button-group
345
- properties:
346
- orientation: horizontal
347
- uiComponents:
348
- editButton: { type: button }
349
- deleteButton: { type: button }
350
- `
351
- },
352
- link: {
353
- type: "link",
354
- name: "Link",
355
- category: "actions",
356
- description: "Hyperlink or navigation link",
357
- properties: ["href", "label", "external", "underline", "color"],
358
- canHaveChildren: false,
359
- example: `
360
- viewDetails:
361
- type: link
362
- properties:
363
- label: "View Details"
364
- href: "/tasks/:id"
365
- `
366
- },
367
- icon: {
368
- type: "icon",
369
- name: "Icon",
370
- category: "actions",
371
- description: "Icon display",
372
- properties: ["name", "size", "color", "clickable", "tooltip"],
373
- canHaveChildren: false,
374
- example: `
375
- deleteIcon:
376
- type: icon
377
- properties:
378
- name: "trash"
379
- color: danger
380
- `
381
- },
382
- menu: {
383
- type: "menu",
384
- name: "Menu",
385
- category: "actions",
386
- description: "Dropdown menu with actions",
387
- properties: ["items", "trigger", "placement"],
388
- canHaveChildren: true,
389
- example: `
390
- contextMenu:
391
- type: menu
392
- properties:
393
- trigger: click
394
- placement: bottom-start
395
- `
396
- },
397
- // =========================================================================
398
- // OVERLAYS & FEEDBACK (9 types)
399
- // =========================================================================
400
- modal: {
401
- type: "modal",
402
- name: "Modal",
403
- category: "overlays-feedback",
404
- description: "Modal dialog overlay",
405
- properties: ["title", "size", "closeOnBackdrop", "closeButton", "footer"],
406
- canHaveChildren: true,
407
- example: `
408
- confirmDialog:
409
- type: modal
410
- properties:
411
- title: "Confirm Deletion"
412
- size: small
413
- closeOnBackdrop: false
414
- `
415
- },
416
- dialog: {
417
- type: "dialog",
418
- name: "Dialog",
419
- category: "overlays-feedback",
420
- description: "Dialog box (similar to modal, often simpler)",
421
- properties: ["title", "message", "actions", "variant"],
422
- canHaveChildren: true,
423
- example: `
424
- alertDialog:
425
- type: dialog
426
- properties:
427
- title: "Alert"
428
- variant: warning
429
- `
430
- },
431
- drawer: {
432
- type: "drawer",
433
- name: "Drawer",
434
- category: "overlays-feedback",
435
- description: "Slide-out panel from edge",
436
- properties: ["position", "width", "closeOnBackdrop", "persistent"],
437
- canHaveChildren: true,
438
- example: `
439
- filterDrawer:
440
- type: drawer
441
- properties:
442
- position: right
443
- width: 400
444
- `
445
- },
446
- popover: {
447
- type: "popover",
448
- name: "Popover",
449
- category: "overlays-feedback",
450
- description: "Floating content container",
451
- properties: ["trigger", "placement", "arrow", "offset"],
452
- canHaveChildren: true,
453
- example: `
454
- helpPopover:
455
- type: popover
456
- properties:
457
- trigger: hover
458
- placement: top
459
- `
460
- },
461
- tooltip: {
462
- type: "tooltip",
463
- name: "Tooltip",
464
- category: "overlays-feedback",
465
- description: "Brief informational tooltip",
466
- properties: ["content", "placement", "arrow", "delay"],
467
- canHaveChildren: false,
468
- example: `
469
- infoTooltip:
470
- type: tooltip
471
- properties:
472
- content: "Additional information"
473
- placement: top
474
- `
475
- },
476
- alert: {
477
- type: "alert",
478
- name: "Alert",
479
- category: "overlays-feedback",
480
- description: "Alert or notification message",
481
- properties: ["variant", "title", "message", "closable", "icon"],
482
- canHaveChildren: false,
483
- example: `
484
- successAlert:
485
- type: alert
486
- properties:
487
- variant: success
488
- message: "Task created successfully"
489
- `
490
- },
491
- snackbar: {
492
- type: "snackbar",
493
- name: "Snackbar",
494
- category: "overlays-feedback",
495
- description: "Temporary notification (toast)",
496
- properties: ["message", "duration", "position", "action", "variant"],
497
- canHaveChildren: false,
498
- example: `
499
- notification:
500
- type: snackbar
501
- properties:
502
- message: "Changes saved"
503
- duration: 3000
504
- position: bottom-right
505
- `
506
- },
507
- badge: {
508
- type: "badge",
509
- name: "Badge",
510
- category: "overlays-feedback",
511
- description: "Small status indicator or count",
512
- properties: ["content", "variant", "position", "max", "dot"],
513
- canHaveChildren: false,
514
- example: `
515
- notificationBadge:
516
- type: badge
517
- properties:
518
- content: 5
519
- variant: error
520
- `
521
- },
522
- spinner: {
523
- type: "spinner",
524
- name: "Spinner",
525
- category: "overlays-feedback",
526
- description: "Loading spinner",
527
- properties: ["size", "color", "thickness"],
528
- canHaveChildren: false,
529
- example: `
530
- loadingSpinner:
531
- type: spinner
532
- properties:
533
- size: medium
534
- `
535
- },
536
- // =========================================================================
537
- // NAVIGATION (5 types)
538
- // =========================================================================
539
- tabs: {
540
- type: "tabs",
541
- name: "Tabs",
542
- category: "navigation",
543
- description: "Tabbed navigation",
544
- properties: ["orientation", "variant", "sections", "showProgress"],
545
- canHaveChildren: true,
546
- example: `
547
- profileTabs:
548
- type: tabs
549
- properties:
550
- sections: [about, activity, settings]
551
- `
552
- },
553
- breadcrumb: {
554
- type: "breadcrumb",
555
- name: "Breadcrumb",
556
- category: "navigation",
557
- description: "Breadcrumb navigation trail",
558
- properties: ["items", "separator", "maxItems"],
559
- canHaveChildren: false,
560
- example: `
561
- pageBreadcrumb:
562
- type: breadcrumb
563
- properties:
564
- separator: "/"
565
- `
566
- },
567
- navbar: {
568
- type: "navbar",
569
- name: "Navbar",
570
- category: "navigation",
571
- description: "Top navigation bar",
572
- properties: ["brand", "items", "sticky", "transparent"],
573
- canHaveChildren: true,
574
- example: `
575
- mainNav:
576
- type: navbar
577
- properties:
578
- sticky: true
579
- `
580
- },
581
- sidebar: {
582
- type: "sidebar",
583
- name: "Sidebar",
584
- category: "navigation",
585
- description: "Side navigation menu",
586
- properties: ["items", "collapsible", "width", "position"],
587
- canHaveChildren: true,
588
- example: `
589
- appSidebar:
590
- type: sidebar
591
- properties:
592
- collapsible: true
593
- position: left
594
- `
595
- },
596
- pagination: {
597
- type: "pagination",
598
- name: "Pagination",
599
- category: "navigation",
600
- description: "Page navigation controls",
601
- properties: ["pageSize", "total", "showSizeChanger", "showTotal"],
602
- canHaveChildren: false,
603
- example: `
604
- tablePagination:
605
- type: pagination
606
- properties:
607
- pageSize: 25
608
- showSizeChanger: true
609
- `
610
- },
611
- // =========================================================================
612
- // LAYOUT (6 types)
613
- // =========================================================================
614
- accordion: {
615
- type: "accordion",
616
- name: "Accordion",
617
- category: "layout",
618
- description: "Expandable/collapsible sections",
619
- properties: ["allowMultiple", "defaultExpanded", "variant"],
620
- canHaveChildren: true,
621
- example: `
622
- faqAccordion:
623
- type: accordion
624
- properties:
625
- allowMultiple: false
626
- `
627
- },
628
- carousel: {
629
- type: "carousel",
630
- name: "Carousel",
631
- category: "layout",
632
- description: "Slideshow of items",
633
- properties: ["autoplay", "interval", "showArrows", "showDots", "infinite"],
634
- canHaveChildren: true,
635
- example: `
636
- imageCarousel:
637
- type: carousel
638
- properties:
639
- autoplay: true
640
- interval: 5000
641
- `
642
- },
643
- container: {
644
- type: "container",
645
- name: "Container",
646
- category: "layout",
647
- description: "Generic layout container",
648
- properties: ["layout", "gap", "padding", "alignment", "scrollable", "renderType", "allowDrop"],
649
- canHaveChildren: true,
650
- example: `
651
- boardContainer:
652
- type: container
653
- properties:
654
- layout: horizontal
655
- scrollable: true
656
- `
657
- },
658
- divider: {
659
- type: "divider",
660
- name: "Divider",
661
- category: "layout",
662
- description: "Visual separator",
663
- properties: ["orientation", "variant", "spacing"],
664
- canHaveChildren: false,
665
- example: `
666
- sectionDivider:
667
- type: divider
668
- properties:
669
- orientation: horizontal
670
- `
671
- },
672
- header: {
673
- type: "header",
674
- name: "Header",
675
- category: "layout",
676
- description: "Header section",
677
- properties: ["title", "subtitle", "showAvatar", "showCover", "actions"],
678
- canHaveChildren: true,
679
- example: `
680
- pageHeader:
681
- type: header
682
- properties:
683
- title: "Dashboard"
684
- `
685
- },
686
- footer: {
687
- type: "footer",
688
- name: "Footer",
689
- category: "layout",
690
- description: "Footer section",
691
- properties: ["content", "links", "copyright", "sticky"],
692
- canHaveChildren: true,
693
- example: `
694
- pageFooter:
695
- type: footer
696
- properties:
697
- copyright: "2025 Company"
698
- `
699
- },
700
- // =========================================================================
701
- // PROGRESS (2 types)
702
- // =========================================================================
703
- "progress-bar": {
704
- type: "progress-bar",
705
- name: "ProgressBar",
706
- category: "progress",
707
- description: "Linear progress indicator",
708
- properties: ["value", "max", "label", "variant", "animated"],
709
- canHaveChildren: false,
710
- example: `
711
- taskProgress:
712
- type: progress-bar
713
- properties:
714
- value: 75
715
- max: 100
716
- label: true
717
- `
718
- },
719
- "progress-circle": {
720
- type: "progress-circle",
721
- name: "ProgressCircle",
722
- category: "progress",
723
- description: "Circular progress indicator",
724
- properties: ["value", "max", "size", "thickness", "label"],
725
- canHaveChildren: false,
726
- example: `
727
- completionProgress:
728
- type: progress-circle
729
- properties:
730
- value: 75
731
- size: large
732
- `
733
- },
734
- // =========================================================================
735
- // SPECIALIZED (2 types)
736
- // =========================================================================
737
- searchBar: {
738
- type: "searchBar",
739
- name: "SearchBar",
740
- category: "specialized",
741
- description: "Search input with icon and actions",
742
- properties: ["placeholder", "onSearch", "showClear", "autofocus"],
743
- canHaveChildren: false,
744
- example: `
745
- taskSearch:
746
- type: searchBar
747
- properties:
748
- placeholder: "Search tasks..."
749
- showClear: true
750
- `
751
- },
752
- filterPanel: {
753
- type: "filterPanel",
754
- name: "FilterPanel",
755
- category: "specialized",
756
- description: "Panel with multiple filter controls",
757
- properties: ["position", "collapsible", "advanced", "showDateRange", "showCategories", "showActivityTypes"],
758
- canHaveChildren: true,
759
- example: `
760
- dataFilters:
761
- type: filterPanel
762
- properties:
763
- position: top
764
- collapsible: true
765
- advanced: true
766
- `
767
- }
768
- };
769
- function getComponentDefinition(type) {
770
- return ATOMIC_COMPONENTS_REGISTRY[type];
771
- }
772
- function getComponentsByCategory(category) {
773
- return Object.values(ATOMIC_COMPONENTS_REGISTRY).filter((comp) => comp.category === category);
774
- }
775
- function isValidComponentType(type) {
776
- return type in ATOMIC_COMPONENTS_REGISTRY;
777
- }
778
- function getAllComponentTypes() {
779
- return Object.keys(ATOMIC_COMPONENTS_REGISTRY);
780
- }
781
- const COMPONENT_CATEGORIES = {
782
- "data-display": 9,
783
- "forms-inputs": 11,
784
- "actions": 5,
785
- "overlays-feedback": 9,
786
- "navigation": 5,
787
- "layout": 6,
788
- "progress": 2,
789
- "specialized": 2
790
- };
791
- const TOTAL_COMPONENT_COUNT = 49;
792
- export {
793
- ATOMIC_COMPONENTS_REGISTRY,
794
- COMPONENT_CATEGORIES,
795
- TOTAL_COMPONENT_COUNT,
796
- getAllComponentTypes,
797
- getComponentDefinition,
798
- getComponentsByCategory,
799
- isValidComponentType
800
- };