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
@@ -9,6 +9,11 @@ import { Popover } from "./Popover.js";
9
9
  * - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
10
10
  *
11
11
  * DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
12
+ *
13
+ * @param props Props including the input `name` and `children` whose first node is the button and the rest the popover.
14
+ * @returns A `Popover` wrapping a `ButtonInput` that toggles it open and closed.
15
+ * @example <ButtonInputPopover name="filter">{label}{panel}</ButtonInputPopover>
16
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonInputPopover/ButtonInputPopover
12
17
  */
13
18
  export function ButtonInputPopover({ children: [buttonChildren, ...popoverChildren], //
14
19
  ...props }) {
@@ -6,6 +6,11 @@ import { ButtonInput } from "./ButtonInput.js";
6
6
  import type { InputProps } from "./Input.js";
7
7
  import { Popover, type PopoverChildren } from "./Popover.js";
8
8
 
9
+ /**
10
+ * Props for `ButtonInputPopover`, an input button that toggles an adjacent popover.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonInputPopover/ButtonInputPopoverProps
13
+ */
9
14
  export interface ButtonInputPopoverProps extends InputProps {
10
15
  children: PopoverChildren;
11
16
  }
@@ -15,6 +20,11 @@ export interface ButtonInputPopoverProps extends InputProps {
15
20
  * - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
16
21
  *
17
22
  * DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
23
+ *
24
+ * @param props Props including the input `name` and `children` whose first node is the button and the rest the popover.
25
+ * @returns A `Popover` wrapping a `ButtonInput` that toggles it open and closed.
26
+ * @example <ButtonInputPopover name="filter">{label}{panel}</ButtonInputPopover>
27
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonInputPopover/ButtonInputPopover
18
28
  */
19
29
  export function ButtonInputPopover({
20
30
  children: [buttonChildren, ...popoverChildren], //
@@ -3,14 +3,24 @@
3
3
  import { type ReactElement } from "react";
4
4
  import { type ButtonVariants } from "./Button.js";
5
5
  import { type PopoverChildren } from "./Popover.js";
6
+ /**
7
+ * Props for `ButtonPopover`, a button that toggles an adjacent popover.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopoverProps
10
+ */
6
11
  export interface ButtonPopoverProps extends ButtonVariants {
7
12
  children: PopoverChildren;
8
13
  }
9
14
  /**
10
- * An input button that, when clicked, shows a popover next to it when clicked or focused.
15
+ * A button that, when clicked, shows a popover next to it when clicked or focused.
11
16
  * - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
12
17
  *
13
18
  * DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
19
+ *
20
+ * @param props Props including `Button` variants and `children` whose first node is the button and the rest the popover.
21
+ * @returns A `Popover` wrapping a `Button` that toggles it open and closed.
22
+ * @example <ButtonPopover>{label}{panel}</ButtonPopover>
23
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopover
14
24
  */
15
25
  export declare function ButtonPopover({ children: [buttonChildren, ...popoverChildren], //
16
26
  ...props }: ButtonPopoverProps): ReactElement;
@@ -5,10 +5,15 @@ import { useState } from "react";
5
5
  import { Button } from "./Button.js";
6
6
  import { Popover } from "./Popover.js";
7
7
  /**
8
- * An input button that, when clicked, shows a popover next to it when clicked or focused.
8
+ * A button that, when clicked, shows a popover next to it when clicked or focused.
9
9
  * - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
10
10
  *
11
11
  * DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
12
+ *
13
+ * @param props Props including `Button` variants and `children` whose first node is the button and the rest the popover.
14
+ * @returns A `Popover` wrapping a `Button` that toggles it open and closed.
15
+ * @example <ButtonPopover>{label}{panel}</ButtonPopover>
16
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopover
12
17
  */
13
18
  export function ButtonPopover({ children: [buttonChildren, ...popoverChildren], //
14
19
  ...props }) {
@@ -5,15 +5,25 @@ import { type ReactElement, useState } from "react";
5
5
  import { Button, type ButtonVariants } from "./Button.js";
6
6
  import { Popover, type PopoverChildren } from "./Popover.js";
7
7
 
8
+ /**
9
+ * Props for `ButtonPopover`, a button that toggles an adjacent popover.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopoverProps
12
+ */
8
13
  export interface ButtonPopoverProps extends ButtonVariants {
9
14
  children: PopoverChildren;
10
15
  }
11
16
 
12
17
  /**
13
- * An input button that, when clicked, shows a popover next to it when clicked or focused.
18
+ * A button that, when clicked, shows a popover next to it when clicked or focused.
14
19
  * - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
15
20
  *
16
21
  * DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
22
+ *
23
+ * @param props Props including `Button` variants and `children` whose first node is the button and the rest the popover.
24
+ * @returns A `Popover` wrapping a `Button` that toggles it open and closed.
25
+ * @example <ButtonPopover>{label}{panel}</ButtonPopover>
26
+ * @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopover
17
27
  */
18
28
  export function ButtonPopover({
19
29
  children: [buttonChildren, ...popoverChildren], //
@@ -2,7 +2,20 @@ import type { ReactElement } from "react";
2
2
  import { type FlexVariants } from "../style/Flex.js";
3
3
  import type { OptionalChildProps } from "../util/props.js";
4
4
  import { type ValueInputProps } from "./Input.js";
5
+ /**
6
+ * Props for `CheckboxInput`, a boolean-valued checkbox input.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxProps
9
+ */
5
10
  export interface CheckboxProps extends ValueInputProps<boolean>, OptionalChildProps, FlexVariants {
6
11
  }
7
- /** Checkbox element. */
12
+ /**
13
+ * Checkbox input bound to a `boolean` value, rendered as a labelled `<input type="checkbox">`.
14
+ * - The label content comes from `children`, falling back to `placeholder`/`title`.
15
+ *
16
+ * @param props Props including `value`, `onValue`, label `children`, and `Flex` variants.
17
+ * @returns A `<label>` wrapping the checkbox and its label content.
18
+ * @example <CheckboxInput name="agree" value={agree} onValue={setAgree}>I agree</CheckboxInput>
19
+ * @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxInput
20
+ */
8
21
  export declare function CheckboxInput({ name, title, placeholder, required, disabled, message, value, onValue, children, ...variants }: CheckboxProps): ReactElement;
@@ -3,7 +3,15 @@ import { notNullish } from "../../util/null.js";
3
3
  import { getFlexClass } from "../style/Flex.js";
4
4
  import { getClass } from "../util/css.js";
5
5
  import { CHECKBOX_CLASS, LABEL_INPUT_CLASS, PLACEHOLDER_CLASS } from "./Input.js";
6
- /** Checkbox element. */
6
+ /**
7
+ * Checkbox input bound to a `boolean` value, rendered as a labelled `<input type="checkbox">`.
8
+ * - The label content comes from `children`, falling back to `placeholder`/`title`.
9
+ *
10
+ * @param props Props including `value`, `onValue`, label `children`, and `Flex` variants.
11
+ * @returns A `<label>` wrapping the checkbox and its label content.
12
+ * @example <CheckboxInput name="agree" value={agree} onValue={setAgree}>I agree</CheckboxInput>
13
+ * @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxInput
14
+ */
7
15
  export function CheckboxInput({ name, title, placeholder = title || "Yes", required = false, disabled = false, message = "", value = false, onValue, children, ...variants }) {
8
16
  const hasChildren = notNullish(children);
9
17
  return (_jsxs("label", { className: getClass(LABEL_INPUT_CLASS, getFlexClass(variants), hasChildren && PLACEHOLDER_CLASS), "aria-invalid": !!message, children: [_jsx("input", { name: name, type: "checkbox", defaultChecked: !!value, onChange: e => onValue?.(!!e.currentTarget.checked), required: required, disabled: disabled, title: message, className: CHECKBOX_CLASS }), _jsx("span", { children: hasChildren ? children : placeholder })] }));
@@ -5,9 +5,22 @@ import { getClass } from "../util/css.js";
5
5
  import type { OptionalChildProps } from "../util/props.js";
6
6
  import { CHECKBOX_CLASS, LABEL_INPUT_CLASS, PLACEHOLDER_CLASS, type ValueInputProps } from "./Input.js";
7
7
 
8
+ /**
9
+ * Props for `CheckboxInput`, a boolean-valued checkbox input.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxProps
12
+ */
8
13
  export interface CheckboxProps extends ValueInputProps<boolean>, OptionalChildProps, FlexVariants {}
9
14
 
10
- /** Checkbox element. */
15
+ /**
16
+ * Checkbox input bound to a `boolean` value, rendered as a labelled `<input type="checkbox">`.
17
+ * - The label content comes from `children`, falling back to `placeholder`/`title`.
18
+ *
19
+ * @param props Props including `value`, `onValue`, label `children`, and `Flex` variants.
20
+ * @returns A `<label>` wrapping the checkbox and its label content.
21
+ * @example <CheckboxInput name="agree" value={agree} onValue={setAgree}>I agree</CheckboxInput>
22
+ * @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxInput
23
+ */
11
24
  export function CheckboxInput({
12
25
  name,
13
26
  title,
@@ -1,6 +1,11 @@
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 `ChoiceRadioInputs`, which renders a radio for each entry in a `ChoiceOptions` set.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputsProps
8
+ */
4
9
  export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProps<T> {
5
10
  /** Options for the radios. */
6
11
  options: ChoiceOptions<T>;
@@ -13,5 +18,10 @@ export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProp
13
18
  * Output a list of `<RadioInput>` elements for each item in a set of `ChoiceOptions` in `{ key: title }` format.
14
19
  * - This is the same type a `ChoiceSchema` uses for its `.options` field.
15
20
  * - A `placeholder` option is shown at the bottom if `required=false`.
21
+ *
22
+ * @param props Props including the `options` set, current `value`, `onValue`, and `wrap`/`column` layout flags.
23
+ * @returns Element rendering one radio per option plus an optional empty placeholder radio.
24
+ * @example <ChoiceRadioInputs name="role" options={{ admin: "Admin", user: "User" }} value={role} onValue={setRole} />
25
+ * @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputs
16
26
  */
17
27
  export declare function ChoiceRadioInputs<T extends string>(props: ChoiceRadioInputsProps<T>): ReactElement;
@@ -8,6 +8,11 @@ import { RadioInput } from "./RadioInput.js";
8
8
  /** Maximum number of options to show in a row. */
9
9
  const MAX_ROW_OPTIONS = 2;
10
10
 
11
+ /**
12
+ * Props for `ChoiceRadioInputs`, which renders a radio for each entry in a `ChoiceOptions` set.
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputsProps
15
+ */
11
16
  export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProps<T> {
12
17
  /** Options for the radios. */
13
18
  options: ChoiceOptions<T>;
@@ -21,6 +26,11 @@ export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProp
21
26
  * Output a list of `<RadioInput>` elements for each item in a set of `ChoiceOptions` in `{ key: title }` format.
22
27
  * - This is the same type a `ChoiceSchema` uses for its `.options` field.
23
28
  * - A `placeholder` option is shown at the bottom if `required=false`.
29
+ *
30
+ * @param props Props including the `options` set, current `value`, `onValue`, and `wrap`/`column` layout flags.
31
+ * @returns Element rendering one radio per option plus an optional empty placeholder radio.
32
+ * @example <ChoiceRadioInputs name="role" options={{ admin: "Admin", user: "User" }} value={role} onValue={setRole} />
33
+ * @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputs
24
34
  */
25
35
  export function ChoiceRadioInputs<T extends string>(props: ChoiceRadioInputsProps<T>): ReactElement;
26
36
  export function ChoiceRadioInputs({
@@ -2,13 +2,21 @@ import type { MouseEvent, ReactElement, ReactNode } from "react";
2
2
  import type { Path } from "../../util/path.js";
3
3
  import type { ImmutableURI, URIString } from "../../util/uri.js";
4
4
  import type { OptionalChildProps } from "../util/props.js";
5
- /***
5
+ /**
6
6
  * Handler for a clickable `onClick` event.
7
7
  * - Returned value (if defined) is notified to the user using `notifySuccess()`
8
8
  * - Thrown value is notified to the user using `notifyError()`
9
+ *
10
+ * @param event The `MouseEvent` from the underlying `<button>`.
11
+ * @returns A `ReactNode` (shown as a success notice), nothing, or a promise of either.
12
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableCallback
9
13
  */
10
14
  export type ClickableCallback = (event: MouseEvent<HTMLButtonElement>) => ReactNode | void | PromiseLike<ReactNode | void>;
11
- /** Props for a thing that can be clicked, either has a string `href` link or an `onClick` callback handler. */
15
+ /**
16
+ * Props for a thing that can be clicked — either has a string `href` link or an `onClick` callback handler.
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableProps
19
+ */
12
20
  export interface ClickableProps extends OptionalChildProps {
13
21
  /** Whether the clickable is currently disabled. */
14
22
  disabled?: boolean | undefined;
@@ -23,14 +31,46 @@ export interface ClickableProps extends OptionalChildProps {
23
31
  /** Title shown on hover. */
24
32
  title?: string | undefined;
25
33
  }
34
+ /**
35
+ * Props for a clickable that also accepts a `className` for styling.
36
+ *
37
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/StylableClickableProps
38
+ */
26
39
  export interface StylableClickableProps extends ClickableProps {
27
40
  className?: string | undefined;
28
41
  }
29
- /** Return either a `<button>` or an `<a href="">` based on whether an `onClick` or `href` prop is provided. */
42
+ /**
43
+ * Render either a `<button>`, an `<a href="">`, or a plain `<span>` based on whether an `onClick` or `href` prop is provided.
44
+ * - `href` renders a `LinkClickable`; `onClick` renders a `ButtonClickable`; neither renders a `SpanClickable`.
45
+ *
46
+ * @example <Clickable href="/about">About</Clickable>
47
+ * @example <Clickable onClick={save}>Save</Clickable>
48
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/Clickable
49
+ */
30
50
  export declare function Clickable(props: StylableClickableProps): ReactElement;
31
- /** Return an `<a href="">` element. */
51
+ /**
52
+ * Render an `<a href="">` element, resolving its `href` against the current page URL and marking it active when it matches.
53
+ * - The `href` is resolved against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
54
+ * - Sets `aria-current="page"` when the link points at the current URL.
55
+ *
56
+ * @example <LinkClickable href="/about" className="link">About</LinkClickable>
57
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/LinkClickable
58
+ */
32
59
  export declare function LinkClickable({ href, disabled, target, download, title, children, className, }: StylableClickableProps): ReactElement;
33
- /** Return a `<button>` element. */
60
+ /**
61
+ * Render a `<button>` element that runs its `onClick` handler through a `BusyStore` and shows a loading spinner while busy.
62
+ * - Notifies the user of the handler's returned value (success) or thrown value (error).
63
+ * - Disabled and ignores clicks while a previous click is still pending.
64
+ *
65
+ * @example <ButtonClickable onClick={save} className="btn">Save</ButtonClickable>
66
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ButtonClickable
67
+ */
34
68
  export declare function ButtonClickable({ onClick, disabled, title, children, className, }: StylableClickableProps): ReactElement;
69
+ /**
70
+ * Render a non-interactive `<span>` element, used as the fallback when neither `href` nor `onClick` is provided.
71
+ *
72
+ * @example <SpanClickable className="label">Static</SpanClickable>
73
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/SpanClickable
74
+ */
35
75
  export declare function SpanClickable({ title, children, //
36
76
  className, }: StylableClickableProps): ReactElement;
@@ -7,11 +7,25 @@ import { getLink } from "../../util/link.js";
7
7
  import { LOADING } from "../misc/Loading.js";
8
8
  import { requireMeta } from "../misc/MetaContext.js";
9
9
  import { callNotifiedElement } from "../util/notice.js";
10
- /** Return either a `<button>` or an `<a href="">` based on whether an `onClick` or `href` prop is provided. */
10
+ /**
11
+ * Render either a `<button>`, an `<a href="">`, or a plain `<span>` based on whether an `onClick` or `href` prop is provided.
12
+ * - `href` renders a `LinkClickable`; `onClick` renders a `ButtonClickable`; neither renders a `SpanClickable`.
13
+ *
14
+ * @example <Clickable href="/about">About</Clickable>
15
+ * @example <Clickable onClick={save}>Save</Clickable>
16
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/Clickable
17
+ */
11
18
  export function Clickable(props) {
12
19
  return "href" in props ? (_jsx(LinkClickable, { ...props })) : "onClick" in props ? (_jsx(ButtonClickable, { ...props })) : (_jsx(SpanClickable, { ...props }));
13
20
  }
14
- /** Return an `<a href="">` element. */
21
+ /**
22
+ * Render an `<a href="">` element, resolving its `href` against the current page URL and marking it active when it matches.
23
+ * - The `href` is resolved against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
24
+ * - Sets `aria-current="page"` when the link points at the current URL.
25
+ *
26
+ * @example <LinkClickable href="/about" className="link">About</LinkClickable>
27
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/LinkClickable
28
+ */
15
29
  export function LinkClickable({ href, disabled = !href, target, download, title, children = "Go", className, }) {
16
30
  // Resolve `href` against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
17
31
  const { url, root } = requireMeta();
@@ -20,7 +34,14 @@ export function LinkClickable({ href, disabled = !href, target, download, title,
20
34
  const active = isURLActive(link, url);
21
35
  return (_jsx("a", { href: link?.href, title: title, download: download, target: target, className: className, "aria-current": active ? "page" : undefined, children: children }));
22
36
  }
23
- /** Return a `<button>` element. */
37
+ /**
38
+ * Render a `<button>` element that runs its `onClick` handler through a `BusyStore` and shows a loading spinner while busy.
39
+ * - Notifies the user of the handler's returned value (success) or thrown value (error).
40
+ * - Disabled and ignores clicks while a previous click is still pending.
41
+ *
42
+ * @example <ButtonClickable onClick={save} className="btn">Save</ButtonClickable>
43
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ButtonClickable
44
+ */
24
45
  export function ButtonClickable({ onClick, disabled = !onClick, title, children = "Click", className, }) {
25
46
  // Create a `BusyStore<undefined>` to keep track of the `onClick` call and any thrown errors.
26
47
  const store = useInstance(BusyStore, undefined);
@@ -35,6 +56,12 @@ export function ButtonClickable({ onClick, disabled = !onClick, title, children
35
56
  }
36
57
  }, children: busy ? LOADING : children }));
37
58
  }
59
+ /**
60
+ * Render a non-interactive `<span>` element, used as the fallback when neither `href` nor `onClick` is provided.
61
+ *
62
+ * @example <SpanClickable className="label">Static</SpanClickable>
63
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/SpanClickable
64
+ */
38
65
  export function SpanClickable({ title, children = "Click", //
39
66
  className, }) {
40
67
  return (_jsx("span", { title: title, className: className, children: children }));
@@ -11,14 +11,22 @@ import { requireMeta } from "../misc/MetaContext.js";
11
11
  import { callNotifiedElement } from "../util/notice.js";
12
12
  import type { OptionalChildProps } from "../util/props.js";
13
13
 
14
- /***
14
+ /**
15
15
  * Handler for a clickable `onClick` event.
16
16
  * - Returned value (if defined) is notified to the user using `notifySuccess()`
17
17
  * - Thrown value is notified to the user using `notifyError()`
18
+ *
19
+ * @param event The `MouseEvent` from the underlying `<button>`.
20
+ * @returns A `ReactNode` (shown as a success notice), nothing, or a promise of either.
21
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableCallback
18
22
  */
19
23
  export type ClickableCallback = (event: MouseEvent<HTMLButtonElement>) => ReactNode | void | PromiseLike<ReactNode | void>;
20
24
 
21
- /** Props for a thing that can be clicked, either has a string `href` link or an `onClick` callback handler. */
25
+ /**
26
+ * Props for a thing that can be clicked — either has a string `href` link or an `onClick` callback handler.
27
+ *
28
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableProps
29
+ */
22
30
  export interface ClickableProps extends OptionalChildProps {
23
31
  /** Whether the clickable is currently disabled. */
24
32
  disabled?: boolean | undefined;
@@ -34,11 +42,23 @@ export interface ClickableProps extends OptionalChildProps {
34
42
  title?: string | undefined;
35
43
  }
36
44
 
45
+ /**
46
+ * Props for a clickable that also accepts a `className` for styling.
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/StylableClickableProps
49
+ */
37
50
  export interface StylableClickableProps extends ClickableProps {
38
51
  className?: string | undefined;
39
52
  }
40
53
 
41
- /** Return either a `<button>` or an `<a href="">` based on whether an `onClick` or `href` prop is provided. */
54
+ /**
55
+ * Render either a `<button>`, an `<a href="">`, or a plain `<span>` based on whether an `onClick` or `href` prop is provided.
56
+ * - `href` renders a `LinkClickable`; `onClick` renders a `ButtonClickable`; neither renders a `SpanClickable`.
57
+ *
58
+ * @example <Clickable href="/about">About</Clickable>
59
+ * @example <Clickable onClick={save}>Save</Clickable>
60
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/Clickable
61
+ */
42
62
  export function Clickable(props: StylableClickableProps): ReactElement {
43
63
  return "href" in props ? (
44
64
  <LinkClickable {...props} />
@@ -49,7 +69,14 @@ export function Clickable(props: StylableClickableProps): ReactElement {
49
69
  );
50
70
  }
51
71
 
52
- /** Return an `<a href="">` element. */
72
+ /**
73
+ * Render an `<a href="">` element, resolving its `href` against the current page URL and marking it active when it matches.
74
+ * - The `href` is resolved against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
75
+ * - Sets `aria-current="page"` when the link points at the current URL.
76
+ *
77
+ * @example <LinkClickable href="/about" className="link">About</LinkClickable>
78
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/LinkClickable
79
+ */
53
80
  export function LinkClickable({
54
81
  href,
55
82
  disabled = !href,
@@ -80,7 +107,14 @@ export function LinkClickable({
80
107
  );
81
108
  }
82
109
 
83
- /** Return a `<button>` element. */
110
+ /**
111
+ * Render a `<button>` element that runs its `onClick` handler through a `BusyStore` and shows a loading spinner while busy.
112
+ * - Notifies the user of the handler's returned value (success) or thrown value (error).
113
+ * - Disabled and ignores clicks while a previous click is still pending.
114
+ *
115
+ * @example <ButtonClickable onClick={save} className="btn">Save</ButtonClickable>
116
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/ButtonClickable
117
+ */
84
118
  export function ButtonClickable({
85
119
  onClick,
86
120
  disabled = !onClick,
@@ -116,6 +150,12 @@ export function ButtonClickable({
116
150
  );
117
151
  }
118
152
 
153
+ /**
154
+ * Render a non-interactive `<span>` element, used as the fallback when neither `href` nor `onClick` is provided.
155
+ *
156
+ * @example <SpanClickable className="label">Static</SpanClickable>
157
+ * @see https://dhoulb.github.io/shelving/ui/form/Clickable/SpanClickable
158
+ */
119
159
  export function SpanClickable({
120
160
  title,
121
161
  children = "Click", //
@@ -2,8 +2,22 @@ import type { ReactElement } from "react";
2
2
  import type { Schemas } from "../../schema/Schema.js";
3
3
  import type { Data } from "../../util/data.js";
4
4
  import type { ValueInputProps } from "./Input.js";
5
+ /**
6
+ * Props for `DataInput`, a composite input that edits an object of schema-validated sub-fields.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInputProps
9
+ */
5
10
  export interface DataInputProps<T extends Data> extends ValueInputProps<T> {
6
11
  /** Schema for the sub-fields of this input. */
7
12
  props: Schemas<T>;
8
13
  }
14
+ /**
15
+ * Composite input that edits a data object by rendering a `SchemaInput` for each property schema.
16
+ * - Each sub-field is keyed by its property name and validated using the matching schema in `props`.
17
+ *
18
+ * @param props Props including the per-property `props` schemas, current `value`, and `onValue`.
19
+ * @returns Element rendering one input per property, laid out in a row or column.
20
+ * @example <DataInput name="address" props={addressSchemas} value={address} onValue={setAddress} />
21
+ * @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInput
22
+ */
9
23
  export declare function DataInput<T extends Data>(props: DataInputProps<T>): ReactElement;
@@ -7,11 +7,25 @@ import { Row } from "../style/Flex.js";
7
7
  import type { ValueInputProps } from "./Input.js";
8
8
  import { SchemaInput } from "./SchemaInput.js";
9
9
 
10
+ /**
11
+ * Props for `DataInput`, a composite input that edits an object of schema-validated sub-fields.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInputProps
14
+ */
10
15
  export interface DataInputProps<T extends Data> extends ValueInputProps<T> {
11
16
  /** Schema for the sub-fields of this input. */
12
17
  props: Schemas<T>;
13
18
  }
14
19
 
20
+ /**
21
+ * Composite input that edits a data object by rendering a `SchemaInput` for each property schema.
22
+ * - Each sub-field is keyed by its property name and validated using the matching schema in `props`.
23
+ *
24
+ * @param props Props including the per-property `props` schemas, current `value`, and `onValue`.
25
+ * @returns Element rendering one input per property, laid out in a row or column.
26
+ * @example <DataInput name="address" props={addressSchemas} value={address} onValue={setAddress} />
27
+ * @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInput
28
+ */
15
29
  export function DataInput<T extends Data>(props: DataInputProps<T>): ReactElement;
16
30
  export function DataInput({
17
31
  // name,
@@ -2,11 +2,25 @@ import type { ReactElement } from "react";
2
2
  import type { DateInputType } from "../../schema/DateSchema.js";
3
3
  import { type PossibleDate } from "../../util/date.js";
4
4
  import { type ValueInputProps } from "./Input.js";
5
+ /**
6
+ * Props for `DateInput`, a date/time `<input>` that emits an ISO string value.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInputProps
9
+ */
5
10
  export interface DateInputProps extends ValueInputProps<string, PossibleDate> {
6
11
  min?: PossibleDate | undefined;
7
12
  max?: PossibleDate | undefined;
8
13
  input?: DateInputType | undefined;
9
14
  step?: number | undefined;
10
15
  }
16
+ /**
17
+ * Date, time, or datetime input that accepts a `PossibleDate` and emits an ISO string value.
18
+ * - The `input` prop selects the underlying `<input type="date|time|datetime-local">` and matching string format.
19
+ *
20
+ * @param props Props including `value`, `onValue`, optional `min`/`max` bounds, `input` type, and `step`.
21
+ * @returns A native date/time `<input>` element.
22
+ * @example <DateInput name="dob" input="date" value={dob} onValue={setDob} />
23
+ * @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInput
24
+ */
11
25
  export declare function DateInput({ name, title, placeholder, // Placeholder must be defined or `:placeholder-shown` CSS rules won't show.
12
26
  required, disabled, message, value, onValue, min, max, input, step, }: DateInputProps): ReactElement;
@@ -7,6 +7,15 @@ const _DATE_TO_STRING = {
7
7
  date: getDateString, // YYYY-MM-DD
8
8
  time: getTimeString, // HH:MM:SS
9
9
  };
10
+ /**
11
+ * Date, time, or datetime input that accepts a `PossibleDate` and emits an ISO string value.
12
+ * - The `input` prop selects the underlying `<input type="date|time|datetime-local">` and matching string format.
13
+ *
14
+ * @param props Props including `value`, `onValue`, optional `min`/`max` bounds, `input` type, and `step`.
15
+ * @returns A native date/time `<input>` element.
16
+ * @example <DateInput name="dob" input="date" value={dob} onValue={setDob} />
17
+ * @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInput
18
+ */
10
19
  export function DateInput({ name, title = "", placeholder = title, // Placeholder must be defined or `:placeholder-shown` CSS rules won't show.
11
20
  required = false, disabled = false, message = "", value, onValue, min, max, input = "date", step, }) {
12
21
  const onChange = (e) => {
@@ -10,6 +10,11 @@ const _DATE_TO_STRING: { [K in DateInputType]: (d: PossibleDate | undefined) =>
10
10
  time: getTimeString, // HH:MM:SS
11
11
  };
12
12
 
13
+ /**
14
+ * Props for `DateInput`, a date/time `<input>` that emits an ISO string value.
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInputProps
17
+ */
13
18
  export interface DateInputProps extends ValueInputProps<string, PossibleDate> {
14
19
  min?: PossibleDate | undefined;
15
20
  max?: PossibleDate | undefined;
@@ -17,6 +22,15 @@ export interface DateInputProps extends ValueInputProps<string, PossibleDate> {
17
22
  step?: number | undefined;
18
23
  }
19
24
 
25
+ /**
26
+ * Date, time, or datetime input that accepts a `PossibleDate` and emits an ISO string value.
27
+ * - The `input` prop selects the underlying `<input type="date|time|datetime-local">` and matching string format.
28
+ *
29
+ * @param props Props including `value`, `onValue`, optional `min`/`max` bounds, `input` type, and `step`.
30
+ * @returns A native date/time `<input>` element.
31
+ * @example <DateInput name="dob" input="date" value={dob} onValue={setDob} />
32
+ * @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInput
33
+ */
20
34
  export function DateInput({
21
35
  name,
22
36
  title = "",
@@ -2,6 +2,11 @@ import type { ReactElement } from "react";
2
2
  import type { Schema } from "../../schema/Schema.js";
3
3
  import type { ImmutableDictionary } from "../../util/dictionary.js";
4
4
  import type { ValueInputProps } from "./Input.js";
5
+ /**
6
+ * Props for `DictionaryInput`, a repeating input that edits a dictionary of schema-validated items.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInputProps
9
+ */
5
10
  export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictionary<T>> {
6
11
  one?: string;
7
12
  many?: string;
@@ -10,4 +15,14 @@ export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictio
10
15
  /** Schema for the items in the repeater. */
11
16
  items: Schema<T>;
12
17
  }
18
+ /**
19
+ * Repeating input that edits a dictionary, with an editable key and schema-validated value per entry.
20
+ * - Each value is validated and rendered using the supplied `items` schema.
21
+ * - Enforces `min`/`max` entry count and offers add, remove, and clear controls.
22
+ *
23
+ * @param props Props including `value`, `onValue`, the `items` schema, and `min`/`max` entry bounds.
24
+ * @returns Element rendering one key/value row per entry plus add/clear controls.
25
+ * @example <DictionaryInput name="meta" items={STRING} value={meta} onValue={setMeta} />
26
+ * @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInput
27
+ */
13
28
  export declare function DictionaryInput<T>(props: DictionaryInputProps<T>): ReactElement;
@@ -13,6 +13,11 @@ import type { ValueInputProps } from "./Input.js";
13
13
  import { SchemaInput } from "./SchemaInput.js";
14
14
  import { TextInput } from "./TextInput.js";
15
15
 
16
+ /**
17
+ * Props for `DictionaryInput`, a repeating input that edits a dictionary of schema-validated items.
18
+ *
19
+ * @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInputProps
20
+ */
16
21
  export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictionary<T>> {
17
22
  one?: string;
18
23
  many?: string;
@@ -22,6 +27,16 @@ export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictio
22
27
  items: Schema<T>;
23
28
  }
24
29
 
30
+ /**
31
+ * Repeating input that edits a dictionary, with an editable key and schema-validated value per entry.
32
+ * - Each value is validated and rendered using the supplied `items` schema.
33
+ * - Enforces `min`/`max` entry count and offers add, remove, and clear controls.
34
+ *
35
+ * @param props Props including `value`, `onValue`, the `items` schema, and `min`/`max` entry bounds.
36
+ * @returns Element rendering one key/value row per entry plus add/clear controls.
37
+ * @example <DictionaryInput name="meta" items={STRING} value={meta} onValue={setMeta} />
38
+ * @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInput
39
+ */
25
40
  export function DictionaryInput<T>(props: DictionaryInputProps<T>): ReactElement;
26
41
  export function DictionaryInput({
27
42
  name,
@@ -1,5 +1,10 @@
1
1
  import type { ReactElement, ReactNode } from "react";
2
2
  import type { ChildProps } from "../util/props.js";
3
+ /**
4
+ * Props for `Field`, a labelled wrapper around a form control.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/ui/form/Field/FieldProps
7
+ */
3
8
  export interface FieldProps extends ChildProps {
4
9
  title?: ReactNode | undefined;
5
10
  description?: ReactNode | undefined;