rune-lab 0.3.1 → 0.4.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 (397) hide show
  1. package/.gitignore +12 -0
  2. package/README.md +4 -4
  3. package/deno.json +50 -0
  4. package/justfile +5 -0
  5. package/package.json +3 -80
  6. package/scripts/build_pkg.ts +51 -0
  7. package/scripts/ci.just +26 -0
  8. package/scripts/deploy.just +21 -0
  9. package/scripts/dev.just +4 -0
  10. package/scripts/inject.just +72 -0
  11. package/src/RuneProvider.svelte +105 -0
  12. package/src/i18n/message-resolver.test.ts +103 -0
  13. package/src/i18n/message-resolver.ts +89 -0
  14. package/src/i18n/project.inlang/settings.json +26 -0
  15. package/src/i18n/translations/ar.json +89 -0
  16. package/src/i18n/translations/de.json +89 -0
  17. package/src/i18n/translations/en.json +89 -0
  18. package/src/i18n/translations/es.json +89 -0
  19. package/src/i18n/translations/fr.json +89 -0
  20. package/src/i18n/translations/hi.json +89 -0
  21. package/src/i18n/translations/it.json +89 -0
  22. package/src/i18n/translations/ja.json +89 -0
  23. package/src/i18n/translations/ko.json +89 -0
  24. package/src/i18n/translations/pt.json +89 -0
  25. package/src/i18n/translations/ru.json +89 -0
  26. package/src/i18n/translations/vi.json +89 -0
  27. package/src/i18n/translations/zh.json +89 -0
  28. package/src/kernel/deno.json +5 -0
  29. package/src/kernel/src/actions/portal.ts +41 -0
  30. package/src/kernel/src/actions/shortcut-listener.ts +50 -0
  31. package/src/kernel/src/context/app.svelte.ts +98 -0
  32. package/src/kernel/src/context/context.ts +31 -0
  33. package/src/kernel/src/context/stores.svelte.ts +96 -0
  34. package/src/kernel/src/context/types.ts +110 -0
  35. package/src/kernel/src/context/useRuneLab.ts +38 -0
  36. package/src/kernel/src/mod.ts +13 -0
  37. package/src/kernel/src/persistence/createConfigStore.svelte.ts +120 -0
  38. package/src/kernel/src/persistence/drivers.test.ts +95 -0
  39. package/src/kernel/src/persistence/drivers.ts +77 -0
  40. package/src/kernel/src/persistence/provider.test.ts +58 -0
  41. package/src/kernel/src/persistence/provider.ts +58 -0
  42. package/src/kernel/src/persistence/types.ts +19 -0
  43. package/src/kernel/src/persistence/usePersistence.ts +9 -0
  44. package/src/kernel/src/registry/mod.ts +221 -0
  45. package/src/kernel/src/registry/registry.test.ts +162 -0
  46. package/src/kernel/src/tokens/props.ts +94 -0
  47. package/src/mod.ts +10 -0
  48. package/src/runes/layout/deno.json +5 -0
  49. package/src/runes/layout/src/APP_CONFIGURATIONS.ts +56 -0
  50. package/{dist/ui/features/config → src/runes/layout/src}/AppSettingSelector.svelte +1 -1
  51. package/{dist/ui/layout → src/runes/layout/src}/ConnectedNavigationPanel.svelte +7 -8
  52. package/{dist/ui/layout → src/runes/layout/src}/ConnectedWorkspaceStrip.svelte +5 -3
  53. package/src/runes/layout/src/Icon.svelte +7 -0
  54. package/src/runes/layout/src/LanguageSelector.svelte +45 -0
  55. package/{dist/ui/layout → src/runes/layout/src}/NavigationPanel.svelte +1 -4
  56. package/src/runes/layout/src/ResourceSelector.svelte +90 -0
  57. package/src/runes/layout/src/ThemeSelector.svelte +50 -0
  58. package/{dist/ui/layout → src/runes/layout/src}/WorkspaceLayout.svelte +13 -3
  59. package/{dist/ui/layout → src/runes/layout/src}/WorkspaceStrip.svelte +1 -1
  60. package/src/runes/layout/src/connection-factory.ts +95 -0
  61. package/src/runes/layout/src/language.svelte.ts +44 -0
  62. package/src/runes/layout/src/mod.ts +71 -0
  63. package/src/runes/layout/src/store.svelte.ts +142 -0
  64. package/src/runes/layout/src/theme.svelte.ts +73 -0
  65. package/src/runes/layout/src/types.ts +11 -0
  66. package/src/runes/palettes/deno.json +8 -0
  67. package/{dist/ui/features/command-palette → src/runes/palettes/src/commands}/CommandPalette.svelte +4 -4
  68. package/src/runes/palettes/src/commands/mod.ts +2 -0
  69. package/src/runes/palettes/src/commands/store.svelte.ts +80 -0
  70. package/src/runes/palettes/src/mod.ts +51 -0
  71. package/{dist/ui/components → src/runes/palettes/src/notifications}/Toaster.svelte +1 -2
  72. package/src/runes/palettes/src/notifications/bridge.ts +56 -0
  73. package/src/runes/palettes/src/notifications/mod.ts +4 -0
  74. package/src/runes/palettes/src/notifications/store.svelte.ts +58 -0
  75. package/{dist/ui/features → src/runes/palettes/src}/shortcuts/ShortcutPalette.svelte +4 -4
  76. package/src/runes/palettes/src/shortcuts/mod.ts +4 -0
  77. package/src/runes/palettes/src/shortcuts/store.svelte.ts +85 -0
  78. package/src/runes/palettes/src/shortcuts/types.ts +4 -0
  79. package/src/runes/palettes/src/shortcuts/useShortcuts.ts +85 -0
  80. package/src/runes/plugins/money/deno.json +8 -0
  81. package/src/runes/plugins/money/src/CurrencySelector.svelte +41 -0
  82. package/src/runes/plugins/money/src/MoneyDisplay.svelte +142 -0
  83. package/src/runes/plugins/money/src/MoneyInput.svelte +208 -0
  84. package/src/runes/plugins/money/src/currency.svelte.ts +95 -0
  85. package/src/runes/plugins/money/src/currency.test.ts +40 -0
  86. package/src/runes/plugins/money/src/exchange-rate.svelte.ts +176 -0
  87. package/src/runes/plugins/money/src/exchange-rate.test.ts +95 -0
  88. package/src/runes/plugins/money/src/mod.ts +79 -0
  89. package/src/runes/plugins/money/src/money-primitive.test.ts +217 -0
  90. package/src/runes/plugins/money/src/money-primitive.ts +220 -0
  91. package/src/runes/plugins/money/src/money.test.ts +183 -0
  92. package/src/runes/plugins/money/src/money.ts +382 -0
  93. package/src/runes/plugins/money/src/strategies.test.ts +143 -0
  94. package/src/runes/plugins/money/src/strategies.ts +95 -0
  95. package/src/runes/plugins/money/src/types.ts +27 -0
  96. package/src/runes/plugins/money/src/useMoney.ts +261 -0
  97. package/src/runes/plugins/money/src/useMoneyFilter.ts +132 -0
  98. package/tsconfig.json +41 -0
  99. package/vite.config.ts +44 -0
  100. package/dist/core/index.d.ts +0 -4
  101. package/dist/core/index.d.ts.map +0 -1
  102. package/dist/core/index.js +0 -3
  103. package/dist/core/internal/message-resolver.d.ts +0 -42
  104. package/dist/core/internal/message-resolver.d.ts.map +0 -1
  105. package/dist/core/internal/message-resolver.js +0 -47
  106. package/dist/core/money/index.d.ts +0 -2
  107. package/dist/core/money/index.d.ts.map +0 -1
  108. package/dist/core/money/index.js +0 -2
  109. package/dist/core/money/money.d.ts +0 -57
  110. package/dist/core/money/money.d.ts.map +0 -1
  111. package/dist/core/money/money.js +0 -132
  112. package/dist/core/persistence/types.d.ts +0 -18
  113. package/dist/core/persistence/types.d.ts.map +0 -1
  114. package/dist/core/persistence/types.js +0 -2
  115. package/dist/index.d.ts +0 -5
  116. package/dist/index.js +0 -5
  117. package/dist/state/api.svelte.d.ts +0 -26
  118. package/dist/state/api.svelte.js +0 -65
  119. package/dist/state/app.svelte.d.ts +0 -48
  120. package/dist/state/app.svelte.js +0 -82
  121. package/dist/state/auth/index.d.ts +0 -2
  122. package/dist/state/auth/index.js +0 -2
  123. package/dist/state/auth/session.svelte.d.ts +0 -40
  124. package/dist/state/auth/session.svelte.js +0 -57
  125. package/dist/state/auth/types.d.ts +0 -30
  126. package/dist/state/auth/types.js +0 -3
  127. package/dist/state/cart.svelte.d.ts +0 -64
  128. package/dist/state/cart.svelte.js +0 -122
  129. package/dist/state/commands.svelte.d.ts +0 -46
  130. package/dist/state/commands.svelte.js +0 -62
  131. package/dist/state/composables/useMoney.d.ts +0 -15
  132. package/dist/state/composables/useMoney.js +0 -62
  133. package/dist/state/composables/usePersistence.d.ts +0 -2
  134. package/dist/state/composables/usePersistence.js +0 -5
  135. package/dist/state/composables/useRuneLab.d.ts +0 -19
  136. package/dist/state/composables/useRuneLab.js +0 -30
  137. package/dist/state/context.d.ts +0 -14
  138. package/dist/state/context.js +0 -15
  139. package/dist/state/createConfigStore.svelte.d.ts +0 -55
  140. package/dist/state/createConfigStore.svelte.js +0 -61
  141. package/dist/state/currency.svelte.d.ts +0 -28
  142. package/dist/state/currency.svelte.js +0 -80
  143. package/dist/state/daisyui.d.ts +0 -4
  144. package/dist/state/index.d.ts +0 -19
  145. package/dist/state/index.js +0 -25
  146. package/dist/state/language.svelte.d.ts +0 -64
  147. package/dist/state/language.svelte.js +0 -44
  148. package/dist/state/layout.svelte.d.ts +0 -49
  149. package/dist/state/layout.svelte.js +0 -108
  150. package/dist/state/persistence/drivers.d.ts +0 -12
  151. package/dist/state/persistence/drivers.js +0 -73
  152. package/dist/state/shortcuts.svelte.d.ts +0 -121
  153. package/dist/state/shortcuts.svelte.js +0 -222
  154. package/dist/state/theme.svelte.d.ts +0 -22
  155. package/dist/state/theme.svelte.js +0 -92
  156. package/dist/state/toast-bridge.d.ts +0 -29
  157. package/dist/state/toast-bridge.js +0 -43
  158. package/dist/state/toast.svelte.d.ts +0 -27
  159. package/dist/state/toast.svelte.js +0 -43
  160. package/dist/ui/actions/portal.d.ts +0 -7
  161. package/dist/ui/actions/portal.js +0 -32
  162. package/dist/ui/components/ApiMonitor.svelte +0 -162
  163. package/dist/ui/components/ApiMonitor.svelte.d.ts +0 -3
  164. package/dist/ui/components/Icon.svelte +0 -108
  165. package/dist/ui/components/Icon.svelte.d.ts +0 -14
  166. package/dist/ui/components/Kyntharil.svelte +0 -48
  167. package/dist/ui/components/Kyntharil.svelte.d.ts +0 -6
  168. package/dist/ui/components/RuneProvider.svelte +0 -198
  169. package/dist/ui/components/RuneProvider.svelte.d.ts +0 -42
  170. package/dist/ui/components/Toaster.svelte.d.ts +0 -18
  171. package/dist/ui/components/money/MoneyDisplay.svelte +0 -69
  172. package/dist/ui/components/money/MoneyDisplay.svelte.d.ts +0 -21
  173. package/dist/ui/components/money/MoneyDisplay.svelte.test.d.ts +0 -1
  174. package/dist/ui/components/money/MoneyDisplay.svelte.test.js +0 -74
  175. package/dist/ui/components/money/MoneyInput.svelte +0 -131
  176. package/dist/ui/components/money/MoneyInput.svelte.d.ts +0 -25
  177. package/dist/ui/components/money/index.d.ts +0 -2
  178. package/dist/ui/components/money/index.js +0 -3
  179. package/dist/ui/components/user/UserAvatar.svelte +0 -66
  180. package/dist/ui/components/user/UserAvatar.svelte.d.ts +0 -13
  181. package/dist/ui/components/user/UserProfile.svelte +0 -79
  182. package/dist/ui/components/user/UserProfile.svelte.d.ts +0 -17
  183. package/dist/ui/components/user/index.d.ts +0 -2
  184. package/dist/ui/components/user/index.js +0 -3
  185. package/dist/ui/features/command-palette/CommandPalette.svelte.d.ts +0 -6
  186. package/dist/ui/features/config/AppSettingSelector.svelte.d.ts +0 -13
  187. package/dist/ui/features/config/CurrencySelector.svelte +0 -67
  188. package/dist/ui/features/config/CurrencySelector.svelte.d.ts +0 -8
  189. package/dist/ui/features/config/LanguageSelector.svelte +0 -66
  190. package/dist/ui/features/config/LanguageSelector.svelte.d.ts +0 -8
  191. package/dist/ui/features/config/ThemeSelector.svelte +0 -73
  192. package/dist/ui/features/config/ThemeSelector.svelte.d.ts +0 -8
  193. package/dist/ui/features/notifications/NotificationBell.svelte.d.ts +0 -11
  194. package/dist/ui/features/notifications/index.d.ts +0 -1
  195. package/dist/ui/features/notifications/index.js +0 -2
  196. package/dist/ui/features/shortcuts/ShortcutPalette.svelte.d.ts +0 -6
  197. package/dist/ui/index.d.ts +0 -26
  198. package/dist/ui/index.js +0 -41
  199. package/dist/ui/layout/ConnectedNavigationPanel.svelte.d.ts +0 -10
  200. package/dist/ui/layout/ConnectedWorkspaceStrip.svelte.d.ts +0 -9
  201. package/dist/ui/layout/ContentArea.svelte.d.ts +0 -8
  202. package/dist/ui/layout/DetailPanel.svelte.d.ts +0 -7
  203. package/dist/ui/layout/NavigationPanel.svelte.d.ts +0 -14
  204. package/dist/ui/layout/WorkspaceLayout.svelte.d.ts +0 -25
  205. package/dist/ui/layout/WorkspaceStrip.svelte.d.ts +0 -11
  206. package/dist/ui/layout/index.d.ts +0 -7
  207. package/dist/ui/layout/index.js +0 -7
  208. package/dist/ui/paraglide/README.md +0 -94
  209. package/dist/ui/paraglide/messages/_index.d.ts +0 -87
  210. package/dist/ui/paraglide/messages/_index.js +0 -88
  211. package/dist/ui/paraglide/messages/abyss.d.ts +0 -16
  212. package/dist/ui/paraglide/messages/abyss.js +0 -84
  213. package/dist/ui/paraglide/messages/acid.d.ts +0 -16
  214. package/dist/ui/paraglide/messages/acid.js +0 -84
  215. package/dist/ui/paraglide/messages/active_toasts.d.ts +0 -16
  216. package/dist/ui/paraglide/messages/active_toasts.js +0 -84
  217. package/dist/ui/paraglide/messages/aed3.d.ts +0 -17
  218. package/dist/ui/paraglide/messages/aed3.js +0 -85
  219. package/dist/ui/paraglide/messages/all_currencies.d.ts +0 -16
  220. package/dist/ui/paraglide/messages/all_currencies.js +0 -84
  221. package/dist/ui/paraglide/messages/all_languages.d.ts +0 -16
  222. package/dist/ui/paraglide/messages/all_languages.js +0 -84
  223. package/dist/ui/paraglide/messages/all_themes.d.ts +0 -16
  224. package/dist/ui/paraglide/messages/all_themes.js +0 -84
  225. package/dist/ui/paraglide/messages/api_status.d.ts +0 -16
  226. package/dist/ui/paraglide/messages/api_status.js +0 -84
  227. package/dist/ui/paraglide/messages/app_info.d.ts +0 -16
  228. package/dist/ui/paraglide/messages/app_info.js +0 -84
  229. package/dist/ui/paraglide/messages/appearance.d.ts +0 -16
  230. package/dist/ui/paraglide/messages/appearance.js +0 -84
  231. package/dist/ui/paraglide/messages/aqua.d.ts +0 -16
  232. package/dist/ui/paraglide/messages/aqua.js +0 -84
  233. package/dist/ui/paraglide/messages/ar.d.ts +0 -16
  234. package/dist/ui/paraglide/messages/ar.js +0 -84
  235. package/dist/ui/paraglide/messages/autumn.d.ts +0 -16
  236. package/dist/ui/paraglide/messages/autumn.js +0 -84
  237. package/dist/ui/paraglide/messages/black.d.ts +0 -16
  238. package/dist/ui/paraglide/messages/black.js +0 -84
  239. package/dist/ui/paraglide/messages/brl3.d.ts +0 -17
  240. package/dist/ui/paraglide/messages/brl3.js +0 -85
  241. package/dist/ui/paraglide/messages/bumblebee.d.ts +0 -16
  242. package/dist/ui/paraglide/messages/bumblebee.js +0 -84
  243. package/dist/ui/paraglide/messages/business.d.ts +0 -16
  244. package/dist/ui/paraglide/messages/business.js +0 -84
  245. package/dist/ui/paraglide/messages/cad3.d.ts +0 -17
  246. package/dist/ui/paraglide/messages/cad3.js +0 -85
  247. package/dist/ui/paraglide/messages/caramellatte.d.ts +0 -16
  248. package/dist/ui/paraglide/messages/caramellatte.js +0 -84
  249. package/dist/ui/paraglide/messages/cmyk.d.ts +0 -16
  250. package/dist/ui/paraglide/messages/cmyk.js +0 -84
  251. package/dist/ui/paraglide/messages/cny3.d.ts +0 -17
  252. package/dist/ui/paraglide/messages/cny3.js +0 -85
  253. package/dist/ui/paraglide/messages/coffee.d.ts +0 -16
  254. package/dist/ui/paraglide/messages/coffee.js +0 -84
  255. package/dist/ui/paraglide/messages/commands_label.d.ts +0 -16
  256. package/dist/ui/paraglide/messages/commands_label.js +0 -84
  257. package/dist/ui/paraglide/messages/corporate.d.ts +0 -16
  258. package/dist/ui/paraglide/messages/corporate.js +0 -84
  259. package/dist/ui/paraglide/messages/cupcake.d.ts +0 -16
  260. package/dist/ui/paraglide/messages/cupcake.js +0 -84
  261. package/dist/ui/paraglide/messages/currency.d.ts +0 -16
  262. package/dist/ui/paraglide/messages/currency.js +0 -84
  263. package/dist/ui/paraglide/messages/current_currency.d.ts +0 -16
  264. package/dist/ui/paraglide/messages/current_currency.js +0 -84
  265. package/dist/ui/paraglide/messages/current_language.d.ts +0 -16
  266. package/dist/ui/paraglide/messages/current_language.js +0 -84
  267. package/dist/ui/paraglide/messages/current_theme.d.ts +0 -16
  268. package/dist/ui/paraglide/messages/current_theme.js +0 -84
  269. package/dist/ui/paraglide/messages/currently_in_queue.d.ts +0 -16
  270. package/dist/ui/paraglide/messages/currently_in_queue.js +0 -84
  271. package/dist/ui/paraglide/messages/cyberpunk.d.ts +0 -16
  272. package/dist/ui/paraglide/messages/cyberpunk.js +0 -84
  273. package/dist/ui/paraglide/messages/dark.d.ts +0 -16
  274. package/dist/ui/paraglide/messages/dark.js +0 -84
  275. package/dist/ui/paraglide/messages/de.d.ts +0 -16
  276. package/dist/ui/paraglide/messages/de.js +0 -84
  277. package/dist/ui/paraglide/messages/dim.d.ts +0 -16
  278. package/dist/ui/paraglide/messages/dim.js +0 -84
  279. package/dist/ui/paraglide/messages/dracula.d.ts +0 -16
  280. package/dist/ui/paraglide/messages/dracula.js +0 -84
  281. package/dist/ui/paraglide/messages/emerald.d.ts +0 -16
  282. package/dist/ui/paraglide/messages/emerald.js +0 -84
  283. package/dist/ui/paraglide/messages/en.d.ts +0 -16
  284. package/dist/ui/paraglide/messages/en.js +0 -84
  285. package/dist/ui/paraglide/messages/es.d.ts +0 -16
  286. package/dist/ui/paraglide/messages/es.js +0 -84
  287. package/dist/ui/paraglide/messages/eur3.d.ts +0 -17
  288. package/dist/ui/paraglide/messages/eur3.js +0 -85
  289. package/dist/ui/paraglide/messages/extended_controls.d.ts +0 -16
  290. package/dist/ui/paraglide/messages/extended_controls.js +0 -84
  291. package/dist/ui/paraglide/messages/fantasy.d.ts +0 -16
  292. package/dist/ui/paraglide/messages/fantasy.js +0 -84
  293. package/dist/ui/paraglide/messages/forest.d.ts +0 -16
  294. package/dist/ui/paraglide/messages/forest.js +0 -84
  295. package/dist/ui/paraglide/messages/fr.d.ts +0 -16
  296. package/dist/ui/paraglide/messages/fr.js +0 -84
  297. package/dist/ui/paraglide/messages/garden.d.ts +0 -16
  298. package/dist/ui/paraglide/messages/garden.js +0 -84
  299. package/dist/ui/paraglide/messages/gbp3.d.ts +0 -17
  300. package/dist/ui/paraglide/messages/gbp3.js +0 -85
  301. package/dist/ui/paraglide/messages/halloween.d.ts +0 -16
  302. package/dist/ui/paraglide/messages/halloween.js +0 -84
  303. package/dist/ui/paraglide/messages/hello_world.d.ts +0 -18
  304. package/dist/ui/paraglide/messages/hello_world.js +0 -84
  305. package/dist/ui/paraglide/messages/hi.d.ts +0 -16
  306. package/dist/ui/paraglide/messages/hi.js +0 -84
  307. package/dist/ui/paraglide/messages/inr3.d.ts +0 -17
  308. package/dist/ui/paraglide/messages/inr3.js +0 -85
  309. package/dist/ui/paraglide/messages/it.d.ts +0 -16
  310. package/dist/ui/paraglide/messages/it.js +0 -84
  311. package/dist/ui/paraglide/messages/ja.d.ts +0 -16
  312. package/dist/ui/paraglide/messages/ja.js +0 -84
  313. package/dist/ui/paraglide/messages/jpy3.d.ts +0 -17
  314. package/dist/ui/paraglide/messages/jpy3.js +0 -85
  315. package/dist/ui/paraglide/messages/ko.d.ts +0 -16
  316. package/dist/ui/paraglide/messages/ko.js +0 -84
  317. package/dist/ui/paraglide/messages/krw3.d.ts +0 -17
  318. package/dist/ui/paraglide/messages/krw3.js +0 -85
  319. package/dist/ui/paraglide/messages/languages.d.ts +0 -16
  320. package/dist/ui/paraglide/messages/languages.js +0 -84
  321. package/dist/ui/paraglide/messages/lemonade.d.ts +0 -16
  322. package/dist/ui/paraglide/messages/lemonade.js +0 -84
  323. package/dist/ui/paraglide/messages/light.d.ts +0 -16
  324. package/dist/ui/paraglide/messages/light.js +0 -84
  325. package/dist/ui/paraglide/messages/live_store_dashboard.d.ts +0 -16
  326. package/dist/ui/paraglide/messages/live_store_dashboard.js +0 -84
  327. package/dist/ui/paraglide/messages/localization.d.ts +0 -16
  328. package/dist/ui/paraglide/messages/localization.js +0 -84
  329. package/dist/ui/paraglide/messages/lofi.d.ts +0 -16
  330. package/dist/ui/paraglide/messages/lofi.js +0 -84
  331. package/dist/ui/paraglide/messages/luxury.d.ts +0 -16
  332. package/dist/ui/paraglide/messages/luxury.js +0 -84
  333. package/dist/ui/paraglide/messages/mxn3.d.ts +0 -17
  334. package/dist/ui/paraglide/messages/mxn3.js +0 -85
  335. package/dist/ui/paraglide/messages/name_label.d.ts +0 -16
  336. package/dist/ui/paraglide/messages/name_label.js +0 -84
  337. package/dist/ui/paraglide/messages/night.d.ts +0 -16
  338. package/dist/ui/paraglide/messages/night.js +0 -84
  339. package/dist/ui/paraglide/messages/nord.d.ts +0 -16
  340. package/dist/ui/paraglide/messages/nord.js +0 -84
  341. package/dist/ui/paraglide/messages/pastel.d.ts +0 -16
  342. package/dist/ui/paraglide/messages/pastel.js +0 -84
  343. package/dist/ui/paraglide/messages/pt.d.ts +0 -16
  344. package/dist/ui/paraglide/messages/pt.js +0 -84
  345. package/dist/ui/paraglide/messages/real_time_monitor_desc.d.ts +0 -16
  346. package/dist/ui/paraglide/messages/real_time_monitor_desc.js +0 -84
  347. package/dist/ui/paraglide/messages/registered_in_registry.d.ts +0 -16
  348. package/dist/ui/paraglide/messages/registered_in_registry.js +0 -84
  349. package/dist/ui/paraglide/messages/retro.d.ts +0 -16
  350. package/dist/ui/paraglide/messages/retro.js +0 -84
  351. package/dist/ui/paraglide/messages/ru.d.ts +0 -16
  352. package/dist/ui/paraglide/messages/ru.js +0 -84
  353. package/dist/ui/paraglide/messages/silk.d.ts +0 -16
  354. package/dist/ui/paraglide/messages/silk.js +0 -84
  355. package/dist/ui/paraglide/messages/state_label.d.ts +0 -16
  356. package/dist/ui/paraglide/messages/state_label.js +0 -84
  357. package/dist/ui/paraglide/messages/sunset.d.ts +0 -16
  358. package/dist/ui/paraglide/messages/sunset.js +0 -84
  359. package/dist/ui/paraglide/messages/synthwave.d.ts +0 -16
  360. package/dist/ui/paraglide/messages/synthwave.js +0 -84
  361. package/dist/ui/paraglide/messages/system.d.ts +0 -16
  362. package/dist/ui/paraglide/messages/system.js +0 -84
  363. package/dist/ui/paraglide/messages/theme.d.ts +0 -16
  364. package/dist/ui/paraglide/messages/theme.js +0 -84
  365. package/dist/ui/paraglide/messages/themes.d.ts +0 -16
  366. package/dist/ui/paraglide/messages/themes.js +0 -84
  367. package/dist/ui/paraglide/messages/url_label.d.ts +0 -16
  368. package/dist/ui/paraglide/messages/url_label.js +0 -84
  369. package/dist/ui/paraglide/messages/usd3.d.ts +0 -17
  370. package/dist/ui/paraglide/messages/usd3.js +0 -85
  371. package/dist/ui/paraglide/messages/valentine.d.ts +0 -16
  372. package/dist/ui/paraglide/messages/valentine.js +0 -84
  373. package/dist/ui/paraglide/messages/version_label.d.ts +0 -16
  374. package/dist/ui/paraglide/messages/version_label.js +0 -84
  375. package/dist/ui/paraglide/messages/vi.d.ts +0 -16
  376. package/dist/ui/paraglide/messages/vi.js +0 -84
  377. package/dist/ui/paraglide/messages/winter.d.ts +0 -16
  378. package/dist/ui/paraglide/messages/winter.js +0 -84
  379. package/dist/ui/paraglide/messages/wireframe.d.ts +0 -16
  380. package/dist/ui/paraglide/messages/wireframe.js +0 -84
  381. package/dist/ui/paraglide/messages/zh.d.ts +0 -16
  382. package/dist/ui/paraglide/messages/zh.js +0 -84
  383. package/dist/ui/paraglide/messages.d.ts +0 -2
  384. package/dist/ui/paraglide/messages.js +0 -4
  385. package/dist/ui/paraglide/registry.d.ts +0 -21
  386. package/dist/ui/paraglide/registry.js +0 -31
  387. package/dist/ui/paraglide/runtime.d.ts +0 -749
  388. package/dist/ui/paraglide/runtime.js +0 -1777
  389. package/dist/ui/paraglide/server.d.ts +0 -103
  390. package/dist/ui/paraglide/server.js +0 -248
  391. package/dist/ui/primitives/DatePicker.svelte +0 -257
  392. package/dist/ui/primitives/DatePicker.svelte.d.ts +0 -17
  393. package/dist/ui/primitives/index.d.ts +0 -1
  394. package/dist/ui/primitives/index.js +0 -3
  395. /package/{dist/ui/layout → src/runes/layout/src}/ContentArea.svelte +0 -0
  396. /package/{dist/ui/layout → src/runes/layout/src}/DetailPanel.svelte +0 -0
  397. /package/{dist/ui/features → src/runes/palettes/src}/notifications/NotificationBell.svelte +0 -0
