shelving 1.236.0 → 1.236.2

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 (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
@@ -12,48 +12,179 @@ import { type Data } from "../../util/data.js";
12
12
  import type { ValidatorType } from "../../util/validate.js";
13
13
  import type { OptionalChildProps } from "../util/props.js";
14
14
  import type { ValueInputProps } from "./Input.js";
15
- /** A schema is required if it's not wrapped in an `OptionalSchema` or `NullableSchema` */
15
+ /**
16
+ * Whether a schema is required, i.e. not wrapped in an `OptionalSchema` or `NullableSchema`.
17
+ *
18
+ * @param schema The schema to test.
19
+ * @returns `true` if the schema is required, `false` if it is optional or nullable.
20
+ * @example isSchemaRequired(STRING) // true
21
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/isSchemaRequired
22
+ */
16
23
  export declare function isSchemaRequired(schema: Schema): boolean;
24
+ /**
25
+ * Props for `SchemaInput` and its variants: a `schema` plus the value input props it drives.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInputProps
28
+ */
17
29
  export interface SchemaInputProps<T extends Schema, I = never> extends ValueInputProps<ValidatorType<T>, I> {
18
30
  schema: T;
19
31
  }
20
32
  /**
21
- * Show the right control/input for a named property of a form.
33
+ * Show the appropriate input control for a schema, dispatching on the schema's concrete type.
34
+ * - Picks `DateInput`, `NumberInput`, choice radios/select, `CheckboxInput`, `TextInput`, `ArrayInput`, `DictionaryInput`, or `DataInput`.
35
+ * - `required` defaults to whether the schema is required.
22
36
  *
23
- * @example <FormControl name="email" /> // Outputs a `<StringInput>` for the "email" property.
24
- * @example <FormControl name="age" /> // Outputs a `<NumberInput>` for the "age" property.
37
+ * @param props Props including the `schema` plus value input props.
38
+ * @returns The matching input element for the schema.
39
+ * @throws `UnexpectedError` if no input matches the schema type.
40
+ * @example <SchemaInput name="email" schema={EMAIL} /> // Outputs a `<TextInput>` for the "email" property.
41
+ * @example <SchemaInput name="age" schema={AGE} /> // Outputs a `<NumberInput>` for the "age" property.
42
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInput
25
43
  */
26
44
  export declare function SchemaInput<T extends Schema>(props: SchemaInputProps<T>): ReactElement;
45
+ /**
46
+ * Props for `DateSchemaInput`, the `DateSchema` input variant.
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInputProps
49
+ */
27
50
  export interface DateSchemaInputProps extends SchemaInputProps<DateSchema, unknown> {
28
51
  }
52
+ /**
53
+ * Show a `DateInput` for a `DateSchema`.
54
+ *
55
+ * @param props Props including the `DateSchema` and value input props.
56
+ * @returns A `DateInput` element bound to the schema.
57
+ * @example <DateSchemaInput name="dob" schema={DATE} />
58
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInput
59
+ */
29
60
  export declare function DateSchemaInput({ schema, value, ...props }: DateSchemaInputProps): ReactElement;
61
+ /**
62
+ * Props for `NumberSchemaInput`, the `NumberSchema` input variant.
63
+ *
64
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInputProps
65
+ */
30
66
  export interface NumberSchemaInputProps extends SchemaInputProps<NumberSchema, unknown> {
31
67
  }
68
+ /**
69
+ * Show a `NumberInput` for a `NumberSchema`, formatting values with the schema's `format()`.
70
+ *
71
+ * @param props Props including the `NumberSchema` and value input props.
72
+ * @returns A `NumberInput` element bound to the schema.
73
+ * @example <NumberSchemaInput name="age" schema={NUMBER} />
74
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInput
75
+ */
32
76
  export declare function NumberSchemaInput({ schema, value, ...props }: NumberSchemaInputProps): ReactElement;
77
+ /**
78
+ * Props for `ChoiceSchemaInput`, the `ChoiceSchema` input variant.
79
+ *
80
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInputProps
81
+ */
33
82
  export interface ChoiceSchemaInputProps extends SchemaInputProps<ChoiceSchema<string>, unknown> {
34
83
  }
84
+ /**
85
+ * Show a choice input for a `ChoiceSchema` — radio inputs for up to 8 options, otherwise a select.
86
+ *
87
+ * @param props Props including the `ChoiceSchema` and value input props.
88
+ * @returns A `ChoiceRadioInputs` or `SelectInput` element bound to the schema.
89
+ * @example <ChoiceSchemaInput name="role" schema={ROLE} />
90
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInput
91
+ */
35
92
  export declare function ChoiceSchemaInput({ schema, value, ...props }: ChoiceSchemaInputProps): ReactElement;
93
+ /**
94
+ * Props for `BooleanSchemaInput`, the `BooleanSchema` input variant.
95
+ *
96
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInputProps
97
+ */
36
98
  export interface BooleanSchemaInputProps extends SchemaInputProps<BooleanSchema, unknown> {
37
99
  }
100
+ /**
101
+ * Show a `CheckboxInput` for a `BooleanSchema`.
102
+ *
103
+ * @param props Props including the `BooleanSchema` and value input props.
104
+ * @returns A `CheckboxInput` element bound to the schema.
105
+ * @example <BooleanSchemaInput name="agree" schema={BOOLEAN} />
106
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInput
107
+ */
38
108
  export declare function BooleanSchemaInput({ schema, value, ...props }: BooleanSchemaInputProps): ReactElement;
109
+ /**
110
+ * Props for `StringSchemaInput`, the `StringSchema` input variant.
111
+ *
112
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInputProps
113
+ */
39
114
  export interface StringSchemaInputProps extends SchemaInputProps<StringSchema, unknown> {
40
115
  }
116
+ /**
117
+ * Show a `TextInput` for a `StringSchema`, sanitising and formatting values with the schema.
118
+ *
119
+ * @param props Props including the `StringSchema` and value input props.
120
+ * @returns A `TextInput` element bound to the schema.
121
+ * @example <StringSchemaInput name="email" schema={EMAIL} />
122
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInput
123
+ */
41
124
  export declare function StringSchemaInput({ schema, value, ...props }: StringSchemaInputProps): ReactElement;
125
+ /**
126
+ * Props for `ArraySchemaInput`, the `ArraySchema` input variant.
127
+ *
128
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInputProps
129
+ */
42
130
  export interface ArraySchemaInputProps extends SchemaInputProps<ArraySchema<unknown>, unknown> {
43
131
  }
132
+ /**
133
+ * Show an `ArrayInput` for an `ArraySchema`.
134
+ *
135
+ * @param props Props including the `ArraySchema` and value input props.
136
+ * @returns An `ArrayInput` element bound to the schema.
137
+ * @example <ArraySchemaInput name="tags" schema={TAGS} />
138
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInput
139
+ */
44
140
  export declare function ArraySchemaInput({ schema, value, ...props }: ArraySchemaInputProps): ReactElement;
141
+ /**
142
+ * Props for `DictionarySchemaInput`, the `DictionarySchema` input variant.
143
+ *
144
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInputProps
145
+ */
45
146
  export interface DictionarySchemaInputProps extends SchemaInputProps<DictionarySchema<unknown>, unknown> {
46
147
  }
148
+ /**
149
+ * Show a `DictionaryInput` for a `DictionarySchema`.
150
+ *
151
+ * @param props Props including the `DictionarySchema` and value input props.
152
+ * @returns A `DictionaryInput` element bound to the schema.
153
+ * @example <DictionarySchemaInput name="meta" schema={META} />
154
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInput
155
+ */
47
156
  export declare function DictionarySchemaInput({ schema, value, ...props }: DictionarySchemaInputProps): ReactElement;
157
+ /**
158
+ * Props for `DataSchemaInput`, the `DataSchema` input variant.
159
+ *
160
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInputProps
161
+ */
48
162
  export interface DataSchemaInputProps extends SchemaInputProps<DataSchema<Data>, unknown> {
49
163
  }
164
+ /**
165
+ * Show a `DataInput` for a nested `DataSchema`.
166
+ *
167
+ * @param props Props including the `DataSchema` and value input props.
168
+ * @returns A `DataInput` element bound to the schema.
169
+ * @example <DataSchemaInput name="address" schema={ADDRESS} />
170
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInput
171
+ */
50
172
  export declare function DataSchemaInput({ schema, value, ...props }: DataSchemaInputProps): ReactElement;
173
+ /**
174
+ * Props for `SchemaField`: `SchemaInput` props plus optional `children` to override the input.
175
+ *
176
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaFieldProps
177
+ */
51
178
  export interface SchemaFieldProps extends SchemaInputProps<Schema, unknown>, OptionalChildProps {
52
179
  }
53
180
  /**
54
- * Show the right control/input for a named property of a form, wrapped in a `<Field>`
181
+ * Show the appropriate input for a schema, wrapped in a `<Field>` with its label and message.
182
+ * - Renders custom `children` inside the field, or a `SchemaInput` when none are provided.
55
183
  *
56
- * @example <FormControl name="email" /> // Outputs a `<Field><StringInput></Field>` for the "email" property.
57
- * @example <FormControl name="age" /> // Outputs a `<Field><NumberInput></Field>` for the "age" property.
184
+ * @param props Props including the `schema`, optional `children`, and value input props.
185
+ * @returns A `<Field>` wrapping the schema's input.
186
+ * @example <SchemaField name="email" schema={EMAIL} /> // Outputs a `<Field>` wrapping a `<TextInput>`.
187
+ * @example <SchemaField name="age" schema={AGE} /> // Outputs a `<Field>` wrapping a `<NumberInput>`.
188
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaField
58
189
  */
59
190
  export declare function SchemaField({ schema, children, ...props }: SchemaFieldProps): ReactElement;
@@ -27,7 +27,14 @@ import { Field } from "./Field.js";
27
27
  import { NumberInput } from "./NumberInput.js";
28
28
  import { SelectInput } from "./SelectInput.js";
29
29
  import { TextInput } from "./TextInput.js";
30
- /** A schema is required if it's not wrapped in an `OptionalSchema` or `NullableSchema` */
30
+ /**
31
+ * Whether a schema is required, i.e. not wrapped in an `OptionalSchema` or `NullableSchema`.
32
+ *
33
+ * @param schema The schema to test.
34
+ * @returns `true` if the schema is required, `false` if it is optional or nullable.
35
+ * @example isSchemaRequired(STRING) // true
36
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/isSchemaRequired
37
+ */
31
38
  export function isSchemaRequired(schema) {
32
39
  return !(schema instanceof OptionalSchema || schema instanceof NullableSchema);
33
40
  }
@@ -64,38 +71,106 @@ required = isSchemaRequired(schema), ...props }) {
64
71
  return _jsx(DataSchemaInput, { name: name, schema: data, required: required, ...props });
65
72
  throw new UnexpectedError(`Schema "${name}" has no corresponding form field`, { name, schema });
66
73
  }
