@tinyrack/issuary-server 0.25.0 → 0.26.0

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 (134) hide show
  1. package/package.json +1 -1
  2. package/public/assets/{2fa-waFAdIa0.js → 2fa-C9wUlSBS.js} +2 -2
  3. package/public/assets/{2fa-waFAdIa0.js.map → 2fa-C9wUlSBS.js.map} +1 -1
  4. package/public/assets/2fa-DFTcWEMb.js +2 -0
  5. package/public/assets/{2fa-BlpDkf-r.js.map → 2fa-DFTcWEMb.js.map} +1 -1
  6. package/public/assets/{2fa-DIpGlpoI.js → 2fa-TtshNxXv.js} +2 -2
  7. package/public/assets/{2fa-DIpGlpoI.js.map → 2fa-TtshNxXv.js.map} +1 -1
  8. package/public/assets/2fa-huNZDYU9.js +2 -0
  9. package/public/assets/{2fa-tzTSqiOS.js.map → 2fa-huNZDYU9.js.map} +1 -1
  10. package/public/assets/{DialogHandle-ChG5Sj7T.js → DialogHandle-DICBMcjK.js} +2 -2
  11. package/public/assets/{DialogHandle-ChG5Sj7T.js.map → DialogHandle-DICBMcjK.js.map} +1 -1
  12. package/public/assets/{admin-Ii29X08B.js → admin-CFZaO1bM.js} +2 -2
  13. package/public/assets/{admin-Ii29X08B.js.map → admin-CFZaO1bM.js.map} +1 -1
  14. package/public/assets/{admin-users-d7tT-cjc.js → admin-users-BK_BN8jm.js} +2 -2
  15. package/public/assets/{admin-users-d7tT-cjc.js.map → admin-users-BK_BN8jm.js.map} +1 -1
  16. package/public/assets/alert-leqyvHOp.js.map +1 -1
  17. package/public/assets/auth-choice-row-CXuyJgkR.js +2 -0
  18. package/public/assets/{auth-choice-row-DUvFyo7b.js.map → auth-choice-row-CXuyJgkR.js.map} +1 -1
  19. package/public/assets/{auth-field-BSlAWkbx.js → auth-field-CWyXGKoC.js} +2 -2
  20. package/public/assets/{auth-field-BSlAWkbx.js.map → auth-field-CWyXGKoC.js.map} +1 -1
  21. package/public/assets/{auth-layout-CcJy6dVY.js → auth-layout-CiNn2-Nb.js} +2 -2
  22. package/public/assets/{auth-layout-CcJy6dVY.js.map → auth-layout-CiNn2-Nb.js.map} +1 -1
  23. package/public/assets/{auth-page-header-ZLhtQ7Et.js → auth-page-header-DgGAaIiP.js} +2 -2
  24. package/public/assets/{auth-page-header-ZLhtQ7Et.js.map → auth-page-header-DgGAaIiP.js.map} +1 -1
  25. package/public/assets/{authorization-context-banner-DfkjwE93.js → authorization-context-banner-DznMDPOX.js} +2 -2
  26. package/public/assets/{authorization-context-banner-DfkjwE93.js.map → authorization-context-banner-DznMDPOX.js.map} +1 -1
  27. package/public/assets/{avatar-D-70MKp8.js → avatar-D-FRGa1m.js} +2 -2
  28. package/public/assets/{avatar-D-70MKp8.js.map → avatar-D-FRGa1m.js.map} +1 -1
  29. package/public/assets/badge-CsOfUji0.js.map +1 -1
  30. package/public/assets/{checkbox-C3UmXoKz.js → checkbox-C90dDDza.js} +2 -2
  31. package/public/assets/{checkbox-C3UmXoKz.js.map → checkbox-C90dDDza.js.map} +1 -1
  32. package/public/assets/config-DTQCUlfZ.js.map +1 -1
  33. package/public/assets/{consent-D_yGE8TR.js → consent-B9sQEyO8.js} +2 -2
  34. package/public/assets/{consent-D_yGE8TR.js.map → consent-B9sQEyO8.js.map} +1 -1
  35. package/public/assets/{consent-BJgO9pEV.js → consent-RtCi_85E.js} +2 -2
  36. package/public/assets/{consent-BJgO9pEV.js.map → consent-RtCi_85E.js.map} +1 -1
  37. package/public/assets/createLucideIcon-BPpAIXR_.js.map +1 -1
  38. package/public/assets/{email-DAa8JGoC.js → email-8RKQzeig.js} +2 -2
  39. package/public/assets/{email-DAa8JGoC.js.map → email-8RKQzeig.js.map} +1 -1
  40. package/public/assets/email-huNZDYU9.js +2 -0
  41. package/public/assets/{email-tzTSqiOS.js.map → email-huNZDYU9.js.map} +1 -1
  42. package/public/assets/{error-Dj4QQ8vW.js → error-BYe3gUMO.js} +2 -2
  43. package/public/assets/{error-Dj4QQ8vW.js.map → error-BYe3gUMO.js.map} +1 -1
  44. package/public/assets/{field-CEs4ugVJ.js → field-BMT214_m.js} +2 -2
  45. package/public/assets/{field-CEs4ugVJ.js.map → field-BMT214_m.js.map} +1 -1
  46. package/public/assets/{forgot-CYMAWPVu.js → forgot-BenoOUxC.js} +2 -2
  47. package/public/assets/{forgot-CYMAWPVu.js.map → forgot-BenoOUxC.js.map} +1 -1
  48. package/public/assets/forgot-huNZDYU9.js +2 -0
  49. package/public/assets/{forgot-tzTSqiOS.js.map → forgot-huNZDYU9.js.map} +1 -1
  50. package/public/assets/{index-H6CJKjiN.js → index-CKpnrw9M.js} +3 -3
  51. package/public/assets/index-CKpnrw9M.js.map +1 -0
  52. package/public/assets/{index-kD9gQA-w.css → index-Ct9o0oCZ.css} +1 -1
  53. package/public/assets/{initial-avatar-DjSqgENY.js → initial-avatar-E5DK9Igm.js} +2 -2
  54. package/public/assets/{initial-avatar-DjSqgENY.js.map → initial-avatar-E5DK9Igm.js.map} +1 -1
  55. package/public/assets/{input-BHPUSlfp.js → input-CxVeC8Pn.js} +2 -2
  56. package/public/assets/{input-BHPUSlfp.js.map → input-CxVeC8Pn.js.map} +1 -1
  57. package/public/assets/link-C-WdTj3F.js.map +1 -1
  58. package/public/assets/{login-CBinfk4L.js → login-1YuiZD30.js} +2 -2
  59. package/public/assets/{login-CBinfk4L.js.map → login-1YuiZD30.js.map} +1 -1
  60. package/public/assets/login-huNZDYU9.js +2 -0
  61. package/public/assets/{login-tzTSqiOS.js.map → login-huNZDYU9.js.map} +1 -1
  62. package/public/assets/{modal-CwoBUXp3.js → modal-tByFpy18.js} +2 -2
  63. package/public/assets/{modal-CwoBUXp3.js.map → modal-tByFpy18.js.map} +1 -1
  64. package/public/assets/{passkey-V_tav53p.js → passkey-CgAHaQ1p.js} +2 -2
  65. package/public/assets/{passkey-V_tav53p.js.map → passkey-CgAHaQ1p.js.map} +1 -1
  66. package/public/assets/passkey-huNZDYU9.js +2 -0
  67. package/public/assets/{passkey-tzTSqiOS.js.map → passkey-huNZDYU9.js.map} +1 -1
  68. package/public/assets/{passkey-Jw2CRzJp.js → passkey-v9Pzv-4A.js} +2 -2
  69. package/public/assets/{passkey-Jw2CRzJp.js.map → passkey-v9Pzv-4A.js.map} +1 -1
  70. package/public/assets/{password-6QOqTV_s.js → password-Cuh9Hnjp.js} +2 -2
  71. package/public/assets/{password-6QOqTV_s.js.map → password-Cuh9Hnjp.js.map} +1 -1
  72. package/public/assets/password-huNZDYU9.js +2 -0
  73. package/public/assets/{password-tzTSqiOS.js.map → password-huNZDYU9.js.map} +1 -1
  74. package/public/assets/{password-strength-DtGMHOD-.js → password-strength-BIPcWiM_.js} +2 -2
  75. package/public/assets/{password-strength-DtGMHOD-.js.map → password-strength-BIPcWiM_.js.map} +1 -1
  76. package/public/assets/{pin-input-DdhzDNy9.js → pin-input-CITrr-Yc.js} +2 -2
  77. package/public/assets/{pin-input-DdhzDNy9.js.map → pin-input-CITrr-Yc.js.map} +1 -1
  78. package/public/assets/{profile-DVjIWt8X.js → profile-BHPL9Px_.js} +2 -2
  79. package/public/assets/{profile-DVjIWt8X.js.map → profile-BHPL9Px_.js.map} +1 -1
  80. package/public/assets/{profile-SHr6F-7b.js → profile-C8KaELVe.js} +2 -2
  81. package/public/assets/{profile-SHr6F-7b.js.map → profile-C8KaELVe.js.map} +1 -1
  82. package/public/assets/{recovery-CvNl-yt9.js → recovery-CVROV9nj.js} +2 -2
  83. package/public/assets/{recovery-CvNl-yt9.js.map → recovery-CVROV9nj.js.map} +1 -1
  84. package/public/assets/{register-SFXa5EeL.js → register-cpxjX3qr.js} +2 -2
  85. package/public/assets/{register-SFXa5EeL.js.map → register-cpxjX3qr.js.map} +1 -1
  86. package/public/assets/register-huNZDYU9.js +2 -0
  87. package/public/assets/{register-tzTSqiOS.js.map → register-huNZDYU9.js.map} +1 -1
  88. package/public/assets/reset-huNZDYU9.js +2 -0
  89. package/public/assets/{reset-tzTSqiOS.js.map → reset-huNZDYU9.js.map} +1 -1
  90. package/public/assets/{reset-l-pLzjwe.js → reset-iNqYdsoa.js} +2 -2
  91. package/public/assets/{reset-l-pLzjwe.js.map → reset-iNqYdsoa.js.map} +1 -1
  92. package/public/assets/{select-D2H87qXJ.js → select-DdjQtcLJ.js} +2 -2
  93. package/public/assets/{select-D2H87qXJ.js.map → select-DdjQtcLJ.js.map} +1 -1
  94. package/public/assets/select-huNZDYU9.js +2 -0
  95. package/public/assets/{select-tzTSqiOS.js.map → select-huNZDYU9.js.map} +1 -1
  96. package/public/assets/separator-B0Bvh1he.js.map +1 -1
  97. package/public/assets/{shell-header-bar-BPgCjFPv.js → shell-header-bar-JcFhS7mb.js} +2 -2
  98. package/public/assets/{shell-header-bar-BPgCjFPv.js.map → shell-header-bar-JcFhS7mb.js.map} +1 -1
  99. package/public/assets/{terms-DVjIWt8X.js → terms-BHPL9Px_.js} +2 -2
  100. package/public/assets/{terms-DVjIWt8X.js.map → terms-BHPL9Px_.js.map} +1 -1
  101. package/public/assets/{terms-D5rfQhog.js → terms-BjwMWDFp.js} +2 -2
  102. package/public/assets/{terms-D5rfQhog.js.map → terms-BjwMWDFp.js.map} +1 -1
  103. package/public/assets/terms-checkbox-list-DNOq4Pb2.js +2 -0
  104. package/public/assets/terms-checkbox-list-DNOq4Pb2.js.map +1 -0
  105. package/public/assets/{totp-wY0Zji8E.js → totp-D_EWG1h8.js} +2 -2
  106. package/public/assets/{totp-wY0Zji8E.js.map → totp-D_EWG1h8.js.map} +1 -1
  107. package/public/assets/{totp-BbQi-gsF.js → totp-DetFwOkk.js} +2 -2
  108. package/public/assets/{totp-BbQi-gsF.js.map → totp-DetFwOkk.js.map} +1 -1
  109. package/public/assets/use-totp-setup-DtlgPUPJ.js +3 -0
  110. package/public/assets/use-totp-setup-DtlgPUPJ.js.map +1 -0
  111. package/public/assets/{useAriaLabelledBy-9o83pv9X.js → useAriaLabelledBy-IIwdHUss.js} +2 -2
  112. package/public/assets/{useAriaLabelledBy-9o83pv9X.js.map → useAriaLabelledBy-IIwdHUss.js.map} +1 -1
  113. package/public/assets/useQuery-Ccv_nzQl.js +2 -0
  114. package/public/assets/{useQuery-CI5Ukuae.js.map → useQuery-Ccv_nzQl.js.map} +1 -1
  115. package/public/assets/{users-DqCnblEo.js → users-B1gvPM_x.js} +2 -2
  116. package/public/assets/{users-DqCnblEo.js.map → users-B1gvPM_x.js.map} +1 -1
  117. package/public/index.html +2 -2
  118. package/public/assets/2fa-BlpDkf-r.js +0 -2
  119. package/public/assets/2fa-tzTSqiOS.js +0 -2
  120. package/public/assets/auth-choice-row-DUvFyo7b.js +0 -2
  121. package/public/assets/email-tzTSqiOS.js +0 -2
  122. package/public/assets/forgot-tzTSqiOS.js +0 -2
  123. package/public/assets/index-H6CJKjiN.js.map +0 -1
  124. package/public/assets/login-tzTSqiOS.js +0 -2
  125. package/public/assets/passkey-tzTSqiOS.js +0 -2
  126. package/public/assets/password-tzTSqiOS.js +0 -2
  127. package/public/assets/register-tzTSqiOS.js +0 -2
  128. package/public/assets/reset-tzTSqiOS.js +0 -2
  129. package/public/assets/select-tzTSqiOS.js +0 -2
  130. package/public/assets/terms-checkbox-list-BKJcS2pJ.js +0 -2
  131. package/public/assets/terms-checkbox-list-BKJcS2pJ.js.map +0 -1
  132. package/public/assets/use-totp-setup-OH_GTMxA.js +0 -3
  133. package/public/assets/use-totp-setup-OH_GTMxA.js.map +0 -1
  134. package/public/assets/useQuery-CI5Ukuae.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"select-tzTSqiOS.js","names":["RouteErrorFallback","SplitErrorComponent","errorComponent"],"sources":["../../../frontend/src/routes/account/select/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute } from '@tanstack/react-router';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRIconButton } from '@tinyrack/ui/components/icon-button';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport {\n ArrowRightIcon,\n CircleUserRoundIcon,\n PlusIcon,\n Trash2Icon,\n} from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { AuthChoiceRow } from '#frontend/components/auth/auth-choice-row.tsx';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { InitialAvatar } from '#frontend/components/ui/initial-avatar.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthorizeUrl,\n extractOAuthParams,\n OAuthSearchSchema,\n} from '#frontend/libs/oauth-search.ts';\nimport {\n accountsQueryOptions,\n removeAccountMutationOptions,\n selectAccountMutationOptions,\n} from '#frontend/queries/accounts.ts';\nimport { queryKeys } from '#frontend/queries/keys.ts';\n\nexport const Route = createFileRoute('/account/select/')({\n component: AccountSelect,\n errorComponent: RouteErrorFallback,\n validateSearch: OAuthSearchSchema,\n loader: async ({ context, location }) => {\n const search = location.search as { client_id?: string };\n await context.queryClient.ensureQueryData(\n accountsQueryOptions(search.client_id),\n );\n },\n});\n\nfunction appendLoginPrompt(prompt: string | undefined): string {\n const values = prompt?.split(' ').filter(Boolean) ?? [];\n if (!values.includes('login')) {\n values.push('login');\n }\n return values.join(' ');\n}\n\nfunction buildLoginHref(search: ReturnType<typeof Route.useSearch>) {\n const oauthParams = extractOAuthParams(search);\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries({\n ...oauthParams,\n prompt: appendLoginPrompt(oauthParams.prompt),\n account_selected: 1,\n })) {\n if (value !== undefined) {\n params.set(key, String(value));\n }\n }\n return `/login?${params.toString()}`;\n}\n\nfunction AccountSelect() {\n const { t } = useTranslation();\n const search = Route.useSearch();\n const queryClient = useQueryClient();\n const { data } = useSuspenseQuery(accountsQueryOptions(search.client_id));\n const accountSelectionUnavailable =\n data.accounts.length === 0 && !data.allow_add_account;\n\n const continueWithSelectedAccount = () => {\n window.location.href = buildAuthorizeUrl({\n ...search,\n account_selected: 1,\n });\n };\n\n const selectMutation = useMutation({\n ...selectAccountMutationOptions,\n onSuccess: continueWithSelectedAccount,\n });\n const removeMutation = useMutation({\n ...removeAccountMutationOptions,\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: queryKeys.accounts(search.client_id),\n });\n },\n });\n\n return (\n <AuthLayout width=\"wide\">\n <AuthPageHeader\n subtitle={t('accountSelect.subtitle')}\n title={t('accountSelect.title')}\n />\n\n {data.accounts.length === 0 ? (\n <Alert icon={CircleUserRoundIcon} type=\"info\">\n {accountSelectionUnavailable\n ? t('accountSelect.unavailable')\n : t('accountSelect.noRememberedAccounts')}\n </Alert>\n ) : (\n <div\n className=\"flex flex-col gap-tinyrack-xs\"\n data-testid=\"account-list\"\n >\n {data.accounts.map((account) => (\n <div data-testid=\"remembered-account\" key={account.sub}>\n <AuthChoiceRow\n description={\n account.current\n ? t('accountSelect.currentAccount')\n : t('accountSelect.rememberedAccount')\n }\n label={account.email}\n leading={<InitialAvatar email={account.email} size=\"sm\" />}\n /*\n Picking an account is a mutation, not navigation, so this\n one is a button. No children — the row supplies them.\n */\n render={\n <TRButton\n data-testid={`select-account-${account.sub}`}\n disabled={selectMutation.isPending}\n onClick={() => selectMutation.mutate({ sub: account.sub })}\n type=\"button\"\n />\n }\n trailing={\n <>\n {account.current ? (\n <TRBadge uiSize=\"md\" variant=\"info\">\n {t('accountSelect.current')}\n </TRBadge>\n ) : null}\n {data.allow_remove_account && !account.current ? (\n <TRIconButton\n appearance=\"ghost\"\n aria-label={t('accountSelect.removeAccount', {\n email: account.email,\n })}\n data-testid={`remove-account-${account.sub}`}\n disabled={removeMutation.isPending}\n intent=\"neutral\"\n onClick={() =>\n removeMutation.mutate({ sub: account.sub })\n }\n type=\"button\"\n uiSize=\"sm\"\n >\n <Trash2Icon aria-hidden className=\"size-tinyrack-lg\" />\n </TRIconButton>\n ) : null}\n </>\n }\n />\n </div>\n ))}\n </div>\n )}\n\n {data.allow_add_account ? (\n <TRLinkButton\n appearance=\"outline\"\n className=\"w-full justify-between\"\n intent=\"neutral\"\n render={<a href={buildLoginHref(search)} />}\n >\n <span className=\"inline-flex items-center gap-tinyrack-sm\">\n <PlusIcon aria-hidden className=\"size-tinyrack-lg\" />\n {t('accountSelect.useAnotherAccount')}\n </span>\n <ArrowRightIcon aria-hidden className=\"size-tinyrack-lg\" />\n </TRLinkButton>\n ) : null}\n </AuthLayout>\n );\n}\n"],"mappings":"wCAqBsF,IAAAC,EAA7ED"}
