@riverbankcms/sdk 0.77.1 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +69 -0
  2. package/dist/{PreviewEditorSidebar-DVUG7GK4.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
  3. package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +154 -154
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +14 -2
  13. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  14. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  15. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  16. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  17. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  18. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  19. package/dist/_dts/api/src/navigation.d.ts +12 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  21. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  22. package/dist/_dts/api/src/types.d.ts +3 -1
  23. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  25. package/dist/_dts/blocks/src/index.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  27. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  28. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  32. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  33. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  34. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
  36. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  37. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  38. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  39. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  40. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  41. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  42. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  43. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
  44. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  45. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  46. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  47. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  48. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  49. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  50. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  51. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  55. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  56. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  59. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  63. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  65. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  66. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  67. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  69. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  70. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  71. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  72. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  73. package/dist/_dts/content-editor/src/index.d.ts +5 -0
  74. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  75. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  76. package/dist/_dts/content-model/src/index.d.ts +1 -0
  77. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  78. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  79. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  80. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  81. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  82. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  83. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  84. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  85. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  86. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  87. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  88. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  89. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  90. package/dist/_dts/core/src/duration.d.ts +14 -0
  91. package/dist/_dts/core/src/email-format.d.ts +10 -0
  92. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  93. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  94. package/dist/_dts/core/src/index.d.ts +20 -0
  95. package/dist/_dts/core/src/number-input.d.ts +22 -0
  96. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  97. package/dist/_dts/core/src/slug.d.ts +39 -0
  98. package/dist/_dts/core/src/string.d.ts +19 -0
  99. package/dist/_dts/core/src/uuid.d.ts +6 -0
  100. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  101. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  102. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  103. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  104. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  105. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  106. package/dist/_dts/media-core/src/index.d.ts +10 -0
  107. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  108. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  109. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  110. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  111. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  112. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  113. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  114. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  115. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  116. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  117. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  118. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  119. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  120. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  121. package/dist/_dts/sdk/src/client/types.d.ts +37 -19
  122. package/dist/_dts/sdk/src/index.d.ts +2 -2
  123. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  124. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  125. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  126. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  127. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  128. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  129. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  130. package/dist/_dts/sdk/src/version.d.ts +1 -1
  131. package/dist/_dts/site-commands/src/commands.d.ts +12 -12
  132. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  133. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  134. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  135. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  136. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  137. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  138. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  141. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  142. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  143. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  144. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  145. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  146. package/dist/_dts/theme-core/src/schema.d.ts +64 -18
  147. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  148. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  149. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  150. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  151. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
  152. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  153. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
  154. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  155. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  156. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  157. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  158. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  159. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  160. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  161. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  162. package/dist/{chunk-2SPENC5M.mjs → chunk-F7RTCZYN.mjs} +229 -50
  163. package/dist/{chunk-IENWFSLO.mjs → chunk-NIDXI46P.mjs} +1 -1
  164. package/dist/{chunk-KWJPDZH2.mjs → chunk-OECWLDHN.mjs} +2770 -620
  165. package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
  166. package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
  167. package/dist/{chunk-ZYEJLCTN.mjs → chunk-TXDES5P2.mjs} +2 -2
  168. package/dist/cli/index.mjs +1677 -440
  169. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
  170. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
  171. package/dist/client/bookings.mjs +3707 -259
  172. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
  173. package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
  174. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
  175. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
  176. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
  177. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
  178. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
  179. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
  180. package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
  181. package/dist/client/chunk-PD6NBCEY.mjs +66 -0
  182. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
  183. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
  184. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  185. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
  186. package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
  187. package/dist/client/client.mjs +7070 -4561
  188. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
  189. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
  190. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
  191. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
  192. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
  193. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
  194. package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
  195. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
  196. package/dist/client/hooks.mjs +1040 -278
  197. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
  198. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
  199. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
  200. package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
  201. package/dist/client/rendering/client.mjs +7090 -2645
  202. package/dist/client/rendering/islands.mjs +19 -19
  203. package/dist/client/rendering.mjs +6089 -3792
  204. package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
  205. package/dist/preview-next/before-render.mjs +8 -0
  206. package/dist/preview-next/client/runtime.mjs +5 -5
  207. package/dist/preview-next/editor-chrome.css +10 -0
  208. package/dist/preview-next/middleware.mjs +8 -0
  209. package/dist/{sdk-runtime-6UT2S7KZ.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
  210. package/dist/server/components.mjs +2635 -1262
  211. package/dist/server/config-validation.mjs +1271 -509
  212. package/dist/server/config.mjs +1271 -509
  213. package/dist/server/data.mjs +1040 -278
  214. package/dist/server/index.mjs +488 -246
  215. package/dist/server/next.mjs +4087 -2147
  216. package/dist/server/page-converter.mjs +571 -115
  217. package/dist/server/prebuild.mjs +1 -1
  218. package/dist/server/rendering/server.mjs +2636 -1263
  219. package/dist/server/rendering.mjs +2654 -1268
  220. package/dist/server/routing.mjs +1729 -489
  221. package/dist/server/server.mjs +1532 -530
  222. package/dist/server/theme-bridge.mjs +3151 -131
  223. package/dist/server/theme.mjs +10 -1
  224. package/dist/styles/index.css +488 -48
  225. package/package.json +2 -1
  226. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +0 -8
  227. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  228. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  229. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  230. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
@@ -0,0 +1,18 @@
1
+ import type { SafeCsvFilename } from './csv-types';
2
+ export type SafeCsvFilenameResult = Readonly<{
3
+ ok: true;
4
+ filename: SafeCsvFilename;
5
+ }> | Readonly<{
6
+ ok: false;
7
+ filename: string;
8
+ }>;
9
+ export declare function toSafeCsvFilename(value: string): SafeCsvFilenameResult;
10
+ export declare function assertSafeCsvFilename(value: string): SafeCsvFilename;
11
+ export declare const unsafeCsvFilename: typeof assertSafeCsvFilename;
12
+ export declare function csvFilenameDateRange(input: Readonly<{
13
+ from?: string | null;
14
+ to?: string | null;
15
+ fallback?: string | null;
16
+ prefix?: string | null;
17
+ }>): string;
18
+ export declare function contentDispositionForCsv(filename: SafeCsvFilename): string;
@@ -0,0 +1,4 @@
1
+ import type { CsvColumn, CsvColumnSensitivity, CsvRenderResult, RenderCsvInput, RenderCsvError } from './csv-types';
2
+ export declare function renderCsvExport<Row, Options>(input: RenderCsvInput<Row, Options>): CsvRenderResult;
3
+ export declare function collectCsvColumnSensitivities<Row>(columns: readonly CsvColumn<Row>[]): ReadonlySet<CsvColumnSensitivity>;
4
+ export declare function describeRenderCsvError(error: RenderCsvError): string;
@@ -0,0 +1,116 @@
1
+ import type { Brand, MoneyDateString } from './branded';
2
+ export type CsvExportId = Brand<string, 'CsvExportId'>;
3
+ export type CsvColumnKey = Brand<string, 'CsvColumnKey'>;
4
+ export type SafeCsvFilename = Brand<string, 'SafeCsvFilename'>;
5
+ export type ExportRowLimit = Brand<number, 'ExportRowLimit'>;
6
+ export type CsvColumnSensitivity = 'standard' | 'personal' | 'financial' | 'sensitive';
7
+ export type CsvCell = Readonly<{
8
+ kind: 'empty';
9
+ }> | Readonly<{
10
+ kind: 'text';
11
+ value: string;
12
+ }> | Readonly<{
13
+ kind: 'integer';
14
+ value: number;
15
+ }> | Readonly<{
16
+ kind: 'decimal';
17
+ value: number;
18
+ decimals: number;
19
+ }> | Readonly<{
20
+ kind: 'moneyCents';
21
+ cents: number;
22
+ currency: string;
23
+ }> | Readonly<{
24
+ kind: 'isoDate';
25
+ value: string;
26
+ }> | Readonly<{
27
+ kind: 'isoDateTime';
28
+ value: string;
29
+ }> | Readonly<{
30
+ kind: 'boolean';
31
+ value: boolean;
32
+ }>;
33
+ export type CsvColumn<Row> = Readonly<{
34
+ key: CsvColumnKey;
35
+ header: string;
36
+ sensitivity: CsvColumnSensitivity;
37
+ cell: (row: Row) => CsvCell;
38
+ }>;
39
+ export type CsvExportDefinition<Row, Options> = Readonly<{
40
+ id: CsvExportId;
41
+ filename: (options: Options) => string;
42
+ columns: (options: Options) => readonly CsvColumn<Row>[];
43
+ maxRows: ExportRowLimit;
44
+ }>;
45
+ export type RenderCsvInput<Row, Options> = Readonly<{
46
+ definition: CsvExportDefinition<Row, Options>;
47
+ rows: readonly Row[];
48
+ options: Options;
49
+ }>;
50
+ export type RenderCsvError = Readonly<{
51
+ tag: 'too_many_rows';
52
+ maxRows: number;
53
+ actualRows: number;
54
+ }> | Readonly<{
55
+ tag: 'duplicate_column_key';
56
+ key: string;
57
+ }> | Readonly<{
58
+ tag: 'invalid_filename';
59
+ filename: string;
60
+ }>;
61
+ export type CsvRenderResult = Readonly<{
62
+ ok: true;
63
+ csv: string;
64
+ filename: SafeCsvFilename;
65
+ rowCount: number;
66
+ sensitivities: ReadonlySet<CsvColumnSensitivity>;
67
+ }> | Readonly<{
68
+ ok: false;
69
+ error: RenderCsvError;
70
+ }>;
71
+ export type ExportDateBasis = 'created_at' | 'scheduled_at' | 'cancelled_at' | 'paid_at' | 'processed_at';
72
+ export type ExportDatePreset = '7d' | '30d' | '90d' | '365d' | 'all';
73
+ export type ExportDateRange = Readonly<{
74
+ kind: 'preset';
75
+ preset: ExportDatePreset;
76
+ }> | Readonly<{
77
+ kind: 'custom';
78
+ from?: string;
79
+ to?: string;
80
+ }>;
81
+ export type ResolvedExportDateWindow<Basis extends ExportDateBasis = ExportDateBasis> = Readonly<{
82
+ basis: Basis;
83
+ from: MoneyDateString;
84
+ to: MoneyDateString;
85
+ timeZone: string;
86
+ }>;
87
+ export type CsvExportDatePolicy<Basis extends ExportDateBasis = ExportDateBasis> = Readonly<{
88
+ supportedDateBases: readonly Basis[];
89
+ defaultDateBasis: Basis;
90
+ }>;
91
+ export type ExportDateFilterError = Readonly<{
92
+ tag: 'unsupported_date_basis';
93
+ basis: ExportDateBasis;
94
+ exportId: CsvExportId;
95
+ }> | Readonly<{
96
+ tag: 'invalid_date';
97
+ field: 'from' | 'to';
98
+ value: string;
99
+ }> | Readonly<{
100
+ tag: 'partial_custom_range';
101
+ }> | Readonly<{
102
+ tag: 'invalid_date_range';
103
+ from: MoneyDateString;
104
+ to: MoneyDateString;
105
+ }>;
106
+ export type MoneyExportCurrencyPolicy = Readonly<{
107
+ kind: 'single_currency';
108
+ currency: string;
109
+ }> | Readonly<{
110
+ kind: 'group_by_currency';
111
+ }> | Readonly<{
112
+ kind: 'reject_mixed_currency';
113
+ }>;
114
+ export declare function asCsvExportId(value: string): CsvExportId;
115
+ export declare function asCsvColumnKey(value: string): CsvColumnKey;
116
+ export declare function asExportRowLimit(value: number): ExportRowLimit;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Format minor currency units using the locale customers expect for that code.
3
+ */
4
+ export declare function formatCurrencyAmount(amountCents: number, currency: string): string;
@@ -0,0 +1,29 @@
1
+ import { type DemoCapability } from './index';
2
+ export declare const demoSurfaceClassificationValues: readonly ["allowed", "blocked-hidden", "blocked-disabled", "internal-only", "needs-classification"];
3
+ export type DemoSurfaceClassification = (typeof demoSurfaceClassificationValues)[number];
4
+ export type DemoRestrictionReason = 'surface_not_classified' | 'dangerous_surface' | 'internal_only' | 'claim_not_active';
5
+ export type DemoCapabilityDecision = Readonly<{
6
+ allowed: true;
7
+ classification: Extract<DemoSurfaceClassification, 'allowed'>;
8
+ }> | Readonly<{
9
+ allowed: false;
10
+ classification: DemoSurfaceClassification;
11
+ reason: DemoRestrictionReason;
12
+ surface: DemoCapability;
13
+ }>;
14
+ export type DemoClaimAccessState = Readonly<{
15
+ kind: 'active';
16
+ }> | Readonly<{
17
+ kind: 'expired';
18
+ }> | Readonly<{
19
+ kind: 'released';
20
+ }> | Readonly<{
21
+ kind: 'missing';
22
+ }>;
23
+ export type DemoCapabilityPolicyInput = Readonly<{
24
+ surface: DemoCapability;
25
+ classification: DemoSurfaceClassification;
26
+ claim: DemoClaimAccessState;
27
+ }>;
28
+ /** Evaluates a classified demo mutation surface and fails closed for inactive claims or unknown surfaces. */
29
+ export declare function evaluateDemoCapability(input: DemoCapabilityPolicyInput): DemoCapabilityDecision;
@@ -0,0 +1,14 @@
1
+ import type { DemoClaimAccessState } from './demo-capability-policy';
2
+ import type { DemoClaimStatus, DemoInstanceStatus } from './demo-lifecycle-status';
3
+ export type DemoClaimAccessInstance = Readonly<{
4
+ status: DemoInstanceStatus;
5
+ }>;
6
+ export type DemoClaimAccessClaim = Readonly<{
7
+ status: DemoClaimStatus;
8
+ expiresAt: string;
9
+ }> | null;
10
+ export declare function deriveDemoClaimAccessState(input: Readonly<{
11
+ instance: DemoClaimAccessInstance;
12
+ claim: DemoClaimAccessClaim;
13
+ now: Date;
14
+ }>): DemoClaimAccessState;
@@ -0,0 +1,11 @@
1
+ export declare const demoBlueprintStatusValues: readonly ["draft", "published", "archived"];
2
+ export type DemoBlueprintStatus = (typeof demoBlueprintStatusValues)[number];
3
+ export declare const demoInstanceStatusValues: readonly ["warming", "available", "claimed", "expired", "recycling", "failed"];
4
+ export type DemoInstanceStatus = (typeof demoInstanceStatusValues)[number];
5
+ export declare const demoClaimStatusValues: readonly ["active", "expired", "released"];
6
+ export type DemoClaimStatus = (typeof demoClaimStatusValues)[number];
7
+ export declare const demoBlueprintArtifactKindValues: readonly ["site_backup", "manual_snapshot"];
8
+ export type DemoBlueprintArtifactKind = (typeof demoBlueprintArtifactKindValues)[number];
9
+ export declare function narrowDemoInstanceStatus(value: string): DemoInstanceStatus;
10
+ export declare function narrowDemoClaimStatus(value: string): DemoClaimStatus;
11
+ export declare function narrowDemoBlueprintArtifactKind(value: string): DemoBlueprintArtifactKind;
@@ -0,0 +1,47 @@
1
+ export declare const RIVERBANK_RUNTIME_ENV_VAR = "RIVERBANK_RUNTIME_ENV";
2
+ export declare const riverbankRuntimeEnvValues: readonly ["production", "staging", "demo"];
3
+ export type RiverbankRuntimeEnv = (typeof riverbankRuntimeEnvValues)[number];
4
+ export type RiverbankRuntime = Readonly<{
5
+ kind: 'production';
6
+ demoAllowed: false;
7
+ }> | Readonly<{
8
+ kind: 'staging';
9
+ demoAllowed: false;
10
+ }> | Readonly<{
11
+ kind: 'demo';
12
+ demoAllowed: true;
13
+ }>;
14
+ export type RiverbankRuntimeResolution = Readonly<{
15
+ kind: 'resolved';
16
+ runtime: RiverbankRuntime;
17
+ }> | Readonly<{
18
+ kind: 'invalid';
19
+ error: RiverbankRuntimeResolutionError;
20
+ }>;
21
+ export type RiverbankRuntimeResolutionError = Readonly<{
22
+ kind: 'missing_runtime_env';
23
+ envVar: typeof RIVERBANK_RUNTIME_ENV_VAR;
24
+ }> | Readonly<{
25
+ kind: 'unsupported_runtime_env';
26
+ envVar: typeof RIVERBANK_RUNTIME_ENV_VAR;
27
+ rawValue: string;
28
+ normalizedValue: string;
29
+ supportedValues: readonly RiverbankRuntimeEnv[];
30
+ }>;
31
+ export type DemoRuntimeRequirement = Readonly<{
32
+ allowed: true;
33
+ runtime: Extract<RiverbankRuntime, {
34
+ kind: 'demo';
35
+ }>;
36
+ }> | Readonly<{
37
+ allowed: false;
38
+ reason: DemoRuntimeRequirementDenialReason;
39
+ runtime?: Exclude<RiverbankRuntime, {
40
+ kind: 'demo';
41
+ }>;
42
+ error?: RiverbankRuntimeResolutionError;
43
+ }>;
44
+ export type DemoRuntimeRequirementDenialReason = 'missing_runtime_env' | 'unsupported_runtime_env' | 'not_demo_runtime';
45
+ export declare function parseRiverbankRuntimeEnv(rawValue: string | null | undefined): RiverbankRuntimeResolution;
46
+ export declare function resolveRiverbankRuntimeEnv(env: Readonly<Record<string, string | undefined>>): RiverbankRuntimeResolution;
47
+ export declare function requireDemoRuntime(resolution: RiverbankRuntimeResolution): DemoRuntimeRequirement;
@@ -0,0 +1,14 @@
1
+ export type DurationUnit = 'minutes' | 'hours' | 'days' | 'weeks';
2
+ export declare const DURATION_UNIT_MINUTES: Record<DurationUnit, number>;
3
+ export declare function formatDurationUnitLabel(unit: DurationUnit, count: number): string;
4
+ /**
5
+ * Picks the coarsest allowed unit that cleanly divides `minutes`. Falls back
6
+ * to the smallest allowed unit when no clean divisor exists.
7
+ */
8
+ export declare function pickDurationDisplayUnit(minutes: number, allowed: readonly DurationUnit[]): DurationUnit;
9
+ /**
10
+ * Guarantees the widget invariant `displayValue x unit === storedMinutes` is
11
+ * representable by prepending minutes when no caller-provided unit divides.
12
+ */
13
+ export declare function expandAllowedDurationUnits(value: number, base: readonly DurationUnit[]): readonly DurationUnit[];
14
+ export declare function clampDurationMinutes(value: number, min: number | undefined, max: number | undefined): number;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mask an email address for display purposes.
3
+ * Shows first and last characters of the local part with asterisks in between.
4
+ * Example: "john.doe@example.com" -> "j******e@example.com"
5
+ * For 1-2 character local parts, preserve only the first character and append "***"
6
+ * so very short addresses do not leak disproportionate detail.
7
+ */
8
+ export declare function maskEmail(email: string): string;
9
+ export declare function maskEmail(email: null): null;
10
+ export declare function maskEmail(email: string | null): string | null;
@@ -0,0 +1 @@
1
+ export declare function clearFieldError<TField extends string, TErrors extends Partial<Record<TField, string>>>(errors: TErrors, field: TField): TErrors;
@@ -0,0 +1,24 @@
1
+ type SchemaField = {
2
+ id: string;
3
+ label?: string | null;
4
+ type?: string | null;
5
+ required?: boolean | null;
6
+ };
7
+ type SubmissionRow = {
8
+ dataJson: Record<string, unknown> | null;
9
+ };
10
+ export type SubmissionPreviewField = {
11
+ id: string;
12
+ label: string;
13
+ type: string;
14
+ };
15
+ export declare const FORM_SUBMISSION_PSEUDO_FIELD_ID = "submission";
16
+ export declare const HIDDEN_FIELD_IDS: Set<string>;
17
+ export declare function selectSubmissionPreviewFields(schemaFields: unknown, submissions: SubmissionRow[]): SubmissionPreviewField[];
18
+ export declare function humanizeSubmissionFieldKey(input: string): string;
19
+ export declare function orderSubmissionFields(schemaFields: SchemaField[] | undefined, data: Record<string, unknown> | null): {
20
+ id: string;
21
+ label: string;
22
+ value: unknown;
23
+ }[];
24
+ export {};
@@ -1,5 +1,10 @@
1
1
  export * from "./branded";
2
2
  export * from "./date-math";
3
+ export * from "./duration";
4
+ export * from "./demo-capability-policy";
5
+ export * from "./demo-claim-access";
6
+ export * from "./demo-lifecycle-status";
7
+ export * from "./demo-runtime";
3
8
  export * from "./collections";
4
9
  export * from "./event-pricing";
5
10
  export * from "./money-input";
@@ -21,5 +26,20 @@ export * from "./sensitive-collection";
21
26
  export * from "./assertNever";
22
27
  export * from "./participants";
23
28
  export * from "./participant-identity";
29
+ export * from "./public-url-validation";
30
+ export * from "./number-input";
31
+ export * from "./field-errors";
32
+ export * from "./form-submission-preview";
33
+ export * from "./csv-cells";
34
+ export * from "./csv-date-filter";
35
+ export * from "./csv-escape";
36
+ export * from "./csv-filename";
37
+ export * from "./csv-render";
38
+ export * from "./csv-types";
39
+ export * from "./currency-format";
40
+ export * from "./email-format";
41
+ export * from "./slug";
42
+ export * from "./string";
43
+ export * from "./uuid";
24
44
  export { disabledSelection, enabledSelection, plannerNoChange, plannerPatch, plannerUpdate, resolvePlanningDateInput, resolvePlanningNow, resolvePlanningNowDate, systemPlanningClock, } from "./planner";
25
45
  export type { DisabledSelection, EnabledSelection, OptionalSelection, PlannerNoChange, PlannerPatch, PlannerUpdate, PlanningClock, PlanningDateInput, PlanningTimeOptions, } from "./planner";
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Numeric form-input parsing helpers with preserve-prev semantics on
3
+ * NaN/empty/negative. Use these in `NumberInput.onChange` so empty input
4
+ * doesn't silently rewrite the user's value to 0.
5
+ *
6
+ * The caller skips the dispatch when `null` is returned; the input box
7
+ * keeps showing whatever the user typed (it's an uncontrolled native
8
+ * input from React's perspective until the next state change), and the
9
+ * dirty/saved state stays consistent.
10
+ */
11
+ /**
12
+ * Parse a `valueAsNumber` (from `<input type="number">`) into a finite
13
+ * non-negative integer, or `null` if the value is empty / NaN / negative.
14
+ * Fractional input is `Math.trunc`'d to an integer.
15
+ */
16
+ export declare function parseFiniteNonNegativeInt(value: number): number | null;
17
+ /**
18
+ * Parse a `valueAsNumber` into an integer bounded inclusive by `[min, max]`.
19
+ * Returns `null` for out-of-range or non-finite input — same preserve-prev
20
+ * pattern as `parseFiniteNonNegativeInt`.
21
+ */
22
+ export declare function parseBoundedInt(value: number, min: number, max: number): number | null;
@@ -0,0 +1,12 @@
1
+ export type PublicUrlProtocol = 'http:' | 'https:';
2
+ export type PublicUrlPortPolicy = 'standard-only' | 'any-valid';
3
+ export type PublicUrlValidationOptions = Readonly<{
4
+ allowedProtocols: readonly PublicUrlProtocol[];
5
+ portPolicy: PublicUrlPortPolicy;
6
+ errorFactory?: (message: string) => Error;
7
+ }>;
8
+ export declare function buildPublicUrlValidationError(message: string, errorFactory?: (message: string) => Error): Error;
9
+ export declare function isIpAddress(value: string): boolean;
10
+ export declare function isPrivateIp(ip: string): boolean;
11
+ export declare function assertAllowedPublicHostname(hostname: string, errorFactory?: (message: string) => Error): void;
12
+ export declare function assertAllowedPublicUrl(raw: string, options: PublicUrlValidationOptions): URL;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Convert a string to a URL-safe slug
3
+ *
4
+ * @param text - The text to slugify
5
+ * @returns URL-safe slug (lowercase, alphanumeric + hyphens)
6
+ *
7
+ * @example
8
+ * slugify("Initial Consultation") // "initial-consultation"
9
+ * slugify("90-Minute Deep Tissue") // "90-minute-deep-tissue"
10
+ * slugify("Reiki & Energy Healing") // "reiki-energy-healing"
11
+ */
12
+ export declare function slugify(text: string): string;
13
+ /**
14
+ * Generate a unique slug by appending a number if needed
15
+ *
16
+ * @param baseSlug - The base slug to make unique
17
+ * @param existingSlugs - Array of slugs already in use
18
+ * @returns Unique slug (adds -2, -3, etc. if needed)
19
+ *
20
+ * @example
21
+ * makeUniqueSlug("consultation", ["consultation"])
22
+ * // Returns: "consultation-2"
23
+ *
24
+ * makeUniqueSlug("consultation", ["consultation", "consultation-2"])
25
+ * // Returns: "consultation-3"
26
+ */
27
+ export declare function makeUniqueSlug(baseSlug: string, existingSlugs: string[]): string;
28
+ /**
29
+ * Generate a slug from text and ensure it's unique
30
+ *
31
+ * @param text - The text to slugify
32
+ * @param existingSlugs - Array of slugs already in use
33
+ * @returns Unique URL-safe slug
34
+ *
35
+ * @example
36
+ * generateUniqueSlug("Initial Consultation", ["initial-consultation"])
37
+ * // Returns: "initial-consultation-2"
38
+ */
39
+ export declare function generateUniqueSlug(text: string, existingSlugs: string[]): string;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * String utilities
3
+ */
4
+ /**
5
+ * Return the string value when the input is already a string, otherwise null.
6
+ */
7
+ export declare function asNullableString(value: unknown): string | null;
8
+ /**
9
+ * Return a non-empty string value, otherwise null.
10
+ */
11
+ export declare function asNonEmptyStringOrNull(value: unknown): string | null;
12
+ /**
13
+ * Trim a user-entered string and collapse blank values to null.
14
+ */
15
+ export declare function trimmedStringOrNull(value: string | null | undefined): string | null;
16
+ /**
17
+ * Capitalize the first character of a string
18
+ */
19
+ export declare function capitalize(str: string): string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Validates whether a string matches UUID v4 format
3
+ * Format: 8-4-4-4-12 hexadecimal digits
4
+ * Example: 550e8400-e29b-41d4-a716-446655440000
5
+ */
6
+ export declare function isValidUuid(str: string): boolean;
@@ -364,13 +364,13 @@ export declare const formFieldSchema: z.ZodObject<{
364
364
  date: "date";
365
365
  time: "time";
366
366
  email: "email";
367
- url: "url";
368
- select: "select";
369
- textarea: "textarea";
370
367
  text: "text";
371
- tel: "tel";
372
- radio: "radio";
368
+ textarea: "textarea";
369
+ select: "select";
373
370
  checkbox: "checkbox";
371
+ radio: "radio";
372
+ url: "url";
373
+ tel: "tel";
374
374
  consent: "consent";
375
375
  }>;
376
376
  required: z.ZodDefault<z.ZodBoolean>;
@@ -425,13 +425,13 @@ declare const bookingQuestionScalarFieldSchema: z.ZodObject<{
425
425
  date: "date";
426
426
  time: "time";
427
427
  email: "email";
428
- url: "url";
429
- select: "select";
430
- textarea: "textarea";
431
428
  text: "text";
432
- tel: "tel";
433
- radio: "radio";
429
+ textarea: "textarea";
430
+ select: "select";
434
431
  checkbox: "checkbox";
432
+ radio: "radio";
433
+ url: "url";
434
+ tel: "tel";
435
435
  }>;
436
436
  }, z.core.$strict>;
437
437
  declare const bookingQuestionDocumentUploadFieldSchema: z.ZodObject<{
@@ -481,13 +481,13 @@ export declare const bookingQuestionFieldSchema: z.ZodDiscriminatedUnion<[z.ZodO
481
481
  date: "date";
482
482
  time: "time";
483
483
  email: "email";
484
- url: "url";
485
- select: "select";
486
- textarea: "textarea";
487
484
  text: "text";
488
- tel: "tel";
489
- radio: "radio";
485
+ textarea: "textarea";
486
+ select: "select";
490
487
  checkbox: "checkbox";
488
+ radio: "radio";
489
+ url: "url";
490
+ tel: "tel";
491
491
  }>;
492
492
  }, z.core.$strict>, z.ZodObject<{
493
493
  id: z.ZodString;
@@ -540,13 +540,13 @@ export declare const bookingQuestionsSectionSchema: z.ZodObject<{
540
540
  date: "date";
541
541
  time: "time";
542
542
  email: "email";
543
- url: "url";
544
- select: "select";
545
- textarea: "textarea";
546
543
  text: "text";
547
- tel: "tel";
548
- radio: "radio";
544
+ textarea: "textarea";
545
+ select: "select";
549
546
  checkbox: "checkbox";
547
+ radio: "radio";
548
+ url: "url";
549
+ tel: "tel";
550
550
  }>;
551
551
  }, z.core.$strict>, z.ZodObject<{
552
552
  id: z.ZodString;
@@ -602,13 +602,13 @@ export declare const bookingQuestionsDetailedSchemaSchema: z.ZodObject<{
602
602
  date: "date";
603
603
  time: "time";
604
604
  email: "email";
605
- url: "url";
606
- select: "select";
607
- textarea: "textarea";
608
605
  text: "text";
609
- tel: "tel";
610
- radio: "radio";
606
+ textarea: "textarea";
607
+ select: "select";
611
608
  checkbox: "checkbox";
609
+ radio: "radio";
610
+ url: "url";
611
+ tel: "tel";
612
612
  }>;
613
613
  }, z.core.$strict>, z.ZodObject<{
614
614
  id: z.ZodString;
@@ -646,13 +646,13 @@ export declare const formSchemaSchema: z.ZodObject<{
646
646
  date: "date";
647
647
  time: "time";
648
648
  email: "email";
649
- url: "url";
650
- select: "select";
651
- textarea: "textarea";
652
649
  text: "text";
653
- tel: "tel";
654
- radio: "radio";
650
+ textarea: "textarea";
651
+ select: "select";
655
652
  checkbox: "checkbox";
653
+ radio: "radio";
654
+ url: "url";
655
+ tel: "tel";
656
656
  consent: "consent";
657
657
  }>;
658
658
  required: z.ZodDefault<z.ZodBoolean>;
@@ -705,13 +705,13 @@ export declare const bookingQuestionsFlatSchemaSchema: z.ZodObject<{
705
705
  date: "date";
706
706
  time: "time";
707
707
  email: "email";
708
- url: "url";
709
- select: "select";
710
- textarea: "textarea";
711
708
  text: "text";
712
- tel: "tel";
713
- radio: "radio";
709
+ textarea: "textarea";
710
+ select: "select";
714
711
  checkbox: "checkbox";
712
+ radio: "radio";
713
+ url: "url";
714
+ tel: "tel";
715
715
  }>;
716
716
  }, z.core.$strict>, z.ZodObject<{
717
717
  id: z.ZodString;
@@ -763,13 +763,13 @@ export declare const bookingQuestionsStoredSchemaSchema: z.ZodUnion<readonly [z.
763
763
  date: "date";
764
764
  time: "time";
765
765
  email: "email";
766
- url: "url";
767
- select: "select";
768
- textarea: "textarea";
769
766
  text: "text";
770
- tel: "tel";
771
- radio: "radio";
767
+ textarea: "textarea";
768
+ select: "select";
772
769
  checkbox: "checkbox";
770
+ radio: "radio";
771
+ url: "url";
772
+ tel: "tel";
773
773
  }>;
774
774
  }, z.core.$strict>, z.ZodObject<{
775
775
  id: z.ZodString;
@@ -824,13 +824,13 @@ export declare const bookingQuestionsStoredSchemaSchema: z.ZodUnion<readonly [z.
824
824
  date: "date";
825
825
  time: "time";
826
826
  email: "email";
827
- url: "url";
828
- select: "select";
829
- textarea: "textarea";
830
827
  text: "text";
831
- tel: "tel";
832
- radio: "radio";
828
+ textarea: "textarea";
829
+ select: "select";
833
830
  checkbox: "checkbox";
831
+ radio: "radio";
832
+ url: "url";
833
+ tel: "tel";
834
834
  }>;
835
835
  }, z.core.$strict>, z.ZodObject<{
836
836
  id: z.ZodString;
@@ -900,13 +900,13 @@ export declare const createFormPayloadSchema: z.ZodObject<{
900
900
  date: "date";
901
901
  time: "time";
902
902
  email: "email";
903
- url: "url";
904
- select: "select";
905
- textarea: "textarea";
906
903
  text: "text";
907
- tel: "tel";
908
- radio: "radio";
904
+ textarea: "textarea";
905
+ select: "select";
909
906
  checkbox: "checkbox";
907
+ radio: "radio";
908
+ url: "url";
909
+ tel: "tel";
910
910
  consent: "consent";
911
911
  }>;
912
912
  required: z.ZodDefault<z.ZodBoolean>;