@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,65 +0,0 @@
1
- import { dev } from '$app/environment'
2
- import type { Snippet } from 'svelte'
3
- import type { Echo } from '@/iam'
4
-
5
- interface Checks {
6
- /** Development environment */
7
- dev?: boolean
8
- /** Beta domain */
9
- beta?: boolean
10
- /** `dev` or `beta` */
11
- debug?: boolean
12
- /** Required role */
13
- role?: string
14
- }
15
-
16
- export interface Props extends Checks {
17
- children: Snippet
18
- /**
19
- * What stands in place of the children when the checks say no. Without it the account
20
- * is told what it is missing and given its own id to ask with; a gate that guards a
21
- * control rather than a screen passes an empty snippet.
22
- */
23
- denied?: Snippet
24
- }
25
-
26
- type Principal = Pick<Echo, 'id' | 'roles'>
27
-
28
- export function authorize(checks: Checks, principal: Principal | null): boolean {
29
- if (checks.dev !== undefined)
30
- if (checks.dev === dev)
31
- return true
32
-
33
- if (checks.beta !== undefined)
34
- if (checks.beta === beta())
35
- return true
36
-
37
- if (checks.debug !== undefined)
38
- if (checks.debug === debug())
39
- return true
40
-
41
- if (checks.role !== undefined && principal?.roles !== undefined)
42
- if (scoped(principal.roles, checks.role))
43
- return true
44
-
45
- return false
46
- }
47
-
48
- function beta(): boolean {
49
- return typeof window !== 'undefined' && window.location.hostname.startsWith('beta.')
50
- }
51
-
52
- function debug(): boolean {
53
- return dev || beta()
54
- }
55
-
56
- /**
57
- * `app` role matches `app`, `app:codes` and all nested scope
58
- * `app:codes` role matches `app:codes` and all nested scopes, but not `app`
59
- */
60
- function scoped(roles: string[], scope: string): boolean {
61
- for (const role of roles)
62
- if (role === scope || scope.startsWith(role + ':')) return true
63
-
64
- return false
65
- }
@@ -1,14 +0,0 @@
1
- <script lang="ts">
2
- import * as Card from '$ui/card'
3
- import type { Props } from './Card'
4
-
5
- const { title, description, action }: Props = $props()
6
- </script>
7
-
8
- <Card.Root class="w-full">
9
- <Card.Header>
10
- <Card.Title>{title}</Card.Title>
11
- <Card.Description>{description}</Card.Description>
12
- </Card.Header>
13
- <Card.Content class="flex flex-col">{@render action()}</Card.Content>
14
- </Card.Root>
@@ -1,7 +0,0 @@
1
- import type { Snippet } from 'svelte'
2
-
3
- export interface Props {
4
- title: string
5
- description: string
6
- action: Snippet
7
- }
@@ -1,39 +0,0 @@
1
- <script lang="ts">
2
- import { onMount } from 'svelte'
3
- import { LogOut } from '@lucide/svelte'
4
- import { dict } from '@/iam/ui/intl'
5
- import { logout, type Method } from '@/iam'
6
- import { Button } from '$ui/button'
7
- import { Refresh as PasswordRefresh } from './password'
8
- import { Refresh as PasskeyRefresh } from './passkey'
9
- import { Refresh as OIDCRefresh } from './oidc'
10
- import Card from './Card.svelte'
11
- import type { AccountLike } from './AccountLike'
12
-
13
- const { account, method }: { account: AccountLike; method: Method | null } = $props()
14
-
15
- onMount(() => {
16
- if (method === null) logout()
17
- })
18
- </script>
19
-
20
- <div class="flex flex-col items-center gap-4 w-full">
21
- <Card title={$dict.auth.refresh.title} description={$dict.auth.refresh.description(account.name)}>
22
- {#snippet action()}
23
- {#if method === 'passkey'}
24
- <PasskeyRefresh {account} />
25
- {:else if method === 'password'}
26
- <PasswordRefresh />
27
- {:else if method === 'apple'}
28
- <OIDCRefresh idp="apple" />
29
- {:else if method === 'google'}
30
- <OIDCRefresh idp="google" />
31
- {/if}
32
- {/snippet}
33
- </Card>
34
-
35
- <Button variant="outline" onclick={logout}>
36
- <LogOut />
37
- {$dict.auth.signout}
38
- </Button>
39
- </div>
@@ -1,26 +0,0 @@
1
- <script lang="ts">
2
- import { Async } from 'svas'
3
- import { account } from '@/iam'
4
- import * as Item from '$ui/item'
5
- import { Transfer } from './transfer'
6
- import { providers } from './providers'
7
- import { Passkeys } from './passkeys'
8
- import Provider from './Provider.svelte'
9
- import type { Props } from './Credentials'
10
-
11
- const { class: classes }: Props = $props()
12
- </script>
13
-
14
- <Async store={account}>
15
- {#snippet awaited()}
16
- <div class={['flex flex-col gap-2', classes]}>
17
- <Item.Group class="gap-2">
18
- <Passkeys />
19
- {#each providers as provider (provider.id)}
20
- <Provider {provider} />
21
- {/each}
22
- </Item.Group>
23
- <Transfer class="self-start" />
24
- </div>
25
- {/snippet}
26
- </Async>
@@ -1,5 +0,0 @@
1
- import type { ClassValue } from 'svelte/elements'
2
-
3
- export interface Props {
4
- class?: ClassValue
5
- }
@@ -1,24 +0,0 @@
1
- <script lang="ts">
2
- import * as Item from '$ui/item'
3
- import { Button } from '$ui/button'
4
- import { dict } from '../intl'
5
- import type { Props } from './Provider'
6
-
7
- const { provider }: Props = $props()
8
-
9
- const Icon = $derived(provider.icon)
10
- const copy = $derived($dict.credentials[provider.id])
11
- </script>
12
-
13
- <Item.Root variant="outline">
14
- <Item.Media variant="icon">
15
- <Icon class="size-5" />
16
- </Item.Media>
17
- <Item.Content>
18
- <Item.Title>{copy.title}</Item.Title>
19
- <Item.Description>{copy.description}</Item.Description>
20
- </Item.Content>
21
- <Item.Actions>
22
- <Button variant="secondary">{$dict.credentials.connect}</Button>
23
- </Item.Actions>
24
- </Item.Root>
@@ -1,5 +0,0 @@
1
- import type { Descriptor } from './providers'
2
-
3
- export interface Props {
4
- provider: Descriptor
5
- }
@@ -1 +0,0 @@
1
- export { default as Credentials } from './Credentials.svelte'
@@ -1,42 +0,0 @@
1
- <script lang="ts">
2
- import { FingerprintPattern, KeyRound, Trash2 } from '@lucide/svelte'
3
- import { remove } from '@/passkeys'
4
- import * as Item from '$ui/item'
5
- import { date } from '$lib/tools'
6
- import { Hold } from '$com/hold'
7
- import { dict, locale } from '../../intl'
8
- import { resolve, type Props } from './Key'
9
-
10
- const { passkey }: Props = $props()
11
-
12
- const copy = $derived($dict.credentials.passkeys)
13
- const auth = $derived(resolve(passkey.aid))
14
- const meta = $derived(copy.meta(date(passkey._created, $locale), date(passkey._updated, $locale)))
15
- </script>
16
-
17
- <Item.Root>
18
- <Item.Media variant="icon">
19
- {#if auth?.light || auth?.dark}
20
- <img src={auth.light} alt="" class="size-5 dark:hidden" />
21
- <img src={auth.dark} alt="" class="hidden size-5 dark:block" />
22
- {:else if auth}
23
- <FingerprintPattern class="size-5" />
24
- {:else}
25
- <KeyRound class="size-5" />
26
- {/if}
27
- </Item.Media>
28
- <Item.Content>
29
- <Item.Title>{passkey.label || auth?.name || copy.unknown}</Item.Title>
30
- <Item.Description>{meta}</Item.Description>
31
- </Item.Content>
32
- <Item.Actions>
33
- <Hold
34
- name={`delete-passkey-${passkey.id}`}
35
- variant="destructive"
36
- size="icon"
37
- label={copy.delete}
38
- onclick={() => remove(passkey.id)}>
39
- <Trash2 />
40
- </Hold>
41
- </Item.Actions>
42
- </Item.Root>
@@ -1,29 +0,0 @@
1
- import json from '@/passkeys/ui/aaguid.json'
2
- import type { Passkey } from '@/passkeys'
3
-
4
- export interface Props {
5
- passkey: Passkey
6
- }
7
-
8
- interface Entry {
9
- name: string
10
- icon_dark?: string
11
- icon_light?: string
12
- }
13
-
14
- export interface Authenticator {
15
- name: string
16
- light?: string
17
- dark?: string
18
- }
19
-
20
- const map: Record<string, Entry> = json
21
-
22
- /** Resolve authenticator metadata (name + light/dark icons) by AAGUID. */
23
- export function resolve(aaguid: string): Authenticator | null {
24
- const entry = map[aaguid]
25
-
26
- if (entry === undefined) return null
27
-
28
- return { name: entry.name, light: entry.icon_light, dark: entry.icon_dark }
29
- }
@@ -1,83 +0,0 @@
1
- <script lang="ts">
2
- import { add } from '@/passkeys'
3
- import { account } from '@/iam'
4
- import { Spinner } from '$ui/spinner'
5
- import * as Item from '$ui/item'
6
- import { Input } from '$ui/input'
7
- import { Button } from '$ui/button'
8
- import { onsubmit } from '$lib/tools'
9
- import { dict } from '../../intl'
10
- import Key from './Key.svelte'
11
- import type { Props } from './Manager'
12
-
13
- const { keys }: Props = $props()
14
-
15
- const id = $derived($account?.id)
16
-
17
- let input = $state<HTMLInputElement | null>(null)
18
- let value = $state('')
19
- let busy = $state(false)
20
- let error = $state<Error | null>(null)
21
-
22
- // WebAuthn raises InvalidStateError only when the authenticator already holds
23
- // a credential the challenge excluded — this device is enrolled already
24
- const message = $derived(
25
- error === null
26
- ? null
27
- : error.name === 'InvalidStateError'
28
- ? $dict.credentials.passkeys.duplicate
29
- : $dict.credentials.passkeys.failed,
30
- )
31
-
32
- export function focus() {
33
- input?.focus()
34
- }
35
-
36
- async function submit() {
37
- const name = value.trim()
38
-
39
- if (id === undefined || name.length === 0) return
40
-
41
- busy = true
42
- error = null
43
-
44
- const res = await add(id, name)
45
-
46
- busy = false
47
-
48
- if (res instanceof Error) error = res
49
- else value = ''
50
- }
51
- </script>
52
-
53
- {#each keys as key (key.id)}
54
- <Item.Separator />
55
- <Key passkey={key} />
56
- {/each}
57
-
58
- <Item.Separator />
59
-
60
- <form onsubmit={onsubmit(submit)} class="flex flex-col gap-2 p-2 pt-0">
61
- <div class="flex items-center gap-2">
62
- <Input
63
- bind:ref={input}
64
- bind:value
65
- name="name"
66
- type="text"
67
- autocomplete="given-name"
68
- placeholder={$dict.credentials.passkeys.add}
69
- aria-invalid={message !== null}
70
- required
71
- disabled={busy} />
72
- <Button variant="outline" type="submit" disabled={busy}>
73
- {#if busy}
74
- <Spinner />
75
- {:else}
76
- {$dict.credentials.passkeys.create}
77
- {/if}
78
- </Button>
79
- </div>
80
- {#if message !== null}
81
- <p role="alert" class="text-destructive px-1 text-sm">{message}</p>
82
- {/if}
83
- </form>
@@ -1,5 +0,0 @@
1
- import type { Passkey } from '@/passkeys'
2
-
3
- export interface Props {
4
- keys: Passkey[]
5
- }
@@ -1,39 +0,0 @@
1
- <script lang="ts">
2
- import { tick } from 'svelte'
3
- import { Async } from 'svas'
4
- import { passkeys } from '@/passkeys'
5
- import * as Item from '$ui/item'
6
- import Summary from './Summary.svelte'
7
- import Manager from './Manager.svelte'
8
-
9
- let open = $state(false)
10
- let manager = $state<ReturnType<typeof Manager>>()
11
-
12
- async function toggle(create: boolean) {
13
- open = !open
14
-
15
- if (!open || !create) return
16
-
17
- await tick()
18
- manager?.focus()
19
- }
20
- </script>
21
-
22
- <Async store={passkeys}>
23
- {#snippet awaited(keys)}
24
- <div class="overflow-hidden rounded-xl border">
25
- <Item.Group class="gap-0">
26
- <Summary count={keys.length} {open} ontoggle={() => toggle(keys.length === 0)} />
27
- <div
28
- class={[
29
- 'grid transition-[grid-template-rows] duration-300 ease-out motion-reduce:transition-none',
30
- open ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',
31
- ]}>
32
- <div class="overflow-hidden" inert={!open}>
33
- <Manager bind:this={manager} {keys} />
34
- </div>
35
- </div>
36
- </Item.Group>
37
- </div>
38
- {/snippet}
39
- </Async>
@@ -1,27 +0,0 @@
1
- <script lang="ts">
2
- import { FingerprintPattern } from '@lucide/svelte'
3
- import * as Item from '$ui/item'
4
- import { Button } from '$ui/button'
5
- import { dict } from '../../intl'
6
- import type { Props } from './Summary'
7
-
8
- const { count, open, ontoggle }: Props = $props()
9
-
10
- const copy = $derived($dict.credentials.passkeys)
11
- const cta = $derived(open ? copy.collapse : count ? copy.manage : copy.create)
12
- </script>
13
-
14
- <Item.Root>
15
- <Item.Media variant="icon">
16
- <FingerprintPattern class="size-5" />
17
- </Item.Media>
18
- <Item.Content>
19
- <Item.Title>{copy.title}</Item.Title>
20
- <Item.Description>
21
- {#if count}{copy.count(count)}{:else}{copy.tagline}{/if}
22
- </Item.Description>
23
- </Item.Content>
24
- <Item.Actions>
25
- <Button variant="secondary" onclick={ontoggle}>{cta}</Button>
26
- </Item.Actions>
27
- </Item.Root>
@@ -1,5 +0,0 @@
1
- export interface Props {
2
- count: number
3
- open: boolean
4
- ontoggle: () => void
5
- }
@@ -1 +0,0 @@
1
- export { default as Passkeys } from './Passkeys.svelte'
@@ -1,15 +0,0 @@
1
- import { Mail } from '@lucide/svelte'
2
- import { icons } from '../oidc/icons'
3
- import type { Component } from 'svelte'
4
-
5
- /** Presentational descriptor for a provider row. Carries no behaviour. */
6
- export interface Descriptor {
7
- id: 'email' | 'google' | 'apple'
8
- icon: Component
9
- }
10
-
11
- export const providers: readonly Descriptor[] = [
12
- { id: 'email', icon: Mail },
13
- { id: 'google', icon: icons.google },
14
- { id: 'apple', icon: icons.apple },
15
- ] as const
@@ -1,24 +0,0 @@
1
- <script lang="ts">
2
- import QRCode from 'qrcode'
3
- import { Spinner } from '$ui/spinner'
4
- import type { Props } from './Qr'
5
-
6
- const { value }: Props = $props()
7
-
8
- let src = $state<string | null>(null)
9
-
10
- $effect(() => {
11
- void QRCode.toDataURL(value, { width: 256, margin: 1 }).then(
12
- (data) => (src = data),
13
- () => (src = null),
14
- )
15
- })
16
- </script>
17
-
18
- <div class="bg-background mx-auto grid size-64 place-items-center rounded-lg border p-2">
19
- {#if src}
20
- <img {src} alt="" class="size-full" width="256" height="256" />
21
- {:else}
22
- <Spinner />
23
- {/if}
24
- </div>
@@ -1,3 +0,0 @@
1
- export interface Props {
2
- value: string
3
- }
@@ -1,48 +0,0 @@
1
- <script lang="ts">
2
- import { ChevronRight, QrCode } from '@lucide/svelte'
3
- import { challenge } from '@/iam'
4
- import { buttonVariants } from '$ui/button'
5
- import * as AlertDialog from '$ui/alert-dialog'
6
- import { convert } from '$lib/tools'
7
- import { browser, dev } from '$app/environment'
8
- import { dict } from '../../intl'
9
- import Qr from './Qr.svelte'
10
- import type { Props } from './Transfer'
11
-
12
- const { class: classes }: Props = $props()
13
-
14
- const url = $derived(
15
- browser && $challenge
16
- ? `${location.origin}/#challenge=${convert.toBase64Url($challenge)}`
17
- : null,
18
- )
19
-
20
- function onOpenChange(open: boolean) {
21
- if (!open && dev && url) void navigator.clipboard.writeText(url)
22
- }
23
- </script>
24
-
25
- <AlertDialog.Root {onOpenChange}>
26
- <AlertDialog.Trigger
27
- class={[
28
- buttonVariants({ variant: 'ghost', size: 'sm' }),
29
- 'text-muted-foreground justify-start gap-1',
30
- classes,
31
- ]}>
32
- <QrCode class="size-4" />
33
- {$dict.credentials.transfer.action}
34
- <ChevronRight class="size-4 opacity-60" />
35
- </AlertDialog.Trigger>
36
- <AlertDialog.Content>
37
- <AlertDialog.Header>
38
- <AlertDialog.Title>{$dict.credentials.transfer.title}</AlertDialog.Title>
39
- <AlertDialog.Description>{$dict.credentials.transfer.description}</AlertDialog.Description>
40
- </AlertDialog.Header>
41
- {#if url}
42
- <Qr value={url} />
43
- {/if}
44
- <AlertDialog.Footer>
45
- <AlertDialog.Cancel>{$dict.credentials.transfer.done}</AlertDialog.Cancel>
46
- </AlertDialog.Footer>
47
- </AlertDialog.Content>
48
- </AlertDialog.Root>
@@ -1,5 +0,0 @@
1
- import type { ClassValue } from 'svelte/elements'
2
-
3
- export interface Props {
4
- class?: ClassValue
5
- }
@@ -1 +0,0 @@
1
- export { default as Transfer } from './Transfer.svelte'
@@ -1,3 +0,0 @@
1
- export { default as Authenticated } from './Authenticated.svelte'
2
- export { default as Authorized } from './Authorized.svelte'
3
- export { Credentials } from './credentials'
@@ -1,79 +0,0 @@
1
- // Auto-generated by i18n CLI - do not edit manually
2
-
3
- /** @type {Record<import('$lib/intl').Locale, import('./types').Dictionary>} */
4
- export const dictionaries = {
5
- "en-US": {
6
- "auth": {
7
- "signupTitle": "One-tap sign-up",
8
- "passwordTitle": "Hop in with password",
9
- "passwordDescription": "Create an account or sign in",
10
- "passkey": "Passkeys",
11
- "email": "Email",
12
- "alreadyHaveAccount": "Already have an account?",
13
- "betterSecurity": "Better security",
14
- "passkeysNotSupported": "Passkeys not supported",
15
- "passkeysWarning": "Your browser does not respect your privacy and security.",
16
- "learnMore": "Learn more",
17
- "passwordBlank": "Leave password blank <nobr>to receive</nobr> <nobr>a one-time</nobr> passcode.",
18
- "otpInstructions": "Enter the code sent to your email. It expires in 5 minutes.",
19
- "continueWith": (provider) => {
20
- return `Continue with ${provider}`
21
- },
22
- "passkeysDescription": "Passkeys are safer than passwords, easier to use, and can’t be stolen.",
23
- "yourName": "Your name",
24
- "password": "Password",
25
- "refresh": {
26
- "description": (name) => `${name ? name + ", for" : "For"} security reasons, your credentials have expired. Please log in again to continue.`,
27
- "title": "Welcome back",
28
- "continue": "Continue"
29
- },
30
- "signout": "Sign out",
31
- "login": "Log In",
32
- "signin": "Sign In",
33
- "copyId": "Copy account ID"
34
- },
35
- "credentials": {
36
- "connect": "Connect",
37
- "email": {
38
- "title": "Email",
39
- "description": "Connect your email address"
40
- },
41
- "google": {
42
- "title": "Google",
43
- "description": "Connect your Google account"
44
- },
45
- "apple": {
46
- "title": "Apple",
47
- "description": "Connect your Apple ID"
48
- },
49
- "passkeys": {
50
- "title": "Passkeys",
51
- "tagline": "Sign in faster with a passkey",
52
- "create": "Create",
53
- "manage": "Manage",
54
- "collapse": "Collapse",
55
- "add": "Enter passkey name",
56
- "delete": "Hold to delete",
57
- "unknown": "Unknown",
58
- "count": (count) => {
59
- const forms = {"one":"{n} passkey","other":"{n} passkeys"};
60
- const locale = "en-US"; // This will be replaced by the build system
61
- const pluralRules = new Intl.PluralRules(locale);
62
- const rule = pluralRules.select(count);
63
- const table = /** @type {Record<string, string>} */ (forms);
64
-
65
- return (table[rule] ?? table.other).replace(/{n}/g, new Intl.NumberFormat(locale).format(count));
66
- },
67
- "meta": (added, used) => `Added ${added} · Used ${used}`,
68
- "duplicate": "This device already has a passkey for your account",
69
- "failed": "Could not create the passkey. Please try again."
70
- },
71
- "transfer": {
72
- "action": "Sign in on another device",
73
- "title": "Scan to sign in",
74
- "description": "Use your other device to scan this code and sign in.",
75
- "done": "Done"
76
- }
77
- }
78
- }
79
- };