@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.
- package/dist/ai/index.d.mts +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.js +230 -3
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/index.mjs +218 -3
- package/dist/ai/index.mjs.map +1 -1
- package/dist/api/index.d.mts +2 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.js +3409 -2841
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +3386 -2841
- package/dist/api/index.mjs.map +1 -1
- package/dist/automation/index.d.mts +1 -1
- package/dist/automation/index.d.ts +1 -1
- package/dist/contracts/index.d.mts +2 -2
- package/dist/contracts/index.d.ts +2 -2
- package/dist/contracts/index.js.map +1 -1
- package/dist/data/index.d.mts +2 -2
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.js +58 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/index.mjs +58 -1
- package/dist/data/index.mjs.map +1 -1
- package/dist/{driver.zod-E3C6n0W-.d.ts → driver.zod-B3Q0oLlF.d.ts} +1 -1
- package/dist/{driver.zod-DnOPgUGi.d.mts → driver.zod-Bf2z72WQ.d.mts} +1 -1
- package/dist/{index-DyawwLFZ.d.ts → index-B3C8s_DZ.d.ts} +307 -29
- package/dist/{index-DTCkpGMm.d.mts → index-BliYpI46.d.mts} +879 -52
- package/dist/{index-BbtSaxHm.d.ts → index-BpE_xfkc.d.ts} +3289 -229
- package/dist/{index-E1mP_eoE.d.mts → index-C3cFLYII.d.mts} +307 -29
- package/dist/{index-BpP0MwlW.d.ts → index-CXtgLAue.d.ts} +879 -52
- package/dist/{index-D-tf4nDV.d.mts → index-CYbdd-mL.d.mts} +27 -1
- package/dist/{index-B-u2mVKn.d.mts → index-CeUUI-ym.d.mts} +151 -14
- package/dist/{index-BPhGHW32.d.ts → index-CfvdYFyf.d.ts} +27 -1
- package/dist/{index-CDN6TRx9.d.mts → index-ClHj1Tbo.d.mts} +71 -2
- package/dist/{index-CDN6TRx9.d.ts → index-ClHj1Tbo.d.ts} +71 -2
- package/dist/{index-BjxWBAB_.d.ts → index-CmY8tgpL.d.ts} +151 -14
- package/dist/{index-DRCh2NTZ.d.mts → index-CqDMk0T6.d.mts} +3289 -229
- package/dist/{index-d9wYlv-g.d.ts → index-DNKiU_-x.d.mts} +684 -18
- package/dist/{index-d9wYlv-g.d.mts → index-DNKiU_-x.d.ts} +684 -18
- package/dist/{index-CisfSmuF.d.ts → index-Dm4UfDKG.d.ts} +451 -19
- package/dist/index-KhvhiesR.d.mts +6902 -0
- package/dist/{index-BV0xBoer.d.mts → index-Onf8hbkX.d.mts} +451 -19
- package/dist/index-OqCqQSaH.d.ts +6902 -0
- package/dist/index.d.mts +2519 -222
- package/dist/index.d.ts +2519 -222
- package/dist/index.js +9957 -8069
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9957 -8069
- package/dist/index.mjs.map +1 -1
- package/dist/integration/index.d.mts +1 -1
- package/dist/integration/index.d.ts +1 -1
- package/dist/integration/index.js +67 -0
- package/dist/integration/index.js.map +1 -1
- package/dist/integration/index.mjs +61 -0
- package/dist/integration/index.mjs.map +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/index.d.ts +2 -2
- package/dist/kernel/index.js +1698 -1474
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/index.mjs +1690 -1474
- package/dist/kernel/index.mjs.map +1 -1
- package/dist/{package-registry.zod-CbS9FKeH.d.mts → package-registry.zod-BJQSiICj.d.mts} +78 -43
- package/dist/{package-registry.zod-CbS9FKeH.d.ts → package-registry.zod-BJQSiICj.d.ts} +78 -43
- package/dist/security/index.d.mts +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +47 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/index.mjs +45 -1
- package/dist/security/index.mjs.map +1 -1
- package/dist/system/index.d.mts +1 -1
- package/dist/system/index.d.ts +1 -1
- package/dist/system/index.js +2189 -1821
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.mjs +2168 -1821
- package/dist/system/index.mjs.map +1 -1
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1414 -767
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +1354 -767
- package/dist/ui/index.mjs.map +1 -1
- package/json-schema/ai/Agent.json +203 -0
- package/json-schema/ai/AgentCommunicationProtocol.json +9 -0
- package/json-schema/ai/AgentGroupMember.json +45 -0
- package/json-schema/ai/AgentGroupRole.json +10 -0
- package/json-schema/ai/DevOpsAgent.json +203 -0
- package/json-schema/ai/MCPClientConfig.json +168 -0
- package/json-schema/ai/MCPRootEntry.json +23 -0
- package/json-schema/ai/MCPRootsConfig.json +49 -0
- package/json-schema/ai/MCPSamplingConfig.json +46 -0
- package/json-schema/ai/MCPServerConfig.json +120 -0
- package/json-schema/ai/MCPStreamingConfig.json +38 -0
- package/json-schema/ai/MCPToolApproval.json +39 -0
- package/json-schema/ai/MultiAgentGroup.json +137 -0
- package/json-schema/ai/StructuredOutputConfig.json +75 -0
- package/json-schema/ai/StructuredOutputFormat.json +12 -0
- package/json-schema/ai/TransformPipelineStep.json +11 -0
- package/json-schema/api/AppDefinitionResponse.json +285 -7
- package/json-schema/api/BasePresence.json +40 -0
- package/json-schema/api/BatchLoadingStrategy.json +40 -0
- package/json-schema/api/Callback.json +39 -0
- package/json-schema/api/DataLoaderConfig.json +55 -0
- package/json-schema/api/DisablePackageResponse.json +26 -0
- package/json-schema/api/Discovery.json +4 -62
- package/json-schema/api/EnablePackageResponse.json +26 -0
- package/json-schema/api/FederationEntity.json +110 -0
- package/json-schema/api/FederationEntityKey.json +20 -0
- package/json-schema/api/FederationExternalField.json +18 -0
- package/json-schema/api/FederationGateway.json +327 -0
- package/json-schema/api/FederationProvides.json +19 -0
- package/json-schema/api/FederationRequires.json +19 -0
- package/json-schema/api/GetDiscoveryResponse.json +1 -60
- package/json-schema/api/GetPackageResponse.json +26 -0
- package/json-schema/api/GraphQLConfig.json +327 -0
- package/json-schema/api/GraphQLQueryAdapter.json +84 -0
- package/json-schema/api/InstallPackageRequest.json +26 -0
- package/json-schema/api/InstallPackageResponse.json +26 -0
- package/json-schema/api/ListPackagesResponse.json +26 -0
- package/json-schema/api/ODataQueryAdapter.json +66 -0
- package/json-schema/api/OpenApi31Extensions.json +139 -0
- package/json-schema/api/OperatorMapping.json +26 -0
- package/json-schema/api/PresenceStatus.json +10 -0
- package/json-schema/api/QueryAdapterConfig.json +272 -0
- package/json-schema/api/QueryAdapterTarget.json +9 -0
- package/json-schema/api/QueryOptimizationConfig.json +126 -0
- package/json-schema/api/RealtimeRecordAction.json +9 -0
- package/json-schema/api/RestQueryAdapter.json +86 -0
- package/json-schema/api/RestServerConfig.json +139 -0
- package/json-schema/api/SubgraphConfig.json +183 -0
- package/json-schema/api/WebhookConfig.json +129 -0
- package/json-schema/api/WebhookEvent.json +64 -0
- package/json-schema/data/ExternalLookup.json +128 -0
- package/json-schema/identity/SCIMBulkOperation.json +41 -0
- package/json-schema/identity/SCIMBulkRequest.json +73 -0
- package/json-schema/identity/SCIMBulkResponse.json +61 -0
- package/json-schema/identity/SCIMBulkResponseOperation.json +36 -0
- package/json-schema/integration/CircuitBreakerConfig.json +49 -0
- package/json-schema/integration/Connector.json +223 -0
- package/json-schema/integration/ConnectorHealth.json +113 -0
- package/json-schema/integration/DatabaseConnector.json +223 -0
- package/json-schema/integration/ErrorCategory.json +15 -0
- package/json-schema/integration/ErrorMappingConfig.json +112 -0
- package/json-schema/integration/ErrorMappingRule.json +66 -0
- package/json-schema/integration/FileStorageConnector.json +223 -0
- package/json-schema/integration/GitHubConnector.json +223 -0
- package/json-schema/integration/HealthCheckConfig.json +58 -0
- package/json-schema/integration/MessageQueueConnector.json +223 -0
- package/json-schema/integration/SaasConnector.json +223 -0
- package/json-schema/integration/VercelConnector.json +223 -0
- package/json-schema/kernel/CLICommandContribution.json +23 -0
- package/json-schema/kernel/CLIExtensionExport.json +22 -0
- package/json-schema/kernel/DevFixtureConfig.json +35 -0
- package/json-schema/kernel/DevPluginConfig.json +170 -0
- package/json-schema/kernel/DevPluginPreset.json +10 -0
- package/json-schema/kernel/DevServiceOverride.json +41 -0
- package/json-schema/kernel/DevToolsConfig.json +45 -0
- package/json-schema/kernel/DisablePackageResponse.json +26 -0
- package/json-schema/kernel/EnablePackageResponse.json +26 -0
- package/json-schema/kernel/GetPackageResponse.json +26 -0
- package/json-schema/kernel/InstallPackageRequest.json +26 -0
- package/json-schema/kernel/InstallPackageResponse.json +26 -0
- package/json-schema/kernel/InstalledPackage.json +26 -0
- package/json-schema/kernel/ListPackagesResponse.json +26 -0
- package/json-schema/kernel/Manifest.json +26 -0
- package/json-schema/kernel/MetadataFallbackStrategy.json +9 -0
- package/json-schema/kernel/MetadataLoaderContract.json +7 -0
- package/json-schema/kernel/MetadataManagerConfig.json +21 -0
- package/json-schema/security/RLSAuditConfig.json +62 -0
- package/json-schema/security/RLSAuditEvent.json +66 -0
- package/json-schema/security/RLSConfig.json +62 -0
- package/json-schema/system/AuthConfig.json +83 -0
- package/json-schema/system/BackupConfig.json +148 -0
- package/json-schema/system/BackupRetention.json +27 -0
- package/json-schema/system/BackupStrategy.json +10 -0
- package/json-schema/system/CacheAvalanchePrevention.json +77 -0
- package/json-schema/system/CacheConsistency.json +11 -0
- package/json-schema/system/CacheWarmup.json +44 -0
- package/json-schema/system/ComplianceAuditRequirement.json +43 -0
- package/json-schema/system/ComplianceEncryptionRequirement.json +58 -0
- package/json-schema/system/DataClassificationPolicy.json +46 -0
- package/json-schema/system/DisasterRecoveryPlan.json +414 -0
- package/json-schema/system/DistributedCacheConfig.json +269 -0
- package/json-schema/system/FailoverConfig.json +102 -0
- package/json-schema/system/FailoverMode.json +11 -0
- package/json-schema/system/MaskingVisibilityRule.json +56 -0
- package/json-schema/system/MetadataFallbackStrategy.json +9 -0
- package/json-schema/system/MetadataLoaderContract.json +9 -1
- package/json-schema/system/MetadataManagerConfig.json +52 -11
- package/json-schema/system/MetadataRecord.json +32 -1
- package/json-schema/system/MetadataSource.json +10 -0
- package/json-schema/system/MutualTLSConfig.json +83 -0
- package/json-schema/system/RPO.json +27 -0
- package/json-schema/system/RTO.json +27 -0
- package/json-schema/system/SecurityContextConfig.json +288 -0
- package/json-schema/system/SecurityEventCorrelation.json +40 -0
- package/json-schema/ui/Action.json +200 -5
- package/json-schema/ui/ActionParam.json +62 -2
- package/json-schema/ui/AnimationTrigger.json +14 -0
- package/json-schema/ui/App.json +285 -7
- package/json-schema/ui/AriaProps.json +49 -0
- package/json-schema/ui/BreakpointColumnMap.json +38 -0
- package/json-schema/ui/BreakpointName.json +12 -0
- package/json-schema/ui/BreakpointOrderMap.json +26 -0
- package/json-schema/ui/ChartAnnotation.json +31 -1
- package/json-schema/ui/ChartAxis.json +30 -1
- package/json-schema/ui/ChartConfig.json +259 -7
- package/json-schema/ui/ChartSeries.json +30 -1
- package/json-schema/ui/ColumnSummary.json +18 -0
- package/json-schema/ui/ComponentAnimation.json +246 -0
- package/json-schema/ui/ConflictResolution.json +11 -0
- package/json-schema/ui/Dashboard.json +627 -11
- package/json-schema/ui/DashboardNavItem.json +30 -1
- package/json-schema/ui/DashboardWidget.json +433 -8
- package/json-schema/ui/DateFormat.json +36 -0
- package/json-schema/ui/DensityMode.json +9 -0
- package/json-schema/ui/DndConfig.json +306 -0
- package/json-schema/ui/DragConstraint.json +44 -0
- package/json-schema/ui/DragHandle.json +10 -0
- package/json-schema/ui/DragItem.json +160 -0
- package/json-schema/ui/DropEffect.json +11 -0
- package/json-schema/ui/DropZone.json +114 -0
- package/json-schema/ui/EasingFunction.json +13 -0
- package/json-schema/ui/EvictionPolicy.json +10 -0
- package/json-schema/ui/FocusManagement.json +69 -0
- package/json-schema/ui/FocusTrapConfig.json +32 -0
- package/json-schema/ui/FormField.json +90 -3
- package/json-schema/ui/GalleryConfig.json +46 -0
- package/json-schema/ui/GestureConfig.json +128 -0
- package/json-schema/ui/GestureType.json +14 -0
- package/json-schema/ui/GroupNavItem.json +30 -1
- package/json-schema/ui/GroupingConfig.json +45 -0
- package/json-schema/ui/GroupingField.json +30 -0
- package/json-schema/ui/I18nLabel.json +34 -0
- package/json-schema/ui/I18nObject.json +26 -0
- package/json-schema/ui/KeyboardNavigationConfig.json +194 -0
- package/json-schema/ui/KeyboardShortcut.json +66 -0
- package/json-schema/ui/ListColumn.json +55 -1
- package/json-schema/ui/ListView.json +435 -4
- package/json-schema/ui/LocaleConfig.json +108 -0
- package/json-schema/ui/LongPressGestureConfig.json +20 -0
- package/json-schema/ui/MotionConfig.json +405 -0
- package/json-schema/ui/NavigationItem.json +150 -5
- package/json-schema/ui/Notification.json +232 -0
- package/json-schema/ui/NotificationAction.json +60 -0
- package/json-schema/ui/NotificationConfig.json +52 -0
- package/json-schema/ui/NotificationPosition.json +13 -0
- package/json-schema/ui/NotificationSeverity.json +11 -0
- package/json-schema/ui/NotificationType.json +12 -0
- package/json-schema/ui/NumberFormat.json +42 -0
- package/json-schema/ui/ObjectNavItem.json +30 -1
- package/json-schema/ui/OfflineCacheConfig.json +40 -0
- package/json-schema/ui/OfflineConfig.json +157 -0
- package/json-schema/ui/OfflineStrategy.json +12 -0
- package/json-schema/ui/Page.json +285 -3
- package/json-schema/ui/PageCardProps.json +79 -1
- package/json-schema/ui/PageComponent.json +175 -1
- package/json-schema/ui/PageHeaderProps.json +108 -2
- package/json-schema/ui/PageNavItem.json +30 -1
- package/json-schema/ui/PageRegion.json +175 -1
- package/json-schema/ui/PageTabsProps.json +79 -1
- package/json-schema/ui/PageTransition.json +53 -0
- package/json-schema/ui/PerformanceConfig.json +57 -0
- package/json-schema/ui/PersistStorage.json +10 -0
- package/json-schema/ui/PinchGestureConfig.json +16 -0
- package/json-schema/ui/PluralRule.json +40 -0
- package/json-schema/ui/Report.json +490 -8
- package/json-schema/ui/ReportChart.json +199 -5
- package/json-schema/ui/ReportColumn.json +126 -1
- package/json-schema/ui/ResponsiveConfig.json +97 -0
- package/json-schema/ui/RowColorConfig.json +25 -0
- package/json-schema/ui/RowHeight.json +12 -0
- package/json-schema/ui/SwipeDirection.json +10 -0
- package/json-schema/ui/SwipeGestureConfig.json +32 -0
- package/json-schema/ui/SyncConfig.json +47 -0
- package/json-schema/ui/Theme.json +137 -0
- package/json-schema/ui/TimelineConfig.json +46 -0
- package/json-schema/ui/TouchInteraction.json +232 -0
- package/json-schema/ui/TouchTargetConfig.json +49 -0
- package/json-schema/ui/TransitionConfig.json +47 -0
- package/json-schema/ui/TransitionPreset.json +16 -0
- package/json-schema/ui/UrlNavItem.json +30 -1
- package/json-schema/ui/ViewSharing.json +24 -0
- package/json-schema/ui/WcagContrastLevel.json +8 -0
- package/json-schema/ui/WidgetEvent.json +60 -2
- package/json-schema/ui/WidgetManifest.json +284 -6
- package/json-schema/ui/WidgetProperty.json +60 -2
- package/package.json +1 -1
- package/dist/index-CZjkpp75.d.mts +0 -3867
- package/dist/index-CgkjUheS.d.ts +0 -3867
- package/dist/{index-B08s7rEU.d.mts → index-DmhxH5jy.d.mts} +8 -8
- 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
|
|
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 =
|
|
119
|
+
var ChartAxisSchema = z2.object({
|
|
53
120
|
/** Data field to map to this axis */
|
|
54
|
-
field:
|
|
121
|
+
field: z2.string().describe("Data field key"),
|
|
55
122
|
/** Axis title */
|
|
56
|
-
title:
|
|
123
|
+
title: I18nLabelSchema.optional().describe("Axis display title"),
|
|
57
124
|
/** Value formatting (d3-format or similar) */
|
|
58
|
-
format:
|
|
125
|
+
format: z2.string().optional().describe('Value format string (e.g., "$0,0.00")'),
|
|
59
126
|
/** Axis scale settings */
|
|
60
|
-
min:
|
|
61
|
-
max:
|
|
62
|
-
stepSize:
|
|
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:
|
|
65
|
-
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:
|
|
134
|
+
logarithmic: z2.boolean().default(false)
|
|
68
135
|
});
|
|
69
|
-
var ChartSeriesSchema =
|
|
136
|
+
var ChartSeriesSchema = z2.object({
|
|
70
137
|
/** Field name for values */
|
|
71
|
-
name:
|
|
138
|
+
name: z2.string().describe("Field name or series identifier"),
|
|
72
139
|
/** Display label */
|
|
73
|
-
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:
|
|
144
|
+
color: z2.string().optional().describe("Series color (hex/rgb/token)"),
|
|
78
145
|
/** Stacking group */
|
|
79
|
-
stack:
|
|
146
|
+
stack: z2.string().optional().describe("Stack identifier to group series"),
|
|
80
147
|
/** Axis binding */
|
|
81
|
-
yAxis:
|
|
82
|
-
});
|
|
83
|
-
var ChartAnnotationSchema =
|
|
84
|
-
type:
|
|
85
|
-
axis:
|
|
86
|
-
value:
|
|
87
|
-
endValue:
|
|
88
|
-
color:
|
|
89
|
-
label:
|
|
90
|
-
style:
|
|
91
|
-
});
|
|
92
|
-
var ChartInteractionSchema =
|
|
93
|
-
tooltips:
|
|
94
|
-
zoom:
|
|
95
|
-
brush:
|
|
96
|
-
clickAction:
|
|
97
|
-
});
|
|
98
|
-
var ChartConfigSchema =
|
|
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:
|
|
103
|
-
subtitle:
|
|
104
|
-
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:
|
|
174
|
+
yAxis: z2.array(ChartAxisSchema).optional().describe("Y-Axis configuration (support dual axis)"),
|
|
108
175
|
/** Series Configuration */
|
|
109
|
-
series:
|
|
176
|
+
series: z2.array(ChartSeriesSchema).optional().describe("Defined series configuration"),
|
|
110
177
|
/** Appearance */
|
|
111
|
-
colors:
|
|
112
|
-
height:
|
|
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:
|
|
115
|
-
showDataLabels:
|
|
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:
|
|
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/
|
|
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
|
|
127
|
-
var SystemIdentifierSchema =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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:
|
|
264
|
+
label: I18nLabelSchema.describe("Display proper label"),
|
|
143
265
|
/** Icon name (Lucide) */
|
|
144
|
-
icon:
|
|
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:
|
|
272
|
+
visible: z5.string().optional().describe("Visibility formula condition")
|
|
151
273
|
});
|
|
152
274
|
var ObjectNavItemSchema = BaseNavItemSchema.extend({
|
|
153
|
-
type:
|
|
154
|
-
objectName:
|
|
155
|
-
viewName:
|
|
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:
|
|
159
|
-
dashboardName:
|
|
280
|
+
type: z5.literal("dashboard"),
|
|
281
|
+
dashboardName: z5.string().describe("Target dashboard name")
|
|
160
282
|
});
|
|
161
283
|
var PageNavItemSchema = BaseNavItemSchema.extend({
|
|
162
|
-
type:
|
|
163
|
-
pageName:
|
|
164
|
-
params:
|
|
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:
|
|
168
|
-
url:
|
|
169
|
-
target:
|
|
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:
|
|
173
|
-
expanded:
|
|
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 =
|
|
177
|
-
() =>
|
|
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:
|
|
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:
|
|
308
|
+
children: z5.array(NavigationItemSchema).describe("Child navigation items")
|
|
187
309
|
})
|
|
188
310
|
])
|
|
189
311
|
);
|
|
190
|
-
var AppBrandingSchema =
|
|
191
|
-
primaryColor:
|
|
192
|
-
logo:
|
|
193
|
-
favicon:
|
|
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 =
|
|
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:
|
|
321
|
+
label: I18nLabelSchema.describe("App display label"),
|
|
200
322
|
/** App version */
|
|
201
|
-
version:
|
|
323
|
+
version: z5.string().optional().describe("App version"),
|
|
202
324
|
/** Description */
|
|
203
|
-
description:
|
|
325
|
+
description: I18nLabelSchema.optional().describe("App description"),
|
|
204
326
|
/** Icon name (Lucide) */
|
|
205
|
-
icon:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
235
|
-
apis:
|
|
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
|
|
243
|
-
var HttpMethodSchema =
|
|
244
|
-
var HttpRequestSchema =
|
|
245
|
-
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:
|
|
248
|
-
params:
|
|
249
|
-
body:
|
|
250
|
-
});
|
|
251
|
-
var ViewDataSchema =
|
|
252
|
-
|
|
253
|
-
provider:
|
|
254
|
-
object:
|
|
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
|
-
|
|
257
|
-
provider:
|
|
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
|
-
|
|
262
|
-
provider:
|
|
263
|
-
items:
|
|
390
|
+
z6.object({
|
|
391
|
+
provider: z6.literal("value"),
|
|
392
|
+
items: z6.array(z6.unknown()).describe("Static data array")
|
|
264
393
|
})
|
|
265
394
|
]);
|
|
266
|
-
var
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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:
|
|
278
|
-
action:
|
|
279
|
-
});
|
|
280
|
-
var SelectionConfigSchema =
|
|
281
|
-
type:
|
|
282
|
-
});
|
|
283
|
-
var PaginationConfigSchema =
|
|
284
|
-
pageSize:
|
|
285
|
-
pageSizeOptions:
|
|
286
|
-
});
|
|
287
|
-
var
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
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 =
|
|
510
|
+
var NavigationConfigSchema = z6.object({
|
|
322
511
|
mode: NavigationModeSchema.default("page"),
|
|
323
512
|
/** Target View Config */
|
|
324
|
-
view:
|
|
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:
|
|
327
|
-
openNewTab:
|
|
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:
|
|
518
|
+
width: z6.union([z6.string(), z6.number()]).optional().describe('Width of the drawer/modal (e.g. "600px", "50%")')
|
|
330
519
|
});
|
|
331
|
-
var ListViewSchema =
|
|
520
|
+
var ListViewSchema = z6.object({
|
|
332
521
|
name: SnakeCaseIdentifierSchema.optional().describe("Internal view name (lowercase snake_case)"),
|
|
333
|
-
label:
|
|
334
|
-
// Display label override
|
|
335
|
-
type:
|
|
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:
|
|
355
|
-
|
|
543
|
+
columns: z6.union([
|
|
544
|
+
z6.array(z6.string()),
|
|
356
545
|
// Legacy: simple field names
|
|
357
|
-
|
|
546
|
+
z6.array(ListColumnSchema)
|
|
358
547
|
// Enhanced: detailed column config
|
|
359
548
|
]).describe("Fields to display as columns"),
|
|
360
|
-
filter:
|
|
361
|
-
sort:
|
|
362
|
-
|
|
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
|
-
|
|
365
|
-
field:
|
|
366
|
-
order:
|
|
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:
|
|
371
|
-
filterableFields:
|
|
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:
|
|
374
|
-
striped:
|
|
375
|
-
bordered:
|
|
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:
|
|
388
|
-
bulkActions:
|
|
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:
|
|
593
|
+
virtualScroll: z6.boolean().optional().describe("Enable virtual scrolling for large datasets"),
|
|
391
594
|
/** Conditional Formatting */
|
|
392
|
-
conditionalFormatting:
|
|
393
|
-
condition:
|
|
394
|
-
style:
|
|
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:
|
|
600
|
+
inlineEdit: z6.boolean().optional().describe("Allow inline editing of records directly in the list view"),
|
|
398
601
|
/** Export */
|
|
399
|
-
exportOptions:
|
|
602
|
+
exportOptions: z6.array(z6.enum(["csv", "xlsx", "pdf", "json"])).optional().describe("Available export format options"),
|
|
400
603
|
/** Empty State */
|
|
401
|
-
emptyState:
|
|
402
|
-
title:
|
|
403
|
-
message:
|
|
404
|
-
icon:
|
|
405
|
-
}).optional().describe("Empty state configuration when no records found")
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
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 =
|
|
433
|
-
type:
|
|
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:
|
|
654
|
+
sections: z6.array(FormSectionSchema).optional(),
|
|
450
655
|
// For simple layout
|
|
451
|
-
groups:
|
|
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 =
|
|
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:
|
|
460
|
-
formViews:
|
|
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
|
|
671
|
+
import { z as z8 } from "zod";
|
|
465
672
|
|
|
466
673
|
// src/data/filter.zod.ts
|
|
467
|
-
import { z as
|
|
468
|
-
var FieldReferenceSchema =
|
|
469
|
-
$field:
|
|
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 =
|
|
678
|
+
var EqualityOperatorSchema = z7.object({
|
|
472
679
|
/** Equal to (default) - SQL: = | MongoDB: $eq */
|
|
473
|
-
$eq:
|
|
680
|
+
$eq: z7.any().optional(),
|
|
474
681
|
/** Not equal to - SQL: <> or != | MongoDB: $ne */
|
|
475
|
-
$ne:
|
|
682
|
+
$ne: z7.any().optional()
|
|
476
683
|
});
|
|
477
|
-
var ComparisonOperatorSchema =
|
|
684
|
+
var ComparisonOperatorSchema = z7.object({
|
|
478
685
|
/** Greater than - SQL: > | MongoDB: $gt */
|
|
479
|
-
$gt:
|
|
686
|
+
$gt: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
|
|
480
687
|
/** Greater than or equal to - SQL: >= | MongoDB: $gte */
|
|
481
|
-
$gte:
|
|
688
|
+
$gte: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
|
|
482
689
|
/** Less than - SQL: < | MongoDB: $lt */
|
|
483
|
-
$lt:
|
|
690
|
+
$lt: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional(),
|
|
484
691
|
/** Less than or equal to - SQL: <= | MongoDB: $lte */
|
|
485
|
-
$lte:
|
|
692
|
+
$lte: z7.union([z7.number(), z7.date(), FieldReferenceSchema]).optional()
|
|
486
693
|
});
|
|
487
|
-
var SetOperatorSchema =
|
|
694
|
+
var SetOperatorSchema = z7.object({
|
|
488
695
|
/** In list - SQL: IN (?, ?, ?) | MongoDB: $in */
|
|
489
|
-
$in:
|
|
696
|
+
$in: z7.array(z7.any()).optional(),
|
|
490
697
|
/** Not in list - SQL: NOT IN (...) | MongoDB: $nin */
|
|
491
|
-
$nin:
|
|
698
|
+
$nin: z7.array(z7.any()).optional()
|
|
492
699
|
});
|
|
493
|
-
var RangeOperatorSchema =
|
|
700
|
+
var RangeOperatorSchema = z7.object({
|
|
494
701
|
/** Between (inclusive) - takes [min, max] array */
|
|
495
|
-
$between:
|
|
496
|
-
|
|
497
|
-
|
|
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 =
|
|
707
|
+
var StringOperatorSchema = z7.object({
|
|
501
708
|
/** Contains substring - SQL: LIKE %?% | MongoDB: $regex */
|
|
502
|
-
$contains:
|
|
709
|
+
$contains: z7.string().optional(),
|
|
503
710
|
/** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */
|
|
504
|
-
$startsWith:
|
|
711
|
+
$startsWith: z7.string().optional(),
|
|
505
712
|
/** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */
|
|
506
|
-
$endsWith:
|
|
713
|
+
$endsWith: z7.string().optional()
|
|
507
714
|
});
|
|
508
|
-
var SpecialOperatorSchema =
|
|
715
|
+
var SpecialOperatorSchema = z7.object({
|
|
509
716
|
/** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */
|
|
510
|
-
$null:
|
|
717
|
+
$null: z7.boolean().optional(),
|
|
511
718
|
/** Field exists check (primarily for NoSQL) - MongoDB: $exists */
|
|
512
|
-
$exists:
|
|
719
|
+
$exists: z7.boolean().optional()
|
|
513
720
|
});
|
|
514
|
-
var FieldOperatorsSchema =
|
|
721
|
+
var FieldOperatorsSchema = z7.object({
|
|
515
722
|
// Equality
|
|
516
|
-
$eq:
|
|
517
|
-
$ne:
|
|
723
|
+
$eq: z7.any().optional(),
|
|
724
|
+
$ne: z7.any().optional(),
|
|
518
725
|
// Comparison (numeric/date)
|
|
519
|
-
$gt:
|
|
520
|
-
$gte:
|
|
521
|
-
$lt:
|
|
522
|
-
$lte:
|
|
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:
|
|
525
|
-
$nin:
|
|
526
|
-
$between:
|
|
527
|
-
|
|
528
|
-
|
|
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:
|
|
532
|
-
$startsWith:
|
|
533
|
-
$endsWith:
|
|
738
|
+
$contains: z7.string().optional(),
|
|
739
|
+
$startsWith: z7.string().optional(),
|
|
740
|
+
$endsWith: z7.string().optional(),
|
|
534
741
|
// Special
|
|
535
|
-
$null:
|
|
536
|
-
$exists:
|
|
537
|
-
});
|
|
538
|
-
var FilterConditionSchema =
|
|
539
|
-
() =>
|
|
540
|
-
|
|
541
|
-
$and:
|
|
542
|
-
$or:
|
|
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 =
|
|
754
|
+
var QueryFilterSchema = z7.object({
|
|
548
755
|
where: FilterConditionSchema.optional()
|
|
549
756
|
});
|
|
550
|
-
var NormalizedFilterSchema =
|
|
551
|
-
() =>
|
|
552
|
-
$and:
|
|
553
|
-
|
|
757
|
+
var NormalizedFilterSchema = z7.lazy(
|
|
758
|
+
() => z7.object({
|
|
759
|
+
$and: z7.array(
|
|
760
|
+
z7.union([
|
|
554
761
|
// Field condition: { field: { $op: value } }
|
|
555
|
-
|
|
762
|
+
z7.record(z7.string(), FieldOperatorsSchema),
|
|
556
763
|
// Nested logical group
|
|
557
764
|
NormalizedFilterSchema
|
|
558
765
|
])
|
|
559
766
|
).optional(),
|
|
560
|
-
$or:
|
|
561
|
-
|
|
562
|
-
|
|
767
|
+
$or: z7.array(
|
|
768
|
+
z7.union([
|
|
769
|
+
z7.record(z7.string(), FieldOperatorsSchema),
|
|
563
770
|
NormalizedFilterSchema
|
|
564
771
|
])
|
|
565
772
|
).optional(),
|
|
566
|
-
$not:
|
|
567
|
-
|
|
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 =
|
|
804
|
+
var DashboardWidgetSchema = z8.object({
|
|
598
805
|
/** Widget Title */
|
|
599
|
-
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:
|
|
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:
|
|
816
|
+
categoryField: z8.string().optional().describe("Field for grouping (X-Axis)"),
|
|
610
817
|
/** Value Field (Y-Axis) */
|
|
611
|
-
valueField:
|
|
818
|
+
valueField: z8.string().optional().describe("Field for values (Y-Axis)"),
|
|
612
819
|
/** Aggregate operation */
|
|
613
|
-
aggregate:
|
|
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:
|
|
622
|
-
x:
|
|
623
|
-
y:
|
|
624
|
-
w:
|
|
625
|
-
h:
|
|
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:
|
|
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 =
|
|
841
|
+
var DashboardSchema = z8.object({
|
|
631
842
|
/** Machine name */
|
|
632
843
|
name: SnakeCaseIdentifierSchema.describe("Dashboard unique name"),
|
|
633
844
|
/** Display label */
|
|
634
|
-
label:
|
|
845
|
+
label: I18nLabelSchema.describe("Dashboard label"),
|
|
635
846
|
/** Description */
|
|
636
|
-
description:
|
|
847
|
+
description: I18nLabelSchema.optional().describe("Dashboard description"),
|
|
637
848
|
/** Collection of widgets */
|
|
638
|
-
widgets:
|
|
849
|
+
widgets: z8.array(DashboardWidgetSchema).describe("Widgets to display"),
|
|
639
850
|
/** Auto-refresh */
|
|
640
|
-
refreshInterval:
|
|
851
|
+
refreshInterval: z8.number().optional().describe("Auto-refresh interval in seconds"),
|
|
641
852
|
/** Global Filters */
|
|
642
|
-
globalFilters:
|
|
643
|
-
field:
|
|
644
|
-
label:
|
|
645
|
-
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
|
|
654
|
-
var ReportType =
|
|
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 =
|
|
665
|
-
field:
|
|
666
|
-
label:
|
|
667
|
-
aggregate:
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
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:
|
|
677
|
-
yAxis:
|
|
678
|
-
groupBy:
|
|
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 =
|
|
897
|
+
var ReportSchema = z9.object({
|
|
681
898
|
/** Identity */
|
|
682
899
|
name: SnakeCaseIdentifierSchema.describe("Report unique name"),
|
|
683
|
-
label:
|
|
684
|
-
description:
|
|
900
|
+
label: I18nLabelSchema.describe("Report label"),
|
|
901
|
+
description: I18nLabelSchema.optional(),
|
|
685
902
|
/** Data Source */
|
|
686
|
-
objectName:
|
|
903
|
+
objectName: z9.string().describe("Primary object"),
|
|
687
904
|
/** Report Configuration */
|
|
688
905
|
type: ReportType.default("tabular").describe("Report format type"),
|
|
689
|
-
columns:
|
|
906
|
+
columns: z9.array(ReportColumnSchema).describe("Columns to display"),
|
|
690
907
|
/** Grouping (for Summary/Matrix) */
|
|
691
|
-
groupingsDown:
|
|
692
|
-
groupingsAcross:
|
|
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
|
|
924
|
+
import { z as z13 } from "zod";
|
|
704
925
|
|
|
705
926
|
// src/data/field.zod.ts
|
|
706
|
-
import { z as
|
|
927
|
+
import { z as z12 } from "zod";
|
|
707
928
|
|
|
708
929
|
// src/system/encryption.zod.ts
|
|
709
|
-
import { z as
|
|
710
|
-
var EncryptionAlgorithmSchema =
|
|
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 =
|
|
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 =
|
|
723
|
-
enabled:
|
|
724
|
-
frequencyDays:
|
|
725
|
-
retainOldVersions:
|
|
726
|
-
autoRotate:
|
|
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 =
|
|
729
|
-
enabled:
|
|
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:
|
|
952
|
+
keyManagement: z10.object({
|
|
732
953
|
provider: KeyManagementProviderSchema.describe("Key management service provider"),
|
|
733
|
-
keyId:
|
|
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:
|
|
737
|
-
deterministicEncryption:
|
|
738
|
-
searchableEncryption:
|
|
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 =
|
|
741
|
-
fieldName:
|
|
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:
|
|
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
|
|
748
|
-
var MaskingStrategySchema =
|
|
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 =
|
|
765
|
-
field:
|
|
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:
|
|
768
|
-
preserveFormat:
|
|
769
|
-
preserveLength:
|
|
770
|
-
roles:
|
|
771
|
-
exemptRoles:
|
|
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 =
|
|
774
|
-
enabled:
|
|
775
|
-
rules:
|
|
776
|
-
auditUnmasking:
|
|
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 =
|
|
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 =
|
|
857
|
-
label:
|
|
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:
|
|
860
|
-
default:
|
|
861
|
-
});
|
|
862
|
-
var LocationCoordinatesSchema =
|
|
863
|
-
latitude:
|
|
864
|
-
longitude:
|
|
865
|
-
altitude:
|
|
866
|
-
accuracy:
|
|
867
|
-
});
|
|
868
|
-
var CurrencyConfigSchema =
|
|
869
|
-
precision:
|
|
870
|
-
currencyMode:
|
|
871
|
-
defaultCurrency:
|
|
872
|
-
});
|
|
873
|
-
var CurrencyValueSchema =
|
|
874
|
-
value:
|
|
875
|
-
currency:
|
|
876
|
-
});
|
|
877
|
-
var AddressSchema =
|
|
878
|
-
street:
|
|
879
|
-
city:
|
|
880
|
-
state:
|
|
881
|
-
postalCode:
|
|
882
|
-
country:
|
|
883
|
-
countryCode:
|
|
884
|
-
formatted:
|
|
885
|
-
});
|
|
886
|
-
var VectorConfigSchema =
|
|
887
|
-
dimensions:
|
|
888
|
-
distanceMetric:
|
|
889
|
-
normalized:
|
|
890
|
-
indexed:
|
|
891
|
-
indexType:
|
|
892
|
-
});
|
|
893
|
-
var FileAttachmentConfigSchema =
|
|
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:
|
|
896
|
-
maxSize:
|
|
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:
|
|
899
|
-
blockedTypes:
|
|
900
|
-
allowedMimeTypes:
|
|
901
|
-
blockedMimeTypes:
|
|
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:
|
|
904
|
-
virusScanProvider:
|
|
905
|
-
virusScanOnUpload:
|
|
906
|
-
quarantineOnThreat:
|
|
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:
|
|
909
|
-
storageBucket:
|
|
910
|
-
storagePrefix:
|
|
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:
|
|
913
|
-
minWidth:
|
|
914
|
-
maxWidth:
|
|
915
|
-
minHeight:
|
|
916
|
-
maxHeight:
|
|
917
|
-
aspectRatio:
|
|
918
|
-
generateThumbnails:
|
|
919
|
-
thumbnailSizes:
|
|
920
|
-
name:
|
|
921
|
-
width:
|
|
922
|
-
height:
|
|
923
|
-
crop:
|
|
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:
|
|
926
|
-
autoRotate:
|
|
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:
|
|
930
|
-
allowReplace:
|
|
931
|
-
allowDelete:
|
|
932
|
-
requireUpload:
|
|
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:
|
|
935
|
-
extractText:
|
|
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:
|
|
938
|
-
maxVersions:
|
|
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:
|
|
941
|
-
presignedUrlExpiry:
|
|
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 =
|
|
1178
|
+
var DataQualityRulesSchema = z12.object({
|
|
958
1179
|
/** Enforce uniqueness constraint */
|
|
959
|
-
uniqueness:
|
|
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:
|
|
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:
|
|
964
|
-
source:
|
|
965
|
-
threshold:
|
|
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 =
|
|
1189
|
+
var ComputedFieldCacheSchema = z12.object({
|
|
969
1190
|
/** Enable caching for this computed field */
|
|
970
|
-
enabled:
|
|
1191
|
+
enabled: z12.boolean().describe("Enable caching for computed field results"),
|
|
971
1192
|
/** Time-to-live in seconds */
|
|
972
|
-
ttl:
|
|
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:
|
|
1195
|
+
invalidateOn: z12.array(z12.string()).describe('Field paths that invalidate cache (e.g., ["inventory.quantity", "pricing.base_price"])')
|
|
975
1196
|
});
|
|
976
|
-
var FieldSchema =
|
|
1197
|
+
var FieldSchema = z12.object({
|
|
977
1198
|
/** Identity */
|
|
978
|
-
name:
|
|
979
|
-
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:
|
|
982
|
-
format:
|
|
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:
|
|
985
|
-
searchable:
|
|
986
|
-
multiple:
|
|
987
|
-
unique:
|
|
988
|
-
defaultValue:
|
|
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:
|
|
991
|
-
minLength:
|
|
1211
|
+
maxLength: z12.number().optional().describe("Max character length"),
|
|
1212
|
+
minLength: z12.number().optional().describe("Min character length"),
|
|
992
1213
|
/** Number Constraints */
|
|
993
|
-
precision:
|
|
994
|
-
scale:
|
|
995
|
-
min:
|
|
996
|
-
max:
|
|
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:
|
|
1219
|
+
options: z12.array(SelectOptionSchema).optional().describe("Static options for select/multiselect"),
|
|
999
1220
|
/** Relationship Config */
|
|
1000
|
-
reference:
|
|
1001
|
-
referenceFilters:
|
|
1002
|
-
writeRequiresMasterRead:
|
|
1003
|
-
deleteBehavior:
|
|
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:
|
|
1006
|
-
summaryOperations:
|
|
1007
|
-
object:
|
|
1008
|
-
field:
|
|
1009
|
-
function:
|
|
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:
|
|
1014
|
-
theme:
|
|
1015
|
-
lineNumbers:
|
|
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:
|
|
1018
|
-
allowHalf:
|
|
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:
|
|
1021
|
-
allowGeocoding:
|
|
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:
|
|
1244
|
+
addressFormat: z12.enum(["us", "uk", "international"]).optional().describe("Address format template"),
|
|
1024
1245
|
// Color field config
|
|
1025
|
-
colorFormat:
|
|
1026
|
-
allowAlpha:
|
|
1027
|
-
presetColors:
|
|
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:
|
|
1030
|
-
showValue:
|
|
1031
|
-
marks:
|
|
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:
|
|
1036
|
-
qrErrorCorrection:
|
|
1037
|
-
displayValue:
|
|
1038
|
-
allowScanning:
|
|
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:
|
|
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:
|
|
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:
|
|
1063
|
-
readonly:
|
|
1064
|
-
sortable:
|
|
1065
|
-
inlineHelpText:
|
|
1066
|
-
trackFeedHistory:
|
|
1067
|
-
caseSensitive:
|
|
1068
|
-
autonumberFormat:
|
|
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:
|
|
1071
|
-
externalId:
|
|
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 =
|
|
1076
|
-
name:
|
|
1077
|
-
label:
|
|
1296
|
+
var ActionParamSchema = z13.object({
|
|
1297
|
+
name: z13.string(),
|
|
1298
|
+
label: I18nLabelSchema,
|
|
1078
1299
|
type: FieldType,
|
|
1079
|
-
required:
|
|
1080
|
-
options:
|
|
1300
|
+
required: z13.boolean().default(false),
|
|
1301
|
+
options: z13.array(z13.object({ label: I18nLabelSchema, value: z13.string() })).optional()
|
|
1081
1302
|
});
|
|
1082
|
-
var ActionSchema =
|
|
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:
|
|
1307
|
+
label: I18nLabelSchema.describe("Display label"),
|
|
1087
1308
|
/** Icon name (Lucide) */
|
|
1088
|
-
icon:
|
|
1309
|
+
icon: z13.string().optional().describe("Icon name"),
|
|
1089
1310
|
/** Where does this action appear? */
|
|
1090
|
-
locations:
|
|
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:
|
|
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:
|
|
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:
|
|
1337
|
+
type: z13.enum(["script", "url", "modal", "flow", "api"]).default("script").describe("Action functionality type"),
|
|
1117
1338
|
/** Payload / Target */
|
|
1118
|
-
target:
|
|
1339
|
+
target: z13.string().optional().describe("URL, Script Name, Flow ID, or API Endpoint"),
|
|
1119
1340
|
// For URL/Flow types
|
|
1120
|
-
execute:
|
|
1341
|
+
execute: z13.string().optional().describe("Legacy execution logic"),
|
|
1121
1342
|
/** User Input Requirements */
|
|
1122
|
-
params:
|
|
1343
|
+
params: z13.array(ActionParamSchema).optional().describe("Input parameters required from user"),
|
|
1123
1344
|
/** UX Behavior */
|
|
1124
|
-
confirmText:
|
|
1125
|
-
successMessage:
|
|
1126
|
-
refreshAfter:
|
|
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:
|
|
1129
|
-
disabled:
|
|
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:
|
|
1352
|
+
shortcut: z13.string().optional().describe('Keyboard shortcut to trigger this action (e.g., "Ctrl+S")'),
|
|
1132
1353
|
/** Bulk Operations */
|
|
1133
|
-
bulkEnabled:
|
|
1354
|
+
bulkEnabled: z13.boolean().optional().describe("Whether this action can be applied to multiple selected records"),
|
|
1134
1355
|
/** Execution */
|
|
1135
|
-
timeout:
|
|
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
|
|
1143
|
-
var PageRegionSchema =
|
|
1144
|
-
name:
|
|
1145
|
-
width:
|
|
1146
|
-
components:
|
|
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 =
|
|
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 =
|
|
1399
|
+
var PageComponentSchema = z14.object({
|
|
1177
1400
|
/** Definition */
|
|
1178
|
-
type:
|
|
1401
|
+
type: z14.union([
|
|
1179
1402
|
PageComponentType,
|
|
1180
|
-
|
|
1403
|
+
z14.string()
|
|
1181
1404
|
]).describe("Component Type (Standard enum or custom string)"),
|
|
1182
|
-
id:
|
|
1405
|
+
id: z14.string().optional().describe("Unique instance ID"),
|
|
1183
1406
|
/** Configuration */
|
|
1184
|
-
label:
|
|
1185
|
-
properties:
|
|
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:
|
|
1415
|
+
events: z14.record(z14.string(), z14.string()).optional().describe("Event handlers map"),
|
|
1193
1416
|
/** Appearance */
|
|
1194
|
-
style:
|
|
1195
|
-
className:
|
|
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:
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
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:
|
|
1207
|
-
description:
|
|
1433
|
+
label: I18nLabelSchema,
|
|
1434
|
+
description: I18nLabelSchema.optional(),
|
|
1208
1435
|
/** Page Type */
|
|
1209
|
-
type:
|
|
1436
|
+
type: z14.enum(["record", "home", "app", "utility"]).default("record"),
|
|
1210
1437
|
/** Page State Definitions */
|
|
1211
|
-
variables:
|
|
1438
|
+
variables: z14.array(PageVariableSchema).optional().describe("Local page state variables"),
|
|
1212
1439
|
/** Context */
|
|
1213
|
-
object:
|
|
1440
|
+
object: z14.string().optional().describe("Bound object (for Record pages)"),
|
|
1214
1441
|
/** Layout Template */
|
|
1215
|
-
template:
|
|
1442
|
+
template: z14.string().default("default").describe('Layout template name (e.g. "header-sidebar-main")'),
|
|
1216
1443
|
/** Regions & Content */
|
|
1217
|
-
regions:
|
|
1444
|
+
regions: z14.array(PageRegionSchema).describe("Defined regions with components"),
|
|
1218
1445
|
/** Activation */
|
|
1219
|
-
isDefault:
|
|
1220
|
-
assignedProfiles:
|
|
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
|
|
1225
|
-
var WidgetLifecycleSchema =
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
1500
|
+
onError: z15.string().optional().describe("Error handling code")
|
|
1272
1501
|
});
|
|
1273
|
-
var WidgetEventSchema =
|
|
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:
|
|
1509
|
+
name: z15.string().describe("Event name"),
|
|
1281
1510
|
/**
|
|
1282
1511
|
* Event label for documentation
|
|
1283
1512
|
*/
|
|
1284
|
-
label:
|
|
1513
|
+
label: I18nLabelSchema.optional().describe("Human-readable event label"),
|
|
1285
1514
|
/**
|
|
1286
1515
|
* Event description
|
|
1287
1516
|
*/
|
|
1288
|
-
description:
|
|
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:
|
|
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:
|
|
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:
|
|
1536
|
+
payload: z15.record(z15.string(), z15.unknown()).optional().describe("Event payload schema")
|
|
1308
1537
|
});
|
|
1309
|
-
var WidgetPropertySchema =
|
|
1538
|
+
var WidgetPropertySchema = z15.object({
|
|
1310
1539
|
/**
|
|
1311
1540
|
* Property name
|
|
1312
1541
|
* Should be camelCase following ObjectStack conventions
|
|
1313
1542
|
*/
|
|
1314
|
-
name:
|
|
1543
|
+
name: z15.string().describe("Property name (camelCase)"),
|
|
1315
1544
|
/**
|
|
1316
1545
|
* Property label for UI
|
|
1317
1546
|
*/
|
|
1318
|
-
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:
|
|
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:
|
|
1559
|
+
required: z15.boolean().default(false).describe("Whether property is required"),
|
|
1331
1560
|
/**
|
|
1332
1561
|
* Default value for the property
|
|
1333
1562
|
*/
|
|
1334
|
-
default:
|
|
1563
|
+
default: z15.unknown().optional().describe("Default value"),
|
|
1335
1564
|
/**
|
|
1336
1565
|
* Property description
|
|
1337
1566
|
*/
|
|
1338
|
-
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:
|
|
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:
|
|
1576
|
+
category: z15.string().optional().describe("Property category")
|
|
1348
1577
|
});
|
|
1349
|
-
var WidgetSourceSchema =
|
|
1578
|
+
var WidgetSourceSchema = z15.discriminatedUnion("type", [
|
|
1350
1579
|
// NPM Registry (standard)
|
|
1351
|
-
|
|
1352
|
-
type:
|
|
1353
|
-
packageName:
|
|
1354
|
-
version:
|
|
1355
|
-
exportName:
|
|
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
|
-
|
|
1359
|
-
type:
|
|
1360
|
-
url:
|
|
1361
|
-
moduleName:
|
|
1362
|
-
scope:
|
|
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
|
-
|
|
1366
|
-
type:
|
|
1367
|
-
code:
|
|
1594
|
+
z15.object({
|
|
1595
|
+
type: z15.literal("inline"),
|
|
1596
|
+
code: z15.string().describe("JavaScript code body")
|
|
1368
1597
|
})
|
|
1369
1598
|
]);
|
|
1370
|
-
var WidgetManifestSchema =
|
|
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:
|
|
1607
|
+
label: I18nLabelSchema.describe("Widget display name"),
|
|
1379
1608
|
/**
|
|
1380
1609
|
* Widget description
|
|
1381
1610
|
*/
|
|
1382
|
-
description:
|
|
1611
|
+
description: I18nLabelSchema.optional().describe("Widget description"),
|
|
1383
1612
|
/**
|
|
1384
1613
|
* Widget version (semver)
|
|
1385
1614
|
*/
|
|
1386
|
-
version:
|
|
1615
|
+
version: z15.string().optional().describe("Widget version (semver)"),
|
|
1387
1616
|
/**
|
|
1388
1617
|
* Widget author/organization
|
|
1389
1618
|
*/
|
|
1390
|
-
author:
|
|
1619
|
+
author: z15.string().optional().describe("Widget author"),
|
|
1391
1620
|
/**
|
|
1392
1621
|
* Icon name or URL
|
|
1393
1622
|
*/
|
|
1394
|
-
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:
|
|
1629
|
+
fieldTypes: z15.array(z15.string()).optional().describe("Supported field types"),
|
|
1401
1630
|
/**
|
|
1402
1631
|
* Widget category for organization
|
|
1403
1632
|
*/
|
|
1404
|
-
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:
|
|
1641
|
+
events: z15.array(WidgetEventSchema).optional().describe("Custom events"),
|
|
1413
1642
|
/**
|
|
1414
1643
|
* Widget configuration properties
|
|
1415
1644
|
*/
|
|
1416
|
-
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:
|
|
1427
|
-
name:
|
|
1428
|
-
version:
|
|
1429
|
-
url:
|
|
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:
|
|
1663
|
+
screenshots: z15.array(z15.string().url()).optional().describe("Screenshot URLs"),
|
|
1435
1664
|
/**
|
|
1436
1665
|
* Widget documentation URL
|
|
1437
1666
|
*/
|
|
1438
|
-
documentation:
|
|
1667
|
+
documentation: z15.string().url().optional().describe("Documentation URL"),
|
|
1439
1668
|
/**
|
|
1440
1669
|
* License information
|
|
1441
1670
|
*/
|
|
1442
|
-
license:
|
|
1671
|
+
license: z15.string().optional().describe("License (SPDX identifier)"),
|
|
1443
1672
|
/**
|
|
1444
1673
|
* Tags for discovery
|
|
1445
1674
|
*/
|
|
1446
|
-
tags:
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
1495
|
-
var EmptyProps =
|
|
1496
|
-
var PageHeaderProps =
|
|
1497
|
-
title:
|
|
1498
|
-
subtitle:
|
|
1499
|
-
icon:
|
|
1500
|
-
breadcrumb:
|
|
1501
|
-
actions:
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
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:
|
|
1754
|
+
body: z16.array(z16.unknown()).optional().describe("Card content components (slot)"),
|
|
1518
1755
|
/** Slot for footer content */
|
|
1519
|
-
footer:
|
|
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 =
|
|
1522
|
-
columns:
|
|
1523
|
-
layout:
|
|
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:
|
|
1764
|
+
sections: z16.array(z16.string()).optional().describe("Section IDs to show")
|
|
1526
1765
|
});
|
|
1527
|
-
var RecordRelatedListProps =
|
|
1528
|
-
objectName:
|
|
1529
|
-
relationshipField:
|
|
1530
|
-
columns:
|
|
1531
|
-
sort:
|
|
1532
|
-
limit:
|
|
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 =
|
|
1535
|
-
fields:
|
|
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":
|
|
1563
|
-
"ai:suggestion":
|
|
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
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
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:
|
|
1578
|
-
surface:
|
|
1579
|
-
text:
|
|
1580
|
-
textSecondary:
|
|
1581
|
-
border:
|
|
1582
|
-
disabled:
|
|
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:
|
|
1585
|
-
primaryDark:
|
|
1586
|
-
secondaryLight:
|
|
1587
|
-
secondaryDark:
|
|
1588
|
-
});
|
|
1589
|
-
var TypographySchema =
|
|
1590
|
-
fontFamily:
|
|
1591
|
-
base:
|
|
1592
|
-
heading:
|
|
1593
|
-
mono:
|
|
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:
|
|
1596
|
-
xs:
|
|
1597
|
-
sm:
|
|
1598
|
-
base:
|
|
1599
|
-
lg:
|
|
1600
|
-
xl:
|
|
1601
|
-
"2xl":
|
|
1602
|
-
"3xl":
|
|
1603
|
-
"4xl":
|
|
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:
|
|
1606
|
-
light:
|
|
1607
|
-
normal:
|
|
1608
|
-
medium:
|
|
1609
|
-
semibold:
|
|
1610
|
-
bold:
|
|
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:
|
|
1613
|
-
tight:
|
|
1614
|
-
normal:
|
|
1615
|
-
relaxed:
|
|
1616
|
-
loose:
|
|
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:
|
|
1619
|
-
tighter:
|
|
1620
|
-
tight:
|
|
1621
|
-
normal:
|
|
1622
|
-
wide:
|
|
1623
|
-
wider:
|
|
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 =
|
|
1627
|
-
"0":
|
|
1628
|
-
"1":
|
|
1629
|
-
"2":
|
|
1630
|
-
"3":
|
|
1631
|
-
"4":
|
|
1632
|
-
"5":
|
|
1633
|
-
"6":
|
|
1634
|
-
"8":
|
|
1635
|
-
"10":
|
|
1636
|
-
"12":
|
|
1637
|
-
"16":
|
|
1638
|
-
"20":
|
|
1639
|
-
"24":
|
|
1640
|
-
});
|
|
1641
|
-
var BorderRadiusSchema =
|
|
1642
|
-
none:
|
|
1643
|
-
sm:
|
|
1644
|
-
base:
|
|
1645
|
-
md:
|
|
1646
|
-
lg:
|
|
1647
|
-
xl:
|
|
1648
|
-
"2xl":
|
|
1649
|
-
full:
|
|
1650
|
-
});
|
|
1651
|
-
var ShadowSchema =
|
|
1652
|
-
none:
|
|
1653
|
-
sm:
|
|
1654
|
-
base:
|
|
1655
|
-
md:
|
|
1656
|
-
lg:
|
|
1657
|
-
xl:
|
|
1658
|
-
"2xl":
|
|
1659
|
-
inner:
|
|
1660
|
-
});
|
|
1661
|
-
var BreakpointsSchema =
|
|
1662
|
-
xs:
|
|
1663
|
-
sm:
|
|
1664
|
-
md:
|
|
1665
|
-
lg:
|
|
1666
|
-
xl:
|
|
1667
|
-
"2xl":
|
|
1668
|
-
});
|
|
1669
|
-
var AnimationSchema =
|
|
1670
|
-
duration:
|
|
1671
|
-
fast:
|
|
1672
|
-
base:
|
|
1673
|
-
slow:
|
|
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:
|
|
1676
|
-
linear:
|
|
1677
|
-
ease:
|
|
1678
|
-
easeIn:
|
|
1679
|
-
easeOut:
|
|
1680
|
-
easeInOut:
|
|
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 =
|
|
1684
|
-
base:
|
|
1685
|
-
dropdown:
|
|
1686
|
-
sticky:
|
|
1687
|
-
fixed:
|
|
1688
|
-
modalBackdrop:
|
|
1689
|
-
modal:
|
|
1690
|
-
popover:
|
|
1691
|
-
tooltip:
|
|
1692
|
-
});
|
|
1693
|
-
var ThemeMode =
|
|
1694
|
-
var
|
|
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:
|
|
1697
|
-
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:
|
|
2037
|
+
customVars: z19.record(z19.string(), z19.string()).optional().describe("Custom CSS variables (key-value pairs)"),
|
|
1718
2038
|
/** Logo */
|
|
1719
|
-
logo:
|
|
1720
|
-
light:
|
|
1721
|
-
dark:
|
|
1722
|
-
favicon:
|
|
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:
|
|
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,
|