1
+ {"version":3,"file":"select-huNZDYU9.js","names":["RouteErrorFallback","SplitErrorComponent","errorComponent"],"sources":["../../../frontend/src/routes/account/select/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute } from '@tanstack/react-router';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRIconButton } from '@tinyrack/ui/components/icon-button';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport {\n ArrowRightIcon,\n CircleUserRoundIcon,\n PlusIcon,\n Trash2Icon,\n} from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { AuthChoiceRow } from '#frontend/components/auth/auth-choice-row.tsx';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { InitialAvatar } from '#frontend/components/ui/initial-avatar.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthorizeUrl,\n extractOAuthParams,\n OAuthSearchSchema,\n} from '#frontend/libs/oauth-search.ts';\nimport {\n accountsQueryOptions,\n removeAccountMutationOptions,\n selectAccountMutationOptions,\n} from '#frontend/queries/accounts.ts';\nimport { queryKeys } from '#frontend/queries/keys.ts';\n\nexport const Route = createFileRoute('/account/select/')({\n component: AccountSelect,\n errorComponent: RouteErrorFallback,\n validateSearch: OAuthSearchSchema,\n loader: async ({ context, location }) => {\n const search = location.search as { client_id?: string };\n await context.queryClient.ensureQueryData(\n accountsQueryOptions(search.client_id),\n );\n },\n});\n\nfunction appendLoginPrompt(prompt: string | undefined): string {\n const values = prompt?.split(' ').filter(Boolean) ?? [];\n if (!values.includes('login')) {\n values.push('login');\n }\n return values.join(' ');\n}\n\nfunction buildLoginHref(search: ReturnType<typeof Route.useSearch>) {\n const oauthParams = extractOAuthParams(search);\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries({\n ...oauthParams,\n prompt: appendLoginPrompt(oauthParams.prompt),\n account_selected: 1,\n })) {\n if (value !== undefined) {\n params.set(key, String(value));\n }\n }\n return `/login?${params.toString()}`;\n}\n\nfunction AccountSelect() {\n const { t } = useTranslation();\n const search = Route.useSearch();\n const queryClient = useQueryClient();\n const { data } = useSuspenseQuery(accountsQueryOptions(search.client_id));\n const accountSelectionUnavailable =\n data.accounts.length === 0 && !data.allow_add_account;\n\n const continueWithSelectedAccount = () => {\n window.location.href = buildAuthorizeUrl({\n ...search,\n account_selected: 1,\n });\n };\n\n const selectMutation = useMutation({\n ...selectAccountMutationOptions,\n onSuccess: continueWithSelectedAccount,\n });\n const removeMutation = useMutation({\n ...removeAccountMutationOptions,\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: queryKeys.accounts(search.client_id),\n });\n },\n });\n\n return (\n <AuthLayout width=\"wide\">\n <AuthPageHeader\n subtitle={t('accountSelect.subtitle')}\n title={t('accountSelect.title')}\n />\n\n {data.accounts.length === 0 ? (\n <Alert icon={CircleUserRoundIcon} type=\"info\">\n {accountSelectionUnavailable\n ? t('accountSelect.unavailable')\n : t('accountSelect.noRememberedAccounts')}\n </Alert>\n ) : (\n <div\n className=\"flex flex-col gap-tinyrack-xs\"\n data-testid=\"account-list\"\n >\n {data.accounts.map((account) => (\n <div data-testid=\"remembered-account\" key={account.sub}>\n <AuthChoiceRow\n description={\n account.current\n ? t('accountSelect.currentAccount')\n : t('accountSelect.rememberedAccount')\n }\n label={account.email}\n leading={<InitialAvatar email={account.email} size=\"sm\" />}\n /*\n Picking an account is a mutation, not navigation, so this\n one is a button. No children — the row supplies them.\n */\n render={\n <TRButton\n data-testid={`select-account-${account.sub}`}\n disabled={selectMutation.isPending}\n onClick={() => selectMutation.mutate({ sub: account.sub })}\n type=\"button\"\n uiSize=\"lg\"\n />\n }\n trailing={\n <>\n {account.current ? (\n <TRBadge uiSize=\"md\" variant=\"info\">\n {t('accountSelect.current')}\n </TRBadge>\n ) : null}\n {data.allow_remove_account && !account.current ? (\n <TRIconButton\n appearance=\"ghost\"\n aria-label={t('accountSelect.removeAccount', {\n email: account.email,\n })}\n data-testid={`remove-account-${account.sub}`}\n disabled={removeMutation.isPending}\n intent=\"neutral\"\n onClick={() =>\n removeMutation.mutate({ sub: account.sub })\n }\n type=\"button\"\n uiSize=\"sm\"\n >\n <Trash2Icon aria-hidden className=\"size-tinyrack-lg\" />\n </TRIconButton>\n ) : null}\n </>\n }\n />\n </div>\n ))}\n </div>\n )}\n\n {data.allow_add_account ? (\n <TRLinkButton\n appearance=\"outline\"\n className=\"w-full justify-between\"\n intent=\"neutral\"\n render={<a href={buildLoginHref(search)} />}\n uiSize=\"lg\"\n >\n <span className=\"inline-flex items-center gap-tinyrack-sm\">\n <PlusIcon aria-hidden className=\"size-tinyrack-lg\" />\n {t('accountSelect.useAnotherAccount')}\n </span>\n <ArrowRightIcon aria-hidden className=\"size-tinyrack-lg\" />\n </TRLinkButton>\n ) : null}\n </AuthLayout>\n );\n}\n"],"mappings":"wCAqBsF,IAAAC,EAA7ED"}
@@ -1 +1 @@
1
- {"version":3,"file":"separator-B0Bvh1he.js","names":[],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/separator/Separator.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.27.1_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/separator/separator.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../internals/useRenderElement.mjs\";\n\n/**\n * A separator element accessible to screen readers.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Separator](https://base-ui.com/react/components/separator)\n */\nexport const Separator = /*#__PURE__*/React.forwardRef(function SeparatorComponent(componentProps, forwardedRef) {\n const {\n className,\n render,\n orientation = 'horizontal',\n style,\n ...elementProps\n } = componentProps;\n const state = {\n orientation\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n role: 'separator',\n 'aria-orientation': orientation\n }, elementProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") Separator.displayName = \"Separator\";","import { createComponentPart } from \"../../internal/component-part.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Separator } from \"@base-ui/react/separator\";\n//#region src/components/separator/separator.tsx\nconst SeparatorPart = createComponentPart(Separator, \"tr-separator\");\nfunction TRSeparator({ \"aria-orientation\": ariaOrientation, orientation = \"horizontal\", role = \"separator\", ...props }) {\n\treturn /* @__PURE__ */ jsx(SeparatorPart, {\n\t\t...props,\n\t\t\"aria-orientation\": role === \"separator\" ? ariaOrientation ?? orientation : void 0,\n\t\torientation,\n\t\trole\n\t});\n}\n//#endregion\nexport { TRSeparator };\n\n//# sourceMappingURL=separator.js.map"],"x_google_ignoreList":[0,1],"mappings":"kHAWA,IAAa,SAAyB,CAAA,CAAM,WAAW,SAA4B,EAAgB,EAAc,CAC/G,GAAM,CACJ,YACA,SACA,cAAc,aACd,QACA,GAAG,GACD,EAYJ,OARgB,EAAiB,MAAO,EAAgB,CACtD,MAAA,CAHA,aAGI,EACJ,IAAK,EACL,MAAO,CAAC,CACN,KAAM,YACN,mBAAoB,CACtB,EAAG,CAAY,CACjB,CACa,CACf,CAAC,QC3BK,EAAgB,EAAoB,EAAW,cAAc,EACnE,SAAS,EAAY,CAAE,mBAAoB,EAAiB,cAAc,aAAc,OAAO,YAAa,GAAG,GAAS,CACvH,OAAuB,EAAA,EAAA,IAAA,CAAI,EAAe,CACzC,GAAG,EACH,mBAAoB,IAAS,YAAc,GAAmB,EAAc,IAAK,GACjF,cACA,MACD,CAAC,CACF"}
1
+ {"version":3,"file":"separator-B0Bvh1he.js","names":[],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/separator/Separator.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.29.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/separator/separator.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../internals/useRenderElement.mjs\";\n\n/**\n * A separator element accessible to screen readers.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Separator](https://base-ui.com/react/components/separator)\n */\nexport const Separator = /*#__PURE__*/React.forwardRef(function SeparatorComponent(componentProps, forwardedRef) {\n const {\n className,\n render,\n orientation = 'horizontal',\n style,\n ...elementProps\n } = componentProps;\n const state = {\n orientation\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n role: 'separator',\n 'aria-orientation': orientation\n }, elementProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") Separator.displayName = \"Separator\";","import { createComponentPart } from \"../../internal/component-part.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Separator } from \"@base-ui/react/separator\";\n//#region src/components/separator/separator.tsx\nconst SeparatorPart = createComponentPart(Separator, \"tr-separator\");\nfunction TRSeparator({ \"aria-orientation\": ariaOrientation, orientation = \"horizontal\", role = \"separator\", ...props }) {\n\treturn /* @__PURE__ */ jsx(SeparatorPart, {\n\t\t...props,\n\t\t\"aria-orientation\": role === \"separator\" ? ariaOrientation ?? orientation : void 0,\n\t\torientation,\n\t\trole\n\t});\n}\n//#endregion\nexport { TRSeparator };\n\n//# sourceMappingURL=separator.js.map"],"x_google_ignoreList":[0,1],"mappings":"kHAWA,IAAa,SAAyB,CAAA,CAAM,WAAW,SAA4B,EAAgB,EAAc,CAC/G,GAAM,CACJ,YACA,SACA,cAAc,aACd,QACA,GAAG,GACD,EAYJ,OARgB,EAAiB,MAAO,EAAgB,CACtD,MAAA,CAHA,aAGI,EACJ,IAAK,EACL,MAAO,CAAC,CACN,KAAM,YACN,mBAAoB,CACtB,EAAG,CAAY,CACjB,CACa,CACf,CAAC,QC3BK,EAAgB,EAAoB,EAAW,cAAc,EACnE,SAAS,EAAY,CAAE,mBAAoB,EAAiB,cAAc,aAAc,OAAO,YAAa,GAAG,GAAS,CACvH,OAAuB,EAAA,EAAA,IAAA,CAAI,EAAe,CACzC,GAAG,EACH,mBAAoB,IAAS,YAAc,GAAmB,EAAc,IAAK,GACjF,cACA,MACD,CAAC,CACF"}