@softov/scena 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/controls/command.d.ts +18 -0
  4. package/dist/controls/command.js +150 -0
  5. package/dist/controls/events.d.ts +3 -0
  6. package/dist/controls/events.js +43 -0
  7. package/dist/controls/index.d.ts +10 -0
  8. package/dist/controls/index.js +10 -0
  9. package/dist/controls/keybinding.d.ts +9 -0
  10. package/dist/controls/keybinding.js +94 -0
  11. package/dist/controls/layout.d.ts +16 -0
  12. package/dist/controls/layout.js +201 -0
  13. package/dist/controls/manifest.d.ts +21 -0
  14. package/dist/controls/manifest.js +219 -0
  15. package/dist/controls/session.d.ts +16 -0
  16. package/dist/controls/session.js +95 -0
  17. package/dist/controls/shell.d.ts +8 -0
  18. package/dist/controls/shell.js +48 -0
  19. package/dist/controls/storage/layout-local.d.ts +6 -0
  20. package/dist/controls/storage/layout-local.js +47 -0
  21. package/dist/controls/storage/session-local.d.ts +5 -0
  22. package/dist/controls/storage/session-local.js +38 -0
  23. package/dist/controls/when.d.ts +7 -0
  24. package/dist/controls/when.js +226 -0
  25. package/dist/converters/a2ui-v0.10.d.ts +23 -0
  26. package/dist/converters/a2ui-v0.10.js +136 -0
  27. package/dist/converters/index.d.ts +1 -0
  28. package/dist/converters/index.js +1 -0
  29. package/dist/core/backends/modus-backend.d.ts +13 -0
  30. package/dist/core/backends/modus-backend.js +115 -0
  31. package/dist/core/backends/storage-backend.d.ts +7 -0
  32. package/dist/core/backends/storage-backend.js +73 -0
  33. package/dist/core/backends/yjs-backend.d.ts +3 -0
  34. package/dist/core/backends/yjs-backend.js +44 -0
  35. package/dist/core/binding-resolver.d.ts +7 -0
  36. package/dist/core/binding-resolver.js +106 -0
  37. package/dist/core/component-graph.d.ts +6 -0
  38. package/dist/core/component-graph.js +77 -0
  39. package/dist/core/component-registry.d.ts +7 -0
  40. package/dist/core/component-registry.js +87 -0
  41. package/dist/core/computed-dsl.d.ts +2 -0
  42. package/dist/core/computed-dsl.js +267 -0
  43. package/dist/core/converter-registry.d.ts +2 -0
  44. package/dist/core/converter-registry.js +37 -0
  45. package/dist/core/disposable.d.ts +3 -0
  46. package/dist/core/disposable.js +19 -0
  47. package/dist/core/dynamic-resolver.d.ts +12 -0
  48. package/dist/core/dynamic-resolver.js +134 -0
  49. package/dist/core/index.d.ts +44 -0
  50. package/dist/core/index.js +48 -0
  51. package/dist/core/label.d.ts +2 -0
  52. package/dist/core/label.js +14 -0
  53. package/dist/core/mount-menu.d.ts +2 -0
  54. package/dist/core/mount-menu.js +23 -0
  55. package/dist/core/mount-surface.d.ts +15 -0
  56. package/dist/core/mount-surface.js +214 -0
  57. package/dist/core/path-resolver.d.ts +14 -0
  58. package/dist/core/path-resolver.js +169 -0
  59. package/dist/core/permissions.d.ts +2 -0
  60. package/dist/core/permissions.js +50 -0
  61. package/dist/core/reactive-store.d.ts +17 -0
  62. package/dist/core/reactive-store.js +496 -0
  63. package/dist/core/scena.d.ts +2 -0
  64. package/dist/core/scena.js +115 -0
  65. package/dist/core/surface-presentation.d.ts +6 -0
  66. package/dist/core/surface-presentation.js +12 -0
  67. package/dist/i18n/i18n-backend.d.ts +2 -0
  68. package/dist/i18n/i18n-backend.js +35 -0
  69. package/dist/i18n/registry.d.ts +32 -0
  70. package/dist/i18n/registry.js +200 -0
  71. package/dist/porta/Limen.css +50 -0
  72. package/dist/porta/Limen.d.ts +16 -0
  73. package/dist/porta/Limen.js +14 -0
  74. package/dist/porta/PortaContext.d.ts +10 -0
  75. package/dist/porta/PortaContext.js +20 -0
  76. package/dist/porta/PortaLock.css +14 -0
  77. package/dist/porta/PortaLock.d.ts +10 -0
  78. package/dist/porta/PortaLock.js +13 -0
  79. package/dist/porta/SigillumGate.d.ts +8 -0
  80. package/dist/porta/SigillumGate.js +7 -0
  81. package/dist/porta/commands.d.ts +3 -0
  82. package/dist/porta/commands.js +125 -0
  83. package/dist/porta/index.d.ts +18 -0
  84. package/dist/porta/index.js +22 -0
  85. package/dist/porta/login-form.block.d.ts +2 -0
  86. package/dist/porta/login-form.block.js +7 -0
  87. package/dist/porta/match.d.ts +2 -0
  88. package/dist/porta/match.js +20 -0
  89. package/dist/porta/provider.d.ts +59 -0
  90. package/dist/porta/provider.js +1 -0
  91. package/dist/porta/providers/examples/google-oauth.d.ts +6 -0
  92. package/dist/porta/providers/examples/google-oauth.js +21 -0
  93. package/dist/porta/providers/examples/index.d.ts +6 -0
  94. package/dist/porta/providers/examples/index.js +3 -0
  95. package/dist/porta/providers/examples/magic-link.d.ts +8 -0
  96. package/dist/porta/providers/examples/magic-link.js +31 -0
  97. package/dist/porta/providers/examples/sms-otp.d.ts +9 -0
  98. package/dist/porta/providers/examples/sms-otp.js +31 -0
  99. package/dist/porta/providers/password.d.ts +12 -0
  100. package/dist/porta/providers/password.js +46 -0
  101. package/dist/porta/register-blocks.d.ts +3 -0
  102. package/dist/porta/register-blocks.js +31 -0
  103. package/dist/porta/register.d.ts +15 -0
  104. package/dist/porta/register.js +31 -0
  105. package/dist/porta/sigillum.d.ts +19 -0
  106. package/dist/porta/sigillum.js +41 -0
  107. package/dist/react/DefaultShell.d.ts +1 -0
  108. package/dist/react/DefaultShell.js +37 -0
  109. package/dist/react/Scena.d.ts +9 -0
  110. package/dist/react/Scena.js +20 -0
  111. package/dist/react/ScenaProvider.d.ts +8 -0
  112. package/dist/react/ScenaProvider.js +13 -0
  113. package/dist/react/ShellSplitter.d.ts +13 -0
  114. package/dist/react/ShellSplitter.js +88 -0
  115. package/dist/react/SurfaceArea.d.ts +13 -0
  116. package/dist/react/SurfaceArea.js +75 -0
  117. package/dist/react/Translate.d.ts +8 -0
  118. package/dist/react/Translate.js +10 -0
  119. package/dist/react/ViewMount.d.ts +12 -0
  120. package/dist/react/ViewMount.js +268 -0
  121. package/dist/react/core.d.ts +6 -0
  122. package/dist/react/core.js +10 -0
  123. package/dist/react/hooks/useCommand.d.ts +1 -0
  124. package/dist/react/hooks/useCommand.js +6 -0
  125. package/dist/react/hooks/useI18n.d.ts +9 -0
  126. package/dist/react/hooks/useI18n.js +16 -0
  127. package/dist/react/hooks/useLabel.d.ts +2 -0
  128. package/dist/react/hooks/useLabel.js +19 -0
  129. package/dist/react/hooks/useLayout.d.ts +2 -0
  130. package/dist/react/hooks/useLayout.js +10 -0
  131. package/dist/react/hooks/useMounts.d.ts +2 -0
  132. package/dist/react/hooks/useMounts.js +17 -0
  133. package/dist/react/hooks/useStore.d.ts +3 -0
  134. package/dist/react/hooks/useStore.js +40 -0
  135. package/dist/react/hooks/useStoreLabel.d.ts +3 -0
  136. package/dist/react/hooks/useStoreLabel.js +25 -0
  137. package/dist/react/hooks/useSurfacePresentation.d.ts +4 -0
  138. package/dist/react/hooks/useSurfacePresentation.js +16 -0
  139. package/dist/react/index.d.ts +20 -0
  140. package/dist/react/index.js +20 -0
  141. package/dist/react/mount-context.d.ts +8 -0
  142. package/dist/react/mount-context.js +20 -0
  143. package/dist/react/useSurfaceResize.d.ts +39 -0
  144. package/dist/react/useSurfaceResize.js +135 -0
  145. package/dist/runtime/args-schema.d.ts +11 -0
  146. package/dist/runtime/args-schema.js +45 -0
  147. package/dist/runtime/builtins.d.ts +3 -0
  148. package/dist/runtime/builtins.js +193 -0
  149. package/dist/runtime/client-handlers.d.ts +3 -0
  150. package/dist/runtime/client-handlers.js +19 -0
  151. package/dist/runtime/in-memory-socket.d.ts +7 -0
  152. package/dist/runtime/in-memory-socket.js +53 -0
  153. package/dist/runtime/index.d.ts +10 -0
  154. package/dist/runtime/index.js +7 -0
  155. package/dist/runtime/layout-commands.d.ts +5 -0
  156. package/dist/runtime/layout-commands.js +548 -0
  157. package/dist/runtime/opener-commands.d.ts +17 -0
  158. package/dist/runtime/opener-commands.js +96 -0
  159. package/dist/runtime/surface-bridge.d.ts +15 -0
  160. package/dist/runtime/surface-bridge.js +116 -0
  161. package/dist/styles/bar.css +155 -0
  162. package/dist/styles/base.css +285 -0
  163. package/dist/styles/geometry.css +32 -0
  164. package/dist/styles/index.d.ts +29 -0
  165. package/dist/styles/index.js +109 -0
  166. package/dist/styles/scrollbar.css +45 -0
  167. package/dist/styles/surface.css +179 -0
  168. package/dist/styles/theme.css +3 -0
  169. package/dist/styles/themes/dark.css +30 -0
  170. package/dist/styles/themes/light.css +1 -0
  171. package/dist/styles/themes/tokens.css +222 -0
  172. package/dist/types/binding-resolver.d.ts +30 -0
  173. package/dist/types/binding-resolver.js +1 -0
  174. package/dist/types/colors.d.ts +7 -0
  175. package/dist/types/colors.js +59 -0
  176. package/dist/types/command.d.ts +62 -0
  177. package/dist/types/command.js +1 -0
  178. package/dist/types/component-graph.d.ts +72 -0
  179. package/dist/types/component-graph.js +40 -0
  180. package/dist/types/component-registry.d.ts +70 -0
  181. package/dist/types/component-registry.js +1 -0
  182. package/dist/types/converter-registry.d.ts +17 -0
  183. package/dist/types/converter-registry.js +1 -0
  184. package/dist/types/disposable.d.ts +3 -0
  185. package/dist/types/disposable.js +1 -0
  186. package/dist/types/events.d.ts +75 -0
  187. package/dist/types/events.js +1 -0
  188. package/dist/types/host.d.ts +50 -0
  189. package/dist/types/host.js +1 -0
  190. package/dist/types/index.d.ts +23 -0
  191. package/dist/types/index.js +23 -0
  192. package/dist/types/keybinding.d.ts +36 -0
  193. package/dist/types/keybinding.js +1 -0
  194. package/dist/types/label.d.ts +9 -0
  195. package/dist/types/label.js +1 -0
  196. package/dist/types/layout.d.ts +117 -0
  197. package/dist/types/layout.js +1 -0
  198. package/dist/types/manifest.d.ts +152 -0
  199. package/dist/types/manifest.js +1 -0
  200. package/dist/types/mount-menu.d.ts +8 -0
  201. package/dist/types/mount-menu.js +1 -0
  202. package/dist/types/mount-surface.d.ts +87 -0
  203. package/dist/types/mount-surface.js +1 -0
  204. package/dist/types/permissions.d.ts +18 -0
  205. package/dist/types/permissions.js +1 -0
  206. package/dist/types/query.d.ts +34 -0
  207. package/dist/types/query.js +7 -0
  208. package/dist/types/reactive-store.d.ts +39 -0
  209. package/dist/types/reactive-store.js +1 -0
  210. package/dist/types/scena.d.ts +53 -0
  211. package/dist/types/scena.js +1 -0
  212. package/dist/types/scope-backend.d.ts +16 -0
  213. package/dist/types/scope-backend.js +1 -0
  214. package/dist/types/session.d.ts +39 -0
  215. package/dist/types/session.js +1 -0
  216. package/dist/types/shell.d.ts +21 -0
  217. package/dist/types/shell.js +1 -0
  218. package/dist/types/when.d.ts +10 -0
  219. package/dist/types/when.js +1 -0
  220. package/dist/ui/_utils.d.ts +8 -0
  221. package/dist/ui/_utils.js +53 -0
  222. package/dist/ui/campus/CampusMappa.d.ts +18 -0
  223. package/dist/ui/campus/CampusMappa.js +106 -0
  224. package/dist/ui/campus/CampusNodus.d.ts +25 -0
  225. package/dist/ui/campus/CampusNodus.js +211 -0
  226. package/dist/ui/campus/CampusStratum.d.ts +13 -0
  227. package/dist/ui/campus/CampusStratum.js +20 -0
  228. package/dist/ui/campus/CampusVelum.d.ts +7 -0
  229. package/dist/ui/campus/CampusVelum.js +12 -0
  230. package/dist/ui/campus/CampusView.d.ts +27 -0
  231. package/dist/ui/campus/CampusView.js +420 -0
  232. package/dist/ui/campus/context.d.ts +13 -0
  233. package/dist/ui/campus/context.js +12 -0
  234. package/dist/ui/campus/index.d.ts +14 -0
  235. package/dist/ui/campus/index.js +11 -0
  236. package/dist/ui/campus/stratum-context.d.ts +2 -0
  237. package/dist/ui/campus/stratum-context.js +10 -0
  238. package/dist/ui/campus/types.d.ts +47 -0
  239. package/dist/ui/campus/types.js +4 -0
  240. package/dist/ui/chart/BarChart.css +53 -0
  241. package/dist/ui/chart/BarChart.d.ts +24 -0
  242. package/dist/ui/chart/BarChart.js +32 -0
  243. package/dist/ui/chart/Donut.css +15 -0
  244. package/dist/ui/chart/Donut.d.ts +15 -0
  245. package/dist/ui/chart/Donut.js +18 -0
  246. package/dist/ui/chart/LineChart.css +8 -0
  247. package/dist/ui/chart/LineChart.d.ts +24 -0
  248. package/dist/ui/chart/LineChart.js +29 -0
  249. package/dist/ui/chart/catalog.d.ts +2 -0
  250. package/dist/ui/chart/catalog.js +7 -0
  251. package/dist/ui/chart/index.d.ts +6 -0
  252. package/dist/ui/chart/index.js +4 -0
  253. package/dist/ui/control/Button.css +7 -0
  254. package/dist/ui/control/Button.d.ts +17 -0
  255. package/dist/ui/control/Button.js +17 -0
  256. package/dist/ui/control/CheckBox.css +16 -0
  257. package/dist/ui/control/CheckBox.d.ts +15 -0
  258. package/dist/ui/control/CheckBox.js +23 -0
  259. package/dist/ui/control/Checks.css +6 -0
  260. package/dist/ui/control/Checks.d.ts +9 -0
  261. package/dist/ui/control/Checks.js +10 -0
  262. package/dist/ui/control/ChoicePicker.css +16 -0
  263. package/dist/ui/control/ChoicePicker.d.ts +25 -0
  264. package/dist/ui/control/ChoicePicker.js +38 -0
  265. package/dist/ui/control/DateTimeInput.css +1 -0
  266. package/dist/ui/control/DateTimeInput.d.ts +22 -0
  267. package/dist/ui/control/DateTimeInput.js +41 -0
  268. package/dist/ui/control/LocaleToggle.css +38 -0
  269. package/dist/ui/control/LocaleToggle.d.ts +11 -0
  270. package/dist/ui/control/LocaleToggle.js +23 -0
  271. package/dist/ui/control/ReloadButton.d.ts +6 -0
  272. package/dist/ui/control/ReloadButton.js +9 -0
  273. package/dist/ui/control/Slider.css +2 -0
  274. package/dist/ui/control/Slider.d.ts +21 -0
  275. package/dist/ui/control/Slider.js +37 -0
  276. package/dist/ui/control/TextField.css +0 -0
  277. package/dist/ui/control/TextField.d.ts +25 -0
  278. package/dist/ui/control/TextField.js +36 -0
  279. package/dist/ui/control/_field-parts.css +102 -0
  280. package/dist/ui/control/_field-parts.d.ts +15 -0
  281. package/dist/ui/control/_field-parts.js +17 -0
  282. package/dist/ui/control/catalog.d.ts +2 -0
  283. package/dist/ui/control/catalog.js +10 -0
  284. package/dist/ui/control/index.d.ts +13 -0
  285. package/dist/ui/control/index.js +11 -0
  286. package/dist/ui/data/DataTable.d.ts +19 -0
  287. package/dist/ui/data/DataTable.js +20 -0
  288. package/dist/ui/data/Filter.d.ts +13 -0
  289. package/dist/ui/data/Filter.js +56 -0
  290. package/dist/ui/data/List.css +16 -0
  291. package/dist/ui/data/List.d.ts +15 -0
  292. package/dist/ui/data/List.js +18 -0
  293. package/dist/ui/data/Listable.css +245 -0
  294. package/dist/ui/data/Listable.d.ts +60 -0
  295. package/dist/ui/data/Listable.js +209 -0
  296. package/dist/ui/data/Pagination.d.ts +5 -0
  297. package/dist/ui/data/Pagination.js +43 -0
  298. package/dist/ui/data/Tree.css +118 -0
  299. package/dist/ui/data/Tree.d.ts +45 -0
  300. package/dist/ui/data/Tree.js +170 -0
  301. package/dist/ui/data/catalog.d.ts +2 -0
  302. package/dist/ui/data/catalog.js +7 -0
  303. package/dist/ui/data/index.d.ts +11 -0
  304. package/dist/ui/data/index.js +7 -0
  305. package/dist/ui/display/AddPlaceholder.d.ts +6 -0
  306. package/dist/ui/display/AddPlaceholder.js +24 -0
  307. package/dist/ui/display/Alert.css +42 -0
  308. package/dist/ui/display/Alert.d.ts +14 -0
  309. package/dist/ui/display/Alert.js +13 -0
  310. package/dist/ui/display/Avatar.css +19 -0
  311. package/dist/ui/display/Avatar.d.ts +16 -0
  312. package/dist/ui/display/Avatar.js +52 -0
  313. package/dist/ui/display/Badge.css +26 -0
  314. package/dist/ui/display/Badge.d.ts +16 -0
  315. package/dist/ui/display/Badge.js +9 -0
  316. package/dist/ui/display/Card.css +15 -0
  317. package/dist/ui/display/Card.d.ts +11 -0
  318. package/dist/ui/display/Card.js +8 -0
  319. package/dist/ui/display/DetailContainer.d.ts +6 -0
  320. package/dist/ui/display/DetailContainer.js +7 -0
  321. package/dist/ui/display/DetailHeader.css +53 -0
  322. package/dist/ui/display/DetailHeader.d.ts +22 -0
  323. package/dist/ui/display/DetailHeader.js +8 -0
  324. package/dist/ui/display/DetailList.css +26 -0
  325. package/dist/ui/display/DetailList.d.ts +13 -0
  326. package/dist/ui/display/DetailList.js +5 -0
  327. package/dist/ui/display/DetailNotFound.d.ts +17 -0
  328. package/dist/ui/display/DetailNotFound.js +39 -0
  329. package/dist/ui/display/Divider.css +6 -0
  330. package/dist/ui/display/Divider.d.ts +8 -0
  331. package/dist/ui/display/Divider.js +16 -0
  332. package/dist/ui/display/Divisor.css +30 -0
  333. package/dist/ui/display/Divisor.d.ts +11 -0
  334. package/dist/ui/display/Divisor.js +43 -0
  335. package/dist/ui/display/Icon.css +10 -0
  336. package/dist/ui/display/Icon.d.ts +14 -0
  337. package/dist/ui/display/Icon.js +144 -0
  338. package/dist/ui/display/Image.css +1 -0
  339. package/dist/ui/display/Image.d.ts +16 -0
  340. package/dist/ui/display/Image.js +19 -0
  341. package/dist/ui/display/Markdown.css +38 -0
  342. package/dist/ui/display/Markdown.d.ts +8 -0
  343. package/dist/ui/display/Markdown.js +140 -0
  344. package/dist/ui/display/Progress.css +39 -0
  345. package/dist/ui/display/Progress.d.ts +15 -0
  346. package/dist/ui/display/Progress.js +17 -0
  347. package/dist/ui/display/SectionTitle.d.ts +6 -0
  348. package/dist/ui/display/SectionTitle.js +6 -0
  349. package/dist/ui/display/Skeleton.css +20 -0
  350. package/dist/ui/display/Skeleton.d.ts +11 -0
  351. package/dist/ui/display/Skeleton.js +11 -0
  352. package/dist/ui/display/Spinner.css +20 -0
  353. package/dist/ui/display/Spinner.d.ts +12 -0
  354. package/dist/ui/display/Spinner.js +12 -0
  355. package/dist/ui/display/Svg.d.ts +13 -0
  356. package/dist/ui/display/Svg.js +17 -0
  357. package/dist/ui/display/Text.css +20 -0
  358. package/dist/ui/display/Text.d.ts +13 -0
  359. package/dist/ui/display/Text.js +15 -0
  360. package/dist/ui/display/catalog.d.ts +2 -0
  361. package/dist/ui/display/catalog.js +12 -0
  362. package/dist/ui/display/index.d.ts +22 -0
  363. package/dist/ui/display/index.js +14 -0
  364. package/dist/ui/embed/HtmlEmbed.d.ts +12 -0
  365. package/dist/ui/embed/HtmlEmbed.js +16 -0
  366. package/dist/ui/embed/index.d.ts +2 -0
  367. package/dist/ui/embed/index.js +1 -0
  368. package/dist/ui/forms/DangerZone.d.ts +8 -0
  369. package/dist/ui/forms/DangerZone.js +31 -0
  370. package/dist/ui/forms/Field.css +15 -0
  371. package/dist/ui/forms/Field.d.ts +28 -0
  372. package/dist/ui/forms/Field.js +25 -0
  373. package/dist/ui/forms/FieldGroup.css +15 -0
  374. package/dist/ui/forms/FieldGroup.d.ts +7 -0
  375. package/dist/ui/forms/FieldGroup.js +7 -0
  376. package/dist/ui/forms/Form.css +14 -0
  377. package/dist/ui/forms/Form.d.ts +18 -0
  378. package/dist/ui/forms/Form.js +17 -0
  379. package/dist/ui/forms/FormActions.css +11 -0
  380. package/dist/ui/forms/FormActions.d.ts +18 -0
  381. package/dist/ui/forms/FormActions.js +10 -0
  382. package/dist/ui/forms/FormSection.css +19 -0
  383. package/dist/ui/forms/FormSection.d.ts +7 -0
  384. package/dist/ui/forms/FormSection.js +7 -0
  385. package/dist/ui/forms/LoginForm.css +105 -0
  386. package/dist/ui/forms/LoginForm.d.ts +12 -0
  387. package/dist/ui/forms/LoginForm.js +137 -0
  388. package/dist/ui/forms/SchemaForm.css +81 -0
  389. package/dist/ui/forms/SchemaForm.d.ts +26 -0
  390. package/dist/ui/forms/SchemaForm.js +186 -0
  391. package/dist/ui/forms/SettingsContainer.d.ts +8 -0
  392. package/dist/ui/forms/SettingsContainer.js +8 -0
  393. package/dist/ui/forms/catalog.d.ts +2 -0
  394. package/dist/ui/forms/catalog.js +11 -0
  395. package/dist/ui/forms/index.d.ts +19 -0
  396. package/dist/ui/forms/index.js +12 -0
  397. package/dist/ui/forms/schema-walk.d.ts +50 -0
  398. package/dist/ui/forms/schema-walk.js +116 -0
  399. package/dist/ui/index.d.ts +58 -0
  400. package/dist/ui/index.js +63 -0
  401. package/dist/ui/layout/BarLayout.d.ts +2 -0
  402. package/dist/ui/layout/BarLayout.js +18 -0
  403. package/dist/ui/layout/Column.css +6 -0
  404. package/dist/ui/layout/Column.d.ts +12 -0
  405. package/dist/ui/layout/Column.js +13 -0
  406. package/dist/ui/layout/FloatingLayout.d.ts +2 -0
  407. package/dist/ui/layout/FloatingLayout.js +12 -0
  408. package/dist/ui/layout/Grid.css +5 -0
  409. package/dist/ui/layout/Grid.d.ts +13 -0
  410. package/dist/ui/layout/Grid.js +19 -0
  411. package/dist/ui/layout/InlineLayout.d.ts +2 -0
  412. package/dist/ui/layout/InlineLayout.js +13 -0
  413. package/dist/ui/layout/MountTitle.d.ts +12 -0
  414. package/dist/ui/layout/MountTitle.js +42 -0
  415. package/dist/ui/layout/RailLayout.d.ts +2 -0
  416. package/dist/ui/layout/RailLayout.js +38 -0
  417. package/dist/ui/layout/Row.css +16 -0
  418. package/dist/ui/layout/Row.d.ts +13 -0
  419. package/dist/ui/layout/Row.js +21 -0
  420. package/dist/ui/layout/SectionHeader.d.ts +10 -0
  421. package/dist/ui/layout/SectionHeader.js +65 -0
  422. package/dist/ui/layout/SingleLayout.d.ts +2 -0
  423. package/dist/ui/layout/SingleLayout.js +25 -0
  424. package/dist/ui/layout/SpatialCard.d.ts +9 -0
  425. package/dist/ui/layout/SpatialCard.js +30 -0
  426. package/dist/ui/layout/SpatialLayout.d.ts +2 -0
  427. package/dist/ui/layout/SpatialLayout.js +446 -0
  428. package/dist/ui/layout/SplitLayout.d.ts +2 -0
  429. package/dist/ui/layout/SplitLayout.js +159 -0
  430. package/dist/ui/layout/Splitter.d.ts +12 -0
  431. package/dist/ui/layout/Splitter.js +64 -0
  432. package/dist/ui/layout/StackHeader.d.ts +9 -0
  433. package/dist/ui/layout/StackHeader.js +87 -0
  434. package/dist/ui/layout/StackLayout.d.ts +2 -0
  435. package/dist/ui/layout/StackLayout.js +137 -0
  436. package/dist/ui/layout/TabLayout.d.ts +2 -0
  437. package/dist/ui/layout/TabLayout.js +145 -0
  438. package/dist/ui/layout/TabPanelLayout.d.ts +20 -0
  439. package/dist/ui/layout/TabPanelLayout.js +615 -0
  440. package/dist/ui/layout/catalog.d.ts +2 -0
  441. package/dist/ui/layout/catalog.js +10 -0
  442. package/dist/ui/layout/index.d.ts +17 -0
  443. package/dist/ui/layout/index.js +17 -0
  444. package/dist/ui/layout/register.d.ts +3 -0
  445. package/dist/ui/layout/register.js +25 -0
  446. package/dist/ui/media/Audio.css +1 -0
  447. package/dist/ui/media/Audio.d.ts +12 -0
  448. package/dist/ui/media/Audio.js +8 -0
  449. package/dist/ui/media/Video.css +1 -0
  450. package/dist/ui/media/Video.d.ts +16 -0
  451. package/dist/ui/media/Video.js +9 -0
  452. package/dist/ui/media/catalog.d.ts +2 -0
  453. package/dist/ui/media/catalog.js +5 -0
  454. package/dist/ui/media/index.d.ts +2 -0
  455. package/dist/ui/media/index.js +3 -0
  456. package/dist/ui/menu/ActionList.css +262 -0
  457. package/dist/ui/menu/ActionList.d.ts +19 -0
  458. package/dist/ui/menu/ActionList.js +369 -0
  459. package/dist/ui/menu/ContainerMenu.d.ts +13 -0
  460. package/dist/ui/menu/ContainerMenu.js +57 -0
  461. package/dist/ui/menu/ContextMenu.d.ts +27 -0
  462. package/dist/ui/menu/ContextMenu.js +93 -0
  463. package/dist/ui/menu/index.d.ts +10 -0
  464. package/dist/ui/menu/index.js +7 -0
  465. package/dist/ui/menu/token.d.ts +22 -0
  466. package/dist/ui/menu/token.js +145 -0
  467. package/dist/ui/menu/useChatPicker.d.ts +24 -0
  468. package/dist/ui/menu/useChatPicker.js +210 -0
  469. package/dist/ui/navigation/Breadcrumb.css +30 -0
  470. package/dist/ui/navigation/Breadcrumb.d.ts +14 -0
  471. package/dist/ui/navigation/Breadcrumb.js +12 -0
  472. package/dist/ui/navigation/Link.css +13 -0
  473. package/dist/ui/navigation/Link.d.ts +18 -0
  474. package/dist/ui/navigation/Link.js +43 -0
  475. package/dist/ui/navigation/Tabs.css +39 -0
  476. package/dist/ui/navigation/Tabs.d.ts +18 -0
  477. package/dist/ui/navigation/Tabs.js +55 -0
  478. package/dist/ui/navigation/Toolbar.css +25 -0
  479. package/dist/ui/navigation/Toolbar.d.ts +12 -0
  480. package/dist/ui/navigation/Toolbar.js +21 -0
  481. package/dist/ui/navigation/catalog.d.ts +2 -0
  482. package/dist/ui/navigation/catalog.js +5 -0
  483. package/dist/ui/navigation/index.d.ts +8 -0
  484. package/dist/ui/navigation/index.js +5 -0
  485. package/dist/ui/overlay/Modal.css +35 -0
  486. package/dist/ui/overlay/Modal.d.ts +12 -0
  487. package/dist/ui/overlay/Modal.js +57 -0
  488. package/dist/ui/overlay/Popup.d.ts +12 -0
  489. package/dist/ui/overlay/Popup.js +74 -0
  490. package/dist/ui/overlay/catalog.d.ts +2 -0
  491. package/dist/ui/overlay/catalog.js +4 -0
  492. package/dist/ui/overlay/index.d.ts +1 -0
  493. package/dist/ui/overlay/index.js +2 -0
  494. package/dist/ui/register.d.ts +6 -0
  495. package/dist/ui/register.js +26 -0
  496. package/package.json +115 -0
