@toa.io/extensions.configuration 1.0.0-alpha.274 → 1.0.0-alpha.276

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 (501) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/components/configuration.values/operations/create.d.ts +16 -0
  3. package/components/configuration.values/operations/create.js +58 -0
  4. package/components/configuration.values/operations/create.js.map +1 -0
  5. package/components/configuration.values/operations/fetch.d.ts +11 -0
  6. package/components/configuration.values/operations/fetch.js +17 -0
  7. package/components/configuration.values/operations/fetch.js.map +1 -0
  8. package/components/configuration.values/operations/get.d.ts +17 -0
  9. package/components/configuration.values/operations/get.js +23 -0
  10. package/components/configuration.values/operations/get.js.map +1 -0
  11. package/components/configuration.values/operations/lib/map.d.ts +11 -0
  12. package/components/configuration.values/operations/lib/map.js +26 -0
  13. package/components/configuration.values/operations/lib/map.js.map +1 -0
  14. package/components/configuration.values/operations/lib/map.test.d.ts +1 -0
  15. package/components/configuration.values/operations/lib/map.test.js +26 -0
  16. package/components/configuration.values/operations/lib/map.test.js.map +1 -0
  17. package/components/configuration.values/operations/lib/resolve.d.ts +27 -0
  18. package/components/configuration.values/operations/lib/resolve.js +28 -0
  19. package/components/configuration.values/operations/lib/resolve.js.map +1 -0
  20. package/components/configuration.values/operations/list.d.ts +10 -0
  21. package/components/configuration.values/operations/list.js +15 -0
  22. package/components/configuration.values/operations/list.js.map +1 -0
  23. package/components/configuration.values/operations/tsconfig.tsbuildinfo +1 -0
  24. package/features/site/favicon.ico +0 -0
  25. package/features/ui.feature +8 -0
  26. package/package.json +2 -2
  27. package/source/Aspect.ts +7 -2
  28. package/source/UI.ts +16 -1
  29. package/source/deployment.ts +1 -1
  30. package/transpiled/Aspect.js +3 -2
  31. package/transpiled/Aspect.js.map +1 -1
  32. package/transpiled/UI.js +14 -1
  33. package/transpiled/UI.js.map +1 -1
  34. package/transpiled/deployment.d.ts +1 -1
  35. package/transpiled/tsconfig.tsbuildinfo +1 -1
  36. package/ui/dist/_app/env.js +1 -0
  37. package/ui/dist/_app/immutable/assets/0.CNS8Cqhc.css +2 -0
  38. package/ui/dist/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
  39. package/ui/dist/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
  40. package/ui/dist/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
  41. package/ui/dist/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
  42. package/ui/dist/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
  43. package/ui/dist/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
  44. package/ui/dist/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
  45. package/ui/dist/_app/immutable/assets/ui.BghF56l_.css +1 -0
  46. package/ui/dist/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  47. package/ui/dist/_app/immutable/chunks/CDKtbN4n.js +6 -0
  48. package/ui/dist/_app/immutable/chunks/CcD_ISxM.js +3 -0
  49. package/ui/dist/_app/immutable/chunks/Chb3af1a.js +1 -0
  50. package/ui/dist/_app/immutable/chunks/Cov6-56A.js +50 -0
  51. package/ui/dist/_app/immutable/chunks/E7oj41Za.js +1 -0
  52. package/ui/dist/_app/immutable/chunks/MOpxGoVO.js +8 -0
  53. package/ui/dist/_app/immutable/chunks/xihTtKlq.js +1 -0
  54. package/ui/dist/_app/immutable/entry/app.B9v2AwU_.js +2 -0
  55. package/ui/dist/_app/immutable/entry/start.B97KALv1.js +1 -0
  56. package/ui/dist/_app/immutable/nodes/0.DKSa6mGa.js +1 -0
  57. package/ui/dist/_app/immutable/nodes/1.Cnu_jAWf.js +1 -0
  58. package/ui/dist/_app/immutable/nodes/2.Dg1zeC2b.js +1 -0
  59. package/ui/dist/_app/immutable/nodes/3.QCbZIibO.js +1 -0
  60. package/ui/dist/_app/immutable/nodes/4.1bG6DC_9.js +1 -0
  61. package/ui/dist/_app/version.json +1 -0
  62. package/ui/dist/apple-touch-icon.png +0 -0
  63. package/ui/dist/favicon-96x96.png +0 -0
  64. package/ui/dist/favicon.ico +0 -0
  65. package/ui/dist/index.html +52 -0
  66. package/ui/.agents/skills/antcn/SKILL.md +0 -91
  67. package/ui/.agents/skills/antcn/references/analytics.md +0 -78
  68. package/ui/.agents/skills/antcn/references/bridge.md +0 -41
  69. package/ui/.agents/skills/antcn/references/clipboard.md +0 -23
  70. package/ui/.agents/skills/antcn/references/dismissable.md +0 -75
  71. package/ui/.agents/skills/antcn/references/dropdown.md +0 -153
  72. package/ui/.agents/skills/antcn/references/fragments.md +0 -29
  73. package/ui/.agents/skills/antcn/references/fullscreen.md +0 -157
  74. package/ui/.agents/skills/antcn/references/geo.md +0 -27
  75. package/ui/.agents/skills/antcn/references/globals.md +0 -31
  76. package/ui/.agents/skills/antcn/references/grammatical-form.md +0 -69
  77. package/ui/.agents/skills/antcn/references/hints.md +0 -44
  78. package/ui/.agents/skills/antcn/references/hold.md +0 -34
  79. package/ui/.agents/skills/antcn/references/iam.md +0 -117
  80. package/ui/.agents/skills/antcn/references/input-form.md +0 -34
  81. package/ui/.agents/skills/antcn/references/locale.md +0 -66
  82. package/ui/.agents/skills/antcn/references/net.md +0 -33
  83. package/ui/.agents/skills/antcn/references/panel.md +0 -44
  84. package/ui/.agents/skills/antcn/references/passkeys.md +0 -27
  85. package/ui/.agents/skills/antcn/references/payments.md +0 -99
  86. package/ui/.agents/skills/antcn/references/realtime.md +0 -69
  87. package/ui/.agents/skills/antcn/references/scrollable.md +0 -39
  88. package/ui/.agents/skills/antcn/references/selector.md +0 -71
  89. package/ui/.agents/skills/antcn/references/shake.md +0 -36
  90. package/ui/.agents/skills/antcn/references/share.md +0 -28
  91. package/ui/.agents/skills/antcn/references/shell.md +0 -139
  92. package/ui/.agents/skills/antcn/references/stack.md +0 -53
  93. package/ui/.agents/skills/antcn/references/system.md +0 -149
  94. package/ui/.agents/skills/antcn/references/taptap.md +0 -28
  95. package/ui/.agents/skills/antcn/references/tools.md +0 -68
  96. package/ui/.agents/skills/antcn/references/transmission.md +0 -96
  97. package/ui/.agents/skills/shadcn-svelte/SKILL.md +0 -227
  98. package/ui/.agents/skills/shadcn-svelte/agents/openai.yml +0 -5
  99. package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte-small.png +0 -0
  100. package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte.png +0 -0
  101. package/ui/.agents/skills/shadcn-svelte/cli.md +0 -166
  102. package/ui/.agents/skills/shadcn-svelte/customization.md +0 -213
  103. package/ui/.agents/skills/shadcn-svelte/evals/evals.json +0 -47
  104. package/ui/.agents/skills/shadcn-svelte/rules/composition.md +0 -244
  105. package/ui/.agents/skills/shadcn-svelte/rules/forms.md +0 -234
  106. package/ui/.agents/skills/shadcn-svelte/rules/icons.md +0 -107
  107. package/ui/.agents/skills/shadcn-svelte/rules/styling.md +0 -195
  108. package/ui/.agents/skills/svas/SKILL.md +0 -169
  109. package/ui/.agents/skills/svas/references/patterns.md +0 -95
  110. package/ui/.agents/skills/svintl/SKILL.md +0 -176
  111. package/ui/.claude/settings.json +0 -15
  112. package/ui/.codex/hooks.json +0 -15
  113. package/ui/.cursor/hooks.json +0 -11
  114. package/ui/.env.example +0 -1
  115. package/ui/.prettierrc +0 -9
  116. package/ui/.vscode/extensions.json +0 -7
  117. package/ui/.vscode/settings.json +0 -27
  118. package/ui/AGENTS.md +0 -51
  119. package/ui/architecture.md +0 -390
  120. package/ui/components.json +0 -20
  121. package/ui/eslint.config.js +0 -152
  122. package/ui/features/base.ts +0 -2
  123. package/ui/features/boot.feature +0 -5
  124. package/ui/features/steps/authentication.ts +0 -34
  125. package/ui/features/steps/navigaton.ts +0 -37
  126. package/ui/features/steps/typing.ts +0 -24
  127. package/ui/package-lock.json +0 -8173
  128. package/ui/package.json +0 -76
  129. package/ui/playwright.config.ts +0 -13
  130. package/ui/skills-lock.json +0 -30
  131. package/ui/src/@/configuration/index.ts +0 -1
  132. package/ui/src/@/configuration/svc/create.ts +0 -29
  133. package/ui/src/@/configuration/svc/index.ts +0 -3
  134. package/ui/src/@/configuration/svc/net/Configuration.ts +0 -18
  135. package/ui/src/@/configuration/svc/net/index.ts +0 -2
  136. package/ui/src/@/configuration/svc/net/interface.ts +0 -35
  137. package/ui/src/@/configuration/svc/store.ts +0 -14
  138. package/ui/src/@/configuration/ui/Configurations.svelte +0 -85
  139. package/ui/src/@/configuration/ui/Configurations.ts +0 -5
  140. package/ui/src/@/configuration/ui/Create.svelte +0 -64
  141. package/ui/src/@/configuration/ui/Create.ts +0 -7
  142. package/ui/src/@/configuration/ui/Form.svelte +0 -75
  143. package/ui/src/@/configuration/ui/Form.ts +0 -79
  144. package/ui/src/@/configuration/ui/Row.svelte +0 -44
  145. package/ui/src/@/configuration/ui/Row.ts +0 -9
  146. package/ui/src/@/configuration/ui/Value.svelte +0 -33
  147. package/ui/src/@/configuration/ui/Value.ts +0 -6
  148. package/ui/src/@/configuration/ui/index.ts +0 -9
  149. package/ui/src/@/configuration/ui/intl/built.js +0 -38
  150. package/ui/src/@/configuration/ui/intl/context.yaml +0 -51
  151. package/ui/src/@/configuration/ui/intl/en-US.yaml +0 -21
  152. package/ui/src/@/configuration/ui/intl/index.ts +0 -9
  153. package/ui/src/@/configuration/ui/intl/types.ts +0 -31
  154. package/ui/src/@/configuration/ui/read.test.ts +0 -75
  155. package/ui/src/@/configuration/ui/read.ts +0 -102
  156. package/ui/src/@/configuration/ui/ui.test.ts +0 -69
  157. package/ui/src/@/configuration/ui/ui.ts +0 -115
  158. package/ui/src/@/iam/index.ts +0 -1
  159. package/ui/src/@/iam/rc.ts +0 -22
  160. package/ui/src/@/iam/svc/authenticated.ts +0 -17
  161. package/ui/src/@/iam/svc/basic.ts +0 -23
  162. package/ui/src/@/iam/svc/index.ts +0 -10
  163. package/ui/src/@/iam/svc/logout.ts +0 -5
  164. package/ui/src/@/iam/svc/named.ts +0 -16
  165. package/ui/src/@/iam/svc/net/Echo.ts +0 -9
  166. package/ui/src/@/iam/svc/net/basic/index.ts +0 -1
  167. package/ui/src/@/iam/svc/net/basic/interface.ts +0 -15
  168. package/ui/src/@/iam/svc/net/federation/index.ts +0 -1
  169. package/ui/src/@/iam/svc/net/federation/interface.ts +0 -12
  170. package/ui/src/@/iam/svc/net/index.ts +0 -6
  171. package/ui/src/@/iam/svc/net/interface.ts +0 -17
  172. package/ui/src/@/iam/svc/net/otp/index.ts +0 -1
  173. package/ui/src/@/iam/svc/net/otp/interface.ts +0 -14
  174. package/ui/src/@/iam/svc/net/passkeys/index.ts +0 -1
  175. package/ui/src/@/iam/svc/net/passkeys/interface.ts +0 -12
  176. package/ui/src/@/iam/svc/oidc/apple.ts +0 -47
  177. package/ui/src/@/iam/svc/oidc/authenticate.ts +0 -62
  178. package/ui/src/@/iam/svc/oidc/google.ts +0 -45
  179. package/ui/src/@/iam/svc/oidc/hello.ts +0 -82
  180. package/ui/src/@/iam/svc/oidc/index.ts +0 -3
  181. package/ui/src/@/iam/svc/oidc/nonce.ts +0 -5
  182. package/ui/src/@/iam/svc/oidc/providers.ts +0 -28
  183. package/ui/src/@/iam/svc/oidc/standard.ts +0 -28
  184. package/ui/src/@/iam/svc/otp.ts +0 -18
  185. package/ui/src/@/iam/svc/passkeys/create.ts +0 -20
  186. package/ui/src/@/iam/svc/passkeys/index.ts +0 -2
  187. package/ui/src/@/iam/svc/passkeys/login.ts +0 -21
  188. package/ui/src/@/iam/svc/store.ts +0 -36
  189. package/ui/src/@/iam/svc/sync.ts +0 -18
  190. package/ui/src/@/iam/svc/transfer.ts +0 -11
  191. package/ui/src/@/iam/svc/update.ts +0 -8
  192. package/ui/src/@/iam/ui/AccountLike.ts +0 -4
  193. package/ui/src/@/iam/ui/Authenticated.svelte +0 -37
  194. package/ui/src/@/iam/ui/Authenticated.ts +0 -10
  195. package/ui/src/@/iam/ui/Authentication.svelte +0 -50
  196. package/ui/src/@/iam/ui/Authentication.ts +0 -9
  197. package/ui/src/@/iam/ui/Authorized.svelte +0 -32
  198. package/ui/src/@/iam/ui/Authorized.ts +0 -65
  199. package/ui/src/@/iam/ui/Card.svelte +0 -14
  200. package/ui/src/@/iam/ui/Card.ts +0 -7
  201. package/ui/src/@/iam/ui/Refresh.svelte +0 -39
  202. package/ui/src/@/iam/ui/credentials/Credentials.svelte +0 -26
  203. package/ui/src/@/iam/ui/credentials/Credentials.ts +0 -5
  204. package/ui/src/@/iam/ui/credentials/Provider.svelte +0 -24
  205. package/ui/src/@/iam/ui/credentials/Provider.ts +0 -5
  206. package/ui/src/@/iam/ui/credentials/index.ts +0 -1
  207. package/ui/src/@/iam/ui/credentials/passkeys/Key.svelte +0 -42
  208. package/ui/src/@/iam/ui/credentials/passkeys/Key.ts +0 -29
  209. package/ui/src/@/iam/ui/credentials/passkeys/Manager.svelte +0 -83
  210. package/ui/src/@/iam/ui/credentials/passkeys/Manager.ts +0 -5
  211. package/ui/src/@/iam/ui/credentials/passkeys/Passkeys.svelte +0 -39
  212. package/ui/src/@/iam/ui/credentials/passkeys/Summary.svelte +0 -27
  213. package/ui/src/@/iam/ui/credentials/passkeys/Summary.ts +0 -5
  214. package/ui/src/@/iam/ui/credentials/passkeys/index.ts +0 -1
  215. package/ui/src/@/iam/ui/credentials/providers.ts +0 -15
  216. package/ui/src/@/iam/ui/credentials/transfer/Qr.svelte +0 -24
  217. package/ui/src/@/iam/ui/credentials/transfer/Qr.ts +0 -3
  218. package/ui/src/@/iam/ui/credentials/transfer/Transfer.svelte +0 -48
  219. package/ui/src/@/iam/ui/credentials/transfer/Transfer.ts +0 -5
  220. package/ui/src/@/iam/ui/credentials/transfer/index.ts +0 -1
  221. package/ui/src/@/iam/ui/index.ts +0 -3
  222. package/ui/src/@/iam/ui/intl/built.js +0 -79
  223. package/ui/src/@/iam/ui/intl/context.yaml +0 -91
  224. package/ui/src/@/iam/ui/intl/en-US.yaml +0 -64
  225. package/ui/src/@/iam/ui/intl/index.ts +0 -10
  226. package/ui/src/@/iam/ui/intl/types.ts +0 -70
  227. package/ui/src/@/iam/ui/oidc/Authentication.svelte +0 -16
  228. package/ui/src/@/iam/ui/oidc/Authentication.ts +0 -5
  229. package/ui/src/@/iam/ui/oidc/Button.svelte +0 -36
  230. package/ui/src/@/iam/ui/oidc/Button.ts +0 -11
  231. package/ui/src/@/iam/ui/oidc/Refresh.svelte +0 -16
  232. package/ui/src/@/iam/ui/oidc/icons/Apple.svelte +0 -19
  233. package/ui/src/@/iam/ui/oidc/icons/Google.svelte +0 -31
  234. package/ui/src/@/iam/ui/oidc/icons/index.ts +0 -11
  235. package/ui/src/@/iam/ui/oidc/index.ts +0 -2
  236. package/ui/src/@/iam/ui/passkey/Authentication.svelte +0 -64
  237. package/ui/src/@/iam/ui/passkey/Authentication.ts +0 -8
  238. package/ui/src/@/iam/ui/passkey/Create.svelte +0 -53
  239. package/ui/src/@/iam/ui/passkey/Create.ts +0 -7
  240. package/ui/src/@/iam/ui/passkey/Login.svelte +0 -29
  241. package/ui/src/@/iam/ui/passkey/Refresh.svelte +0 -29
  242. package/ui/src/@/iam/ui/passkey/index.ts +0 -2
  243. package/ui/src/@/iam/ui/password/Authentication.svelte +0 -19
  244. package/ui/src/@/iam/ui/password/Authentication.ts +0 -8
  245. package/ui/src/@/iam/ui/password/Form.svelte +0 -151
  246. package/ui/src/@/iam/ui/password/Form.ts +0 -6
  247. package/ui/src/@/iam/ui/password/Password.svelte +0 -39
  248. package/ui/src/@/iam/ui/password/Password.ts +0 -6
  249. package/ui/src/@/iam/ui/password/Refresh.svelte +0 -5
  250. package/ui/src/@/iam/ui/password/index.ts +0 -2
  251. package/ui/src/@/net/index.ts +0 -1
  252. package/ui/src/@/net/svc/index.ts +0 -3
  253. package/ui/src/@/net/svc/origin.ts +0 -8
  254. package/ui/src/@/net/svc/query.test.ts +0 -45
  255. package/ui/src/@/net/svc/query.ts +0 -25
  256. package/ui/src/@/passkeys/index.ts +0 -1
  257. package/ui/src/@/passkeys/svc/add.ts +0 -15
  258. package/ui/src/@/passkeys/svc/create.ts +0 -58
  259. package/ui/src/@/passkeys/svc/credentials/convert.ts +0 -32
  260. package/ui/src/@/passkeys/svc/credentials/create.ts +0 -34
  261. package/ui/src/@/passkeys/svc/credentials/get.ts +0 -14
  262. package/ui/src/@/passkeys/svc/credentials/index.ts +0 -3
  263. package/ui/src/@/passkeys/svc/credentials/key.ts +0 -10
  264. package/ui/src/@/passkeys/svc/get.ts +0 -10
  265. package/ui/src/@/passkeys/svc/index.ts +0 -6
  266. package/ui/src/@/passkeys/svc/net/CreationResponse.ts +0 -15
  267. package/ui/src/@/passkeys/svc/net/Passkey.ts +0 -8
  268. package/ui/src/@/passkeys/svc/net/RequestResponse.ts +0 -12
  269. package/ui/src/@/passkeys/svc/net/challenges/Options.ts +0 -21
  270. package/ui/src/@/passkeys/svc/net/challenges/index.ts +0 -2
  271. package/ui/src/@/passkeys/svc/net/challenges/interface.ts +0 -16
  272. package/ui/src/@/passkeys/svc/net/index.ts +0 -4
  273. package/ui/src/@/passkeys/svc/net/interface.ts +0 -29
  274. package/ui/src/@/passkeys/svc/remove.ts +0 -13
  275. package/ui/src/@/passkeys/svc/request.ts +0 -50
  276. package/ui/src/@/passkeys/svc/store.ts +0 -13
  277. package/ui/src/@/passkeys/svc/supported.ts +0 -1
  278. package/ui/src/@/passkeys/ui/aaguid.json +0 -150
  279. package/ui/src/@/realtime/events.ts +0 -1
  280. package/ui/src/@/realtime/index.ts +0 -1
  281. package/ui/src/@/realtime/rc.ts +0 -13
  282. package/ui/src/@/realtime/svc/connect.ts +0 -67
  283. package/ui/src/@/realtime/svc/events.ts +0 -17
  284. package/ui/src/@/realtime/svc/index.ts +0 -5
  285. package/ui/src/@/realtime/svc/net/Message.ts +0 -6
  286. package/ui/src/@/realtime/svc/net/index.ts +0 -2
  287. package/ui/src/@/realtime/svc/net/interface.ts +0 -13
  288. package/ui/src/@/realtime/svc/reset.ts +0 -5
  289. package/ui/src/@/realtime/svc/status.ts +0 -12
  290. package/ui/src/@/realtime/svc/store.ts +0 -30
  291. package/ui/src/@/realtime/svc/time.ts +0 -15
  292. package/ui/src/app.d.ts +0 -20
  293. package/ui/src/app.html +0 -13
  294. package/ui/src/config/index.ts +0 -70
  295. package/ui/src/lib/assets/favicon.svg +0 -1
  296. package/ui/src/lib/components/clipboard/Clipboard.svelte +0 -63
  297. package/ui/src/lib/components/clipboard/Clipboard.ts +0 -12
  298. package/ui/src/lib/components/clipboard/index.ts +0 -1
  299. package/ui/src/lib/components/dismissable/Dismissable.svelte +0 -81
  300. package/ui/src/lib/components/dismissable/Dismissable.ts +0 -7
  301. package/ui/src/lib/components/dismissable/index.ts +0 -1
  302. package/ui/src/lib/components/dropdown/Back.svelte +0 -14
  303. package/ui/src/lib/components/dropdown/Back.ts +0 -3
  304. package/ui/src/lib/components/dropdown/Content.svelte +0 -76
  305. package/ui/src/lib/components/dropdown/Content.ts +0 -13
  306. package/ui/src/lib/components/dropdown/Context.ts +0 -18
  307. package/ui/src/lib/components/dropdown/Group.svelte +0 -24
  308. package/ui/src/lib/components/dropdown/Group.ts +0 -8
  309. package/ui/src/lib/components/dropdown/GroupContext.ts +0 -15
  310. package/ui/src/lib/components/dropdown/Item.svelte +0 -31
  311. package/ui/src/lib/components/dropdown/Item.ts +0 -5
  312. package/ui/src/lib/components/dropdown/Layer.svelte +0 -11
  313. package/ui/src/lib/components/dropdown/Layer.ts +0 -7
  314. package/ui/src/lib/components/dropdown/Root.svelte +0 -88
  315. package/ui/src/lib/components/dropdown/Root.ts +0 -6
  316. package/ui/src/lib/components/dropdown/Separator.svelte +0 -13
  317. package/ui/src/lib/components/dropdown/Separator.ts +0 -5
  318. package/ui/src/lib/components/dropdown/Trigger.svelte +0 -33
  319. package/ui/src/lib/components/dropdown/Trigger.ts +0 -5
  320. package/ui/src/lib/components/dropdown/index.ts +0 -8
  321. package/ui/src/lib/components/fullscreen/Fullscreen.svelte +0 -97
  322. package/ui/src/lib/components/fullscreen/Fullscreen.ts +0 -18
  323. package/ui/src/lib/components/fullscreen/Overlay.svelte +0 -15
  324. package/ui/src/lib/components/fullscreen/Overlay.ts +0 -7
  325. package/ui/src/lib/components/fullscreen/index.ts +0 -2
  326. package/ui/src/lib/components/hold/Hold.svelte +0 -133
  327. package/ui/src/lib/components/hold/Hold.ts +0 -23
  328. package/ui/src/lib/components/hold/index.ts +0 -1
  329. package/ui/src/lib/components/scrollable/Scrollable.svelte +0 -49
  330. package/ui/src/lib/components/scrollable/Scrollable.ts +0 -117
  331. package/ui/src/lib/components/scrollable/index.ts +0 -2
  332. package/ui/src/lib/components/shake/Shake.svelte +0 -62
  333. package/ui/src/lib/components/shake/Shake.ts +0 -7
  334. package/ui/src/lib/components/shake/index.ts +0 -1
  335. package/ui/src/lib/components/share/Share.svelte +0 -58
  336. package/ui/src/lib/components/share/Share.ts +0 -9
  337. package/ui/src/lib/components/share/index.ts +0 -1
  338. package/ui/src/lib/components/shell/Attention.svelte +0 -11
  339. package/ui/src/lib/components/shell/Attention.ts +0 -6
  340. package/ui/src/lib/components/shell/Header.svelte +0 -18
  341. package/ui/src/lib/components/shell/Header.ts +0 -7
  342. package/ui/src/lib/components/shell/Screen.svelte +0 -28
  343. package/ui/src/lib/components/shell/Screen.ts +0 -11
  344. package/ui/src/lib/components/shell/Sticky.svelte +0 -23
  345. package/ui/src/lib/components/shell/Sticky.ts +0 -8
  346. package/ui/src/lib/components/shell/Underlay.svelte +0 -21
  347. package/ui/src/lib/components/shell/Underlay.ts +0 -6
  348. package/ui/src/lib/components/shell/index.ts +0 -6
  349. package/ui/src/lib/components/shell/nav/Actions.svelte +0 -31
  350. package/ui/src/lib/components/shell/nav/Actions.ts +0 -16
  351. package/ui/src/lib/components/shell/nav/Back.svelte +0 -20
  352. package/ui/src/lib/components/shell/nav/Back.ts +0 -9
  353. package/ui/src/lib/components/shell/nav/Bar.svelte +0 -24
  354. package/ui/src/lib/components/shell/nav/Bar.ts +0 -3
  355. package/ui/src/lib/components/shell/nav/Button.svelte +0 -64
  356. package/ui/src/lib/components/shell/nav/Button.ts +0 -7
  357. package/ui/src/lib/components/shell/nav/Nav.svelte +0 -62
  358. package/ui/src/lib/components/shell/nav/Nav.ts +0 -35
  359. package/ui/src/lib/components/shell/nav/Return.svelte +0 -29
  360. package/ui/src/lib/components/shell/nav/Return.ts +0 -15
  361. package/ui/src/lib/components/shell/nav/Sections.svelte +0 -58
  362. package/ui/src/lib/components/shell/nav/Sections.ts +0 -6
  363. package/ui/src/lib/components/shell/nav/Toolbar.svelte +0 -73
  364. package/ui/src/lib/components/shell/nav/Toolbar.ts +0 -3
  365. package/ui/src/lib/components/shell/nav/history.ts +0 -36
  366. package/ui/src/lib/components/shell/nav/index.ts +0 -5
  367. package/ui/src/lib/components/shell/nav/store.ts +0 -24
  368. package/ui/src/lib/components/ui/alert/alert-action.svelte +0 -20
  369. package/ui/src/lib/components/ui/alert/alert-description.svelte +0 -23
  370. package/ui/src/lib/components/ui/alert/alert-title.svelte +0 -23
  371. package/ui/src/lib/components/ui/alert/alert.svelte +0 -43
  372. package/ui/src/lib/components/ui/alert/index.ts +0 -17
  373. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +0 -27
  374. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +0 -27
  375. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +0 -32
  376. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +0 -17
  377. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +0 -23
  378. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +0 -20
  379. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte +0 -20
  380. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +0 -17
  381. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +0 -7
  382. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +0 -17
  383. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +0 -7
  384. package/ui/src/lib/components/ui/alert-dialog/alert-dialog.svelte +0 -7
  385. package/ui/src/lib/components/ui/alert-dialog/index.ts +0 -40
  386. package/ui/src/lib/components/ui/badge/badge.svelte +0 -49
  387. package/ui/src/lib/components/ui/badge/index.ts +0 -2
  388. package/ui/src/lib/components/ui/button/button.svelte +0 -82
  389. package/ui/src/lib/components/ui/button/index.ts +0 -17
  390. package/ui/src/lib/components/ui/button-group/button-group-separator.svelte +0 -23
  391. package/ui/src/lib/components/ui/button-group/button-group-text.svelte +0 -28
  392. package/ui/src/lib/components/ui/button-group/button-group.svelte +0 -46
  393. package/ui/src/lib/components/ui/button-group/index.ts +0 -15
  394. package/ui/src/lib/components/ui/card/card-action.svelte +0 -23
  395. package/ui/src/lib/components/ui/card/card-content.svelte +0 -20
  396. package/ui/src/lib/components/ui/card/card-description.svelte +0 -20
  397. package/ui/src/lib/components/ui/card/card-footer.svelte +0 -20
  398. package/ui/src/lib/components/ui/card/card-header.svelte +0 -23
  399. package/ui/src/lib/components/ui/card/card-title.svelte +0 -20
  400. package/ui/src/lib/components/ui/card/card.svelte +0 -22
  401. package/ui/src/lib/components/ui/card/index.ts +0 -25
  402. package/ui/src/lib/components/ui/checkbox/checkbox.svelte +0 -39
  403. package/ui/src/lib/components/ui/checkbox/index.ts +0 -6
  404. package/ui/src/lib/components/ui/collapsible/collapsible-content.svelte +0 -7
  405. package/ui/src/lib/components/ui/collapsible/collapsible-trigger.svelte +0 -7
  406. package/ui/src/lib/components/ui/collapsible/collapsible.svelte +0 -20
  407. package/ui/src/lib/components/ui/collapsible/index.ts +0 -13
  408. package/ui/src/lib/components/ui/input/index.ts +0 -7
  409. package/ui/src/lib/components/ui/input/input.svelte +0 -48
  410. package/ui/src/lib/components/ui/input-otp/index.ts +0 -15
  411. package/ui/src/lib/components/ui/input-otp/input-otp-group.svelte +0 -20
  412. package/ui/src/lib/components/ui/input-otp/input-otp-separator.svelte +0 -27
  413. package/ui/src/lib/components/ui/input-otp/input-otp-slot.svelte +0 -31
  414. package/ui/src/lib/components/ui/input-otp/input-otp.svelte +0 -23
  415. package/ui/src/lib/components/ui/item/index.ts +0 -34
  416. package/ui/src/lib/components/ui/item/item-actions.svelte +0 -20
  417. package/ui/src/lib/components/ui/item/item-content.svelte +0 -23
  418. package/ui/src/lib/components/ui/item/item-description.svelte +0 -23
  419. package/ui/src/lib/components/ui/item/item-footer.svelte +0 -20
  420. package/ui/src/lib/components/ui/item/item-group.svelte +0 -21
  421. package/ui/src/lib/components/ui/item/item-header.svelte +0 -20
  422. package/ui/src/lib/components/ui/item/item-media.svelte +0 -42
  423. package/ui/src/lib/components/ui/item/item-separator.svelte +0 -19
  424. package/ui/src/lib/components/ui/item/item-title.svelte +0 -20
  425. package/ui/src/lib/components/ui/item/item.svelte +0 -61
  426. package/ui/src/lib/components/ui/kbd/index.ts +0 -10
  427. package/ui/src/lib/components/ui/kbd/kbd-group.svelte +0 -20
  428. package/ui/src/lib/components/ui/kbd/kbd.svelte +0 -23
  429. package/ui/src/lib/components/ui/label/index.ts +0 -7
  430. package/ui/src/lib/components/ui/label/label.svelte +0 -20
  431. package/ui/src/lib/components/ui/progress/index.ts +0 -7
  432. package/ui/src/lib/components/ui/progress/progress.svelte +0 -27
  433. package/ui/src/lib/components/ui/select/index.ts +0 -37
  434. package/ui/src/lib/components/ui/select/select-content.svelte +0 -45
  435. package/ui/src/lib/components/ui/select/select-group-heading.svelte +0 -21
  436. package/ui/src/lib/components/ui/select/select-group.svelte +0 -17
  437. package/ui/src/lib/components/ui/select/select-item.svelte +0 -40
  438. package/ui/src/lib/components/ui/select/select-label.svelte +0 -20
  439. package/ui/src/lib/components/ui/select/select-portal.svelte +0 -7
  440. package/ui/src/lib/components/ui/select/select-scroll-down-button.svelte +0 -20
  441. package/ui/src/lib/components/ui/select/select-scroll-up-button.svelte +0 -20
  442. package/ui/src/lib/components/ui/select/select-separator.svelte +0 -18
  443. package/ui/src/lib/components/ui/select/select-trigger.svelte +0 -29
  444. package/ui/src/lib/components/ui/select/select.svelte +0 -11
  445. package/ui/src/lib/components/ui/separator/index.ts +0 -7
  446. package/ui/src/lib/components/ui/separator/separator.svelte +0 -23
  447. package/ui/src/lib/components/ui/spinner/index.ts +0 -1
  448. package/ui/src/lib/components/ui/spinner/spinner.svelte +0 -18
  449. package/ui/src/lib/components/ui/tabs/index.ts +0 -18
  450. package/ui/src/lib/components/ui/tabs/tabs-content.svelte +0 -17
  451. package/ui/src/lib/components/ui/tabs/tabs-list.svelte +0 -40
  452. package/ui/src/lib/components/ui/tabs/tabs-trigger.svelte +0 -23
  453. package/ui/src/lib/components/ui/tabs/tabs.svelte +0 -19
  454. package/ui/src/lib/components/ui/textarea/index.ts +0 -7
  455. package/ui/src/lib/components/ui/textarea/textarea.svelte +0 -22
  456. package/ui/src/lib/intl/bcp.ts +0 -25
  457. package/ui/src/lib/intl/built.js +0 -18
  458. package/ui/src/lib/intl/context.yaml +0 -18
  459. package/ui/src/lib/intl/en-US.yaml +0 -6
  460. package/ui/src/lib/intl/index.ts +0 -65
  461. package/ui/src/lib/intl/types.ts +0 -19
  462. package/ui/src/lib/tools/ago.ts +0 -10
  463. package/ui/src/lib/tools/assert.ts +0 -3
  464. package/ui/src/lib/tools/cap.ts +0 -5
  465. package/ui/src/lib/tools/clicks.ts +0 -25
  466. package/ui/src/lib/tools/contextmenu.ts +0 -19
  467. package/ui/src/lib/tools/convert.ts +0 -32
  468. package/ui/src/lib/tools/currency.test.ts +0 -10
  469. package/ui/src/lib/tools/currency.ts +0 -55
  470. package/ui/src/lib/tools/date.test.ts +0 -21
  471. package/ui/src/lib/tools/date.ts +0 -35
  472. package/ui/src/lib/tools/delay.ts +0 -7
  473. package/ui/src/lib/tools/image.ts +0 -39
  474. package/ui/src/lib/tools/index.ts +0 -20
  475. package/ui/src/lib/tools/location.ts +0 -41
  476. package/ui/src/lib/tools/metronome.ts +0 -11
  477. package/ui/src/lib/tools/mq.ts +0 -84
  478. package/ui/src/lib/tools/onsubmit.ts +0 -21
  479. package/ui/src/lib/tools/random.ts +0 -15
  480. package/ui/src/lib/tools/search.ts +0 -25
  481. package/ui/src/lib/tools/timeout.ts +0 -26
  482. package/ui/src/lib/tools/transition.ts +0 -207
  483. package/ui/src/lib/tools/types.ts +0 -3
  484. package/ui/src/lib/tools/uuid.test.ts +0 -28
  485. package/ui/src/lib/tools/uuid.ts +0 -9
  486. package/ui/src/lib/typeset.css +0 -502
  487. package/ui/src/lib/utils.ts +0 -12
  488. package/ui/src/routes/(private)/+layout.svelte +0 -112
  489. package/ui/src/routes/(private)/+page.svelte +0 -7
  490. package/ui/src/routes/(private)/[component]/+page.svelte +0 -77
  491. package/ui/src/routes/+layout.svelte +0 -25
  492. package/ui/src/routes/+layout.ts +0 -14
  493. package/ui/src/routes/layout.css +0 -232
  494. package/ui/svelte.config.js +0 -36
  495. package/ui/tools/feat.js +0 -43
  496. package/ui/tools/hooks/README.md +0 -13
  497. package/ui/tools/hooks/guard-intl.sh +0 -40
  498. package/ui/tools/shad.js +0 -7
  499. package/ui/tsconfig.json +0 -20
  500. package/ui/vite.config.ts +0 -8
  501. /package/ui/{static → dist}/robots.txt +0 -0
