@gjermundgaraba-designs/pixel-paper 0.26.0 → 0.27.0

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 (940) hide show
  1. package/DESIGN.md +28 -3
  2. package/dist/src/adapters/diagram.d.ts +38 -0
  3. package/dist/src/adapters/diagram.d.ts.map +1 -0
  4. package/dist/src/adapters/diagram.js +206 -0
  5. package/dist/src/adapters/mermaid.d.ts +2 -20
  6. package/dist/src/adapters/mermaid.d.ts.map +1 -1
  7. package/dist/src/adapters/mermaid.js +9 -229
  8. package/dist/src/announcer/announcer.d.ts +0 -4
  9. package/dist/src/announcer/announcer.d.ts.map +1 -1
  10. package/dist/src/announcer/announcer.js +19 -18
  11. package/dist/src/attributes/attributes.d.ts.map +1 -1
  12. package/dist/src/{audioFrame/audioFrame.d.ts → audio-frame/audio-frame.d.ts} +1 -1
  13. package/dist/src/audio-frame/audio-frame.d.ts.map +1 -0
  14. package/dist/src/{audioFrame/audioFrame.js → audio-frame/audio-frame.js} +1 -1
  15. package/dist/src/audio-frame/index.d.ts +3 -0
  16. package/dist/src/audio-frame/index.d.ts.map +1 -0
  17. package/dist/src/audio-frame/index.js +1 -0
  18. package/dist/src/banner/banner.d.ts.map +1 -1
  19. package/dist/src/banner/index.d.ts.map +1 -1
  20. package/dist/src/{barChart/barChart.d.ts → bar-chart/bar-chart.d.ts} +2 -2
  21. package/dist/src/bar-chart/bar-chart.d.ts.map +1 -0
  22. package/dist/src/{barChart/barChart.js → bar-chart/bar-chart.js} +40 -35
  23. package/dist/src/bar-chart/index.d.ts +3 -0
  24. package/dist/src/bar-chart/index.d.ts.map +1 -0
  25. package/dist/src/bar-chart/index.js +1 -0
  26. package/dist/src/bench/bench.d.ts.map +1 -1
  27. package/dist/src/bench/index.d.ts.map +1 -1
  28. package/dist/src/board/board.d.ts +45 -46
  29. package/dist/src/board/board.d.ts.map +1 -1
  30. package/dist/src/board/board.js +76 -102
  31. package/dist/src/board/index.d.ts +1 -1
  32. package/dist/src/board/index.d.ts.map +1 -1
  33. package/dist/src/button/button.d.ts +1 -2
  34. package/dist/src/button/button.d.ts.map +1 -1
  35. package/dist/src/button/button.js +7 -5
  36. package/dist/src/button/index.d.ts +1 -1
  37. package/dist/src/button/index.d.ts.map +1 -1
  38. package/dist/src/card/card.d.ts.map +1 -1
  39. package/dist/src/card/card.js +4 -2
  40. package/dist/src/card/index.d.ts.map +1 -1
  41. package/dist/src/{chartTable/chartTable.d.ts → chart-table/chart-table.d.ts} +4 -14
  42. package/dist/src/chart-table/chart-table.d.ts.map +1 -0
  43. package/dist/src/{chartTable/chartTable.js → chart-table/chart-table.js} +9 -16
  44. package/dist/src/chip/chip.d.ts.map +1 -1
  45. package/dist/src/chip/chip.js +4 -2
  46. package/dist/src/chip/index.d.ts.map +1 -1
  47. package/dist/src/choice/choice.d.ts.map +1 -1
  48. package/dist/src/choice/choice.js +3 -1
  49. package/dist/src/choice/index.d.ts.map +1 -1
  50. package/dist/src/choices/choices.d.ts.map +1 -1
  51. package/dist/src/choices/index.d.ts.map +1 -1
  52. package/dist/src/{codeEditor/codeEditor.d.ts → code-editor/code-editor.d.ts} +1 -1
  53. package/dist/src/code-editor/code-editor.d.ts.map +1 -0
  54. package/dist/src/{codeEditor/codeEditor.js → code-editor/code-editor.js} +2 -2
  55. package/dist/src/code-editor/index.d.ts +3 -0
  56. package/dist/src/code-editor/index.d.ts.map +1 -0
  57. package/dist/src/code-editor/index.js +1 -0
  58. package/dist/src/{codeSurface/codeSurface.d.ts → code-surface/code-surface.d.ts} +1 -1
  59. package/dist/src/code-surface/code-surface.d.ts.map +1 -0
  60. package/dist/src/{codeSurface/codeSurface.js → code-surface/code-surface.js} +6 -1
  61. package/dist/src/code-surface/index.d.ts +3 -0
  62. package/dist/src/code-surface/index.d.ts.map +1 -0
  63. package/dist/src/code-surface/index.js +1 -0
  64. package/dist/src/{commandPalette/commandPalette.d.ts → command-palette/command-palette.d.ts} +85 -77
  65. package/dist/src/command-palette/command-palette.d.ts.map +1 -0
  66. package/dist/src/command-palette/command-palette.js +625 -0
  67. package/dist/src/{commandPalette → command-palette}/index.d.ts +2 -2
  68. package/dist/src/command-palette/index.d.ts.map +1 -0
  69. package/dist/src/{commandPalette → command-palette}/index.js +1 -1
  70. package/dist/src/{commandPalette → command-palette}/keys.d.ts +0 -21
  71. package/dist/src/command-palette/keys.d.ts.map +1 -0
  72. package/dist/src/command-palette/keys.js +85 -0
  73. package/dist/src/{commandPalette → command-palette}/match.d.ts +5 -11
  74. package/dist/src/command-palette/match.d.ts.map +1 -0
  75. package/dist/src/{commandPalette → command-palette}/match.js +20 -24
  76. package/dist/src/{commandPalette → command-palette}/message.d.ts +37 -26
  77. package/dist/src/command-palette/message.d.ts.map +1 -0
  78. package/dist/src/{commandPalette → command-palette}/message.js +8 -20
  79. package/dist/src/{confirmDialog/confirmDialog.d.ts → confirm-dialog/confirm-dialog.d.ts} +1 -1
  80. package/dist/src/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  81. package/dist/src/{confirmDialog/confirmDialog.js → confirm-dialog/confirm-dialog.js} +18 -23
  82. package/dist/src/confirm-dialog/index.d.ts +3 -0
  83. package/dist/src/confirm-dialog/index.d.ts.map +1 -0
  84. package/dist/src/{confirmDialog → confirm-dialog}/index.js +1 -1
  85. package/dist/src/{contextMenu/contextMenu.d.ts → context-menu/context-menu.d.ts} +18 -21
  86. package/dist/src/context-menu/context-menu.d.ts.map +1 -0
  87. package/dist/src/{contextMenu/contextMenu.js → context-menu/context-menu.js} +45 -57
  88. package/dist/src/{contextMenu → context-menu}/index.d.ts +2 -2
  89. package/dist/src/context-menu/index.d.ts.map +1 -0
  90. package/dist/src/{contextMenu → context-menu}/index.js +1 -1
  91. package/dist/src/{copyButton/copyButton.d.ts → copy-button/copy-button.d.ts} +5 -7
  92. package/dist/src/copy-button/copy-button.d.ts.map +1 -0
  93. package/dist/src/{copyButton/copyButton.js → copy-button/copy-button.js} +18 -27
  94. package/dist/src/copy-button/index.d.ts +3 -0
  95. package/dist/src/copy-button/index.d.ts.map +1 -0
  96. package/dist/src/copy-button/index.js +1 -0
  97. package/dist/src/crumbs/crumbs.d.ts +1 -1
  98. package/dist/src/crumbs/crumbs.d.ts.map +1 -1
  99. package/dist/src/crumbs/index.d.ts.map +1 -1
  100. package/dist/src/deck/deck.d.ts.map +1 -1
  101. package/dist/src/deck/index.d.ts.map +1 -1
  102. package/dist/src/dialog/dialog.d.ts +6 -14
  103. package/dist/src/dialog/dialog.d.ts.map +1 -1
  104. package/dist/src/dialog/dialog.js +29 -36
  105. package/dist/src/dialog/fold.d.ts +3 -3
  106. package/dist/src/dialog/fold.d.ts.map +1 -1
  107. package/dist/src/dialog/fold.js +5 -4
  108. package/dist/src/dialog/index.d.ts +1 -1
  109. package/dist/src/dialog/index.d.ts.map +1 -1
  110. package/dist/src/disclosure/disclosure.d.ts.map +1 -1
  111. package/dist/src/disclosure/disclosure.js +3 -1
  112. package/dist/src/disclosure/index.d.ts.map +1 -1
  113. package/dist/src/dom/html-element.d.ts +3 -0
  114. package/dist/src/dom/html-element.d.ts.map +1 -0
  115. package/dist/src/dom/html-element.js +6 -0
  116. package/dist/src/drag/drag.d.ts +0 -34
  117. package/dist/src/drag/drag.d.ts.map +1 -1
  118. package/dist/src/drag/drag.js +27 -73
  119. package/dist/src/{dropZone/dropZone.d.ts → drop-zone/drop-zone.d.ts} +3 -3
  120. package/dist/src/drop-zone/drop-zone.d.ts.map +1 -0
  121. package/dist/src/{dropZone/dropZone.js → drop-zone/drop-zone.js} +13 -19
  122. package/dist/src/drop-zone/index.d.ts +3 -0
  123. package/dist/src/drop-zone/index.d.ts.map +1 -0
  124. package/dist/src/drop-zone/index.js +1 -0
  125. package/dist/src/{editableTitle/editableTitle.d.ts → editable-title/editable-title.d.ts} +14 -12
  126. package/dist/src/editable-title/editable-title.d.ts.map +1 -0
  127. package/dist/src/{editableTitle/editableTitle.js → editable-title/editable-title.js} +33 -39
  128. package/dist/src/editable-title/index.d.ts +4 -0
  129. package/dist/src/editable-title/index.d.ts.map +1 -0
  130. package/dist/src/{editableTitle → editable-title}/index.js +1 -1
  131. package/dist/src/{emptyState/emptyState.d.ts → empty-state/empty-state.d.ts} +1 -1
  132. package/dist/src/empty-state/empty-state.d.ts.map +1 -0
  133. package/dist/src/{emptyState/emptyState.js → empty-state/empty-state.js} +5 -2
  134. package/dist/src/empty-state/index.d.ts +3 -0
  135. package/dist/src/empty-state/index.d.ts.map +1 -0
  136. package/dist/src/empty-state/index.js +1 -0
  137. package/dist/src/{errorSummary/errorSummary.d.ts → error-summary/error-summary.d.ts} +2 -2
  138. package/dist/src/error-summary/error-summary.d.ts.map +1 -0
  139. package/dist/src/{errorSummary/errorSummary.js → error-summary/error-summary.js} +7 -5
  140. package/dist/src/error-summary/index.d.ts +3 -0
  141. package/dist/src/error-summary/index.d.ts.map +1 -0
  142. package/dist/src/error-summary/index.js +1 -0
  143. package/dist/src/field/field.d.ts +2 -7
  144. package/dist/src/field/field.d.ts.map +1 -1
  145. package/dist/src/field/field.js +12 -13
  146. package/dist/src/field/index.d.ts.map +1 -1
  147. package/dist/src/{fieldGrid/fieldGrid.d.ts → field-grid/field-grid.d.ts} +1 -1
  148. package/dist/src/field-grid/field-grid.d.ts.map +1 -0
  149. package/dist/src/{fieldGrid/fieldGrid.js → field-grid/field-grid.js} +1 -1
  150. package/dist/src/field-grid/index.d.ts +3 -0
  151. package/dist/src/field-grid/index.d.ts.map +1 -0
  152. package/dist/src/field-grid/index.js +1 -0
  153. package/dist/src/fields/fields.d.ts.map +1 -1
  154. package/dist/src/fields/fields.js +4 -1
  155. package/dist/src/fields/index.d.ts.map +1 -1
  156. package/dist/src/fieldset/fieldset.d.ts.map +1 -1
  157. package/dist/src/fieldset/index.d.ts.map +1 -1
  158. package/dist/src/{fileTree/fileTree.d.ts → file-tree/file-tree.d.ts} +5 -5
  159. package/dist/src/file-tree/file-tree.d.ts.map +1 -0
  160. package/dist/src/file-tree/file-tree.js +242 -0
  161. package/dist/src/file-tree/index.d.ts +3 -0
  162. package/dist/src/file-tree/index.d.ts.map +1 -0
  163. package/dist/src/{fileTree → file-tree}/index.js +1 -1
  164. package/dist/src/{filterChip/filterChip.d.ts → filter-chip/filter-chip.d.ts} +1 -1
  165. package/dist/src/filter-chip/filter-chip.d.ts.map +1 -0
  166. package/dist/src/{filterChip/filterChip.js → filter-chip/filter-chip.js} +11 -7
  167. package/dist/src/filter-chip/index.d.ts +3 -0
  168. package/dist/src/filter-chip/index.d.ts.map +1 -0
  169. package/dist/src/filter-chip/index.js +1 -0
  170. package/dist/src/{filterStrip/filterStrip.d.ts → filter-strip/filter-strip.d.ts} +1 -1
  171. package/dist/src/filter-strip/filter-strip.d.ts.map +1 -0
  172. package/dist/src/{filterStrip/filterStrip.js → filter-strip/filter-strip.js} +1 -1
  173. package/dist/src/filter-strip/index.d.ts +3 -0
  174. package/dist/src/filter-strip/index.d.ts.map +1 -0
  175. package/dist/src/filter-strip/index.js +1 -0
  176. package/dist/src/{flashWord/flashWord.d.ts → flash-word/flash-word.d.ts} +2 -2
  177. package/dist/src/flash-word/flash-word.d.ts.map +1 -0
  178. package/dist/src/{flashWord/flashWord.js → flash-word/flash-word.js} +2 -3
  179. package/dist/src/flash-word/index.d.ts +3 -0
  180. package/dist/src/flash-word/index.d.ts.map +1 -0
  181. package/dist/src/flash-word/index.js +1 -0
  182. package/dist/src/focus/focus.d.ts.map +1 -1
  183. package/dist/src/focus/focus.js +0 -2
  184. package/dist/src/format/format.d.ts +0 -7
  185. package/dist/src/format/format.d.ts.map +1 -1
  186. package/dist/src/format/format.js +7 -16
  187. package/dist/src/format/index.d.ts.map +1 -1
  188. package/dist/src/glyph/glyph.d.ts +1 -2
  189. package/dist/src/glyph/glyph.d.ts.map +1 -1
  190. package/dist/src/glyph/glyph.js +0 -2
  191. package/dist/src/glyph/glyphs.d.ts +19 -4
  192. package/dist/src/glyph/glyphs.d.ts.map +1 -1
  193. package/dist/src/glyph/glyphs.js +2577 -2594
  194. package/dist/src/glyph/index.d.ts.map +1 -1
  195. package/dist/src/group/group.d.ts.map +1 -1
  196. package/dist/src/group/index.d.ts.map +1 -1
  197. package/dist/src/history/history.d.ts +1 -1
  198. package/dist/src/history/history.d.ts.map +1 -1
  199. package/dist/src/history/history.js +6 -3
  200. package/dist/src/history/index.d.ts.map +1 -1
  201. package/dist/src/{iconButton/iconButton.d.ts → icon-button/icon-button.d.ts} +1 -1
  202. package/dist/src/icon-button/icon-button.d.ts.map +1 -0
  203. package/dist/src/{iconButton/iconButton.js → icon-button/icon-button.js} +6 -4
  204. package/dist/src/icon-button/index.d.ts +3 -0
  205. package/dist/src/icon-button/index.d.ts.map +1 -0
  206. package/dist/src/icon-button/index.js +1 -0
  207. package/dist/src/identity/identity.d.ts.map +1 -1
  208. package/dist/src/identity/index.d.ts.map +1 -1
  209. package/dist/src/{imageFrame/imageFrame.d.ts → image-frame/image-frame.d.ts} +1 -1
  210. package/dist/src/image-frame/image-frame.d.ts.map +1 -0
  211. package/dist/src/{imageFrame/imageFrame.js → image-frame/image-frame.js} +19 -12
  212. package/dist/src/image-frame/index.d.ts +3 -0
  213. package/dist/src/image-frame/index.d.ts.map +1 -0
  214. package/dist/src/image-frame/index.js +1 -0
  215. package/dist/src/index.d.ts +41 -41
  216. package/dist/src/index.d.ts.map +1 -1
  217. package/dist/src/index.js +41 -41
  218. package/dist/src/inline-input/index.d.ts +3 -0
  219. package/dist/src/inline-input/index.d.ts.map +1 -0
  220. package/dist/src/{inlineInput → inline-input}/index.js +1 -1
  221. package/dist/src/{inlineInput/inlineInput.d.ts → inline-input/inline-input.d.ts} +8 -12
  222. package/dist/src/inline-input/inline-input.d.ts.map +1 -0
  223. package/dist/src/{inlineInput/inlineInput.js → inline-input/inline-input.js} +60 -75
  224. package/dist/src/key-help/index.d.ts +3 -0
  225. package/dist/src/key-help/index.d.ts.map +1 -0
  226. package/dist/src/{keyHelp → key-help}/index.js +1 -1
  227. package/dist/src/{keyHelp/keyHelp.d.ts → key-help/key-help.d.ts} +7 -7
  228. package/dist/src/key-help/key-help.d.ts.map +1 -0
  229. package/dist/src/{keyHelp/keyHelp.js → key-help/key-help.js} +48 -47
  230. package/dist/src/key-hint/index.d.ts +4 -0
  231. package/dist/src/key-hint/index.d.ts.map +1 -0
  232. package/dist/src/key-hint/index.js +2 -0
  233. package/dist/src/{keyHint/keyHint.d.ts → key-hint/key-hint.d.ts} +2 -2
  234. package/dist/src/key-hint/key-hint.d.ts.map +1 -0
  235. package/dist/src/{keyHint/keyHint.js → key-hint/key-hint.js} +2 -2
  236. package/dist/src/{keyHint/keyLabel.d.ts → key-hint/key-label.d.ts} +2 -3
  237. package/dist/src/key-hint/key-label.d.ts.map +1 -0
  238. package/dist/src/{keyHint/keyLabel.js → key-hint/key-label.js} +29 -24
  239. package/dist/src/keymap/index.d.ts.map +1 -1
  240. package/dist/src/keymap/keymap.d.ts +2 -2
  241. package/dist/src/keymap/keymap.d.ts.map +1 -1
  242. package/dist/src/keymap/keymap.js +3 -1
  243. package/dist/src/keys/keys.d.ts +0 -2
  244. package/dist/src/keys/keys.d.ts.map +1 -1
  245. package/dist/src/keys/keys.js +0 -2
  246. package/dist/src/line-chart/index.d.ts +3 -0
  247. package/dist/src/line-chart/index.d.ts.map +1 -0
  248. package/dist/src/line-chart/index.js +1 -0
  249. package/dist/src/{lineChart/lineChart.d.ts → line-chart/line-chart.d.ts} +2 -2
  250. package/dist/src/line-chart/line-chart.d.ts.map +1 -0
  251. package/dist/src/{lineChart/lineChart.js → line-chart/line-chart.js} +52 -44
  252. package/dist/src/line-diff/diff.d.ts +29 -0
  253. package/dist/src/line-diff/diff.d.ts.map +1 -0
  254. package/dist/src/line-diff/diff.js +85 -0
  255. package/dist/src/line-diff/index.d.ts +5 -0
  256. package/dist/src/line-diff/index.d.ts.map +1 -0
  257. package/dist/src/line-diff/index.js +2 -0
  258. package/dist/src/{lineDiff/lineDiff.d.ts → line-diff/line-diff.d.ts} +1 -1
  259. package/dist/src/line-diff/line-diff.d.ts.map +1 -0
  260. package/dist/src/{lineDiff/lineDiff.js → line-diff/line-diff.js} +26 -19
  261. package/dist/src/{lineDiff → line-diff}/patch.d.ts +5 -9
  262. package/dist/src/line-diff/patch.d.ts.map +1 -0
  263. package/dist/src/{lineDiff → line-diff}/patch.js +54 -62
  264. package/dist/src/link-button/index.d.ts +3 -0
  265. package/dist/src/link-button/index.d.ts.map +1 -0
  266. package/dist/src/link-button/index.js +1 -0
  267. package/dist/src/{linkButton/linkButton.d.ts → link-button/link-button.d.ts} +2 -2
  268. package/dist/src/link-button/link-button.d.ts.map +1 -0
  269. package/dist/src/{linkButton/linkButton.js → link-button/link-button.js} +1 -1
  270. package/dist/src/link-state/index.d.ts +3 -0
  271. package/dist/src/link-state/index.d.ts.map +1 -0
  272. package/dist/src/link-state/index.js +1 -0
  273. package/dist/src/{linkState/linkState.d.ts → link-state/link-state.d.ts} +1 -1
  274. package/dist/src/link-state/link-state.d.ts.map +1 -0
  275. package/dist/src/link-state/link-state.js +24 -0
  276. package/dist/src/live-region/index.d.ts +3 -0
  277. package/dist/src/live-region/index.d.ts.map +1 -0
  278. package/dist/src/live-region/index.js +1 -0
  279. package/dist/src/{liveRegion/liveRegion.d.ts → live-region/live-region.d.ts} +6 -3
  280. package/dist/src/live-region/live-region.d.ts.map +1 -0
  281. package/dist/src/{liveRegion/liveRegion.js → live-region/live-region.js} +7 -5
  282. package/dist/src/loading/index.d.ts.map +1 -1
  283. package/dist/src/loading/loading.d.ts.map +1 -1
  284. package/dist/src/loading/loading.js +5 -1
  285. package/dist/src/mark/index.d.ts.map +1 -1
  286. package/dist/src/mark/mark.d.ts +0 -4
  287. package/dist/src/mark/mark.d.ts.map +1 -1
  288. package/dist/src/mark/mark.js +6 -3
  289. package/dist/src/media/index.d.ts.map +1 -1
  290. package/dist/src/media/media.d.ts +17 -42
  291. package/dist/src/media/media.d.ts.map +1 -1
  292. package/dist/src/media/media.js +106 -104
  293. package/dist/src/menu/index.d.ts.map +1 -1
  294. package/dist/src/menu/item.d.ts +8 -8
  295. package/dist/src/menu/item.d.ts.map +1 -1
  296. package/dist/src/menu/menu.d.ts +2 -5
  297. package/dist/src/menu/menu.d.ts.map +1 -1
  298. package/dist/src/menu/menu.js +19 -30
  299. package/dist/src/menu/slip.d.ts +4 -18
  300. package/dist/src/menu/slip.d.ts.map +1 -1
  301. package/dist/src/menu/slip.js +36 -36
  302. package/dist/src/meter/index.d.ts.map +1 -1
  303. package/dist/src/meter/meter.d.ts +1 -1
  304. package/dist/src/meter/meter.d.ts.map +1 -1
  305. package/dist/src/meter/meter.js +12 -15
  306. package/dist/src/monogram/index.d.ts.map +1 -1
  307. package/dist/src/monogram/monogram.d.ts.map +1 -1
  308. package/dist/src/monogram/monogram.js +9 -8
  309. package/dist/src/nav-strip/index.d.ts +3 -0
  310. package/dist/src/nav-strip/index.d.ts.map +1 -0
  311. package/dist/src/nav-strip/index.js +1 -0
  312. package/dist/src/{navStrip/navStrip.d.ts → nav-strip/nav-strip.d.ts} +3 -6
  313. package/dist/src/nav-strip/nav-strip.d.ts.map +1 -0
  314. package/dist/src/nav-strip/nav-strip.js +25 -0
  315. package/dist/src/notice/index.d.ts.map +1 -1
  316. package/dist/src/notice/notice.d.ts +0 -4
  317. package/dist/src/notice/notice.d.ts.map +1 -1
  318. package/dist/src/notice/notice.js +1 -4
  319. package/dist/src/outcome/index.d.ts.map +1 -1
  320. package/dist/src/outcome/outcome.d.ts.map +1 -1
  321. package/dist/src/outcome/outcome.js +1 -1
  322. package/dist/src/page-head/index.d.ts +3 -0
  323. package/dist/src/page-head/index.d.ts.map +1 -0
  324. package/dist/src/page-head/index.js +1 -0
  325. package/dist/src/{pageHead/pageHead.d.ts → page-head/page-head.d.ts} +1 -1
  326. package/dist/src/page-head/page-head.d.ts.map +1 -0
  327. package/dist/src/{pageHead/pageHead.js → page-head/page-head.js} +1 -1
  328. package/dist/src/panel/index.d.ts.map +1 -1
  329. package/dist/src/panel/panel.d.ts +0 -1
  330. package/dist/src/panel/panel.d.ts.map +1 -1
  331. package/dist/src/panel/panel.js +0 -1
  332. package/dist/src/password-field/index.d.ts +3 -0
  333. package/dist/src/password-field/index.d.ts.map +1 -0
  334. package/dist/src/password-field/index.js +1 -0
  335. package/dist/src/{passwordField/passwordField.d.ts → password-field/password-field.d.ts} +1 -1
  336. package/dist/src/password-field/password-field.d.ts.map +1 -0
  337. package/dist/src/{passwordField/passwordField.js → password-field/password-field.js} +4 -5
  338. package/dist/src/places/index.d.ts.map +1 -1
  339. package/dist/src/places/places.d.ts +3 -4
  340. package/dist/src/places/places.d.ts.map +1 -1
  341. package/dist/src/places/places.js +8 -2
  342. package/dist/src/props-list/index.d.ts +3 -0
  343. package/dist/src/props-list/index.d.ts.map +1 -0
  344. package/dist/src/props-list/index.js +1 -0
  345. package/dist/src/{propsList/propsList.d.ts → props-list/props-list.d.ts} +2 -2
  346. package/dist/src/props-list/props-list.d.ts.map +1 -0
  347. package/dist/src/{propsList/propsList.js → props-list/props-list.js} +2 -2
  348. package/dist/src/prose/index.d.ts.map +1 -1
  349. package/dist/src/prose/prose.d.ts.map +1 -1
  350. package/dist/src/query-chip/index.d.ts +3 -0
  351. package/dist/src/query-chip/index.d.ts.map +1 -0
  352. package/dist/src/query-chip/index.js +1 -0
  353. package/dist/src/{queryChip/queryChip.d.ts → query-chip/query-chip.d.ts} +1 -1
  354. package/dist/src/query-chip/query-chip.d.ts.map +1 -0
  355. package/dist/src/{queryChip/queryChip.js → query-chip/query-chip.js} +7 -4
  356. package/dist/src/{radioChoices → radio-choices}/index.d.ts +2 -2
  357. package/dist/src/radio-choices/index.d.ts.map +1 -0
  358. package/dist/src/{radioChoices → radio-choices}/index.js +1 -1
  359. package/dist/src/{radioChoices/radioChoices.d.ts → radio-choices/radio-choices.d.ts} +3 -3
  360. package/dist/src/radio-choices/radio-choices.d.ts.map +1 -0
  361. package/dist/src/{radioChoices/radioChoices.js → radio-choices/radio-choices.js} +25 -24
  362. package/dist/src/rail/index.d.ts.map +1 -1
  363. package/dist/src/rail/rail.d.ts +16 -32
  364. package/dist/src/rail/rail.d.ts.map +1 -1
  365. package/dist/src/rail/rail.js +97 -65
  366. package/dist/src/reel/index.d.ts +1 -1
  367. package/dist/src/reel/index.d.ts.map +1 -1
  368. package/dist/src/reel/layout.d.ts +12 -54
  369. package/dist/src/reel/layout.d.ts.map +1 -1
  370. package/dist/src/reel/layout.js +120 -145
  371. package/dist/src/reel/reel.d.ts +35 -34
  372. package/dist/src/reel/reel.d.ts.map +1 -1
  373. package/dist/src/reel/reel.js +253 -233
  374. package/dist/src/remote/index.d.ts.map +1 -1
  375. package/dist/src/remote/remote.d.ts +2 -2
  376. package/dist/src/remote/remote.d.ts.map +1 -1
  377. package/dist/src/remote/remote.js +6 -2
  378. package/dist/src/rows/index.d.ts.map +1 -1
  379. package/dist/src/rows/rows.d.ts +2 -2
  380. package/dist/src/rows/rows.d.ts.map +1 -1
  381. package/dist/src/rows/rows.js +16 -7
  382. package/dist/src/scheme/index.d.ts +1 -1
  383. package/dist/src/scheme/index.d.ts.map +1 -1
  384. package/dist/src/scheme/index.js +1 -1
  385. package/dist/src/scheme/{schemeSwitch.d.ts → scheme-switch.d.ts} +2 -2
  386. package/dist/src/scheme/scheme-switch.d.ts.map +1 -0
  387. package/dist/src/scheme/{schemeSwitch.js → scheme-switch.js} +33 -38
  388. package/dist/src/scheme/scheme.d.ts +0 -2
  389. package/dist/src/scheme/scheme.d.ts.map +1 -1
  390. package/dist/src/scheme/scheme.js +0 -2
  391. package/dist/src/secret/index.d.ts.map +1 -1
  392. package/dist/src/secret/secret.d.ts.map +1 -1
  393. package/dist/src/segmented/index.d.ts.map +1 -1
  394. package/dist/src/segmented/segmented.d.ts.map +1 -1
  395. package/dist/src/segmented/segmented.js +14 -3
  396. package/dist/src/select-all/index.d.ts +3 -0
  397. package/dist/src/select-all/index.d.ts.map +1 -0
  398. package/dist/src/select-all/index.js +1 -0
  399. package/dist/src/{selectAll/selectAll.d.ts → select-all/select-all.d.ts} +1 -1
  400. package/dist/src/select-all/select-all.d.ts.map +1 -0
  401. package/dist/src/{selectAll/selectAll.js → select-all/select-all.js} +2 -2
  402. package/dist/src/select-field/index.d.ts +3 -0
  403. package/dist/src/select-field/index.d.ts.map +1 -0
  404. package/dist/src/select-field/index.js +1 -0
  405. package/dist/src/{selectField/selectField.d.ts → select-field/select-field.d.ts} +2 -2
  406. package/dist/src/select-field/select-field.d.ts.map +1 -0
  407. package/dist/src/{selectField/selectField.js → select-field/select-field.js} +10 -7
  408. package/dist/src/sheet/index.d.ts.map +1 -1
  409. package/dist/src/sheet/sheet.d.ts.map +1 -1
  410. package/dist/src/sheet/sheet.js +4 -1
  411. package/dist/src/skip-link/index.d.ts +2 -0
  412. package/dist/src/skip-link/index.d.ts.map +1 -0
  413. package/dist/src/skip-link/index.js +1 -0
  414. package/dist/src/{skipLink/skipLink.d.ts → skip-link/skip-link.d.ts} +1 -3
  415. package/dist/src/skip-link/skip-link.d.ts.map +1 -0
  416. package/dist/src/{skipLink/skipLink.js → skip-link/skip-link.js} +7 -11
  417. package/dist/src/slot/slot.d.ts +1 -4
  418. package/dist/src/slot/slot.d.ts.map +1 -1
  419. package/dist/src/slot/slot.js +3 -3
  420. package/dist/src/sortable/index.d.ts.map +1 -1
  421. package/dist/src/sortable/sortable.d.ts +44 -44
  422. package/dist/src/sortable/sortable.d.ts.map +1 -1
  423. package/dist/src/sortable/sortable.js +60 -93
  424. package/dist/src/stack/index.d.ts.map +1 -1
  425. package/dist/src/stack/stack.d.ts.map +1 -1
  426. package/dist/src/stack/stack.js +0 -2
  427. package/dist/src/stage/index.d.ts.map +1 -1
  428. package/dist/src/stage/stage.d.ts +1 -1
  429. package/dist/src/stage/stage.d.ts.map +1 -1
  430. package/dist/src/stage/stage.js +4 -1
  431. package/dist/src/stat/index.d.ts.map +1 -1
  432. package/dist/src/stat/stat.d.ts +1 -1
  433. package/dist/src/stat/stat.d.ts.map +1 -1
  434. package/dist/src/stat/stat.js +17 -8
  435. package/dist/src/status-bar/index.d.ts +4 -0
  436. package/dist/src/status-bar/index.d.ts.map +1 -0
  437. package/dist/src/status-bar/index.js +2 -0
  438. package/dist/src/{statusBar/statusBar.d.ts → status-bar/status-bar.d.ts} +4 -4
  439. package/dist/src/status-bar/status-bar.d.ts.map +1 -0
  440. package/dist/src/{statusBar/statusBar.js → status-bar/status-bar.js} +5 -6
  441. package/dist/src/subscription/{prefixKeys.d.ts → prefix-keys.d.ts} +1 -2
  442. package/dist/src/subscription/prefix-keys.d.ts.map +1 -0
  443. package/dist/src/subscription/{prefixKeys.js → prefix-keys.js} +2 -5
  444. package/dist/src/table/index.d.ts.map +1 -1
  445. package/dist/src/table/table.d.ts +1 -1
  446. package/dist/src/table/table.d.ts.map +1 -1
  447. package/dist/src/table/table.js +19 -7
  448. package/dist/src/tabs/index.d.ts.map +1 -1
  449. package/dist/src/tabs/tabs.d.ts +4 -4
  450. package/dist/src/tabs/tabs.d.ts.map +1 -1
  451. package/dist/src/tabs/tabs.js +1 -6
  452. package/dist/src/tag/index.d.ts.map +1 -1
  453. package/dist/src/tag/tag.d.ts.map +1 -1
  454. package/dist/src/tag/tag.js +4 -1
  455. package/dist/src/text-button/index.d.ts +3 -0
  456. package/dist/src/text-button/index.d.ts.map +1 -0
  457. package/dist/src/text-button/index.js +1 -0
  458. package/dist/src/{textButton/textButton.d.ts → text-button/text-button.d.ts} +1 -1
  459. package/dist/src/text-button/text-button.d.ts.map +1 -0
  460. package/dist/src/{textButton/textButton.js → text-button/text-button.js} +2 -2
  461. package/dist/src/textarea-field/index.d.ts +3 -0
  462. package/dist/src/textarea-field/index.d.ts.map +1 -0
  463. package/dist/src/textarea-field/index.js +1 -0
  464. package/dist/src/{textareaField/textareaField.d.ts → textarea-field/textarea-field.d.ts} +1 -1
  465. package/dist/src/textarea-field/textarea-field.d.ts.map +1 -0
  466. package/dist/src/{textareaField/textareaField.js → textarea-field/textarea-field.js} +2 -2
  467. package/dist/src/time/index.d.ts.map +1 -1
  468. package/dist/src/time/time.d.ts.map +1 -1
  469. package/dist/src/time/time.js +16 -9
  470. package/dist/src/tips/index.d.ts.map +1 -1
  471. package/dist/src/tips/tips.d.ts +7 -18
  472. package/dist/src/tips/tips.d.ts.map +1 -1
  473. package/dist/src/tips/tips.js +67 -65
  474. package/dist/src/toast/index.d.ts.map +1 -1
  475. package/dist/src/toast/stack.d.ts +1 -8
  476. package/dist/src/toast/stack.d.ts.map +1 -1
  477. package/dist/src/toast/stack.js +5 -18
  478. package/dist/src/toast/toast.d.ts +3 -5
  479. package/dist/src/toast/toast.d.ts.map +1 -1
  480. package/dist/src/toast/toast.js +42 -39
  481. package/dist/src/toc/index.d.ts.map +1 -1
  482. package/dist/src/toc/toc.d.ts +3 -3
  483. package/dist/src/toc/toc.d.ts.map +1 -1
  484. package/dist/src/toc/toc.js +10 -7
  485. package/dist/src/toolbar/index.d.ts.map +1 -1
  486. package/dist/src/toolbar/toolbar.d.ts +1 -1
  487. package/dist/src/toolbar/toolbar.d.ts.map +1 -1
  488. package/dist/src/toolbar/toolbar.js +27 -24
  489. package/dist/src/{topBar/barHeight.d.ts → top-bar/bar-height.d.ts} +1 -2
  490. package/dist/src/top-bar/bar-height.d.ts.map +1 -0
  491. package/dist/src/{topBar/barHeight.js → top-bar/bar-height.js} +20 -13
  492. package/dist/src/top-bar/index.d.ts +4 -0
  493. package/dist/src/top-bar/index.d.ts.map +1 -0
  494. package/dist/src/top-bar/index.js +2 -0
  495. package/dist/src/{topBar/topBar.d.ts → top-bar/top-bar.d.ts} +3 -3
  496. package/dist/src/top-bar/top-bar.d.ts.map +1 -0
  497. package/dist/src/{topBar/topBar.js → top-bar/top-bar.js} +2 -2
  498. package/dist/src/video-frame/index.d.ts +3 -0
  499. package/dist/src/video-frame/index.d.ts.map +1 -0
  500. package/dist/src/video-frame/index.js +1 -0
  501. package/dist/src/{videoFrame/videoFrame.d.ts → video-frame/video-frame.d.ts} +1 -1
  502. package/dist/src/video-frame/video-frame.d.ts.map +1 -0
  503. package/dist/src/{videoFrame/videoFrame.js → video-frame/video-frame.js} +11 -7
  504. package/dist/src/wall/index.d.ts.map +1 -1
  505. package/dist/src/wall/wall.d.ts.map +1 -1
  506. package/dist/src/window/index.d.ts.map +1 -1
  507. package/dist/src/window/window.d.ts +2 -2
  508. package/dist/src/window/window.d.ts.map +1 -1
  509. package/dist/src/window/window.js +4 -2
  510. package/dist/src/wordmark/index.d.ts.map +1 -1
  511. package/dist/src/wordmark/wordmark.d.ts.map +1 -1
  512. package/dist/src/wrap/index.d.ts.map +1 -1
  513. package/dist/src/wrap/wrap.d.ts.map +1 -1
  514. package/package.json +6 -6
  515. package/src/adapters/diagram.ts +278 -0
  516. package/src/adapters/mermaid.ts +13 -273
  517. package/src/announcer/announcer.ts +54 -35
  518. package/src/attributes/attributes.ts +3 -1
  519. package/src/{audioFrame/audioFrame.ts → audio-frame/audio-frame.ts} +4 -6
  520. package/src/audio-frame/index.ts +3 -0
  521. package/src/banner/banner.ts +5 -4
  522. package/src/banner/index.ts +1 -0
  523. package/src/{barChart/barChart.ts → bar-chart/bar-chart.ts} +81 -43
  524. package/src/bar-chart/index.ts +3 -0
  525. package/src/bench/bench.ts +5 -4
  526. package/src/bench/index.ts +1 -0
  527. package/src/board/board.ts +338 -243
  528. package/src/board/index.ts +8 -1
  529. package/src/button/button.ts +24 -16
  530. package/src/button/index.ts +8 -1
  531. package/src/card/card.ts +23 -21
  532. package/src/card/index.ts +1 -0
  533. package/src/chart-table/chart-table.ts +87 -0
  534. package/src/chip/chip.ts +13 -9
  535. package/src/chip/index.ts +1 -0
  536. package/src/choice/choice.ts +13 -7
  537. package/src/choice/index.ts +1 -0
  538. package/src/choices/choices.ts +4 -3
  539. package/src/choices/index.ts +1 -0
  540. package/src/{codeEditor/codeEditor.ts → code-editor/code-editor.ts} +5 -4
  541. package/src/code-editor/index.ts +3 -0
  542. package/src/{codeSurface/codeSurface.ts → code-surface/code-surface.ts} +11 -5
  543. package/src/code-surface/index.ts +3 -0
  544. package/src/{commandPalette/commandPalette.ts → command-palette/command-palette.ts} +470 -295
  545. package/src/{commandPalette → command-palette}/index.ts +12 -2
  546. package/src/{commandPalette → command-palette}/keys.ts +44 -43
  547. package/src/{commandPalette → command-palette}/match.ts +42 -30
  548. package/src/{commandPalette → command-palette}/message.ts +13 -20
  549. package/src/{confirmDialog/confirmDialog.ts → confirm-dialog/confirm-dialog.ts} +51 -46
  550. package/src/{confirmDialog → confirm-dialog}/index.ts +3 -2
  551. package/src/{contextMenu/contextMenu.ts → context-menu/context-menu.ts} +71 -70
  552. package/src/{contextMenu → context-menu}/index.ts +4 -2
  553. package/src/{copyButton/copyButton.ts → copy-button/copy-button.ts} +51 -54
  554. package/src/{copyButton → copy-button}/index.ts +3 -2
  555. package/src/crumbs/crumbs.ts +7 -6
  556. package/src/crumbs/index.ts +1 -0
  557. package/src/deck/deck.ts +4 -3
  558. package/src/deck/index.ts +1 -0
  559. package/src/dialog/dialog.ts +135 -113
  560. package/src/dialog/fold.ts +44 -25
  561. package/src/dialog/index.ts +9 -1
  562. package/src/disclosure/disclosure.ts +14 -8
  563. package/src/disclosure/index.ts +1 -0
  564. package/src/dom/html-element.ts +10 -0
  565. package/src/drag/drag.ts +102 -119
  566. package/src/{dropZone/dropZone.ts → drop-zone/drop-zone.ts} +43 -43
  567. package/src/drop-zone/index.ts +11 -0
  568. package/src/{editableTitle/editableTitle.ts → editable-title/editable-title.ts} +29 -32
  569. package/src/{editableTitle → editable-title}/index.ts +4 -2
  570. package/src/{emptyState/emptyState.ts → empty-state/empty-state.ts} +9 -5
  571. package/src/empty-state/index.ts +3 -0
  572. package/src/{errorSummary/errorSummary.ts → error-summary/error-summary.ts} +16 -7
  573. package/src/error-summary/index.ts +3 -0
  574. package/src/field/field.ts +38 -28
  575. package/src/field/index.ts +1 -0
  576. package/src/{fieldGrid/fieldGrid.ts → field-grid/field-grid.ts} +4 -3
  577. package/src/field-grid/index.ts +3 -0
  578. package/src/fields/fields.ts +9 -5
  579. package/src/fields/index.ts +1 -0
  580. package/src/fieldset/fieldset.ts +6 -5
  581. package/src/fieldset/index.ts +1 -0
  582. package/src/{fileTree/fileTree.ts → file-tree/file-tree.ts} +241 -166
  583. package/src/file-tree/index.ts +12 -0
  584. package/src/{filterChip/filterChip.ts → filter-chip/filter-chip.ts} +32 -13
  585. package/src/filter-chip/index.ts +3 -0
  586. package/src/{filterStrip/filterStrip.ts → filter-strip/filter-strip.ts} +4 -3
  587. package/src/filter-strip/index.ts +3 -0
  588. package/src/{flashWord/flashWord.ts → flash-word/flash-word.ts} +9 -7
  589. package/src/flash-word/index.ts +3 -0
  590. package/src/focus/focus.ts +5 -5
  591. package/src/format/format.ts +37 -31
  592. package/src/format/index.ts +1 -0
  593. package/src/glyph/glyph.ts +7 -6
  594. package/src/glyph/glyphs.ts +2601 -2611
  595. package/src/glyph/index.ts +3 -0
  596. package/src/group/group.ts +4 -3
  597. package/src/group/index.ts +1 -0
  598. package/src/history/history.ts +18 -10
  599. package/src/history/index.ts +1 -0
  600. package/src/{iconButton/iconButton.ts → icon-button/icon-button.ts} +13 -7
  601. package/src/icon-button/index.ts +3 -0
  602. package/src/identity/identity.ts +7 -6
  603. package/src/identity/index.ts +1 -0
  604. package/src/{imageFrame/imageFrame.ts → image-frame/image-frame.ts} +43 -25
  605. package/src/image-frame/index.ts +3 -0
  606. package/src/index.ts +139 -41
  607. package/src/{inlineInput → inline-input}/index.ts +3 -2
  608. package/src/{inlineInput/inlineInput.ts → inline-input/inline-input.ts} +97 -88
  609. package/src/{keyHelp → key-help}/index.ts +3 -2
  610. package/src/{keyHelp/keyHelp.ts → key-help/key-help.ts} +74 -62
  611. package/src/key-hint/index.ts +5 -0
  612. package/src/{keyHint/keyHint.ts → key-hint/key-hint.ts} +10 -5
  613. package/src/{keyHint/keyLabel.ts → key-hint/key-label.ts} +43 -22
  614. package/src/keymap/index.ts +1 -0
  615. package/src/keymap/keymap.ts +23 -9
  616. package/src/keys/keys.ts +0 -2
  617. package/src/line-chart/index.ts +3 -0
  618. package/src/{lineChart/lineChart.ts → line-chart/line-chart.ts} +71 -49
  619. package/src/line-diff/diff.ts +196 -0
  620. package/src/line-diff/index.ts +7 -0
  621. package/src/{lineDiff/lineDiff.ts → line-diff/line-diff.ts} +45 -23
  622. package/src/{lineDiff → line-diff}/patch.ts +104 -76
  623. package/src/link-button/index.ts +3 -0
  624. package/src/{linkButton/linkButton.ts → link-button/link-button.ts} +7 -5
  625. package/src/link-state/index.ts +3 -0
  626. package/src/{linkState/linkState.ts → link-state/link-state.ts} +20 -9
  627. package/src/live-region/index.ts +3 -0
  628. package/src/{liveRegion/liveRegion.ts → live-region/live-region.ts} +15 -11
  629. package/src/loading/index.ts +1 -0
  630. package/src/loading/loading.ts +10 -5
  631. package/src/mark/index.ts +1 -0
  632. package/src/mark/mark.ts +17 -15
  633. package/src/media/index.ts +1 -0
  634. package/src/media/media.ts +255 -157
  635. package/src/menu/index.ts +4 -0
  636. package/src/menu/item.ts +10 -11
  637. package/src/menu/menu.ts +110 -97
  638. package/src/menu/slip.ts +129 -92
  639. package/src/meter/index.ts +1 -0
  640. package/src/meter/meter.ts +52 -33
  641. package/src/monogram/index.ts +1 -0
  642. package/src/monogram/monogram.ts +27 -19
  643. package/src/nav-strip/index.ts +3 -0
  644. package/src/{navStrip/navStrip.ts → nav-strip/nav-strip.ts} +21 -13
  645. package/src/notice/index.ts +1 -0
  646. package/src/notice/notice.ts +24 -16
  647. package/src/outcome/index.ts +1 -0
  648. package/src/outcome/outcome.ts +14 -6
  649. package/src/page-head/index.ts +3 -0
  650. package/src/{pageHead/pageHead.ts → page-head/page-head.ts} +6 -5
  651. package/src/panel/index.ts +1 -0
  652. package/src/panel/panel.ts +6 -6
  653. package/src/password-field/index.ts +3 -0
  654. package/src/{passwordField/passwordField.ts → password-field/password-field.ts} +13 -13
  655. package/src/pixel-paper.css +26 -508
  656. package/src/places/index.ts +1 -0
  657. package/src/places/places.ts +22 -11
  658. package/src/props-list/index.ts +3 -0
  659. package/src/{propsList/propsList.ts → props-list/props-list.ts} +6 -6
  660. package/src/prose/index.ts +1 -0
  661. package/src/prose/prose.ts +4 -4
  662. package/src/query-chip/index.ts +3 -0
  663. package/src/{queryChip/queryChip.ts → query-chip/query-chip.ts} +18 -7
  664. package/src/{radioChoices → radio-choices}/index.ts +3 -2
  665. package/src/{radioChoices/radioChoices.ts → radio-choices/radio-choices.ts} +79 -65
  666. package/src/rail/index.ts +1 -0
  667. package/src/rail/rail.ts +291 -225
  668. package/src/reel/index.ts +8 -1
  669. package/src/reel/layout.ts +393 -238
  670. package/src/reel/reel.ts +750 -452
  671. package/src/remote/index.ts +1 -0
  672. package/src/remote/remote.ts +18 -11
  673. package/src/rows/index.ts +1 -0
  674. package/src/rows/rows.ts +83 -47
  675. package/src/scheme/index.ts +3 -1
  676. package/src/scheme/{schemeSwitch.ts → scheme-switch.ts} +24 -35
  677. package/src/scheme/scheme.ts +4 -4
  678. package/src/secret/index.ts +1 -0
  679. package/src/secret/secret.ts +5 -4
  680. package/src/segmented/index.ts +1 -0
  681. package/src/segmented/segmented.ts +22 -10
  682. package/src/select-all/index.ts +3 -0
  683. package/src/{selectAll/selectAll.ts → select-all/select-all.ts} +9 -8
  684. package/src/{selectField → select-field}/index.ts +3 -2
  685. package/src/{selectField/selectField.ts → select-field/select-field.ts} +25 -11
  686. package/src/sheet/index.ts +1 -0
  687. package/src/sheet/sheet.ts +9 -5
  688. package/src/skip-link/index.ts +1 -0
  689. package/src/{skipLink/skipLink.ts → skip-link/skip-link.ts} +9 -15
  690. package/src/slot/slot.ts +5 -6
  691. package/src/sortable/index.ts +1 -0
  692. package/src/sortable/sortable.ts +287 -206
  693. package/src/stack/index.ts +1 -0
  694. package/src/stack/stack.ts +6 -7
  695. package/src/stage/index.ts +1 -0
  696. package/src/stage/stage.ts +12 -8
  697. package/src/stat/index.ts +1 -0
  698. package/src/stat/stat.ts +39 -20
  699. package/src/status-bar/index.ts +5 -0
  700. package/src/{statusBar/statusBar.ts → status-bar/status-bar.ts} +18 -11
  701. package/src/subscription/{prefixKeys.ts → prefix-keys.ts} +5 -6
  702. package/src/table/index.ts +1 -0
  703. package/src/table/table.ts +49 -24
  704. package/src/tabs/index.ts +1 -0
  705. package/src/tabs/tabs.ts +58 -60
  706. package/src/tag/index.ts +1 -0
  707. package/src/tag/tag.ts +14 -7
  708. package/src/text-button/index.ts +3 -0
  709. package/src/{textButton/textButton.ts → text-button/text-button.ts} +7 -5
  710. package/src/textarea-field/index.ts +3 -0
  711. package/src/{textareaField/textareaField.ts → textarea-field/textarea-field.ts} +15 -7
  712. package/src/time/index.ts +1 -0
  713. package/src/time/time.ts +58 -25
  714. package/src/tips/index.ts +1 -0
  715. package/src/tips/tips.ts +183 -127
  716. package/src/toast/index.ts +3 -0
  717. package/src/toast/stack.ts +22 -23
  718. package/src/toast/toast.ts +168 -100
  719. package/src/toc/index.ts +1 -0
  720. package/src/toc/toc.ts +42 -27
  721. package/src/tokens.css +7 -24
  722. package/src/toolbar/index.ts +1 -0
  723. package/src/toolbar/toolbar.ts +78 -40
  724. package/src/{topBar/barHeight.ts → top-bar/bar-height.ts} +26 -12
  725. package/src/top-bar/index.ts +5 -0
  726. package/src/{topBar/topBar.ts → top-bar/top-bar.ts} +13 -7
  727. package/src/video-frame/index.ts +3 -0
  728. package/src/{videoFrame/videoFrame.ts → video-frame/video-frame.ts} +31 -18
  729. package/src/wall/index.ts +1 -0
  730. package/src/wall/wall.ts +13 -10
  731. package/src/window/index.ts +1 -0
  732. package/src/window/window.ts +15 -9
  733. package/src/wordmark/index.ts +1 -0
  734. package/src/wordmark/wordmark.ts +4 -3
  735. package/src/wrap/index.ts +1 -0
  736. package/src/wrap/wrap.ts +4 -3
  737. package/dist/src/audioFrame/audioFrame.d.ts.map +0 -1
  738. package/dist/src/audioFrame/index.d.ts +0 -3
  739. package/dist/src/audioFrame/index.d.ts.map +0 -1
  740. package/dist/src/audioFrame/index.js +0 -1
  741. package/dist/src/barChart/barChart.d.ts.map +0 -1
  742. package/dist/src/barChart/index.d.ts +0 -3
  743. package/dist/src/barChart/index.d.ts.map +0 -1
  744. package/dist/src/barChart/index.js +0 -1
  745. package/dist/src/chartTable/chartTable.d.ts.map +0 -1
  746. package/dist/src/codeEditor/codeEditor.d.ts.map +0 -1
  747. package/dist/src/codeEditor/index.d.ts +0 -3
  748. package/dist/src/codeEditor/index.d.ts.map +0 -1
  749. package/dist/src/codeEditor/index.js +0 -1
  750. package/dist/src/codeSurface/codeSurface.d.ts.map +0 -1
  751. package/dist/src/codeSurface/index.d.ts +0 -3
  752. package/dist/src/codeSurface/index.d.ts.map +0 -1
  753. package/dist/src/codeSurface/index.js +0 -1
  754. package/dist/src/commandPalette/commandPalette.d.ts.map +0 -1
  755. package/dist/src/commandPalette/commandPalette.js +0 -611
  756. package/dist/src/commandPalette/index.d.ts.map +0 -1
  757. package/dist/src/commandPalette/keys.d.ts.map +0 -1
  758. package/dist/src/commandPalette/keys.js +0 -102
  759. package/dist/src/commandPalette/match.d.ts.map +0 -1
  760. package/dist/src/commandPalette/message.d.ts.map +0 -1
  761. package/dist/src/confirmDialog/confirmDialog.d.ts.map +0 -1
  762. package/dist/src/confirmDialog/index.d.ts +0 -3
  763. package/dist/src/confirmDialog/index.d.ts.map +0 -1
  764. package/dist/src/contextMenu/contextMenu.d.ts.map +0 -1
  765. package/dist/src/contextMenu/index.d.ts.map +0 -1
  766. package/dist/src/copyButton/copyButton.d.ts.map +0 -1
  767. package/dist/src/copyButton/index.d.ts +0 -3
  768. package/dist/src/copyButton/index.d.ts.map +0 -1
  769. package/dist/src/copyButton/index.js +0 -1
  770. package/dist/src/dropZone/dropZone.d.ts.map +0 -1
  771. package/dist/src/dropZone/index.d.ts +0 -3
  772. package/dist/src/dropZone/index.d.ts.map +0 -1
  773. package/dist/src/dropZone/index.js +0 -1
  774. package/dist/src/editableTitle/editableTitle.d.ts.map +0 -1
  775. package/dist/src/editableTitle/index.d.ts +0 -4
  776. package/dist/src/editableTitle/index.d.ts.map +0 -1
  777. package/dist/src/emptyState/emptyState.d.ts.map +0 -1
  778. package/dist/src/emptyState/index.d.ts +0 -3
  779. package/dist/src/emptyState/index.d.ts.map +0 -1
  780. package/dist/src/emptyState/index.js +0 -1
  781. package/dist/src/errorSummary/errorSummary.d.ts.map +0 -1
  782. package/dist/src/errorSummary/index.d.ts +0 -3
  783. package/dist/src/errorSummary/index.d.ts.map +0 -1
  784. package/dist/src/errorSummary/index.js +0 -1
  785. package/dist/src/fieldGrid/fieldGrid.d.ts.map +0 -1
  786. package/dist/src/fieldGrid/index.d.ts +0 -3
  787. package/dist/src/fieldGrid/index.d.ts.map +0 -1
  788. package/dist/src/fieldGrid/index.js +0 -1
  789. package/dist/src/fileTree/fileTree.d.ts.map +0 -1
  790. package/dist/src/fileTree/fileTree.js +0 -230
  791. package/dist/src/fileTree/index.d.ts +0 -3
  792. package/dist/src/fileTree/index.d.ts.map +0 -1
  793. package/dist/src/filterChip/filterChip.d.ts.map +0 -1
  794. package/dist/src/filterChip/index.d.ts +0 -3
  795. package/dist/src/filterChip/index.d.ts.map +0 -1
  796. package/dist/src/filterChip/index.js +0 -1
  797. package/dist/src/filterStrip/filterStrip.d.ts.map +0 -1
  798. package/dist/src/filterStrip/index.d.ts +0 -3
  799. package/dist/src/filterStrip/index.d.ts.map +0 -1
  800. package/dist/src/filterStrip/index.js +0 -1
  801. package/dist/src/flashWord/flashWord.d.ts.map +0 -1
  802. package/dist/src/flashWord/index.d.ts +0 -3
  803. package/dist/src/flashWord/index.d.ts.map +0 -1
  804. package/dist/src/flashWord/index.js +0 -1
  805. package/dist/src/iconButton/iconButton.d.ts.map +0 -1
  806. package/dist/src/iconButton/index.d.ts +0 -3
  807. package/dist/src/iconButton/index.d.ts.map +0 -1
  808. package/dist/src/iconButton/index.js +0 -1
  809. package/dist/src/imageFrame/imageFrame.d.ts.map +0 -1
  810. package/dist/src/imageFrame/index.d.ts +0 -3
  811. package/dist/src/imageFrame/index.d.ts.map +0 -1
  812. package/dist/src/imageFrame/index.js +0 -1
  813. package/dist/src/inlineInput/index.d.ts +0 -3
  814. package/dist/src/inlineInput/index.d.ts.map +0 -1
  815. package/dist/src/inlineInput/inlineInput.d.ts.map +0 -1
  816. package/dist/src/keyHelp/index.d.ts +0 -3
  817. package/dist/src/keyHelp/index.d.ts.map +0 -1
  818. package/dist/src/keyHelp/keyHelp.d.ts.map +0 -1
  819. package/dist/src/keyHint/index.d.ts +0 -4
  820. package/dist/src/keyHint/index.d.ts.map +0 -1
  821. package/dist/src/keyHint/index.js +0 -2
  822. package/dist/src/keyHint/keyHint.d.ts.map +0 -1
  823. package/dist/src/keyHint/keyLabel.d.ts.map +0 -1
  824. package/dist/src/lineChart/index.d.ts +0 -3
  825. package/dist/src/lineChart/index.d.ts.map +0 -1
  826. package/dist/src/lineChart/index.js +0 -1
  827. package/dist/src/lineChart/lineChart.d.ts.map +0 -1
  828. package/dist/src/lineDiff/diff.d.ts +0 -41
  829. package/dist/src/lineDiff/diff.d.ts.map +0 -1
  830. package/dist/src/lineDiff/diff.js +0 -92
  831. package/dist/src/lineDiff/index.d.ts +0 -5
  832. package/dist/src/lineDiff/index.d.ts.map +0 -1
  833. package/dist/src/lineDiff/index.js +0 -2
  834. package/dist/src/lineDiff/lineDiff.d.ts.map +0 -1
  835. package/dist/src/lineDiff/patch.d.ts.map +0 -1
  836. package/dist/src/linkButton/index.d.ts +0 -3
  837. package/dist/src/linkButton/index.d.ts.map +0 -1
  838. package/dist/src/linkButton/index.js +0 -1
  839. package/dist/src/linkButton/linkButton.d.ts.map +0 -1
  840. package/dist/src/linkState/index.d.ts +0 -3
  841. package/dist/src/linkState/index.d.ts.map +0 -1
  842. package/dist/src/linkState/index.js +0 -1
  843. package/dist/src/linkState/linkState.d.ts.map +0 -1
  844. package/dist/src/linkState/linkState.js +0 -14
  845. package/dist/src/liveRegion/index.d.ts +0 -3
  846. package/dist/src/liveRegion/index.d.ts.map +0 -1
  847. package/dist/src/liveRegion/index.js +0 -1
  848. package/dist/src/liveRegion/liveRegion.d.ts.map +0 -1
  849. package/dist/src/navStrip/index.d.ts +0 -3
  850. package/dist/src/navStrip/index.d.ts.map +0 -1
  851. package/dist/src/navStrip/index.js +0 -1
  852. package/dist/src/navStrip/navStrip.d.ts.map +0 -1
  853. package/dist/src/navStrip/navStrip.js +0 -27
  854. package/dist/src/pageHead/index.d.ts +0 -3
  855. package/dist/src/pageHead/index.d.ts.map +0 -1
  856. package/dist/src/pageHead/index.js +0 -1
  857. package/dist/src/pageHead/pageHead.d.ts.map +0 -1
  858. package/dist/src/passwordField/index.d.ts +0 -3
  859. package/dist/src/passwordField/index.d.ts.map +0 -1
  860. package/dist/src/passwordField/index.js +0 -1
  861. package/dist/src/passwordField/passwordField.d.ts.map +0 -1
  862. package/dist/src/propsList/index.d.ts +0 -3
  863. package/dist/src/propsList/index.d.ts.map +0 -1
  864. package/dist/src/propsList/index.js +0 -1
  865. package/dist/src/propsList/propsList.d.ts.map +0 -1
  866. package/dist/src/queryChip/index.d.ts +0 -3
  867. package/dist/src/queryChip/index.d.ts.map +0 -1
  868. package/dist/src/queryChip/index.js +0 -1
  869. package/dist/src/queryChip/queryChip.d.ts.map +0 -1
  870. package/dist/src/radioChoices/index.d.ts.map +0 -1
  871. package/dist/src/radioChoices/radioChoices.d.ts.map +0 -1
  872. package/dist/src/scheme/schemeSwitch.d.ts.map +0 -1
  873. package/dist/src/selectAll/index.d.ts +0 -3
  874. package/dist/src/selectAll/index.d.ts.map +0 -1
  875. package/dist/src/selectAll/index.js +0 -1
  876. package/dist/src/selectAll/selectAll.d.ts.map +0 -1
  877. package/dist/src/selectField/index.d.ts +0 -3
  878. package/dist/src/selectField/index.d.ts.map +0 -1
  879. package/dist/src/selectField/index.js +0 -1
  880. package/dist/src/selectField/selectField.d.ts.map +0 -1
  881. package/dist/src/skipLink/index.d.ts +0 -2
  882. package/dist/src/skipLink/index.d.ts.map +0 -1
  883. package/dist/src/skipLink/index.js +0 -1
  884. package/dist/src/skipLink/skipLink.d.ts.map +0 -1
  885. package/dist/src/statusBar/index.d.ts +0 -4
  886. package/dist/src/statusBar/index.d.ts.map +0 -1
  887. package/dist/src/statusBar/index.js +0 -2
  888. package/dist/src/statusBar/statusBar.d.ts.map +0 -1
  889. package/dist/src/subscription/prefixKeys.d.ts.map +0 -1
  890. package/dist/src/textButton/index.d.ts +0 -3
  891. package/dist/src/textButton/index.d.ts.map +0 -1
  892. package/dist/src/textButton/index.js +0 -1
  893. package/dist/src/textButton/textButton.d.ts.map +0 -1
  894. package/dist/src/textareaField/index.d.ts +0 -3
  895. package/dist/src/textareaField/index.d.ts.map +0 -1
  896. package/dist/src/textareaField/index.js +0 -1
  897. package/dist/src/textareaField/textareaField.d.ts.map +0 -1
  898. package/dist/src/topBar/barHeight.d.ts.map +0 -1
  899. package/dist/src/topBar/index.d.ts +0 -4
  900. package/dist/src/topBar/index.d.ts.map +0 -1
  901. package/dist/src/topBar/index.js +0 -2
  902. package/dist/src/topBar/topBar.d.ts.map +0 -1
  903. package/dist/src/videoFrame/index.d.ts +0 -3
  904. package/dist/src/videoFrame/index.d.ts.map +0 -1
  905. package/dist/src/videoFrame/index.js +0 -1
  906. package/dist/src/videoFrame/videoFrame.d.ts.map +0 -1
  907. package/src/audioFrame/index.ts +0 -2
  908. package/src/barChart/index.ts +0 -2
  909. package/src/chartTable/chartTable.ts +0 -88
  910. package/src/codeEditor/index.ts +0 -2
  911. package/src/codeSurface/index.ts +0 -2
  912. package/src/dropZone/index.ts +0 -2
  913. package/src/emptyState/index.ts +0 -2
  914. package/src/errorSummary/index.ts +0 -2
  915. package/src/fieldGrid/index.ts +0 -2
  916. package/src/fileTree/index.ts +0 -2
  917. package/src/filterChip/index.ts +0 -2
  918. package/src/filterStrip/index.ts +0 -2
  919. package/src/flashWord/index.ts +0 -2
  920. package/src/iconButton/index.ts +0 -2
  921. package/src/imageFrame/index.ts +0 -2
  922. package/src/keyHint/index.ts +0 -3
  923. package/src/lineChart/index.ts +0 -2
  924. package/src/lineDiff/diff.ts +0 -182
  925. package/src/lineDiff/index.ts +0 -4
  926. package/src/linkButton/index.ts +0 -2
  927. package/src/linkState/index.ts +0 -2
  928. package/src/liveRegion/index.ts +0 -2
  929. package/src/navStrip/index.ts +0 -2
  930. package/src/pageHead/index.ts +0 -2
  931. package/src/passwordField/index.ts +0 -2
  932. package/src/propsList/index.ts +0 -2
  933. package/src/queryChip/index.ts +0 -2
  934. package/src/selectAll/index.ts +0 -2
  935. package/src/skipLink/index.ts +0 -1
  936. package/src/statusBar/index.ts +0 -3
  937. package/src/textButton/index.ts +0 -2
  938. package/src/textareaField/index.ts +0 -2
  939. package/src/topBar/index.ts +0 -3
  940. package/src/videoFrame/index.ts +0 -2