@@ -0,0 +1,109 @@
1
+ // Theme registry + class-builder helpers.
2
+ //
3
+ // A theme is a *family* (id + label) with `light` and `dark` variants.
4
+ // Each variant's source is either inline tokens or a CSS file URL.
5
+ //
6
+ // Apps switch via `applyTheme(root, themeId, mode)`, which writes
7
+ // data-theme="<id>" (family)
8
+ // data-theme-mode="<mode>" (variant)
9
+ // onto the root so CSS like
10
+ // [data-theme="vscode"][data-theme-mode="dark"] { … }
11
+ // can drive family-specific styling. Token-sourced themes additionally
12
+ // write `--…` custom properties directly onto the root.
13
+ const themes = new Map();
14
+ const injectedHrefs = new Set();
15
+ const appliedTokens = new WeakMap();
16
+ export function registerTheme(def) {
17
+ themes.set(def.id, def);
18
+ }
19
+ export function unregisterTheme(id) {
20
+ themes.delete(id);
21
+ }
22
+ export function getTheme(id) {
23
+ return themes.get(id);
24
+ }
25
+ export function listThemes() {
26
+ return [...themes.values()];
27
+ }
28
+ export function applyTheme(root, themeId, mode) {
29
+ root.setAttribute('data-theme', themeId);
30
+ root.setAttribute('data-theme-mode', mode);
31
+ const prior = appliedTokens.get(root);
32
+ if (prior) {
33
+ for (const prop of prior)
34
+ root.style.removeProperty(prop);
35
+ appliedTokens.delete(root);
36
+ }
37
+ const def = themes.get(themeId);
38
+ if (!def)
39
+ return;
40
+ const source = def.variants[mode];
41
+ if (!source)
42
+ return;
43
+ if (source.kind === 'css') {
44
+ ensureCssLink(source.href);
45
+ return;
46
+ }
47
+ const written = [];
48
+ for (const [k, v] of Object.entries(source.tokens)) {
49
+ const prop = k.startsWith('--') ? k : `--${k}`;
50
+ root.style.setProperty(prop, v);
51
+ written.push(prop);
52
+ }
53
+ appliedTokens.set(root, written);
54
+ }
55
+ function ensureCssLink(href) {
56
+ if (typeof document === 'undefined')
57
+ return;
58
+ if (injectedHrefs.has(href))
59
+ return;
60
+ const link = document.createElement('link');
61
+ link.rel = 'stylesheet';
62
+ link.href = href;
63
+ link.setAttribute('data-scena-theme', href);
64
+ document.head.appendChild(link);
65
+ injectedHrefs.add(href);
66
+ }
67
+ // Built-in `default` family. The CSS already ships in
68
+ // `./themes/light.css` and `./themes/dark.css` (bundled by the app entry),
69
+ // so the variant sources only need to be present for discovery — the
70
+ // real styling lives in those files keyed on
71
+ // [data-theme="default"][data-theme-mode="…"].
72
+ registerTheme({
73
+ id: 'default',
74
+ label: 'Default',
75
+ variants: {
76
+ light: { kind: 'tokens', tokens: {} },
77
+ dark: { kind: 'tokens', tokens: {} },
78
+ },
79
+ });
80
+ // ── Appearance helper ────────────────────────────────────────────────────
81
+ export const SIZE_NAMES = ['xs', 'sm', 'md', 'lg'];
82
+ export const SIZE_SET = new Set(SIZE_NAMES);
83
+ // Builds a class string from a base class + standard appearance props.
84
+ // appearance('oo-btn', { variant: 'primary', size: 'sm' })
85
+ // → 'oo-btn oo-btn--primary oo-btn--sm'
86
+ export function appearance(base, opts = {}) {
87
+ const classes = [base];
88
+ if (opts.variant)
89
+ classes.push(`${base}--${opts.variant}`);
90
+ if (opts.size)
91
+ classes.push(`${base}--${opts.size}`);
92
+ if (opts.density)
93
+ classes.push(`${base}--${opts.density}`);
94
+ return classes.join(' ');
95
+ }
96
+ export function resolveVariableSize(name) {
97
+ if (name.startsWith('--'))
98
+ return name;
99
+ if (SIZE_SET.has(name))
100
+ return `--oo-spacing-${name}`;
101
+ return `--${name}`;
102
+ }
103
+ export function resolveVariableFontSize(name) {
104
+ if (name.startsWith('--'))
105
+ return name;
106
+ if (SIZE_SET.has(name))
107
+ return `--oo-font-size-${name}`;
108
+ return `--${name}`;
109
+ }
@@ -0,0 +1,45 @@
1
+ :root {
2
+ --oo-scrollbar-width: 15px;
3
+ --oo-scrollbar-track-color: rgb(var(--oo-rgb-surface) / 0.25);
4
+ /* --oo-scrollbar-track-color: transparent; */
5
+ --oo-scrollbar-border-color: transparent;
6
+ /* --oo-scrollbar-border-color: rgb(var(--oo-rgb-surface)); */
7
+ --oo-scrollbar-border-width: 3px;
8
+ --oo-scrollbar-thumb-radius: 15px;
9
+ --oo-scrollbar-thumb-color: rgb(var(--oo-rgb-border) / 0.35);
10
+ /* --oo-scrollbar-thumb-color: none; */
11
+ --oo-scrollbar-thumb-hover: rgb(var(--oo-rgb-border) / 0.5);
12
+ /* --oo-scrollbar-thumb-hover: rgb(var(--oo-rgb-accent)); */
13
+ }
14
+
15
+ /* ----------------------------------------
16
+ /* Chrome, Edge, Safari */
17
+ ::-webkit-scrollbar {
18
+ width: var(--oo-scrollbar-width, 15px);
19
+ height: var(--oo-scrollbar-width, 15px);
20
+ }
21
+
22
+ ::-webkit-scrollbar-track {
23
+ background: var(--oo-scrollbar-track-color);
24
+ }
25
+
26
+ ::-webkit-scrollbar-thumb {
27
+ background-color: var(--oo-scrollbar-thumb-color);
28
+ /* border-radius: var(--oo-scrollbar-thumb-radius, 9999px); */
29
+ border-width: var(--oo-scrollbar-border-width, 0px);
30
+ border-style: solid;
31
+ border-color: var(--oo-scrollbar-border-color, var(--oo-scrollbar-track-color));
32
+ /* border: 3px solid transparent; */
33
+ background-clip: content-box;
34
+ transition: background-color 160ms ease;
35
+ }
36
+
37
+ ::-webkit-scrollbar-thumb:hover {
38
+ background-color: var(--oo-scrollbar-thumb-hover);
39
+ }
40
+
41
+ /* Firefox */
42
+ * {
43
+ scrollbar-width: medium;
44
+ scrollbar-color: var(--oo-scrollbar-thumb-color) var(--oo-scrollbar-track-color);
45
+ }
@@ -0,0 +1,179 @@
1
+ /*
2
+ * Surface occupation.
3
+ *
4
+ * `docked` is the default and intentionally has no rules — the shell sizes a
5
+ * docked surface itself via the `style` prop (width/height + flex), exactly as
6
+ * it did before presentation existed. Only the out-of-flow presentations need
7
+ * styling here.
8
+ *
9
+ * Every overlaid presentation positions against the nearest positioned
10
+ * ancestor, so the shell region that hosts them must set `position: relative`.
11
+ * Widths come from custom properties so a shell can override per surface
12
+ * without rewriting the rule.
13
+ */
14
+
15
+ .oo-surface {
16
+ --oo-surface-float-width: 17rem;
17
+ --oo-surface-sheet-height: 55%;
18
+ --oo-surface-bar-size: 2.75rem;
19
+ --oo-surface-overlay-shadow: 0 0 28px rgb(0 0 0 / 0.32);
20
+ }
21
+
22
+ /* ── floating: lifted over `main`, consumes no width ─────────────────── */
23
+ .oo-surface[data-presentation='floating'] {
24
+ position: absolute;
25
+ top: 0;
26
+ bottom: 0;
27
+ z-index: 30;
28
+ width: min(var(--oo-surface-float-width), 86%);
29
+ box-shadow: var(--oo-surface-overlay-shadow);
30
+ background: var(--oo-color-surface, var(--oo-color-canvas));
31
+ }
32
+
33
+ .oo-surface--sidebar-left[data-presentation='floating'] {
34
+ left: 0;
35
+ }
36
+
37
+ .oo-surface--sidebar-right[data-presentation='floating'] {
38
+ right: 0;
39
+ }
40
+
41
+ /* ── sheet: floating from the bottom edge ────────────────────────────── */
42
+ .oo-surface[data-presentation='sheet'] {
43
+ position: absolute;
44
+ left: 0;
45
+ right: 0;
46
+ bottom: 0;
47
+ z-index: 30;
48
+ height: var(--oo-surface-sheet-height);
49
+ box-shadow: var(--oo-surface-overlay-shadow);
50
+ background: var(--oo-color-surface, var(--oo-color-canvas));
51
+ }
52
+
53
+ /* ── bar: pinned to the bottom edge, rotated to horizontal ───────────── */
54
+ .oo-surface[data-presentation='bar'] {
55
+ position: absolute;
56
+ left: 0;
57
+ right: 0;
58
+ bottom: 0;
59
+ top: auto;
60
+ z-index: 40;
61
+ width: auto;
62
+ height: var(--oo-surface-bar-size);
63
+ flex: none;
64
+ background: var(--oo-color-surface, var(--oo-color-canvas));
65
+ }
66
+
67
+ /* The scrim a shell renders behind any overlaid surface. Sits below the
68
+ * surface (z-index 30) and above everything else. */
69
+ .oo-surface-scrim {
70
+ position: absolute;
71
+ inset: 0;
72
+ z-index: 20;
73
+ background: var(--oo-color-scrim, rgb(0 0 0 / 0.38));
74
+ border: 0;
75
+ padding: 0;
76
+ cursor: pointer;
77
+ }
78
+
79
+ @media (prefers-reduced-motion: reduce) {
80
+ .oo-surface {
81
+ transition: none;
82
+ }
83
+ }
84
+
85
+ /*
86
+ * ── Edge resize ──────────────────────────────────────────────────────────
87
+ *
88
+ * The alternative to a ShellSplitter element placed between two surfaces. The
89
+ * grip is a pseudo-element on the surface itself, so it takes no part in flex
90
+ * and cannot end up on the wrong side of a conditionally-rendered neighbour.
91
+ *
92
+ * The hit zone is 10px and the visible line is 1px. That gap is the point: a
93
+ * 1px target is unhittable and a 10px line is a gutter, so the two are
94
+ * separated - the gradient paints one pixel of the band and leaves the rest
95
+ * transparent.
96
+ *
97
+ * Only present on a docked surface. Floating, sheet and bar have no dock
98
+ * boundary to drag, and `useSurfaceResize` stops emitting `data-resize` for
99
+ * them, so the rule and the behaviour disappear together.
100
+ */
101
+ .oo-surface[data-resize] {
102
+ position: relative;
103
+ }
104
+
105
+ .oo-surface[data-resize]::after {
106
+ content: '';
107
+ position: absolute;
108
+ z-index: 10;
109
+ opacity: 0;
110
+ transition: opacity 120ms ease;
111
+ }
112
+
113
+ @media (prefers-reduced-motion: reduce) {
114
+ .oo-surface[data-resize]::after {
115
+ transition: none;
116
+ }
117
+ }
118
+
119
+ .oo-surface[data-resize='right']::after {
120
+ top: 0;
121
+ right: 0;
122
+ bottom: 0;
123
+ width: 10px;
124
+ cursor: ew-resize;
125
+ background: linear-gradient(
126
+ to right,
127
+ transparent 9px,
128
+ var(--oo-color-accent) 9px
129
+ );
130
+ }
131
+
132
+ .oo-surface[data-resize='left']::after {
133
+ top: 0;
134
+ left: 0;
135
+ bottom: 0;
136
+ width: 10px;
137
+ cursor: ew-resize;
138
+ background: linear-gradient(
139
+ to right,
140
+ var(--oo-color-accent) 1px,
141
+ transparent 1px
142
+ );
143
+ }
144
+
145
+ .oo-surface[data-resize='top']::after {
146
+ top: 0;
147
+ left: 0;
148
+ right: 0;
149
+ height: 10px;
150
+ cursor: ns-resize;
151
+ background: linear-gradient(
152
+ to bottom,
153
+ var(--oo-color-accent) 1px,
154
+ transparent 1px
155
+ );
156
+ }
157
+
158
+ .oo-surface[data-resize='bottom']::after {
159
+ bottom: 0;
160
+ left: 0;
161
+ right: 0;
162
+ height: 10px;
163
+ cursor: ns-resize;
164
+ background: linear-gradient(
165
+ to bottom,
166
+ transparent 9px,
167
+ var(--oo-color-accent) 9px
168
+ );
169
+ }
170
+
171
+ /* Hovering the band, then dragging it. Two steps rather than one, so the line
172
+ confirms the grip before the pointer goes down. */
173
+ .oo-surface[data-resize][data-resize-state='hot']::after {
174
+ opacity: 0.55;
175
+ }
176
+
177
+ .oo-surface[data-resize][data-resize-state='active']::after {
178
+ opacity: 1;
179
+ }
@@ -0,0 +1,3 @@
1
+ @import './themes/tokens.css';
2
+ @import './themes/light.css';
3
+ @import './themes/dark.css';
@@ -0,0 +1,30 @@
1
+ [data-theme-mode="dark"] {
2
+ color-scheme: dark;
3
+
4
+ --oo-rgb-canvas: 2 6 23;
5
+ --oo-rgb-panel: 15 23 42;
6
+ --oo-rgb-surface: 2 6 23;
7
+ --oo-rgb-raised: 24 32 48;
8
+
9
+ --oo-rgb-titlebar: 2 6 23;
10
+ --oo-rgb-activitybar: 15 23 42;
11
+ --oo-rgb-sidebar: 15 23 42;
12
+ --oo-rgb-statusbar: 15 23 42;
13
+
14
+ /* --oo-rgb-text: 226 232 240; */
15
+ --oo-rgb-text: 203 213 224;
16
+ /* --oo-rgb-muted: 148 163 184; */
17
+ --oo-rgb-muted: 116 131 154;
18
+ --oo-rgb-subtle: 100 116 139;
19
+
20
+ --oo-rgb-hover: 30 41 59;
21
+ --oo-rgb-active: 51 65 85;
22
+ --oo-rgb-selected: 20 83 76;
23
+
24
+ --oo-rgb-line: 116 131 154;
25
+ /* --oo-rgb-border: 148 163 184; */
26
+ --oo-rgb-border: 98 113 134;
27
+
28
+ --oo-line-alpha: 0.18;
29
+ --oo-border-alpha: 0.22;
30
+ }
@@ -0,0 +1 @@
1
+ /* [data-theme='default'][data-theme-mode='light'] {} */
@@ -0,0 +1,222 @@
1
+ :root {
2
+ color-scheme: light;
3
+
4
+ /* ----------------------------------------
5
+ * Palette: raw RGB channels only
6
+ * ---------------------------------------- */
7
+ --oo-rgb-white: 255 255 255;
8
+ --oo-rgb-black: 17 24 39;
9
+
10
+ --oo-rgb-slate: 100 116 139;
11
+ --oo-rgb-gray: 107 114 128;
12
+ --oo-rgb-zinc: 113 113 122;
13
+ --oo-rgb-neutral: 115 115 115;
14
+ --oo-rgb-stone: 120 113 108;
15
+
16
+ --oo-rgb-red: 239 68 68;
17
+ --oo-rgb-orange: 249 115 22;
18
+ --oo-rgb-amber: 245 158 11;
19
+ --oo-rgb-yellow: 234 179 8;
20
+ --oo-rgb-lime: 132 204 22;
21
+ --oo-rgb-green: 34 197 94;
22
+ --oo-rgb-emerald: 16 185 129;
23
+ --oo-rgb-teal: 20 184 166;
24
+ --oo-rgb-cyan: 6 182 212;
25
+ --oo-rgb-sky: 14 165 233;
26
+ --oo-rgb-blue: 59 130 246;
27
+ --oo-rgb-indigo: 99 102 241;
28
+ --oo-rgb-violet: 139 92 246;
29
+ --oo-rgb-purple: 168 85 247;
30
+ --oo-rgb-fuchsia: 217 70 239;
31
+ --oo-rgb-pink: 236 72 153;
32
+ --oo-rgb-rose: 244 63 94;
33
+
34
+ --oo-color-white: rgb(var(--oo-rgb-white));
35
+ --oo-color-black: rgb(var(--oo-rgb-black));
36
+ --oo-color-slate: rgb(var(--oo-rgb-slate));
37
+ --oo-color-gray: rgb(var(--oo-rgb-gray));
38
+ --oo-color-zinc: rgb(var(--oo-rgb-zinc));
39
+ --oo-color-neutral: rgb(var(--oo-rgb-neutral));
40
+ --oo-color-stone: rgb(var(--oo-rgb-stone));
41
+ --oo-color-red: rgb(var(--oo-rgb-red));
42
+ --oo-color-orange: rgb(var(--oo-rgb-orange));
43
+ --oo-color-amber: rgb(var(--oo-rgb-amber));
44
+ --oo-color-yellow: rgb(var(--oo-rgb-yellow));
45
+ --oo-color-lime: rgb(var(--oo-rgb-lime));
46
+ --oo-color-green: rgb(var(--oo-rgb-green));
47
+ --oo-color-emerald: rgb(var(--oo-rgb-emerald));
48
+ --oo-color-teal: rgb(var(--oo-rgb-teal));
49
+ --oo-color-cyan: rgb(var(--oo-rgb-cyan));
50
+ --oo-color-sky: rgb(var(--oo-rgb-sky));
51
+ --oo-color-blue: rgb(var(--oo-rgb-blue));
52
+ --oo-color-indigo: rgb(var(--oo-rgb-indigo));
53
+ --oo-color-violet: rgb(var(--oo-rgb-violet));
54
+ --oo-color-purple: rgb(var(--oo-rgb-purple));
55
+ --oo-color-fuchsia: rgb(var(--oo-rgb-fuchsia));
56
+ --oo-color-pink: rgb(var(--oo-rgb-pink));
57
+ --oo-color-rose: rgb(var(--oo-rgb-rose));
58
+
59
+ /* ----------------------------------------
60
+ * Base shell colors
61
+ * ---------------------------------------- */
62
+ --oo-rgb-canvas: 255 255 255;
63
+ --oo-rgb-panel: 248 248 248;
64
+ --oo-rgb-surface: 255 255 255;
65
+ --oo-rgb-raised: 255 255 255;
66
+
67
+ --oo-rgb-titlebar: var(--oo-rgb-panel);
68
+ --oo-rgb-activitybar: var(--oo-rgb-panel);
69
+ --oo-rgb-sidebar: var(--oo-rgb-panel);
70
+ --oo-rgb-statusbar: var(--oo-rgb-panel);
71
+
72
+ /* ----------------------------------------
73
+ * Text
74
+ * ---------------------------------------- */
75
+ --oo-rgb-text: 45 53 92;
76
+ --oo-rgb-muted: 152 152 172;
77
+ --oo-rgb-subtle: 170 170 188;
78
+ --oo-rgb-inverse: 255 255 255;
79
+
80
+ /* ----------------------------------------
81
+ * Interaction states
82
+ * ---------------------------------------- */
83
+ --oo-rgb-hover: 240 240 240;
84
+ --oo-rgb-active: 232 232 232;
85
+ --oo-rgb-selected: 230 250 246;
86
+
87
+ /* ----------------------------------------
88
+ * Borders / separators
89
+ * ---------------------------------------- */
90
+ --oo-rgb-line: 185 185 255;
91
+ --oo-rgb-border: 185 185 255;
92
+
93
+ --oo-line-alpha: 0.25;
94
+ --oo-border-alpha: 0.25;
95
+
96
+ /* ----------------------------------------
97
+ * Intent / brand
98
+ * ---------------------------------------- */
99
+ --oo-rgb-accent: 78 201 176;
100
+ --oo-rgb-primary: var(--oo-rgb-accent);
101
+ --oo-rgb-danger: 204 0 0;
102
+ --oo-rgb-success: 0 170 0;
103
+ --oo-rgb-warning: 204 136 0;
104
+ --oo-rgb-info: var(--oo-blue);
105
+
106
+ /* ----------------------------------------
107
+ * Resolved semantic colors
108
+ * ---------------------------------------- */
109
+ --oo-color-canvas: rgb(var(--oo-rgb-canvas));
110
+ --oo-color-panel: rgb(var(--oo-rgb-panel));
111
+ --oo-color-surface: rgb(var(--oo-rgb-surface));
112
+ --oo-color-raised: rgb(var(--oo-rgb-raised));
113
+
114
+ --oo-color-titlebar: rgb(var(--oo-rgb-titlebar));
115
+ --oo-color-activitybar: rgb(var(--oo-rgb-activitybar));
116
+ --oo-color-sidebar: rgb(var(--oo-rgb-sidebar));
117
+ --oo-color-statusbar: rgb(var(--oo-rgb-statusbar));
118
+
119
+ --oo-color-text: rgb(var(--oo-rgb-text));
120
+ --oo-color-muted: rgb(var(--oo-rgb-muted));
121
+ --oo-color-subtle: rgb(var(--oo-rgb-subtle));
122
+ --oo-color-inverse: rgb(var(--oo-rgb-inverse));
123
+
124
+ --oo-color-hover: rgb(var(--oo-rgb-hover));
125
+ --oo-color-active: rgb(var(--oo-rgb-active));
126
+ --oo-color-selected: rgb(var(--oo-rgb-selected));
127
+
128
+ --oo-color-line: rgb(var(--oo-rgb-line) / var(--oo-line-alpha));
129
+ --oo-color-border: rgb(var(--oo-rgb-border) / var(--oo-border-alpha));
130
+
131
+ --oo-color-accent: rgb(var(--oo-rgb-accent));
132
+ --oo-color-primary: rgb(var(--oo-rgb-primary));
133
+ --oo-color-danger: rgb(var(--oo-rgb-danger));
134
+ --oo-color-success: rgb(var(--oo-rgb-success));
135
+ --oo-color-warning: rgb(var(--oo-rgb-warning));
136
+ --oo-color-info: rgb(var(--oo-rgb-info));
137
+
138
+ /* ----------------------------------------
139
+ * Component aliases
140
+ * ---------------------------------------- */
141
+ --oo-app-bg: var(--oo-color-canvas);
142
+ --oo-app-fg: var(--oo-color-text);
143
+
144
+ --oo-titlebar-bg: var(--oo-color-titlebar);
145
+ --oo-titlebar-fg: var(--oo-color-muted);
146
+
147
+ --oo-activitybar-bg: var(--oo-color-activitybar);
148
+ --oo-activitybar-fg: var(--oo-color-muted);
149
+ --oo-activitybar-fg-hover: var(--oo-color-accent);
150
+ --oo-activitybar-bg-hover: var(--oo-color-hover);
151
+ --oo-activitybar-fg-active: var(--oo-color-accent);
152
+ --oo-activitybar-bg-active: var(--oo-color-active);
153
+
154
+ --oo-sidebar-left-bg: var(--oo-color-sidebar);
155
+ --oo-sidebar-left-fg: var(--oo-color-text);
156
+ --oo-sidebar-right-bg: var(--oo-color-sidebar);
157
+ --oo-sidebar-right-fg: var(--oo-color-text);
158
+
159
+ --oo-card-bg: var(--oo-color-surface);
160
+ --oo-card-fg: var(--oo-color-text);
161
+ --oo-card-border: var(--oo-color-border);
162
+
163
+ --oo-popup-bg: var(--oo-color-raised);
164
+ --oo-popup-fg: var(--oo-color-text);
165
+ --oo-popup-border: var(--oo-color-border);
166
+
167
+ --oo-input-bg: var(--oo-color-surface);
168
+ --oo-input-fg: var(--oo-color-text);
169
+ --oo-input-border: var(--oo-color-border);
170
+ --oo-input-placeholder: var(--oo-color-muted);
171
+
172
+ /* ----------------------------------------
173
+ * Spacing
174
+ * ---------------------------------------- */
175
+ --oo-spacing-xs: 3px;
176
+ --oo-spacing-sm: 6px;
177
+ --oo-spacing-md: 14px;
178
+ --oo-spacing-lg: 22px;
179
+ --oo-spacing-xl: 30px;
180
+
181
+ --oo-row-gap: var(--oo-spacing-md);
182
+ --oo-column-gap: var(--oo-spacing-md);
183
+ --oo-list-gap: var(--oo-spacing-sm);
184
+ --oo-list-padding: 0;
185
+
186
+ /* ----------------------------------------
187
+ * Radius
188
+ * ---------------------------------------- */
189
+ --oo-radius-xs: 3px;
190
+ --oo-radius-sm: 4px;
191
+ --oo-radius-md: 6px;
192
+ --oo-radius-lg: 12px;
193
+ --oo-radius-xl: 18px;
194
+ --oo-radius-full: 999px;
195
+
196
+ /* ----------------------------------------
197
+ * Typography
198
+ * ---------------------------------------- */
199
+ --oo-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
200
+ --oo-font-mono: 'SF Mono', Monaco, Consolas, monospace;
201
+
202
+ --oo-font-size-xs: 11px;
203
+ --oo-font-size-sm: 13px;
204
+ --oo-font-size-md: 14px;
205
+ --oo-font-size-lg: 16px;
206
+ --oo-font-size-xl: 20px;
207
+
208
+ --oo-line-height: 1.5;
209
+
210
+ /* ----------------------------------------
211
+ * Elevation
212
+ * ---------------------------------------- */
213
+ --oo-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.08);
214
+ --oo-shadow-md: 0 4px 8px rgb(0 0 0 / 0.12);
215
+ --oo-shadow-lg: 0 12px 24px rgb(0 0 0 / 0.16);
216
+
217
+ /* ----------------------------------------
218
+ * Z layers
219
+ * ---------------------------------------- */
220
+ --oo-z-overlay: 1000;
221
+ --oo-z-popup: 9999;
222
+ }
@@ -0,0 +1,30 @@
1
+ import type { Disposable } from './disposable.js';
2
+ import type { BindingPath, PropValue } from './component-graph.js';
3
+ import type { ScopeName } from './reactive-store.js';
4
+ export type CompiledBinding = {
5
+ kind: 'literal';
6
+ value: unknown;
7
+ } | {
8
+ kind: 'path';
9
+ scope: ScopeName;
10
+ segments: string[];
11
+ wildcard: boolean;
12
+ raw: BindingPath;
13
+ } | {
14
+ kind: 'functionCall';
15
+ call: string;
16
+ argBindings: Record<string, CompiledBinding>;
17
+ callableFrom?: 'clientOnly';
18
+ returnType?: string;
19
+ } | {
20
+ kind: 'event';
21
+ name: string;
22
+ contextBindings?: Record<string, CompiledBinding>;
23
+ wantResponse?: boolean;
24
+ responsePath?: BindingPath;
25
+ };
26
+ export interface BindingResolver {
27
+ compile(prop: PropValue): CompiledBinding;
28
+ watch(binding: CompiledBinding, fn: (value: unknown) => void): Disposable;
29
+ resolve(binding: CompiledBinding): unknown;
30
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ export declare const NAMED_COLORS: readonly ["shell", "muted", "amber", "blue", "red", "green", "yellow", "purple", "orange", "pink", "teal", "cyan", "white", "black", "gray", "indigo", "violet", "fuchsia", "rose", "lime", "emerald", "sky", "slate", "zinc", "neutral", "stone", "success", "danger", "warning"];
2
+ export declare const SETTED_COLORS: Set<"shell" | "muted" | "amber" | "blue" | "red" | "green" | "yellow" | "purple" | "orange" | "pink" | "teal" | "cyan" | "white" | "black" | "gray" | "indigo" | "violet" | "fuchsia" | "rose" | "lime" | "emerald" | "sky" | "slate" | "zinc" | "neutral" | "stone" | "success" | "danger" | "warning">;
3
+ export type ScenaColor = (typeof NAMED_COLORS)[number];
4
+ export type ResourceColor = ScenaColor | (string & {});
5
+ export declare function resolveColorVar(c: ResourceColor): string;
6
+ export declare function resolveColorRgb(c?: ResourceColor): string | undefined;
7
+ export declare function resolveColorAlpha(c?: string, alpha?: number): string;
@@ -0,0 +1,59 @@
1
+ // Named color palette
2
+ // Tokens themselves live in styles/theme.css as raw RGB triplets
3
+ // Callers can wrap with `rgb(var(--oo-color-X))` and
4
+ // get alpha control via `rgb(var(...) / 0.6)`.
5
+ export const NAMED_COLORS = [
6
+ 'shell',
7
+ 'muted',
8
+ 'amber',
9
+ 'blue',
10
+ 'red',
11
+ 'green',
12
+ 'yellow',
13
+ 'purple',
14
+ 'orange',
15
+ 'pink',
16
+ 'teal',
17
+ 'cyan',
18
+ 'white',
19
+ 'black',
20
+ 'gray',
21
+ 'indigo',
22
+ 'violet',
23
+ 'fuchsia',
24
+ 'rose',
25
+ 'lime',
26
+ 'emerald',
27
+ 'sky',
28
+ 'slate',
29
+ 'zinc',
30
+ 'neutral',
31
+ 'stone',
32
+ 'success',
33
+ 'danger',
34
+ 'warning',
35
+ ];
36
+ export const SETTED_COLORS = new Set(NAMED_COLORS);
37
+ export function resolveColorVar(c) {
38
+ if (SETTED_COLORS.has(c))
39
+ return `var(--oo-rgb-${c})`;
40
+ return c;
41
+ }
42
+ export function resolveColorRgb(c) {
43
+ if (!c)
44
+ return undefined;
45
+ if (SETTED_COLORS.has(c))
46
+ return `rgb(var(--oo-rgb-${c}))`;
47
+ return c.startsWith('var(') || c.includes('rgb') || c.startsWith('#') ? c : `rgb(${c})`;
48
+ }
49
+ export function resolveColorAlpha(c, alpha) {
50
+ if (!c)
51
+ return alpha ? `rgba(128, 128, 128, ${alpha})` : 'rgb(128 128 128)';
52
+ if (SETTED_COLORS.has(c))
53
+ return alpha ? `rgb(var(--oo-rgb-${c}) / ${alpha})` : `rgb(var(--oo-rgb-${c}))`;
54
+ return c.startsWith('var(') || c.includes('rgb') || c.startsWith('#')
55
+ ? c
56
+ : alpha
57
+ ? `rgb(${c} / ${alpha})`
58
+ : `rgb(${c})`;
59
+ }