@@ -1,195 +0,0 @@
1
- # Styling & Customization
2
-
3
- See [customization.md](../customization.md) for theming, CSS variables, and adding custom colors.
4
-
5
- ## Contents
6
-
7
- - Semantic colors
8
- - Built-in variants first
9
- - class for layout only
10
- - No space-x-_ / space-y-_
11
- - Prefer size-_ over w-_ h-\* when equal
12
- - Prefer truncate shorthand
13
- - No manual dark: color overrides
14
- - Use cn() for conditional classes
15
- - No manual z-index on overlay components
16
-
17
- ---
18
-
19
- ## Semantic colors
20
-
21
- **Incorrect:**
22
-
23
- ```svelte
24
- <div class="bg-blue-500 text-white">
25
- <p class="text-gray-600">Secondary text</p>
26
- </div>
27
- ```
28
-
29
- **Correct:**
30
-
31
- ```svelte
32
- <div class="bg-primary text-primary-foreground">
33
- <p class="text-muted-foreground">Secondary text</p>
34
- </div>
35
- ```
36
-
37
- ---
38
-
39
- ## No raw color values for status/state indicators
40
-
41
- For positive, negative, or status indicators, use Badge variants, semantic tokens like `text-destructive`, or define custom CSS variables — don't reach for raw Tailwind colors.
42
-
43
- **Incorrect:**
44
-
45
- ```svelte
46
- <span class="text-emerald-600">+20.1%</span>
47
- <span class="text-green-500">Active</span>
48
- <span class="text-red-600">-3.2%</span>
49
- ```
50
-
51
- **Correct:**
52
-
53
- ```svelte
54
- <script lang="ts">
55
- import { Badge } from "$lib/components/ui/badge";
56
- </script>
57
-
58
- <Badge variant="secondary">+20.1%</Badge>
59
- <Badge>Active</Badge>
60
- <span class="text-destructive">-3.2%</span>
61
- ```
62
-
63
- If you need a success/positive color that doesn't exist as a semantic token, use a Badge variant or ask the user about adding a custom CSS variable to the theme (see [customization.md](../customization.md)).
64
-
65
- ---
66
-
67
- ## Built-in variants first
68
-
69
- **Incorrect:**
70
-
71
- ```svelte
72
- <script lang="ts">
73
- import { Button } from "$lib/components/ui/button";
74
- </script>
75
-
76
- <Button class="border-input hover:bg-accent border bg-transparent"
77
- >Click me</Button
78
- >
79
- ```
80
-
81
- **Correct:**
82
-
83
- ```svelte
84
- <script lang="ts">
85
- import { Button } from "$lib/components/ui/button";
86
- </script>
87
-
88
- <Button variant="outline">Click me</Button>
89
- ```
90
-
91
- ---
92
-
93
- ## class for layout only
94
-
95
- Use `class` for layout (e.g. `max-w-md`, `mx-auto`, `mt-4`), **not** for overriding component colors or typography. To change colors, use semantic tokens, built-in variants, or CSS variables.
96
-
97
- **Incorrect:**
98
-
99
- ```svelte
100
- <script lang="ts">
101
- import * as Card from "$lib/components/ui/card";
102
- </script>
103
-
104
- <Card.Root class="bg-blue-100 font-bold text-blue-900">
105
- <Card.Content>Dashboard</Card.Content>
106
- </Card.Root>
107
- ```
108
-
109
- **Correct:**
110
-
111
- ```svelte
112
- <script lang="ts">
113
- import * as Card from "$lib/components/ui/card";
114
- </script>
115
-
116
- <Card.Root class="mx-auto max-w-md">
117
- <Card.Content>Dashboard</Card.Content>
118
- </Card.Root>
119
- ```
120
-
121
- To customize a component's appearance, prefer these approaches in order:
122
-
123
- 1. **Built-in variants** — `variant="outline"`, `variant="destructive"`, etc.
124
- 2. **Semantic color tokens** — `bg-primary`, `text-muted-foreground`.
125
- 3. **CSS variables** — define custom colors in the global CSS file (see [customization.md](../customization.md)).
126
-
127
- ---
128
-
129
- ## No space-x-_ / space-y-_
130
-
131
- Use `gap-*` instead. `space-y-4` → `flex flex-col gap-4`. `space-x-2` → `flex gap-2`.
132
-
133
- ```svelte
134
- <script lang="ts">
135
- import { Input } from "$lib/components/ui/input";
136
- import { Button } from "$lib/components/ui/button";
137
- </script>
138
-
139
- <div class="flex flex-col gap-4">
140
- <Input />
141
- <Input />
142
- <Button>Submit</Button>
143
- </div>
144
- ```
145
-
146
- ---
147
-
148
- ## Prefer size-_ over w-_ h-\* when equal
149
-
150
- `size-10` not `w-10 h-10`. Applies to icons, avatars, skeletons, etc.
151
-
152
- ---
153
-
154
- ## Prefer truncate shorthand
155
-
156
- `truncate` not `overflow-hidden text-ellipsis whitespace-nowrap`.
157
-
158
- ---
159
-
160
- ## No manual dark: color overrides
161
-
162
- Use semantic tokens — they handle light/dark via CSS variables. `bg-background text-foreground` not `bg-white dark:bg-gray-950`.
163
-
164
- ---
165
-
166
- ## Use cn() for conditional classes
167
-
168
- Use the `cn()` utility from the project for conditional or merged class names. Don't write manual ternaries in `class` strings.
169
-
170
- **Incorrect:**
171
-
172
- ```svelte
173
- <script lang="ts">
174
- let isActive = $state(false);
175
- </script>
176
-
177
- <div class={`flex items-center ${isActive ? "bg-primary text-primary-foreground" : "bg-muted"}`}>
178
- ```
179
-
180
- **Correct:**
181
-
182
- ```svelte
183
- <script lang="ts">
184
- import { cn } from "$lib/utils";
185
- let isActive = $state(false);
186
- </script>
187
-
188
- <div class={cn("flex items-center", isActive ? "bg-primary text-primary-foreground" : "bg-muted")}>
189
- ```
190
-
191
- ---
192
-
193
- ## No manual z-index on overlay components
194
-
195
- `Dialog`, `Sheet`, `Drawer`, `AlertDialog`, `DropdownMenu`, `Popover`, `Tooltip`, `HoverCard` handle their own stacking. Never add `z-50` or `z-[999]`.
@@ -1,169 +0,0 @@
1
- ---
2
- name: svas
3
- description: >
4
- Async Svelte stores (svas): fetching, caching, revalidation, persistence.
5
- Use when UI presents data from the API.
6
- ---
7
-
8
- # svas — Svelte Async Stores
9
-
10
- Stores that fetch lazily, cache, revalidate, and persist. Every store emits one of three types:
11
-
12
- ```ts
13
- type Maybe<T, E extends Error = Error> = null | T | E
14
- // null → no data yet (loading / cleared / not fetched)
15
- // T → resolved value
16
- // E → fetch error (errors are values, never thrown)
17
- ```
18
-
19
- ```ts
20
- import {
21
- value, values, collection, // stores
22
- ok, ensure, having, awaited, once, // guards & awaiting
23
- combined, sync, Async, // compose & render
24
- type Maybe
25
- } from 'svas'
26
- ```
27
-
28
- ## Shared lifecycle
29
-
30
- Every store fetches on **first subscribe**, then auto-revalidates. Common options:
31
-
32
- | Option | Meaning |
33
- |--------|---------|
34
- | `get` | fetcher returning `Promise<T \| Error>` |
35
- | `revalidate` | ms before re-fetch (default `300_000`; `Infinity` disables) |
36
- | `persist` | mirror into local storage under this key |
37
- | `session` | use `sessionStorage` instead of `localStorage` |
38
- | `stale` | keep previous value visible while revalidating (default `false`) |
39
- | `bind` | `Readable<unknown \| null>` — reset/clear store when bound store is `null` (tie data to a user) |
40
- | `default` | initial value when nothing is persisted |
41
-
42
- ## Stores
43
-
44
- All stores implements Readable interface from svelte/store.
45
-
46
- Use `persist` whenever it makes sense to persist the data, it will vastly speed up the initial load.
47
- If store contains user-bound data, use `bind` to reset the store when the user is logged out.
48
-
49
- ### `value<T>` — one async value
50
-
51
- `Writable<T | null>`. For single fetched values, auth tokens, transient UI flags.
52
-
53
- ```ts
54
- const me = value<User>({ get: () => api.me(), persist: 'user' })
55
- const seen = value<number>({ persist: 'seen', default: 0 }) // transient/local-only
56
- ```
57
-
58
- Methods: `set(v)`, `update(fn)`, `extract(): T | null` (sync read), `sync()` (revalidate if stale).
59
-
60
- ### `values<T>` — keyed cache
61
-
62
- A map of independent `Readable<Maybe<T>>` lifecycles, one per key.
63
-
64
- ```ts
65
- const products = values<Product>({ get: (id) => api.product(id), stale: true, persist: 'products' })
66
-
67
- const one = products.get('42') // Readable<Maybe<Product>>, fetches if missing
68
- products.set('42', next) // write by key
69
- products.extract('42') // Product | null, sync
70
- ```
71
-
72
- Methods: `get(key, { fetch? })` · `set(key, v, { stash? })` · `reset(key)` (restore stashed value) · `extract(key)` · `delete(key)` · `clear()`.
73
-
74
- Extra options: `permanent` (don't revalidate persisted entries on startup). `stash: true` on `set` remembers the prior persisted value so `reset(key)` can roll back — use for optimistic updates.
75
-
76
- ### `collection<T>` — list of `Identifiable` items
77
-
78
- `Readable<Maybe<T[]>>`. Items must have `{ id: string }`. Pass a `values` store to also observe items individually via `get(id)`.
79
-
80
- ```ts
81
- const todos = collection<Todo>({
82
- get: () => api.todos(),
83
- values: values<Todo>(), // enables todos.get(id) / extract(id)
84
- stale: true,
85
- persist: 'todos',
86
- bind: session
87
- })
88
- ```
89
-
90
- Methods: `subscribe` · `add(item)` · `set(item, { add? })` (replace by id; `add` inserts if absent) · `update(id, fn, opts?)` · `delete(id)` · `replace(items)` · `get(id)`/`extract(id)` (require `values`) · `sync(): this` · `fetch(): Promise<this>`.
91
-
92
- Mutations mirror into the `values` store, so components subscribed via `get(id)` update without re-fetching.
93
-
94
- ## Guards & extraction
95
-
96
- Never use `?.` on a `Maybe<T>` — an `Error` has no domain properties. Narrow first.
97
-
98
- ```ts
99
- ok($store) // boolean type guard: narrows Maybe<T> → T (excludes null | Error)
100
- ensure(store) // sync read, THROWS if null/Error — use when value must exist now (e.g. unsafe net requests in response to user action)
101
- store.extract(key?) // sync read, T | null (ignores errors) — never throws
102
- ```
103
-
104
- ```ts
105
- if (ok($todos)) $todos.length // typed as T
106
- items.filter((i) => ok(i.account) && !i.account.deleted) // ✅ guard before access
107
- ```
108
-
109
- ## Awaiting
110
-
111
- ```ts
112
- await having(store) // first non-null value; REJECTS on Error — services needing auth
113
- await awaited(store) // first non-null value; returns Error as a value (never rejects)
114
- await once(store, (v) => v === 'ready') // first value satisfying a condition
115
- ```
116
-
117
- ## Compose & render
118
-
119
- ### `<Async>` — render a `Maybe`
120
-
121
- ```svelte
122
- <Async store={todos}>
123
- {#snippet awaited(todos)}
124
- <!-- here todos are T[] -->
125
- {#each todos as t}<Row {t} />{/each}
126
- {/snippet}
127
- {#snippet waiting()}<Spinner />{/snippet} <!-- optional; default loader otherwise -->
128
- {#snippet error(e)}<Err {e} />{/snippet} <!-- optional; default error UI otherwise -->
129
- </Async>
130
- ```
131
-
132
- Props: `store` (required), `awaited` snippet (required), optional `waiting` / `error` snippets, `silent` (suppress default loader/error chrome). Combine with `combined` to await several at once.
133
-
134
- ### `combined(...stores)`
135
-
136
- One `Maybe` from many: tuple when **all** resolve, first `Error`, else `null`. Spreadable.
137
-
138
- ```svelte
139
- <Async store={combined(account, todos)}>
140
- {#snippet awaited([account, todos])}
141
- <!-- here account is U and todos is T[] -->
142
- <Profile {account} />
143
- {#each todos as t}<Row {t} />{/each}
144
- {/snippet}
145
- </Async>
146
- ```
147
-
148
- ### `sync(store, item, { delete? })`
149
-
150
- Conflict-free update.
151
-
152
- T must implement interface Comparable { id: string; _version: number;_deleted?: number | null }
153
-
154
- Merge a versioned item into a `collection` or `value`, respecting `_version`; removes on `_deleted` (unless `delete: false`). For applying server/realtime events.
155
-
156
- ```ts
157
- events.on('todos.sync', (todo) => sync(todos, todo))
158
- ```
159
-
160
- ## Rules
161
-
162
- - **Errors are values** — fetchers and services return `T | Error`; check `instanceof Error`, never `try/catch` for expected failures.
163
- - **Guard before access** — `ok()`/`ensure()`/`extract()`, never `?.` on `Maybe<T>`.
164
- - **One store per source** — derive everything else; don't duplicate fetched data into local state.
165
- - **Lazy by design** — a store does nothing until subscribed; `$store`, `<Async>`, `get`, `having`, or `.subscribe` triggers it.
166
-
167
- ## Advanced
168
-
169
- For derived `Maybe` stores with live subscriptions/cleanup, realtime event wiring, linked/enriched entities, and optimistic update patterns, see [references/patterns.md](references/patterns.md).
@@ -1,95 +0,0 @@
1
- # svas — advanced patterns
2
-
3
- Idioms for non-trivial usage. All build on `Maybe<T> = null | T | Error` and the `ok()` guard.
4
-
5
- ## Derived `Maybe` stores
6
-
7
- Compute one async store from others with `svelte/store`'s `derived`. Forward `null`/`Error` early, and return a cleanup function when you subscribe to linked entities.
8
-
9
- ```ts
10
- const internal = collection<Item>({ get: () => api.get(), persist: 'items' })
11
-
12
- export const items = derived<[typeof internal, typeof me], Maybe<Item[]>>(
13
- [list, me],
14
- ([$list, $me], set, update) => {
15
- if (!ok($list)) return set($list) // forward loading/error verbatim
16
- if (!ok($me)) return set($me)
17
-
18
- const items = $list.map((i) => map(i, $me.id))
19
- set(items)
20
-
21
- // live updates: re-emit when a linked entity changes
22
- const unsubs = items.map((item) =>
23
- accounts.get(item.owner).subscribe((account) =>
24
- update((items) => {
25
- if (!ok(items) || !ok(account)) return items
26
- const i = items.findIndex((v) => v.owner === account.id)
27
- if (i < 0) return items
28
- items[i] = { ...items[i], account }
29
- return items
30
- })
31
- )
32
- )
33
-
34
- return () => unsubs.forEach((u) => u()) // cleanup on unsubscribe
35
- }
36
- )
37
- ```
38
-
39
- Key moves: `if (!ok(x)) return set(x)` to forward non-resolved states, `update()` for incremental edits, return a teardown for any subscriptions you open.
40
-
41
- ## Realtime event wiring
42
-
43
- > Usually used with antcn/@realtime
44
-
45
- Apply server events into stores with `sync` (collections/values-backed) or `.set` (standalone `values`). Mutating functions sync their own result so the optimistic and authoritative paths converge.
46
-
47
- ```ts
48
- // collection backed by a values side store
49
- events.on('todos.sync', (todo) => sync(todos, todo))
50
-
51
- // standalone values map
52
- events.on('accounts.sync', (a) => accounts.set(a.id, a))
53
-
54
- export async function add(input: Input): Promise<Todo | Error> {
55
- const me = await having(account) // wait for auth
56
- const res = await net.add(me.id, input)
57
- if (res instanceof Error) return res // error as value
58
- sync(todos, res) // merge authoritative result
59
- return res
60
- }
61
- ```
62
-
63
- ## Linked / enriched entities
64
-
65
- Join a network type with domain data. Use `.extract()` for a sync snapshot at map time; subscribe via `.get()` inside derived stores for live enrichment.
66
-
67
- ```ts
68
- export interface Contact extends net.Contact {
69
- account: Maybe<Account>
70
- }
71
-
72
- export function map(entry: net.Contact): Contact {
73
- return { ...entry, account: accounts.extract(entry.owner) } // sync snapshot
74
- }
75
- ```
76
-
77
- Hold a `Maybe<T>` per link; never reach through it with `?.` — guard with `ok()` before use. For many links, `Record<string, Maybe<T>>` keyed by id.
78
-
79
- ## Optimistic updates with rollback
80
-
81
- `values.set(key, v, { stash: true })` remembers the prior persisted value; `reset(key)` restores it if the request fails.
82
-
83
- ```ts
84
- products.update(id, (product) => ({ ...product, ...properties }))
85
-
86
- const res = await net.patch(id, properties)
87
-
88
- if (res instanceof Error) return res
89
- else sync(products, res)
90
- ```
91
-
92
- ## `ensure` vs `having`
93
-
94
- - `ensure(store)` — **sync**, throws if `null`/`Error`. Use when the value must already exist (auth checks inside service functions called in response to user action).
95
- - `await having(store)` — **async**, waits for a resolved value, rejects on `Error`. Use at init time when the value may still be loading (initial data fetching when app is starting).
@@ -1,176 +0,0 @@
1
- ---
2
- name: svintl
3
- description: >
4
- svintl CLI for i18n — translations, locales, pluralization, mounts, building typed dictionaries. Triggers on `npx intl`, YAML locale files, intl directories, or any translation/i18n work in Svelte projects.
5
- ---
6
-
7
- # svintl — i18n for Svelte
8
-
9
- CLI tool for managing internationalization dictionaries with automatic translation via OpenAI.
10
-
11
- ## Core Rule
12
-
13
- The `*.yaml`, `built.js`, and `types.ts` files in intl directories are generated — they're edited through the `npx intl` CLI, not by hand.
14
-
15
- ## CLI Commands
16
-
17
- ```bash
18
- npx intl hola # init dictionaries (default: src/lib/intl/)
19
- npx intl hola -p ./custom/path # init at custom path
20
- npx intl add key.path "Value" "context" # add a new key — fails if it already exists; context optional
21
- npx intl set key.path "Updated value" # update a key that already exists — fails if missing
22
- npx intl set "mount/key.path" "Value" # target a mount with the mount/ prefix
23
- npx intl add key.path "Value" --debug # --debug (add or set): print the OpenAI request first
24
- npx intl const key.path "Same everywhere" # same value across all locales (no translation)
25
- npx intl unit items.count "item" # pluralized entry (auto-generates plural forms)
26
- npx intl move old.key new.key # rename key/branch
27
- npx intl del key.path # delete key/branch
28
- npx intl create es # add a locale (BCP 47 tag) — auto-translates the whole dictionary into it
29
- npx intl destroy es # delete locale
30
- npx intl mount foo ./any/path # create empty mount
31
- npx intl import foo ./any/path # adopt existing dict dir as mount, reconcile locales
32
- npx intl unmount foo # remove mount (keeps files)
33
- npx intl context "Project description" # set project-wide translation guidance
34
- npx intl context --clear # clear project context
35
- npx intl genders he she none # enable gender-aware translations (list the gender values)
36
- npx intl genders # print current gender values
37
- npx intl sync en key.path # reconcile: re-translate one key into all locales from source en
38
- npx intl sync en # reconcile: re-translate the whole dictionary from source en
39
- npx intl build # rebuild JS/TS from YAML
40
- ```
41
-
42
- ## Dictionary Format
43
-
44
- YAML with arbitrary nesting, strings at leaves:
45
-
46
- ```yaml
47
- native: English
48
- example:
49
- hello: "Hello world"
50
- ```
51
-
52
- Usage: `{$dict.example.hello}`
53
-
54
- ### Dynamic Values — Placeholders
55
-
56
- For simple cases the CLI auto-generates `!js` functions from placeholder syntax — no need to write them manually:
57
-
58
- ```bash
59
- npx intl set greeting "Hello, {name}!" # {name} → function param
60
- npx intl set joined "[names] joined {groupName}" # [names] → Intl.ListFormat
61
- ```
62
-
63
- For complex logic, pass `!js` functions via `intl set`:
64
-
65
- ```bash
66
- npx intl set greeting '!js (count) => `${count || "No"} item${count === 1 ? "" : "s"}`'
67
- ```
68
-
69
- Usage in components: `{$dict.greeting(user.name)}`
70
-
71
- **Keep the whole phrase in the dictionary.** Never split a sentence around a dynamic value in the template:
72
-
73
- ```svelte
74
- <!-- ❌ Wrong: breaks the phrase for translators -->
75
- <strong>{brand}</strong>{$dict.form.destroyDescription}
76
-
77
- <!-- ✅ Right: one entry, function accepts the value -->
78
- {@html $dict.form.destroyDescription(brand)}
79
- ```
80
-
81
- ```bash
82
- npx intl set "apps/form.destroyDescription" \
83
- '!js (brand) => `<strong>${brand}</strong> and all accumulated data will be permanently deleted.`'
84
- ```
85
-
86
- When a name needs markup and is always at the start of the phrase across languages, put the tags inside the `!js` function and render with `{@html}` — escape user-controlled values before passing them in.
87
-
88
- ### Pluralization
89
-
90
- Use `npx intl unit` — generates `Intl.PluralRules`-based functions:
91
-
92
- ```bash
93
- npx intl unit items.count "item"
94
- ```
95
-
96
- Produces:
97
- ```yaml
98
- items:
99
- count:
100
- - one: item
101
- other: items
102
- ```
103
-
104
- Usage: `{$dict.items.count(count)}`
105
-
106
- Complex locales (Russian, Arabic) auto-get `few`, `many`, etc.
107
-
108
- ### Genders
109
-
110
- When enabled (`npx intl genders he she none`), gender-dependent phrases become functions whose **last** argument is the gender (`'he' | 'she' | 'none'`) — the phrase's own arguments come first, e.g. `(name, gender) => …`. The listed values become the generated `Grammar` union.
111
-
112
- ## Mounts
113
-
114
- Organize translations into separate directories:
115
-
116
- ```bash
117
- npx intl mount admin ./src/features/admin/intl
118
- npx intl set "admin/dashboard.title" "Admin Dashboard"
119
- ```
120
-
121
- Mount keys use `{mount}/` prefix in CLI commands.
122
-
123
- `mount` scaffolds an empty mount; `import` adopts a populated dir (with its own `context.yaml`) and reconciles its locales to the root — drops languages the root lacks, generates ones it lacks (translating the imported `inputs`), leaves shared locales untouched.
124
-
125
- ## Import Pattern
126
-
127
- **Root dictionary:**
128
- ```svelte
129
- <script lang="ts">
130
- import { dict, locale } from '$lib/intl'
131
- </script>
132
- <h1>{$dict.example.hello}</h1>
133
- ```
134
-
135
- **Mount dictionary:**
136
- ```svelte
137
- <script lang="ts">
138
- import { dict } from './intl'
139
- </script>
140
- <h1>{$dict.dashboard.title}</h1>
141
- ```
142
-
143
- **Mount's `intl/index.ts`:**
144
- ```typescript
145
- import { derived } from 'svelte/store'
146
- import { locale } from '$lib/intl'
147
- import { dictionaries } from './built.js'
148
- import type { Locale, Dictionary } from './types'
149
-
150
- const dict = derived(locale, ($locale) => dictionaries[$locale])
151
- export { dict, dictionaries, locale }
152
- export type { Locale, Dictionary }
153
- ```
154
-
155
- ## Context for Translation Accuracy
156
-
157
- ```bash
158
- npx intl set app.welcome "Welcome" "greeting shown on homepage"
159
- npx intl context "B2B SaaS for enterprise users"
160
- ```
161
-
162
- Context is stored in `context.yaml` and used by OpenAI when creating new locales.
163
-
164
- ## Workflow
165
-
166
- 1. Use `npx intl add/set/unit/const` to add/update translations
167
- 2. Run `npx intl build` to generate JS/TS (often auto-runs)
168
- 3. Import `dict` store in components
169
- 4. Use `$dict.key.path` in templates
170
-
171
- ## Avoid
172
-
173
- - **Editing YAML by hand** — go through the CLI
174
- - **`npx intl sync` for routine edits** — it's only for reconciling after a manual source edit; use `add`/`set` instead
175
- - **Non-BCP47 locale codes** — use valid tags like `en-US`, `es`, `pt-BR`
176
- - **Splitting phrases in the template** — don't concatenate a dynamic value with a dictionary suffix/prefix; use one `{placeholder}` / `!js` entry for the full sentence
@@ -1,15 +0,0 @@
1
- {
2
- "hooks": {
3
- "PreToolUse": [
4
- {
5
- "matcher": "Edit|Write|MultiEdit|NotebookEdit",
6
- "hooks": [
7
- {
8
- "type": "command",
9
- "command": "\"$CLAUDE_PROJECT_DIR\"/tools/hooks/guard-intl.sh"
10
- }
11
- ]
12
- }
13
- ]
14
- }
15
- }
@@ -1,15 +0,0 @@
1
- {
2
- "hooks": {
3
- "PreToolUse": [
4
- {
5
- "matcher": "apply_patch|Edit|Write",
6
- "hooks": [
7
- {
8
- "type": "command",
9
- "command": "\"$(git rev-parse --show-toplevel)\"/tools/hooks/guard-intl.sh"
10
- }
11
- ]
12
- }
13
- ]
14
- }
15
- }
@@ -1,11 +0,0 @@
1
- {
2
- "version": 1,
3
- "hooks": {
4
- "preToolUse": [
5
- {
6
- "command": "./tools/hooks/guard-intl.sh",
7
- "matcher": "Write|Edit"
8
- }
9
- ]
10
- }
11
- }
package/ui/.env.example DELETED
@@ -1 +0,0 @@
1
- OPENAI_API_KEY=<put your openai api key here>
package/ui/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "useTabs": false,
3
- "singleQuote": true,
4
- "printWidth": 100,
5
- "semi": false,
6
- "tabWidth": 2,
7
- "bracketSameLine": true,
8
- "htmlWhitespaceSensitivity": "ignore"
9
- }