74
+ /**
75
+ * Show a `DateInput` for a `DateSchema`.
76
+ *
77
+ * @param props Props including the `DateSchema` and value input props.
78
+ * @returns A `DateInput` element bound to the schema.
79
+ * @example <DateSchemaInput name="dob" schema={DATE} />
80
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInput
81
+ */
67
82
  export function DateSchemaInput({ schema, value, ...props }) {
68
83
  return _jsx(DateInput, { ...schema, value: getString(value), ...props });
69
84
  }
85
+ /**
86
+ * Show a `NumberInput` for a `NumberSchema`, formatting values with the schema's `format()`.
87
+ *
88
+ * @param props Props including the `NumberSchema` and value input props.
89
+ * @returns A `NumberInput` element bound to the schema.
90
+ * @example <NumberSchemaInput name="age" schema={NUMBER} />
91
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInput
92
+ */
70
93
  export function NumberSchemaInput({ schema, value, ...props }) {
71
94
  return _jsx(NumberInput, { ...schema, value: getNumber(value), formatter: num => schema.format(num), ...props });
72
95
  }
96
+ /**
97
+ * Show a choice input for a `ChoiceSchema` — radio inputs for up to 8 options, otherwise a select.
98
+ *
99
+ * @param props Props including the `ChoiceSchema` and value input props.
100
+ * @returns A `ChoiceRadioInputs` or `SelectInput` element bound to the schema.
101
+ * @example <ChoiceSchemaInput name="role" schema={ROLE} />
102
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInput
103
+ */
73
104
  export function ChoiceSchemaInput({ schema, value, ...props }) {
74
105
  const { options } = requireSource(ChoiceSchema, schema);
75
106
  if (getKeys(options).length <= 8)
76
107
  return _jsx(ChoiceRadioInputs, { ...schema, value: getString(value), ...props });
77
108
  return _jsx(SelectInput, { ...schema, value: getString(value), ...props });
78
109
  }
