@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,17 +0,0 @@
1
- import { origin, type RequestOptions } from '@/net'
2
- import type { Echo } from './Echo'
3
-
4
- const echo = origin.resource<Echo>('/accounts/echo/')
5
-
6
- async function get(authorization?: string): Promise<Echo | Error> {
7
- const options: RequestOptions = { method: 'GET' }
8
-
9
- if (authorization !== undefined) {
10
- options.headers = { authorization }
11
- options.credentials = 'include'
12
- }
13
-
14
- return echo.json(options)
15
- }
16
-
17
- export { get }
@@ -1 +0,0 @@
1
- export * from './interface'
@@ -1,14 +0,0 @@
1
- import { origin } from '@/net'
2
-
3
- const otp = origin.resource('/accounts/otp/')
4
-
5
- interface Post {
6
- email: string
7
- }
8
-
9
- async function post(a: string | Post, b?: Post): Promise<void | Error> {
10
- if (typeof a === 'string') return await otp.json(a, { method: 'POST', body: b, credentials: 'include' })
11
- else return await otp.json({ method: 'POST', body: a })
12
- }
13
-
14
- export { post }
@@ -1 +0,0 @@
1
- export * from './interface'
@@ -1,12 +0,0 @@
1
- import { origin } from '@/net'
2
- import type { CreationResponse, RequestResponse } from '@/passkeys/svc/net'
3
- import type { Account } from '@/iam'
4
-
5
- const passkeys = origin.resource('/accounts/passkeys/')
6
-
7
- async function post(a: string | RequestResponse, body?: CreationResponse): Promise<Account | Error> {
8
- if (typeof a === 'string') return await passkeys.json(a, { method: 'POST', body, credentials: 'include' })
9
- else return await passkeys.json({ method: 'POST', body: a })
10
- }
11
-
12
- export { post }
@@ -1,47 +0,0 @@
1
- import type { Descriptor } from './providers'
2
-
3
- const win = typeof window !== 'undefined' && (window as any)
4
-
5
- async function apple(descriptor: Descriptor): Promise<string | Error> {
6
- await init(descriptor)
7
-
8
- const response = await win.AppleID.auth.signIn().catch((err: unknown) => err)
9
-
10
- if (response instanceof Error)
11
- return response
12
-
13
- if (response?.authorization === undefined)
14
- return new Error('No authentication response received', { cause: response })
15
-
16
- return response.authorization.code
17
- }
18
-
19
- function init(descriptor: Descriptor) {
20
- if (win.AppleID !== undefined)
21
- return undefined
22
-
23
- return new Promise((resolve, reject) => {
24
- const script = document.createElement('script')
25
-
26
- script.src = 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js'
27
- script.async = true
28
-
29
- script.onload = () => {
30
- win.AppleID.auth.init({
31
- clientId: descriptor.client,
32
- scope: descriptor.scope,
33
- redirectURI: window.location.origin,
34
- state: btoa(JSON.stringify({ idp: 'apple' })),
35
- usePopup: true,
36
- })
37
-
38
- resolve(undefined)
39
- }
40
-
41
- script.onerror = reject
42
-
43
- document.head.appendChild(script)
44
- })
45
- }
46
-
47
- export { apple }
@@ -1,62 +0,0 @@
1
- import { sync } from '../sync'
2
- import * as net from '../net'
3
- import { authenticated } from '../authenticated'
4
- import { standard } from './standard'
5
- import { providers, type Descriptor, type IDP } from './providers'
6
- import { google } from './google'
7
- import { apple } from './apple'
8
-
9
- const vendors = { apple, google } as const
10
-
11
- export async function authenticate(idp: IDP, identity?: string) {
12
- const credentials = await getCredentials(idp)
13
-
14
- if (credentials instanceof Error)
15
- return credentials
16
-
17
- if (identity !== undefined)
18
- return add(identity, credentials)
19
- else
20
- return verify(idp, credentials)
21
- }
22
-
23
- async function getCredentials(idp: IDP) {
24
- const auth = (vendors[idp] ?? standard) as Authenticate
25
- const descriptor = providers[idp]
26
-
27
- const code = await auth(descriptor, idp)
28
-
29
- if (code instanceof Error) {
30
- console.error('Authentication failed', code)
31
-
32
- return code
33
- }
34
-
35
- if (code === undefined)
36
- throw new Error('No authentication code received, redirect flow is not supported')
37
-
38
- const data = {
39
- code,
40
- iss: descriptor.iss,
41
- for: window.location.origin,
42
- }
43
-
44
- return btoa(JSON.stringify(data))
45
- }
46
-
47
- async function add(identity: string, credentials: string) {
48
- const err = await net.federation.post(identity, { scheme: 'code', credentials })
49
-
50
- if (err instanceof Error)
51
- return err
52
-
53
- void sync()
54
- }
55
-
56
- async function verify(idp: IDP, credentials: string) {
57
- const echo = await net.get('Code ' + credentials)
58
-
59
- return authenticated(echo, idp)
60
- }
61
-
62
- type Authenticate = (descriptor: Descriptor, idp: IDP) => Promise<string | Error | undefined>
@@ -1,45 +0,0 @@
1
- import type { Descriptor } from './providers'
2
-
3
- async function google(descriptor: Descriptor): Promise<string | Error> {
4
- await init()
5
-
6
- const response = await new Promise((resolve) => {
7
- const google = (window as any).google as any
8
-
9
- const client = google.accounts.oauth2.initCodeClient({
10
- client_id: descriptor.client,
11
- scope: descriptor.scope,
12
- ux_mode: 'popup',
13
- state: btoa(JSON.stringify({ idp: 'google' })),
14
- redirect_uri: window.location.origin + '/',
15
- callback: async (response: { code?: string; error?: string }) => {
16
- resolve(response)
17
- },
18
- })
19
-
20
- client.requestCode()
21
- }) as { code?: string; error?: string }
22
-
23
- if (response?.code === undefined)
24
- return new Error('NO_RESPONSE', { cause: response })
25
-
26
- return response.code
27
- }
28
-
29
- function init() {
30
- return new Promise((resolve, reject) => {
31
- const google = (window as any).google as any
32
-
33
- if (google?.accounts?.oauth2 !== undefined) return resolve(undefined)
34
-
35
- const script = document.createElement('script')
36
-
37
- script.src = 'https://accounts.google.com/gsi/client'
38
- script.async = true
39
- script.onload = () => resolve(undefined)
40
- script.onerror = reject
41
- document.head.appendChild(script)
42
- })
43
- }
44
-
45
- export { google }
@@ -1,82 +0,0 @@
1
- /**
2
- * OBSOLETE
3
- * Currently unused as both apple and google use popups.
4
- */
5
-
6
- import * as accounts from '@/iam/svc/net'
7
- import { fragment, query, assert } from '$lib/tools'
8
- import { navigation } from '$config'
9
- import { resolve } from '$app/paths'
10
- import { goto } from '$app/navigation'
11
- import { consume } from '../transfer'
12
- import { account, challenge, greeting } from '../store'
13
- import { logout } from '../logout'
14
- import { providers, type IDP } from './providers'
15
- import { nonce } from './nonce'
16
-
17
- export async function hello() {
18
- const authorization = consume() ?? bearer() ?? code()
19
-
20
- nonce.set(null)
21
-
22
- if (authorization === null) return
23
-
24
- logout()
25
- greeting.set(true)
26
-
27
- const echo = await accounts.get(authorization)
28
-
29
- if (echo instanceof Error) {
30
- challenge.set(null)
31
- account.set(null)
32
- } else {
33
- account.set(echo)
34
-
35
- if (navigation?.entry !== window.location.pathname)
36
- await goto(resolve(navigation.entry), { replaceState: true })
37
- }
38
-
39
- greeting.set(false)
40
- }
41
-
42
- function bearer(): string | null {
43
- const token = fragment('id_token')
44
-
45
- if (token === null) return null
46
-
47
- const stored = nonce.extract()
48
- const payload = JSON.parse(atob(token.split('.')[1])) as { nonce: string }
49
-
50
- if (stored === null || payload.nonce !== stored) {
51
- console.error('Nonce mismatch')
52
-
53
- return null
54
- }
55
-
56
- return 'Bearer ' + token
57
- }
58
-
59
- function code(): string | null {
60
- // Google only passes code in a query string
61
- const code = query('code') ?? fragment('code')
62
- const state = query('state') ?? fragment('state')
63
-
64
- if (code === null) return null
65
-
66
- assert(typeof state === 'string', 'State is required')
67
-
68
- const { idp } = JSON.parse(atob(state)) as { idp: IDP }
69
- const provider = providers[idp]
70
-
71
- assert(provider !== undefined, 'Unknown IDP')
72
-
73
- const auth = {
74
- code,
75
- iss: providers[idp].iss,
76
- for: window.location.origin + window.location.pathname,
77
- }
78
-
79
- const credentials = btoa(JSON.stringify(auth))
80
-
81
- return 'Code ' + credentials
82
- }
@@ -1,3 +0,0 @@
1
- export { authenticate } from './authenticate'
2
- export { providers } from './providers'
3
- export type { IDP } from './providers'
@@ -1,5 +0,0 @@
1
- import { value } from 'svas'
2
-
3
- export const nonce = value<string>({
4
- persist: 'auth:oidc:nonce',
5
- })
@@ -1,28 +0,0 @@
1
- import { env } from '$env/dynamic/public'
2
-
3
- export const providers = {
4
- apple: {
5
- iss: 'https://appleid.apple.com',
6
- endpoint: 'https://appleid.apple.com/auth/authorize',
7
- type: 'code',
8
- scope: 'openid',
9
- client: env.PUBLIC_APPLE_CLIENT_ID,
10
- },
11
- google: {
12
- iss: 'https://accounts.google.com',
13
- endpoint: 'https://accounts.google.com/o/oauth2/v2/auth',
14
- type: 'id_token',
15
- scope: 'openid profile',
16
- client: env.PUBLIC_GOOGLE_CLIENT_ID,
17
- },
18
- } as const satisfies Record<string, Descriptor>
19
-
20
- export interface Descriptor {
21
- iss: string
22
- endpoint: string
23
- type: 'id_token' | 'code'
24
- scope: string
25
- client: string | undefined
26
- }
27
-
28
- export type IDP = keyof typeof providers
@@ -1,28 +0,0 @@
1
- import { nonce } from './nonce'
2
- import type { Descriptor, IDP } from './providers'
3
-
4
- export function standard(descriptor: Descriptor, idp: IDP) {
5
- const { client, endpoint, type, scope } = descriptor
6
-
7
- if (client === undefined || client === '')
8
- throw new Error('Client ID is required')
9
-
10
- const id = newid()
11
-
12
- const params = new URLSearchParams({
13
- client_id: client,
14
- redirect_uri: window.location.origin + '/',
15
- response_type: type,
16
- response_mode: 'fragment',
17
- scope,
18
- state: btoa(JSON.stringify({ idp })),
19
- nonce: id,
20
- })
21
-
22
- nonce.set(id)
23
- window.location.href = endpoint + '?' + params
24
- }
25
-
26
- function newid() {
27
- return window.crypto?.randomUUID?.() ?? Math.random().toString(16).slice(2)
28
- }
@@ -1,18 +0,0 @@
1
- import * as net from './net'
2
- import { authenticated } from './authenticated'
3
- import type { Echo } from './net'
4
-
5
- export async function send(email: string): Promise<void | Error> {
6
- return net.otp.post({ email })
7
- }
8
-
9
- export async function add(identity: string, email: string): Promise<void | Error> {
10
- return await net.otp.post(identity, { email })
11
- }
12
-
13
- export async function verify(username: string, otp: string): Promise<Echo | Error> {
14
- const credentials = btoa(`${username}:${otp}`)
15
- const echo = await net.get('OTP ' + credentials)
16
-
17
- return authenticated(echo, 'password')
18
- }
@@ -1,20 +0,0 @@
1
- import * as passkeys from '@/passkeys'
2
- import * as origin from '../net'
3
- import { authenticated } from '../authenticated'
4
-
5
- export async function create(name: string, identity?: string): Promise<origin.Echo | Error> {
6
- const response = await passkeys.create(name, identity)
7
-
8
- if (response instanceof Error) {
9
- console.error('Credential creation failed', response)
10
-
11
- return response
12
- }
13
-
14
- const echo = await origin.passkeys.post(response.identity, response.key)
15
-
16
- if (echo instanceof Error)
17
- console.error('Credential registration failed', echo)
18
-
19
- return authenticated(echo, 'passkey')
20
- }
@@ -1,2 +0,0 @@
1
- export { create } from './create'
2
- export { login } from './login'
@@ -1,21 +0,0 @@
1
- import { request } from '@/passkeys'
2
- import { passkeys } from '../net'
3
- import { authenticated } from '../authenticated'
4
- import type { Echo } from '../net'
5
-
6
- export async function login(id?: string): Promise<Echo | Error> {
7
- const response = await request(id)
8
-
9
- if (response instanceof Error) {
10
- console.error('Credential request failed', response)
11
-
12
- return response
13
- }
14
-
15
- const echo = await passkeys.post(response)
16
-
17
- if (echo instanceof Error)
18
- console.error('Credential verification failed', echo)
19
-
20
- return authenticated(echo, 'passkey')
21
- }
@@ -1,36 +0,0 @@
1
- import { derived, writable } from 'svelte/store'
2
- import { value } from 'svas'
3
- import type { IDP } from './oidc'
4
- import type { Echo } from './net'
5
-
6
- const account = value<Echo>({
7
- persist: 'auth:account',
8
- })
9
-
10
- const challenge = value<string>({
11
- persist: 'auth:challenge',
12
- bind: account,
13
- })
14
-
15
- const method = value<Method>({
16
- persist: 'auth:method',
17
- })
18
-
19
- const processing = writable(false)
20
- const greeting = writable(false)
21
-
22
- const authenticated = derived([challenge, account, processing],
23
- ([$challenge, $account, $processing]) => $challenge !== null && $account !== null && $processing === false)
24
-
25
- function iam(value: Echo) {
26
- if (account.extract()?.id !== value.id)
27
- account.set(null) // clear bound stores
28
-
29
- account.set(value)
30
- }
31
-
32
- type Account = Echo
33
- type Method = 'passkey' | 'password' | IDP
34
-
35
- export { account, challenge, method, authenticated, processing, greeting, iam }
36
- export type { Account, Echo, Method }
@@ -1,18 +0,0 @@
1
- import { challenge, iam } from './store'
2
- import * as origin from './net'
3
-
4
- /**
5
- * Sync account from origin
6
- */
7
- export async function sync(): Promise<void | Error> {
8
- const credentials = challenge.extract()
9
-
10
- if (credentials === null) return
11
-
12
- const echo = await origin.get(credentials)
13
-
14
- if (echo instanceof Error)
15
- return echo
16
-
17
- iam(echo)
18
- }
@@ -1,11 +0,0 @@
1
- import { fragment, convert } from '$lib/tools'
2
-
3
- /**
4
- * Consume a session `challenge` passed via the URL fragment.
5
- */
6
- export function consume(): string | null {
7
- const base64url = fragment('challenge')
8
-
9
- if (base64url === null) return null
10
- else return convert.fromBase64Url(base64url)
11
- }
@@ -1,8 +0,0 @@
1
- import { account, type Account } from './store'
2
-
3
- export function update(tobe: Partial<Account>): void {
4
- account.update((asis) => {
5
- if (asis === null) return null
6
- else return { ...asis, ...tobe }
7
- })
8
- }
@@ -1,4 +0,0 @@
1
- export interface AccountLike {
2
- id: string
3
- name?: string
4
- }
@@ -1,37 +0,0 @@
1
- <script lang="ts">
2
- import { authenticated, greeting, account as iam, method, processing } from '@/iam'
3
- import { Spinner } from '$ui/spinner'
4
- import { cn } from '$lib/utils'
5
- import { browser } from '$app/environment'
6
- import Refresh from './Refresh.svelte'
7
- import Authentication from './Authentication.svelte'
8
- import type { Props } from './Authenticated'
9
-
10
- const { children, screen, account, oncreate }: Props = $props()
11
- </script>
12
-
13
- {#snippet authentication()}
14
- {#if $iam}
15
- <Refresh account={$iam} method={$method} />
16
- {:else}
17
- <Authentication
18
- class={cn('scale-0 transition-transform', browser && 'scale-100')}
19
- {account}
20
- {oncreate}
21
- />
22
- {/if}
23
- {/snippet}
24
-
25
- {#if browser && $authenticated}
26
- {@render children()}
27
- {:else if $greeting || $processing || !browser}
28
- <div class="flex items-center justify-center h-screen">
29
- <Spinner />
30
- </div>
31
- {:else if screen}
32
- {@render screen({ authentication })}
33
- {:else}
34
- <div class="flex w-full max-w-sm items-center justify-center pt-[14vh] px-4 mx-auto">
35
- {@render authentication()}
36
- </div>
37
- {/if}
@@ -1,10 +0,0 @@
1
- import type { Snippet } from 'svelte'
2
- import type { Method } from '@/iam'
3
- import type { AccountLike } from './AccountLike'
4
-
5
- export interface Props {
6
- children: Snippet
7
- screen?: Snippet<[{ authentication: () => ReturnType<Snippet> }]>
8
- account?: AccountLike
9
- oncreate?: (account: AccountLike, method: Method) => void
10
- }
@@ -1,50 +0,0 @@
1
- <script lang="ts">
2
- import { onMount } from 'svelte'
3
- import { AtSign, FingerprintPattern } from '@lucide/svelte'
4
- import { supported } from '@/passkeys'
5
- import { dict } from '@/iam/ui/intl'
6
- import * as Tabs from '$ui/tabs'
7
- import { cn } from '$lib/utils'
8
- import { Authentication as Password } from './password'
9
- import { Authentication as Passkey } from './passkey'
10
- import { Authentication as OIDC } from './oidc'
11
- import type { Props } from './Authentication'
12
-
13
- const { class: classes, account, oncreate }: Props = $props()
14
-
15
- let tabsRef = $state<HTMLDivElement | null>(null)
16
-
17
- function onValueChange(value: string) {
18
- requestAnimationFrame(() => {
19
- tabsRef?.querySelector<HTMLInputElement>(`[data-value="${value}"] input[autofocus]`)?.focus()
20
- })
21
- }
22
-
23
- let value = $state<'passkey' | 'password'>('passkey')
24
-
25
- onMount(() => {
26
- value = supported ? 'passkey' : 'password'
27
- })
28
- </script>
29
-
30
- <Tabs.Root bind:value class={cn('w-full', classes)} {onValueChange} bind:ref={tabsRef}>
31
- <div class="flex justify-between gap-2">
32
- <Tabs.List>
33
- <Tabs.Trigger value="passkey" data-marker="passkey-tab">
34
- <FingerprintPattern color="var(--muted-foreground)" />
35
- {$dict.auth.passkey}
36
- </Tabs.Trigger>
37
- <Tabs.Trigger value="password" id="iam-email-tab">
38
- <AtSign color="var(--muted-foreground)" />
39
- {$dict.auth.email}
40
- </Tabs.Trigger>
41
- </Tabs.List>
42
- <OIDC {account} />
43
- </div>
44
- <Tabs.Content value="passkey">
45
- <Passkey {account} oncreate={(account) => oncreate?.(account, 'passkey')} />
46
- </Tabs.Content>
47
- <Tabs.Content value="password">
48
- <Password {account} oncreate={(account) => oncreate?.(account, 'password')} />
49
- </Tabs.Content>
50
- </Tabs.Root>
@@ -1,9 +0,0 @@
1
- import type { ClassValue } from 'svelte/elements'
2
- import type { Method } from '@/iam'
3
- import type { AccountLike } from './AccountLike'
4
-
5
- export interface Props {
6
- account?: AccountLike
7
- class?: ClassValue
8
- oncreate?: (account: AccountLike, method: Method) => void
9
- }
@@ -1,32 +0,0 @@
1
- <script lang="ts">
2
- import { account } from '@/iam'
3
- import { Clipboard } from '$lib/components/clipboard'
4
- import { dict } from './intl'
5
- import { authorize, type Props } from './Authorized'
6
-
7
- const { children, denied, ...checks }: Props = $props()
8
-
9
- const allowed = $derived(authorize(checks, $account))
10
- const id = $derived($account?.id ?? '')
11
-
12
- /** As much of an id as a person reads before they trust the clipboard has the rest. */
13
- const SHORT = 8
14
- </script>
15
-
16
- {#if allowed}
17
- {@render children()}
18
- {:else if denied !== undefined}
19
- {@render denied()}
20
- {:else if id !== ''}
21
- <!-- nothing to read: what is missing is a role on this account, and all the reader can
22
- do about it is hand their id to whoever grants one -->
23
- <div class="flex justify-center pt-[14vh]">
24
- <Clipboard
25
- text={id}
26
- label={id.slice(0, SHORT)}
27
- aria-label={$dict.auth.copyId}
28
- variant="outline"
29
- class="font-mono"
30
- />
31
- </div>
32
- {/if}