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/test/basics.js CHANGED
@@ -4,6 +4,11 @@ import { CHOICE } from "../schema/ChoiceSchema.js";
4
4
  import { DATA } from "../schema/DataSchema.js";
5
5
  import { NUMBER } from "../schema/NumberSchema.js";
6
6
  import { STRING } from "../schema/StringSchema.js";
7
+ /**
8
+ * Schema for a test "basic" fixture, exercising string, number, choice, array, boolean, and nested-data props.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/test/basics/BASIC_SCHEMA
11
+ */
7
12
  export const BASIC_SCHEMA = DATA({
8
13
  str: STRING,
9
14
  num: NUMBER,
@@ -13,6 +18,11 @@ export const BASIC_SCHEMA = DATA({
13
18
  even: BOOLEAN,
14
19
  sub: DATA({ str: STRING, num: NUMBER, odd: BOOLEAN, even: BOOLEAN }),
15
20
  });
21
+ /**
22
+ * Test basic fixture: `str: "aaa"`, `num: 100`, group `a`, odd.
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/test/basics/basic1
25
+ */
16
26
  export const basic1 = {
17
27
  id: "basic1",
18
28
  str: "aaa",
@@ -23,6 +33,11 @@ export const basic1 = {
23
33
  tags: ["odd", "prime"],
24
34
  sub: { str: "aaa", num: 100, even: false, odd: true },
25
35
  };
36
+ /**
37
+ * Test basic fixture: `str: "bbb"`, `num: 200`, group `a`, even.
38
+ *
39
+ * @see https://dhoulb.github.io/shelving/test/basics/basic2
40
+ */
26
41
  export const basic2 = {
27
42
  id: "basic2",
28
43
  str: "bbb",
@@ -33,6 +48,11 @@ export const basic2 = {
33
48
  tags: ["even", "prime"],
34
49
  sub: { str: "bbb", num: 200, even: true, odd: false },
35
50
  };
51
+ /**
52
+ * Test basic fixture: `str: "ccc"`, `num: 300`, group `a`, odd.
53
+ *
54
+ * @see https://dhoulb.github.io/shelving/test/basics/basic3
55
+ */
36
56
  export const basic3 = {
37
57
  id: "basic3",
38
58
  str: "ccc",
@@ -43,6 +63,11 @@ export const basic3 = {
43
63
  tags: ["odd", "prime"],
44
64
  sub: { str: "ccc", num: 300, even: false, odd: true },
45
65
  };
66
+ /**
67
+ * Test basic fixture: `str: "ddd"`, `num: 400`, group `b`, even.
68
+ *
69
+ * @see https://dhoulb.github.io/shelving/test/basics/basic4
70
+ */
46
71
  export const basic4 = {
47
72
  id: "basic4",
48
73
  str: "ddd",
@@ -53,6 +78,11 @@ export const basic4 = {
53
78
  tags: ["even"],
54
79
  sub: { str: "ddd", num: 400, even: true, odd: false },
55
80
  };
81
+ /**
82
+ * Test basic fixture: `str: "eee"`, `num: 500`, group `b`, odd.
83
+ *
84
+ * @see https://dhoulb.github.io/shelving/test/basics/basic5
85
+ */
56
86
  export const basic5 = {
57
87
  id: "basic5",
58
88
  str: "eee",
@@ -63,6 +93,11 @@ export const basic5 = {
63
93
  tags: ["odd", "prime"],
64
94
  sub: { str: "eee", num: 500, even: false, odd: true },
65
95
  };
96
+ /**
97
+ * Test basic fixture: `str: "fff"`, `num: 600`, group `b`, even.
98
+ *
99
+ * @see https://dhoulb.github.io/shelving/test/basics/basic6
100
+ */
66
101
  export const basic6 = {
67
102
  id: "basic6",
68
103
  str: "fff",
@@ -73,6 +108,11 @@ export const basic6 = {
73
108
  tags: ["even"],
74
109
  sub: { str: "fff", num: 600, even: true, odd: false },
75
110
  };
111
+ /**
112
+ * Test basic fixture: `str: "ggg"`, `num: 700`, group `c`, odd.
113
+ *
114
+ * @see https://dhoulb.github.io/shelving/test/basics/basic7
115
+ */
76
116
  export const basic7 = {
77
117
  id: "basic7",
78
118
  str: "ggg",
@@ -83,6 +123,11 @@ export const basic7 = {
83
123
  tags: ["odd", "prime"],
84
124
  sub: { str: "ggg", num: 700, even: false, odd: true },
85
125
  };
126
+ /**
127
+ * Test basic fixture: `str: "hhh"`, `num: 800`, group `c`, even.
128
+ *
129
+ * @see https://dhoulb.github.io/shelving/test/basics/basic8
130
+ */
86
131
  export const basic8 = {
87
132
  id: "basic8",
88
133
  str: "hhh",
@@ -93,6 +138,11 @@ export const basic8 = {
93
138
  tags: ["even"],
94
139
  sub: { str: "hhh", num: 800, even: true, odd: false },
95
140
  };
141
+ /**
142
+ * Test basic fixture: `str: "iii"`, `num: 900`, group `c`, odd.
143
+ *
144
+ * @see https://dhoulb.github.io/shelving/test/basics/basic9
145
+ */
96
146
  export const basic9 = {
97
147
  id: "basic9",
98
148
  str: "iii",
@@ -103,7 +153,17 @@ export const basic9 = {
103
153
  tags: ["odd"],
104
154
  sub: { str: "iii", num: 900, even: false, odd: true },
105
155
  };
156
+ /**
157
+ * Array of all nine test basic fixtures in a deliberately shuffled order, for exercising sort/query behaviour.
158
+ *
159
+ * @see https://dhoulb.github.io/shelving/test/basics/basics
160
+ */
106
161
  export const basics = [basic3, basic5, basic7, basic4, basic1, basic2, basic8, basic6, basic9];
162
+ /**
163
+ * Standalone test basic data (no `id`): `str: "zzz"`, `num: 999`, for use as new/unsaved data.
164
+ *
165
+ * @see https://dhoulb.github.io/shelving/test/basics/basic999
166
+ */
107
167
  export const basic999 = {
108
168
  str: "zzz",
109
169
  num: 999,
package/test/people.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import type { Item } from "../util/item.js";
2
2
  import type { ValidatorType } from "../util/validate.js";
3
+ /**
4
+ * Schema for a test "person" fixture, with a nested `name` and a nullable `birthday`.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/test/people/PERSON_SCHEMA
7
+ */
3
8
  export declare const PERSON_SCHEMA: import("../schema/DataSchema.js").DataSchema<{
4
9
  name: {
5
10
  first: /*elided*/ any;
@@ -7,11 +12,51 @@ export declare const PERSON_SCHEMA: import("../schema/DataSchema.js").DataSchema
7
12
  };
8
13
  birthday: string | null;
9
14
  }>;
15
+ /**
16
+ * Validated data shape of a test person, inferred from `PERSON_SCHEMA`.
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/test/people/PersonData
19
+ */
10
20
  export type PersonData = ValidatorType<typeof PERSON_SCHEMA>;
21
+ /**
22
+ * A test person as a stored `Item` — `PersonData` plus a string `id`.
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/test/people/PersonItem
25
+ */
11
26
  export type PersonItem = Item<string, PersonData>;
27
+ /**
28
+ * Test person fixture: Dave Brook, born 1985-12-06.
29
+ *
30
+ * @see https://dhoulb.github.io/shelving/test/people/person1
31
+ */
12
32
  export declare const person1: PersonItem;
33
+ /**
34
+ * Test person fixture: Sally Callister, born 1973-11-19.
35
+ *
36
+ * @see https://dhoulb.github.io/shelving/test/people/person2
37
+ */
13
38
  export declare const person2: PersonItem;
39
+ /**
40
+ * Test person fixture: Sammy Canister, with no birthday (`null`).
41
+ *
42
+ * @see https://dhoulb.github.io/shelving/test/people/person3
43
+ */
14
44
  export declare const person3: PersonItem;
45
+ /**
46
+ * Test person fixture: Jilly Jones, with no birthday (`null`).
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/test/people/person4
49
+ */
15
50
  export declare const person4: PersonItem;
51
+ /**
52
+ * Test person fixture: Terry Times, born 1964-08-01.
53
+ *
54
+ * @see https://dhoulb.github.io/shelving/test/people/person5
55
+ */
16
56
  export declare const person5: PersonItem;
57
+ /**
58
+ * Ordered array of all five test person fixtures (`person1` through `person5`).
59
+ *
60
+ * @see https://dhoulb.github.io/shelving/test/people/people
61
+ */
17
62
  export declare const people: ReadonlyArray<PersonItem>;
package/test/people.js CHANGED
@@ -1,13 +1,48 @@
1
1
  import { DATA } from "../schema/DataSchema.js";
2
2
  import { NULLABLE_DATE } from "../schema/DateSchema.js";
3
3
  import { REQUIRED_STRING } from "../schema/StringSchema.js";
4
+ /**
5
+ * Schema for a test "person" fixture, with a nested `name` and a nullable `birthday`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/test/people/PERSON_SCHEMA
8
+ */
4
9
  export const PERSON_SCHEMA = DATA({
5
10
  name: DATA({ first: REQUIRED_STRING, last: REQUIRED_STRING }),
6
11
  birthday: NULLABLE_DATE,
7
12
  });
13
+ /**
14
+ * Test person fixture: Dave Brook, born 1985-12-06.
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/test/people/person1
17
+ */
8
18
  export const person1 = { id: "person1", name: { first: "Dave", last: "Brook" }, birthday: "1985-12-06" };
19
+ /**
20
+ * Test person fixture: Sally Callister, born 1973-11-19.
21
+ *
22
+ * @see https://dhoulb.github.io/shelving/test/people/person2
23
+ */
9
24
  export const person2 = { id: "person2", name: { first: "Sally", last: "Callister" }, birthday: "1973-11-19" };
25
+ /**
26
+ * Test person fixture: Sammy Canister, with no birthday (`null`).
27
+ *
28
+ * @see https://dhoulb.github.io/shelving/test/people/person3
29
+ */
10
30
  export const person3 = { id: "person3", name: { first: "Sammy", last: "Canister" }, birthday: null };
31
+ /**
32
+ * Test person fixture: Jilly Jones, with no birthday (`null`).
33
+ *
34
+ * @see https://dhoulb.github.io/shelving/test/people/person4
35
+ */
11
36
  export const person4 = { id: "person4", name: { first: "Jilly", last: "Jones" }, birthday: null };
37
+ /**
38
+ * Test person fixture: Terry Times, born 1964-08-01.
39
+ *
40
+ * @see https://dhoulb.github.io/shelving/test/people/person5
41
+ */
12
42
  export const person5 = { id: "person5", name: { first: "Terry", last: "Times" }, birthday: "1964-08-01" };
43
+ /**
44
+ * Ordered array of all five test person fixtures (`person1` through `person5`).
45
+ *
46
+ * @see https://dhoulb.github.io/shelving/test/people/people
47
+ */
13
48
  export const people = [person1, person2, person3, person4, person5];
package/test/util.d.ts CHANGED
@@ -1,9 +1,36 @@
1
1
  import type { Data } from "../util/data.js";
2
2
  import type { Identifier, Item } from "../util/item.js";
3
3
  import type { NotString } from "../util/string.js";
4
- /** Expect that an object matches `PromiseLike` */
4
+ /**
5
+ * Asymmetric matcher that expects an object matching `PromiseLike` (i.e. has a `.then()` method).
6
+ *
7
+ * @example expect(value).toEqual(EXPECT_PROMISELIKE)
8
+ * @see https://dhoulb.github.io/shelving/test/util/EXPECT_PROMISELIKE
9
+ */
5
10
  export declare const EXPECT_PROMISELIKE: any;
6
- /** Expect `Item` objects with an `.id` prop in any order. */
11
+ /**
12
+ * Assert that a set of `Item` objects has exactly the expected `.id` values, in any order.
13
+ *
14
+ * - Sorts both sides before comparing, so iteration order is ignored.
15
+ * - On failure, rewrites the stack trace to point at the call site.
16
+ *
17
+ * @param items The items to check, each carrying an `.id` prop.
18
+ * @param keys The exact set of `.id` values expected (order ignored).
19
+ * @throws {Error} If the items' ids don't match `keys`.
20
+ * @example expectUnorderedItems(results, ["person1", "person2"])
21
+ * @see https://dhoulb.github.io/shelving/test/util/expectUnorderedItems
22
+ */
7
23
  export declare function expectUnorderedItems<I extends Identifier, T extends Data>(items: Iterable<Item<I, T>>, keys: Iterable<string> & NotString): void;
8
- /** Expect `Item` objects with an `.id` prop in a specified order. */
24
+ /**
25
+ * Assert that a set of `Item` objects has exactly the expected `.id` values, in the exact given order.
26
+ *
27
+ * - Compares ids positionally, so order is significant.
28
+ * - On failure, rewrites the stack trace to point at the call site.
29
+ *
30
+ * @param items The items to check, each carrying an `.id` prop.
31
+ * @param keys The exact ordered sequence of `.id` values expected.
32
+ * @throws {Error} If the items' ids don't match `keys` in order.
33
+ * @example expectOrderedItems(results, ["person1", "person2"])
34
+ * @see https://dhoulb.github.io/shelving/test/util/expectOrderedItems
35
+ */
9
36
  export declare function expectOrderedItems<I extends Identifier, T extends Data>(items: Iterable<Item<I, T>>, keys: Iterable<string> & NotString): void;
package/test/util.js CHANGED
@@ -1,10 +1,26 @@
1
1
  import { expect } from "bun:test";
2
2
  import { getIdentifiers } from "../util/item.js";
3
- /** Expect that an object matches `PromiseLike` */
3
+ /**
4
+ * Asymmetric matcher that expects an object matching `PromiseLike` (i.e. has a `.then()` method).
5
+ *
6
+ * @example expect(value).toEqual(EXPECT_PROMISELIKE)
7
+ * @see https://dhoulb.github.io/shelving/test/util/EXPECT_PROMISELIKE
8
+ */
4
9
  export const EXPECT_PROMISELIKE = expect.objectContaining({
5
10
  then: expect.any(Function),
6
11
  });
7
- /** Expect `Item` objects with an `.id` prop in any order. */
12
+ /**
13
+ * Assert that a set of `Item` objects has exactly the expected `.id` values, in any order.
14
+ *
15
+ * - Sorts both sides before comparing, so iteration order is ignored.
16
+ * - On failure, rewrites the stack trace to point at the call site.
17
+ *
18
+ * @param items The items to check, each carrying an `.id` prop.
19
+ * @param keys The exact set of `.id` values expected (order ignored).
20
+ * @throws {Error} If the items' ids don't match `keys`.
21
+ * @example expectUnorderedItems(results, ["person1", "person2"])
22
+ * @see https://dhoulb.github.io/shelving/test/util/expectUnorderedItems
23
+ */
8
24
  export function expectUnorderedItems(items, keys) {
9
25
  try {
10
26
  expect(items).toBeInstanceOf(Object);
@@ -16,7 +32,18 @@ export function expectUnorderedItems(items, keys) {
16
32
  throw thrown;
17
33
  }
18
34
  }
19
- /** Expect `Item` objects with an `.id` prop in a specified order. */
35
+ /**
36
+ * Assert that a set of `Item` objects has exactly the expected `.id` values, in the exact given order.
37
+ *
38
+ * - Compares ids positionally, so order is significant.
39
+ * - On failure, rewrites the stack trace to point at the call site.
40
+ *
41
+ * @param items The items to check, each carrying an `.id` prop.
42
+ * @param keys The exact ordered sequence of `.id` values expected.
43
+ * @throws {Error} If the items' ids don't match `keys` in order.
44
+ * @example expectOrderedItems(results, ["person1", "person2"])
45
+ * @see https://dhoulb.github.io/shelving/test/util/expectOrderedItems
46
+ */
20
47
  export function expectOrderedItems(items, keys) {
21
48
  try {
22
49
  expect(items).toBeInstanceOf(Object);
package/ui/app/App.d.ts CHANGED
@@ -2,10 +2,22 @@ import type { ReactElement } from "react";
2
2
  import "../style/base.css";
3
3
  import type { PossibleMeta } from "../util/index.js";
4
4
  import type { ChildProps } from "../util/props.js";
5
+ /**
6
+ * Props for `<App>` — the root `Meta` plus the application `children`.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/app/App/AppProps
9
+ */
5
10
  export interface AppProps extends PossibleMeta, ChildProps {
6
11
  }
7
12
  /**
8
- * Root component for an application. Provides a `Meta` context to its children so descendants can read
9
- * or update metadata. Design tokens and body baseline typography are set globally via `style/base.css`.
13
+ * Root component for an application, providing the top-level `Meta` context and global styles.
14
+ * - Descendants can read or update metadata via the provided `<Meta>` context.
15
+ * - Design tokens and body baseline typography are set globally via `style/base.css`.
16
+ *
17
+ * @param children The application content.
18
+ * @param meta The root meta (app name, root URL, language, etc.).
19
+ * @returns The app root element wrapping `children`.
20
+ * @example <App app="My App" root="https://example.com/"><Navigation>…</Navigation></App>
21
+ * @see https://dhoulb.github.io/shelving/ui/app/App/App
10
22
  */
11
23
  export declare function App({ children, ...meta }: AppProps): ReactElement;
package/ui/app/App.js CHANGED
@@ -2,8 +2,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { MetaContext, requireMeta } from "../misc/MetaContext.js";
3
3
  import "../style/base.css";
4
4
  /**
5
- * Root component for an application. Provides a `Meta` context to its children so descendants can read
6
- * or update metadata. Design tokens and body baseline typography are set globally via `style/base.css`.
5
+ * Root component for an application, providing the top-level `Meta` context and global styles.
6
+ * - Descendants can read or update metadata via the provided `<Meta>` context.
7
+ * - Design tokens and body baseline typography are set globally via `style/base.css`.
8
+ *
9
+ * @param children The application content.
10
+ * @param meta The root meta (app name, root URL, language, etc.).
11
+ * @returns The app root element wrapping `children`.
12
+ * @example <App app="My App" root="https://example.com/"><Navigation>…</Navigation></App>
13
+ * @see https://dhoulb.github.io/shelving/ui/app/App/App
7
14
  */
8
15
  export function App({ children, ...meta }) {
9
16
  return _jsx(MetaContext, { value: requireMeta(meta), children: children });
package/ui/app/App.tsx CHANGED
@@ -4,11 +4,23 @@ import "../style/base.css";
4
4
  import type { PossibleMeta } from "../util/index.js";
5
5
  import type { ChildProps } from "../util/props.js";
6
6
 
7
+ /**
8
+ * Props for `<App>` — the root `Meta` plus the application `children`.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/ui/app/App/AppProps
11
+ */
7
12
  export interface AppProps extends PossibleMeta, ChildProps {}
8
13
 
9
14
  /**
10
- * Root component for an application. Provides a `Meta` context to its children so descendants can read
11
- * or update metadata. Design tokens and body baseline typography are set globally via `style/base.css`.
15
+ * Root component for an application, providing the top-level `Meta` context and global styles.
16
+ * - Descendants can read or update metadata via the provided `<Meta>` context.
17
+ * - Design tokens and body baseline typography are set globally via `style/base.css`.
18
+ *
19
+ * @param children The application content.
20
+ * @param meta The root meta (app name, root URL, language, etc.).
21
+ * @returns The app root element wrapping `children`.
22
+ * @example <App app="My App" root="https://example.com/"><Navigation>…</Navigation></App>
23
+ * @see https://dhoulb.github.io/shelving/ui/app/App/App
12
24
  */
13
25
  export function App({ children, ...meta }: AppProps): ReactElement {
14
26
  return <MetaContext value={requireMeta(meta)}>{children}</MetaContext>;
@@ -5,21 +5,63 @@ import { type ColorVariants } from "../style/Color.js";
5
5
  import { type SpaceVariants } from "../style/Space.js";
6
6
  import { type TypographyVariants } from "../style/Typography.js";
7
7
  import type { ChildProps } from "../util/props.js";
8
+ /**
9
+ * CSS class applied to the root `<address>` element of every `Address`.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/ADDRESS_CLASS
12
+ */
8
13
  export declare const ADDRESS_CLASS: string | undefined;
14
+ /**
15
+ * CSS class that styles `<address>` elements when they appear inside `Prose`.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/ADDRESS_PROSE_CLASS
18
+ */
9
19
  export declare const ADDRESS_PROSE_CLASS: string | undefined;
20
+ /**
21
+ * Props for `Address` — colour, space, and typography variants plus required children.
22
+ *
23
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/AddressProps
24
+ */
10
25
  export interface AddressProps extends ColorVariants, SpaceVariants, TypographyVariants, ChildProps {
11
26
  }
27
+ /**
28
+ * Props for `PhysicalAddress` — an optional name and a nullable `AddressData` object.
29
+ *
30
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/PhysicalAddressProps
31
+ */
12
32
  export interface PhysicalAddressProps {
13
33
  name?: Nullish<string>;
14
34
  address: Nullish<AddressData>;
15
35
  }
36
+ /**
37
+ * Props for `EmailAddress` — an optional name and a nullable email string.
38
+ *
39
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/EmailAddressProps
40
+ */
16
41
  export interface EmailAddressProps {
17
42
  name?: Nullish<string>;
18
43
  email: Nullish<string>;
19
44
  }
20
- /** Show any kind of contact data. */
45
+ /**
46
+ * Show any kind of contact data, rendered as an `<address>`.
47
+ *
48
+ * @example <Address><Strong>Acme</Strong>{"\n"}1 Example St</Address>
49
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/Address
50
+ */
21
51
  export declare function Address({ children, ...props }: AddressProps): import("react").JSX.Element;
22
- /** Show an optional `AddressData` object correctly on screen. */
52
+ /**
53
+ * Show an optional `AddressData` object correctly on screen.
54
+ * - Renders an optional `name` in bold, followed by the formatted address; shows "No address" when `address` is empty.
55
+ *
56
+ * @example <PhysicalAddress name="Acme" address={addressData} />
57
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/PhysicalAddress
58
+ */
23
59
  export declare function PhysicalAddress({ name, address }: PhysicalAddressProps): ReactElement;
24
- /** Show an optional email address string correctly on screen. */
60
+ /**
61
+ * Show an optional email address string correctly on screen.
62
+ * - Renders an optional `name` in bold, followed by a `mailto:` link; shows "No email" when `email` is empty.
63
+ *
64
+ * @example <EmailAddress name="Acme" email="hi@example.com" />
65
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/EmailAddress
66
+ */
25
67
  export declare function EmailAddress({ name, email }: EmailAddressProps): ReactElement;
@@ -8,18 +8,45 @@ import { TINT_CLASS } from "../style/Tint.js";
8
8
  import { getTypographyClass } from "../style/Typography.js";
9
9
  import { getClass, getModuleClass } from "../util/css.js";
10
10
  import ADDRESS_CSS from "./Address.module.css";
11
+ /**
12
+ * CSS class applied to the root `<address>` element of every `Address`.
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/ADDRESS_CLASS
15
+ */
11
16
  export const ADDRESS_CLASS = getModuleClass(ADDRESS_CSS, "address");
17
+ /**
18
+ * CSS class that styles `<address>` elements when they appear inside `Prose`.
19
+ *
20
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/ADDRESS_PROSE_CLASS
21
+ */
12
22
  export const ADDRESS_PROSE_CLASS = getModuleClass(ADDRESS_CSS, "prose");
13
- /** Show any kind of contact data. */
23
+ /**
24
+ * Show any kind of contact data, rendered as an `<address>`.
25
+ *
26
+ * @example <Address><Strong>Acme</Strong>{"\n"}1 Example St</Address>
27
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/Address
28
+ */
14
29
  export function Address({ children, ...props }) {
15
30
  return (_jsx("address", { className: getClass(ADDRESS_CLASS, //
16
31
  TINT_CLASS, getColorClass(props), getSpaceClass(props), getTypographyClass(props)), children: children }));
17
32
  }
18
- /** Show an optional `AddressData` object correctly on screen. */
33
+ /**
34
+ * Show an optional `AddressData` object correctly on screen.
35
+ * - Renders an optional `name` in bold, followed by the formatted address; shows "No address" when `address` is empty.
36
+ *
37
+ * @example <PhysicalAddress name="Acme" address={addressData} />
38
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/PhysicalAddress
39
+ */
19
40
  export function PhysicalAddress({ name, address }) {
20
41
  return (_jsxs(Address, { children: [name && _jsx(Strong, { children: name }), name && "\n", address ? formatAddress(address) : _jsx(Small, { children: "No address" })] }));
21
42
  }
22
- /** Show an optional email address string correctly on screen. */
43
+ /**
44
+ * Show an optional email address string correctly on screen.
45
+ * - Renders an optional `name` in bold, followed by a `mailto:` link; shows "No email" when `email` is empty.
46
+ *
47
+ * @example <EmailAddress name="Acme" email="hi@example.com" />
48
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/EmailAddress
49
+ */
23
50
  export function EmailAddress({ name, email }) {
24
51
  return (_jsxs(Address, { children: [name && _jsx(Strong, { children: name }), name && "\n", email ? _jsx("a", { href: `mailto:${email}`, children: email }) : _jsx(Small, { children: "No email" })] }));
25
52
  }
@@ -11,22 +11,53 @@ import { getClass, getModuleClass } from "../util/css.js";
11
11
  import type { ChildProps } from "../util/props.js";
12
12
  import ADDRESS_CSS from "./Address.module.css";
13
13
 
14
+ /**
15
+ * CSS class applied to the root `<address>` element of every `Address`.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/ADDRESS_CLASS
18
+ */
14
19
  export const ADDRESS_CLASS = getModuleClass(ADDRESS_CSS, "address");
20
+
21
+ /**
22
+ * CSS class that styles `<address>` elements when they appear inside `Prose`.
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/ADDRESS_PROSE_CLASS
25
+ */
15
26
  export const ADDRESS_PROSE_CLASS = getModuleClass(ADDRESS_CSS, "prose");
16
27
 
28
+ /**
29
+ * Props for `Address` — colour, space, and typography variants plus required children.
30
+ *
31
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/AddressProps
32
+ */
17
33
  export interface AddressProps extends ColorVariants, SpaceVariants, TypographyVariants, ChildProps {}
18
34
 
35
+ /**
36
+ * Props for `PhysicalAddress` — an optional name and a nullable `AddressData` object.
37
+ *
38
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/PhysicalAddressProps
39
+ */
19
40
  export interface PhysicalAddressProps {
20
41
  name?: Nullish<string>;
21
42
  address: Nullish<AddressData>;
22
43
  }
23
44
 
45
+ /**
46
+ * Props for `EmailAddress` — an optional name and a nullable email string.
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/EmailAddressProps
49
+ */
24
50
  export interface EmailAddressProps {
25
51
  name?: Nullish<string>;
26
52
  email: Nullish<string>;
27
53
  }
28
54
 
29
- /** Show any kind of contact data. */
55
+ /**
56
+ * Show any kind of contact data, rendered as an `<address>`.
57
+ *
58
+ * @example <Address><Strong>Acme</Strong>{"\n"}1 Example St</Address>
59
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/Address
60
+ */
30
61
  export function Address({ children, ...props }: AddressProps) {
31
62
  return (
32
63
  <address
@@ -43,7 +74,13 @@ export function Address({ children, ...props }: AddressProps) {
43
74
  );
44
75
  }
45
76
 
46
- /** Show an optional `AddressData` object correctly on screen. */
77
+ /**
78
+ * Show an optional `AddressData` object correctly on screen.
79
+ * - Renders an optional `name` in bold, followed by the formatted address; shows "No address" when `address` is empty.
80
+ *
81
+ * @example <PhysicalAddress name="Acme" address={addressData} />
82
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/PhysicalAddress
83
+ */
47
84
  export function PhysicalAddress({ name, address }: PhysicalAddressProps): ReactElement {
48
85
  return (
49
86
  <Address>
@@ -54,7 +91,13 @@ export function PhysicalAddress({ name, address }: PhysicalAddressProps): ReactE
54
91
  );
55
92
  }
56
93
 
57
- /** Show an optional email address string correctly on screen. */
94
+ /**
95
+ * Show an optional email address string correctly on screen.
96
+ * - Renders an optional `name` in bold, followed by a `mailto:` link; shows "No email" when `email` is empty.
97
+ *
98
+ * @example <EmailAddress name="Acme" email="hi@example.com" />
99
+ * @see https://dhoulb.github.io/shelving/ui/block/Address/EmailAddress
100
+ */
58
101
  export function EmailAddress({ name, email }: EmailAddressProps): ReactElement {
59
102
  return (
60
103
  <Address>
@@ -4,10 +4,32 @@ import { type SpaceVariants } from "../style/Space.js";
4
4
  import { type TypographyVariants } from "../style/Typography.js";
5
5
  import { type WidthVariants } from "../style/Width.js";
6
6
  import type { OptionalChildProps } from "../util/props.js";
7
+ /**
8
+ * CSS class applied to the root element of every `Block`.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/ui/block/Block/BLOCK_CLASS
11
+ */
7
12
  export declare const BLOCK_CLASS: string | undefined;
13
+ /**
14
+ * Semantic element names a `Block` may render as via its `as` prop.
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/ui/block/Block/BlockElement
17
+ */
8
18
  export type BlockElement = "div" | "section" | "header" | "footer" | "nav" | "aside" | "figure";
19
+ /**
20
+ * Props for `Block` — colour, space, typography, and width variants plus an optional `as` element override.
21
+ *
22
+ * @see https://dhoulb.github.io/shelving/ui/block/Block/BlockProps
23
+ */
9
24
  export interface BlockProps extends ColorVariants, SpaceVariants, TypographyVariants, WidthVariants, OptionalChildProps {
10
25
  as?: BlockElement | undefined;
11
26
  }
12
- /** Plain `<div>` block with block-level spacing. */
27
+ /**
28
+ * Plain `<div>` block with block-level spacing.
29
+ * - Pass `as` to render a different semantic element (`section`, `header`, `footer`, `nav`, `aside`, `figure`).
30
+ *
31
+ * @example <Block><Paragraph>Hello</Paragraph></Block>
32
+ * @example <Block as="aside" narrow><Paragraph>Sidebar</Paragraph></Block>
33
+ * @see https://dhoulb.github.io/shelving/ui/block/Block/Block
34
+ */
13
35
  export declare function Block({ as: Component, children, ...props }: BlockProps): ReactElement;
package/ui/block/Block.js CHANGED
@@ -6,8 +6,20 @@ import { getTypographyClass } from "../style/Typography.js";
6
6
  import { getWidthClass } from "../style/Width.js";
7
7
  import { getClass, getModuleClass } from "../util/css.js";
8
8
  import BLOCK_CSS from "./Block.module.css";
9
+ /**
10
+ * CSS class applied to the root element of every `Block`.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/ui/block/Block/BLOCK_CLASS
13
+ */
9
14
  export const BLOCK_CLASS = getModuleClass(BLOCK_CSS, "block");
10
- /** Plain `<div>` block with block-level spacing. */
15
+ /**
16
+ * Plain `<div>` block with block-level spacing.
17
+ * - Pass `as` to render a different semantic element (`section`, `header`, `footer`, `nav`, `aside`, `figure`).
18
+ *
19
+ * @example <Block><Paragraph>Hello</Paragraph></Block>
20
+ * @example <Block as="aside" narrow><Paragraph>Sidebar</Paragraph></Block>
21
+ * @see https://dhoulb.github.io/shelving/ui/block/Block/Block
22
+ */
11
23
  export function Block({ as: Component = "div", children, ...props }) {
12
24
  return (_jsx(Component, { className: getClass(BLOCK_CLASS, TINT_CLASS, getColorClass(props), getSpaceClass(props), getTypographyClass(props), getWidthClass(props)), children: children }));
13
25
  }