@objectstack/spec 2.0.6 → 2.0.7

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 (291) hide show
  1. package/dist/ai/index.d.mts +1 -1
  2. package/dist/ai/index.d.ts +1 -1
  3. package/dist/ai/index.js +230 -3
  4. package/dist/ai/index.js.map +1 -1
  5. package/dist/ai/index.mjs +218 -3
  6. package/dist/ai/index.mjs.map +1 -1
  7. package/dist/api/index.d.mts +2 -2
  8. package/dist/api/index.d.ts +2 -2
  9. package/dist/api/index.js +3409 -2841
  10. package/dist/api/index.js.map +1 -1
  11. package/dist/api/index.mjs +3386 -2841
  12. package/dist/api/index.mjs.map +1 -1
  13. package/dist/automation/index.d.mts +1 -1
  14. package/dist/automation/index.d.ts +1 -1
  15. package/dist/contracts/index.d.mts +2 -2
  16. package/dist/contracts/index.d.ts +2 -2
  17. package/dist/contracts/index.js.map +1 -1
  18. package/dist/data/index.d.mts +2 -2
  19. package/dist/data/index.d.ts +2 -2
  20. package/dist/data/index.js +58 -1
  21. package/dist/data/index.js.map +1 -1
  22. package/dist/data/index.mjs +58 -1
  23. package/dist/data/index.mjs.map +1 -1
  24. package/dist/{driver.zod-E3C6n0W-.d.ts → driver.zod-B3Q0oLlF.d.ts} +1 -1
  25. package/dist/{driver.zod-DnOPgUGi.d.mts → driver.zod-Bf2z72WQ.d.mts} +1 -1
  26. package/dist/{index-DyawwLFZ.d.ts → index-B3C8s_DZ.d.ts} +307 -29
  27. package/dist/{index-DTCkpGMm.d.mts → index-BliYpI46.d.mts} +879 -52
  28. package/dist/{index-BbtSaxHm.d.ts → index-BpE_xfkc.d.ts} +3289 -229
  29. package/dist/{index-E1mP_eoE.d.mts → index-C3cFLYII.d.mts} +307 -29
  30. package/dist/{index-BpP0MwlW.d.ts → index-CXtgLAue.d.ts} +879 -52
  31. package/dist/{index-D-tf4nDV.d.mts → index-CYbdd-mL.d.mts} +27 -1
  32. package/dist/{index-B-u2mVKn.d.mts → index-CeUUI-ym.d.mts} +151 -14
  33. package/dist/{index-BPhGHW32.d.ts → index-CfvdYFyf.d.ts} +27 -1
  34. package/dist/{index-CDN6TRx9.d.mts → index-ClHj1Tbo.d.mts} +71 -2
  35. package/dist/{index-CDN6TRx9.d.ts → index-ClHj1Tbo.d.ts} +71 -2
  36. package/dist/{index-BjxWBAB_.d.ts → index-CmY8tgpL.d.ts} +151 -14
  37. package/dist/{index-DRCh2NTZ.d.mts → index-CqDMk0T6.d.mts} +3289 -229
  38. package/dist/{index-d9wYlv-g.d.ts → index-DNKiU_-x.d.mts} +684 -18
  39. package/dist/{index-d9wYlv-g.d.mts → index-DNKiU_-x.d.ts} +684 -18
  40. package/dist/{index-CisfSmuF.d.ts → index-Dm4UfDKG.d.ts} +451 -19
  41. package/dist/index-KhvhiesR.d.mts +6902 -0
  42. package/dist/{index-BV0xBoer.d.mts → index-Onf8hbkX.d.mts} +451 -19
  43. package/dist/index-OqCqQSaH.d.ts +6902 -0
  44. package/dist/index.d.mts +2519 -222
  45. package/dist/index.d.ts +2519 -222
  46. package/dist/index.js +9957 -8069
  47. package/dist/index.js.map +1 -1
  48. package/dist/index.mjs +9957 -8069
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/integration/index.d.mts +1 -1
  51. package/dist/integration/index.d.ts +1 -1
  52. package/dist/integration/index.js +67 -0
  53. package/dist/integration/index.js.map +1 -1
  54. package/dist/integration/index.mjs +61 -0
  55. package/dist/integration/index.mjs.map +1 -1
  56. package/dist/kernel/index.d.mts +2 -2
  57. package/dist/kernel/index.d.ts +2 -2
  58. package/dist/kernel/index.js +1698 -1474
  59. package/dist/kernel/index.js.map +1 -1
  60. package/dist/kernel/index.mjs +1690 -1474
  61. package/dist/kernel/index.mjs.map +1 -1
  62. package/dist/{package-registry.zod-CbS9FKeH.d.mts → package-registry.zod-BJQSiICj.d.mts} +78 -43
  63. package/dist/{package-registry.zod-CbS9FKeH.d.ts → package-registry.zod-BJQSiICj.d.ts} +78 -43
  64. package/dist/security/index.d.mts +1 -1
  65. package/dist/security/index.d.ts +1 -1
  66. package/dist/security/index.js +47 -1
  67. package/dist/security/index.js.map +1 -1
  68. package/dist/security/index.mjs +45 -1
  69. package/dist/security/index.mjs.map +1 -1
  70. package/dist/system/index.d.mts +1 -1
  71. package/dist/system/index.d.ts +1 -1
  72. package/dist/system/index.js +2189 -1821
  73. package/dist/system/index.js.map +1 -1
  74. package/dist/system/index.mjs +2168 -1821
  75. package/dist/system/index.mjs.map +1 -1
  76. package/dist/ui/index.d.mts +1 -1
  77. package/dist/ui/index.d.ts +1 -1
  78. package/dist/ui/index.js +1414 -767
  79. package/dist/ui/index.js.map +1 -1
  80. package/dist/ui/index.mjs +1354 -767
  81. package/dist/ui/index.mjs.map +1 -1
  82. package/json-schema/ai/Agent.json +203 -0
  83. package/json-schema/ai/AgentCommunicationProtocol.json +9 -0
  84. package/json-schema/ai/AgentGroupMember.json +45 -0
  85. package/json-schema/ai/AgentGroupRole.json +10 -0
  86. package/json-schema/ai/DevOpsAgent.json +203 -0
  87. package/json-schema/ai/MCPClientConfig.json +168 -0
  88. package/json-schema/ai/MCPRootEntry.json +23 -0
  89. package/json-schema/ai/MCPRootsConfig.json +49 -0
  90. package/json-schema/ai/MCPSamplingConfig.json +46 -0
  91. package/json-schema/ai/MCPServerConfig.json +120 -0
  92. package/json-schema/ai/MCPStreamingConfig.json +38 -0
  93. package/json-schema/ai/MCPToolApproval.json +39 -0
  94. package/json-schema/ai/MultiAgentGroup.json +137 -0
  95. package/json-schema/ai/StructuredOutputConfig.json +75 -0
  96. package/json-schema/ai/StructuredOutputFormat.json +12 -0
  97. package/json-schema/ai/TransformPipelineStep.json +11 -0
  98. package/json-schema/api/AppDefinitionResponse.json +285 -7
  99. package/json-schema/api/BasePresence.json +40 -0
  100. package/json-schema/api/BatchLoadingStrategy.json +40 -0
  101. package/json-schema/api/Callback.json +39 -0
  102. package/json-schema/api/DataLoaderConfig.json +55 -0
  103. package/json-schema/api/DisablePackageResponse.json +26 -0
  104. package/json-schema/api/Discovery.json +4 -62
  105. package/json-schema/api/EnablePackageResponse.json +26 -0
  106. package/json-schema/api/FederationEntity.json +110 -0
  107. package/json-schema/api/FederationEntityKey.json +20 -0
  108. package/json-schema/api/FederationExternalField.json +18 -0
  109. package/json-schema/api/FederationGateway.json +327 -0
  110. package/json-schema/api/FederationProvides.json +19 -0
  111. package/json-schema/api/FederationRequires.json +19 -0
  112. package/json-schema/api/GetDiscoveryResponse.json +1 -60
  113. package/json-schema/api/GetPackageResponse.json +26 -0
  114. package/json-schema/api/GraphQLConfig.json +327 -0
  115. package/json-schema/api/GraphQLQueryAdapter.json +84 -0
  116. package/json-schema/api/InstallPackageRequest.json +26 -0
  117. package/json-schema/api/InstallPackageResponse.json +26 -0
  118. package/json-schema/api/ListPackagesResponse.json +26 -0
  119. package/json-schema/api/ODataQueryAdapter.json +66 -0
  120. package/json-schema/api/OpenApi31Extensions.json +139 -0
  121. package/json-schema/api/OperatorMapping.json +26 -0
  122. package/json-schema/api/PresenceStatus.json +10 -0
  123. package/json-schema/api/QueryAdapterConfig.json +272 -0
  124. package/json-schema/api/QueryAdapterTarget.json +9 -0
  125. package/json-schema/api/QueryOptimizationConfig.json +126 -0
  126. package/json-schema/api/RealtimeRecordAction.json +9 -0
  127. package/json-schema/api/RestQueryAdapter.json +86 -0
  128. package/json-schema/api/RestServerConfig.json +139 -0
  129. package/json-schema/api/SubgraphConfig.json +183 -0
  130. package/json-schema/api/WebhookConfig.json +129 -0
  131. package/json-schema/api/WebhookEvent.json +64 -0
  132. package/json-schema/data/ExternalLookup.json +128 -0
  133. package/json-schema/identity/SCIMBulkOperation.json +41 -0
  134. package/json-schema/identity/SCIMBulkRequest.json +73 -0
  135. package/json-schema/identity/SCIMBulkResponse.json +61 -0
  136. package/json-schema/identity/SCIMBulkResponseOperation.json +36 -0
  137. package/json-schema/integration/CircuitBreakerConfig.json +49 -0
  138. package/json-schema/integration/Connector.json +223 -0
  139. package/json-schema/integration/ConnectorHealth.json +113 -0
  140. package/json-schema/integration/DatabaseConnector.json +223 -0
  141. package/json-schema/integration/ErrorCategory.json +15 -0
  142. package/json-schema/integration/ErrorMappingConfig.json +112 -0
  143. package/json-schema/integration/ErrorMappingRule.json +66 -0
  144. package/json-schema/integration/FileStorageConnector.json +223 -0
  145. package/json-schema/integration/GitHubConnector.json +223 -0
  146. package/json-schema/integration/HealthCheckConfig.json +58 -0
  147. package/json-schema/integration/MessageQueueConnector.json +223 -0
  148. package/json-schema/integration/SaasConnector.json +223 -0
  149. package/json-schema/integration/VercelConnector.json +223 -0
  150. package/json-schema/kernel/CLICommandContribution.json +23 -0
  151. package/json-schema/kernel/CLIExtensionExport.json +22 -0
  152. package/json-schema/kernel/DevFixtureConfig.json +35 -0
  153. package/json-schema/kernel/DevPluginConfig.json +170 -0
  154. package/json-schema/kernel/DevPluginPreset.json +10 -0
  155. package/json-schema/kernel/DevServiceOverride.json +41 -0
  156. package/json-schema/kernel/DevToolsConfig.json +45 -0
  157. package/json-schema/kernel/DisablePackageResponse.json +26 -0
  158. package/json-schema/kernel/EnablePackageResponse.json +26 -0
  159. package/json-schema/kernel/GetPackageResponse.json +26 -0
  160. package/json-schema/kernel/InstallPackageRequest.json +26 -0
  161. package/json-schema/kernel/InstallPackageResponse.json +26 -0
  162. package/json-schema/kernel/InstalledPackage.json +26 -0
  163. package/json-schema/kernel/ListPackagesResponse.json +26 -0
  164. package/json-schema/kernel/Manifest.json +26 -0
  165. package/json-schema/kernel/MetadataFallbackStrategy.json +9 -0
  166. package/json-schema/kernel/MetadataLoaderContract.json +7 -0
  167. package/json-schema/kernel/MetadataManagerConfig.json +21 -0
  168. package/json-schema/security/RLSAuditConfig.json +62 -0
  169. package/json-schema/security/RLSAuditEvent.json +66 -0
  170. package/json-schema/security/RLSConfig.json +62 -0
  171. package/json-schema/system/AuthConfig.json +83 -0
  172. package/json-schema/system/BackupConfig.json +148 -0
  173. package/json-schema/system/BackupRetention.json +27 -0
  174. package/json-schema/system/BackupStrategy.json +10 -0
  175. package/json-schema/system/CacheAvalanchePrevention.json +77 -0
  176. package/json-schema/system/CacheConsistency.json +11 -0
  177. package/json-schema/system/CacheWarmup.json +44 -0
  178. package/json-schema/system/ComplianceAuditRequirement.json +43 -0
  179. package/json-schema/system/ComplianceEncryptionRequirement.json +58 -0
  180. package/json-schema/system/DataClassificationPolicy.json +46 -0
  181. package/json-schema/system/DisasterRecoveryPlan.json +414 -0
  182. package/json-schema/system/DistributedCacheConfig.json +269 -0
  183. package/json-schema/system/FailoverConfig.json +102 -0
  184. package/json-schema/system/FailoverMode.json +11 -0
  185. package/json-schema/system/MaskingVisibilityRule.json +56 -0
  186. package/json-schema/system/MetadataFallbackStrategy.json +9 -0
  187. package/json-schema/system/MetadataLoaderContract.json +9 -1
  188. package/json-schema/system/MetadataManagerConfig.json +52 -11
  189. package/json-schema/system/MetadataRecord.json +32 -1
  190. package/json-schema/system/MetadataSource.json +10 -0
  191. package/json-schema/system/MutualTLSConfig.json +83 -0
  192. package/json-schema/system/RPO.json +27 -0
  193. package/json-schema/system/RTO.json +27 -0
  194. package/json-schema/system/SecurityContextConfig.json +288 -0
  195. package/json-schema/system/SecurityEventCorrelation.json +40 -0
  196. package/json-schema/ui/Action.json +200 -5
  197. package/json-schema/ui/ActionParam.json +62 -2
  198. package/json-schema/ui/AnimationTrigger.json +14 -0
  199. package/json-schema/ui/App.json +285 -7
  200. package/json-schema/ui/AriaProps.json +49 -0
  201. package/json-schema/ui/BreakpointColumnMap.json +38 -0
  202. package/json-schema/ui/BreakpointName.json +12 -0
  203. package/json-schema/ui/BreakpointOrderMap.json +26 -0
  204. package/json-schema/ui/ChartAnnotation.json +31 -1
  205. package/json-schema/ui/ChartAxis.json +30 -1
  206. package/json-schema/ui/ChartConfig.json +259 -7
  207. package/json-schema/ui/ChartSeries.json +30 -1
  208. package/json-schema/ui/ColumnSummary.json +18 -0
  209. package/json-schema/ui/ComponentAnimation.json +246 -0
  210. package/json-schema/ui/ConflictResolution.json +11 -0
  211. package/json-schema/ui/Dashboard.json +627 -11
  212. package/json-schema/ui/DashboardNavItem.json +30 -1
  213. package/json-schema/ui/DashboardWidget.json +433 -8
  214. package/json-schema/ui/DateFormat.json +36 -0
  215. package/json-schema/ui/DensityMode.json +9 -0
  216. package/json-schema/ui/DndConfig.json +306 -0
  217. package/json-schema/ui/DragConstraint.json +44 -0
  218. package/json-schema/ui/DragHandle.json +10 -0
  219. package/json-schema/ui/DragItem.json +160 -0
  220. package/json-schema/ui/DropEffect.json +11 -0
  221. package/json-schema/ui/DropZone.json +114 -0
  222. package/json-schema/ui/EasingFunction.json +13 -0
  223. package/json-schema/ui/EvictionPolicy.json +10 -0
  224. package/json-schema/ui/FocusManagement.json +69 -0
  225. package/json-schema/ui/FocusTrapConfig.json +32 -0
  226. package/json-schema/ui/FormField.json +90 -3
  227. package/json-schema/ui/GalleryConfig.json +46 -0
  228. package/json-schema/ui/GestureConfig.json +128 -0
  229. package/json-schema/ui/GestureType.json +14 -0
  230. package/json-schema/ui/GroupNavItem.json +30 -1
  231. package/json-schema/ui/GroupingConfig.json +45 -0
  232. package/json-schema/ui/GroupingField.json +30 -0
  233. package/json-schema/ui/I18nLabel.json +34 -0
  234. package/json-schema/ui/I18nObject.json +26 -0
  235. package/json-schema/ui/KeyboardNavigationConfig.json +194 -0
  236. package/json-schema/ui/KeyboardShortcut.json +66 -0
  237. package/json-schema/ui/ListColumn.json +55 -1
  238. package/json-schema/ui/ListView.json +435 -4
  239. package/json-schema/ui/LocaleConfig.json +108 -0
  240. package/json-schema/ui/LongPressGestureConfig.json +20 -0
  241. package/json-schema/ui/MotionConfig.json +405 -0
  242. package/json-schema/ui/NavigationItem.json +150 -5
  243. package/json-schema/ui/Notification.json +232 -0
  244. package/json-schema/ui/NotificationAction.json +60 -0
  245. package/json-schema/ui/NotificationConfig.json +52 -0
  246. package/json-schema/ui/NotificationPosition.json +13 -0
  247. package/json-schema/ui/NotificationSeverity.json +11 -0
  248. package/json-schema/ui/NotificationType.json +12 -0
  249. package/json-schema/ui/NumberFormat.json +42 -0
  250. package/json-schema/ui/ObjectNavItem.json +30 -1
  251. package/json-schema/ui/OfflineCacheConfig.json +40 -0
  252. package/json-schema/ui/OfflineConfig.json +157 -0
  253. package/json-schema/ui/OfflineStrategy.json +12 -0
  254. package/json-schema/ui/Page.json +285 -3
  255. package/json-schema/ui/PageCardProps.json +79 -1
  256. package/json-schema/ui/PageComponent.json +175 -1
  257. package/json-schema/ui/PageHeaderProps.json +108 -2
  258. package/json-schema/ui/PageNavItem.json +30 -1
  259. package/json-schema/ui/PageRegion.json +175 -1
  260. package/json-schema/ui/PageTabsProps.json +79 -1
  261. package/json-schema/ui/PageTransition.json +53 -0
  262. package/json-schema/ui/PerformanceConfig.json +57 -0
  263. package/json-schema/ui/PersistStorage.json +10 -0
  264. package/json-schema/ui/PinchGestureConfig.json +16 -0
  265. package/json-schema/ui/PluralRule.json +40 -0
  266. package/json-schema/ui/Report.json +490 -8
  267. package/json-schema/ui/ReportChart.json +199 -5
  268. package/json-schema/ui/ReportColumn.json +126 -1
  269. package/json-schema/ui/ResponsiveConfig.json +97 -0
  270. package/json-schema/ui/RowColorConfig.json +25 -0
  271. package/json-schema/ui/RowHeight.json +12 -0
  272. package/json-schema/ui/SwipeDirection.json +10 -0
  273. package/json-schema/ui/SwipeGestureConfig.json +32 -0
  274. package/json-schema/ui/SyncConfig.json +47 -0
  275. package/json-schema/ui/Theme.json +137 -0
  276. package/json-schema/ui/TimelineConfig.json +46 -0
  277. package/json-schema/ui/TouchInteraction.json +232 -0
  278. package/json-schema/ui/TouchTargetConfig.json +49 -0
  279. package/json-schema/ui/TransitionConfig.json +47 -0
  280. package/json-schema/ui/TransitionPreset.json +16 -0
  281. package/json-schema/ui/UrlNavItem.json +30 -1
  282. package/json-schema/ui/ViewSharing.json +24 -0
  283. package/json-schema/ui/WcagContrastLevel.json +8 -0
  284. package/json-schema/ui/WidgetEvent.json +60 -2
  285. package/json-schema/ui/WidgetManifest.json +284 -6
  286. package/json-schema/ui/WidgetProperty.json +60 -2
  287. package/package.json +1 -1
  288. package/dist/index-CZjkpp75.d.mts +0 -3867
  289. package/dist/index-CgkjUheS.d.ts +0 -3867
  290. package/dist/{index-B08s7rEU.d.mts → index-DmhxH5jy.d.mts} +8 -8
  291. package/dist/{index-DqnBqATx.d.ts → index-y5JJvyML.d.ts} +8 -8
package/dist/ui/index.mjs CHANGED
@@ -1,6 +1,73 @@
1
1
  // src/ui/chart.zod.ts
2
+ import { z as z2 } from "zod";
3
+
4
+ // src/ui/i18n.zod.ts
2
5
  import { z } from "zod";
