shelving 1.236.0 → 1.236.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
package/ui/page/Page.d.ts CHANGED
@@ -1,11 +1,22 @@
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 `<Page>` — per-page `Meta` (title, description, etc.) plus the page `children`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/page/Page/PageProps
8
+ */
4
9
  export interface PageProps extends PossibleMeta, ChildProps {
5
10
  }
6
11
  /**
7
- * Component for a single page (or screen) within an app.
12
+ * Wrap a single page (or screen) within an app, applying its meta and head tags.
8
13
  * - Sets the document title and other head metadata via `<Head>`, which emits hoistable tags inline; React 19 hoists each one into the document `<head>`. `<base>` is not emitted here — it lives in the `<HTML>` shell's `<Head>`.
9
14
  * - Also updates `window.history` to match the page URL.
15
+ *
16
+ * @param children The page content.
17
+ * @param meta Per-page meta (title, description, etc.) merged with the surrounding `<Meta>` context.
18
+ * @returns The page element with its meta applied.
19
+ * @example <Page title="Settings"><SettingsForm /></Page>
20
+ * @see https://dhoulb.github.io/shelving/ui/page/Page/Page
10
21
  */
11
22
  export declare function Page({ children, ...meta }: PageProps): ReactElement;
package/ui/page/Page.js CHANGED
@@ -2,9 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { MetaContext, requireMeta } from "../misc/MetaContext.js";
3
3
  import { Head } from "./Head.js";
4
4
  /**
5
- * Component for a single page (or screen) within an app.
5
+ * Wrap a single page (or screen) within an app, applying its meta and head tags.
6
6
  * - Sets the document title and other head metadata via `<Head>`, which emits hoistable tags inline; React 19 hoists each one into the document `<head>`. `<base>` is not emitted here — it lives in the `<HTML>` shell's `<Head>`.
7
7
  * - Also updates `window.history` to match the page URL.
8
+ *
9
+ * @param children The page content.
10
+ * @param meta Per-page meta (title, description, etc.) merged with the surrounding `<Meta>` context.
11
+ * @returns The page element with its meta applied.
12
+ * @example <Page title="Settings"><SettingsForm /></Page>
13
+ * @see https://dhoulb.github.io/shelving/ui/page/Page/Page
8
14
  */
