@panphora/bevel 0.1.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 (539) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +226 -0
  3. package/bevel-fonts.css +16 -0
  4. package/bevel.css +3075 -0
  5. package/bevel.js +2126 -0
  6. package/dist/react/components/activity-feed.d.ts +89 -0
  7. package/dist/react/components/activity-feed.js +54 -0
  8. package/dist/react/components/alert-dialog.d.ts +14 -0
  9. package/dist/react/components/alert-dialog.js +19 -0
  10. package/dist/react/components/app-shell.d.ts +98 -0
  11. package/dist/react/components/app-shell.js +86 -0
  12. package/dist/react/components/app-toolbar.d.ts +19 -0
  13. package/dist/react/components/app-toolbar.js +22 -0
  14. package/dist/react/components/avatar-group.d.ts +67 -0
  15. package/dist/react/components/avatar-group.js +49 -0
  16. package/dist/react/components/badge-and-pill.d.ts +34 -0
  17. package/dist/react/components/badge-and-pill.js +12 -0
  18. package/dist/react/components/breadcrumbs.d.ts +56 -0
  19. package/dist/react/components/breadcrumbs.js +44 -0
  20. package/dist/react/components/bulk-bar.d.ts +22 -0
  21. package/dist/react/components/bulk-bar.js +59 -0
  22. package/dist/react/components/button.d.ts +15 -0
  23. package/dist/react/components/button.js +20 -0
  24. package/dist/react/components/callout-and-hint.d.ts +17 -0
  25. package/dist/react/components/callout-and-hint.js +8 -0
  26. package/dist/react/components/checkbox.d.ts +5 -0
  27. package/dist/react/components/checkbox.js +13 -0
  28. package/dist/react/components/chip.d.ts +149 -0
  29. package/dist/react/components/chip.js +29 -0
  30. package/dist/react/components/code-block.d.ts +50 -0
  31. package/dist/react/components/code-block.js +77 -0
  32. package/dist/react/components/code-editor.d.ts +122 -0
  33. package/dist/react/components/code-editor.js +695 -0
  34. package/dist/react/components/column-manager.d.ts +28 -0
  35. package/dist/react/components/column-manager.js +85 -0
  36. package/dist/react/components/combobox.d.ts +32 -0
  37. package/dist/react/components/combobox.js +37 -0
  38. package/dist/react/components/data-grid.d.ts +108 -0
  39. package/dist/react/components/data-grid.js +159 -0
  40. package/dist/react/components/data-table.d.ts +2 -0
  41. package/dist/react/components/data-table.js +6 -0
  42. package/dist/react/components/date.d.ts +23 -0
  43. package/dist/react/components/date.js +11 -0
  44. package/dist/react/components/details.d.ts +13 -0
  45. package/dist/react/components/details.js +20 -0
  46. package/dist/react/components/dialog.d.ts +74 -0
  47. package/dist/react/components/dialog.js +31 -0
  48. package/dist/react/components/diff-view.d.ts +73 -0
  49. package/dist/react/components/diff-view.js +68 -0
  50. package/dist/react/components/documents.d.ts +70 -0
  51. package/dist/react/components/documents.js +10 -0
  52. package/dist/react/components/drawer.d.ts +45 -0
  53. package/dist/react/components/drawer.js +35 -0
  54. package/dist/react/components/editable-grid-cells.d.ts +32 -0
  55. package/dist/react/components/editable-grid-cells.js +116 -0
  56. package/dist/react/components/eyebrow-kicker-lede-pull-quote.d.ts +39 -0
  57. package/dist/react/components/eyebrow-kicker-lede-pull-quote.js +12 -0
  58. package/dist/react/components/field.d.ts +32 -0
  59. package/dist/react/components/field.js +27 -0
  60. package/dist/react/components/file-tree.d.ts +75 -0
  61. package/dist/react/components/file-tree.js +247 -0
  62. package/dist/react/components/file.d.ts +43 -0
  63. package/dist/react/components/file.js +73 -0
  64. package/dist/react/components/files-table.d.ts +174 -0
  65. package/dist/react/components/files-table.js +237 -0
  66. package/dist/react/components/filter-builder.d.ts +37 -0
  67. package/dist/react/components/filter-builder.js +109 -0
  68. package/dist/react/components/form-error-summary.d.ts +16 -0
  69. package/dist/react/components/form-error-summary.js +49 -0
  70. package/dist/react/components/icon-button.d.ts +8 -0
  71. package/dist/react/components/icon-button.js +14 -0
  72. package/dist/react/components/icon.d.ts +7 -0
  73. package/dist/react/components/icon.js +15 -0
  74. package/dist/react/components/image.d.ts +72 -0
  75. package/dist/react/components/image.js +24 -0
  76. package/dist/react/components/inline-edit.d.ts +70 -0
  77. package/dist/react/components/inline-edit.js +149 -0
  78. package/dist/react/components/input.d.ts +29 -0
  79. package/dist/react/components/input.js +20 -0
  80. package/dist/react/components/kanban-board.d.ts +140 -0
  81. package/dist/react/components/kanban-board.js +374 -0
  82. package/dist/react/components/layout.d.ts +51 -0
  83. package/dist/react/components/layout.js +28 -0
  84. package/dist/react/components/list.d.ts +28 -0
  85. package/dist/react/components/list.js +6 -0
  86. package/dist/react/components/masthead-and-verdict.d.ts +60 -0
  87. package/dist/react/components/masthead-and-verdict.js +8 -0
  88. package/dist/react/components/menu.d.ts +26 -0
  89. package/dist/react/components/menu.js +31 -0
  90. package/dist/react/components/multi-select-picker.d.ts +49 -0
  91. package/dist/react/components/multi-select-picker.js +20 -0
  92. package/dist/react/components/note.d.ts +33 -0
  93. package/dist/react/components/note.js +8 -0
  94. package/dist/react/components/number-field.d.ts +16 -0
  95. package/dist/react/components/number-field.js +17 -0
  96. package/dist/react/components/pagination.d.ts +45 -0
  97. package/dist/react/components/pagination.js +87 -0
  98. package/dist/react/components/persistent-action-banner.d.ts +71 -0
  99. package/dist/react/components/persistent-action-banner.js +39 -0
  100. package/dist/react/components/popconfirm.d.ts +42 -0
  101. package/dist/react/components/popconfirm.js +59 -0
  102. package/dist/react/components/popover.d.ts +16 -0
  103. package/dist/react/components/popover.js +21 -0
  104. package/dist/react/components/progress-and-gauge.d.ts +44 -0
  105. package/dist/react/components/progress-and-gauge.js +19 -0
  106. package/dist/react/components/radio.d.ts +7 -0
  107. package/dist/react/components/radio.js +13 -0
  108. package/dist/react/components/rich-text-toolbar.d.ts +26 -0
  109. package/dist/react/components/rich-text-toolbar.js +64 -0
  110. package/dist/react/components/rows-and-card.d.ts +88 -0
  111. package/dist/react/components/rows-and-card.js +10 -0
  112. package/dist/react/components/save-status-indicator.d.ts +11 -0
  113. package/dist/react/components/save-status-indicator.js +33 -0
  114. package/dist/react/components/segmented-control.d.ts +21 -0
  115. package/dist/react/components/segmented-control.js +15 -0
  116. package/dist/react/components/select.d.ts +29 -0
  117. package/dist/react/components/select.js +29 -0
  118. package/dist/react/components/selectable-cards.d.ts +30 -0
  119. package/dist/react/components/selectable-cards.js +29 -0
  120. package/dist/react/components/settings-rows.d.ts +51 -0
  121. package/dist/react/components/settings-rows.js +8 -0
  122. package/dist/react/components/sidebar-nav.d.ts +77 -0
  123. package/dist/react/components/sidebar-nav.js +41 -0
  124. package/dist/react/components/skeleton-and-empty.d.ts +51 -0
  125. package/dist/react/components/skeleton-and-empty.js +14 -0
  126. package/dist/react/components/slider.d.ts +19 -0
  127. package/dist/react/components/slider.js +17 -0
  128. package/dist/react/components/small-charts.d.ts +60 -0
  129. package/dist/react/components/small-charts.js +76 -0
  130. package/dist/react/components/sortable.d.ts +30 -0
  131. package/dist/react/components/sortable.js +85 -0
  132. package/dist/react/components/split-button.d.ts +38 -0
  133. package/dist/react/components/split-button.js +43 -0
  134. package/dist/react/components/split-panes.d.ts +35 -0
  135. package/dist/react/components/split-panes.js +102 -0
  136. package/dist/react/components/stat-tiles.d.ts +54 -0
  137. package/dist/react/components/stat-tiles.js +8 -0
  138. package/dist/react/components/steps.d.ts +11 -0
  139. package/dist/react/components/steps.js +13 -0
  140. package/dist/react/components/switch.d.ts +6 -0
  141. package/dist/react/components/switch.js +13 -0
  142. package/dist/react/components/table.d.ts +61 -0
  143. package/dist/react/components/table.js +6 -0
  144. package/dist/react/components/tabs.d.ts +7 -0
  145. package/dist/react/components/tabs.js +13 -0
  146. package/dist/react/components/tags.d.ts +33 -0
  147. package/dist/react/components/tags.js +83 -0
  148. package/dist/react/components/textarea.d.ts +10 -0
  149. package/dist/react/components/textarea.js +6 -0
  150. package/dist/react/components/toast.d.ts +35 -0
  151. package/dist/react/components/toast.js +90 -0
  152. package/dist/react/components/tooltip-and-key.d.ts +20 -0
  153. package/dist/react/components/tooltip-and-key.js +20 -0
  154. package/dist/react/components/tree-view.d.ts +34 -0
  155. package/dist/react/components/tree-view.js +118 -0
  156. package/dist/react/components/upload-dropzone.d.ts +92 -0
  157. package/dist/react/components/upload-dropzone.js +116 -0
  158. package/dist/react/components/wizard-shell.d.ts +78 -0
  159. package/dist/react/components/wizard-shell.js +176 -0
  160. package/dist/react/fonts.css.d.ts +1 -0
  161. package/dist/react/index.d.ts +76 -0
  162. package/dist/react/index.js +77 -0
  163. package/dist/react/integrations/quickcrop.d.ts +58 -0
  164. package/dist/react/integrations/quickcrop.js +137 -0
  165. package/dist/react/integrations/richclay.d.ts +43 -0
  166. package/dist/react/integrations/richclay.js +129 -0
  167. package/dist/react/internal/classes.d.ts +3 -0
  168. package/dist/react/internal/classes.js +10 -0
  169. package/dist/react/internal/close-mark.d.ts +1 -0
  170. package/dist/react/internal/close-mark.js +10 -0
  171. package/dist/react/internal/controllable-state.d.ts +9 -0
  172. package/dist/react/internal/controllable-state.js +22 -0
  173. package/dist/react/internal/drop-effect.d.ts +28 -0
  174. package/dist/react/internal/drop-effect.js +8 -0
  175. package/dist/react/internal/form-reset.d.ts +2 -0
  176. package/dist/react/internal/form-reset.js +22 -0
  177. package/dist/react/internal/format.d.ts +1 -0
  178. package/dist/react/internal/format.js +14 -0
  179. package/dist/react/internal/link.d.ts +2 -0
  180. package/dist/react/internal/link.js +8 -0
  181. package/dist/react/internal/part.d.ts +20 -0
  182. package/dist/react/internal/part.js +47 -0
  183. package/dist/react/internal/pointer-session.d.ts +8 -0
  184. package/dist/react/internal/pointer-session.js +60 -0
  185. package/dist/react/internal/refs.d.ts +2 -0
  186. package/dist/react/internal/refs.js +22 -0
  187. package/dist/react/internal/rich-text.d.ts +28 -0
  188. package/dist/react/internal/rich-text.js +4 -0
  189. package/dist/react/internal/table-context.d.ts +39 -0
  190. package/dist/react/internal/table-context.js +12 -0
  191. package/dist/react/internal/use-object-url.d.ts +1 -0
  192. package/dist/react/internal/use-object-url.js +15 -0
  193. package/dist/react/layout.css +274 -0
  194. package/dist/react/layout.css.d.ts +1 -0
  195. package/dist/react/models/filter.d.ts +31 -0
  196. package/dist/react/models/filter.js +79 -0
  197. package/dist/react/models/kanban.d.ts +51 -0
  198. package/dist/react/models/kanban.js +35 -0
  199. package/dist/react/models/reorder.d.ts +9 -0
  200. package/dist/react/models/reorder.js +23 -0
  201. package/dist/react/models/table.d.ts +85 -0
  202. package/dist/react/models/table.js +144 -0
  203. package/dist/react/models/tree.d.ts +16 -0
  204. package/dist/react/models/tree.js +26 -0
  205. package/dist/react/provider.d.ts +18 -0
  206. package/dist/react/provider.js +31 -0
  207. package/dist/react/recipes/context-hypercms.d.ts +17 -0
  208. package/dist/react/recipes/context-hypercms.js +71 -0
  209. package/dist/react/recipes/context-quickcrop.d.ts +8 -0
  210. package/dist/react/recipes/context-quickcrop.js +49 -0
  211. package/dist/react/theme.css +8004 -0
  212. package/dist/react/theme.css.d.ts +1 -0
  213. package/examples/README.md +34 -0
  214. package/examples/components/activity-feed.html +28 -0
  215. package/examples/components/app-shell.html +12 -0
  216. package/examples/components/app-toolbar.html +38 -0
  217. package/examples/components/avatar-group.html +27 -0
  218. package/examples/components/breadcrumbs.html +26 -0
  219. package/examples/components/bulk-bar.html +22 -0
  220. package/examples/components/code-block.html +12 -0
  221. package/examples/components/code-editor.html +25 -0
  222. package/examples/components/column-manager.html +9 -0
  223. package/examples/components/combobox.html +13 -0
  224. package/examples/components/context-hypercms.css +41 -0
  225. package/examples/components/context-hypercms.html +40 -0
  226. package/examples/components/context-hypercms.js +62 -0
  227. package/examples/components/context-quickcrop.html +137 -0
  228. package/examples/components/diff-view.html +9 -0
  229. package/examples/components/drawer.html +11 -0
  230. package/examples/components/editable-grid-cells.html +9 -0
  231. package/examples/components/file-browser.html +53 -0
  232. package/examples/components/file-tree.html +34 -0
  233. package/examples/components/files-table.html +80 -0
  234. package/examples/components/filter-builder.html +11 -0
  235. package/examples/components/form-error-summary.html +11 -0
  236. package/examples/components/index.html +51 -0
  237. package/examples/components/inline-edit.html +42 -0
  238. package/examples/components/kanban-board.html +42 -0
  239. package/examples/components/manifest.json +3279 -0
  240. package/examples/components/modal.html +11 -0
  241. package/examples/components/multi-select-picker.html +13 -0
  242. package/examples/components/pagination.html +32 -0
  243. package/examples/components/persistent-action-banner.html +23 -0
  244. package/examples/components/popconfirm.html +13 -0
  245. package/examples/components/popover-menu.html +13 -0
  246. package/examples/components/reference/baseline/DECISIONS.md +85 -0
  247. package/examples/components/reference/baseline/README.md +58 -0
  248. package/examples/components/reference/baseline/bevel-fonts.css +16 -0
  249. package/examples/components/reference/baseline/bevel.css +1339 -0
  250. package/examples/components/reference/baseline/bevel.js +496 -0
  251. package/examples/components/reference/baseline/fonts/LICENSE-ibm-plex-mono.txt +93 -0
  252. package/examples/components/reference/baseline/fonts/LICENSE-ibm-plex-sans.txt +93 -0
  253. package/examples/components/reference/baseline/fonts/LICENSE-newsreader.txt +93 -0
  254. package/examples/components/reference/baseline/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  255. package/examples/components/reference/baseline/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  256. package/examples/components/reference/baseline/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  257. package/examples/components/reference/baseline/fonts/ibm-plex-sans-latin-400-italic.woff2 +0 -0
  258. package/examples/components/reference/baseline/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  259. package/examples/components/reference/baseline/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  260. package/examples/components/reference/baseline/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  261. package/examples/components/reference/baseline/fonts/newsreader-latin-opsz-italic.woff2 +0 -0
  262. package/examples/components/reference/baseline/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  263. package/examples/components/reference/fable/IMPROVEMENTS.md +106 -0
  264. package/examples/components/reference/fable/PARENT-REPAIRS.md +17 -0
  265. package/examples/components/reference/fable/__pycache__/build_repairs.cpython-311.pyc +0 -0
  266. package/examples/components/reference/fable/__pycache__/kanban.cpython-311.pyc +0 -0
  267. package/examples/components/reference/fable/as-authored/IMPROVEMENTS-completed.md +106 -0
  268. package/examples/components/reference/fable/as-authored/base-astra.css +17 -0
  269. package/examples/components/reference/fable/as-authored/base-parent.css +416 -0
  270. package/examples/components/reference/fable/as-authored/build.py +858 -0
  271. package/examples/components/reference/fable/as-authored/fable.css +823 -0
  272. package/examples/components/reference/fable/as-authored/kanban-completed.css +235 -0
  273. package/examples/components/reference/fable/as-authored/kanban-completed.html +53 -0
  274. package/examples/components/reference/fable/as-authored/kanban-completed.py +212 -0
  275. package/examples/components/reference/fable/as-authored/kanban.py +207 -0
  276. package/examples/components/reference/fable/base-astra.css +17 -0
  277. package/examples/components/reference/fable/base-parent.css +416 -0
  278. package/examples/components/reference/fable/build.py +858 -0
  279. package/examples/components/reference/fable/build_repairs.py +25 -0
  280. package/examples/components/reference/fable/components/activity-feed.html +3 -0
  281. package/examples/components/reference/fable/components/app-toolbar.html +3 -0
  282. package/examples/components/reference/fable/components/avatar-group.html +4 -0
  283. package/examples/components/reference/fable/components/breadcrumbs.html +3 -0
  284. package/examples/components/reference/fable/components/code-block.html +9 -0
  285. package/examples/components/reference/fable/components/column-manager.html +3 -0
  286. package/examples/components/reference/fable/components/combobox.html +6 -0
  287. package/examples/components/reference/fable/components/context-hypercms.html +3 -0
  288. package/examples/components/reference/fable/components/context-quickcrop.html +4 -0
  289. package/examples/components/reference/fable/components/diff-view.html +13 -0
  290. package/examples/components/reference/fable/components/drawer.html +3 -0
  291. package/examples/components/reference/fable/components/editable-grid-cells.html +3 -0
  292. package/examples/components/reference/fable/components/filter-builder.html +3 -0
  293. package/examples/components/reference/fable/components/form-error-summary.html +4 -0
  294. package/examples/components/reference/fable/components/inline-edit.html +3 -0
  295. package/examples/components/reference/fable/components/kanban-board.html +53 -0
  296. package/examples/components/reference/fable/components/modal.html +3 -0
  297. package/examples/components/reference/fable/components/multi-select-picker.html +5 -0
  298. package/examples/components/reference/fable/components/pagination.html +3 -0
  299. package/examples/components/reference/fable/components/persistent-action-banner.html +4 -0
  300. package/examples/components/reference/fable/components/popconfirm.html +5 -0
  301. package/examples/components/reference/fable/components/popover-menu.html +3 -0
  302. package/examples/components/reference/fable/components/rich-text-toolbar.html +3 -0
  303. package/examples/components/reference/fable/components/save-status-indicator.html +2 -0
  304. package/examples/components/reference/fable/components/selectable-cards.html +3 -0
  305. package/examples/components/reference/fable/components/settings-rows.html +3 -0
  306. package/examples/components/reference/fable/components/sidebar-nav.html +4 -0
  307. package/examples/components/reference/fable/components/small-charts.html +5 -0
  308. package/examples/components/reference/fable/components/split-button.html +4 -0
  309. package/examples/components/reference/fable/components/split-panes.html +8 -0
  310. package/examples/components/reference/fable/components/stat-tiles.html +3 -0
  311. package/examples/components/reference/fable/components/toast-stack.html +5 -0
  312. package/examples/components/reference/fable/components/tree-view.html +4 -0
  313. package/examples/components/reference/fable/components/upload-dropzone.html +6 -0
  314. package/examples/components/reference/fable/components/wizard-shell.html +3 -0
  315. package/examples/components/reference/fable/coverage.json +414 -0
  316. package/examples/components/reference/fable/fable.css +823 -0
  317. package/examples/components/reference/fable/index.html +5 -0
  318. package/examples/components/reference/fable/kanban.css +237 -0
  319. package/examples/components/reference/fable/kanban.py +212 -0
  320. package/examples/components/reference/fable/parent-repairs.css +9 -0
  321. package/examples/components/reference/fixtures/data.json +102 -0
  322. package/examples/components/reference/fixtures/host.js +47 -0
  323. package/examples/components/reference/fixtures/static-host.js +39 -0
  324. package/examples/components/reference/fixtures/workspace.jpg +0 -0
  325. package/examples/components/reference/parent/CHANGES.md +179 -0
  326. package/examples/components/reference/parent/__pycache__/kanban.cpython-311.pyc +0 -0
  327. package/examples/components/reference/parent/base-astra.css +17 -0
  328. package/examples/components/reference/parent/base-parent.css +416 -0
  329. package/examples/components/reference/parent/build.py +148 -0
  330. package/examples/components/reference/parent/components/activity-feed.html +2 -0
  331. package/examples/components/reference/parent/components/app-toolbar.html +2 -0
  332. package/examples/components/reference/parent/components/avatar-group.html +4 -0
  333. package/examples/components/reference/parent/components/breadcrumbs.html +2 -0
  334. package/examples/components/reference/parent/components/code-block.html +8 -0
  335. package/examples/components/reference/parent/components/column-manager.html +2 -0
  336. package/examples/components/reference/parent/components/combobox.html +6 -0
  337. package/examples/components/reference/parent/components/context-hypercms.html +2 -0
  338. package/examples/components/reference/parent/components/context-quickcrop.html +4 -0
  339. package/examples/components/reference/parent/components/diff-view.html +4 -0
  340. package/examples/components/reference/parent/components/drawer.html +2 -0
  341. package/examples/components/reference/parent/components/editable-grid-cells.html +2 -0
  342. package/examples/components/reference/parent/components/filter-builder.html +2 -0
  343. package/examples/components/reference/parent/components/form-error-summary.html +2 -0
  344. package/examples/components/reference/parent/components/inline-edit.html +2 -0
  345. package/examples/components/reference/parent/components/kanban-board.html +84 -0
  346. package/examples/components/reference/parent/components/modal.html +2 -0
  347. package/examples/components/reference/parent/components/multi-select-picker.html +5 -0
  348. package/examples/components/reference/parent/components/pagination.html +2 -0
  349. package/examples/components/reference/parent/components/persistent-action-banner.html +4 -0
  350. package/examples/components/reference/parent/components/popconfirm.html +5 -0
  351. package/examples/components/reference/parent/components/popover-menu.html +2 -0
  352. package/examples/components/reference/parent/components/rich-text-toolbar.html +2 -0
  353. package/examples/components/reference/parent/components/save-status-indicator.html +2 -0
  354. package/examples/components/reference/parent/components/selectable-cards.html +2 -0
  355. package/examples/components/reference/parent/components/settings-rows.html +2 -0
  356. package/examples/components/reference/parent/components/sidebar-nav.html +4 -0
  357. package/examples/components/reference/parent/components/small-charts.html +2 -0
  358. package/examples/components/reference/parent/components/split-button.html +5 -0
  359. package/examples/components/reference/parent/components/split-panes.html +8 -0
  360. package/examples/components/reference/parent/components/stat-tiles.html +2 -0
  361. package/examples/components/reference/parent/components/toast-stack.html +5 -0
  362. package/examples/components/reference/parent/components/tree-view.html +4 -0
  363. package/examples/components/reference/parent/components/upload-dropzone.html +6 -0
  364. package/examples/components/reference/parent/components/wizard-shell.html +2 -0
  365. package/examples/components/reference/parent/coverage.json +414 -0
  366. package/examples/components/reference/parent/index.html +1 -0
  367. package/examples/components/reference/parent/kanban.css +114 -0
  368. package/examples/components/reference/parent/kanban.py +55 -0
  369. package/examples/components/reference/parent/refinement.css +53 -0
  370. package/examples/components/reference/selected/build.py +70 -0
  371. package/examples/components/reference/selected/components/activity-feed.html +3 -0
  372. package/examples/components/reference/selected/components/app-toolbar.html +3 -0
  373. package/examples/components/reference/selected/components/avatar-group.html +4 -0
  374. package/examples/components/reference/selected/components/breadcrumbs.html +3 -0
  375. package/examples/components/reference/selected/components/code-block.html +9 -0
  376. package/examples/components/reference/selected/components/column-manager.html +3 -0
  377. package/examples/components/reference/selected/components/combobox.html +6 -0
  378. package/examples/components/reference/selected/components/context-hypercms.html +3 -0
  379. package/examples/components/reference/selected/components/context-quickcrop.html +4 -0
  380. package/examples/components/reference/selected/components/diff-view.html +13 -0
  381. package/examples/components/reference/selected/components/drawer.html +3 -0
  382. package/examples/components/reference/selected/components/editable-grid-cells.html +3 -0
  383. package/examples/components/reference/selected/components/filter-builder.html +3 -0
  384. package/examples/components/reference/selected/components/form-error-summary.html +4 -0
  385. package/examples/components/reference/selected/components/inline-edit.html +3 -0
  386. package/examples/components/reference/selected/components/kanban-board.html +53 -0
  387. package/examples/components/reference/selected/components/modal.html +2 -0
  388. package/examples/components/reference/selected/components/multi-select-picker.html +5 -0
  389. package/examples/components/reference/selected/components/pagination.html +3 -0
  390. package/examples/components/reference/selected/components/persistent-action-banner.html +4 -0
  391. package/examples/components/reference/selected/components/popconfirm.html +5 -0
  392. package/examples/components/reference/selected/components/popover-menu.html +3 -0
  393. package/examples/components/reference/selected/components/rich-text-toolbar.html +3 -0
  394. package/examples/components/reference/selected/components/save-status-indicator.html +2 -0
  395. package/examples/components/reference/selected/components/selectable-cards.html +3 -0
  396. package/examples/components/reference/selected/components/settings-rows.html +3 -0
  397. package/examples/components/reference/selected/components/sidebar-nav.html +4 -0
  398. package/examples/components/reference/selected/components/small-charts.html +5 -0
  399. package/examples/components/reference/selected/components/split-button.html +4 -0
  400. package/examples/components/reference/selected/components/split-panes.html +8 -0
  401. package/examples/components/reference/selected/components/stat-tiles.html +3 -0
  402. package/examples/components/reference/selected/components/toast-stack.html +5 -0
  403. package/examples/components/reference/selected/components/tree-view.html +4 -0
  404. package/examples/components/reference/selected/components/upload-dropzone.html +6 -0
  405. package/examples/components/reference/selected/components/wizard-shell.html +3 -0
  406. package/examples/components/reference/selected/corrections.css +11 -0
  407. package/examples/components/reference/selected/coverage.json +413 -0
  408. package/examples/components/reference/selected/gallery-build.mjs +49 -0
  409. package/examples/components/reference/selected/gallery-spec.json +12 -0
  410. package/examples/components/reference/selected/index.html +1 -0
  411. package/examples/components/reference/selected/kanban-comparison.json +6 -0
  412. package/examples/components/reference/selected/manifest.json +476 -0
  413. package/examples/components/reference/sha256.json +142 -0
  414. package/examples/components/reference/sources/diagonal-close.svg +1 -0
  415. package/examples/components/reference/sources/hyperclay/public-assets/css/hyperclay-app-source.css +614 -0
  416. package/examples/components/reference/sources/hyperclay/public-assets/js/app.js +94 -0
  417. package/examples/components/reference/sources/hyperclayjs/src/ui/theModal.js +897 -0
  418. package/examples/components/reference/sources/hypercms/scripts/build-theme.js +203 -0
  419. package/examples/components/reference/sources/hypercms/src/anchor.js +24 -0
  420. package/examples/components/reference/sources/hypercms/src/apply-loop.js +167 -0
  421. package/examples/components/reference/sources/hypercms/src/diagnostics.js +44 -0
  422. package/examples/components/reference/sources/hypercms/src/enhance.js +173 -0
  423. package/examples/components/reference/sources/hypercms/src/events.js +955 -0
  424. package/examples/components/reference/sources/hypercms/src/form-builder.js +518 -0
  425. package/examples/components/reference/sources/hypercms/src/form-rules.js +208 -0
  426. package/examples/components/reference/sources/hypercms/src/hooks.js +100 -0
  427. package/examples/components/reference/sources/hypercms/src/hypercms-bundle.js +10 -0
  428. package/examples/components/reference/sources/hypercms/src/hypercms.js +347 -0
  429. package/examples/components/reference/sources/hypercms/src/morph.js +10 -0
  430. package/examples/components/reference/sources/hypercms/src/path.js +61 -0
  431. package/examples/components/reference/sources/hypercms/src/place.js +131 -0
  432. package/examples/components/reference/sources/hypercms/src/platform.js +131 -0
  433. package/examples/components/reference/sources/hypercms/src/refresh.js +87 -0
  434. package/examples/components/reference/sources/hypercms/src/richclay-bridge.js +140 -0
  435. package/examples/components/reference/sources/hypercms/src/row-identity.js +111 -0
  436. package/examples/components/reference/sources/hypercms/src/scaffold.js +10 -0
  437. package/examples/components/reference/sources/hypercms/src/session.js +303 -0
  438. package/examples/components/reference/sources/hypercms/src/shell.js +248 -0
  439. package/examples/components/reference/sources/hypercms/src/styles.css +298 -0
  440. package/examples/components/reference/sources/hypercms/src/targets.js +144 -0
  441. package/examples/components/reference/sources/hypercms/src/templates.js +656 -0
  442. package/examples/components/reference/sources/hypercms/src/theme/pixel-quiet.overrides.css +761 -0
  443. package/examples/components/reference/sources/hypercms/src/theme.generated.css +1772 -0
  444. package/examples/components/reference/sources/hypercms/src/toggle.js +666 -0
  445. package/examples/components/reference/sources/hypercms/src/unresolved.js +211 -0
  446. package/examples/components/reference/sources/hypercms/src/vendor/mirk.vendor.js +212 -0
  447. package/examples/components/reference/sources/hypercms/src/views/inline-layer.js +421 -0
  448. package/examples/components/reference/sources/hypercms/src/views/inline.js +1072 -0
  449. package/examples/components/reference/sources/hypercms/src/views/sidebar.js +97 -0
  450. package/examples/components/reference/sources/modal-reference.html +301 -0
  451. package/examples/components/reference/sources/quickcrop/quickcrop.css +124 -0
  452. package/examples/components/reference/sources/quickcrop/quickcrop.js +400 -0
  453. package/examples/components/reference/sources/richclay/richclay.css +416 -0
  454. package/examples/components/reference/sources/richclay/richclay.js +2962 -0
  455. package/examples/components/reference/sources/richclay/src/a11y.js +67 -0
  456. package/examples/components/reference/sources/richclay/src/browser-global.js +7 -0
  457. package/examples/components/reference/sources/richclay/src/buttons.js +254 -0
  458. package/examples/components/reference/sources/richclay/src/hyperclay.js +470 -0
  459. package/examples/components/reference/sources/richclay/src/normalize.js +380 -0
  460. package/examples/components/reference/sources/richclay/src/richclay.js +1356 -0
  461. package/examples/components/reference/sources/richclay/src/sanitize.js +189 -0
  462. package/examples/components/reference/sources/richclay/src/styles.js +23 -0
  463. package/examples/components/reference/sources/richclay/src/toolbar-float.js +175 -0
  464. package/examples/components/reference/sources/richclay/src/toolbar.js +394 -0
  465. package/examples/components/reference/sources/richclay/src/vendor-bundle.js +15 -0
  466. package/examples/components/reference/sources/richclay/vendor/DOMPURIFY-LICENSE +202 -0
  467. package/examples/components/reference/sources/richclay/vendor/DOMPURIFY-LICENSE-MPL +373 -0
  468. package/examples/components/reference/sources/richclay/vendor/SQUIRE-LICENSE +21 -0
  469. package/examples/components/reference/sources/richclay/vendor/purify.es.mjs +2249 -0
  470. package/examples/components/reference/sources/richclay/vendor/purify.min.js +3 -0
  471. package/examples/components/reference/sources/richclay/vendor/squire.js +22 -0
  472. package/examples/components/reference/sources/richclay/vendor/squire.mjs +22 -0
  473. package/examples/components/reference/sources/richclay/vendor/squire.provenance.json +19 -0
  474. package/examples/components/rich-text-toolbar.html +43 -0
  475. package/examples/components/save-status-indicator.html +11 -0
  476. package/examples/components/selectable-cards.html +9 -0
  477. package/examples/components/settings-rows.html +10 -0
  478. package/examples/components/sidebar-nav.html +9 -0
  479. package/examples/components/small-charts.html +21 -0
  480. package/examples/components/split-button.html +13 -0
  481. package/examples/components/split-panes-editor.html +6 -0
  482. package/examples/components/split-panes.html +9 -0
  483. package/examples/components/stat-tiles.html +23 -0
  484. package/examples/components/toast-stack.html +21 -0
  485. package/examples/components/tree-view.html +9 -0
  486. package/examples/components/upload-dropzone.html +88 -0
  487. package/examples/components/wizard-shell.html +50 -0
  488. package/examples/datastar/index.html +38 -0
  489. package/examples/datastar/server.mjs +31 -0
  490. package/examples/fixtures/field-guide.pdf +14 -0
  491. package/examples/fixtures/workspace.jpg +0 -0
  492. package/examples/setup-peers.mjs +35 -0
  493. package/fonts/LICENSE-ibm-plex-mono.txt +93 -0
  494. package/fonts/LICENSE-ibm-plex-sans.txt +93 -0
  495. package/fonts/LICENSE-newsreader.txt +93 -0
  496. package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
  497. package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
  498. package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
  499. package/fonts/ibm-plex-sans-latin-400-italic.woff2 +0 -0
  500. package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
  501. package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
  502. package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
  503. package/fonts/newsreader-latin-opsz-italic.woff2 +0 -0
  504. package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
  505. package/icons/LICENSE +21 -0
  506. package/icons/house.json +71 -0
  507. package/icons/icons.d.ts +17 -0
  508. package/icons/icons.js +648 -0
  509. package/icons/icons.svg +126 -0
  510. package/icons/marks/build-tray.source.mjs +45 -0
  511. package/icons/marks/hyperclay-local.svg +11 -0
  512. package/icons/phosphor.json +53 -0
  513. package/icons/round.json +8 -0
  514. package/integrations/datastar.js +202 -0
  515. package/integrations/quickcrop.css +26 -0
  516. package/integrations/quickcrop.js +56 -0
  517. package/integrations/richclay.css +100 -0
  518. package/integrations/richclay.js +131 -0
  519. package/package.json +630 -0
  520. package/react/README.md +244 -0
  521. package/src/README.md +83 -0
  522. package/vendor/datastar/datastar-1.0.3.js +10 -0
  523. package/vendor/datastar/provenance.json +6 -0
  524. package/vendor/floating-ui/LICENSE-core +20 -0
  525. package/vendor/floating-ui/LICENSE-dom +20 -0
  526. package/vendor/floating-ui/floating-ui.core.umd.min.js +1 -0
  527. package/vendor/floating-ui/floating-ui.dom.umd.min.js +1 -0
  528. package/vendor/floating-ui/provenance.json +17 -0
  529. package/vendor/richclay/LICENSE +16 -0
  530. package/vendor/richclay/THIRD-PARTY-NOTICES.md +45 -0
  531. package/vendor/richclay/provenance.json +17 -0
  532. package/vendor/richclay/richclay.css +404 -0
  533. package/vendor/richclay/richclay.js +2940 -0
  534. package/vendor/richclay/vendor/DOMPURIFY-LICENSE +202 -0
  535. package/vendor/richclay/vendor/DOMPURIFY-LICENSE-MPL +373 -0
  536. package/vendor/richclay/vendor/SQUIRE-LICENSE +21 -0
  537. package/vendor/richclay/vendor/purify.min.js +3 -0
  538. package/vendor/richclay/vendor/squire.js +22 -0
  539. package/vendor/richclay/vendor/squire.provenance.json +30 -0
