@object-ui/console 3.3.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AppManagementPage-CLr3paaF.js +1 -0
- package/dist/assets/ConsoleFloatingChatbot-C_ClJ2NU.js +1 -0
- package/dist/assets/DashboardView-CODdYLuL.js +1 -0
- package/dist/assets/MetadataDetailPage-C1sWJhl2.js +1 -0
- package/dist/assets/MetadataFormDialog-Cje6P_Wf.js +1 -0
- package/dist/assets/MetadataManagerPage-DobP393N.js +1 -0
- package/dist/assets/PageView-DZHuurne.js +2 -0
- package/dist/assets/ProfilePage-6u6k00rh.js +1 -0
- package/dist/assets/RecordDetailView-cFSCvmx3.js +1 -0
- package/dist/assets/ReportView-oYVEbfYq.js +2 -0
- package/dist/assets/SearchResultsPage-BjAVc5rm.js +1 -0
- package/dist/assets/SystemHubPage-D08IDX3M.js +1 -0
- package/dist/assets/data-adapter-CleWpyQH.js +1 -0
- package/dist/assets/framework-CoXA0nY6.js +2 -0
- package/dist/assets/getIcon-vBP44wSb.js +1 -0
- package/dist/assets/index-98Lfd5ty.js +2 -0
- package/dist/assets/index-C162ArSl.css +2 -0
- package/dist/assets/{infrastructure-94fpO8jL.js → infrastructure-Djv3I7gr.js} +2 -2
- package/dist/assets/plugin-calendar-DX_UWouT.js +1 -0
- package/dist/assets/plugin-charts-BvZ1cSiZ.js +7 -0
- package/dist/assets/plugin-chatbot-DeSEtutf.js +24 -0
- package/dist/assets/plugin-form-BhbVu8jO.js +1 -0
- package/dist/assets/plugin-gantt-BG1WaV_b.js +1 -0
- package/dist/assets/plugin-grid-DwpWK0E8.js +8 -0
- package/dist/assets/plugin-kanban-Dzjqra5U.js +1 -0
- package/dist/assets/plugin-map-B7EfyDsf.js +1 -0
- package/dist/assets/plugin-map-CsMXqW6n.css +1 -0
- package/dist/assets/plugin-markdown-CiHluuxA.js +7 -0
- package/dist/assets/plugin-timeline-D8_YFDQQ.js +1 -0
- package/dist/assets/plugin-view-CXAFUa14.js +1 -0
- package/dist/assets/plugins-views-C5gstDGy.js +63 -0
- package/dist/assets/src-iMF4J4F7.js +1 -0
- package/dist/assets/ui-components-BCmPcwhR.js +36 -0
- package/dist/assets/ui-layout-BLl7ARoe.js +1 -0
- package/dist/assets/vendor-charts-DHZsyaJw.js +36 -0
- package/dist/assets/vendor-dndkit-BGB4qgc3.js +5 -0
- package/dist/assets/vendor-i18n-D3W5EAHR.js +1 -0
- package/dist/assets/vendor-icons-core-s9WPLoP3.js +1 -0
- package/dist/assets/vendor-markdown-D-LpQJes.js +29 -0
- package/dist/assets/vendor-objectstack-CBpPY_xk.js +39 -0
- package/dist/assets/vendor-radix-Bj7uHNWN.js +56 -0
- package/dist/assets/vendor-react-B1k2FF9f.js +11 -0
- package/dist/assets/vendor-ui-utils-AywTz3cM.js +1 -0
- package/dist/index.html +7 -26
- package/package.json +33 -33
- package/dist/assets/AdapterProvider-Cd4HYb7q.js +0 -1
- package/dist/assets/AdvancedChartImpl-AY6sVw1n.js +0 -7
- package/dist/assets/AppManagementPage-6l5ZKnv5.js +0 -1
- package/dist/assets/ChartImpl-DiKY5voi.js +0 -1
- package/dist/assets/DashboardView-BnX2k5Kx.js +0 -1
- package/dist/assets/KanbanEnhanced-BKCx2XIr.js +0 -1
- package/dist/assets/KanbanImpl-e9jzV-UD.js +0 -1
- package/dist/assets/MarkdownImpl-B-r7jSIS.js +0 -1
- package/dist/assets/MetadataDetailPage--3o8VI1T.js +0 -1
- package/dist/assets/MetadataFormDialog-Cy7k0Y55.js +0 -1
- package/dist/assets/MetadataInspector-DVtCDQtx.js +0 -1
- package/dist/assets/MetadataManagerPage-CYfvXG6X.js +0 -1
- package/dist/assets/MetadataProvider-Dvc9BxbC.js +0 -1
- package/dist/assets/PageView-CUDEz8Xo.js +0 -2
- package/dist/assets/ProfilePage-B0BXoAus.js +0 -1
- package/dist/assets/RecordDetailView-CYgcTNQp.js +0 -1
- package/dist/assets/ReportView-ovWyjJsZ.js +0 -1
- package/dist/assets/SearchResultsPage-B-NchFoJ.js +0 -1
- package/dist/assets/SystemHubPage-D8S1hN1a.js +0 -1
- package/dist/assets/data-adapter-v22lWuhc.js +0 -39
- package/dist/assets/framework-BW6KsEI0.js +0 -2
- package/dist/assets/getIcon-N5xWCMJy.js +0 -1
- package/dist/assets/index-DATdOX6r.js +0 -59
- package/dist/assets/index-nwlbpqhl.css +0 -2
- package/dist/assets/plugins-core-Ccvbi6db.js +0 -105
- package/dist/assets/plugins-views-CbLIJkBs.js +0 -62
- package/dist/assets/skeletons-CIQE_YYE.js +0 -1
- package/dist/assets/src-BGoL_8qF.js +0 -1
- package/dist/assets/ui-layout-CYz0tyDf.js +0 -3
- package/dist/assets/vendor-charts-D1AP0-EV.js +0 -33
- package/dist/assets/vendor-icons-CrSf7tAH.js +0 -1
- package/dist/assets/vendor-objectstack-Dhrq31KF.js +0 -1
- package/dist/assets/vendor-react-ryfytPb-.js +0 -9
- /package/dist/assets/{maplibre-gl-BR3qC6SX.js → maplibre-gl-ChgVR8ni.js} +0 -0
- /package/dist/assets/{plugins-core-B5ROGaJH.css → ui-components-B5ROGaJH.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e,_ as t,a as n,b as r,c as ee,d as i,f as a,g as o,h as s,i as c,l,m as u,o as te,p as d,s as f,u as p,v as m,x as h,y as g}from"./data-adapter-v22lWuhc.js";t({key:g().describe(`Translation key (e.g., "views.task_list.label")`),defaultValue:g().optional().describe(`Fallback value when translation key is not found`),params:m(g(),h([g(),o(),i()])).optional().describe(`Interpolation parameters (e.g., { count: 5 })`)});var _=g().describe(`Display label (plain string; i18n keys are auto-generated by the framework)`),v=t({ariaLabel:_.optional().describe(`Accessible label for screen readers (WAI-ARIA aria-label)`),ariaDescribedBy:g().optional().describe(`ID of element providing additional description (WAI-ARIA aria-describedby)`),role:g().optional().describe(`WAI-ARIA role attribute (e.g., "dialog", "navigation", "alert")`)}).describe(`ARIA accessibility attributes`);t({key:g().describe(`Translation key`),zero:g().optional().describe(`Zero form (e.g., "No items")`),one:g().optional().describe(`Singular form (e.g., "{count} item")`),two:g().optional().describe(`Dual form (e.g., "{count} items" for exactly 2)`),few:g().optional().describe(`Few form (e.g., for 2-4 in some languages)`),many:g().optional().describe(`Many form (e.g., for 5+ in some languages)`),other:g().describe(`Default plural form (e.g., "{count} items")`)}).describe(`ICU plural rules for a translation key`);var ne=t({style:n([`decimal`,`currency`,`percent`,`unit`]).default(`decimal`).describe(`Number formatting style`),currency:g().optional().describe(`ISO 4217 currency code (e.g., "USD", "EUR")`),unit:g().optional().describe(`Unit for unit formatting (e.g., "kilometer", "liter")`),minimumFractionDigits:o().optional().describe(`Minimum number of fraction digits`),maximumFractionDigits:o().optional().describe(`Maximum number of fraction digits`),useGrouping:i().optional().describe(`Whether to use grouping separators (e.g., 1,000)`)}).describe(`Number formatting rules`),re=t({dateStyle:n([`full`,`long`,`medium`,`short`]).optional().describe(`Date display style`),timeStyle:n([`full`,`long`,`medium`,`short`]).optional().describe(`Time display style`),timeZone:g().optional().describe(`IANA time zone (e.g., "America/New_York")`),hour12:i().optional().describe(`Use 12-hour format`)}).describe(`Date/time formatting rules`);t({code:g().describe(`BCP 47 language code (e.g., "en-US", "zh-CN")`),fallbackChain:p(g()).optional().describe(`Fallback language codes in priority order (e.g., ["zh-TW", "en"])`),direction:n([`ltr`,`rtl`]).default(`ltr`).describe(`Text direction: left-to-right or right-to-left`),numberFormat:ne.optional().describe(`Default number formatting rules`),dateFormat:re.optional().describe(`Default date/time formatting rules`)}).describe(`Locale configuration`);var y=n(`bar.horizontal-bar.column.grouped-bar.stacked-bar.bi-polar-bar.line.area.stacked-area.step-line.spline.pie.donut.funnel.pyramid.scatter.bubble.treemap.sunburst.sankey.word-cloud.gauge.solid-gauge.metric.kpi.bullet.choropleth.bubble-map.gl-map.heatmap.radar.waterfall.box-plot.violin.candlestick.stock.table.pivot`.split(`.`)),b=t({field:g().describe(`Data field key`),title:_.optional().describe(`Axis display title`),format:g().optional().describe(`Value format string (e.g., "$0,0.00")`),min:o().optional().describe(`Minimum value`),max:o().optional().describe(`Maximum value`),stepSize:o().optional().describe(`Step size for ticks`),showGridLines:i().default(!0),position:n([`left`,`right`,`top`,`bottom`]).optional().describe(`Axis position`),logarithmic:i().default(!1)}),ie=t({name:g().describe(`Field name or series identifier`),label:_.optional().describe(`Series display label`),type:y.optional().describe(`Override chart type for this series`),color:g().optional().describe(`Series color (hex/rgb/token)`),stack:g().optional().describe(`Stack identifier to group series`),yAxis:n([`left`,`right`]).default(`left`).describe(`Bind to specific Y-Axis`)}),ae=t({type:n([`line`,`region`]).default(`line`),axis:n([`x`,`y`]).default(`y`),value:h([o(),g()]).describe(`Start value`),endValue:h([o(),g()]).optional().describe(`End value for regions`),color:g().optional(),label:_.optional(),style:n([`solid`,`dashed`,`dotted`]).default(`dashed`)}),oe=t({tooltips:i().default(!0),zoom:i().default(!1),brush:i().default(!1),clickAction:g().optional().describe(`Action ID to trigger on click`)}),se=t({type:y,title:_.optional().describe(`Chart title`),subtitle:_.optional().describe(`Chart subtitle`),description:_.optional().describe(`Accessibility description`),xAxis:b.optional().describe(`X-Axis configuration`),yAxis:p(b).optional().describe(`Y-Axis configuration (support dual axis)`),series:p(ie).optional().describe(`Defined series configuration`),colors:p(g()).optional().describe(`Color palette`),height:o().optional().describe(`Fixed height in pixels`),showLegend:i().default(!0).describe(`Display legend`),showDataLabels:i().default(!1).describe(`Display data labels`),annotations:p(ae).optional(),interaction:oe.optional(),aria:v.optional().describe(`ARIA accessibility attributes`)}),x=n([`xs`,`sm`,`md`,`lg`,`xl`,`2xl`]),ce=t({xs:o().min(1).max(12).optional(),sm:o().min(1).max(12).optional(),md:o().min(1).max(12).optional(),lg:o().min(1).max(12).optional(),xl:o().min(1).max(12).optional(),"2xl":o().min(1).max(12).optional()}).describe(`Grid columns per breakpoint (1-12)`),le=t({xs:o().optional(),sm:o().optional(),md:o().optional(),lg:o().optional(),xl:o().optional(),"2xl":o().optional()}).describe(`Display order per breakpoint`),S=t({breakpoint:x.optional().describe(`Minimum breakpoint for visibility`),hiddenOn:p(x).optional().describe(`Hide on these breakpoints`),columns:ce.optional().describe(`Grid columns per breakpoint`),order:le.optional().describe(`Display order per breakpoint`)}).describe(`Responsive layout configuration`),C=t({lazyLoad:i().optional().describe(`Enable lazy loading (defer rendering until visible)`),virtualScroll:t({enabled:i().default(!1).describe(`Enable virtual scrolling`),itemHeight:o().optional().describe(`Fixed item height in pixels (for estimation)`),overscan:o().optional().describe(`Number of extra items to render outside viewport`)}).optional().describe(`Virtual scrolling configuration`),cacheStrategy:n([`none`,`cache-first`,`network-first`,`stale-while-revalidate`]).optional().describe(`Client-side data caching strategy`),prefetch:i().optional().describe(`Prefetch data before component is visible`),pageSize:o().optional().describe(`Number of items per page for pagination`),debounceMs:o().optional().describe(`Debounce interval for user interactions in milliseconds`)}).describe(`Performance optimization configuration`),ue=g().min(2,{message:`System identifier must be at least 2 characters`}).regex(/^[a-z][a-z0-9_.]*$/,{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")`}).describe(`System identifier (lowercase with underscores or dots)`),w=g().min(2,{message:`Identifier must be at least 2 characters`}).regex(/^[a-z][a-z0-9_]*$/,{message:`Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., "user_profile")`}).describe(`Snake case identifier (lowercase with underscores only)`);g().min(3,{message:`Event name must be at least 3 characters`}).regex(/^[a-z][a-z0-9_.]*$/,{message:`Event name must be lowercase with dots for namespacing (e.g., "user.created", "order.paid")`}).describe(`Event name (lowercase with dot notation for namespacing)`);var T=t({enabled:i().default(!1).describe(`Enable public sharing`),publicLink:g().optional().describe(`Generated public share URL`),password:g().optional().describe(`Password required to access shared link`),allowedDomains:p(g()).optional().describe(`Restrict access to specific email domains (e.g. ["example.com"])`),expiresAt:g().optional().describe(`Expiration date/time in ISO 8601 format`),allowAnonymous:i().optional().default(!1).describe(`Allow access without authentication`)}),de=t({enabled:i().default(!1).describe(`Enable iframe embedding`),allowedOrigins:p(g()).optional().describe(`Allowed iframe parent origins (e.g. ["https://example.com"])`),width:g().optional().default(`100%`).describe(`Embed width (CSS value)`),height:g().optional().default(`600px`).describe(`Embed height (CSS value)`),showHeader:i().optional().default(!0).describe(`Show interface header in embed`),showNavigation:i().optional().default(!1).describe(`Show navigation in embed`),responsive:i().optional().default(!0).describe(`Enable responsive resizing`)}),E=t({id:w.describe(`Unique identifier for this navigation item (lowercase snake_case)`),label:_.describe(`Display proper label`),icon:g().optional().describe(`Icon name`),order:o().optional().describe(`Sort order within the same level (lower = first)`),badge:h([g(),o()]).optional().describe(`Badge text or count displayed on the item`),visible:g().optional().describe(`Visibility formula condition`),requiredPermissions:p(g()).optional().describe(`Permissions required to access this item`)}),fe=E.extend({type:s(`object`),objectName:g().describe(`Target object name`),viewName:g().optional().describe(`Default list view to open. Defaults to "all"`)}),pe=E.extend({type:s(`dashboard`),dashboardName:g().describe(`Target dashboard name`)}),me=E.extend({type:s(`page`),pageName:g().describe(`Target custom page component name`),params:m(g(),e()).optional().describe(`Parameters passed to the page context`)}),he=E.extend({type:s(`url`),url:g().describe(`Target external URL`),target:n([`_self`,`_blank`]).default(`_self`).describe(`Link target window`)}),ge=E.extend({type:s(`report`),reportName:g().describe(`Target report name`)}),_e=E.extend({type:s(`action`),actionDef:t({actionName:g().describe(`Action machine name to execute`),params:m(g(),e()).optional().describe(`Parameters passed to the action`)}).describe(`Action definition to execute when clicked`)}),ve=E.extend({type:s(`group`),expanded:i().default(!1).describe(`Default expansion state in sidebar`)}),D=u(()=>h([fe.extend({children:p(D).optional().describe(`Child navigation items (e.g. specific views)`)}),pe,me,he,ge,_e,ve.extend({children:p(D).describe(`Child navigation items`)})])),ye=t({primaryColor:g().optional().describe(`Primary theme color hex code`),logo:g().optional().describe(`Custom logo URL for this app`),favicon:g().optional().describe(`Custom favicon URL for this app`)}),be=t({id:w.describe(`Unique area identifier (lowercase snake_case)`),label:_.describe(`Area display label`),icon:g().optional().describe(`Area icon name`),order:o().optional().describe(`Sort order among areas (lower = first)`),description:_.optional().describe(`Area description`),visible:g().optional().describe(`Visibility formula condition for this area`),requiredPermissions:p(g()).optional().describe(`Permissions required to access this area`),navigation:p(D).describe(`Navigation items within this area`)});t({name:w.describe(`App unique machine name (lowercase snake_case)`),label:_.describe(`App display label`),version:g().optional().describe(`App version`),description:_.optional().describe(`App description`),icon:g().optional().describe(`App icon used in the App Launcher`),branding:ye.optional().describe(`App-specific branding`),active:i().optional().default(!0).describe(`Whether the app is enabled`),isDefault:i().optional().default(!1).describe(`Is default app`),navigation:p(D).optional().describe(`Full navigation tree for the app sidebar`),areas:p(be).optional().describe(`Navigation areas for partitioning navigation by business domain`),homePageId:g().optional().describe(`ID of the navigation item to serve as landing page`),requiredPermissions:p(g()).optional().describe(`Permissions required to access this app`),objects:p(e()).optional().describe(`Objects belonging to this app`),apis:p(e()).optional().describe(`Custom APIs belonging to this app`),sharing:T.optional().describe(`Public sharing configuration`),embed:de.optional().describe(`Iframe embedding configuration`),mobileNavigation:t({mode:n([`drawer`,`bottom_nav`,`hamburger`]).default(`drawer`).describe(`Mobile navigation mode: drawer sidebar, bottom navigation bar, or hamburger menu`),bottomNavItems:p(g()).optional().describe(`Navigation item IDs to show in bottom nav (max 5)`)}).optional().describe(`Mobile-specific navigation configuration`),aria:v.optional().describe(`ARIA accessibility attributes for the application`)});var xe=n([`GET`,`POST`,`PUT`,`DELETE`,`PATCH`,`HEAD`,`OPTIONS`]),Se=n([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`]),Ce=t({url:g().describe(`API endpoint URL`),method:Se.optional().default(`GET`).describe(`HTTP method`),headers:m(g(),g()).optional().describe(`Custom HTTP headers`),params:m(g(),e()).optional().describe(`Query parameters`),body:e().optional().describe(`Request body for POST/PUT/PATCH`)});t({enabled:i().default(!0).describe(`Enable CORS`),origins:h([g(),p(g())]).default(`*`).describe(`Allowed origins (* for all)`),methods:p(xe).optional().describe(`Allowed HTTP methods`),credentials:i().default(!1).describe(`Allow credentials (cookies, authorization headers)`),maxAge:o().int().optional().describe(`Preflight cache duration in seconds`)}),t({enabled:i().default(!1).describe(`Enable rate limiting`),windowMs:o().int().default(6e4).describe(`Time window in milliseconds`),maxRequests:o().int().default(100).describe(`Max requests per window`)}),t({path:g().describe(`URL path to serve from`),directory:g().describe(`Physical directory to serve`),cacheControl:g().optional().describe(`Cache-Control header value`)});var O=d(`provider`,[t({provider:s(`object`),object:g().describe(`Target object name`)}),t({provider:s(`api`),read:Ce.optional().describe(`Configuration for fetching data`),write:Ce.optional().describe(`Configuration for submitting data (for forms/editable tables)`)}),t({provider:s(`value`),items:p(e()).describe(`Static data array`)})]),k=t({field:g().describe(`Field name to filter on`),operator:g().describe(`Filter operator (e.g. equals, not_equals, contains, this_quarter)`),value:h([g(),o(),i(),f(),p(h([g(),o()]))]).optional().describe(`Filter value`)}).describe(`View filter rule`),we=n([`none`,`count`,`count_empty`,`count_filled`,`count_unique`,`percent_empty`,`percent_filled`,`sum`,`avg`,`min`,`max`]).describe(`Aggregation function for column footer summary`),Te=t({field:g().describe(`Field name (snake_case)`),label:_.optional().describe(`Display label override`),width:o().positive().optional().describe(`Column width in pixels`),align:n([`left`,`center`,`right`]).optional().describe(`Text alignment`),hidden:i().optional().describe(`Hide column by default`),sortable:i().optional().describe(`Allow sorting by this column`),resizable:i().optional().describe(`Allow resizing this column`),wrap:i().optional().describe(`Allow text wrapping`),type:g().optional().describe(`Renderer type override (e.g., "currency", "date")`),pinned:n([`left`,`right`]).optional().describe(`Pin/freeze column to left or right side`),summary:we.optional().describe(`Footer aggregation function for this column`),link:i().optional().describe(`Functions as the primary navigation link (triggers View navigation)`),action:g().optional().describe(`Registered Action ID to execute when clicked`)}),Ee=t({type:n([`none`,`single`,`multiple`]).default(`none`).describe(`Selection mode`)}),De=t({pageSize:o().int().positive().default(25).describe(`Number of records per page`),pageSizeOptions:p(o().int().positive()).optional().describe(`Available page size options`)}),Oe=n([`compact`,`short`,`medium`,`tall`,`extra_tall`]).describe(`Row height / density setting for list view`),ke=t({fields:p(t({field:g().describe(`Field name to group by`),order:n([`asc`,`desc`]).default(`asc`).describe(`Group sort order`),collapsed:i().default(!1).describe(`Collapse groups by default`)})).min(1).describe(`Fields to group by (supports up to 3 levels)`)}).describe(`Record grouping configuration`),Ae=t({coverField:g().optional().describe(`Attachment/image field to display as card cover`),coverFit:n([`cover`,`contain`]).default(`cover`).describe(`Image fit mode for card cover`),cardSize:n([`small`,`medium`,`large`]).default(`medium`).describe(`Card size in gallery view`),titleField:g().optional().describe(`Field to display as card title`),visibleFields:p(g()).optional().describe(`Fields to display on card body`)}).describe(`Gallery/card view configuration`),je=t({startDateField:g().describe(`Field for timeline item start date`),endDateField:g().optional().describe(`Field for timeline item end date`),titleField:g().describe(`Field to display as timeline item title`),groupByField:g().optional().describe(`Field to group timeline rows`),colorField:g().optional().describe(`Field to determine item color`),scale:n([`hour`,`day`,`week`,`month`,`quarter`,`year`]).default(`week`).describe(`Default timeline scale`)}).describe(`Timeline view configuration`),Me=t({type:n([`personal`,`collaborative`]).default(`collaborative`).describe(`View ownership type`),lockedBy:g().optional().describe(`User who locked the view configuration`)}).describe(`View sharing and access configuration`),Ne=t({field:g().describe(`Field to derive color from (typically a select/status field)`),colors:m(g(),g()).optional().describe(`Map of field value to color (hex/token)`)}).describe(`Row color configuration based on field values`),Pe=n([`grid`,`kanban`,`gallery`,`calendar`,`timeline`,`gantt`,`map`]).describe(`Visualization type that users can switch to`),A=t({sort:i().default(!0).describe(`Allow users to sort records`),search:i().default(!0).describe(`Allow users to search records`),filter:i().default(!0).describe(`Allow users to filter records`),rowHeight:i().default(!0).describe(`Allow users to toggle row height/density`),addRecordForm:i().default(!1).describe(`Add records through a form instead of inline`),buttons:p(g()).optional().describe(`Custom action button IDs to show in the toolbar`)}).describe(`User action toggles for the view toolbar`),j=t({showDescription:i().default(!0).describe(`Show the view description text`),allowedVisualizations:p(Pe).optional().describe(`Whitelist of visualization types users can switch between (e.g. ["grid", "gallery", "kanban"])`)}).describe(`Appearance and visualization configuration`),M=t({name:w.describe(`Tab identifier (snake_case)`),label:_.optional().describe(`Display label`),icon:g().optional().describe(`Tab icon name`),view:g().optional().describe(`Referenced list view name from listViews`),filter:p(k).optional().describe(`Tab-specific filter criteria`),order:o().int().min(0).optional().describe(`Tab display order`),pinned:i().default(!1).describe(`Pin tab (cannot be removed by users)`),isDefault:i().default(!1).describe(`Set as the default active tab`),visible:i().default(!0).describe(`Tab visibility`)}).describe(`Tab configuration for multi-tab view interface`),N=t({enabled:i().default(!0).describe(`Show the add record entry point`),position:n([`top`,`bottom`,`both`]).default(`bottom`).describe(`Position of the add record button`),mode:n([`inline`,`form`,`modal`]).default(`inline`).describe(`How to add a new record`),formView:g().optional().describe(`Named form view to use when mode is "form" or "modal"`)}).describe(`Add record entry point configuration`),Fe=t({groupByField:g().describe(`Field to group columns by (usually status/select)`),summarizeField:g().optional().describe(`Field to sum at top of column (e.g. amount)`),columns:p(g()).describe(`Fields to show on cards`)}),Ie=t({startDateField:g(),endDateField:g().optional(),titleField:g(),colorField:g().optional()}),P=t({startDateField:g(),endDateField:g(),titleField:g(),progressField:g().optional(),dependenciesField:g().optional()}),Le=t({mode:n([`page`,`drawer`,`modal`,`split`,`popover`,`new_window`,`none`]).default(`page`),view:g().optional().describe(`Name of the form view to use for details (e.g. "summary_view", "edit_form")`),preventNavigation:i().default(!1).describe(`Disable standard navigation entirely`),openNewTab:i().default(!1).describe(`Force open in new tab (applies to page mode)`),width:h([g(),o()]).optional().describe(`Width of the drawer/modal (e.g. "600px", "50%")`)}),F=t({name:w.optional().describe(`Internal view name (lowercase snake_case)`),label:_.optional(),type:n([`grid`,`kanban`,`gallery`,`calendar`,`timeline`,`gantt`,`map`]).default(`grid`),data:O.optional().describe(`Data source configuration (defaults to "object" provider)`),columns:h([p(g()),p(Te)]).describe(`Fields to display as columns`),filter:p(k).optional().describe(`Filter criteria (JSON Rules)`),sort:h([g(),p(t({field:g(),order:n([`asc`,`desc`])}))]).optional(),searchableFields:p(g()).optional().describe(`Fields enabled for search`),filterableFields:p(g()).optional().describe(`Fields enabled for end-user filtering in the top bar`),quickFilters:p(t({field:g().describe(`Field name to filter by`),label:g().optional().describe(`Display label for the chip`),operator:n([`equals`,`not_equals`,`contains`,`in`,`is_null`,`is_not_null`]).default(`equals`).describe(`Filter operator`),value:h([g(),o(),i(),f(),p(h([g(),o()]))]).optional().describe(`Preset filter value`)})).optional().describe(`One-click filter chips for quick record filtering`),resizable:i().optional().describe(`Enable column resizing`),striped:i().optional().describe(`Striped row styling`),bordered:i().optional().describe(`Show borders`),selection:Ee.optional().describe(`Row selection configuration`),navigation:Le.optional().describe(`Configuration for item click navigation (page, drawer, modal, etc.)`),pagination:De.optional().describe(`Pagination configuration`),kanban:Fe.optional(),calendar:Ie.optional(),gantt:P.optional(),gallery:Ae.optional(),timeline:je.optional(),description:_.optional().describe(`View description for documentation/tooltips`),sharing:Me.optional().describe(`View sharing and access configuration`),rowHeight:Oe.optional().describe(`Row height / density setting`),grouping:ke.optional().describe(`Group records by one or more fields`),rowColor:Ne.optional().describe(`Color rows based on field value`),hiddenFields:p(g()).optional().describe(`Fields to hide in this specific view`),fieldOrder:p(g()).optional().describe(`Explicit field display order for this view`),rowActions:p(g()).optional().describe(`Actions available for individual row items`),bulkActions:p(g()).optional().describe(`Actions available when multiple rows are selected`),virtualScroll:i().optional().describe(`Enable virtual scrolling for large datasets`),conditionalFormatting:p(t({condition:g().describe(`Condition expression to evaluate`),style:m(g(),g()).describe(`CSS styles to apply when condition is true`)})).optional().describe(`Conditional formatting rules for list rows`),inlineEdit:i().optional().describe(`Allow inline editing of records directly in the list view`),exportOptions:p(n([`csv`,`xlsx`,`pdf`,`json`])).optional().describe(`Available export format options`),userActions:A.optional().describe(`User action toggles for the view toolbar`),appearance:j.optional().describe(`Appearance and visualization configuration`),tabs:p(M).optional().describe(`Tab definitions for multi-tab view interface`),addRecord:N.optional().describe(`Add record entry point configuration`),showRecordCount:i().optional().describe(`Show record count at the bottom of the list`),allowPrinting:i().optional().describe(`Allow users to print the view`),emptyState:t({title:_.optional(),message:_.optional(),icon:g().optional()}).optional().describe(`Empty state configuration when no records found`),aria:v.optional().describe(`ARIA accessibility attributes for the list view`),responsive:S.optional().describe(`Responsive layout configuration`),performance:C.optional().describe(`Performance optimization settings`)}),Re=t({field:g().describe(`Field name (snake_case)`),label:_.optional().describe(`Display label override`),placeholder:_.optional().describe(`Placeholder text`),helpText:_.optional().describe(`Help/hint text`),readonly:i().optional().describe(`Read-only override`),required:i().optional().describe(`Required override`),hidden:i().optional().describe(`Hidden override`),colSpan:o().int().min(1).max(4).optional().describe(`Column span in grid layout (1-4)`),widget:g().optional().describe(`Custom widget/component name`),dependsOn:g().optional().describe(`Parent field name for cascading`),visibleOn:g().optional().describe(`Visibility condition expression`)}),I=t({label:_.optional(),collapsible:i().default(!1),collapsed:i().default(!1),columns:n([`1`,`2`,`3`,`4`]).default(`2`).transform(e=>parseInt(e)),fields:p(h([g(),Re]))}),L=t({type:n([`simple`,`tabbed`,`wizard`,`split`,`drawer`,`modal`]).default(`simple`),data:O.optional().describe(`Data source configuration (defaults to "object" provider)`),sections:p(I).optional(),groups:p(I).optional(),defaultSort:p(t({field:g().describe(`Field name to sort by`),order:n([`asc`,`desc`]).default(`desc`).describe(`Sort direction`)})).optional().describe(`Default sort order for related list views within this form`),sharing:T.optional().describe(`Public sharing configuration for this form`),aria:v.optional().describe(`ARIA accessibility attributes for the form view`)});t({list:F.optional(),form:L.optional(),listViews:m(g(),F).optional().describe(`Additional named list views`),formViews:m(g(),L).optional().describe(`Additional named form views`)});var R=t({$field:g().describe(`Field Reference/Column Name`)});t({$eq:l().optional(),$ne:l().optional()}),t({$gt:h([o(),a(),R]).optional(),$gte:h([o(),a(),R]).optional(),$lt:h([o(),a(),R]).optional(),$lte:h([o(),a(),R]).optional()}),t({$in:p(l()).optional(),$nin:p(l()).optional()}),t({$between:r([h([o(),a(),R]),h([o(),a(),R])]).optional()}),t({$contains:g().optional(),$notContains:g().optional(),$startsWith:g().optional(),$endsWith:g().optional()}),t({$null:i().optional(),$exists:i().optional()});var z=t({$eq:l().optional(),$ne:l().optional(),$gt:h([o(),a(),R]).optional(),$gte:h([o(),a(),R]).optional(),$lt:h([o(),a(),R]).optional(),$lte:h([o(),a(),R]).optional(),$in:p(l()).optional(),$nin:p(l()).optional(),$between:r([h([o(),a(),R]),h([o(),a(),R])]).optional(),$contains:g().optional(),$notContains:g().optional(),$startsWith:g().optional(),$endsWith:g().optional(),$null:i().optional(),$exists:i().optional()}),B=u(()=>m(g(),e()).and(t({$and:p(B).optional(),$or:p(B).optional(),$not:B.optional()})));t({where:B.optional()});var V=u(()=>t({$and:p(h([m(g(),z),V])).optional(),$or:p(h([m(g(),z),V])).optional(),$not:h([m(g(),z),V]).optional()})),ze=n([`default`,`blue`,`teal`,`orange`,`purple`,`success`,`warning`,`danger`]).describe(`Widget color variant`),H=n([`script`,`url`,`modal`,`flow`,`api`]).describe(`Widget action type`),Be=t({label:_.describe(`Action button label`),actionUrl:g().describe(`URL or target for the action`),actionType:H.optional().describe(`Type of action`),icon:g().optional().describe(`Icon identifier for the action button`)}).describe(`Dashboard header action`),Ve=t({showTitle:i().default(!0).describe(`Show dashboard title in header`),showDescription:i().default(!0).describe(`Show dashboard description in header`),actions:p(Be).optional().describe(`Header action buttons`)}).describe(`Dashboard header configuration`),He=t({valueField:g().describe(`Field to aggregate`),aggregate:n([`count`,`sum`,`avg`,`min`,`max`]).default(`count`).describe(`Aggregate function`),label:_.optional().describe(`Measure display label`),format:g().optional().describe(`Number format string`)}).describe(`Widget measure definition`),Ue=t({id:w.describe(`Unique widget identifier (snake_case)`),title:_.optional().describe(`Widget title`),description:_.optional().describe(`Widget description text below the header`),type:y.default(`metric`).describe(`Visualization type`),chartConfig:se.optional().describe(`Chart visualization configuration`),colorVariant:ze.optional().describe(`Widget color variant for theming`),actionUrl:g().optional().describe(`URL or target for the widget action button`),actionType:H.optional().describe(`Type of action for the widget action button`),actionIcon:g().optional().describe(`Icon identifier for the widget action button`),object:g().optional().describe(`Data source object name`),filter:B.optional().describe(`Data filter criteria`),categoryField:g().optional().describe(`Field for grouping (X-Axis)`),valueField:g().optional().describe(`Field for values (Y-Axis)`),aggregate:n([`count`,`sum`,`avg`,`min`,`max`]).optional().default(`count`).describe(`Aggregate function`),measures:p(He).optional().describe(`Multiple measures for pivot/matrix analysis`),layout:t({x:o(),y:o(),w:o(),h:o()}).describe(`Grid layout position`),options:e().optional().describe(`Widget specific configuration`),responsive:S.optional().describe(`Responsive layout configuration`),aria:v.optional().describe(`ARIA accessibility attributes`)}),We=t({object:g().describe(`Source object name`),valueField:g().describe(`Field to use as option value`),labelField:g().describe(`Field to use as option label`),filter:B.optional().describe(`Filter to apply to source object`)}).describe(`Dynamic filter options from object`),Ge=t({field:g().describe(`Field name to filter on`),label:_.optional().describe(`Display label for the filter`),type:n([`text`,`select`,`date`,`number`,`lookup`]).optional().describe(`Filter input type`),options:p(t({value:h([g(),o(),i()]).describe(`Option value`),label:_})).optional().describe(`Static filter options`),optionsFrom:We.optional().describe(`Dynamic filter options from object`),defaultValue:h([g(),o(),i()]).optional().describe(`Default filter value`),scope:n([`dashboard`,`widget`]).default(`dashboard`).describe(`Filter application scope`),targetWidgets:p(g()).optional().describe(`Widget IDs to apply this filter to`)});t({name:w.describe(`Dashboard unique name`),label:_.describe(`Dashboard label`),description:_.optional().describe(`Dashboard description`),header:Ve.optional().describe(`Dashboard header configuration`),widgets:p(Ue).describe(`Widgets to display`),refreshInterval:o().optional().describe(`Auto-refresh interval in seconds`),dateRange:t({field:g().optional().describe(`Default date field name for time-based filtering`),defaultRange:n([`today`,`yesterday`,`this_week`,`last_week`,`this_month`,`last_month`,`this_quarter`,`last_quarter`,`this_year`,`last_year`,`last_7_days`,`last_30_days`,`last_90_days`,`custom`]).default(`this_month`).describe(`Default date range preset`),allowCustomRange:i().default(!0).describe(`Allow users to pick a custom date range`)}).optional().describe(`Global dashboard date range filter configuration`),globalFilters:p(Ge).optional().describe(`Global filters that apply to all widgets in the dashboard`),aria:v.optional().describe(`ARIA accessibility attributes`),performance:C.optional().describe(`Performance optimization settings`)});var Ke=n([`tabular`,`summary`,`matrix`,`joined`]),qe=t({field:g().describe(`Field name`),label:_.optional().describe(`Override label`),aggregate:n([`sum`,`avg`,`max`,`min`,`count`,`unique`]).optional().describe(`Aggregation function`),responsive:S.optional().describe(`Responsive visibility for this column`)}),U=t({field:g().describe(`Field to group by`),sortOrder:n([`asc`,`desc`]).default(`asc`),dateGranularity:n([`day`,`week`,`month`,`quarter`,`year`]).optional().describe(`For date fields`)}),Je=se.extend({xAxis:g().describe(`Grouping field for X-Axis`),yAxis:g().describe(`Summary field for Y-Axis`),groupBy:g().optional().describe(`Additional grouping field`)});t({name:w.describe(`Report unique name`),label:_.describe(`Report label`),description:_.optional(),objectName:g().describe(`Primary object`),type:Ke.default(`tabular`).describe(`Report format type`),columns:p(qe).describe(`Columns to display`),groupingsDown:p(U).optional().describe(`Row groupings`),groupingsAcross:p(U).optional().describe(`Column groupings (Matrix only)`),filter:B.optional().describe(`Filter criteria`),chart:Je.optional().describe(`Embedded chart configuration`),aria:v.optional().describe(`ARIA accessibility attributes`),performance:C.optional().describe(`Performance optimization settings`)});var Ye=n([`aes-256-gcm`,`aes-256-cbc`,`chacha20-poly1305`]).describe(`Supported encryption algorithm`),Xe=n([`local`,`aws-kms`,`azure-key-vault`,`gcp-kms`,`hashicorp-vault`]).describe(`Key management service provider`),Ze=t({enabled:i().default(!1).describe(`Enable automatic key rotation`),frequencyDays:o().min(1).default(90).describe(`Rotation frequency in days`),retainOldVersions:o().default(3).describe(`Number of old key versions to retain`),autoRotate:i().default(!0).describe(`Automatically rotate without manual approval`)}).describe(`Policy for automatic encryption key rotation`),W=t({enabled:i().default(!1).describe(`Enable field-level encryption`),algorithm:Ye.default(`aes-256-gcm`).describe(`Encryption algorithm`),keyManagement:t({provider:Xe.describe(`Key management service provider`),keyId:g().optional().describe(`Key identifier in the provider`),rotationPolicy:Ze.optional().describe(`Key rotation policy`)}).describe(`Key management configuration`),scope:n([`field`,`record`,`table`,`database`]).describe(`Encryption scope level`),deterministicEncryption:i().default(!1).describe(`Allows equality queries on encrypted data`),searchableEncryption:i().default(!1).describe(`Allows search on encrypted data`)}).describe(`Field-level encryption configuration`);t({fieldName:g().describe(`Name of the field to encrypt`),encryptionConfig:W.describe(`Encryption settings for this field`),indexable:i().default(!1).describe(`Allow indexing on encrypted field`)}).describe(`Per-field encryption assignment`);var Qe=n([`redact`,`partial`,`hash`,`tokenize`,`randomize`,`nullify`,`substitute`]).describe(`Data masking strategy for PII protection`),G=t({field:g().describe(`Field name to apply masking to`),strategy:Qe.describe(`Masking strategy to use`),pattern:g().optional().describe(`Regex pattern for partial masking`),preserveFormat:i().default(!0).describe(`Keep the original data format after masking`),preserveLength:i().default(!0).describe(`Keep the original data length after masking`),roles:p(g()).optional().describe(`Roles that see masked data`),exemptRoles:p(g()).optional().describe(`Roles that see unmasked data`)}).describe(`Masking rule for a single field`);t({enabled:i().default(!1).describe(`Enable data masking`),rules:p(G).describe(`List of field-level masking rules`),auditUnmasking:i().default(!0).describe(`Log when masked data is accessed unmasked`)}).describe(`Top-level data masking configuration for PII protection`);var K=n(`text.textarea.email.url.phone.password.markdown.html.richtext.number.currency.percent.date.datetime.time.boolean.toggle.select.multiselect.radio.checkboxes.lookup.master_detail.tree.image.file.avatar.video.audio.formula.summary.autonumber.location.address.code.json.color.rating.slider.signature.qrcode.progress.tags.vector`.split(`.`)),$e=t({label:g().describe(`Display label (human-readable, any case allowed)`),value:ue.describe(`Stored value (lowercase machine identifier)`),color:g().optional().describe(`Color code for badges/charts`),default:i().optional().describe(`Is default option`)});t({latitude:o().min(-90).max(90).describe(`Latitude coordinate`),longitude:o().min(-180).max(180).describe(`Longitude coordinate`),altitude:o().optional().describe(`Altitude in meters`),accuracy:o().optional().describe(`Accuracy in meters`)});var et=t({precision:o().int().min(0).max(10).default(2).describe(`Decimal precision (default: 2)`),currencyMode:n([`dynamic`,`fixed`]).default(`dynamic`).describe(`Currency mode: dynamic (user selectable) or fixed (single currency)`),defaultCurrency:g().length(3).default(`CNY`).describe(`Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)`)});t({value:o().describe(`Monetary amount`),currency:g().length(3).describe(`Currency code (ISO 4217)`)}),t({street:g().optional().describe(`Street address`),city:g().optional().describe(`City name`),state:g().optional().describe(`State/Province`),postalCode:g().optional().describe(`Postal/ZIP code`),country:g().optional().describe(`Country name or code`),countryCode:g().optional().describe(`ISO country code (e.g., US, GB)`),formatted:g().optional().describe(`Formatted address string`)});var tt=t({dimensions:o().int().min(1).max(1e4).describe(`Vector dimensionality (e.g., 1536 for OpenAI embeddings)`),distanceMetric:n([`cosine`,`euclidean`,`dotProduct`,`manhattan`]).default(`cosine`).describe(`Distance/similarity metric for vector search`),normalized:i().default(!1).describe(`Whether vectors are normalized (unit length)`),indexed:i().default(!0).describe(`Whether to create a vector index for fast similarity search`),indexType:n([`hnsw`,`ivfflat`,`flat`]).optional().describe(`Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)`)}),nt=t({minSize:o().min(0).optional().describe(`Minimum file size in bytes`),maxSize:o().min(1).optional().describe(`Maximum file size in bytes (e.g., 10485760 = 10MB)`),allowedTypes:p(g()).optional().describe(`Allowed file extensions (e.g., [".pdf", ".docx", ".jpg"])`),blockedTypes:p(g()).optional().describe(`Blocked file extensions (e.g., [".exe", ".bat", ".sh"])`),allowedMimeTypes:p(g()).optional().describe(`Allowed MIME types (e.g., ["image/jpeg", "application/pdf"])`),blockedMimeTypes:p(g()).optional().describe(`Blocked MIME types`),virusScan:i().default(!1).describe(`Enable virus scanning for uploaded files`),virusScanProvider:n([`clamav`,`virustotal`,`metadefender`,`custom`]).optional().describe(`Virus scanning service provider`),virusScanOnUpload:i().default(!0).describe(`Scan files immediately on upload`),quarantineOnThreat:i().default(!0).describe(`Quarantine files if threat detected`),storageProvider:g().optional().describe(`Object storage provider name (references ObjectStorageConfig)`),storageBucket:g().optional().describe(`Target bucket name`),storagePrefix:g().optional().describe(`Storage path prefix (e.g., "uploads/documents/")`),imageValidation:t({minWidth:o().min(1).optional().describe(`Minimum image width in pixels`),maxWidth:o().min(1).optional().describe(`Maximum image width in pixels`),minHeight:o().min(1).optional().describe(`Minimum image height in pixels`),maxHeight:o().min(1).optional().describe(`Maximum image height in pixels`),aspectRatio:g().optional().describe(`Required aspect ratio (e.g., "16:9", "1:1")`),generateThumbnails:i().default(!1).describe(`Auto-generate thumbnails`),thumbnailSizes:p(t({name:g().describe(`Thumbnail variant name (e.g., "small", "medium", "large")`),width:o().min(1).describe(`Thumbnail width in pixels`),height:o().min(1).describe(`Thumbnail height in pixels`),crop:i().default(!1).describe(`Crop to exact dimensions`)})).optional().describe(`Thumbnail size configurations`),preserveMetadata:i().default(!1).describe(`Preserve EXIF metadata`),autoRotate:i().default(!0).describe(`Auto-rotate based on EXIF orientation`)}).optional().describe(`Image-specific validation rules`),allowMultiple:i().default(!1).describe(`Allow multiple file uploads (overrides field.multiple)`),allowReplace:i().default(!0).describe(`Allow replacing existing files`),allowDelete:i().default(!0).describe(`Allow deleting uploaded files`),requireUpload:i().default(!1).describe(`Require at least one file when field is required`),extractMetadata:i().default(!0).describe(`Extract file metadata (name, size, type, etc.)`),extractText:i().default(!1).describe(`Extract text content from documents (OCR/parsing)`),versioningEnabled:i().default(!1).describe(`Keep previous versions of replaced files`),maxVersions:o().min(1).optional().describe(`Maximum number of versions to retain`),publicRead:i().default(!1).describe(`Allow public read access to uploaded files`),presignedUrlExpiry:o().min(60).max(604800).default(3600).describe(`Presigned URL expiration in seconds (default: 1 hour)`)}).refine(e=>!(e.minSize!==void 0&&e.maxSize!==void 0&&e.minSize>e.maxSize),{message:`minSize must be less than or equal to maxSize`}).refine(e=>!(e.virusScanProvider!==void 0&&e.virusScan!==!0),{message:`virusScanProvider requires virusScan to be enabled`}),rt=t({uniqueness:i().default(!1).describe(`Enforce unique values across all records`),completeness:o().min(0).max(1).default(0).describe(`Minimum ratio of non-null values (0-1, default: 0 = no requirement)`),accuracy:t({source:g().describe(`Reference data source for validation (e.g., "api.verify.com", "master_data")`),threshold:o().min(0).max(1).describe(`Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)`)}).optional().describe(`Accuracy validation configuration`)}),it=t({enabled:i().describe(`Enable caching for computed field results`),ttl:o().min(0).describe(`Cache TTL in seconds (0 = no expiration)`),invalidateOn:p(g()).describe(`Field paths that invalidate cache (e.g., ["inventory.quantity", "pricing.base_price"])`)}),at=t({name:g().regex(/^[a-z_][a-z0-9_]*$/).describe(`Machine name (snake_case)`).optional(),label:g().optional().describe(`Human readable label`),type:K.describe(`Field Data Type`),description:g().optional().describe(`Tooltip/Help text`),format:g().optional().describe(`Format string (e.g. email, phone)`),columnName:g().optional().describe(`Physical column name in the target datasource. Defaults to the field key when not set.`),required:i().default(!1).describe(`Is required`),searchable:i().default(!1).describe(`Is searchable`),multiple:i().default(!1).describe(`Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.`),unique:i().default(!1).describe(`Is unique constraint`),defaultValue:e().optional().describe(`Default value`),maxLength:o().optional().describe(`Max character length`),minLength:o().optional().describe(`Min character length`),precision:o().optional().describe(`Total digits`),scale:o().optional().describe(`Decimal places`),min:o().optional().describe(`Minimum value`),max:o().optional().describe(`Maximum value`),options:p($e).optional().describe(`Static options for select/multiselect`),reference:g().optional().describe(`Target object name (snake_case) for lookup/master_detail fields. Required for relationship types. Used by $expand to resolve foreign key IDs into full objects.`),referenceFilters:p(g()).optional().describe(`Filters applied to lookup dialogs (e.g. "active = true")`),writeRequiresMasterRead:i().optional().describe(`If true, user needs read access to master record to edit this field`),deleteBehavior:n([`set_null`,`cascade`,`restrict`]).optional().default(`set_null`).describe(`What happens if referenced record is deleted`),expression:g().optional().describe(`Formula expression`),summaryOperations:t({object:g().describe(`Source child object name for roll-up`),field:g().describe(`Field on child object to aggregate`),function:n([`count`,`sum`,`min`,`max`,`avg`]).describe(`Aggregation function to apply`)}).optional().describe(`Roll-up summary definition`),language:g().optional().describe(`Programming language for syntax highlighting (e.g., javascript, python, sql)`),theme:g().optional().describe(`Code editor theme (e.g., dark, light, monokai)`),lineNumbers:i().optional().describe(`Show line numbers in code editor`),maxRating:o().optional().describe(`Maximum rating value (default: 5)`),allowHalf:i().optional().describe(`Allow half-star ratings`),displayMap:i().optional().describe(`Display map widget for location field`),allowGeocoding:i().optional().describe(`Allow address-to-coordinate conversion`),addressFormat:n([`us`,`uk`,`international`]).optional().describe(`Address format template`),colorFormat:n([`hex`,`rgb`,`rgba`,`hsl`]).optional().describe(`Color value format`),allowAlpha:i().optional().describe(`Allow transparency/alpha channel`),presetColors:p(g()).optional().describe(`Preset color options`),step:o().optional().describe(`Step increment for slider (default: 1)`),showValue:i().optional().describe(`Display current value on slider`),marks:m(g(),g()).optional().describe(`Custom marks/labels at specific values (e.g., {0: "Low", 50: "Medium", 100: "High"})`),barcodeFormat:n([`qr`,`ean13`,`ean8`,`code128`,`code39`,`upca`,`upce`]).optional().describe(`Barcode format type`),qrErrorCorrection:n([`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"`),displayValue:i().optional().describe(`Display human-readable value below barcode/QR code`),allowScanning:i().optional().describe(`Enable camera scanning for barcode/QR code input`),currencyConfig:et.optional().describe(`Configuration for currency field type`),vectorConfig:tt.optional().describe(`Configuration for vector field type (AI/ML embeddings)`),fileAttachmentConfig:nt.optional().describe(`Configuration for file and attachment field types`),encryptionConfig:W.optional().describe(`Field-level encryption configuration for sensitive data (GDPR/HIPAA/PCI-DSS)`),maskingRule:G.optional().describe(`Data masking rules for PII protection`),auditTrail:i().default(!1).describe(`Enable detailed audit trail for this field (tracks all changes with user and timestamp)`),dependencies:p(g()).optional().describe(`Array of field names that this field depends on (for formulas, visibility rules, etc.)`),cached:it.optional().describe(`Caching configuration for computed/formula fields`),dataQuality:rt.optional().describe(`Data quality validation and monitoring rules`),group:g().optional().describe(`Field group name for organizing fields in forms and layouts (e.g., "contact_info", "billing", "system")`),conditionalRequired:g().optional().describe(`Formula expression that makes this field required when TRUE (e.g., "status = 'closed_won'")`),hidden:i().default(!1).describe(`Hidden from default UI`),readonly:i().default(!1).describe(`Read-only in UI`),sortable:i().optional().default(!0).describe(`Whether field is sortable in list views`),inlineHelpText:g().optional().describe(`Help text displayed below the field in forms`),trackFeedHistory:i().optional().describe(`Track field changes in Chatter/activity feed (Salesforce pattern)`),caseSensitive:i().optional().describe(`Whether text comparisons are case-sensitive`),autonumberFormat:g().optional().describe(`Auto-number display format pattern (e.g., "CASE-{0000}")`),index:i().default(!1).describe(`Create standard database index`),externalId:i().default(!1).describe(`Is external ID for upsert operations`)}),ot=t({name:g(),label:_,type:K,required:i().default(!1),options:p(t({label:_,value:g()})).optional()}),q=n([`script`,`url`,`modal`,`flow`,`api`]),st=new Set(q.options.filter(e=>e!==`script`));t({name:w.describe(`Machine name (lowercase snake_case)`),label:_.describe(`Display label`),objectName:g().regex(/^[a-z_][a-z0-9_]*$/).optional().describe(`Target object this action belongs to. When set, the action is auto-merged into the object's actions array by defineStack().`),icon:g().optional().describe(`Icon name`),locations:p(n([`list_toolbar`,`list_item`,`record_header`,`record_more`,`record_related`,`global_nav`])).optional().describe(`Locations where this action is visible`),component:n([`action:button`,`action:icon`,`action:menu`,`action:group`]).optional().describe(`Visual component override`),type:q.default(`script`).describe(`Action functionality type`),target:g().optional().describe(`URL, Script Name, Flow ID, or API Endpoint`),execute:g().optional().describe(`@deprecated — Use target instead. Auto-migrated to target during parsing.`),params:p(ot).optional().describe(`Input parameters required from user`),variant:n([`primary`,`secondary`,`danger`,`ghost`,`link`]).optional().describe(`Button visual variant for styling (primary = highlighted, danger = destructive, ghost = transparent)`),confirmText:_.optional().describe(`Confirmation message before execution`),successMessage:_.optional().describe(`Success message to show after execution`),refreshAfter:i().default(!1).describe(`Refresh view after execution`),visible:g().optional().describe(`Formula returning boolean`),disabled:h([i(),g()]).optional().describe(`Whether the action is disabled, or a condition expression string`),shortcut:g().optional().describe(`Keyboard shortcut to trigger this action (e.g., "Ctrl+S")`),bulkEnabled:i().optional().describe(`Whether this action can be applied to multiple selected records`),timeout:o().optional().describe(`Maximum execution time in milliseconds for the action`),aria:v.optional().describe(`ARIA accessibility attributes`)}).transform(e=>e.execute&&!e.target?{...e,target:e.execute}:e).refine(e=>!(st.has(e.type)&&!e.target),{message:`Action 'target' is required when type is 'url', 'flow', 'modal', or 'api'.`,path:[`target`]}),n([`count`,`sum`,`avg`,`min`,`max`,`count_distinct`,`percentile`,`median`,`stddev`,`variance`]).describe(`Standard aggregation functions`);var ct=n([`asc`,`desc`]).describe(`Sort order direction`),J=t({field:g().describe(`Field name to sort by`),order:ct.describe(`Sort direction`)}).describe(`Sort field and direction pair`);n([`insert`,`update`,`delete`,`upsert`]).describe(`Data mutation event types`),n([`read_uncommitted`,`read_committed`,`repeatable_read`,`serializable`,`snapshot`]).describe(`Transaction isolation levels (snake_case standard)`),n([`lru`,`lfu`,`ttl`,`fifo`]).describe(`Cache eviction strategy`);var lt=t({name:g().describe(`Region name (e.g. "sidebar", "main", "header")`),width:n([`small`,`medium`,`large`,`full`]).optional(),components:p(u(()=>ft)).describe(`Components in this region`)}),ut=n(`page:header.page:footer.page:sidebar.page:tabs.page:accordion.page:card.page:section.record:details.record:highlights.record:related_list.record:activity.record:chatter.record:path.app:launcher.nav:menu.nav:breadcrumb.global:search.global:notifications.user:profile.ai:chat_window.ai:suggestion.element:text.element:number.element:image.element:divider.element:button.element:filter.element:form.element:record_picker`.split(`.`)),dt=t({object:g().describe(`Object to query`),view:g().optional().describe(`Named view to apply`),filter:B.optional().describe(`Additional filter criteria`),sort:p(J).optional().describe(`Sort order`),limit:o().int().positive().optional().describe(`Max records to display`)}),ft=t({type:h([ut,g()]).describe(`Component Type (Standard enum or custom string)`),id:g().optional().describe(`Unique instance ID`),label:_.optional(),properties:m(g(),e()).describe(`Component props passed to the widget. See component.zod.ts for schemas.`),events:m(g(),g()).optional().describe(`Event handlers map`),style:m(g(),g()).optional().describe(`Inline styles or utility classes`),className:g().optional().describe(`CSS class names`),visibility:g().optional().describe(`Visibility filter/formula`),dataSource:dt.optional().describe(`Per-element data binding for multi-object pages`),responsive:S.optional().describe(`Responsive layout configuration`),aria:v.optional().describe(`ARIA accessibility attributes`)}),pt=t({name:g().describe(`Variable name`),type:n([`string`,`number`,`boolean`,`object`,`array`,`record_id`]).default(`string`),defaultValue:e().optional(),source:g().optional().describe(`Component ID that writes to this variable`)}),mt=t({componentId:g().describe(`Reference to a PageComponent.id in the page`),x:o().int().min(0).describe(`Grid column position (0-based)`),y:o().int().min(0).describe(`Grid row position (0-based)`),width:o().int().min(1).describe(`Width in grid columns`),height:o().int().min(1).describe(`Height in grid rows`)}),ht=t({columns:o().int().min(1).default(12).describe(`Number of grid columns`),rowHeight:o().int().min(1).default(40).describe(`Height of each grid row in pixels`),gap:o().int().min(0).default(8).describe(`Gap between grid items in pixels`),items:p(mt).describe(`Positioned components on the canvas`)}),gt=n([`record`,`home`,`app`,`utility`,`dashboard`,`grid`,`list`,`gallery`,`kanban`,`calendar`,`timeline`,`form`,`record_detail`,`record_review`,`overview`,`blank`]).describe(`Page type — platform or interface page types`),_t=t({object:g().describe(`Target object for review`),filter:B.optional().describe(`Filter criteria for review queue`),sort:p(J).optional().describe(`Sort order for review queue`),displayFields:p(g()).optional().describe(`Fields to display on the review page`),actions:p(t({label:g().describe(`Action button label`),type:n([`approve`,`reject`,`skip`,`custom`]).describe(`Action type`),field:g().optional().describe(`Field to update on action`),value:h([g(),o(),i()]).optional().describe(`Value to set on action`),nextRecord:i().optional().default(!0).describe(`Auto-advance to next record after action`)})).describe(`Review actions`),navigation:n([`sequential`,`random`,`filtered`]).optional().default(`sequential`).describe(`Record navigation mode`),showProgress:i().optional().default(!0).describe(`Show review progress indicator`)}),vt=t({source:g().optional().describe(`Source object name for the page`),levels:o().int().min(1).optional().describe(`Number of hierarchy levels to display`),filterBy:p(k).optional().describe(`Page-level filter criteria`),appearance:j.optional().describe(`Appearance and visualization configuration`),userFilters:t({elements:p(n([`grid`,`gallery`,`kanban`])).optional().describe(`Visualization element types available in user filter bar`),tabs:p(M).optional().describe(`User-configurable tabs`)}).optional().describe(`User filter configuration`),userActions:A.optional().describe(`User action toggles`),addRecord:N.optional().describe(`Add record entry point configuration`),showRecordCount:i().optional().describe(`Show record count at page bottom`),allowPrinting:i().optional().describe(`Allow users to print the page`)}).describe(`Interface-level page configuration (Airtable parity)`);t({name:w.describe(`Page unique name (lowercase snake_case)`),label:_,description:_.optional(),icon:g().optional().describe(`Page icon name`),type:gt.default(`record`).describe(`Page type`),variables:p(pt).optional().describe(`Local page state variables`),object:g().optional().describe(`Bound object (for Record pages)`),recordReview:_t.optional().describe(`Record review configuration (required when type is "record_review")`),blankLayout:ht.optional().describe(`Free-form grid layout for blank pages (used when type is "blank")`),template:g().default(`default`).describe(`Layout template name (e.g. "header-sidebar-main")`),regions:p(lt).describe(`Defined regions with components`),isDefault:i().default(!1),assignedProfiles:p(g()).optional(),interfaceConfig:vt.optional().describe(`Interface-level page configuration (for Airtable-style interface pages)`),aria:v.optional().describe(`ARIA accessibility attributes`)}).superRefine((e,t)=>{e.type===`record_review`&&!e.recordReview&&t.addIssue({code:c.custom,path:[`recordReview`],message:`recordReview is required when type is "record_review"`}),e.type===`blank`&&!e.blankLayout&&t.addIssue({code:c.custom,path:[`blankLayout`],message:`blankLayout is required when type is "blank"`})});var yt=t({onMount:g().optional().describe(`Initialization code when widget mounts`),onUpdate:g().optional().describe(`Code to run when props change`),onUnmount:g().optional().describe(`Cleanup code when widget unmounts`),onValidate:g().optional().describe(`Custom validation logic`),onFocus:g().optional().describe(`Code to run on focus`),onBlur:g().optional().describe(`Code to run on blur`),onError:g().optional().describe(`Error handling code`)}),bt=t({name:g().describe(`Event name`),label:_.optional().describe(`Human-readable event label`),description:_.optional().describe(`Event description and usage`),bubbles:i().default(!1).describe(`Whether event bubbles`),cancelable:i().default(!1).describe(`Whether event is cancelable`),payload:m(g(),e()).optional().describe(`Event payload schema`)}),xt=t({name:g().describe(`Property name (camelCase)`),label:_.optional().describe(`Human-readable label`),type:n([`string`,`number`,`boolean`,`array`,`object`,`function`,`any`]).describe(`TypeScript type`),required:i().default(!1).describe(`Whether property is required`),default:e().optional().describe(`Default value`),description:_.optional().describe(`Property description`),validation:m(g(),e()).optional().describe(`Validation rules`),category:g().optional().describe(`Property category`)}),St=d(`type`,[t({type:s(`npm`),packageName:g().describe(`NPM package name`),version:g().default(`latest`),exportName:g().optional().describe(`Named export (default: default)`)}),t({type:s(`remote`),url:g().url().describe(`Remote entry URL (.js)`),moduleName:g().describe(`Exposed module name`),scope:g().describe(`Remote scope name`)}),t({type:s(`inline`),code:g().describe(`JavaScript code body`)})]);t({name:w.describe(`Widget identifier (snake_case)`),label:_.describe(`Widget display name`),description:_.optional().describe(`Widget description`),version:g().optional().describe(`Widget version (semver)`),author:g().optional().describe(`Widget author`),icon:g().optional().describe(`Widget icon`),fieldTypes:p(g()).optional().describe(`Supported field types`),category:n([`input`,`display`,`picker`,`editor`,`custom`]).default(`custom`).describe(`Widget category`),lifecycle:yt.optional().describe(`Lifecycle hooks`),events:p(bt).optional().describe(`Custom events`),properties:p(xt).optional().describe(`Configuration properties`),implementation:St.optional().describe(`Widget implementation source`),dependencies:p(t({name:g(),version:g().optional(),url:g().url().optional()})).optional().describe(`Widget dependencies`),screenshots:p(g().url()).optional().describe(`Screenshot URLs`),documentation:g().url().optional().describe(`Documentation URL`),license:g().optional().describe(`License (SPDX identifier)`),tags:p(g()).optional().describe(`Tags for categorization`),aria:v.optional().describe(`ARIA accessibility attributes`),performance:C.optional().describe(`Performance optimization settings`)}),t({value:e().describe(`Current field value`),onChange:te().input(r([e()])).output(ee()).describe(`Callback to update field value`),readonly:i().default(!1).describe(`Read-only mode flag`),required:i().default(!1).describe(`Required field flag`),error:g().optional().describe(`Validation error message`),field:at.describe(`Field schema definition`),record:m(g(),e()).optional().describe(`Complete record data`),options:m(g(),e()).optional().describe(`Custom widget options`)});var Y=n([`comment`,`field_change`,`task`,`event`,`email`,`call`,`note`,`file`,`record_create`,`record_delete`,`approval`,`sharing`,`system`]),Ct=t({type:n([`user`,`team`,`record`]).describe(`Mention target type`),id:g().describe(`Target ID`),name:g().describe(`Display name for rendering`),offset:o().int().min(0).describe(`Character offset in body text`),length:o().int().min(1).describe(`Length of mention token in body text`)}),wt=t({field:g().describe(`Field machine name`),fieldLabel:g().optional().describe(`Field display label`),oldValue:e().optional().describe(`Previous value`),newValue:e().optional().describe(`New value`),oldDisplayValue:g().optional().describe(`Human-readable old value`),newDisplayValue:g().optional().describe(`Human-readable new value`)}),Tt=t({emoji:g().describe(`Emoji character or shortcode (e.g., "👍", ":thumbsup:")`),userIds:p(g()).describe(`Users who reacted`),count:o().int().min(1).describe(`Total reaction count`)}),Et=t({type:n([`user`,`system`,`service`,`automation`]).describe(`Actor type`),id:g().describe(`Actor ID`),name:g().optional().describe(`Actor display name`),avatarUrl:g().url().optional().describe(`Actor avatar URL`),source:g().optional().describe(`Source application (e.g., "Omni", "API", "Studio")`)}),Dt=n([`public`,`internal`,`private`]);t({id:g().describe(`Feed item ID`),type:Y.describe(`Activity type`),object:g().describe(`Object name (e.g., "account")`),recordId:g().describe(`Record ID this feed item belongs to`),actor:Et.describe(`Who performed this action`),body:g().optional().describe(`Rich text body (Markdown supported)`),mentions:p(Ct).optional().describe(`Mentioned users/teams/records`),changes:p(wt).optional().describe(`Field-level changes`),reactions:p(Tt).optional().describe(`Emoji reactions on this item`),parentId:g().optional().describe(`Parent feed item ID for threaded replies`),replyCount:o().int().min(0).default(0).describe(`Number of replies`),pinned:i().default(!1).describe(`Whether the feed item is pinned to the top of the timeline`),pinnedAt:g().datetime().optional().describe(`Timestamp when the item was pinned`),pinnedBy:g().optional().describe(`User ID who pinned the item`),starred:i().default(!1).describe(`Whether the feed item is starred/bookmarked by the current user`),starredAt:g().datetime().optional().describe(`Timestamp when the item was starred`),visibility:Dt.default(`public`).describe(`Visibility: public (all users), internal (team only), private (author + mentioned)`),createdAt:g().datetime().describe(`Creation timestamp`),updatedAt:g().datetime().optional().describe(`Last update timestamp`),editedAt:g().datetime().optional().describe(`When comment was last edited`),isEdited:i().default(!1).describe(`Whether comment has been edited`)});var Ot=n([`all`,`comments_only`,`changes_only`,`tasks_only`]);t({}),t({title:_.describe(`Page title`),subtitle:_.optional().describe(`Page subtitle`),icon:g().optional().describe(`Icon name`),breadcrumb:i().default(!0).describe(`Show breadcrumb`),actions:p(g()).optional().describe(`Action IDs to show in header`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({type:n([`line`,`card`,`pill`]).default(`line`),position:n([`top`,`left`]).default(`top`),items:p(t({label:_,icon:g().optional(),children:p(e()).describe(`Child components`)})),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({title:_.optional(),bordered:i().default(!0),actions:p(g()).optional(),body:p(e()).optional().describe(`Card content components (slot)`),footer:p(e()).optional().describe(`Card footer components (slot)`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({columns:n([`1`,`2`,`3`,`4`]).default(`2`).describe(`Number of columns for field layout (1-4)`),layout:n([`auto`,`custom`]).default(`auto`).describe(`Layout mode: auto uses object compactLayout, custom uses explicit sections`),sections:p(g()).optional().describe(`Section IDs to show (required when layout is "custom")`),fields:p(g()).optional().describe(`Explicit field list to display (optional, overrides compactLayout)`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({objectName:g().describe(`Related object name (e.g., "task", "opportunity")`),relationshipField:g().describe(`Field on related object that points to this record (e.g., "account_id")`),columns:p(g()).describe(`Fields to display in the related list`),sort:h([g(),p(t({field:g(),order:n([`asc`,`desc`])}))]).optional().describe(`Sort order for related records`),limit:o().int().positive().default(5).describe(`Number of records to display initially`),filter:p(k).optional().describe(`Additional filter criteria for related records`),title:_.optional().describe(`Custom title for the related list`),showViewAll:i().default(!0).describe(`Show "View All" link to see all related records`),actions:p(g()).optional().describe(`Action IDs available for related records`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({fields:p(g()).min(1).max(7).describe(`Key fields to highlight (1-7 fields max, typically displayed as prominent cards)`),layout:n([`horizontal`,`vertical`]).default(`horizontal`).describe(`Layout orientation for highlight fields`),aria:v.optional().describe(`ARIA accessibility attributes`)});var kt=t({types:p(Y).optional().describe(`Feed item types to show (default: all)`),filterMode:Ot.default(`all`).describe(`Default activity filter`),showFilterToggle:i().default(!0).describe(`Show filter dropdown in panel header`),limit:o().int().positive().default(20).describe(`Number of items to load per page`),showCompleted:i().default(!1).describe(`Include completed activities`),unifiedTimeline:i().default(!0).describe(`Mix field changes and comments in one timeline (Airtable style)`),showCommentInput:i().default(!0).describe(`Show "Leave a comment" input at the bottom`),enableMentions:i().default(!0).describe(`Enable @mentions in comments`),enableReactions:i().default(!1).describe(`Enable emoji reactions on feed items`),enableThreading:i().default(!1).describe(`Enable threaded replies on comments`),showSubscriptionToggle:i().default(!0).describe(`Show bell icon for record-level notification subscription`),aria:v.optional().describe(`ARIA accessibility attributes`)});t({position:n([`sidebar`,`inline`,`drawer`]).default(`sidebar`).describe(`Where to render the chatter panel`),width:h([g(),o()]).optional().describe(`Panel width (e.g., "350px", "30%")`),collapsible:i().default(!0).describe(`Whether the panel can be collapsed`),defaultCollapsed:i().default(!1).describe(`Whether the panel starts collapsed`),feed:kt.optional().describe(`Embedded activity feed configuration`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({statusField:g().describe(`Field name representing the current status/stage`),stages:p(t({value:g(),label:_})).optional().describe(`Explicit stage definitions (if not using field metadata)`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({items:p(t({label:_,icon:g().optional(),collapsed:i().default(!1),children:p(e()).describe(`Child components`)})),allowMultiple:i().default(!1).describe(`Allow multiple panels to be expanded simultaneously`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({mode:n([`float`,`sidebar`,`inline`]).default(`float`).describe(`Display mode for the chat window`),agentId:g().optional().describe(`Specific AI agent to use`),context:m(g(),e()).optional().describe(`Contextual data to pass to the AI`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({content:g().describe(`Text or Markdown content`),variant:n([`heading`,`subheading`,`body`,`caption`]).optional().default(`body`).describe(`Text style variant`),align:n([`left`,`center`,`right`]).optional().default(`left`).describe(`Text alignment`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({object:g().describe(`Source object`),field:g().optional().describe(`Field to aggregate`),aggregate:n([`count`,`sum`,`avg`,`min`,`max`]).describe(`Aggregation function`),filter:B.optional().describe(`Filter criteria`),format:n([`number`,`currency`,`percent`]).optional().describe(`Number display format`),prefix:g().optional().describe(`Prefix text (e.g. "$")`),suffix:g().optional().describe(`Suffix text (e.g. "%")`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({src:g().describe(`Image URL or attachment field`),alt:g().optional().describe(`Alt text for accessibility`),fit:n([`cover`,`contain`,`fill`]).optional().default(`cover`).describe(`Image object-fit mode`),height:o().optional().describe(`Fixed height in pixels`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({label:_.describe(`Button display label`),variant:n([`primary`,`secondary`,`danger`,`ghost`,`link`]).optional().default(`primary`).describe(`Button visual variant`),size:n([`small`,`medium`,`large`]).optional().default(`medium`).describe(`Button size`),icon:g().optional().describe(`Icon name (Lucide icon)`),iconPosition:n([`left`,`right`]).optional().default(`left`).describe(`Icon position relative to label`),disabled:i().optional().default(!1).describe(`Disable the button`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({object:g().describe(`Object to filter`),fields:p(g()).describe(`Filterable field names`),targetVariable:g().optional().describe(`Page variable to store filter state`),layout:n([`inline`,`dropdown`,`sidebar`]).optional().default(`inline`).describe(`Filter display layout`),showSearch:i().optional().default(!0).describe(`Show search input`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({object:g().describe(`Object for the form`),fields:p(g()).optional().describe(`Fields to display (defaults to all editable fields)`),mode:n([`create`,`edit`]).optional().default(`create`).describe(`Form mode`),submitLabel:_.optional().describe(`Submit button label`),onSubmit:g().optional().describe(`Action expression on form submit`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({object:g().describe(`Object to pick records from`),displayField:g().describe(`Field to display as the record label`),searchFields:p(g()).optional().describe(`Fields to search against`),filter:B.optional().describe(`Filter criteria for available records`),multiple:i().optional().default(!1).describe(`Allow multiple record selection`),targetVariable:g().optional().describe(`Page variable to bind selected record ID(s)`),placeholder:_.optional().describe(`Placeholder text`),aria:v.optional().describe(`ARIA accessibility attributes`)}),t({context:g().optional()});var X=t({minWidth:o().default(44).describe(`Minimum touch target width in pixels (WCAG 2.5.5: 44px)`),minHeight:o().default(44).describe(`Minimum touch target height in pixels (WCAG 2.5.5: 44px)`),padding:o().optional().describe(`Additional padding around touch target in pixels`),hitSlop:t({top:o().optional().describe(`Extra hit area above the element`),right:o().optional().describe(`Extra hit area to the right of the element`),bottom:o().optional().describe(`Extra hit area below the element`),left:o().optional().describe(`Extra hit area to the left of the element`)}).optional().describe(`Invisible hit area extension beyond the visible bounds`)}).describe(`Touch target sizing configuration (WCAG accessible)`),At=n([`swipe`,`pinch`,`long_press`,`double_tap`,`drag`,`rotate`,`pan`]).describe(`Touch gesture type`),jt=t({direction:p(n([`up`,`down`,`left`,`right`])).describe(`Allowed swipe directions`),threshold:o().optional().describe(`Minimum distance in pixels to recognize swipe`),velocity:o().optional().describe(`Minimum velocity (px/ms) to trigger swipe`)}).describe(`Swipe gesture recognition settings`),Mt=t({minScale:o().optional().describe(`Minimum scale factor (e.g., 0.5 for 50%)`),maxScale:o().optional().describe(`Maximum scale factor (e.g., 3.0 for 300%)`)}).describe(`Pinch/zoom gesture recognition settings`),Nt=t({duration:o().default(500).describe(`Hold duration in milliseconds to trigger long press`),moveTolerance:o().optional().describe(`Max movement in pixels allowed during press`)}).describe(`Long press gesture recognition settings`);t({gestures:p(t({type:At.describe(`Gesture type to configure`),label:_.optional().describe(`Descriptive label for the gesture action`),enabled:i().default(!0).describe(`Whether this gesture is active`),swipe:jt.optional().describe(`Swipe gesture settings (when type is swipe)`),pinch:Mt.optional().describe(`Pinch gesture settings (when type is pinch)`),longPress:Nt.optional().describe(`Long press settings (when type is long_press)`)}).describe(`Per-gesture configuration`)).optional().describe(`Configured gesture recognizers`),touchTarget:X.optional().describe(`Touch target sizing and hit area`),hapticFeedback:i().optional().describe(`Enable haptic feedback on touch interactions`)}).merge(v.partial()).describe(`Touch and gesture interaction configuration`);var Pt=t({enabled:i().default(!1).describe(`Enable focus trapping within this container`),initialFocus:g().optional().describe(`CSS selector for the element to focus on activation`),returnFocus:i().default(!0).describe(`Return focus to trigger element on deactivation`),escapeDeactivates:i().default(!0).describe(`Allow Escape key to deactivate the focus trap`)}).describe(`Focus trap configuration for modal-like containers`),Ft=t({key:g().describe(`Key combination (e.g., "Ctrl+S", "Alt+N", "Escape")`),action:g().describe(`Action identifier to invoke when shortcut is triggered`),description:_.optional().describe(`Human-readable description of what the shortcut does`),scope:n([`global`,`view`,`form`,`modal`,`list`]).default(`global`).describe(`Scope in which this shortcut is active`)}).describe(`Keyboard shortcut binding`),Z=t({tabOrder:n([`auto`,`manual`]).default(`auto`).describe(`Tab order strategy: auto (DOM order) or manual (explicit tabIndex)`),skipLinks:i().default(!1).describe(`Provide skip-to-content navigation links`),focusVisible:i().default(!0).describe(`Show visible focus indicators for keyboard users`),focusTrap:Pt.optional().describe(`Focus trap settings`),arrowNavigation:i().default(!1).describe(`Enable arrow key navigation between focusable items`)}).describe(`Focus and tab navigation management`);t({shortcuts:p(Ft).optional().describe(`Registered keyboard shortcuts`),focusManagement:Z.optional().describe(`Focus and tab order management`),rovingTabindex:i().default(!1).describe(`Enable roving tabindex pattern for composite widgets`)}).merge(v.partial()).describe(`Keyboard navigation and shortcut configuration`);var It=t({primary:g().describe(`Primary brand color (hex, rgb, or hsl)`),secondary:g().optional().describe(`Secondary brand color`),accent:g().optional().describe(`Accent color for highlights`),success:g().optional().describe(`Success state color (default: green)`),warning:g().optional().describe(`Warning state color (default: yellow)`),error:g().optional().describe(`Error state color (default: red)`),info:g().optional().describe(`Info state color (default: blue)`),background:g().optional().describe(`Background color`),surface:g().optional().describe(`Surface/card background color`),text:g().optional().describe(`Primary text color`),textSecondary:g().optional().describe(`Secondary text color`),border:g().optional().describe(`Border color`),disabled:g().optional().describe(`Disabled state color`),primaryLight:g().optional().describe(`Lighter shade of primary`),primaryDark:g().optional().describe(`Darker shade of primary`),secondaryLight:g().optional().describe(`Lighter shade of secondary`),secondaryDark:g().optional().describe(`Darker shade of secondary`)}),Lt=t({fontFamily:t({base:g().optional().describe(`Base font family (default: system fonts)`),heading:g().optional().describe(`Heading font family`),mono:g().optional().describe(`Monospace font family for code`)}).optional(),fontSize:t({xs:g().optional().describe(`Extra small font size (e.g., 0.75rem)`),sm:g().optional().describe(`Small font size (e.g., 0.875rem)`),base:g().optional().describe(`Base font size (e.g., 1rem)`),lg:g().optional().describe(`Large font size (e.g., 1.125rem)`),xl:g().optional().describe(`Extra large font size (e.g., 1.25rem)`),"2xl":g().optional().describe(`2X large font size (e.g., 1.5rem)`),"3xl":g().optional().describe(`3X large font size (e.g., 1.875rem)`),"4xl":g().optional().describe(`4X large font size (e.g., 2.25rem)`)}).optional(),fontWeight:t({light:o().optional().describe(`Light weight (default: 300)`),normal:o().optional().describe(`Normal weight (default: 400)`),medium:o().optional().describe(`Medium weight (default: 500)`),semibold:o().optional().describe(`Semibold weight (default: 600)`),bold:o().optional().describe(`Bold weight (default: 700)`)}).optional(),lineHeight:t({tight:g().optional().describe(`Tight line height (e.g., 1.25)`),normal:g().optional().describe(`Normal line height (e.g., 1.5)`),relaxed:g().optional().describe(`Relaxed line height (e.g., 1.75)`),loose:g().optional().describe(`Loose line height (e.g., 2)`)}).optional(),letterSpacing:t({tighter:g().optional().describe(`Tighter letter spacing (e.g., -0.05em)`),tight:g().optional().describe(`Tight letter spacing (e.g., -0.025em)`),normal:g().optional().describe(`Normal letter spacing (e.g., 0)`),wide:g().optional().describe(`Wide letter spacing (e.g., 0.025em)`),wider:g().optional().describe(`Wider letter spacing (e.g., 0.05em)`)}).optional()}),Rt=t({0:g().optional().describe(`0 spacing (0)`),1:g().optional().describe(`Spacing unit 1 (e.g., 0.25rem)`),2:g().optional().describe(`Spacing unit 2 (e.g., 0.5rem)`),3:g().optional().describe(`Spacing unit 3 (e.g., 0.75rem)`),4:g().optional().describe(`Spacing unit 4 (e.g., 1rem)`),5:g().optional().describe(`Spacing unit 5 (e.g., 1.25rem)`),6:g().optional().describe(`Spacing unit 6 (e.g., 1.5rem)`),8:g().optional().describe(`Spacing unit 8 (e.g., 2rem)`),10:g().optional().describe(`Spacing unit 10 (e.g., 2.5rem)`),12:g().optional().describe(`Spacing unit 12 (e.g., 3rem)`),16:g().optional().describe(`Spacing unit 16 (e.g., 4rem)`),20:g().optional().describe(`Spacing unit 20 (e.g., 5rem)`),24:g().optional().describe(`Spacing unit 24 (e.g., 6rem)`)}),zt=t({none:g().optional().describe(`No border radius (0)`),sm:g().optional().describe(`Small border radius (e.g., 0.125rem)`),base:g().optional().describe(`Base border radius (e.g., 0.25rem)`),md:g().optional().describe(`Medium border radius (e.g., 0.375rem)`),lg:g().optional().describe(`Large border radius (e.g., 0.5rem)`),xl:g().optional().describe(`Extra large border radius (e.g., 0.75rem)`),"2xl":g().optional().describe(`2X large border radius (e.g., 1rem)`),full:g().optional().describe(`Full border radius (50%)`)}),Bt=t({none:g().optional().describe(`No shadow`),sm:g().optional().describe(`Small shadow`),base:g().optional().describe(`Base shadow`),md:g().optional().describe(`Medium shadow`),lg:g().optional().describe(`Large shadow`),xl:g().optional().describe(`Extra large shadow`),"2xl":g().optional().describe(`2X large shadow`),inner:g().optional().describe(`Inner shadow (inset)`)}),Vt=t({xs:g().optional().describe(`Extra small breakpoint (e.g., 480px)`),sm:g().optional().describe(`Small breakpoint (e.g., 640px)`),md:g().optional().describe(`Medium breakpoint (e.g., 768px)`),lg:g().optional().describe(`Large breakpoint (e.g., 1024px)`),xl:g().optional().describe(`Extra large breakpoint (e.g., 1280px)`),"2xl":g().optional().describe(`2X large breakpoint (e.g., 1536px)`)}),Ht=t({duration:t({fast:g().optional().describe(`Fast animation (e.g., 150ms)`),base:g().optional().describe(`Base animation (e.g., 300ms)`),slow:g().optional().describe(`Slow animation (e.g., 500ms)`)}).optional(),timing:t({linear:g().optional().describe(`Linear timing function`),ease:g().optional().describe(`Ease timing function`),ease_in:g().optional().describe(`Ease-in timing function`),ease_out:g().optional().describe(`Ease-out timing function`),ease_in_out:g().optional().describe(`Ease-in-out timing function`)}).optional()}),Ut=t({base:o().optional().describe(`Base z-index (e.g., 0)`),dropdown:o().optional().describe(`Dropdown z-index (e.g., 1000)`),sticky:o().optional().describe(`Sticky z-index (e.g., 1020)`),fixed:o().optional().describe(`Fixed z-index (e.g., 1030)`),modalBackdrop:o().optional().describe(`Modal backdrop z-index (e.g., 1040)`),modal:o().optional().describe(`Modal z-index (e.g., 1050)`),popover:o().optional().describe(`Popover z-index (e.g., 1060)`),tooltip:o().optional().describe(`Tooltip z-index (e.g., 1070)`)}),Wt=n([`light`,`dark`,`auto`]),Gt=n([`compact`,`regular`,`spacious`]),Kt=n([`AA`,`AAA`]);t({name:w.describe(`Unique theme identifier (snake_case)`),label:g().describe(`Human-readable theme name`),description:g().optional().describe(`Theme description`),mode:Wt.default(`light`).describe(`Theme mode (light, dark, or auto)`),colors:It.describe(`Color palette configuration`),typography:Lt.optional().describe(`Typography settings`),spacing:Rt.optional().describe(`Spacing scale`),borderRadius:zt.optional().describe(`Border radius scale`),shadows:Bt.optional().describe(`Box shadow effects`),breakpoints:Vt.optional().describe(`Responsive breakpoints`),animation:Ht.optional().describe(`Animation settings`),zIndex:Ut.optional().describe(`Z-index scale for layering`),customVars:m(g(),g()).optional().describe(`Custom CSS variables (key-value pairs)`),logo:t({light:g().optional().describe(`Logo URL for light mode`),dark:g().optional().describe(`Logo URL for dark mode`),favicon:g().optional().describe(`Favicon URL`)}).optional().describe(`Logo assets`),extends:g().optional().describe(`Base theme to extend from`),density:Gt.optional().describe(`Display density: compact, regular, or spacious`),wcagContrast:Kt.optional().describe(`WCAG color contrast level (AA or AAA)`),rtl:i().optional().describe(`Enable right-to-left layout direction`),touchTarget:X.optional().describe(`Touch target sizing defaults`),keyboardNavigation:Z.optional().describe(`Keyboard focus management settings`)});var Q=n([`cache_first`,`network_first`,`stale_while_revalidate`,`network_only`,`cache_only`]).describe(`Data fetching strategy for offline/online transitions`),qt=n([`client_wins`,`server_wins`,`manual`,`last_write_wins`]).describe(`How to resolve conflicts when syncing offline changes`),Jt=t({strategy:Q.default(`network_first`).describe(`Sync fetch strategy`),conflictResolution:qt.default(`last_write_wins`).describe(`Conflict resolution policy`),retryInterval:o().optional().describe(`Retry interval in milliseconds between sync attempts`),maxRetries:o().optional().describe(`Maximum number of sync retry attempts`),batchSize:o().optional().describe(`Number of mutations to sync per batch`)}).describe(`Offline-to-online synchronization configuration`),Yt=n([`indexeddb`,`localstorage`,`sqlite`]).describe(`Client-side storage backend for offline cache`),Xt=n([`lru`,`lfu`,`fifo`]).describe(`Cache eviction policy`),Zt=t({maxSize:o().optional().describe(`Maximum cache size in bytes`),ttl:o().optional().describe(`Time-to-live for cached entries in milliseconds`),persistStorage:Yt.default(`indexeddb`).describe(`Storage backend`),evictionPolicy:Xt.default(`lru`).describe(`Cache eviction policy when full`)}).describe(`Client-side offline cache configuration`);t({enabled:i().default(!1).describe(`Enable offline support`),strategy:Q.default(`network_first`).describe(`Default offline fetch strategy`),cache:Zt.optional().describe(`Cache settings for offline data`),sync:Jt.optional().describe(`Sync settings for offline mutations`),offlineIndicator:i().default(!0).describe(`Show a visual indicator when offline`),offlineMessage:_.optional().describe(`Customizable offline status message shown to users`),queueMaxSize:o().optional().describe(`Maximum number of queued offline mutations`)}).describe(`Offline support configuration`);var Qt=n([`fade`,`slide_up`,`slide_down`,`slide_left`,`slide_right`,`scale`,`rotate`,`flip`,`none`]).describe(`Transition preset type`),$t=n([`linear`,`ease`,`ease_in`,`ease_out`,`ease_in_out`,`spring`]).describe(`Animation easing function`),$=t({preset:Qt.optional().describe(`Transition preset to apply`),duration:o().optional().describe(`Transition duration in milliseconds`),easing:$t.optional().describe(`Easing function for the transition`),delay:o().optional().describe(`Delay before transition starts in milliseconds`),customKeyframes:g().optional().describe(`CSS @keyframes name for custom animations`),themeToken:g().optional().describe(`Reference to a theme animation token (e.g. "animation.duration.fast")`)}).describe(`Animation transition configuration`),en=n([`on_mount`,`on_unmount`,`on_hover`,`on_focus`,`on_click`,`on_scroll`,`on_visible`]).describe(`Event that triggers the animation`),tn=t({label:_.optional().describe(`Descriptive label for this animation configuration`),enter:$.optional().describe(`Enter/mount animation`),exit:$.optional().describe(`Exit/unmount animation`),hover:$.optional().describe(`Hover state animation`),trigger:en.optional().describe(`When to trigger the animation`),reducedMotion:n([`respect`,`disable`,`alternative`]).default(`respect`).describe(`Accessibility: how to handle prefers-reduced-motion`)}).merge(v.partial()).describe(`Component-level animation configuration`),nn=t({type:Qt.default(`fade`).describe(`Page transition type`),duration:o().default(300).describe(`Transition duration in milliseconds`),easing:$t.default(`ease_in_out`).describe(`Easing function for the transition`),crossFade:i().default(!1).describe(`Whether to cross-fade between pages`)}).describe(`Page-level transition configuration`);t({label:_.optional().describe(`Descriptive label for the motion configuration`),defaultTransition:$.optional().describe(`Default transition applied to all animations`),pageTransitions:nn.optional().describe(`Page navigation transition settings`),componentAnimations:m(g(),tn).optional().describe(`Component name to animation configuration mapping`),reducedMotion:i().default(!1).describe(`When true, respect prefers-reduced-motion and suppress animations globally`),enabled:i().default(!0).describe(`Enable or disable all animations globally`)}).describe(`Top-level motion and animation design configuration`);var rn=n([`toast`,`snackbar`,`banner`,`alert`,`inline`]).describe(`Notification presentation style`),an=n([`info`,`success`,`warning`,`error`]).describe(`Notification severity level`),on=n([`top_left`,`top_center`,`top_right`,`bottom_left`,`bottom_center`,`bottom_right`]).describe(`Screen position for notification placement`),sn=t({label:_.describe(`Action button label`),action:g().describe(`Action identifier to execute`),variant:n([`primary`,`secondary`,`link`]).default(`primary`).describe(`Button variant style`)}).describe(`Notification action button`);t({type:rn.default(`toast`).describe(`Notification presentation style`),severity:an.default(`info`).describe(`Notification severity level`),title:_.optional().describe(`Notification title`),message:_.describe(`Notification message body`),icon:g().optional().describe(`Icon name override`),duration:o().optional().describe(`Auto-dismiss duration in ms, omit for persistent`),dismissible:i().default(!0).describe(`Allow user to dismiss the notification`),actions:p(sn).optional().describe(`Action buttons`),position:on.optional().describe(`Override default position`)}).merge(v.partial()).describe(`Notification instance definition`),t({defaultPosition:on.default(`top_right`).describe(`Default screen position for notifications`),defaultDuration:o().default(5e3).describe(`Default auto-dismiss duration in ms`),maxVisible:o().default(5).describe(`Maximum number of notifications visible at once`),stackDirection:n([`up`,`down`]).default(`down`).describe(`Stack direction for multiple notifications`),pauseOnHover:i().default(!0).describe(`Pause auto-dismiss timer on hover`)}).describe(`Global notification system configuration`);var cn=n([`element`,`handle`,`grip_icon`]).describe(`Drag initiation method`),ln=n([`move`,`copy`,`link`,`none`]).describe(`Drop operation effect`),un=t({axis:n([`x`,`y`,`both`]).default(`both`).describe(`Constrain drag axis`),bounds:n([`parent`,`viewport`,`none`]).default(`none`).describe(`Constrain within bounds`),grid:r([o(),o()]).optional().describe(`Snap to grid [x, y] in pixels`)}).describe(`Drag movement constraints`),dn=t({label:_.optional().describe(`Accessible label for the drop zone`),accept:p(g()).describe(`Accepted drag item types`),maxItems:o().optional().describe(`Maximum items allowed in drop zone`),highlightOnDragOver:i().default(!0).describe(`Highlight drop zone when dragging over`),dropEffect:ln.default(`move`).describe(`Visual effect on drop`)}).merge(v.partial()).describe(`Drop zone configuration`),fn=t({type:g().describe(`Drag item type identifier for matching with drop zones`),label:_.optional().describe(`Accessible label describing the draggable item`),handle:cn.default(`element`).describe(`How to initiate drag`),constraint:un.optional().describe(`Drag movement constraints`),preview:n([`element`,`custom`,`none`]).default(`element`).describe(`Drag preview type`),disabled:i().default(!1).describe(`Disable dragging`)}).merge(v.partial()).describe(`Draggable item configuration`);t({enabled:i().default(!1).describe(`Enable drag and drop`),dragItem:fn.optional().describe(`Configuration for draggable item`),dropZone:dn.optional().describe(`Configuration for drop target`),sortable:i().default(!1).describe(`Enable sortable list behavior`),autoScroll:i().default(!0).describe(`Auto-scroll during drag near edges`),touchDelay:o().default(200).describe(`Delay in ms before drag starts on touch devices`)}).describe(`Drag and drop interaction configuration`);export{P as t};
|