rune-lab 0.4.8 → 0.5.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +309 -0
  3. package/dist/src/core/cells/define-cell.d.ts +13 -0
  4. package/dist/src/core/cells/define-cell.js +42 -0
  5. package/dist/src/core/cells/persisted-cell.d.ts +9 -0
  6. package/dist/src/core/cells/persisted-cell.js +57 -0
  7. package/dist/src/core/config/config-store.d.ts +31 -0
  8. package/dist/src/core/config/config-store.js +79 -0
  9. package/dist/src/core/forge/define-contribution.d.ts +21 -0
  10. package/dist/src/core/forge/define-contribution.js +7 -0
  11. package/dist/src/core/forge/define-plugin.d.ts +33 -0
  12. package/dist/src/core/forge/define-plugin.js +21 -0
  13. package/dist/src/core/forge/define-settings.d.ts +33 -0
  14. package/dist/src/core/forge/define-settings.js +52 -0
  15. package/dist/src/core/forge/define-slot.d.ts +34 -0
  16. package/dist/src/core/forge/define-slot.js +3 -0
  17. package/dist/src/core/forge/descriptors.d.ts +15 -0
  18. package/dist/src/core/forge/descriptors.js +9 -0
  19. package/dist/src/core/kernel/kernel.d.ts +38 -0
  20. package/dist/src/core/kernel/kernel.js +157 -0
  21. package/dist/src/core/kernel/wiring.d.ts +39 -0
  22. package/dist/src/core/kernel/wiring.js +253 -0
  23. package/dist/src/core/mod.d.ts +62 -0
  24. package/dist/src/core/mod.js +19 -0
  25. package/dist/src/core/persistence/memory.d.ts +1 -0
  26. package/dist/src/core/persistence/memory.js +1 -0
  27. package/dist/src/core/ports/locale.d.ts +5 -0
  28. package/dist/src/core/ports/memory.d.ts +7 -0
  29. package/dist/src/core/ports/memory.js +20 -0
  30. package/dist/src/core/ports/persistence.d.ts +5 -0
  31. package/dist/src/core/ports/text-fake.d.ts +83 -0
  32. package/dist/src/core/ports/text-fake.js +231 -0
  33. package/dist/src/core/ports/text.d.ts +146 -0
  34. package/dist/src/core/services/layers.d.ts +17 -0
  35. package/dist/src/core/services/layers.js +38 -0
  36. package/dist/src/core/utils/graph.d.ts +5 -0
  37. package/dist/src/core/utils/graph.js +30 -0
  38. package/dist/src/plugins/i18n/accessors.d.ts +6 -0
  39. package/dist/src/plugins/i18n/accessors.js +22 -0
  40. package/dist/src/plugins/i18n/lang/components/LanguageSelector.svelte +44 -0
  41. package/dist/{runes/layout/src → src/plugins/i18n/lang/components}/LanguageSelector.svelte.d.ts +5 -6
  42. package/dist/{i18n → src/plugins/i18n/lang}/message-resolver.d.ts +17 -18
  43. package/dist/src/plugins/i18n/lang/message-resolver.js +49 -0
  44. package/dist/src/plugins/i18n/lang/messages.d.ts +1 -0
  45. package/dist/{i18n → src/plugins/i18n/lang}/messages.js +3 -3
  46. package/dist/src/plugins/i18n/lang/mod.d.ts +15 -0
  47. package/dist/src/plugins/i18n/lang/mod.js +30 -0
  48. package/dist/{i18n → src/plugins/i18n/lang}/paraglide/.prettierignore +1 -1
  49. package/dist/{i18n → src/plugins/i18n/lang}/paraglide/README.md +22 -50
  50. package/dist/src/plugins/i18n/lang/paraglide/messages/_index.d.ts +69 -0
  51. package/dist/{i18n → src/plugins/i18n/lang}/paraglide/messages/_index.js +55 -54
  52. package/dist/src/plugins/i18n/lang/paraglide/messages/abyss.d.ts +50 -0
  53. package/dist/src/plugins/i18n/lang/paraglide/messages/abyss.js +87 -0
  54. package/dist/src/plugins/i18n/lang/paraglide/messages/acid.d.ts +50 -0
  55. package/dist/src/plugins/i18n/lang/paraglide/messages/acid.js +87 -0
  56. package/dist/src/plugins/i18n/lang/paraglide/messages/aed3.d.ts +51 -0
  57. package/dist/src/plugins/i18n/lang/paraglide/messages/aed3.js +89 -0
  58. package/dist/src/plugins/i18n/lang/paraglide/messages/all_currencies.d.ts +50 -0
  59. package/dist/src/plugins/i18n/lang/paraglide/messages/all_currencies.js +100 -0
  60. package/dist/src/plugins/i18n/lang/paraglide/messages/all_languages.d.ts +50 -0
  61. package/dist/src/plugins/i18n/lang/paraglide/messages/all_languages.js +100 -0
  62. package/dist/src/plugins/i18n/lang/paraglide/messages/all_themes.d.ts +50 -0
  63. package/dist/src/plugins/i18n/lang/paraglide/messages/all_themes.js +100 -0
  64. package/dist/src/plugins/i18n/lang/paraglide/messages/aqua.d.ts +50 -0
  65. package/dist/src/plugins/i18n/lang/paraglide/messages/aqua.js +87 -0
  66. package/dist/src/plugins/i18n/lang/paraglide/messages/ar.d.ts +50 -0
  67. package/dist/src/plugins/i18n/lang/paraglide/messages/ar.js +87 -0
  68. package/dist/src/plugins/i18n/lang/paraglide/messages/autumn.d.ts +50 -0
  69. package/dist/src/plugins/i18n/lang/paraglide/messages/autumn.js +100 -0
  70. package/dist/src/plugins/i18n/lang/paraglide/messages/black.d.ts +50 -0
  71. package/dist/src/plugins/i18n/lang/paraglide/messages/black.js +87 -0
  72. package/dist/src/plugins/i18n/lang/paraglide/messages/brl3.d.ts +51 -0
  73. package/dist/src/plugins/i18n/lang/paraglide/messages/brl3.js +89 -0
  74. package/dist/src/plugins/i18n/lang/paraglide/messages/bumblebee.d.ts +50 -0
  75. package/dist/src/plugins/i18n/lang/paraglide/messages/bumblebee.js +100 -0
  76. package/dist/src/plugins/i18n/lang/paraglide/messages/business.d.ts +50 -0
  77. package/dist/src/plugins/i18n/lang/paraglide/messages/business.js +100 -0
  78. package/dist/src/plugins/i18n/lang/paraglide/messages/cad3.d.ts +51 -0
  79. package/dist/src/plugins/i18n/lang/paraglide/messages/cad3.js +89 -0
  80. package/dist/src/plugins/i18n/lang/paraglide/messages/caramellatte.d.ts +50 -0
  81. package/dist/src/plugins/i18n/lang/paraglide/messages/caramellatte.js +100 -0
  82. package/dist/src/plugins/i18n/lang/paraglide/messages/cmyk.d.ts +50 -0
  83. package/dist/src/plugins/i18n/lang/paraglide/messages/cmyk.js +87 -0
  84. package/dist/src/plugins/i18n/lang/paraglide/messages/cny3.d.ts +51 -0
  85. package/dist/src/plugins/i18n/lang/paraglide/messages/cny3.js +89 -0
  86. package/dist/src/plugins/i18n/lang/paraglide/messages/coffee.d.ts +50 -0
  87. package/dist/src/plugins/i18n/lang/paraglide/messages/coffee.js +100 -0
  88. package/dist/src/plugins/i18n/lang/paraglide/messages/corporate.d.ts +50 -0
  89. package/dist/src/plugins/i18n/lang/paraglide/messages/corporate.js +100 -0
  90. package/dist/src/plugins/i18n/lang/paraglide/messages/cupcake.d.ts +50 -0
  91. package/dist/src/plugins/i18n/lang/paraglide/messages/cupcake.js +100 -0
  92. package/dist/src/plugins/i18n/lang/paraglide/messages/currency.d.ts +50 -0
  93. package/dist/src/plugins/i18n/lang/paraglide/messages/currency.js +100 -0
  94. package/dist/src/plugins/i18n/lang/paraglide/messages/cyberpunk.d.ts +50 -0
  95. package/dist/src/plugins/i18n/lang/paraglide/messages/cyberpunk.js +100 -0
  96. package/dist/src/plugins/i18n/lang/paraglide/messages/dark.d.ts +50 -0
  97. package/dist/src/plugins/i18n/lang/paraglide/messages/dark.js +87 -0
  98. package/dist/src/plugins/i18n/lang/paraglide/messages/de.d.ts +50 -0
  99. package/dist/src/plugins/i18n/lang/paraglide/messages/de.js +87 -0
  100. package/dist/src/plugins/i18n/lang/paraglide/messages/dim.d.ts +50 -0
  101. package/dist/src/plugins/i18n/lang/paraglide/messages/dim.js +87 -0
  102. package/dist/src/plugins/i18n/lang/paraglide/messages/dracula.d.ts +50 -0
  103. package/dist/src/plugins/i18n/lang/paraglide/messages/dracula.js +100 -0
  104. package/dist/src/plugins/i18n/lang/paraglide/messages/emerald.d.ts +50 -0
  105. package/dist/src/plugins/i18n/lang/paraglide/messages/emerald.js +100 -0
  106. package/dist/src/plugins/i18n/lang/paraglide/messages/en.d.ts +50 -0
  107. package/dist/src/plugins/i18n/lang/paraglide/messages/en.js +87 -0
  108. package/dist/src/plugins/i18n/lang/paraglide/messages/es.d.ts +50 -0
  109. package/dist/src/plugins/i18n/lang/paraglide/messages/es.js +87 -0
  110. package/dist/src/plugins/i18n/lang/paraglide/messages/eur3.d.ts +51 -0
  111. package/dist/src/plugins/i18n/lang/paraglide/messages/eur3.js +89 -0
  112. package/dist/src/plugins/i18n/lang/paraglide/messages/fantasy.d.ts +50 -0
  113. package/dist/src/plugins/i18n/lang/paraglide/messages/fantasy.js +100 -0
  114. package/dist/src/plugins/i18n/lang/paraglide/messages/forest.d.ts +50 -0
  115. package/dist/src/plugins/i18n/lang/paraglide/messages/forest.js +100 -0
  116. package/dist/src/plugins/i18n/lang/paraglide/messages/fr.d.ts +50 -0
  117. package/dist/src/plugins/i18n/lang/paraglide/messages/fr.js +87 -0
  118. package/dist/src/plugins/i18n/lang/paraglide/messages/garden.d.ts +50 -0
  119. package/dist/src/plugins/i18n/lang/paraglide/messages/garden.js +100 -0
  120. package/dist/src/plugins/i18n/lang/paraglide/messages/gbp3.d.ts +51 -0
  121. package/dist/src/plugins/i18n/lang/paraglide/messages/gbp3.js +89 -0
  122. package/dist/src/plugins/i18n/lang/paraglide/messages/halloween.d.ts +50 -0
  123. package/dist/src/plugins/i18n/lang/paraglide/messages/halloween.js +100 -0
  124. package/dist/src/plugins/i18n/lang/paraglide/messages/hello_world.d.ts +52 -0
  125. package/dist/src/plugins/i18n/lang/paraglide/messages/hello_world.js +104 -0
  126. package/dist/src/plugins/i18n/lang/paraglide/messages/hi.d.ts +50 -0
  127. package/dist/src/plugins/i18n/lang/paraglide/messages/hi.js +87 -0
  128. package/dist/src/plugins/i18n/lang/paraglide/messages/inr3.d.ts +51 -0
  129. package/dist/src/plugins/i18n/lang/paraglide/messages/inr3.js +89 -0
  130. package/dist/src/plugins/i18n/lang/paraglide/messages/it.d.ts +50 -0
  131. package/dist/src/plugins/i18n/lang/paraglide/messages/it.js +87 -0
  132. package/dist/src/plugins/i18n/lang/paraglide/messages/ja.d.ts +50 -0
  133. package/dist/src/plugins/i18n/lang/paraglide/messages/ja.js +87 -0
  134. package/dist/src/plugins/i18n/lang/paraglide/messages/jpy3.d.ts +51 -0
  135. package/dist/src/plugins/i18n/lang/paraglide/messages/jpy3.js +89 -0
  136. package/dist/src/plugins/i18n/lang/paraglide/messages/ko.d.ts +50 -0
  137. package/dist/src/plugins/i18n/lang/paraglide/messages/ko.js +87 -0
  138. package/dist/src/plugins/i18n/lang/paraglide/messages/krw3.d.ts +51 -0
  139. package/dist/src/plugins/i18n/lang/paraglide/messages/krw3.js +89 -0
  140. package/dist/src/plugins/i18n/lang/paraglide/messages/languages.d.ts +50 -0
  141. package/dist/src/plugins/i18n/lang/paraglide/messages/languages.js +100 -0
  142. package/dist/src/plugins/i18n/lang/paraglide/messages/lemonade.d.ts +50 -0
  143. package/dist/src/plugins/i18n/lang/paraglide/messages/lemonade.js +100 -0
  144. package/dist/src/plugins/i18n/lang/paraglide/messages/light.d.ts +50 -0
  145. package/dist/src/plugins/i18n/lang/paraglide/messages/light.js +87 -0
  146. package/dist/src/plugins/i18n/lang/paraglide/messages/lofi.d.ts +50 -0
  147. package/dist/src/plugins/i18n/lang/paraglide/messages/lofi.js +87 -0
  148. package/dist/src/plugins/i18n/lang/paraglide/messages/luxury.d.ts +50 -0
  149. package/dist/src/plugins/i18n/lang/paraglide/messages/luxury.js +100 -0
  150. package/dist/src/plugins/i18n/lang/paraglide/messages/mxn3.d.ts +51 -0
  151. package/dist/src/plugins/i18n/lang/paraglide/messages/mxn3.js +89 -0
  152. package/dist/src/plugins/i18n/lang/paraglide/messages/night.d.ts +50 -0
  153. package/dist/src/plugins/i18n/lang/paraglide/messages/night.js +87 -0
  154. package/dist/src/plugins/i18n/lang/paraglide/messages/nord.d.ts +50 -0
  155. package/dist/src/plugins/i18n/lang/paraglide/messages/nord.js +87 -0
  156. package/dist/src/plugins/i18n/lang/paraglide/messages/package.json +4 -0
  157. package/dist/src/plugins/i18n/lang/paraglide/messages/pastel.d.ts +50 -0
  158. package/dist/src/plugins/i18n/lang/paraglide/messages/pastel.js +100 -0
  159. package/dist/src/plugins/i18n/lang/paraglide/messages/pt.d.ts +50 -0
  160. package/dist/src/plugins/i18n/lang/paraglide/messages/pt.js +87 -0
  161. package/dist/src/plugins/i18n/lang/paraglide/messages/retro.d.ts +50 -0
  162. package/dist/src/plugins/i18n/lang/paraglide/messages/retro.js +87 -0
  163. package/dist/src/plugins/i18n/lang/paraglide/messages/ru.d.ts +50 -0
  164. package/dist/src/plugins/i18n/lang/paraglide/messages/ru.js +87 -0
  165. package/dist/src/plugins/i18n/lang/paraglide/messages/silk.d.ts +50 -0
  166. package/dist/src/plugins/i18n/lang/paraglide/messages/silk.js +87 -0
  167. package/dist/src/plugins/i18n/lang/paraglide/messages/sunset.d.ts +50 -0
  168. package/dist/src/plugins/i18n/lang/paraglide/messages/sunset.js +100 -0
  169. package/dist/src/plugins/i18n/lang/paraglide/messages/synthwave.d.ts +50 -0
  170. package/dist/src/plugins/i18n/lang/paraglide/messages/synthwave.js +100 -0
  171. package/dist/src/plugins/i18n/lang/paraglide/messages/system.d.ts +50 -0
  172. package/dist/src/plugins/i18n/lang/paraglide/messages/system.js +100 -0
  173. package/dist/src/plugins/i18n/lang/paraglide/messages/theme.d.ts +50 -0
  174. package/dist/src/plugins/i18n/lang/paraglide/messages/theme.js +87 -0
  175. package/dist/src/plugins/i18n/lang/paraglide/messages/themes.d.ts +50 -0
  176. package/dist/src/plugins/i18n/lang/paraglide/messages/themes.js +100 -0
  177. package/dist/src/plugins/i18n/lang/paraglide/messages/usd3.d.ts +51 -0
  178. package/dist/src/plugins/i18n/lang/paraglide/messages/usd3.js +89 -0
  179. package/dist/src/plugins/i18n/lang/paraglide/messages/valentine.d.ts +50 -0
  180. package/dist/src/plugins/i18n/lang/paraglide/messages/valentine.js +100 -0
  181. package/dist/src/plugins/i18n/lang/paraglide/messages/vi.d.ts +50 -0
  182. package/dist/src/plugins/i18n/lang/paraglide/messages/vi.js +87 -0
  183. package/dist/src/plugins/i18n/lang/paraglide/messages/winter.d.ts +50 -0
  184. package/dist/src/plugins/i18n/lang/paraglide/messages/winter.js +100 -0
  185. package/dist/src/plugins/i18n/lang/paraglide/messages/wireframe.d.ts +50 -0
  186. package/dist/src/plugins/i18n/lang/paraglide/messages/wireframe.js +100 -0
  187. package/dist/src/plugins/i18n/lang/paraglide/messages/zh.d.ts +50 -0
  188. package/dist/src/plugins/i18n/lang/paraglide/messages/zh.js +87 -0
  189. package/dist/src/plugins/i18n/lang/paraglide/messages.d.ts +2 -0
  190. package/dist/src/plugins/i18n/lang/paraglide/registry.d.ts +66 -0
  191. package/dist/src/plugins/i18n/lang/paraglide/registry.js +51 -0
  192. package/dist/src/plugins/i18n/lang/paraglide/runtime.d.ts +847 -0
  193. package/dist/{i18n → src/plugins/i18n/lang}/paraglide/runtime.js +904 -928
  194. package/dist/src/plugins/i18n/lang/paraglide/server.d.ts +100 -0
  195. package/dist/{i18n → src/plugins/i18n/lang}/paraglide/server.js +156 -151
  196. package/dist/src/plugins/i18n/lang/store.svelte.d.ts +63 -0
  197. package/dist/src/plugins/i18n/lang/store.svelte.js +50 -0
  198. package/dist/src/plugins/i18n/mod.d.ts +9 -0
  199. package/dist/src/plugins/i18n/mod.js +9 -0
  200. package/dist/src/plugins/i18n/money/components/CurrencySelector.svelte +45 -0
  201. package/dist/{runes/plugins/money/src → src/plugins/i18n/money/components}/CurrencySelector.svelte.d.ts +6 -6
  202. package/dist/src/plugins/i18n/money/components/MoneyDisplay.svelte +118 -0
  203. package/dist/src/plugins/i18n/money/components/MoneyDisplay.svelte.d.ts +22 -0
  204. package/dist/src/plugins/i18n/money/components/MoneyInput.svelte +174 -0
  205. package/dist/src/plugins/i18n/money/components/MoneyInput.svelte.d.ts +21 -0
  206. package/dist/src/plugins/i18n/money/mod.d.ts +11 -0
  207. package/dist/src/plugins/i18n/money/mod.js +11 -0
  208. package/dist/src/plugins/i18n/money/primitives/money-primitive.d.ts +106 -0
  209. package/dist/src/plugins/i18n/money/primitives/money-primitive.js +180 -0
  210. package/dist/{runes/plugins/money/src → src/plugins/i18n/money/primitives}/money.d.ts +46 -46
  211. package/dist/src/plugins/i18n/money/primitives/money.js +287 -0
  212. package/dist/{runes/plugins/money/src → src/plugins/i18n/money/primitives}/strategies.d.ts +3 -3
  213. package/dist/{runes/plugins/money/src → src/plugins/i18n/money/primitives}/strategies.js +24 -24
  214. package/dist/src/plugins/i18n/money/stores/currency.svelte.d.ts +23 -0
  215. package/dist/src/plugins/i18n/money/stores/currency.svelte.js +82 -0
  216. package/dist/src/plugins/i18n/money/stores/exchange-rate.svelte.d.ts +16 -0
  217. package/dist/src/plugins/i18n/money/stores/exchange-rate.svelte.js +120 -0
  218. package/dist/src/plugins/i18n/money/types.d.ts +32 -0
  219. package/dist/src/plugins/i18n/money/types.js +21 -0
  220. package/dist/src/plugins/i18n/money/use/useMoney.d.ts +65 -0
  221. package/dist/src/plugins/i18n/money/use/useMoney.js +125 -0
  222. package/dist/src/plugins/i18n/money/use/useMoneyFilter.svelte.d.ts +23 -0
  223. package/dist/src/plugins/i18n/money/use/useMoneyFilter.svelte.js +97 -0
  224. package/dist/src/plugins/i18n/plugin.d.ts +39 -0
  225. package/dist/src/plugins/i18n/plugin.js +70 -0
  226. package/dist/src/plugins/i18n/settings.d.ts +2 -0
  227. package/dist/src/plugins/i18n/settings.js +56 -0
  228. package/dist/src/plugins/layout/components/AppSettingSelector.svelte +35 -0
  229. package/dist/src/plugins/layout/components/AppSettingSelector.svelte.d.ts +45 -0
  230. package/dist/src/plugins/layout/components/ConnectedNavigationPanel.svelte +28 -0
  231. package/dist/{runes/layout/src → src/plugins/layout/components}/ConnectedNavigationPanel.svelte.d.ts +8 -7
  232. package/dist/src/plugins/layout/components/ConnectedWorkspaceStrip.svelte +24 -0
  233. package/dist/{runes/layout/src → src/plugins/layout/components}/ConnectedWorkspaceStrip.svelte.d.ts +7 -6
  234. package/dist/src/plugins/layout/components/ContentArea.svelte +23 -0
  235. package/dist/{runes/layout/src → src/plugins/layout/components}/ContentArea.svelte.d.ts +3 -2
  236. package/dist/src/plugins/layout/components/ContentAreaZone.svelte +15 -0
  237. package/dist/src/plugins/layout/components/ContentAreaZone.svelte.d.ts +12 -0
  238. package/dist/src/plugins/layout/components/DesktopDropdown.svelte +84 -0
  239. package/dist/src/plugins/layout/components/DesktopDropdown.svelte.d.ts +44 -0
  240. package/dist/src/plugins/layout/components/DetailPanel.svelte +13 -0
  241. package/dist/src/plugins/layout/components/DetailPanel.svelte.d.ts +7 -0
  242. package/dist/src/plugins/layout/components/DetailPanelZone.svelte +45 -0
  243. package/dist/src/plugins/layout/components/DetailPanelZone.svelte.d.ts +12 -0
  244. package/dist/src/plugins/layout/components/Icon.svelte +5 -0
  245. package/dist/src/plugins/layout/components/Icon.svelte.d.ts +7 -0
  246. package/dist/src/plugins/layout/components/MobileModal.svelte +62 -0
  247. package/dist/src/plugins/layout/components/MobileModal.svelte.d.ts +42 -0
  248. package/dist/src/plugins/layout/components/NavigationItemRenderer.svelte +48 -0
  249. package/dist/src/plugins/layout/components/NavigationItemRenderer.svelte.d.ts +15 -0
  250. package/dist/src/plugins/layout/components/NavigationPanel.svelte +64 -0
  251. package/dist/src/plugins/layout/components/NavigationPanel.svelte.d.ts +15 -0
  252. package/dist/src/plugins/layout/components/NavigationPanelZone.svelte +52 -0
  253. package/dist/src/plugins/layout/components/NavigationPanelZone.svelte.d.ts +13 -0
  254. package/dist/src/plugins/layout/components/ResourceSelector.svelte +79 -0
  255. package/dist/src/plugins/layout/components/ResourceSelector.svelte.d.ts +55 -0
  256. package/dist/src/plugins/layout/components/StatusbarDropdown.svelte +23 -0
  257. package/dist/src/plugins/layout/components/StatusbarDropdown.svelte.d.ts +12 -0
  258. package/dist/src/plugins/layout/components/StatusbarOverflow.svelte +90 -0
  259. package/dist/src/plugins/layout/components/StatusbarOverflow.svelte.d.ts +16 -0
  260. package/dist/src/plugins/layout/components/StatusbarZone.svelte +19 -0
  261. package/dist/src/plugins/layout/components/StatusbarZone.svelte.d.ts +12 -0
  262. package/dist/src/plugins/layout/components/ThemeSelector.svelte +52 -0
  263. package/dist/{runes/layout/src → src/plugins/layout/components}/ThemeSelector.svelte.d.ts +6 -6
  264. package/dist/src/plugins/layout/components/WorkspaceLayout.svelte +92 -0
  265. package/dist/src/plugins/layout/components/WorkspaceLayout.svelte.d.ts +19 -0
  266. package/dist/src/plugins/layout/components/WorkspaceStrip.svelte +69 -0
  267. package/dist/{runes/layout/src → src/plugins/layout/components}/WorkspaceStrip.svelte.d.ts +6 -5
  268. package/dist/src/plugins/layout/components/WorkspaceStripZone.svelte +27 -0
  269. package/dist/src/plugins/layout/components/WorkspaceStripZone.svelte.d.ts +12 -0
  270. package/dist/src/plugins/layout/components/connection-factory.d.ts +24 -0
  271. package/dist/src/plugins/layout/components/connection-factory.js +32 -0
  272. package/dist/src/plugins/layout/components/text/RichText.svelte +108 -0
  273. package/dist/src/plugins/layout/components/text/RichText.svelte.d.ts +17 -0
  274. package/dist/src/plugins/layout/components/text/Text.svelte +85 -0
  275. package/dist/src/plugins/layout/components/text/Text.svelte.d.ts +19 -0
  276. package/dist/src/plugins/layout/components/text/TextLine.svelte +16 -0
  277. package/dist/src/plugins/layout/components/text/TextLine.svelte.d.ts +8 -0
  278. package/dist/src/plugins/layout/contributions.d.ts +3 -0
  279. package/dist/src/plugins/layout/contributions.js +2 -0
  280. package/dist/src/plugins/layout/mod.d.ts +23 -0
  281. package/dist/src/plugins/layout/mod.js +23 -0
  282. package/dist/src/plugins/layout/plugin.d.ts +15 -0
  283. package/dist/src/plugins/layout/plugin.js +33 -0
  284. package/dist/src/plugins/layout/presets.d.ts +2 -0
  285. package/dist/src/plugins/layout/presets.js +26 -0
  286. package/dist/src/plugins/layout/settings.d.ts +2 -0
  287. package/dist/src/plugins/layout/settings.js +70 -0
  288. package/dist/src/plugins/layout/stores/layout.svelte.d.ts +31 -0
  289. package/dist/src/plugins/layout/stores/layout.svelte.js +80 -0
  290. package/dist/src/plugins/layout/stores/text.svelte.d.ts +12 -0
  291. package/dist/src/plugins/layout/stores/text.svelte.js +56 -0
  292. package/dist/src/plugins/layout/stores/theme.svelte.d.ts +8 -0
  293. package/dist/src/plugins/layout/stores/theme.svelte.js +64 -0
  294. package/dist/src/plugins/layout/text/adapter.d.ts +81 -0
  295. package/dist/src/plugins/layout/text/adapter.js +72 -0
  296. package/dist/src/plugins/layout/text/fonts.d.ts +1 -0
  297. package/dist/src/plugins/layout/text/fonts.js +17 -0
  298. package/dist/src/plugins/layout/text/resize.d.ts +8 -0
  299. package/dist/src/plugins/layout/text/resize.js +16 -0
  300. package/dist/src/plugins/layout/types.d.ts +67 -0
  301. package/dist/src/plugins/layout/types.js +20 -0
  302. package/dist/src/plugins/observer/CapabilitiesSettings.svelte +103 -0
  303. package/dist/src/plugins/observer/CapabilitiesSettings.svelte.d.ts +7 -0
  304. package/dist/src/plugins/observer/ObserverPanel.svelte +215 -0
  305. package/dist/src/plugins/observer/ObserverPanel.svelte.d.ts +7 -0
  306. package/dist/src/plugins/observer/mod.d.ts +12 -0
  307. package/dist/src/plugins/observer/mod.js +20 -0
  308. package/dist/src/plugins/palettes/SettingsModal.svelte +92 -0
  309. package/dist/src/plugins/palettes/SettingsModal.svelte.d.ts +7 -0
  310. package/dist/src/plugins/palettes/accessors.d.ts +8 -0
  311. package/dist/src/plugins/palettes/accessors.js +15 -0
  312. package/dist/src/plugins/palettes/commands/mod.d.ts +2 -0
  313. package/dist/src/plugins/palettes/commands/mod.js +2 -0
  314. package/dist/src/plugins/palettes/commands/store.svelte.d.ts +22 -0
  315. package/dist/src/plugins/palettes/commands/store.svelte.js +64 -0
  316. package/dist/src/plugins/palettes/host/PaletteHost.svelte +73 -0
  317. package/dist/src/plugins/palettes/host/PaletteHost.svelte.d.ts +7 -0
  318. package/dist/src/plugins/palettes/host/hotkeys.svelte.d.ts +17 -0
  319. package/dist/src/plugins/palettes/host/hotkeys.svelte.js +32 -0
  320. package/dist/src/plugins/palettes/mod.d.ts +15 -0
  321. package/dist/src/plugins/palettes/mod.js +15 -0
  322. package/dist/src/plugins/palettes/notifications/NotificationBell.svelte +87 -0
  323. package/dist/src/plugins/palettes/notifications/NotificationBell.svelte.d.ts +15 -0
  324. package/dist/{runes/palettes/src → src/plugins/palettes}/notifications/Toaster.svelte +42 -40
  325. package/dist/src/plugins/palettes/notifications/Toaster.svelte.d.ts +35 -0
  326. package/dist/{runes/palettes/src → src/plugins/palettes}/notifications/mod.d.ts +1 -2
  327. package/dist/{runes/palettes/src → src/plugins/palettes}/notifications/mod.js +1 -2
  328. package/dist/src/plugins/palettes/notifications/store.svelte.d.ts +31 -0
  329. package/dist/src/plugins/palettes/notifications/store.svelte.js +93 -0
  330. package/dist/src/plugins/palettes/palettes/commands/CommandPalette.svelte +165 -0
  331. package/dist/src/plugins/palettes/palettes/commands/CommandPalette.svelte.d.ts +7 -0
  332. package/dist/src/plugins/palettes/palettes/shortcuts/ShortcutPalette.svelte +171 -0
  333. package/dist/{runes/palettes/src → src/plugins/palettes/palettes}/shortcuts/ShortcutPalette.svelte.d.ts +3 -6
  334. package/dist/src/plugins/palettes/plugin.d.ts +16 -0
  335. package/dist/src/plugins/palettes/plugin.js +68 -0
  336. package/dist/src/plugins/palettes/registry/registry.svelte.d.ts +18 -0
  337. package/dist/src/plugins/palettes/registry/registry.svelte.js +25 -0
  338. package/dist/src/plugins/palettes/settings-modal/SettingsSearchResults.svelte +48 -0
  339. package/dist/src/plugins/palettes/settings-modal/SettingsSearchResults.svelte.d.ts +14 -0
  340. package/dist/src/plugins/palettes/settings-modal/SettingsSectionContent.svelte +16 -0
  341. package/dist/src/plugins/palettes/settings-modal/SettingsSectionContent.svelte.d.ts +12 -0
  342. package/dist/src/plugins/palettes/settings-modal/SettingsSidebar.svelte +53 -0
  343. package/dist/src/plugins/palettes/settings-modal/SettingsSidebar.svelte.d.ts +16 -0
  344. package/dist/src/plugins/palettes/settings-modal/hash-routing.d.ts +8 -0
  345. package/dist/src/plugins/palettes/settings-modal/hash-routing.js +40 -0
  346. package/dist/src/plugins/palettes/settings-modal/search.d.ts +24 -0
  347. package/dist/src/plugins/palettes/settings-modal/search.js +77 -0
  348. package/dist/src/plugins/palettes/shortcuts/ShortcutSettings.svelte +197 -0
  349. package/dist/src/plugins/palettes/shortcuts/ShortcutSettings.svelte.d.ts +7 -0
  350. package/dist/src/plugins/palettes/shortcuts/grouping.d.ts +6 -0
  351. package/dist/src/plugins/palettes/shortcuts/grouping.js +32 -0
  352. package/dist/src/plugins/palettes/shortcuts/mod.d.ts +5 -0
  353. package/dist/src/plugins/palettes/shortcuts/mod.js +5 -0
  354. package/dist/src/plugins/palettes/shortcuts/store.svelte.d.ts +33 -0
  355. package/dist/src/plugins/palettes/shortcuts/store.svelte.js +58 -0
  356. package/dist/src/plugins/palettes/shortcuts/types.d.ts +1 -0
  357. package/dist/{runes/palettes/src → src/plugins/palettes}/shortcuts/useShortcuts.svelte.d.ts +1 -18
  358. package/dist/src/plugins/palettes/shortcuts/useShortcuts.svelte.js +58 -0
  359. package/dist/src/plugins/palettes/types.d.ts +27 -0
  360. package/dist/src/ui/RuneProvider.svelte +130 -0
  361. package/dist/src/ui/RuneProvider.svelte.d.ts +31 -0
  362. package/dist/{kernel/src → src/ui}/actions/portal.d.ts +4 -4
  363. package/dist/src/ui/actions/portal.js +33 -0
  364. package/dist/src/ui/define/plugin-kit.d.ts +14 -0
  365. package/dist/src/ui/define/plugin-kit.js +24 -0
  366. package/dist/src/ui/mod.d.ts +23 -0
  367. package/dist/src/ui/mod.js +18 -0
  368. package/dist/src/ui/persistence/createConfigStore.svelte.d.ts +5 -0
  369. package/dist/src/ui/persistence/createConfigStore.svelte.js +52 -0
  370. package/dist/src/ui/persistence/drivers.d.ts +18 -0
  371. package/dist/src/ui/persistence/drivers.js +86 -0
  372. package/dist/{kernel/src → src/ui}/persistence/usePersistence.d.ts +1 -1
  373. package/dist/src/ui/persistence/usePersistence.js +5 -0
  374. package/dist/src/ui/provider/context.d.ts +25 -0
  375. package/dist/src/ui/provider/context.js +38 -0
  376. package/dist/src/ui/reactivity/app.svelte.d.ts +22 -0
  377. package/dist/src/ui/reactivity/app.svelte.js +59 -0
  378. package/dist/src/ui/reactivity/use-cell.svelte.d.ts +18 -0
  379. package/dist/src/ui/reactivity/use-cell.svelte.js +30 -0
  380. package/dist/src/ui/settings/SettingsFields.svelte +180 -0
  381. package/dist/src/ui/settings/SettingsFields.svelte.d.ts +12 -0
  382. package/dist/src/ui/static/attributions.md +11 -0
  383. package/dist/src/ui/static/img/rune.png +0 -0
  384. package/package.json +60 -46
  385. package/dist/RuneProvider.svelte +0 -147
  386. package/dist/RuneProvider.svelte.d.ts +0 -29
  387. package/dist/i18n/message-resolver.js +0 -49
  388. package/dist/i18n/messages.d.ts +0 -2
  389. package/dist/i18n/paraglide/messages/abyss.js +0 -88
  390. package/dist/i18n/paraglide/messages/acid.js +0 -88
  391. package/dist/i18n/paraglide/messages/aed3.js +0 -89
  392. package/dist/i18n/paraglide/messages/all_currencies.js +0 -101
  393. package/dist/i18n/paraglide/messages/all_languages.js +0 -101
  394. package/dist/i18n/paraglide/messages/all_themes.js +0 -101
  395. package/dist/i18n/paraglide/messages/aqua.js +0 -88
  396. package/dist/i18n/paraglide/messages/ar.js +0 -88
  397. package/dist/i18n/paraglide/messages/autumn.js +0 -101
  398. package/dist/i18n/paraglide/messages/black.js +0 -88
  399. package/dist/i18n/paraglide/messages/brl3.js +0 -89
  400. package/dist/i18n/paraglide/messages/bumblebee.js +0 -101
  401. package/dist/i18n/paraglide/messages/business.js +0 -101
  402. package/dist/i18n/paraglide/messages/cad3.js +0 -89
  403. package/dist/i18n/paraglide/messages/caramellatte.js +0 -101
  404. package/dist/i18n/paraglide/messages/cmyk.js +0 -88
  405. package/dist/i18n/paraglide/messages/cny3.js +0 -89
  406. package/dist/i18n/paraglide/messages/coffee.js +0 -101
  407. package/dist/i18n/paraglide/messages/corporate.js +0 -101
  408. package/dist/i18n/paraglide/messages/cupcake.js +0 -101
  409. package/dist/i18n/paraglide/messages/currency.js +0 -101
  410. package/dist/i18n/paraglide/messages/cyberpunk.js +0 -101
  411. package/dist/i18n/paraglide/messages/dark.js +0 -88
  412. package/dist/i18n/paraglide/messages/de.js +0 -88
  413. package/dist/i18n/paraglide/messages/dim.js +0 -88
  414. package/dist/i18n/paraglide/messages/dracula.js +0 -101
  415. package/dist/i18n/paraglide/messages/emerald.js +0 -101
  416. package/dist/i18n/paraglide/messages/en.js +0 -88
  417. package/dist/i18n/paraglide/messages/es.js +0 -88
  418. package/dist/i18n/paraglide/messages/eur3.js +0 -89
  419. package/dist/i18n/paraglide/messages/fantasy.js +0 -101
  420. package/dist/i18n/paraglide/messages/forest.js +0 -101
  421. package/dist/i18n/paraglide/messages/fr.js +0 -88
  422. package/dist/i18n/paraglide/messages/garden.js +0 -101
  423. package/dist/i18n/paraglide/messages/gbp3.js +0 -89
  424. package/dist/i18n/paraglide/messages/halloween.js +0 -101
  425. package/dist/i18n/paraglide/messages/hello_world.js +0 -101
  426. package/dist/i18n/paraglide/messages/hi.js +0 -88
  427. package/dist/i18n/paraglide/messages/inr3.js +0 -89
  428. package/dist/i18n/paraglide/messages/it.js +0 -88
  429. package/dist/i18n/paraglide/messages/ja.js +0 -88
  430. package/dist/i18n/paraglide/messages/jpy3.js +0 -89
  431. package/dist/i18n/paraglide/messages/ko.js +0 -88
  432. package/dist/i18n/paraglide/messages/krw3.js +0 -89
  433. package/dist/i18n/paraglide/messages/languages.js +0 -101
  434. package/dist/i18n/paraglide/messages/lemonade.js +0 -101
  435. package/dist/i18n/paraglide/messages/light.js +0 -88
  436. package/dist/i18n/paraglide/messages/lofi.js +0 -88
  437. package/dist/i18n/paraglide/messages/luxury.js +0 -101
  438. package/dist/i18n/paraglide/messages/mxn3.js +0 -89
  439. package/dist/i18n/paraglide/messages/night.js +0 -88
  440. package/dist/i18n/paraglide/messages/nord.js +0 -88
  441. package/dist/i18n/paraglide/messages/pastel.js +0 -101
  442. package/dist/i18n/paraglide/messages/pt.js +0 -88
  443. package/dist/i18n/paraglide/messages/retro.js +0 -88
  444. package/dist/i18n/paraglide/messages/ru.js +0 -88
  445. package/dist/i18n/paraglide/messages/silk.js +0 -88
  446. package/dist/i18n/paraglide/messages/sunset.js +0 -101
  447. package/dist/i18n/paraglide/messages/synthwave.js +0 -101
  448. package/dist/i18n/paraglide/messages/system.js +0 -101
  449. package/dist/i18n/paraglide/messages/theme.js +0 -88
  450. package/dist/i18n/paraglide/messages/themes.js +0 -101
  451. package/dist/i18n/paraglide/messages/usd3.js +0 -89
  452. package/dist/i18n/paraglide/messages/valentine.js +0 -101
  453. package/dist/i18n/paraglide/messages/vi.js +0 -88
  454. package/dist/i18n/paraglide/messages/winter.js +0 -101
  455. package/dist/i18n/paraglide/messages/wireframe.js +0 -101
  456. package/dist/i18n/paraglide/messages/zh.js +0 -88
  457. package/dist/i18n/paraglide/registry.js +0 -33
  458. package/dist/kernel/src/actions/portal.js +0 -33
  459. package/dist/kernel/src/actions/shortcut-listener.svelte.d.ts +0 -18
  460. package/dist/kernel/src/actions/shortcut-listener.svelte.js +0 -35
  461. package/dist/kernel/src/context/accessors.test.js +0 -68
  462. package/dist/kernel/src/context/app.svelte.d.ts +0 -45
  463. package/dist/kernel/src/context/app.svelte.js +0 -95
  464. package/dist/kernel/src/context/context.d.ts +0 -15
  465. package/dist/kernel/src/context/context.js +0 -16
  466. package/dist/kernel/src/context/stores.svelte.d.ts +0 -69
  467. package/dist/kernel/src/context/stores.svelte.js +0 -91
  468. package/dist/kernel/src/context/types.d.ts +0 -98
  469. package/dist/kernel/src/context/useRuneLab.d.ts +0 -25
  470. package/dist/kernel/src/context/useRuneLab.js +0 -26
  471. package/dist/kernel/src/mod.d.ts +0 -13
  472. package/dist/kernel/src/mod.js +0 -13
  473. package/dist/kernel/src/persistence/createConfigStore.svelte.d.ts +0 -42
  474. package/dist/kernel/src/persistence/createConfigStore.svelte.js +0 -121
  475. package/dist/kernel/src/persistence/drivers.d.ts +0 -25
  476. package/dist/kernel/src/persistence/drivers.js +0 -105
  477. package/dist/kernel/src/persistence/drivers.test.js +0 -79
  478. package/dist/kernel/src/persistence/provider.d.ts +0 -30
  479. package/dist/kernel/src/persistence/provider.js +0 -45
  480. package/dist/kernel/src/persistence/provider.test.d.ts +0 -1
  481. package/dist/kernel/src/persistence/provider.test.js +0 -51
  482. package/dist/kernel/src/persistence/types.d.ts +0 -17
  483. package/dist/kernel/src/persistence/types.js +0 -2
  484. package/dist/kernel/src/persistence/usePersistence.js +0 -5
  485. package/dist/kernel/src/registry/mod.d.ts +0 -119
  486. package/dist/kernel/src/registry/mod.js +0 -144
  487. package/dist/kernel/src/registry/registry.test.d.ts +0 -1
  488. package/dist/kernel/src/registry/registry.test.js +0 -121
  489. package/dist/kernel/src/tokens/props.d.ts +0 -67
  490. package/dist/kernel/src/tokens/props.js +0 -35
  491. package/dist/mod.d.ts +0 -6
  492. package/dist/mod.js +0 -7
  493. package/dist/runes/layout/src/APP_CONFIGURATIONS.d.ts +0 -29
  494. package/dist/runes/layout/src/APP_CONFIGURATIONS.js +0 -38
  495. package/dist/runes/layout/src/AppSettingSelector.svelte +0 -216
  496. package/dist/runes/layout/src/AppSettingSelector.svelte.d.ts +0 -48
  497. package/dist/runes/layout/src/ConnectedNavigationPanel.svelte +0 -28
  498. package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte +0 -24
  499. package/dist/runes/layout/src/ContentArea.svelte +0 -19
  500. package/dist/runes/layout/src/DetailPanel.svelte +0 -12
  501. package/dist/runes/layout/src/DetailPanel.svelte.d.ts +0 -7
  502. package/dist/runes/layout/src/Icon.svelte +0 -11
  503. package/dist/runes/layout/src/Icon.svelte.d.ts +0 -7
  504. package/dist/runes/layout/src/LanguageSelector.svelte +0 -47
  505. package/dist/runes/layout/src/NavigationPanel.svelte +0 -119
  506. package/dist/runes/layout/src/NavigationPanel.svelte.d.ts +0 -17
  507. package/dist/runes/layout/src/ResourceSelector.svelte +0 -81
  508. package/dist/runes/layout/src/ResourceSelector.svelte.d.ts +0 -57
  509. package/dist/runes/layout/src/ThemeSelector.svelte +0 -53
  510. package/dist/runes/layout/src/WorkspaceLayout.svelte +0 -252
  511. package/dist/runes/layout/src/WorkspaceLayout.svelte.d.ts +0 -36
  512. package/dist/runes/layout/src/WorkspaceStrip.svelte +0 -74
  513. package/dist/runes/layout/src/connection-factory.d.ts +0 -61
  514. package/dist/runes/layout/src/connection-factory.js +0 -58
  515. package/dist/runes/layout/src/language.svelte.d.ts +0 -58
  516. package/dist/runes/layout/src/language.svelte.js +0 -41
  517. package/dist/runes/layout/src/mod.d.ts +0 -23
  518. package/dist/runes/layout/src/mod.js +0 -73
  519. package/dist/runes/layout/src/store.svelte.d.ts +0 -37
  520. package/dist/runes/layout/src/store.svelte.js +0 -117
  521. package/dist/runes/layout/src/theme.svelte.d.ts +0 -13
  522. package/dist/runes/layout/src/theme.svelte.js +0 -71
  523. package/dist/runes/layout/src/types.d.ts +0 -6
  524. package/dist/runes/layout/src/types.js +0 -8
  525. package/dist/runes/palettes/src/commands/CommandPalette.svelte +0 -231
  526. package/dist/runes/palettes/src/commands/CommandPalette.svelte.d.ts +0 -6
  527. package/dist/runes/palettes/src/commands/mod.d.ts +0 -2
  528. package/dist/runes/palettes/src/commands/mod.js +0 -2
  529. package/dist/runes/palettes/src/commands/store.svelte.d.ts +0 -37
  530. package/dist/runes/palettes/src/commands/store.svelte.js +0 -68
  531. package/dist/runes/palettes/src/mod.d.ts +0 -9
  532. package/dist/runes/palettes/src/mod.js +0 -47
  533. package/dist/runes/palettes/src/notifications/NotificationBell.svelte +0 -89
  534. package/dist/runes/palettes/src/notifications/NotificationBell.svelte.d.ts +0 -15
  535. package/dist/runes/palettes/src/notifications/Toaster.svelte.d.ts +0 -32
  536. package/dist/runes/palettes/src/notifications/bridge.d.ts +0 -33
  537. package/dist/runes/palettes/src/notifications/bridge.js +0 -44
  538. package/dist/runes/palettes/src/notifications/store.svelte.d.ts +0 -32
  539. package/dist/runes/palettes/src/notifications/store.svelte.js +0 -94
  540. package/dist/runes/palettes/src/notifications/store.test.d.ts +0 -1
  541. package/dist/runes/palettes/src/notifications/store.test.js +0 -83
  542. package/dist/runes/palettes/src/shortcuts/ShortcutPalette.svelte +0 -244
  543. package/dist/runes/palettes/src/shortcuts/mod.d.ts +0 -4
  544. package/dist/runes/palettes/src/shortcuts/mod.js +0 -4
  545. package/dist/runes/palettes/src/shortcuts/store.svelte.d.ts +0 -43
  546. package/dist/runes/palettes/src/shortcuts/store.svelte.js +0 -95
  547. package/dist/runes/palettes/src/shortcuts/types.d.ts +0 -1
  548. package/dist/runes/palettes/src/shortcuts/useShortcuts.svelte.js +0 -76
  549. package/dist/runes/plugins/money/src/CurrencySelector.svelte +0 -45
  550. package/dist/runes/plugins/money/src/MoneyDisplay.svelte +0 -142
  551. package/dist/runes/plugins/money/src/MoneyDisplay.svelte.d.ts +0 -37
  552. package/dist/runes/plugins/money/src/MoneyInput.svelte +0 -208
  553. package/dist/runes/plugins/money/src/MoneyInput.svelte.d.ts +0 -38
  554. package/dist/runes/plugins/money/src/currency.svelte.d.ts +0 -36
  555. package/dist/runes/plugins/money/src/currency.svelte.js +0 -87
  556. package/dist/runes/plugins/money/src/currency.test.d.ts +0 -1
  557. package/dist/runes/plugins/money/src/currency.test.js +0 -32
  558. package/dist/runes/plugins/money/src/exchange-rate.svelte.d.ts +0 -43
  559. package/dist/runes/plugins/money/src/exchange-rate.svelte.js +0 -163
  560. package/dist/runes/plugins/money/src/exchange-rate.test.d.ts +0 -1
  561. package/dist/runes/plugins/money/src/exchange-rate.test.js +0 -74
  562. package/dist/runes/plugins/money/src/mod.d.ts +0 -16
  563. package/dist/runes/plugins/money/src/mod.js +0 -59
  564. package/dist/runes/plugins/money/src/money-primitive.d.ts +0 -106
  565. package/dist/runes/plugins/money/src/money-primitive.js +0 -178
  566. package/dist/runes/plugins/money/src/money-primitive.test.d.ts +0 -1
  567. package/dist/runes/plugins/money/src/money-primitive.test.js +0 -177
  568. package/dist/runes/plugins/money/src/money.js +0 -285
  569. package/dist/runes/plugins/money/src/money.test.d.ts +0 -1
  570. package/dist/runes/plugins/money/src/money.test.js +0 -154
  571. package/dist/runes/plugins/money/src/strategies.test.d.ts +0 -1
  572. package/dist/runes/plugins/money/src/strategies.test.js +0 -115
  573. package/dist/runes/plugins/money/src/types.d.ts +0 -27
  574. package/dist/runes/plugins/money/src/types.js +0 -21
  575. package/dist/runes/plugins/money/src/useMoney.d.ts +0 -69
  576. package/dist/runes/plugins/money/src/useMoney.js +0 -157
  577. package/dist/runes/plugins/money/src/useMoneyFilter.svelte.d.ts +0 -23
  578. package/dist/runes/plugins/money/src/useMoneyFilter.svelte.js +0 -97
  579. /package/dist/{i18n/message-resolver.test.d.ts → src/core/ports/locale.js} +0 -0
  580. /package/dist/{kernel/src/context/accessors.test.d.ts → src/core/ports/persistence.js} +0 -0
  581. /package/dist/{kernel/src/context/types.js → src/core/ports/text.js} +0 -0
  582. /package/dist/{i18n → src/plugins/i18n/lang}/paraglide/messages.js +0 -0
  583. /package/dist/{runes/palettes/src → src/plugins/palettes}/shortcuts/types.js +0 -0
  584. /package/dist/{kernel/src/persistence/drivers.test.d.ts → src/plugins/palettes/types.js} +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Fernando Bryan Reza Campos
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,309 @@
1
+ <h1 align="center">
2
+ <img src="https://raw.githubusercontent.com/Yrrrrrf/rune-lab/refs/heads/main/src/package/src/static/img/rune.png" alt="Rune Lab Icon" width="128" height="128" description="Icon representing the Svelte Runes system">
3
+ <div align="center">Rune Lab</div>
4
+ </h1>
5
+
6
+ <div align="center">
7
+
8
+ [![JSR](https://jsr.io/badges/@yrrrrrf/rune-lab)](https://jsr.io/@yrrrrrf/rune-lab)
9
+ [![NPM Package](https://img.shields.io/npm/v/rune-lab.svg)](https://www.npmjs.com/package/rune-lab)
10
+ [![GitHub](https://img.shields.io/badge/GitHub-Yrrrrrf%2Frune--lab-blue)](https://github.com/Yrrrrrf/rune-lab)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://choosealicense.com/licenses/mit/)
12
+
13
+ </div>
14
+
15
+ ## Overview
16
+
17
+ **Rune Lab** is a modern, extensible **plugin-based UI shell** for **Svelte 5**
18
+ applications. Harnessing the power of Svelte's new **Runes** system, it provides
19
+ a complete application skeleton with built-in layout management, dynamic
20
+ theming, i18n, keyboard shortcuts, a command palette, toast notifications, and a
21
+ highly precise money/currency subsystem.
22
+
23
+ Everything is wired through a centralized **Provider + Registry + Context**
24
+ architecture, ensuring clean dependency injection and state isolation across
25
+ your app.
26
+
27
+ ## Key Features
28
+
29
+ - **✨ Svelte 5 Runes-First:** Built from the ground up using `$state`,
30
+ `$derived`, and `$effect`. No legacy Svelte 4 stores.
31
+ - **🧩 Extensible Plugin Architecture:** Features are isolated into plugins
32
+ (`LayoutPlugin`, `PalettesPlugin`, `MoneyPlugin`). Only load what you need.
33
+ - **🎨 Dynamic Theming & i18n:** 32 DaisyUI themes and 13 pre-configured locales
34
+ powered by Paraglide JS, with zero-flash SSR persistence.
35
+ - **🔗 Declarative Callbacks:** Bridge store changes (theme, language, currency)
36
+ to your own system hooks via `RuneProvider` props.
37
+ - **💾 Abstract Persistence Layer:** Swap between cookies, localStorage,
38
+ sessionStorage, or in-memory state seamlessly via generic drivers.
39
+ - **💸 Robust Money Subsystem:** Backed by Dinero.js for floating-point-safe
40
+ precision arithmetic, complete with exchange rate strategies and masked
41
+ currency inputs.
42
+ - **⌨️ Developer & Power-User Friendly:** Out-of-the-box Command Palette
43
+ (`Ctrl+K`) and interactive Shortcuts Palette (`Ctrl+/`).
44
+
45
+ ## Installation
46
+
47
+ ### Using NPM / Bun
48
+
49
+ ```bash
50
+ npm install rune-lab
51
+ # or
52
+ bun install rune-lab
53
+ ```
54
+
55
+ ## Project Configuration (Required)
56
+
57
+ After installing, two configuration steps are required to ensure the framework's
58
+ components are compiled and styled correctly in your consuming project.
59
+
60
+ ### Step 1 — Vite: Process `rune-lab` through the Svelte compiler
61
+
62
+ By default, Vite externalizes `node_modules` during SSR, bypassing the Svelte
63
+ compiler. Add the following to your `vite.config.ts` to process `rune-lab`
64
+ properly:
65
+
66
+ ```ts
67
+ // vite.config.ts
68
+ import { defineConfig } from "vite";
69
+ import { sveltekit } from "@sveltejs/kit/vite";
70
+
71
+ export default defineConfig({
72
+ plugins: [sveltekit()],
73
+ ssr: {
74
+ noExternal: ["rune-lab"], // 👈 CRITICAL for Svelte 5 components in node_modules
75
+ },
76
+ });
77
+ ```
78
+
79
+ ### Step 2 — Tailwind CSS v4: Scan `rune-lab` for utility classes
80
+
81
+ Tailwind only generates CSS for classes it finds by scanning your source files.
82
+ Add a `@source` directive to your project's main CSS file so Tailwind compiles
83
+ the DaisyUI classes used internally by `rune-lab`:
84
+
85
+ ```css
86
+ /* app.css / layout.css / global.css */
87
+ @import "tailwindcss";
88
+ @source "../node_modules/rune-lab/dist"; /* 👈 add this */
89
+ ```
90
+
91
+ ## Quick Start
92
+
93
+ Get your application shell running in less than 40 lines. Inside your
94
+ `+layout.svelte`:
95
+
96
+ ```svelte
97
+ <script lang="ts">
98
+ import {
99
+ ConnectedNavigationPanel,
100
+ cookieDriver,
101
+ LayoutPlugin,
102
+ PalettesPlugin,
103
+ RuneProvider,
104
+ WorkspaceLayout,
105
+ } from "rune-lab";
106
+ import type { NavigationSection } from "rune-lab";
107
+ import { setLocale } from "$lib/i18n/paraglide/runtime.js";
108
+
109
+ let { children } = $props();
110
+
111
+ const sections: NavigationSection[] = [
112
+ {
113
+ id: "main",
114
+ title: "Main Menu",
115
+ items: [
116
+ { id: "home", label: "Dashboard", icon: "🏠" },
117
+ { id: "settings", label: "Settings", icon: "⚙️" },
118
+ ],
119
+ },
120
+ ];
121
+ </script>
122
+
123
+ <!-- Initialize the system with your required plugins and callbacks -->
124
+ <RuneProvider
125
+ config={{
126
+ app: { name: "My Startup", version: "1.0.0" },
127
+ persistence: cookieDriver,
128
+ }}
129
+ plugins={[LayoutPlugin, PalettesPlugin]}
130
+ onLanguageChange={(l) => setLocale(l.code)}
131
+ onThemeChange={(t) => console.log(`Theme changed to ${t.name}`)}
132
+ >
133
+ <WorkspaceLayout>
134
+ {#snippet navigationPanel()}
135
+ <!-- Auto-wires to LayoutStore state -->
136
+ <ConnectedNavigationPanel {sections} />
137
+ {/snippet}
138
+
139
+ {#snippet content()}
140
+ <div class="p-8">
141
+ {@render children()}
142
+ </div>
143
+ {/snippet}
144
+ </WorkspaceLayout>
145
+ </RuneProvider>
146
+ ```
147
+
148
+ You now have a fully reactive layout, a keyboard command palette, a toast
149
+ notification system, and theme/language switchers.
150
+
151
+ ## Money & Currency Plugin
152
+
153
+ Rune Lab provides a robust money layer that handles precision arithmetic,
154
+ formatting, and live exchange-rate triangulation. To use it, simply register the
155
+ `MoneyPlugin`:
156
+
157
+ ```svelte
158
+ <script lang="ts">
159
+ import { MoneyPlugin } from "rune-lab";
160
+ </script>
161
+
162
+ <RuneProvider
163
+ config={{
164
+ "rune-lab.money": {
165
+ defaultCurrency: "USD",
166
+ exchangeRates: {
167
+ base: "USD",
168
+ rates: { MXN: 17.23, EUR: 0.91 },
169
+ },
170
+ },
171
+ }}
172
+ plugins={[LayoutPlugin, PalettesPlugin, MoneyPlugin]}
173
+ >
174
+ <!-- App Content -->
175
+ </RuneProvider>
176
+ ```
177
+
178
+ ### Displaying & Inputting Money
179
+
180
+ ```svelte
181
+ <script lang="ts">
182
+ import { CurrencySelector, MoneyDisplay, MoneyInput, useMoney } from "rune-lab";
183
+
184
+ let price = $state(15000); // Minor units (e.g., cents) -> $150.00
185
+ const { convert, format } = useMoney();
186
+ </script>
187
+
188
+ <!-- Select from available currencies -->
189
+ <CurrencySelector />
190
+
191
+ <!-- Formats safely and localizes based on the active LanguageStore -->
192
+ <MoneyDisplay amount={price} currency="USD" />
193
+
194
+ <!-- Compact notation ($1.5M) -->
195
+ <MoneyDisplay amount={150000000} currency="USD" compact />
196
+
197
+ <!-- Integer-backed masked input (prevents floating point errors) -->
198
+ <MoneyInput bind:amount={price} currency="USD" />
199
+ ```
200
+
201
+ ## Persistence Drivers
202
+
203
+ Rune Lab provides generic drivers to remember user preferences across reloads.
204
+ Pass one to `config.persistence` on `<RuneProvider>`:
205
+
206
+ - `cookieDriver`: Best for SSR applications (like SvelteKit) to prevent "theme
207
+ flash" on initial load.
208
+ - `localStorageDriver`: Best for client-only applications (SPAs).
209
+ - `sessionStorageDriver`: For preferences that should clear when the browser tab
210
+ closes.
211
+
212
+ ```svelte
213
+ <script lang="ts">
214
+ import { cookieDriver } from "rune-lab";
215
+ </script>
216
+
217
+ <RuneProvider config={{ persistence: cookieDriver }} plugins={[...]}>
218
+ ```
219
+
220
+ ## Advanced Patterns
221
+
222
+ ### Store Observers (`onChange`)
223
+
224
+ Beyond the `RuneProvider` props, you can imperatively subscribe to any
225
+ `ConfigStore` (theme, language, currency) from your own services or components.
226
+ Callbacks include `try/catch` protection so they never crash the store.
227
+
228
+ ```ts
229
+ import { getThemeStore } from "rune-lab";
230
+
231
+ const themeStore = getThemeStore();
232
+
233
+ // Returns an unsubscribe function
234
+ const unsub = themeStore.onChange((newId, oldId) => {
235
+ console.log(`Theme swapped from ${oldId} to ${newId}`);
236
+ });
237
+ ```
238
+
239
+ ### Keyboard Shortcuts (Auto-Cleanup)
240
+
241
+ Any component deep in your tree can register its own keyboard shortcuts using
242
+ the `useShortcuts` composable. It handles Svelte's `$effect` lifecycle
243
+ internally, ensuring shortcuts unregister when the component unmounts:
244
+
245
+ ```svelte
246
+ <script lang="ts">
247
+ import { getToastStore, useShortcuts } from "rune-lab";
248
+
249
+ const toasts = getToastStore();
250
+
251
+ useShortcuts([
252
+ {
253
+ id: "feature.save",
254
+ keys: "ctrl+s, cmd+s", // Comma-separated alternative keys
255
+ label: "Save Document",
256
+ category: "Editor",
257
+ scope: "global",
258
+ handler: (e) => {
259
+ e.preventDefault();
260
+ toasts.success("Document Saved!");
261
+ },
262
+ },
263
+ ]);
264
+ </script>
265
+ ```
266
+
267
+ ### SvelteKit Route Syncing
268
+
269
+ To keep your layout's active navigation state synchronized with the SvelteKit
270
+ router, use an `$effect` inside your `+layout.svelte` right after the provider:
271
+
272
+ ```svelte
273
+ <script lang="ts">
274
+ import { page } from "$app/state";
275
+ import { getLayoutStore } from "rune-lab";
276
+
277
+ const layoutStore = getLayoutStore();
278
+
279
+ $effect(() => {
280
+ // Automatically open the correct nav tree branch
281
+ const segment = page.url.pathname.split("/")[1] || "home";
282
+ layoutStore.navigate(segment);
283
+ });
284
+ </script>
285
+ ```
286
+
287
+ ### Calling Toasts from Outside Svelte Components
288
+
289
+ If you need to trigger a toast from a pure `.ts` file (like a fetching utility
290
+ or global error handler), you can use the Toast Bridge:
291
+
292
+ ```ts
293
+ import { createToastBridge } from "rune-lab";
294
+
295
+ const { notify } = createToastBridge();
296
+
297
+ export async function fetchUser() {
298
+ try {
299
+ // ...
300
+ } catch (err) {
301
+ // Safely queues the toast if the UI hasn't mounted yet
302
+ notify("Failed to fetch user data", "error");
303
+ }
304
+ }
305
+ ```
306
+
307
+ ## License
308
+
309
+ MIT License - See [LICENSE](LICENSE) for details.
@@ -0,0 +1,13 @@
1
+ import { SubscriptionRef } from "effect";
2
+ export declare class StateCell<T> {
3
+ ref: SubscriptionRef.SubscriptionRef<T>;
4
+ version: number;
5
+ private listeners;
6
+ constructor(ref: SubscriptionRef.SubscriptionRef<T>);
7
+ get(): T;
8
+ set(value: T): void;
9
+ getVersion(): number;
10
+ subscribe(listener: () => void): () => void;
11
+ private pendingNotify;
12
+ notify(): void;
13
+ }
@@ -0,0 +1,42 @@
1
+ import { Effect, SubscriptionRef } from "effect";
2
+ export class StateCell {
3
+ ref;
4
+ version = 0;
5
+ listeners = new Set();
6
+ constructor(ref) {
7
+ this.ref = ref;
8
+ }
9
+ get() {
10
+ return Effect.runSync(SubscriptionRef.get(this.ref));
11
+ }
12
+ set(value) {
13
+ Effect.runSync(SubscriptionRef.set(this.ref, value));
14
+ }
15
+ getVersion() {
16
+ return this.version;
17
+ }
18
+ subscribe(listener) {
19
+ this.listeners.add(listener);
20
+ return () => {
21
+ this.listeners.delete(listener);
22
+ };
23
+ }
24
+ pendingNotify = false;
25
+ notify() {
26
+ this.version++;
27
+ if (this.pendingNotify) {
28
+ return;
29
+ }
30
+ this.pendingNotify = true;
31
+ queueMicrotask(() => {
32
+ this.pendingNotify = false;
33
+ for (const listener of this.listeners) {
34
+ try {
35
+ listener();
36
+ } catch (e) {
37
+ console.error(`[StateCell] Listener error:`, e);
38
+ }
39
+ }
40
+ });
41
+ }
42
+ }
@@ -0,0 +1,9 @@
1
+ import { Schema } from "effect";
2
+ import type { PersistenceHandle } from "../forge/descriptors.js";
3
+ import { StateCell } from "./define-cell.js";
4
+ export declare function createPersistedCell<T, TEncoded = T>(
5
+ schema: Schema.Schema<T, TEncoded, never>,
6
+ handle: PersistenceHandle,
7
+ initialValue: T,
8
+ key?: string,
9
+ ): StateCell<T>;
@@ -0,0 +1,57 @@
1
+ import { Effect, Schema, SubscriptionRef } from "effect";
2
+ import { StateCell } from "./define-cell.js";
3
+ export function createPersistedCell(schema, handle, initialValue, key = "") {
4
+ const ref = SubscriptionRef.make(initialValue).pipe(Effect.runSync);
5
+ const cell = new StateCell(ref);
6
+ const applyValue = (val) => {
7
+ if (val !== null && val !== undefined) {
8
+ try {
9
+ const parsed = JSON.parse(val);
10
+ const decoded = Schema.decodeUnknownSync(schema)(parsed);
11
+ cell.set(decoded);
12
+ } catch {
13
+ try {
14
+ const decoded = Schema.decodeUnknownSync(schema)(val);
15
+ cell.set(decoded);
16
+ } catch {
17
+ // ignore decoding errors, keep initial value
18
+ }
19
+ }
20
+ }
21
+ };
22
+ const saved = handle.get(key);
23
+ if (saved instanceof Promise) {
24
+ saved.then(applyValue).catch(() => {});
25
+ } else {
26
+ applyValue(saved);
27
+ }
28
+ const originalSet = cell.set.bind(cell);
29
+ cell.set = (value) => {
30
+ const oldValue = cell.get();
31
+ originalSet(value);
32
+ try {
33
+ const encoded = Schema.encodeSync(schema)(value);
34
+ const stringValue =
35
+ typeof encoded === "string" ? encoded : JSON.stringify(encoded);
36
+ const res = handle.set(key, stringValue);
37
+ if (res instanceof Promise) {
38
+ return res.catch((e) => {
39
+ originalSet(oldValue);
40
+ console.error(
41
+ `[PersistedCell] Failed to save value (reverted to old value):`,
42
+ e,
43
+ );
44
+ throw e;
45
+ });
46
+ }
47
+ } catch (e) {
48
+ originalSet(oldValue);
49
+ console.error(
50
+ `[PersistedCell] Failed to save value (reverted to old value):`,
51
+ e,
52
+ );
53
+ throw e;
54
+ }
55
+ };
56
+ return cell;
57
+ }
@@ -0,0 +1,31 @@
1
+ import type { PersistenceDriver } from "../ports/persistence.js";
2
+ export type ConfigStore<T, K extends keyof T = keyof T> = {
3
+ current: T[K];
4
+ available: T[];
5
+ set(id: T[K]): void;
6
+ get(id: T[K]): T | undefined;
7
+ getProp<P extends keyof T>(prop: P, id?: T[K]): T[P] | undefined;
8
+ addItems(newItems: T[]): void;
9
+ onChange: (cb: (newId: T[K], oldId: T[K]) => void) => () => void;
10
+ setDriver: (driver: PersistenceDriver) => void;
11
+ };
12
+ export interface ConfigStoreOptions<T, K extends keyof T = keyof T> {
13
+ items: readonly T[];
14
+ storageKey: string;
15
+ displayName: string;
16
+ idKey: K;
17
+ icon?: string;
18
+ driver?: PersistenceDriver;
19
+ }
20
+ export declare class ConfigStoreImpl<T, K extends keyof T> {
21
+ #private;
22
+ current: T[K];
23
+ available: T[];
24
+ constructor(options: ConfigStoreOptions<T, K>);
25
+ setDriver(driver: PersistenceDriver): void;
26
+ set(id: T[K]): void;
27
+ onChange(cb: (newId: T[K], oldId: T[K]) => void): () => void;
28
+ get(id: T[K]): T | undefined;
29
+ getProp<P extends keyof T>(prop: P, id?: T[K]): T[P] | undefined;
30
+ addItems(newItems: T[]): void;
31
+ }
@@ -0,0 +1,79 @@
1
+ import { createInMemoryDriver } from "../persistence/memory.js";
2
+ export class ConfigStoreImpl {
3
+ current = null;
4
+ available = [];
5
+ #options;
6
+ #driver;
7
+ #callbacks = new Set();
8
+ constructor(options) {
9
+ this.#options = options;
10
+ const { items, idKey, driver = createInMemoryDriver() } = options;
11
+ this.#driver = driver;
12
+ this.available = [...items];
13
+ this.current = items[0][idKey];
14
+ this.#loadFromDriver(this.#driver);
15
+ }
16
+ #loadFromDriver(driver) {
17
+ const saved = driver.get(this.#options.storageKey);
18
+ if (saved instanceof Promise) {
19
+ saved
20
+ .then((val) => {
21
+ if (val && this.get(val)) {
22
+ const old = this.current;
23
+ this.current = val;
24
+ this.#notify(val, old);
25
+ }
26
+ })
27
+ .catch(() => {});
28
+ } else if (saved && this.get(saved)) {
29
+ this.current = saved;
30
+ }
31
+ }
32
+ setDriver(driver) {
33
+ this.#driver = driver;
34
+ this.#loadFromDriver(driver);
35
+ }
36
+ set(id) {
37
+ const item = this.get(id);
38
+ if (!item) {
39
+ console.warn(`${this.#options.displayName} "${id}" not found`);
40
+ return;
41
+ }
42
+ const old = this.current;
43
+ this.current = id;
44
+ this.#driver.set(this.#options.storageKey, String(id));
45
+ this.#notify(id, old);
46
+ }
47
+ #notify(newId, oldId) {
48
+ this.#callbacks.forEach((cb) => {
49
+ try {
50
+ cb(newId, oldId);
51
+ } catch (err) {
52
+ console.error(
53
+ `[rune-lab/core] Error in ${this.#options.displayName} onChange callback:`,
54
+ err,
55
+ );
56
+ }
57
+ });
58
+ }
59
+ onChange(cb) {
60
+ this.#callbacks.add(cb);
61
+ return () => this.#callbacks.delete(cb);
62
+ }
63
+ get(id) {
64
+ const idKey = this.#options.idKey;
65
+ return this.available.find((item) => item[idKey] === id);
66
+ }
67
+ getProp(prop, id) {
68
+ const targetId = id ?? this.current;
69
+ return this.get(targetId)?.[prop];
70
+ }
71
+ addItems(newItems) {
72
+ const idKey = this.#options.idKey;
73
+ for (const item of newItems) {
74
+ if (!this.get(item[idKey])) {
75
+ this.available.push(item);
76
+ }
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,21 @@
1
+ export interface ContributionKey<T> {
2
+ readonly id: string;
3
+ readonly __brand?: T;
4
+ }
5
+ export interface ContributionEntry<T = unknown> {
6
+ readonly key: ContributionKey<T>;
7
+ readonly items: T[];
8
+ }
9
+ export declare function defineContribution<T>(id: string): ContributionKey<T>;
10
+ export declare function contribute<T>(
11
+ key: ContributionKey<T>,
12
+ ...items: T[]
13
+ ): ContributionEntry<T>;
14
+ export interface SettingsSectionContribution {
15
+ id: string;
16
+ label: string;
17
+ icon?: string;
18
+ fields?: unknown[];
19
+ component?: unknown;
20
+ }
21
+ export declare const settingsSections: ContributionKey<SettingsSectionContribution>;
@@ -0,0 +1,7 @@
1
+ export function defineContribution(id) {
2
+ return { id };
3
+ }
4
+ export function contribute(key, ...items) {
5
+ return { key, items };
6
+ }
7
+ export const settingsSections = defineContribution("settingsSections");
@@ -0,0 +1,33 @@
1
+ import type { ContributionEntry } from "./define-contribution.js";
2
+ import type { SettingsSchema } from "./define-settings.js";
3
+ import type { BaseSlotSpec } from "./define-slot.js";
4
+ import { type SlotDescriptor } from "./descriptors.js";
5
+ export interface ForgedPlugin<
6
+ TId extends string = string,
7
+ TSlots extends Record<string, BaseSlotSpec> = Record<string, BaseSlotSpec>,
8
+ > {
9
+ id: TId;
10
+ requires?: string[];
11
+ slots: TSlots;
12
+ settings?: SettingsSchema;
13
+ overlays?: unknown[];
14
+ contributions?: ContributionEntry<unknown>[];
15
+ descriptors: Record<keyof TSlots, SlotDescriptor>;
16
+ }
17
+ export type PluginInput =
18
+ | ForgedPlugin<string, Record<string, BaseSlotSpec>>
19
+ | PluginInput[]
20
+ | null
21
+ | undefined
22
+ | boolean;
23
+ export declare function definePlugin<
24
+ TId extends string,
25
+ TSlots extends Record<string, BaseSlotSpec>,
26
+ >(spec: {
27
+ id: TId;
28
+ requires?: string[];
29
+ slots?: TSlots;
30
+ settings?: SettingsSchema;
31
+ overlays?: unknown[];
32
+ contributions?: ContributionEntry<unknown>[];
33
+ }): ForgedPlugin<TId, TSlots>;
@@ -0,0 +1,21 @@
1
+ import { getAccessorName, getContextSymbol } from "./descriptors.js";
2
+ export function definePlugin(spec) {
3
+ const slots = spec.slots || {};
4
+ const descriptors = {};
5
+ for (const slotName of Object.keys(slots)) {
6
+ descriptors[slotName] = {
7
+ slotName,
8
+ contextKey: getContextSymbol(spec.id, slotName),
9
+ accessorName: getAccessorName(slotName),
10
+ };
11
+ }
12
+ return {
13
+ id: spec.id,
14
+ requires: spec.requires,
15
+ slots: slots,
16
+ settings: spec.settings,
17
+ overlays: spec.overlays,
18
+ contributions: spec.contributions,
19
+ descriptors: descriptors,
20
+ };
21
+ }
@@ -0,0 +1,33 @@
1
+ export interface SettingsFieldSchema {
2
+ id: string;
3
+ label: string;
4
+ type: "select" | "toggle" | "text" | "number" | "range" | "color" | "custom";
5
+ component?: unknown;
6
+ options?: {
7
+ value: unknown;
8
+ label: string;
9
+ }[];
10
+ min?: number;
11
+ max?: number;
12
+ step?: number;
13
+ target:
14
+ | {
15
+ type: "cell";
16
+ name: string;
17
+ }
18
+ | {
19
+ type: "store";
20
+ storeId: string;
21
+ property: string;
22
+ }
23
+ | {
24
+ type: "callback";
25
+ };
26
+ }
27
+ export interface SettingsSchema {
28
+ id: string;
29
+ label: string;
30
+ icon?: string;
31
+ fields: SettingsFieldSchema[];
32
+ }
33
+ export declare function defineSettings(schema: SettingsSchema): SettingsSchema;