110
+ /**
111
+ * Show a `CheckboxInput` for a `BooleanSchema`.
112
+ *
113
+ * @param props Props including the `BooleanSchema` and value input props.
114
+ * @returns A `CheckboxInput` element bound to the schema.
115
+ * @example <BooleanSchemaInput name="agree" schema={BOOLEAN} />
116
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInput
117
+ */
79
118
  export function BooleanSchemaInput({ schema, value, ...props }) {
80
119
  return _jsx(CheckboxInput, { ...schema, value: !!value, ...props });
81
120
  }
121
+ /**
122
+ * Show a `TextInput` for a `StringSchema`, sanitising and formatting values with the schema.
123
+ *
124
+ * @param props Props including the `StringSchema` and value input props.
125
+ * @returns A `TextInput` element bound to the schema.
126
+ * @example <StringSchemaInput name="email" schema={EMAIL} />
127
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInput
128
+ */
82
129
  export function StringSchemaInput({ schema, value, ...props }) {
83
130
  return _jsx(TextInput, { ...schema, value: getString(value), formatter: str => schema.format(schema.sanitize(str)), ...props });
84
131
  }
132
+ /**
133
+ * Show an `ArrayInput` for an `ArraySchema`.
134
+ *
135
+ * @param props Props including the `ArraySchema` and value input props.
136
+ * @returns An `ArrayInput` element bound to the schema.
137
+ * @example <ArraySchemaInput name="tags" schema={TAGS} />
138
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInput
139
+ */
85
140
  export function ArraySchemaInput({ schema, value, ...props }) {
86
141
  return _jsx(ArrayInput, { ...schema, value: isArray(value) ? value : undefined, ...props });
87
142
  }
