@gjermundgaraba/pixel-paper 0.0.0-stage → 0.1.1

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 (387) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -2
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/announcer/announcer.d.ts +35 -0
  5. package/dist/announcer/announcer.js +121 -0
  6. package/dist/announcer/index.d.ts +5 -0
  7. package/dist/announcer/index.js +11 -0
  8. package/dist/attributes/attributes.d.ts +4 -0
  9. package/dist/banner/banner.d.ts +20 -0
  10. package/dist/banner/banner.js +18 -0
  11. package/dist/banner/index.d.ts +5 -0
  12. package/dist/banner/index.js +6 -0
  13. package/dist/bench/bench.d.ts +16 -0
  14. package/dist/bench/bench.js +12 -0
  15. package/dist/bench/index.d.ts +5 -0
  16. package/dist/bench/index.js +6 -0
  17. package/dist/board/board.d.ts +1151 -0
  18. package/dist/board/board.js +449 -0
  19. package/dist/board/index.d.ts +6 -0
  20. package/dist/board/index.js +21 -0
  21. package/dist/button/button.d.ts +54 -0
  22. package/dist/button/button.js +50 -0
  23. package/dist/button/index.d.ts +5 -0
  24. package/dist/button/index.js +9 -0
  25. package/dist/card/card.d.ts +66 -0
  26. package/dist/card/card.js +70 -0
  27. package/dist/card/index.d.ts +5 -0
  28. package/dist/card/index.js +10 -0
  29. package/dist/chip/chip.d.ts +27 -0
  30. package/dist/chip/chip.js +34 -0
  31. package/dist/chip/index.d.ts +5 -0
  32. package/dist/chip/index.js +9 -0
  33. package/dist/choice/choice.d.ts +16 -0
  34. package/dist/choice/choice.js +17 -0
  35. package/dist/choice/index.d.ts +5 -0
  36. package/dist/choice/index.js +6 -0
  37. package/dist/code-editor/code-editor.d.ts +15 -0
  38. package/dist/code-editor/code-editor.js +22 -0
  39. package/dist/code-editor/index.d.ts +5 -0
  40. package/dist/code-editor/index.js +6 -0
  41. package/dist/code-surface/code-surface.d.ts +12 -0
  42. package/dist/code-surface/code-surface.js +12 -0
  43. package/dist/code-surface/index.d.ts +5 -0
  44. package/dist/code-surface/index.js +6 -0
  45. package/dist/command-palette/command-palette.d.ts +579 -0
  46. package/dist/command-palette/command-palette.js +600 -0
  47. package/dist/command-palette/index.d.ts +9 -0
  48. package/dist/command-palette/index.js +32 -0
  49. package/dist/command-palette/keys.d.ts +13 -0
  50. package/dist/command-palette/keys.js +71 -0
  51. package/dist/command-palette/match.d.ts +43 -0
  52. package/dist/command-palette/match.js +45 -0
  53. package/dist/command-palette/message.d.ts +94 -0
  54. package/dist/command-palette/message.js +46 -0
  55. package/dist/confirm-dialog/confirm-dialog.d.ts +287 -0
  56. package/dist/confirm-dialog/confirm-dialog.js +115 -0
  57. package/dist/confirm-dialog/index.d.ts +5 -0
  58. package/dist/confirm-dialog/index.js +17 -0
  59. package/dist/copy-button/copy-button.d.ts +99 -0
  60. package/dist/copy-button/copy-button.js +96 -0
  61. package/dist/copy-button/index.d.ts +5 -0
  62. package/dist/copy-button/index.js +13 -0
  63. package/dist/crumbs/crumbs.d.ts +15 -0
  64. package/dist/crumbs/crumbs.js +11 -0
  65. package/dist/crumbs/index.d.ts +5 -0
  66. package/dist/crumbs/index.js +6 -0
  67. package/dist/deck/deck.d.ts +9 -0
  68. package/dist/deck/deck.js +9 -0
  69. package/dist/deck/index.d.ts +5 -0
  70. package/dist/deck/index.js +6 -0
  71. package/dist/dialog/dialog.d.ts +278 -0
  72. package/dist/dialog/dialog.js +145 -0
  73. package/dist/dialog/fold.d.ts +58 -0
  74. package/dist/dialog/fold.js +63 -0
  75. package/dist/dialog/index.d.ts +6 -0
  76. package/dist/dialog/index.js +21 -0
  77. package/dist/disclosure/disclosure.d.ts +24 -0
  78. package/dist/disclosure/disclosure.js +25 -0
  79. package/dist/disclosure/index.d.ts +5 -0
  80. package/dist/disclosure/index.js +6 -0
  81. package/dist/dom/html-element.js +8 -0
  82. package/dist/drag/drag.d.ts +15 -0
  83. package/dist/drag/drag.js +123 -0
  84. package/dist/drop-zone/drop-zone.d.ts +119 -0
  85. package/dist/drop-zone/drop-zone.js +64 -0
  86. package/dist/drop-zone/index.d.ts +5 -0
  87. package/dist/drop-zone/index.js +14 -0
  88. package/dist/empty-state/empty-state.d.ts +18 -0
  89. package/dist/empty-state/empty-state.js +16 -0
  90. package/dist/empty-state/index.d.ts +5 -0
  91. package/dist/empty-state/index.js +6 -0
  92. package/dist/error-summary/error-summary.d.ts +34 -0
  93. package/dist/error-summary/error-summary.js +33 -0
  94. package/dist/error-summary/index.d.ts +5 -0
  95. package/dist/error-summary/index.js +6 -0
  96. package/dist/field/field.d.ts +35 -0
  97. package/dist/field/field.js +34 -0
  98. package/dist/field/index.d.ts +5 -0
  99. package/dist/field/index.js +6 -0
  100. package/dist/field-grid/field-grid.d.ts +8 -0
  101. package/dist/field-grid/field-grid.js +8 -0
  102. package/dist/field-grid/index.d.ts +5 -0
  103. package/dist/field-grid/index.js +6 -0
  104. package/dist/fields/fields.js +9 -0
  105. package/dist/fieldset/fieldset.d.ts +13 -0
  106. package/dist/fieldset/fieldset.js +13 -0
  107. package/dist/fieldset/index.d.ts +5 -0
  108. package/dist/fieldset/index.js +6 -0
  109. package/dist/filter-chip/filter-chip.d.ts +21 -0
  110. package/dist/filter-chip/filter-chip.js +28 -0
  111. package/dist/filter-chip/index.d.ts +5 -0
  112. package/dist/filter-chip/index.js +6 -0
  113. package/dist/filter-strip/filter-strip.d.ts +12 -0
  114. package/dist/filter-strip/filter-strip.js +13 -0
  115. package/dist/filter-strip/index.d.ts +5 -0
  116. package/dist/filter-strip/index.js +6 -0
  117. package/dist/flash-word/flash-word.d.ts +31 -0
  118. package/dist/flash-word/flash-word.js +31 -0
  119. package/dist/flash-word/index.d.ts +5 -0
  120. package/dist/flash-word/index.js +9 -0
  121. package/dist/focus/focus.d.ts +15 -0
  122. package/dist/focus/focus.js +17 -0
  123. package/dist/focus/index.d.ts +5 -0
  124. package/dist/focus/index.js +9 -0
  125. package/dist/format/format.js +52 -0
  126. package/dist/format/index.d.ts +5 -0
  127. package/dist/format/index.js +6 -0
  128. package/dist/glyph/glyph.d.ts +9 -0
  129. package/dist/glyph/glyph.js +25 -0
  130. package/dist/glyph/glyphs.d.ts +381 -0
  131. package/dist/glyph/glyphs.js +2603 -0
  132. package/dist/glyph/index.d.ts +5 -0
  133. package/dist/glyph/index.js +6 -0
  134. package/dist/group/group.d.ts +8 -0
  135. package/dist/group/group.js +9 -0
  136. package/dist/group/index.d.ts +5 -0
  137. package/dist/group/index.js +6 -0
  138. package/dist/history/history.d.ts +34 -0
  139. package/dist/history/history.js +15 -0
  140. package/dist/history/index.d.ts +5 -0
  141. package/dist/history/index.js +6 -0
  142. package/dist/icon-button/icon-button.d.ts +23 -0
  143. package/dist/icon-button/icon-button.js +23 -0
  144. package/dist/icon-button/index.d.ts +5 -0
  145. package/dist/icon-button/index.js +6 -0
  146. package/dist/identity/identity.d.ts +15 -0
  147. package/dist/identity/identity.js +15 -0
  148. package/dist/identity/index.d.ts +5 -0
  149. package/dist/identity/index.js +6 -0
  150. package/dist/index.d.ts +85 -0
  151. package/dist/index.js +85 -0
  152. package/dist/inline-input/index.d.ts +5 -0
  153. package/dist/inline-input/index.js +20 -0
  154. package/dist/inline-input/inline-input.d.ts +196 -0
  155. package/dist/inline-input/inline-input.js +212 -0
  156. package/dist/key-help/index.d.ts +5 -0
  157. package/dist/key-help/index.js +18 -0
  158. package/dist/key-help/key-help.d.ts +255 -0
  159. package/dist/key-help/key-help.js +137 -0
  160. package/dist/key-hint/index.d.ts +6 -0
  161. package/dist/key-hint/index.js +12 -0
  162. package/dist/key-hint/key-hint.d.ts +13 -0
  163. package/dist/key-hint/key-hint.js +7 -0
  164. package/dist/key-hint/key-label.d.ts +18 -0
  165. package/dist/key-hint/key-label.js +77 -0
  166. package/dist/keymap/keymap.d.ts +11 -0
  167. package/dist/keymap/keymap.js +9 -0
  168. package/dist/keys/keys.js +4 -0
  169. package/dist/line-diff/diff.d.ts +2 -0
  170. package/dist/line-diff/diff.js +73 -0
  171. package/dist/line-diff/index.d.ts +6 -0
  172. package/dist/line-diff/index.js +10 -0
  173. package/dist/line-diff/line-diff.d.ts +21 -0
  174. package/dist/line-diff/line-diff.js +75 -0
  175. package/dist/line-diff/patch.d.ts +15 -0
  176. package/dist/line-diff/patch.js +120 -0
  177. package/dist/link-button/index.d.ts +5 -0
  178. package/dist/link-button/index.js +6 -0
  179. package/dist/link-button/link-button.d.ts +11 -0
  180. package/dist/link-button/link-button.js +10 -0
  181. package/dist/link-state/index.d.ts +5 -0
  182. package/dist/link-state/index.js +6 -0
  183. package/dist/link-state/link-state.d.ts +15 -0
  184. package/dist/link-state/link-state.js +17 -0
  185. package/dist/live-region/index.d.ts +5 -0
  186. package/dist/live-region/index.js +9 -0
  187. package/dist/live-region/live-region.d.ts +39 -0
  188. package/dist/live-region/live-region.js +33 -0
  189. package/dist/loading/index.d.ts +5 -0
  190. package/dist/loading/index.js +6 -0
  191. package/dist/loading/loading.d.ts +19 -0
  192. package/dist/loading/loading.js +16 -0
  193. package/dist/locale/locale.d.ts +3 -0
  194. package/dist/locale/locale.js +5 -0
  195. package/dist/mark/index.d.ts +5 -0
  196. package/dist/mark/index.js +6 -0
  197. package/dist/mark/mark.d.ts +15 -0
  198. package/dist/mark/mark.js +30 -0
  199. package/dist/menu/index.d.ts +7 -0
  200. package/dist/menu/index.js +25 -0
  201. package/dist/menu/item.d.ts +236 -0
  202. package/dist/menu/item.js +19 -0
  203. package/dist/menu/menu.d.ts +206 -0
  204. package/dist/menu/menu.js +208 -0
  205. package/dist/menu/slip.js +163 -0
  206. package/dist/meter/index.d.ts +5 -0
  207. package/dist/meter/index.js +6 -0
  208. package/dist/meter/meter.d.ts +38 -0
  209. package/dist/meter/meter.js +69 -0
  210. package/dist/monogram/monogram.js +33 -0
  211. package/dist/nav-strip/index.d.ts +5 -0
  212. package/dist/nav-strip/index.js +6 -0
  213. package/dist/nav-strip/nav-strip.d.ts +19 -0
  214. package/dist/nav-strip/nav-strip.js +21 -0
  215. package/dist/notice/index.d.ts +5 -0
  216. package/dist/notice/index.js +6 -0
  217. package/dist/notice/notice.d.ts +23 -0
  218. package/dist/notice/notice.js +35 -0
  219. package/dist/outcome/index.d.ts +5 -0
  220. package/dist/outcome/index.js +6 -0
  221. package/dist/outcome/outcome.d.ts +19 -0
  222. package/dist/outcome/outcome.js +14 -0
  223. package/dist/page-head/index.d.ts +5 -0
  224. package/dist/page-head/index.js +6 -0
  225. package/dist/page-head/page-head.d.ts +13 -0
  226. package/dist/page-head/page-head.js +10 -0
  227. package/dist/panel/index.d.ts +5 -0
  228. package/dist/panel/index.js +6 -0
  229. package/dist/panel/panel.d.ts +35 -0
  230. package/dist/panel/panel.js +25 -0
  231. package/dist/password-field/index.d.ts +5 -0
  232. package/dist/password-field/index.js +6 -0
  233. package/dist/password-field/password-field.d.ts +33 -0
  234. package/dist/password-field/password-field.js +39 -0
  235. package/dist/places/index.d.ts +5 -0
  236. package/dist/places/index.js +6 -0
  237. package/dist/places/places.d.ts +32 -0
  238. package/dist/places/places.js +22 -0
  239. package/dist/props-list/index.d.ts +5 -0
  240. package/dist/props-list/index.js +6 -0
  241. package/dist/props-list/props-list.d.ts +18 -0
  242. package/dist/props-list/props-list.js +12 -0
  243. package/dist/prose/index.d.ts +5 -0
  244. package/dist/prose/index.js +6 -0
  245. package/dist/prose/prose.d.ts +14 -0
  246. package/dist/prose/prose.js +6 -0
  247. package/dist/query-chip/index.d.ts +5 -0
  248. package/dist/query-chip/index.js +6 -0
  249. package/dist/query-chip/query-chip.d.ts +18 -0
  250. package/dist/query-chip/query-chip.js +17 -0
  251. package/dist/radio-choices/index.d.ts +5 -0
  252. package/dist/radio-choices/index.js +12 -0
  253. package/dist/radio-choices/radio-choices.d.ts +105 -0
  254. package/dist/radio-choices/radio-choices.js +56 -0
  255. package/dist/rail/index.d.ts +5 -0
  256. package/dist/rail/index.js +22 -0
  257. package/dist/rail/rail.d.ts +403 -0
  258. package/dist/rail/rail.js +355 -0
  259. package/dist/reel/index.d.ts +6 -0
  260. package/dist/reel/index.js +26 -0
  261. package/dist/reel/layout.d.ts +58 -0
  262. package/dist/reel/layout.js +378 -0
  263. package/dist/reel/reel.d.ts +1070 -0
  264. package/dist/reel/reel.js +1019 -0
  265. package/dist/remote/index.d.ts +5 -0
  266. package/dist/remote/index.js +6 -0
  267. package/dist/remote/remote.d.ts +28 -0
  268. package/dist/remote/remote.js +41 -0
  269. package/dist/rows/index.d.ts +5 -0
  270. package/dist/rows/index.js +12 -0
  271. package/dist/rows/rows.d.ts +116 -0
  272. package/dist/rows/rows.js +67 -0
  273. package/dist/scheme/index.d.ts +6 -0
  274. package/dist/scheme/index.js +10 -0
  275. package/dist/scheme/scheme-switch.d.ts +98 -0
  276. package/dist/scheme/scheme-switch.js +118 -0
  277. package/dist/scheme/scheme.d.ts +5 -0
  278. package/dist/scheme/scheme.js +16 -0
  279. package/dist/scheme/script.d.ts +8 -0
  280. package/dist/scheme/script.js +10 -0
  281. package/dist/secret/index.d.ts +5 -0
  282. package/dist/secret/index.js +6 -0
  283. package/dist/secret/secret.d.ts +13 -0
  284. package/dist/secret/secret.js +9 -0
  285. package/dist/segmented/index.d.ts +5 -0
  286. package/dist/segmented/index.js +6 -0
  287. package/dist/segmented/segmented.d.ts +17 -0
  288. package/dist/segmented/segmented.js +17 -0
  289. package/dist/select-field/index.d.ts +5 -0
  290. package/dist/select-field/index.js +6 -0
  291. package/dist/select-field/select-field.d.ts +38 -0
  292. package/dist/select-field/select-field.js +29 -0
  293. package/dist/sheet/index.d.ts +5 -0
  294. package/dist/sheet/index.js +6 -0
  295. package/dist/sheet/sheet.d.ts +16 -0
  296. package/dist/sheet/sheet.js +15 -0
  297. package/dist/skip-link/index.d.ts +5 -0
  298. package/dist/skip-link/index.js +9 -0
  299. package/dist/skip-link/skip-link.d.ts +23 -0
  300. package/dist/skip-link/skip-link.js +36 -0
  301. package/dist/slot/slot.js +8 -0
  302. package/dist/sortable/index.d.ts +5 -0
  303. package/dist/sortable/index.js +16 -0
  304. package/dist/sortable/sortable.d.ts +1125 -0
  305. package/dist/sortable/sortable.js +431 -0
  306. package/dist/stack/index.d.ts +5 -0
  307. package/dist/stack/index.js +6 -0
  308. package/dist/stack/stack.d.ts +15 -0
  309. package/dist/stack/stack.js +12 -0
  310. package/dist/stage/index.d.ts +5 -0
  311. package/dist/stage/index.js +6 -0
  312. package/dist/stage/stage.d.ts +14 -0
  313. package/dist/stage/stage.js +11 -0
  314. package/dist/stat/index.d.ts +5 -0
  315. package/dist/stat/index.js +6 -0
  316. package/dist/stat/stat.d.ts +18 -0
  317. package/dist/stat/stat.js +13 -0
  318. package/dist/status-bar/index.d.ts +6 -0
  319. package/dist/status-bar/index.js +11 -0
  320. package/dist/status-bar/status-bar.d.ts +28 -0
  321. package/dist/status-bar/status-bar.js +19 -0
  322. package/dist/subscription/prefix-keys.js +12 -0
  323. package/dist/table/index.d.ts +5 -0
  324. package/dist/table/index.js +6 -0
  325. package/dist/table/table.d.ts +26 -0
  326. package/dist/table/table.js +18 -0
  327. package/dist/tabs/index.d.ts +5 -0
  328. package/dist/tabs/index.js +14 -0
  329. package/dist/tabs/tabs.d.ts +125 -0
  330. package/dist/tabs/tabs.js +57 -0
  331. package/dist/tag/index.d.ts +5 -0
  332. package/dist/tag/index.js +6 -0
  333. package/dist/tag/tag.d.ts +16 -0
  334. package/dist/tag/tag.js +25 -0
  335. package/dist/text-button/index.d.ts +5 -0
  336. package/dist/text-button/index.js +6 -0
  337. package/dist/text-button/text-button.d.ts +8 -0
  338. package/dist/text-button/text-button.js +12 -0
  339. package/dist/textarea-field/index.d.ts +5 -0
  340. package/dist/textarea-field/index.js +6 -0
  341. package/dist/textarea-field/textarea-field.d.ts +28 -0
  342. package/dist/textarea-field/textarea-field.js +30 -0
  343. package/dist/time/index.d.ts +5 -0
  344. package/dist/time/index.js +9 -0
  345. package/dist/time/time.d.ts +38 -0
  346. package/dist/time/time.js +63 -0
  347. package/dist/tips/index.d.ts +5 -0
  348. package/dist/tips/index.js +14 -0
  349. package/dist/tips/tips.d.ts +339 -0
  350. package/dist/tips/tips.js +308 -0
  351. package/dist/toast/index.d.ts +5 -0
  352. package/dist/toast/index.js +17 -0
  353. package/dist/toast/stack.d.ts +7 -0
  354. package/dist/toast/stack.js +23 -0
  355. package/dist/toast/toast.d.ts +559 -0
  356. package/dist/toast/toast.js +269 -0
  357. package/dist/toc/index.d.ts +5 -0
  358. package/dist/toc/index.js +9 -0
  359. package/dist/toc/toc.d.ts +42 -0
  360. package/dist/toc/toc.js +35 -0
  361. package/dist/top-bar/bar-height.d.ts +26 -0
  362. package/dist/top-bar/bar-height.js +43 -0
  363. package/dist/top-bar/index.d.ts +6 -0
  364. package/dist/top-bar/index.js +12 -0
  365. package/dist/top-bar/top-bar.d.ts +19 -0
  366. package/dist/top-bar/top-bar.js +18 -0
  367. package/dist/wall/index.d.ts +5 -0
  368. package/dist/wall/index.js +9 -0
  369. package/dist/wall/wall.d.ts +16 -0
  370. package/dist/wall/wall.js +15 -0
  371. package/dist/window/index.d.ts +5 -0
  372. package/dist/window/index.js +6 -0
  373. package/dist/window/window.d.ts +28 -0
  374. package/dist/window/window.js +29 -0
  375. package/dist/wordmark/index.d.ts +5 -0
  376. package/dist/wordmark/index.js +6 -0
  377. package/dist/wordmark/wordmark.d.ts +10 -0
  378. package/dist/wordmark/wordmark.js +10 -0
  379. package/dist/wrap/index.d.ts +5 -0
  380. package/dist/wrap/index.js +6 -0
  381. package/dist/wrap/wrap.d.ts +12 -0
  382. package/dist/wrap/wrap.js +9 -0
  383. package/fonts/DepartureMono-Regular.woff2 +0 -0
  384. package/fonts/LICENSE.txt +2 -0
  385. package/package.json +57 -3
  386. package/src/pixel-paper.css +4611 -0
  387. package/src/tokens.css +151 -0
