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
@@ -5,11 +5,32 @@ import { getColorClass } from "../style/Color.js";
5
5
  import { getStatusClass } from "../style/Status.js";
6
6
  import { getClass } from "../util/css.js";
7
7
  import MESSAGE_CSS from "./Message.module.css";
8
+ /**
9
+ * Base `className` applied to every `<Message>` paragraph.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/MESSAGE_CLASS
12
+ */
8
13
  export const MESSAGE_CLASS = getClass(MESSAGE_CSS.message);
9
- /** Paragraph with status colours. */
14
+ /**
15
+ * Status-coloured paragraph used for inline feedback messages.
16
+ *
17
+ * - Sets an ARIA `role` of `"alert"` for error/danger statuses, otherwise `"status"`.
18
+ *
19
+ * @param children The message content.
20
+ * @param props Paragraph, colour, and status styling variants.
21
+ * @returns The message paragraph element.
22
+ * @example <Message status="error">Something went wrong</Message>
23
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/Message
24
+ */
10
25
  export function Message({ children, ...props }) {
11
26
  const { status } = props;
12
27
  return (_jsx("p", { role: status === "error" || status === "danger" ? "alert" : "status", className: getClass(PARAGRAPH_CLASS, //
13
28
  MESSAGE_CLASS, getStatusClass(props), getColorClass(props)), children: children }));
14
29
  }
30
+ /**
31
+ * Shared loading `<Message>` element containing the `<Loading>` spinner.
32
+ *
33
+ * @example return isLoading ? LOADING_MESSAGE : <Message>{text}</Message>;
34
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/LOADING_MESSAGE
35
+ */
15
36
  export const LOADING_MESSAGE = _jsx(Message, { status: "loading", children: LOADING });
@@ -5,11 +5,31 @@ import { getStatusClass, type StatusVariants } from "../style/Status.js";
5
5
  import { getClass } from "../util/css.js";
6
6
  import MESSAGE_CSS from "./Message.module.css";
7
7
 
8
+ /**
9
+ * Base `className` applied to every `<Message>` paragraph.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/MESSAGE_CLASS
12
+ */
8
13
  export const MESSAGE_CLASS = getClass(MESSAGE_CSS.message);
9
14
 
15
+ /**
16
+ * Props for `<Message>` — paragraph props plus colour and status styling variants.
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/MessageProps
19
+ */
10
20
  export interface MessageProps extends ParagraphProps, ColorVariants, StatusVariants {}
11
21
 