143
+ /**
144
+ * Show a `DictionaryInput` for a `DictionarySchema`.
145
+ *
146
+ * @param props Props including the `DictionarySchema` and value input props.
147
+ * @returns A `DictionaryInput` element bound to the schema.
148
+ * @example <DictionarySchemaInput name="meta" schema={META} />
149
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInput
150
+ */
88
151
  export function DictionarySchemaInput({ schema, value, ...props }) {
89
152
  return _jsx(DictionaryInput, { ...schema, value: isDictionary(value) ? value : undefined, ...props });
90
153
  }
154
+ /**
155
+ * Show a `DataInput` for a nested `DataSchema`.
156
+ *
157
+ * @param props Props including the `DataSchema` and value input props.
158
+ * @returns A `DataInput` element bound to the schema.
159
+ * @example <DataSchemaInput name="address" schema={ADDRESS} />
160
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInput
161
+ */
91
162
  export function DataSchemaInput({ schema, value, ...props }) {
92
163
  return _jsx(DataInput, { ...schema, value: isData(value) ? value : undefined, ...props });
93
164
  }
94
165
  /**
95
- * Show the right control/input for a named property of a form, wrapped in a `<Field>`
166
+ * Show the appropriate input for a schema, wrapped in a `<Field>` with its label and message.
167
+ * - Renders custom `children` inside the field, or a `SchemaInput` when none are provided.
96
168
  *
97
- * @example <FormControl name="email" /> // Outputs a `<Field><StringInput></Field>` for the "email" property.
98
- * @example <FormControl name="age" /> // Outputs a `<Field><NumberInput></Field>` for the "age" property.
169
+ * @param props Props including the `schema`, optional `children`, and value input props.
170
+ * @returns A `<Field>` wrapping the schema's input.
171
+ * @example <SchemaField name="email" schema={EMAIL} /> // Outputs a `<Field>` wrapping a `<TextInput>`.
172
+ * @example <SchemaField name="age" schema={AGE} /> // Outputs a `<Field>` wrapping a `<NumberInput>`.
173
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaField
99
174
  */