@@ -1,103 +0,0 @@
1
- /**
2
- * Server middleware that handles locale-based routing and request processing.
3
- *
4
- * This middleware performs several key functions:
5
- *
6
- * 1. Determines the locale for the incoming request using configured strategies
7
- * 2. Handles URL localization and redirects (only for document requests)
8
- * 3. Maintains locale state using AsyncLocalStorage to prevent request interference
9
- *
10
- * When URL strategy is used:
11
- *
12
- * - The locale is extracted from the URL for all request types
13
- * - If URL doesn't match the determined locale, redirects to localized URL (only for document requests)
14
- * - De-localizes URLs before passing to server (e.g., `/fr/about` → `/about`)
15
- *
16
- * @see https://inlang.com/m/gerre34r/library-inlang-paraglideJs/middleware
17
- *
18
- * @template T - The return type of the resolve function
19
- *
20
- * @param {Request} request - The incoming request object
21
- * @param {(args: { request: Request, locale: import("./runtime.js").Locale }) => T | Promise<T>} resolve - Function to handle the request. The callback receives:
22
- * - `request`: A modified request with a delocalized URL when the URL strategy is used (e.g., `/fr/about` → `/about`).
23
- * If your framework handles URL localization itself (e.g., TanStack Router's `rewrite` option), use the original
24
- * request instead to avoid redirect loops.
25
- * - `locale`: The determined locale for this request.
26
- * @param {{ onRedirect:(response: Response) => void }} [callbacks] - Callbacks to handle events from middleware
27
- * @returns {Promise<Response>}
28
- *
29
- * @example
30
- * ```typescript
31
- * // Basic usage in metaframeworks like NextJS, SvelteKit, Astro, Nuxt, etc.
32
- * export const handle = async ({ event, resolve }) => {
33
- * return paraglideMiddleware(event.request, ({ request, locale }) => {
34
- * // let the framework further resolve the request
35
- * return resolve(request);
36
- * });
37
- * };
38
- * ```
39
- *
40
- * @example
41
- * ```typescript
42
- * // Usage in a framework like Express JS or Hono
43
- * app.use(async (req, res, next) => {
44
- * const result = await paraglideMiddleware(req, ({ request, locale }) => {
45
- * // If a redirect happens this won't be called
46
- * return next(request);
47
- * });
48
- * });
49
- * ```
50
- *
51
- * @example
52
- * ```typescript
53
- * // Usage in serverless environments like Cloudflare Workers
54
- * // ⚠️ WARNING: This should ONLY be used in serverless environments like Cloudflare Workers.
55
- * // Disabling AsyncLocalStorage in traditional server environments risks cross-request pollution where state from
56
- * // one request could leak into another concurrent request.
57
- * export default {
58
- * fetch: async (request) => {
59
- * return paraglideMiddleware(
60
- * request,
61
- * ({ request, locale }) => handleRequest(request, locale),
62
- * { disableAsyncLocalStorage: true }
63
- * );
64
- * }
65
- * };
66
- * ```
67
- *
68
- * @example
69
- * ```typescript
70
- * // Usage with frameworks that handle URL localization/delocalization themselves
71
- * //
72
- * // Some frameworks like TanStack Router handle URL localization and delocalization
73
- * // themselves via their own rewrite APIs (e.g., `rewrite.input`/`rewrite.output`).
74
- * //
75
- * // When the framework handles this, the middleware's URL delocalization is not needed.
76
- * // Using the modified `request` from the callback would cause a redirect loop because
77
- * // both the middleware and the framework would attempt to delocalize the URL.
78
- * //
79
- * // Solution: Pass the original request to the handler instead of the modified one.
80
- * // The middleware still handles locale detection, cookies, and AsyncLocalStorage context.
81
- * //
82
- * // ❌ WRONG - causes redirect loop when framework handles URL rewriting:
83
- * // paraglideMiddleware(req, ({ request }) => handler.fetch(request))
84
- * //
85
- * // ✅ CORRECT - use original request when framework handles URL localization:
86
- * // paraglideMiddleware(req, () => handler.fetch(req))
87
- *
88
- * * *
89
- * export default {
90
- * fetch(req: Request): Promise<Response> {
91
- * // TanStack Router handles URL rewriting via deLocalizeUrl/localizeUrl
92
- * // so we pass the original `req` instead of the modified `request`
93
- * return paraglideMiddleware(req, () => handler.fetch(req))
94
- * },
95
- * }
96
- * ```
97
- */
98
- export function paraglideMiddleware<T>(request: Request, resolve: (args: {
99
- request: Request;
100
- locale: import("./runtime.js").Locale;
101
- }) => T | Promise<T>, callbacks?: {
102
- onRedirect: (response: Response) => void;
103
- }): Promise<Response>;
@@ -1,248 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as runtime from "./runtime.js";
4
-
5
- /**
6
- * Server middleware that handles locale-based routing and request processing.
7
- *
8
- * This middleware performs several key functions:
9
- *
10
- * 1. Determines the locale for the incoming request using configured strategies
11
- * 2. Handles URL localization and redirects (only for document requests)
12
- * 3. Maintains locale state using AsyncLocalStorage to prevent request interference
13
- *
14
- * When URL strategy is used:
15
- *
16
- * - The locale is extracted from the URL for all request types
17
- * - If URL doesn't match the determined locale, redirects to localized URL (only for document requests)
18
- * - De-localizes URLs before passing to server (e.g., `/fr/about` → `/about`)
19
- *
20
- * @see https://inlang.com/m/gerre34r/library-inlang-paraglideJs/middleware
21
- *
22
- * @template T - The return type of the resolve function
23
- *
24
- * @param {Request} request - The incoming request object
25
- * @param {(args: { request: Request, locale: import("./runtime.js").Locale }) => T | Promise<T>} resolve - Function to handle the request. The callback receives:
26
- * - `request`: A modified request with a delocalized URL when the URL strategy is used (e.g., `/fr/about` → `/about`).
27
- * If your framework handles URL localization itself (e.g., TanStack Router's `rewrite` option), use the original
28
- * request instead to avoid redirect loops.
29
- * - `locale`: The determined locale for this request.
30
- * @param {{ onRedirect:(response: Response) => void }} [callbacks] - Callbacks to handle events from middleware
31
- * @returns {Promise<Response>}
32
- *
33
- * @example
34
- * ```typescript
35
- * // Basic usage in metaframeworks like NextJS, SvelteKit, Astro, Nuxt, etc.
36
- * export const handle = async ({ event, resolve }) => {
37
- * return paraglideMiddleware(event.request, ({ request, locale }) => {
38
- * // let the framework further resolve the request
39
- * return resolve(request);
40
- * });
41
- * };
42
- * ```
43
- *
44
- * @example
45
- * ```typescript
46
- * // Usage in a framework like Express JS or Hono
47
- * app.use(async (req, res, next) => {
48
- * const result = await paraglideMiddleware(req, ({ request, locale }) => {
49
- * // If a redirect happens this won't be called
50
- * return next(request);
51
- * });
52
- * });
53
- * ```
54
- *
55
- * @example
56
- * ```typescript
57
- * // Usage in serverless environments like Cloudflare Workers
58
- * // ⚠️ WARNING: This should ONLY be used in serverless environments like Cloudflare Workers.
59
- * // Disabling AsyncLocalStorage in traditional server environments risks cross-request pollution where state from
60
- * // one request could leak into another concurrent request.
61
- * export default {
62
- * fetch: async (request) => {
63
- * return paraglideMiddleware(
64
- * request,
65
- * ({ request, locale }) => handleRequest(request, locale),
66
- * { disableAsyncLocalStorage: true }
67
- * );
68
- * }
69
- * };
70
- * ```
71
- *
72
- * @example
73
- * ```typescript
74
- * // Usage with frameworks that handle URL localization/delocalization themselves
75
- * //
76
- * // Some frameworks like TanStack Router handle URL localization and delocalization
77
- * // themselves via their own rewrite APIs (e.g., `rewrite.input`/`rewrite.output`).
78
- * //
79
- * // When the framework handles this, the middleware's URL delocalization is not needed.
80
- * // Using the modified `request` from the callback would cause a redirect loop because
81
- * // both the middleware and the framework would attempt to delocalize the URL.
82
- * //
83
- * // Solution: Pass the original request to the handler instead of the modified one.
84
- * // The middleware still handles locale detection, cookies, and AsyncLocalStorage context.
85
- * //
86
- * // ❌ WRONG - causes redirect loop when framework handles URL rewriting:
87
- * // paraglideMiddleware(req, ({ request }) => handler.fetch(request))
88
- * //
89
- * // ✅ CORRECT - use original request when framework handles URL localization:
90
- * // paraglideMiddleware(req, () => handler.fetch(req))
91
- *
92
- * * *
93
- * export default {
94
- * fetch(req: Request): Promise<Response> {
95
- * // TanStack Router handles URL rewriting via deLocalizeUrl/localizeUrl
96
- * // so we pass the original `req` instead of the modified `request`
97
- * return paraglideMiddleware(req, () => handler.fetch(req))
98
- * },
99
- * }
100
- * ```
101
- */
102
- export async function paraglideMiddleware(request, resolve, callbacks) {
103
- if (!runtime.disableAsyncLocalStorage && !runtime.serverAsyncLocalStorage) {
104
- const { AsyncLocalStorage } = await import("async_hooks");
105
- runtime.overwriteServerAsyncLocalStorage(new AsyncLocalStorage());
106
- } else if (!runtime.serverAsyncLocalStorage) {
107
- runtime.overwriteServerAsyncLocalStorage(createMockAsyncLocalStorage());
108
- }
109
- if (runtime.isExcludedByRouteStrategy(request.url)) {
110
- const locale = runtime.baseLocale;
111
- const origin = new URL(request.url).origin;
112
- const newRequest = cloneRequestWithFallback(request);
113
- /** @type {Set<string>} */
114
- const messageCalls = new Set();
115
- return /** @type {Response} */ (await runtime.serverAsyncLocalStorage?.run({ locale, origin, messageCalls }, () => resolve({ locale, request: newRequest })));
116
- }
117
- const strategy = runtime.getStrategyForUrl(request.url);
118
- const decision = await runtime.shouldRedirect({ request });
119
- const locale = decision.locale;
120
- const origin = new URL(request.url).origin;
121
- // if the client makes a request to a URL that doesn't match
122
- // the localizedUrl, redirect the client to the localized URL
123
- if (request.headers.get("Sec-Fetch-Dest") === "document" &&
124
- decision.shouldRedirect &&
125
- decision.redirectUrl) {
126
- // Create headers object with Vary header if preferredLanguage strategy is used
127
- /** @type {Record<string, string>} */
128
- const headers = {};
129
- if (strategy.includes("preferredLanguage")) {
130
- headers["Vary"] = "Accept-Language";
131
- }
132
- const response = new Response(null, {
133
- status: 307,
134
- headers: {
135
- Location: decision.redirectUrl.href,
136
- ...headers,
137
- },
138
- });
139
- callbacks?.onRedirect(response);
140
- return response;
141
- }
142
- // If the strategy includes "url", we need to de-localize the URL
143
- // before passing it to the server middleware.
144
- //
145
- // The middleware is responsible for mapping a localized URL to the
146
- // de-localized URL e.g. `/en/about` to `/about`. Otherwise,
147
- // the server can't render the correct page.
148
- let newRequest;
149
- if (strategy.includes("url")) {
150
- newRequest = new Request(runtime.deLocalizeUrl(request.url), request);
151
- }
152
- else {
153
- newRequest = cloneRequestWithFallback(request);
154
- }
155
- // the message functions that have been called in this request
156
- /** @type {Set<string>} */
157
- const messageCalls = new Set();
158
- const response = await runtime.serverAsyncLocalStorage?.run({ locale, origin, messageCalls }, () => resolve({ locale, request: newRequest }));
159
- // Only modify HTML responses
160
- if (runtime.experimentalMiddlewareLocaleSplitting &&
161
- response.headers.get("Content-Type")?.includes("html")) {
162
- const body = await response.text();
163
- const messages = [];
164
- // using .values() to avoid polyfilling in older projects. else the following error is thrown
165
- // Type 'Set<string>' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.
166
- for (const messageCall of Array.from(messageCalls)) {
167
- const [id, locale] =
168
- /** @type {[string, import("./runtime.js").Locale]} */ (messageCall.split(":"));
169
- messages.push(`${id}: ${compiledBundles[id]?.[locale]}`);
170
- }
171
- const script = `<script>globalThis.__paraglide_ssr = { ${messages.join(",")} }</script>`;
172
- // Insert the script before the closing head tag
173
- const newBody = body.replace("</head>", `${script}</head>`);
174
- // Create a new response with the modified body
175
- // Clone all headers except Content-Length which will be set automatically
176
- const newHeaders = new Headers(response.headers);
177
- newHeaders.delete("Content-Length"); // Let the browser calculate the correct length
178
- return new Response(newBody, {
179
- status: response.status,
180
- statusText: response.statusText,
181
- headers: newHeaders,
182
- });
183
- }
184
- return response;
185
- }
186
- /**
187
- * Some metaframeworks (NextJS) require a new Request object.
188
- * https://github.com/opral/inlang-paraglide-js/issues/411
189
- *
190
- * However, some frameworks (TanStack Start 1.143+) use custom Request
191
- * implementations that cannot be cloned with `new Request(request)`.
192
- * https://github.com/opral/paraglide-js/issues/573
193
- *
194
- * @param {Request} request
195
- * @returns {Request}
196
- */
197
- function cloneRequestWithFallback(request) {
198
- try {
199
- // Clone first so building a new Request does not consume the original body stream.
200
- return new Request(request.clone());
201
- }
202
- catch {
203
- try {
204
- return new Request(request);
205
- }
206
- catch {
207
- return request;
208
- }
209
- }
210
- }
211
- /**
212
- * Creates a mock AsyncLocalStorage implementation for environments where
213
- * native AsyncLocalStorage is not available or disabled.
214
- *
215
- * This mock implementation mimics the behavior of the native AsyncLocalStorage
216
- * but doesn't require the async_hooks module. It's designed to be used in
217
- * environments like Cloudflare Workers where AsyncLocalStorage is not available.
218
- *
219
- * @returns {import("./runtime.js").ParaglideAsyncLocalStorage}
220
- */
221
- function createMockAsyncLocalStorage() {
222
- /** @type {any} */
223
- let currentStore = undefined;
224
- return {
225
- getStore() {
226
- return currentStore;
227
- },
228
- async run(store, callback) {
229
- currentStore = store;
230
- try {
231
- return await callback();
232
- }
233
- finally {
234
- currentStore = undefined;
235
- }
236
- },
237
- };
238
- }
239
- // Used in generated server.js when async local storage is disabled.
240
- void createMockAsyncLocalStorage;
241
- /**
242
- * The compiled messages for the server middleware.
243
- *
244
- * Only populated if `enableMiddlewareOptimizations` is set to `true`.
245
- *
246
- * @type {Record<string, Record<import("./runtime.js").Locale, string>>}
247
- */
248
- const compiledBundles = {};
@@ -1,257 +0,0 @@
1
- <!--
2
- DatePicker — Locale-aware calendar grid primitive.
3
- Reads LanguageStore from context for weekday/month names.
4
- Zero domain knowledge.
5
- -->
6
- <script module lang="ts">
7
- export interface DatePickerProps {
8
- /** Currently selected date */
9
- value?: Date | string;
10
- /** Disabled dates (cannot be selected) */
11
- disabledDates?: Date[];
12
- /** Highlighted dates (visual emphasis) */
13
- highlightedDates?: Date[];
14
- /** Minimum selectable date */
15
- minDate?: Date;
16
- /** Maximum selectable date */
17
- maxDate?: Date;
18
- /** Fired when a date is selected */
19
- onchange?: (date: Date) => void;
20
- }
21
- </script>
22
-
23
- <script lang="ts">
24
- import { getLanguageStore } from "rune-lab/state";
25
- import { untrack } from "svelte";
26
-
27
- let {
28
- value,
29
- disabledDates = [],
30
- highlightedDates = [],
31
- minDate,
32
- maxDate,
33
- onchange,
34
- }: DatePickerProps = $props();
35
-
36
- const languageStore = getLanguageStore();
37
-
38
- // Parse initial value
39
- function parseDate(d?: Date | string): Date {
40
- if (!d) return new Date();
41
- return typeof d === "string" ? new Date(d) : d;
42
- }
43
-
44
- // Capture the initial value once to avoid state_referenced_locally warnings
45
- const initialDate = untrack(() => parseDate(value));
46
-
47
- let selectedDate = $state(initialDate);
48
- let viewYear = $state(initialDate.getFullYear());
49
- let viewMonth = $state(initialDate.getMonth());
50
-
51
- // Locale-aware formatting
52
- const locale = $derived(String(languageStore.current) || "en");
53
-
54
- const weekdayNames = $derived(
55
- Array.from({ length: 7 }, (_, i) => {
56
- const d = new Date(2024, 0, i + 1); // Mon=1 Jan 2024
57
- return new Intl.DateTimeFormat(locale, { weekday: "short" }).format(
58
- d,
59
- );
60
- }),
61
- );
62
-
63
- const monthName = $derived(
64
- new Intl.DateTimeFormat(locale, { month: "long" }).format(
65
- new Date(viewYear, viewMonth),
66
- ),
67
- );
68
-
69
- // Calendar grid
70
- const calendarDays = $derived.by(() => {
71
- const firstDay = new Date(viewYear, viewMonth, 1);
72
- const lastDay = new Date(viewYear, viewMonth + 1, 0);
73
- const startOffset = (firstDay.getDay() + 6) % 7; // Monday-based
74
- const totalDays = lastDay.getDate();
75
-
76
- const days: (number | null)[] = [];
77
-
78
- // Leading empty slots
79
- for (let i = 0; i < startOffset; i++) days.push(null);
80
- // Actual days
81
- for (let d = 1; d <= totalDays; d++) days.push(d);
82
-
83
- return days;
84
- });
85
-
86
- const today = new Date();
87
- const todayStr = `${today.getFullYear()}-${today.getMonth()}-${today.getDate()}`;
88
-
89
- function dateKey(year: number, month: number, day: number): string {
90
- return `${year}-${month}-${day}`;
91
- }
92
-
93
- const disabledSet = $derived(
94
- new Set(
95
- disabledDates.map((d) =>
96
- dateKey(d.getFullYear(), d.getMonth(), d.getDate()),
97
- ),
98
- ),
99
- );
100
-
101
- const highlightedSet = $derived(
102
- new Set(
103
- highlightedDates.map((d) =>
104
- dateKey(d.getFullYear(), d.getMonth(), d.getDate()),
105
- ),
106
- ),
107
- );
108
-
109
- function isDisabled(day: number): boolean {
110
- const k = dateKey(viewYear, viewMonth, day);
111
- if (disabledSet.has(k)) return true;
112
- const d = new Date(viewYear, viewMonth, day);
113
- if (minDate && d < minDate) return true;
114
- if (maxDate && d > maxDate) return true;
115
- return false;
116
- }
117
-
118
- function isSelected(day: number): boolean {
119
- return (
120
- selectedDate.getFullYear() === viewYear &&
121
- selectedDate.getMonth() === viewMonth &&
122
- selectedDate.getDate() === day
123
- );
124
- }
125
-
126
- function isToday(day: number): boolean {
127
- return dateKey(viewYear, viewMonth, day) === todayStr;
128
- }
129
-
130
- function isHighlighted(day: number): boolean {
131
- return highlightedSet.has(dateKey(viewYear, viewMonth, day));
132
- }
133
-
134
- function selectDay(day: number) {
135
- if (isDisabled(day)) return;
136
- selectedDate = new Date(viewYear, viewMonth, day);
137
- onchange?.(selectedDate);
138
- }
139
-
140
- function prevMonth() {
141
- if (viewMonth === 0) {
142
- viewMonth = 11;
143
- viewYear--;
144
- } else {
145
- viewMonth--;
146
- }
147
- }
148
-
149
- function nextMonth() {
150
- if (viewMonth === 11) {
151
- viewMonth = 0;
152
- viewYear++;
153
- } else {
154
- viewMonth++;
155
- }
156
- }
157
-
158
- function handleKeydown(e: KeyboardEvent) {
159
- const day = selectedDate.getDate();
160
- let newDate: Date | null = null;
161
-
162
- switch (e.key) {
163
- case "ArrowLeft":
164
- newDate = new Date(viewYear, viewMonth, day - 1);
165
- break;
166
- case "ArrowRight":
167
- newDate = new Date(viewYear, viewMonth, day + 1);
168
- break;
169
- case "ArrowUp":
170
- newDate = new Date(viewYear, viewMonth, day - 7);
171
- break;
172
- case "ArrowDown":
173
- newDate = new Date(viewYear, viewMonth, day + 7);
174
- break;
175
- case "Enter":
176
- selectDay(day);
177
- return;
178
- case "Escape":
179
- (e.currentTarget as HTMLElement)?.blur();
180
- return;
181
- default:
182
- return;
183
- }
184
-
185
- if (newDate) {
186
- e.preventDefault();
187
- selectedDate = newDate;
188
- viewYear = newDate.getFullYear();
189
- viewMonth = newDate.getMonth();
190
- }
191
- }
192
- </script>
193
-
194
- <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
195
- <div
196
- class="rl-datepicker inline-flex flex-col gap-2 p-4 rounded-box bg-base-200 border border-base-content/10 select-none"
197
- tabindex="0"
198
- role="grid"
199
- aria-label="Date picker"
200
- onkeydown={handleKeydown}
201
- >
202
- <!-- Header: Month/Year + Navigation -->
203
- <div class="flex items-center justify-between">
204
- <button
205
- class="btn btn-ghost btn-sm btn-square"
206
- onclick={prevMonth}
207
- aria-label="Previous month"
208
- >
209
-
210
- </button>
211
- <span class="font-semibold text-sm capitalize">
212
- {monthName}
213
- {viewYear}
214
- </span>
215
- <button
216
- class="btn btn-ghost btn-sm btn-square"
217
- onclick={nextMonth}
218
- aria-label="Next month"
219
- >
220
-
221
- </button>
222
- </div>
223
-
224
- <!-- Weekday Headers -->
225
- <div class="grid grid-cols-7 gap-1 text-center">
226
- {#each weekdayNames as wd}
227
- <span class="text-xs text-base-content/50 font-medium">{wd}</span>
228
- {/each}
229
- </div>
230
-
231
- <!-- Day Grid -->
232
- <div class="grid grid-cols-7 gap-1">
233
- {#each calendarDays as day}
234
- {#if day === null}
235
- <div></div>
236
- {:else}
237
- <button
238
- class="btn btn-sm btn-square text-xs transition-all duration-150"
239
- class:btn-primary={isSelected(day)}
240
- class:btn-ghost={!isSelected(day)}
241
- class:ring-2={isToday(day) && !isSelected(day)}
242
- class:ring-primary={isToday(day) && !isSelected(day)}
243
- class:btn-disabled={isDisabled(day)}
244
- class:opacity-30={isDisabled(day)}
245
- class:bg-accent={isHighlighted(day) && !isSelected(day)}
246
- class:bg-opacity-20={isHighlighted(day) && !isSelected(day)}
247
- onclick={() => selectDay(day)}
248
- disabled={isDisabled(day)}
249
- aria-label={`${day} ${monthName} ${viewYear}`}
250
- aria-pressed={isSelected(day)}
251
- >
252
- {day}
253
- </button>
254
- {/if}
255
- {/each}
256
- </div>
257
- </div>
@@ -1,17 +0,0 @@
1
- export interface DatePickerProps {
2
- /** Currently selected date */
3
- value?: Date | string;
4
- /** Disabled dates (cannot be selected) */
5
- disabledDates?: Date[];
6
- /** Highlighted dates (visual emphasis) */
7
- highlightedDates?: Date[];
8
- /** Minimum selectable date */
9
- minDate?: Date;
10
- /** Maximum selectable date */
11
- maxDate?: Date;
12
- /** Fired when a date is selected */
13
- onchange?: (date: Date) => void;
14
- }
15
- declare const DatePicker: import("svelte").Component<DatePickerProps, {}, "">;
16
- type DatePicker = ReturnType<typeof DatePicker>;
17
- export default DatePicker;
@@ -1 +0,0 @@
1
- export { default as DatePicker } from "./DatePicker.svelte";
@@ -1,3 +0,0 @@
1
- // sdk/ui/src/lib/primitives/index.ts
2
- // Barrel export for primitive UI components
3
- export { default as DatePicker } from "./DatePicker.svelte";