3
- var ChartTypeSchema = z.enum([
6
+ var I18nObjectSchema = z.object({
7
+ /** Translation key (e.g., "views.task_list.label", "apps.crm.description") */
8
+ key: z.string().describe('Translation key (e.g., "views.task_list.label")'),
9
+ /** Default value when translation is not available */
10
+ defaultValue: z.string().optional().describe("Fallback value when translation key is not found"),
11
+ /** Interpolation parameters for dynamic translations */
12
+ params: z.record(z.string(), z.any()).optional().describe("Interpolation parameters (e.g., { count: 5 })")
13
+ });
14
+ var I18nLabelSchema = z.union([
15
+ z.string(),
16
+ I18nObjectSchema
17
+ ]).describe("Display label: plain string or i18n translation object");
18
+ var AriaPropsSchema = z.object({
19
+ /** Accessible label for screen readers */
20
+ ariaLabel: I18nLabelSchema.optional().describe("Accessible label for screen readers (WAI-ARIA aria-label)"),
21
+ /** ID of element that describes this component */
22
+ ariaDescribedBy: z.string().optional().describe("ID of element providing additional description (WAI-ARIA aria-describedby)"),
23
+ /** WAI-ARIA role override */
24
+ role: z.string().optional().describe('WAI-ARIA role attribute (e.g., "dialog", "navigation", "alert")')
25
+ }).describe("ARIA accessibility attributes");
26
+ var PluralRuleSchema = z.object({
27
+ /** Translation key for the plural form */
28
+ key: z.string().describe("Translation key"),
29
+ /** Form for zero quantity */
30
+ zero: z.string().optional().describe('Zero form (e.g., "No items")'),
31
+ /** Form for singular (1) */
32
+ one: z.string().optional().describe('Singular form (e.g., "{count} item")'),
33
+ /** Form for dual (2) — used in Arabic, Welsh, etc. */
34
+ two: z.string().optional().describe('Dual form (e.g., "{count} items" for exactly 2)'),
35
+ /** Form for few (2-4 in Slavic languages) */
36
+ few: z.string().optional().describe("Few form (e.g., for 2-4 in some languages)"),
37
+ /** Form for many (5+ in Slavic languages) */
38
+ many: z.string().optional().describe("Many form (e.g., for 5+ in some languages)"),
39
+ /** Default/fallback form */
40
+ other: z.string().describe('Default plural form (e.g., "{count} items")')
41
+ }).describe("ICU plural rules for a translation key");
42
+ var NumberFormatSchema = z.object({
43
+ style: z.enum(["decimal", "currency", "percent", "unit"]).default("decimal").describe("Number formatting style"),
44
+ currency: z.string().optional().describe('ISO 4217 currency code (e.g., "USD", "EUR")'),
45
+ unit: z.string().optional().describe('Unit for unit formatting (e.g., "kilometer", "liter")'),
46
+ minimumFractionDigits: z.number().optional().describe("Minimum number of fraction digits"),
47
+ maximumFractionDigits: z.number().optional().describe("Maximum number of fraction digits"),
48
+ useGrouping: z.boolean().optional().describe("Whether to use grouping separators (e.g., 1,000)")
49
+ }).describe("Number formatting rules");
50
+ var DateFormatSchema = z.object({
51
+ dateStyle: z.enum(["full", "long", "medium", "short"]).optional().describe("Date display style"),
52
+ timeStyle: z.enum(["full", "long", "medium", "short"]).optional().describe("Time display style"),
53
+ timeZone: z.string().optional().describe('IANA time zone (e.g., "America/New_York")'),
54
+ hour12: z.boolean().optional().describe("Use 12-hour format")
55
+ }).describe("Date/time formatting rules");
56
+ var LocaleConfigSchema = z.object({
57
+ /** BCP 47 language code (e.g., "en-US", "zh-CN", "ar-SA") */
58
+ code: z.string().describe('BCP 47 language code (e.g., "en-US", "zh-CN")'),
59
+ /** Ordered fallback chain for missing translations */
60
+ fallbackChain: z.array(z.string()).optional().describe('Fallback language codes in priority order (e.g., ["zh-TW", "en"])'),
61
+ /** Text direction */
62
+ direction: z.enum(["ltr", "rtl"]).default("ltr").describe("Text direction: left-to-right or right-to-left"),
63
+ /** Default number formatting */
64
+ numberFormat: NumberFormatSchema.optional().describe("Default number formatting rules"),
65
+ /** Default date formatting */
66
+ dateFormat: DateFormatSchema.optional().describe("Default date/time formatting rules")
67
+ }).describe("Locale configuration");
68
+
69
+ // src/ui/chart.zod.ts
70
+ var ChartTypeSchema = z2.enum([
4
71
  // Comparison
5
72
  "bar",
6
73
  "horizontal-bar",
@@ -49,260 +116,382 @@ var ChartTypeSchema = z.enum([
49
116
  "table",
50
117
  "pivot"
51
118
  ]);
52
- var ChartAxisSchema = z.object({
119
+ var ChartAxisSchema = z2.object({
53
120
  /** Data field to map to this axis */
54
- field: z.string().describe("Data field key"),
121
+ field: z2.string().describe("Data field key"),
55
122
  /** Axis title */
56
- title: z.string().optional().describe("Axis display title"),
123
+ title: I18nLabelSchema.optional().describe("Axis display title"),
57
124
  /** Value formatting (d3-format or similar) */
58
- format: z.string().optional().describe('Value format string (e.g., "$0,0.00")'),
125
+ format: z2.string().optional().describe('Value format string (e.g., "$0,0.00")'),
59
126
  /** Axis scale settings */
60
- min: z.number().optional().describe("Minimum value"),
61
- max: z.number().optional().describe("Maximum value"),
62
- stepSize: z.number().optional().describe("Step size for ticks"),
127
+ min: z2.number().optional().describe("Minimum value"),
128
+ max: z2.number().optional().describe("Maximum value"),
129
+ stepSize: z2.number().optional().describe("Step size for ticks"),
63
130
  /** Appearance */
64
- showGridLines: z.boolean().default(true),
65
- position: z.enum(["left", "right", "top", "bottom"]).optional().describe("Axis position"),
131
+ showGridLines: z2.boolean().default(true),
132
+ position: z2.enum(["left", "right", "top", "bottom"]).optional().describe("Axis position"),
66
133
  /** Logarithmic scale */
67
- logarithmic: z.boolean().default(false)
134
+ logarithmic: z2.boolean().default(false)
68
135
  });
69
- var ChartSeriesSchema = z.object({
136
+ var ChartSeriesSchema = z2.object({
70
137
  /** Field name for values */
71
- name: z.string().describe("Field name or series identifier"),
138
+ name: z2.string().describe("Field name or series identifier"),
72
139
  /** Display label */
73
- label: z.string().optional().describe("Series display label"),
140
+ label: I18nLabelSchema.optional().describe("Series display label"),
74
141
  /** Series type override (combo charts) */
75
142
  type: ChartTypeSchema.optional().describe("Override chart type for this series"),
76
143
  /** Specific color */
77
- color: z.string().optional().describe("Series color (hex/rgb/token)"),
144
+ color: z2.string().optional().describe("Series color (hex/rgb/token)"),
78
145
  /** Stacking group */
79
- stack: z.string().optional().describe("Stack identifier to group series"),
146
+ stack: z2.string().optional().describe("Stack identifier to group series"),
80
147
  /** Axis binding */
81
- yAxis: z.enum(["left", "right"]).default("left").describe("Bind to specific Y-Axis")
82
- });
83
- var ChartAnnotationSchema = z.object({
84
- type: z.enum(["line", "region"]).default("line"),
85
- axis: z.enum(["x", "y"]).default("y"),
86
- value: z.union([z.number(), z.string()]).describe("Start value"),
87
- endValue: z.union([z.number(), z.string()]).optional().describe("End value for regions"),
88
- color: z.string().optional(),
89
- label: z.string().optional(),
90
- style: z.enum(["solid", "dashed", "dotted"]).default("dashed")
91
- });
92
- var ChartInteractionSchema = z.object({
93
- tooltips: z.boolean().default(true),
94
- zoom: z.boolean().default(false),
95
- brush: z.boolean().default(false),
96
- clickAction: z.string().optional().describe("Action ID to trigger on click")
97
- });
98
- var ChartConfigSchema = z.object({
148
+ yAxis: z2.enum(["left", "right"]).default("left").describe("Bind to specific Y-Axis")
149
+ });
150
+ var ChartAnnotationSchema = z2.object({
151
+ type: z2.enum(["line", "region"]).default("line"),
152
+ axis: z2.enum(["x", "y"]).default("y"),
153
+ value: z2.union([z2.number(), z2.string()]).describe("Start value"),
154
+ endValue: z2.union([z2.number(), z2.string()]).optional().describe("End value for regions"),
155
+ color: z2.string().optional(),
156
+ label: I18nLabelSchema.optional(),
157
+ style: z2.enum(["solid", "dashed", "dotted"]).default("dashed")
158
+ });
159
+ var ChartInteractionSchema = z2.object({
160
+ tooltips: z2.boolean().default(true),
161
+ zoom: z2.boolean().default(false),
162
+ brush: z2.boolean().default(false),
163
+ clickAction: z2.string().optional().describe("Action ID to trigger on click")
164
+ });
165
+ var ChartConfigSchema = z2.object({
99
166
  /** Chart Type */
100
167
  type: ChartTypeSchema,
101
168
  /** Titles */
102
- title: z.string().optional().describe("Chart title"),
103
- subtitle: z.string().optional().describe("Chart subtitle"),
104
- description: z.string().optional().describe("Accessibility description"),
169
+ title: I18nLabelSchema.optional().describe("Chart title"),
170
+ subtitle: I18nLabelSchema.optional().describe("Chart subtitle"),
171
+ description: I18nLabelSchema.optional().describe("Accessibility description"),
105
172
  /** Axes Mapping */
106
173
  xAxis: ChartAxisSchema.optional().describe("X-Axis configuration"),
107
- yAxis: z.array(ChartAxisSchema).optional().describe("Y-Axis configuration (support dual axis)"),
174
+ yAxis: z2.array(ChartAxisSchema).optional().describe("Y-Axis configuration (support dual axis)"),
108
175
  /** Series Configuration */
109
- series: z.array(ChartSeriesSchema).optional().describe("Defined series configuration"),
176
+ series: z2.array(ChartSeriesSchema).optional().describe("Defined series configuration"),
110
177
  /** Appearance */
111
- colors: z.array(z.string()).optional().describe("Color palette"),
112
- height: z.number().optional().describe("Fixed height in pixels"),
178
+ colors: z2.array(z2.string()).optional().describe("Color palette"),
179
+ height: z2.number().optional().describe("Fixed height in pixels"),
113
180
  /** Components */
114
- showLegend: z.boolean().default(true).describe("Display legend"),
115
- showDataLabels: z.boolean().default(false).describe("Display data labels"),
181
+ showLegend: z2.boolean().default(true).describe("Display legend"),
182
+ showDataLabels: z2.boolean().default(false).describe("Display data labels"),
116
183
  /** Annotations & Reference Lines */
117
- annotations: z.array(ChartAnnotationSchema).optional(),
184
+ annotations: z2.array(ChartAnnotationSchema).optional(),
118
185
  /** Interactions */
119
- interaction: ChartInteractionSchema.optional()
186
+ interaction: ChartInteractionSchema.optional(),
187
+ /** ARIA accessibility attributes */
188
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
120
189
  });
121
190
 
122
- // src/ui/app.zod.ts
191
+ // src/ui/responsive.zod.ts
123
192
  import { z as z3 } from "zod";
193
+ var BreakpointName = z3.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
194
+ var BreakpointColumnMapSchema = z3.object({
195
+ xs: z3.number().min(1).max(12).optional(),
196
+ sm: z3.number().min(1).max(12).optional(),
197
+ md: z3.number().min(1).max(12).optional(),
198
+ lg: z3.number().min(1).max(12).optional(),
199
+ xl: z3.number().min(1).max(12).optional(),
200
+ "2xl": z3.number().min(1).max(12).optional()
201
+ }).describe("Grid columns per breakpoint (1-12)");
202
+ var BreakpointOrderMapSchema = z3.object({
203
+ xs: z3.number().optional(),
204
+ sm: z3.number().optional(),
205
+ md: z3.number().optional(),
206
+ lg: z3.number().optional(),
207
+ xl: z3.number().optional(),
208
+ "2xl": z3.number().optional()
209
+ }).describe("Display order per breakpoint");
210
+ var ResponsiveConfigSchema = z3.object({
211
+ /** Minimum breakpoint for visibility */
212
+ breakpoint: BreakpointName.optional().describe("Minimum breakpoint for visibility"),
213
+ /** Hide on specific breakpoints */
214
+ hiddenOn: z3.array(BreakpointName).optional().describe("Hide on these breakpoints"),
215
+ /** Grid columns per breakpoint (1-12 column grid) */
216
+ columns: BreakpointColumnMapSchema.optional().describe("Grid columns per breakpoint"),
217
+ /** Display order per breakpoint */
218
+ order: BreakpointOrderMapSchema.optional().describe("Display order per breakpoint")
219
+ }).describe("Responsive layout configuration");
220
+ var PerformanceConfigSchema = z3.object({
221
+ /** Enable lazy loading for this component */
222
+ lazyLoad: z3.boolean().optional().describe("Enable lazy loading (defer rendering until visible)"),
223
+ /** Virtual scrolling configuration for large datasets */
224
+ virtualScroll: z3.object({
225
+ enabled: z3.boolean().default(false).describe("Enable virtual scrolling"),
226
+ itemHeight: z3.number().optional().describe("Fixed item height in pixels (for estimation)"),
227
+ overscan: z3.number().optional().describe("Number of extra items to render outside viewport")
228
+ }).optional().describe("Virtual scrolling configuration"),
229
+ /** Client-side caching strategy */
230
+ cacheStrategy: z3.enum([
231
+ "none",
232
+ "cache-first",
233
+ "network-first",
234
+ "stale-while-revalidate"
235
+ ]).optional().describe("Client-side data caching strategy"),
236
+ /** Enable data prefetching */
237
+ prefetch: z3.boolean().optional().describe("Prefetch data before component is visible"),
238
+ /** Maximum number of items to render before pagination */
239
+ pageSize: z3.number().optional().describe("Number of items per page for pagination"),
240
+ /** Debounce interval for user interactions (ms) */
241
+ debounceMs: z3.number().optional().describe("Debounce interval for user interactions in milliseconds")
242
+ }).describe("Performance optimization configuration");
243
+
244
+ // src/ui/app.zod.ts
245
+ import { z as z5 } from "zod";
124
246
 
125
247
  // src/shared/identifiers.zod.ts
126
- import { z as z2 } from "zod";
127
- var SystemIdentifierSchema = z2.string().min(2, { message: "System identifier must be at least 2 characters" }).regex(/^[a-z][a-z0-9_.]*$/, {
248
+ import { z as z4 } from "zod";
249
+ var SystemIdentifierSchema = z4.string().min(2, { message: "System identifier must be at least 2 characters" }).regex(/^[a-z][a-z0-9_.]*$/, {
128
250
  message: 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., "user_profile" or "order.created")'
129
251
  }).describe("System identifier (lowercase with underscores or dots)");
130
- var SnakeCaseIdentifierSchema = z2.string().min(2, { message: "Identifier must be at least 2 characters" }).regex(/^[a-z][a-z0-9_]*$/, {
252
+ var SnakeCaseIdentifierSchema = z4.string().min(2, { message: "Identifier must be at least 2 characters" }).regex(/^[a-z][a-z0-9_]*$/, {
131
253
  message: 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., "user_profile")'
132
254
  }).describe("Snake case identifier (lowercase with underscores only)");
133
- var EventNameSchema = z2.string().min(3, { message: "Event name must be at least 3 characters" }).regex(/^[a-z][a-z0-9_.]*$/, {
255
+ var EventNameSchema = z4.string().min(3, { message: "Event name must be at least 3 characters" }).regex(/^[a-z][a-z0-9_.]*$/, {
134
256
  message: 'Event name must be lowercase with dots for namespacing (e.g., "user.created", "order.paid")'
135
257
  }).describe("Event name (lowercase with dot notation for namespacing)");
136
258
 
137
259
  // src/ui/app.zod.ts
138
- var BaseNavItemSchema = z3.object({
260
+ var BaseNavItemSchema = z5.object({
139
261
  /** Unique identifier for the item */
140
262
  id: SnakeCaseIdentifierSchema.describe("Unique identifier for this navigation item (lowercase snake_case)"),
141
263
  /** Display label */
142
- label: z3.string().describe("Display proper label"),
264
+ label: I18nLabelSchema.describe("Display proper label"),
143
265
  /** Icon name (Lucide) */
144
- icon: z3.string().optional().describe("Icon name"),
266
+ icon: z5.string().optional().describe("Icon name"),
145
267
  /**
146
268
  * Visibility condition.
147
269
  * Formula expression returning boolean.
148
270
  * e.g. "user.is_admin || user.department == 'sales'"
149
271
  */
150
- visible: z3.string().optional().describe("Visibility formula condition")
272
+ visible: z5.string().optional().describe("Visibility formula condition")
151
273
  });
152
274
  var ObjectNavItemSchema = BaseNavItemSchema.extend({
153
- type: z3.literal("object"),
154
- objectName: z3.string().describe("Target object name"),
155
- viewName: z3.string().optional().describe('Default list view to open. Defaults to "all"')
275
+ type: z5.literal("object"),
276
+ objectName: z5.string().describe("Target object name"),
277
+ viewName: z5.string().optional().describe('Default list view to open. Defaults to "all"')
156
278
  });
157
279
  var DashboardNavItemSchema = BaseNavItemSchema.extend({
158
- type: z3.literal("dashboard"),
159
- dashboardName: z3.string().describe("Target dashboard name")
280
+ type: z5.literal("dashboard"),
281
+ dashboardName: z5.string().describe("Target dashboard name")
160
282
  });
161
283
  var PageNavItemSchema = BaseNavItemSchema.extend({
162
- type: z3.literal("page"),
163
- pageName: z3.string().describe("Target custom page component name"),
164
- params: z3.record(z3.string(), z3.unknown()).optional().describe("Parameters passed to the page context")
284
+ type: z5.literal("page"),
285
+ pageName: z5.string().describe("Target custom page component name"),
286
+ params: z5.record(z5.string(), z5.unknown()).optional().describe("Parameters passed to the page context")
165
287
  });
166
288
  var UrlNavItemSchema = BaseNavItemSchema.extend({
167
- type: z3.literal("url"),
168
- url: z3.string().describe("Target external URL"),
169
- target: z3.enum(["_self", "_blank"]).default("_self").describe("Link target window")
289
+ type: z5.literal("url"),
290
+ url: z5.string().describe("Target external URL"),
291
+ target: z5.enum(["_self", "_blank"]).default("_self").describe("Link target window")
170
292
  });
171
293
  var GroupNavItemSchema = BaseNavItemSchema.extend({
172
- type: z3.literal("group"),
173
- expanded: z3.boolean().default(false).describe("Default expansion state in sidebar")
294
+ type: z5.literal("group"),
295
+ expanded: z5.boolean().default(false).describe("Default expansion state in sidebar")
174
296
  // children property is added in the recursive definition below
175
297
  });
176
- var NavigationItemSchema = z3.lazy(
177
- () => z3.union([
298
+ var NavigationItemSchema = z5.lazy(
299
+ () => z5.union([
178
300
  // Object Item can now have children (Airtable style: Object -> Views)
179
301
  ObjectNavItemSchema.extend({
180
- children: z3.array(NavigationItemSchema).optional().describe("Child navigation items (e.g. specific views)")
302
+ children: z5.array(NavigationItemSchema).optional().describe("Child navigation items (e.g. specific views)")
181
303
  }),
182
304
  DashboardNavItemSchema,
183
305
  PageNavItemSchema,
184
306
  UrlNavItemSchema,
185
307
  GroupNavItemSchema.extend({
186
- children: z3.array(NavigationItemSchema).describe("Child navigation items")
308
+ children: z5.array(NavigationItemSchema).describe("Child navigation items")
187
309
  })
188
310
  ])
189
311
  );
190
- var AppBrandingSchema = z3.object({
191
- primaryColor: z3.string().optional().describe("Primary theme color hex code"),
192
- logo: z3.string().optional().describe("Custom logo URL for this app"),
193
- favicon: z3.string().optional().describe("Custom favicon URL for this app")
312
+ var AppBrandingSchema = z5.object({
313
+ primaryColor: z5.string().optional().describe("Primary theme color hex code"),
314
+ logo: z5.string().optional().describe("Custom logo URL for this app"),
315
+ favicon: z5.string().optional().describe("Custom favicon URL for this app")
194
316
  });
195
- var AppSchema = z3.object({
317
+ var AppSchema = z5.object({
196
318
  /** Machine name (id) */
197
319
  name: SnakeCaseIdentifierSchema.describe("App unique machine name (lowercase snake_case)"),
198
320
  /** Display label */
199
- label: z3.string().describe("App display label"),
321
+ label: I18nLabelSchema.describe("App display label"),
200
322
  /** App version */
201
- version: z3.string().optional().describe("App version"),
323
+ version: z5.string().optional().describe("App version"),
202
324
  /** Description */
203
- description: z3.string().optional().describe("App description"),
325
+ description: I18nLabelSchema.optional().describe("App description"),
204
326
  /** Icon name (Lucide) */
205
- icon: z3.string().optional().describe("App icon used in the App Launcher"),
327
+ icon: z5.string().optional().describe("App icon used in the App Launcher"),
206
328
  /** Branding/Theming Configuration */
207
329
  branding: AppBrandingSchema.optional().describe("App-specific branding"),
208
330
  /** Application status */
209
- active: z3.boolean().optional().default(true).describe("Whether the app is enabled"),
331
+ active: z5.boolean().optional().default(true).describe("Whether the app is enabled"),
210
332
  /** Is this the default app for new users? */
211
- isDefault: z3.boolean().optional().default(false).describe("Is default app"),
333
+ isDefault: z5.boolean().optional().default(false).describe("Is default app"),
212
334
  /**
213
335
  * Navigation Tree Structure.
214
336
  * Replaces the old flat 'tabs' list with a structured menu.
215
337
  */
216
- navigation: z3.array(NavigationItemSchema).optional().describe("Structured navigation menu tree"),
338
+ navigation: z5.array(NavigationItemSchema).optional().describe("Structured navigation menu tree"),
217
339
  /**
218
340
  * App-level Home Page Override
219
341
  * ID of the navigation item to act as the landing page.
220
342
  * If not set, usually defaults to the first navigation item.
221
343
  */
222
- homePageId: z3.string().optional().describe("ID of the navigation item to serve as landing page"),
344
+ homePageId: z5.string().optional().describe("ID of the navigation item to serve as landing page"),
223
345
  /**
224
346
  * Access Control
225
347
  * List of permissions required to access this app.
226
348
  * Modern replacement for role/profile based assignment.
227
349
  * Example: ["app.access.crm"]
228
350
  */
229
- requiredPermissions: z3.array(z3.string()).optional().describe("Permissions required to access this app"),
351
+ requiredPermissions: z5.array(z5.string()).optional().describe("Permissions required to access this app"),
230
352
  /**
231
353
  * Package Components (For config file convenience)
232
354
  * In a real monorepo these might be auto-discovered, but here we allow explicit registration.
233
355
  */
234
- objects: z3.array(z3.unknown()).optional().describe("Objects belonging to this app"),
235
- apis: z3.array(z3.unknown()).optional().describe("Custom APIs belonging to this app")
356
+ objects: z5.array(z5.unknown()).optional().describe("Objects belonging to this app"),
357
+ apis: z5.array(z5.unknown()).optional().describe("Custom APIs belonging to this app"),
358
+ /** Mobile navigation mode */
359
+ mobileNavigation: z5.object({
360
+ mode: z5.enum(["drawer", "bottom_nav", "hamburger"]).default("drawer").describe("Mobile navigation mode: drawer sidebar, bottom navigation bar, or hamburger menu"),
361
+ bottomNavItems: z5.array(z5.string()).optional().describe("Navigation item IDs to show in bottom nav (max 5)")
362
+ }).optional().describe("Mobile-specific navigation configuration"),
363
+ /** ARIA accessibility attributes */
364
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes for the application")
236
365
  });
237
366
  var App = {
238
367
  create: (config) => AppSchema.parse(config)
239
368
  };
240
369
 
241
370
  // src/ui/view.zod.ts
242
- import { z as z4 } from "zod";
243
- var HttpMethodSchema = z4.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]);
244
- var HttpRequestSchema = z4.object({
245
- url: z4.string().describe("API endpoint URL"),
371
+ import { z as z6 } from "zod";
372
+ var HttpMethodSchema = z6.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]);
373
+ var HttpRequestSchema = z6.object({
374
+ url: z6.string().describe("API endpoint URL"),
246
375
  method: HttpMethodSchema.optional().default("GET").describe("HTTP method"),
247
- headers: z4.record(z4.string(), z4.string()).optional().describe("Custom HTTP headers"),
248
- params: z4.record(z4.string(), z4.unknown()).optional().describe("Query parameters"),
249
- body: z4.unknown().optional().describe("Request body for POST/PUT/PATCH")
250
- });
251
- var ViewDataSchema = z4.discriminatedUnion("provider", [
252
- z4.object({
253
- provider: z4.literal("object"),
254
- object: z4.string().describe("Target object name")
376
+ headers: z6.record(z6.string(), z6.string()).optional().describe("Custom HTTP headers"),
377
+ params: z6.record(z6.string(), z6.unknown()).optional().describe("Query parameters"),
378
+ body: z6.unknown().optional().describe("Request body for POST/PUT/PATCH")
379
+ });
380
+ var ViewDataSchema = z6.discriminatedUnion("provider", [
381
+ z6.object({
382
+ provider: z6.literal("object"),
383
+ object: z6.string().describe("Target object name")
255
384
  }),
256
- z4.object({
257
- provider: z4.literal("api"),
385
+ z6.object({
386
+ provider: z6.literal("api"),
258
387
  read: HttpRequestSchema.optional().describe("Configuration for fetching data"),
259
388
  write: HttpRequestSchema.optional().describe("Configuration for submitting data (for forms/editable tables)")
260
389
  }),
261
- z4.object({
262
- provider: z4.literal("value"),
263
- items: z4.array(z4.unknown()).describe("Static data array")
390
+ z6.object({
391
+ provider: z6.literal("value"),
392
+ items: z6.array(z6.unknown()).describe("Static data array")
264
393
  })
265
394
  ]);
266
- var ListColumnSchema = z4.object({
267
- field: z4.string().describe("Field name (snake_case)"),
268
- label: z4.string().optional().describe("Display label override"),
269
- width: z4.number().positive().optional().describe("Column width in pixels"),
270
- align: z4.enum(["left", "center", "right"]).optional().describe("Text alignment"),
271
- hidden: z4.boolean().optional().describe("Hide column by default"),
272
- sortable: z4.boolean().optional().describe("Allow sorting by this column"),
273
- resizable: z4.boolean().optional().describe("Allow resizing this column"),
274
- wrap: z4.boolean().optional().describe("Allow text wrapping"),
275
- type: z4.string().optional().describe('Renderer type override (e.g., "currency", "date")'),
395
+ var ColumnSummarySchema = z6.enum([
396
+ "none",
397
+ "count",
398
+ "count_empty",
399
+ "count_filled",
400
+ "count_unique",
401
+ "percent_empty",
402
+ "percent_filled",
403
+ "sum",
404
+ "avg",
405
+ "min",
406
+ "max"
407
+ ]).describe("Aggregation function for column footer summary");
408
+ var ListColumnSchema = z6.object({
409
+ field: z6.string().describe("Field name (snake_case)"),
410
+ label: I18nLabelSchema.optional().describe("Display label override"),
411
+ width: z6.number().positive().optional().describe("Column width in pixels"),
412
+ align: z6.enum(["left", "center", "right"]).optional().describe("Text alignment"),
413
+ hidden: z6.boolean().optional().describe("Hide column by default"),
414
+ sortable: z6.boolean().optional().describe("Allow sorting by this column"),
415
+ resizable: z6.boolean().optional().describe("Allow resizing this column"),
416
+ wrap: z6.boolean().optional().describe("Allow text wrapping"),
417
+ type: z6.string().optional().describe('Renderer type override (e.g., "currency", "date")'),
418
+ /** Pinning (Airtable-style frozen columns) */
419
+ pinned: z6.enum(["left", "right"]).optional().describe("Pin/freeze column to left or right side"),
420
+ /** Column Footer Summary (Airtable-style aggregation) */
421
+ summary: ColumnSummarySchema.optional().describe("Footer aggregation function for this column"),
276
422
  /** Interaction */
277
- link: z4.boolean().optional().describe("Functions as the primary navigation link (triggers View navigation)"),
278
- action: z4.string().optional().describe("Registered Action ID to execute when clicked")
279
- });
280
- var SelectionConfigSchema = z4.object({
281
- type: z4.enum(["none", "single", "multiple"]).default("none").describe("Selection mode")
282
- });
283
- var PaginationConfigSchema = z4.object({
284
- pageSize: z4.number().int().positive().default(25).describe("Number of records per page"),
285
- pageSizeOptions: z4.array(z4.number().int().positive()).optional().describe("Available page size options")
286
- });
287
- var KanbanConfigSchema = z4.object({
288
- groupByField: z4.string().describe("Field to group columns by (usually status/select)"),
289
- summarizeField: z4.string().optional().describe("Field to sum at top of column (e.g. amount)"),
290
- columns: z4.array(z4.string()).describe("Fields to show on cards")
291
- });
292
- var CalendarConfigSchema = z4.object({
293
- startDateField: z4.string(),
294
- endDateField: z4.string().optional(),
295
- titleField: z4.string(),
296
- colorField: z4.string().optional()
297
- });
298
- var GanttConfigSchema = z4.object({
299
- startDateField: z4.string(),
300
- endDateField: z4.string(),
301
- titleField: z4.string(),
302
- progressField: z4.string().optional(),
303
- dependenciesField: z4.string().optional()
304
- });
305
- var NavigationModeSchema = z4.enum([
423
+ link: z6.boolean().optional().describe("Functions as the primary navigation link (triggers View navigation)"),
424
+ action: z6.string().optional().describe("Registered Action ID to execute when clicked")
425
+ });
426
+ var SelectionConfigSchema = z6.object({
427
+ type: z6.enum(["none", "single", "multiple"]).default("none").describe("Selection mode")
428
+ });
429
+ var PaginationConfigSchema = z6.object({
430
+ pageSize: z6.number().int().positive().default(25).describe("Number of records per page"),
431
+ pageSizeOptions: z6.array(z6.number().int().positive()).optional().describe("Available page size options")
432
+ });
433
+ var RowHeightSchema = z6.enum([
434
+ "compact",
435
+ // Minimal padding, single line
436
+ "short",
437
+ // Reduced padding
438
+ "medium",
439
+ // Default padding
440
+ "tall",
441
+ // Extra padding, multi-line preview
442
+ "extra_tall"
443
+ // Maximum padding, rich content preview
444
+ ]).describe("Row height / density setting for list view");
445
+ var GroupingFieldSchema = z6.object({
446
+ field: z6.string().describe("Field name to group by"),
447
+ order: z6.enum(["asc", "desc"]).default("asc").describe("Group sort order"),
448
+ collapsed: z6.boolean().default(false).describe("Collapse groups by default")
449
+ });
450
+ var GroupingConfigSchema = z6.object({
451
+ fields: z6.array(GroupingFieldSchema).min(1).describe("Fields to group by (supports up to 3 levels)")
452
+ }).describe("Record grouping configuration");
453
+ var GalleryConfigSchema = z6.object({
454
+ coverField: z6.string().optional().describe("Attachment/image field to display as card cover"),
455
+ coverFit: z6.enum(["cover", "contain"]).default("cover").describe("Image fit mode for card cover"),
456
+ cardSize: z6.enum(["small", "medium", "large"]).default("medium").describe("Card size in gallery view"),
457
+ titleField: z6.string().optional().describe("Field to display as card title"),
458
+ visibleFields: z6.array(z6.string()).optional().describe("Fields to display on card body")
459
+ }).describe("Gallery/card view configuration");
460
+ var TimelineConfigSchema = z6.object({
461
+ startDateField: z6.string().describe("Field for timeline item start date"),
462
+ endDateField: z6.string().optional().describe("Field for timeline item end date"),
463
+ titleField: z6.string().describe("Field to display as timeline item title"),
464
+ groupByField: z6.string().optional().describe("Field to group timeline rows"),
465
+ colorField: z6.string().optional().describe("Field to determine item color"),
466
+ scale: z6.enum(["hour", "day", "week", "month", "quarter", "year"]).default("week").describe("Default timeline scale")
467
+ }).describe("Timeline view configuration");
468
+ var ViewSharingSchema = z6.object({
469
+ type: z6.enum(["personal", "collaborative"]).default("collaborative").describe("View ownership type"),
470
+ lockedBy: z6.string().optional().describe("User who locked the view configuration")
471
+ }).describe("View sharing and access configuration");
472
+ var RowColorConfigSchema = z6.object({
473
+ field: z6.string().describe("Field to derive color from (typically a select/status field)"),
474
+ colors: z6.record(z6.string(), z6.string()).optional().describe("Map of field value to color (hex/token)")
475
+ }).describe("Row color configuration based on field values");
476
+ var KanbanConfigSchema = z6.object({
477
+ groupByField: z6.string().describe("Field to group columns by (usually status/select)"),
478
+ summarizeField: z6.string().optional().describe("Field to sum at top of column (e.g. amount)"),
479
+ columns: z6.array(z6.string()).describe("Fields to show on cards")
480
+ });
481
+ var CalendarConfigSchema = z6.object({
482
+ startDateField: z6.string(),
483
+ endDateField: z6.string().optional(),
484
+ titleField: z6.string(),
485
+ colorField: z6.string().optional()
486
+ });
487
+ var GanttConfigSchema = z6.object({
488
+ startDateField: z6.string(),
489
+ endDateField: z6.string(),
490
+ titleField: z6.string(),
491
+ progressField: z6.string().optional(),
492
+ dependenciesField: z6.string().optional()
493
+ });
494
+ var NavigationModeSchema = z6.enum([
306
495
  "page",
307
496
  // Navigate to a new route (default)
308
497
  "drawer",
@@ -318,21 +507,21 @@ var NavigationModeSchema = z4.enum([
318
507
  "none"
319
508
  // No navigation (read-only list)
320
509
  ]);
321
- var NavigationConfigSchema = z4.object({
510
+ var NavigationConfigSchema = z6.object({
322
511
  mode: NavigationModeSchema.default("page"),
323
512
  /** Target View Config */
324
- view: z4.string().optional().describe('Name of the form view to use for details (e.g. "summary_view", "edit_form")'),
513
+ view: z6.string().optional().describe('Name of the form view to use for details (e.g. "summary_view", "edit_form")'),
325
514
  /** Interaction Triggers */
326
- preventNavigation: z4.boolean().default(false).describe("Disable standard navigation entirely"),
327
- openNewTab: z4.boolean().default(false).describe("Force open in new tab (applies to page mode)"),
515
+ preventNavigation: z6.boolean().default(false).describe("Disable standard navigation entirely"),
516
+ openNewTab: z6.boolean().default(false).describe("Force open in new tab (applies to page mode)"),
328
517
  /** Dimensions (for modal/drawer) */
329
- width: z4.union([z4.string(), z4.number()]).optional().describe('Width of the drawer/modal (e.g. "600px", "50%")')
518
+ width: z6.union([z6.string(), z6.number()]).optional().describe('Width of the drawer/modal (e.g. "600px", "50%")')
330
519
  });
331
- var ListViewSchema = z4.object({
520
+ var ListViewSchema = z6.object({
332
521
  name: SnakeCaseIdentifierSchema.optional().describe("Internal view name (lowercase snake_case)"),
333
- label: z4.string().optional(),
334
- // Display label override
335
- type: z4.enum([
522
+ label: I18nLabelSchema.optional(),
523
+ // Display label override (supports i18n)
524
+ type: z6.enum([
336
525
  "grid",
337
526
  // Standard Data Table
338
527
  "kanban",
@@ -351,28 +540,28 @@ var ListViewSchema = z4.object({
351
540
  /** Data Source Configuration */
352
541
  data: ViewDataSchema.optional().describe('Data source configuration (defaults to "object" provider)'),
353
542
  /** Shared Query Config */
354
- columns: z4.union([
355
- z4.array(z4.string()),
543
+ columns: z6.union([
544
+ z6.array(z6.string()),
356
545
  // Legacy: simple field names
357
- z4.array(ListColumnSchema)
546
+ z6.array(ListColumnSchema)
358
547
  // Enhanced: detailed column config
359
548
  ]).describe("Fields to display as columns"),
360
- filter: z4.array(z4.unknown()).optional().describe("Filter criteria (JSON Rules)"),
361
- sort: z4.union([
362
- z4.string(),
549
+ filter: z6.array(z6.unknown()).optional().describe("Filter criteria (JSON Rules)"),
550
+ sort: z6.union([
551
+ z6.string(),
363
552
  //Legacy "field desc"
364
- z4.array(z4.object({
365
- field: z4.string(),
366
- order: z4.enum(["asc", "desc"])
553
+ z6.array(z6.object({
554
+ field: z6.string(),
555
+ order: z6.enum(["asc", "desc"])
367
556
  }))
368
557
  ]).optional(),
369
558
  /** Search & Filter */
370
- searchableFields: z4.array(z4.string()).optional().describe("Fields enabled for search"),
371
- filterableFields: z4.array(z4.string()).optional().describe("Fields enabled for end-user filtering in the top bar"),
559
+ searchableFields: z6.array(z6.string()).optional().describe("Fields enabled for search"),
560
+ filterableFields: z6.array(z6.string()).optional().describe("Fields enabled for end-user filtering in the top bar"),
372
561
  /** Grid Features */
373
- resizable: z4.boolean().optional().describe("Enable column resizing"),
374
- striped: z4.boolean().optional().describe("Striped row styling"),
375
- bordered: z4.boolean().optional().describe("Show borders"),
562
+ resizable: z6.boolean().optional().describe("Enable column resizing"),
563
+ striped: z6.boolean().optional().describe("Striped row styling"),
564
+ bordered: z6.boolean().optional().describe("Show borders"),
376
565
  /** Selection */
377
566
  selection: SelectionConfigSchema.optional().describe("Row selection configuration"),
378
567
  /** Navigation / Interaction */
@@ -383,54 +572,70 @@ var ListViewSchema = z4.object({
383
572
  kanban: KanbanConfigSchema.optional(),
384
573
  calendar: CalendarConfigSchema.optional(),
385
574
  gantt: GanttConfigSchema.optional(),
575
+ gallery: GalleryConfigSchema.optional(),
576
+ timeline: TimelineConfigSchema.optional(),
577
+ /** View Metadata (Airtable-style view management) */
578
+ description: I18nLabelSchema.optional().describe("View description for documentation/tooltips"),
579
+ sharing: ViewSharingSchema.optional().describe("View sharing and access configuration"),
580
+ /** Row Height / Density (Airtable-style) */
581
+ rowHeight: RowHeightSchema.optional().describe("Row height / density setting"),
582
+ /** Record Grouping (Airtable-style) */
583
+ grouping: GroupingConfigSchema.optional().describe("Group records by one or more fields"),
584
+ /** Row Color (Airtable-style) */
585
+ rowColor: RowColorConfigSchema.optional().describe("Color rows based on field value"),
586
+ /** Field Visibility & Ordering per View (Airtable-style) */
587
+ hiddenFields: z6.array(z6.string()).optional().describe("Fields to hide in this specific view"),
588
+ fieldOrder: z6.array(z6.string()).optional().describe("Explicit field display order for this view"),
386
589
  /** Row & Bulk Actions */
387
- rowActions: z4.array(z4.string()).optional().describe("Actions available for individual row items"),
388
- bulkActions: z4.array(z4.string()).optional().describe("Actions available when multiple rows are selected"),
590
+ rowActions: z6.array(z6.string()).optional().describe("Actions available for individual row items"),
591
+ bulkActions: z6.array(z6.string()).optional().describe("Actions available when multiple rows are selected"),
389
592
  /** Performance */
390
- virtualScroll: z4.boolean().optional().describe("Enable virtual scrolling for large datasets"),
593
+ virtualScroll: z6.boolean().optional().describe("Enable virtual scrolling for large datasets"),
391
594
  /** Conditional Formatting */
392
- conditionalFormatting: z4.array(z4.object({
393
- condition: z4.string().describe("Condition expression to evaluate"),
394
- style: z4.record(z4.string(), z4.string()).describe("CSS styles to apply when condition is true")
595
+ conditionalFormatting: z6.array(z6.object({
596
+ condition: z6.string().describe("Condition expression to evaluate"),
597
+ style: z6.record(z6.string(), z6.string()).describe("CSS styles to apply when condition is true")
395
598
  })).optional().describe("Conditional formatting rules for list rows"),
396
599
  /** Inline Edit */
397
- inlineEdit: z4.boolean().optional().describe("Allow inline editing of records directly in the list view"),
600
+ inlineEdit: z6.boolean().optional().describe("Allow inline editing of records directly in the list view"),
398
601
  /** Export */
399
- exportOptions: z4.array(z4.enum(["csv", "xlsx", "pdf", "json"])).optional().describe("Available export format options"),
602
+ exportOptions: z6.array(z6.enum(["csv", "xlsx", "pdf", "json"])).optional().describe("Available export format options"),
400
603
  /** Empty State */
401
- emptyState: z4.object({
402
- title: z4.string().optional(),
403
- message: z4.string().optional(),
404
- icon: z4.string().optional()
405
- }).optional().describe("Empty state configuration when no records found")
406
- });
407
- var FormFieldSchema = z4.object({
408
- field: z4.string().describe("Field name (snake_case)"),
409
- label: z4.string().optional().describe("Display label override"),
410
- placeholder: z4.string().optional().describe("Placeholder text"),
411
- helpText: z4.string().optional().describe("Help/hint text"),
412
- readonly: z4.boolean().optional().describe("Read-only override"),
413
- required: z4.boolean().optional().describe("Required override"),
414
- hidden: z4.boolean().optional().describe("Hidden override"),
415
- colSpan: z4.number().int().min(1).max(4).optional().describe("Column span in grid layout (1-4)"),
416
- widget: z4.string().optional().describe("Custom widget/component name"),
417
- dependsOn: z4.string().optional().describe("Parent field name for cascading"),
418
- visibleOn: z4.string().optional().describe("Visibility condition expression")
419
- });
420
- var FormSectionSchema = z4.object({
421
- label: z4.string().optional(),
422
- collapsible: z4.boolean().default(false),
423
- collapsed: z4.boolean().default(false),
424
- columns: z4.enum(["1", "2", "3", "4"]).default("2").transform((val) => parseInt(val)),
425
- fields: z4.array(z4.union([
426
- z4.string(),
604
+ emptyState: z6.object({
605
+ title: I18nLabelSchema.optional(),
606
+ message: I18nLabelSchema.optional(),
607
+ icon: z6.string().optional()
608
+ }).optional().describe("Empty state configuration when no records found"),
609
+ /** ARIA accessibility attributes */
610
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes for the list view")
611
+ });
612
+ var FormFieldSchema = z6.object({
613
+ field: z6.string().describe("Field name (snake_case)"),
614
+ label: I18nLabelSchema.optional().describe("Display label override"),
615
+ placeholder: I18nLabelSchema.optional().describe("Placeholder text"),
616
+ helpText: I18nLabelSchema.optional().describe("Help/hint text"),
617
+ readonly: z6.boolean().optional().describe("Read-only override"),
618
+ required: z6.boolean().optional().describe("Required override"),
619
+ hidden: z6.boolean().optional().describe("Hidden override"),
620
+ colSpan: z6.number().int().min(1).max(4).optional().describe("Column span in grid layout (1-4)"),
621
+ widget: z6.string().optional().describe("Custom widget/component name"),
622
+ dependsOn: z6.string().optional().describe("Parent field name for cascading"),
623
+ visibleOn: z6.string().optional().describe("Visibility condition expression")
624
+ });
625
+ var FormSectionSchema = z6.object({
626
+ label: I18nLabelSchema.optional(),
627
+ collapsible: z6.boolean().default(false),
628
+ collapsed: z6.boolean().default(false),
629
+ columns: z6.enum(["1", "2", "3", "4"]).default("2").transform((val) => parseInt(val)),
630
+ fields: z6.array(z6.union([
631
+ z6.string(),
427
632
  // Legacy: simple field name
428
633
  FormFieldSchema
429
634
  // Enhanced: detailed field config
430
635
  ]))
431
636
  });
432
- var FormViewSchema = z4.object({
433
- type: z4.enum([
637
+ var FormViewSchema = z6.object({
638
+ type: z6.enum([
434
639
  "simple",
435
640
  // Single column or sections
436
641
  "tabbed",
@@ -446,125 +651,127 @@ var FormViewSchema = z4.object({
446
651
  ]).default("simple"),
447
652
  /** Data Source Configuration */
448
653
  data: ViewDataSchema.optional().describe('Data source configuration (defaults to "object" provider)'),
449
- sections: z4.array(FormSectionSchema).optional(),
654
+ sections: z6.array(FormSectionSchema).optional(),
450
655
  // For simple layout
451
- groups: z4.array(FormSectionSchema).optional()
656
+ groups: z6.array(FormSectionSchema).optional(),
452
657
  // Legacy support -> alias to sections
658
+ /** ARIA accessibility attributes */
659
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes for the form view")
453
660
  });
454
- var ViewSchema = z4.object({
661
+ var ViewSchema = z6.object({
455
662
  list: ListViewSchema.optional(),
456
663
  // Default list view
457
664
  form: FormViewSchema.optional(),
458
665
  // Default form view
459
- listViews: z4.record(z4.string(), ListViewSchema).optional().describe("Additional named list views"),
460
- formViews: z4.record(z4.string(), FormViewSchema).optional().describe("Additional named form views")
666
+ listViews: z6.record(z6.string(), ListViewSchema).optional().describe("Additional named list views"),
667
+ formViews: z6.record(z6.string(), FormViewSchema).optional().describe("Additional named form views")
461
668
  });
462
669
 
463
670
  // src/ui/dashboard.zod.ts
464
- import { z as z6 } from "zod";
671
+ import { z as z8 } from "zod";
465
672
 
466
673
  // src/data/filter.zod.ts
467
- import { z as z5 } from "zod";
468
- var FieldReferenceSchema = z5.object({
469
- $field: z5.string().describe("Field Reference/Column Name")
674
+ import { z as z7 } from "zod";
675
+ var FieldReferenceSchema = z7.object({
676
+ $field: z7.string().describe("Field Reference/Column Name")
470
677
  });
471
- var EqualityOperatorSchema = z5.object({
678
+ var EqualityOperatorSchema = z7.object({
472
679
  /** Equal to (default) - SQL: = | MongoDB: $eq */
473
- $eq: z5.any().optional(),
680
+ $eq: z7.any().optional(),
474
681
  /** Not equal to - SQL: <> or != | MongoDB: $ne */
475
- $ne: z5.any().optional()
682
+ $ne: z7.any().optional()
476
683
  });
477
- var ComparisonOperatorSchema = z5.object({
684
+ var ComparisonOperatorSchema = z7.object({
478
685
  /** Greater than - SQL: > | MongoDB: $gt */
479
- $gt: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
686
+ $gt: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
480
687
  /** Greater than or equal to - SQL: >= | MongoDB: $gte */
481
- $gte: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
688
+ $gte: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
482
689
  /** Less than - SQL: < | MongoDB: $lt */
483
- $lt: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
690
+ $lt: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
484
691
  /** Less than or equal to - SQL: <= | MongoDB: $lte */
485
- $lte: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional()
692
+ $lte: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional()
486
693
  });
487
- var SetOperatorSchema = z5.object({
694
+ var SetOperatorSchema = z7.object({
488
695
  /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */
489
- $in: z5.array(z5.any()).optional(),
696
+ $in: z7.array(z7.any()).optional(),
490
697
  /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */
491
- $nin: z5.array(z5.any()).optional()
698
+ $nin: z7.array(z7.any()).optional()
492
699
  });
493
- var RangeOperatorSchema = z5.object({
700
+ var RangeOperatorSchema = z7.object({
494
701
  /** Between (inclusive) - takes [min, max] array */
495
- $between: z5.tuple([
496
- z5.union([z5.number(), z5.date(), FieldReferenceSchema]),
497
- z5.union([z5.number(), z5.date(), FieldReferenceSchema])
702
+ $between: z7.tuple([
703
+ z7.union([z7.number(), z7.date(), FieldReferenceSchema]),
704
+ z7.union([z7.number(), z7.date(), FieldReferenceSchema])
498
705
  ]).optional()
499
706
  });
500
- var StringOperatorSchema = z5.object({
707
+ var StringOperatorSchema = z7.object({
501
708
  /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */
502
- $contains: z5.string().optional(),
709
+ $contains: z7.string().optional(),
503
710
  /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */
504
- $startsWith: z5.string().optional(),
711
+ $startsWith: z7.string().optional(),
505
712
  /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */
506
- $endsWith: z5.string().optional()
713
+ $endsWith: z7.string().optional()
507
714
  });
508
- var SpecialOperatorSchema = z5.object({
715
+ var SpecialOperatorSchema = z7.object({
509
716
  /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */
510
- $null: z5.boolean().optional(),
717
+ $null: z7.boolean().optional(),
511
718
  /** Field exists check (primarily for NoSQL) - MongoDB: $exists */
512
- $exists: z5.boolean().optional()
719
+ $exists: z7.boolean().optional()
513
720
  });
514
- var FieldOperatorsSchema = z5.object({
721
+ var FieldOperatorsSchema = z7.object({
515
722
  // Equality
516
- $eq: z5.any().optional(),
517
- $ne: z5.any().optional(),
723
+ $eq: z7.any().optional(),
724
+ $ne: z7.any().optional(),
518
725
  // Comparison (numeric/date)
519
- $gt: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
520
- $gte: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
521
- $lt: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
522
- $lte: z5.union([z5.number(), z5.date(), FieldReferenceSchema]).optional(),
726
+ $gt: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
727
+ $gte: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
728
+ $lt: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
729
+ $lte: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
523
730
  // Set & Range
524
- $in: z5.array(z5.any()).optional(),
525
- $nin: z5.array(z5.any()).optional(),
526
- $between: z5.tuple([
527
- z5.union([z5.number(), z5.date(), FieldReferenceSchema]),
528
- z5.union([z5.number(), z5.date(), FieldReferenceSchema])
731
+ $in: z7.array(z7.any()).optional(),
732
+ $nin: z7.array(z7.any()).optional(),
733
+ $between: z7.tuple([
734
+ z7.union([z7.number(), z7.date(), FieldReferenceSchema]),
735
+ z7.union([z7.number(), z7.date(), FieldReferenceSchema])
529
736
  ]).optional(),
530
737
  // String-specific
531
- $contains: z5.string().optional(),
532
- $startsWith: z5.string().optional(),
533
- $endsWith: z5.string().optional(),
738
+ $contains: z7.string().optional(),
739
+ $startsWith: z7.string().optional(),
740
+ $endsWith: z7.string().optional(),
534
741
  // Special
535
- $null: z5.boolean().optional(),
536
- $exists: z5.boolean().optional()
537
- });
538
- var FilterConditionSchema = z5.lazy(
539
- () => z5.record(z5.string(), z5.unknown()).and(
540
- z5.object({
541
- $and: z5.array(FilterConditionSchema).optional(),
542
- $or: z5.array(FilterConditionSchema).optional(),
742
+ $null: z7.boolean().optional(),
743
+ $exists: z7.boolean().optional()
744
+ });
745
+ var FilterConditionSchema = z7.lazy(
746
+ () => z7.record(z7.string(), z7.unknown()).and(
747
+ z7.object({
748
+ $and: z7.array(FilterConditionSchema).optional(),
749
+ $or: z7.array(FilterConditionSchema).optional(),
543
750
  $not: FilterConditionSchema.optional()
544
751
  })
545
752
  )
546
753
  );
547
- var QueryFilterSchema = z5.object({
754
+ var QueryFilterSchema = z7.object({
548
755
  where: FilterConditionSchema.optional()
549
756
  });
550
- var NormalizedFilterSchema = z5.lazy(
551
- () => z5.object({
552
- $and: z5.array(
553
- z5.union([
757
+ var NormalizedFilterSchema = z7.lazy(
758
+ () => z7.object({
759
+ $and: z7.array(
760
+ z7.union([
554
761
  // Field condition: { field: { $op: value } }
555
- z5.record(z5.string(), FieldOperatorsSchema),
762
+ z7.record(z7.string(), FieldOperatorsSchema),
556
763
  // Nested logical group
557
764
  NormalizedFilterSchema
558
765
  ])
559
766
  ).optional(),
560
- $or: z5.array(
561
- z5.union([
562
- z5.record(z5.string(), FieldOperatorsSchema),
767
+ $or: z7.array(
768
+ z7.union([
769
+ z7.record(z7.string(), FieldOperatorsSchema),
563
770
  NormalizedFilterSchema
564
771
  ])
565
772
  ).optional(),
566
- $not: z5.union([
567
- z5.record(z5.string(), FieldOperatorsSchema),
773
+ $not: z7.union([
774
+ z7.record(z7.string(), FieldOperatorsSchema),
568
775
  NormalizedFilterSchema
569
776
  ]).optional()
570
777
  })
@@ -594,23 +801,23 @@ var LOGICAL_OPERATORS = ["$and", "$or", "$not"];
594
801
  var ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS];
595
802
 
596
803
  // src/ui/dashboard.zod.ts
597
- var DashboardWidgetSchema = z6.object({
804
+ var DashboardWidgetSchema = z8.object({
598
805
  /** Widget Title */
599
- title: z6.string().optional().describe("Widget title"),
806
+ title: I18nLabelSchema.optional().describe("Widget title"),
600
807
  /** Visualization Type */
601
808
  type: ChartTypeSchema.default("metric").describe("Visualization type"),
602
809
  /** Chart Configuration */
603
810
  chartConfig: ChartConfigSchema.optional().describe("Chart visualization configuration"),
604
811
  /** Data Source Object */
605
- object: z6.string().optional().describe("Data source object name"),
812
+ object: z8.string().optional().describe("Data source object name"),
606
813
  /** Data Filter (MongoDB-style FilterCondition) */
607
814
  filter: FilterConditionSchema.optional().describe("Data filter criteria"),
608
815
  /** Category Field (X-Axis / Group By) */
609
- categoryField: z6.string().optional().describe("Field for grouping (X-Axis)"),
816
+ categoryField: z8.string().optional().describe("Field for grouping (X-Axis)"),
610
817
  /** Value Field (Y-Axis) */
611
- valueField: z6.string().optional().describe("Field for values (Y-Axis)"),
818
+ valueField: z8.string().optional().describe("Field for values (Y-Axis)"),
612
819
  /** Aggregate operation */
613
- aggregate: z6.enum(["count", "sum", "avg", "min", "max"]).optional().default("count").describe("Aggregate function"),
820
+ aggregate: z8.enum(["count", "sum", "avg", "min", "max"]).optional().default("count").describe("Aggregate function"),
614
821
  /**
615
822
  * Layout Position (React-Grid-Layout style)
616
823
  * x: column (0-11)
@@ -618,40 +825,48 @@ var DashboardWidgetSchema = z6.object({
618
825
  * w: width (1-12)
619
826
  * h: height
620
827
  */
621
- layout: z6.object({
622
- x: z6.number(),
623
- y: z6.number(),
624
- w: z6.number(),
625
- h: z6.number()
828
+ layout: z8.object({
829
+ x: z8.number(),
830
+ y: z8.number(),
831
+ w: z8.number(),
832
+ h: z8.number()
626
833
  }).describe("Grid layout position"),
627
834
  /** Widget specific options (colors, legend, etc.) */
628
- options: z6.unknown().optional().describe("Widget specific configuration")
835
+ options: z8.unknown().optional().describe("Widget specific configuration"),
836
+ /** Responsive layout overrides per breakpoint */
837
+ responsive: ResponsiveConfigSchema.optional().describe("Responsive layout configuration"),
838
+ /** ARIA accessibility attributes */
839
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
629
840
  });
630
- var DashboardSchema = z6.object({
841
+ var DashboardSchema = z8.object({
631
842
  /** Machine name */
632
843
  name: SnakeCaseIdentifierSchema.describe("Dashboard unique name"),
633
844
  /** Display label */
634
- label: z6.string().describe("Dashboard label"),
845
+ label: I18nLabelSchema.describe("Dashboard label"),
635
846
  /** Description */
636
- description: z6.string().optional().describe("Dashboard description"),
847
+ description: I18nLabelSchema.optional().describe("Dashboard description"),
637
848
  /** Collection of widgets */
638
- widgets: z6.array(DashboardWidgetSchema).describe("Widgets to display"),
849
+ widgets: z8.array(DashboardWidgetSchema).describe("Widgets to display"),
639
850
  /** Auto-refresh */
640
- refreshInterval: z6.number().optional().describe("Auto-refresh interval in seconds"),
851
+ refreshInterval: z8.number().optional().describe("Auto-refresh interval in seconds"),
641
852
  /** Global Filters */
642
- globalFilters: z6.array(z6.object({
643
- field: z6.string().describe("Field name to filter on"),
644
- label: z6.string().optional().describe("Display label for the filter"),
645
- type: z6.enum(["text", "select", "date", "number"]).optional().describe("Filter input type")
646
- })).optional().describe("Global filters that apply to all widgets in the dashboard")
853
+ globalFilters: z8.array(z8.object({
854
+ field: z8.string().describe("Field name to filter on"),
855
+ label: I18nLabelSchema.optional().describe("Display label for the filter"),
856
+ type: z8.enum(["text", "select", "date", "number"]).optional().describe("Filter input type")
857
+ })).optional().describe("Global filters that apply to all widgets in the dashboard"),
858
+ /** ARIA accessibility attributes */
859
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes"),
860
+ /** Performance optimization settings */
861
+ performance: PerformanceConfigSchema.optional().describe("Performance optimization settings")
647
862
  });
648
863
  var Dashboard = {
649
864
  create: (config) => DashboardSchema.parse(config)
650
865
  };
651
866
 
652
867
  // src/ui/report.zod.ts
653
- import { z as z7 } from "zod";
654
- var ReportType = z7.enum([
868
+ import { z as z9 } from "zod";
869
+ var ReportType = z9.enum([
655
870
  "tabular",
656
871
  // Simple list
657
872
  "summary",
@@ -661,91 +876,97 @@ var ReportType = z7.enum([
661
876
  "joined"
662
877
  // Joined multiple blocks
663
878
  ]);
664
- var ReportColumnSchema = z7.object({
665
- field: z7.string().describe("Field name"),
666
- label: z7.string().optional().describe("Override label"),
667
- aggregate: z7.enum(["sum", "avg", "max", "min", "count", "unique"]).optional().describe("Aggregation function")
668
- });
669
- var ReportGroupingSchema = z7.object({
670
- field: z7.string().describe("Field to group by"),
671
- sortOrder: z7.enum(["asc", "desc"]).default("asc"),
672
- dateGranularity: z7.enum(["day", "week", "month", "quarter", "year"]).optional().describe("For date fields")
879
+ var ReportColumnSchema = z9.object({
880
+ field: z9.string().describe("Field name"),
881
+ label: I18nLabelSchema.optional().describe("Override label"),
882
+ aggregate: z9.enum(["sum", "avg", "max", "min", "count", "unique"]).optional().describe("Aggregation function"),
883
+ /** Responsive visibility/priority per breakpoint */
884
+ responsive: ResponsiveConfigSchema.optional().describe("Responsive visibility for this column")
885
+ });
886
+ var ReportGroupingSchema = z9.object({
887
+ field: z9.string().describe("Field to group by"),
888
+ sortOrder: z9.enum(["asc", "desc"]).default("asc"),
889
+ dateGranularity: z9.enum(["day", "week", "month", "quarter", "year"]).optional().describe("For date fields")
673
890
  });
674
891
  var ReportChartSchema = ChartConfigSchema.extend({
675
892
  /** Report-specific chart configuration */
676
- xAxis: z7.string().describe("Grouping field for X-Axis"),
677
- yAxis: z7.string().describe("Summary field for Y-Axis"),
678
- groupBy: z7.string().optional().describe("Additional grouping field")
893
+ xAxis: z9.string().describe("Grouping field for X-Axis"),
894
+ yAxis: z9.string().describe("Summary field for Y-Axis"),
895
+ groupBy: z9.string().optional().describe("Additional grouping field")
679
896
  });
680
- var ReportSchema = z7.object({
897
+ var ReportSchema = z9.object({
681
898
  /** Identity */
682
899
  name: SnakeCaseIdentifierSchema.describe("Report unique name"),
683
- label: z7.string().describe("Report label"),
684
- description: z7.string().optional(),
900
+ label: I18nLabelSchema.describe("Report label"),
901
+ description: I18nLabelSchema.optional(),
685
902
  /** Data Source */
686
- objectName: z7.string().describe("Primary object"),
903
+ objectName: z9.string().describe("Primary object"),
687
904
  /** Report Configuration */
688
905
  type: ReportType.default("tabular").describe("Report format type"),
689
- columns: z7.array(ReportColumnSchema).describe("Columns to display"),
906
+ columns: z9.array(ReportColumnSchema).describe("Columns to display"),
690
907
  /** Grouping (for Summary/Matrix) */
691
- groupingsDown: z7.array(ReportGroupingSchema).optional().describe("Row groupings"),
692
- groupingsAcross: z7.array(ReportGroupingSchema).optional().describe("Column groupings (Matrix only)"),
908
+ groupingsDown: z9.array(ReportGroupingSchema).optional().describe("Row groupings"),
909
+ groupingsAcross: z9.array(ReportGroupingSchema).optional().describe("Column groupings (Matrix only)"),
693
910
  /** Filtering (MongoDB-style FilterCondition) */
694
911
  filter: FilterConditionSchema.optional().describe("Filter criteria"),
695
912
  /** Visualization */
696
- chart: ReportChartSchema.optional().describe("Embedded chart configuration")
913
+ chart: ReportChartSchema.optional().describe("Embedded chart configuration"),
914
+ /** ARIA accessibility attributes */
915
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes"),
916
+ /** Performance optimization settings */
917
+ performance: PerformanceConfigSchema.optional().describe("Performance optimization settings")
697
918
  });
698
919
  var Report = {
699
920
  create: (config) => ReportSchema.parse(config)
700
921
  };
701
922
 
702
923
  // src/ui/action.zod.ts
703
- import { z as z11 } from "zod";
924
+ import { z as z13 } from "zod";
704
925
 
705
926
  // src/data/field.zod.ts
706
- import { z as z10 } from "zod";
927
+ import { z as z12 } from "zod";
707
928
 
708
929
  // src/system/encryption.zod.ts
709
- import { z as z8 } from "zod";
710
- var EncryptionAlgorithmSchema = z8.enum([
930
+ import { z as z10 } from "zod";
931
+ var EncryptionAlgorithmSchema = z10.enum([
711
932
  "aes-256-gcm",
712
933
  "aes-256-cbc",
713
934
  "chacha20-poly1305"
714
935
  ]).describe("Supported encryption algorithm");
715
- var KeyManagementProviderSchema = z8.enum([
936
+ var KeyManagementProviderSchema = z10.enum([
716
937
  "local",
717
938
  "aws-kms",
718
939
  "azure-key-vault",
719
940
  "gcp-kms",
720
941
  "hashicorp-vault"
721
942
  ]).describe("Key management service provider");
722
- var KeyRotationPolicySchema = z8.object({
723
- enabled: z8.boolean().default(false).describe("Enable automatic key rotation"),
724
- frequencyDays: z8.number().min(1).default(90).describe("Rotation frequency in days"),
725
- retainOldVersions: z8.number().default(3).describe("Number of old key versions to retain"),
726
- autoRotate: z8.boolean().default(true).describe("Automatically rotate without manual approval")
943
+ var KeyRotationPolicySchema = z10.object({
944
+ enabled: z10.boolean().default(false).describe("Enable automatic key rotation"),
945
+ frequencyDays: z10.number().min(1).default(90).describe("Rotation frequency in days"),
946
+ retainOldVersions: z10.number().default(3).describe("Number of old key versions to retain"),
947
+ autoRotate: z10.boolean().default(true).describe("Automatically rotate without manual approval")
727
948
  }).describe("Policy for automatic encryption key rotation");
728
- var EncryptionConfigSchema = z8.object({
729
- enabled: z8.boolean().default(false).describe("Enable field-level encryption"),
949
+ var EncryptionConfigSchema = z10.object({
950
+ enabled: z10.boolean().default(false).describe("Enable field-level encryption"),
730
951
  algorithm: EncryptionAlgorithmSchema.default("aes-256-gcm").describe("Encryption algorithm"),
731
- keyManagement: z8.object({
952
+ keyManagement: z10.object({
732
953
  provider: KeyManagementProviderSchema.describe("Key management service provider"),
733
- keyId: z8.string().optional().describe("Key identifier in the provider"),
954
+ keyId: z10.string().optional().describe("Key identifier in the provider"),
734
955
  rotationPolicy: KeyRotationPolicySchema.optional().describe("Key rotation policy")
735
956
  }).describe("Key management configuration"),
736
- scope: z8.enum(["field", "record", "table", "database"]).describe("Encryption scope level"),
737
- deterministicEncryption: z8.boolean().default(false).describe("Allows equality queries on encrypted data"),
738
- searchableEncryption: z8.boolean().default(false).describe("Allows search on encrypted data")
957
+ scope: z10.enum(["field", "record", "table", "database"]).describe("Encryption scope level"),
958
+ deterministicEncryption: z10.boolean().default(false).describe("Allows equality queries on encrypted data"),
959
+ searchableEncryption: z10.boolean().default(false).describe("Allows search on encrypted data")
739
960
  }).describe("Field-level encryption configuration");
740
- var FieldEncryptionSchema = z8.object({
741
- fieldName: z8.string().describe("Name of the field to encrypt"),
961
+ var FieldEncryptionSchema = z10.object({
962
+ fieldName: z10.string().describe("Name of the field to encrypt"),
742
963
  encryptionConfig: EncryptionConfigSchema.describe("Encryption settings for this field"),
743
- indexable: z8.boolean().default(false).describe("Allow indexing on encrypted field")
964
+ indexable: z10.boolean().default(false).describe("Allow indexing on encrypted field")
744
965
  }).describe("Per-field encryption assignment");
745
966
 
746
967
  // src/system/masking.zod.ts
747
- import { z as z9 } from "zod";
748
- var MaskingStrategySchema = z9.enum([
968
+ import { z as z11 } from "zod";
969
+ var MaskingStrategySchema = z11.enum([
749
970
  "redact",
750
971
  // Complete redaction: ****
751
972
  "partial",
@@ -761,23 +982,23 @@ var MaskingStrategySchema = z9.enum([
761
982
  "substitute"
762
983
  // Substitute with dummy data
763
984
  ]).describe("Data masking strategy for PII protection");
764
- var MaskingRuleSchema = z9.object({
765
- field: z9.string().describe("Field name to apply masking to"),
985
+ var MaskingRuleSchema = z11.object({
986
+ field: z11.string().describe("Field name to apply masking to"),
766
987
  strategy: MaskingStrategySchema.describe("Masking strategy to use"),
767
- pattern: z9.string().optional().describe("Regex pattern for partial masking"),
768
- preserveFormat: z9.boolean().default(true).describe("Keep the original data format after masking"),
769
- preserveLength: z9.boolean().default(true).describe("Keep the original data length after masking"),
770
- roles: z9.array(z9.string()).optional().describe("Roles that see masked data"),
771
- exemptRoles: z9.array(z9.string()).optional().describe("Roles that see unmasked data")
988
+ pattern: z11.string().optional().describe("Regex pattern for partial masking"),
989
+ preserveFormat: z11.boolean().default(true).describe("Keep the original data format after masking"),
990
+ preserveLength: z11.boolean().default(true).describe("Keep the original data length after masking"),
991
+ roles: z11.array(z11.string()).optional().describe("Roles that see masked data"),
992
+ exemptRoles: z11.array(z11.string()).optional().describe("Roles that see unmasked data")
772
993
  }).describe("Masking rule for a single field");
773
- var MaskingConfigSchema = z9.object({
774
- enabled: z9.boolean().default(false).describe("Enable data masking"),
775
- rules: z9.array(MaskingRuleSchema).describe("List of field-level masking rules"),
776
- auditUnmasking: z9.boolean().default(true).describe("Log when masked data is accessed unmasked")
994
+ var MaskingConfigSchema = z11.object({
995
+ enabled: z11.boolean().default(false).describe("Enable data masking"),
996
+ rules: z11.array(MaskingRuleSchema).describe("List of field-level masking rules"),
997
+ auditUnmasking: z11.boolean().default(true).describe("Log when masked data is accessed unmasked")
777
998
  }).describe("Top-level data masking configuration for PII protection");
778
999
 
779
1000
  // src/data/field.zod.ts
780
- var FieldType = z10.enum([
1001
+ var FieldType = z12.enum([
781
1002
  // Core Text
782
1003
  "text",
783
1004
  "textarea",
@@ -853,92 +1074,92 @@ var FieldType = z10.enum([
853
1074
  "vector"
854
1075
  // Vector embeddings for AI/ML (semantic search, RAG)
855
1076
  ]);
856
- var SelectOptionSchema = z10.object({
857
- label: z10.string().describe("Display label (human-readable, any case allowed)"),
1077
+ var SelectOptionSchema = z12.object({
1078
+ label: z12.string().describe("Display label (human-readable, any case allowed)"),
858
1079
  value: SystemIdentifierSchema.describe("Stored value (lowercase machine identifier)"),
859
- color: z10.string().optional().describe("Color code for badges/charts"),
860
- default: z10.boolean().optional().describe("Is default option")
861
- });
862
- var LocationCoordinatesSchema = z10.object({
863
- latitude: z10.number().min(-90).max(90).describe("Latitude coordinate"),
864
- longitude: z10.number().min(-180).max(180).describe("Longitude coordinate"),
865
- altitude: z10.number().optional().describe("Altitude in meters"),
866
- accuracy: z10.number().optional().describe("Accuracy in meters")
867
- });
868
- var CurrencyConfigSchema = z10.object({
869
- precision: z10.number().int().min(0).max(10).default(2).describe("Decimal precision (default: 2)"),
870
- currencyMode: z10.enum(["dynamic", "fixed"]).default("dynamic").describe("Currency mode: dynamic (user selectable) or fixed (single currency)"),
871
- defaultCurrency: z10.string().length(3).default("CNY").describe("Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)")
872
- });
873
- var CurrencyValueSchema = z10.object({
874
- value: z10.number().describe("Monetary amount"),
875
- currency: z10.string().length(3).describe("Currency code (ISO 4217)")
876
- });
877
- var AddressSchema = z10.object({
878
- street: z10.string().optional().describe("Street address"),
879
- city: z10.string().optional().describe("City name"),
880
- state: z10.string().optional().describe("State/Province"),
881
- postalCode: z10.string().optional().describe("Postal/ZIP code"),
882
- country: z10.string().optional().describe("Country name or code"),
883
- countryCode: z10.string().optional().describe("ISO country code (e.g., US, GB)"),
884
- formatted: z10.string().optional().describe("Formatted address string")
885
- });
886
- var VectorConfigSchema = z10.object({
887
- dimensions: z10.number().int().min(1).max(1e4).describe("Vector dimensionality (e.g., 1536 for OpenAI embeddings)"),
888
- distanceMetric: z10.enum(["cosine", "euclidean", "dotProduct", "manhattan"]).default("cosine").describe("Distance/similarity metric for vector search"),
889
- normalized: z10.boolean().default(false).describe("Whether vectors are normalized (unit length)"),
890
- indexed: z10.boolean().default(true).describe("Whether to create a vector index for fast similarity search"),
891
- indexType: z10.enum(["hnsw", "ivfflat", "flat"]).optional().describe("Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)")
892
- });
893
- var FileAttachmentConfigSchema = z10.object({
1080
+ color: z12.string().optional().describe("Color code for badges/charts"),
1081
+ default: z12.boolean().optional().describe("Is default option")
1082
+ });
1083
+ var LocationCoordinatesSchema = z12.object({
1084
+ latitude: z12.number().min(-90).max(90).describe("Latitude coordinate"),
1085
+ longitude: z12.number().min(-180).max(180).describe("Longitude coordinate"),
1086
+ altitude: z12.number().optional().describe("Altitude in meters"),
1087
+ accuracy: z12.number().optional().describe("Accuracy in meters")
1088
+ });
1089
+ var CurrencyConfigSchema = z12.object({
1090
+ precision: z12.number().int().min(0).max(10).default(2).describe("Decimal precision (default: 2)"),
1091
+ currencyMode: z12.enum(["dynamic", "fixed"]).default("dynamic").describe("Currency mode: dynamic (user selectable) or fixed (single currency)"),
1092
+ defaultCurrency: z12.string().length(3).default("CNY").describe("Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)")
1093
+ });
1094
+ var CurrencyValueSchema = z12.object({
1095
+ value: z12.number().describe("Monetary amount"),
1096
+ currency: z12.string().length(3).describe("Currency code (ISO 4217)")
1097
+ });
1098
+ var AddressSchema = z12.object({
1099
+ street: z12.string().optional().describe("Street address"),
1100
+ city: z12.string().optional().describe("City name"),
1101
+ state: z12.string().optional().describe("State/Province"),
1102
+ postalCode: z12.string().optional().describe("Postal/ZIP code"),
1103
+ country: z12.string().optional().describe("Country name or code"),
1104
+ countryCode: z12.string().optional().describe("ISO country code (e.g., US, GB)"),
1105
+ formatted: z12.string().optional().describe("Formatted address string")
1106
+ });
1107
+ var VectorConfigSchema = z12.object({
1108
+ dimensions: z12.number().int().min(1).max(1e4).describe("Vector dimensionality (e.g., 1536 for OpenAI embeddings)"),
1109
+ distanceMetric: z12.enum(["cosine", "euclidean", "dotProduct", "manhattan"]).default("cosine").describe("Distance/similarity metric for vector search"),
1110
+ normalized: z12.boolean().default(false).describe("Whether vectors are normalized (unit length)"),
1111
+ indexed: z12.boolean().default(true).describe("Whether to create a vector index for fast similarity search"),
1112
+ indexType: z12.enum(["hnsw", "ivfflat", "flat"]).optional().describe("Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)")
1113
+ });
1114
+ var FileAttachmentConfigSchema = z12.object({
894
1115
  /** File Size Limits */
895
- minSize: z10.number().min(0).optional().describe("Minimum file size in bytes"),
896
- maxSize: z10.number().min(1).optional().describe("Maximum file size in bytes (e.g., 10485760 = 10MB)"),
1116
+ minSize: z12.number().min(0).optional().describe("Minimum file size in bytes"),
1117
+ maxSize: z12.number().min(1).optional().describe("Maximum file size in bytes (e.g., 10485760 = 10MB)"),
897
1118
  /** File Type Restrictions */
898
- allowedTypes: z10.array(z10.string()).optional().describe('Allowed file extensions (e.g., [".pdf", ".docx", ".jpg"])'),
899
- blockedTypes: z10.array(z10.string()).optional().describe('Blocked file extensions (e.g., [".exe", ".bat", ".sh"])'),
900
- allowedMimeTypes: z10.array(z10.string()).optional().describe('Allowed MIME types (e.g., ["image/jpeg", "application/pdf"])'),
901
- blockedMimeTypes: z10.array(z10.string()).optional().describe("Blocked MIME types"),
1119
+ allowedTypes: z12.array(z12.string()).optional().describe('Allowed file extensions (e.g., [".pdf", ".docx", ".jpg"])'),
1120
+ blockedTypes: z12.array(z12.string()).optional().describe('Blocked file extensions (e.g., [".exe", ".bat", ".sh"])'),
1121
+ allowedMimeTypes: z12.array(z12.string()).optional().describe('Allowed MIME types (e.g., ["image/jpeg", "application/pdf"])'),
1122
+ blockedMimeTypes: z12.array(z12.string()).optional().describe("Blocked MIME types"),
902
1123
  /** Virus Scanning */
903
- virusScan: z10.boolean().default(false).describe("Enable virus scanning for uploaded files"),
904
- virusScanProvider: z10.enum(["clamav", "virustotal", "metadefender", "custom"]).optional().describe("Virus scanning service provider"),
905
- virusScanOnUpload: z10.boolean().default(true).describe("Scan files immediately on upload"),
906
- quarantineOnThreat: z10.boolean().default(true).describe("Quarantine files if threat detected"),
1124
+ virusScan: z12.boolean().default(false).describe("Enable virus scanning for uploaded files"),
1125
+ virusScanProvider: z12.enum(["clamav", "virustotal", "metadefender", "custom"]).optional().describe("Virus scanning service provider"),
1126
+ virusScanOnUpload: z12.boolean().default(true).describe("Scan files immediately on upload"),
1127
+ quarantineOnThreat: z12.boolean().default(true).describe("Quarantine files if threat detected"),
907
1128
  /** Storage Configuration */
908
- storageProvider: z10.string().optional().describe("Object storage provider name (references ObjectStorageConfig)"),
909
- storageBucket: z10.string().optional().describe("Target bucket name"),
910
- storagePrefix: z10.string().optional().describe('Storage path prefix (e.g., "uploads/documents/")'),
1129
+ storageProvider: z12.string().optional().describe("Object storage provider name (references ObjectStorageConfig)"),
1130
+ storageBucket: z12.string().optional().describe("Target bucket name"),
1131
+ storagePrefix: z12.string().optional().describe('Storage path prefix (e.g., "uploads/documents/")'),
911
1132
  /** Image-Specific Validation */
912
- imageValidation: z10.object({
913
- minWidth: z10.number().min(1).optional().describe("Minimum image width in pixels"),
914
- maxWidth: z10.number().min(1).optional().describe("Maximum image width in pixels"),
915
- minHeight: z10.number().min(1).optional().describe("Minimum image height in pixels"),
916
- maxHeight: z10.number().min(1).optional().describe("Maximum image height in pixels"),
917
- aspectRatio: z10.string().optional().describe('Required aspect ratio (e.g., "16:9", "1:1")'),
918
- generateThumbnails: z10.boolean().default(false).describe("Auto-generate thumbnails"),
919
- thumbnailSizes: z10.array(z10.object({
920
- name: z10.string().describe('Thumbnail variant name (e.g., "small", "medium", "large")'),
921
- width: z10.number().min(1).describe("Thumbnail width in pixels"),
922
- height: z10.number().min(1).describe("Thumbnail height in pixels"),
923
- crop: z10.boolean().default(false).describe("Crop to exact dimensions")
1133
+ imageValidation: z12.object({
1134
+ minWidth: z12.number().min(1).optional().describe("Minimum image width in pixels"),
1135
+ maxWidth: z12.number().min(1).optional().describe("Maximum image width in pixels"),
1136
+ minHeight: z12.number().min(1).optional().describe("Minimum image height in pixels"),
1137
+ maxHeight: z12.number().min(1).optional().describe("Maximum image height in pixels"),
1138
+ aspectRatio: z12.string().optional().describe('Required aspect ratio (e.g., "16:9", "1:1")'),
1139
+ generateThumbnails: z12.boolean().default(false).describe("Auto-generate thumbnails"),
1140
+ thumbnailSizes: z12.array(z12.object({
1141
+ name: z12.string().describe('Thumbnail variant name (e.g., "small", "medium", "large")'),
1142
+ width: z12.number().min(1).describe("Thumbnail width in pixels"),
1143
+ height: z12.number().min(1).describe("Thumbnail height in pixels"),
1144
+ crop: z12.boolean().default(false).describe("Crop to exact dimensions")
924
1145
  })).optional().describe("Thumbnail size configurations"),
925
- preserveMetadata: z10.boolean().default(false).describe("Preserve EXIF metadata"),
926
- autoRotate: z10.boolean().default(true).describe("Auto-rotate based on EXIF orientation")
1146
+ preserveMetadata: z12.boolean().default(false).describe("Preserve EXIF metadata"),
1147
+ autoRotate: z12.boolean().default(true).describe("Auto-rotate based on EXIF orientation")
927
1148
  }).optional().describe("Image-specific validation rules"),
928
1149
  /** Upload Behavior */
929
- allowMultiple: z10.boolean().default(false).describe("Allow multiple file uploads (overrides field.multiple)"),
930
- allowReplace: z10.boolean().default(true).describe("Allow replacing existing files"),
931
- allowDelete: z10.boolean().default(true).describe("Allow deleting uploaded files"),
932
- requireUpload: z10.boolean().default(false).describe("Require at least one file when field is required"),
1150
+ allowMultiple: z12.boolean().default(false).describe("Allow multiple file uploads (overrides field.multiple)"),
1151
+ allowReplace: z12.boolean().default(true).describe("Allow replacing existing files"),
1152
+ allowDelete: z12.boolean().default(true).describe("Allow deleting uploaded files"),
1153
+ requireUpload: z12.boolean().default(false).describe("Require at least one file when field is required"),
933
1154
  /** Metadata Extraction */
934
- extractMetadata: z10.boolean().default(true).describe("Extract file metadata (name, size, type, etc.)"),
935
- extractText: z10.boolean().default(false).describe("Extract text content from documents (OCR/parsing)"),
1155
+ extractMetadata: z12.boolean().default(true).describe("Extract file metadata (name, size, type, etc.)"),
1156
+ extractText: z12.boolean().default(false).describe("Extract text content from documents (OCR/parsing)"),
936
1157
  /** Versioning */
937
- versioningEnabled: z10.boolean().default(false).describe("Keep previous versions of replaced files"),
938
- maxVersions: z10.number().min(1).optional().describe("Maximum number of versions to retain"),
1158
+ versioningEnabled: z12.boolean().default(false).describe("Keep previous versions of replaced files"),
1159
+ maxVersions: z12.number().min(1).optional().describe("Maximum number of versions to retain"),
939
1160
  /** Access Control */
940
- publicRead: z10.boolean().default(false).describe("Allow public read access to uploaded files"),
941
- presignedUrlExpiry: z10.number().min(60).max(604800).default(3600).describe("Presigned URL expiration in seconds (default: 1 hour)")
1161
+ publicRead: z12.boolean().default(false).describe("Allow public read access to uploaded files"),
1162
+ presignedUrlExpiry: z12.number().min(60).max(604800).default(3600).describe("Presigned URL expiration in seconds (default: 1 hour)")
942
1163
  }).refine((data) => {
943
1164
  if (data.minSize !== void 0 && data.maxSize !== void 0 && data.minSize > data.maxSize) {
944
1165
  return false;
@@ -954,88 +1175,88 @@ var FileAttachmentConfigSchema = z10.object({
954
1175
  }, {
955
1176
  message: "virusScanProvider requires virusScan to be enabled"
956
1177
  });
957
- var DataQualityRulesSchema = z10.object({
1178
+ var DataQualityRulesSchema = z12.object({
958
1179
  /** Enforce uniqueness constraint */
959
- uniqueness: z10.boolean().default(false).describe("Enforce unique values across all records"),
1180
+ uniqueness: z12.boolean().default(false).describe("Enforce unique values across all records"),
960
1181
  /** Completeness ratio (0-1) indicating minimum percentage of non-null values */
961
- completeness: z10.number().min(0).max(1).default(0).describe("Minimum ratio of non-null values (0-1, default: 0 = no requirement)"),
1182
+ completeness: z12.number().min(0).max(1).default(0).describe("Minimum ratio of non-null values (0-1, default: 0 = no requirement)"),
962
1183
  /** Accuracy validation against authoritative source */
963
- accuracy: z10.object({
964
- source: z10.string().describe('Reference data source for validation (e.g., "api.verify.com", "master_data")'),
965
- threshold: z10.number().min(0).max(1).describe("Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)")
1184
+ accuracy: z12.object({
1185
+ source: z12.string().describe('Reference data source for validation (e.g., "api.verify.com", "master_data")'),
1186
+ threshold: z12.number().min(0).max(1).describe("Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)")
966
1187
  }).optional().describe("Accuracy validation configuration")
967
1188
  });
968
- var ComputedFieldCacheSchema = z10.object({
1189
+ var ComputedFieldCacheSchema = z12.object({
969
1190
  /** Enable caching for this computed field */
970
- enabled: z10.boolean().describe("Enable caching for computed field results"),
1191
+ enabled: z12.boolean().describe("Enable caching for computed field results"),
971
1192
  /** Time-to-live in seconds */
972
- ttl: z10.number().min(0).describe("Cache TTL in seconds (0 = no expiration)"),
1193
+ ttl: z12.number().min(0).describe("Cache TTL in seconds (0 = no expiration)"),
973
1194
  /** Array of field paths that trigger cache invalidation when changed */
974
- invalidateOn: z10.array(z10.string()).describe('Field paths that invalidate cache (e.g., ["inventory.quantity", "pricing.base_price"])')
1195
+ invalidateOn: z12.array(z12.string()).describe('Field paths that invalidate cache (e.g., ["inventory.quantity", "pricing.base_price"])')
975
1196
  });
976
- var FieldSchema = z10.object({
1197
+ var FieldSchema = z12.object({
977
1198
  /** Identity */
978
- name: z10.string().regex(/^[a-z_][a-z0-9_]*$/).describe("Machine name (snake_case)").optional(),
979
- label: z10.string().optional().describe("Human readable label"),
1199
+ name: z12.string().regex(/^[a-z_][a-z0-9_]*$/).describe("Machine name (snake_case)").optional(),
1200
+ label: z12.string().optional().describe("Human readable label"),
980
1201
  type: FieldType.describe("Field Data Type"),
981
- description: z10.string().optional().describe("Tooltip/Help text"),
982
- format: z10.string().optional().describe("Format string (e.g. email, phone)"),
1202
+ description: z12.string().optional().describe("Tooltip/Help text"),
1203
+ format: z12.string().optional().describe("Format string (e.g. email, phone)"),
983
1204
  /** Database Constraints */
984
- required: z10.boolean().default(false).describe("Is required"),
985
- searchable: z10.boolean().default(false).describe("Is searchable"),
986
- multiple: z10.boolean().default(false).describe("Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image."),
987
- unique: z10.boolean().default(false).describe("Is unique constraint"),
988
- defaultValue: z10.unknown().optional().describe("Default value"),
1205
+ required: z12.boolean().default(false).describe("Is required"),
1206
+ searchable: z12.boolean().default(false).describe("Is searchable"),
1207
+ multiple: z12.boolean().default(false).describe("Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image."),
1208
+ unique: z12.boolean().default(false).describe("Is unique constraint"),
1209
+ defaultValue: z12.unknown().optional().describe("Default value"),
989
1210
  /** Text/String Constraints */
990
- maxLength: z10.number().optional().describe("Max character length"),
991
- minLength: z10.number().optional().describe("Min character length"),
1211
+ maxLength: z12.number().optional().describe("Max character length"),
1212
+ minLength: z12.number().optional().describe("Min character length"),
992
1213
  /** Number Constraints */
993
- precision: z10.number().optional().describe("Total digits"),
994
- scale: z10.number().optional().describe("Decimal places"),
995
- min: z10.number().optional().describe("Minimum value"),
996
- max: z10.number().optional().describe("Maximum value"),
1214
+ precision: z12.number().optional().describe("Total digits"),
1215
+ scale: z12.number().optional().describe("Decimal places"),
1216
+ min: z12.number().optional().describe("Minimum value"),
1217
+ max: z12.number().optional().describe("Maximum value"),
997
1218
  /** Selection Options */
998
- options: z10.array(SelectOptionSchema).optional().describe("Static options for select/multiselect"),
1219
+ options: z12.array(SelectOptionSchema).optional().describe("Static options for select/multiselect"),
999
1220
  /** Relationship Config */
1000
- reference: z10.string().optional().describe("Target Object Name"),
1001
- referenceFilters: z10.array(z10.string()).optional().describe('Filters applied to lookup dialogs (e.g. "active = true")'),
1002
- writeRequiresMasterRead: z10.boolean().optional().describe("If true, user needs read access to master record to edit this field"),
1003
- deleteBehavior: z10.enum(["set_null", "cascade", "restrict"]).optional().default("set_null").describe("What happens if referenced record is deleted"),
1221
+ reference: z12.string().optional().describe("Target Object Name"),
1222
+ referenceFilters: z12.array(z12.string()).optional().describe('Filters applied to lookup dialogs (e.g. "active = true")'),
1223
+ writeRequiresMasterRead: z12.boolean().optional().describe("If true, user needs read access to master record to edit this field"),
1224
+ deleteBehavior: z12.enum(["set_null", "cascade", "restrict"]).optional().default("set_null").describe("What happens if referenced record is deleted"),
1004
1225
  /** Calculation */
1005
- expression: z10.string().optional().describe("Formula expression"),
1006
- summaryOperations: z10.object({
1007
- object: z10.string(),
1008
- field: z10.string(),
1009
- function: z10.enum(["count", "sum", "min", "max", "avg"])
1226
+ expression: z12.string().optional().describe("Formula expression"),
1227
+ summaryOperations: z12.object({
1228
+ object: z12.string(),
1229
+ field: z12.string(),
1230
+ function: z12.enum(["count", "sum", "min", "max", "avg"])
1010
1231
  }).optional().describe("Roll-up summary definition"),
1011
1232
  /** Enhanced Field Type Configurations */
1012
1233
  // Code field config
1013
- language: z10.string().optional().describe("Programming language for syntax highlighting (e.g., javascript, python, sql)"),
1014
- theme: z10.string().optional().describe("Code editor theme (e.g., dark, light, monokai)"),
1015
- lineNumbers: z10.boolean().optional().describe("Show line numbers in code editor"),
1234
+ language: z12.string().optional().describe("Programming language for syntax highlighting (e.g., javascript, python, sql)"),
1235
+ theme: z12.string().optional().describe("Code editor theme (e.g., dark, light, monokai)"),
1236
+ lineNumbers: z12.boolean().optional().describe("Show line numbers in code editor"),
1016
1237
  // Rating field config
1017
- maxRating: z10.number().optional().describe("Maximum rating value (default: 5)"),
1018
- allowHalf: z10.boolean().optional().describe("Allow half-star ratings"),
1238
+ maxRating: z12.number().optional().describe("Maximum rating value (default: 5)"),
1239
+ allowHalf: z12.boolean().optional().describe("Allow half-star ratings"),
1019
1240
  // Location field config
1020
- displayMap: z10.boolean().optional().describe("Display map widget for location field"),
1021
- allowGeocoding: z10.boolean().optional().describe("Allow address-to-coordinate conversion"),
1241
+ displayMap: z12.boolean().optional().describe("Display map widget for location field"),
1242
+ allowGeocoding: z12.boolean().optional().describe("Allow address-to-coordinate conversion"),
1022
1243
  // Address field config
1023
- addressFormat: z10.enum(["us", "uk", "international"]).optional().describe("Address format template"),
1244
+ addressFormat: z12.enum(["us", "uk", "international"]).optional().describe("Address format template"),
1024
1245
  // Color field config
1025
- colorFormat: z10.enum(["hex", "rgb", "rgba", "hsl"]).optional().describe("Color value format"),
1026
- allowAlpha: z10.boolean().optional().describe("Allow transparency/alpha channel"),
1027
- presetColors: z10.array(z10.string()).optional().describe("Preset color options"),
1246
+ colorFormat: z12.enum(["hex", "rgb", "rgba", "hsl"]).optional().describe("Color value format"),
1247
+ allowAlpha: z12.boolean().optional().describe("Allow transparency/alpha channel"),
1248
+ presetColors: z12.array(z12.string()).optional().describe("Preset color options"),
1028
1249
  // Slider field config
1029
- step: z10.number().optional().describe("Step increment for slider (default: 1)"),
1030
- showValue: z10.boolean().optional().describe("Display current value on slider"),
1031
- marks: z10.record(z10.string(), z10.string()).optional().describe('Custom marks/labels at specific values (e.g., {0: "Low", 50: "Medium", 100: "High"})'),
1250
+ step: z12.number().optional().describe("Step increment for slider (default: 1)"),
1251
+ showValue: z12.boolean().optional().describe("Display current value on slider"),
1252
+ marks: z12.record(z12.string(), z12.string()).optional().describe('Custom marks/labels at specific values (e.g., {0: "Low", 50: "Medium", 100: "High"})'),
1032
1253
  // QR Code / Barcode field config
1033
1254
  // Note: qrErrorCorrection is only applicable when barcodeFormat='qr'
1034
1255
  // Runtime validation should enforce this constraint
1035
- barcodeFormat: z10.enum(["qr", "ean13", "ean8", "code128", "code39", "upca", "upce"]).optional().describe("Barcode format type"),
1036
- qrErrorCorrection: z10.enum(["L", "M", "Q", "H"]).optional().describe('QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is "qr"'),
1037
- displayValue: z10.boolean().optional().describe("Display human-readable value below barcode/QR code"),
1038
- allowScanning: z10.boolean().optional().describe("Enable camera scanning for barcode/QR code input"),
1256
+ barcodeFormat: z12.enum(["qr", "ean13", "ean8", "code128", "code39", "upca", "upce"]).optional().describe("Barcode format type"),
1257
+ qrErrorCorrection: z12.enum(["L", "M", "Q", "H"]).optional().describe('QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is "qr"'),
1258
+ displayValue: z12.boolean().optional().describe("Display human-readable value below barcode/QR code"),
1259
+ allowScanning: z12.boolean().optional().describe("Enable camera scanning for barcode/QR code input"),
1039
1260
  // Currency field config
1040
1261
  currencyConfig: CurrencyConfigSchema.optional().describe("Configuration for currency field type"),
1041
1262
  // Vector field config
@@ -1048,10 +1269,10 @@ var FieldSchema = z10.object({
1048
1269
  // Data masking rules
1049
1270
  maskingRule: MaskingRuleSchema.optional().describe("Data masking rules for PII protection"),
1050
1271
  // Audit trail
1051
- auditTrail: z10.boolean().default(false).describe("Enable detailed audit trail for this field (tracks all changes with user and timestamp)"),
1272
+ auditTrail: z12.boolean().default(false).describe("Enable detailed audit trail for this field (tracks all changes with user and timestamp)"),
1052
1273
  /** Field Dependencies & Relationships */
1053
1274
  // Field dependencies
1054
- dependencies: z10.array(z10.string()).optional().describe("Array of field names that this field depends on (for formulas, visibility rules, etc.)"),
1275
+ dependencies: z12.array(z12.string()).optional().describe("Array of field names that this field depends on (for formulas, visibility rules, etc.)"),
1055
1276
  /** Computed Field Optimization */
1056
1277
  // Computed field caching
1057
1278
  cached: ComputedFieldCacheSchema.optional().describe("Caching configuration for computed/formula fields"),
@@ -1059,35 +1280,35 @@ var FieldSchema = z10.object({
1059
1280
  // Data quality rules
1060
1281
  dataQuality: DataQualityRulesSchema.optional().describe("Data quality validation and monitoring rules"),
1061
1282
  /** Security & Visibility */
1062
- hidden: z10.boolean().default(false).describe("Hidden from default UI"),
1063
- readonly: z10.boolean().default(false).describe("Read-only in UI"),
1064
- sortable: z10.boolean().optional().default(true).describe("Whether field is sortable in list views"),
1065
- inlineHelpText: z10.string().optional().describe("Help text displayed below the field in forms"),
1066
- trackFeedHistory: z10.boolean().optional().describe("Track field changes in Chatter/activity feed (Salesforce pattern)"),
1067
- caseSensitive: z10.boolean().optional().describe("Whether text comparisons are case-sensitive"),
1068
- autonumberFormat: z10.string().optional().describe('Auto-number display format pattern (e.g., "CASE-{0000}")'),
1283
+ hidden: z12.boolean().default(false).describe("Hidden from default UI"),
1284
+ readonly: z12.boolean().default(false).describe("Read-only in UI"),
1285
+ sortable: z12.boolean().optional().default(true).describe("Whether field is sortable in list views"),
1286
+ inlineHelpText: z12.string().optional().describe("Help text displayed below the field in forms"),
1287
+ trackFeedHistory: z12.boolean().optional().describe("Track field changes in Chatter/activity feed (Salesforce pattern)"),
1288
+ caseSensitive: z12.boolean().optional().describe("Whether text comparisons are case-sensitive"),
1289
+ autonumberFormat: z12.string().optional().describe('Auto-number display format pattern (e.g., "CASE-{0000}")'),
1069
1290
  /** Indexing */
1070
- index: z10.boolean().default(false).describe("Create standard database index"),
1071
- externalId: z10.boolean().default(false).describe("Is external ID for upsert operations")
1291
+ index: z12.boolean().default(false).describe("Create standard database index"),
1292
+ externalId: z12.boolean().default(false).describe("Is external ID for upsert operations")
1072
1293
  });
1073
1294
 
1074
1295
  // src/ui/action.zod.ts
1075
- var ActionParamSchema = z11.object({
1076
- name: z11.string(),
1077
- label: z11.string(),
1296
+ var ActionParamSchema = z13.object({
1297
+ name: z13.string(),
1298
+ label: I18nLabelSchema,
1078
1299
  type: FieldType,
1079
- required: z11.boolean().default(false),
1080
- options: z11.array(z11.object({ label: z11.string(), value: z11.string() })).optional()
1300
+ required: z13.boolean().default(false),
1301
+ options: z13.array(z13.object({ label: I18nLabelSchema, value: z13.string() })).optional()
1081
1302
  });
1082
- var ActionSchema = z11.object({
1303
+ var ActionSchema = z13.object({
1083
1304
  /** Machine name of the action */
1084
1305
  name: SnakeCaseIdentifierSchema.describe("Machine name (lowercase snake_case)"),
1085
1306
  /** Display label */
1086
- label: z11.string().describe("Display label"),
1307
+ label: I18nLabelSchema.describe("Display label"),
1087
1308
  /** Icon name (Lucide) */
1088
- icon: z11.string().optional().describe("Icon name"),
1309
+ icon: z13.string().optional().describe("Icon name"),
1089
1310
  /** Where does this action appear? */
1090
- locations: z11.array(z11.enum([
1311
+ locations: z13.array(z13.enum([
1091
1312
  "list_toolbar",
1092
1313
  "list_item",
1093
1314
  "record_header",
@@ -1100,7 +1321,7 @@ var ActionSchema = z11.object({
1100
1321
  * Defaults to 'button' or 'menu_item' based on location,
1101
1322
  * but can be overridden.
1102
1323
  */
1103
- component: z11.enum([
1324
+ component: z13.enum([
1104
1325
  "action:button",
1105
1326
  // Standard Button
1106
1327
  "action:icon",
@@ -1111,41 +1332,43 @@ var ActionSchema = z11.object({
1111
1332
  // Button Group
1112
1333
  ]).optional().describe("Visual component override"),
1113
1334
  /** @deprecated Use `locations` instead. Will be removed in v2.0.0 */
1114
- location: z11.unknown().optional().describe("DEPRECATED: Use `locations` field instead. Scheduled for removal in v2.0.0"),
1335
+ location: z13.unknown().optional().describe("DEPRECATED: Use `locations` field instead. Scheduled for removal in v2.0.0"),
1115
1336
  /** What type of interaction? */
1116
- type: z11.enum(["script", "url", "modal", "flow", "api"]).default("script").describe("Action functionality type"),
1337
+ type: z13.enum(["script", "url", "modal", "flow", "api"]).default("script").describe("Action functionality type"),
1117
1338
  /** Payload / Target */
1118
- target: z11.string().optional().describe("URL, Script Name, Flow ID, or API Endpoint"),
1339
+ target: z13.string().optional().describe("URL, Script Name, Flow ID, or API Endpoint"),
1119
1340
  // For URL/Flow types
1120
- execute: z11.string().optional().describe("Legacy execution logic"),
1341
+ execute: z13.string().optional().describe("Legacy execution logic"),
1121
1342
  /** User Input Requirements */
1122
- params: z11.array(ActionParamSchema).optional().describe("Input parameters required from user"),
1343
+ params: z13.array(ActionParamSchema).optional().describe("Input parameters required from user"),
1123
1344
  /** UX Behavior */
1124
- confirmText: z11.string().optional().describe("Confirmation message before execution"),
1125
- successMessage: z11.string().optional().describe("Success message to show after execution"),
1126
- refreshAfter: z11.boolean().default(false).describe("Refresh view after execution"),
1345
+ confirmText: I18nLabelSchema.optional().describe("Confirmation message before execution"),
1346
+ successMessage: I18nLabelSchema.optional().describe("Success message to show after execution"),
1347
+ refreshAfter: z13.boolean().default(false).describe("Refresh view after execution"),
1127
1348
  /** Access */
1128
- visible: z11.string().optional().describe("Formula returning boolean"),
1129
- disabled: z11.union([z11.boolean(), z11.string()]).optional().describe("Whether the action is disabled, or a condition expression string"),
1349
+ visible: z13.string().optional().describe("Formula returning boolean"),
1350
+ disabled: z13.union([z13.boolean(), z13.string()]).optional().describe("Whether the action is disabled, or a condition expression string"),
1130
1351
  /** Keyboard Shortcut */
1131
- shortcut: z11.string().optional().describe('Keyboard shortcut to trigger this action (e.g., "Ctrl+S")'),
1352
+ shortcut: z13.string().optional().describe('Keyboard shortcut to trigger this action (e.g., "Ctrl+S")'),
1132
1353
  /** Bulk Operations */
1133
- bulkEnabled: z11.boolean().optional().describe("Whether this action can be applied to multiple selected records"),
1354
+ bulkEnabled: z13.boolean().optional().describe("Whether this action can be applied to multiple selected records"),
1134
1355
  /** Execution */
1135
- timeout: z11.number().optional().describe("Maximum execution time in milliseconds for the action")
1356
+ timeout: z13.number().optional().describe("Maximum execution time in milliseconds for the action"),
1357
+ /** ARIA accessibility attributes */
1358
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
1136
1359
  });
1137
1360
  var Action = {
1138
1361
  create: (config) => ActionSchema.parse(config)
1139
1362
  };
1140
1363
 
1141
1364
  // src/ui/page.zod.ts
1142
- import { z as z12 } from "zod";
1143
- var PageRegionSchema = z12.object({
1144
- name: z12.string().describe('Region name (e.g. "sidebar", "main", "header")'),
1145
- width: z12.enum(["small", "medium", "large", "full"]).optional(),
1146
- components: z12.array(z12.lazy(() => PageComponentSchema)).describe("Components in this region")
1365
+ import { z as z14 } from "zod";
1366
+ var PageRegionSchema = z14.object({
1367
+ name: z14.string().describe('Region name (e.g. "sidebar", "main", "header")'),
1368
+ width: z14.enum(["small", "medium", "large", "full"]).optional(),
1369
+ components: z14.array(z14.lazy(() => PageComponentSchema)).describe("Components in this region")
1147
1370
  });
1148
- var PageComponentType = z12.enum([
1371
+ var PageComponentType = z14.enum([
1149
1372
  // Structure
1150
1373
  "page:header",
1151
1374
  "page:footer",
@@ -1173,201 +1396,207 @@ var PageComponentType = z12.enum([
1173
1396
  "ai:chat_window",
1174
1397
  "ai:suggestion"
1175
1398
  ]);
1176
- var PageComponentSchema = z12.object({
1399
+ var PageComponentSchema = z14.object({
1177
1400
  /** Definition */
1178
- type: z12.union([
1401
+ type: z14.union([
1179
1402
  PageComponentType,
1180
- z12.string()
1403
+ z14.string()
1181
1404
  ]).describe("Component Type (Standard enum or custom string)"),
1182
- id: z12.string().optional().describe("Unique instance ID"),
1405
+ id: z14.string().optional().describe("Unique instance ID"),
1183
1406
  /** Configuration */
1184
- label: z12.string().optional(),
1185
- properties: z12.record(z12.string(), z12.unknown()).describe("Component props passed to the widget. See component.zod.ts for schemas."),
1407
+ label: I18nLabelSchema.optional(),
1408
+ properties: z14.record(z14.string(), z14.unknown()).describe("Component props passed to the widget. See component.zod.ts for schemas."),
1186
1409
  /**
1187
1410
  * Event Handlers
1188
1411
  * Map event names to Action expressions.
1189
1412
  * "onClick": "set_variable('userId', $event.id)"
1190
1413
  * "onRowSelect": "navigate_to('page_detail', { id: $event.id })"
1191
1414
  */
1192
- events: z12.record(z12.string(), z12.string()).optional().describe("Event handlers map"),
1415
+ events: z14.record(z14.string(), z14.string()).optional().describe("Event handlers map"),
1193
1416
  /** Appearance */
1194
- style: z12.record(z12.string(), z12.string()).optional().describe("Inline styles or utility classes"),
1195
- className: z12.string().optional().describe("CSS class names"),
1417
+ style: z14.record(z14.string(), z14.string()).optional().describe("Inline styles or utility classes"),
1418
+ className: z14.string().optional().describe("CSS class names"),
1196
1419
  /** Visibility Rule */
1197
- visibility: z12.string().optional().describe("Visibility filter/formula")
1198
- });
1199
- var PageVariableSchema = z12.object({
1200
- name: z12.string().describe("Variable name"),
1201
- type: z12.enum(["string", "number", "boolean", "object", "array"]).default("string"),
1202
- defaultValue: z12.unknown().optional()
1203
- });
1204
- var PageSchema = z12.object({
1420
+ visibility: z14.string().optional().describe("Visibility filter/formula"),
1421
+ /** Responsive layout overrides per breakpoint */
1422
+ responsive: ResponsiveConfigSchema.optional().describe("Responsive layout configuration"),
1423
+ /** ARIA accessibility attributes */
1424
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
1425
+ });
1426
+ var PageVariableSchema = z14.object({
1427
+ name: z14.string().describe("Variable name"),
1428
+ type: z14.enum(["string", "number", "boolean", "object", "array"]).default("string"),
1429
+ defaultValue: z14.unknown().optional()
1430
+ });
1431
+ var PageSchema = z14.object({
1205
1432
  name: SnakeCaseIdentifierSchema.describe("Page unique name (lowercase snake_case)"),
1206
- label: z12.string(),
1207
- description: z12.string().optional(),
1433
+ label: I18nLabelSchema,
1434
+ description: I18nLabelSchema.optional(),
1208
1435
  /** Page Type */
1209
- type: z12.enum(["record", "home", "app", "utility"]).default("record"),
1436
+ type: z14.enum(["record", "home", "app", "utility"]).default("record"),
1210
1437
  /** Page State Definitions */
1211
- variables: z12.array(PageVariableSchema).optional().describe("Local page state variables"),
1438
+ variables: z14.array(PageVariableSchema).optional().describe("Local page state variables"),
1212
1439
  /** Context */
1213
- object: z12.string().optional().describe("Bound object (for Record pages)"),
1440
+ object: z14.string().optional().describe("Bound object (for Record pages)"),
1214
1441
  /** Layout Template */
1215
- template: z12.string().default("default").describe('Layout template name (e.g. "header-sidebar-main")'),
1442
+ template: z14.string().default("default").describe('Layout template name (e.g. "header-sidebar-main")'),
1216
1443
  /** Regions & Content */
1217
- regions: z12.array(PageRegionSchema).describe("Defined regions with components"),
1444
+ regions: z14.array(PageRegionSchema).describe("Defined regions with components"),
1218
1445
  /** Activation */
1219
- isDefault: z12.boolean().default(false),
1220
- assignedProfiles: z12.array(z12.string()).optional()
1446
+ isDefault: z14.boolean().default(false),
1447
+ assignedProfiles: z14.array(z14.string()).optional(),
1448
+ /** ARIA accessibility attributes */
1449
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
1221
1450
  });
1222
1451
 
1223
1452
  // src/ui/widget.zod.ts
1224
- import { z as z13 } from "zod";
1225
- var WidgetLifecycleSchema = z13.object({
1453
+ import { z as z15 } from "zod";
1454
+ var WidgetLifecycleSchema = z15.object({
1226
1455
  /**
1227
1456
  * Called when widget is mounted/rendered for the first time
1228
1457
  * Use for initialization, setting up event listeners, loading data, etc.
1229
1458
  *
1230
1459
  * @example "initializeDatePicker(); loadOptions();"
1231
1460
  */
1232
- onMount: z13.string().optional().describe("Initialization code when widget mounts"),
1461
+ onMount: z15.string().optional().describe("Initialization code when widget mounts"),
1233
1462
  /**
1234
1463
  * Called when widget props change
1235
1464
  * Receives previous props for comparison
1236
1465
  *
1237
1466
  * @example "if (prevProps.value !== props.value) { updateDisplay() }"
1238
1467
  */
1239
- onUpdate: z13.string().optional().describe("Code to run when props change"),
1468
+ onUpdate: z15.string().optional().describe("Code to run when props change"),
1240
1469
  /**
1241
1470
  * Called when widget is about to be removed from DOM
1242
1471
  * Use for cleanup, removing event listeners, canceling timers, etc.
1243
1472
  *
1244
1473
  * @example "destroyDatePicker(); cancelPendingRequests();"
1245
1474
  */
1246
- onUnmount: z13.string().optional().describe("Cleanup code when widget unmounts"),
1475
+ onUnmount: z15.string().optional().describe("Cleanup code when widget unmounts"),
1247
1476
  /**
1248
1477
  * Custom validation logic for this widget
1249
1478
  * Should return error message string if invalid, null/undefined if valid
1250
1479
  *
1251
1480
  * @example "return value && value.length >= 10 ? null : 'Minimum 10 characters'"
1252
1481
  */
1253
- onValidate: z13.string().optional().describe("Custom validation logic"),
1482
+ onValidate: z15.string().optional().describe("Custom validation logic"),
1254
1483
  /**
1255
1484
  * Called when widget receives focus
1256
1485
  *
1257
1486
  * @example "highlightField(); logFocusEvent();"
1258
1487
  */
1259
- onFocus: z13.string().optional().describe("Code to run on focus"),
1488
+ onFocus: z15.string().optional().describe("Code to run on focus"),
1260
1489
  /**
1261
1490
  * Called when widget loses focus
1262
1491
  *
1263
1492
  * @example "validateField(); saveFieldState();"
1264
1493
  */
1265
- onBlur: z13.string().optional().describe("Code to run on blur"),
1494
+ onBlur: z15.string().optional().describe("Code to run on blur"),
1266
1495
  /**
1267
1496
  * Called on any error in the widget
1268
1497
  *
1269
1498
  * @example "logError(error); showErrorNotification();"
1270
1499
  */
1271
- onError: z13.string().optional().describe("Error handling code")
1500
+ onError: z15.string().optional().describe("Error handling code")
1272
1501
  });
1273
- var WidgetEventSchema = z13.object({
1502
+ var WidgetEventSchema = z15.object({
1274
1503
  /**
1275
1504
  * Event name
1276
1505
  * Should be lowercase, dash-separated for consistency
1277
1506
  *
1278
1507
  * @example "value-change", "item-selected", "search-complete"
1279
1508
  */
1280
- name: z13.string().describe("Event name"),
1509
+ name: z15.string().describe("Event name"),
1281
1510
  /**
1282
1511
  * Event label for documentation
1283
1512
  */
1284
- label: z13.string().optional().describe("Human-readable event label"),
1513
+ label: I18nLabelSchema.optional().describe("Human-readable event label"),
1285
1514
  /**
1286
1515
  * Event description
1287
1516
  */
1288
- description: z13.string().optional().describe("Event description and usage"),
1517
+ description: I18nLabelSchema.optional().describe("Event description and usage"),
1289
1518
  /**
1290
1519
  * Whether event bubbles up through the DOM hierarchy
1291
1520
  *
1292
1521
  * @default false
1293
1522
  */
1294
- bubbles: z13.boolean().default(false).describe("Whether event bubbles"),
1523
+ bubbles: z15.boolean().default(false).describe("Whether event bubbles"),
1295
1524
  /**
1296
1525
  * Whether event can be cancelled
1297
1526
  *
1298
1527
  * @default false
1299
1528
  */
1300
- cancelable: z13.boolean().default(false).describe("Whether event is cancelable"),
1529
+ cancelable: z15.boolean().default(false).describe("Whether event is cancelable"),
1301
1530
  /**
1302
1531
  * Event payload schema
1303
1532
  * Defines the data structure sent with the event
1304
1533
  *
1305
1534
  * @example { userId: 'string', timestamp: 'number' }
1306
1535
  */
1307
- payload: z13.record(z13.string(), z13.unknown()).optional().describe("Event payload schema")
1536
+ payload: z15.record(z15.string(), z15.unknown()).optional().describe("Event payload schema")
1308
1537
  });
1309
- var WidgetPropertySchema = z13.object({
1538
+ var WidgetPropertySchema = z15.object({
1310
1539
  /**
1311
1540
  * Property name
1312
1541
  * Should be camelCase following ObjectStack conventions
1313
1542
  */
1314
- name: z13.string().describe("Property name (camelCase)"),
1543
+ name: z15.string().describe("Property name (camelCase)"),
1315
1544
  /**
1316
1545
  * Property label for UI
1317
1546
  */
1318
- label: z13.string().optional().describe("Human-readable label"),
1547
+ label: I18nLabelSchema.optional().describe("Human-readable label"),
1319
1548
  /**
1320
1549
  * Property data type
1321
1550
  *
1322
1551
  * @example "string", "number", "boolean", "array", "object", "function"
1323
1552
  */
1324
- type: z13.enum(["string", "number", "boolean", "array", "object", "function", "any"]).describe("TypeScript type"),
1553
+ type: z15.enum(["string", "number", "boolean", "array", "object", "function", "any"]).describe("TypeScript type"),
1325
1554
  /**
1326
1555
  * Whether property is required
1327
1556
  *
1328
1557
  * @default false
1329
1558
  */
1330
- required: z13.boolean().default(false).describe("Whether property is required"),
1559
+ required: z15.boolean().default(false).describe("Whether property is required"),
1331
1560
  /**
1332
1561
  * Default value for the property
1333
1562
  */
1334
- default: z13.unknown().optional().describe("Default value"),
1563
+ default: z15.unknown().optional().describe("Default value"),
1335
1564
  /**
1336
1565
  * Property description
1337
1566
  */
1338
- description: z13.string().optional().describe("Property description"),
1567
+ description: I18nLabelSchema.optional().describe("Property description"),
1339
1568
  /**
1340
1569
  * Property validation schema
1341
1570
  * Can include min/max, regex, enum values, etc.
1342
1571
  */
1343
- validation: z13.record(z13.string(), z13.unknown()).optional().describe("Validation rules"),
1572
+ validation: z15.record(z15.string(), z15.unknown()).optional().describe("Validation rules"),
1344
1573
  /**
1345
1574
  * Property category for grouping in UI
1346
1575
  */
1347
- category: z13.string().optional().describe("Property category")
1576
+ category: z15.string().optional().describe("Property category")
1348
1577
  });
1349
- var WidgetSourceSchema = z13.discriminatedUnion("type", [
1578
+ var WidgetSourceSchema = z15.discriminatedUnion("type", [
1350
1579
  // NPM Registry (standard)
1351
- z13.object({
1352
- type: z13.literal("npm"),
1353
- packageName: z13.string().describe("NPM package name"),
1354
- version: z13.string().default("latest"),
1355
- exportName: z13.string().optional().describe("Named export (default: default)")
1580
+ z15.object({
1581
+ type: z15.literal("npm"),
1582
+ packageName: z15.string().describe("NPM package name"),
1583
+ version: z15.string().default("latest"),
1584
+ exportName: z15.string().optional().describe("Named export (default: default)")
1356
1585
  }),
1357
1586
  // Module Federation (Remote)
1358
- z13.object({
1359
- type: z13.literal("remote"),
1360
- url: z13.string().url().describe("Remote entry URL (.js)"),
1361
- moduleName: z13.string().describe("Exposed module name"),
1362
- scope: z13.string().describe("Remote scope name")
1587
+ z15.object({
1588
+ type: z15.literal("remote"),
1589
+ url: z15.string().url().describe("Remote entry URL (.js)"),
1590
+ moduleName: z15.string().describe("Exposed module name"),
1591
+ scope: z15.string().describe("Remote scope name")
1363
1592
  }),
1364
1593
  // Inline Code (Simple scripts)
1365
- z13.object({
1366
- type: z13.literal("inline"),
1367
- code: z13.string().describe("JavaScript code body")
1594
+ z15.object({
1595
+ type: z15.literal("inline"),
1596
+ code: z15.string().describe("JavaScript code body")
1368
1597
  })
1369
1598
  ]);
1370
- var WidgetManifestSchema = z13.object({
1599
+ var WidgetManifestSchema = z15.object({
1371
1600
  /**
1372
1601
  * Widget identifier (snake_case)
1373
1602
  */
@@ -1375,33 +1604,33 @@ var WidgetManifestSchema = z13.object({
1375
1604
  /**
1376
1605
  * Human-readable widget name
1377
1606
  */
1378
- label: z13.string().describe("Widget display name"),
1607
+ label: I18nLabelSchema.describe("Widget display name"),
1379
1608
  /**
1380
1609
  * Widget description
1381
1610
  */
1382
- description: z13.string().optional().describe("Widget description"),
1611
+ description: I18nLabelSchema.optional().describe("Widget description"),
1383
1612
  /**
1384
1613
  * Widget version (semver)
1385
1614
  */
1386
- version: z13.string().optional().describe("Widget version (semver)"),
1615
+ version: z15.string().optional().describe("Widget version (semver)"),
1387
1616
  /**
1388
1617
  * Widget author/organization
1389
1618
  */
1390
- author: z13.string().optional().describe("Widget author"),
1619
+ author: z15.string().optional().describe("Widget author"),
1391
1620
  /**
1392
1621
  * Icon name or URL
1393
1622
  */
1394
- icon: z13.string().optional().describe("Widget icon"),
1623
+ icon: z15.string().optional().describe("Widget icon"),
1395
1624
  /**
1396
1625
  * Field types this widget supports
1397
1626
  *
1398
1627
  * @example ["text", "email", "url"]
1399
1628
  */
1400
- fieldTypes: z13.array(z13.string()).optional().describe("Supported field types"),
1629
+ fieldTypes: z15.array(z15.string()).optional().describe("Supported field types"),
1401
1630
  /**
1402
1631
  * Widget category for organization
1403
1632
  */
1404
- category: z13.enum(["input", "display", "picker", "editor", "custom"]).default("custom").describe("Widget category"),
1633
+ category: z15.enum(["input", "display", "picker", "editor", "custom"]).default("custom").describe("Widget category"),
1405
1634
  /**
1406
1635
  * Widget lifecycle hooks
1407
1636
  */
@@ -1409,11 +1638,11 @@ var WidgetManifestSchema = z13.object({
1409
1638
  /**
1410
1639
  * Custom events this widget emits
1411
1640
  */
1412
- events: z13.array(WidgetEventSchema).optional().describe("Custom events"),
1641
+ events: z15.array(WidgetEventSchema).optional().describe("Custom events"),
1413
1642
  /**
1414
1643
  * Widget configuration properties
1415
1644
  */
1416
- properties: z13.array(WidgetPropertySchema).optional().describe("Configuration properties"),
1645
+ properties: z15.array(WidgetPropertySchema).optional().describe("Configuration properties"),
1417
1646
  /**
1418
1647
  * Widget implementation
1419
1648
  * Defines how to load the widget code
@@ -1423,56 +1652,60 @@ var WidgetManifestSchema = z13.object({
1423
1652
  * Widget dependencies
1424
1653
  * External libraries or scripts needed
1425
1654
  */
1426
- dependencies: z13.array(z13.object({
1427
- name: z13.string(),
1428
- version: z13.string().optional(),
1429
- url: z13.string().url().optional()
1655
+ dependencies: z15.array(z15.object({
1656
+ name: z15.string(),
1657
+ version: z15.string().optional(),
1658
+ url: z15.string().url().optional()
1430
1659
  })).optional().describe("Widget dependencies"),
1431
1660
  /**
1432
1661
  * Widget screenshots for showcase
1433
1662
  */
1434
- screenshots: z13.array(z13.string().url()).optional().describe("Screenshot URLs"),
1663
+ screenshots: z15.array(z15.string().url()).optional().describe("Screenshot URLs"),
1435
1664
  /**
1436
1665
  * Widget documentation URL
1437
1666
  */
1438
- documentation: z13.string().url().optional().describe("Documentation URL"),
1667
+ documentation: z15.string().url().optional().describe("Documentation URL"),
1439
1668
  /**
1440
1669
  * License information
1441
1670
  */
1442
- license: z13.string().optional().describe("License (SPDX identifier)"),
1671
+ license: z15.string().optional().describe("License (SPDX identifier)"),
1443
1672
  /**
1444
1673
  * Tags for discovery
1445
1674
  */
1446
- tags: z13.array(z13.string()).optional().describe("Tags for categorization")
1675
+ tags: z15.array(z15.string()).optional().describe("Tags for categorization"),
1676
+ /** ARIA accessibility attributes */
1677
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes"),
1678
+ /** Performance optimization settings */
1679
+ performance: PerformanceConfigSchema.optional().describe("Performance optimization settings")
1447
1680
  });
1448
- var FieldWidgetPropsSchema = z13.object({
1681
+ var FieldWidgetPropsSchema = z15.object({
1449
1682
  /**
1450
1683
  * Current field value.
1451
1684
  * Type depends on the field type (string, number, boolean, array, object, etc.)
1452
1685
  */
1453
- value: z13.unknown().describe("Current field value"),
1686
+ value: z15.unknown().describe("Current field value"),
1454
1687
  /**
1455
1688
  * Callback function to update the field value.
1456
1689
  * Should be called when user interaction changes the value.
1457
1690
  *
1458
1691
  * @param newValue - The new value to set
1459
1692
  */
1460
- onChange: z13.function().input(z13.tuple([z13.unknown()])).output(z13.void()).describe("Callback to update field value"),
1693
+ onChange: z15.function().input(z15.tuple([z15.unknown()])).output(z15.void()).describe("Callback to update field value"),
1461
1694
  /**
1462
1695
  * Whether the field is in read-only mode.
1463
1696
  * When true, the widget should display the value but not allow editing.
1464
1697
  */
1465
- readonly: z13.boolean().default(false).describe("Read-only mode flag"),
1698
+ readonly: z15.boolean().default(false).describe("Read-only mode flag"),
1466
1699
  /**
1467
1700
  * Whether the field is required.
1468
1701
  * Widget should indicate required state visually and validate accordingly.
1469
1702
  */
1470
- required: z13.boolean().default(false).describe("Required field flag"),
1703
+ required: z15.boolean().default(false).describe("Required field flag"),
1471
1704
  /**
1472
1705
  * Validation error message to display.
1473
1706
  * When present, widget should display the error in its UI.
1474
1707
  */
1475
- error: z13.string().optional().describe("Validation error message"),
1708
+ error: z15.string().optional().describe("Validation error message"),
1476
1709
  /**
1477
1710
  * Complete field definition from the schema.
1478
1711
  * Contains metadata like type, constraints, options, etc.
@@ -1482,57 +1715,63 @@ var FieldWidgetPropsSchema = z13.object({
1482
1715
  * The complete record/document being edited.
1483
1716
  * Useful for conditional logic and cross-field dependencies.
1484
1717
  */
1485
- record: z13.record(z13.string(), z13.unknown()).optional().describe("Complete record data"),
1718
+ record: z15.record(z15.string(), z15.unknown()).optional().describe("Complete record data"),
1486
1719
  /**
1487
1720
  * Custom options passed to the widget.
1488
1721
  * Can contain widget-specific configuration like themes, behaviors, etc.
1489
1722
  */
1490
- options: z13.record(z13.string(), z13.unknown()).optional().describe("Custom widget options")
1723
+ options: z15.record(z15.string(), z15.unknown()).optional().describe("Custom widget options")
1491
1724
  });
1492
1725
 
1493
1726
  // src/ui/component.zod.ts
1494
- import { z as z14 } from "zod";
1495
- var EmptyProps = z14.object({});
1496
- var PageHeaderProps = z14.object({
1497
- title: z14.string().describe("Page title"),
1498
- subtitle: z14.string().optional().describe("Page subtitle"),
1499
- icon: z14.string().optional().describe("Icon name"),
1500
- breadcrumb: z14.boolean().default(true).describe("Show breadcrumb"),
1501
- actions: z14.array(z14.string()).optional().describe("Action IDs to show in header")
1502
- });
1503
- var PageTabsProps = z14.object({
1504
- type: z14.enum(["line", "card", "pill"]).default("line"),
1505
- position: z14.enum(["top", "left"]).default("top"),
1506
- items: z14.array(z14.object({
1507
- label: z14.string(),
1508
- icon: z14.string().optional(),
1509
- children: z14.array(z14.unknown()).describe("Child components")
1510
- }))
1511
- });
1512
- var PageCardProps = z14.object({
1513
- title: z14.string().optional(),
1514
- bordered: z14.boolean().default(true),
1515
- actions: z14.array(z14.string()).optional(),
1727
+ import { z as z16 } from "zod";
1728
+ var EmptyProps = z16.object({});
1729
+ var PageHeaderProps = z16.object({
1730
+ title: I18nLabelSchema.describe("Page title"),
1731
+ subtitle: I18nLabelSchema.optional().describe("Page subtitle"),
1732
+ icon: z16.string().optional().describe("Icon name"),
1733
+ breadcrumb: z16.boolean().default(true).describe("Show breadcrumb"),
1734
+ actions: z16.array(z16.string()).optional().describe("Action IDs to show in header"),
1735
+ /** ARIA accessibility */
1736
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
1737
+ });
1738
+ var PageTabsProps = z16.object({
1739
+ type: z16.enum(["line", "card", "pill"]).default("line"),
1740
+ position: z16.enum(["top", "left"]).default("top"),
1741
+ items: z16.array(z16.object({
1742
+ label: I18nLabelSchema,
1743
+ icon: z16.string().optional(),
1744
+ children: z16.array(z16.unknown()).describe("Child components")
1745
+ })),
1746
+ /** ARIA accessibility */
1747
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
1748
+ });
1749
+ var PageCardProps = z16.object({
1750
+ title: I18nLabelSchema.optional(),
1751
+ bordered: z16.boolean().default(true),
1752
+ actions: z16.array(z16.string()).optional(),
1516
1753
  /** Slot for nested content in the Card body */
1517
- body: z14.array(z14.unknown()).optional().describe("Card content components (slot)"),
1754
+ body: z16.array(z16.unknown()).optional().describe("Card content components (slot)"),
1518
1755
  /** Slot for footer content */
1519
- footer: z14.array(z14.unknown()).optional().describe("Card footer components (slot)")
1756
+ footer: z16.array(z16.unknown()).optional().describe("Card footer components (slot)"),
1757
+ /** ARIA accessibility */
1758
+ aria: AriaPropsSchema.optional().describe("ARIA accessibility attributes")
1520
1759
  });
1521
- var RecordDetailsProps = z14.object({
1522
- columns: z14.enum(["1", "2", "3", "4"]).default("2"),
1523
- layout: z14.enum(["auto", "custom"]).default("auto"),
1760
+ var RecordDetailsProps = z16.object({
1761
+ columns: z16.enum(["1", "2", "3", "4"]).default("2"),
1762
+ layout: z16.enum(["auto", "custom"]).default("auto"),
1524
1763
  // If custom layout
1525
- sections: z14.array(z14.string()).optional().describe("Section IDs to show")
1764
+ sections: z16.array(z16.string()).optional().describe("Section IDs to show")
1526
1765
  });
1527
- var RecordRelatedListProps = z14.object({
1528
- objectName: z14.string().describe("Related object name"),
1529
- relationshipField: z14.string().describe("Field on related object that points to this record"),
1530
- columns: z14.array(z14.string()).describe("Fields to display"),
1531
- sort: z14.string().optional(),
1532
- limit: z14.number().default(5)
1766
+ var RecordRelatedListProps = z16.object({
1767
+ objectName: z16.string().describe("Related object name"),
1768
+ relationshipField: z16.string().describe("Field on related object that points to this record"),
1769
+ columns: z16.array(z16.string()).describe("Fields to display"),
1770
+ sort: z16.string().optional(),
1771
+ limit: z16.number().default(5)
1533
1772
  });
1534
- var RecordHighlightsProps = z14.object({
1535
- fields: z14.array(z14.string()).min(1).max(7).describe("Key fields to highlights (max 7)")
1773
+ var RecordHighlightsProps = z16.object({
1774
+ fields: z16.array(z16.string()).min(1).max(7).describe("Key fields to highlights (max 7)")
1536
1775
  });
1537
1776
  var ComponentPropsMap = {
1538
1777
  // Structure
@@ -1559,142 +1798,223 @@ var ComponentPropsMap = {
1559
1798
  "global:notifications": EmptyProps,
1560
1799
  "user:profile": EmptyProps,
1561
1800
  // AI
1562
- "ai:chat_window": z14.object({ mode: z14.enum(["float", "sidebar", "inline"]).default("float") }),
1563
- "ai:suggestion": z14.object({ context: z14.string().optional() })
1801
+ "ai:chat_window": z16.object({ mode: z16.enum(["float", "sidebar", "inline"]).default("float") }),
1802
+ "ai:suggestion": z16.object({ context: z16.string().optional() })
1564
1803
  };
1565
1804
 
1566
1805
  // src/ui/theme.zod.ts
1567
- import { z as z15 } from "zod";
1568
- var ColorPaletteSchema = z15.object({
1569
- primary: z15.string().describe("Primary brand color (hex, rgb, or hsl)"),
1570
- secondary: z15.string().optional().describe("Secondary brand color"),
1571
- accent: z15.string().optional().describe("Accent color for highlights"),
1572
- success: z15.string().optional().describe("Success state color (default: green)"),
1573
- warning: z15.string().optional().describe("Warning state color (default: yellow)"),
1574
- error: z15.string().optional().describe("Error state color (default: red)"),
1575
- info: z15.string().optional().describe("Info state color (default: blue)"),
1806
+ import { z as z19 } from "zod";
1807
+
1808
+ // src/ui/touch.zod.ts
1809
+ import { z as z17 } from "zod";
1810
+ var TouchTargetConfigSchema = z17.object({
1811
+ minWidth: z17.number().default(44).describe("Minimum touch target width in pixels (WCAG 2.5.5: 44px)"),
1812
+ minHeight: z17.number().default(44).describe("Minimum touch target height in pixels (WCAG 2.5.5: 44px)"),
1813
+ padding: z17.number().optional().describe("Additional padding around touch target in pixels"),
1814
+ hitSlop: z17.object({
1815
+ top: z17.number().optional().describe("Extra hit area above the element"),
1816
+ right: z17.number().optional().describe("Extra hit area to the right of the element"),
1817
+ bottom: z17.number().optional().describe("Extra hit area below the element"),
1818
+ left: z17.number().optional().describe("Extra hit area to the left of the element")
1819
+ }).optional().describe("Invisible hit area extension beyond the visible bounds")
1820
+ }).describe("Touch target sizing configuration (WCAG accessible)");
1821
+ var GestureTypeSchema = z17.enum([
1822
+ "swipe",
1823
+ "pinch",
1824
+ "long_press",
1825
+ "double_tap",
1826
+ "drag",
1827
+ "rotate",
1828
+ "pan"
1829
+ ]).describe("Touch gesture type");
1830
+ var SwipeDirectionSchema = z17.enum(["up", "down", "left", "right"]);
1831
+ var SwipeGestureConfigSchema = z17.object({
1832
+ direction: z17.array(SwipeDirectionSchema).describe("Allowed swipe directions"),
1833
+ threshold: z17.number().optional().describe("Minimum distance in pixels to recognize swipe"),
1834
+ velocity: z17.number().optional().describe("Minimum velocity (px/ms) to trigger swipe")
1835
+ }).describe("Swipe gesture recognition settings");
1836
+ var PinchGestureConfigSchema = z17.object({
1837
+ minScale: z17.number().optional().describe("Minimum scale factor (e.g., 0.5 for 50%)"),
1838
+ maxScale: z17.number().optional().describe("Maximum scale factor (e.g., 3.0 for 300%)")
1839
+ }).describe("Pinch/zoom gesture recognition settings");
1840
+ var LongPressGestureConfigSchema = z17.object({
1841
+ duration: z17.number().default(500).describe("Hold duration in milliseconds to trigger long press"),
1842
+ moveTolerance: z17.number().optional().describe("Max movement in pixels allowed during press")
1843
+ }).describe("Long press gesture recognition settings");
1844
+ var GestureConfigSchema = z17.object({
1845
+ type: GestureTypeSchema.describe("Gesture type to configure"),
1846
+ label: I18nLabelSchema.optional().describe("Descriptive label for the gesture action"),
1847
+ enabled: z17.boolean().default(true).describe("Whether this gesture is active"),
1848
+ swipe: SwipeGestureConfigSchema.optional().describe("Swipe gesture settings (when type is swipe)"),
1849
+ pinch: PinchGestureConfigSchema.optional().describe("Pinch gesture settings (when type is pinch)"),
1850
+ longPress: LongPressGestureConfigSchema.optional().describe("Long press settings (when type is long_press)")
1851
+ }).describe("Per-gesture configuration");
1852
+ var TouchInteractionSchema = z17.object({
1853
+ gestures: z17.array(GestureConfigSchema).optional().describe("Configured gesture recognizers"),
1854
+ touchTarget: TouchTargetConfigSchema.optional().describe("Touch target sizing and hit area"),
1855
+ hapticFeedback: z17.boolean().optional().describe("Enable haptic feedback on touch interactions")
1856
+ }).merge(AriaPropsSchema.partial()).describe("Touch and gesture interaction configuration");
1857
+
1858
+ // src/ui/keyboard.zod.ts
1859
+ import { z as z18 } from "zod";
1860
+ var FocusTrapConfigSchema = z18.object({
1861
+ enabled: z18.boolean().default(false).describe("Enable focus trapping within this container"),
1862
+ initialFocus: z18.string().optional().describe("CSS selector for the element to focus on activation"),
1863
+ returnFocus: z18.boolean().default(true).describe("Return focus to trigger element on deactivation"),
1864
+ escapeDeactivates: z18.boolean().default(true).describe("Allow Escape key to deactivate the focus trap")
1865
+ }).describe("Focus trap configuration for modal-like containers");
1866
+ var KeyboardShortcutSchema = z18.object({
1867
+ key: z18.string().describe('Key combination (e.g., "Ctrl+S", "Alt+N", "Escape")'),
1868
+ action: z18.string().describe("Action identifier to invoke when shortcut is triggered"),
1869
+ description: I18nLabelSchema.optional().describe("Human-readable description of what the shortcut does"),
1870
+ scope: z18.enum(["global", "view", "form", "modal", "list"]).default("global").describe("Scope in which this shortcut is active")
1871
+ }).describe("Keyboard shortcut binding");
1872
+ var FocusManagementSchema = z18.object({
1873
+ tabOrder: z18.enum(["auto", "manual"]).default("auto").describe("Tab order strategy: auto (DOM order) or manual (explicit tabIndex)"),
1874
+ skipLinks: z18.boolean().default(false).describe("Provide skip-to-content navigation links"),
1875
+ focusVisible: z18.boolean().default(true).describe("Show visible focus indicators for keyboard users"),
1876
+ focusTrap: FocusTrapConfigSchema.optional().describe("Focus trap settings"),
1877
+ arrowNavigation: z18.boolean().default(false).describe("Enable arrow key navigation between focusable items")
1878
+ }).describe("Focus and tab navigation management");
1879
+ var KeyboardNavigationConfigSchema = z18.object({
1880
+ shortcuts: z18.array(KeyboardShortcutSchema).optional().describe("Registered keyboard shortcuts"),
1881
+ focusManagement: FocusManagementSchema.optional().describe("Focus and tab order management"),
1882
+ rovingTabindex: z18.boolean().default(false).describe("Enable roving tabindex pattern for composite widgets")
1883
+ }).merge(AriaPropsSchema.partial()).describe("Keyboard navigation and shortcut configuration");
1884
+
1885
+ // src/ui/theme.zod.ts
1886
+ var ColorPaletteSchema = z19.object({
1887
+ primary: z19.string().describe("Primary brand color (hex, rgb, or hsl)"),
1888
+ secondary: z19.string().optional().describe("Secondary brand color"),
1889
+ accent: z19.string().optional().describe("Accent color for highlights"),
1890
+ success: z19.string().optional().describe("Success state color (default: green)"),
1891
+ warning: z19.string().optional().describe("Warning state color (default: yellow)"),
1892
+ error: z19.string().optional().describe("Error state color (default: red)"),
1893
+ info: z19.string().optional().describe("Info state color (default: blue)"),
1576
1894
  // Neutral colors
1577
- background: z15.string().optional().describe("Background color"),
1578
- surface: z15.string().optional().describe("Surface/card background color"),
1579
- text: z15.string().optional().describe("Primary text color"),
1580
- textSecondary: z15.string().optional().describe("Secondary text color"),
1581
- border: z15.string().optional().describe("Border color"),
1582
- disabled: z15.string().optional().describe("Disabled state color"),
1895
+ background: z19.string().optional().describe("Background color"),
1896
+ surface: z19.string().optional().describe("Surface/card background color"),
1897
+ text: z19.string().optional().describe("Primary text color"),
1898
+ textSecondary: z19.string().optional().describe("Secondary text color"),
1899
+ border: z19.string().optional().describe("Border color"),
1900
+ disabled: z19.string().optional().describe("Disabled state color"),
1583
1901
  // Color variants (shades)
1584
- primaryLight: z15.string().optional().describe("Lighter shade of primary"),
1585
- primaryDark: z15.string().optional().describe("Darker shade of primary"),
1586
- secondaryLight: z15.string().optional().describe("Lighter shade of secondary"),
1587
- secondaryDark: z15.string().optional().describe("Darker shade of secondary")
1588
- });
1589
- var TypographySchema = z15.object({
1590
- fontFamily: z15.object({
1591
- base: z15.string().optional().describe("Base font family (default: system fonts)"),
1592
- heading: z15.string().optional().describe("Heading font family"),
1593
- mono: z15.string().optional().describe("Monospace font family for code")
1902
+ primaryLight: z19.string().optional().describe("Lighter shade of primary"),
1903
+ primaryDark: z19.string().optional().describe("Darker shade of primary"),
1904
+ secondaryLight: z19.string().optional().describe("Lighter shade of secondary"),
1905
+ secondaryDark: z19.string().optional().describe("Darker shade of secondary")
1906
+ });
1907
+ var TypographySchema = z19.object({
1908
+ fontFamily: z19.object({
1909
+ base: z19.string().optional().describe("Base font family (default: system fonts)"),
1910
+ heading: z19.string().optional().describe("Heading font family"),
1911
+ mono: z19.string().optional().describe("Monospace font family for code")
1594
1912
  }).optional(),
1595
- fontSize: z15.object({
1596
- xs: z15.string().optional().describe("Extra small font size (e.g., 0.75rem)"),
1597
- sm: z15.string().optional().describe("Small font size (e.g., 0.875rem)"),
1598
- base: z15.string().optional().describe("Base font size (e.g., 1rem)"),
1599
- lg: z15.string().optional().describe("Large font size (e.g., 1.125rem)"),
1600
- xl: z15.string().optional().describe("Extra large font size (e.g., 1.25rem)"),
1601
- "2xl": z15.string().optional().describe("2X large font size (e.g., 1.5rem)"),
1602
- "3xl": z15.string().optional().describe("3X large font size (e.g., 1.875rem)"),
1603
- "4xl": z15.string().optional().describe("4X large font size (e.g., 2.25rem)")
1913
+ fontSize: z19.object({
1914
+ xs: z19.string().optional().describe("Extra small font size (e.g., 0.75rem)"),
1915
+ sm: z19.string().optional().describe("Small font size (e.g., 0.875rem)"),
1916
+ base: z19.string().optional().describe("Base font size (e.g., 1rem)"),
1917
+ lg: z19.string().optional().describe("Large font size (e.g., 1.125rem)"),
1918
+ xl: z19.string().optional().describe("Extra large font size (e.g., 1.25rem)"),
1919
+ "2xl": z19.string().optional().describe("2X large font size (e.g., 1.5rem)"),
1920
+ "3xl": z19.string().optional().describe("3X large font size (e.g., 1.875rem)"),
1921
+ "4xl": z19.string().optional().describe("4X large font size (e.g., 2.25rem)")
1604
1922
  }).optional(),
1605
- fontWeight: z15.object({
1606
- light: z15.number().optional().describe("Light weight (default: 300)"),
1607
- normal: z15.number().optional().describe("Normal weight (default: 400)"),
1608
- medium: z15.number().optional().describe("Medium weight (default: 500)"),
1609
- semibold: z15.number().optional().describe("Semibold weight (default: 600)"),
1610
- bold: z15.number().optional().describe("Bold weight (default: 700)")
1923
+ fontWeight: z19.object({
1924
+ light: z19.number().optional().describe("Light weight (default: 300)"),
1925
+ normal: z19.number().optional().describe("Normal weight (default: 400)"),
1926
+ medium: z19.number().optional().describe("Medium weight (default: 500)"),
1927
+ semibold: z19.number().optional().describe("Semibold weight (default: 600)"),
1928
+ bold: z19.number().optional().describe("Bold weight (default: 700)")
1611
1929
  }).optional(),
1612
- lineHeight: z15.object({
1613
- tight: z15.string().optional().describe("Tight line height (e.g., 1.25)"),
1614
- normal: z15.string().optional().describe("Normal line height (e.g., 1.5)"),
1615
- relaxed: z15.string().optional().describe("Relaxed line height (e.g., 1.75)"),
1616
- loose: z15.string().optional().describe("Loose line height (e.g., 2)")
1930
+ lineHeight: z19.object({
1931
+ tight: z19.string().optional().describe("Tight line height (e.g., 1.25)"),
1932
+ normal: z19.string().optional().describe("Normal line height (e.g., 1.5)"),
1933
+ relaxed: z19.string().optional().describe("Relaxed line height (e.g., 1.75)"),
1934
+ loose: z19.string().optional().describe("Loose line height (e.g., 2)")
1617
1935
  }).optional(),
1618
- letterSpacing: z15.object({
1619
- tighter: z15.string().optional().describe("Tighter letter spacing (e.g., -0.05em)"),
1620
- tight: z15.string().optional().describe("Tight letter spacing (e.g., -0.025em)"),
1621
- normal: z15.string().optional().describe("Normal letter spacing (e.g., 0)"),
1622
- wide: z15.string().optional().describe("Wide letter spacing (e.g., 0.025em)"),
1623
- wider: z15.string().optional().describe("Wider letter spacing (e.g., 0.05em)")
1936
+ letterSpacing: z19.object({
1937
+ tighter: z19.string().optional().describe("Tighter letter spacing (e.g., -0.05em)"),
1938
+ tight: z19.string().optional().describe("Tight letter spacing (e.g., -0.025em)"),
1939
+ normal: z19.string().optional().describe("Normal letter spacing (e.g., 0)"),
1940
+ wide: z19.string().optional().describe("Wide letter spacing (e.g., 0.025em)"),
1941
+ wider: z19.string().optional().describe("Wider letter spacing (e.g., 0.05em)")
1624
1942
  }).optional()
1625
1943
  });
1626
- var SpacingSchema = z15.object({
1627
- "0": z15.string().optional().describe("0 spacing (0)"),
1628
- "1": z15.string().optional().describe("Spacing unit 1 (e.g., 0.25rem)"),
1629
- "2": z15.string().optional().describe("Spacing unit 2 (e.g., 0.5rem)"),
1630
- "3": z15.string().optional().describe("Spacing unit 3 (e.g., 0.75rem)"),
1631
- "4": z15.string().optional().describe("Spacing unit 4 (e.g., 1rem)"),
1632
- "5": z15.string().optional().describe("Spacing unit 5 (e.g., 1.25rem)"),
1633
- "6": z15.string().optional().describe("Spacing unit 6 (e.g., 1.5rem)"),
1634
- "8": z15.string().optional().describe("Spacing unit 8 (e.g., 2rem)"),
1635
- "10": z15.string().optional().describe("Spacing unit 10 (e.g., 2.5rem)"),
1636
- "12": z15.string().optional().describe("Spacing unit 12 (e.g., 3rem)"),
1637
- "16": z15.string().optional().describe("Spacing unit 16 (e.g., 4rem)"),
1638
- "20": z15.string().optional().describe("Spacing unit 20 (e.g., 5rem)"),
1639
- "24": z15.string().optional().describe("Spacing unit 24 (e.g., 6rem)")
1640
- });
1641
- var BorderRadiusSchema = z15.object({
1642
- none: z15.string().optional().describe("No border radius (0)"),
1643
- sm: z15.string().optional().describe("Small border radius (e.g., 0.125rem)"),
1644
- base: z15.string().optional().describe("Base border radius (e.g., 0.25rem)"),
1645
- md: z15.string().optional().describe("Medium border radius (e.g., 0.375rem)"),
1646
- lg: z15.string().optional().describe("Large border radius (e.g., 0.5rem)"),
1647
- xl: z15.string().optional().describe("Extra large border radius (e.g., 0.75rem)"),
1648
- "2xl": z15.string().optional().describe("2X large border radius (e.g., 1rem)"),
1649
- full: z15.string().optional().describe("Full border radius (50%)")
1650
- });
1651
- var ShadowSchema = z15.object({
1652
- none: z15.string().optional().describe("No shadow"),
1653
- sm: z15.string().optional().describe("Small shadow"),
1654
- base: z15.string().optional().describe("Base shadow"),
1655
- md: z15.string().optional().describe("Medium shadow"),
1656
- lg: z15.string().optional().describe("Large shadow"),
1657
- xl: z15.string().optional().describe("Extra large shadow"),
1658
- "2xl": z15.string().optional().describe("2X large shadow"),
1659
- inner: z15.string().optional().describe("Inner shadow (inset)")
1660
- });
1661
- var BreakpointsSchema = z15.object({
1662
- xs: z15.string().optional().describe("Extra small breakpoint (e.g., 480px)"),
1663
- sm: z15.string().optional().describe("Small breakpoint (e.g., 640px)"),
1664
- md: z15.string().optional().describe("Medium breakpoint (e.g., 768px)"),
1665
- lg: z15.string().optional().describe("Large breakpoint (e.g., 1024px)"),
1666
- xl: z15.string().optional().describe("Extra large breakpoint (e.g., 1280px)"),
1667
- "2xl": z15.string().optional().describe("2X large breakpoint (e.g., 1536px)")
1668
- });
1669
- var AnimationSchema = z15.object({
1670
- duration: z15.object({
1671
- fast: z15.string().optional().describe("Fast animation (e.g., 150ms)"),
1672
- base: z15.string().optional().describe("Base animation (e.g., 300ms)"),
1673
- slow: z15.string().optional().describe("Slow animation (e.g., 500ms)")
1944
+ var SpacingSchema = z19.object({
1945
+ "0": z19.string().optional().describe("0 spacing (0)"),
1946
+ "1": z19.string().optional().describe("Spacing unit 1 (e.g., 0.25rem)"),
1947
+ "2": z19.string().optional().describe("Spacing unit 2 (e.g., 0.5rem)"),
1948
+ "3": z19.string().optional().describe("Spacing unit 3 (e.g., 0.75rem)"),
1949
+ "4": z19.string().optional().describe("Spacing unit 4 (e.g., 1rem)"),
1950
+ "5": z19.string().optional().describe("Spacing unit 5 (e.g., 1.25rem)"),
1951
+ "6": z19.string().optional().describe("Spacing unit 6 (e.g., 1.5rem)"),
1952
+ "8": z19.string().optional().describe("Spacing unit 8 (e.g., 2rem)"),
1953
+ "10": z19.string().optional().describe("Spacing unit 10 (e.g., 2.5rem)"),
1954
+ "12": z19.string().optional().describe("Spacing unit 12 (e.g., 3rem)"),
1955
+ "16": z19.string().optional().describe("Spacing unit 16 (e.g., 4rem)"),
1956
+ "20": z19.string().optional().describe("Spacing unit 20 (e.g., 5rem)"),
1957
+ "24": z19.string().optional().describe("Spacing unit 24 (e.g., 6rem)")
1958
+ });
1959
+ var BorderRadiusSchema = z19.object({
1960
+ none: z19.string().optional().describe("No border radius (0)"),
1961
+ sm: z19.string().optional().describe("Small border radius (e.g., 0.125rem)"),
1962
+ base: z19.string().optional().describe("Base border radius (e.g., 0.25rem)"),
1963
+ md: z19.string().optional().describe("Medium border radius (e.g., 0.375rem)"),
1964
+ lg: z19.string().optional().describe("Large border radius (e.g., 0.5rem)"),
1965
+ xl: z19.string().optional().describe("Extra large border radius (e.g., 0.75rem)"),
1966
+ "2xl": z19.string().optional().describe("2X large border radius (e.g., 1rem)"),
1967
+ full: z19.string().optional().describe("Full border radius (50%)")
1968
+ });
1969
+ var ShadowSchema = z19.object({
1970
+ none: z19.string().optional().describe("No shadow"),
1971
+ sm: z19.string().optional().describe("Small shadow"),
1972
+ base: z19.string().optional().describe("Base shadow"),
1973
+ md: z19.string().optional().describe("Medium shadow"),
1974
+ lg: z19.string().optional().describe("Large shadow"),
1975
+ xl: z19.string().optional().describe("Extra large shadow"),
1976
+ "2xl": z19.string().optional().describe("2X large shadow"),
1977
+ inner: z19.string().optional().describe("Inner shadow (inset)")
1978
+ });
1979
+ var BreakpointsSchema = z19.object({
1980
+ xs: z19.string().optional().describe("Extra small breakpoint (e.g., 480px)"),
1981
+ sm: z19.string().optional().describe("Small breakpoint (e.g., 640px)"),
1982
+ md: z19.string().optional().describe("Medium breakpoint (e.g., 768px)"),
1983
+ lg: z19.string().optional().describe("Large breakpoint (e.g., 1024px)"),
1984
+ xl: z19.string().optional().describe("Extra large breakpoint (e.g., 1280px)"),
1985
+ "2xl": z19.string().optional().describe("2X large breakpoint (e.g., 1536px)")
1986
+ });
1987
+ var AnimationSchema = z19.object({
1988
+ duration: z19.object({
1989
+ fast: z19.string().optional().describe("Fast animation (e.g., 150ms)"),
1990
+ base: z19.string().optional().describe("Base animation (e.g., 300ms)"),
1991
+ slow: z19.string().optional().describe("Slow animation (e.g., 500ms)")
1674
1992
  }).optional(),
1675
- timing: z15.object({
1676
- linear: z15.string().optional().describe("Linear timing function"),
1677
- ease: z15.string().optional().describe("Ease timing function"),
1678
- easeIn: z15.string().optional().describe("Ease-in timing function"),
1679
- easeOut: z15.string().optional().describe("Ease-out timing function"),
1680
- easeInOut: z15.string().optional().describe("Ease-in-out timing function")
1993
+ timing: z19.object({
1994
+ linear: z19.string().optional().describe("Linear timing function"),
1995
+ ease: z19.string().optional().describe("Ease timing function"),
1996
+ easeIn: z19.string().optional().describe("Ease-in timing function"),
1997
+ easeOut: z19.string().optional().describe("Ease-out timing function"),
1998
+ easeInOut: z19.string().optional().describe("Ease-in-out timing function")
1681
1999
  }).optional()
1682
2000
  });
1683
- var ZIndexSchema = z15.object({
1684
- base: z15.number().optional().describe("Base z-index (e.g., 0)"),
1685
- dropdown: z15.number().optional().describe("Dropdown z-index (e.g., 1000)"),
1686
- sticky: z15.number().optional().describe("Sticky z-index (e.g., 1020)"),
1687
- fixed: z15.number().optional().describe("Fixed z-index (e.g., 1030)"),
1688
- modalBackdrop: z15.number().optional().describe("Modal backdrop z-index (e.g., 1040)"),
1689
- modal: z15.number().optional().describe("Modal z-index (e.g., 1050)"),
1690
- popover: z15.number().optional().describe("Popover z-index (e.g., 1060)"),
1691
- tooltip: z15.number().optional().describe("Tooltip z-index (e.g., 1070)")
1692
- });
1693
- var ThemeMode = z15.enum(["light", "dark", "auto"]);
1694
- var ThemeSchema = z15.object({
2001
+ var ZIndexSchema = z19.object({
2002
+ base: z19.number().optional().describe("Base z-index (e.g., 0)"),
2003
+ dropdown: z19.number().optional().describe("Dropdown z-index (e.g., 1000)"),
2004
+ sticky: z19.number().optional().describe("Sticky z-index (e.g., 1020)"),
2005
+ fixed: z19.number().optional().describe("Fixed z-index (e.g., 1030)"),
2006
+ modalBackdrop: z19.number().optional().describe("Modal backdrop z-index (e.g., 1040)"),
2007
+ modal: z19.number().optional().describe("Modal z-index (e.g., 1050)"),
2008
+ popover: z19.number().optional().describe("Popover z-index (e.g., 1060)"),
2009
+ tooltip: z19.number().optional().describe("Tooltip z-index (e.g., 1070)")
2010
+ });
2011
+ var ThemeMode = z19.enum(["light", "dark", "auto"]);
2012
+ var DensityMode = z19.enum(["compact", "regular", "spacious"]);
2013
+ var WcagContrastLevel = z19.enum(["AA", "AAA"]);
2014
+ var ThemeSchema = z19.object({
1695
2015
  name: SnakeCaseIdentifierSchema.describe("Unique theme identifier (snake_case)"),
1696
- label: z15.string().describe("Human-readable theme name"),
1697
- description: z15.string().optional().describe("Theme description"),
2016
+ label: z19.string().describe("Human-readable theme name"),
2017
+ description: z19.string().optional().describe("Theme description"),
1698
2018
  /** Theme mode */
1699
2019
  mode: ThemeMode.default("light").describe("Theme mode (light, dark, or auto)"),
1700
2020
  /** Color system */
@@ -1714,25 +2034,237 @@ var ThemeSchema = z15.object({
1714
2034
  /** Z-Index */
1715
2035
  zIndex: ZIndexSchema.optional().describe("Z-index scale for layering"),
1716
2036
  /** Custom CSS variables */
1717
- customVars: z15.record(z15.string(), z15.string()).optional().describe("Custom CSS variables (key-value pairs)"),
2037
+ customVars: z19.record(z19.string(), z19.string()).optional().describe("Custom CSS variables (key-value pairs)"),
1718
2038
  /** Logo */
1719
- logo: z15.object({
1720
- light: z15.string().optional().describe("Logo URL for light mode"),
1721
- dark: z15.string().optional().describe("Logo URL for dark mode"),
1722
- favicon: z15.string().optional().describe("Favicon URL")
2039
+ logo: z19.object({
2040
+ light: z19.string().optional().describe("Logo URL for light mode"),
2041
+ dark: z19.string().optional().describe("Logo URL for dark mode"),
2042
+ favicon: z19.string().optional().describe("Favicon URL")
1723
2043
  }).optional().describe("Logo assets"),
1724
2044
  /** Extends another theme */
1725
- extends: z15.string().optional().describe("Base theme to extend from")
2045
+ extends: z19.string().optional().describe("Base theme to extend from"),
2046
+ /** Display density mode */
2047
+ density: DensityMode.optional().describe("Display density: compact, regular, or spacious"),
2048
+ /** WCAG contrast level requirement */
2049
+ wcagContrast: WcagContrastLevel.optional().describe("WCAG color contrast level (AA or AAA)"),
2050
+ /** Right-to-left language support */
2051
+ rtl: z19.boolean().optional().describe("Enable right-to-left layout direction"),
2052
+ /** Touch target accessibility configuration */
2053
+ touchTarget: TouchTargetConfigSchema.optional().describe("Touch target sizing defaults"),
2054
+ /** Keyboard navigation and focus management */
2055
+ keyboardNavigation: FocusManagementSchema.optional().describe("Keyboard focus management settings")
1726
2056
  });
2057
+
2058
+ // src/ui/offline.zod.ts
2059
+ import { z as z20 } from "zod";
2060
+ var OfflineStrategySchema = z20.enum([
2061
+ "cache_first",
2062
+ "network_first",
2063
+ "stale_while_revalidate",
2064
+ "network_only",
2065
+ "cache_only"
2066
+ ]).describe("Data fetching strategy for offline/online transitions");
2067
+ var ConflictResolutionSchema = z20.enum([
2068
+ "client_wins",
2069
+ "server_wins",
2070
+ "manual",
2071
+ "last_write_wins"
2072
+ ]).describe("How to resolve conflicts when syncing offline changes");
2073
+ var SyncConfigSchema = z20.object({
2074
+ strategy: OfflineStrategySchema.default("network_first").describe("Sync fetch strategy"),
2075
+ conflictResolution: ConflictResolutionSchema.default("last_write_wins").describe("Conflict resolution policy"),
2076
+ retryInterval: z20.number().optional().describe("Retry interval in milliseconds between sync attempts"),
2077
+ maxRetries: z20.number().optional().describe("Maximum number of sync retry attempts"),
2078
+ batchSize: z20.number().optional().describe("Number of mutations to sync per batch")
2079
+ }).describe("Offline-to-online synchronization configuration");
2080
+ var PersistStorageSchema = z20.enum([
2081
+ "indexeddb",
2082
+ "localstorage",
2083
+ "sqlite"
2084
+ ]).describe("Client-side storage backend for offline cache");
2085
+ var EvictionPolicySchema = z20.enum([
2086
+ "lru",
2087
+ "lfu",
2088
+ "fifo"
2089
+ ]).describe("Cache eviction policy");
2090
+ var OfflineCacheConfigSchema = z20.object({
2091
+ maxSize: z20.number().optional().describe("Maximum cache size in bytes"),
2092
+ ttl: z20.number().optional().describe("Time-to-live for cached entries in milliseconds"),
2093
+ persistStorage: PersistStorageSchema.default("indexeddb").describe("Storage backend"),
2094
+ evictionPolicy: EvictionPolicySchema.default("lru").describe("Cache eviction policy when full")
2095
+ }).describe("Client-side offline cache configuration");
2096
+ var OfflineConfigSchema = z20.object({
2097
+ enabled: z20.boolean().default(false).describe("Enable offline support"),
2098
+ strategy: OfflineStrategySchema.default("network_first").describe("Default offline fetch strategy"),
2099
+ cache: OfflineCacheConfigSchema.optional().describe("Cache settings for offline data"),
2100
+ sync: SyncConfigSchema.optional().describe("Sync settings for offline mutations"),
2101
+ offlineIndicator: z20.boolean().default(true).describe("Show a visual indicator when offline"),
2102
+ offlineMessage: I18nLabelSchema.optional().describe("Customizable offline status message shown to users"),
2103
+ queueMaxSize: z20.number().optional().describe("Maximum number of queued offline mutations")
2104
+ }).describe("Offline support configuration");
2105
+
2106
+ // src/ui/animation.zod.ts
2107
+ import { z as z21 } from "zod";
2108
+ var TransitionPresetSchema = z21.enum([
2109
+ "fade",
2110
+ "slide_up",
2111
+ "slide_down",
2112
+ "slide_left",
2113
+ "slide_right",
2114
+ "scale",
2115
+ "rotate",
2116
+ "flip",
2117
+ "none"
2118
+ ]).describe("Transition preset type");
2119
+ var EasingFunctionSchema = z21.enum([
2120
+ "linear",
2121
+ "ease",
2122
+ "ease_in",
2123
+ "ease_out",
2124
+ "ease_in_out",
2125
+ "spring"
2126
+ ]).describe("Animation easing function");
2127
+ var TransitionConfigSchema = z21.object({
2128
+ preset: TransitionPresetSchema.optional().describe("Transition preset to apply"),
2129
+ duration: z21.number().optional().describe("Transition duration in milliseconds"),
2130
+ easing: EasingFunctionSchema.optional().describe("Easing function for the transition"),
2131
+ delay: z21.number().optional().describe("Delay before transition starts in milliseconds"),
2132
+ customKeyframes: z21.string().optional().describe("CSS @keyframes name for custom animations")
2133
+ }).describe("Animation transition configuration");
2134
+ var AnimationTriggerSchema = z21.enum([
2135
+ "on_mount",
2136
+ "on_unmount",
2137
+ "on_hover",
2138
+ "on_focus",
2139
+ "on_click",
2140
+ "on_scroll",
2141
+ "on_visible"
2142
+ ]).describe("Event that triggers the animation");
2143
+ var ComponentAnimationSchema = z21.object({
2144
+ label: I18nLabelSchema.optional().describe("Descriptive label for this animation configuration"),
2145
+ enter: TransitionConfigSchema.optional().describe("Enter/mount animation"),
2146
+ exit: TransitionConfigSchema.optional().describe("Exit/unmount animation"),
2147
+ hover: TransitionConfigSchema.optional().describe("Hover state animation"),
2148
+ trigger: AnimationTriggerSchema.optional().describe("When to trigger the animation"),
2149
+ reducedMotion: z21.enum(["respect", "disable", "alternative"]).default("respect").describe("Accessibility: how to handle prefers-reduced-motion")
2150
+ }).merge(AriaPropsSchema.partial()).describe("Component-level animation configuration");
2151
+ var PageTransitionSchema = z21.object({
2152
+ type: TransitionPresetSchema.default("fade").describe("Page transition type"),
2153
+ duration: z21.number().default(300).describe("Transition duration in milliseconds"),
2154
+ easing: EasingFunctionSchema.default("ease_in_out").describe("Easing function for the transition"),
2155
+ crossFade: z21.boolean().default(false).describe("Whether to cross-fade between pages")
2156
+ }).describe("Page-level transition configuration");
2157
+ var MotionConfigSchema = z21.object({
2158
+ label: I18nLabelSchema.optional().describe("Descriptive label for the motion configuration"),
2159
+ defaultTransition: TransitionConfigSchema.optional().describe("Default transition applied to all animations"),
2160
+ pageTransitions: PageTransitionSchema.optional().describe("Page navigation transition settings"),
2161
+ componentAnimations: z21.record(z21.string(), ComponentAnimationSchema).optional().describe("Component name to animation configuration mapping"),
2162
+ reducedMotion: z21.boolean().default(false).describe("When true, respect prefers-reduced-motion and suppress animations globally"),
2163
+ enabled: z21.boolean().default(true).describe("Enable or disable all animations globally")
2164
+ }).describe("Top-level motion and animation design configuration");
2165
+
2166
+ // src/ui/notification.zod.ts
2167
+ import { z as z22 } from "zod";
2168
+ var NotificationTypeSchema = z22.enum([
2169
+ "toast",
2170
+ "snackbar",
2171
+ "banner",
2172
+ "alert",
2173
+ "inline"
2174
+ ]).describe("Notification presentation style");
2175
+ var NotificationSeveritySchema = z22.enum([
2176
+ "info",
2177
+ "success",
2178
+ "warning",
2179
+ "error"
2180
+ ]).describe("Notification severity level");
2181
+ var NotificationPositionSchema = z22.enum([
2182
+ "top_left",
2183
+ "top_center",
2184
+ "top_right",
2185
+ "bottom_left",
2186
+ "bottom_center",
2187
+ "bottom_right"
2188
+ ]).describe("Screen position for notification placement");
2189
+ var NotificationActionSchema = z22.object({
2190
+ label: I18nLabelSchema.describe("Action button label"),
2191
+ action: z22.string().describe("Action identifier to execute"),
2192
+ variant: z22.enum(["primary", "secondary", "link"]).default("primary").describe("Button variant style")
2193
+ }).describe("Notification action button");
2194
+ var NotificationSchema = z22.object({
2195
+ type: NotificationTypeSchema.default("toast").describe("Notification presentation style"),
2196
+ severity: NotificationSeveritySchema.default("info").describe("Notification severity level"),
2197
+ title: I18nLabelSchema.optional().describe("Notification title"),
2198
+ message: I18nLabelSchema.describe("Notification message body"),
2199
+ icon: z22.string().optional().describe("Icon name override"),
2200
+ duration: z22.number().optional().describe("Auto-dismiss duration in ms, omit for persistent"),
2201
+ dismissible: z22.boolean().default(true).describe("Allow user to dismiss the notification"),
2202
+ actions: z22.array(NotificationActionSchema).optional().describe("Action buttons"),
2203
+ position: NotificationPositionSchema.optional().describe("Override default position")
2204
+ }).merge(AriaPropsSchema.partial()).describe("Notification instance definition");
2205
+ var NotificationConfigSchema = z22.object({
2206
+ defaultPosition: NotificationPositionSchema.default("top_right").describe("Default screen position for notifications"),
2207
+ defaultDuration: z22.number().default(5e3).describe("Default auto-dismiss duration in ms"),
2208
+ maxVisible: z22.number().default(5).describe("Maximum number of notifications visible at once"),
2209
+ stackDirection: z22.enum(["up", "down"]).default("down").describe("Stack direction for multiple notifications"),
2210
+ pauseOnHover: z22.boolean().default(true).describe("Pause auto-dismiss timer on hover")
2211
+ }).describe("Global notification system configuration");
2212
+
2213
+ // src/ui/dnd.zod.ts
2214
+ import { z as z23 } from "zod";
2215
+ var DragHandleSchema = z23.enum([
2216
+ "element",
2217
+ "handle",
2218
+ "grip_icon"
2219
+ ]).describe("Drag initiation method");
2220
+ var DropEffectSchema = z23.enum([
2221
+ "move",
2222
+ "copy",
2223
+ "link",
2224
+ "none"
2225
+ ]).describe("Drop operation effect");
2226
+ var DragConstraintSchema = z23.object({
2227
+ axis: z23.enum(["x", "y", "both"]).default("both").describe("Constrain drag axis"),
2228
+ bounds: z23.enum(["parent", "viewport", "none"]).default("none").describe("Constrain within bounds"),
2229
+ grid: z23.tuple([z23.number(), z23.number()]).optional().describe("Snap to grid [x, y] in pixels")
2230
+ }).describe("Drag movement constraints");
2231
+ var DropZoneSchema = z23.object({
2232
+ label: I18nLabelSchema.optional().describe("Accessible label for the drop zone"),
2233
+ accept: z23.array(z23.string()).describe("Accepted drag item types"),
2234
+ maxItems: z23.number().optional().describe("Maximum items allowed in drop zone"),
2235
+ highlightOnDragOver: z23.boolean().default(true).describe("Highlight drop zone when dragging over"),
2236
+ dropEffect: DropEffectSchema.default("move").describe("Visual effect on drop")
2237
+ }).merge(AriaPropsSchema.partial()).describe("Drop zone configuration");
2238
+ var DragItemSchema = z23.object({
2239
+ type: z23.string().describe("Drag item type identifier for matching with drop zones"),
2240
+ label: I18nLabelSchema.optional().describe("Accessible label describing the draggable item"),
2241
+ handle: DragHandleSchema.default("element").describe("How to initiate drag"),
2242
+ constraint: DragConstraintSchema.optional().describe("Drag movement constraints"),
2243
+ preview: z23.enum(["element", "custom", "none"]).default("element").describe("Drag preview type"),
2244
+ disabled: z23.boolean().default(false).describe("Disable dragging")
2245
+ }).merge(AriaPropsSchema.partial()).describe("Draggable item configuration");
2246
+ var DndConfigSchema = z23.object({
2247
+ enabled: z23.boolean().default(false).describe("Enable drag and drop"),
2248
+ dragItem: DragItemSchema.optional().describe("Configuration for draggable item"),
2249
+ dropZone: DropZoneSchema.optional().describe("Configuration for drop target"),
2250
+ sortable: z23.boolean().default(false).describe("Enable sortable list behavior"),
2251
+ autoScroll: z23.boolean().default(true).describe("Auto-scroll during drag near edges"),
2252
+ touchDelay: z23.number().default(200).describe("Delay in ms before drag starts on touch devices")
2253
+ }).describe("Drag and drop interaction configuration");
1727
2254
  export {
1728
2255
  Action,
1729
2256
  ActionParamSchema,
1730
2257
  ActionSchema,
1731
2258
  AnimationSchema,
2259
+ AnimationTriggerSchema,
1732
2260
  App,
1733
2261
  AppBrandingSchema,
1734
2262
  AppSchema,
2263
+ AriaPropsSchema,
1735
2264
  BorderRadiusSchema,
2265
+ BreakpointColumnMapSchema,
2266
+ BreakpointName,
2267
+ BreakpointOrderMapSchema,
1736
2268
  BreakpointsSchema,
1737
2269
  CalendarConfigSchema,
1738
2270
  ChartAnnotationSchema,
@@ -1742,26 +2274,63 @@ export {
1742
2274
  ChartSeriesSchema,
1743
2275
  ChartTypeSchema,
1744
2276
  ColorPaletteSchema,
2277
+ ColumnSummarySchema,
2278
+ ComponentAnimationSchema,
1745
2279
  ComponentPropsMap,
2280
+ ConflictResolutionSchema,
1746
2281
  Dashboard,
1747
2282
  DashboardNavItemSchema,
1748
2283
  DashboardSchema,
1749
2284
  DashboardWidgetSchema,
2285
+ DateFormatSchema,
2286
+ DensityMode,
2287
+ DndConfigSchema,
2288
+ DragConstraintSchema,
2289
+ DragHandleSchema,
2290
+ DragItemSchema,
2291
+ DropEffectSchema,
2292
+ DropZoneSchema,
2293
+ EasingFunctionSchema,
2294
+ EvictionPolicySchema,
1750
2295
  FieldWidgetPropsSchema,
2296
+ FocusManagementSchema,
2297
+ FocusTrapConfigSchema,
1751
2298
  FormFieldSchema,
1752
2299
  FormSectionSchema,
1753
2300
  FormViewSchema,
2301
+ GalleryConfigSchema,
1754
2302
  GanttConfigSchema,
2303
+ GestureConfigSchema,
2304
+ GestureTypeSchema,
1755
2305
  GroupNavItemSchema,
2306
+ GroupingConfigSchema,
2307
+ GroupingFieldSchema,
1756
2308
  HttpMethodSchema,
1757
2309
  HttpRequestSchema,
2310
+ I18nLabelSchema,
2311
+ I18nObjectSchema,
1758
2312
  KanbanConfigSchema,
2313
+ KeyboardNavigationConfigSchema,
2314
+ KeyboardShortcutSchema,
1759
2315
  ListColumnSchema,
1760
2316
  ListViewSchema,
2317
+ LocaleConfigSchema,
2318
+ LongPressGestureConfigSchema,
2319
+ MotionConfigSchema,
1761
2320
  NavigationConfigSchema,
1762
2321
  NavigationItemSchema,
1763
2322
  NavigationModeSchema,
2323
+ NotificationActionSchema,
2324
+ NotificationConfigSchema,
2325
+ NotificationPositionSchema,
2326
+ NotificationSchema,
2327
+ NotificationSeveritySchema,
2328
+ NotificationTypeSchema,
2329
+ NumberFormatSchema,
1764
2330
  ObjectNavItemSchema,
2331
+ OfflineCacheConfigSchema,
2332
+ OfflineConfigSchema,
2333
+ OfflineStrategySchema,
1765
2334
  PageCardProps,
1766
2335
  PageComponentSchema,
1767
2336
  PageComponentType,
@@ -1770,8 +2339,13 @@ export {
1770
2339
  PageRegionSchema,
1771
2340
  PageSchema,
1772
2341
  PageTabsProps,
2342
+ PageTransitionSchema,
1773
2343
  PageVariableSchema,
1774
2344
  PaginationConfigSchema,
2345
+ PerformanceConfigSchema,
2346
+ PersistStorageSchema,
2347
+ PinchGestureConfigSchema,
2348
+ PluralRuleSchema,
1775
2349
  RecordDetailsProps,
1776
2350
  RecordHighlightsProps,
1777
2351
  RecordRelatedListProps,
@@ -1781,15 +2355,28 @@ export {
1781
2355
  ReportGroupingSchema,
1782
2356
  ReportSchema,
1783
2357
  ReportType,
2358
+ ResponsiveConfigSchema,
2359
+ RowColorConfigSchema,
2360
+ RowHeightSchema,
1784
2361
  SelectionConfigSchema,
1785
2362
  ShadowSchema,
1786
2363
  SpacingSchema,
2364
+ SwipeDirectionSchema,
2365
+ SwipeGestureConfigSchema,
2366
+ SyncConfigSchema,
1787
2367
  ThemeMode,
1788
2368
  ThemeSchema,
2369
+ TimelineConfigSchema,
2370
+ TouchInteractionSchema,
2371
+ TouchTargetConfigSchema,
2372
+ TransitionConfigSchema,
2373
+ TransitionPresetSchema,
1789
2374
  TypographySchema,
1790
2375
  UrlNavItemSchema,
1791
2376
  ViewDataSchema,
1792
2377
  ViewSchema,
2378
+ ViewSharingSchema,
2379
+ WcagContrastLevel,
1793
2380
  WidgetEventSchema,
1794
2381
  WidgetLifecycleSchema,
1795
2382
  WidgetManifestSchema,