100
175
  export function SchemaField({ schema, children, ...props }) {
101
176
  return (_jsx(Field, { ...props, ...schema, children: children ?? _jsx(SchemaInput, { schema: schema, ...props }) }));
@@ -32,20 +32,38 @@ import { NumberInput } from "./NumberInput.js";
32
32
  import { SelectInput } from "./SelectInput.js";
33
33
  import { TextInput } from "./TextInput.js";
34
34
 
35
- /** A schema is required if it's not wrapped in an `OptionalSchema` or `NullableSchema` */
35
+ /**
36
+ * Whether a schema is required, i.e. not wrapped in an `OptionalSchema` or `NullableSchema`.
37
+ *
38
+ * @param schema The schema to test.
39
+ * @returns `true` if the schema is required, `false` if it is optional or nullable.
40
+ * @example isSchemaRequired(STRING) // true
41
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/isSchemaRequired
42
+ */
36
43
  export function isSchemaRequired(schema: Schema): boolean {
37
44
  return !(schema instanceof OptionalSchema || schema instanceof NullableSchema);
38
45
  }
39
46
 
47
+ /**
48
+ * Props for `SchemaInput` and its variants: a `schema` plus the value input props it drives.
49
+ *
50
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInputProps
51
+ */
40
52
  export interface SchemaInputProps<T extends Schema, I = never> extends ValueInputProps<ValidatorType<T>, I> {
41
53
  schema: T;
42
54
  }
43
55
 
44
56
  /**
45
- * Show the right control/input for a named property of a form.
57
+ * Show the appropriate input control for a schema, dispatching on the schema's concrete type.
58
+ * - Picks `DateInput`, `NumberInput`, choice radios/select, `CheckboxInput`, `TextInput`, `ArrayInput`, `DictionaryInput`, or `DataInput`.
59
+ * - `required` defaults to whether the schema is required.
46
60
  *
47
- * @example <FormControl name="email" /> // Outputs a `<StringInput>` for the "email" property.
48
- * @example <FormControl name="age" /> // Outputs a `<NumberInput>` for the "age" property.
61
+ * @param props Props including the `schema` plus value input props.
62
+ * @returns The matching input element for the schema.
63
+ * @throws `UnexpectedError` if no input matches the schema type.
64
+ * @example <SchemaInput name="email" schema={EMAIL} /> // Outputs a `<TextInput>` for the "email" property.
65
+ * @example <SchemaInput name="age" schema={AGE} /> // Outputs a `<NumberInput>` for the "age" property.
66
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInput
49
67
  */
50
68
  export function SchemaInput<T extends Schema>(props: SchemaInputProps<T>): ReactElement;
51
69
  export function SchemaInput({
@@ -86,63 +104,176 @@ export function SchemaInput({
86
104
  throw new UnexpectedError(`Schema "${name}" has no corresponding form field`, { name, schema });
87
105
  }
88
106
 
107
+ /**
108
+ * Props for `DateSchemaInput`, the `DateSchema` input variant.
109
+ *
110
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInputProps
111
+ */
89
112
  export interface DateSchemaInputProps extends SchemaInputProps<DateSchema, unknown> {}
90
113
 
114
+ /**
115
+ * Show a `DateInput` for a `DateSchema`.
116
+ *
117
+ * @param props Props including the `DateSchema` and value input props.
118
+ * @returns A `DateInput` element bound to the schema.
119
+ * @example <DateSchemaInput name="dob" schema={DATE} />
120
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInput
121
+ */
91
122
  export function DateSchemaInput({ schema, value, ...props }: DateSchemaInputProps): ReactElement {
92
123
  return <DateInput {...schema} value={getString(value)} {...props} />;
93
124
  }
94
125
 
126
+ /**
127
+ * Props for `NumberSchemaInput`, the `NumberSchema` input variant.
128
+ *
129
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInputProps
130
+ */
95
131
  export interface NumberSchemaInputProps extends SchemaInputProps<NumberSchema, unknown> {}
96
132
 
133
+ /**
134
+ * Show a `NumberInput` for a `NumberSchema`, formatting values with the schema's `format()`.
135
+ *
136
+ * @param props Props including the `NumberSchema` and value input props.
137
+ * @returns A `NumberInput` element bound to the schema.
138
+ * @example <NumberSchemaInput name="age" schema={NUMBER} />
139
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInput
140
+ */
97
141
  export function NumberSchemaInput({ schema, value, ...props }: NumberSchemaInputProps): ReactElement {
98
142
  return <NumberInput {...schema} value={getNumber(value)} formatter={num => schema.format(num)} {...props} />;
99
143
  }
100
144
 
145
+ /**
146
+ * Props for `ChoiceSchemaInput`, the `ChoiceSchema` input variant.
147
+ *
148
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInputProps
149
+ */
101
150
  export interface ChoiceSchemaInputProps extends SchemaInputProps<ChoiceSchema<string>, unknown> {}
102
151
 
152
+ /**
153
+ * Show a choice input for a `ChoiceSchema` — radio inputs for up to 8 options, otherwise a select.
154
+ *
155
+ * @param props Props including the `ChoiceSchema` and value input props.
156
+ * @returns A `ChoiceRadioInputs` or `SelectInput` element bound to the schema.
157
+ * @example <ChoiceSchemaInput name="role" schema={ROLE} />
158
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInput
159
+ */
103
160
  export function ChoiceSchemaInput({ schema, value, ...props }: ChoiceSchemaInputProps): ReactElement {
104
161
  const { options } = requireSource(ChoiceSchema, schema);
105
162
  if (getKeys(options).length <= 8) return <ChoiceRadioInputs {...schema} value={getString(value)} {...props} />;
106
163
  return <SelectInput {...schema} value={getString(value)} {...props} />;
107
164
  }
108
165
 
166
+ /**
167
+ * Props for `BooleanSchemaInput`, the `BooleanSchema` input variant.
168
+ *
169
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInputProps
170
+ */
109
171
  export interface BooleanSchemaInputProps extends SchemaInputProps<BooleanSchema, unknown> {}
110
172
 
173
+ /**
174
+ * Show a `CheckboxInput` for a `BooleanSchema`.
175
+ *
176
+ * @param props Props including the `BooleanSchema` and value input props.
177
+ * @returns A `CheckboxInput` element bound to the schema.
178
+ * @example <BooleanSchemaInput name="agree" schema={BOOLEAN} />
179
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInput
180
+ */
111
181
  export function BooleanSchemaInput({ schema, value, ...props }: BooleanSchemaInputProps): ReactElement {
112
182
  return <CheckboxInput {...schema} value={!!value} {...props} />;
113
183
  }
114
184
 
185
+ /**
186
+ * Props for `StringSchemaInput`, the `StringSchema` input variant.
187
+ *
188
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInputProps
189
+ */
115
190
  export interface StringSchemaInputProps extends SchemaInputProps<StringSchema, unknown> {}
116
191
 
192
+ /**
193
+ * Show a `TextInput` for a `StringSchema`, sanitising and formatting values with the schema.
194
+ *
195
+ * @param props Props including the `StringSchema` and value input props.
196
+ * @returns A `TextInput` element bound to the schema.
197
+ * @example <StringSchemaInput name="email" schema={EMAIL} />
198
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInput
199
+ */
117
200
  export function StringSchemaInput({ schema, value, ...props }: StringSchemaInputProps): ReactElement {
118
201
  return <TextInput {...schema} value={getString(value)} formatter={str => schema.format(schema.sanitize(str))} {...props} />;
119
202
  }
120
203
 
204
+ /**
205
+ * Props for `ArraySchemaInput`, the `ArraySchema` input variant.
206
+ *
207
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInputProps
208
+ */
121
209
  export interface ArraySchemaInputProps extends SchemaInputProps<ArraySchema<unknown>, unknown> {}
122
210
 
211
+ /**
212
+ * Show an `ArrayInput` for an `ArraySchema`.
213
+ *
214
+ * @param props Props including the `ArraySchema` and value input props.
215
+ * @returns An `ArrayInput` element bound to the schema.
216
+ * @example <ArraySchemaInput name="tags" schema={TAGS} />
217
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInput
218
+ */
123
219
  export function ArraySchemaInput({ schema, value, ...props }: ArraySchemaInputProps): ReactElement {
124
220
  return <ArrayInput {...schema} value={isArray(value) ? value : undefined} {...props} />;
125
221
  }
126
222
 
223
+ /**
224
+ * Props for `DictionarySchemaInput`, the `DictionarySchema` input variant.
225
+ *
226
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInputProps
227
+ */
127
228
  export interface DictionarySchemaInputProps extends SchemaInputProps<DictionarySchema<unknown>, unknown> {}
128
229
 
230
+ /**
231
+ * Show a `DictionaryInput` for a `DictionarySchema`.
232
+ *
233
+ * @param props Props including the `DictionarySchema` and value input props.
234
+ * @returns A `DictionaryInput` element bound to the schema.
235
+ * @example <DictionarySchemaInput name="meta" schema={META} />
236
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInput
237
+ */
129
238
  export function DictionarySchemaInput({ schema, value, ...props }: DictionarySchemaInputProps): ReactElement {
130
239
  return <DictionaryInput {...schema} value={isDictionary(value) ? value : undefined} {...props} />;
131
240
  }
132
241
 
242
+ /**
243
+ * Props for `DataSchemaInput`, the `DataSchema` input variant.
244
+ *
245
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInputProps
246
+ */
133
247
  export interface DataSchemaInputProps extends SchemaInputProps<DataSchema<Data>, unknown> {}
134
248
 
249
+ /**
250
+ * Show a `DataInput` for a nested `DataSchema`.
251
+ *
252
+ * @param props Props including the `DataSchema` and value input props.
253
+ * @returns A `DataInput` element bound to the schema.
254
+ * @example <DataSchemaInput name="address" schema={ADDRESS} />
255
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInput
256
+ */
135
257
  export function DataSchemaInput({ schema, value, ...props }: DataSchemaInputProps): ReactElement {
136
258
  return <DataInput {...schema} value={isData(value) ? value : undefined} {...props} />;
137
259
  }
138
260
 
261
+ /**
262
+ * Props for `SchemaField`: `SchemaInput` props plus optional `children` to override the input.
263
+ *
264
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaFieldProps
265
+ */
139
266
  export interface SchemaFieldProps extends SchemaInputProps<Schema, unknown>, OptionalChildProps {}
140
267
 
141
268
  /**
142
- * Show the right control/input for a named property of a form, wrapped in a `<Field>`
269
+ * Show the appropriate input for a schema, wrapped in a `<Field>` with its label and message.
270
+ * - Renders custom `children` inside the field, or a `SchemaInput` when none are provided.
143
271
  *
144
- * @example <FormControl name="email" /> // Outputs a `<Field><StringInput></Field>` for the "email" property.
145
- * @example <FormControl name="age" /> // Outputs a `<Field><NumberInput></Field>` for the "age" property.
272
+ * @param props Props including the `schema`, optional `children`, and value input props.
273
+ * @returns A `<Field>` wrapping the schema's input.
274
+ * @example <SchemaField name="email" schema={EMAIL} /> // Outputs a `<Field>` wrapping a `<TextInput>`.
275
+ * @example <SchemaField name="age" schema={AGE} /> // Outputs a `<Field>` wrapping a `<NumberInput>`.
276
+ * @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaField
146
277
  */
147
278
  export function SchemaField({ schema, children, ...props }: SchemaFieldProps): ReactElement {
148
279
  return (
@@ -1,8 +1,22 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { ChoiceOptions } from "../../schema/ChoiceSchema.js";
3
3
  import { type ValueInputProps } from "./Input.js";
4
+ /**
5
+ * Props for `SelectInput`, a dropdown `<select>` bound to a string value.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectProps
8
+ */
4
9
  export interface SelectProps<T extends string> extends ValueInputProps<T> {
5
10
  /** The options for the select. */
6
11
  options: ChoiceOptions<T>;
7
12
  }
13
+ /**
14
+ * Dropdown input bound to a string value, rendered as a `<select>` of the provided `options`.
15
+ * - Shows a placeholder empty option unless the field is required and already has a value.
16
+ *
17
+ * @param props Props including `options`, `value`, `onValue`, and `placeholder`.
18
+ * @returns A `<select>` element.
19
+ * @example <SelectInput name="role" options={ROLES} value={role} onValue={setRole} />
20
+ * @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectInput
21
+ */
8
22
  export declare function SelectInput<T extends string>(props: SelectProps<T>): ReactElement;
@@ -3,11 +3,25 @@ import type { ChoiceOptions } from "../../schema/ChoiceSchema.js";
3
3
  import { getProps } from "../../util/object.js";
4
4
  import { EMPTY_OPTION_CLASS, SELECT_INPUT_CLASS, VALUE_OPTION_CLASS, type ValueInputProps } from "./Input.js";
5
5
 
6
+ /**
7
+ * Props for `SelectInput`, a dropdown `<select>` bound to a string value.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectProps
10
+ */
6
11
  export interface SelectProps<T extends string> extends ValueInputProps<T> {
7
12
  /** The options for the select. */
8
13
  options: ChoiceOptions<T>;
9
14
  }
10
15
 
16
+ /**
17
+ * Dropdown input bound to a string value, rendered as a `<select>` of the provided `options`.
18
+ * - Shows a placeholder empty option unless the field is required and already has a value.
19
+ *
20
+ * @param props Props including `options`, `value`, `onValue`, and `placeholder`.
21
+ * @returns A `<select>` element.
22
+ * @example <SelectInput name="role" options={ROLES} value={role} onValue={setRole} />
23
+ * @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectInput
24
+ */
11
25
  export function SelectInput<T extends string>(props: SelectProps<T>): ReactElement;
12
26
  export function SelectInput({
13
27
  name,
@@ -1,7 +1,20 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { OptionalChildProps } from "../util/props.js";
3
3
  import { type ButtonVariants } from "./Button.js";
4
- /** `<button>` element that does an asynchronous form action (defaults to strong, full-width, primary styling). */
4
+ /**
5
+ * Submit button for a form that disables itself and shows a spinner while the form is busy.
6
+ * - Defaults to strong, full-width, primary styling and a "Save" label.
7
+ *
8
+ * @param props Button variants and optional `children` label content.
9
+ * @returns A `<button type="submit">` element bound to the current form.
10
+ * @example <SubmitButton>Save changes</SubmitButton>
11
+ * @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButton
12
+ */
5
13
  export declare function SubmitButton({ children, strong, color, full, ...variants }: SubmitButtonProps): ReactElement;
14
+ /**
15
+ * Props for `SubmitButton`, a form submit button.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButtonProps
18
+ */
6
19
  export interface SubmitButtonProps extends ButtonVariants, OptionalChildProps {
7
20
  }
@@ -4,7 +4,15 @@ import { useStore } from "../../react/useStore.js";
4
4
  import { Loading } from "../misc/Loading.js";
5
5
  import { getButtonClass } from "./Button.js";
6
6
  import { requireForm } from "./FormContext.js";
7
- /** `<button>` element that does an asynchronous form action (defaults to strong, full-width, primary styling). */
7
+ /**
8
+ * Submit button for a form that disables itself and shows a spinner while the form is busy.
9
+ * - Defaults to strong, full-width, primary styling and a "Save" label.
10
+ *
11
+ * @param props Button variants and optional `children` label content.
12
+ * @returns A `<button type="submit">` element bound to the current form.
13
+ * @example <SubmitButton>Save changes</SubmitButton>
14
+ * @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButton
15
+ */
8
16
  export function SubmitButton({ children = SUBMIT_CHILDREN, strong = true, color = "primary", full = true, ...variants }) {
9
17
  const form = requireForm();
10
18
  const busy = useStore(form.busy).value;
@@ -6,7 +6,15 @@ import type { OptionalChildProps } from "../util/props.js";
6
6
  import { type ButtonVariants, getButtonClass } from "./Button.js";
7
7
  import { requireForm } from "./FormContext.js";
8
8
 
9
- /** `<button>` element that does an asynchronous form action (defaults to strong, full-width, primary styling). */
9
+ /**
10
+ * Submit button for a form that disables itself and shows a spinner while the form is busy.
11
+ * - Defaults to strong, full-width, primary styling and a "Save" label.
12
+ *
13
+ * @param props Button variants and optional `children` label content.
14
+ * @returns A `<button type="submit">` element bound to the current form.
15
+ * @example <SubmitButton>Save changes</SubmitButton>
16
+ * @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButton
17
+ */
10
18
  export function SubmitButton({
11
19
  children = SUBMIT_CHILDREN,
12
20
  strong = true,
@@ -23,6 +31,11 @@ export function SubmitButton({
23
31
  );
24
32
  }
25
33
 
34
+ /**
35
+ * Props for `SubmitButton`, a form submit button.
36
+ *
37
+ * @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButtonProps
38
+ */
26
39
  export interface SubmitButtonProps extends ButtonVariants, OptionalChildProps {}
27
40
 
28
41
  const SUBMIT_CHILDREN = (