12
- /** Paragraph with status colours. */
22
+ /**
23
+ * Status-coloured paragraph used for inline feedback messages.
24
+ *
25
+ * - Sets an ARIA `role` of `"alert"` for error/danger statuses, otherwise `"status"`.
26
+ *
27
+ * @param children The message content.
28
+ * @param props Paragraph, colour, and status styling variants.
29
+ * @returns The message paragraph element.
30
+ * @example <Message status="error">Something went wrong</Message>
31
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/Message
32
+ */
13
33
  export function Message({ children, ...props }: MessageProps) {
14
34
  const { status } = props;
15
35
  return (
@@ -27,4 +47,10 @@ export function Message({ children, ...props }: MessageProps) {
27
47
  );
28
48
  }
29
49
 
50
+ /**
51
+ * Shared loading `<Message>` element containing the `<Loading>` spinner.
52
+ *
53
+ * @example return isLoading ? LOADING_MESSAGE : <Message>{text}</Message>;
54
+ * @see https://dhoulb.github.io/shelving/ui/notice/Message/LOADING_MESSAGE
55
+ */
30
56
  export const LOADING_MESSAGE = <Message status="loading">{LOADING}</Message>;
@@ -3,10 +3,34 @@ import { type ColorVariants } from "../style/Color.js";
3
3
  import { type FlexVariants } from "../style/Flex.js";
4
4
  import { type StatusVariants } from "../style/Status.js";
5
5
  import type { OptionalChildProps } from "../util/props.js";
6
+ /**
7
+ * Props for `<Notice>` — flex/colour/status styling variants, optional `children`, and an optional `icon`.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/NoticeProps
10
+ */
6
11
  export interface NoticeProps extends FlexVariants, ColorVariants, StatusVariants, OptionalChildProps {
7
12
  /** Icon for the notice (or `null` or `false` to hide the icon, defaults to `<StatusIcon>`). */
8
13
  icon?: ReactElement | false | undefined;
9
14
  }
15
+ /**
16
+ * Block-level status callout with an icon and message, used to highlight feedback.
17
+ *
18
+ * - Shows a `<StatusIcon>` for the current `status` by default; pass `icon` to override, or `false`/`null` to hide it.
19
+ * - Sets an ARIA `role` of `"alert"` for error/danger statuses, otherwise `"status"`.
20
+ *
21
+ * @param children The notice content.
22
+ * @param icon Optional icon override (`false`/`null` hides it; defaults to the matching `<StatusIcon>`).
23
+ * @param props Flex, colour, and status styling variants.
24
+ * @returns The notice callout element.
25
+ * @example <Notice status="success">Saved your changes</Notice>
26
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/Notice
27
+ */
10
28
  export declare function Notice({ children, //
11
29
  icon, ...props }: NoticeProps): import("react").JSX.Element;
30
+ /**
31
+ * Shared loading `<Notice>` element showing the loading spinner.
32
+ *
33
+ * @example <Suspense fallback={LOADING_NOTICE}>…</Suspense>
34
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/LOADING_NOTICE
35
+ */
12
36
  export declare const LOADING_NOTICE: import("react").JSX.Element;
@@ -6,9 +6,28 @@ import { getFlexClass } from "../style/Flex.js";
6
6
  import { getStatusClass } from "../style/Status.js";
7
7
  import { getClass, getModuleClass } from "../util/css.js";
8
8
  import NOTICE_CSS from "./Notice.module.css";
9
+ /**
10
+ * Block-level status callout with an icon and message, used to highlight feedback.
11
+ *
12
+ * - Shows a `<StatusIcon>` for the current `status` by default; pass `icon` to override, or `false`/`null` to hide it.
13
+ * - Sets an ARIA `role` of `"alert"` for error/danger statuses, otherwise `"status"`.
14
+ *
15
+ * @param children The notice content.
16
+ * @param icon Optional icon override (`false`/`null` hides it; defaults to the matching `<StatusIcon>`).
17
+ * @param props Flex, colour, and status styling variants.
18
+ * @returns The notice callout element.
19
+ * @example <Notice status="success">Saved your changes</Notice>
20
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/Notice
21
+ */
9
22
  export function Notice({ children, //
10
23
  icon, ...props }) {
11
24
  const { status } = props;
12
25
  return (_jsxs("aside", { role: status === "danger" || status === "error" ? "alert" : "status", className: getClass(BLOCK_CLASS, getModuleClass(NOTICE_CSS, "notice", props), getFlexClass(props), getStatusClass(props), getColorClass(props)), children: [icon !== undefined ? icon : status && _jsx(StatusIcon, { status: status }), children] }));
13
26
  }
27
+ /**
28
+ * Shared loading `<Notice>` element showing the loading spinner.
29
+ *
30
+ * @example <Suspense fallback={LOADING_NOTICE}>…</Suspense>
31
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/LOADING_NOTICE
32
+ */
14
33
  export const LOADING_NOTICE = _jsx(Notice, { status: "loading" });
@@ -8,11 +8,29 @@ import { getClass, getModuleClass } from "../util/css.js";
8
8
  import type { OptionalChildProps } from "../util/props.js";
9
9
  import NOTICE_CSS from "./Notice.module.css";
10
10
 
11
+ /**
12
+ * Props for `<Notice>` — flex/colour/status styling variants, optional `children`, and an optional `icon`.
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/NoticeProps
15
+ */
11
16
  export interface NoticeProps extends FlexVariants, ColorVariants, StatusVariants, OptionalChildProps {
12
17
  /** Icon for the notice (or `null` or `false` to hide the icon, defaults to `<StatusIcon>`). */
13
18
  icon?: ReactElement | false | undefined;
14
19
  }
15
20
 
21
+ /**
22
+ * Block-level status callout with an icon and message, used to highlight feedback.
23
+ *
24
+ * - Shows a `<StatusIcon>` for the current `status` by default; pass `icon` to override, or `false`/`null` to hide it.
25
+ * - Sets an ARIA `role` of `"alert"` for error/danger statuses, otherwise `"status"`.
26
+ *
27
+ * @param children The notice content.
28
+ * @param icon Optional icon override (`false`/`null` hides it; defaults to the matching `<StatusIcon>`).
29
+ * @param props Flex, colour, and status styling variants.
30
+ * @returns The notice callout element.
31
+ * @example <Notice status="success">Saved your changes</Notice>
32
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/Notice
33
+ */
16
34
  export function Notice({
17
35
  children, //
18
36
  icon,
@@ -36,4 +54,10 @@ export function Notice({
36
54
  );
37
55
  }
38
56
 
57
+ /**
58
+ * Shared loading `<Notice>` element showing the loading spinner.
59
+ *
60
+ * @example <Suspense fallback={LOADING_NOTICE}>…</Suspense>
61
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notice/LOADING_NOTICE
62
+ */
39
63
  export const LOADING_NOTICE = <Notice status="loading" />;
@@ -5,13 +5,41 @@ type NoticeData<S extends string> = {
5
5
  readonly status?: S | undefined;
6
6
  readonly children?: ReactNode | undefined;
7
7
  };
8
- /** Store a single notice. */
8
+ /**
9
+ * Store holding a single notice's content and status, owned by a `NoticesStore`.
10
+ *
11
+ * - Auto-closes itself a few seconds after opening unless its status is `"loading"`.
12
+ * - Adds itself to its parent `NoticesStore` on construction and removes itself on `close()` or disposal.
13
+ *
14
+ * @example const notice = notices.show("Saved", "success"); notice.close();
15
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore
16
+ */
9
17
  export declare class NoticeStore<S extends string> extends DataStore<NoticeData<S>> {
10
18
  private _notices;
11
19
  readonly key: string;
20
+ /**
21
+ * Create a notice and register it with its parent `NoticesStore`.
22
+ *
23
+ * @param notices The parent store to add this notice to.
24
+ * @param children The notice content (optional).
25
+ * @param status The notice status (optional).
26
+ */
12
27
  constructor(notices: NoticesStore<S>, children?: ReactNode | null, status?: S | undefined);
28
+ /**
29
+ * Update the notice's content and status, resetting its auto-close timer.
30
+ *
31
+ * @param children The new notice content.
32
+ * @param status The new status (defaults to the current status).
33
+ * @example notice.show("Updating…", "loading");
34
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore/show
35
+ */
13
36
  show(children?: ReactNode | undefined, status?: S | undefined): void;
14
- /** Close this notice (permanently). */
37
+ /**
38
+ * Close this notice permanently, removing it from its parent `NoticesStore`.
39
+ *
40
+ * @example notice.close();
41
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore/close
42
+ */
15
43
  close(): void;
16
44
  write(data: NoticeData<S>): void;
17
45
  protected _autoclose(): void;
@@ -5,20 +5,48 @@ import { getRandomKey } from "../../util/random.js";
5
5
  import { Timeout } from "../../util/timeout.js";
6
6
  // Constants.
7
7
  const TEMPORARY_NOTICE_MS = 5 * SECOND; // How long before notices hide themselves.
8
- /** Store a single notice. */
8
+ /**
9
+ * Store holding a single notice's content and status, owned by a `NoticesStore`.
10
+ *
11
+ * - Auto-closes itself a few seconds after opening unless its status is `"loading"`.
12
+ * - Adds itself to its parent `NoticesStore` on construction and removes itself on `close()` or disposal.
13
+ *
14
+ * @example const notice = notices.show("Saved", "success"); notice.close();
15
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore
16
+ */
9
17
  export class NoticeStore extends DataStore {
10
18
  _notices;
11
19
  key = getRandomKey();
20
+ /**
21
+ * Create a notice and register it with its parent `NoticesStore`.
22
+ *
23
+ * @param notices The parent store to add this notice to.
24
+ * @param children The notice content (optional).
25
+ * @param status The notice status (optional).
26
+ */
12
27
  constructor(notices, children, status) {
13
28
  super({ status, children });
14
29
  this._notices = notices;
15
30
  notices.add(this);
16
31
  this._autoclose();
17
32
  }
33
+ /**
34
+ * Update the notice's content and status, resetting its auto-close timer.
35
+ *
36
+ * @param children The new notice content.
37
+ * @param status The new status (defaults to the current status).
38
+ * @example notice.show("Updating…", "loading");
39
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore/show
40
+ */
18
41
  show(children, status = this.value.status) {
19
42
  this.value = { children, status };
20
43
  }
21
- /** Close this notice (permanently). */
44
+ /**
45
+ * Close this notice permanently, removing it from its parent `NoticesStore`.
46
+ *
47
+ * @example notice.close();
48
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore/close
49
+ */
22
50
  close() {
23
51
  this._notices.delete(this);
24
52
  }
@@ -14,12 +14,27 @@ type NoticeData<S extends string> = {
14
14
  readonly children?: ReactNode | undefined;
15
15
  };
16
16
 
17
- /** Store a single notice. */
17
+ /**
18
+ * Store holding a single notice's content and status, owned by a `NoticesStore`.
19
+ *
20
+ * - Auto-closes itself a few seconds after opening unless its status is `"loading"`.
21
+ * - Adds itself to its parent `NoticesStore` on construction and removes itself on `close()` or disposal.
22
+ *
23
+ * @example const notice = notices.show("Saved", "success"); notice.close();
24
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore
25
+ */
18
26
  export class NoticeStore<S extends string> extends DataStore<NoticeData<S>> {
19
27
  private _notices: NoticesStore<S>;
20
28
 
21
29
  readonly key = getRandomKey();
22
30
 
31
+ /**
32
+ * Create a notice and register it with its parent `NoticesStore`.
33
+ *
34
+ * @param notices The parent store to add this notice to.
35
+ * @param children The notice content (optional).
36
+ * @param status The notice status (optional).
37
+ */
23
38
  constructor(notices: NoticesStore<S>, children?: ReactNode | null, status?: S | undefined) {
24
39
  super({ status, children });
25
40
  this._notices = notices;
@@ -27,11 +42,24 @@ export class NoticeStore<S extends string> extends DataStore<NoticeData<S>> {
27
42
  this._autoclose();
28
43
  }
29
44
 
45
+ /**
46
+ * Update the notice's content and status, resetting its auto-close timer.
47
+ *
48
+ * @param children The new notice content.
49
+ * @param status The new status (defaults to the current status).
50
+ * @example notice.show("Updating…", "loading");
51
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore/show
52
+ */
30
53
  show(children?: ReactNode | undefined, status: S | undefined = this.value.status): void {
31
54
  this.value = { children, status };
32
55
  }
33
56
 
34
- /** Close this notice (permanently). */
57
+ /**
58
+ * Close this notice permanently, removing it from its parent `NoticesStore`.
59
+ *
60
+ * @example notice.close();
61
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticeStore/NoticeStore/close
62
+ */
35
63
  close() {
36
64
  this._notices.delete(this);
37
65
  }
@@ -1,10 +1,20 @@
1
1
  import { type ReactElement } from "react";
2
2
  import { type FlexVariants } from "../style/Flex.js";
3
+ /**
4
+ * Props for `<Notices>` — flex styling variants for the notices container.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notices/NoticesProps
7
+ */
3
8
  export interface NoticesProps extends FlexVariants {
4
9
  }
5
10
  /**
6
- * Output the global list of notices.
11
+ * Render the global list of notices and subscribe to incoming `"notice"` events.
7
12
  * - Listens for `"notice"` events on `window` (or that bubble up to `window`) and shows them in the global notice list.
8
13
  * - This is how e.g. `<Button>` and `<FormNotify>` components send notices into the global list.
14
+ *
15
+ * @param props Flex styling variants for the container.
16
+ * @returns The notices container element.
17
+ * @example <Notices column />
18
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notices/Notices
9
19
  */
10
20
  export declare function Notices(props: NoticesProps): ReactElement;
@@ -9,9 +9,14 @@ import NOTICES_CSS from "./Notices.module.css";
9
9
  import { NOTICES } from "./NoticesStore.js";
10
10
  const NOTICES_CLASS = getModuleClass(NOTICES_CSS, "notices");
11
11
  /**
12
- * Output the global list of notices.
12
+ * Render the global list of notices and subscribe to incoming `"notice"` events.
13
13
  * - Listens for `"notice"` events on `window` (or that bubble up to `window`) and shows them in the global notice list.
14
14
  * - This is how e.g. `<Button>` and `<FormNotify>` components send notices into the global list.
15
+ *
16
+ * @param props Flex styling variants for the container.
17
+ * @returns The notices container element.
18
+ * @example <Notices column />
19
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notices/Notices
15
20
  */
16
21
  export function Notices(props) {
17
22
  const notices = useStore(NOTICES).value;
@@ -9,12 +9,22 @@ import { NOTICES } from "./NoticesStore.js";
9
9
 
10
10
  const NOTICES_CLASS = getModuleClass(NOTICES_CSS, "notices");
11
11
 
12
+ /**
13
+ * Props for `<Notices>` — flex styling variants for the notices container.
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notices/NoticesProps
16
+ */
12
17
  export interface NoticesProps extends FlexVariants {}
13
18
 
14
19
  /**
15
- * Output the global list of notices.
20
+ * Render the global list of notices and subscribe to incoming `"notice"` events.
16
21
  * - Listens for `"notice"` events on `window` (or that bubble up to `window`) and shows them in the global notice list.
17
22
  * - This is how e.g. `<Button>` and `<FormNotify>` components send notices into the global list.
23
+ *
24
+ * @param props Flex styling variants for the container.
25
+ * @returns The notices container element.
26
+ * @example <Notices column />
27
+ * @see https://dhoulb.github.io/shelving/ui/notice/Notices/Notices
18
28
  */
19
29
  export function Notices(props: NoticesProps): ReactElement {
20
30
  const notices = useStore(NOTICES).value;
@@ -1,11 +1,31 @@
1
1
  import type { ReactNode } from "react";
2
2
  import { ArrayStore } from "../../store/ArrayStore.js";
3
3
  import { NoticeStore } from "./NoticeStore.js";
4
- /** Store a list of notices. */
4
+ /**
5
+ * Store holding the live list of `NoticeStore` notices currently shown.
6
+ *
7
+ * - Disposing the store disposes (and closes) every notice it contains.
8
+ *
9
+ * @example const notices = new NoticesStore(); notices.show("Hello");
10
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NoticesStore
11
+ */
5
12
  export declare class NoticesStore<S extends string> extends ArrayStore<NoticeStore<S>> {
6
- /** Show a notice with an optional status. */
13
+ /**
14
+ * Create and show a new notice, adding it to this list.
15
+ *
16
+ * @param children The notice content (optional).
17
+ * @param status The notice status (optional).
18
+ * @returns The newly created `NoticeStore`.
19
+ * @example notices.show("Saved your changes", "success");
20
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NoticesStore/show
21
+ */
7
22
  show(children?: ReactNode | undefined, status?: S | undefined): NoticeStore<S>;
8
23
  [Symbol.asyncDispose](): Promise<void>;
9
24
  }
10
- /** Create a global list of shown notices allowing any of the default statuses. */
25
+ /**
26
+ * Global `NoticesStore` shown by `<Notices>`, accepting any of the default statuses.
27
+ *
28
+ * @example NOTICES.show("Saved your changes", "success");
29
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NOTICES
30
+ */
11
31
  export declare const NOTICES: NoticesStore<"danger" | "error" | "info" | "loading" | "success" | "warning">;
@@ -1,9 +1,24 @@
1
1
  import { ArrayStore } from "../../store/ArrayStore.js";
2
2
  import { awaitDispose } from "../../util/dispose.js";
3
3
  import { NoticeStore } from "./NoticeStore.js";
4
- /** Store a list of notices. */
4
+ /**
5
+ * Store holding the live list of `NoticeStore` notices currently shown.
6
+ *
7
+ * - Disposing the store disposes (and closes) every notice it contains.
8
+ *
9
+ * @example const notices = new NoticesStore(); notices.show("Hello");
10
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NoticesStore
11
+ */
5
12
  export class NoticesStore extends ArrayStore {
6
- /** Show a notice with an optional status. */
13
+ /**
14
+ * Create and show a new notice, adding it to this list.
15
+ *
16
+ * @param children The notice content (optional).
17
+ * @param status The notice status (optional).
18
+ * @returns The newly created `NoticeStore`.
19
+ * @example notices.show("Saved your changes", "success");
20
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NoticesStore/show
21
+ */
7
22
  show(children, status) {
8
23
  return new NoticeStore(this, children, status);
9
24
  }
@@ -12,5 +27,10 @@ export class NoticesStore extends ArrayStore {
12
27
  super[Symbol.asyncDispose]());
13
28
  }
14
29
  }
15
- /** Create a global list of shown notices allowing any of the default statuses. */
30
+ /**
31
+ * Global `NoticesStore` shown by `<Notices>`, accepting any of the default statuses.
32
+ *
33
+ * @example NOTICES.show("Saved your changes", "success");
34
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NOTICES
35
+ */
16
36
  export const NOTICES = new NoticesStore();
@@ -4,9 +4,24 @@ import { awaitDispose } from "../../util/dispose.js";
4
4
  import type { Status } from "../style/Status.js";
5
5
  import { NoticeStore } from "./NoticeStore.js";
6
6
 
7
- /** Store a list of notices. */
7
+ /**
8
+ * Store holding the live list of `NoticeStore` notices currently shown.
9
+ *
10
+ * - Disposing the store disposes (and closes) every notice it contains.
11
+ *
12
+ * @example const notices = new NoticesStore(); notices.show("Hello");
13
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NoticesStore
14
+ */
8
15
  export class NoticesStore<S extends string> extends ArrayStore<NoticeStore<S>> {
9
- /** Show a notice with an optional status. */
16
+ /**
17
+ * Create and show a new notice, adding it to this list.
18
+ *
19
+ * @param children The notice content (optional).
20
+ * @param status The notice status (optional).
21
+ * @returns The newly created `NoticeStore`.
22
+ * @example notices.show("Saved your changes", "success");
23
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NoticesStore/show
24
+ */
10
25
  show(children?: ReactNode | undefined, status?: S | undefined): NoticeStore<S> {
11
26
  return new NoticeStore(this, children, status);
12
27
  }
@@ -19,5 +34,10 @@ export class NoticesStore<S extends string> extends ArrayStore<NoticeStore<S>> {
19
34
  }
20
35
  }
21
36
 
22
- /** Create a global list of shown notices allowing any of the default statuses. */
37
+ /**
38
+ * Global `NoticesStore` shown by `<Notices>`, accepting any of the default statuses.
39
+ *
40
+ * @example NOTICES.show("Saved your changes", "success");
41
+ * @see https://dhoulb.github.io/shelving/ui/notice/NoticesStore/NOTICES
42
+ */
23
43
  export const NOTICES = new NoticesStore<Status>();
package/ui/page/HTML.d.ts CHANGED
@@ -1,10 +1,21 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { PossibleMeta } from "../util/index.js";
3
3
  import type { ChildProps } from "../util/props.js";
4
+ /**
5
+ * Props for `<HTML>` — initial `Meta` (language/root/app) plus the page `children`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/page/HTML/HTMLProps
8
+ */
4
9
  export interface HTMLProps extends PossibleMeta, ChildProps {
5
10
  }
6
11
  /**
7
- * Output a `<html>` element wrapping `<head>` (via `<Head>`) and `<body>`.
8
- * - `<Head>` renders the literal `<head>` with `<base>` and other shell-level metadata; per-page hoistable elements (title, meta, links, stylesheets, scripts) come from `<PageHead>` inside `<Page>` and are hoisted into this `<head>` by React 19.
12
+ * Render the full `<html>` document shell wrapping `<head>` and `<body>`.
13
+ * - Emits the literal `<head>` with `<base>` and other shell-level metadata; per-page hoistable elements (title, meta, links, stylesheets, scripts) come from `<Head>` inside `<Page>` and are hoisted into this `<head>` by React 19.
14
+ *
15
+ * @param children The document body content.
16
+ * @param meta Initial meta (language/root/app) merged with the surrounding `<Meta>` context.
17
+ * @returns The `<html>` document element.
18
+ * @example <HTML app="My App" root="https://example.com/"><App /></HTML>
19
+ * @see https://dhoulb.github.io/shelving/ui/page/HTML/HTML
9
20
  */
10
21
  export declare function HTML({ children, ...meta }: HTMLProps): ReactElement;
package/ui/page/HTML.js CHANGED
@@ -1,8 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { MetaContext, requireMeta } from "../misc/MetaContext.js";
3
3
  /**
4
- * Output a `<html>` element wrapping `<head>` (via `<Head>`) and `<body>`.
5
- * - `<Head>` renders the literal `<head>` with `<base>` and other shell-level metadata; per-page hoistable elements (title, meta, links, stylesheets, scripts) come from `<PageHead>` inside `<Page>` and are hoisted into this `<head>` by React 19.
4
+ * Render the full `<html>` document shell wrapping `<head>` and `<body>`.
5
+ * - Emits the literal `<head>` with `<base>` and other shell-level metadata; per-page hoistable elements (title, meta, links, stylesheets, scripts) come from `<Head>` inside `<Page>` and are hoisted into this `<head>` by React 19.
6
+ *
7
+ * @param children The document body content.
8
+ * @param meta Initial meta (language/root/app) merged with the surrounding `<Meta>` context.
9
+ * @returns The `<html>` document element.
10
+ * @example <HTML app="My App" root="https://example.com/"><App /></HTML>
11
+ * @see https://dhoulb.github.io/shelving/ui/page/HTML/HTML
6
12
  */
7
13
  export function HTML({ children, ...meta }) {
8
14
  const merged = requireMeta(meta);
package/ui/page/HTML.tsx CHANGED
@@ -3,11 +3,22 @@ import { MetaContext, requireMeta } from "../misc/MetaContext.js";
3
3
  import type { PossibleMeta } from "../util/index.js";
4
4
  import type { ChildProps } from "../util/props.js";
5
5
 
6
+ /**
7
+ * Props for `<HTML>` — initial `Meta` (language/root/app) plus the page `children`.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/ui/page/HTML/HTMLProps
10
+ */
6
11
  export interface HTMLProps extends PossibleMeta, ChildProps {}
7
12
 
8
13
  /**
9
- * Output a `<html>` element wrapping `<head>` (via `<Head>`) and `<body>`.
10
- * - `<Head>` renders the literal `<head>` with `<base>` and other shell-level metadata; per-page hoistable elements (title, meta, links, stylesheets, scripts) come from `<PageHead>` inside `<Page>` and are hoisted into this `<head>` by React 19.
14
+ * Render the full `<html>` document shell wrapping `<head>` and `<body>`.
15
+ * - Emits the literal `<head>` with `<base>` and other shell-level metadata; per-page hoistable elements (title, meta, links, stylesheets, scripts) come from `<Head>` inside `<Page>` and are hoisted into this `<head>` by React 19.
16
+ *
17
+ * @param children The document body content.
18
+ * @param meta Initial meta (language/root/app) merged with the surrounding `<Meta>` context.
19
+ * @returns The `<html>` document element.
20
+ * @example <HTML app="My App" root="https://example.com/"><App /></HTML>
21
+ * @see https://dhoulb.github.io/shelving/ui/page/HTML/HTML
11
22
  */
12
23
  export function HTML({ children, ...meta }: HTMLProps): ReactElement {
13
24
  const merged = requireMeta(meta);
package/ui/page/Head.d.ts CHANGED
@@ -1,8 +1,12 @@
1
1
  import { type ReactElement } from "react";
2
2
  /**
3
- * Per-page meta tags plus history navigation.
3
+ * Emit the current page's head metadata and sync browser history to its URL.
4
4
  * - Emits hoistable head elements (title, meta, links, stylesheets, scripts) inline; React 19 hoists each one into the document `<head>`.
5
5
  * - Does not render `<base>` (not hoistable — that lives in `<Head>` in the `<HTML>` shell component).
6
6
  * - Updates `window.history` to match the page URL.
7
+ *
8
+ * @returns The hoistable head elements derived from the current `<Meta>` context.
9
+ * @example <Page title="Settings"><Head />…</Page>
10
+ * @see https://dhoulb.github.io/shelving/ui/page/Head/Head
7
11
  */
8
12
  export declare function Head(): ReactElement;
package/ui/page/Head.js CHANGED
@@ -6,10 +6,14 @@ import { joinTitles } from "../util/meta.js";
6
6
  /** Meta tags with a capital first letter and hyphens, e.g. `Content-Security-Policy` or `Accept`, are `http-equiv=""` tags. */
7
7
  const R_HTTP_EQUIV = /^[A-Z][a-zA-Z0-9]*(-[A-Z][a-zA-Z0-9]*)*$/;
8
8
  /**
9
- * Per-page meta tags plus history navigation.
9
+ * Emit the current page's head metadata and sync browser history to its URL.
10
10
  * - Emits hoistable head elements (title, meta, links, stylesheets, scripts) inline; React 19 hoists each one into the document `<head>`.
11
11
  * - Does not render `<base>` (not hoistable — that lives in `<Head>` in the `<HTML>` shell component).
12
12
  * - Updates `window.history` to match the page URL.
13
+ *
14
+ * @returns The hoistable head elements derived from the current `<Meta>` context.
15
+ * @example <Page title="Settings"><Head />…</Page>
16
+ * @see https://dhoulb.github.io/shelving/ui/page/Head/Head
13
17
  */
14
18
  export function Head() {
15
19
  const meta = requireMeta();
package/ui/page/Head.tsx CHANGED
@@ -8,10 +8,14 @@ import { joinTitles, type MetaAssets, type MetaLinks, type MetaTags } from "../u
8
8
  const R_HTTP_EQUIV = /^[A-Z][a-zA-Z0-9]*(-[A-Z][a-zA-Z0-9]*)*$/;
9
9
 
10
10
  /**
11
- * Per-page meta tags plus history navigation.
11
+ * Emit the current page's head metadata and sync browser history to its URL.
12
12
  * - Emits hoistable head elements (title, meta, links, stylesheets, scripts) inline; React 19 hoists each one into the document `<head>`.
13
13
  * - Does not render `<base>` (not hoistable — that lives in `<Head>` in the `<HTML>` shell component).
14
14
  * - Updates `window.history` to match the page URL.
15
+ *
16
+ * @returns The hoistable head elements derived from the current `<Meta>` context.
17
+ * @example <Page title="Settings"><Head />…</Page>
18
+ * @see https://dhoulb.github.io/shelving/ui/page/Head/Head
15
19
  */
16
20
  export function Head(): ReactElement {
17
21
  const meta = requireMeta();