@@ -1,20 +1,11 @@
1
- /* pixel paper: base elements and every component class, built on the tokens only.
2
- Components render exactly this markup; DESIGN.md documents it for use without Foldkit. */
3
-
4
1
  @import "./tokens.css";
5
2
 
6
- /* ---------- base ---------- */
7
-
8
3
  * {
9
4
  margin: 0;
10
5
  padding: 0;
11
6
  box-sizing: border-box;
12
7
  }
13
8
 
14
- /* anchors land 16px clear of the sticky top bar, at the height TopBar measures it to be
15
- however it wraps; without Foldkit, at one line's height. A status bar along the bottom is
16
- kept clear the same way: the page ends above it, and so does a scrolled-to anchor. The
17
- measured heights are written inline on <html>, over these */
18
9
  :root {
19
10
  --topbar-h: 48px;
20
11
  --statusbar-h: 0px;
@@ -87,7 +78,6 @@ kbd {
87
78
  display: inline-block;
88
79
  vertical-align: -1px;
89
80
  flex: none;
90
- /* the grid is pixels: never let the rasterizer soften a cell edge */
91
81
  shape-rendering: crispedges;
92
82
  }
93
83
 
@@ -124,10 +114,6 @@ kbd {
124
114
  display: none !important;
125
115
  }
126
116
 
127
- /* ---------- hit areas: every target at least 24px square ---------- */
128
-
129
- /* a control drawn smaller than 24px (a tab, a filter chip, a mark, a text button, a crumb)
130
- keeps its look and takes the pointer over an invisible 24px square centred on it */
131
117
  :is(
132
118
  .nav.tabs button,
133
119
  .switch > button,
@@ -162,7 +148,6 @@ kbd {
162
148
  translate: -50% -50%;
163
149
  }
164
150
 
165
- /* an icon button never gives up its 24px square to a full line; a tag beside it clips first */
166
151
  .iconbtn {
167
152
  flex: none;
168
153
  }
@@ -172,7 +157,6 @@ kbd {
172
157
  min-width: 0;
173
158
  }
174
159
 
175
- /* a clickable tag clips its words inside, so its hit square is not clipped with them */
176
160
  button.tag:has(> span) {
177
161
  overflow: visible;
178
162
  }
@@ -183,8 +167,6 @@ button.tag > span {
183
167
  text-overflow: ellipsis;
184
168
  }
185
169
 
186
- /* ---------- registers ---------- */
187
-
188
170
  .label {
189
171
  font-family: var(--font-px);
190
172
  font-size: var(--type-label);
@@ -225,12 +207,6 @@ button.tag > span {
225
207
  max-width: 46ch;
226
208
  }
227
209
 
228
- /* ---------- layout: stack, group, wrap ---------- */
229
-
230
- /* Space between components, and nothing else: no paper, border or shadow. A stack is a
231
- column whose children take its width (s, m or l apart; m by default); a group is one line
232
- centred on its cross axis that never wraps (s apart); a wrap is a line that wraps, for
233
- buttons and chips (s apart). */
234
210
  .stack {
235
211
  display: grid;
236
212
  align-content: start;
@@ -253,7 +229,6 @@ button.tag > span {
253
229
  min-width: 0;
254
230
  }
255
231
 
256
- /* a wide table or a long line scrolls inside its own box, never widening the stack */
257
232
  .stack > *,
258
233
  .group > * {
259
234
  min-width: 0;
@@ -271,8 +246,6 @@ button.tag > span {
271
246
  gap: var(--space-l);
272
247
  }
273
248
 
274
- /* ---------- the page head: a working screen's name, its count and its actions ---------- */
275
-
276
249
  .page-head {
277
250
  display: flex;
278
251
  flex-wrap: wrap;
@@ -299,7 +272,6 @@ button.tag > span {
299
272
  overflow-wrap: anywhere;
300
273
  }
301
274
 
302
- /* on the dithered ground muted ink is too faint: the count prints in ink */
303
275
  .page-head .meta {
304
276
  font-size: var(--type-state);
305
277
  color: var(--ink);
@@ -318,9 +290,6 @@ button.tag > span {
318
290
  }
319
291
  }
320
292
 
321
- /* ---------- top bar ---------- */
322
-
323
- /* the rail and the stage hang from the bar's lower edge, whatever its height */
324
293
  .topbar {
325
294
  anchor-name: --topbar;
326
295
  position: sticky;
@@ -346,9 +315,6 @@ button.tag > span {
346
315
  white-space: nowrap;
347
316
  }
348
317
 
349
- /* the block cursor, blinking in whole steps: after a word that is busy (a button, a
350
- chip, the connection word, a loading line), and four times after the wordmark. Each
351
- place sets only its size */
352
318
  .cursor {
353
319
  display: inline-block;
354
320
  width: 6px;
@@ -378,8 +344,6 @@ button.tag > span {
378
344
  flex: 1;
379
345
  }
380
346
 
381
- /* the right-hand tools wrap as one group, never one control per line; a group wider than the
382
- window wraps onto lines of its own, at the right */
383
347
  .topbar-tools {
384
348
  display: flex;
385
349
  flex-wrap: wrap;
@@ -417,7 +381,6 @@ button.tag > span {
417
381
  color: var(--muted);
418
382
  }
419
383
 
420
- /* the link dropped and is coming back: a warning, on amber, until it holds or gives up */
421
384
  .link-state.reconnecting {
422
385
  padding: 2px 6px;
423
386
  color: var(--on-status);
@@ -445,8 +408,6 @@ a.textbtn {
445
408
  border-bottom-color: var(--ink);
446
409
  }
447
410
 
448
- /* ---------- nav and tabs: one ink-bordered strip of segments ---------- */
449
-
450
411
  .nav {
451
412
  display: flex;
452
413
  gap: 0;
@@ -455,7 +416,6 @@ a.textbtn {
455
416
  border: var(--line) solid var(--ink);
456
417
  }
457
418
 
458
- /* tabs at the top of a flush panel sit inside its padding */
459
419
  .panel > .tabbed > .nav.tabs {
460
420
  margin: var(--pad) var(--pad) 0;
461
421
  }
@@ -475,7 +435,6 @@ a.textbtn {
475
435
  white-space: nowrap;
476
436
  }
477
437
 
478
- /* every segment after the first (the element rules above would otherwise remove it) */
479
438
  .nav > :is(a, button) + :is(a, button) {
480
439
  border-left: var(--line) solid var(--ink);
481
440
  }
@@ -487,7 +446,6 @@ a.textbtn {
487
446
  color: var(--paper);
488
447
  }
489
448
 
490
- /* --on-head remains readable on plain and inverted segments. */
491
449
  .nav .navnum {
492
450
  display: inline-block;
493
451
  margin-left: 8px;
@@ -502,7 +460,6 @@ a.textbtn {
502
460
  font-size: var(--type-state);
503
461
  }
504
462
 
505
- /* a phone keeps every segment on one strip: tighter pads, never a horizontal scroll */
506
463
  @media (max-width: 600px) {
507
464
  .nav a,
508
465
  .nav button {
@@ -514,9 +471,6 @@ a.textbtn {
514
471
  margin-left: 5px;
515
472
  }
516
473
 
517
- /* the phone bar: wordmark and tools on one line, the page nav as a full-width strip
518
- under them. Where the two do not fit side by side the tools wrap under the wordmark,
519
- which never clips. Every tool stays: a session action may have nowhere else to live */
520
474
  .topbar {
521
475
  gap: 8px 12px;
522
476
  padding: 8px 12px;
@@ -538,8 +492,6 @@ a.textbtn {
538
492
  }
539
493
  }
540
494
 
541
- /* ---------- places: a column of places to go, the one you are in inverted ---------- */
542
-
543
495
  .places ul {
544
496
  list-style: none;
545
497
  }
@@ -575,7 +527,6 @@ a.textbtn {
575
527
  cursor: pointer;
576
528
  }
577
529
 
578
- /* the ring sits inside the line, so the panel's edge never cuts it */
579
530
  .places li > :is(a, button):focus-visible {
580
531
  outline-offset: -4px;
581
532
  }
@@ -612,8 +563,6 @@ a.textbtn {
612
563
  outline-color: var(--paper);
613
564
  }
614
565
 
615
- /* ---------- buttons ---------- */
616
-
617
566
  .btn {
618
567
  font-family: var(--font-px);
619
568
  font-size: var(--type-control);
@@ -676,14 +625,10 @@ a.textbtn {
676
625
  color: var(--paper);
677
626
  }
678
627
 
679
- /* One ring at a time: once the action bar holds focus anywhere, focus carries the ring;
680
- the resting default falls back to the plain print shadow so the ring visibly moves. */
681
628
  .card-actions:focus-within .btn.default-ring:not(:focus) {
682
629
  box-shadow: var(--shadow-button);
683
630
  }
684
631
 
685
- /* a held default that does not hold focus (a confirm's cancel while its delete runs) prints
686
- as every held button, with no ring and no shadow; its margin stays, so nothing moves */
687
632
  .btn.default-ring[aria-disabled="true"]:not(:focus),
688
633
  .card-actions:focus-within .btn.default-ring[aria-disabled="true"]:not(:focus) {
689
634
  box-shadow: none;
@@ -700,8 +645,6 @@ a.textbtn {
700
645
  box-shadow: none;
701
646
  }
702
647
 
703
- /* red at rest is reserved: .danger is the commit button inside a confirm card, never a
704
- row or form action. Rows carry neutral buttons; the confirm card turns them red */
705
648
  .btn.danger {
706
649
  color: var(--red);
707
650
  border-color: var(--red);
@@ -733,7 +676,6 @@ a.textbtn {
733
676
  color: var(--ink);
734
677
  }
735
678
 
736
- /* the key that does the same, small after the words, in the button's own colour */
737
679
  .btn .key-hint {
738
680
  margin-left: var(--space-s);
739
681
  font-family: var(--font-px);
@@ -743,10 +685,6 @@ a.textbtn {
743
685
  opacity: 0.65;
744
686
  }
745
687
 
746
- /* ---------- buttons: busy and done ---------- */
747
-
748
- /* busy: the working cursor prints in the right padding, one cell after the label, so going
749
- busy moves nothing and the button keeps its width */
750
688
  .btn {
751
689
  position: relative;
752
690
  }
@@ -764,9 +702,6 @@ a.textbtn {
764
702
  height: 9px;
765
703
  }
766
704
 
767
- /* done: the work went (a form sent). Ink, as the ok notice's glyph box is, because success
768
- is not a status colour and never green; flat and still, because nothing is left to press.
769
- The check takes the glyph's place and both words share one cell, so the width holds */
770
705
  .btn.done[aria-disabled="true"] {
771
706
  color: var(--paper);
772
707
  background: var(--ink);
@@ -786,8 +721,6 @@ a.textbtn {
786
721
  visibility: hidden;
787
722
  }
788
723
 
789
- /* ---------- menus: one printed slip under its toggle ---------- */
790
-
791
724
  /* hung under its toggle by @foldkit/ui's Anchor, which positions it and flips it near the
792
725
  window edge, in the page's top layer (inside the open dialog when there is one). Anchor
793
726
  writes left and top for an absolute box (fixed it sets itself, under a fixed toggle), so
@@ -809,7 +742,6 @@ a.textbtn {
809
742
  position: relative;
810
743
  }
811
744
 
812
- /* a context menu hangs from the pointer; ContextMenu keeps it inside the window */
813
745
  .menu.at-point {
814
746
  position: fixed;
815
747
  }
@@ -843,8 +775,6 @@ a.textbtn {
843
775
  background: var(--head);
844
776
  }
845
777
 
846
- /* unavailable: printed muted, no hover, still reached by the arrows (its ring shows where
847
- the keyboard is). The item in force keeps its inversion below */
848
778
  .menu [role^="menuitem"][aria-disabled="true"] {
849
779
  color: var(--muted);
850
780
  cursor: default;
@@ -869,7 +799,9 @@ a.textbtn {
869
799
  color: var(--muted);
870
800
  }
871
801
 
872
- .menu :is([aria-current="page"], [role="menuitemradio"][aria-checked="true"]) .key-hint {
802
+ .menu
803
+ :is([aria-current="page"], [role="menuitemradio"][aria-checked="true"])
804
+ .key-hint {
873
805
  color: inherit;
874
806
  opacity: var(--fade-on-ink);
875
807
  }
@@ -893,7 +825,6 @@ a.textbtn {
893
825
  background: var(--ink);
894
826
  }
895
827
 
896
- /* a sentence, not a label: sans, sentence case, one quiet line; a group's heading too */
897
828
  .menu .menu-note {
898
829
  display: block;
899
830
  padding: 7px 12px;
@@ -913,12 +844,10 @@ a.textbtn {
913
844
  gap: var(--gap);
914
845
  }
915
846
 
916
- /* grid items must never let min-content widen a panel past the deck */
917
847
  .deck > * {
918
848
  min-width: 0;
919
849
  }
920
850
 
921
- /* a sheet takes a panel's place on the page, so it prints as one */
922
851
  .panel,
923
852
  .sheet {
924
853
  background: var(--paper);
@@ -974,29 +903,20 @@ a.textbtn {
974
903
  margin-left: auto;
975
904
  }
976
905
 
977
- /* a notice in a foot takes the whole line */
978
906
  .panel-foot > .notice {
979
907
  flex: 1 1 100%;
980
908
  }
981
909
 
982
- /* the shelf: a strip on the head tint under the bar, for a field that picks what the body
983
- shows */
984
910
  .panel-shelf {
985
911
  padding: 10px 12px 12px;
986
912
  background: var(--head);
987
913
  border-bottom: var(--hair) solid var(--rule);
988
914
  }
989
915
 
990
- /* on the head tint a field's label takes on-head: muted misses AA there */
991
916
  .panel-shelf :is(.field > label:not(.choice), .field-label) {
992
917
  color: var(--on-head);
993
918
  }
994
919
 
995
- /* ---------- the panel's title-bar lead and actions ---------- */
996
-
997
- /* small buttons and icon buttons at the bar's right end, and an icon button before the
998
- title; the bar trims its padding around them, as a window's does, so a small button keeps
999
- the bar near its one-line height */
1000
920
  .panel-tb:has(> :is(.panel-lead, .panel-acts)) {
1001
921
  align-items: center;
1002
922
  padding-block: 3px;
@@ -1025,13 +945,10 @@ a.textbtn {
1025
945
  flex: none;
1026
946
  }
1027
947
 
1028
- /* a meta keeps its place right of the title, before the actions */
1029
948
  .panel-tb:has(> .panel-acts) > .meta {
1030
949
  margin-left: 0;
1031
950
  }
1032
951
 
1033
- /* on the ink bar a button prints in paper: an outline, or filled when primary. No print
1034
- shadow (it cannot show on ink), so a press nudges 1px, as a toolbar tool does */
1035
952
  .panel-lead .btn,
1036
953
  .panel-acts .btn {
1037
954
  color: var(--paper);
@@ -1058,22 +975,17 @@ a.textbtn {
1058
975
  opacity: var(--fade-held);
1059
976
  }
1060
977
 
1061
- /* a quiet icon button prints in paper, and a hover cannot darken it to the ink of the bar */
1062
978
  .panel-lead .iconbtn.quiet,
1063
979
  .panel-acts .iconbtn.quiet {
1064
980
  color: inherit;
1065
981
  }
1066
982
 
1067
- /* the ring sits 4px inside the button in its own text colour, so it reads on an outline and
1068
- on a filled one alike */
1069
983
  .panel-lead .btn:focus-visible,
1070
984
  .panel-acts .btn:focus-visible {
1071
985
  outline-color: currentColor;
1072
986
  outline-offset: -4px;
1073
987
  }
1074
988
 
1075
- /* ---------- the filter strip ---------- */
1076
-
1077
989
  .strip {
1078
990
  display: flex;
1079
991
  align-items: center;
@@ -1158,7 +1070,6 @@ button.fchip:active {
1158
1070
  color: var(--paper);
1159
1071
  }
1160
1072
 
1161
- /* inverted, the name prints in paper like its value: a faded paper misses AA on plum */
1162
1073
  .fchip.pinned .fchip-name,
1163
1074
  .fchip[aria-pressed="true"] .fchip-name {
1164
1075
  color: inherit;
@@ -1173,8 +1084,6 @@ button.fchip:active {
1173
1084
  background: var(--head);
1174
1085
  }
1175
1086
 
1176
- /* the input lies above the chip's hit square (in the chip's own stacking context), so a press
1177
- in it places the caret or selects; the rest of the square is the label's, which focuses it */
1178
1087
  .fchip.query input {
1179
1088
  position: relative;
1180
1089
  z-index: 1;
@@ -1212,8 +1121,6 @@ button.fchip:active {
1212
1121
  border-color: var(--ink);
1213
1122
  }
1214
1123
 
1215
- /* ---------- chips ---------- */
1216
-
1217
1124
  .chip {
1218
1125
  font-family: var(--font-px);
1219
1126
  font-size: var(--type-state);
@@ -1232,7 +1139,6 @@ button.fchip:active {
1232
1139
  color: var(--on-status);
1233
1140
  }
1234
1141
 
1235
- /* amber: a warning the row carries (an update waiting, a source behind) */
1236
1142
  .chip.warn {
1237
1143
  background: var(--amber);
1238
1144
  color: var(--on-status);
@@ -1249,11 +1155,6 @@ button.fchip:active {
1249
1155
  border-color: var(--muted);
1250
1156
  }
1251
1157
 
1252
- /* a chip as a cell, where its word would take a title's room: a 10px square, hollow where the
1253
- chip is plain and filled where it has a tone, so plain and toned differ by form, not hue.
1254
- Blocked fills red, where the chip only outlines it, and done fills muted, where the chip only
1255
- tints, since neither an outline nor a tint reads in a 6px cell. Its word is its name and its
1256
- tip. In a row it keeps the 18px of the glyph cell it stands in */
1257
1158
  .chip-dot {
1258
1159
  display: inline-block;
1259
1160
  flex: none;
@@ -1286,7 +1187,6 @@ button.fchip:active {
1286
1187
  margin-inline: 4px;
1287
1188
  }
1288
1189
 
1289
- /* Black on amber preserves 3:1 contrast; an amber glyph on paper does not. */
1290
1190
  .mark {
1291
1191
  display: inline-flex;
1292
1192
  align-items: center;
@@ -1302,7 +1202,6 @@ button.mark {
1302
1202
  cursor: pointer;
1303
1203
  }
1304
1204
 
1305
- /* where every row is marked the mark prints plain: amber is for the one among many */
1306
1205
  .mark.plain {
1307
1206
  background: none;
1308
1207
  color: var(--muted);
@@ -1333,8 +1232,6 @@ button.tag:hover {
1333
1232
  border-color: var(--muted);
1334
1233
  }
1335
1234
 
1336
- /* ---------- rows and the outline ---------- */
1337
-
1338
1235
  .rows {
1339
1236
  list-style: none;
1340
1237
  }
@@ -1343,7 +1240,6 @@ button.tag:hover {
1343
1240
  padding: 8px 0 14px;
1344
1241
  }
1345
1242
 
1346
- /* nested lists indent 26px and hang on a 1px rule guide */
1347
1243
  .tree ul.rows {
1348
1244
  position: relative;
1349
1245
  padding-left: 26px;
@@ -1368,7 +1264,6 @@ button.tag:hover {
1368
1264
  min-height: var(--row);
1369
1265
  }
1370
1266
 
1371
- /* background-color, not background: hover must not wipe the inline indent guides */
1372
1267
  .row:hover,
1373
1268
  .row:focus-within {
1374
1269
  background-color: var(--head);
@@ -1395,8 +1290,6 @@ button.glyph {
1395
1290
  color: var(--ink);
1396
1291
  }
1397
1292
 
1398
- /* the text clips, but 4px of room inside the clip (given back by the margin, so nothing moves)
1399
- lets a title's ring, 2px out and 2px wide, print whole */
1400
1293
  .row .grow {
1401
1294
  flex: 1;
1402
1295
  min-width: 0;
@@ -1407,7 +1300,6 @@ button.glyph {
1407
1300
  margin: -4px;
1408
1301
  }
1409
1302
 
1410
- /* the title opens the record; the pencil renames */
1411
1303
  .row .title {
1412
1304
  font: inherit;
1413
1305
  background: none;
@@ -1427,13 +1319,10 @@ button.glyph {
1427
1319
  text-underline-offset: 3px;
1428
1320
  }
1429
1321
 
1430
- /* held while work runs: the words stay as they are, only the press and the underline go */
1431
1322
  .board-card .title[aria-disabled="true"] {
1432
1323
  cursor: default;
1433
1324
  }
1434
1325
 
1435
- /* stays in layout so hover never reflows the row; dims instead of hiding.
1436
- 0.55 keeps the icons above the 3:1 UI-component contrast floor */
1437
1326
  .row .tools {
1438
1327
  display: inline-flex;
1439
1328
  align-items: center;
@@ -1446,8 +1335,6 @@ button.glyph {
1446
1335
  opacity: 1;
1447
1336
  }
1448
1337
 
1449
- /* a treegrid's own cells around the parts the caller gives (the glyph, the actions): they hold
1450
- their parts as the row would, so a row lays out the same in a treegrid or out of one */
1451
1338
  .row > .cell {
1452
1339
  display: inline-flex;
1453
1340
  align-items: center;
@@ -1469,10 +1356,6 @@ button.glyph {
1469
1356
  gap: 6px;
1470
1357
  }
1471
1358
 
1472
- /* a row whose box is its link's target: the link's ::after covers the row (the row places it;
1473
- the text's clip does not, being no containing block). Only the row's controls and what has a
1474
- tip sit above it, so a menu stays its own target and a dot's tip still shows, while a chip or
1475
- a due day is the link's like the rest of the row */
1476
1359
  .row.linked .grow a {
1477
1360
  color: inherit;
1478
1361
  text-decoration: none;
@@ -1494,7 +1377,6 @@ button.glyph {
1494
1377
  text-underline-offset: 3px;
1495
1378
  }
1496
1379
 
1497
- /* the keyboard's one stop is the link; its ring is the row's, 4px inside it */
1498
1380
  .row.linked .grow a:focus-visible {
1499
1381
  outline: 0;
1500
1382
  }
@@ -1504,11 +1386,7 @@ button.glyph {
1504
1386
  outline-offset: -4px;
1505
1387
  }
1506
1388
 
1507
- /* the row you are on (its link is aria-current) and a board's cursor card print inverted, as
1508
- a place does and as the system marks the one current thing: hover adds nothing, what prints
1509
- muted on paper prints in paper at --fade-on-ink, as a title bar's meta does, chips, marks
1510
- and buttons keep their own fills, and a ring inside prints in paper. Each selector is
1511
- written out, not joined in :is(), so each keeps its own specificity */
1389
+ /* each selector is written out, not joined in :is(), so each keeps its own specificity */
1512
1390
  .row.linked:has(.grow a[aria-current]),
1513
1391
  .board-card[aria-current="true"] {
1514
1392
  background-color: var(--ink);
@@ -1519,8 +1397,10 @@ button.glyph {
1519
1397
  border-color: var(--paper);
1520
1398
  }
1521
1399
 
1522
- .row.linked:has(.grow a[aria-current]) :is(.glyph, .age, .due, .tag, .done-title, .iconbtn.quiet),
1523
- .board-card[aria-current="true"] :is(.glyph, .age, .due, .tag, .done-title, .iconbtn.quiet) {
1400
+ .row.linked:has(.grow a[aria-current])
1401
+ :is(.glyph, .age, .due, .tag, .done-title, .iconbtn.quiet),
1402
+ .board-card[aria-current="true"]
1403
+ :is(.glyph, .age, .due, .tag, .done-title, .iconbtn.quiet) {
1524
1404
  color: inherit;
1525
1405
  opacity: var(--fade-on-ink);
1526
1406
  }
@@ -1530,7 +1410,6 @@ button.glyph {
1530
1410
  border-color: currentColor;
1531
1411
  }
1532
1412
 
1533
- /* lateness cannot be red on ink: it takes a red slip, drawn by a spread so nothing moves */
1534
1413
  .row.linked:has(.grow a[aria-current]) :is(.due.late, .age.stale),
1535
1414
  .board-card[aria-current="true"] :is(.due.late, .age.stale) {
1536
1415
  opacity: 1;
@@ -1545,14 +1424,6 @@ button.glyph {
1545
1424
  outline-color: var(--paper);
1546
1425
  }
1547
1426
 
1548
- /* the cursor: the one row (or board card) the keyboard's commands act on. It is not focus
1549
- (the ring, which can be elsewhere) and not selection (the box's cell).
1550
-
1551
- A list's cursor row is drawn, not filled: a 1px muted line 4px inside the row, so it follows
1552
- the indent of a nested row and never leaves the panel. The row keeps its own colours and
1553
- no fill at all, not even the hover or focus tint other rows take. Focus on the row itself
1554
- thickens that same line to 2px: one line inside the row, never a second ring outside it.
1555
- Controls and fields in the row keep their own ring and surface. */
1556
1427
  .row[aria-current="true"] {
1557
1428
  outline: 1px solid var(--muted);
1558
1429
  outline-offset: -4px;
@@ -1568,8 +1439,6 @@ button.glyph {
1568
1439
  opacity: 1;
1569
1440
  }
1570
1441
 
1571
- /* a phone has no room for the hover tools; the detail card carries every edit. Titles
1572
- wrap to a second line instead of clipping to a few characters beside the chips */
1573
1442
  @media (max-width: 600px) {
1574
1443
  .row .tools {
1575
1444
  display: none;
@@ -1592,10 +1461,6 @@ button.glyph {
1592
1461
  }
1593
1462
  }
1594
1463
 
1595
- /* ---------- selectable rows and the select-all head ---------- */
1596
-
1597
- /* the box's cell: the row's full height at its left edge, all of it the box's target. The
1598
- text beside it is the box's label, so a click there toggles too */
1599
1464
  .row-check {
1600
1465
  position: relative;
1601
1466
  align-self: stretch;
@@ -1606,8 +1471,6 @@ button.glyph {
1606
1471
  padding: 0 10px;
1607
1472
  }
1608
1473
 
1609
- /* the box: a role="checkbox" button printed as a choice's box is, with the same 6px mark
1610
- painted only when checked */
1611
1474
  .row-check > [role="checkbox"] {
1612
1475
  appearance: none;
1613
1476
  width: 14px;
@@ -1628,7 +1491,6 @@ button.glyph {
1628
1491
  height: 6px;
1629
1492
  }
1630
1493
 
1631
- /* a press anywhere in the cell lands on the box */
1632
1494
  .row-check > [role="checkbox"]::after {
1633
1495
  content: "";
1634
1496
  position: absolute;
@@ -1639,11 +1501,6 @@ button.glyph {
1639
1501
  cursor: pointer;
1640
1502
  }
1641
1503
 
1642
- /* selected: the box's cell inverts, an ink square at the row's edge with the box printed in
1643
- paper inside it. Not the whole row: inversion is the system's mark for the one current
1644
- thing, and a list with half its rows inverted reads as a barcode that buries its titles
1645
- and chips. A column of ink cells still reads at a glance, as a history's inverted version
1646
- box does */
1647
1504
  .row-check:has(> [aria-checked="true"]) {
1648
1505
  background: var(--ink);
1649
1506
  }
@@ -1661,19 +1518,16 @@ button.glyph {
1661
1518
  outline-color: var(--paper);
1662
1519
  }
1663
1520
 
1664
- /* a box that cannot be picked (a select-all over an empty list, never checked) prints muted */
1665
1521
  .row-check > [aria-disabled="true"] {
1666
1522
  border-color: var(--muted);
1667
1523
  cursor: default;
1668
1524
  }
1669
1525
 
1670
- /* mixed: some of the list, not all; a 2px bar across the box's cell */
1671
1526
  .row-check > [aria-checked="mixed"]::before {
1672
1527
  height: 2px;
1673
1528
  background: var(--ink);
1674
1529
  }
1675
1530
 
1676
- /* the head above a selectable list: the box, the count, and the bulk actions */
1677
1531
  .row.bulk {
1678
1532
  border-bottom: var(--hair) solid var(--rule);
1679
1533
  }
@@ -1687,7 +1541,8 @@ button.glyph {
1687
1541
  color: var(--muted);
1688
1542
  }
1689
1543
 
1690
- .row.bulk:has(> .row-check > :is([aria-checked="true"], [aria-checked="mixed"])) .bulk-count {
1544
+ .row.bulk:has(> .row-check > :is([aria-checked="true"], [aria-checked="mixed"]))
1545
+ .bulk-count {
1691
1546
  color: var(--ink);
1692
1547
  }
1693
1548
 
@@ -1698,7 +1553,6 @@ button.glyph {
1698
1553
  flex: none;
1699
1554
  }
1700
1555
 
1701
- /* inline editing: the ghost ⇄ input swap must not change the row's height */
1702
1556
  input.inline-input {
1703
1557
  font: inherit;
1704
1558
  color: inherit;
@@ -1710,7 +1564,6 @@ input.inline-input {
1710
1564
  height: calc(1lh + 1px);
1711
1565
  }
1712
1566
 
1713
- /* a write is out: the text holds, muted, until it settles; a refused one keeps it on a red rule */
1714
1567
  input.inline-input[aria-busy="true"] {
1715
1568
  color: var(--muted);
1716
1569
  cursor: progress;
@@ -1720,9 +1573,6 @@ input.inline-input[aria-invalid="true"] {
1720
1573
  border-bottom-color: var(--red);
1721
1574
  }
1722
1575
 
1723
- /* in a row, focus shows as the caret and the rule, not a ring: the rule doubles to 2px, as a
1724
- field's baseline does, drawn inside the box, so the row keeps its height, and in the rule's
1725
- own colour, so a refused edit stays red */
1726
1576
  .row .grow input.inline-input:focus-visible {
1727
1577
  outline: none;
1728
1578
  box-shadow: inset 0 -1px 0 var(--ink);
@@ -1732,7 +1582,6 @@ input.inline-input[aria-invalid="true"] {
1732
1582
  box-shadow: inset 0 -1px 0 var(--red);
1733
1583
  }
1734
1584
 
1735
- /* the flash word: a transient confirmation printed beside the action, then gone */
1736
1585
  .flash-word {
1737
1586
  font-family: var(--font-px);
1738
1587
  font-size: var(--type-state);
@@ -1746,8 +1595,6 @@ input.inline-input[aria-invalid="true"] {
1746
1595
  display: none;
1747
1596
  }
1748
1597
 
1749
- /* ---------- selects, checks, radios ---------- */
1750
-
1751
1598
  select,
1752
1599
  select::picker(select) {
1753
1600
  appearance: none;
@@ -1795,9 +1642,6 @@ select option {
1795
1642
  cursor: pointer;
1796
1643
  }
1797
1644
 
1798
- /* a field that cannot change prints its value muted. The boxless one also drops its dotted
1799
- baseline, the mark of a place to type, so it reads as a value; boxed ones mute their box.
1800
- The .boxed selector is there for its weight: it out-weighs `.field.boxed input`, below */
1801
1645
  .field :is(input, textarea):disabled,
1802
1646
  .field.boxed :is(input, textarea):disabled,
1803
1647
  select:disabled {
@@ -1824,8 +1668,6 @@ select:disabled {
1824
1668
  cursor: pointer;
1825
1669
  }
1826
1670
 
1827
- /* a radio choice is its option: the whole line is the button, so a press anywhere on it
1828
- chooses it */
1829
1671
  button.choice {
1830
1672
  appearance: none;
1831
1673
  font: inherit;
@@ -1853,16 +1695,12 @@ button.choice {
1853
1695
  gap: 2px;
1854
1696
  }
1855
1697
 
1856
- /* side by side while they fit, then onto the next line: never off the panel's edge */
1857
1698
  .choices.inline {
1858
1699
  display: flex;
1859
1700
  flex-wrap: wrap;
1860
1701
  gap: 2px 24px;
1861
1702
  }
1862
1703
 
1863
- /* the choice's box: a role="checkbox" button, or the mark inside a role="radio" one, a 14px
1864
- ink square whose 6px mark exists in both states and is only painted when checked, so the
1865
- line never bounces on toggle */
1866
1704
  .choice-box {
1867
1705
  appearance: none;
1868
1706
  width: 14px;
@@ -1884,8 +1722,6 @@ button.choice {
1884
1722
  height: 6px;
1885
1723
  }
1886
1724
 
1887
- /* a radio's mark is a diamond: the same cell, turned, so a single choice reads differently
1888
- from a checkbox at a glance */
1889
1725
  .choice[role="radio"] > .choice-box::before {
1890
1726
  clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
1891
1727
  width: 8px;
@@ -1897,8 +1733,6 @@ button.choice {
1897
1733
  background: var(--ink);
1898
1734
  }
1899
1735
 
1900
- /* a failed radio group (the group is aria-invalid, which a radio does not take): each box and
1901
- its name turn red; the mark inside stays ink */
1902
1736
  .choices[aria-invalid="true"] > .choice[role="radio"] > .choice-box {
1903
1737
  border-color: var(--red);
1904
1738
  }
@@ -1919,8 +1753,6 @@ button.choice {
1919
1753
  cursor: default;
1920
1754
  }
1921
1755
 
1922
- /* ---------- fields ---------- */
1923
-
1924
1756
  .field > label:not(.choice),
1925
1757
  .field-label {
1926
1758
  display: block;
@@ -1932,7 +1764,6 @@ button.choice {
1932
1764
  margin-bottom: 4px;
1933
1765
  }
1934
1766
 
1935
- /* boxless: a dotted muted baseline that becomes solid ink on focus */
1936
1767
  .field input,
1937
1768
  .field textarea {
1938
1769
  width: 100%;
@@ -1963,7 +1794,6 @@ textarea::-webkit-resizer {
1963
1794
  padding-bottom: 1px;
1964
1795
  }
1965
1796
 
1966
- /* the failed field wears red on its own rule and label, not only in the notice above */
1967
1797
  .field input[aria-invalid="true"],
1968
1798
  .field textarea[aria-invalid="true"] {
1969
1799
  border-bottom: 2px solid var(--red);
@@ -1981,7 +1811,6 @@ textarea::-webkit-resizer {
1981
1811
  color: var(--muted);
1982
1812
  }
1983
1813
 
1984
- /* why the field failed, said in red ink under the control and before its help */
1985
1814
  .field .field-error {
1986
1815
  color: var(--red);
1987
1816
  }
@@ -1992,7 +1821,6 @@ textarea::-webkit-resizer {
1992
1821
  gap: 12px 16px;
1993
1822
  }
1994
1823
 
1995
- /* boxed: the field that is the whole job of its row (sign-in, a quick-add field) */
1996
1824
  .field.boxed input,
1997
1825
  .field.boxed textarea {
1998
1826
  border: var(--line) solid var(--ink);
@@ -2012,7 +1840,6 @@ textarea::-webkit-resizer {
2012
1840
  padding-bottom: 5px;
2013
1841
  }
2014
1842
 
2015
- /* a password: the show/hide toggle sits inside the box, at its right end */
2016
1843
  .password {
2017
1844
  display: grid;
2018
1845
  }
@@ -2031,7 +1858,6 @@ textarea::-webkit-resizer {
2031
1858
  padding-right: 32px;
2032
1859
  }
2033
1860
 
2034
- /* a new password's strength: four short cells and its word, under the box */
2035
1861
  .field .strength {
2036
1862
  display: flex;
2037
1863
  align-items: center;
@@ -2039,9 +1865,6 @@ textarea::-webkit-resizer {
2039
1865
  margin-top: 6px;
2040
1866
  }
2041
1867
 
2042
- /* a date is picked like a select: always boxed (Field adds .boxed), a little shorter, in
2043
- the pixel face. After the boxed rules, so its padding holds when it fails or has focus;
2044
- its border, red or muted, is theirs */
2045
1868
  .field.boxed input[type="date"] {
2046
1869
  min-height: 30px;
2047
1870
  padding: 3px 8px;
@@ -2078,9 +1901,6 @@ input.inline-input.title-edit {
2078
1901
  border-bottom-color: var(--muted);
2079
1902
  }
2080
1903
 
2081
- /* ---------- notices: one line, a glyph in a box, the product's own words ---------- */
2082
-
2083
- /* a link or a path in a notice breaks rather than pushing its box wide */
2084
1904
  .notice {
2085
1905
  white-space: normal;
2086
1906
  overflow-wrap: anywhere;
@@ -2116,8 +1936,6 @@ input.inline-input.title-edit {
2116
1936
  display: block;
2117
1937
  }
2118
1938
 
2119
- /* the glyph box a notice, an outcome or a banner opens with, filled in its tone: amber by
2120
- default */
2121
1939
  :is(.notice, .outcome, .banner) > .glyph {
2122
1940
  flex: none;
2123
1941
  width: 20px;
@@ -2135,8 +1953,6 @@ input.inline-input.title-edit {
2135
1953
  border-color: var(--red);
2136
1954
  }
2137
1955
 
2138
- /* done: a committed change the product wants acknowledged (registered, published). Ink,
2139
- not green: green means active, and success is not a status */
2140
1956
  :is(.notice, .outcome, .banner) > .glyph.ok {
2141
1957
  background: var(--ink);
2142
1958
  color: var(--paper);
@@ -2148,20 +1964,14 @@ input.inline-input.title-edit {
2148
1964
  border-color: var(--rule);
2149
1965
  }
2150
1966
 
2151
- /* ---------- form errors: the failed field in red, and the summary above the form ---------- */
2152
-
2153
- /* a failed select: a red box, as a failed boxed field is */
2154
1967
  select[aria-invalid="true"] {
2155
1968
  border-color: var(--red);
2156
1969
  }
2157
1970
 
2158
- /* a fieldset holding a failed control turns its legend red, as a field turns its label */
2159
1971
  .field:has([aria-invalid="true"]) > legend {
2160
1972
  color: var(--red);
2161
1973
  }
2162
1974
 
2163
- /* the summary: the error notice, its headline, then a link to each failed field */
2164
- /* links 24px apart, so each keeps its 24px hit square to itself */
2165
1975
  .error-summary ul {
2166
1976
  list-style: none;
2167
1977
  margin-top: 4px;
@@ -2180,8 +1990,6 @@ select[aria-invalid="true"] {
2180
1990
  text-decoration-thickness: 2px;
2181
1991
  }
2182
1992
 
2183
- /* ---------- tables ---------- */
2184
-
2185
1993
  .table-wrap {
2186
1994
  overflow-x: auto;
2187
1995
  }
@@ -2234,7 +2042,6 @@ select[aria-invalid="true"] {
2234
2042
  white-space: nowrap;
2235
2043
  }
2236
2044
 
2237
- /* the actions stay in reach while a wide table scrolls under them */
2238
2045
  .table td.acts,
2239
2046
  .table:has(td.acts) th:last-child {
2240
2047
  position: sticky;
@@ -2250,7 +2057,6 @@ select[aria-invalid="true"] {
2250
2057
  background: var(--head);
2251
2058
  }
2252
2059
 
2253
- /* the pinned column is a printed seam: the rest of the row scrolls under a 2px ink rule */
2254
2060
  @media (max-width: 600px) {
2255
2061
  /* a box-shadow, not a border: collapsed table borders paint with the table and stay
2256
2062
  behind when the cell sticks; the inset shadow travels with the cell */
@@ -2265,8 +2071,6 @@ select[aria-invalid="true"] {
2265
2071
  margin-left: 8px;
2266
2072
  }
2267
2073
 
2268
- /* a stacked table: on a phone each row becomes a block of label and value lines, so a
2269
- pinned action column never slices through what the row says */
2270
2074
  @media (max-width: 600px) {
2271
2075
  .table thead {
2272
2076
  display: none;
@@ -2325,14 +2129,12 @@ select[aria-invalid="true"] {
2325
2129
  text-decoration: line-through;
2326
2130
  }
2327
2131
 
2328
- /* ---------- properties: label, value, copy ---------- */
2329
-
2330
- /* cells stretch so every rule in a row meets at one line; each cell centres its own content */
2331
- /* the action column stands against the longest value, not at the far edge of a wide
2332
- panel, so a copy button reads as belonging to its value; the rules still run full width */
2333
2132
  .props {
2334
2133
  display: grid;
2335
- grid-template-columns: max-content minmax(0, max-content) minmax(max-content, 1fr);
2134
+ grid-template-columns: max-content minmax(0, max-content) minmax(
2135
+ max-content,
2136
+ 1fr
2137
+ );
2336
2138
  align-items: stretch;
2337
2139
  }
2338
2140
 
@@ -2396,8 +2198,6 @@ select[aria-invalid="true"] {
2396
2198
  padding: 1px 6px;
2397
2199
  }
2398
2200
 
2399
- /* ---------- code surfaces and secrets ---------- */
2400
-
2401
2201
  .code-surface {
2402
2202
  display: block;
2403
2203
  width: 100%;
@@ -2418,7 +2218,6 @@ textarea.code-surface {
2418
2218
  max-height: 60vh;
2419
2219
  }
2420
2220
 
2421
- /* a phone wraps code rather than scrolling it sideways under a thumb */
2422
2221
  @media (max-width: 600px) {
2423
2222
  textarea.code-surface {
2424
2223
  white-space: pre-wrap;
@@ -2517,7 +2316,6 @@ pre.code-surface {
2517
2316
  letter-spacing: 0.02em;
2518
2317
  }
2519
2318
 
2520
- /* a phone wraps the value rather than hiding its end past the edge */
2521
2319
  @media (max-width: 600px) {
2522
2320
  .secret code {
2523
2321
  white-space: normal;
@@ -2525,8 +2323,6 @@ pre.code-surface {
2525
2323
  }
2526
2324
  }
2527
2325
 
2528
- /* ---------- history ---------- */
2529
-
2530
2326
  .history-list {
2531
2327
  list-style: none;
2532
2328
  border-top: var(--hair) solid var(--rule);
@@ -2572,13 +2368,11 @@ pre.code-surface {
2572
2368
  white-space: nowrap;
2573
2369
  }
2574
2370
 
2575
- /* every version keeps the same box, so inverting the one in force moves nothing */
2576
2371
  .history-list li.current .v {
2577
2372
  background: var(--ink);
2578
2373
  color: var(--paper);
2579
2374
  }
2580
2375
 
2581
- /* a Time in it (an age, "4m ago") takes the inverted box's paper, not its own muted ink */
2582
2376
  .history-list li.current .v .age {
2583
2377
  color: inherit;
2584
2378
  }
@@ -2646,7 +2440,6 @@ pre.code-surface {
2646
2440
  color: var(--ink);
2647
2441
  }
2648
2442
 
2649
- /* an added line sits on the head tint, where muted misses AA in plum */
2650
2443
  .diff tr.add td.ln {
2651
2444
  color: var(--on-head);
2652
2445
  }
@@ -2659,7 +2452,6 @@ pre.code-surface {
2659
2452
  color: var(--red);
2660
2453
  }
2661
2454
 
2662
- /* a folded run prints as a ruled gap, not as code */
2663
2455
  .diff tr.fold td {
2664
2456
  font-family: var(--font-px);
2665
2457
  font-size: var(--type-label);
@@ -2679,8 +2471,6 @@ pre.code-surface {
2679
2471
  }
2680
2472
  }
2681
2473
 
2682
- /* ---------- overlays ---------- */
2683
-
2684
2474
  /* A dialog opens with show(), in place: Foldkit's Dialog makes the page around it inert and
2685
2475
  hidden from screen readers, and sets its fixed, full-viewport box inline. The veil is an
2686
2476
  element of its own (.veil-backdrop) under the pad; the pad lets a press through to it
@@ -2784,20 +2574,16 @@ dialog.veil:focus {
2784
2574
  opacity: var(--fade-on-ink);
2785
2575
  }
2786
2576
 
2787
- /* a held icon button fades on the bar, as a held button in a panel's title bar does */
2788
2577
  :is(.card-tb, .panel-tb) .iconbtn[aria-disabled="true"] {
2789
2578
  opacity: var(--fade-held);
2790
2579
  cursor: default;
2791
2580
  }
2792
2581
 
2793
- /* an ink ring vanishes on an ink bar: in a title bar the ring prints in paper and sits
2794
- inside the control, so it never runs off the bar's edge onto paper */
2795
2582
  :is(.panel-tb, .card-tb) :focus-visible {
2796
2583
  outline-color: var(--paper);
2797
2584
  outline-offset: -2px;
2798
2585
  }
2799
2586
 
2800
- /* a word longer than the card (a path, a link, an id) breaks rather than pushing it wide */
2801
2587
  .card-body {
2802
2588
  overflow-wrap: break-word;
2803
2589
  padding: var(--pad);
@@ -2820,7 +2606,6 @@ dialog.veil:focus {
2820
2606
  flex-wrap: wrap;
2821
2607
  }
2822
2608
 
2823
- /* the actions hold together at the right; when the bar wraps they drop below the lead as one */
2824
2609
  .card-acts {
2825
2610
  display: flex;
2826
2611
  flex-wrap: wrap;
@@ -2830,8 +2615,6 @@ dialog.veil:focus {
2830
2615
  margin-left: auto;
2831
2616
  }
2832
2617
 
2833
- /* ---------- outcomes: a glyph in a box, a headline, a sentence ---------- */
2834
-
2835
2618
  .outcome {
2836
2619
  display: flex;
2837
2620
  gap: 14px;
@@ -2868,8 +2651,6 @@ dialog.veil:focus {
2868
2651
  margin-top: 8px;
2869
2652
  }
2870
2653
 
2871
- /* ---------- the keymap card ---------- */
2872
-
2873
2654
  .keymap {
2874
2655
  display: grid;
2875
2656
  gap: 14px;
@@ -2910,10 +2691,6 @@ dialog.veil:focus {
2910
2691
  color: var(--muted);
2911
2692
  }
2912
2693
 
2913
- /* ---------- the command palette ---------- */
2914
-
2915
- /* the scope (what the commands act on, a long title as well) wraps inside its chip, and the
2916
- field takes its own line when what is left is too narrow to type in */
2917
2694
  .palette-q {
2918
2695
  display: flex;
2919
2696
  flex-wrap: wrap;
@@ -2940,7 +2717,6 @@ dialog.veil:focus {
2940
2717
  overflow-wrap: anywhere;
2941
2718
  }
2942
2719
 
2943
- /* on a page, its name after the scope: what is being chosen for what */
2944
2720
  .palette-title {
2945
2721
  font-family: var(--font-px);
2946
2722
  font-size: var(--type-label);
@@ -2969,9 +2745,8 @@ dialog.veil:focus {
2969
2745
  align-items: center;
2970
2746
  gap: 10px;
2971
2747
  width: 100%;
2972
- /* on a page's tree a choice indents a step a level under the roots (--palette-level), never
2973
- past a third of the row */
2974
- padding: 8px 16px 8px calc(16px + min((var(--palette-level, 1) - 1) * 20px, 33%));
2748
+ padding: 8px 16px 8px
2749
+ calc(16px + min((var(--palette-level, 1) - 1) * 20px, 33%));
2975
2750
  font-family: var(--font-px);
2976
2751
  font-size: var(--type-control);
2977
2752
  text-transform: uppercase;
@@ -2983,15 +2758,11 @@ dialog.veil:focus {
2983
2758
  text-align: left;
2984
2759
  }
2985
2760
 
2986
- /* a row that cannot run now prints muted, its reason in the hint; on the cursor it inverts
2987
- like any other, and the reason says why Enter does nothing */
2988
2761
  .palette-row[aria-disabled="true"] {
2989
2762
  color: var(--muted);
2990
2763
  cursor: default;
2991
2764
  }
2992
2765
 
2993
- /* the cursor: the inverted row, moved by the keys only. The pointer shades the row under it,
2994
- as a list's row does on hover, and a click picks it */
2995
2766
  .palette-row[aria-selected="true"] {
2996
2767
  background: var(--ink);
2997
2768
  color: var(--paper);
@@ -3001,7 +2772,6 @@ dialog.veil:focus {
3001
2772
  background-color: var(--head);
3002
2773
  }
3003
2774
 
3004
- /* a choice a query keeps only to show where a found one sits: muted, still pickable */
3005
2775
  .palette-row.context:not([aria-selected="true"]) {
3006
2776
  color: var(--muted);
3007
2777
  }
@@ -3051,7 +2821,6 @@ dialog.veil:focus {
3051
2821
  color: inherit;
3052
2822
  }
3053
2823
 
3054
- /* a command that opens a page of choices says so at the far right */
3055
2824
  .palette-row .glyph.opens {
3056
2825
  display: inline-flex;
3057
2826
  color: var(--muted);
@@ -3065,7 +2834,6 @@ dialog.veil:focus {
3065
2834
  margin-left: auto;
3066
2835
  }
3067
2836
 
3068
- /* above the list: the app's own word (a sync notice, why a pick was refused) */
3069
2837
  .palette-detail {
3070
2838
  display: grid;
3071
2839
  gap: 8px;
@@ -3081,8 +2849,6 @@ dialog.veil:focus {
3081
2849
  color: var(--muted);
3082
2850
  }
3083
2851
 
3084
- /* ---------- empty states ---------- */
3085
-
3086
2852
  .empty {
3087
2853
  padding: 26px 16px;
3088
2854
  text-align: center;
@@ -3108,8 +2874,6 @@ dialog.veil:focus {
3108
2874
  margin-top: 6px;
3109
2875
  }
3110
2876
 
3111
- /* ---------- banners and walls ---------- */
3112
-
3113
2877
  .banner {
3114
2878
  position: fixed;
3115
2879
  bottom: calc(var(--statusbar-h) + 16px);
@@ -3162,11 +2926,6 @@ dialog.veil:focus {
3162
2926
  color: var(--ink);
3163
2927
  }
3164
2928
 
3165
- /* ---------- the wall's corner: a slip of controls where a top bar would be ---------- */
3166
-
3167
- /* A page with no top bar keeps what a bar would hold (the palette switch) on a paper slip in
3168
- its top-left corner, outside the wall's card. It sits in the page, not fixed to the window,
3169
- so it scrolls away with the top and never covers a tall card. */
3170
2929
  .wall-corner {
3171
2930
  position: absolute;
3172
2931
  top: 12px;
@@ -3183,12 +2942,10 @@ dialog.veil:focus {
3183
2942
  box-shadow: var(--shadow-button);
3184
2943
  }
3185
2944
 
3186
- /* the card keeps clear of the slip */
3187
2945
  .wall-corner ~ .wall {
3188
2946
  padding-top: 72px;
3189
2947
  }
3190
2948
 
3191
- /* a phone has no corner to spare: the slip wraps in the page's flow above the card */
3192
2949
  @media (max-width: 600px) {
3193
2950
  .wall-corner {
3194
2951
  position: static;
@@ -3201,22 +2958,15 @@ dialog.veil:focus {
3201
2958
  }
3202
2959
  }
3203
2960
 
3204
- /* ---------- lists in a card: rows of identities, edge to edge ---------- */
3205
-
3206
- /* a list of rows in a card's body meets the card's edges, between two rules */
3207
2961
  .card-body > .rows {
3208
2962
  margin-inline: calc(-1 * var(--pad));
3209
2963
  border-block: var(--hair) solid var(--rule);
3210
2964
  }
3211
2965
 
3212
- /* an identity as a row's text wraps its name instead of clipping it */
3213
2966
  .row .grow > .identity {
3214
2967
  white-space: normal;
3215
2968
  }
3216
2969
 
3217
- /* ---------- groups in an outline ---------- */
3218
-
3219
- /* a group's name: the row that owns the rows under it */
3220
2970
  .group-name {
3221
2971
  font-family: var(--font-px);
3222
2972
  font-size: var(--type-name);
@@ -3224,14 +2974,12 @@ dialog.veil:focus {
3224
2974
  letter-spacing: var(--tracking-caps);
3225
2975
  }
3226
2976
 
3227
- /* outside a filter, printed only to keep a match on its chain: muted, no chips */
3228
2977
  .row.context .title,
3229
2978
  .row.context .group-name,
3230
2979
  .row.context:hover button.glyph {
3231
2980
  color: var(--muted);
3232
2981
  }
3233
2982
 
3234
- /* a phone gives the title its own line; chips and tools go under it */
3235
2983
  @media (max-width: 600px) {
3236
2984
  .tree .row {
3237
2985
  flex-wrap: wrap;
@@ -3256,8 +3004,6 @@ dialog.veil:focus {
3256
3004
  }
3257
3005
  }
3258
3006
 
3259
- /* ---------- due days ---------- */
3260
-
3261
3007
  .due {
3262
3008
  font-family: var(--font-px);
3263
3009
  font-size: var(--type-state);
@@ -3269,8 +3015,6 @@ dialog.veil:focus {
3269
3015
  color: var(--red);
3270
3016
  }
3271
3017
 
3272
- /* ---------- the board: columns of printed slips ---------- */
3273
-
3274
3018
  .board {
3275
3019
  display: grid;
3276
3020
  grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
@@ -3341,25 +3085,20 @@ dialog.veil:focus {
3341
3085
  .board-card [data-board-grip] {
3342
3086
  margin-right: -6px;
3343
3087
  cursor: grab;
3344
- /* the grip is where a finger drags; the rest of the slip scrolls the page */
3345
3088
  touch-action: none;
3346
3089
  }
3347
3090
 
3348
- /* the held copy that follows the pointer: lifted onto the card shadow */
3349
3091
  .board-card.lifted {
3350
3092
  cursor: grabbing;
3351
3093
  background: var(--head);
3352
3094
  box-shadow: var(--shadow-card);
3353
3095
  }
3354
3096
 
3355
- /* its holder, placed at the pointer by the board; the board measures the card it lifts,
3356
- so the copy is as wide as the card and keeps the pointer where it pressed */
3357
3097
  .board-lift {
3358
3098
  width: var(--lift-width, 240px);
3359
3099
  translate: var(--lift-x, 0) var(--lift-y, 0);
3360
3100
  }
3361
3101
 
3362
- /* a card held by the keyboard prints its copy at the top of the column it would land in */
3363
3102
  .board-lift-slot {
3364
3103
  list-style: none;
3365
3104
  }
@@ -3372,7 +3111,6 @@ dialog.veil:focus {
3372
3111
  opacity: var(--fade-dragged);
3373
3112
  }
3374
3113
 
3375
- /* focus on the title rings the whole slip, outside its own border */
3376
3114
  .board-card:focus-within {
3377
3115
  outline: var(--line) solid var(--ink);
3378
3116
  outline-offset: 2px;
@@ -3383,7 +3121,6 @@ dialog.veil:focus {
3383
3121
  outline: none;
3384
3122
  }
3385
3123
 
3386
- /* the card's own hover and focus tints come after the cursor: it keeps its ink */
3387
3124
  .board-card[aria-current="true"]:is(:hover, :focus-within) {
3388
3125
  background-color: var(--ink);
3389
3126
  }
@@ -3403,8 +3140,6 @@ dialog.veil:focus {
3403
3140
  overflow-wrap: anywhere;
3404
3141
  }
3405
3142
 
3406
- /* a title edited in place prints ink on paper, on the cursor's inverted slip too; its caret
3407
- and its rule are its focus, inside the slip's ring */
3408
3143
  .board-card input.inline-input {
3409
3144
  color: var(--ink);
3410
3145
  }
@@ -3424,13 +3159,10 @@ dialog.veil:focus {
3424
3159
  flex: 1;
3425
3160
  }
3426
3161
 
3427
- /* ---------- sortable: items the reader puts in order, as rows or tiles ---------- */
3428
-
3429
3162
  .sortable-items {
3430
3163
  list-style: none;
3431
3164
  }
3432
3165
 
3433
- /* a row: the grip, then the item, between 1px rules, edge to edge in a flush panel */
3434
3166
  .sortable-item {
3435
3167
  display: flex;
3436
3168
  align-items: center;
@@ -3455,7 +3187,6 @@ dialog.veil:focus {
3455
3187
  flex: none;
3456
3188
  }
3457
3189
 
3458
- /* the grip is the only handle: the rest of the item selects its text and scrolls the page */
3459
3190
  .sortable-item.movable [data-sortable-grip] {
3460
3191
  cursor: grab;
3461
3192
  touch-action: none;
@@ -3465,8 +3196,6 @@ dialog.veil:focus {
3465
3196
  opacity: var(--fade-dragged);
3466
3197
  }
3467
3198
 
3468
- /* where a pointer would drop the held item: a 2px dashed ink line beside the item it lands
3469
- next to, drawn over the layout so nothing moves under the pointer */
3470
3199
  .sortable-item:is(.drop-before, .drop-after)::before {
3471
3200
  content: "";
3472
3201
  position: absolute;
@@ -3484,7 +3213,8 @@ dialog.veil:focus {
3484
3213
  bottom: -1px;
3485
3214
  }
3486
3215
 
3487
- .sortable:is(.grid, .panels) .sortable-item:is(.drop-before, .drop-after)::before {
3216
+ .sortable:is(.grid, .panels)
3217
+ .sortable-item:is(.drop-before, .drop-after)::before {
3488
3218
  top: -2px;
3489
3219
  bottom: -2px;
3490
3220
  left: auto;
@@ -3501,8 +3231,6 @@ dialog.veil:focus {
3501
3231
  right: -9px;
3502
3232
  }
3503
3233
 
3504
- /* the held copy, following the pointer or where the keyboard would drop it: lifted onto the
3505
- card shadow and tinted, as a board's is; the held item keeps its own print */
3506
3234
  .sortable-item.lifted {
3507
3235
  border: var(--line) solid var(--ink);
3508
3236
  background: var(--head);
@@ -3521,7 +3249,6 @@ dialog.veil:focus {
3521
3249
  translate: var(--lift-x, 0) var(--lift-y, 0);
3522
3250
  }
3523
3251
 
3524
- /* tiles: paper slips on the 3px print shadow that wrap, 180px and up */
3525
3252
  .sortable.grid .sortable-items {
3526
3253
  display: grid;
3527
3254
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
@@ -3545,9 +3272,6 @@ dialog.veil:focus {
3545
3272
  padding: 0;
3546
3273
  }
3547
3274
 
3548
- /* panels: the parent's own panels, up to three across in the deck's gutter and 300px and up,
3549
- so two across and then one as the column narrows. A row takes its tallest panel's height,
3550
- and each panel's foot sits at its bottom */
3551
3275
  .sortable.panels .sortable-items {
3552
3276
  display: grid;
3553
3277
  grid-template-columns: repeat(
@@ -3578,7 +3302,6 @@ dialog.veil:focus {
3578
3302
  margin-top: auto;
3579
3303
  }
3580
3304
 
3581
- /* the drop line runs down the middle of the gutter */
3582
3305
  .sortable.panels .sortable-item.drop-before::before {
3583
3306
  left: calc(var(--gap) / -2 - 1px);
3584
3307
  }
@@ -3587,7 +3310,6 @@ dialog.veil:focus {
3587
3310
  right: calc(var(--gap) / -2 - 1px);
3588
3311
  }
3589
3312
 
3590
- /* the held copy is the panel itself, tinted head and lifted onto the card shadow */
3591
3313
  .sortable.panels .sortable-item.lifted {
3592
3314
  border: 0;
3593
3315
  box-shadow: none;
@@ -3602,7 +3324,6 @@ dialog.veil:focus {
3602
3324
  padding: 0;
3603
3325
  }
3604
3326
 
3605
- /* while a pointer carries an item, the page grabs and selects nothing */
3606
3327
  :root[data-pixel-paper-dragging] {
3607
3328
  user-select: none;
3608
3329
  }
@@ -3611,8 +3332,6 @@ dialog.veil:focus {
3611
3332
  cursor: grabbing !important;
3612
3333
  }
3613
3334
 
3614
- /* ---------- cells: a reading printed as ink squares in a box ---------- */
3615
-
3616
3335
  .cells {
3617
3336
  display: inline-flex;
3618
3337
  gap: 2px;
@@ -3637,23 +3356,17 @@ dialog.veil:focus {
3637
3356
  height: 8px;
3638
3357
  }
3639
3358
 
3640
- /* meters in a list step down by their column instead (below) */
3641
3359
  @media (max-width: 600px) {
3642
3360
  .cells:not(.short, .meters *) .cell {
3643
3361
  width: 8px;
3644
3362
  }
3645
3363
  }
3646
3364
 
3647
- /* ---------- meters: a named reading, its cells, the numbers and a foot line ---------- */
3648
-
3649
- /* the list is the container its rows measure: they stack and their cells narrow by the
3650
- column they are placed in, not by the window */
3651
3365
  .meters {
3652
3366
  container: meters / inline-size;
3653
3367
  list-style: none;
3654
3368
  }
3655
3369
 
3656
- /* name and plan in a left column; the cells, the reading and the foot beside them */
3657
3370
  .meter-row {
3658
3371
  display: grid;
3659
3372
  grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
@@ -3697,8 +3410,6 @@ dialog.veil:focus {
3697
3410
  }
3698
3411
  }
3699
3412
 
3700
- /* twenty cells take 246px at 10px each; in a narrower column they step down whole pixels,
3701
- never to a fraction, so a meter fits a column of 160px and up */
3702
3413
  @container meters (width < 280px) {
3703
3414
  .meters .cells .cell {
3704
3415
  width: 8px;
@@ -3738,8 +3449,6 @@ dialog.veil:focus {
3738
3449
  flex-wrap: wrap;
3739
3450
  }
3740
3451
 
3741
- /* a toned meter's lit cells take its reading's tone, amber from 80% and red at the maximum,
3742
- unless the reading is stale */
3743
3452
  .meter-row.toned.high:not(.stale) .cells .cell.on {
3744
3453
  background: var(--amber);
3745
3454
  }
@@ -3748,7 +3457,6 @@ dialog.veil:focus {
3748
3457
  background: var(--red);
3749
3458
  }
3750
3459
 
3751
- /* a stale reading prints its cells muted: the number is last known, not current */
3752
3460
  .meter-row.stale .cells .cell.on {
3753
3461
  background: var(--muted);
3754
3462
  }
@@ -3784,7 +3492,6 @@ dialog.veil:focus {
3784
3492
  color: var(--red);
3785
3493
  }
3786
3494
 
3787
- /* a history list of checks: when, what was checked, what it read */
3788
3495
  .history-list.checks {
3789
3496
  border-top: 0;
3790
3497
  }
@@ -3804,12 +3511,6 @@ dialog.veil:focus {
3804
3511
  }
3805
3512
  }
3806
3513
 
3807
- /* wrapped: each entry in full, compact enough for a rail's panel. When (a whole timestamp,
3808
- muted, flush with the what under it) and who share the first line, with the action at its
3809
- end; what runs under them in the note size and wraps. No rule above the first entry and no
3810
- padding outside the first and last, so the list starts and ends where its body's content
3811
- does. The version in force still inverts only its own box, padded so its ink clears the
3812
- words */
3813
3514
  .history-list.wrapped {
3814
3515
  border-top: 0;
3815
3516
  }
@@ -3859,9 +3560,6 @@ dialog.veil:focus {
3859
3560
  overflow-wrap: anywhere;
3860
3561
  }
3861
3562
 
3862
- /* ---------- charts: amounts as cells, a reading over time as a stepped line ---------- */
3863
-
3864
- /* the picture is aria-hidden; screen readers read the chart's table (.sr-only) instead */
3865
3563
  .chart {
3866
3564
  min-width: 0;
3867
3565
  }
@@ -3874,7 +3572,6 @@ dialog.veil:focus {
3874
3572
  background: var(--ink);
3875
3573
  }
3876
3574
 
3877
- /* scale, labels and the key: the label register, figures tabular */
3878
3575
  .bar-scale,
3879
3576
  .bar-label,
3880
3577
  .line-scale,
@@ -3889,8 +3586,6 @@ dialog.veil:focus {
3889
3586
  line-height: 10px;
3890
3587
  }
3891
3588
 
3892
- /* a reading: the meter's numbers, 11px muted tabular; a toned one is the amber mark or the
3893
- red chip, so the cells stay ink */
3894
3589
  .bar-num {
3895
3590
  font-family: var(--font-px);
3896
3591
  font-size: var(--type-state);
@@ -3901,14 +3596,11 @@ dialog.veil:focus {
3901
3596
  font-variant-numeric: tabular-nums;
3902
3597
  }
3903
3598
 
3904
- /* a missing reading says so; over a column it breaks onto two lines to keep the column narrow */
3905
3599
  .bar-cols .bar-num.none {
3906
3600
  white-space: normal;
3907
3601
  text-align: center;
3908
3602
  }
3909
3603
 
3910
- /* columns: the scale, then a column of cells per point in one 2px ink frame; readings over
3911
- it, labels under it. Past twelve points the columns narrow and only a toned reading prints. */
3912
3604
  .bar-cols {
3913
3605
  display: grid;
3914
3606
  grid-template-columns: max-content repeat(var(--n), minmax(6px, 40px));
@@ -3923,7 +3615,6 @@ dialog.veil:focus {
3923
3615
  grid-template-columns: max-content repeat(var(--n), minmax(min-content, 48px));
3924
3616
  }
3925
3617
 
3926
- /* the frame: drawn behind the cells, 2px of paper and 2px of ink outside them */
3927
3618
  .bar-cols::before,
3928
3619
  .bar-rows::before {
3929
3620
  content: "";
@@ -3963,7 +3654,6 @@ dialog.veil:focus {
3963
3654
  gap: 2px;
3964
3655
  }
3965
3656
 
3966
- /* a label under its column, or under the run of columns it stands for, clipped to fit */
3967
3657
  .bar-cols .bar-label {
3968
3658
  grid-row: 3;
3969
3659
  width: 0;
@@ -3981,7 +3671,6 @@ dialog.veil:focus {
3981
3671
  text-align: center;
3982
3672
  }
3983
3673
 
3984
- /* rows: the label, a row of the meter's cells inside the one frame, the reading */
3985
3674
  .bar-rows {
3986
3675
  display: grid;
3987
3676
  grid-template-columns: minmax(0, max-content) minmax(120px, 1fr) max-content;
@@ -4018,7 +3707,6 @@ dialog.veil:focus {
4018
3707
  align-items: center;
4019
3708
  }
4020
3709
 
4021
- /* a toned reading keeps to the row's 14px, so the cells stay 2px apart */
4022
3710
  .bar-rows .chip {
4023
3711
  padding-block: 0;
4024
3712
  line-height: 10px;
@@ -4035,7 +3723,6 @@ dialog.veil:focus {
4035
3723
  }
4036
3724
  }
4037
3725
 
4038
- /* the line chart: the key over the plot, the scale beside it, the labels under it */
4039
3726
  .line-chart {
4040
3727
  display: grid;
4041
3728
  grid-template-columns: max-content minmax(0, 1fr);
@@ -4074,7 +3761,6 @@ dialog.veil:focus {
4074
3761
  background: var(--muted);
4075
3762
  }
4076
3763
 
4077
- /* the scale's top and zero centre on the plot's top line and on its axis */
4078
3764
  .line-scale {
4079
3765
  grid-area: scale;
4080
3766
  display: flex;
@@ -4092,7 +3778,6 @@ dialog.veil:focus {
4092
3778
  translate: 0 50%;
4093
3779
  }
4094
3780
 
4095
- /* the axes are the plot's 1px rules; the SVG inside keeps its points clear of them */
4096
3781
  .line-plot {
4097
3782
  grid-area: plot;
4098
3783
  height: var(--chart-plot);
@@ -4120,7 +3805,6 @@ dialog.veil:focus {
4120
3805
  stroke-width: var(--line);
4121
3806
  }
4122
3807
 
4123
- /* a zero-length stroke with square caps: a 6px cell at each point, whatever the width */
4124
3808
  .line-cells {
4125
3809
  stroke-width: 6px;
4126
3810
  }
@@ -4133,7 +3817,6 @@ dialog.veil:focus {
4133
3817
  stroke-width: 4px;
4134
3818
  }
4135
3819
 
4136
- /* labels sit under their points, the first and the last inside the plot's ends */
4137
3820
  .line-labels {
4138
3821
  grid-area: labels;
4139
3822
  position: relative;
@@ -4159,15 +3842,12 @@ dialog.veil:focus {
4159
3842
  translate: -100% 0;
4160
3843
  }
4161
3844
 
4162
- /* a phone has room for half the labels */
4163
3845
  @media (max-width: 600px) {
4164
3846
  .line-labels > span:nth-child(even) {
4165
3847
  display: none;
4166
3848
  }
4167
3849
  }
4168
3850
 
4169
- /* ---------- crumbs: the path to where you are ---------- */
4170
-
4171
3851
  .crumbs ol {
4172
3852
  list-style: none;
4173
3853
  display: flex;
@@ -4200,14 +3880,11 @@ dialog.veil:focus {
4200
3880
  color: var(--ink);
4201
3881
  }
4202
3882
 
4203
- /* ---------- the file tree ---------- */
4204
-
4205
3883
  .file-tree {
4206
3884
  border: var(--line) solid var(--ink);
4207
3885
  padding: 6px 0;
4208
3886
  }
4209
3887
 
4210
- /* flush in a panel, the panel's border is the tree's */
4211
3888
  .panel > .file-tree {
4212
3889
  border: 0;
4213
3890
  }
@@ -4276,8 +3953,6 @@ dialog.veil:focus {
4276
3953
  white-space: nowrap;
4277
3954
  }
4278
3955
 
4279
- /* ---------- the drop zone: dashed while waiting, solid and tinted while a file hovers ---------- */
4280
-
4281
3956
  .drop-zone {
4282
3957
  display: grid;
4283
3958
  justify-items: center;
@@ -4322,8 +3997,6 @@ dialog.veil:focus {
4322
3997
  outline-offset: 2px;
4323
3998
  }
4324
3999
 
4325
- /* ---------- the reading sheet: an authored page in a panel's place ---------- */
4326
-
4327
4000
  .sheet {
4328
4001
  padding: 28px 32px 36px;
4329
4002
  }
@@ -4382,8 +4055,6 @@ dialog.veil:focus {
4382
4055
  }
4383
4056
  }
4384
4057
 
4385
- /* ---------- prose: text keeps a reading measure; code and tables may use the whole sheet ---------- */
4386
-
4387
4058
  .prose {
4388
4059
  font: var(--read-body) / 1.65 var(--font-body);
4389
4060
  color: var(--ink);
@@ -4402,7 +4073,6 @@ dialog.veil:focus {
4402
4073
  margin-top: 1em;
4403
4074
  }
4404
4075
 
4405
- /* an h1 inside prose (a document's own title, under the page's) reads as a section */
4406
4076
  .prose :is(h1, h2) {
4407
4077
  font: var(--read-weight) var(--read-h2) / 1.3 var(--font-body);
4408
4078
  letter-spacing: -0.005em;
@@ -4415,9 +4085,6 @@ dialog.veil:focus {
4415
4085
  margin-top: 1.6em;
4416
4086
  }
4417
4087
 
4418
- /* below h3 the reading scale has no smaller step that still reads as a heading, so each
4419
- deeper level changes voice instead: pixel caps, then bold body type at the UI's body
4420
- size, then the muted pixel label. Each stands as far below the text above as an h3 */
4421
4088
  .prose :is(h4, h5, h6) {
4422
4089
  margin-top: calc(1.6 * var(--read-body));
4423
4090
  }
@@ -4526,15 +4193,12 @@ dialog.veil:focus {
4526
4193
  text-decoration-thickness: 2px;
4527
4194
  }
4528
4195
 
4529
- /* a link to a page that does not exist: red, the error colour, on a dotted rule */
4530
4196
  .prose a.missing {
4531
4197
  color: var(--red);
4532
4198
  text-decoration-style: dotted;
4533
4199
  text-decoration-color: var(--red);
4534
4200
  }
4535
4201
 
4536
- /* ---------- contents: the page's headings, with the reading position ---------- */
4537
-
4538
4202
  .toc {
4539
4203
  list-style: none;
4540
4204
  padding: 6px 0;
@@ -4556,13 +4220,11 @@ dialog.veil:focus {
4556
4220
  color: var(--muted);
4557
4221
  }
4558
4222
 
4559
- /* an entry with detail: its words, and what the section holds under them */
4560
4223
  .toc-entry {
4561
4224
  display: grid;
4562
4225
  gap: 2px;
4563
4226
  }
4564
4227
 
4565
- /* the reading position: one ink cell before the entry; every entry keeps the slot */
4566
4228
  .toc a::before {
4567
4229
  content: "";
4568
4230
  flex: none;
@@ -4583,8 +4245,6 @@ dialog.veil:focus {
4583
4245
  background: var(--head);
4584
4246
  }
4585
4247
 
4586
- /* ---------- the working cursor's sizes ---------- */
4587
-
4588
4248
  .chip .cursor,
4589
4249
  .link-state .cursor {
4590
4250
  width: 5px;
@@ -4596,8 +4256,6 @@ dialog.veil:focus {
4596
4256
  margin-left: 6px;
4597
4257
  }
4598
4258
 
4599
- /* ---------- loading: the place content will be, working ---------- */
4600
-
4601
4259
  .loading {
4602
4260
  padding: 26px 16px;
4603
4261
  text-align: center;
@@ -4615,8 +4273,6 @@ dialog.veil:focus {
4615
4273
  position: absolute;
4616
4274
  }
4617
4275
 
4618
- /* ---------- monograms: letters in an ink square, or a mark the product draws in cells ---------- */
4619
-
4620
4276
  .monogram {
4621
4277
  display: inline-grid;
4622
4278
  place-items: center;
@@ -4644,7 +4300,6 @@ dialog.veil:focus {
4644
4300
  color: var(--paper);
4645
4301
  }
4646
4302
 
4647
- /* a mark drawn in cells prints bare, in ink, in the square the letters would take */
4648
4303
  .monogram.drawn {
4649
4304
  border: 0;
4650
4305
  background: none;
@@ -4654,8 +4309,6 @@ dialog.veil:focus {
4654
4309
  background: var(--ink);
4655
4310
  }
4656
4311
 
4657
- /* ---------- identity: who or what, as its monogram beside its name ---------- */
4658
-
4659
4312
  .identity {
4660
4313
  display: flex;
4661
4314
  align-items: center;
@@ -4689,13 +4342,6 @@ dialog.veil:focus {
4689
4342
  font-size: var(--type-title);
4690
4343
  }
4691
4344
 
4692
- /* ---------- stats: a figure, what changed, and what it means, in ruled cells ---------- */
4693
-
4694
- /* Stats are cells in a flush panel, parted by 1px rules like meter rows, not a grid of
4695
- shadowed slips: a figure belongs to the panel that names what it measures, and a row of
4696
- raised cards each holding one big number is the hero-metric template this world refuses.
4697
- Each cell carries its rules right and below; the last column's and row's are clipped by
4698
- the box, so the rules only ever divide. */
4699
4345
  .stats {
4700
4346
  display: grid;
4701
4347
  grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
@@ -4727,12 +4373,10 @@ dialog.veil:focus {
4727
4373
  color: var(--ink);
4728
4374
  }
4729
4375
 
4730
- /* not known: a muted dash, with words for screen readers */
4731
4376
  .stat-value.unknown {
4732
4377
  color: var(--muted);
4733
4378
  }
4734
4379
 
4735
- /* the working cursor at the figure's height while the value is on its way */
4736
4380
  .stat-value .cursor {
4737
4381
  width: 12px;
4738
4382
  height: 24px;
@@ -4747,8 +4391,6 @@ dialog.veil:focus {
4747
4391
  color: var(--muted);
4748
4392
  }
4749
4393
 
4750
- /* the change: ink, its direction a glyph, never a hue. A warning fills amber, a fault
4751
- prints red in a red box, as a meter's reading and its full chip do */
4752
4394
  .stat-delta {
4753
4395
  display: inline-flex;
4754
4396
  align-items: center;
@@ -4783,12 +4425,10 @@ dialog.veil:focus {
4783
4425
  color: var(--muted);
4784
4426
  }
4785
4427
 
4786
- /* the last cell has nothing beside it to divide from, in a short last row too */
4787
4428
  .stat:last-child {
4788
4429
  border-right: 0;
4789
4430
  }
4790
4431
 
4791
- /* narrower, four figures across step down the ramp before they would break */
4792
4432
  @media (max-width: 900px) {
4793
4433
  .stat-value {
4794
4434
  font-size: var(--type-figure-narrow);
@@ -4810,12 +4450,6 @@ dialog.veil:focus {
4810
4450
  }
4811
4451
  }
4812
4452
 
4813
- /* ---------- tips: an inverted label above its control ---------- */
4814
-
4815
- /* the page's one tip, anchored to the control it names (its source). A label, not a surface:
4816
- flat ink with no print shadow, ringed in paper so it parts from an ink bar under it.
4817
- Centred above its control; near an edge it hangs from the control's side instead, and
4818
- flips below when the window has no room above */
4819
4453
  .tip[popover] {
4820
4454
  position-anchor: auto;
4821
4455
  inset: auto;
@@ -4841,7 +4475,6 @@ dialog.veil:focus {
4841
4475
  overflow: visible;
4842
4476
  }
4843
4477
 
4844
- /* the key that does the same as the control, after its words, as a button prints it */
4845
4478
  .tip .key-hint {
4846
4479
  margin-left: 6px;
4847
4480
  font-family: var(--font-px);
@@ -4851,9 +4484,6 @@ dialog.veil:focus {
4851
4484
  opacity: var(--fade-on-ink);
4852
4485
  }
4853
4486
 
4854
- /* ---------- toolbars: one strip of tools, one stop for Tab ---------- */
4855
-
4856
- /* the rules between tools are the strip's ink showing through a 2px gap */
4857
4487
  .toolbar {
4858
4488
  display: inline-flex;
4859
4489
  gap: var(--line);
@@ -4901,8 +4531,6 @@ dialog.veil:focus {
4901
4531
  background: var(--head);
4902
4532
  }
4903
4533
 
4904
- /* the ring sits inside the tool in the tool's own ink, so it reads on a pressed (inverted)
4905
- tool and never lands on the strip's ink between tools */
4906
4534
  .toolbar > :focus-visible {
4907
4535
  outline-color: currentColor;
4908
4536
  outline-offset: -4px;
@@ -4925,16 +4553,12 @@ dialog.veil:focus {
4925
4553
  cursor: default;
4926
4554
  }
4927
4555
 
4928
- /* beside a vertical strip of tools, not over the next tool */
4929
4556
  .tip[popover][data-side="right"] {
4930
4557
  margin: 0 0 0 6px;
4931
4558
  position-area: right;
4932
4559
  position-try-fallbacks: flip-inline;
4933
4560
  }
4934
4561
 
4935
- /* ---------- disclosures: a line that opens what hangs under it ---------- */
4936
-
4937
- /* the line is a summary in plain markup, or the component's button.disclosure-summary */
4938
4562
  .disclosure > :is(summary, .disclosure-summary) {
4939
4563
  display: flex;
4940
4564
  align-items: center;
@@ -4958,7 +4582,6 @@ dialog.veil:focus {
4958
4582
  display: none;
4959
4583
  }
4960
4584
 
4961
- /* the caret turns a quarter, in one step: the grid survives a right angle */
4962
4585
  .disclosure[open] > summary .px-icon,
4963
4586
  .disclosure > .disclosure-summary[aria-expanded="true"] .px-icon {
4964
4587
  transform: rotate(90deg);
@@ -4977,7 +4600,9 @@ dialog.veil:focus {
4977
4600
  cursor: default;
4978
4601
  }
4979
4602
 
4980
- .disclosure > .disclosure-summary[aria-disabled="true"]:hover .disclosure-label {
4603
+ .disclosure
4604
+ > .disclosure-summary[aria-disabled="true"]:hover
4605
+ .disclosure-label {
4981
4606
  border-bottom-color: transparent;
4982
4607
  }
4983
4608
 
@@ -4985,7 +4610,6 @@ dialog.veil:focus {
4985
4610
  margin-left: auto;
4986
4611
  }
4987
4612
 
4988
- /* the content hangs from the caret on a 1px guide, level with the summary's words */
4989
4613
  .disclosure-body {
4990
4614
  display: grid;
4991
4615
  gap: var(--space-m);
@@ -4998,12 +4622,6 @@ dialog.veil:focus {
4998
4622
  min-width: 0;
4999
4623
  }
5000
4624
 
5001
- /* ---------- the status bar: the quiet line along the bottom ---------- */
5002
-
5003
- /* fixed along the bottom edge at the height StatusBar measures it to be (`--statusbar-h`,
5004
- one line without Foldkit): the page, the rail, the stage, a banner and the toasts all stop
5005
- above it, as they hang below the top bar. The status at the left, the keys at the right;
5006
- narrow, the keys drop under the status rather than leaving the bar */
5007
4625
  .statusbar {
5008
4626
  position: fixed;
5009
4627
  right: 0;
@@ -5042,13 +4660,6 @@ dialog.veil:focus {
5042
4660
  color: var(--ink);
5043
4661
  }
5044
4662
 
5045
- /* ---------- the rail: a column of panels beside the deck, a drawer on a phone ---------- */
5046
-
5047
- /* one element in two places: at rest, fixed down the left edge from the top bar's lower
5048
- edge (as the stage hangs); on a phone the same element opens as a popover drawer. The reader's width, when they gave one, is --railed-width, which the view
5049
- sets on .railed, so the page's padding and the rail's width follow it together; without one,
5050
- --rail. It is not inherited: each box it sizes takes it from .railed by name, so a width that
5051
- changes under a dragged splitter restyles those four and none of the rows inside them */
5052
4663
  @property --railed-width {
5053
4664
  syntax: "*";
5054
4665
  inherits: false;
@@ -5085,10 +4696,6 @@ dialog.veil:focus {
5085
4696
  min-width: 0;
5086
4697
  }
5087
4698
 
5088
- /* the rail's top stays put: what comes before its last panel keeps its height, and the last
5089
- panel takes the room left, at most its own height, its bar, shelf and foot staying while
5090
- its body scrolls (the padded body, or a flush body's list). The rail scrolls as a whole
5091
- only when what comes before that panel is taller than the column */
5092
4699
  .rail > .panel:last-child {
5093
4700
  display: flex;
5094
4701
  flex-direction: column;
@@ -5106,7 +4713,6 @@ dialog.veil:focus {
5106
4713
  overflow-y: auto;
5107
4714
  }
5108
4715
 
5109
- /* a long name ends short of the bar's tools rather than wrapping the bar taller */
5110
4716
  .rail .panel-tb h2 {
5111
4717
  min-width: 0;
5112
4718
  overflow: hidden;
@@ -5115,15 +4721,10 @@ dialog.veil:focus {
5115
4721
  text-overflow: ellipsis;
5116
4722
  }
5117
4723
 
5118
- /* the toggle is the button itself in the bar's lead */
5119
4724
  .rail-toggle {
5120
4725
  display: contents;
5121
4726
  }
5122
4727
 
5123
- /* the splitter on the rail's right edge: a 12px strip from the edge outward, over the page's
5124
- margin and never over the rail's own scrollbar, and beside the rail rather than in it (the
5125
- rail scrolls, and its drawer's first Tab stop is its first control). It shows itself as a
5126
- 2px ink line down the edge while it is hovered or focused */
5127
4728
  .rail-resize {
5128
4729
  position: fixed;
5129
4730
  top: anchor(--topbar bottom, 0px);
@@ -5160,11 +4761,6 @@ dialog.veil:focus {
5160
4761
  display: none;
5161
4762
  }
5162
4763
 
5163
- /* folded: the first panel stands its title bar on end on the ground where the rail stood, the
5164
- toggle at its top and the title and count reading down; the rest of the rail and the
5165
- splitter are gone, and the deck takes the width. Above 900px only: the drawer opens whole.
5166
- Folding and unfolding move in three steps, as the drawer enters, but never while a pointer
5167
- drags the splitter, where the rail follows the pointer */
5168
4764
  @media not (max-width: 900px) {
5169
4765
  .railed.folded {
5170
4766
  --railed-width: var(--rail-folded);
@@ -5197,7 +4793,8 @@ dialog.veil:focus {
5197
4793
  transition-property: padding-left, width, left;
5198
4794
  }
5199
4795
 
5200
- :root[data-pixel-paper-dragging] :is(.railed, .railed > .rail, .railed > .bench) {
4796
+ :root[data-pixel-paper-dragging]
4797
+ :is(.railed, .railed > .rail, .railed > .bench) {
5201
4798
  transition: none;
5202
4799
  }
5203
4800
  }
@@ -5212,7 +4809,6 @@ dialog.veil:focus {
5212
4809
  display: none;
5213
4810
  }
5214
4811
 
5215
- /* a slice of the ground slides in from the left edge, in three steps */
5216
4812
  .rail[popover]:popover-open {
5217
4813
  inset: 0 auto 0 0;
5218
4814
  width: min(var(--rail-drawer), calc(100vw - 40px));
@@ -5241,8 +4837,6 @@ dialog.veil:focus {
5241
4837
  justify-self: start;
5242
4838
  }
5243
4839
 
5244
- /* the drawer opens and closes but never folds, so it prints no toggle, and the bar the
5245
- toggle led keeps its own padding */
5246
4840
  .panel-lead:has(> .rail-toggle) {
5247
4841
  display: none;
5248
4842
  }
@@ -5258,14 +4852,6 @@ dialog.veil:focus {
5258
4852
  }
5259
4853
  }
5260
4854
 
5261
- /* ---------- the bench: a page's work, the window wide, under its head ---------- */
5262
-
5263
- /* hung from the top bar's lower edge like the stage, down to the status bar, edge to edge, or
5264
- from the rail's edge beside one (a fixed box takes nothing from .railed's padding). The head
5265
- takes its own height while the work keeps at least --bench-work-min, or all but the head's
5266
- first --bench-head-min (its padding and a small button: the rail's open button) on a window too short
5267
- for both; past that the head scrolls itself. The work takes the rest and lays out what
5268
- fills it (a reel's height is 100% of it). The page does not scroll */
5269
4855
  .bench {
5270
4856
  position: fixed;
5271
4857
  top: anchor(--topbar bottom, 0px);
@@ -5283,10 +4869,6 @@ dialog.veil:focus {
5283
4869
  left: var(--railed-width, var(--rail));
5284
4870
  }
5285
4871
 
5286
- /* the head lines up with a reel's windows, a reel's gutter in from the edge; the reel's own
5287
- gutter is the space between the head and the windows. A scroller clips at its padding, so
5288
- the head pads its foot by the ink a control prints past its box (a 3px shadow, a 4px focus
5289
- ring) and hands that back to the work, which starts where it would */
5290
4872
  .bench-head {
5291
4873
  display: grid;
5292
4874
  align-content: start;
@@ -5311,9 +4893,6 @@ dialog.veil:focus {
5311
4893
  }
5312
4894
  }
5313
4895
 
5314
- /* ---------- the stage: the ground itself, under the top bar, for a canvas ---------- */
5315
-
5316
- /* it does not scroll: what is on it pans. It hangs from the top bar's lower edge */
5317
4896
  .stage {
5318
4897
  position: fixed;
5319
4898
  top: anchor(--topbar bottom, 0px);
@@ -5352,7 +4931,6 @@ dialog.veil:focus {
5352
4931
  translate: -50% 0;
5353
4932
  }
5354
4933
 
5355
- /* the link dropped: the veil comes down over the work, which stops taking input */
5356
4934
  .stage-paused {
5357
4935
  position: absolute;
5358
4936
  inset: 0;
@@ -5376,15 +4954,11 @@ dialog.veil:focus {
5376
4954
  translate: -50% 0;
5377
4955
  }
5378
4956
 
5379
- /* along the bottom edge the canvas's tools lie flat */
5380
4957
  .stage-tools .toolbar {
5381
4958
  flex-direction: row;
5382
4959
  }
5383
4960
  }
5384
4961
 
5385
- /* ---------- windows: a panel on a stage ---------- */
5386
-
5387
- /* the panel's box and bar, filling whatever places it; the bar is trimmed to hold tools */
5388
4962
  .window {
5389
4963
  display: flex;
5390
4964
  flex-direction: column;
@@ -5400,7 +4974,6 @@ dialog.veil:focus {
5400
4974
  user-select: none;
5401
4975
  }
5402
4976
 
5403
- /* a lead (a reel's grip) trims the bar's left, as a panel's does */
5404
4977
  .window > .panel-tb:has(> .panel-lead) {
5405
4978
  padding-left: 3px;
5406
4979
  }
@@ -5421,8 +4994,6 @@ dialog.veil:focus {
5421
4994
  color: inherit;
5422
4995
  }
5423
4996
 
5424
- /* a child Submodel's tools come back as one element; the group is no box of its own, so its
5425
- buttons take the bar's gap as the others do */
5426
4997
  .window-tools {
5427
4998
  display: contents;
5428
4999
  }
@@ -5442,7 +5013,6 @@ dialog.veil:focus {
5442
5013
  padding: 0;
5443
5014
  }
5444
5015
 
5445
- /* flush, what fills the body lets the window's border be its own */
5446
5016
  .window.flush .window-body > :is(.code-surface, .file-tree, .diff-wrap) {
5447
5017
  min-height: 100%;
5448
5018
  border: 0;
@@ -5452,8 +5022,6 @@ dialog.veil:focus {
5452
5022
  min-width: 0;
5453
5023
  }
5454
5024
 
5455
- /* ---------- the reel: a scrolling row of columns of panes ---------- */
5456
-
5457
5025
  /* the reel takes its height from whatever holds it; the held copy hangs from it, outside the
5458
5026
  scroller, whose containment would hold a fixed copy inside it */
5459
5027
  .reel {
@@ -5461,8 +5029,6 @@ dialog.veil:focus {
5461
5029
  min-height: 0;
5462
5030
  }
5463
5031
 
5464
- /* the scroller, sideways and, where a column is taller than the view, down. Its size is what
5465
- a column's width (100cqw) and least height (100cqh) are shares of, so it takes no padding */
5466
5032
  .reel-view {
5467
5033
  height: 100%;
5468
5034
  overflow: auto;
@@ -5470,8 +5036,6 @@ dialog.veil:focus {
5470
5036
  container-type: size;
5471
5037
  }
5472
5038
 
5473
- /* the columns in a row, and the panes' containing block. Each pane is pinned to its slot by
5474
- anchor positioning, so a move changes where a pane is drawn and never its place in the page */
5475
5039
  .reel-track {
5476
5040
  position: relative;
5477
5041
  display: flex;
@@ -5489,10 +5053,6 @@ dialog.veil:focus {
5489
5053
  width: var(--reel-gutter);
5490
5054
  }
5491
5055
 
5492
- /* a column is width × (view − gutter) − gutter wide, so columns whose widths add up to one
5493
- fill the view with a gutter between each and at either side; never under the minimum. It is
5494
- the view's height less a gutter above and below, and taller where its panes need more, which
5495
- the view scrolls to */
5496
5056
  .reel-column {
5497
5057
  display: flex;
5498
5058
  flex: none;
@@ -5504,7 +5064,6 @@ dialog.veil:focus {
5504
5064
  min-height: calc(100cqh - 2 * var(--reel-gutter));
5505
5065
  }
5506
5066
 
5507
- /* a slot holds a pane's place, its share of the column by weight; the pane is drawn over it */
5508
5067
  .reel-slot {
5509
5068
  position: relative;
5510
5069
  flex: var(--reel-weight, 1) 1 0;
@@ -5512,7 +5071,6 @@ dialog.veil:focus {
5512
5071
  anchor-name: var(--reel-anchor);
5513
5072
  }
5514
5073
 
5515
- /* the splitters: the gutter between two panes, and the one after each column */
5516
5074
  .reel-split {
5517
5075
  position: relative;
5518
5076
  flex: none;
@@ -5526,8 +5084,6 @@ dialog.veil:focus {
5526
5084
  touch-action: none;
5527
5085
  }
5528
5086
 
5529
- /* a splitter shows itself as a 2px ink line along the middle of its gutter while it is
5530
- hovered or focused; focused, the ring is the system's */
5531
5087
  .reel-resize::after,
5532
5088
  .reel-split::after {
5533
5089
  content: "";
@@ -5561,8 +5117,6 @@ dialog.veil:focus {
5561
5117
  outline-offset: -2px;
5562
5118
  }
5563
5119
 
5564
- /* where a drop would land: a 2px dashed ink line down the gap it would open, or across the
5565
- gutter between the panes it would join, drawn over the layout so nothing moves under it */
5566
5120
  .reel-gap.drop-here::before {
5567
5121
  content: "";
5568
5122
  position: absolute;
@@ -5590,12 +5144,10 @@ dialog.veil:focus {
5590
5144
  bottom: calc(var(--reel-gutter) / -2 - 1px);
5591
5145
  }
5592
5146
 
5593
- /* the panes' layer is no box of its own: each pane's containing block is the track */
5594
5147
  .reel-panes {
5595
5148
  display: contents;
5596
5149
  }
5597
5150
 
5598
- /* a pane or a column scrolled into view keeps its gutter showing */
5599
5151
  .reel-pane,
5600
5152
  .reel-column {
5601
5153
  scroll-margin: var(--reel-gutter);
@@ -5611,8 +5163,6 @@ dialog.veil:focus {
5611
5163
  min-width: 0;
5612
5164
  }
5613
5165
 
5614
- /* the focused pane lifts onto the card shadow; taking focus itself (it holds no control), it
5615
- keeps the system's ring outside its window */
5616
5166
  .reel-pane.focused > .window {
5617
5167
  box-shadow: var(--shadow-card);
5618
5168
  }
@@ -5630,8 +5180,6 @@ dialog.veil:focus {
5630
5180
  opacity: var(--fade-dragged);
5631
5181
  }
5632
5182
 
5633
- /* under tabs, the reel is its tab list over the scroller, which takes the height left. The
5634
- list sits a gutter in from the reel's edges, as the windows do */
5635
5183
  .reel.tabbed {
5636
5184
  display: flex;
5637
5185
  flex-direction: column;
@@ -5649,8 +5197,6 @@ dialog.veil:focus {
5649
5197
  margin: var(--reel-gutter) var(--reel-gutter) 0;
5650
5198
  }
5651
5199
 
5652
- /* a tab holds a kind glyph before its words, and gives up width before the list overflows:
5653
- its words end in an ellipsis */
5654
5200
  .reel-tabs button {
5655
5201
  display: inline-flex;
5656
5202
  align-items: center;
@@ -5664,7 +5210,6 @@ dialog.veil:focus {
5664
5210
  text-overflow: ellipsis;
5665
5211
  }
5666
5212
 
5667
- /* the one slot under tabs: the view less a gutter at every edge, every pane pinned to it */
5668
5213
  .reel-stage {
5669
5214
  flex: 1 1 0;
5670
5215
  height: calc(100cqh - 2 * var(--reel-gutter));
@@ -5672,20 +5217,15 @@ dialog.veil:focus {
5672
5217
  margin-inline: var(--reel-gutter);
5673
5218
  }
5674
5219
 
5675
- /* a pane behind the selected tab keeps its place and its size, so what sizes itself by its
5676
- box (a terminal) is not resized as the tabs change; it is only not drawn */
5677
5220
  .reel-pane.behind {
5678
5221
  visibility: hidden;
5679
5222
  }
5680
5223
 
5681
- /* only the grips lift: a pane's text selects and its terminal takes the pointer */
5682
5224
  [data-reel-grip] {
5683
5225
  cursor: grab;
5684
5226
  touch-action: none;
5685
5227
  }
5686
5228
 
5687
- /* the held copy, following the pointer from the window's corner (its transform puts it at the
5688
- pointer): the title bar alone, tinted head on the card shadow */
5689
5229
  .reel-lift {
5690
5230
  position: fixed;
5691
5231
  top: 0;
@@ -5700,11 +5240,6 @@ dialog.veil:focus {
5700
5240
  box-shadow: var(--shadow-card);
5701
5241
  }
5702
5242
 
5703
- /* ---------- images and media: a picture or a player in a 2px ink frame, at rest ---------- */
5704
-
5705
- /* a figure sits at rest wherever it is placed (a panel, prose): no print shadow. The frame
5706
- keeps --ratio from the first paint, so nothing moves when the picture arrives; a figure
5707
- given a width prints at it and shrinks to fit, never grows */
5708
5243
  .image,
5709
5244
  .video {
5710
5245
  display: grid;
@@ -5713,7 +5248,6 @@ dialog.veil:focus {
5713
5248
  min-width: 0;
5714
5249
  }
5715
5250
 
5716
- /* the ratio is the picture's, inside the border */
5717
5251
  .image-frame,
5718
5252
  .media-screen {
5719
5253
  position: relative;
@@ -5739,7 +5273,6 @@ dialog.veil:focus {
5739
5273
  object-fit: cover;
5740
5274
  }
5741
5275
 
5742
- /* a video is never cropped */
5743
5276
  .media-screen > video {
5744
5277
  object-fit: contain;
5745
5278
  }
@@ -5750,7 +5283,6 @@ dialog.veil:focus {
5750
5283
  color: var(--paper);
5751
5284
  }
5752
5285
 
5753
- /* under the picture, which paints over it when it arrives: head tint and the picture glyph */
5754
5286
  .image-wait {
5755
5287
  position: absolute;
5756
5288
  inset: 0;
@@ -5760,13 +5292,10 @@ dialog.veil:focus {
5760
5292
  color: var(--on-head);
5761
5293
  }
5762
5294
 
5763
- /* held loading (.waiting, never the loading line's .loading): the placeholder shows whatever
5764
- the picture does */
5765
5295
  .image.waiting img {
5766
5296
  visibility: hidden;
5767
5297
  }
5768
5298
 
5769
- /* waiting for data: the loading line on a paper slip over the picture */
5770
5299
  .media-wait {
5771
5300
  position: absolute;
5772
5301
  inset: 0;
@@ -5782,8 +5311,6 @@ dialog.veil:focus {
5782
5311
  color: var(--ink);
5783
5312
  }
5784
5313
 
5785
- /* failed: the frame turns red and its notice fills it, unboxed, so the red rule is the
5786
- frame's own */
5787
5314
  .image.broken > .image-frame,
5788
5315
  .video.broken > .media-box,
5789
5316
  .audio.broken {
@@ -5823,7 +5350,6 @@ dialog.veil:focus {
5823
5350
  margin-left: auto;
5824
5351
  }
5825
5352
 
5826
- /* the player's controls: glyph buttons, the place as cells, the time */
5827
5353
  .media-bar {
5828
5354
  display: flex;
5829
5355
  flex-wrap: wrap;
@@ -5861,7 +5387,6 @@ dialog.veil:focus {
5861
5387
  white-space: nowrap;
5862
5388
  }
5863
5389
 
5864
- /* cells to see, a native range over them (unseen) to use */
5865
5390
  .media-seek {
5866
5391
  position: relative;
5867
5392
  display: flex;
@@ -5889,7 +5414,6 @@ dialog.veil:focus {
5889
5414
  cursor: pointer;
5890
5415
  }
5891
5416
 
5892
- /* a thin thumb, so the place under the pointer is the place it seeks to */
5893
5417
  .media-seek > input::-webkit-slider-thumb {
5894
5418
  appearance: none;
5895
5419
  width: 2px;
@@ -5901,7 +5425,6 @@ dialog.veil:focus {
5901
5425
  border: 0;
5902
5426
  }
5903
5427
 
5904
- /* disabled while broken, held (aria-disabled) while the length is unknown */
5905
5428
  .media-seek > input:is(:disabled, [aria-disabled="true"]) {
5906
5429
  cursor: default;
5907
5430
  }
@@ -5935,14 +5458,14 @@ dialog.veil:focus {
5935
5458
  margin-left: 4px;
5936
5459
  }
5937
5460
 
5938
- /* ---------- toasts: printed slips at the bottom right, the newest lowest ---------- */
5939
-
5940
5461
  /* the page's stack: @foldkit/ui's Toast container, fixed at the bottom right above the page
5941
5462
  and inside the open dialog when Toaster is rendered there. Its placement is inline (16px
5942
5463
  padding from the corner), so the stylesheet raises it clear of a banner, its anchor when one
5943
5464
  is showing, or of a status bar, and sets the gap. A phone spans it across the bottom */
5944
5465
  .toasts .toast-stack {
5945
- bottom: calc(anchor(--banner top, calc(var(--statusbar-h) + 4px)) - 4px) !important;
5466
+ bottom: calc(
5467
+ anchor(--banner top, calc(var(--statusbar-h) + 4px)) - 4px
5468
+ ) !important;
5946
5469
  gap: 10px !important;
5947
5470
  width: min(392px, 100vw);
5948
5471
  }
@@ -5951,8 +5474,6 @@ dialog.veil:focus {
5951
5474
  anchor-name: --banner;
5952
5475
  }
5953
5476
 
5954
- /* a notice on the button's print. On the ground every slip is closed in ink (an error in
5955
- red), so a quiet one keeps the ink border and speaks through its tinted glyph box */
5956
5477
  .toast {
5957
5478
  box-shadow: var(--shadow-button);
5958
5479
  }
@@ -5971,7 +5492,6 @@ dialog.veil:focus {
5971
5492
  margin: -2px -4px -2px 0;
5972
5493
  }
5973
5494
 
5974
- /* a slip arrives in three steps, like a card; it leaves at once */
5975
5495
  .toasts .toast {
5976
5496
  animation: toastIn var(--motion-card) steps(3, end);
5977
5497
  }
@@ -5990,8 +5510,6 @@ dialog.veil:focus {
5990
5510
  }
5991
5511
  }
5992
5512
 
5993
- /* ---------- reduced motion ---------- */
5994
-
5995
5513
  @media (prefers-reduced-motion: reduce) {
5996
5514
  .cursor,
5997
5515
  .veil-backdrop,