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
package/ui/form/Field.tsx CHANGED
@@ -4,6 +4,11 @@ import { getClass } from "../util/css.js";
4
4
  import type { ChildProps } from "../util/props.js";
5
5
  import styles from "./Field.module.css";
6
6
 
7
+ /**
8
+ * Props for `Field`, a labelled wrapper around a form control.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/ui/form/Field/FieldProps
11
+ */
7
12
  export interface FieldProps extends ChildProps {
8
13
  title?: ReactNode | undefined;
9
14
  description?: ReactNode | undefined;
@@ -1,7 +1,21 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { FileTypes } from "../../util/file.js";
3
3
  import { type ValueInputProps } from "./Input.js";
4
+ /**
5
+ * Props for `FileInput`, an `<input type="file">` that emits the selected `File`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/form/FileInput/FileInputProps
8
+ */
4
9
  export interface FileInputProps extends ValueInputProps<string | File> {
5
10
  types?: FileTypes | undefined;
6
11
  }
12
+ /**
13
+ * File picker input that emits the selected `File` through `onValue`.
14
+ * - The optional `types` dictionary restricts the picker's accepted file types.
15
+ *
16
+ * @param props Props including `onValue`, accepted `types`, and standard input flags.
17
+ * @returns A native `<input type="file">` element.
18
+ * @example <FileInput name="avatar" types={{ png: "image/png" }} onValue={setFile} />
19
+ * @see https://dhoulb.github.io/shelving/ui/form/FileInput/FileInput
20
+ */
7
21
  export declare function FileInput({ name, title, placeholder, required, disabled, message, onValue, types, }: FileInputProps): ReactElement;
@@ -1,5 +1,14 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { INPUT_CLASS } from "./Input.js";
3
+ /**
4
+ * File picker input that emits the selected `File` through `onValue`.
5
+ * - The optional `types` dictionary restricts the picker's accepted file types.
6
+ *
7
+ * @param props Props including `onValue`, accepted `types`, and standard input flags.
8
+ * @returns A native `<input type="file">` element.
9
+ * @example <FileInput name="avatar" types={{ png: "image/png" }} onValue={setFile} />
10
+ * @see https://dhoulb.github.io/shelving/ui/form/FileInput/FileInput
11
+ */
3
12
  export function FileInput({ name, title, placeholder = title, required = false, disabled = false, message,
4
13
  // value,
5
14
  onValue, types = {}, }) {
@@ -2,10 +2,24 @@ import type { ReactElement, SyntheticEvent } from "react";
2
2
  import type { FileTypes } from "../../util/file.js";
3
3
  import { INPUT_CLASS, type ValueInputProps } from "./Input.js";
4
4
 
5
+ /**
6
+ * Props for `FileInput`, an `<input type="file">` that emits the selected `File`.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/form/FileInput/FileInputProps
9
+ */
5
10
  export interface FileInputProps extends ValueInputProps<string | File> {
6
11
  types?: FileTypes | undefined;
7
12
  }
8
13
 
14
+ /**
15
+ * File picker input that emits the selected `File` through `onValue`.
16
+ * - The optional `types` dictionary restricts the picker's accepted file types.
17
+ *
18
+ * @param props Props including `onValue`, accepted `types`, and standard input flags.
19
+ * @returns A native `<input type="file">` element.
20
+ * @example <FileInput name="avatar" types={{ png: "image/png" }} onValue={setFile} />
21
+ * @see https://dhoulb.github.io/shelving/ui/form/FileInput/FileInput
22
+ */
9
23
  export function FileInput({
10
24
  name,
11
25
  title,
package/ui/form/Form.d.ts CHANGED
@@ -7,11 +7,18 @@ import { type NoticeCallback } from "../util/notice.js";
7
7
  import type { OptionalChildProps } from "../util/props.js";
8
8
  import { FormStore } from "./FormStore.js";
9
9
  /**
10
- * Handler for a clickable `onClick` event.
11
- * - Returned value (if defined) is notified to the user using `notifySuccess()`
12
- * - Thrown value is notified to the user using `notifyError()`
10
+ * Callback invoked when a `Form` is submitted with its validated data.
11
+ * - Returned value (if defined) is notified to the user using `notifySuccess()`.
12
+ * - Thrown value is notified to the user using `notifyError()`.
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/FormCallback
13
15
  */
14
16
  export type FormCallback<T extends Data> = (data: T, event: SubmitEvent<HTMLFormElement>) => ReactNode | void | PromiseLike<ReactNode | void>;
17
+ /**
18
+ * Props for `Form`, the schema-driven form wrapper component.
19
+ *
20
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/FormProps
21
+ */
15
22
  export interface FormProps<T extends Data> extends OptionalChildProps {
16
23
  /** Schema for the form. */
17
24
  schema: DataSchema<T>;
@@ -24,10 +31,52 @@ export interface FormProps<T extends Data> extends OptionalChildProps {
24
31
  /** Initial set of messages for the form as either a dictionary or a string with `fieldName:` style messages. */
25
32
  messages?: ImmutableDictionary<string> | string | undefined;
26
33
  }
34
+ /**
35
+ * Schema-driven form that creates a `FormStore`, provides it via `FormContext`, and validates/submits on submit.
36
+ * - Renders its fields and footer by default, or custom `children` that read the form via hooks.
37
+ * - Closes a parent `<dialog>` automatically on successful submit.
38
+ *
39
+ * @param props Props including `schema`, initial `data`, `onSubmit`, `submit` content, and initial `messages`.
40
+ * @returns A `<form>` element wrapping the fields in a `FormContext` provider.
41
+ * @example <Form schema={USER_SCHEMA} onSubmit={save} />
42
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/Form
43
+ */
27
44
  export declare function Form<T extends Data>(props: FormProps<T>): ReactElement;
28
- /** Callback that publishes notices to an element (defaults to the window) if it returns or throws "string" */
45
+ /**
46
+ * Run a form submit callback and publish success/error notices based on its return or thrown value.
47
+ * - Strings returned are shown as success notices; thrown values are routed through `notifyThrownForm()`.
48
+ * - Async callbacks are awaited via `awaitNotifiedForm()`.
49
+ *
50
+ * @param value The validated form data passed to the callback.
51
+ * @param store The `FormStore` the form is bound to.
52
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
53
+ * @param callback Optional callback to run with the value and extra args.
54
+ * @param args Additional arguments forwarded to the callback.
55
+ * @returns `true` on success, `false` on failure (or a `Promise` resolving to one).
56
+ * @example callNotifiedForm(data, store, formEl, onSubmit, event)
57
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/callNotifiedForm
58
+ */
29
59
  export declare function callNotifiedForm<T extends Data, A extends Arguments>(value: T, store: FormStore<T>, form: HTMLFormElement, callback?: NoticeCallback<[T, ...A]>, ...args: A): boolean | Promise<boolean>;
30
- /** Await a value that publishes "success" or "error" notices to a form */
60
+ /**
61
+ * Await a pending submit result and publish a success or error notice to a form once it settles.
62
+ *
63
+ * @param store The `FormStore` the form is bound to.
64
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
65
+ * @param pending The pending result to await.
66
+ * @returns A `Promise` resolving to `true` on success or `false` on failure.
67
+ * @example await awaitNotifiedForm(store, formEl, pending)
68
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/awaitNotifiedForm
69
+ */
31
70
  export declare function awaitNotifiedForm<T extends Data>(store: FormStore<T>, form: HTMLFormElement, pending: PromiseLike<ReactNode | undefined | void>): Promise<boolean>;
32
- /** Notify the user about a thrown value during a submit (if thrown value is a string then save it as messages instead. */
71
+ /**
72
+ * Notify the user about a value thrown during submit, storing string errors as form field messages.
73
+ * - Assigning a string `reason` to the store splits it into per-field messages instead of a global notice.
74
+ *
75
+ * @param store The `FormStore` the thrown value is recorded on.
76
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
77
+ * @param thrown The value thrown during submit.
78
+ * @returns Always `false`, signalling the submit failed.
79
+ * @example notifyThrownForm(store, formEl, thrown)
80
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/notifyThrownForm
81
+ */
33
82
  export declare function notifyThrownForm<T extends Data>(store: FormStore<T>, form: HTMLFormElement, thrown: unknown): false;
package/ui/form/Form.js CHANGED
@@ -25,7 +25,20 @@ export function Form({ schema, data: initialData, onSubmit, submit, messages, ch
25
25
  dialog?.close();
26
26
  }, className: styles.form, noValidate: true, children: _jsx("fieldset", { className: styles.fieldset, disabled: busy, children: _jsx(FormContext, { value: store, children: children }) }) }, store.key));
27
27
  }
28
- /** Callback that publishes notices to an element (defaults to the window) if it returns or throws "string" */
28
+ /**
29
+ * Run a form submit callback and publish success/error notices based on its return or thrown value.
30
+ * - Strings returned are shown as success notices; thrown values are routed through `notifyThrownForm()`.
31
+ * - Async callbacks are awaited via `awaitNotifiedForm()`.
32
+ *
33
+ * @param value The validated form data passed to the callback.
34
+ * @param store The `FormStore` the form is bound to.
35
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
36
+ * @param callback Optional callback to run with the value and extra args.
37
+ * @param args Additional arguments forwarded to the callback.
38
+ * @returns `true` on success, `false` on failure (or a `Promise` resolving to one).
39
+ * @example callNotifiedForm(data, store, formEl, onSubmit, event)
40
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/callNotifiedForm
41
+ */
29
42
  export function callNotifiedForm(value, store, form, callback, ...args) {
30
43
  try {
31
44
  const result = callback?.(value, ...args);
@@ -39,7 +52,16 @@ export function callNotifiedForm(value, store, form, callback, ...args) {
39
52
  return notifyThrownForm(store, form, thrown);
40
53
  }
41
54
  }
42
- /** Await a value that publishes "success" or "error" notices to a form */
55
+ /**
56
+ * Await a pending submit result and publish a success or error notice to a form once it settles.
57
+ *
58
+ * @param store The `FormStore` the form is bound to.
59
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
60
+ * @param pending The pending result to await.
61
+ * @returns A `Promise` resolving to `true` on success or `false` on failure.
62
+ * @example await awaitNotifiedForm(store, formEl, pending)
63
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/awaitNotifiedForm
64
+ */
43
65
  export async function awaitNotifiedForm(store, form, pending) {
44
66
  try {
45
67
  const result = await pending;
@@ -51,7 +73,17 @@ export async function awaitNotifiedForm(store, form, pending) {
51
73
  return notifyThrownForm(store, form, thrown);
52
74
  }
53
75
  }
54
- /** Notify the user about a thrown value during a submit (if thrown value is a string then save it as messages instead. */
76
+ /**
77
+ * Notify the user about a value thrown during submit, storing string errors as form field messages.
78
+ * - Assigning a string `reason` to the store splits it into per-field messages instead of a global notice.
79
+ *
80
+ * @param store The `FormStore` the thrown value is recorded on.
81
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
82
+ * @param thrown The value thrown during submit.
83
+ * @returns Always `false`, signalling the submit failed.
84
+ * @example notifyThrownForm(store, formEl, thrown)
85
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/notifyThrownForm
86
+ */
55
87
  export function notifyThrownForm(store, form, thrown) {
56
88
  store.reason = thrown;
57
89
  const reason = store.reason;
package/ui/form/Form.tsx CHANGED
@@ -15,15 +15,22 @@ import { FormFooter } from "./FormFooter.js";
15
15
  import { FormStore } from "./FormStore.js";
16
16
 
17
17
  /**
18
- * Handler for a clickable `onClick` event.
19
- * - Returned value (if defined) is notified to the user using `notifySuccess()`
20
- * - Thrown value is notified to the user using `notifyError()`
18
+ * Callback invoked when a `Form` is submitted with its validated data.
19
+ * - Returned value (if defined) is notified to the user using `notifySuccess()`.
20
+ * - Thrown value is notified to the user using `notifyError()`.
21
+ *
22
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/FormCallback
21
23
  */
22
24
  export type FormCallback<T extends Data> = (
23
25
  data: T,
24
26
  event: SubmitEvent<HTMLFormElement>,
25
27
  ) => ReactNode | void | PromiseLike<ReactNode | void>;
26
28
 
29
+ /**
30
+ * Props for `Form`, the schema-driven form wrapper component.
31
+ *
32
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/FormProps
33
+ */
27
34
  export interface FormProps<T extends Data> extends OptionalChildProps {
28
35
  /** Schema for the form. */
29
36
  schema: DataSchema<T>;
@@ -37,6 +44,16 @@ export interface FormProps<T extends Data> extends OptionalChildProps {
37
44
  messages?: ImmutableDictionary<string> | string | undefined;
38
45
  }
39
46
 
47
+ /**
48
+ * Schema-driven form that creates a `FormStore`, provides it via `FormContext`, and validates/submits on submit.
49
+ * - Renders its fields and footer by default, or custom `children` that read the form via hooks.
50
+ * - Closes a parent `<dialog>` automatically on successful submit.
51
+ *
52
+ * @param props Props including `schema`, initial `data`, `onSubmit`, `submit` content, and initial `messages`.
53
+ * @returns A `<form>` element wrapping the fields in a `FormContext` provider.
54
+ * @example <Form schema={USER_SCHEMA} onSubmit={save} />
55
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/Form
56
+ */
40
57
  export function Form<T extends Data>(props: FormProps<T>): ReactElement;
41
58
  export function Form({
42
59
  schema,
@@ -83,7 +100,20 @@ export function Form({
83
100
  );
84
101
  }
85
102
 
86
- /** Callback that publishes notices to an element (defaults to the window) if it returns or throws "string" */
103
+ /**
104
+ * Run a form submit callback and publish success/error notices based on its return or thrown value.
105
+ * - Strings returned are shown as success notices; thrown values are routed through `notifyThrownForm()`.
106
+ * - Async callbacks are awaited via `awaitNotifiedForm()`.
107
+ *
108
+ * @param value The validated form data passed to the callback.
109
+ * @param store The `FormStore` the form is bound to.
110
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
111
+ * @param callback Optional callback to run with the value and extra args.
112
+ * @param args Additional arguments forwarded to the callback.
113
+ * @returns `true` on success, `false` on failure (or a `Promise` resolving to one).
114
+ * @example callNotifiedForm(data, store, formEl, onSubmit, event)
115
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/callNotifiedForm
116
+ */
87
117
  export function callNotifiedForm<T extends Data, A extends Arguments>(
88
118
  value: T,
89
119
  store: FormStore<T>,
@@ -101,7 +131,16 @@ export function callNotifiedForm<T extends Data, A extends Arguments>(
101
131
  }
102
132
  }
103
133
 
104
- /** Await a value that publishes "success" or "error" notices to a form */
134
+ /**
135
+ * Await a pending submit result and publish a success or error notice to a form once it settles.
136
+ *
137
+ * @param store The `FormStore` the form is bound to.
138
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
139
+ * @param pending The pending result to await.
140
+ * @returns A `Promise` resolving to `true` on success or `false` on failure.
141
+ * @example await awaitNotifiedForm(store, formEl, pending)
142
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/awaitNotifiedForm
143
+ */
105
144
  export async function awaitNotifiedForm<T extends Data>(
106
145
  store: FormStore<T>,
107
146
  form: HTMLFormElement,
@@ -116,7 +155,17 @@ export async function awaitNotifiedForm<T extends Data>(
116
155
  }
117
156
  }
118
157
 
119
- /** Notify the user about a thrown value during a submit (if thrown value is a string then save it as messages instead. */
158
+ /**
159
+ * Notify the user about a value thrown during submit, storing string errors as form field messages.
160
+ * - Assigning a string `reason` to the store splits it into per-field messages instead of a global notice.
161
+ *
162
+ * @param store The `FormStore` the thrown value is recorded on.
163
+ * @param form The underlying `HTMLFormElement` notices are anchored to.
164
+ * @param thrown The value thrown during submit.
165
+ * @returns Always `false`, signalling the submit failed.
166
+ * @example notifyThrownForm(store, formEl, thrown)
167
+ * @see https://dhoulb.github.io/shelving/ui/form/Form/notifyThrownForm
168
+ */
120
169
  export function notifyThrownForm<T extends Data>(store: FormStore<T>, form: HTMLFormElement, thrown: unknown): false {
121
170
  store.reason = thrown;
122
171
  const reason = store.reason;
@@ -3,11 +3,32 @@ import type { Data } from "../../util/data.js";
3
3
  import type { AnyCaller } from "../../util/function.js";
4
4
  import type { FormStore } from "./FormStore.js";
5
5
  import { type SchemaInputProps } from "./SchemaInput.js";
6
- /** Context for current form. */
6
+ /**
7
+ * React context holding the current `FormStore`, provided by the `Form` component.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/FormContext
10
+ */
7
11
  export declare const FormContext: import("react").Context<FormStore<Data> | undefined>;
8
- /** Use the current form context. */
12
+ /**
13
+ * Hook that returns the current form's `FormStore` from context.
14
+ *
15
+ * @param caller Function to attribute the error to if no form context is found.
16
+ * @returns The current `FormStore` instance.
17
+ * @throws `RequiredError` if called outside a `Form` component.
18
+ * @example const form = requireForm();
19
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/requireForm
20
+ */
9
21
  export declare function requireForm<T extends Data = Data>(caller?: AnyCaller): FormStore<T>;
10
- /** Use the props for a field of a form. */
22
+ /**
23
+ * Hook that returns the input props for a single named field of a form.
24
+ * - Subscribes to the form store so the field re-renders when its value or message changes.
25
+ *
26
+ * @param name Name of the field to read props for.
27
+ * @param form Form store to read from, defaulting to the current form context.
28
+ * @returns Props (`name`, `schema`, `value`, `onValue`, `message`, `required`) ready to spread onto an input.
29
+ * @example const field = useField("email");
30
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/useField
31
+ */
11
32
  export declare function useField<T, I = never>(name: string, form?: FormStore<{
12
33
  [name: string]: T;
13
34
  }>): SchemaInputProps<Schema<T>, I>;
@@ -2,7 +2,11 @@ import { createContext } from "react";
2
2
  import { useStore } from "../../react/useStore.js";
3
3
  import { requireContext } from "../util/context.js";
4
4
  import { isSchemaRequired } from "./SchemaInput.js";
5
- /** Context for current form. */
5
+ /**
6
+ * React context holding the current `FormStore`, provided by the `Form` component.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/FormContext
9
+ */
6
10
  export const FormContext = createContext(undefined);
7
11
  FormContext.displayName = "FormContext";
8
12
  export function requireForm() {
@@ -7,17 +7,38 @@ import { requireContext } from "../util/context.js";
7
7
  import type { FormStore } from "./FormStore.js";
8
8
  import { isSchemaRequired, type SchemaInputProps } from "./SchemaInput.js";
9
9
 
10
- /** Context for current form. */
10
+ /**
11
+ * React context holding the current `FormStore`, provided by the `Form` component.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/FormContext
14
+ */
11
15
  export const FormContext = createContext<FormStore<Data> | undefined>(undefined);
12
16
  FormContext.displayName = "FormContext";
13
17
 
14
- /** Use the current form context. */
18
+ /**
19
+ * Hook that returns the current form's `FormStore` from context.
20
+ *
21
+ * @param caller Function to attribute the error to if no form context is found.
22
+ * @returns The current `FormStore` instance.
23
+ * @throws `RequiredError` if called outside a `Form` component.
24
+ * @example const form = requireForm();
25
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/requireForm
26
+ */
15
27
  export function requireForm<T extends Data = Data>(caller?: AnyCaller): FormStore<T>;
16
28
  export function requireForm(): FormStore<Data> {
17
29
  return requireContext(FormContext, requireForm);
18
30
  }
19
31
 
20
- /** Use the props for a field of a form. */
32
+ /**
33
+ * Hook that returns the input props for a single named field of a form.
34
+ * - Subscribes to the form store so the field re-renders when its value or message changes.
35
+ *
36
+ * @param name Name of the field to read props for.
37
+ * @param form Form store to read from, defaulting to the current form context.
38
+ * @returns Props (`name`, `schema`, `value`, `onValue`, `message`, `required`) ready to spread onto an input.
39
+ * @example const field = useField("email");
40
+ * @see https://dhoulb.github.io/shelving/ui/form/FormContext/useField
41
+ */
21
42
  export function useField<T, I = never>(name: string, form?: FormStore<{ [name: string]: T }>): SchemaInputProps<Schema<T>, I>;
22
43
  export function useField(name: string, form: FormStore<Data> = requireForm(useField)): SchemaInputProps<Schema<unknown>> {
23
44
  useStore(form);
@@ -1,6 +1,19 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { InputProps } from "./Input.js";
3
- /** Show a `<Field>` for a named property in the current form. */
3
+ /**
4
+ * Show a `<Field>` (label, input, and message) for a single named property of the current form.
5
+ *
6
+ * @param props Input props including the field `name`.
7
+ * @returns A `<Field>` wrapping a `SchemaInput` bound to the named field.
8
+ * @example <FormField name="email" />
9
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFields/FormField
10
+ */
4
11
  export declare function FormField({ name, ...props }: InputProps): ReactElement;
5
- /** List of `<Field>` elements for every schema property in the current form. */
12
+ /**
13
+ * Show a `<Field>` for every property in the current form's schema.
14
+ *
15
+ * @returns A fragment of `FormField` elements, one per schema property.
16
+ * @example <FormFields />
17
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFields/FormFields
18
+ */
6
19
  export declare function FormFields(): ReactElement;
@@ -3,13 +3,26 @@ import { useStore } from "../../react/useStore.js";
3
3
  import { Field } from "./Field.js";
4
4
  import { requireForm, useField } from "./FormContext.js";
5
5
  import { SchemaInput } from "./SchemaInput.js";
6
- /** Show a `<Field>` for a named property in the current form. */
6
+ /**
7
+ * Show a `<Field>` (label, input, and message) for a single named property of the current form.
8
+ *
9
+ * @param props Input props including the field `name`.
10
+ * @returns A `<Field>` wrapping a `SchemaInput` bound to the named field.
11
+ * @example <FormField name="email" />
12
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFields/FormField
13
+ */
7
14
  export function FormField({ name, ...props }) {
8
15
  const field = useField(name);
9
16
  const { schema, message } = field;
10
17
  return (_jsx(Field, { ...schema, message: message, required: props.required, children: _jsx(SchemaInput, { ...field, ...props }) }));
11
18
  }
12
- /** List of `<Field>` elements for every schema property in the current form. */
19
+ /**
20
+ * Show a `<Field>` for every property in the current form's schema.
21
+ *
22
+ * @returns A fragment of `FormField` elements, one per schema property.
23
+ * @example <FormFields />
24
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFields/FormFields
25
+ */
13
26
  export function FormFields() {
14
27
  const form = useStore(requireForm());
15
28
  return (_jsx(_Fragment, { children: Object.keys(form.schema.props).map(name => (_jsx(FormField, { name: name }, name))) }));
@@ -5,7 +5,14 @@ import { requireForm, useField } from "./FormContext.js";
5
5
  import type { InputProps } from "./Input.js";
6
6
  import { SchemaInput } from "./SchemaInput.js";
7
7
 
8
- /** Show a `<Field>` for a named property in the current form. */
8
+ /**
9
+ * Show a `<Field>` (label, input, and message) for a single named property of the current form.
10
+ *
11
+ * @param props Input props including the field `name`.
12
+ * @returns A `<Field>` wrapping a `SchemaInput` bound to the named field.
13
+ * @example <FormField name="email" />
14
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFields/FormField
15
+ */
9
16
  export function FormField({ name, ...props }: InputProps): ReactElement {
10
17
  const field = useField(name);
11
18
  const { schema, message } = field;
@@ -17,7 +24,13 @@ export function FormField({ name, ...props }: InputProps): ReactElement {
17
24
  );
18
25
  }
19
26
 
20
- /** List of `<Field>` elements for every schema property in the current form. */
27
+ /**
28
+ * Show a `<Field>` for every property in the current form's schema.
29
+ *
30
+ * @returns A fragment of `FormField` elements, one per schema property.
31
+ * @example <FormFields />
32
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFields/FormFields
33
+ */
21
34
  export function FormFields(): ReactElement {
22
35
  const form = useStore(requireForm());
23
36
  return (
@@ -1,11 +1,21 @@
1
1
  import type { ReactElement, ReactNode } from "react";
2
2
  import type { OptionalChildProps } from "../util/props.js";
3
+ /**
4
+ * Props for `FormFooter`, the submit-button-and-message footer for a form.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFooter/FormFooterProps
7
+ */
3
8
  export interface FormFooterProps extends OptionalChildProps {
4
9
  submit?: ReactNode | undefined;
5
10
  }
6
11
  /**
7
- * Show a form footer with custom submit text.
8
- * - Shows an elements row containing a submit button (and any additional buttons provided as `children`).
9
- * - Shows a `<FormMessage>` beneath the buttons that shows any error message set on the form.
12
+ * Show a form footer with a submit button and the form's error message.
13
+ * - Renders a row containing a `SubmitButton` (and any extra buttons passed as `children`).
14
+ * - Renders a `<FormMessage>` beneath the buttons showing any error set on the form.
15
+ *
16
+ * @param props Props including footer `children` and custom `submit` button content.
17
+ * @returns A footer element with the submit row and form message.
18
+ * @example <FormFooter submit="Save" />
19
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFooter/FormFooter
10
20
  */
11
21
  export declare function FormFooter({ children, submit }: FormFooterProps): ReactElement;
@@ -4,9 +4,14 @@ import { Row } from "../style/Flex.js";
4
4
  import { FormMessage } from "./FormMessage.js";
5
5
  import { SubmitButton } from "./SubmitButton.js";
6
6
  /**
7
- * Show a form footer with custom submit text.
8
- * - Shows an elements row containing a submit button (and any additional buttons provided as `children`).
9
- * - Shows a `<FormMessage>` beneath the buttons that shows any error message set on the form.
7
+ * Show a form footer with a submit button and the form's error message.
8
+ * - Renders a row containing a `SubmitButton` (and any extra buttons passed as `children`).
9
+ * - Renders a `<FormMessage>` beneath the buttons showing any error set on the form.
10
+ *
11
+ * @param props Props including footer `children` and custom `submit` button content.
12
+ * @returns A footer element with the submit row and form message.
13
+ * @example <FormFooter submit="Save" />
14
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFooter/FormFooter
10
15
  */
11
16
  export function FormFooter({ children, submit }) {
12
17
  return (_jsxs(Footer, { children: [_jsxs(Row, { reverse: true, children: [_jsx(SubmitButton, { children: submit }), children] }), _jsx(FormMessage, {})] }));
@@ -5,14 +5,24 @@ import type { OptionalChildProps } from "../util/props.js";
5
5
  import { FormMessage } from "./FormMessage.js";
6
6
  import { SubmitButton } from "./SubmitButton.js";
7
7
 
8
+ /**
9
+ * Props for `FormFooter`, the submit-button-and-message footer for a form.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFooter/FormFooterProps
12
+ */
8
13
  export interface FormFooterProps extends OptionalChildProps {
9
14
  submit?: ReactNode | undefined;
10
15
  }
11
16
 
12
17
  /**
13
- * Show a form footer with custom submit text.
14
- * - Shows an elements row containing a submit button (and any additional buttons provided as `children`).
15
- * - Shows a `<FormMessage>` beneath the buttons that shows any error message set on the form.
18
+ * Show a form footer with a submit button and the form's error message.
19
+ * - Renders a row containing a `SubmitButton` (and any extra buttons passed as `children`).
20
+ * - Renders a `<FormMessage>` beneath the buttons showing any error set on the form.
21
+ *
22
+ * @param props Props including footer `children` and custom `submit` button content.
23
+ * @returns A footer element with the submit row and form message.
24
+ * @example <FormFooter submit="Save" />
25
+ * @see https://dhoulb.github.io/shelving/ui/form/FormFooter/FormFooter
16
26
  */
17
27
  export function FormFooter({ children, submit }: FormFooterProps): ReactElement {
18
28
  return (
@@ -1,8 +1,27 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { InputProps } from "./Input.js";
3
+ /**
4
+ * Props for `FormInput`, a bare `SchemaInput` bound to a named form field.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/ui/form/FormInput/FormInputProps
7
+ */
3
8
  export interface FormInputProps extends InputProps {
4
9
  }
5
- /** Show a `SchemaInput` for each property in the current form. */
10
+ /**
11
+ * Show a `SchemaInput` for a single named property of the current form.
12
+ * - Reads the field's value, schema, and message from the form context via `useField()`.
13
+ *
14
+ * @param props Input props including the field `name`.
15
+ * @returns A `SchemaInput` bound to the named field.
16
+ * @example <FormInput name="email" />
17
+ * @see https://dhoulb.github.io/shelving/ui/form/FormInput/FormInput
18
+ */
6
19
  export declare function FormInput({ name, ...props }: FormInputProps): ReactElement;
7
- /** Show a `SchemaInput` for a named property in the current form. */
20
+ /**
21
+ * Show a `SchemaInput` for every property in the current form's schema.
22
+ *
23
+ * @returns A fragment of `FormInput` elements, one per schema property.
24
+ * @example <FormInputs />
25
+ * @see https://dhoulb.github.io/shelving/ui/form/FormInput/FormInputs
26
+ */
8
27
  export declare function FormInputs(): ReactElement;
@@ -1,12 +1,26 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { requireForm, useField } from "./FormContext.js";
3
3
  import { SchemaInput } from "./SchemaInput.js";
4
- /** Show a `SchemaInput` for each property in the current form. */
4
+ /**
5
+ * Show a `SchemaInput` for a single named property of the current form.
6
+ * - Reads the field's value, schema, and message from the form context via `useField()`.
7
+ *
8
+ * @param props Input props including the field `name`.
9
+ * @returns A `SchemaInput` bound to the named field.
10
+ * @example <FormInput name="email" />
11
+ * @see https://dhoulb.github.io/shelving/ui/form/FormInput/FormInput
12
+ */
5
13
  export function FormInput({ name, ...props }) {
6
14
  const field = useField(name);
7
15
  return _jsx(SchemaInput, { ...field, ...props });
8
16
  }
9
- /** Show a `SchemaInput` for a named property in the current form. */
17
+ /**
18
+ * Show a `SchemaInput` for every property in the current form's schema.
19
+ *
20
+ * @returns A fragment of `FormInput` elements, one per schema property.
21
+ * @example <FormInputs />
22
+ * @see https://dhoulb.github.io/shelving/ui/form/FormInput/FormInputs
23
+ */
10
24
  export function FormInputs() {
11
25
  return (_jsx(_Fragment, { children: Object.keys(requireForm().schema.props).map(name => (_jsx(FormInput, { name: name }, name))) }));
12
26
  }