@@ -0,0 +1,416 @@
1
+ @import url('../sources/richclay/richclay.css');
2
+ html { min-height:100%; }
3
+ body { margin:0; font:16px/1.5 var(--bevel-font-sans); color:var(--bevel-ink); background:var(--bevel-ground); }
4
+ [hidden] { display:none !important; }
5
+ button, a, input, select, textarea { -webkit-tap-highlight-color:transparent; }
6
+ button { cursor:pointer; }
7
+ button:disabled { cursor:default; }
8
+ button:focus-visible, a:focus-visible, [tabindex]:focus-visible { outline:2px solid var(--bevel-brass); outline-offset:3px; }
9
+ a { color:inherit; text-underline-offset:3px; }
10
+ svg { flex-shrink:0; vertical-align:middle; }
11
+ h1,h2,h3,p { margin:0; }
12
+ h1 { font:400 34px/1.08 var(--bevel-font-serif); letter-spacing:-.025em; }
13
+ h2 { font:400 27px/1.15 var(--bevel-font-serif); letter-spacing:-.015em; }
14
+ h3 { font-size:17px; line-height:1.3; }
15
+ small { font-size:12px; }
16
+ hr { border:0; border-top:1px solid var(--bevel-line); margin:10px 0; }
17
+ kbd { font:11px var(--bevel-font-mono); color:var(--bevel-muted); border:1px solid var(--bevel-line-2); padding:2px 5px; }
18
+ output:empty { display:none; }
19
+ .reference-stage { padding:28px; min-height:530px; }
20
+ .p-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:24px; padding-bottom:20px; border-bottom:1px solid var(--bevel-line-2); }
21
+ .p-header p { margin-top:9px; color:var(--bevel-muted); font-size:14px; max-width:500px; }
22
+ .p-eyebrow { font:10px/1.6 var(--bevel-font-mono); text-transform:uppercase; letter-spacing:.16em; color:var(--bevel-brass); margin-bottom:7px; }
23
+ .p-caption { margin-top:18px; font:11px/1.55 var(--bevel-font-mono); color:var(--bevel-muted); }
24
+ .p-muted { color:var(--bevel-muted); }
25
+ .p-mono { font-family:var(--bevel-font-mono); font-size:.88em; }
26
+ .p-small { font-size:13px; }
27
+ .p-panel { padding:24px; background:var(--bevel-surface); border:1px solid var(--bevel-line-2); }
28
+ .p-stack { display:grid; gap:18px; }
29
+ .p-row { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
30
+ .p-between { display:flex; justify-content:space-between; align-items:center; gap:14px; }
31
+ .p-columns { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
32
+ .p-field { display:grid; gap:7px; font-size:13px; font-weight:500; min-width:0; }
33
+ .p-field small { color:var(--bevel-muted); font-weight:400; }
34
+ .p-field input,.p-field textarea,.p-select { width:100%; min-width:0; }
35
+ .p-select { padding:9px 34px 9px 11px; font:15px var(--bevel-font-sans); color:var(--bevel-ink); border:1px solid var(--bevel-line-2); background:var(--bevel-surface); border-radius:0; }
36
+ .p-field:has([aria-invalid=true]) input { border-color:var(--bevel-ox); }
37
+ .p-field:has([aria-invalid=true]) small { color:var(--bevel-ox); }
38
+ .p-actions { display:flex; justify-content:flex-end; align-items:center; flex-wrap:wrap; gap:10px; margin-top:24px; padding-top:18px; border-top:1px solid var(--bevel-line); }
39
+ .p-icon-button { width:33px; height:33px; display:inline-flex; align-items:center; justify-content:center; border:2px solid; border-color:var(--bevel-edge-hi) var(--bevel-edge-lo) var(--bevel-edge-lo) var(--bevel-edge-hi); background:var(--bevel-face); color:var(--bevel-ink); padding:0; }
40
+ .p-icon-button[aria-pressed=true] { background:var(--bevel-face-in); border-color:var(--bevel-edge-in) var(--bevel-edge-in-hi) var(--bevel-edge-in-hi) var(--bevel-edge-in); }
41
+ .p-badge { display:inline-flex; align-items:center; width:fit-content; padding:3px 7px; border:1px solid var(--bevel-line-2); font:10px/1.3 var(--bevel-font-mono); text-transform:uppercase; letter-spacing:.05em; }
42
+ .p-badge.teal { color:var(--bevel-teal); background:var(--bevel-teal-soft); border-color:transparent; }
43
+ .p-badge.ox { color:var(--bevel-ox); background:var(--bevel-ox-soft); border-color:transparent; }
44
+ .p-badge.brass { color:var(--bevel-brass); background:var(--bevel-brass-soft); border-color:transparent; }
45
+ .p-avatar { width:38px; height:38px; display:inline-flex; align-items:center; justify-content:center; background:var(--bevel-sunk); color:var(--bevel-ink-2); font:12px var(--bevel-font-mono); border:1px solid var(--bevel-line-2); flex-shrink:0; }
46
+ .p-avatar.small { width:28px; height:28px; font-size:10px; }
47
+ .p-meta { padding:13px 0; border-bottom:1px solid var(--bevel-line); }
48
+ .p-meta dt { font:10px var(--bevel-font-mono); color:var(--bevel-muted); text-transform:uppercase; letter-spacing:.08em; margin-bottom:4px; }
49
+ .p-meta dd { margin:0; font-size:14px; }
50
+ .p-scrim { padding:28px; min-height:430px; display:grid; place-items:center; background:light-dark(rgb(43 36 27 / .19),rgb(0 0 0 / .65)); position:relative; }
51
+ .p-modal { width:min(100%,480px); border:2px solid var(--bevel-ink); background:var(--bevel-surface); padding:36px; position:relative; }
52
+ .p-modal .p-eyebrow { margin-bottom:12px; }
53
+ .p-modal h2 { font-size:31px; margin-bottom:12px; }
54
+ .p-modal>p { color:var(--bevel-ink-2); font-size:14px; margin-bottom:20px; }
55
+ .p-corner { position:absolute; top:0; right:0; width:44px; height:44px; padding:0; border:0; background:none; }
56
+ .p-corner svg { width:100%; height:100%; }
57
+ .corner-bg { fill:var(--bevel-line-2); }
58
+ .corner-x { fill:var(--bevel-ink); }
59
+ .p-scroll { max-height:215px; overflow:auto; padding-right:14px; scrollbar-color:var(--bevel-line-2) transparent; }
60
+ .p-scroll p+p { margin-top:14px; }
61
+ .p-drawer-stage { background:var(--bevel-sunk); border:1px solid var(--bevel-line-2); display:flex; justify-content:flex-end; min-height:450px; position:relative; overflow:hidden; }
62
+ .p-drawer-ghost { flex:1; padding:26px 18px; color:var(--bevel-muted); opacity:.5; }
63
+ .p-drawer { width:410px; max-width:100%; background:var(--bevel-surface); border-left:2px solid var(--bevel-ink); padding:27px; position:relative; }
64
+ .p-drawer h2 { margin:8px 0 4px; }
65
+ .p-menu-area { min-height:350px; padding:20px; background:var(--bevel-sunk); border:1px solid var(--bevel-line); }
66
+ .p-menu { width:310px; max-width:100%; background:var(--bevel-surface); border:1px solid var(--bevel-line-2); padding:6px; margin-top:9px; }
67
+ .p-menu-title { font:10px var(--bevel-font-mono); color:var(--bevel-muted); text-transform:uppercase; letter-spacing:.08em; padding:10px; }
68
+ .p-menu button { display:flex; align-items:center; gap:10px; width:100%; padding:11px 10px; background:none; border:0; text-align:left; font:14px var(--bevel-font-sans); }
69
+ .p-menu button span { flex:1; }
70
+ .p-menu button:hover:not(:disabled),.p-menu button:focus-visible { background:var(--bevel-sunk); }
71
+ .p-menu button:disabled { color:var(--bevel-faint); }
72
+ .danger { color:var(--bevel-ox); }
73
+ .p-menu-result { display:block; font-size:12px; color:var(--bevel-teal); padding:8px 10px; }
74
+ .p-popconfirm { border:1px solid var(--bevel-line-2); background:var(--bevel-surface); padding:22px; max-width:350px; margin:10px 0; }
75
+ .p-popconfirm p { font-size:14px; color:var(--bevel-muted); margin-top:9px; }
76
+ .p-popconfirm .p-actions { margin-top:16px; padding-top:0; border:0; }
77
+ .p-picker { width:430px; max-width:100%; }
78
+ .p-search { display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--bevel-line-2); background:var(--bevel-surface); }
79
+ .p-search input { background:none; border:0; outline:none; min-width:0; flex:1; font-size:15px; }
80
+ .p-options { border:1px solid var(--bevel-line-2); border-top:0; padding:6px; background:var(--bevel-surface); }
81
+ .p-option { display:flex; align-items:center; gap:12px; padding:11px; width:100%; background:none; border:0; text-align:left; }
82
+ .p-option:hover,.p-option[aria-selected=true] { background:var(--bevel-sunk); }
83
+ .p-option .p-person { flex:1; }
84
+ .p-person strong { display:block; font-size:14px; font-weight:500; }
85
+ .p-person small { color:var(--bevel-muted); }
86
+ .p-picker-foot { font:10px var(--bevel-font-mono); color:var(--bevel-muted); padding:12px; border-top:1px solid var(--bevel-line); }
87
+ .p-empty { text-align:center; padding:38px 18px; color:var(--bevel-muted); }
88
+ .p-empty h3 { color:var(--bevel-ink); margin-bottom:6px; }
89
+ .p-tag { display:inline-flex; gap:7px; align-items:center; padding:4px 8px; font-size:12px; background:var(--bevel-sunk); border:1px solid var(--bevel-line-2); }
90
+ .p-tag button { border:0; background:none; padding:0; display:inline-flex; color:var(--bevel-muted); }
91
+ .p-choice { display:flex; align-items:flex-start; gap:13px; padding:20px; background:var(--bevel-surface); border:1px solid var(--bevel-line-2); cursor:pointer; min-width:0; }
92
+ .p-choice:has(:checked) { border-color:var(--bevel-brass); background:var(--bevel-brass-soft); }
93
+ .p-choice:has(:disabled) { opacity:.5; cursor:default; }
94
+ .p-choice strong { display:block; margin-bottom:7px; font-size:16px; }
95
+ .p-choice p { font-size:13px; color:var(--bevel-muted); }
96
+ .p-choice input { margin:4px 0 0; accent-color:var(--bevel-brass); }
97
+ .p-choice .p-price { font:22px var(--bevel-font-mono); margin-top:16px; }
98
+ .p-dropzone { text-align:center; border:1px dashed var(--bevel-muted); background:var(--bevel-surface); padding:32px 20px; }
99
+ .p-dropzone>svg { margin-bottom:12px; color:var(--bevel-brass); }
100
+ .p-dropzone p { margin:6px 0 18px; font-size:13px; color:var(--bevel-muted); }
101
+ .p-upload-row { display:flex; align-items:center; gap:12px; padding:15px 0; border-bottom:1px solid var(--bevel-line); }
102
+ .p-upload-row img { width:50px; height:44px; object-fit:cover; }
103
+ .p-progress { display:block; height:4px; background:var(--bevel-line); margin-top:8px; }
104
+ .p-progress span { display:block; height:100%; background:var(--bevel-brass); }
105
+ .p-setting { display:flex; justify-content:space-between; align-items:center; gap:26px; padding:20px 0; border-bottom:1px solid var(--bevel-line); }
106
+ .p-setting strong { display:block; font-size:15px; font-weight:500; }
107
+ .p-setting p { font-size:13px; color:var(--bevel-muted); margin-top:4px; }
108
+ .p-setting .p-select { width:130px; }
109
+ .p-error-summary { padding:18px 20px; border-left:3px solid var(--bevel-ox); background:var(--bevel-ox-soft); margin-bottom:24px; }
110
+ .p-error-summary h3 { color:var(--bevel-ox); font-size:16px; }
111
+ .p-error-summary ul { margin:9px 0 0; padding-left:20px; font-size:13px; }
112
+ .p-inline-value { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:20px 0; border-bottom:1px solid var(--bevel-line); }
113
+ .p-inline-value strong { font-weight:500; }
114
+ .p-split-button { display:inline-flex; }
115
+ .p-split-button>button+button { border-left-width:1px; }
116
+ .p-app-shell { display:flex; border:1px solid var(--bevel-line-2); min-height:360px; background:var(--bevel-surface); }
117
+ .p-sidebar { width:205px; flex-shrink:0; display:flex; flex-direction:column; background:var(--bevel-sunk); border-right:1px solid var(--bevel-line-2); }
118
+ .p-sidebar.compact { width:72px; }
119
+ .p-sidebar-brand { display:flex; gap:10px; align-items:center; padding:22px 18px; border-bottom:1px solid var(--bevel-line); }
120
+ .p-sidebar-brand strong { font:20px var(--bevel-font-serif); }
121
+ .p-sidebar-links { padding:18px 9px; flex:1; }
122
+ .p-sidebar-links .p-eyebrow { padding-left:9px; }
123
+ .p-nav-item { display:flex; align-items:center; gap:10px; width:100%; padding:11px 9px; border:0; background:none; text-align:left; color:var(--bevel-muted); font-size:13px; }
124
+ .p-nav-item span { flex:1; }
125
+ .p-nav-item small { font-family:var(--bevel-font-mono); }
126
+ .p-nav-item.active { color:var(--bevel-ink); background:var(--bevel-surface); box-shadow:inset 2px 0 var(--bevel-brass); }
127
+ .p-nav-item:hover { background:var(--bevel-surface); }
128
+ .p-sidebar footer { display:flex; align-items:center; gap:9px; padding:15px; border-top:1px solid var(--bevel-line-2); font-size:12px; }
129
+ .p-sidebar footer small { display:block; font-size:10px; color:var(--bevel-muted); }
130
+ .p-sidebar-toggle { padding:0 15px 15px; }
131
+ .p-app-content { padding:24px; min-width:0; flex:1; }
132
+ .p-document-row { display:flex; align-items:center; gap:12px; padding:18px 0; border-bottom:1px solid var(--bevel-line); }
133
+ .p-document-row>div { flex:1; min-width:0; }
134
+ .p-document-row strong { font-size:14px; font-weight:500; }
135
+ .p-document-row p { margin-top:3px; font-size:11px; color:var(--bevel-muted); }
136
+ .p-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding:14px; border-bottom:1px solid var(--bevel-line-2); background:var(--bevel-sunk); }
137
+ .p-tool-group { display:flex; gap:5px; padding-right:10px; border-right:1px solid var(--bevel-line-2); }
138
+ .p-toolbar-search { display:flex; align-items:center; gap:8px; flex:1; min-width:120px; }
139
+ .p-toolbar-search input { width:100%; border:0; background:none; font-size:12px; min-width:0; }
140
+ .p-toolbar-menu { margin:10px 14px 0 auto; width:225px; border:1px solid var(--bevel-line-2); padding:5px; }
141
+ .p-toolbar-menu button { display:block; width:100%; padding:10px; border:0; background:none; text-align:left; font-size:13px; }
142
+ .p-toolbar-menu button:hover { background:var(--bevel-sunk); }
143
+ .p-breadcrumbs { display:flex; align-items:center; flex-wrap:wrap; gap:10px; font-size:12px; color:var(--bevel-muted); }
144
+ .p-breadcrumbs a { display:inline-flex; gap:6px; align-items:center; text-decoration:none; }
145
+ .p-breadcrumbs a:hover { text-decoration:underline; }
146
+ .p-breadcrumbs [aria-current] { color:var(--bevel-ink); font-weight:500; }
147
+ .p-pager { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; margin-top:24px; }
148
+ .p-page-range { font:11px var(--bevel-font-mono); color:var(--bevel-muted); }
149
+ .p-pager nav { display:flex; gap:7px; align-items:center; }
150
+ .p-page { min-width:33px; height:33px; border:1px solid var(--bevel-line-2); background:var(--bevel-surface); font:12px var(--bevel-font-mono); }
151
+ .p-page.active { background:var(--bevel-ink); color:var(--bevel-ground); border-color:var(--bevel-ink); }
152
+ .p-pager-gap { color:var(--bevel-muted); font-size:12px; }
153
+ .p-tree { border:1px solid var(--bevel-line-2); background:var(--bevel-surface); padding:8px; max-width:490px; }
154
+ .p-tree-head { padding:14px 12px; border-bottom:1px solid var(--bevel-line); margin-bottom:8px; }
155
+ .p-tree summary { padding:11px 10px; cursor:pointer; font-size:14px; }
156
+ .p-tree summary svg { margin:0 7px; color:var(--bevel-muted); }
157
+ .p-tree-children { margin-left:22px; border-left:1px solid var(--bevel-line); padding-left:8px; }
158
+ .p-tree-leaf { display:flex; align-items:center; gap:9px; width:100%; border:0; background:none; text-align:left; padding:11px 12px; font-size:13px; }
159
+ .p-tree-leaf span { flex:1; }
160
+ .p-tree-leaf.selected { background:var(--bevel-brass-soft); color:var(--bevel-brass); }
161
+ .p-tree-empty { padding:16px 35px; color:var(--bevel-muted); font-size:13px; }
162
+ .p-wizard { display:grid; grid-template-columns:190px 1fr; background:var(--bevel-surface); border:1px solid var(--bevel-line-2); }
163
+ .p-wizard-steps { border-right:1px solid var(--bevel-line); padding:24px 17px; }
164
+ .p-wizard-step { display:flex; gap:10px; padding:0 0 27px; color:var(--bevel-muted); }
165
+ .p-wizard-step>span { display:flex; align-items:center; justify-content:center; flex-shrink:0; width:22px; height:22px; border:1px solid var(--bevel-line-2); font:10px var(--bevel-font-mono); }
166
+ .p-wizard-step strong { display:block; font-size:12px; font-weight:500; }
167
+ .p-wizard-step small { font-size:10px; line-height:1.3; display:block; margin-top:4px; }
168
+ .p-wizard-step.current { color:var(--bevel-ink); }
169
+ .p-wizard-step.current>span { background:var(--bevel-ink); color:var(--bevel-ground); }
170
+ .p-wizard-step.done { color:var(--bevel-teal); }
171
+ .p-wizard-body { padding:27px; }
172
+ .p-toast-stage { display:flex; flex-direction:column; align-items:flex-end; padding:22px; background:var(--bevel-sunk); border:1px solid var(--bevel-line); min-height:350px; gap:12px; }
173
+ .p-toast { display:flex; align-items:flex-start; gap:12px; flex-wrap:wrap; width:425px; max-width:100%; padding:18px; background:var(--bevel-surface); border:1px solid var(--bevel-line-2); border-left:3px solid var(--bevel-brass); }
174
+ .p-toast.success { border-left-color:var(--bevel-teal); }
175
+ .p-toast.error { border-left-color:var(--bevel-ox); }
176
+ .p-toast-icon { padding-top:1px; }
177
+ .p-toast.success .p-toast-icon { color:var(--bevel-teal); }
178
+ .p-toast.error .p-toast-icon { color:var(--bevel-ox); }
179
+ .p-toast-body { flex:1; min-width:120px; }
180
+ .p-toast h3 { font-size:14px; }
181
+ .p-toast p { margin-top:5px; font-size:12px; color:var(--bevel-muted); }
182
+ .p-toast .p-icon-button { width:24px; height:24px; border:0; background:none; color:var(--bevel-muted); }
183
+ .p-text-action { padding:0; border:0; background:none; color:var(--bevel-ink); font-size:12px; text-decoration:underline; text-underline-offset:3px; margin-top:8px; }
184
+ .p-banner { display:flex; align-items:flex-start; flex-wrap:wrap; gap:16px; padding:20px; background:var(--bevel-brass-soft); border-top:2px solid var(--bevel-brass); }
185
+ .p-banner>div { flex:1; min-width:200px; }
186
+ .p-banner>span { color:var(--bevel-brass); }
187
+ .p-banner h3 { font-size:16px; }
188
+ .p-banner p { margin-top:6px; font-size:13px; color:var(--bevel-ink-2); }
189
+ .p-banner.resolved { background:var(--bevel-teal-soft); border-color:var(--bevel-teal); }
190
+ .p-banner.resolved>span { color:var(--bevel-teal); }
191
+ .p-save-status { display:flex; align-items:center; flex-wrap:wrap; gap:7px; font:10px var(--bevel-font-mono); color:var(--bevel-muted); }
192
+ .p-save-status.saved { color:var(--bevel-teal); }
193
+ .p-save-status.failed { color:var(--bevel-ox); }
194
+ .p-save-status .p-text-action { margin:0; }
195
+ .p-document-preview { margin:27px 0; padding:26px 0; border-top:1px solid var(--bevel-line); border-bottom:1px solid var(--bevel-line); }
196
+ .p-document-preview h3 { font:25px var(--bevel-font-serif); }
197
+ .p-document-preview p { margin-top:12px; font-size:14px; color:var(--bevel-muted); }
198
+ .p-status-key { display:flex; gap:8px; flex-wrap:wrap; }
199
+ .p-state-label { background:none; border:1px solid var(--bevel-line-2); padding:6px 12px; color:var(--bevel-muted); font:11px var(--bevel-font-mono); }
200
+ .p-state-label.active { color:var(--bevel-ink); border-color:var(--bevel-muted); }
201
+ .qc-stage { position:relative; overflow:hidden; line-height:0; min-width:0; }
202
+ .qc-stage img { width:100%; display:block; }
203
+ .qc-dim { position:absolute; inset:0; }
204
+ .qc-box { position:absolute; left:25%; top:12%; width:50%; aspect-ratio:1; border:1px solid var(--bevel-ox-ink); box-shadow:0 0 0 1000px rgb(0 0 0 / .5); }
205
+ .qc-box.free { left:8%; top:24%; width:82%; height:48%; aspect-ratio:auto; }
206
+ .qc-handle { position:absolute; width:12px; height:12px; border:2px solid var(--bevel-ink); background:var(--bevel-ox-ink); }
207
+ .qc-nw { left:-6px;top:-6px; }.qc-ne { right:-6px;top:-6px; }.qc-sw { left:-6px;bottom:-6px; }.qc-se { right:-6px;bottom:-6px; }
208
+ .qc-rule { position:absolute; opacity:.6; background:var(--bevel-ox-ink); }
209
+ .qc-rule.horizontal { width:100%;height:1px;left:0; }.qc-rule.vertical { width:1px;height:100%;top:0; }.qc-rule.horizontal.one { top:33.33%; }.qc-rule.horizontal.two { top:66.66%; }.qc-rule.vertical.one { left:33.33%; }.qc-rule.vertical.two { left:66.66%; }
210
+ .p-crop-size { position:absolute; bottom:10px; right:10px; padding:7px; color:var(--bevel-ox-ink); background:rgb(0 0 0 / .65); font:10px var(--bevel-font-mono); }
211
+ .p-code { margin:0; border:1px solid var(--bevel-line-2); background:var(--bevel-surface); }
212
+ .p-code figcaption { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:15px; padding:14px 17px; border-bottom:1px solid var(--bevel-line-2); }
213
+ .p-code figcaption>span { display:flex; gap:9px; align-items:center; font:12px var(--bevel-font-mono); }
214
+ .p-code pre { margin:0; padding:22px 0; overflow:auto; font:12px/2.15 var(--bevel-font-mono); background:var(--bevel-sunk); }
215
+ .p-code code { background:none; padding:0; font:inherit; }
216
+ .p-code-line { display:inline-block; min-width:100%; padding:0 20px 0 48px; position:relative; }
217
+ .p-code-line:before { content:attr(data-line); position:absolute;left:17px;color:var(--bevel-muted); }
218
+ .p-code pre.wrapped { white-space:pre-wrap; overflow-wrap:anywhere; }
219
+ .p-code footer { display:flex; justify-content:space-between; padding:10px 17px; font:10px var(--bevel-font-mono); color:var(--bevel-muted); border-top:1px solid var(--bevel-line); }
220
+ .p-diff { border:1px solid var(--bevel-line-2); background:var(--bevel-surface); overflow:hidden; }
221
+ .p-diff>header { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; padding:13px 16px; font:12px var(--bevel-font-mono); }
222
+ .p-diff-hunk { padding:9px 15px; color:var(--bevel-muted); background:var(--bevel-sunk); font:11px var(--bevel-font-mono); border-block:1px solid var(--bevel-line); }
223
+ .p-diff-line { display:flex; gap:12px; padding:10px 12px; font:11px/1.6 var(--bevel-font-mono); }
224
+ .p-diff-line>span:first-child { width:18px;text-align:right;color:var(--bevel-muted); }
225
+ .p-diff-line code { font:inherit; min-width:0; overflow-wrap:anywhere; }
226
+ .removed { background:var(--bevel-ox-soft); }
227
+ .added { background:var(--bevel-teal-soft); }
228
+ .removed mark { background:color-mix(in srgb,var(--bevel-ox) 22%,transparent);color:inherit; }
229
+ .added mark { background:color-mix(in srgb,var(--bevel-teal) 25%,transparent);color:inherit; }
230
+ .p-diff-split { display:grid;grid-template-columns:1fr 1fr; }
231
+ .p-diff-split section+section { border-left:1px solid var(--bevel-line-2); }
232
+ .p-diff-split h3 { font:10px var(--bevel-font-mono);text-transform:uppercase;padding:12px 16px;background:var(--bevel-sunk); }
233
+ .p-diff-split p { padding:15px;font-size:13px; }
234
+ .p-diff footer { padding:12px 16px;border-top:1px solid var(--bevel-line);font:10px var(--bevel-font-mono);color:var(--bevel-muted); }
235
+ .p-event { display:flex;align-items:flex-start;gap:15px;padding:17px 0;border-bottom:1px solid var(--bevel-line); }
236
+ .p-event>div { flex:1;min-width:0; }
237
+ .p-event h3 { font:500 14px var(--bevel-font-sans); }
238
+ .p-event p { font-size:12px;color:var(--bevel-muted);margin-top:5px; }
239
+ .p-event time { font:10px var(--bevel-font-mono);color:var(--bevel-muted);padding-top:3px; }
240
+ .p-stat-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--bevel-surface);border:1px solid var(--bevel-line-2); }
241
+ .p-stat { padding:25px 20px; }
242
+ .p-stat+.p-stat { border-left:1px solid var(--bevel-line-2); }
243
+ .p-stat strong { font:28px/1.4 var(--bevel-font-mono);letter-spacing:-.05em;display:block;margin:12px 0; }
244
+ .p-stat p { font-size:11px;color:var(--bevel-muted); }
245
+ .p-stat p.teal { color:var(--bevel-teal); }.p-stat p.ox { color:var(--bevel-ox); }
246
+ .p-stat-support { margin-top:20px;padding:23px;display:flex;align-items:center;gap:20px;border:1px solid var(--bevel-line); }
247
+ .p-stat-support>div { flex:1; }
248
+ .p-stat-support .mini { width:230px; }
249
+ .p-avatar-stack { display:flex;margin:30px 0;align-items:center;padding-left:4px; }
250
+ .p-avatar-stack>* { margin-left:-4px;border:3px solid var(--bevel-surface); }
251
+ .p-avatar-stack .p-avatar { width:44px;height:44px; }
252
+ .p-avatar-wrap { position:relative; }
253
+ .p-presence { position:absolute;right:0;bottom:0;width:9px;height:9px;background:var(--bevel-teal);border:2px solid var(--bevel-surface); }
254
+ .p-avatar-photo { width:50px;height:50px;object-fit:cover; }
255
+ .p-avatar-list { display:grid;gap:17px;border-top:1px solid var(--bevel-line);padding-top:23px; }
256
+ .p-chart { display:block;width:100%;margin:23px 0 7px;overflow:visible; }
257
+ .p-chart text { font:10px var(--bevel-font-mono);fill:var(--bevel-muted); }
258
+ .chart-rule { stroke:var(--bevel-line);stroke-width:1; }
259
+ .chart-bar { fill:var(--bevel-line-2); }.chart-bar.accent { fill:var(--bevel-brass); }
260
+ .chart-line { stroke:var(--bevel-brass);fill:none;stroke-width:2;stroke-linejoin:miter; }
261
+ .chart-point { fill:var(--bevel-surface);stroke:var(--bevel-brass);stroke-width:2; }
262
+ .p-chart.mini { margin:0; }
263
+ .p-chart-legend { display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font:10px var(--bevel-font-mono);color:var(--bevel-muted); }
264
+ .p-chart-legend i { display:inline-block;width:7px;height:7px;background:var(--bevel-brass);margin-right:6px; }
265
+ .p-spark-card { display:flex;align-items:center;gap:15px;margin:35px 0; }
266
+ .p-spark-card .mini { flex:1;min-width:0; }
267
+ .p-metric-number { font:36px var(--bevel-font-mono); }
268
+ .p-table-scroll { overflow:auto; }
269
+ .p-invoice-table { border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap;background:var(--bevel-surface); }
270
+ .p-invoice-table th { text-align:left;padding:13px 14px;font:10px var(--bevel-font-mono);text-transform:uppercase;letter-spacing:.07em;background:var(--bevel-sunk);border-bottom:1px solid var(--bevel-line-2);color:var(--bevel-muted); }
271
+ .p-invoice-table td { padding:17px 14px;border-bottom:1px solid var(--bevel-line); }
272
+ .p-invoice-table .number { text-align:right;font-family:var(--bevel-font-mono); }
273
+ .p-invoice-table input { width:90px;padding:6px;border:1px solid var(--bevel-brass);background:var(--bevel-surface);font:12px var(--bevel-font-mono); }
274
+ .p-invoice-table input[aria-invalid=true] { border-color:var(--bevel-ox);background:var(--bevel-ox-soft); }
275
+ .p-rules { display:grid;gap:12px;margin-top:23px; }
276
+ .p-filter-rule { display:grid;grid-template-columns:40px 1fr 1.25fr 1fr 33px;gap:8px;align-items:center; }
277
+ .p-filter-rule .p-select { padding:8px;font-size:12px; }
278
+ .p-filter-rule .bevel-input { padding:8px;font-size:12px;min-width:0;width:100%; }
279
+ .p-rule-word { font:10px var(--bevel-font-mono);color:var(--bevel-muted); }
280
+ .p-filter-summary { display:flex;gap:10px;padding:16px 20px;margin-top:16px;border:1px solid var(--bevel-line);font-size:12px;color:var(--bevel-muted); }
281
+ .p-column-layout { display:grid;grid-template-columns:230px minmax(0,1fr);gap:16px; }
282
+ .p-column-menu { padding:20px;background:var(--bevel-surface);border:1px solid var(--bevel-line-2); }
283
+ .p-column-choice { display:flex;align-items:center;gap:8px;padding:13px 0;border-bottom:1px solid var(--bevel-line); }
284
+ .p-column-choice .bevel-checkbox { flex:1;font-size:13px; }
285
+ .p-grip { color:var(--bevel-muted); }
286
+ .p-column-sample { min-width:0;border:1px solid var(--bevel-line-2); }
287
+ .p-cell-footer { display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:17px; }
288
+ .p-cell-footer output { flex-basis:100%; }
289
+ .p-split-panes { display:grid;grid-template-columns:minmax(0,var(--split)) 9px minmax(0,1fr);border:1px solid var(--bevel-line-2);background:var(--bevel-surface);min-height:305px; }
290
+ .p-pane { padding:20px 15px;min-width:0;overflow:auto; }
291
+ .p-pane:first-child { background:var(--bevel-sunk); }
292
+ .p-pane-divider { display:flex;align-items:center;justify-content:center;color:var(--bevel-muted);background:var(--bevel-face);border-inline:1px solid var(--bevel-line-2);font-size:14px; }
293
+ .p-pane-item { display:flex;gap:8px;align-items:center;margin:6px -6px;padding:11px 7px;font-size:12px; }
294
+ .p-pane-item.active { background:var(--bevel-surface);border-left:2px solid var(--bevel-brass); }
295
+ .p-pane pre { font:11px/1.7 var(--bevel-font-mono);white-space:pre-wrap;overflow-wrap:anywhere; }
296
+ .p-pane-detail { padding:24px; }
297
+ .p-pane-detail p { margin-top:14px;font-size:13px;color:var(--bevel-muted); }
298
+ .p-pane-adjust { display:flex;gap:15px;align-items:center;flex-wrap:wrap;margin-top:18px;font:11px var(--bevel-font-mono);color:var(--bevel-muted); }
299
+ .p-pane-adjust input { flex:1;min-width:100px;accent-color:var(--bevel-brass); }
300
+ .p-richclay-demo { position:relative;--richclay-surface:var(--bevel-surface);--richclay-surface-alt:var(--bevel-sunk);--richclay-text:var(--bevel-ink);--richclay-muted:var(--bevel-muted);--richclay-border:var(--bevel-line-2);--richclay-accent:var(--bevel-brass);--richclay-accent-ink:var(--bevel-ground);--richclay-focus:var(--bevel-brass);--richclay-danger:var(--bevel-ox);--richclay-radius:0;--richclay-shadow:none; }
301
+ .p-richclay-demo .richclay-toolbar { padding:9px;gap:5px;border-radius:0;border-color:var(--bevel-line-2);margin:0; }
302
+ .p-richclay-demo .richclay-button { border:2px solid;border-color:var(--bevel-edge-hi) var(--bevel-edge-lo) var(--bevel-edge-lo) var(--bevel-edge-hi);background:var(--bevel-face);border-radius:0;font:14px var(--bevel-font-sans); }
303
+ .p-richclay-demo .richclay-button[data-richclay-control=blockMenu] { padding:0 9px;gap:15px;font-size:12px; }
304
+ .p-richclay-demo .richclay-button[aria-pressed=true] { background:var(--bevel-face-in);border-color:var(--bevel-edge-in) var(--bevel-edge-in-hi) var(--bevel-edge-in-hi) var(--bevel-edge-in);box-shadow:none;color:var(--bevel-ink); }
305
+ .p-richclay-demo .richclay-button:disabled { opacity:.45; }
306
+ .p-richclay-demo .richclay-separator { display:block;width:1px;height:24px;background:var(--bevel-line-2);margin:0 5px; }
307
+ .p-richclay-demo .richclay-editor { padding:27px;border:1px solid var(--bevel-line-2);border-top:0;border-radius:0;min-height:220px;background:var(--bevel-surface); }
308
+ .p-richclay-demo .richclay-editor h2,.p-richclay-demo .richclay-inline h2 { font:29px var(--bevel-font-serif); }
309
+ .p-richclay-demo .richclay-editor p,.p-richclay-demo .richclay-inline p { font:15px/1.7 var(--bevel-font-sans);color:var(--bevel-ink-2); }
310
+ .p-richclay-demo .richclay-editor a { color:var(--bevel-brass); }
311
+ .p-richclay-demo .richclay-menu { position:relative;left:auto;top:auto;width:210px;margin:8px 0;background:var(--bevel-surface);border:1px solid var(--bevel-line-2);border-radius:0;box-shadow:none;padding:5px; }
312
+ .p-richclay-demo .richclay-menu-item { display:block;border:0;background:none;width:100%;text-align:left;padding:10px;font-size:13px; }
313
+ .p-richclay-demo .richclay-menu-item.is-active { background:var(--bevel-sunk); }
314
+ .p-richclay-demo .richclay-dialog { border:1px solid var(--bevel-line-2);border-radius:0;background:var(--bevel-surface);padding:20px;margin-top:14px; }
315
+ .p-richclay-demo .richclay-dialog label { display:grid;gap:6px;font-size:12px; }
316
+ .p-richclay-demo .richclay-input { padding:10px;border:1px solid var(--bevel-line-2);border-radius:0;background:var(--bevel-surface); }
317
+ .p-richclay-demo .richclay-primary,.p-richclay-demo .richclay-secondary { border-radius:0;font-size:13px; }
318
+ .p-richclay-demo .richclay-float { position:relative;left:auto;top:auto;z-index:auto;width:fit-content;margin:0 0 16px 25px; }
319
+ .p-richclay-demo .richclay-inline { border:1px dashed var(--bevel-brass);padding:25px;outline:0; }
320
+ .p-kanban { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px; }
321
+ .p-kanban-column { background:var(--bevel-sunk);border-top:2px solid var(--bevel-line-2);padding:12px;min-height:340px; }
322
+ .p-kanban-column>header { display:flex;justify-content:space-between;align-items:center;padding:4px 0 14px; }
323
+ .p-kanban-column>header h3 { font:12px var(--bevel-font-mono); }
324
+ .p-kanban-column>header span { font:10px var(--bevel-font-mono);color:var(--bevel-muted); }
325
+ .p-kanban-card { margin-bottom:11px;padding:14px;background:var(--bevel-surface);border:1px solid var(--bevel-line-2); }
326
+ .p-kanban-card.selected { border-color:var(--bevel-brass);box-shadow:inset 0 2px var(--bevel-brass); }
327
+ .p-kanban-card h4 { margin:14px 0 20px;font:500 14px/1.45 var(--bevel-font-sans); }
328
+ .p-kanban-card footer { display:flex;align-items:center;justify-content:space-between; }
329
+ .p-card-move { border:0;background:none;padding:5px;color:var(--bevel-muted); }
330
+ .p-kanban-empty { text-align:center;padding:50px 0;font-size:12px;color:var(--bevel-muted); }
331
+ .p-cms-context { display:grid;grid-template-columns:minmax(0,1fr) 330px;border:1px solid var(--bevel-line-2);background:var(--bevel-surface); }
332
+ .p-cms-page { padding:28px 20px;background:var(--bevel-sunk); }
333
+ .p-cms-page p { font-size:13px;color:var(--bevel-muted);margin-top:16px; }
334
+ .p-cms-page img { display:block;width:100%;margin-top:24px; }
335
+ .p-cms-context .hcms-shell { border-left:2px solid var(--bevel-ink);min-width:0; }
336
+ .hcms-shell-body { padding:22px; }
337
+ .hcms-shell-header { display:flex;justify-content:space-between;align-items:center;margin-bottom:22px; }
338
+ .hcms-shell-eyebrow { font:9px var(--bevel-font-mono);color:var(--bevel-brass);text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px; }
339
+ .hcms-shell-title { font-size:25px; }
340
+ .hcms-shell button { font:12px var(--bevel-font-sans);padding:6px 9px;border:2px solid;border-color:var(--bevel-edge-hi) var(--bevel-edge-lo) var(--bevel-edge-lo) var(--bevel-edge-hi);background:var(--bevel-face); }
341
+ .hcms-shell button:disabled { opacity:.5; }
342
+ .hcms-field { display:grid;gap:7px;margin-bottom:18px;min-width:0; }
343
+ .hcms-label { font-size:11px;font-weight:500; }
344
+ .hcms-shell textarea,.hcms-shell input { width:100%;min-width:0;font:13px/1.5 var(--bevel-font-sans);padding:8px;background:var(--bevel-surface);color:var(--bevel-ink);border:1px solid var(--bevel-line-2);border-radius:0; }
345
+ .hcms-object,.hcms-array { border-top:1px solid var(--bevel-line-2);padding-top:17px;margin-bottom:18px; }
346
+ .hcms-object-title,.hcms-array-title { font:10px var(--bevel-font-mono);text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px;color:var(--bevel-muted); }
347
+ .hcms-object-fields { border-left:1px solid var(--bevel-line-2);padding-left:13px; }
348
+ .hcms-card { display:flex;gap:9px;padding:12px;background:var(--bevel-sunk);border:1px solid var(--bevel-line-2);margin-bottom:8px; }
349
+ .hcms-drag-handle { color:var(--bevel-muted); }
350
+ .hcms-card-body { min-width:0;flex:1; }
351
+ .hcms-card .hcms-field { margin:0; }
352
+ .hcms-card-controls { display:flex;justify-content:flex-end;margin-top:8px; }
353
+ .hcms-upload figure { margin:0;position:relative; }
354
+ .hcms-upload img { display:block;width:100%;height:110px;object-fit:cover; }
355
+ .hcms-upload-clear { position:absolute;right:5px;top:5px; }
356
+ .hcms-error,.hcms-shell-error { color:var(--bevel-ox);font-size:11px; }
357
+ .hcms-shell-error { padding:10px;margin-bottom:18px;background:var(--bevel-ox-soft); }
358
+ .hcms-shell-footer { border-top:1px solid var(--bevel-line-2);padding-top:15px;display:flex;justify-content:flex-end; }
359
+ .p-crop-context { padding:20px;background:var(--bevel-sunk); }
360
+ .p-crop-actions { display:flex;flex-wrap:wrap;align-items:center;gap:15px;margin-top:20px; }
361
+ .qc-bar { display:flex;gap:8px;margin-left:auto; }
362
+ .qc-btn { padding:6px 12px;font:13px var(--bevel-font-sans);border:2px solid;border-color:var(--bevel-edge-hi) var(--bevel-edge-lo) var(--bevel-edge-lo) var(--bevel-edge-hi);background:var(--bevel-face);border-radius:0; }
363
+ .qc-btn-primary { background:var(--bevel-ink);color:var(--bevel-ground); }
364
+ @media(max-width:500px) {
365
+ .reference-stage { padding:18px; }
366
+ h1 { font-size:29px; }
367
+ .p-header { gap:12px; }
368
+ .p-columns { grid-template-columns:1fr; }
369
+ .p-panel { padding:18px; }
370
+ .p-scrim { padding:14px; }
371
+ .p-modal { padding:27px 22px; }
372
+ .p-modal h2 { font-size:27px; }
373
+ .p-drawer-ghost { display:none; }
374
+ .p-setting { gap:14px; }
375
+ .p-sidebar { width:145px; }
376
+ .p-sidebar-brand { padding:16px 10px; }
377
+ .p-app-content { padding:20px 13px; }
378
+ .p-nav-item { font-size:12px;gap:6px; }
379
+ .p-sidebar footer { padding:12px 9px; }
380
+ .p-wizard { grid-template-columns:1fr; }
381
+ .p-wizard-steps { display:flex;gap:12px;border-right:0;border-bottom:1px solid var(--bevel-line);padding:16px; }
382
+ .p-wizard-step { padding:0;gap:6px;flex:1; }
383
+ .p-wizard-step small { display:none; }
384
+ .p-wizard-step strong { font-size:10px; }
385
+ .p-wizard-body { padding:20px; }
386
+ .p-toast-stage { padding:12px; }
387
+ .p-banner>div { min-width:150px; }
388
+ .p-stat-grid { grid-template-columns:1fr; }
389
+ .p-stat+.p-stat { border-left:0;border-top:1px solid var(--bevel-line-2); }
390
+ .p-stat { padding:19px; }
391
+ .p-stat strong { margin:5px 0;font-size:28px; }
392
+ .p-stat-support { flex-direction:column;align-items:stretch; }
393
+ .p-stat-support .mini { width:100%; }
394
+ .p-diff-split { grid-template-columns:1fr; }
395
+ .p-diff-split section+section { border-left:0;border-top:1px solid var(--bevel-line-2); }
396
+ .p-filter-rule { grid-template-columns:1fr 1fr 33px; }
397
+ .p-filter-rule .p-rule-word { grid-column:1/-1; }
398
+ .p-filter-rule input { grid-column:1/3; }
399
+ .p-filter-rule .p-icon-button { grid-column:3;grid-row:2/4; }
400
+ .p-column-layout { grid-template-columns:1fr; }
401
+ .p-pane-detail { padding:18px 12px; }
402
+ .p-pane-detail h2 { font-size:23px; }
403
+ .p-pane-item { font-size:10px; }
404
+ .p-pane { padding:16px 9px; }
405
+ .p-kanban { grid-template-columns:1fr; }
406
+ .p-kanban-column { min-height:150px; }
407
+ .p-cms-context { grid-template-columns:1fr; }
408
+ .p-cms-page { display:none; }
409
+ .p-cms-context .hcms-shell { border-left:0; }
410
+ .p-crop-context { padding:10px; }
411
+ .p-richclay-demo .richclay-float { margin-left:0; }
412
+ }
413
+
414
+ .p-menu-area > .p-menu { margin-left:auto; }
415
+ .p-menu-area > .p-menu + div { text-align:right; }
416
+ .p-popconfirm { margin-left:auto; }
@@ -0,0 +1,148 @@
1
+ from pathlib import Path
2
+ from bs4 import BeautifulSoup
3
+ from copy import deepcopy
4
+ import json
5
+ import re
6
+ import shutil
7
+ from kanban import kanban, icon
8
+
9
+ ROOT = Path(__file__).resolve().parent.parent
10
+ HERE = ROOT / 'parent'
11
+ MANIFEST = json.loads((ROOT / 'manifest.json').read_text())
12
+ FEEDBACK = {a['key']: a for a in json.loads((ROOT / 'feedback.json').read_text())['answers']}
13
+ CLOSE_SVG = re.search(r'const DEFAULT_CLOSE_SVG = `([^`]+)`', (ROOT / 'sources/hyperclayjs/src/ui/theModal.js').read_text()).group(1)
14
+ (ROOT / 'sources/diagonal-close.svg').write_text(CLOSE_SVG + '\n')
15
+
16
+ def fragment(html):
17
+ return BeautifulSoup(html, 'html.parser')
18
+
19
+ def replace_contents(node, html):
20
+ node.clear()
21
+ for child in list(fragment(html).contents):
22
+ node.append(child)
23
+
24
+ def append_html(node, html):
25
+ for child in list(fragment(html).contents):
26
+ node.append(child)
27
+
28
+ def close_button(node):
29
+ node['class'] = ['r-diagonal-close']
30
+ node['aria-label'] = 'Close details'
31
+ replace_contents(node, 'EXACT_DIAGONAL_CLOSE_SVG')
32
+
33
+ def correct(soup, component):
34
+ key = component['id']
35
+ if key == 'modal':
36
+ for node in soup.select('.micromodal__close'):
37
+ replace_contents(node, 'EXACT_DIAGONAL_CLOSE_SVG')
38
+ elif key == 'drawer':
39
+ for panel in soup.select('.drawer-panel'):
40
+ node = panel.select_one('header button')
41
+ close_button(node)
42
+ panel.insert(0, node.extract())
43
+ elif key == 'split-button':
44
+ original = {s['data-ref-state']:deepcopy(s) for s in soup.select('[data-ref-state]')}
45
+ for s in soup.select('[data-ref-state]'): s.decompose()
46
+ for state in component['states']:
47
+ base = 'disabled' if state == 'disabled' else 'open' if 'open' in state else 'default'
48
+ s = deepcopy(original[base]);s['data-ref-state']=state
49
+ group = s.select_one('.p-split-button')
50
+ divider = 'inset' if 'inset' in state else 'line'
51
+ group['data-divider'] = divider
52
+ for button in group.select('button'):
53
+ button['class']=[c for c in button.get('class',[]) if c != 'bevel-button--primary']
54
+ label=fragment(f'<p class="r-split-label">{"Slight inset bevel" if divider=="inset" else "Single dark divider"}</p>')
55
+ s.select_one('.p-panel').insert(0,label)
56
+ soup.body.append(s)
57
+ elif key == 'sidebar-nav':
58
+ for rail in soup.select('.p-sidebar'):
59
+ toggle=rail.select_one('.p-sidebar-toggle')
60
+ if toggle: toggle.decompose()
61
+ compact='compact' in rail.get('class',[])
62
+ arrow='M20 12H4m6-6-6 6 6 6' if not compact else 'M4 12h16m-6-6 6 6-6 6'
63
+ append_html(rail.select_one('.p-sidebar-brand'), f'<button class="p-icon-button r-collapse" aria-label="{"Expand" if compact else "Collapse"} sidebar"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="{arrow}"/></svg></button>')
64
+ footer=rail.select_one('footer');footer['class']=['r-identity']
65
+ replace_contents(footer,'<span class="r-avatar" aria-label="Jules Park">JP</span><span><strong>Jules Park</strong><small>Owner</small></span>')
66
+ elif key == 'app-toolbar':
67
+ for toolbar in soup.select('.toolbar'):
68
+ for node in toolbar.select('button'):
69
+ label=node.get('aria-label','New note')
70
+ name={'New note':'plus','List view':'list','Grid view':'grid','More toolbar actions':'more'}[label]
71
+ node['class']=[c for c in node.get('class',[]) if c!='bevel-button--primary']
72
+ node['aria-label']=label;node['title']=label
73
+ replace_contents(node,icon(name,18))
74
+ elif key == 'wizard-shell':
75
+ for s in soup.select('[data-ref-state]'):
76
+ for i,step in enumerate(s.select('.wizard-step')):
77
+ step.select_one('b').string=str(i+1).zfill(2)
78
+ elif key == 'inline-edit':
79
+ for s in soup.select('[data-ref-state]'):
80
+ state=s['data-ref-state']
81
+ if state in ['editing','error']:
82
+ value=s.select_one('[data-inline-value]')
83
+ value.find_parent('label').replace_with(fragment('<h2 class="r-inline-name richclay-inline richclay-active richclay-focused" data-richclay-active="true" data-richclay-options="singleLine" aria-invalid="'+('true' if state=='error' else 'false')+'">'+('<span class="r-placeholder">Project name</span>' if state=='error' else 'Field notes')+'</h2>'))
84
+ note=s.select_one('.note')
85
+ if note:note.string='Edit the title in place.'
86
+ for label in s.select('.actions .bevel-button__label'):
87
+ if label.get_text()=='Save name':label.string='Done'
88
+ return soup
89
+
90
+ def saved():
91
+ return '''<section data-ref-state="saved"><main class="r-saved-page"><header><span class="p-eyebrow">NORTHSTAR STUDIO / FIELD NOTES</span><span class="p-badge">Draft</span></header><article><span class="p-eyebrow">FIELD NOTE / 001</span><h1>A place for good work.</h1><p>Keep the useful things close. Field notes brings the documents, decisions and small details of a project into one place.</p><p>A little room to think. A clear place to begin.</p></article><span class="r-saved-chip" role="status">Saved</span></main></section>'''
92
+
93
+ def html_shell(name, key, content):
94
+ return fragment(f'<!doctype html><html lang="en" class="light"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>{name} · Parent</title></head><body data-component="{key}">{content}</body></html>')
95
+
96
+ def clean(soup, component, seat):
97
+ for script in soup.select('script'):script.decompose()
98
+ for css in soup.select('link[rel="stylesheet"]'):css.decompose()
99
+ for selector in ['[data-part="reference-note"]','.local-result','output','.modal-reopen']:
100
+ for node in soup.select(selector):node.decompose()
101
+ for node in soup.select('[contenteditable]'):del node['contenteditable']
102
+ for node in soup.select('[data-ref-next]'):del node['data-ref-next']
103
+ replacements={
104
+ 'Local fixture pagination':'Invoice pagination',
105
+ 'Invoices / Local cell editing':'Invoices / Amount',
106
+ 'Press Save to update this local example.':'Edit the title in place.',
107
+ 'Invitations are simulated and are never sent.':'Only invited people can join this workspace.',
108
+ 'Authored Richclay structure. Formatting controls simulate selected states; this is not an editing engine.':'',
109
+ 'Choose the amount on INV-0432 to edit it here.':'Invoice amounts can be edited in place.',
110
+ 'Expand folders or select a file. Reparenting is not enabled in this reference.':'',
111
+ 'Working keyboard and range resizing · the grip is a visual reference':'',
112
+ }
113
+ for t in soup.find_all(string=True):
114
+ for old,new in replacements.items():
115
+ if old in str(t):t.replace_with(str(t).replace(old,new));break
116
+ for node in soup.select('.p-caption'):
117
+ if any(x in node.get_text().lower() for x in ['working','simulated','reference','local','supplied']):node.decompose()
118
+ for i,s in enumerate(soup.select('[data-ref-state]')):
119
+ s['inert']=''
120
+ if i:s['hidden']=''
121
+ elif s.has_attr('hidden'):del s['hidden']
122
+ soup.body['data-component']=component['id']
123
+ soup.body['data-reference-phase']='static'
124
+ soup.body['data-selected-source']=seat
125
+ soup.title.string=f"{component['name']} · Parent corrected · Bevel"
126
+ for href in ['../../baseline/bevel-fonts.css','../../baseline/bevel.css',f'../base-{seat}.css','../refinement.css']:
127
+ append_html(soup.head,f'<link rel="stylesheet" href="{href}">')
128
+ if component['id']=='kanban-board':append_html(soup.head,'<link rel="stylesheet" href="../kanban.css">')
129
+ append_html(soup.body,'<footer class="r-static-note">Static UI reference · Use the preview controls to compare states.</footer><script src="../../fixtures/static-host.js"></script>')
130
+ result=str(soup).replace('viewbox=','viewBox=').replace('preserveaspectratio=','preserveAspectRatio=').replace('gradientunits=','gradientUnits=').replace('markerwidth=','markerWidth=').replace('markerheight=','markerHeight=')
131
+ return result.replace('EXACT_DIAGONAL_CLOSE_SVG',CLOSE_SVG)
132
+
133
+ for seat in ['parent','astra']:
134
+ shutil.copy2(ROOT/'originals'/seat/'reference.css',HERE/f'base-{seat}.css')
135
+ coverage={'seat':'parent','phase':'static','components':[],'contexts':[]}
136
+ for c in MANIFEST['components']+MANIFEST['contexts']:
137
+ key=c['id'];a=FEEDBACK.get(key)
138
+ seat=a['picked'][0] if a else ('astra' if key=='context-hypercms' else 'parent')
139
+ if seat=='iterate':seat='parent'
140
+ if key=='save-status-indicator':soup=html_shell(c['name'],key,saved())
141
+ elif key=='kanban-board':soup=html_shell(c['name'],key,''.join(f'<section data-ref-state="{s}">{kanban(s)}</section>' for s in c['states']))
142
+ else:soup=correct(fragment((ROOT/'originals'/seat/'components'/f'{key}.html').read_text()),c)
143
+ (HERE/'components'/f'{key}.html').write_text(clean(soup,c,seat))
144
+ coverage['components' if a else 'contexts'].append({'id':key,'states':c['states'],'source':seat if a and a['picked'][0]!='iterate' else 'new iteration','file':f'components/{key}.html','behavior':'static','feedback':a['comment'] if a else ''})
145
+ (HERE/'coverage.json').write_text(json.dumps(coverage,indent=2)+'\n')
146
+ links=''.join(f'<a href="components/{c["id"]}.html">{c["name"]}<small>{len(c["states"])} visual states</small></a>' for c in MANIFEST['components'])
147
+ (HERE/'index.html').write_text('<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Parent corrected UI · Bevel</title><link rel="stylesheet" href="../baseline/bevel-fonts.css"><link rel="stylesheet" href="../baseline/bevel.css"><style>body{max-width:1000px;margin:40px auto;padding:24px;font:16px var(--bevel-font-sans)}h1{font:42px var(--bevel-font-serif)}nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px}a{border:1px solid var(--bevel-line-2);padding:16px;color:var(--bevel-ink);text-decoration:none}small{display:block;color:var(--bevel-muted);font:11px var(--bevel-font-mono);margin-top:8px}</style><h1>Bevel, shaped by your choices.</h1><p>33 corrected static components. Application behavior comes after visual selection.</p><nav>'+links+'</nav></html>')
148
+ print('Parent: 33 static components, 2 preserved product contexts, '+str(sum(len(c['states']) for c in MANIFEST['components']))+' component states.')
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html>
2
+ <html data-theme="light" lang="en"><head><meta charset="utf-8"/><meta content="width=device-width,initial-scale=1" name="viewport"/><title>Activity feed · Parent corrected · Bevel</title><link href="../../baseline/bevel-fonts.css" rel="stylesheet"/><link href="../../baseline/bevel.css" rel="stylesheet"/><link href="../base-astra.css" rel="stylesheet"/><link href="../refinement.css" rel="stylesheet"/></head><body data-component="activity-feed" data-reference-phase="static" data-selected-source="astra"><section data-ref-state="recent" inert=""><div class="specimen"><header data-part="heading"><div class="eyebrow">NORTHSTAR STUDIO / FIELD NOTES</div><h1>The work, as it happens.</h1><p>Small changes add up to something good.</p></header><div class="eyebrow">TODAY / SEPTEMBER 07</div><div class="timeline"><article class="event"><span class="avatar">MC</span><p><strong>Mira Chen</strong> updated <strong>A place for good work</strong></p><time>10:42</time><p class="muted" style="font-size:12px;margin-top:8px">Clarified the introduction and added the field guide.</p></article><article class="event"><span class="avatar">AR</span><p><strong>Alex Rivera</strong> joined <strong>Field notes</strong></p><time>10:18</time><p class="muted" style="font-size:12px;margin-top:8px">Invited by Jules Park.</p></article><article class="event"><span class="avatar">SP</span><p><strong>Sam Patel</strong> added <strong>workspace.jpg</strong></p><time>09:56</time><p class="muted" style="font-size:12px;margin-top:8px">Project cover · 184 KB</p></article></div><button class="bevel-button bevel-button--quiet" type="button"><span class="bevel-button__label">Show yesterday</span></button></div></section><section data-ref-state="expanded" hidden="" inert=""><div class="specimen"><header data-part="heading"><div class="eyebrow">NORTHSTAR STUDIO / FIELD NOTES</div><h1>The work, as it happens.</h1><p>Small changes add up to something good.</p></header><div class="eyebrow">TODAY / SEPTEMBER 07</div><div class="timeline"><article class="event"><span class="avatar">MC</span><p><strong>Mira Chen</strong> updated <strong>A place for good work</strong></p><time>10:42</time><p class="muted" style="font-size:12px;margin-top:8px">Clarified the introduction and added the field guide.</p></article><article class="event"><span class="avatar">AR</span><p><strong>Alex Rivera</strong> joined <strong>Field notes</strong></p><time>10:18</time><p class="muted" style="font-size:12px;margin-top:8px">Invited by Jules Park.</p></article><article class="event"><span class="avatar">SP</span><p><strong>Sam Patel</strong> added <strong>workspace.jpg</strong></p><time>09:56</time><p class="muted" style="font-size:12px;margin-top:8px">Project cover · 184 KB</p></article></div><div class="eyebrow">YESTERDAY / SEPTEMBER 06</div><div class="timeline"><article class="event"><span class="avatar alt">JP</span><p><strong>Jules Park</strong> created <strong>Field notes</strong></p><time>16:32</time></article></div></div></section><footer class="r-static-note">Static UI reference · Use the preview controls to compare states.</footer><script src="../../fixtures/static-host.js"></script></body></html>
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html>
2
+ <html data-theme="light" lang="en"><head><meta charset="utf-8"/><meta content="width=device-width,initial-scale=1" name="viewport"/><title>App toolbar · Parent corrected · Bevel</title><link href="../../baseline/bevel-fonts.css" rel="stylesheet"/><link href="../../baseline/bevel.css" rel="stylesheet"/><link href="../base-astra.css" rel="stylesheet"/><link href="../refinement.css" rel="stylesheet"/></head><body data-component="app-toolbar" data-reference-phase="static" data-selected-source="astra"><section data-ref-state="default" inert=""><div class="specimen"><header data-part="heading"><div class="eyebrow">NORTHSTAR STUDIO / FIELD NOTES</div><h1>The tools, close at hand.</h1><p>Field notes / Documents</p></header><div class="toolbar" data-part="toolbar"><button aria-label="New note" class="bevel-button" data-action="New note prepared locally." title="New note" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M12 5v14M5 12h14"></path></svg></button><span class="toolbar-sep"></span><button aria-label="List view" aria-pressed="true" class="bevel-button" data-toggle="" title="List view" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M8 5h13M8 12h13M8 19h13M3 5h1M3 12h1M3 19h1"></path></svg></button><button aria-label="Grid view" aria-pressed="false" class="bevel-button" data-toggle="" title="Grid view" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M3 3h7v7H3ZM14 3h7v7h-7ZM3 14h7v7H3ZM14 14h7v7h-7Z"></path></svg></button><div class="spacer"></div><input aria-label="Search notes" class="bevel-input bevel-input--small" placeholder="Search notes…" type="search"/><button aria-label="More toolbar actions" class="bevel-button" title="More toolbar actions" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M5 12h1m5 0h1m5 0h1"></path></svg></button></div><div class="rule row between"><strong>All documents</strong><span class="mono muted" style="font-size:11px">12 NOTES</span></div><div class="listrow"><span>▤</span><div><strong>A place for good work</strong><br/><small>Mira Chen · Edited today</small></div></div><div class="listrow"><span>▤</span><div><strong>The field guide</strong><br/><small>Sam Patel · Edited yesterday</small></div></div></div></section><section data-ref-state="overflow" hidden="" inert=""><div class="specimen"><header data-part="heading"><div class="eyebrow">NORTHSTAR STUDIO / FIELD NOTES</div><h1>The tools, close at hand.</h1><p>Field notes / Documents</p></header><div class="toolbar" data-part="toolbar"><button aria-label="New note" class="bevel-button" data-action="New note prepared locally." title="New note" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M12 5v14M5 12h14"></path></svg></button><span class="toolbar-sep"></span><button aria-label="List view" aria-pressed="true" class="bevel-button" data-toggle="" title="List view" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M8 5h13M8 12h13M8 19h13M3 5h1M3 12h1M3 19h1"></path></svg></button><button aria-label="Grid view" aria-pressed="false" class="bevel-button" data-toggle="" title="Grid view" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M3 3h7v7H3ZM14 3h7v7h-7ZM3 14h7v7H3ZM14 14h7v7h-7Z"></path></svg></button><div class="spacer"></div><input aria-label="Search notes" class="bevel-input bevel-input--small" placeholder="Search notes…" type="search"/><button aria-label="More toolbar actions" class="bevel-button" title="More toolbar actions" type="button"><svg aria-hidden="true" fill="none" height="18" stroke="currentColor" stroke-linecap="square" stroke-linejoin="miter" stroke-width="1.6" viewBox="0 0 24 24" width="18"><path d="M5 12h1m5 0h1m5 0h1"></path></svg></button></div><div style="display:flex;justify-content:flex-end;margin-top:6px"><div class="menu"><button data-action="Sort by last edited selected locally">Sort by last edited</button><button data-action="Show archived selected locally">Show archived</button><button data-action="Export selection selected locally">Export selection</button></div></div></div></section><footer class="r-static-note">Static UI reference · Use the preview controls to compare states.</footer><script src="../../fixtures/static-host.js"></script></body></html>