9
15
  export function Page({ children, ...meta }) {
10
16
  const merged = requireMeta(meta);
package/ui/page/Page.tsx CHANGED
@@ -4,12 +4,23 @@ import type { PossibleMeta } from "../util/index.js";
4
4
  import type { ChildProps } from "../util/props.js";
5
5
  import { Head } from "./Head.js";
6
6
 
7
+ /**
8
+ * Props for `<Page>` — per-page `Meta` (title, description, etc.) plus the page `children`.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/ui/page/Page/PageProps
11
+ */
7
12
  export interface PageProps extends PossibleMeta, ChildProps {}
8
13
 
9
14
  /**
10
- * Component for a single page (or screen) within an app.
15
+ * Wrap a single page (or screen) within an app, applying its meta and head tags.
11
16
  * - Sets the document title and other head metadata via `<Head>`, which emits hoistable tags inline; React 19 hoists each one into the document `<head>`. `<base>` is not emitted here — it lives in the `<HTML>` shell's `<Head>`.
12
17
  * - Also updates `window.history` to match the page URL.
18
+ *
19
+ * @param children The page content.
20
+ * @param meta Per-page meta (title, description, etc.) merged with the surrounding `<Meta>` context.
21
+ * @returns The page element with its meta applied.
22
+ * @example <Page title="Settings"><SettingsForm /></Page>
23
+ * @see https://dhoulb.github.io/shelving/ui/page/Page/Page
13
24
  */
14
25
  export function Page({ children, ...meta }: PageProps): ReactElement {
15
26
  const merged = requireMeta(meta);
@@ -1,6 +1,11 @@
1
1
  import { type ReactElement } from "react";
2
2
  import type { PossibleMeta } from "../util/index.js";
3
3
  import type { OptionalChildProps } from "../util/props.js";
4
+ /**
5
+ * Props for `<Navigation>` — initial `Meta` (url/base) plus optional `children`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/router/Navigation/NavigationProps
8
+ */
4
9
  export interface NavigationProps extends PossibleMeta, OptionalChildProps {
5
10
  }
6
11
  /**
@@ -13,5 +18,11 @@ export interface NavigationProps extends PossibleMeta, OptionalChildProps {
13
18
  * Exactly one `<Navigation>` per app — nested routers share this single store.
14
19
  *
15
20
  * TODO: switch click/popstate handling to the browser Navigation API when broadly supported.
21
+ *
22
+ * @param children The app subtree to provide navigation to.
23
+ * @param meta Initial meta (url/base) merged with the surrounding `<Meta>` context.
24
+ * @returns The navigation provider wrapping `children`.
25
+ * @example <Navigation><App /></Navigation>
26
+ * @see https://dhoulb.github.io/shelving/ui/router/Navigation/Navigation
16
27
  */
17
28
  export declare function Navigation({ children, ...meta }: NavigationProps): ReactElement;
@@ -15,6 +15,12 @@ import { NavigationStore } from "./NavigationStore.js";
15
15
  * Exactly one `<Navigation>` per app — nested routers share this single store.
16
16
  *
17
17
  * TODO: switch click/popstate handling to the browser Navigation API when broadly supported.
18
+ *
19
+ * @param children The app subtree to provide navigation to.
20
+ * @param meta Initial meta (url/base) merged with the surrounding `<Meta>` context.
21
+ * @returns The navigation provider wrapping `children`.
22
+ * @example <Navigation><App /></Navigation>
23
+ * @see https://dhoulb.github.io/shelving/ui/router/Navigation/Navigation
18
24
  */
19
25
  export function Navigation({ children, ...meta }) {
20
26
  const { url, root, ...merged } = requireMeta(meta);
@@ -7,6 +7,11 @@ import type { OptionalChildProps } from "../util/props.js";
7
7
  import { NavigationContext } from "./NavigationContext.js";
8
8
  import { NavigationStore } from "./NavigationStore.js";
9
9
 
10
+ /**
11
+ * Props for `<Navigation>` — initial `Meta` (url/base) plus optional `children`.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/ui/router/Navigation/NavigationProps
14
+ */
10
15
  export interface NavigationProps extends PossibleMeta, OptionalChildProps {}
11
16
 
12
17
  /**
@@ -19,6 +24,12 @@ export interface NavigationProps extends PossibleMeta, OptionalChildProps {}
19
24
  * Exactly one `<Navigation>` per app — nested routers share this single store.
20
25
  *
21
26
  * TODO: switch click/popstate handling to the browser Navigation API when broadly supported.
27
+ *
28
+ * @param children The app subtree to provide navigation to.
29
+ * @param meta Initial meta (url/base) merged with the surrounding `<Meta>` context.
30
+ * @returns The navigation provider wrapping `children`.
31
+ * @example <Navigation><App /></Navigation>
32
+ * @see https://dhoulb.github.io/shelving/ui/router/Navigation/Navigation
22
33
  */
23
34
  export function Navigation({ children, ...meta }: NavigationProps): ReactElement {
24
35
  const { url, root, ...merged } = requireMeta(meta);
@@ -1,5 +1,17 @@
1
1
  import type { NavigationStore } from "./NavigationStore.js";
2
- /** Context that stores the current `NavigationStore`. */
2
+ /**
3
+ * React context holding the current `NavigationStore`, provided by `<Navigation>`.
4
+ *
5
+ * @example <NavigationContext value={store}>…</NavigationContext>
6
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/NavigationContext
7
+ */
3
8
  export declare const NavigationContext: import("react").Context<NavigationStore | undefined>;
4
- /** Require the current navigation store in a component. */
9
+ /**
10
+ * Read the current `NavigationStore` from context, throwing if used outside `<Navigation>`.
11
+ *
12
+ * @returns The current `NavigationStore`.
13
+ * @throws RequiredError If no `<Navigation>` provider is present above.
14
+ * @example const nav = requireNavigation(); nav.forward("/home");
15
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/requireNavigation
16
+ */
5
17
  export declare function requireNavigation(): NavigationStore;
@@ -1,9 +1,21 @@
1
1
  import { createContext } from "react";
2
2
  import { requireContext } from "../util/context.js";
3
- /** Context that stores the current `NavigationStore`. */
3
+ /**
4
+ * React context holding the current `NavigationStore`, provided by `<Navigation>`.
5
+ *
6
+ * @example <NavigationContext value={store}>…</NavigationContext>
7
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/NavigationContext
8
+ */
4
9
  export const NavigationContext = createContext(undefined);
5
10
  NavigationContext.displayName = "NavigationContext";
6
- /** Require the current navigation store in a component. */
11
+ /**
12
+ * Read the current `NavigationStore` from context, throwing if used outside `<Navigation>`.
13
+ *
14
+ * @returns The current `NavigationStore`.
15
+ * @throws RequiredError If no `<Navigation>` provider is present above.
16
+ * @example const nav = requireNavigation(); nav.forward("/home");
17
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/requireNavigation
18
+ */
7
19
  export function requireNavigation() {
8
20
  return requireContext(NavigationContext, requireNavigation);
9
21
  }
@@ -2,11 +2,23 @@ import { createContext } from "react";
2
2
  import { requireContext } from "../util/context.js";
3
3
  import type { NavigationStore } from "./NavigationStore.js";
4
4
 
5
- /** Context that stores the current `NavigationStore`. */
5
+ /**
6
+ * React context holding the current `NavigationStore`, provided by `<Navigation>`.
7
+ *
8
+ * @example <NavigationContext value={store}>…</NavigationContext>
9
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/NavigationContext
10
+ */
6
11
  export const NavigationContext = createContext<NavigationStore | undefined>(undefined);
7
12
  NavigationContext.displayName = "NavigationContext";
8
13
 
9
- /** Require the current navigation store in a component. */
14
+ /**
15
+ * Read the current `NavigationStore` from context, throwing if used outside `<Navigation>`.
16
+ *
17
+ * @returns The current `NavigationStore`.
18
+ * @throws RequiredError If no `<Navigation>` provider is present above.
19
+ * @example const nav = requireNavigation(); nav.forward("/home");
20
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationContext/requireNavigation
21
+ */
10
22
  export function requireNavigation(): NavigationStore {
11
23
  return requireContext(NavigationContext, requireNavigation);
12
24
  }
@@ -1,11 +1,39 @@
1
1
  import { URLStore } from "../../store/URLStore.js";
2
2
  import { type PossibleURL } from "../../util/url.js";
3
3
  /**
4
- * Store the current navigation state (URL only).
4
+ * Store holding the current navigation URL and driving browser history.
5
+ *
6
+ * - Extends `URLStore`; the current location is its `value`.
7
+ * - `forward()` pushes a new history entry; `redirect()` replaces the current one.
5
8
  * - TODO: switch to the browser Navigation API when broadly supported.
9
+ *
10
+ * @example const nav = new NavigationStore("/"); nav.forward("/home");
11
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore
6
12
  */
7
13
  export declare class NavigationStore extends URLStore {
14
+ /**
15
+ * Create a new `NavigationStore`.
16
+ *
17
+ * @param url The initial URL (defaults to `"/"`).
18
+ * @param base Optional base URL that relative navigations resolve against.
19
+ */
8
20
  constructor(url?: PossibleURL, base?: PossibleURL);
21
+ /**
22
+ * Navigate forward to a URL, pushing a new browser history entry.
23
+ *
24
+ * @param possible The destination URL, resolved against `base`.
25
+ * @throws RequiredError If `possible` cannot be resolved to a valid URL.
26
+ * @example nav.forward("/settings");
27
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/forward
28
+ */
9
29
  forward(possible: PossibleURL): void;
30
+ /**
31
+ * Redirect to a URL, replacing the current browser history entry.
32
+ *
33
+ * @param possible The destination URL, resolved against `base`.
34
+ * @throws RequiredError If `possible` cannot be resolved to a valid URL.
35
+ * @example nav.redirect("/login");
36
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/redirect
37
+ */
10
38
  redirect(possible: PossibleURL): void;
11
39
  }
@@ -1,17 +1,45 @@
1
1
  import { URLStore } from "../../store/URLStore.js";
2
2
  import { requireURL } from "../../util/url.js";
3
3
  /**
4
- * Store the current navigation state (URL only).
4
+ * Store holding the current navigation URL and driving browser history.
5
+ *
6
+ * - Extends `URLStore`; the current location is its `value`.
7
+ * - `forward()` pushes a new history entry; `redirect()` replaces the current one.
5
8
  * - TODO: switch to the browser Navigation API when broadly supported.
9
+ *
10
+ * @example const nav = new NavigationStore("/"); nav.forward("/home");
11
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore
6
12
  */
7
13
  export class NavigationStore extends URLStore {
14
+ /**
15
+ * Create a new `NavigationStore`.
16
+ *
17
+ * @param url The initial URL (defaults to `"/"`).
18
+ * @param base Optional base URL that relative navigations resolve against.
19
+ */
8
20
  constructor(url = "/", base) {
9
21
  super(url, base);
10
22
  }
23
+ /**
24
+ * Navigate forward to a URL, pushing a new browser history entry.
25
+ *
26
+ * @param possible The destination URL, resolved against `base`.
27
+ * @throws RequiredError If `possible` cannot be resolved to a valid URL.
28
+ * @example nav.forward("/settings");
29
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/forward
30
+ */
11
31
  forward(possible) {
12
32
  this.value = requireURL(possible, this.base, this.forward);
13
33
  window.history.pushState(null, "", this.value);
14
34
  }
35
+ /**
36
+ * Redirect to a URL, replacing the current browser history entry.
37
+ *
38
+ * @param possible The destination URL, resolved against `base`.
39
+ * @throws RequiredError If `possible` cannot be resolved to a valid URL.
40
+ * @example nav.redirect("/login");
41
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/redirect
42
+ */
15
43
  redirect(possible) {
16
44
  this.value = requireURL(possible, this.base, this.redirect);
17
45
  window.history.replaceState(null, "", this.value);
@@ -2,19 +2,47 @@ import { URLStore } from "../../store/URLStore.js";
2
2
  import { type PossibleURL, requireURL } from "../../util/url.js";
3
3
 
4
4
  /**
5
- * Store the current navigation state (URL only).
5
+ * Store holding the current navigation URL and driving browser history.
6
+ *
7
+ * - Extends `URLStore`; the current location is its `value`.
8
+ * - `forward()` pushes a new history entry; `redirect()` replaces the current one.
6
9
  * - TODO: switch to the browser Navigation API when broadly supported.
10
+ *
11
+ * @example const nav = new NavigationStore("/"); nav.forward("/home");
12
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore
7
13
  */
8
14
  export class NavigationStore extends URLStore {
15
+ /**
16
+ * Create a new `NavigationStore`.
17
+ *
18
+ * @param url The initial URL (defaults to `"/"`).
19
+ * @param base Optional base URL that relative navigations resolve against.
20
+ */
9
21
  constructor(url: PossibleURL = "/", base?: PossibleURL) {
10
22
  super(url, base);
11
23
  }
12
24
 
25
+ /**
26
+ * Navigate forward to a URL, pushing a new browser history entry.
27
+ *
28
+ * @param possible The destination URL, resolved against `base`.
29
+ * @throws RequiredError If `possible` cannot be resolved to a valid URL.
30
+ * @example nav.forward("/settings");
31
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/forward
32
+ */
13
33
  forward(possible: PossibleURL): void {
14
34
  this.value = requireURL(possible, this.base, this.forward);
15
35
  window.history.pushState(null, "", this.value);
16
36
  }
17
37
 
38
+ /**
39
+ * Redirect to a URL, replacing the current browser history entry.
40
+ *
41
+ * @param possible The destination URL, resolved against `base`.
42
+ * @throws RequiredError If `possible` cannot be resolved to a valid URL.
43
+ * @example nav.redirect("/login");
44
+ * @see https://dhoulb.github.io/shelving/ui/router/NavigationStore/NavigationStore/redirect
45
+ */
18
46
  redirect(possible: PossibleURL): void {
19
47
  this.value = requireURL(possible, this.base, this.redirect);
20
48
  window.history.replaceState(null, "", this.value);
@@ -1,6 +1,11 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { PossibleMeta } from "../util/meta.js";
3
3
  import type { Routes } from "./Routes.js";
4
+ /**
5
+ * Props for `<Router>` — the `routes` to match against plus an optional `fallback`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/router/Router/RouterProps
8
+ */
4
9
  export interface RouterProps extends PossibleMeta {
5
10
  /** List of routes for the router to match against. */
6
11
  readonly routes: Routes;
@@ -18,6 +23,12 @@ export interface RouterProps extends PossibleMeta {
18
23
  * - Route `{placeholders}` are passed as props to function/component route values along with merged URL `?query` params. They are not published into context — descendants of a `ReactElement`-valued route can't see them automatically.
19
24
  * - Returns `null` when there's no URL in context or the URL is outside the base.
20
25
  *
21
- * @throws {NotFoundError} if no route matches and `fallback` is `undefined`
26
+ * @param routes The route table to match the current URL against.
27
+ * @param fallback Element to render when nothing matches; explicit `null` renders nothing instead of throwing.
28
+ * @param meta Optional meta (url/base) overrides for this router scope.
29
+ * @returns The matched route element, or `null`/`fallback` when nothing matches.
30
+ * @throws NotFoundError If no route matches and `fallback` is `undefined`.
31
+ * @example <Router routes={{ "/": HomePage, "/about": AboutPage }} />
32
+ * @see https://dhoulb.github.io/shelving/ui/router/Router/Router
22
33
  */
23
34
  export declare function Router({ routes, fallback, ...meta }: RouterProps): ReactElement | null;
@@ -12,7 +12,13 @@ import { MetaContext, requireMetaURL } from "../misc/MetaContext.js";
12
12
  * - Route `{placeholders}` are passed as props to function/component route values along with merged URL `?query` params. They are not published into context — descendants of a `ReactElement`-valued route can't see them automatically.
13
13
  * - Returns `null` when there's no URL in context or the URL is outside the base.
14
14
  *
15
- * @throws {NotFoundError} if no route matches and `fallback` is `undefined`
15
+ * @param routes The route table to match the current URL against.
16
+ * @param fallback Element to render when nothing matches; explicit `null` renders nothing instead of throwing.
17
+ * @param meta Optional meta (url/base) overrides for this router scope.
18
+ * @returns The matched route element, or `null`/`fallback` when nothing matches.
19
+ * @throws NotFoundError If no route matches and `fallback` is `undefined`.
20
+ * @example <Router routes={{ "/": HomePage, "/about": AboutPage }} />
21
+ * @see https://dhoulb.github.io/shelving/ui/router/Router/Router
16
22
  */
17
23
  export function Router({ routes, fallback, ...meta }) {
18
24
  const combined = requireMetaURL(meta);
@@ -7,6 +7,11 @@ import { MetaContext, type MetaURL, requireMetaURL } from "../misc/MetaContext.j
7
7
  import type { PossibleMeta } from "../util/meta.js";
8
8
  import type { Routes } from "./Routes.js";
9
9
 
10
+ /**
11
+ * Props for `<Router>` — the `routes` to match against plus an optional `fallback`.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/ui/router/Router/RouterProps
14
+ */
10
15
  export interface RouterProps extends PossibleMeta {
11
16
  /** List of routes for the router to match against. */
12
17
  readonly routes: Routes;
@@ -26,7 +31,13 @@ export interface RouterProps extends PossibleMeta {
26
31
  * - Route `{placeholders}` are passed as props to function/component route values along with merged URL `?query` params. They are not published into context — descendants of a `ReactElement`-valued route can't see them automatically.
27
32
  * - Returns `null` when there's no URL in context or the URL is outside the base.
28
33
  *
29
- * @throws {NotFoundError} if no route matches and `fallback` is `undefined`
34
+ * @param routes The route table to match the current URL against.
35
+ * @param fallback Element to render when nothing matches; explicit `null` renders nothing instead of throwing.
36
+ * @param meta Optional meta (url/base) overrides for this router scope.
37
+ * @returns The matched route element, or `null`/`fallback` when nothing matches.
38
+ * @throws NotFoundError If no route matches and `fallback` is `undefined`.
39
+ * @example <Router routes={{ "/": HomePage, "/about": AboutPage }} />
40
+ * @see https://dhoulb.github.io/shelving/ui/router/Router/Router
30
41
  */
31
42
  export function Router({ routes, fallback, ...meta }: RouterProps): ReactElement | null {
32
43
  const combined = requireMetaURL(meta);
@@ -6,22 +6,32 @@ import type { URIParams } from "../../util/uri.js";
6
6
  * Props for a component that works as a route in the router.
7
7
  * - Combines `?query` params from the URL and `{placeholder}` matches from the route template into one flat string dictionary.
8
8
  * - Template placeholder values take precedence over query params with the same name.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteProps
9
11
  */
10
12
  export type RouteProps = URIParams;
11
- /** React component that allows `RouteProps` (either a function component or a class component). */
13
+ /**
14
+ * React component usable as a route value — a function or class component accepting `RouteProps`.
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteComponent
17
+ */
12
18
  export type RouteComponent = FunctionComponent<RouteProps> | ComponentClass<RouteProps>;
13
19
  /**
14
20
  * Valid route values:
15
21
  * - `RouteComponent` — rendered as `<Component {...params}/>` with merged placeholder + query params.
16
22
  * - `AbsolutePath` string — triggers a redirect to that path.
17
23
  * - `ReactElement` — rendered as-is (use for layout-wrapping a nested `<Router>` inside).
24
+ *
25
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/Route
18
26
  */
19
27
  export type Route = RouteComponent | AbsolutePath | ReactElement;
20
28
  /**
21
- * List of routes in `{ path: RouteComponent | redirectPath | ReactElement }` format.
29
+ * Route table mapping `{ path: RouteComponent | redirectPath | ReactElement }` for a `<Router>`.
30
+ *
31
+ * - Each key is a path starting with `/`, optionally containing `{named}` placeholders passed into the component.
32
+ * - Each value is a `Route` (or a nullish/`false` value to disable that route).
22
33
  *
23
- * @param path String path starting with `/` slash, possibly containing `{named}` placeholders that get passed into the component.
24
- * @param value Route value — see `Route`.
34
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/Routes
25
35
  */
26
36
  export type Routes = {
27
37
  [key: AbsolutePath]: Nullish<Route | false>;
@@ -7,10 +7,16 @@ import type { URIParams } from "../../util/uri.js";
7
7
  * Props for a component that works as a route in the router.
8
8
  * - Combines `?query` params from the URL and `{placeholder}` matches from the route template into one flat string dictionary.
9
9
  * - Template placeholder values take precedence over query params with the same name.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteProps
10
12
  */
11
13
  export type RouteProps = URIParams;
12
14
 
13
- /** React component that allows `RouteProps` (either a function component or a class component). */
15
+ /**
16
+ * React component usable as a route value — a function or class component accepting `RouteProps`.
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/RouteComponent
19
+ */
14
20
  export type RouteComponent = FunctionComponent<RouteProps> | ComponentClass<RouteProps>;
15
21
 
16
22
  /**
@@ -18,14 +24,18 @@ export type RouteComponent = FunctionComponent<RouteProps> | ComponentClass<Rout
18
24
  * - `RouteComponent` — rendered as `<Component {...params}/>` with merged placeholder + query params.
19
25
  * - `AbsolutePath` string — triggers a redirect to that path.
20
26
  * - `ReactElement` — rendered as-is (use for layout-wrapping a nested `<Router>` inside).
27
+ *
28
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/Route
21
29
  */
22
30
  export type Route = RouteComponent | AbsolutePath | ReactElement;
23
31
 
24
32
  /**
25
- * List of routes in `{ path: RouteComponent | redirectPath | ReactElement }` format.
33
+ * Route table mapping `{ path: RouteComponent | redirectPath | ReactElement }` for a `<Router>`.
34
+ *
35
+ * - Each key is a path starting with `/`, optionally containing `{named}` placeholders passed into the component.
36
+ * - Each value is a `Route` (or a nullish/`false` value to disable that route).
26
37
  *
27
- * @param path String path starting with `/` slash, possibly containing `{named}` placeholders that get passed into the component.
28
- * @param value Route value — see `Route`.
38
+ * @see https://dhoulb.github.io/shelving/ui/router/Routes/Routes
29
39
  */
30
40
  export type Routes = {
31
41
  [key: AbsolutePath]: Nullish<Route | false>;
@@ -1,6 +1,14 @@
1
- /** Possible colour strings. */
1
+ /**
2
+ * Enumerated colour names selectable via the `color` variant prop.
3
+ *
4
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/UIColor
5
+ */
2
6
  export type UIColor = "primary" | "secondary" | "tertiary" | "red" | "orange" | "yellow" | "green" | "aqua" | "blue" | "purple" | "pink" | "gray";
3
- /** Variants for coloring elements, e.g. `color="purple"`. */
7
+ /**
8
+ * Variant props for colouring an element, e.g. `color="purple"`.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/ColorVariants
11
+ */
4
12
  export interface ColorVariants {
5
13
  /** Colour of the element. */
6
14
  color?: UIColor | undefined;
@@ -11,5 +19,10 @@ export interface ColorVariants {
11
19
  * - Sets the key `.tint-50` color for an element (e.g. `--color-purple` or `--color-primary`) based on `color="purple"` or `color="primary"`
12
20
  * - Full set of shades e.g. `--tint-20` and `--tint-95` are created for the selected color.
13
21
  * - Element can now compose these shades to style itself using the selected color.
22
+ *
23
+ * @param variants Variant props containing the optional `color` selection.
24
+ * @returns The combined tint + colour class string, or `undefined` when no `color` is set.
25
+ * @example getColorClass({ color: "purple" }) // "tint color-purple"
26
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/getColorClass
14
27
  */
15
28
  export declare function getColorClass({ color }: ColorVariants): string | undefined;
package/ui/style/Color.js CHANGED
@@ -7,6 +7,11 @@ import { TINT_CLASS } from "./Tint.js";
7
7
  * - Sets the key `.tint-50` color for an element (e.g. `--color-purple` or `--color-primary`) based on `color="purple"` or `color="primary"`
8
8
  * - Full set of shades e.g. `--tint-20` and `--tint-95` are created for the selected color.
9
9
  * - Element can now compose these shades to style itself using the selected color.
10
+ *
11
+ * @param variants Variant props containing the optional `color` selection.
12
+ * @returns The combined tint + colour class string, or `undefined` when no `color` is set.
13
+ * @example getColorClass({ color: "purple" }) // "tint color-purple"
14
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/getColorClass
10
15
  */
11
16
  export function getColorClass({ color }) {
12
17
  if (color)
@@ -2,7 +2,11 @@ import { getClass, getModuleClass } from "../util/css.js";
2
2
  import COLOR_CSS from "./Color.module.css";
3
3
  import { TINT_CLASS } from "./Tint.js";
4
4
 
5
- /** Possible colour strings. */
5
+ /**
6
+ * Enumerated colour names selectable via the `color` variant prop.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/UIColor
9
+ */
6
10
  export type UIColor =
7
11
  | "primary"
8
12
  | "secondary"
@@ -17,7 +21,11 @@ export type UIColor =
17
21
  | "pink"
18
22
  | "gray";
19
23
 
20
- /** Variants for coloring elements, e.g. `color="purple"`. */
24
+ /**
25
+ * Variant props for colouring an element, e.g. `color="purple"`.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/ColorVariants
28
+ */
21
29
  export interface ColorVariants {
22
30
  /** Colour of the element. */
23
31
  color?: UIColor | undefined;
@@ -29,6 +37,11 @@ export interface ColorVariants {
29
37
  * - Sets the key `.tint-50` color for an element (e.g. `--color-purple` or `--color-primary`) based on `color="purple"` or `color="primary"`
30
38
  * - Full set of shades e.g. `--tint-20` and `--tint-95` are created for the selected color.
31
39
  * - Element can now compose these shades to style itself using the selected color.
40
+ *
41
+ * @param variants Variant props containing the optional `color` selection.
42
+ * @returns The combined tint + colour class string, or `undefined` when no `color` is set.
43
+ * @example getColorClass({ color: "purple" }) // "tint color-purple"
44
+ * @see https://dhoulb.github.io/shelving/ui/style/Color/getColorClass
32
45
  */
33
46
  export function getColorClass({ color }: ColorVariants): string | undefined {
34
47
  if (color) return getClass(TINT_CLASS, getModuleClass(COLOR_CSS, color));
@@ -1,7 +1,11 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { OptionalChildProps } from "../util/props.js";
3
3
  import { type GapVariants } from "./Gap.js";
4
- /** Variants for flex layout — opt-in modifiers any component can mix in via `getFlexClass()`. */
4
+ /**
5
+ * Variant props for flex layout — opt-in modifiers any component can mix in via `getFlexClass()`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/ui/style/Flex/FlexVariants
8
+ */
5
9
  export interface FlexVariants extends GapVariants {
6
10
  /** Wrap overflowing elements onto the next line (defaults to no wrapping). */
7
11
  wrap?: boolean | undefined;
@@ -60,13 +64,46 @@ export interface FlexVariants extends GapVariants {
60
64
  */
61
65
  baseline?: boolean | undefined;
62
66
  }
63
- /** Get the flex class for a component. Composes the Gap prop so `<Flex gap="large">` etc. just works. */
67
+ /**
68
+ * Get the flex layout class for a component from its flex variant props.
69
+ *
70
+ * - Composes the `gap` prop so `<Flex gap="large">` etc. just works.
71
+ *
72
+ * @param props Flex variant props (direction, justification, alignment, wrap, gap).
73
+ * @returns The combined flex + gap class string.
74
+ * @example getFlexClass({ column: true, center: true, gap: "large" })
75
+ * @see https://dhoulb.github.io/shelving/ui/style/Flex/getFlexClass
76
+ */
64
77
  export declare function getFlexClass(props: FlexVariants): string;
78
+ /**
79
+ * Props for the `Row` component — flex variants plus optional children.
80
+ *
81
+ * @see https://dhoulb.github.io/shelving/ui/style/Flex/RowProps
82
+ */
65
83
  export interface RowProps extends FlexVariants, OptionalChildProps {
66
84
  }
67
- /** Flex contents arranged as a row by default. */
85
+ /**
86
+ * Flex container that arranges its children as a row by default.
87
+ *
88
+ * @param props Flex variant props plus `children`.
89
+ * @returns A `<div>` element with the computed flex class.
90
+ * @example <Row gap="small" center>{items}</Row>
91
+ * @see https://dhoulb.github.io/shelving/ui/style/Flex/Row
92
+ */
68
93
  export declare function Row({ children, ...props }: RowProps): ReactElement;
94
+ /**
95
+ * Props for the `Column` component — flex variants plus optional children.
96
+ *
97
+ * @see https://dhoulb.github.io/shelving/ui/style/Flex/ColumnProps
98
+ */
69
99
  export interface ColumnProps extends FlexVariants, OptionalChildProps {
70
100
  }
71
- /** Flex contents stacked as a column by default. */
101
+ /**
102
+ * Flex container that stacks its children as a column by default.
103
+ *
104
+ * @param props Flex variant props plus `children` (`column` defaults to `true`).
105
+ * @returns A `<div>` element with the computed flex class.
106
+ * @example <Column gap="small">{items}</Column>
107
+ * @see https://dhoulb.github.io/shelving/ui/style/Flex/Column
108
+ */
72
109
  export declare function Column({ children, column, ...props }: ColumnProps): ReactElement;