@@ -0,0 +1,403 @@
1
+ import { KeyHintConfig } from "../button/button.js";
2
+ import { Effect, Option, Schema } from "effect";
3
+ import * as Command from "foldkit/command";
4
+ import { Html } from "foldkit/html";
5
+ import * as Mount from "foldkit/mount";
6
+ import * as Subscription from "foldkit/subscription";
7
+ import * as Update from "foldkit/update";
8
+ /** Schema for a rail: whether it is open as a drawer (at 900px and under; wider, it is always
9
+ * in the page and this stays false), and its splitter while a pointer drags it. Its width,
10
+ * and whether the reader hid it, are the parent's. */
11
+ export declare const Model: Schema.Struct<{
12
+ readonly id: Schema.String;
13
+ readonly isOpen: Schema.Boolean;
14
+ readonly maybeResizing: Schema.Option<Schema.Struct<{
15
+ readonly pointerId: Schema.Finite;
16
+ readonly pressX: Schema.Finite;
17
+ readonly fromWidth: Schema.Finite;
18
+ readonly width: Schema.Finite;
19
+ }>>;
20
+ }>;
21
+ export type Model = typeof Model.Type;
22
+ /** Union of all Messages a rail can produce. `ClosedDrawer` is the browser closing it on
23
+ * Escape or a press on the veil; `BlurredDrawer` is focus leaving it; `WidenedPastDrawer` is
24
+ * the window growing past 900px while it is open, where the rail is back in the page. */
25
+ export declare const Message: import("foldkit/message").MessageUnion<{
26
+ readonly ClickedOpen: {};
27
+ readonly ClickedToggle: {};
28
+ readonly PressedSplitter: {
29
+ pointerId: Schema.Finite;
30
+ clientX: Schema.Finite;
31
+ width: Schema.Finite;
32
+ };
33
+ readonly MovedSplitter: {
34
+ clientX: Schema.Finite;
35
+ };
36
+ readonly ReleasedSplitter: {
37
+ clientX: Schema.Finite;
38
+ };
39
+ readonly CancelledSplitter: {};
40
+ readonly PressedEscape: {};
41
+ readonly PressedSplitterKey: {
42
+ width: Schema.Finite;
43
+ };
44
+ readonly ClickedClose: {};
45
+ readonly ClosedDrawer: {};
46
+ readonly BlurredDrawer: {};
47
+ readonly WidenedPastDrawer: {};
48
+ readonly CompletedShowRailDrawer: {};
49
+ readonly CompletedHideRailDrawer: {};
50
+ readonly CompletedFocusRailToggle: {};
51
+ }>;
52
+ export type Message = typeof Message.Type;
53
+ /** What a rail asks of its parent. `ResizedRail`: its splitter was let go, or stepped by a
54
+ * key, at `width` pixels, within the rail's bounds; the parent keeps it (per client) and
55
+ * passes it back as the view's `maybeWidth`. `ToggledRail`: its toggle was pressed; the
56
+ * parent flips whether it keeps the rail hidden (per client) and passes it back as the view's
57
+ * `isHidden`. */
58
+ export declare const OutMessage: import("foldkit/message").MessageUnion<{
59
+ readonly ResizedRail: {
60
+ width: Schema.Finite;
61
+ };
62
+ readonly ToggledRail: {};
63
+ }>;
64
+ export type OutMessage = typeof OutMessage.Type;
65
+ /** Configuration for creating a rail with `init`. The `id` is the rail's, unique in the
66
+ * document. */
67
+ export type InitConfig = Readonly<{
68
+ id: string;
69
+ }>;
70
+ /** Creates a rail, closed, its splitter at rest. */
71
+ export declare const init: (config: InitConfig) => Model;
72
+ /** The rail's id, unique in the document. */
73
+ export declare const id: (model: Model) => string;
74
+ /** Whether the rail is open as a drawer: a parent pauses its own page keys while it is. */
75
+ export declare const isOpen: (model: Model) => boolean;
76
+ /** Opens the rail as a drawer over the page and puts focus on its first control past its
77
+ * head. */
78
+ export declare const ShowRailDrawer: Command.CommandDefinitionWithArgs<"ShowRailDrawer", {
79
+ railId: Schema.String;
80
+ }, Effect.Effect<{
81
+ readonly _tag: "CompletedShowRailDrawer";
82
+ }, never, never>>;
83
+ /** Closes the drawer, and puts focus back on the button that opened it when asked. */
84
+ export declare const HideRailDrawer: Command.CommandDefinitionWithArgs<"HideRailDrawer", {
85
+ railId: Schema.String;
86
+ buttonId: Schema.String;
87
+ isReturningFocus: Schema.Boolean;
88
+ }, Effect.Effect<{
89
+ readonly _tag: "CompletedHideRailDrawer";
90
+ }, never, never>>;
91
+ /** Puts focus on the rail's toggle once the rail has folded or unfolded, if focus was in the
92
+ * rail or on its splitter: folding takes away every control in it but the toggle, which
93
+ * brings it back, and the splitter with them. Focus anywhere else stays where it is. */
94
+ export declare const FocusRailToggle: Command.CommandDefinitionWithArgs<"FocusRailToggle", {
95
+ railId: Schema.String;
96
+ toggleId: Schema.String;
97
+ }, Effect.Effect<{
98
+ readonly _tag: "CompletedFocusRailToggle";
99
+ }, never, never>>;
100
+ type UpdateReturn = Update.Return<Model, Message>;
101
+ /** Closes the rail's drawer, focus back on its button. */
102
+ export declare const close: (model: Model) => UpdateReturn;
103
+ /** Folds or unfolds the rail from a key of the parent's: the parent flips whether it keeps the
104
+ * rail hidden, as it does for `ToggledRail`, and folds this in, which moves focus in the rail
105
+ * onto the toggle. */
106
+ export declare const toggle: (model: Model) => UpdateReturn;
107
+ /** Processes a rail Message and returns the next Model, Commands and OutMessage: a splitter let
108
+ * go where it changes the width, or stepped by a key, asks for the width, and the toggle asks
109
+ * to fold or unfold the rail. */
110
+ export declare const update: (model: Model, message: Message) => Readonly<{
111
+ model: {
112
+ readonly id: string;
113
+ readonly isOpen: boolean;
114
+ readonly maybeResizing: Option.Option<{
115
+ readonly pointerId: number;
116
+ readonly pressX: number;
117
+ readonly fromWidth: number;
118
+ readonly width: number;
119
+ }>;
120
+ };
121
+ commands?: Update.Commands<{
122
+ readonly _tag: "CompletedShowRailDrawer";
123
+ } | {
124
+ readonly _tag: "CompletedHideRailDrawer";
125
+ } | {
126
+ readonly _tag: "CompletedFocusRailToggle";
127
+ } | {
128
+ readonly _tag: "BlurredDrawer";
129
+ } | {
130
+ readonly _tag: "CancelledSplitter";
131
+ } | {
132
+ readonly _tag: "ClickedClose";
133
+ } | {
134
+ readonly _tag: "ClickedOpen";
135
+ } | {
136
+ readonly _tag: "ClickedToggle";
137
+ } | {
138
+ readonly _tag: "ClosedDrawer";
139
+ } | {
140
+ readonly _tag: "MovedSplitter";
141
+ readonly clientX: number;
142
+ } | {
143
+ readonly _tag: "PressedEscape";
144
+ } | {
145
+ readonly _tag: "PressedSplitter";
146
+ readonly pointerId: number;
147
+ readonly clientX: number;
148
+ readonly width: number;
149
+ } | {
150
+ readonly _tag: "PressedSplitterKey";
151
+ readonly width: number;
152
+ } | {
153
+ readonly _tag: "ReleasedSplitter";
154
+ readonly clientX: number;
155
+ } | {
156
+ readonly _tag: "WidenedPastDrawer";
157
+ }, never>;
158
+ outMessage?: {
159
+ readonly _tag: "ResizedRail";
160
+ readonly width: number;
161
+ } | {
162
+ readonly _tag: "ToggledRail";
163
+ };
164
+ }>;
165
+ /** Follows the drawer the browser shows: the browser closing it (Escape, a press on the
166
+ * veil), focus leaving it while it is open, and the window growing past its width while it
167
+ * is open, each of which closes the rail. */
168
+ export declare const FollowRailDrawer: Mount.MountDefinitionNoArgs<"FollowRailDrawer", {
169
+ readonly _tag: "BlurredDrawer";
170
+ } | {
171
+ readonly _tag: "ClosedDrawer";
172
+ } | {
173
+ readonly _tag: "WidenedPastDrawer";
174
+ }>;
175
+ /** A dragged splitter follows the pointer, and Escape puts it back before a dialog or the
176
+ * page sees it, from listeners that run only while it is dragged. Lift them into the
177
+ * application's Subscriptions behind a key prefix of the parent's: `subscriptions("rail")` is
178
+ * keyed `railResize` and `railEscape`. */
179
+ export declare const subscriptions: <Prefix extends string>(keyPrefix: Prefix) => {
180
+ readonly resize: Subscription.EntryWithoutKeepAlive<{
181
+ readonly id: string;
182
+ readonly isOpen: boolean;
183
+ readonly maybeResizing: Option.Option<{
184
+ readonly pointerId: number;
185
+ readonly pressX: number;
186
+ readonly fromWidth: number;
187
+ readonly width: number;
188
+ }>;
189
+ }, {
190
+ readonly _tag: "CompletedShowRailDrawer";
191
+ } | {
192
+ readonly _tag: "CompletedHideRailDrawer";
193
+ } | {
194
+ readonly _tag: "CompletedFocusRailToggle";
195
+ } | {
196
+ readonly _tag: "BlurredDrawer";
197
+ } | {
198
+ readonly _tag: "CancelledSplitter";
199
+ } | {
200
+ readonly _tag: "ClickedClose";
201
+ } | {
202
+ readonly _tag: "ClickedOpen";
203
+ } | {
204
+ readonly _tag: "ClickedToggle";
205
+ } | {
206
+ readonly _tag: "ClosedDrawer";
207
+ } | {
208
+ readonly _tag: "MovedSplitter";
209
+ readonly clientX: number;
210
+ } | {
211
+ readonly _tag: "PressedEscape";
212
+ } | {
213
+ readonly _tag: "PressedSplitter";
214
+ readonly pointerId: number;
215
+ readonly clientX: number;
216
+ readonly width: number;
217
+ } | {
218
+ readonly _tag: "PressedSplitterKey";
219
+ readonly width: number;
220
+ } | {
221
+ readonly _tag: "ReleasedSplitter";
222
+ readonly clientX: number;
223
+ } | {
224
+ readonly _tag: "WidenedPastDrawer";
225
+ }, {
226
+ readonly maybePointerId: Option.Option<number>;
227
+ }, never> & {
228
+ readonly __subscription: never;
229
+ };
230
+ readonly escape: Subscription.EntryWithoutKeepAlive<{
231
+ readonly id: string;
232
+ readonly isOpen: boolean;
233
+ readonly maybeResizing: Option.Option<{
234
+ readonly pointerId: number;
235
+ readonly pressX: number;
236
+ readonly fromWidth: number;
237
+ readonly width: number;
238
+ }>;
239
+ }, {
240
+ readonly _tag: "CompletedShowRailDrawer";
241
+ } | {
242
+ readonly _tag: "CompletedHideRailDrawer";
243
+ } | {
244
+ readonly _tag: "CompletedFocusRailToggle";
245
+ } | {
246
+ readonly _tag: "BlurredDrawer";
247
+ } | {
248
+ readonly _tag: "CancelledSplitter";
249
+ } | {
250
+ readonly _tag: "ClickedClose";
251
+ } | {
252
+ readonly _tag: "ClickedOpen";
253
+ } | {
254
+ readonly _tag: "ClickedToggle";
255
+ } | {
256
+ readonly _tag: "ClosedDrawer";
257
+ } | {
258
+ readonly _tag: "MovedSplitter";
259
+ readonly clientX: number;
260
+ } | {
261
+ readonly _tag: "PressedEscape";
262
+ } | {
263
+ readonly _tag: "PressedSplitter";
264
+ readonly pointerId: number;
265
+ readonly clientX: number;
266
+ readonly width: number;
267
+ } | {
268
+ readonly _tag: "PressedSplitterKey";
269
+ readonly width: number;
270
+ } | {
271
+ readonly _tag: "ReleasedSplitter";
272
+ readonly clientX: number;
273
+ } | {
274
+ readonly _tag: "WidenedPastDrawer";
275
+ }, {
276
+ readonly isResizing: boolean;
277
+ }, never> & {
278
+ readonly __subscription: never;
279
+ };
280
+ } extends (infer T) ? { readonly [Key in keyof T as `${Prefix}${Capitalize<Key>}`]: T[Key]; } : never;
281
+ /** Per-render inputs passed to `view` through `h.submodel`'s `viewInputs`. */
282
+ export type ViewInputs = Readonly<{
283
+ /** Names the rail for screen readers, and its button, drawer head and splitter
284
+ * (`"collections"`). */
285
+ label: string;
286
+ /** The width the reader gave the rail, in pixels, as the parent keeps it from `ResizedRail`
287
+ * (for this client: another reader's window is not this one's); none for the stylesheet's.
288
+ * A width out of the rail's bounds prints at the nearer bound. */
289
+ maybeWidth: Option.Option<number>;
290
+ /** Whether the reader folded the rail to its first panel's title bar, as the parent keeps it
291
+ * from `ToggledRail` (for this client, as it keeps the width). The drawer ignores it. */
292
+ isHidden: boolean;
293
+ /** The parent's key for the toggle, which its tip prints after its label; the parent binds
294
+ * it to `toggle`. */
295
+ maybeToggleKeyHint: Option.Option<KeyHintConfig>;
296
+ /** The rail's panels: a tree, places, filters, given the toggle that folds the rail to put in
297
+ * its first panel's `lead`. A function because a Submodel's viewInputs may hold functions
298
+ * only at the top level, and Foldkit runs this one in the parent's boundary, so the
299
+ * handlers in what it returns dispatch the parent's Messages. */
300
+ toAsideView: (toggle: Html) => readonly Html[];
301
+ /** The page beside the rail, `main.deck#main` or `main.bench#main`, given the button that
302
+ * opens the drawer to print first in it. A function because it receives that button, and
303
+ * runs in the parent's boundary like `toAsideView`. */
304
+ toDeckView: (openButton: Html) => Html;
305
+ }>;
306
+ /**
307
+ * A column of panels beside the deck, fixed under the top bar: `div.railed >` the deck, then
308
+ * `aside.rail[popover="auto"][aria-label]`, then its splitter, `div.rail-resize[role="separator"]`,
309
+ * on its right edge. What comes before its last panel keeps its height, and the last panel
310
+ * shrinks to the room left, its bar and foot staying while its body scrolls. One element
311
+ * serves both layouts, so nothing in it renders twice or loses its state. At 900px and under it leaves the page, and
312
+ * `span.rail-open > button.btn.small` at the top of the deck opens the same element as a drawer
313
+ * over a veil, its head (the name and a close glyph) showing. Opening focuses its first
314
+ * control; Escape, a press on the veil, the close glyph, focus leaving or the window growing
315
+ * past 900px closes it, and the first three put focus back on the button.
316
+ *
317
+ * Its splitter sizes it, by a pointer (previewed as it moves) or the side arrows, within its
318
+ * bounds, and reports the width as `ResizedRail` for the parent to keep and pass back as
319
+ * `maybeWidth`, which the view sets as `--railed-width` on `div.railed`, so the page's padding
320
+ * and the rail's width follow it (without one, `--rail`). The drawer keeps its own width. Lift
321
+ * `subscriptions(keyPrefix)` into the application's, or a dragged splitter follows nothing.
322
+ *
323
+ * Its toggle, `span.rail-toggle > button.iconbtn.quiet[aria-expanded]` ("Hide <label>"), comes
324
+ * to `toAsideView` to print as the first panel's `lead`. Pressed, it reports `ToggledRail` for
325
+ * the parent to keep and pass back as `isHidden`: `div.railed.folded` then stands the first
326
+ * panel's title bar on end on the ground (the toggle at its top, "Show <label>"), the rest of
327
+ * the rail and its splitter gone, and the deck takes the width. Focus in the rail lands on the
328
+ * toggle. The drawer, at 900px and under, prints neither the toggle nor the fold.
329
+ *
330
+ * Its state is its own, not `@foldkit/ui`'s Popover: that panel is placed by Floating UI and
331
+ * rendered only while open, and this one is always in the page, placed by the stylesheet, and
332
+ * opened as a native popover so the browser keeps it in the top layer.
333
+ */
334
+ export declare const view: import("foldkit/submodel").View<{
335
+ readonly id: string;
336
+ readonly isOpen: boolean;
337
+ readonly maybeResizing: Option.Option<{
338
+ readonly pointerId: number;
339
+ readonly pressX: number;
340
+ readonly fromWidth: number;
341
+ readonly width: number;
342
+ }>;
343
+ }, {
344
+ readonly _tag: "CompletedShowRailDrawer";
345
+ } | {
346
+ readonly _tag: "CompletedHideRailDrawer";
347
+ } | {
348
+ readonly _tag: "CompletedFocusRailToggle";
349
+ } | {
350
+ readonly _tag: "BlurredDrawer";
351
+ } | {
352
+ readonly _tag: "CancelledSplitter";
353
+ } | {
354
+ readonly _tag: "ClickedClose";
355
+ } | {
356
+ readonly _tag: "ClickedOpen";
357
+ } | {
358
+ readonly _tag: "ClickedToggle";
359
+ } | {
360
+ readonly _tag: "ClosedDrawer";
361
+ } | {
362
+ readonly _tag: "MovedSplitter";
363
+ readonly clientX: number;
364
+ } | {
365
+ readonly _tag: "PressedEscape";
366
+ } | {
367
+ readonly _tag: "PressedSplitter";
368
+ readonly pointerId: number;
369
+ readonly clientX: number;
370
+ readonly width: number;
371
+ } | {
372
+ readonly _tag: "PressedSplitterKey";
373
+ readonly width: number;
374
+ } | {
375
+ readonly _tag: "ReleasedSplitter";
376
+ readonly clientX: number;
377
+ } | {
378
+ readonly _tag: "WidenedPastDrawer";
379
+ }, Readonly<{
380
+ /** Names the rail for screen readers, and its button, drawer head and splitter
381
+ * (`"collections"`). */
382
+ label: string;
383
+ /** The width the reader gave the rail, in pixels, as the parent keeps it from `ResizedRail`
384
+ * (for this client: another reader's window is not this one's); none for the stylesheet's.
385
+ * A width out of the rail's bounds prints at the nearer bound. */
386
+ maybeWidth: Option.Option<number>;
387
+ /** Whether the reader folded the rail to its first panel's title bar, as the parent keeps it
388
+ * from `ToggledRail` (for this client, as it keeps the width). The drawer ignores it. */
389
+ isHidden: boolean;
390
+ /** The parent's key for the toggle, which its tip prints after its label; the parent binds
391
+ * it to `toggle`. */
392
+ maybeToggleKeyHint: Option.Option<KeyHintConfig>;
393
+ /** The rail's panels: a tree, places, filters, given the toggle that folds the rail to put in
394
+ * its first panel's `lead`. A function because a Submodel's viewInputs may hold functions
395
+ * only at the top level, and Foldkit runs this one in the parent's boundary, so the
396
+ * handlers in what it returns dispatch the parent's Messages. */
397
+ toAsideView: (toggle: Html) => readonly Html[];
398
+ /** The page beside the rail, `main.deck#main` or `main.bench#main`, given the button that
399
+ * opens the drawer to print first in it. A function because it receives that button, and
400
+ * runs in the parent's boundary like `toAsideView`. */
401
+ toDeckView: (openButton: Html) => Html;
402
+ }>>;
403
+ export {};