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
@@ -2,11 +2,26 @@ import { type MouseEvent, type ReactElement } from "react";
2
2
  import { type SpaceVariants } from "../style/Space.js";
3
3
  import { type WidthVariants } from "../style/Width.js";
4
4
  import type { ChildProps, OptionalChildProps } from "../util/props.js";
5
+ /**
6
+ * Props for `Video` — space and width variants plus optional `children`.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoProps
9
+ */
5
10
  export interface VideoProps extends SpaceVariants, WidthVariants, OptionalChildProps {
6
11
  }
12
+ /**
13
+ * Props for `VideoButtons` — `children` plus an optional `left` alignment flag.
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtonsProps
16
+ */
7
17
  export interface VideoButtonsProps extends ChildProps {
8
18
  left?: boolean;
9
19
  }
20
+ /**
21
+ * Props for `VideoButton` — `children` plus optional `title`, `onClick`, `danger`, and `disabled`.
22
+ *
23
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtonProps
24
+ */
10
25
  export interface VideoButtonProps extends ChildProps {
11
26
  title?: string | undefined;
12
27
  onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
@@ -17,16 +32,48 @@ export interface VideoButtonProps extends ChildProps {
17
32
  * Video container element.
18
33
  * - Has a black background and a 16:9 aspect ratio.
19
34
  * - Shows its contents (i.e. a `<video>` element or a `<TwilioRoom>`.
35
+ *
36
+ * @param props Space and width variants plus `children` (e.g. a `<video>` element).
37
+ * @returns Rendered `<figure>` video container.
38
+ * @example <Video><video src="/clip.mp4" /></Video>
39
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/Video
20
40
  */
21
41
  export declare function Video({ children, ...variants }: VideoProps): ReactElement;
22
- /** Set of video buttons floating over a video. */
42
+ /**
43
+ * Set of video buttons floating over a video.
44
+ *
45
+ * @param props `children` (the buttons) plus an optional `left` alignment flag.
46
+ * @returns Rendered overlay container for video buttons.
47
+ * @example <VideoButtons><FullscreenVideoButton /></VideoButtons>
48
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtons
49
+ */
23
50
  export declare function VideoButtons({ children, ...variants }: VideoButtonsProps): import("react").JSX.Element;
24
- /** Individual video button over a video. */
51
+ /**
52
+ * Individual video button over a video — renders a `<button>`.
53
+ *
54
+ * @param props `children` (the button content) plus optional `title`, `onClick`, `danger`, and `disabled`.
55
+ * @returns Rendered `<button>` element overlaid on the video.
56
+ * @example <VideoButton title="Play" onClick={play}><PlayIcon /></VideoButton>
57
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButton
58
+ */
25
59
  export declare function VideoButton({ children, title, onClick, disabled, ...variants }: VideoButtonProps): ReactElement;
26
60
  declare const _fullscreenVideoButtonProps: unique symbol;
61
+ /**
62
+ * Props for `FullscreenVideoButton` — an empty marker interface (the component takes no props).
63
+ *
64
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/FullscreenVideoButtonProps
65
+ */
27
66
  export interface FullscreenVideoButtonProps {
28
67
  readonly [_fullscreenVideoButtonProps]?: never;
29
68
  }
30
- /** Button to make a video element go fullscreen. */
69
+ /**
70
+ * Button to toggle the surrounding video element in and out of fullscreen.
71
+ * - Renders `null` when the browser does not support the Fullscreen API.
72
+ * - Tracks fullscreen state so the icon and title flip between enter/exit.
73
+ *
74
+ * @returns Rendered fullscreen toggle button, or `null` when fullscreen is unavailable.
75
+ * @example <Video><video src="/clip.mp4" /><VideoButtons><FullscreenVideoButton /></VideoButtons></Video>
76
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/FullscreenVideoButton
77
+ */
31
78
  export declare function FullscreenVideoButton(): ReactElement | null;
32
79
  export {};
package/ui/block/Video.js CHANGED
@@ -9,20 +9,47 @@ import styles from "./Video.module.css";
9
9
  * Video container element.
10
10
  * - Has a black background and a 16:9 aspect ratio.
11
11
  * - Shows its contents (i.e. a `<video>` element or a `<TwilioRoom>`.
12
+ *
13
+ * @param props Space and width variants plus `children` (e.g. a `<video>` element).
14
+ * @returns Rendered `<figure>` video container.
15
+ * @example <Video><video src="/clip.mp4" /></Video>
16
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/Video
12
17
  */
13
18
  export function Video({ children, ...variants }) {
14
19
  const ref = useRef(null);
15
20
  return (_jsx("figure", { ref: ref, className: getClass(getModuleClass(styles, "video"), getSpaceClass(variants), getWidthClass(variants)), children: children }));
16
21
  }
17
- /** Set of video buttons floating over a video. */
22
+ /**
23
+ * Set of video buttons floating over a video.
24
+ *
25
+ * @param props `children` (the buttons) plus an optional `left` alignment flag.
26
+ * @returns Rendered overlay container for video buttons.
27
+ * @example <VideoButtons><FullscreenVideoButton /></VideoButtons>
28
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtons
29
+ */
18
30
  export function VideoButtons({ children, ...variants }) {
19
31
  return _jsx("div", { className: getModuleClass(styles, "buttons", variants), children: children });
20
32
  }
21
- /** Individual video button over a video. */
33
+ /**
34
+ * Individual video button over a video — renders a `<button>`.
35
+ *
36
+ * @param props `children` (the button content) plus optional `title`, `onClick`, `danger`, and `disabled`.
37
+ * @returns Rendered `<button>` element overlaid on the video.
38
+ * @example <VideoButton title="Play" onClick={play}><PlayIcon /></VideoButton>
39
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButton
40
+ */
22
41
  export function VideoButton({ children, title, onClick, disabled, ...variants }) {
23
42
  return (_jsx("button", { type: "button", onClick: onClick, className: getModuleClass(styles, "button", variants), title: title, disabled: disabled, children: children }));
24
43
  }
25
- /** Button to make a video element go fullscreen. */
44
+ /**
45
+ * Button to toggle the surrounding video element in and out of fullscreen.
46
+ * - Renders `null` when the browser does not support the Fullscreen API.
47
+ * - Tracks fullscreen state so the icon and title flip between enter/exit.
48
+ *
49
+ * @returns Rendered fullscreen toggle button, or `null` when fullscreen is unavailable.
50
+ * @example <Video><video src="/clip.mp4" /><VideoButtons><FullscreenVideoButton /></VideoButtons></Video>
51
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/FullscreenVideoButton
52
+ */
26
53
  export function FullscreenVideoButton() {
27
54
  const [isFull, setFull] = useState(() => typeof document !== "undefined" && !!document.fullscreenElement);
28
55
  useEffect(() => {
@@ -6,12 +6,27 @@ import { getClass, getModuleClass } from "../util/css.js";
6
6
  import type { ChildProps, OptionalChildProps } from "../util/props.js";
7
7
  import styles from "./Video.module.css";
8
8
 
9
+ /**
10
+ * Props for `Video` — space and width variants plus optional `children`.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoProps
13
+ */
9
14
  export interface VideoProps extends SpaceVariants, WidthVariants, OptionalChildProps {}
10
15
 
16
+ /**
17
+ * Props for `VideoButtons` — `children` plus an optional `left` alignment flag.
18
+ *
19
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtonsProps
20
+ */
11
21
  export interface VideoButtonsProps extends ChildProps {
12
22
  left?: boolean;
13
23
  }
14
24
 
25
+ /**
26
+ * Props for `VideoButton` — `children` plus optional `title`, `onClick`, `danger`, and `disabled`.
27
+ *
28
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtonProps
29
+ */
15
30
  export interface VideoButtonProps extends ChildProps {
16
31
  title?: string | undefined;
17
32
  onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
@@ -23,6 +38,11 @@ export interface VideoButtonProps extends ChildProps {
23
38
  * Video container element.
24
39
  * - Has a black background and a 16:9 aspect ratio.
25
40
  * - Shows its contents (i.e. a `<video>` element or a `<TwilioRoom>`.
41
+ *
42
+ * @param props Space and width variants plus `children` (e.g. a `<video>` element).
43
+ * @returns Rendered `<figure>` video container.
44
+ * @example <Video><video src="/clip.mp4" /></Video>
45
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/Video
26
46
  */
27
47
  export function Video({ children, ...variants }: VideoProps): ReactElement {
28
48
  const ref = useRef<HTMLElement | null>(null);
@@ -34,12 +54,26 @@ export function Video({ children, ...variants }: VideoProps): ReactElement {
34
54
  );
35
55
  }
36
56
 
37
- /** Set of video buttons floating over a video. */
57
+ /**
58
+ * Set of video buttons floating over a video.
59
+ *
60
+ * @param props `children` (the buttons) plus an optional `left` alignment flag.
61
+ * @returns Rendered overlay container for video buttons.
62
+ * @example <VideoButtons><FullscreenVideoButton /></VideoButtons>
63
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButtons
64
+ */
38
65
  export function VideoButtons({ children, ...variants }: VideoButtonsProps) {
39
66
  return <div className={getModuleClass(styles, "buttons", variants)}>{children}</div>;
40
67
  }
41
68
 
42
- /** Individual video button over a video. */
69
+ /**
70
+ * Individual video button over a video — renders a `<button>`.
71
+ *
72
+ * @param props `children` (the button content) plus optional `title`, `onClick`, `danger`, and `disabled`.
73
+ * @returns Rendered `<button>` element overlaid on the video.
74
+ * @example <VideoButton title="Play" onClick={play}><PlayIcon /></VideoButton>
75
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/VideoButton
76
+ */
43
77
  export function VideoButton({ children, title, onClick, disabled, ...variants }: VideoButtonProps): ReactElement {
44
78
  return (
45
79
  <button type="button" onClick={onClick} className={getModuleClass(styles, "button", variants)} title={title} disabled={disabled}>
@@ -50,11 +84,24 @@ export function VideoButton({ children, title, onClick, disabled, ...variants }:
50
84
 
51
85
  declare const _fullscreenVideoButtonProps: unique symbol;
52
86
 
87
+ /**
88
+ * Props for `FullscreenVideoButton` — an empty marker interface (the component takes no props).
89
+ *
90
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/FullscreenVideoButtonProps
91
+ */
53
92
  export interface FullscreenVideoButtonProps {
54
93
  readonly [_fullscreenVideoButtonProps]?: never;
55
94
  }
56
95
 
57
- /** Button to make a video element go fullscreen. */
96
+ /**
97
+ * Button to toggle the surrounding video element in and out of fullscreen.
98
+ * - Renders `null` when the browser does not support the Fullscreen API.
99
+ * - Tracks fullscreen state so the icon and title flip between enter/exit.
100
+ *
101
+ * @returns Rendered fullscreen toggle button, or `null` when fullscreen is unavailable.
102
+ * @example <Video><video src="/clip.mp4" /><VideoButtons><FullscreenVideoButton /></VideoButtons></Video>
103
+ * @see https://dhoulb.github.io/shelving/ui/block/Video/FullscreenVideoButton
104
+ */
58
105
  export function FullscreenVideoButton(): ReactElement | null {
59
106
  const [isFull, setFull] = useState(() => typeof document !== "undefined" && !!document.fullscreenElement);
60
107
 
@@ -2,11 +2,38 @@ import { type ReactElement } from "react";
2
2
  import type { Callback } from "../../util/function.js";
3
3
  import type { ButtonVariants } from "../form/Button.js";
4
4
  import type { OptionalChildProps } from "../util/props.js";
5
+ /**
6
+ * Props for `<Dialog>` — optional `children` content and an `onClose` callback.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogProps
9
+ */
5
10
  export interface DialogProps extends OptionalChildProps {
6
11
  onClose?: Callback;
7
12
  }
13
+ /**
14
+ * Modal `<dialog>` element that opens on mount and includes a close button.
15
+ *
16
+ * - Opens via `showModal()` when mounted and closes on backdrop clicks, link/nav-button clicks, or the close button.
17
+ * - Wraps content in `<Suspense>` so lazy children can stream in.
18
+ *
19
+ * @example dialogs.show(<Dialog><p>Are you sure?</p></Dialog>);
20
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/Dialog
21
+ */
8
22
  export declare const Dialog: import("react").MemoExoticComponent<({ children, onClose, ...props }: DialogProps) => import("react").JSX.Element>;
23
+ /**
24
+ * Props for `<DialogCloseButton>` — button styling variants and optional `children` to override the X icon.
25
+ *
26
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogCloseButtonProps
27
+ */
9
28
  export interface DialogCloseButtonProps extends ButtonVariants, OptionalChildProps {
10
29
  }
11
- /** Button that closes its wrapping dialog with an X icon. */
30
+ /**
31
+ * Button that closes its wrapping `<dialog>`, showing an X icon by default.
32
+ *
33
+ * @param children Optional button content (defaults to an X icon).
34
+ * @param variants Button styling variants.
35
+ * @returns The close button element.
36
+ * @example <DialogCloseButton plain />
37
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogCloseButton
38
+ */
12
39
  export declare function DialogCloseButton({ children, ...variants }: DialogCloseButtonProps): ReactElement;
@@ -3,6 +3,15 @@ import { XMarkIcon } from "@heroicons/react/24/solid";
3
3
  import { memo, Suspense, useEffect, useRef } from "react";
4
4
  import { getModuleClass } from "../util/css.js";
5
5
  import styles from "./Dialog.module.css";
6
+ /**
7
+ * Modal `<dialog>` element that opens on mount and includes a close button.
8
+ *
9
+ * - Opens via `showModal()` when mounted and closes on backdrop clicks, link/nav-button clicks, or the close button.
10
+ * - Wraps content in `<Suspense>` so lazy children can stream in.
11
+ *
12
+ * @example dialogs.show(<Dialog><p>Are you sure?</p></Dialog>);
13
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/Dialog
14
+ */
6
15
  export const Dialog = memo(({ children, onClose, ...props }) => {
7
16
  const ref = useRef(null);
8
17
  useEffect(() => {
@@ -19,7 +28,15 @@ function _closeOnBackdropClick({ currentTarget, target }) {
19
28
  if (target instanceof Element && target.closest("a:any-link, nav button:enabled"))
20
29
  currentTarget.close();
21
30
  }
22
- /** Button that closes its wrapping dialog with an X icon. */
31
+ /**
32
+ * Button that closes its wrapping `<dialog>`, showing an X icon by default.
33
+ *
34
+ * @param children Optional button content (defaults to an X icon).
35
+ * @param variants Button styling variants.
36
+ * @returns The close button element.
37
+ * @example <DialogCloseButton plain />
38
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogCloseButton
39
+ */
23
40
  export function DialogCloseButton({ children = _jsx(XMarkIcon, {}), ...variants }) {
24
41
  return (_jsx("button", { type: "button", title: "Close", className: getModuleClass(styles, "button", variants), onClick: _closeOnButtonClick, children: children }));
25
42
  }
@@ -6,10 +6,24 @@ import { getModuleClass } from "../util/css.js";
6
6
  import type { OptionalChildProps } from "../util/props.js";
7
7
  import styles from "./Dialog.module.css";
8
8
 
9
+ /**
10
+ * Props for `<Dialog>` — optional `children` content and an `onClose` callback.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogProps
13
+ */
9
14
  export interface DialogProps extends OptionalChildProps {
10
15
  onClose?: Callback;
11
16
  }
12
17
 
18
+ /**
19
+ * Modal `<dialog>` element that opens on mount and includes a close button.
20
+ *
21
+ * - Opens via `showModal()` when mounted and closes on backdrop clicks, link/nav-button clicks, or the close button.
22
+ * - Wraps content in `<Suspense>` so lazy children can stream in.
23
+ *
24
+ * @example dialogs.show(<Dialog><p>Are you sure?</p></Dialog>);
25
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/Dialog
26
+ */
13
27
  export const Dialog = memo(({ children, onClose, ...props }: DialogProps) => {
14
28
  const ref = useRef<HTMLDialogElement>(null);
15
29
 
@@ -39,9 +53,22 @@ function _closeOnBackdropClick({ currentTarget, target }: MouseEvent<HTMLDialogE
39
53
  if (target instanceof Element && target.closest("a:any-link, nav button:enabled")) currentTarget.close();
40
54
  }
41
55
 
56
+ /**
57
+ * Props for `<DialogCloseButton>` — button styling variants and optional `children` to override the X icon.
58
+ *
59
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogCloseButtonProps
60
+ */
42
61
  export interface DialogCloseButtonProps extends ButtonVariants, OptionalChildProps {}
43
62
 
44
- /** Button that closes its wrapping dialog with an X icon. */
63
+ /**
64
+ * Button that closes its wrapping `<dialog>`, showing an X icon by default.
65
+ *
66
+ * @param children Optional button content (defaults to an X icon).
67
+ * @param variants Button styling variants.
68
+ * @returns The close button element.
69
+ * @example <DialogCloseButton plain />
70
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialog/DialogCloseButton
71
+ */
45
72
  export function DialogCloseButton({ children = <XMarkIcon />, ...variants }: DialogCloseButtonProps): ReactElement {
46
73
  return (
47
74
  <button type="button" title="Close" className={getModuleClass(styles, "button", variants)} onClick={_closeOnButtonClick}>
@@ -1,23 +1,70 @@
1
1
  import { type ReactElement, type ReactNode } from "react";
2
2
  import { ArrayStore } from "../../store/ArrayStore.js";
3
3
  import type { ChildProps } from "../util/props.js";
4
- /** Store a list of dialogs. */
4
+ /**
5
+ * Store holding the live list of open `<Dialog>` elements.
6
+ *
7
+ * - `show()` opens a new dialog; closed dialogs are removed after an animation delay.
8
+ *
9
+ * @example const dialogs = new DialogsStore(); dialogs.show(<p>Hello</p>);
10
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore
11
+ */
5
12
  export declare class DialogsStore extends ArrayStore<ReactElement> {
6
- /** Show a new dialog. */
13
+ /**
14
+ * Open a new dialog wrapping the given content.
15
+ *
16
+ * @param children The content to show inside the dialog.
17
+ * @example dialogs.show(<ConfirmForm />);
18
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore/show
19
+ */
7
20
  show(children: ReactNode): void;
8
- /** Hide all currently visible dialogs. */
21
+ /**
22
+ * Hide all currently visible dialogs.
23
+ *
24
+ * @example dialogs.hideAll();
25
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore/hideAll
26
+ */
9
27
  hideAll(): void;
10
28
  }
11
- /** Return the current dialogs context. */
29
+ /**
30
+ * Read the current `DialogsStore` from the nearest `<DialogsContext>`.
31
+ *
32
+ * @returns The current `DialogsStore`.
33
+ * @example requireDialogs().show(<ConfirmForm />);
34
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/requireDialogs
35
+ */
12
36
  export declare function requireDialogs(): DialogsStore;
13
37
  declare const _componentProps: unique symbol;
38
+ /**
39
+ * Props for `<DialogsContext>` — the `children` subtree the dialogs store is provided to.
40
+ *
41
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsContextProps
42
+ */
14
43
  export interface DialogsContextProps extends ChildProps {
15
44
  }
45
+ /**
46
+ * Props for `<Dialogs>` — takes no props (branded empty interface).
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsProps
49
+ */
16
50
  export interface DialogsProps {
17
51
  readonly [_componentProps]?: never;
18
52
  }
19
- /** Create a new `<DialogsStore>` for a set of elements. */
53
+ /**
54
+ * Provider that creates a fresh `DialogsStore` and shares it with its subtree.
55
+ *
56
+ * @param children The subtree that can open dialogs via `requireDialogs()`.
57
+ * @returns The dialogs context provider wrapping `children`.
58
+ * @example <DialogsContext><App /></DialogsContext>
59
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsContext
60
+ */
20
61
  export declare function DialogsContext({ children }: DialogsContextProps): ReactElement;
21
- /** Output the list of dialogs from a `DialogsStore` in the current `DialogsContext`. */
62
+ /**
63
+ * Render the open dialogs from the current `DialogsContext`.
64
+ *
65
+ * @returns The list of open dialog elements, or `null` when there are none.
66
+ * @example <DialogsContext><App /><Dialogs /></DialogsContext>
67
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/Dialogs
68
+ */
22
69
  export declare function Dialogs(): ReactNode | null;
23
70
  export {};
@@ -7,9 +7,22 @@ import { getRandomKey } from "../../util/random.js";
7
7
  import { Dialog } from "./Dialog.js";
8
8
  /** How long before a hidden dialogs are removed from the DOM (allow time for animates to complete). */
9
9
  const REMOVE_DELAY = 500;
10
- /** Store a list of dialogs. */
10
+ /**
11
+ * Store holding the live list of open `<Dialog>` elements.
12
+ *
13
+ * - `show()` opens a new dialog; closed dialogs are removed after an animation delay.
14
+ *
15
+ * @example const dialogs = new DialogsStore(); dialogs.show(<p>Hello</p>);
16
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore
17
+ */
11
18
  export class DialogsStore extends ArrayStore {
12
- /** Show a new dialog. */
19
+ /**
20
+ * Open a new dialog wrapping the given content.
21
+ *
22
+ * @param children The content to show inside the dialog.
23
+ * @example dialogs.show(<ConfirmForm />);
24
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore/show
25
+ */
13
26
  show(children) {
14
27
  const dialog = (_jsx(Dialog
15
28
  // Add a `key=""` so dialogs can be rendered directly and added/removed in any order.
@@ -20,7 +33,12 @@ export class DialogsStore extends ArrayStore {
20
33
  }, children: children }, getRandomKey()));
21
34
  this.add(dialog);
22
35
  }
23
- /** Hide all currently visible dialogs. */
36
+ /**
37
+ * Hide all currently visible dialogs.
38
+ *
39
+ * @example dialogs.hideAll();
40
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore/hideAll
41
+ */
24
42
  hideAll() {
25
43
  this.delete(...this.value);
26
44
  }
@@ -28,15 +46,34 @@ export class DialogsStore extends ArrayStore {
28
46
  /** Context to get the current `DialogsStore` created by a `<DialogsWrapper>`. */
29
47
  const _DialogsContext = createContext(new DialogsStore());
30
48
  _DialogsContext.displayName = "DialogsContext";
31
- /** Return the current dialogs context. */
49
+ /**
50
+ * Read the current `DialogsStore` from the nearest `<DialogsContext>`.
51
+ *
52
+ * @returns The current `DialogsStore`.
53
+ * @example requireDialogs().show(<ConfirmForm />);
54
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/requireDialogs
55
+ */
32
56
  export function requireDialogs() {
33
57
  return use(_DialogsContext);
34
58
  }
35
- /** Create a new `<DialogsStore>` for a set of elements. */
59
+ /**
60
+ * Provider that creates a fresh `DialogsStore` and shares it with its subtree.
61
+ *
62
+ * @param children The subtree that can open dialogs via `requireDialogs()`.
63
+ * @returns The dialogs context provider wrapping `children`.
64
+ * @example <DialogsContext><App /></DialogsContext>
65
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsContext
66
+ */
36
67
  export function DialogsContext({ children }) {
37
68
  return _jsx(_DialogsContext, { value: useInstance(DialogsStore), children: children });
38
69
  }
39
- /** Output the list of dialogs from a `DialogsStore` in the current `DialogsContext`. */
70
+ /**
71
+ * Render the open dialogs from the current `DialogsContext`.
72
+ *
73
+ * @returns The list of open dialog elements, or `null` when there are none.
74
+ * @example <DialogsContext><App /><Dialogs /></DialogsContext>
75
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/Dialogs
76
+ */
40
77
  export function Dialogs() {
41
78
  const dialogs = useStore(requireDialogs());
42
79
  return dialogs ? dialogs.value : null;
@@ -9,9 +9,22 @@ import { Dialog } from "./Dialog.js";
9
9
  /** How long before a hidden dialogs are removed from the DOM (allow time for animates to complete). */
10
10
  const REMOVE_DELAY = 500;
11
11
 
12
- /** Store a list of dialogs. */
12
+ /**
13
+ * Store holding the live list of open `<Dialog>` elements.
14
+ *
15
+ * - `show()` opens a new dialog; closed dialogs are removed after an animation delay.
16
+ *
17
+ * @example const dialogs = new DialogsStore(); dialogs.show(<p>Hello</p>);
18
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore
19
+ */
13
20
  export class DialogsStore extends ArrayStore<ReactElement> {
14
- /** Show a new dialog. */
21
+ /**
22
+ * Open a new dialog wrapping the given content.
23
+ *
24
+ * @param children The content to show inside the dialog.
25
+ * @example dialogs.show(<ConfirmForm />);
26
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore/show
27
+ */
15
28
  show(children: ReactNode) {
16
29
  const dialog = (
17
30
  <Dialog
@@ -28,7 +41,12 @@ export class DialogsStore extends ArrayStore<ReactElement> {
28
41
  this.add(dialog);
29
42
  }
30
43
 
31
- /** Hide all currently visible dialogs. */
44
+ /**
45
+ * Hide all currently visible dialogs.
46
+ *
47
+ * @example dialogs.hideAll();
48
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsStore/hideAll
49
+ */
32
50
  hideAll() {
33
51
  this.delete(...this.value);
34
52
  }
@@ -38,25 +56,54 @@ export class DialogsStore extends ArrayStore<ReactElement> {
38
56
  const _DialogsContext = createContext<DialogsStore>(new DialogsStore());
39
57
  _DialogsContext.displayName = "DialogsContext";
40
58
 
41
- /** Return the current dialogs context. */
59
+ /**
60
+ * Read the current `DialogsStore` from the nearest `<DialogsContext>`.
61
+ *
62
+ * @returns The current `DialogsStore`.
63
+ * @example requireDialogs().show(<ConfirmForm />);
64
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/requireDialogs
65
+ */
42
66
  export function requireDialogs(): DialogsStore {
43
67
  return use(_DialogsContext);
44
68
  }
45
69
 
46
70
  declare const _componentProps: unique symbol;
47
71
 
72
+ /**
73
+ * Props for `<DialogsContext>` — the `children` subtree the dialogs store is provided to.
74
+ *
75
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsContextProps
76
+ */
48
77
  export interface DialogsContextProps extends ChildProps {}
49
78
 
79
+ /**
80
+ * Props for `<Dialogs>` — takes no props (branded empty interface).
81
+ *
82
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsProps
83
+ */
50
84
  export interface DialogsProps {
51
85
  readonly [_componentProps]?: never;
52
86
  }
53
87
 
54
- /** Create a new `<DialogsStore>` for a set of elements. */
88
+ /**
89
+ * Provider that creates a fresh `DialogsStore` and shares it with its subtree.
90
+ *
91
+ * @param children The subtree that can open dialogs via `requireDialogs()`.
92
+ * @returns The dialogs context provider wrapping `children`.
93
+ * @example <DialogsContext><App /></DialogsContext>
94
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/DialogsContext
95
+ */
55
96
  export function DialogsContext({ children }: DialogsContextProps): ReactElement {
56
97
  return <_DialogsContext value={useInstance(DialogsStore)}>{children}</_DialogsContext>;
57
98
  }
58
99
 
59
- /** Output the list of dialogs from a `DialogsStore` in the current `DialogsContext`. */
100
+ /**
101
+ * Render the open dialogs from the current `DialogsContext`.
102
+ *
103
+ * @returns The list of open dialog elements, or `null` when there are none.
104
+ * @example <DialogsContext><App /><Dialogs /></DialogsContext>
105
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Dialogs/Dialogs
106
+ */
60
107
  export function Dialogs(): ReactNode | null {
61
108
  const dialogs = useStore(requireDialogs());
62
109
  return dialogs ? dialogs.value : null;
@@ -1,5 +1,18 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { OptionalChildProps } from "../util/props.js";
3
+ /**
4
+ * Props for `<Modal>` — optional `children` content.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Modal/ModalProps
7
+ */
3
8
  export interface ModalProps extends OptionalChildProps {
4
9
  }
10
+ /**
11
+ * Styled `<aside>` overlay container for modal content.
12
+ *
13
+ * @param children The modal content.
14
+ * @returns The modal container element.
15
+ * @example <Modal><p>Modal content</p></Modal>
16
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Modal/Modal
17
+ */
5
18
  export declare function Modal({ children }: ModalProps): ReactElement;
@@ -1,5 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import styles from "./Modal.module.css";
3
+ /**
4
+ * Styled `<aside>` overlay container for modal content.
5
+ *
6
+ * @param children The modal content.
7
+ * @returns The modal container element.
8
+ * @example <Modal><p>Modal content</p></Modal>
9
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Modal/Modal
10
+ */
3
11
  export function Modal({ children }) {
4
12
  return _jsx("aside", { className: styles.modal, children: children });
5
13
  }
@@ -2,8 +2,21 @@ import type { ReactElement } from "react";
2
2
  import type { OptionalChildProps } from "../util/props.js";
3
3
  import styles from "./Modal.module.css";
4
4
 
5
+ /**
6
+ * Props for `<Modal>` — optional `children` content.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Modal/ModalProps
9
+ */
5
10
  export interface ModalProps extends OptionalChildProps {}
6
11
 
12
+ /**
13
+ * Styled `<aside>` overlay container for modal content.
14
+ *
15
+ * @param children The modal content.
16
+ * @returns The modal container element.
17
+ * @example <Modal><p>Modal content</p></Modal>
18
+ * @see https://dhoulb.github.io/shelving/ui/dialog/Modal/Modal
19
+ */
7
20
  export function Modal({ children }: ModalProps): ReactElement {
8
21
  return <aside className={styles.modal}>{children}</aside>;
9
22
  }