masks-server 0.7.0 → 0.8.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.
- checksums.yaml +4 -4
- data/app/controllers/masks/server/enrollments_controller.rb +66 -0
- data/app/controllers/masks/server/introspections_controller.rb +2 -2
- data/app/controllers/masks/server/registrations_controller.rb +31 -1
- data/app/graphql/masks/server/manage/types/client_type.rb +8 -0
- data/app/graphql/masks/server/manage/types/query_type.rb +6 -1
- data/app/helpers/masks/server/application_helper.rb +0 -1
- data/app/helpers/masks/server/scopes_helper.rb +28 -0
- data/app/jobs/masks/server/cleanup_job.rb +1 -0
- data/app/models/masks/server/client.rb +81 -1
- data/app/models/masks/server/client_keys.rb +6 -1
- data/app/models/masks/server/enrollment_token.rb +54 -0
- data/app/models/masks/server/event.rb +3 -0
- data/app/models/masks/server/issuer.rb +1 -0
- data/app/models/masks/server/namespace.rb +6 -3
- data/app/models/masks/server/replay.rb +22 -4
- data/app/models/masks/server/token.rb +1 -0
- data/app/views/layouts/masks/server/manage.html.erb +2 -2
- data/app/views/masks/server/application/_person.html.erb +1 -1
- data/app/views/masks/server/handshakes/show.html.erb +129 -59
- data/config/locales/de/account.yml +1 -1
- data/config/locales/de/events.yml +5 -2
- data/config/locales/de/flashes.yml +2 -2
- data/config/locales/de/handshakes.yml +33 -14
- data/config/locales/de/mailers.yml +1 -1
- data/config/locales/de/manage/activity.yml +2 -2
- data/config/locales/de/manage/actor.yml +41 -23
- data/config/locales/de/manage/actors.yml +16 -15
- data/config/locales/de/manage/api.yml +1 -1
- data/config/locales/de/manage/app.yml +6 -6
- data/config/locales/de/manage/client.yml +45 -45
- data/config/locales/de/manage/clients.yml +28 -32
- data/config/locales/de/manage/connections.yml +2 -2
- data/config/locales/de/manage/consents.yml +2 -2
- data/config/locales/de/manage/device.yml +7 -7
- data/config/locales/de/manage/devices.yml +18 -18
- data/config/locales/de/manage/directory.yml +1 -1
- data/config/locales/de/manage/domains.yml +6 -6
- data/config/locales/de/manage/emails.yml +4 -4
- data/config/locales/de/manage/events.yml +3 -0
- data/config/locales/de/manage/groups.yml +6 -6
- data/config/locales/de/manage/ldap.yml +8 -8
- data/config/locales/de/manage/namespaces.yml +1 -1
- data/config/locales/de/manage/organization.yml +15 -8
- data/config/locales/de/manage/organizations.yml +3 -3
- data/config/locales/de/manage/policies.yml +6 -6
- data/config/locales/de/manage/policy_rules.yml +1 -1
- data/config/locales/de/manage/presence.yml +6 -6
- data/config/locales/de/manage/providers.yml +70 -48
- data/config/locales/de/manage/provisioning.yml +4 -4
- data/config/locales/de/manage/senders.yml +1 -1
- data/config/locales/de/manage/settings.yml +37 -26
- data/config/locales/de/manage/settings_shell.yml +2 -2
- data/config/locales/de/refusals.yml +5 -5
- data/config/locales/en/account.yml +3 -3
- data/config/locales/en/events.yml +4 -1
- data/config/locales/en/flashes.yml +3 -3
- data/config/locales/en/handshakes.yml +33 -14
- data/config/locales/en/logins.yml +2 -2
- data/config/locales/en/manage/actor.yml +32 -14
- data/config/locales/en/manage/actors.yml +16 -15
- data/config/locales/en/manage/app.yml +5 -5
- data/config/locales/en/manage/client.yml +9 -9
- data/config/locales/en/manage/clients.yml +8 -12
- data/config/locales/en/manage/connections.yml +1 -1
- data/config/locales/en/manage/consents.yml +1 -1
- data/config/locales/en/manage/device.yml +1 -1
- data/config/locales/en/manage/devices.yml +1 -1
- data/config/locales/en/manage/directory.yml +1 -1
- data/config/locales/en/manage/domains.yml +6 -6
- data/config/locales/en/manage/emails.yml +4 -4
- data/config/locales/en/manage/events.yml +3 -0
- data/config/locales/en/manage/groups.yml +6 -6
- data/config/locales/en/manage/ldap.yml +8 -8
- data/config/locales/en/manage/messages.yml +1 -1
- data/config/locales/en/manage/namespaces.yml +1 -1
- data/config/locales/en/manage/organization.yml +16 -9
- data/config/locales/en/manage/organizations.yml +3 -3
- data/config/locales/en/manage/policies.yml +6 -6
- data/config/locales/en/manage/policy_rules.yml +2 -2
- data/config/locales/en/manage/presence.yml +1 -1
- data/config/locales/en/manage/providers.yml +70 -48
- data/config/locales/en/manage/provisioning.yml +4 -4
- data/config/locales/en/manage/senders.yml +2 -2
- data/config/locales/en/manage/settings.yml +34 -23
- data/config/locales/es/account.yml +1 -1
- data/config/locales/es/application.yml +1 -1
- data/config/locales/es/events.yml +4 -1
- data/config/locales/es/flashes.yml +4 -4
- data/config/locales/es/handshakes.yml +33 -14
- data/config/locales/es/logins.yml +12 -12
- data/config/locales/es/mailers.yml +7 -7
- data/config/locales/es/manage/activity.yml +2 -2
- data/config/locales/es/manage/actor.yml +33 -15
- data/config/locales/es/manage/actors.yml +17 -16
- data/config/locales/es/manage/api.yml +1 -1
- data/config/locales/es/manage/app.yml +6 -6
- data/config/locales/es/manage/client.yml +30 -30
- data/config/locales/es/manage/clients.yml +22 -26
- data/config/locales/es/manage/connections.yml +1 -1
- data/config/locales/es/manage/consents.yml +1 -1
- data/config/locales/es/manage/device.yml +1 -1
- data/config/locales/es/manage/directory.yml +1 -1
- data/config/locales/es/manage/domains.yml +5 -5
- data/config/locales/es/manage/emails.yml +7 -7
- data/config/locales/es/manage/events.yml +3 -0
- data/config/locales/es/manage/groups.yml +6 -6
- data/config/locales/es/manage/ldap.yml +8 -8
- data/config/locales/es/manage/namespaces.yml +1 -1
- data/config/locales/es/manage/organization.yml +16 -9
- data/config/locales/es/manage/organizations.yml +3 -3
- data/config/locales/es/manage/policies.yml +8 -8
- data/config/locales/es/manage/policy_rules.yml +2 -2
- data/config/locales/es/manage/providers.yml +70 -48
- data/config/locales/es/manage/provisioning.yml +4 -4
- data/config/locales/es/manage/senders.yml +1 -1
- data/config/locales/es/manage/settings.yml +38 -27
- data/config/locales/es/manage/settings_shell.yml +2 -2
- data/config/locales/es/refusals.yml +3 -3
- data/config/locales/fr/events.yml +3 -0
- data/config/locales/fr/flashes.yml +1 -1
- data/config/locales/fr/handshakes.yml +33 -14
- data/config/locales/fr/manage/activity.yml +4 -4
- data/config/locales/fr/manage/actor.yml +43 -25
- data/config/locales/fr/manage/actors.yml +22 -21
- data/config/locales/fr/manage/api.yml +1 -1
- data/config/locales/fr/manage/app.yml +7 -7
- data/config/locales/fr/manage/client.yml +50 -50
- data/config/locales/fr/manage/clients.yml +28 -32
- data/config/locales/fr/manage/connections.yml +2 -2
- data/config/locales/fr/manage/consents.yml +1 -1
- data/config/locales/fr/manage/device.yml +1 -1
- data/config/locales/fr/manage/directory.yml +1 -1
- data/config/locales/fr/manage/domains.yml +6 -6
- data/config/locales/fr/manage/emails.yml +5 -5
- data/config/locales/fr/manage/events.yml +3 -0
- data/config/locales/fr/manage/groups.yml +6 -6
- data/config/locales/fr/manage/ldap.yml +8 -8
- data/config/locales/fr/manage/namespaces.yml +1 -1
- data/config/locales/fr/manage/organization.yml +15 -8
- data/config/locales/fr/manage/organizations.yml +3 -3
- data/config/locales/fr/manage/policies.yml +6 -6
- data/config/locales/fr/manage/policy_rules.yml +1 -1
- data/config/locales/fr/manage/providers.yml +70 -48
- data/config/locales/fr/manage/provisioning.yml +4 -4
- data/config/locales/fr/manage/senders.yml +1 -1
- data/config/locales/fr/manage/settings.yml +38 -27
- data/config/locales/fr/manage/settings_shell.yml +2 -2
- data/config/routes.rb +2 -0
- data/config/vite.json +1 -0
- data/db/migrate/20261011190000_add_enrolled_by_to_clients.rb +5 -0
- data/db/migrate/20261012100000_create_replays.rb +23 -0
- data/public/masks-assets/.vite/manifest-assets.json +1 -0
- data/public/masks-assets/.vite/manifest.json +62 -0
- data/public/masks-assets/assets/app-DoQZrM_J.css +2 -0
- data/public/masks-assets/assets/console-DoyNbIw3.css +1 -0
- data/public/masks-assets/assets/handshake-DIFZPSAK.js +2 -0
- data/public/masks-assets/assets/handshake-DIFZPSAK.js.map +1 -0
- data/public/masks-assets/assets/manage-isLCrWiU.js +567 -0
- data/public/masks-assets/assets/manage-isLCrWiU.js.map +1 -0
- data/version.txt +1 -1
- metadata +14 -7
- data/public/masks-assets/assets/app-olx-5PkA.css +0 -2
- data/public/masks-assets/assets/console-CiuQ3qj0.css +0 -1
- data/public/masks-assets/assets/handshake-BYhhQ_X3.js +0 -2
- data/public/masks-assets/assets/handshake-BYhhQ_X3.js.map +0 -1
- data/public/masks-assets/assets/manage-Z3GmPDNQ.js +0 -560
- data/public/masks-assets/assets/manage-Z3GmPDNQ.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manage-Z3GmPDNQ.js","names":["held","$.proxy","$.proxy","root","$.from_html","$.child","rest_excludes","root","$.from_html","$.prop","$.rest_props","$.child","root","$.from_html","$.prop","$.sibling","$.child","$.only_child","$.set_text","$.proxy","root","$.from_html","$.prop","$.derived","$.get","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.delegate","$.proxy","root","$.from_html","$.props_id","$.prop","$.child","$.sibling","$.only_child","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.child","$.only_child","$.sibling","$.derived","$.get","$.set_text","$.set_class","root","$.from_html","$.child","$.delegate","root","$.from_html","$.prop","$.child","$.sibling","$.only_child","$.delegate","root","$.from_html","root_1","$.derived","$.comment","$.first_child","$.text","$.set_text","$.child","$.get","$.index","$.only_child","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","$.state","$.proxy","$.derived","$.get","$.child","$.first_child","$.sibling","$.to_array","$.only_child","$.set_attribute","$.set","$.set_text","$.comment","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","$.prop","$.state","$.derived","$.get","$.child","$.sibling","$.only_child","$.set_text","$.set_class","$.set","$.set_attribute","$.delegate","root","$.from_html","root_1","root_2","$.prop","$.rest_props","$.child","$.only_child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","$.first_child","$.only_child","$.set_text","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.child","$.text","$.set_text","$.sibling","$.only_child","$.set_class","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","$.state","$.proxy","$.derived","$.get","$.first_child","$.to_array","$.only_child","$.sibling","$.child","$.set","$.set_text","$.text","$.comment","$.set_class","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.prop","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.derived","$.get","$.text","$.sibling","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.prop","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.derived","$.get","$.text","$.sibling","$.set_class","$.index","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.to_array","$.set_class","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.prop","$.state","$.derived","$.get","$.child","$.only_child","$.sibling","$.set_text","$.first_child","$.set","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set_class","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","root_29","root_30","root_31","root_32","root_33","$.state","$.proxy","$.derived","$.get","reset","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.to_array","$.set_class","$.text","$.delegate","root","$.from_html","root_1","$.get","$.first_child","$.only_child","$.sibling","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.proxy","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.text","$.delegate","root","$.from_html","root_1","$.prop","$.comment","$.first_child","$.only_child","root","$.from_html","root_1","root_2","$.prop","$.child","$.only_child","$.set_text","$.sibling","$.derived","$.to_array","$.get","$.derived_safe_equal","$.fallback","$.select_option","$.delegate","root","$.from_html","$.prop","$.child","$.sibling","$.set_text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.only_child","$.set_text","$.to_array","$.child","$.set","$.text","$.comment","$.delegate","root","$.from_html","$.prop","$.derived","$.to_array","$.get","$.text","$.set_text","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","$.prop","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.text","$.set_text","$.delegate","root","$.from_html","root_1","$.prop","$.state","$.proxy","$.get","$.derived","$.child","$.only_child","$.sibling","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","$.prop","$.state","$.proxy","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.text","$.set","$.to_array","$.select_option","$.delegate","root","$.from_html","root_1","$.first_child","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.only_child","$.noop","root","$.from_html","root_1","$.prop","$.child","$.only_child","$.sibling","$.set_text","$.clsx","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","$.state","$.get","$.only_child","$.set_text","$.derived","$.first_child","$.sibling","$.child","$.set","$.comment","$.set_class","$.text","$.delegate","root","$.from_html","root_1","root_2","$.comment","$.first_child","$.get","$.only_child","$.sibling","$.child","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","root_19","root_20","root_21","root_22","root_23","root_24","$.noop","$.derived","$.get","$.first_child","$.only_child","$.sibling","$.state","$.proxy","$.child","$.text","$.set_text","$.to_array","$.set","$.set_attribute","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","$.state","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.delegate","root","$.from_svg","root_1","root_2","$.from_html","root_3","root_4","root_5","$.derived","$.get","$.state","$.child","$.only_child","$.sibling","$.set_class","$.set","root","$.from_html","$.proxy","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","$.prop","$.state","$.derived","$.get","$.comment","$.first_child","$.only_child","$.set_text","$.child","$.sibling","$.text","$.set_class","$.set","$.set_attribute","$.noop","$.delegate","root","$.from_html","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.state","$.proxy","$.derived","$.get","$.first_child","$.sibling","$.child","$.text","$.set_text","$.only_child","$.select_option","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","$.state","$.proxy","$.get","$.derived","$.only_child","$.set_text","$.first_child","$.sibling","$.child","$.to_array","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","root_9","root_10","root_11","root_12","$.state","$.proxy","$.derived","$.get","$.child","$.sibling","$.first_child","$.only_child","$.select_option","$.comment","$.set_text","$.delegate","root","$.from_html","root_1","$.state","$.proxy","$.derived","$.get","$.child","$.only_child","$.sibling","$.text","$.set_text","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.child","$.get","$.noop","$.derived","$.comment","$.first_child","$.only_child","$.set_attribute","$.sibling","$.select_option","$.set","$.set_text","$.update","$.delegate","root","$.from_html","$.prop","$.derived","$.get","$.first_child","$.child","$.text","$.set_text","$.sibling","$.set_attribute","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set","$.set_text","$.comment","$.delegate","root","$.from_html","root_1","root_2","root_3","$.state","$.first_child","$.sibling","$.derived","$.get","$.child","$.only_child","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","$.state","$.proxy","$.snapshot","$.get","$.derived","$.comment","$.first_child","$.only_child","$.set_text","$.sibling","$.child","$.set","$.to_array","$.text","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set","$.delegate","root","$.from_html","root_1","root_2","root_3","root_4","root_5","root_6","$.state","$.get","$.derived","$.first_child","$.sibling","$.child","$.only_child","$.set_text","$.set","$.to_array","$.delegate","root","$.from_html","$.derived","$.get","$.child","$.sibling","root","$.from_html","root_1","$.child","$.derived","$.get","$.text","$.set_text","$.sibling","$.set_class","$.only_child","$.delegate","$.from_html","$.from_svg","$.state","$.derived","$.get","$.comment","$.first_child","$.child","$.only_child","$.sibling","$.set_text","$.to_array","$.text","$.set_attribute","$.delegate","derived_safe_equal","append","get","html","if_block","key","text$1","child","template_effect","delegate","sibling","first_child","delegated","from_html","from_svg","mount","props_id","update","event","snippet","index","user_effect","untrack","set","proxy","state","select_option","rest_props","push","clsx","bind_group","next","remove_input_defaults","noop","user_derived","set_attribute","to_array","init_select","bind_select_value","prop","pop","comment","set_text","bind_value","reset","set_value","remove_textarea_child","bind_this","setContext","set_checked","only_child","getContext","bind_checked","snapshot","initial","attribute_effect","fallback","set_style","each","set_class","replay_events","ALPHABET","random","bytes","length","value","byte","encode","binary","challenge","verifier","method","createDpopKey","pair","exported","text","dpopProof","target","url","header","payload","accessToken","signing","MasksError","description","code","status","LoginRequired","KINDS","masksError","Kind","error","HASHES","ALGORITHM","padded","part","out","json","audiences","verifyIdToken","rawHeader","rawPayload","rawSignature","rest","token","hash","keyFor","claims","now","issuer","audience","leeway","nonce","PENDING","list","createBrowserClient","options","call","store","scope","resources","document","held","keys","refreshing","dpopKey","proved","generation","discover","response","found","fetchKeys","jwks_uri","revalidate","jwk","refresh","kid","post","started","token_endpoint","body","authorizeUrl","waiting","returnTo","organization","query","prompt","authorization_endpoint","avatarUrl","avatar_endpoint","avatar_styles_supported","style","base","subject","size","expired","renew","previous","tokens","revoke","revocation_endpoint","opts","raw","failure","named","access","headers","init","name","leaving","everywhere","end_session_endpoint","postLogoutRedirectUri","PLACEHOLDER","held$1","plurals","useCopy","copy","locale","lookup","fill","values","whole","t","form","KEY","SCOPE","keep","all","clientId","boot","forget","callbackUri","handshakeUrl","redeem","detach","files","walk","path","one","at","variables","createApi","client","build","authorization","answer","idToken","sent","file","ROUTER","createRouter","settle","root","to","provideRouter","router","useRouter","root$55","Empty","div","p","node","$$props","$$anchor","rest_excludes$1","root$54","Link","klass","follow","a","$0","root$53","Spinner","label","span","createPages","cursor","total","root$52","Pager","busy","first","last","earlier","later","fragment","consequent","nav","button","text_1","button_1","text_2","$1","$2","$3","$$render","createFeedback","clear","blame","thrown","notice","work","formatters","formatter","kind","make","DAY","lang","MOMENT","RELATIVE","STEPS","parsed","iso","day","moment","since","gap","unit","joined","kept","root$51","Tip","id","span_1","root$50","root_1$42","root_2$34","root_3$30","root_4$28","Section","title","lede","help","row","section","classes","consequent_4","div_1","node_1","consequent_1","div_2","h2","node_2","node_3","consequent_2","node_4","consequent_3","div_3","node_5","div_4","node_6","root$49","Row","tr","root$48","Search","input","$$args","root$47","root_1$41","Table","heads","column","alternate","table","thead","th","head","tbody","root$46","root_1$40","root_2$33","root_3$29","root_4$27","root_5$24","root_6$23","root_7$20","root_8$19","root_9$13","root_10$10","root_11$9","root_12$9","root_13$8","root_14$8","root_15$8","Devices","LENSES","COLUMNS","devices","loading","lens","search","agent","chosen","refuse","narrowing","load","data","look","filter","clearFilter","toggle","toggleAll","device","blocking","outcome","done","spared","bulk","question","mutation","blockChosen","blockMatching","nothing","actions","$$value","$$array","$$item","fragment_1","text_3","label_1","text_4","button_2","text_5","p_1","text_6","code_1","text_7","button_3","text_8","label_2","input_1","text_9","button_4","text_10","text_11","consequent_5","alternate_1","fragment_4","node_7","fragment_6","td","input_2","td_1","node_8","text_12","text_13","node_9","consequent_6","span_2","text_14","consequent_7","span_3","text_15","node_10","consequent_8","span_4","text_16","node_11","consequent_9","div_5","text_17","td_2","node_12","consequent_10","div_6","actor","fragment_8","text_18","node_13","text_19","span_5","text_20","td_3","text_21","td_4","text_22","root$45","root_1$39","root_2$32","root_3$28","root_4$26","root_5$23","root_6$22","root_7$19","root_8$18","root_9$12","root_10$9","ScopesEditor","available","disabled","open","active","unfolded","needle","offered","rank","b","listed","typed","novel","choices","shown","add","remove","keydown","ul","li","classes_1","li_1","ul_1","li_2","li_3","rest_excludes","root$44","root_1$38","root_2$31","Field","type","onsave","save","root$43","root_1$37","root_2$30","Notices","root$42","root_1$36","root_2$29","root_3$27","root_4$25","Page","back","hero","heading","h1","root$41","root_1$35","root_2$28","root_3$26","root_4$24","root_5$22","root_6$21","root_7$18","root_8$17","root_9$11","root_10$8","root_11$8","root_12$8","root_13$7","root_14$7","root_15$7","root_16$6","root_17$6","root_18$6","root_19$4","root_20$4","root_21$4","root_22$4","root_23$4","root_24$4","root_25$3","ActorsPage","binding_group","pages","STANDARD","feedback","actors","adding","inviting","addresses","joining","groups","invited","groupsLoaded","invitedCount","openInvites","inviteMany","again","nickname","email","password","scopes","supported","minimum","created","turn","direction","close","send","blocked","presence","fragment_2","textarea","fieldset","legend","group","input_value","fragment_7","button_5","button_6","fragment_9","node_14","node_15","p_2","node_16","alternate_4","fragment_14","node_17","rows","fragment_15","node_18","fragment_17","img","node_19","div_7","node_20","consequent_11","div_8","node_21","consequent_12","span_6","span_7","text_23","node_22","consequent_15","div_9","node_23","consequent_13","span_8","text_24","node_24","consequent_14","span_9","text_25","d","d_1","div_10","fragment_19","span_10","text_26","text_27","node_25","consequent_16","fragment_20","span_11","text_28","div_11","text_29","alternate_2","span_12","text_30","text_31","node_26","consequent_17","span_13","text_32","d_2","node_27","consequent_18","span_14","text_33","alternate_3","text_34","root$40","root_1$34","root_2$27","root_3$25","root_4$23","root_5$21","root_6$20","root_7$17","root_8$16","Connections","showActor","stop","delegation","connection","root$39","root_1$33","root_2$26","root_3$24","root_4$22","root_5$20","root_6$19","Consents","consent","GRAVE","NOTABLE","tone","action","detailed","details","phrase","root$38","root_1$32","root_2$25","root_3$23","root_4$21","root_5$19","root_6$18","root_7$16","root_8$15","root_9$10","Events","empty","limit","ol","root$37","root_1$31","root_2$24","root_3$22","root_4$20","root_5$18","root_6$17","root_7$15","root_8$14","root_9$9","Presence","columns","act","session","onDevice","signOutDevice","block","unblock","signOutEverywhere","allSessions","allDevices","sessions","h3","section_1","h3_1","root$36","root_1$30","root_2$23","root_3$21","root_4$19","root_5$17","root_6$16","root_7$14","root_8$13","Tokens","KIND","said","family","count","$4","$5","root$35","root_1$29","root_2$22","root_3$20","root_4$18","root_5$16","root_6$15","root_7$13","root_8$12","root_9$8","root_10$7","root_11$7","root_12$7","root_13$6","root_14$6","root_15$6","root_16$5","root_17$5","root_18$5","root_19$3","root_20$3","root_21$3","root_22$3","root_23$3","root_24$3","root_25$2","root_26$2","root_27$2","root_28$1","root_29$1","root_30$1","root_31$1","root_32$1","root_33$1","ActorPage","FIELDS","MORE","PROFILE","viewer","draft","codes","link","uploading","yourself","belongs","toggleGroup","saveProfile","saveScopes","generate","recover","confirmation","result","reset$1","resend","confirmEmail","revokePasskey","passkey","choose","removePhoto","disable","CODE_FACTORS","turnOff","lower","suspend","restore","alternate_5","fragment_3","summary","$$array_1","fragment_11","div_12","fragment_13","div_13","membership","p_3","fragment_16","p_4","div_14","div_15","div_16","button_7","p_5","div_17","button_8","button_9","text_35","node_28","div_18","text_36","code_2","text_37","p_6","text_38","text_39","node_30","p_7","text_40","node_31","fragment_22","node_32","consequent_19","fragment_23","p_8","text_41","div_19","button_10","text_42","button_11","text_43","consequent_20","p_9","text_44","node_33","field","factor","$$array_2","div_20","span_15","text_45","button_12","text_46","node_34","text_47","node_35","fragment_27","node_36","consequent_21","p_10","text_48","fragment_28","node_37","consequent_22","button_13","text_49","button_14","text_50","root$34","root_1$28","Facts","dl","term","mono","dt","dd","root$33","root_1$27","root_2$21","root_3$19","root_4$17","root_5$15","root_6$14","root_7$12","root_8$11","DevicePage","events","signOut","facts","fragment_5","root$32","root_1$26","ClientLogo","sized","root$31","root_1$25","root_2$20","Select","select","off","option","option_value","select_value","root$30","Switch","checked","onchange","root$29","root_1$24","root_2$19","root_3$18","root_4$16","root_5$14","root_6$13","root_7$11","root_8$10","root_9$7","root_10$6","root_11$6","root_12$6","root_13$5","root_14$5","root_15$5","root_16$4","root_17$4","root_18$4","ClientsPage","presets","blank","preset","lines","readMetadata","read","request","archived","clients","textarea_1","textarea_2","label_3","textarea_3","label_4","textarea_4","fragment_10","fragment_12","setting","td_5","td_6","root$28","ClientParts","PARTS","POLICY_FIELDS","FACTORS","CONFIRMATIONS","PRESENCE","known","yes","UNITS","duration","seconds","describePolicy","policy","policyDifferences","theirs","root$27","root_1$23","root_2$18","root_3$17","root_4$15","Namespaces","showClient","release","root$26","root_1$22","Lines","hint","fresh","changed","root$25","root_1$21","root_2$17","root_3$16","root_4$14","root_5$13","root_6$12","root_7$10","root_8$9","root_9$6","root_10$5","root_11$5","root_12$5","root_13$4","root_14$4","root_15$4","root_16$3","root_17$3","root_18$3","root_19$2","root_20$2","root_21$2","root_22$2","root_23$2","root_24$2","root_25$1","root_26$1","root_27$1","ClientPage","QUERY","roles","policies","fallbackPolicy","logoutUri","jwksUri","jwks","declared","lasts","accessMinutes","refreshDays","sector","metadataUrl","certificate","entityId","sloUrl","links","attributes","secret","NAME_IDS","saml","SUBJECTS","GRANTS","LINKS","placeholder","saveLinks","changes","logoChanged","saveLifetimes","differences","keyed","mapped","attribute","claim","roleList","admit","on","saveRoles","unattended","granting","grant","signsInAsItself","knowsActorsAs","saveKeys","pending","saveKeySet","saveDeclared","saveAttributes","pairs","line","METHODS","authenticates","rotate","archive","node_29","fragment_24","label_5","select_1","option_1","option_1_value","select_1_value","node_38","fragment_29","node_39","node_40","node_41","label_6","select_2","format","$$array_3","option_2","option_2_value","select_2_value","label_7","label_8","node_42","node_43","$6","node_44","fragment_30","node_45","node_46","node_47","$$array_4","node_48","fragment_34","label_9","select_3","option_3","node_49","option_4","option_4_value","select_3_value","node_50","consequent_23","consequent_25","fragment_35","node_51","consequent_24","instead","fragment_36","node_52","consequent_26","fragment_37","node_53","node_54","node_55","consequent_27","form_1","node_56","node_57","node_58","node_59","node_60","consequent_28","root$24","root_1$20","OrganizationCell","root$23","root_1$19","OrganizationHeadcount","root$22","root_1$18","root_2$16","root_3$15","root_4$13","root_5$12","root_6$11","root_7$9","OrganizationsPage","keyTouched","slug","members","signsIn","provider","role","root$21","root_1$17","root_2$15","Tally","root$20","root_1$16","root_2$14","root_3$14","root_4$12","root_5$11","root_6$10","root_7$8","root_8$8","root_9$5","root_10$4","root_11$4","root_12$4","root_13$3","root_14$3","root_15$3","root_16$2","root_17$2","root_18$2","root_19$1","root_20$1","root_21$1","root_22$1","root_23$1","root_24$1","OrganizationPage","roleOf","member","lastOwner","roleOptions","setRole","removeOf","BUILT_IN","providers","idle","handing","naming","holding","revoking","plain","counts","run","openAdding","custom","addRole","dropRole","rename","map","parts","handable","pickProvider","handOver","handBack","setPolicy","div_21","div_22","div_23","span_16","span_17","span_18","root$19","root_1$15","root_2$13","root_3$13","root_4$11","root_5$10","root_6$9","root_7$7","root_8$7","root_9$4","DomainsSection","domain","host","providerOptions","proven","check","route","serve","root$18","root_1$14","root_2$12","root_3$12","GroupsSection","create","root$17","root_1$13","root_2$11","root_3$11","root_4$10","root_5$9","BarChart","peak","point","step","width","sum","hovered","share","bar","height","y","radius","x","ticks","figure","figcaption","svg","rect","strong","tick","caption","th_1","tr_1","root$16","Loader","root$15","root_1$12","root_2$10","root_3$10","root_4$9","root_5$8","root_6$8","root_7$6","root_8$6","root_9$3","root_10$3","root_11$3","root_12$3","root_13$2","root_14$2","root_15$2","SettingsPage","overview","EVENT_FIELDS","RECENT","SPANS","RETENTION","days","BADGE","MARK","STARTED","hidden","hideStarting","starting","plotted","chooseLogo","stage","activate","discard","activity","recent","fragment_26","fragment_33","root$14","ActivityParts","root$13","root_1$11","root_2$9","root_3$9","root_4$8","root_5$7","root_6$7","ActivityPage","exporting","today","range","grave","about","actorId","narrowed","describe","only","worrying","download","$7","root$12","root_1$10","root_2$8","root_3$8","root_4$7","root_5$6","root_6$6","root_7$5","root_8$5","root_9$2","root_10$2","root_11$2","root_12$2","root_13$1","root_14$1","root_15$1","root_16$1","root_17$1","root_18$1","root_19","root_20","root_21","root_22","root_23","root_24","root_25","root_26","root_27","root_28","root_29","root_30","root_31","root_32","root_33","root_34","root_35","root_36","root_37","root_38","root_39","root_40","root_41","root_42","ProvidersPage","PROTOCOLS","protocol","MAPPED","NAME_ID_FORMATS","ASKED","ARGUMENTS","extra","passed","CREATE_EXTRA","CREATE","UPDATE","connected","picking","editing","connectionsFor","presetNamed","oauth2","oidc","mcp","signsSecret","origin","callbackUrl","spEntityId","pick","edit","trimmed","words","params","metadataFields","register","needsSecret","complete","variable","span_19","span_20","input_3","span_21","span_22","span_23","span_24","span_25","span_26","span_27","text_51","span_28","text_52","consequent_29","span_29","text_53","span_30","text_54","div_24","text_55","text_56","consequent_31","fragment_21","div_25","dt_1","text_57","dd_1","a_1","text_58","div_26","dt_2","text_59","dd_2","text_60","div_27","dt_3","text_61","dd_3","consequent_30","text_62","text_63","consequent_34","div_28","dt_4","text_64","dd_4","text_65","div_29","dt_5","text_66","dd_5","consequent_32","text_67","span_31","text_68","consequent_33","div_30","dt_6","text_69","dd_6","text_70","div_31","dt_7","text_71","dd_7","text_72","consequent_35","div_32","dt_8","text_73","dd_8","text_74","div_33","dt_9","text_75","dd_9","text_76","consequent_37","div_34","dt_10","text_77","dd_10","text_78","div_35","dt_11","text_79","dd_11","text_80","consequent_36","div_36","dt_12","text_81","dd_12","text_82","div_37","dt_13","text_83","dd_13","text_84","consequent_38","span_32","text_85","consequent_39","details_1","summary_1","text_86","div_38","consequent_40","div_39","span_33","span_34","text_87","span_35","text_88","span_36","span_37","text_89","text_90","root$11","root_1$9","root_2$7","root_3$7","root_4$6","root_5$5","root_6$5","root_7$4","root_8$4","root_9$1","root_10$1","root_11$1","root_12$1","MessageSending","testing","services","serviceOf","forKind","blankConfig","service","sender","config","makePrimary","test","root$10","root_1$8","MailTemplate","message","signature","names","root$9","root_1$7","root_2$6","root_3$6","root_4$5","root_5$4","root_6$4","root_7$3","root_8$3","MessageTemplates","GROUPS","templated","version","showing","fit","frame","previews","preview","templates","template","journey","optgroup","article","iframe","pre","root$8","MessagesPage","root$7","root_1$6","root_2$5","root_3$5","root_4$4","root_5$3","root_6$3","root_7$2","root_8$2","StreamsPage","stream","root$6","root_1$5","root_2$4","root_3$4","SignInRules","SUSPEND_AFTER","DELETE_AFTER","agents","networks","deleteAfter","root$5","root_1$4","root_2$3","root_3$3","root_4$3","root_5$2","root_6$2","root_7$1","root_8$1","root_9","root_10","root_11","root_12","root_13","root_14","root_15","root_16","root_17","root_18","PoliciesPage","ARGS","PASS","HOUR","LIFETIMES","IDLE","SCORES","score","WORK","offeredWork","labelled","FIRST","SECOND","ACCOUNT_FIELDS","BLANK","signingProviders","$$array_5","$$array_6","option_3_value","select_4","$$array_7","select_5","$$array_8","option_5","option_5_value","select_6","$$array_9","option_6","option_6_value","$8","$9","$10","$11","$12","$13","$14","$15","$16","fragment_18","root$4","root_1$3","root_2$2","root_3$2","root_4$2","LdapSection","issued","issue","credential","passwordOnly","code_3","code_4","root$3","root_1$2","root_2$1","root_3$1","root_4$1","root_5$1","root_6$1","ProvisioningSection","lifetime","root$2","DirectoryPage","root$1","root_1$1","SettingsShell","TABS","unpair","tab","root_1","root_2","root_3","root_4","root_5","root_6","root_7","root_8","App","api","phase","levels","NAV","SETTINGS","REPAIRED","stale","start","ready","countWaiting","waitingLabel","current","inSettings","signedInAs","retry","main","main_1","nav_1","icon","svg_1"],"sources":["../../../../web/dist/pkce.js","../../../../web/dist/dpop.js","../../../../web/dist/types.js","../../../../web/dist/jwt.js","../../../../web/dist/browser.js","../../../../server/app/frontend/manage/lib/copy.js","../../../../server/app/frontend/manage/lib/pairing.js","../../../../server/app/frontend/manage/lib/api.svelte.js","../../../../server/app/frontend/manage/lib/router.svelte.js","../../../../server/app/frontend/manage/ui/Empty.svelte","../../../../server/app/frontend/manage/ui/Link.svelte","../../../../server/app/frontend/manage/ui/Spinner.svelte","../../../../server/app/frontend/manage/lib/pages.svelte.js","../../../../server/app/frontend/manage/ui/Pager.svelte","../../../../server/app/frontend/manage/lib/feedback.svelte.js","../../../../server/app/frontend/manage/lib/format.js","../../../../server/app/frontend/manage/ui/Tip.svelte","../../../../server/app/frontend/manage/ui/Section.svelte","../../../../server/app/frontend/manage/ui/Row.svelte","../../../../server/app/frontend/manage/ui/Search.svelte","../../../../server/app/frontend/manage/ui/Table.svelte","../../../../server/app/frontend/manage/Devices.svelte","../../../../server/app/frontend/manage/ScopesEditor.svelte","../../../../server/app/frontend/manage/ui/Field.svelte","../../../../server/app/frontend/manage/ui/Notices.svelte","../../../../server/app/frontend/manage/ui/Page.svelte","../../../../server/app/frontend/manage/ActorsPage.svelte","../../../../server/app/frontend/manage/Connections.svelte","../../../../server/app/frontend/manage/Consents.svelte","../../../../server/app/frontend/manage/lib/events.js","../../../../server/app/frontend/manage/Events.svelte","../../../../server/app/frontend/manage/Presence.svelte","../../../../server/app/frontend/manage/Tokens.svelte","../../../../server/app/frontend/manage/ActorPage.svelte","../../../../server/app/frontend/manage/ui/Facts.svelte","../../../../server/app/frontend/manage/DevicePage.svelte","../../../../server/app/frontend/manage/ui/ClientLogo.svelte","../../../../server/app/frontend/manage/ui/Select.svelte","../../../../server/app/frontend/manage/ui/Switch.svelte","../../../../server/app/frontend/manage/ClientsPage.svelte","../../../../server/app/frontend/manage/ClientParts.svelte","../../../../server/app/frontend/manage/lib/policies.js","../../../../server/app/frontend/manage/Namespaces.svelte","../../../../server/app/frontend/manage/ui/Lines.svelte","../../../../server/app/frontend/manage/ClientPage.svelte","../../../../server/app/frontend/manage/OrganizationCell.svelte","../../../../server/app/frontend/manage/OrganizationHeadcount.svelte","../../../../server/app/frontend/manage/OrganizationsPage.svelte","../../../../server/app/frontend/manage/ui/Tally.svelte","../../../../server/app/frontend/manage/OrganizationPage.svelte","../../../../server/app/frontend/manage/DomainsSection.svelte","../../../../server/app/frontend/manage/GroupsSection.svelte","../../../../server/app/frontend/manage/ui/BarChart.svelte","../../../../server/app/frontend/manage/ui/Loader.svelte","../../../../server/app/frontend/manage/SettingsPage.svelte","../../../../server/app/frontend/manage/ActivityParts.svelte","../../../../server/app/frontend/manage/ActivityPage.svelte","../../../../server/app/frontend/manage/ProvidersPage.svelte","../../../../server/app/frontend/manage/MessageSending.svelte","../../../../server/app/frontend/manage/MailTemplate.svelte","../../../../server/app/frontend/manage/MessageTemplates.svelte","../../../../server/app/frontend/manage/MessagesPage.svelte","../../../../server/app/frontend/manage/StreamsPage.svelte","../../../../server/app/frontend/manage/SignInRules.svelte","../../../../server/app/frontend/manage/PoliciesPage.svelte","../../../../server/app/frontend/manage/LdapSection.svelte","../../../../server/app/frontend/manage/ProvisioningSection.svelte","../../../../server/app/frontend/manage/DirectoryPage.svelte","../../../../server/app/frontend/manage/SettingsShell.svelte","../../../../server/app/frontend/manage/App.svelte","../../../../server/app/frontend/entrypoints/manage.js"],"sourcesContent":["const ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\nexport function random(length = 64) {\n const bytes = new Uint8Array(length);\n crypto.getRandomValues(bytes);\n let value = \"\";\n for (const byte of bytes)\n value += ALPHABET[byte % ALPHABET.length];\n return value;\n}\nexport function encode(bytes) {\n let binary = \"\";\n for (const byte of new Uint8Array(bytes))\n binary += String.fromCharCode(byte);\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\nexport async function challenge(verifier) {\n const digest = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(verifier));\n return encode(digest);\n}\nexport const method = \"S256\";\n","import { encode, random } from \"./pkce.js\";\nexport async function createDpopKey() {\n const pair = await crypto.subtle.generateKey({ name: \"ECDSA\", namedCurve: \"P-256\" }, false, [\"sign\", \"verify\"]);\n const exported = await crypto.subtle.exportKey(\"jwk\", pair.publicKey);\n return {\n privateKey: pair.privateKey,\n jwk: { kty: exported.kty, crv: exported.crv, x: exported.x, y: exported.y },\n };\n}\nconst text = (value) => encode(new TextEncoder().encode(JSON.stringify(value)).buffer);\nexport async function dpopProof(key, method, url, accessToken) {\n const target = new URL(url);\n const header = { typ: \"dpop+jwt\", alg: \"ES256\", jwk: key.jwk };\n const payload = {\n jti: random(32),\n htm: method.toUpperCase(),\n htu: `${target.origin}${target.pathname}`,\n iat: Math.floor(Date.now() / 1000),\n };\n if (accessToken) {\n payload.ath = encode(await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(accessToken)));\n }\n const signing = `${text(header)}.${text(payload)}`;\n const signature = await crypto.subtle.sign({ name: \"ECDSA\", hash: \"SHA-256\" }, key.privateKey, new TextEncoder().encode(signing));\n return `${signing}.${encode(signature)}`;\n}\n","export class MasksError extends Error {\n code;\n description;\n status;\n constructor(code, description, status) {\n super(description ? `${code}: ${description}` : code);\n this.name = \"MasksError\";\n this.code = code;\n this.description = description;\n this.status = status;\n }\n}\nexport class LoginRequired extends MasksError {\n}\nexport class ConsentRequired extends MasksError {\n}\nexport class AccessDenied extends MasksError {\n}\nexport class InvalidGrant extends MasksError {\n}\nexport class InvalidToken extends MasksError {\n}\nexport class InvalidIssuer extends MasksError {\n}\nconst KINDS = {\n login_required: LoginRequired,\n interaction_required: LoginRequired,\n consent_required: ConsentRequired,\n access_denied: AccessDenied,\n invalid_grant: InvalidGrant,\n invalid_token: InvalidToken,\n invalid_issuer: InvalidIssuer,\n};\nexport function masksError(code, description, status) {\n const Kind = KINDS[code] ?? MasksError;\n const error = new Kind(code, description, status);\n error.name = Kind.name;\n return error;\n}\n","import { masksError } from \"./types.js\";\nconst HASHES = {\n RS256: \"SHA-256\",\n RS384: \"SHA-384\",\n RS512: \"SHA-512\",\n};\nconst ALGORITHM = \"RSASSA-PKCS1-v1_5\";\nfunction bytes(part) {\n const padded = part.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const binary = atob(padded.padEnd(padded.length + ((4 - (padded.length % 4)) % 4), \"=\"));\n const out = new Uint8Array(new ArrayBuffer(binary.length));\n for (let index = 0; index < binary.length; index++) {\n out[index] = binary.charCodeAt(index);\n }\n return out;\n}\nfunction json(part) {\n try {\n return JSON.parse(new TextDecoder().decode(bytes(part)));\n }\n catch {\n throw masksError(\"invalid_token\", \"the id token is not a JWT\");\n }\n}\nfunction audiences(value) {\n if (Array.isArray(value))\n return value.map(String);\n return value === undefined || value === null ? [] : [String(value)];\n}\nexport async function verifyIdToken(token, { issuer, audience, nonce, keyFor, leeway = 60 }) {\n const [rawHeader, rawPayload, rawSignature, ...rest] = token.split(\".\");\n if (!rawHeader || !rawPayload || !rawSignature || rest.length > 0) {\n throw masksError(\"invalid_token\", \"the id token is not a JWT\");\n }\n const header = json(rawHeader);\n if (header.typ !== undefined && String(header.typ).toUpperCase() !== \"JWT\") {\n throw masksError(\"invalid_token\", `the id token is typed ${header.typ}, which is not an id token`);\n }\n const hash = HASHES[String(header.alg)];\n if (!hash) {\n throw masksError(\"invalid_token\", `the id token is signed with ${header.alg}, which this client cannot verify`);\n }\n const key = await crypto.subtle.importKey(\"jwk\", { ...(await keyFor(String(header.kid))), alg: String(header.alg) }, { name: ALGORITHM, hash }, false, [\"verify\"]);\n const signed = await crypto.subtle.verify(ALGORITHM, key, bytes(rawSignature), new TextEncoder().encode(`${rawHeader}.${rawPayload}`));\n if (!signed) {\n throw masksError(\"invalid_token\", \"the id token signature does not verify\");\n }\n const claims = json(rawPayload);\n const now = Math.floor(Date.now() / 1000);\n if (String(claims.iss ?? \"\").replace(/\\/$/, \"\") !== issuer) {\n throw masksError(\"invalid_token\", `the id token was issued by ${claims.iss}`);\n }\n if (!audiences(claims.aud).includes(audience)) {\n throw masksError(\"invalid_token\", \"the id token was issued for another client\");\n }\n if (typeof claims.exp === \"number\" && now - leeway >= claims.exp) {\n throw masksError(\"invalid_token\", \"the id token has expired\");\n }\n if (typeof claims.iat === \"number\" && claims.iat - leeway > now) {\n throw masksError(\"invalid_token\", \"the id token was issued in the future\");\n }\n if (claims.nonce !== nonce) {\n throw masksError(\"invalid_nonce\", \"the id token was issued for another request\");\n }\n return claims;\n}\n","import { createDpopKey, dpopProof } from \"./dpop.js\";\nimport { verifyIdToken } from \"./jwt.js\";\nimport { challenge, method, random } from \"./pkce.js\";\nimport { masksError, } from \"./types.js\";\nconst PENDING = \"masks:pending\";\nfunction list(value) {\n if (!value)\n return [];\n return Array.isArray(value) ? value : value.split(/\\s+/).filter(Boolean);\n}\nexport function createBrowserClient(options) {\n const issuer = options.issuer.replace(/\\/$/, \"\");\n const call = options.fetch ?? globalThis.fetch.bind(globalThis);\n const store = options.storage ?? globalThis.sessionStorage;\n const scope = list(options.scope ?? [\"openid\", \"profile\", \"email\"]);\n const resources = list(options.resource);\n let document = null;\n let held = null;\n let claims = null;\n let keys = null;\n let refreshing = null;\n let dpopKey = null;\n const proved = async (method, url, accessToken) => {\n if (!options.dpop)\n return {};\n dpopKey ??= createDpopKey();\n return { DPoP: await dpopProof(await dpopKey, method, url, accessToken) };\n };\n let generation = 0;\n const discover = async () => {\n if (document)\n return document;\n const response = await call(`${issuer}/.well-known/openid-configuration`, {\n headers: { Accept: \"application/json\" },\n });\n if (!response.ok) {\n throw masksError(\"invalid_issuer\", `${issuer} answered ${response.status}`, response.status);\n }\n const found = (await response.json());\n if (found.issuer?.replace(/\\/$/, \"\") !== issuer) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes a document naming ${found.issuer}`);\n }\n document = found;\n return found;\n };\n const fetchKeys = async (revalidate) => {\n const { jwks_uri } = await discover();\n if (!jwks_uri) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes no jwks_uri, so an id token cannot be verified`);\n }\n const response = await call(jwks_uri, {\n headers: { Accept: \"application/json\" },\n ...(revalidate ? { cache: \"no-cache\" } : {}),\n });\n if (!response.ok) {\n throw masksError(\"invalid_issuer\", `${jwks_uri} answered ${response.status}`, response.status);\n }\n const found = (await response.json());\n return Object.fromEntries((found.keys ?? [])\n .filter((jwk) => jwk.kid && (!jwk.use || jwk.use === \"sig\"))\n .map((jwk) => [jwk.kid, jwk]));\n };\n const keyFor = async (kid, refresh = false) => {\n if (refresh || !keys)\n keys = await fetchKeys(refresh);\n const found = keys[kid];\n if (found)\n return found;\n if (!refresh)\n return keyFor(kid, true);\n throw masksError(\"invalid_token\", `${issuer} publishes no key ${kid}`);\n };\n const post = async (body) => {\n const started = generation;\n const { token_endpoint } = await discover();\n const response = await call(token_endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n ...(await proved(\"POST\", token_endpoint)),\n },\n body: new URLSearchParams(body).toString(),\n });\n const payload = (await response.json().catch(() => ({})));\n if (!response.ok) {\n throw masksError(payload.error ?? `http_${response.status}`, payload.error_description, response.status);\n }\n if (started !== generation) {\n throw masksError(\"invalid_grant\", \"the client signed out while this request was in flight\");\n }\n held = {\n access_token: payload.access_token,\n id_token: payload.id_token,\n refresh_token: payload.refresh_token,\n token_type: payload.token_type ?? \"Bearer\",\n scope: payload.scope ?? \"\",\n expires_in: Number(payload.expires_in ?? 0),\n obtained_at: Math.floor(Date.now() / 1000),\n };\n return held;\n };\n const authorizeUrl = async ({ returnTo, prompt, organization = options.organization, } = {}) => {\n const { authorization_endpoint } = await discover();\n const verifier = random();\n const waiting = {\n state: random(24),\n nonce: scope.includes(\"openid\") ? random(24) : \"\",\n verifier,\n returnTo: returnTo ?? `${location.pathname}${location.search}`,\n ...(organization ? { organization } : {}),\n };\n store.setItem(PENDING, JSON.stringify(waiting));\n const query = new URLSearchParams([\n [\"response_type\", \"code\"],\n [\"client_id\", options.clientId],\n [\"redirect_uri\", options.redirectUri],\n [\"scope\", scope.join(\" \")],\n [\"state\", waiting.state],\n [\"code_challenge\", await challenge(verifier)],\n [\"code_challenge_method\", method],\n ]);\n if (waiting.nonce)\n query.append(\"nonce\", waiting.nonce);\n for (const value of resources)\n query.append(\"resource\", value);\n if (prompt)\n query.append(\"prompt\", prompt);\n if (organization)\n query.append(\"organization\", organization);\n return `${authorization_endpoint}?${query.toString()}`;\n };\n const avatarUrl = async (subject, { style = \"identicon\", size } = {}) => {\n const { avatar_endpoint, avatar_styles_supported } = await discover();\n if (!avatar_endpoint) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes no avatar_endpoint`);\n }\n if (avatar_styles_supported && !avatar_styles_supported.includes(style)) {\n throw masksError(\"invalid_style\", `${issuer} does not serve ${style} avatars`);\n }\n const base = `${avatar_endpoint}/${encodeURIComponent(subject)}/${style}`;\n return size ? `${base}?size=${size}` : base;\n };\n const expired = (leeway = 30) => {\n if (!held)\n return true;\n return Date.now() / 1000 + leeway >= held.obtained_at + held.expires_in;\n };\n const renew = async () => {\n if (!held?.refresh_token) {\n throw masksError(\"invalid_grant\", \"no refresh token is held\");\n }\n const previous = held.refresh_token;\n const body = [\n [\"grant_type\", \"refresh_token\"],\n [\"refresh_token\", previous],\n [\"client_id\", options.clientId],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n const tokens = await post(body);\n tokens.refresh_token ??= previous;\n return tokens;\n };\n const refresh = async () => {\n refreshing ??= renew().finally(() => {\n refreshing = null;\n });\n return await refreshing;\n };\n const revoke = async (token) => {\n const { revocation_endpoint } = await discover();\n if (!revocation_endpoint)\n return;\n await call(revocation_endpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams([\n [\"token\", token],\n [\"token_type_hint\", \"refresh_token\"],\n [\"client_id\", options.clientId],\n ]).toString(),\n });\n };\n return {\n discover,\n authorizeUrl,\n avatarUrl,\n async authorize(opts = {}) {\n window.location.assign(await authorizeUrl(opts));\n },\n pending() {\n return store.getItem(PENDING) !== null;\n },\n async callback(url = window.location.href) {\n const query = new URL(url).searchParams;\n const raw = store.getItem(PENDING);\n store.removeItem(PENDING);\n if (query.get(\"error\")) {\n throw masksError(query.get(\"error\"), query.get(\"error_description\") ?? undefined);\n }\n if (!raw) {\n throw masksError(\"invalid_state\", \"this browser has no authorization in flight\");\n }\n const waiting = JSON.parse(raw);\n if (query.get(\"state\") !== waiting.state) {\n throw masksError(\"invalid_state\", \"the callback did not match this browser\");\n }\n const code = query.get(\"code\");\n if (!code) {\n throw masksError(\"invalid_request\", \"the callback carried no code\");\n }\n const body = [\n [\"grant_type\", \"authorization_code\"],\n [\"code\", code],\n [\"client_id\", options.clientId],\n [\"redirect_uri\", options.redirectUri],\n [\"code_verifier\", waiting.verifier],\n ];\n for (const value of resources)\n body.push([\"resource\", value]);\n const tokens = await post(body);\n if (waiting.nonce) {\n if (!tokens.id_token) {\n held = null;\n throw masksError(\"invalid_token\", \"an id token was asked for and the issuer returned none\");\n }\n try {\n claims = await verifyIdToken(tokens.id_token, {\n issuer,\n audience: options.clientId,\n nonce: waiting.nonce,\n keyFor,\n });\n }\n catch (failure) {\n held = null;\n claims = null;\n throw failure;\n }\n const named = claims?.org?.key;\n if (waiting.organization && named && named !== waiting.organization) {\n held = null;\n claims = null;\n throw masksError(\"invalid_token\", `the id token does not name the organization ${waiting.organization}`);\n }\n }\n return { tokens, identity: claims, returnTo: waiting.returnTo };\n },\n identity() {\n return claims;\n },\n organization() {\n return claims?.org ?? null;\n },\n organizations() {\n return claims?.orgs ?? [];\n },\n async switchOrganization(key, opts = {}) {\n window.location.assign(await authorizeUrl({ ...opts, organization: key }));\n },\n avatars() {\n return claims?.[\"masks:avatars\"] ?? null;\n },\n async photo(subject = claims?.sub) {\n if (!subject || !held)\n return null;\n const response = await call(await avatarUrl(subject, { style: \"photo\" }), {\n headers: {\n Authorization: `${held.token_type} ${held.access_token}`,\n Accept: \"image/*\",\n },\n });\n return response.ok ? await response.blob() : null;\n },\n refresh,\n async fetch(url, init = {}) {\n if (held?.refresh_token && expired())\n await refresh();\n const access = held?.access_token;\n const headers = new Headers(init.headers);\n if (access && held) {\n headers.set(\"Authorization\", `${held.token_type} ${access}`);\n for (const [name, value] of Object.entries(await proved(init.method ?? \"GET\", url, access))) {\n headers.set(name, value);\n }\n }\n return await call(url, { ...init, headers });\n },\n async proof(method, url) {\n return (await proved(method, url, held?.access_token)).DPoP ?? null;\n },\n async freshAccessToken(leeway = 30) {\n if (held?.refresh_token && expired(leeway))\n await refresh();\n return held?.access_token ?? null;\n },\n accessToken() {\n return held?.access_token ?? null;\n },\n tokens() {\n return held;\n },\n authorization() {\n return held ? `${held.token_type} ${held.access_token}` : null;\n },\n expired,\n async logout({ everywhere = false, postLogoutRedirectUri } = {}) {\n const leaving = held;\n generation += 1;\n held = null;\n claims = null;\n refreshing = null;\n store.removeItem(PENDING);\n if (leaving?.refresh_token) {\n await revoke(leaving.refresh_token).catch(() => undefined);\n }\n if (!everywhere)\n return;\n const { end_session_endpoint } = await discover();\n if (!end_session_endpoint) {\n throw masksError(\"invalid_issuer\", `${issuer} publishes no end_session_endpoint`);\n }\n const query = new URLSearchParams([[\"client_id\", options.clientId]]);\n if (leaving?.id_token)\n query.append(\"id_token_hint\", leaving.id_token);\n if (postLogoutRedirectUri) {\n query.append(\"post_logout_redirect_uri\", postLogoutRedirectUri);\n }\n window.location.assign(`${end_session_endpoint}?${query.toString()}`);\n },\n };\n}\n","const PLACEHOLDER = /%\\{(\\w+)\\}/g;\n\nlet held = {};\nlet plurals = new Intl.PluralRules(\"en\");\n\nexport function useCopy(copy, locale = \"en\") {\n held = copy ?? {};\n plurals = new Intl.PluralRules(locale);\n}\n\nfunction lookup(key) {\n return key\n .split(\".\")\n .reduce((found, part) => (found == null ? undefined : found[part]), held);\n}\n\nfunction fill(text, values) {\n return text.replace(PLACEHOLDER, (whole, name) =>\n values && Object.hasOwn(values, name) ? String(values[name]) : whole,\n );\n}\n\nexport function t(key, values) {\n const found = lookup(key);\n\n if (typeof found === \"string\") return fill(found, values);\n\n if (found && typeof found === \"object\" && values && \"count\" in values) {\n const form = found[plurals.select(Number(values.count))] ?? found.other;\n\n if (typeof form === \"string\") return fill(form, values);\n }\n\n return key;\n}\n","import { t } from \"./copy.js\";\n\nconst KEY = \"masks:manage:client\";\n\nexport const SCOPE = [\n \"openid\",\n \"profile\",\n \"email\",\n \"masks:manage\",\n \"masks:manage:security\",\n \"masks:manage:support\",\n \"masks:manage:read\",\n];\n\nfunction held(issuer) {\n try {\n return JSON.parse(localStorage.getItem(KEY) || \"null\")?.[issuer] || null;\n } catch {\n return null;\n }\n}\n\nfunction keep(issuer, clientId) {\n const all = JSON.parse(localStorage.getItem(KEY) || \"{}\");\n\n all[issuer] = clientId;\n localStorage.setItem(KEY, JSON.stringify(all));\n}\n\nexport function clientId(boot) {\n return held(boot.issuer);\n}\n\nexport function forget(boot) {\n const all = JSON.parse(localStorage.getItem(KEY) || \"{}\");\n\n delete all[boot.issuer];\n localStorage.setItem(KEY, JSON.stringify(all));\n}\n\nexport function callbackUri(boot) {\n return `${location.origin}${boot.root}/callback`;\n}\n\nexport function handshakeUrl(boot) {\n const query = new URLSearchParams([\n [\"client_name\", `Manage ${boot.tenant.name}`],\n [\"resource\", boot.resource],\n [\"scope\", SCOPE.join(\" \")],\n [\"return_to\", `${location.origin}${boot.root}`],\n [\"token_endpoint_auth_method\", \"none\"],\n [\"redirect_uris\", callbackUri(boot)],\n ]);\n\n return `${boot.issuer}/handshake?${query.toString()}`;\n}\n\nexport async function redeem(boot, token) {\n const response = await fetch(`${boot.issuer}/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n client_name: `Manage ${boot.tenant.name}`,\n redirect_uris: [callbackUri(boot)],\n token_endpoint_auth_method: \"none\",\n }),\n });\n\n const body = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n throw new Error(\n body.error_description || body.error || t(\"pairing.registration_failed\"),\n );\n }\n\n if (body.client_secret) {\n throw new Error(t(\"pairing.secret_issued\"));\n }\n\n keep(boot.issuer, body.client_id);\n\n return body.client_id;\n}\n","import { createBrowserClient } from \"@masks/client\";\nimport { t } from \"./copy.js\";\nimport { callbackUri, clientId, forget, SCOPE } from \"./pairing.js\";\n\nfunction detach(variables) {\n const files = new Map();\n\n const walk = (value, path) => {\n if (value instanceof Blob) {\n files.set(path, value);\n return null;\n }\n\n if (Array.isArray(value))\n return value.map((one, at) => walk(one, `${path}.${at}`));\n\n if (value?.constructor === Object) {\n return Object.fromEntries(\n Object.entries(value).map(([key, one]) => [\n key,\n walk(one, `${path}.${key}`),\n ]),\n );\n }\n\n return value;\n };\n\n return { held: walk(variables, \"variables\"), files };\n}\n\nexport function createApi(boot) {\n const state = $state({\n ready: false,\n identity: null,\n failure: null,\n });\n\n let client = null;\n\n const build = () => {\n const held = clientId(boot);\n\n if (!held) return null;\n\n client ||= createBrowserClient({\n issuer: boot.issuer,\n clientId: held,\n redirectUri: callbackUri(boot),\n scope: SCOPE,\n resource: boot.resource,\n });\n\n return client;\n };\n\n const authorization = async () => {\n const held = build();\n\n if (!held) throw new Error(t(\"api.unregistered\"));\n\n if (held.expired(30)) await held.refresh();\n\n return held.authorization();\n };\n\n return {\n state,\n\n paired() {\n return Boolean(clientId(boot));\n },\n\n signedIn() {\n return Boolean(build()?.accessToken());\n },\n\n async authorize(returnTo) {\n await build().authorize({ returnTo });\n },\n\n async callback() {\n const answer = await build().callback();\n\n state.identity = answer.identity;\n state.ready = true;\n\n return answer;\n },\n\n async signOut() {\n const held = build();\n\n state.identity = null;\n\n if (!held) return null;\n\n const idToken = held.tokens()?.id_token;\n const document = await held.discover().catch(() => null);\n\n held.logout();\n\n if (!document?.end_session_endpoint) return null;\n\n const query = new URLSearchParams({\n client_id: clientId(boot),\n post_logout_redirect_uri: `${location.origin}${boot.root}`,\n });\n\n if (idToken) query.set(\"id_token_hint\", idToken);\n\n return `${document.end_session_endpoint}?${query}`;\n },\n\n unpair() {\n build()?.logout();\n forget(boot);\n client = null;\n },\n\n async query(document, variables = {}) {\n const { held, files } = detach(variables);\n const headers = {\n Accept: \"application/json\",\n Authorization: await authorization(),\n };\n let sent;\n\n if (files.size) {\n sent = new FormData();\n\n sent.append(\n \"operations\",\n JSON.stringify({ query: document, variables: held }),\n );\n sent.append(\n \"map\",\n JSON.stringify(\n Object.fromEntries(\n [...files.keys()].map((path, at) => [at, [path]]),\n ),\n ),\n );\n\n [...files.values()].forEach((file, at) => {\n sent.append(String(at), file);\n });\n } else {\n headers[\"Content-Type\"] = \"application/json\";\n sent = JSON.stringify({ query: document, variables });\n }\n\n const response = await fetch(boot.graphql, {\n method: \"POST\",\n headers,\n body: sent,\n });\n\n const body = await response.json().catch(() => ({}));\n\n if (response.status === 401 || response.status === 403) {\n throw new Error(\n body.error_description || body.error || t(\"api.refused\"),\n );\n }\n\n if (body.errors?.length) {\n throw new Error(body.errors.map((one) => one.message).join(\"; \"));\n }\n\n return body.data;\n },\n };\n}\n","import { getContext, setContext } from \"svelte\";\n\nconst ROUTER = Symbol(\"router\");\n\nexport function createRouter(root) {\n const state = $state({ path: location.pathname, search: location.search });\n\n const settle = () => {\n state.path = location.pathname;\n state.search = location.search;\n };\n\n addEventListener(\"popstate\", settle);\n\n return {\n state,\n\n get segments() {\n return state.path.slice(root.length).split(\"/\").filter(Boolean);\n },\n\n get query() {\n return new URLSearchParams(state.search);\n },\n\n href(to) {\n return `${root}${to}`;\n },\n\n go(to) {\n history.pushState({}, \"\", `${root}${to}`);\n settle();\n scrollTo({ top: 0 });\n },\n\n replace(to) {\n history.replaceState({}, \"\", `${root}${to}`);\n settle();\n },\n };\n}\n\nexport function provideRouter(router) {\n setContext(ROUTER, router);\n}\n\nexport function useRouter() {\n return getContext(ROUTER);\n}\n","<script>\n let { children } = $props();\n</script>\n\n<div class=\"sheet px-6 py-14 text-center\">\n <p class=\"mx-auto max-w-sm text-sm opacity-85\">{@render children()}</p>\n</div>\n","<script>\n import { useRouter } from \"../lib/router.svelte.js\";\n\n let { to, class: klass = \"link link-hover\", children, ...rest } = $props();\n\n const router = useRouter();\n\n function follow(event) {\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n if (event.button !== 0) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n router.go(to);\n }\n</script>\n\n<a {...rest} class={klass} href={router.href(to)} onclick={follow}>{@render children()}</a>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { label = t(\"ui.loading\") } = $props();\n</script>\n\n<div class=\"grid place-items-center py-16\" role=\"status\">\n <span class=\"loading loading-spinner\"></span>\n <span class=\"sr-only\">{label}</span>\n</div>\n","export function createPages(size = 25) {\n const state = $state({ cursors: [null], total: null });\n\n return {\n size,\n state,\n\n get cursor() {\n return state.cursors.at(-1);\n },\n\n get first() {\n return (state.cursors.length - 1) * size + 1;\n },\n\n reset() {\n state.cursors = [null];\n },\n\n forward(cursor) {\n state.cursors = [...state.cursors, cursor];\n },\n\n back() {\n if (state.cursors.length > 1) state.cursors = state.cursors.slice(0, -1);\n },\n\n counted(total) {\n state.total = total;\n },\n };\n}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { pages, shown, busy = false, onpage } = $props();\n\n const first = $derived(pages.first);\n const last = $derived(first + shown - 1);\n const total = $derived(pages.state.total);\n const earlier = $derived(pages.state.cursors.length > 1);\n const later = $derived(total === null ? shown === pages.size : last < total);\n</script>\n\n{#if shown && (earlier || later)}\n <nav class=\"pager\" aria-label={t(\"ui.pager.label\")}>\n <span class=\"hint\">\n {total === null\n ? t(\"ui.pager.range\", { first: first.toLocaleString(), last: last.toLocaleString() })\n : t(\"ui.pager.range_of\", {\n first: first.toLocaleString(),\n last: last.toLocaleString(),\n total: total.toLocaleString(),\n })}\n </span>\n\n <div class=\"join\">\n <button\n type=\"button\"\n class=\"btn btn-sm join-item\"\n disabled={busy || !earlier}\n onclick={() => onpage(\"back\")}\n >{t(\"ui.pager.previous\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-sm join-item\"\n disabled={busy || !later}\n onclick={() => onpage(\"forward\")}\n >{t(\"ui.pager.next\")}</button>\n </div>\n </nav>\n{/if}\n","export function createFeedback() {\n const state = $state({ notice: null, failure: null });\n\n const clear = () => {\n state.notice = null;\n state.failure = null;\n };\n\n const blame = (thrown) => {\n state.notice = null;\n state.failure = thrown?.message ?? String(thrown);\n };\n\n return {\n state,\n clear,\n blame,\n\n say(notice) {\n state.failure = null;\n state.notice = notice;\n },\n\n async attempt(work, notice = null) {\n clear();\n\n try {\n const answer = (await work()) ?? true;\n\n if (notice) state.notice = notice;\n\n return answer;\n } catch (thrown) {\n blame(thrown);\n\n return null;\n }\n },\n };\n}\n","export const NONE = \"—\";\n\nconst formatters = new Map();\n\nfunction locale() {\n return document.documentElement.lang || undefined;\n}\n\nfunction formatter(kind, make) {\n const key = `${kind}:${locale() ?? \"\"}`;\n\n if (!formatters.has(key)) formatters.set(key, make(locale()));\n\n return formatters.get(key);\n}\n\nconst DAY = () =>\n formatter(\n \"day\",\n (lang) =>\n new Intl.DateTimeFormat(lang, {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n }),\n );\n\nconst MOMENT = () =>\n formatter(\n \"moment\",\n (lang) =>\n new Intl.DateTimeFormat(lang, {\n day: \"numeric\",\n month: \"short\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }),\n );\n\nconst RELATIVE = () =>\n formatter(\n \"relative\",\n (lang) => new Intl.RelativeTimeFormat(lang, { numeric: \"auto\" }),\n );\n\nconst STEPS = [\n [\"year\", 31536000000],\n [\"month\", 2592000000],\n [\"week\", 604800000],\n [\"day\", 86400000],\n [\"hour\", 3600000],\n [\"minute\", 60000],\n];\n\nfunction parsed(iso) {\n if (!iso) return null;\n\n const at = new Date(iso);\n\n return Number.isNaN(at.getTime()) ? null : at;\n}\n\nexport function day(iso, fallback = NONE) {\n const at = parsed(iso);\n\n return at ? DAY().format(at) : fallback;\n}\n\nexport function moment(iso, fallback = NONE) {\n const at = parsed(iso);\n\n return at ? MOMENT().format(at) : fallback;\n}\n\nexport function since(iso, fallback = NONE) {\n const at = parsed(iso);\n\n if (!at) return fallback;\n\n const gap = at.getTime() - Date.now();\n\n for (const [unit, size] of STEPS) {\n if (Math.abs(gap) >= size) {\n return RELATIVE().format(Math.round(gap / size), unit);\n }\n }\n\n return RELATIVE().format(Math.round(gap / 1000), \"second\");\n}\n\nexport function joined(values, fallback = NONE) {\n const kept = (values ?? []).filter(Boolean);\n\n return kept.length ? kept.join(\" \") : fallback;\n}\n","<script>\n import { t } from \"../lib/copy.js\";\n let { text, label = t(\"ui.more_about\") } = $props();\n\n const id = $props.id();\n</script>\n\n<span class=\"tip\">\n <button type=\"button\" class=\"tip-mark\" aria-label={label} aria-describedby={id}>?</button>\n <span class=\"tip-body\" role=\"tooltip\" {id}>{text}</span>\n</span>\n","<script>\n import { t } from \"../lib/copy.js\";\n import Tip from \"./Tip.svelte\";\n\n let { title = null, lede = null, help = null, row = false, actions, children } = $props();\n</script>\n\n<section class=\"section\" class:section-row={row}>\n {#if title || lede || actions}\n <div class=\"section-head\">\n <div class=\"flex min-w-0 flex-col gap-1.5\">\n {#if title}\n <div class=\"flex items-center gap-2\">\n <h2 class=\"subhead\">{title}</h2>\n {#if help}<Tip text={help} label={t(\"ui.about\", { title: title.toLowerCase() })} />{/if}\n </div>\n {/if}\n {#if lede}<p class=\"deck-sm\">{lede}</p>{/if}\n </div>\n\n {#if actions}\n <div class=\"flex min-w-0 max-w-full flex-wrap items-center gap-2\">{@render actions()}</div>\n {/if}\n </div>\n {/if}\n\n <div class=\"section-body\">{@render children()}</div>\n</section>\n","<script>\n import { useRouter } from \"../lib/router.svelte.js\";\n\n let { to, children } = $props();\n\n const router = useRouter();\n\n function follow(event) {\n if (event.target.closest(\"a, button, input, label\")) return;\n if (getSelection()?.toString()) return;\n\n router.go(to);\n }\n</script>\n\n<tr class=\"hover cursor-pointer\" onclick={follow}>{@render children()}</tr>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { value = $bindable(\"\"), placeholder, label, onsearch } = $props();\n</script>\n\n<div class=\"join w-full sm:w-auto\">\n <input\n class=\"input input-sm join-item w-full sm:w-48 md:w-56\"\n type=\"search\"\n aria-label={label}\n {placeholder}\n bind:value\n onkeydown={(event) => event.key === \"Enter\" && onsearch()}\n />\n <button type=\"button\" class=\"btn btn-sm join-item\" onclick={onsearch}>{t(\"ui.search\")}</button>\n</div>\n","<script>\n import Empty from \"./Empty.svelte\";\n\n let { columns, count, empty, rows } = $props();\n\n const heads = $derived(\n columns.map((column) => (typeof column === \"string\" ? { label: column } : column)),\n );\n</script>\n\n{#if count === 0}\n <Empty>{empty}</Empty>\n{:else}\n <div class=\"sheet overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n {#each heads as head, index (index)}\n <th\n class=\"{head.right ? 'text-right' : ''} {head.hide ? 'hidden md:table-cell' : ''}\"\n >{head.label ?? \"\"}</th>\n {/each}\n </tr>\n </thead>\n <tbody>{@render rows()}</tbody>\n </table>\n </div>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api, feedback } = $props();\n\n const LENSES = [\n [\"allowed\", t(\"devices.lenses.allowed\"), { blocked: false }],\n [\"blocked\", t(\"devices.lenses.blocked\"), { blocked: true }],\n [\"unattached\", t(\"devices.lenses.unattached\"), { unattached: true }],\n ];\n\n const QUERY = `\n query Devices($blocked: Boolean, $unattached: Boolean, $agent: String, $limit: Int) {\n devices(blocked: $blocked, unattached: $unattached, agent: $agent, limit: $limit) {\n id label category known ipAddress userAgent lastSeenAt blockedAt\n actors { uuid identifier }\n sessions { id }\n }\n }\n `;\n\n const LIMIT = 100;\n\n const COLUMNS = [\n \"\",\n t(\"devices.columns.device\"),\n { label: t(\"devices.columns.who\"), hide: true },\n { label: t(\"devices.columns.ip_address\"), hide: true },\n t(\"devices.columns.last_seen\"),\n ];\n\n let devices = $state([]);\n let loading = $state(true);\n let lens = $state(\"allowed\");\n let search = $state(\"\");\n let agent = $state(\"\");\n let chosen = $state(new Set());\n let refuse = $state(false);\n let busy = $state(false);\n let section = $state(null);\n\n const narrowing = $derived(LENSES.find(([key]) => key === lens)?.[2] ?? {});\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n blocked: narrowing.blocked ?? null,\n unattached: narrowing.unattached ?? null,\n agent: agent || null,\n limit: LIMIT,\n }),\n );\n\n loading = false;\n\n if (data) {\n devices = data.devices;\n chosen = new Set();\n }\n }\n\n load().then(() => {\n if (location.hash === \"#devices\") section?.scrollIntoView();\n });\n\n function look(key) {\n lens = key;\n load();\n }\n\n function filter() {\n agent = search.trim();\n refuse = false;\n load();\n }\n\n function clearFilter() {\n search = \"\";\n filter();\n }\n\n function toggle(id) {\n const next = new Set(chosen);\n\n next.has(id) ? next.delete(id) : next.add(id);\n chosen = next;\n }\n\n const all = $derived(devices.length > 0 && chosen.size === devices.length);\n\n function toggleAll() {\n chosen = all ? new Set() : new Set(devices.map((device) => device.id));\n }\n\n const blocking = $derived(lens !== \"blocked\");\n\n function outcome(count, spared) {\n const done = t(blocking ? \"devices.blocked_count\" : \"devices.unblocked_count\", { count });\n\n return spared ? t(\"devices.spared\", { done }) : done;\n }\n\n async function bulk(variables, question) {\n if (!confirm(question)) return;\n\n busy = true;\n\n const mutation = blocking\n ? `mutation Bulk($ids: [ID!], $agent: String, $refuse: Boolean) {\n blockDevices(ids: $ids, agent: $agent, refuse: $refuse) { count spared }\n }`\n : `mutation Bulk($ids: [ID!]!) { unblockDevices(ids: $ids) { count } }`;\n\n const data = await feedback.attempt(() => api.query(mutation, variables));\n\n busy = false;\n\n if (!data) return;\n\n const answer = data.blockDevices ?? data.unblockDevices;\n\n await load();\n feedback.say(\n refuse && variables.agent\n ? t(\"devices.refused\", { done: outcome(answer.count, answer.spared), agent: variables.agent })\n : outcome(answer.count, answer.spared),\n );\n }\n\n const blockChosen = () =>\n bulk(\n { ids: [...chosen] },\n blocking\n ? t(\"devices.block_chosen_question\", { count: chosen.size })\n : t(\"devices.unblock_chosen_question\", { count: chosen.size }),\n );\n\n const blockMatching = () => {\n const question = t(\"devices.block_matching_question\", { agent });\n\n return bulk({ agent, refuse }, refuse ? t(\"devices.block_matching_refuse\", { question }) : question);\n };\n\n const nothing = $derived(\n lens === \"blocked\"\n ? t(\"devices.empty.blocked\")\n : lens === \"unattached\"\n ? t(\"devices.empty.unattached\")\n : t(\"devices.empty.allowed\"),\n );\n</script>\n\n<div id=\"devices\" bind:this={section} class=\"scroll-mt-20\">\n <Section title={t(\"devices.title\")}>\n {#snippet actions()}\n <Search\n bind:value={search}\n label={t(\"devices.filter_label\")}\n placeholder=\"curl, python-requests\"\n onsearch={filter}\n />\n <div class=\"range\" role=\"group\" aria-label={t(\"devices.which\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => look(key)}>{label}</button>\n {/each}\n </div>\n {/snippet}\n\n {#if agent && blocking}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\">\n <p class=\"text-sm\">\n {t(\"devices.showing\")} <code class=\"font-mono\">{agent}</code>.\n <button type=\"button\" class=\"link\" onclick={clearFilter}>{t(\"devices.clear\")}</button>\n </p>\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox\" bind:checked={refuse} />\n {t(\"devices.refuse_agent\")}\n </label>\n <button\n type=\"button\"\n class=\"btn btn-sm btn-error btn-outline\"\n disabled={busy}\n onclick={blockMatching}\n >\n {t(\"devices.block_matching\")}\n </button>\n </div>\n {:else if agent}\n <p class=\"text-sm opacity-85\">\n {t(\"devices.showing_blocked\")} <code class=\"font-mono\">{agent}</code>.\n <button type=\"button\" class=\"link\" onclick={clearFilter}>{t(\"devices.clear\")}</button>\n </p>\n {/if}\n\n {#if devices.length}\n <div class=\"flex flex-wrap items-center gap-3\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n checked={all}\n indeterminate={chosen.size > 0 && !all}\n onchange={toggleAll}\n />\n {chosen.size\n ? t(\"devices.chosen\", { count: chosen.size })\n : t(\"devices.choose_all\", { count: devices.length })}\n </label>\n {#if chosen.size}\n <button\n type=\"button\"\n class=\"btn btn-sm {blocking ? 'btn-error btn-outline' : 'btn-outline'}\"\n disabled={busy}\n onclick={blockChosen}\n >\n {t(blocking ? \"devices.block_count\" : \"devices.unblock_count\", { count: chosen.size })}\n </button>\n {/if}\n {#if devices.length === LIMIT}\n <span class=\"hint\">{t(\"devices.newest\", { count: LIMIT })}</span>\n {/if}\n </div>\n {/if}\n\n {#if loading && devices.length === 0}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={devices.length} empty={nothing}>\n {#snippet rows()}\n {#each devices as device (device.id)}\n <Row to={`/actors/devices/${device.id}`}>\n <td class=\"w-0\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n aria-label={t(\"devices.choose\", { label: device.label })}\n checked={chosen.has(device.id)}\n onchange={() => toggle(device.id)}\n />\n </td>\n <td class=\"max-w-[18rem]\">\n <Link to={`/actors/devices/${device.id}`} class=\"link link-hover font-medium\">\n {device.label}\n </Link>\n <div class=\"flex flex-wrap items-center gap-1.5\">\n <span class=\"truncate text-xs opacity-75\">{device.category}</span>\n {#if device.blockedAt}\n <span class=\"badge badge-error badge-xs\">{t(\"devices.blocked\")}</span>\n {:else if !device.known}\n <span class=\"badge badge-warning badge-xs\">{t(\"devices.unrecognised\")}</span>\n {/if}\n {#if device.sessions.length}\n <span class=\"badge badge-success badge-xs\">{t(\"devices.signed_in\")}</span>\n {/if}\n </div>\n {#if agent && device.userAgent}\n <div class=\"truncate font-mono text-xs opacity-80\" title={device.userAgent}>\n {device.userAgent}\n </div>\n {/if}\n </td>\n\n <td class=\"hidden max-w-[16rem] text-xs md:table-cell\">\n {#if device.actors.length}\n <div class=\"truncate\">\n {#each device.actors as actor, at (actor.uuid)}{at ? \", \" : \"\"}<Link\n to={`/actors/${actor.uuid}`}\n class=\"link link-hover\">{actor.identifier}</Link\n >{/each}\n </div>\n {:else}\n <span class=\"opacity-80\">{t(\"devices.nobody_yet\")}</span>\n {/if}\n </td>\n\n <td class=\"hidden font-mono text-xs opacity-85 md:table-cell\">\n {device.ipAddress ?? \"—\"}\n </td>\n\n <td class=\"text-xs whitespace-nowrap opacity-85\" title={moment(device.lastSeenAt)}>\n {since(device.lastSeenAt)}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n {/if}\n </Section>\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n let { value = [], available = [], onchange, disabled = false } = $props();\n\n const SHOWN = 40;\n const FOLDED = 24;\n const id = `scopes-${Math.random().toString(36).slice(2, 10)}`;\n\n let query = $state(\"\");\n let open = $state(false);\n let active = $state(0);\n let unfolded = $state(false);\n\n const held = $derived([...new Set(value)].sort());\n const needle = $derived(query.trim().toLowerCase());\n const offered = $derived(\n [...new Set(available)]\n .filter((scope) => !value.includes(scope) && (!needle || scope.toLowerCase().includes(needle)))\n .sort((a, b) => rank(a) - rank(b) || a.localeCompare(b)),\n );\n const listed = $derived(offered.slice(0, SHOWN));\n const typed = $derived(query.trim());\n const novel = $derived(typed !== \"\" && !value.includes(typed) && !available.includes(typed));\n const choices = $derived(novel ? [...listed, typed] : listed);\n const shown = $derived(unfolded || held.length <= FOLDED ? held : held.slice(0, FOLDED));\n\n $effect(() => {\n if (active >= choices.length) active = Math.max(choices.length - 1, 0);\n });\n\n function rank(scope) {\n return needle && scope.toLowerCase().startsWith(needle) ? 0 : 1;\n }\n\n function add(scope) {\n if (!scope || value.includes(scope)) return;\n\n onchange([...value, scope]);\n query = \"\";\n active = 0;\n }\n\n function remove(scope) {\n onchange(value.filter((one) => one !== scope));\n }\n\n function keydown(event) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n open = true;\n active = Math.min(active + 1, choices.length - 1);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n active = Math.max(active - 1, 0);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n add(open && choices.length ? choices[active] : typed);\n } else if (event.key === \"Escape\") {\n open = false;\n }\n }\n</script>\n\n<div class=\"scope-picker\">\n {#if !disabled}\n <div class=\"scope-picker-field\">\n <input\n class=\"input input-sm w-full font-mono\"\n role=\"combobox\"\n aria-expanded={open && choices.length > 0}\n aria-controls={`${id}-list`}\n aria-autocomplete=\"list\"\n aria-activedescendant={open && choices.length ? `${id}-${active}` : undefined}\n aria-label={t(\"scopes_editor.label\")}\n placeholder={t(\"scopes_editor.placeholder\", { count: available.length })}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={query}\n oninput={() => {\n open = true;\n active = 0;\n }}\n onfocus={() => (open = true)}\n onblur={() => (open = false)}\n onkeydown={keydown}\n />\n\n {#if open && choices.length}\n <ul class=\"scope-picker-list\" id={`${id}-list`} role=\"listbox\" aria-label={t(\"scopes_editor.offered\")}>\n {#each choices as scope, index (scope)}\n <li\n id={`${id}-${index}`}\n role=\"option\"\n aria-selected={index === active}\n class=\"scope-picker-option\"\n class:scope-picker-active={index === active}\n onmousedown={(event) => {\n event.preventDefault();\n add(scope);\n }}\n onmousemove={() => (active = index)}\n >\n {#if novel && index === choices.length - 1}\n <span class=\"scope-picker-new\">{t(\"scopes_editor.add_new\")}</span>\n {/if}\n <span class=\"scope font-mono\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n </li>\n {/each}\n\n {#if offered.length > SHOWN}\n <li class=\"scope-picker-more\" role=\"presentation\">\n {t(\"scopes_editor.more\", { count: offered.length - SHOWN })}\n </li>\n {/if}\n </ul>\n {/if}\n </div>\n {/if}\n\n {#if held.length}\n <ul class=\"scope-picker-held\" aria-label={t(\"scopes_editor.held\", { count: held.length })}>\n {#each shown as scope (scope)}\n <li class=\"badge font-mono text-xs {scope.startsWith('masks:') ? 'badge-error badge-soft' : 'badge-neutral badge-soft'}\">\n {scope}\n {#if !disabled}\n <button\n type=\"button\"\n class=\"scope-picker-remove\"\n aria-label={t(\"scopes_editor.remove\", { scope })}\n onclick={() => remove(scope)}\n >×</button>\n {/if}\n </li>\n {/each}\n\n {#if held.length > FOLDED}\n <li>\n <button type=\"button\" class=\"btn btn-ghost btn-xs\" onclick={() => (unfolded = !unfolded)}>\n {unfolded ? t(\"scopes_editor.fewer\") : t(\"scopes_editor.all\", { count: held.length })}\n </button>\n </li>\n {/if}\n </ul>\n {:else}\n <p class=\"hint\">{t(\"scopes_editor.none\")}</p>\n {/if}\n</div>\n","<script>\n import { t } from \"../lib/copy.js\";\n let {\n label,\n value = $bindable(\"\"),\n type = \"text\",\n onsave = null,\n save = t(\"ui.save\"),\n ...rest\n } = $props();\n</script>\n\n<label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n\n {#if onsave}\n <div class=\"join\">\n <input class=\"input input-sm join-item w-full\" {type} bind:value {...rest} />\n <button type=\"button\" class=\"btn btn-sm join-item\" onclick={onsave}>{save}</button>\n </div>\n {:else}\n <input class=\"input input-sm w-full\" {type} bind:value {...rest} />\n {/if}\n</label>\n","<script>\n let { feedback } = $props();\n</script>\n\n{#if feedback.notice}\n <div class=\"alert alert-success alert-soft text-sm\" role=\"status\">{feedback.notice}</div>\n{/if}\n\n{#if feedback.failure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.failure}</div>\n{/if}\n","<script>\n import Link from \"./Link.svelte\";\n\n let { title, lede = null, id = null, back = null, hero = false, actions, children } = $props();\n\n let heading;\n\n $effect(() => {\n document.title = title;\n });\n\n $effect(() => {\n heading?.focus({ preventScroll: true });\n });\n</script>\n\n<div class=\"console-page\">\n {#if back}\n <div>\n <Link to={back.to} class=\"link link-hover text-sm opacity-85\">← {back.label}</Link>\n </div>\n {/if}\n\n <header class=\"flex flex-wrap items-end justify-between gap-x-6 gap-y-4\">\n <div class=\"flex min-w-0 flex-col gap-2\">\n <h1 class=\"headline outline-none\" class:headline-hero={hero} tabindex=\"-1\" bind:this={heading}>{title}</h1>\n\n {#if id}\n <p class=\"stamp\">{id}</p>\n {/if}\n\n {#if lede}\n <p class=\"deck\">{lede}</p>\n {/if}\n </div>\n\n {#if actions}\n <div class=\"flex w-full flex-wrap items-center gap-2 sm:w-auto\">{@render actions()}</div>\n {/if}\n </header>\n\n {@render children()}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, joined } from \"./lib/format.js\";\n import Devices from \"./Devices.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const PRESENCE = `\n sessions { id }\n devices { id blockedAt }\n `;\n\n const pages = createPages();\n\n const LENSES = [\n [\"everyone\", t(\"actors.lenses.everyone\"), {}],\n [\"invited\", t(\"actors.lenses.invited\"), { activated: false }],\n [\"waiting\", t(\"actors.lenses.waiting\"), { pendingApproval: true }],\n [\"help\", t(\"actors.lenses.help\"), { recoveryRequested: true }],\n [\"managers\", t(\"actors.lenses.managers\"), { holds: \"masks:manage\" }],\n [\"suspended\", t(\"actors.lenses.suspended\"), { suspended: true }],\n ];\n\n const QUERY = `\n query Actors(\n $search: String, $activated: Boolean, $holds: String, $pendingApproval: Boolean,\n $recoveryRequested: Boolean, $suspended: Boolean, $afterId: ID, $limit: Int\n ) {\n actors(\n search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,\n recoveryRequested: $recoveryRequested, suspended: $suspended, afterId: $afterId, limit: $limit\n ) {\n uuid identifier nickname name email emailVerified otpEnabled backupCodesRemaining\n lastLoginAt scopes activated invitedAt\n avatars { photo identicon }\n ${PRESENCE}\n }\n actorCount(\n search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,\n recoveryRequested: $recoveryRequested, suspended: $suspended\n )\n }\n `;\n\n const CREATE = `\n mutation Create($nickname: String, $email: String, $password: String, $scopes: [String!]) {\n createActor(nickname: $nickname, email: $email, password: $password, scopes: $scopes) {\n delivered url actor { uuid identifier activated }\n }\n }\n `;\n\n const STANDARD = [\"openid\", \"profile\", \"email\", \"offline_access\", \"identities\"];\n\n const COLUMNS = [\n t(\"actors.columns.actor\"),\n { label: t(\"actors.columns.scopes\"), hide: true },\n { label: t(\"actors.columns.second_factor\"), hide: true },\n { label: t(\"actors.columns.signed_in_on\"), hide: true },\n { label: t(\"actors.columns.last_seen\"), hide: true },\n ];\n\n const feedback = createFeedback();\n\n let search = $state(\"\");\n let actors = $state([]);\n let loading = $state(true);\n let lens = $state(\"everyone\");\n\n const narrowing = $derived(LENSES.find(([key]) => key === lens)?.[2] ?? {});\n\n let adding = $state(false);\n let inviting = $state(false);\n let addresses = $state(\"\");\n let joining = $state([]);\n let groups = $state([]);\n let invited = $state(null);\n\n let groupsLoaded = false;\n\n const invitedCount = $derived(invited?.filter((one) => one.outcome === \"invited\").length ?? 0);\n\n async function openInvites() {\n inviting = true;\n invited = null;\n\n if (groupsLoaded) return;\n\n const data = await feedback.attempt(() => api.query(\"query Groups { groups { key name } }\"));\n\n if (!data) return;\n\n groups = data.groups;\n groupsLoaded = true;\n }\n\n async function inviteMany() {\n busy = true;\n\n const data = await feedback.attempt(() =>\n api.query(\n `mutation Invite($emails: [String!]!, $groups: [String!]) {\n inviteActors(emails: $emails, groups: $groups) { outcomes { email outcome url } }\n }`,\n { emails: addresses.split(/[\\s,;]+/).filter(Boolean), groups: joining },\n ),\n );\n\n busy = false;\n\n if (!data) return;\n\n invited = data.inviteActors.outcomes;\n inviting = false;\n addresses = \"\";\n again();\n }\n let nickname = $state(\"\");\n let email = $state(\"\");\n let password = $state(\"\");\n let scopes = $state([...STANDARD]);\n let supported = $state([]);\n let minimum = $state(8);\n let busy = $state(false);\n let created = $state(null);\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, {\n search: search.trim() || null,\n activated: narrowing.activated ?? null,\n holds: narrowing.holds ?? null,\n pendingApproval: narrowing.pendingApproval ?? null,\n recoveryRequested: narrowing.recoveryRequested ?? null,\n suspended: narrowing.suspended ?? null,\n afterId: pages.cursor,\n limit: pages.size,\n });\n\n actors = data.actors;\n pages.counted(data.actorCount);\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n function again() {\n pages.reset();\n load();\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(actors.at(-1)?.uuid);\n else pages.back();\n\n load();\n }\n\n function look(chosen) {\n lens = chosen;\n again();\n }\n\n load();\n\n\n async function open() {\n nickname = \"\";\n email = \"\";\n password = \"\";\n scopes = [...STANDARD];\n created = null;\n adding = true;\n feedback.clear();\n\n if (supported.length) return;\n\n const data = await feedback.attempt(() =>\n api.query(\"query Scopes { scopesSupported minimumPassword }\"),\n );\n\n if (data) {\n supported = data.scopesSupported;\n minimum = data.minimumPassword;\n }\n }\n\n function close() {\n adding = false;\n feedback.clear();\n }\n\n async function send() {\n busy = true;\n\n const data = await feedback.attempt(() =>\n api.query(CREATE, {\n nickname: nickname.trim() || null,\n email: email.trim() || null,\n password: password || null,\n scopes,\n }),\n );\n\n busy = false;\n\n if (!data) return;\n\n created = data.createActor;\n adding = false;\n\n pages.reset();\n await load();\n }\n\n const blocked = (actor) => actor.devices.some((device) => device.blockedAt);\n\n const presence = (actor) => {\n const parts = [\n t(\"actors.sessions\", { count: actor.sessions.length }),\n t(\"actors.devices\", { count: actor.devices.length }),\n ];\n\n return parts.join(\" · \");\n };\n</script>\n\n<Page title={t(\"actors.title\")}>\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"actors.who\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => look(key)}>{label}</button>\n {/each}\n </div>\n\n <Search\n bind:value={search}\n label={t(\"actors.search\")}\n placeholder={t(\"actors.search_placeholder\")}\n onsearch={again}\n />\n <button type=\"button\" class=\"btn btn-sm\" onclick={openInvites}>{t(\"actors.invite_many\")}</button>\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={open}>{t(\"actors.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if inviting}\n <Section title={t(\"actors.invites.title\")} lede={t(\"actors.invites.lede\")}>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"actors.invites.addresses\")}</span>\n <textarea class=\"textarea w-full font-mono text-sm\" rows=\"6\" bind:value={addresses}></textarea>\n </label>\n\n {#if groups.length}\n <fieldset class=\"flex flex-col gap-1\">\n <legend class=\"field-label\">{t(\"actors.invites.groups\")}</legend>\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox checkbox-sm\" value={group.key} bind:group={joining} />\n {group.name}\n </label>\n {/each}\n </fieldset>\n {/if}\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !addresses.trim()} onclick={inviteMany}>\n {busy ? t(\"actors.form.adding\") : t(\"actors.invites.send\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (inviting = false)}>{t(\"actors.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if invited}\n <Section title={t(\"actors.invites.done\", { count: invitedCount })}>\n <ul class=\"flex flex-col gap-1 text-sm\">\n {#each invited as one (one.email)}\n <li class=\"flex flex-wrap items-baseline gap-x-2\">\n <span class=\"font-mono\">{one.email}</span>\n <span class=\"opacity-80\">{t(`actors.invites.outcomes.${one.outcome}`)}</span>\n {#if one.url}<code class=\"tray px-1 text-xs break-all\">{one.url}</code>{/if}\n </li>\n {/each}\n </ul>\n </Section>\n {/if}\n\n {#if adding}\n <Section title={t(\"actors.add\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"actors.form.nickname\")}\n bind:value={nickname}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"ada\"\n />\n <Field label={t(\"actors.form.email\")} type=\"email\" bind:value={email} placeholder=\"ada@example.com\" />\n </div>\n\n <Field\n label={t(\"actors.form.password\")}\n type=\"password\"\n bind:value={password}\n autocomplete=\"new-password\"\n placeholder={t(\"actors.form.password_placeholder\")}\n />\n\n {#if password}\n <p class=\"hint\">{t(\"actors.form.minimum\", { count: minimum })}</p>\n {/if}\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"actors.form.scopes\")}</span>\n <ScopesEditor\n value={scopes}\n available={supported}\n onchange={(chosen) => (scopes = chosen)}\n />\n </div>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !(nickname.trim() || email.trim())}\n onclick={send}\n >\n {busy\n ? t(\"actors.form.adding\")\n : password\n ? t(\"actors.form.create\")\n : t(\"actors.form.invite\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"actors.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if created}\n <Section title={created.actor.activated ? t(\"actors.created.account\") : t(\"actors.created.invitation\")}>\n <p class=\"text-sm opacity-85\">\n {#if created.actor.activated}\n {t(\"actors.created.can_sign_in\", { identifier: created.actor.identifier })}{created.url\n ? ` ${t(\"actors.created.confirm_link\")}`\n : \"\"}\n {:else if created.delivered}\n {t(\"actors.created.emailed\")}\n {:else}\n {t(\"actors.created.pass_along\")}\n {/if}\n </p>\n\n {#if created.url}\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.url}</p>\n {/if}\n </Section>\n {/if}\n\n {#if loading && actors.length === 0}\n <Spinner />\n {:else}\n <Table\n columns={COLUMNS}\n count={actors.length}\n empty={search.trim()\n ? t(\"actors.empty.search\", { search: search.trim() })\n : t(`actors.empty.${lens}`)}\n >\n {#snippet rows()}\n {#each actors as actor (actor.uuid)}\n <Row to={`/actors/${actor.uuid}`}>\n <td>\n <div class=\"flex items-center gap-3\">\n <img\n src={`${actor.avatars.photo ?? actor.avatars.identicon}?size=32`}\n width=\"32\"\n height=\"32\"\n alt=\"\"\n class=\"size-8 shrink-0 rounded object-cover\"\n class:drawn={!actor.avatars.photo}\n />\n <div class=\"min-w-0\">\n <Link to={`/actors/${actor.uuid}`} class=\"link link-hover font-medium\">\n {actor.identifier}\n </Link>\n <div class=\"flex flex-wrap items-center gap-1.5 text-xs opacity-75\">\n <span class=\"min-w-0 break-all\">\n {actor.name ? `${actor.name} · ` : \"\"}{actor.email ?? t(\"actors.no_email\")}\n </span>\n {#if actor.email && !actor.emailVerified}\n <span class=\"badge badge-warning badge-xs shrink-0\">{t(\"actors.unconfirmed\")}</span>\n {/if}\n </div>\n\n <div class=\"mt-1 flex flex-wrap items-center gap-1 text-xs opacity-85 md:hidden\">\n {#if !actor.activated}\n <span class=\"badge badge-info badge-xs\">{t(\"actors.invited\")}</span>\n {:else}\n <span>{t(\"actors.last_seen\", { when: day(actor.lastLoginAt, t(\"actors.never\")) })}</span>\n {/if}\n </div>\n\n {#if actor.otpEnabled || blocked(actor)}\n <div class=\"mt-1 flex flex-wrap gap-1 md:hidden\">\n {#if actor.otpEnabled}\n <span class=\"badge badge-success badge-xs\">{t(\"actors.authenticator\")}</span>\n {/if}\n {#if blocked(actor)}\n <span class=\"badge badge-error badge-xs\">{t(\"actors.blocked\")}</span>\n {/if}\n </div>\n {/if}\n </div>\n </div>\n </td>\n\n <td class=\"hidden text-xs md:table-cell\">\n <div class=\"max-w-64 truncate font-mono\" title={joined(actor.scopes)}>\n {#each actor.scopes as scope (scope)}<span\n class=\"scope\"\n class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span\n >{\" \"}{/each}\n </div>\n </td>\n\n <td class=\"hidden md:table-cell\">\n {#if actor.otpEnabled}\n <span class=\"badge badge-success badge-sm\">{t(\"actors.authenticator\")}</span>\n <div class=\"mt-1 text-xs whitespace-nowrap opacity-80\">\n {t(\"actors.backup_codes\", { count: actor.backupCodesRemaining })}\n </div>\n {:else}\n <span class=\"badge badge-ghost badge-sm\">{t(\"actors.password\")}</span>\n {/if}\n </td>\n\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">\n {presence(actor)}\n {#if blocked(actor)}\n <span class=\"badge badge-error badge-xs ml-1\">{t(\"actors.blocked\")}</span>\n {/if}\n </td>\n\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">\n {#if !actor.activated}\n <span class=\"badge badge-info badge-sm\">{t(\"actors.invited\")}</span>\n {:else}\n {day(actor.lastLoginAt, t(\"actors.never\"))}\n {/if}\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n <Pager {pages} shown={actors.length} busy={loading} onpage={turn} />\n {/if}\n\n <Devices {api} {feedback} />\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false } = $props();\n\n const REVOKE = `\n mutation Revoke($id: ID!) {\n revokeConnection(id: $id) { connection { id revokedAt } }\n }\n `;\n\n const STOP = `\n mutation Stop($id: ID!) {\n revokeDelegation(id: $id) { delegation { id revokedAt } }\n }\n `;\n\n async function stop(connection, delegation) {\n if (!confirm(t(\"connections.stop_confirm\", { client: delegation.client.name, provider: connection.provider.name })))\n return;\n\n const done = await feedback.attempt(\n () => api.query(STOP, { id: delegation.id }),\n t(\"connections.stopped\", { client: delegation.client.name }),\n );\n\n if (done) await onchange();\n }\n\n async function revoke(connection) {\n const held = showActor ? connection.actor.identifier : connection.provider.name;\n\n if (\n !confirm(t(\"connections.disconnect_confirm\", { held }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(REVOKE, { id: connection.id }),\n t(\"connections.disconnected\"),\n );\n\n if (done) await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"connections.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each rows as connection (connection.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n {#if showActor}\n <Link to={`/actors/${connection.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {connection.actor.identifier}\n </Link>\n {:else}\n <span class=\"text-sm font-medium\">{connection.provider.name}</span>\n {/if}\n\n {#if connection.signedInAt}\n <span class=\"badge badge-success badge-xs\">{t(\"connections.badges.signs_in\")}</span>\n {/if}\n {#if connection.email && !connection.emailVerified}\n <span class=\"badge badge-warning badge-xs\">{t(\"connections.badges.unconfirmed\")}</span>\n {/if}\n {#if connection.delegable}\n <span class=\"badge badge-info badge-xs\">{t(\"connections.badges.delegable\")}</span>\n {/if}\n </span>\n\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(connection)}>\n {t(\"connections.disconnect\")}\n </button>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">\n {connection.label ?? connection.email ?? connection.subject}\n </span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(connection.connectedAt)}>\n {t(\"connections.connected\", { when: since(connection.connectedAt) })}\n </span>\n {#if connection.signedInAt}\n <span title={moment(connection.signedInAt)}>\n {t(\"connections.signed_in\", { when: since(connection.signedInAt) })}\n </span>\n {/if}\n </div>\n\n {#each connection.delegations ?? [] as delegation (delegation.id)}\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 border-l-2 border-base-300 pl-2 text-xs\">\n <span>\n <Link to={`/clients/${delegation.client.clientId}`} class=\"link link-hover\">{delegation.client.name}</Link>\n <span class=\"opacity-80\">\n {delegation.releasedAt\n ? t(\"connections.can_use_last\", { when: since(delegation.releasedAt) })\n : t(\"connections.can_use\")}\n </span>\n </span>\n <button type=\"button\" class=\"link text-error\" onclick={() => stop(connection, delegation)}>{t(\"connections.stop\")}</button>\n </div>\n {/each}\n </li>\n {/each}\n </ul>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { joined, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false } = $props();\n\n const REVOKE = `\n mutation Revoke($id: ID!) {\n revokeConsent(id: $id) { consent { id revokedAt } }\n }\n `;\n\n async function revoke(consent) {\n const held = showActor ? consent.actor.identifier : consent.client.name;\n\n if (\n !confirm(t(\"consents.revoke_confirm\", { held }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(REVOKE, { id: consent.id }),\n t(\"consents.revoked\"),\n );\n\n if (done) await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"consents.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each rows as consent (consent.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n {#if showActor}\n <Link to={`/actors/${consent.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {consent.actor.identifier}\n </Link>\n {:else}\n <Link\n to={`/clients/${consent.client.clientId}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {consent.client.name}\n </Link>\n {/if}\n\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(consent)}>\n {t(\"consents.revoke\")}\n </button>\n </div>\n\n <div class=\"flex flex-wrap gap-1\">\n {#each consent.scopes as scope (scope)}\n <span class=\"scope\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#if consent.audience.length}\n <span class=\"truncate font-mono\" title={joined(consent.audience)}>\n {joined(consent.audience)}\n </span>\n {/if}\n <span title={moment(consent.updatedAt)}>{t(\"consents.last_asked\", { when: since(consent.updatedAt) })}</span>\n {#if consent.expiresAt}\n <span title={moment(consent.expiresAt)}>{t(\"consents.asks_again\", { when: moment(consent.expiresAt) })}</span>\n {/if}\n </div>\n\n {#if consent.authorizationDetails?.length}\n <ul class=\"flex flex-col gap-0.5 text-xs\">\n {#each consent.authorizationDetails as held, index (index)}\n <li class=\"flex flex-wrap gap-x-2\">\n <span class=\"scope\">{held.entry.type}</span>\n <span class=\"truncate font-mono opacity-80\">{JSON.stringify(held.entry)}</span>\n <span class=\"opacity-80\">{t(\"consents.until\", { when: moment(held.expires_at) })}</span>\n </li>\n {/each}\n </ul>\n {/if}\n </li>\n {/each}\n </ul>\n{/if}\n","import { t } from \"./copy.js\";\n\nconst GRAVE = new Set([\n \"logout.undelivered\",\n \"login.refused\",\n \"login.throttled\",\n \"refresh.reused\",\n \"device.blocked\",\n \"actor.deleted\",\n \"authenticator.disabled\",\n \"connection.refused\",\n \"delegation.refused\",\n]);\n\nconst NOTABLE = new Set([\n \"password.changed\",\n \"password.reset_completed\",\n \"actor.scopes_changed\",\n \"actor.suspended\",\n \"provisioning_token.issued\",\n \"provisioning_token.revoked\",\n \"ldap_credential.issued\",\n \"ldap_credential.revoked\",\n \"client.secret_rotated\",\n \"client.logo_refused\",\n \"signing_key.rotated\",\n \"signing_key.activated\",\n \"backup_code.spent\",\n \"connection.unlinked\",\n \"consent.revoked\",\n \"delegation.granted\",\n \"delegation.revoked\",\n]);\n\nexport function tone(action) {\n if (GRAVE.has(action)) return \"bad\";\n if (NOTABLE.has(action)) return \"watch\";\n\n return \"plain\";\n}\n\nexport function detailed(details) {\n return Object.entries(details ?? {})\n .filter(\n ([, value]) =>\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && !value.length),\n )\n .map(([key, value]) => [key.replace(/_/g, \" \"), phrase(value)]);\n}\n\nfunction phrase(value) {\n if (Array.isArray(value)) return value.join(\" \");\n if (typeof value === \"boolean\")\n return t(value ? \"event_labels.yes\" : \"event_labels.no\");\n\n return String(value);\n}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { detailed, tone } from \"./lib/events.js\";\n import { moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { events, showActor = true, empty = t(\"events.empty\"), limit = 5 } = $props();\n\n let all = $state(false);\n\n const shown = $derived(all ? events : events.slice(0, limit));\n</script>\n\n{#if events.length === 0}\n <p class=\"text-sm opacity-80\">{empty}</p>\n{:else}\n <ol class=\"slats\">\n {#each shown as event (event.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <span\n class=\"text-sm font-medium\"\n class:text-error={tone(event.action) === \"bad\"}\n class:text-warning={tone(event.action) === \"watch\"}\n title={event.action}\n >{event.label}</span>\n\n {#if showActor && event.actor}\n <Link to={`/actors/${event.actor.uuid}`} class=\"link link-hover text-xs\">\n {event.actor.identifier}\n </Link>\n {/if}\n\n {#if event.by && event.by.uuid !== event.actor?.uuid}\n <span class=\"hint\">\n {t(\"events.by\")}\n <Link to={`/actors/${event.by.uuid}`} class=\"link link-hover\">\n {event.by.identifier}\n </Link>\n </span>\n {/if}\n\n {#if event.client}\n <Link to={`/clients/${event.client.clientId}`} class=\"badge badge-ghost badge-xs\">\n {event.client.name}\n </Link>\n {/if}\n </span>\n\n <span class=\"text-xs whitespace-nowrap opacity-80\" title={moment(event.createdAt)}>\n {since(event.createdAt)}\n </span>\n </div>\n\n {#if detailed(event.details).length}\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#each detailed(event.details) as [key, value] (key)}\n <span><span class=\"opacity-85\">{key}</span> {value}</span>\n {/each}\n </div>\n {/if}\n\n {#if event.ipAddress || event.device}\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-75\">\n {#if event.ipAddress}<span class=\"font-mono\">{event.ipAddress}</span>{/if}\n {#if event.device}\n <span class=\"truncate\">{event.device.label}</span>\n {/if}\n </div>\n {/if}\n </li>\n {/each}\n </ol>\n\n {#if !all && events.length > limit}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (all = true)}>\n {t(\"events.more\", { count: events.length - limit })}\n </button>\n {/if}\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { day, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, actor, onchange, columns = false } = $props();\n\n async function act(document, variables, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (done) await onchange();\n }\n\n const revoke = (session) =>\n act(\n `mutation Revoke($id: ID!) { revokeSession(id: $id) { session { revokedAt } } }`,\n { id: session.id },\n t(\"presence.session_revoked\"),\n t(\"presence.revoke_question\"),\n );\n\n const onDevice = (mutation, device, notice, question = null) =>\n act(\n `mutation Act($id: ID!) { ${mutation}(id: $id) { device { id } } }`,\n { id: device.id },\n notice,\n question,\n );\n\n const signOutDevice = (device) =>\n onDevice(\"signOutDevice\", device, t(\"presence.device_signed_out\", { label: device.label }));\n\n const block = (device) =>\n onDevice(\n \"blockDevice\",\n device,\n t(\"presence.device_blocked\", { label: device.label }),\n t(\"presence.block_question\", { label: device.label }),\n );\n\n const unblock = (device) => onDevice(\"unblockDevice\", device, t(\"presence.device_unblocked\", { label: device.label }));\n\n const signOutEverywhere = () =>\n act(\n `mutation SignOut($uuid: ID!) { signOutActor(uuid: $uuid) { actor { uuid } } }`,\n { uuid: actor.uuid },\n t(\"presence.signed_out_everywhere\"),\n t(\"presence.sign_out_everywhere_question\", { identifier: actor.identifier }),\n );\n const LIMIT = 4;\n\n let allSessions = $state(false);\n let allDevices = $state(false);\n\n const sessions = $derived(allSessions ? actor.sessions : actor.sessions.slice(0, LIMIT));\n const devices = $derived(allDevices ? actor.devices : actor.devices.slice(0, LIMIT));\n</script>\n\n<div class=\"flex flex-col gap-5\">\n <div class=\"grid items-start gap-5 {columns ? 'lg:grid-cols-2' : ''}\">\n <section class=\"flex min-w-0 flex-col gap-2.5\">\n <h3 class=\"legend\">{t(\"presence.sessions\")}</h3>\n\n {#if actor.sessions.length === 0}\n <p class=\"text-sm opacity-75\">{t(\"presence.no_sessions\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each sessions as session (session.id)}\n <li class=\"slat\">\n <div class=\"flex items-baseline justify-between gap-3\">\n <span class=\"font-mono text-sm\">{session.ipAddress ?? \"—\"}</span>\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(session)}>\n {t(\"presence.revoke\")}\n </button>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">{session.userAgent ?? \"\"}</span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(session.authenticatedAt)}>\n {t(\"presence.signed_in\", { when: since(session.authenticatedAt) })}\n </span>\n <span>{t(\"presence.expires\", { when: day(session.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !allSessions && actor.sessions.length > LIMIT}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (allSessions = true)}>\n {t(\"presence.show_more\", { count: actor.sessions.length - LIMIT })}\n </button>\n {/if}\n {/if}\n </section>\n\n <section class=\"flex min-w-0 flex-col gap-2.5\">\n <h3 class=\"legend\">{t(\"presence.devices\")}</h3>\n\n {#if actor.devices.length === 0}\n <p class=\"text-sm opacity-75\">{t(\"presence.no_devices\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each devices as device (device.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <Link to={`/actors/devices/${device.id}`} class=\"link link-hover text-sm font-medium\">\n {device.label}\n </Link>\n {#if device.blockedAt}\n <span class=\"badge badge-error badge-xs\">{t(\"presence.blocked\")}</span>\n {:else if !device.known}\n <span class=\"badge badge-warning badge-xs\">{t(\"presence.unrecognised\")}</span>\n {/if}\n </span>\n\n <span class=\"flex items-baseline gap-3\">\n <button\n type=\"button\"\n class=\"link text-xs\"\n onclick={() => signOutDevice(device)}\n >\n {t(\"presence.sign_out\")}\n </button>\n\n {#if device.blockedAt}\n <button type=\"button\" class=\"link text-xs\" onclick={() => unblock(device)}>\n {t(\"presence.unblock\")}\n </button>\n {:else}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => block(device)}\n >\n {t(\"presence.block\")}\n </button>\n {/if}\n </span>\n </div>\n\n <span class=\"truncate text-xs opacity-75\">{device.userAgent ?? device.category}</span>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span class=\"font-mono\">{device.ipAddress ?? \"—\"}</span>\n <span title={moment(device.lastSeenAt)}>{t(\"presence.last_seen\", { when: since(device.lastSeenAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !allDevices && actor.devices.length > LIMIT}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (allDevices = true)}>\n {t(\"presence.show_more\", { count: actor.devices.length - LIMIT })}\n </button>\n {/if}\n {/if}\n </section>\n </div>\n\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline self-start\" onclick={signOutEverywhere}>\n {t(\"presence.sign_out_everywhere\")}\n </button>\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { joined, moment, since } from \"./lib/format.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { api, feedback, rows, onchange, showActor = false, limit = 5 } = $props();\n\n let all = $state(false);\n\n const shown = $derived(all ? rows : rows.slice(0, limit));\n\n const REVOKE = `\n mutation Revoke($id: ID!, $family: Boolean) {\n revokeToken(id: $id, family: $family) { revoked }\n }\n `;\n\n const KIND = {\n access: \"badge-ghost\",\n refresh: \"badge-info\",\n code: \"badge-warning\",\n };\n\n function kind(name) {\n const key = `tokens.kinds.${name}`;\n const said = t(key);\n\n return said === key ? name : said;\n }\n\n async function revoke(token, family) {\n const held = showActor ? token.actor?.identifier : token.client?.name;\n const question = family\n ? t(\"tokens.revoke_chain_confirm\", { held })\n : t(\"tokens.revoke_confirm\", { kind: kind(token.kind) });\n\n if (!confirm(question)) return;\n\n const data = await feedback.attempt(() =>\n api.query(REVOKE, { id: token.id, family }),\n );\n\n if (!data) return;\n\n const count = data.revokeToken.revoked;\n\n feedback.say(t(\"tokens.revoked\", { count }));\n\n await onchange();\n }\n</script>\n\n{#if rows.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"tokens.empty\")}</p>\n{:else}\n <ul class=\"slats\">\n {#each shown as token (token.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <span class=\"badge badge-sm {KIND[token.kind] ?? 'badge-ghost'}\">{kind(token.kind)}</span>\n\n {#if showActor && token.actor}\n <Link to={`/actors/${token.actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {token.actor.identifier}\n </Link>\n {:else if token.client}\n <Link\n to={`/clients/${token.client.clientId}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {token.client.name}\n </Link>\n {/if}\n\n {#if token.parentId}\n <span class=\"text-xs opacity-75\">{t(\"tokens.rotated\")}</span>\n {/if}\n </span>\n\n <span class=\"flex items-baseline gap-3\">\n <button type=\"button\" class=\"link text-xs text-error\" onclick={() => revoke(token, false)}>\n {t(\"tokens.revoke\")}\n </button>\n {#if token.kind === \"refresh\"}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => revoke(token, true)}\n >\n {t(\"tokens.revoke_chain\")}\n </button>\n {/if}\n </span>\n </div>\n\n <div class=\"flex flex-wrap gap-1\">\n {#each token.scopes as scope (scope)}\n <span class=\"scope\" class:scope-privileged={scope.startsWith(\"masks:\")}>{scope}</span>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n {#if token.audience.length}\n <span class=\"truncate font-mono\" title={joined(token.audience)}>\n {joined(token.audience)}\n </span>\n {/if}\n {#if token.device}\n <span class=\"truncate\">{token.device.label}</span>\n {/if}\n <span title={moment(token.createdAt)}>{t(\"tokens.issued\", { when: since(token.createdAt) })}</span>\n <span title={moment(token.expiresAt)}>{t(\"tokens.expires\", { when: since(token.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n\n {#if !all && rows.length > limit}\n <button type=\"button\" class=\"btn btn-ghost btn-sm self-start\" onclick={() => (all = true)}>\n {t(\"tokens.more\", { count: rows.length - limit })}\n </button>\n {/if}\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Connections from \"./Connections.svelte\";\n import Consents from \"./Consents.svelte\";\n import Events from \"./Events.svelte\";\n import Presence from \"./Presence.svelte\";\n import Tokens from \"./Tokens.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, uuid } = $props();\n\n const router = useRouter();\n\n const FIELDS = [\n [\"nickname\", t(\"actor.fields.nickname\")],\n [\"name\", t(\"actor.fields.name\")],\n [\"email\", t(\"actor.fields.email\")],\n ];\n\n const MORE = [\n [\"givenName\", t(\"actor.fields.given_name\")],\n [\"familyName\", t(\"actor.fields.family_name\")],\n [\"middleName\", t(\"actor.fields.middle_name\")],\n [\"profileUrl\", t(\"actor.fields.profile_url\")],\n [\"pictureUrl\", t(\"actor.fields.picture_url\")],\n [\"websiteUrl\", t(\"actor.fields.website_url\")],\n [\"gender\", t(\"actor.fields.gender\")],\n [\"birthdate\", t(\"actor.fields.birthdate\")],\n [\"zoneinfo\", t(\"actor.fields.zoneinfo\")],\n [\"locale\", t(\"actor.fields.locale\")],\n ];\n\n const PROFILE = [...FIELDS, ...MORE];\n\n const QUERY = `\n query Actor($uuid: ID!) {\n actor(uuid: $uuid) {\n uuid identifier nickname email emailVerified phone phoneVerified signedUpAt pendingApproval\n recoveryRequestedAt\n groups { key }\n groupLabels\n suspendedAt externalId\n memberships { externalId organization { key name } }\n scopes otpEnabled emailCodesEnabled textCodesEnabled backupCodesRemaining\n backupCodesGeneratedAt lastLoginAt createdAt activated invitedAt\n passkeys { id label aaguid certification compromise userVerified lastUsedAt }\n name givenName familyName middleName profileUrl pictureUrl websiteUrl\n gender birthdate zoneinfo locale\n photoUploaded avatars { photo identicon initials }\n sessions { id ipAddress userAgent authenticatedAt expiresAt }\n devices { id label category known ipAddress userAgent lastSeenAt blockedAt }\n connections {\n id subject label email emailVerified connectedAt signedInAt delegable\n provider { key name }\n delegations { id releasedAt client { clientId name } }\n }\n consents {\n id scopes audience updatedAt expiresAt authorizationDetails\n client { clientId name }\n }\n tokens {\n id kind scopes audience parentId createdAt expiresAt\n client { clientId name }\n device { id label }\n }\n events(limit: 25) {\n id action label createdAt ipAddress details\n by { uuid identifier }\n client { clientId name }\n device { id label }\n }\n }\n groups { key name }\n viewer { uuid }\n scopesSupported\n }\n `;\n\n const feedback = createFeedback();\n\n let actor = $state(null);\n let viewer = $state(null);\n let groups = $state([]);\n let supported = $state([]);\n let draft = $state({});\n let loading = $state(true);\n let codes = $state(null);\n let link = $state(null);\n let uploading = $state(false);\n\n const yourself = $derived(Boolean(actor && viewer && actor.uuid === viewer.uuid));\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { uuid });\n\n actor = data.actor;\n viewer = data.viewer;\n groups = data.groups;\n supported = data.scopesSupported;\n draft = Object.fromEntries(PROFILE.map(([key]) => [key, data.actor?.[key] ?? \"\"]));\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(document, variables, notice) {\n const data = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (data) await load();\n\n return data;\n }\n\n const belongs = (group) => actor.groups.some((held) => held.key === group.key);\n\n const toggleGroup = (group) =>\n act(\n belongs(group)\n ? `mutation Leave($key: String!, $uuid: ID!) { removeGroupMember(key: $key, uuid: $uuid) { group { key } } }`\n : `mutation Join($key: String!, $uuid: ID!) { addGroupMember(key: $key, uuid: $uuid) { group { key } } }`,\n { key: group.key, uuid },\n belongs(group)\n ? t(\"actor.left_group\", { group: group.name })\n : t(\"actor.joined_group\", { group: group.name }),\n );\n\n const saveProfile = () =>\n act(\n `mutation Save($uuid: ID!, ${PROFILE.map(([key]) => `$${key}: String`).join(\", \")}) {\n updateActor(uuid: $uuid, ${PROFILE.map(([key]) => `${key}: $${key}`).join(\", \")}) { actor { uuid } }\n }`,\n {\n uuid,\n ...Object.fromEntries(\n Object.entries(draft).map(([key, value]) => [key, value === \"\" ? null : value]),\n ),\n },\n t(\"actor.profile_saved\"),\n );\n\n const saveScopes = (scopes) =>\n act(\n `mutation Scopes($uuid: ID!, $scopes: [String!]!) {\n setActorScopes(uuid: $uuid, scopes: $scopes) { actor { scopes } }\n }`,\n { uuid, scopes },\n t(\"actor.scopes_updated\"),\n );\n\n async function generate() {\n codes = null;\n\n const data = await act(\n `mutation Codes($uuid: ID!) { generateBackupCodes(uuid: $uuid) { codes } }`,\n { uuid },\n t(\"actor.codes_generated\"),\n );\n\n if (data) codes = data.generateBackupCodes.codes;\n }\n\n async function recover(document, confirmation) {\n if (!confirm(confirmation)) return;\n\n link = null;\n\n const data = await act(document, { uuid }, null);\n\n if (!data) return;\n\n const result = Object.values(data)[0];\n\n if (result.delivered) {\n feedback.say(t(\"actor.emailed\"));\n } else {\n feedback.say(t(\"actor.no_mailer\"));\n link = result.url;\n }\n }\n\n const reset = () =>\n recover(\n `mutation Reset($uuid: ID!) { resetPassword(uuid: $uuid) { delivered url } }`,\n t(\"actor.reset_question\"),\n );\n\n const resend = () =>\n recover(\n `mutation Resend($uuid: ID!) { resendInvitation(uuid: $uuid) { delivered url } }`,\n t(\"actor.resend_question\"),\n );\n\n const confirmEmail = () =>\n recover(\n `mutation Verify($uuid: ID!) { verifyEmail(uuid: $uuid) { delivered url } }`,\n t(\"actor.confirm_question\"),\n );\n\n function revokePasskey(passkey) {\n if (!confirm(t(\"actor.remove_passkey_question\", { label: passkey.label }))) return;\n\n act(\n `mutation Revoke($uuid: ID!, $id: ID!) { revokePasskey(uuid: $uuid, id: $id) { actor { uuid } } }`,\n { uuid, id: passkey.id },\n t(\"actor.passkey_removed\"),\n );\n }\n\n async function choose(event) {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n if (!file) return;\n\n uploading = true;\n\n await act(\n `mutation Upload($uuid: ID!, $photo: Upload!) {\n uploadAvatar(uuid: $uuid, photo: $photo) { actor { uuid } }\n }`,\n { uuid, photo: file },\n t(\"actor.photo_updated\"),\n );\n\n uploading = false;\n input.value = \"\";\n }\n\n function removePhoto() {\n if (!confirm(t(\"actor.remove_photo_question\"))) return;\n\n act(\n `mutation Remove($uuid: ID!) { removeAvatar(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.photo_removed\"),\n );\n }\n\n function disable() {\n if (!confirm(t(\"actor.disable_question\"))) return;\n\n act(\n `mutation Disable($uuid: ID!) { disableAuthenticator(uuid: $uuid) { actor { otpEnabled } } }`,\n { uuid },\n t(\"actor.authenticator_removed\"),\n );\n }\n\n const CODE_FACTORS = [\n [\"email\", \"emailCodesEnabled\", t(\"actor.factors.email.name\"), t(\"actor.factors.email.lower\")],\n [\"sms\", \"textCodesEnabled\", t(\"actor.factors.sms.name\"), t(\"actor.factors.sms.lower\")],\n ];\n\n function turnOff(factor, name, lower) {\n if (!confirm(t(\"actor.turn_off_question\", { name: lower }))) return;\n\n act(\n `mutation TurnOff($uuid: ID!, $factor: String!) {\n disableCodeFactor(uuid: $uuid, factor: $factor) { actor { uuid } }\n }`,\n { uuid, factor },\n t(\"actor.turned_off\", { name }),\n );\n }\n\n function suspend() {\n if (!confirm(t(\"actor.suspend_question\", { identifier: actor.identifier }))) return;\n\n act(\n `mutation Suspend($uuid: ID!) { suspendActor(uuid: $uuid) { actor { suspendedAt } } }`,\n { uuid },\n t(\"actor.suspended\"),\n );\n }\n\n function restore() {\n act(\n `mutation Restore($uuid: ID!) { restoreActor(uuid: $uuid) { actor { suspendedAt } } }`,\n { uuid },\n t(\"actor.restored\"),\n );\n }\n\n async function remove() {\n if (!confirm(t(\"actor.delete_question\", { identifier: actor.identifier }))) return;\n\n const data = await feedback.attempt(() =>\n api.query(`mutation Delete($uuid: ID!) { deleteActor(uuid: $uuid) { identifier } }`, { uuid }),\n );\n\n if (data) router.go(\"/actors\");\n }\n</script>\n\n{#if loading && !actor}\n <Spinner />\n{:else if !actor}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"actor.missing\")}\n </div>\n{:else}\n <Page\n title={actor.identifier}\n id={actor.uuid}\n back={{ to: \"/actors\", label: t(\"actor.back\") }}\n lede={actor.activated\n ? t(\"actor.signed_in_lede\", { when: since(actor.lastLoginAt, t(\"actor.never\")) })\n : t(\"actor.invited_lede\")}\n >\n <Notices feedback={feedback.state} />\n\n {#if link}\n <div class=\"alert alert-info alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"actor.link_once\")}</span>\n <code class=\"font-mono text-xs break-all\">{link}</code>\n </div>\n {/if}\n\n {#if codes}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"actor.write_down\")}</span>\n <div class=\"grid grid-cols-2 gap-2 font-mono text-sm md:grid-cols-5\">\n {#each codes as code (code)}<span>{code}</span>{/each}\n </div>\n </div>\n {/if}\n\n <div class=\"grid items-start gap-4 md:grid-cols-2\">\n <div class=\"flex flex-col gap-4\">\n <Section title={t(\"actor.profile\")}>\n <div class=\"grid gap-3 sm:grid-cols-3\">\n {#each FIELDS as [key, label] (key)}\n <Field {label} bind:value={draft[key]} />\n {/each}\n </div>\n\n <details class=\"more\" open={MORE.some(([key]) => draft[key])}>\n <summary>{t(\"actor.more_fields\")}</summary>\n <div class=\"grid gap-3 pt-3 sm:grid-cols-2\">\n {#each MORE as [key, label] (key)}\n <Field {label} bind:value={draft[key]} />\n {/each}\n </div>\n </details>\n\n <button type=\"button\" class=\"btn btn-primary btn-sm self-start\" onclick={saveProfile}>\n {t(\"actor.save_profile\")}\n </button>\n </Section>\n\n <Section\n title={t(\"actor.signed_in\")}\n lede={yourself ? t(\"actor.signed_in_yourself\") : null}\n >\n <Presence {api} {feedback} {actor} onchange={load} />\n </Section>\n\n <Section title={t(\"actor.consents\")}>\n <Consents {api} {feedback} rows={actor.consents} onchange={load} />\n </Section>\n\n <Section title={t(\"actor.connections\")}>\n <Connections {api} {feedback} rows={actor.connections} onchange={load} />\n </Section>\n\n <Section\n title={t(\"actor.tokens\")}\n >\n <Tokens {api} {feedback} rows={actor.tokens} onchange={load} />\n </Section>\n </div>\n\n <div class=\"flex flex-col gap-4\">\n <Section title={t(\"actor.photo\")}>\n <div class=\"flex flex-wrap gap-5\">\n {#each [\"photo\", \"identicon\", \"initials\"] as style (style)}\n <div class=\"flex flex-col items-start gap-2\">\n {#if actor.avatars[style]}\n <img\n src={`${actor.avatars[style]}?size=64`}\n width=\"64\"\n height=\"64\"\n alt=\"\"\n class=\"size-16 rounded object-cover\"\n class:drawn={style !== \"photo\"}\n />\n {:else}\n <div class=\"size-16 rounded border border-dashed border-base-300\"></div>\n {/if}\n <span class=\"hint\">{t(`actor.styles.${style}`)}</span>\n </div>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n <label class=\"btn btn-sm\" class:btn-disabled={uploading}>\n {t(\"actor.upload_photo\")}\n <input\n type=\"file\"\n class=\"sr-only\"\n accept=\"image/png,image/jpeg,image/gif,image/webp\"\n disabled={uploading}\n onchange={choose}\n />\n </label>\n\n {#if actor.photoUploaded}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={removePhoto}>\n {t(\"actor.remove_photo\")}\n </button>\n {/if}\n </div>\n\n {#if uploading}\n <span class=\"hint\">{t(\"actor.uploading\")}</span>\n {/if}\n </Section>\n\n <Section title={t(\"actor.scopes\")}>\n <ScopesEditor value={actor.scopes} available={supported} onchange={saveScopes} />\n </Section>\n\n <Section title={t(\"actor.access\")}>\n {#if actor.suspendedAt}\n <div class=\"alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n <span>{t(\"actor.suspended_on\", { day: day(actor.suspendedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"actor.restore\")}</button>\n </div>\n {/if}\n\n {#if actor.externalId}\n <p class=\"hint\">\n {t(\"actor.provisioned_as\")} <span class=\"font-mono\">{actor.externalId}</span>.\n {t(\"actor.provider_may_change\")}\n </p>\n {/if}\n {#each actor.memberships.filter((membership) => membership.externalId) as membership (membership.organization.key)}\n <p class=\"hint\">\n {t(\"actor.directory_provisioned\", { organization: membership.organization.name })}\n <span class=\"font-mono\">{membership.externalId}</span>, {t(\"actor.directory_may_change\")}\n </p>\n {/each}\n {#if actor.activated}\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={reset}>\n {t(\"actor.reset_password\")}\n </button>\n {:else}\n <p class=\"text-sm opacity-85\">\n {actor.invitedAt\n ? t(\"actor.invited_on\", { day: day(actor.invitedAt) })\n : t(\"actor.invited\")}\n </p>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={resend}>\n {t(\"actor.resend\")}\n </button>\n {/if}\n\n {#if actor.email && !actor.emailVerified}\n <p class=\"text-sm opacity-85\">{t(\"actor.unconfirmed\", { email: actor.email })}</p>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={confirmEmail}>\n {t(\"actor.send_confirmation\")}\n </button>\n {/if}\n </Section>\n\n <Section title={t(\"actor.passkeys\")}>\n {#if actor.passkeys.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"actor.no_passkeys\")}</p>\n {:else}\n <ul class=\"flex flex-col gap-2\">\n {#each actor.passkeys as passkey (passkey.id)}\n <li class=\"flex flex-col gap-1 tray px-3 py-2\">\n <div class=\"flex items-baseline justify-between gap-3\">\n <span class=\"text-sm font-medium\">{passkey.label}</span>\n <span class=\"flex items-baseline gap-2\">\n {#if passkey.userVerified}\n <span class=\"badge badge-success badge-xs\">{t(\"actor.verifying\")}</span>\n {/if}\n {#if passkey.certification}\n <span class=\"badge badge-ghost badge-xs\">{passkey.certification}</span>\n {/if}\n <button\n type=\"button\"\n class=\"link text-xs text-error\"\n onclick={() => revokePasskey(passkey)}\n >\n {t(\"actor.remove\")}\n </button>\n </span>\n </div>\n\n {#if passkey.compromise}\n <span class=\"text-xs text-error\">\n {t(\"actor.compromise\", {\n compromise: passkey.compromise.toLowerCase().replaceAll(\"_\", \" \"),\n })}\n </span>\n {/if}\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span class=\"font-mono\">{passkey.aaguid ?? t(\"actor.no_aaguid\")}</span>\n <span>{t(\"actor.last_used\", { when: since(passkey.lastUsedAt, t(\"actor.never\")) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n {#if actor.pendingApproval}\n <Section\n title={t(\"actor.approval.title\")}\n lede={t(\"actor.approval.lede\")}\n >\n <div class=\"flex flex-wrap gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n onclick={() =>\n act(\n `mutation Approve($uuid: ID!) { approveActor(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.approval.approved\"),\n )}\n >\n {t(\"actor.approval.approve\")}\n </button>\n </div>\n </Section>\n {/if}\n\n {#if actor.recoveryRequestedAt}\n <Section\n title={t(\"actor.recovery.title\")}\n lede={t(\"actor.recovery.lede\", { when: since(actor.recoveryRequestedAt) })}\n >\n <p class=\"text-sm opacity-85\">\n {t(\"actor.recovery.explain\")}\n </p>\n\n <div class=\"flex flex-wrap gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n onclick={() =>\n confirm(t(\"actor.recovery.question\", { identifier: actor.identifier })) &&\n act(\n `mutation Reset($uuid: ID!) { resetSecondFactors(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.recovery.done\"),\n )}\n >\n {t(\"actor.recovery.reset\")}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n `mutation Dismiss($uuid: ID!) { dismissRecovery(uuid: $uuid) { actor { uuid } } }`,\n { uuid },\n t(\"actor.recovery.dismissed\"),\n )}\n >\n {t(\"actor.recovery.dismiss\")}\n </button>\n </div>\n </Section>\n {/if}\n\n <Section title={t(\"actor.groups\")}>\n {#if groups.length}\n <div class=\"flex flex-col gap-1\">\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" class=\"checkbox checkbox-sm\" checked={belongs(group)} onchange={() => toggleGroup(group)} />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n </label>\n {/each}\n </div>\n {:else}\n <p class=\"text-sm opacity-85\">{t(\"actor.no_groups\")} <Link to=\"/settings\">{t(\"actor.add_group\")}</Link>.</p>\n {/if}\n\n {#if actor.groupLabels.length}\n <p class=\"hint\">{t(\"actor.group_labels\", { labels: actor.groupLabels.join(\", \") })}</p>\n {/if}\n </Section>\n\n <Section title={t(\"actor.second_factor\")}>\n {#if actor.otpEnabled}\n <p class=\"text-sm\">\n {t(\"actor.authenticator_enabled\", { count: actor.backupCodesRemaining })}\n </p>\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={generate}>\n {t(\"actor.generate\")}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={disable}>\n {t(\"actor.remove_authenticator\")}\n </button>\n </div>\n {:else if !actor.emailCodesEnabled && !actor.textCodesEnabled}\n <p class=\"text-sm opacity-85\">{t(\"actor.password_only\")}</p>\n {/if}\n\n {#each CODE_FACTORS.filter(([, field]) => actor[field]) as [factor, , name, lower] (factor)}\n <div class=\"flex flex-wrap items-center gap-2\">\n <span class=\"text-sm\">{t(\"actor.factor_on\", { name })}</span>\n <button\n type=\"button\"\n class=\"btn btn-sm btn-error btn-outline\"\n onclick={() => turnOff(factor, name, lower)}\n >\n {t(\"actor.turn_off\", { name: lower })}\n </button>\n </div>\n {/each}\n </Section>\n\n <Section title={t(\"actor.activity\")}>\n {#snippet actions()}\n <Link to={`/activity?actor=${actor.uuid}`} class=\"btn btn-ghost btn-sm\">{t(\"actor.all_activity\")}</Link>\n {/snippet}\n\n <Events events={actor.events} showActor={false} empty={t(\"actor.no_activity\")} />\n </Section>\n\n <Section title={t(\"actor.danger\")}>\n {#if yourself}\n <p class=\"text-sm opacity-85\">{t(\"actor.yourself\")}</p>\n {:else}\n {#if !actor.suspendedAt}\n <button type=\"button\" class=\"btn btn-sm btn-warning btn-outline self-start\" onclick={suspend}>\n {t(\"actor.suspend\", { identifier: actor.identifier })}\n </button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-sm btn-error btn-outline self-start\"\n onclick={remove}\n >\n {t(\"actor.delete\", { identifier: actor.identifier })}\n </button>\n {/if}\n </Section>\n </div>\n </div>\n </Page>\n{/if}\n","<script>\n import { NONE } from \"../lib/format.js\";\n\n let { rows } = $props();\n</script>\n\n<dl class=\"grid gap-x-4 gap-y-0.5 text-sm sm:grid-cols-3 sm:gap-y-2\">\n {#each rows as { term, value, mono } (term)}\n <dt class=\"opacity-80\">{term}</dt>\n <dd class=\"pb-2 sm:col-span-2 sm:pb-0 {mono ? 'font-mono text-xs break-all' : ''}\">\n {value || NONE}\n </dd>\n {/each}\n</dl>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, moment, since } from \"./lib/format.js\";\n import Events from \"./Events.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api, id } = $props();\n\n const QUERY = `\n query Device($id: ID!) {\n device(id: $id) {\n id label name category known ipAddress userAgent lastSeenAt blockedAt createdAt\n actors { uuid identifier }\n sessions {\n id ipAddress userAgent authenticatedAt expiresAt\n actor { uuid identifier }\n }\n }\n events(device: $id, limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n }\n }\n `;\n\n const feedback = createFeedback();\n\n let device = $state(null);\n let events = $state([]);\n let loading = $state(true);\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { id });\n\n device = data.device;\n events = data.events;\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(mutation, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Act($id: ID!) { ${mutation}(id: $id) { device { id } } }`, { id }),\n notice,\n );\n\n if (done) await load();\n }\n\n const block = () =>\n act(\n \"blockDevice\",\n t(\"device.blocked\", { label: device.label }),\n t(\"device.block_question\", { label: device.label }),\n );\n\n const unblock = () => act(\"unblockDevice\", t(\"device.unblocked\", { label: device.label }));\n\n const signOut = () =>\n act(\n \"signOutDevice\",\n t(\"device.signed_out\", { label: device.label }),\n t(\"device.sign_out_question\", { label: device.label }),\n );\n\n const facts = $derived(\n device\n ? [\n { term: t(\"device.facts.kind\"), value: device.category },\n { term: t(\"device.facts.ip_address\"), value: device.ipAddress, mono: true },\n { term: t(\"device.facts.user_agent\"), value: device.userAgent, mono: true },\n { term: t(\"device.facts.first_seen\"), value: day(device.createdAt) },\n { term: t(\"device.facts.last_seen\"), value: moment(device.lastSeenAt) },\n ]\n : [],\n );\n</script>\n\n{#if loading && !device}\n <Spinner />\n{:else if !device}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"device.missing\")}\n </div>\n{:else}\n <Page\n title={device.label}\n id={device.id}\n back={{ to: \"/actors#devices\", label: t(\"device.back\") }}\n lede={device.blockedAt\n ? t(\"device.blocked_lede\", { day: day(device.blockedAt) })\n : t(\"device.seen_lede\", { when: since(device.lastSeenAt) })}\n >\n <Notices feedback={feedback.state} />\n\n <div class=\"grid items-start gap-4 md:grid-cols-2\">\n <Section title={t(\"device.what\")}>\n <Facts rows={facts} />\n\n <div class=\"flex flex-wrap gap-2 pt-1\">\n {#if device.sessions.length}\n <button type=\"button\" class=\"btn btn-sm\" onclick={signOut}>{t(\"device.sign_out_everywhere\")}</button>\n {/if}\n\n {#if device.blockedAt}\n <button type=\"button\" class=\"btn btn-sm\" onclick={unblock}>{t(\"device.unblock\")}</button>\n {:else}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={block}>\n {t(\"device.block\")}\n </button>\n {/if}\n </div>\n </Section>\n\n <div class=\"flex flex-col gap-4\">\n <Section title={t(\"device.who\")}>\n {#if device.actors.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"device.nobody\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each device.actors as actor (actor.uuid)}\n <li class=\"slat\">\n <Link to={`/actors/${actor.uuid}`} class=\"link link-hover text-sm font-medium\">\n {actor.identifier}\n </Link>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section title={t(\"device.live_sessions\")}>\n {#if device.sessions.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"device.no_sessions\")}</p>\n {:else}\n <ul class=\"slats\">\n {#each device.sessions as session (session.id)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <Link\n to={`/actors/${session.actor.uuid}`}\n class=\"link link-hover text-sm font-medium\"\n >\n {session.actor.identifier}\n </Link>\n <span class=\"font-mono text-xs opacity-80\">{session.ipAddress ?? \"—\"}</span>\n </div>\n\n <div class=\"flex flex-wrap gap-x-4 text-xs opacity-80\">\n <span title={moment(session.authenticatedAt)}>\n {t(\"device.signed_in\", { when: since(session.authenticatedAt) })}\n </span>\n <span>{t(\"device.expires\", { when: day(session.expiresAt) })}</span>\n </div>\n </li>\n {/each}\n </ul>\n {/if}\n </Section>\n\n <Section title={t(\"device.activity\")}>\n <Events {events} empty={t(\"device.no_activity\")} />\n </Section>\n </div>\n </div>\n </Page>\n{/if}\n","<script>\n import { initial } from \"../../lib/initial.js\";\n\n let { client, class: sized = \"size-8 rounded\" } = $props();\n</script>\n\n{#if client.logoUrl}\n <img src={client.logoUrl} alt=\"\" class=\"shrink-0 {sized}\" />\n{:else}\n <span class=\"grid shrink-0 place-items-center bg-base-200 font-semibold {sized}\" aria-hidden=\"true\"\n >{initial(client.name)}</span\n >\n{/if}\n","<script>\n let { label = null, value, options, onchange, disabled = false, name = null } = $props();\n</script>\n\n<label class=\"flex min-w-0 flex-col gap-1.5\">\n {#if label}<span class=\"field-label\">{label}</span>{/if}\n\n <select\n class=\"select select-sm w-full\"\n {value}\n {disabled}\n aria-label={label ? null : name}\n onchange={(event) => onchange(event.currentTarget.value)}\n >\n {#each options as [key, text, off = false] (key)}\n <option value={key} disabled={off}>{text}</option>\n {/each}\n </select>\n</label>\n","<script>\n let { checked = $bindable(false), label, onchange = null } = $props();\n</script>\n\n<label class=\"flex cursor-pointer items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n bind:checked\n onchange={onchange ? (event) => onchange(event.currentTarget.checked) : undefined}\n />\n {label}\n</label>\n","<script>\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { NONE, day, joined } from \"./lib/format.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import ClientLogo from \"./ui/ClientLogo.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Search from \"./ui/Search.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import Table from \"./ui/Table.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api } = $props();\n\n const pages = createPages();\n\n const QUERY = `\n query Clients($search: String, $archived: Boolean, $afterId: ID, $limit: Int) {\n clients(search: $search, archived: $archived, afterId: $afterId, limit: $limit) {\n clientId name dynamic approvedAt archivedAt logoUrl(size: 64)\n requiredScopes allowedScopes resources createdAt\n approvedBy { identifier }\n namespaces { name }\n }\n clientCount(search: $search, archived: $archived)\n }\n `;\n\n const CREATE = `\n mutation Create(\n $name: String!, $grantTypes: [String!], $redirectUris: [String!],\n $resources: [String!], $allowedScopes: [String!]\n ) {\n createClient(\n name: $name, grantTypes: $grantTypes, redirectUris: $redirectUris,\n resources: $resources, allowedScopes: $allowedScopes\n ) {\n secret client { clientId name }\n }\n }\n `;\n\n const SAML = `\n mutation Saml(\n $name: String!, $entityId: String!, $acsUrls: [String!]!, $certificate: String, $requestsSigned: Boolean,\n $sloUrl: String\n ) {\n createSamlApplication(\n name: $name, entityId: $entityId, acsUrls: $acsUrls, certificate: $certificate, requestsSigned: $requestsSigned,\n sloUrl: $sloUrl\n ) {\n client { clientId name }\n }\n }\n `;\n\n const KINDS = [\n [\"service\", [\"client_credentials\"]],\n [\"app\", [\"authorization_code\", \"refresh_token\"]],\n [\"saml\", []],\n [\"preset\", []],\n ];\n\n const ADD_APP = `\n mutation AddApp($preset: ID!, $baseUrl: String!, $name: String, $slug: String) {\n addApp(preset: $preset, baseUrl: $baseUrl, name: $name, slug: $slug) {\n client { clientId name } secret guide settings { label value }\n }\n }\n `;\n\n const COLUMNS = [\n t(\"clients.columns.name\"),\n { label: t(\"clients.columns.resources\"), hide: true },\n t(\"clients.columns.source\"),\n { label: t(\"clients.columns.namespaces\"), hide: true, right: true },\n { label: t(\"clients.columns.scopes\"), hide: true },\n { label: t(\"clients.columns.approved_by\"), hide: true },\n { label: t(\"clients.columns.registered\"), hide: true },\n ];\n\n const feedback = createFeedback();\n\n let adding = $state(false);\n let busy = $state(false);\n let created = $state(null);\n let supported = $state([]);\n let presets = $state([]);\n let draft = $state(blank());\n\n function blank() {\n return {\n name: \"\",\n kind: \"service\",\n redirects: \"\",\n resources: \"\",\n scopes: [],\n metadata: \"\",\n entityId: \"\",\n certificate: \"\",\n sloUrl: \"\",\n requestsSigned: false,\n preset: \"\",\n baseUrl: \"\",\n slug: \"\",\n };\n }\n\n const chosen = $derived(presets.find((preset) => preset.key === draft.preset));\n\n const lines = (text) =>\n text\n .split(\"\\n\")\n .map((one) => one.trim())\n .filter(Boolean);\n\n async function open() {\n draft = blank();\n created = null;\n adding = true;\n feedback.clear();\n\n if (supported.length) return;\n\n const data = await feedback.attempt(() =>\n api.query(\"query Scopes { scopesSupported appPresets { key name asks guide } }\"),\n );\n\n if (!data) return;\n\n supported = data.scopesSupported;\n presets = data.appPresets;\n }\n\n async function readMetadata() {\n const data = await feedback.attempt(() =>\n api.query(\n `mutation Read($xml: String!) {\n readSamlApplicationMetadata(xml: $xml) { entityId acsUrls certificate requestsSigned sloUrl }\n }`,\n { xml: draft.metadata },\n ),\n );\n\n if (!data) return;\n\n const read = data.readSamlApplicationMetadata;\n\n draft.entityId = read.entityId ?? draft.entityId;\n draft.redirects = read.acsUrls.join(\"\\n\") || draft.redirects;\n draft.certificate = read.certificate ?? draft.certificate;\n draft.sloUrl = read.sloUrl ?? draft.sloUrl;\n draft.requestsSigned = read.requestsSigned;\n }\n\n function request() {\n if (draft.kind === \"preset\") {\n return [\n ADD_APP,\n {\n preset: draft.preset,\n baseUrl: draft.baseUrl.trim(),\n name: draft.name.trim() || null,\n slug: draft.slug.trim() || null,\n },\n \"addApp\",\n ];\n }\n\n if (draft.kind === \"saml\") {\n return [\n SAML,\n {\n name: draft.name.trim(),\n entityId: draft.entityId.trim(),\n acsUrls: lines(draft.redirects),\n certificate: draft.certificate.trim() || null,\n requestsSigned: draft.requestsSigned,\n sloUrl: draft.sloUrl.trim() || null,\n },\n \"createSamlApplication\",\n ];\n }\n\n return [\n CREATE,\n {\n name: draft.name.trim(),\n grantTypes: KINDS.find(([key]) => key === draft.kind)[1],\n redirectUris: draft.kind === \"app\" ? lines(draft.redirects) : [],\n resources: lines(draft.resources),\n allowedScopes: draft.scopes,\n },\n \"createClient\",\n ];\n }\n\n async function send() {\n const [document, variables, key] = request();\n\n busy = true;\n\n const data = await feedback.attempt(() => api.query(document, variables));\n\n busy = false;\n\n if (!data) return;\n\n created = data[key];\n adding = false;\n\n again();\n }\n\n let search = $state(\"\");\n let query = $state(\"\");\n let archived = $state(false);\n let clients = $state([]);\n let loading = $state(true);\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n search: query || null,\n archived,\n afterId: pages.cursor,\n limit: pages.size,\n }),\n );\n\n loading = false;\n\n if (!data) return;\n\n clients = data.clients;\n pages.counted(data.clientCount);\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(clients.at(-1)?.clientId);\n else pages.back();\n\n load();\n }\n\n load();\n\n function again() {\n pages.reset();\n load();\n }\n\n function look() {\n query = search;\n again();\n }\n\n function toggle(held) {\n archived = held;\n again();\n }\n\n\n const nothing = $derived(\n query\n ? t(archived ? \"clients.empty.archived_matches\" : \"clients.empty.matches\", { query })\n : archived\n ? t(\"clients.empty.archived\")\n : t(\"clients.empty.none\"),\n );\n</script>\n\n<Page title={t(\"clients.title\")}>\n {#snippet actions()}\n <Switch bind:checked={archived} label={t(\"clients.archived\")} onchange={toggle} />\n <Search\n bind:value={search}\n label={t(\"clients.search\")}\n placeholder={t(\"clients.search_placeholder\")}\n onsearch={look}\n />\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={open}>{t(\"clients.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if adding}\n <Section title={t(\"clients.add\")}>\n <Field label={t(\"clients.name\")} bind:value={draft.name} placeholder={t(\"clients.name_placeholder\")} />\n\n <div class=\"range\" role=\"group\" aria-label={t(\"clients.kind\")}>\n {#each KINDS as [key] (key)}\n <button type=\"button\" aria-pressed={draft.kind === key} onclick={() => (draft.kind = key)}>\n {t(`clients.kinds.${key}`)}\n </button>\n {/each}\n </div>\n\n {#if draft.kind === \"preset\"}\n <Select\n label={t(\"clients.app\")}\n value={draft.preset}\n options={[[\"\", t(\"clients.choose\")], ...presets.map((preset) => [preset.key, preset.name])]}\n onchange={(key) => {\n draft.preset = key;\n draft.slug = presets.find((preset) => preset.key === key)?.asks?.name ?? \"\";\n }}\n />\n\n <Field label={t(\"clients.address\")} bind:value={draft.baseUrl} placeholder=\"https://grafana.example.com\" />\n\n {#if chosen?.asks?.name}\n <Field label={t(\"clients.slug\")} bind:value={draft.slug} placeholder={chosen.asks.name} />\n {/if}\n {/if}\n\n <p class=\"hint\">\n {draft.kind === \"preset\"\n ? t(\"clients.hints.preset\")\n : draft.kind === \"service\"\n ? t(\"clients.hints.service\")\n : draft.kind === \"saml\"\n ? t(\"clients.hints.saml\")\n : t(\"clients.hints.app\")}\n </p>\n\n {#if draft.kind === \"saml\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.metadata\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"3\"\n spellcheck=\"false\"\n placeholder=\"<md:EntityDescriptor …\"\n bind:value={draft.metadata}\n ></textarea>\n </label>\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n disabled={!draft.metadata.trim()}\n onclick={readMetadata}\n >\n {t(\"clients.read\")}\n </button>\n\n <Field label={t(\"clients.entity_id\")} bind:value={draft.entityId} placeholder=\"https://wiki.example.com/saml\" />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.acs\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n placeholder=\"https://wiki.example.com/saml/acs\"\n bind:value={draft.redirects}\n ></textarea>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.certificate\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n spellcheck=\"false\"\n bind:value={draft.certificate}\n ></textarea>\n </label>\n\n <Field label={t(\"clients.slo_url\")} bind:value={draft.sloUrl} placeholder=\"https://wiki.example.com/saml/slo\" />\n\n <Switch bind:checked={draft.requestsSigned} label={t(\"clients.requests_signed\")} />\n {/if}\n\n {#if draft.kind === \"app\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.redirect_uris\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://app.example.com/callback\"\n bind:value={draft.redirects}\n ></textarea>\n </label>\n {/if}\n\n {#if draft.kind !== \"saml\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"clients.resources\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"2\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://api.example.com/mcp\"\n bind:value={draft.resources}\n ></textarea>\n </label>\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"clients.scopes\")}</span>\n <ScopesEditor\n value={draft.scopes}\n available={supported}\n onchange={(chosen) => (draft.scopes = chosen)}\n />\n </div>\n {/if}\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy ||\n (draft.kind === \"preset\"\n ? !draft.preset || !draft.baseUrl.trim()\n : !draft.name.trim() || (draft.kind === \"saml\" && !draft.entityId.trim()))}\n onclick={send}\n >\n {busy ? t(\"clients.adding\") : t(\"clients.submit\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (adding = false)}>\n {t(\"clients.cancel\")}\n </button>\n </div>\n </Section>\n {/if}\n\n {#if created}\n <Section title={t(\"clients.created.title\", { name: created.client.name })}>\n <p class=\"text-sm opacity-85\">\n {t(created.secret ? \"clients.created.client_id_and_secret\" : \"clients.created.client_id\")}\n </p>\n\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.client.clientId}</p>\n\n {#if created.secret}\n <p class=\"tray px-2 py-1 font-mono text-xs break-all\">{created.secret}</p>\n {/if}\n\n {#if created.settings}\n <p class=\"text-sm opacity-85\">\n {t(\"clients.created.settings\", { name: created.client.name })}\n {#if created.guide}<a class=\"link\" href={created.guide} target=\"_blank\" rel=\"noreferrer\">{t(\"clients.created.guide\")}</a>.{/if}\n </p>\n\n <dl class=\"grid gap-x-4 gap-y-2 text-sm md:grid-cols-[auto_1fr]\">\n {#each created.settings as setting (setting.label)}\n <dt class=\"font-mono text-xs opacity-80\">{setting.label}</dt>\n <dd class=\"tray m-0 px-2 py-1 font-mono text-xs break-all whitespace-pre-wrap\">{setting.value}</dd>\n {/each}\n </dl>\n {/if}\n\n <Link to={`/clients/${created.client.clientId}`} class=\"btn btn-sm self-start\">{t(\"clients.created.open\")}</Link>\n </Section>\n {/if}\n\n {#if loading && clients.length === 0}\n <Spinner />\n {:else}\n <Table columns={COLUMNS} count={clients.length} empty={nothing}>\n {#snippet rows()}\n {#each clients as client (client.clientId)}\n <Row to={`/clients/${client.clientId}`}>\n <td class=\"w-full max-w-0 md:w-auto md:max-w-[15rem]\">\n <div class=\"flex items-center gap-2.5\">\n <ClientLogo {client} class=\"size-8 rounded text-sm\" />\n <div class=\"min-w-0\">\n <Link to={`/clients/${client.clientId}`} class=\"link link-hover font-medium\">\n {client.name}\n </Link>\n <div class=\"max-w-[11rem] truncate font-mono text-xs opacity-75\" title={client.clientId}>\n {client.clientId}\n </div>\n </div>\n </div>\n </td>\n <td class=\"hidden md:table-cell\">\n <div class=\"max-w-[11rem] truncate font-mono text-xs opacity-85\" title={joined(client.resources)}>\n {joined(client.resources)}\n </div>\n </td>\n <td>\n {#if client.dynamic}\n <span class=\"badge badge-ghost badge-sm\">{t(\"clients.self_registered\")}</span>\n {:else}\n <span class=\"badge badge-success badge-sm\">{t(\"clients.approved\")}</span>\n {/if}\n </td>\n <td class=\"hidden text-right text-xs opacity-85 md:table-cell\">\n {client.namespaces.length || NONE}\n </td>\n <td class=\"hidden font-mono text-xs md:table-cell\">\n {#if client.requiredScopes.length}\n <div class=\"max-w-[12rem] truncate\" title={joined(client.requiredScopes)}>\n <span class=\"opacity-75\">{t(\"clients.always\")}</span>\n {joined(client.requiredScopes)}\n </div>\n {/if}\n {#if client.allowedScopes.length}\n <div class=\"max-w-[12rem] truncate opacity-85\" title={joined(client.allowedScopes)}>\n <span class=\"opacity-85\">{t(\"clients.on_request\")}</span>\n {joined(client.allowedScopes)}\n </div>\n {/if}\n </td>\n <td class=\"hidden text-xs opacity-85 md:table-cell\">\n {client.approvedBy?.identifier ?? NONE}\n </td>\n <td class=\"hidden text-xs whitespace-nowrap opacity-85 md:table-cell\">{day(client.createdAt)}</td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n <Pager {pages} shown={clients.length} busy={loading} onpage={turn} />\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { clientId, part = null } = $props();\n\n const PARTS = [\n [null, \"\", \"general\"],\n [\"access\", \"/access\", \"access\"],\n [\"endpoints\", \"/endpoints\", \"endpoints\"],\n [\"usage\", \"/usage\", \"usage\"],\n ];\n</script>\n\n<nav class=\"settings-tabs\" aria-label={t(\"client.parts.label\")}>\n {#each PARTS as [key, path, label] (label)}\n <Link to={`/clients/${clientId}${path}`} class=\"settings-tab {(part ?? null) === key ? 'settings-tab-on' : ''}\">\n {t(`client.parts.${label}`)}\n </Link>\n {/each}\n</nav>\n","import { t } from \"./copy.js\";\n\nexport const POLICY_FIELDS = `\n key name signup nickname email emailVerified phone phoneVerified\n passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork\n emailDomains providers confirmation hidden signupScopes archivedAt\n`;\n\nconst FACTORS = [\n \"password\",\n \"passkey\",\n \"provider\",\n \"email_code\",\n \"otp\",\n \"backup_codes\",\n];\n\nconst CONFIRMATIONS = [\"none\", \"code\", \"link\", \"approval\"];\n\nconst PRESENCE = [\"off\", \"optional\", \"required\"];\n\nconst known = (list, group, value) =>\n list.includes(value) ? t(`policy_rules.${group}.${value}`) : value;\n\nconst listed = (values, empty) =>\n values?.length\n ? values.map((value) => known(FACTORS, \"factors\", value)).join(\", \")\n : t(`policy_rules.values.${empty}`);\n\nconst yes = (value) =>\n t(value ? \"policy_rules.answers.yes\" : \"policy_rules.answers.no\");\n\nconst value = (name) => t(`policy_rules.values.${name}`);\n\nconst UNITS = [\n [86400, \"day\"],\n [3600, \"hour\"],\n [60, \"minute\"],\n];\n\nexport function duration(seconds) {\n const [size, unit] = UNITS.find(([held]) => seconds % held === 0) ?? [\n 1,\n \"second\",\n ];\n\n return t(`policy_rules.units.${unit}`, { count: seconds / size });\n}\n\nconst term = (name) => t(`policy_rules.terms.${name}`);\n\nfunction describePolicy(policy) {\n return [\n [term(\"signup\"), policy.signup ? value(\"open\") : value(\"invitation_only\")],\n [term(\"email_domains\"), listed(policy.emailDomains, \"any\")],\n [\n term(\"proof_of_work\"),\n policy.proofOfWork\n ? t(\"policy_rules.values.bits\", { bits: policy.proofOfWork })\n : value(\"off\"),\n ],\n [term(\"hidden\"), yes(policy.hidden)],\n [term(\"nickname\"), known(PRESENCE, \"presence\", policy.nickname)],\n [term(\"email\"), known(PRESENCE, \"presence\", policy.email)],\n [term(\"email_verified\"), yes(policy.emailVerified)],\n [term(\"phone\"), known(PRESENCE, \"presence\", policy.phone)],\n [term(\"phone_verified\"), yes(policy.phoneVerified)],\n [term(\"first_factors\"), listed(policy.firstFactors, \"nothing\")],\n [\n term(\"providers\"),\n policy.providers === null\n ? value(\"every_one\")\n : listed(policy.providers, \"none\"),\n ],\n [\n term(\"password\"),\n t(\n policy.refuseCommonPasswords\n ? \"policy_rules.values.not_common\"\n : \"policy_rules.values.password\",\n {\n minimum: policy.passwordMinimum,\n },\n ),\n ],\n [term(\"password_required\"), yes(policy.passwordRequired)],\n [term(\"second_factors\"), listed(policy.secondFactors, \"none\")],\n [term(\"second_factor_required\"), yes(policy.secondFactorRequired)],\n [term(\"apps_require_second_factor\"), yes(policy.appsRequireSecondFactor)],\n [\n term(\"session_lifetime\"),\n policy.sessionLifetime\n ? duration(policy.sessionLifetime)\n : value(\"default_lifetime\"),\n ],\n [term(\"refuse_breached\"), yes(policy.refuseBreachedPasswords)],\n [\n term(\"risk_step_up\"),\n policy.riskStepUpAt\n ? t(\"policy_rules.values.at\", { score: policy.riskStepUpAt })\n : value(\"never\"),\n ],\n [\n term(\"risk_refuse\"),\n policy.riskRefuseAt\n ? t(\"policy_rules.values.at\", { score: policy.riskRefuseAt })\n : value(\"never\"),\n ],\n [\n term(\"idle_timeout\"),\n policy.sessionIdleTimeout\n ? duration(policy.sessionIdleTimeout)\n : value(\"never\"),\n ],\n [\n term(\"confirmation\"),\n known(CONFIRMATIONS, \"confirmations\", policy.confirmation),\n ],\n [term(\"signup_scopes\"), listed(policy.signupScopes, \"none\")],\n ];\n}\n\nexport function policyDifferences(chosen, fallback) {\n const theirs = new Map(describePolicy(fallback));\n\n return describePolicy(chosen)\n .filter(([term, value]) => theirs.get(term) !== value)\n .map(([term, value]) => ({ term, value, instead: theirs.get(term) }));\n}\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, rows, onreleased, showClient = false, row = false } = $props();\n\n const RELEASE = `\n mutation Release($name: String!) {\n releaseNamespace(name: $name) { released }\n }\n `;\n\n const feedback = createFeedback();\n\n async function release(held) {\n if (\n !confirm(t(\"namespaces.release_confirm\", { name: held.name }))\n )\n return;\n\n const done = await feedback.attempt(\n () => api.query(RELEASE, { name: held.name }),\n t(\"namespaces.released\", { name: held.name }),\n );\n\n if (done) await onreleased();\n }\n</script>\n\n<Section {row} title={t(\"namespaces.title\")}>\n <Notices feedback={feedback.state} />\n\n <ul class=\"compact-list\">\n {#each rows as held (held.name)}\n <li class=\"flex-wrap\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"text-sm\">\n <code class=\"font-mono\">{held.name}</code>\n {#if showClient}\n <span class=\"hint\">\n ·\n {#if held.client}\n <Link to={`/clients/${held.client.clientId}`} class=\"link link-hover\">{held.client.name}</Link>\n {:else}\n {t(\"namespaces.nothing\")}\n {/if}\n </span>\n {/if}\n </span>\n <span class=\"hint truncate text-xs\"><span class=\"font-mono\" title={held.resource}>{held.resource}</span> · {day(held.claimedAt)}</span>\n </div>\n\n <div class=\"ml-auto\">\n {#if held.releasable}\n <button type=\"button\" class=\"btn btn-xs btn-error btn-outline\" onclick={() => release(held)}>\n {t(\"namespaces.release\")}\n </button>\n {:else}\n <span class=\"hint text-xs\">{t(\"namespaces.archive_to_release\")}</span>\n {/if}\n </div>\n </li>\n {/each}\n </ul>\n</Section>\n","<script>\n import { t } from \"../lib/copy.js\";\n import { untrack } from \"svelte\";\n\n let { label, hint = null, value = [], onsave, save = t(\"ui.save\"), rows = 3 } = $props();\n\n let draft = $state(untrack(() => value.join(\"\\n\")));\n let held = $state(untrack(() => value.join(\"\\n\")));\n\n $effect(() => {\n const fresh = value.join(\"\\n\");\n\n if (fresh === held) return;\n\n held = fresh;\n draft = fresh;\n });\n\n const changed = $derived(draft !== held);\n\n const lines = () =>\n draft\n .split(\"\\n\")\n .map((one) => one.trim())\n .filter(Boolean);\n</script>\n\n<label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n {rows}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n bind:value={draft}\n ></textarea>\n\n {#if hint}\n <span class=\"hint\">{hint}</span>\n {/if}\n\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n disabled={!changed}\n onclick={() => onsave(lines())}\n >\n {save}\n </button>\n</label>\n","<script>\n import ClientParts from \"./ClientParts.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, joined } from \"./lib/format.js\";\n import { POLICY_FIELDS, policyDifferences } from \"./lib/policies.js\";\n import Consents from \"./Consents.svelte\";\n import Events from \"./Events.svelte\";\n import Namespaces from \"./Namespaces.svelte\";\n import Tokens from \"./Tokens.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import ClientLogo from \"./ui/ClientLogo.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import Lines from \"./ui/Lines.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api, clientId, part = null } = $props();\n\n const QUERY = `\n query Client($clientId: ID!) {\n client(clientId: $clientId) {\n clientId name dynamic approvedAt archivedAt secretExpiresAt createdAt\n tokenEndpointAuthMethod applicationType clientUri logoUri tosUri policyUri logoUrl(size: 128)\n subjectType sectorIdentifierUri\n redirectUris postLogoutRedirectUris grantTypes responseTypes resources\n requiredScopes allowedScopes allowedGroups\n backchannelLogoutUri backchannelLogoutSessionRequired\n requirePushedAuthorizationRequests requireSignedRequestObject consentRequired jwks jwksUri\n authorizationDetailsTypes authorizationDetailsSchemas consentLifetime\n accessTokenLifetime refreshTokenLifetime\n protocol samlEntityId samlCertificate samlNameIdFormat samlRequestsSigned samlIdpInitiated samlAttributes samlSloUrl\n signInPolicy { ${POLICY_FIELDS} }\n events(limit: 25) {\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n device { id label }\n }\n approvedBy { identifier }\n namespaces { name resource claimedAt releasable }\n consents(limit: 25) {\n id scopes audience updatedAt expiresAt authorizationDetails\n actor { uuid identifier }\n }\n tokens(limit: 25) {\n id kind scopes audience parentId createdAt expiresAt\n actor { uuid identifier }\n device { id label }\n }\n }\n scopesSupported\n groups { key name }\n samlMetadataUrl\n signInPolicies { key name }\n defaultSignInPolicy { ${POLICY_FIELDS} }\n }\n `;\n\n const feedback = createFeedback();\n\n let client = $state(null);\n let supported = $state([]);\n let groups = $state([]);\n let roles = $state(\"\");\n let policies = $state([]);\n let fallbackPolicy = $state(null);\n let name = $state(\"\");\n let logoutUri = $state(\"\");\n let jwksUri = $state(\"\");\n let jwks = $state(\"\");\n let declared = $state(\"\");\n let lasts = $state(\"\");\n let accessMinutes = $state(\"\");\n let refreshDays = $state(\"\");\n let method = $state(\"\");\n let sector = $state(\"\");\n let metadataUrl = $state(\"\");\n let certificate = $state(\"\");\n let entityId = $state(\"\");\n let sloUrl = $state(\"\");\n let links = $state({});\n let attributes = $state(\"\");\n let loading = $state(true);\n let secret = $state(null);\n\n const NAME_IDS = [\n [\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\", t(\"client.name_ids.persistent\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\", t(\"client.name_ids.email\")],\n ];\n\n const saml = $derived(client?.protocol === \"saml\");\n\n const facts = $derived(\n client\n ? [\n {\n term: t(\"client.facts.origin\"),\n value: client.dynamic ? t(\"client.facts.self_registered\") : t(\"client.facts.approved\"),\n },\n { term: t(\"client.facts.approved_by\"), value: client.approvedBy?.identifier },\n { term: t(\"client.facts.registered\"), value: day(client.createdAt) },\n { term: t(\"client.facts.grants\"), value: joined(client.grantTypes), mono: true },\n { term: t(\"client.facts.response_types\"), value: joined(client.responseTypes), mono: true },\n ]\n : [],\n );\n\n const SUBJECTS = [\n [\"public\", t(\"client.subjects.public\")],\n [\"pairwise\", t(\"client.subjects.pairwise\")],\n ];\n\n const GRANTS = [\n [\"refresh_token\", t(\"client.grants.refresh_token\")],\n [\"urn:ietf:params:oauth:grant-type:device_code\", t(\"client.grants.device_code\")],\n [\"urn:ietf:params:oauth:grant-type:token-exchange\", t(\"client.grants.token_exchange\")],\n ];\n\n const LINKS = [\n [\"logoUri\", \"logo_uri\", \"https://app.example.com/logo.png\"],\n [\"clientUri\", \"client_uri\", \"https://app.example.com\"],\n [\"tosUri\", \"tos_uri\", \"https://app.example.com/terms\"],\n [\"policyUri\", \"policy_uri\", \"https://app.example.com/privacy\"],\n ].map(([key, copy, placeholder]) => [key, t(`client.links.${copy}.label`), placeholder]);\n\n async function saveLinks() {\n const changes = Object.fromEntries(LINKS.map(([key]) => [key, links[key].trim() || null]));\n const logoChanged = changes.logoUri && changes.logoUri !== client.logoUri;\n\n await update(changes, t(\"client.notices.saved\"));\n\n if (logoChanged) setTimeout(load, 3000);\n }\n\n function saveLifetimes() {\n return update(\n {\n accessTokenLifetime: accessMinutes ? Number(accessMinutes) * 60 : 0,\n refreshTokenLifetime: refreshDays ? Number(refreshDays) * 86400 : 0,\n consentLifetime: lasts ? Number(lasts) * 86400 : 0,\n },\n t(\"client.notices.saved\"),\n );\n }\n\n const SAML_DEFAULTS = \"email = email\\nname = name\\ngiven_name = given_name\\nfamily_name = family_name\\npreferred_username = preferred_username\";\n\n const differences = $derived(\n client?.signInPolicy && fallbackPolicy ? policyDifferences(client.signInPolicy, fallbackPolicy) : [],\n );\n\n const keyed = $derived(Boolean(client?.jwks || client?.jwksUri));\n\n const mapped = (held) =>\n Object.entries(held ?? {})\n .map(([attribute, claim]) => `${attribute} = ${claim}`)\n .join(\"\\n\");\n\n async function load() {\n loading = true;\n\n try {\n const data = await api.query(QUERY, { clientId });\n\n client = data.client;\n supported = data.scopesSupported;\n groups = data.groups;\n roles = (data.client?.allowedGroups ?? []).filter((held) => held.includes(\":\")).join(\", \");\n policies = data.signInPolicies;\n fallbackPolicy = data.defaultSignInPolicy;\n name = data.client?.name ?? \"\";\n logoutUri = data.client?.backchannelLogoutUri ?? \"\";\n jwksUri = data.client?.jwksUri ?? \"\";\n jwks = data.client?.jwks ? JSON.stringify(data.client.jwks, null, 2) : \"\";\n lasts = data.client?.consentLifetime ? String(Math.round(data.client.consentLifetime / 86400)) : \"\";\n accessMinutes = data.client?.accessTokenLifetime ? String(Math.round(data.client.accessTokenLifetime / 60)) : \"\";\n refreshDays = data.client?.refreshTokenLifetime ? String(Math.round(data.client.refreshTokenLifetime / 86400)) : \"\";\n declared = Object.keys(data.client?.authorizationDetailsSchemas ?? {}).length\n ? JSON.stringify(data.client.authorizationDetailsSchemas, null, 2)\n : \"\";\n method = data.client?.tokenEndpointAuthMethod ?? \"\";\n sector = data.client?.sectorIdentifierUri ?? \"\";\n metadataUrl = data.samlMetadataUrl;\n certificate = data.client?.samlCertificate ?? \"\";\n entityId = data.client?.samlEntityId ?? \"\";\n sloUrl = data.client?.samlSloUrl ?? \"\";\n links = Object.fromEntries(LINKS.map(([key]) => [key, data.client?.[key] ?? \"\"]));\n attributes = mapped(data.client?.samlAttributes);\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function act(document, variables, notice) {\n const data = await feedback.attempt(() => api.query(document, variables), notice);\n\n if (data) await load();\n\n return data;\n }\n\n const update = (changes, notice) =>\n act(\n `mutation Update(\n $clientId: ID!, $name: String, $requiredScopes: [String!], $allowedScopes: [String!],\n $backchannelLogoutUri: String, $redirectUris: [String!],\n $postLogoutRedirectUris: [String!], $resources: [String!],\n $requirePushedAuthorizationRequests: Boolean, $consentRequired: Boolean,\n $signInPolicy: ID, $grantTypes: [String!], $jwksUri: String,\n $tokenEndpointAuthMethod: String, $requireSignedRequestObject: Boolean,\n $samlCertificate: String, $samlRequestsSigned: Boolean, $samlIdpInitiated: Boolean,\n $samlNameIdFormat: String, $samlEntityId: String, $samlAttributes: JSON, $samlSloUrl: String, $jwks: JSON,\n $subjectType: String, $sectorIdentifierUri: String, $dpopBoundAccessTokens: Boolean,\n $backchannelLogoutSessionRequired: Boolean, $clientUri: String, $logoUri: String,\n $tosUri: String, $policyUri: String, $authorizationDetailsTypes: [String!],\n $authorizationDetailsSchemas: JSON, $consentLifetime: Int, $allowedGroups: [String!],\n $accessTokenLifetime: Int, $refreshTokenLifetime: Int\n ) {\n updateClient(\n clientId: $clientId, name: $name, requiredScopes: $requiredScopes,\n allowedScopes: $allowedScopes, backchannelLogoutUri: $backchannelLogoutUri,\n redirectUris: $redirectUris, postLogoutRedirectUris: $postLogoutRedirectUris,\n resources: $resources,\n requirePushedAuthorizationRequests: $requirePushedAuthorizationRequests,\n consentRequired: $consentRequired,\n signInPolicy: $signInPolicy,\n grantTypes: $grantTypes,\n jwksUri: $jwksUri,\n tokenEndpointAuthMethod: $tokenEndpointAuthMethod,\n requireSignedRequestObject: $requireSignedRequestObject,\n samlCertificate: $samlCertificate,\n samlRequestsSigned: $samlRequestsSigned,\n samlIdpInitiated: $samlIdpInitiated,\n samlNameIdFormat: $samlNameIdFormat,\n samlEntityId: $samlEntityId,\n samlAttributes: $samlAttributes,\n samlSloUrl: $samlSloUrl,\n jwks: $jwks,\n subjectType: $subjectType,\n sectorIdentifierUri: $sectorIdentifierUri,\n dpopBoundAccessTokens: $dpopBoundAccessTokens,\n backchannelLogoutSessionRequired: $backchannelLogoutSessionRequired,\n clientUri: $clientUri,\n logoUri: $logoUri,\n tosUri: $tosUri,\n policyUri: $policyUri,\n authorizationDetailsTypes: $authorizationDetailsTypes,\n authorizationDetailsSchemas: $authorizationDetailsSchemas,\n consentLifetime: $consentLifetime\n accessTokenLifetime: $accessTokenLifetime\n refreshTokenLifetime: $refreshTokenLifetime\n allowedGroups: $allowedGroups\n ) {\n client { clientId }\n }\n }`,\n { clientId, ...changes },\n notice,\n );\n\n const roleList = (value) =>\n value\n .split(/[\\s,]+/)\n .map((held) => held.trim())\n .filter((held) => held.includes(\":\"));\n\n function admit(key, on) {\n const held = client.allowedGroups.filter((group) => group !== key);\n\n update({ allowedGroups: on ? [...held, key] : held }, t(\"client.notices.groups\"));\n }\n\n function saveRoles() {\n const kept = client.allowedGroups.filter((group) => !group.includes(\":\"));\n\n update({ allowedGroups: [...kept, ...roleList(roles)] }, t(\"client.notices.groups\"));\n }\n\n const unattended = $derived(client?.grantTypes.includes(\"client_credentials\") ?? false);\n\n const granting = (grant, on) =>\n on ? [...new Set([...client.grantTypes, grant])] : client.grantTypes.filter((held) => held !== grant);\n\n function signsInAsItself(on) {\n update(\n { grantTypes: granting(\"client_credentials\", on) },\n on\n ? t(\"client.notices.unattended_on\")\n : t(\"client.notices.unattended_off\"),\n );\n }\n\n function knowsActorsAs(chosen) {\n const question = t(\"client.confirm.subject\");\n\n if (chosen === client.subjectType || !confirm(question)) {\n load();\n return;\n }\n\n update({ subjectType: chosen }, t(\"client.notices.subject\"));\n }\n\n function saveKeys(held) {\n const pending = method === \"private_key_jwt\" && client.tokenEndpointAuthMethod !== \"private_key_jwt\";\n const changes = pending ? { ...held, tokenEndpointAuthMethod: method } : held;\n\n update(changes, pending ? t(\"client.notices.keys_signing\") : t(\"client.notices.keys\"));\n }\n\n function saveKeySet() {\n const text = jwks.trim();\n\n if (!text) {\n saveKeys({ jwks: null });\n return;\n }\n\n try {\n saveKeys({ jwks: JSON.parse(text), jwksUri: null });\n } catch {\n feedback.blame(new Error(t(\"client.errors.jwks\")));\n }\n }\n\n function saveDeclared() {\n const text = declared.trim();\n\n try {\n update({ authorizationDetailsSchemas: text ? JSON.parse(text) : {} }, t(\"client.notices.declared\"));\n } catch {\n feedback.blame(new Error(t(\"client.errors.declared\")));\n }\n }\n\n function saveAttributes() {\n const pairs = attributes\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line) => line.split(\"=\").map((part) => part.trim()));\n\n if (pairs.some((pair) => pair.length !== 2 || !pair[0] || !pair[1])) {\n feedback.blame(new Error(t(\"client.errors.attributes\")));\n return;\n }\n\n update(\n { samlAttributes: Object.fromEntries(pairs) },\n pairs.length ? t(\"client.notices.attributes\") : t(\"client.notices.attributes_default\"),\n );\n }\n\n const METHODS = [\n [\"client_secret_basic\", t(\"client.methods.client_secret_basic\")],\n [\"client_secret_post\", t(\"client.methods.client_secret_post\")],\n [\"private_key_jwt\", t(\"client.methods.private_key_jwt\")],\n ];\n\n function authenticates(chosen) {\n method = chosen;\n\n if (chosen === \"private_key_jwt\" && !keyed) return;\n\n const notice =\n chosen === \"private_key_jwt\"\n ? t(\"client.notices.signs_assertions\")\n : client.tokenEndpointAuthMethod === \"private_key_jwt\"\n ? t(\"client.notices.uses_secret\")\n : t(\"client.notices.saved\");\n\n update({ tokenEndpointAuthMethod: chosen }, notice);\n }\n\n function restore() {\n if (!confirm(t(\"client.confirm.restore\"))) return;\n\n act(\n `mutation Restore($clientId: ID!) {\n restoreClient(clientId: $clientId) { client { archivedAt } }\n }`,\n { clientId },\n t(\"client.notices.restored\"),\n );\n }\n\n async function rotate() {\n if (!confirm(t(\"client.confirm.rotate\"))) return;\n\n const data = await act(\n `mutation Rotate($clientId: ID!) { rotateClientSecret(clientId: $clientId) { secret } }`,\n { clientId },\n t(\"client.notices.rotated\"),\n );\n\n if (data) secret = data.rotateClientSecret.secret;\n }\n\n function archive() {\n if (!confirm(t(\"client.confirm.archive\"))) return;\n\n act(\n `mutation Archive($clientId: ID!) { archiveClient(clientId: $clientId) { client { archivedAt } } }`,\n { clientId },\n t(\"client.notices.archived\"),\n );\n }\n</script>\n\n{#if loading && !client}\n <Spinner />\n{:else if !client}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n {feedback.state.failure ?? t(\"client.missing\")}\n </div>\n{:else}\n <Page title={client.name} id={client.clientId} back={{ to: \"/clients\", label: t(\"client.back\") }}>\n <Notices feedback={feedback.state} />\n\n {#if client.archivedAt}\n <div class=\"alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n <span>{t(\"client.archived_on\", { day: day(client.archivedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={restore}>{t(\"client.restore\")}</button>\n </div>\n {/if}\n\n {#if secret}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"client.secret_once\")}</span>\n <code class=\"font-mono text-sm break-all\">{secret}</code>\n </div>\n {/if}\n\n <ClientParts {clientId} {part} />\n\n <div class=\"grid gap-4\">\n {#if part === \"access\"}\n <Section\n row\n title={t(\"client.groups.title\")}\n lede={t(\"client.groups.lede\")}\n >\n {#if groups.length}\n <div class=\"flex flex-col gap-1\">\n {#each groups as group (group.key)}\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-sm\"\n checked={client.allowedGroups.includes(group.key)}\n onchange={(event) => admit(group.key, event.currentTarget.checked)}\n />\n {group.name} <code class=\"hint font-mono\">{group.key}</code>\n </label>\n {/each}\n </div>\n {:else}\n <p class=\"text-sm opacity-85\">\n {t(\"client.groups.none\")} <Link to=\"/settings\">{t(\"client.groups.add\")}</Link> {t(\"client.groups.limit\")}\n </p>\n {/if}\n\n <Field\n label={t(\"client.groups.roles\")}\n bind:value={roles}\n placeholder=\"acme:owner, acme:billing\"\n onsave={saveRoles}\n />\n\n <p class=\"hint\">\n {client.allowedGroups.length\n ? t(\"client.groups.only\", { groups: client.allowedGroups.join(\", \") })\n : t(\"client.groups.everyone\")}\n </p>\n </Section>\n\n <Section row title={t(\"client.scopes.title\")}>\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.scopes.always\")}</span>\n <ScopesEditor\n value={client.requiredScopes}\n available={supported}\n onchange={(requiredScopes) => update({ requiredScopes }, t(\"client.notices.scopes\"))}\n />\n </div>\n\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.scopes.on_request\")}</span>\n <ScopesEditor\n value={client.allowedScopes}\n available={supported}\n onchange={(allowedScopes) => update({ allowedScopes }, t(\"client.notices.scopes\"))}\n />\n </div>\n </Section>\n {:else if part === \"endpoints\"}\n <Section row title={t(\"client.uris.title\")}>\n <Lines\n label={saml ? t(\"client.uris.acs\") : t(\"client.uris.redirect\")}\n value={client.redirectUris}\n onsave={(redirectUris) => update({ redirectUris }, t(\"client.notices.redirects\"))}\n />\n\n <Lines\n label={t(\"client.uris.post_logout\")}\n value={client.postLogoutRedirectUris}\n onsave={(postLogoutRedirectUris) =>\n update({ postLogoutRedirectUris }, t(\"client.notices.post_logout\"))}\n />\n\n <Lines\n label={t(\"client.uris.resources\")}\n value={client.resources}\n onsave={(resources) => update({ resources }, t(\"client.notices.resources\"))}\n />\n </Section>\n\n {#if !saml}\n <Section row title={t(\"client.keys.title\")}>\n <p class=\"hint\">\n {t(\"client.keys.hint\")}\n </p>\n\n <Field\n label={t(\"client.keys.jwks_uri\")}\n bind:value={jwksUri}\n placeholder=\"https://app.example.com/.well-known/jwks.json\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() => saveKeys(jwksUri.trim() ? { jwksUri: jwksUri.trim(), jwks: null } : { jwksUri: null })}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.keys.jwks\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"4\"\n spellcheck=\"false\"\n placeholder={'{ \"keys\": [ ... ] }'}\n bind:value={jwks}\n ></textarea>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveKeySet}>{t(\"client.save\")}</button>\n </label>\n\n {#if keyed}\n <Switch\n checked={client.requireSignedRequestObject}\n label={t(\"client.keys.jar\")}\n onchange={(on) =>\n update(\n { requireSignedRequestObject: on },\n on\n ? t(\"client.notices.jar_on\")\n : t(\"client.notices.jar_off\"),\n )}\n />\n {/if}\n </Section>\n {/if}\n\n {#if !saml}\n <Section row title={t(\"client.details.title\")}>\n <p class=\"hint\">\n {t(\"client.details.hint\")}\n </p>\n\n <Lines\n label={t(\"client.details.types\")}\n value={client.authorizationDetailsTypes}\n onsave={(authorizationDetailsTypes) => update({ authorizationDetailsTypes }, t(\"client.notices.types\"))}\n />\n\n {#if client.approvedAt}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.details.accepts\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"6\"\n spellcheck=\"false\"\n placeholder={'{ \"payment_initiation\": { \"label\": \"Send a payment\", \"schema\": { \"type\": \"object\" } } }'}\n bind:value={declared}\n ></textarea>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveDeclared}>{t(\"client.save\")}</button>\n </label>\n {/if}\n </Section>\n {/if}\n {:else if part === \"usage\"}\n <Section title={t(\"client.consents\")}>\n <Consents {api} {feedback} rows={client.consents} onchange={load} showActor />\n </Section>\n\n <Section title={t(\"client.tokens\")}>\n <Tokens {api} {feedback} rows={client.tokens} onchange={load} showActor />\n </Section>\n\n <Section title={t(\"client.activity.title\")}>\n {#snippet actions()}\n <Link to={`/activity?client=${client.clientId}`} class=\"btn btn-ghost btn-sm\">{t(\"client.activity.all\")}</Link>\n {/snippet}\n\n <Events events={client.events} empty={t(\"client.activity.empty\")} />\n </Section>\n\n {#if client.namespaces.length}\n <Namespaces {api} rows={client.namespaces} onreleased={load} />\n {/if}\n {:else}\n <Section row title={t(\"client.registration.title\")}>\n <Field label={t(\"client.registration.name\")} bind:value={name} onsave={() => update({ name }, t(\"client.notices.renamed\"))} />\n\n <Facts rows={facts} />\n\n {#if saml}\n <p class=\"hint\">{t(\"client.registration.saml\")}</p>\n {:else if client.tokenEndpointAuthMethod === \"none\"}\n <p class=\"hint\">{t(\"client.registration.public\")}</p>\n {:else}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.registration.authenticates\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={method}\n onchange={(event) => authenticates(event.currentTarget.value)}\n >\n {#each METHODS as [key, label] (key)}\n <option value={key}>{label}</option>\n {/each}\n </select>\n </label>\n {/if}\n\n {#if method === \"private_key_jwt\" && !keyed}\n <p class=\"text-xs text-warning\">{t(\"client.registration.needs_keys\")}</p>\n {/if}\n\n {#if !saml}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.registration.knows_as\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.subjectType}\n onchange={(event) => knowsActorsAs(event.currentTarget.value)}\n >\n {#each SUBJECTS as [key, label] (key)}\n <option value={key}>{label}</option>\n {/each}\n </select>\n </label>\n\n {#if client.subjectType === \"pairwise\" || client.sectorIdentifierUri}\n <Field\n label={t(\"client.registration.sector\")}\n bind:value={sector}\n placeholder={t(\"client.registration.sector_placeholder\")}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { sectorIdentifierUri: sector.trim() || null },\n sector.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n {/if}\n\n {#each GRANTS as [grant, label] (grant)}\n <Switch\n checked={client.grantTypes.includes(grant)}\n {label}\n onchange={(on) => update({ grantTypes: granting(grant, on) }, t(\"client.notices.grants\"))}\n />\n {/each}\n {/if}\n\n {#if client.approvedAt && client.tokenEndpointAuthMethod !== \"none\"}\n <Switch\n checked={unattended}\n label={t(\"client.registration.unattended\")}\n onchange={signsInAsItself}\n />\n {/if}\n\n <div class=\"flex flex-wrap gap-2 pt-1\">\n {#if client.tokenEndpointAuthMethod.startsWith(\"client_secret\")}\n <button type=\"button\" class=\"btn btn-sm\" onclick={rotate}>{t(\"client.registration.rotate\")}</button>\n {/if}\n {#if !client.archivedAt}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={archive}>\n {t(\"client.registration.archive\")}\n </button>\n {/if}\n </div>\n </Section>\n\n {#if saml}\n <Section row title={t(\"client.saml.title\")}>\n <Field\n label={t(\"client.saml.entity_id\")}\n bind:value={entityId}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() => update({ samlEntityId: entityId.trim() }, t(\"client.notices.entity_id\"))}\n />\n\n <div class=\"flex flex-col gap-1.5\">\n <Field\n label={t(\"client.saml.slo_url\")}\n bind:value={sloUrl}\n placeholder=\"https://wiki.example.com/saml/slo\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { samlSloUrl: sloUrl.trim() || null },\n sloUrl.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n <span class=\"hint\">{t(\"client.saml.slo_url_hint\")}</span>\n </div>\n\n <Facts\n rows={[\n { term: t(\"client.saml.metadata\"), value: metadataUrl, mono: true },\n { term: t(\"client.saml.initiate\"), value: client.samlIdpInitiated ? `/saml/initiate/${client.clientId}` : null, mono: true },\n ]}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.names_by\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.samlNameIdFormat ?? NAME_IDS[0][0]}\n onchange={(event) => update({ samlNameIdFormat: event.currentTarget.value }, t(\"client.notices.saved\"))}\n >\n {#each NAME_IDS as [format, label] (format)}\n <option value={format}>{label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.certificate\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"3\"\n spellcheck=\"false\"\n bind:value={certificate}\n ></textarea>\n <button\n type=\"button\"\n class=\"btn btn-sm self-start\"\n onclick={() =>\n update(\n { samlCertificate: certificate.trim() },\n certificate.trim() ? t(\"client.notices.certificate_saved\") : t(\"client.notices.certificate_removed\"),\n )}\n >\n {t(\"client.save\")}\n </button>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.saml.attributes\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"5\"\n spellcheck=\"false\"\n placeholder={SAML_DEFAULTS}\n bind:value={attributes}\n ></textarea>\n <span class=\"hint\">{t(\"client.saml.attributes_hint\")}</span>\n <button type=\"button\" class=\"btn btn-sm self-start\" onclick={saveAttributes}>{t(\"client.save\")}</button>\n </label>\n\n <Switch\n checked={client.samlRequestsSigned}\n label={t(\"client.saml.requests_signed\")}\n onchange={(on) =>\n update(\n { samlRequestsSigned: on },\n on ? t(\"client.notices.signed_refused\") : t(\"client.notices.signed_read\"),\n )}\n />\n\n <Switch\n checked={client.samlIdpInitiated}\n label={t(\"client.saml.idp_initiated\")}\n onchange={(on) =>\n update(\n { samlIdpInitiated: on },\n on\n ? t(\"client.notices.idp_initiated_on\")\n : t(\"client.notices.idp_initiated_off\"),\n )}\n />\n </Section>\n {/if}\n\n <Section row title={t(\"client.shown.title\")}>\n <div class=\"flex items-center gap-3\">\n <ClientLogo {client} class=\"size-14 rounded-lg border border-base-300 text-xl\" />\n <p class=\"hint\">\n {#if !client.approvedAt}\n {t(\"client.shown.unapproved\")}\n {:else}\n {t(\"client.shown.approved\")}\n {/if}\n </p>\n </div>\n\n <form\n class=\"flex flex-col gap-3\"\n onsubmit={(event) => {\n event.preventDefault();\n saveLinks();\n }}\n >\n {#each LINKS as [key, label, placeholder] (key)}\n <Field {label} bind:value={links[key]} {placeholder} autocapitalize=\"none\" autocorrect=\"off\" spellcheck=\"false\" />\n {/each}\n\n <button type=\"submit\" class=\"btn btn-sm self-start\">{t(\"client.save\")}</button>\n </form>\n </Section>\n\n <Section row title={t(\"client.sign_in.title\")}>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.sign_in.policy\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={client.signInPolicy?.key ?? \"\"}\n onchange={(event) =>\n update({ signInPolicy: event.currentTarget.value }, t(\"client.notices.policy\"))}\n >\n <option value=\"\">\n {t(\"client.sign_in.default\", { name: fallbackPolicy?.name ?? t(\"client.sign_in.built_in\") })}\n </option>\n {#each policies as policy (policy.key)}\n <option value={policy.key}>{policy.name}</option>\n {/each}\n </select>\n </label>\n\n {#if client.signInPolicy?.archivedAt}\n <p class=\"text-xs text-warning\">\n {t(\"client.sign_in.archived\", { name: client.signInPolicy.name, fallback: fallbackPolicy?.name })}\n </p>\n {:else if client.signInPolicy}\n {#if differences.length}\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"client.sign_in.differs\", { name: fallbackPolicy?.name })}</span>\n <dl class=\"grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm\">\n {#each differences as { term, value, instead } (term)}\n <dt class=\"opacity-80\">{term}</dt>\n <dd>{value} <span class=\"opacity-75 line-through\">{instead}</span></dd>\n {/each}\n </dl>\n </div>\n {:else}\n <p class=\"hint\">{t(\"client.sign_in.same\", { name: fallbackPolicy?.name })}</p>\n {/if}\n {/if}\n\n {#if !saml}\n <Switch\n checked={client.requirePushedAuthorizationRequests}\n label={t(\"client.sign_in.par\")}\n onchange={(on) =>\n update(\n { requirePushedAuthorizationRequests: on },\n on ? t(\"client.notices.par_on\") : t(\"client.notices.par_off\"),\n )}\n />\n\n <Switch\n checked={client.dpopBoundAccessTokens}\n label={t(\"client.sign_in.dpop\")}\n onchange={(on) =>\n update(\n { dpopBoundAccessTokens: on },\n on ? t(\"client.notices.dpop_on\") : t(\"client.notices.dpop_off\"),\n )}\n />\n {/if}\n\n {#if client.approvedAt}\n <Switch\n checked={client.consentRequired}\n label={t(\"client.sign_in.consent\")}\n onchange={(on) =>\n update(\n { consentRequired: on },\n on\n ? t(\"client.notices.consent_on\")\n : t(\"client.notices.consent_off\"),\n )}\n />\n {/if}\n\n <form\n class=\"flex flex-col gap-3\"\n onsubmit={(event) => {\n event.preventDefault();\n saveLifetimes();\n }}\n >\n <div class=\"grid gap-3 sm:grid-cols-3\">\n <Field label={t(\"client.sign_in.access\")} type=\"number\" min=\"1\" max=\"1440\" bind:value={accessMinutes} />\n <Field label={t(\"client.sign_in.refresh\")} type=\"number\" min=\"1\" max=\"400\" bind:value={refreshDays} />\n <Field label={t(\"client.sign_in.consent_lifetime\")} type=\"number\" min=\"1\" max=\"400\" bind:value={lasts} />\n </div>\n\n <button type=\"submit\" class=\"btn btn-sm self-start\">{t(\"client.save\")}</button>\n </form>\n\n <Field\n label={t(\"client.sign_in.logout\")}\n bind:value={logoutUri}\n placeholder=\"https://app.example.com/logout\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={() =>\n update(\n { backchannelLogoutUri: logoutUri.trim() || null },\n logoutUri.trim() ? t(\"client.notices.saved\") : t(\"client.notices.cleared\"),\n )}\n />\n\n {#if client.backchannelLogoutUri}\n <Switch\n checked={client.backchannelLogoutSessionRequired}\n label={t(\"client.sign_in.logout_session\")}\n onchange={(on) => update({ backchannelLogoutSessionRequired: on }, t(\"client.notices.saved\"))}\n />\n {/if}\n </Section>\n {/if}\n </div>\n </Page>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { organization, children } = $props();\n</script>\n\n<span class=\"flex flex-wrap items-center gap-2\">\n <Link to={`/organizations/${organization.key}`} class=\"link link-hover font-medium\">{organization.name}</Link>\n {#if organization.ownerCount === 0}\n <span class=\"badge badge-warning badge-xs\">{t(\"organization_cell.no_owner\")}</span>\n {/if}\n</span>\n<span class=\"font-mono text-xs opacity-75\">{organization.key}</span>\n{@render children?.()}\n","<script>\n import { t } from \"./lib/copy.js\";\n\n let { organization, class: klass = \"flex flex-col\" } = $props();\n</script>\n\n<span class={klass}>\n <span>{t(\"organization_headcount.members\", { count: organization.memberCount })}</span>\n {#if organization.pendingCount}\n <span class=\"text-xs opacity-75\">{t(\"organization_headcount.invited\", { count: organization.pendingCount })}</span>\n {/if}\n</span>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import OrganizationCell from \"./OrganizationCell.svelte\";\n import OrganizationHeadcount from \"./OrganizationHeadcount.svelte\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api } = $props();\n\n const router = useRouter();\n const feedback = createFeedback();\n\n const QUERY = `\n query Organizations {\n active: organizations {\n key name roles memberCount ownerCount pendingCount\n signInPolicy { name }\n providers { name }\n }\n archived: organizations(archived: true) { key name memberCount archivedAt }\n }\n `;\n\n const COLUMNS = [\n t(\"organizations.columns.organization\"),\n { label: t(\"organizations.columns.members\"), hide: true },\n { label: t(\"organizations.columns.roles\"), hide: true },\n { label: t(\"organizations.columns.signs_in\"), hide: true },\n ];\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let draft = $state(null);\n let keyTouched = $state(false);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n const slug = (name) =>\n name\n .toLowerCase()\n .normalize(\"NFKD\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n function add() {\n draft = { key: \"\", name: \"\" };\n keyTouched = false;\n feedback.clear();\n }\n\n function named(name) {\n draft.name = name;\n if (!keyTouched) draft.key = slug(name);\n }\n\n async function save() {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Create($key: ID!, $name: String!) {\n createOrganization(key: $key, name: $name) { organization { key } }\n }`,\n { key: draft.key.trim(), name: draft.name.trim() },\n ),\n );\n\n busy = false;\n\n if (answer) router.go(`/organizations/${answer.createOrganization.organization.key}`);\n }\n\n async function restore(organization) {\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`, {\n key: organization.key,\n }),\n t(\"organizations.restored\", { name: organization.name }),\n );\n\n if (done) await load();\n }\n\n function members(organization) {\n const held = t(\"organizations.members\", { count: organization.memberCount });\n\n return organization.pendingCount\n ? t(\"organizations.members_invited\", { members: held, count: organization.pendingCount })\n : held;\n }\n\n function signsIn(organization) {\n return [organization.signInPolicy?.name, ...organization.providers.map((provider) => provider.name)]\n .filter(Boolean)\n .join(\", \");\n }\n</script>\n\n<Page\n title={t(\"organizations.title\")}\n lede={t(\"organizations.lede\")}\n>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"organizations.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if draft}\n <Section title={t(\"organizations.add\")} lede={t(\"organizations.add_lede\")}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"organizations.name\")} value={draft.name} oninput={(event) => named(event.currentTarget.value)} placeholder=\"Acme\" />\n <Field\n label={t(\"organizations.key\")}\n bind:value={draft.key}\n oninput={() => (keyTouched = true)}\n placeholder=\"acme\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <p class=\"hint\">\n {t(\"organizations.key_hint\")}\n <span class=\"font-mono\">organization={draft.key || t(\"organizations.key_word\")}</span>{t(\"organizations.key_hint_end\")}\n </p>\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !draft.key.trim() || !draft.name.trim()}\n onclick={save}\n >\n {busy ? t(\"organizations.adding\") : t(\"organizations.add\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (draft = null)}>{t(\"organizations.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n <Table\n columns={COLUMNS}\n count={data.active.length}\n empty={t(\"organizations.empty\")}\n >\n {#snippet rows()}\n {#each data.active as organization (organization.key)}\n <Row to={`/organizations/${organization.key}`}>\n <td>\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <OrganizationCell {organization}>\n <span class=\"text-xs opacity-85 md:hidden\">{members(organization)}</span>\n </OrganizationCell>\n </div>\n </td>\n <td class=\"hidden text-sm md:table-cell\">\n <OrganizationHeadcount {organization} />\n </td>\n <td class=\"hidden md:table-cell\">\n <div class=\"flex max-w-64 flex-wrap gap-1\">\n {#each organization.roles as role (role)}\n <span class=\"badge badge-ghost badge-sm\">{role}</span>\n {/each}\n </div>\n </td>\n <td class=\"hidden text-sm md:table-cell\">\n <span class:opacity-60={!signsIn(organization)}>{signsIn(organization) || t(\"organizations.tenant_policy\")}</span>\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n\n {#if data.archived.length}\n <Section title={t(\"organizations.archived.title\")} lede={t(\"organizations.archived.lede\")}>\n {#each data.archived as organization (organization.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <Link to={`/organizations/${organization.key}`} class=\"link link-hover text-sm font-medium\">\n {organization.name}\n </Link>\n <span class=\"hint\">\n <span class=\"font-mono\">{organization.key}</span>\n {t(\"organizations.archived.detail\", {\n day: day(organization.archivedAt),\n members: t(\"organizations.members\", { count: organization.memberCount }),\n })}\n </span>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => restore(organization)}>{t(\"organizations.restore\")}</button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import Link from \"./Link.svelte\";\n\n let { counts } = $props();\n</script>\n\n<div class=\"tally\">\n {#each counts as count (count.label)}\n {#if count.to}\n <Link to={count.to} class=\"tally-cell\">\n <span class=\"tally-figure\">{count.value}</span>\n <span class=\"tally-label\">{count.label}</span>\n </Link>\n {:else}\n <div class=\"tally-cell\">\n <span class=\"tally-figure\">{count.value}</span>\n <span class=\"tally-label\">{count.label}</span>\n </div>\n {/if}\n {/each}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Events from \"./Events.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n import Tally from \"./ui/Tally.svelte\";\n\n let { api, organizationKey } = $props();\n\n const router = useRouter();\n const feedback = createFeedback();\n\n const BUILT_IN = [\"owner\", \"member\"];\n\n const QUERY = `\n query Organization($key: ID!) {\n organization(key: $key) {\n uuid key name roles archivedAt createdAt\n memberCount ownerCount pendingCount liveTokenCount\n signInPolicy { key }\n providers { key name roleClaim roleMap unmappedRole }\n domains { domain verifiedAt provider { name } }\n provisioningTokens { id }\n members {\n role pending provisioned invitedAs invitedAt expiresAt expired createdAt\n invitedBy { identifier }\n actor { uuid identifier }\n }\n events {\n id action label createdAt ipAddress details\n actor { uuid identifier } by { uuid identifier } client { clientId name } device { id label }\n }\n }\n signInPolicies { key name }\n providers { key name organization { key } }\n }\n `;\n\n const LENSES = [\n [\"all\", t(\"organization.lenses.all\")],\n [\"owners\", t(\"organization.lenses.owners\")],\n [\"invited\", t(\"organization.lenses.invited\")],\n ];\n\n let organization = $state(null);\n let policies = $state([]);\n let providers = $state([]);\n const idle = () => ({ provider: \"\", roleClaim: \"\", roleMap: \"\", unmappedRole: \"\" });\n\n let handing = $state(idle());\n let loading = $state(true);\n let busy = $state(false);\n let adding = $state(null);\n let lens = $state(\"all\");\n let naming = $state(\"\");\n let role = $state(\"\");\n let invited = $state(null);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY, { key: organizationKey }));\n\n loading = false;\n\n if (!answer) return;\n\n organization = answer.organization;\n policies = answer.signInPolicies;\n providers = answer.providers;\n\n if (organization) naming = organization.name;\n }\n\n load();\n\n const roleOptions = $derived((organization?.roles ?? []).map((held) => [held, held]));\n\n const holding = $derived(\n Object.fromEntries(\n (organization?.roles ?? []).map((held) => [\n held,\n organization.members.filter((member) => member.role === held).length,\n ]),\n ),\n );\n\n const shown = $derived(\n (organization?.members ?? [])\n .filter((member) =>\n lens === \"owners\" ? member.role === \"owner\" && !member.pending : lens === \"invited\" ? member.pending : true,\n )\n .toSorted(\n (a, b) =>\n Number(a.pending) - Number(b.pending) ||\n Number(b.role === \"owner\") - Number(a.role === \"owner\") ||\n named(a).localeCompare(named(b)),\n ),\n );\n\n const revoking = (plain, tokens) =>\n organization.liveTokenCount\n ? t(tokens, { organization: organization.name, count: organization.liveTokenCount })\n : t(plain, { organization: organization.name });\n\n const counts = $derived(\n organization\n ? [\n {\n label: t(\"organization.counts.members\", { count: organization.memberCount }),\n value: organization.memberCount,\n },\n {\n label: t(\"organization.counts.owners\", { count: organization.ownerCount }),\n value: organization.ownerCount,\n },\n { label: t(\"organization.counts.invitations\"), value: organization.pendingCount },\n { label: t(\"organization.counts.live_tokens\"), value: organization.liveTokenCount },\n ]\n : [],\n );\n\n const facts = $derived(\n organization\n ? [\n { term: t(\"organization.facts.key\"), value: organization.key, mono: true },\n { term: t(\"organization.facts.id\"), value: organization.uuid, mono: true },\n { term: t(\"organization.facts.asked_for_with\"), value: `organization=${organization.key}`, mono: true },\n { term: t(\"organization.facts.created\"), value: day(organization.createdAt) },\n ]\n : [],\n );\n\n function named(member) {\n return member.pending ? (member.invitedAs ?? member.actor.identifier) : member.actor.identifier;\n }\n\n function lastOwner(member) {\n return member.role === \"owner\" && !member.pending && organization.ownerCount === 1;\n }\n\n function status(member) {\n if (member.expired) return t(\"organization.status.expired\", { when: since(member.expiresAt) });\n\n if (member.pending) {\n return member.invitedBy\n ? t(\"organization.status.invited_by\", {\n when: since(member.invitedAt),\n by: member.invitedBy.identifier,\n })\n : t(\"organization.status.invited\", { when: since(member.invitedAt) });\n }\n\n return t(member.provisioned ? \"organization.status.from_directory\" : \"organization.status.since\", {\n day: day(member.createdAt),\n });\n }\n\n async function run(query, variables, notice) {\n busy = true;\n\n const answer = await feedback.attempt(() => api.query(query, variables), notice);\n\n busy = false;\n\n if (answer) await load();\n\n return answer;\n }\n\n function openAdding() {\n adding = { email: \"\", role: \"member\" };\n invited = null;\n feedback.clear();\n }\n\n async function add() {\n const email = adding.email.trim();\n\n invited = null;\n\n const answer = await run(\n `mutation Add($organization: ID!, $email: String!, $role: String!) {\n addMember(organization: $organization, email: $email, role: $role) { delivered url }\n }`,\n { organization: organization.key, email, role: adding.role },\n t(\"organization.notices.invited\", { email, role: adding.role }),\n );\n\n if (!answer) return;\n\n adding = null;\n\n if (!answer.addMember.delivered && answer.addMember.url) invited = answer.addMember.url;\n }\n\n function setRole(member, chosen) {\n run(\n `mutation Role($organization: ID!, $uuid: ID!, $role: String!) {\n setMemberRole(organization: $organization, uuid: $uuid, role: $role) { membership { role } }\n }`,\n { organization: organization.key, uuid: member.actor.uuid, role: chosen },\n t(\"organization.notices.role_set\", { name: named(member), role: chosen }),\n );\n }\n\n function remove(member) {\n const question = member.pending\n ? t(\"organization.questions.withdraw\", { name: named(member) })\n : t(\"organization.questions.remove\", { name: named(member), organization: organization.name });\n\n if (!confirm(question)) return;\n\n run(\n `mutation Remove($organization: ID!, $uuid: ID!) {\n removeMember(organization: $organization, uuid: $uuid) { organization { key } }\n }`,\n { organization: organization.key, uuid: member.actor.uuid },\n member.pending\n ? t(\"organization.notices.withdrawn\", { name: named(member) })\n : t(\"organization.notices.removed\", { name: named(member), organization: organization.name }),\n );\n }\n\n function resend(member) {\n run(\n `mutation Resend($organization: ID!, $uuid: ID!) {\n resendOrganizationInvitation(organization: $organization, uuid: $uuid) { delivered }\n }`,\n { organization: organization.key, uuid: member.actor.uuid },\n t(\"organization.notices.resent\", { name: named(member) }),\n );\n }\n\n function saveRoles(roles, notice) {\n return run(\n `mutation Roles($key: ID!, $roles: [String!]) {\n updateOrganization(key: $key, roles: $roles) { organization { key } }\n }`,\n { key: organization.key, roles },\n notice,\n );\n }\n\n const custom = $derived((organization?.roles ?? []).filter((held) => !BUILT_IN.includes(held)));\n\n async function addRole() {\n const chosen = role.trim().toLowerCase();\n\n if (!chosen) return;\n\n if (\n await saveRoles(\n [...custom, chosen],\n t(\"organization.notices.role_added\", { organization: organization.name, role: chosen }),\n )\n )\n role = \"\";\n }\n\n function dropRole(held) {\n saveRoles(\n custom.filter((kept) => kept !== held),\n t(\"organization.notices.role_dropped\", { organization: organization.name, role: held }),\n );\n }\n\n function rename() {\n run(\n `mutation Rename($key: ID!, $name: String) {\n updateOrganization(key: $key, name: $name) { organization { key } }\n }`,\n { key: organization.key, name: naming.trim() },\n t(\"organization.notices.saved\"),\n );\n }\n\n const lines = (map) =>\n Object.entries(map ?? {})\n .map(([group, held]) => `${group} = ${held}`)\n .join(\"\\n\");\n\n const parsed = (text) =>\n Object.fromEntries(\n text\n .split(\"\\n\")\n .map((line) => line.split(\"=\"))\n .filter((parts) => parts.length === 2 && parts[0].trim() && parts[1].trim())\n .map(([group, held]) => [group.trim(), held.trim()]),\n );\n\n const handable = $derived(\n providers.filter((provider) => !provider.organization),\n );\n\n function pickProvider(key) {\n const held = organization.providers.find((provider) => provider.key === key);\n\n handing = {\n provider: key,\n roleClaim: held?.roleClaim ?? \"\",\n roleMap: lines(held?.roleMap),\n unmappedRole: held?.unmappedRole ?? \"\",\n };\n }\n\n function handOver() {\n run(\n `mutation Hand($key: ID!, $organization: ID, $roleClaim: String, $roleMap: JSON, $unmappedRole: String) {\n setProviderOrganization(key: $key, organization: $organization, roleClaim: $roleClaim, roleMap: $roleMap, unmappedRole: $unmappedRole) {\n provider { key }\n }\n }`,\n {\n key: handing.provider,\n organization: organization.key,\n roleClaim: handing.roleClaim.trim() || null,\n roleMap: parsed(handing.roleMap),\n unmappedRole: handing.unmappedRole || null,\n },\n t(\"organization.notices.provider_saved\"),\n ).then((answer) => {\n if (answer) handing = idle();\n });\n }\n\n function handBack(provider) {\n if (\n !confirm(\n t(\"organization.questions.hand_back\", { provider: provider.name, organization: organization.name }),\n )\n )\n return;\n\n run(\n `mutation Back($key: ID!) { setProviderOrganization(key: $key, organization: null) { provider { key } } }`,\n { key: provider.key },\n t(\"organization.notices.provider_back\", { provider: provider.name }),\n );\n }\n\n function setPolicy(key) {\n run(\n `mutation Policy($key: ID!, $policy: ID!) {\n updateOrganization(key: $key, signInPolicy: $policy) { organization { key } }\n }`,\n { key: organization.key, policy: key },\n t(\"organization.notices.saved\"),\n );\n }\n\n async function archive() {\n if (!confirm(revoking(\"organization.questions.archive\", \"organization.questions.archive_tokens\"))) return;\n\n await run(\n `mutation Archive($key: ID!) { archiveOrganization(key: $key) { organization { key } } }`,\n { key: organization.key },\n t(\"organization.notices.archived\", { organization: organization.name }),\n );\n }\n\n function restore() {\n run(\n `mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,\n { key: organization.key },\n t(\"organization.notices.restored\", { organization: organization.name }),\n );\n }\n</script>\n\n<Page\n title={organization?.name ?? t(\"organization.title\")}\n id={organization?.key}\n back={{ to: \"/organizations\", label: t(\"organization.back\") }}\n lede={organization\n ? organization.archivedAt\n ? t(\"organization.archived_lede\", { when: since(organization.archivedAt) })\n : t(\"organization.lede\", { key: organization.key })\n : null}\n>\n <Notices feedback={feedback.state} />\n\n {#if loading && !organization}\n <Spinner />\n {:else if !organization}\n <p class=\"hint\">{t(\"organization.missing\", { key: organizationKey })}\n <Link to=\"/organizations\">{t(\"organization.all\")}</Link></p>\n {:else}\n {#if organization.archivedAt}\n <div class=\"alert alert-warning alert-soft flex flex-wrap items-center justify-between gap-3\" role=\"status\">\n <span>{t(\"organization.archived_alert\", { day: day(organization.archivedAt) })}</span>\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={restore}>{t(\"organization.restore\")}</button>\n </div>\n {/if}\n\n {#if !organization.archivedAt && organization.ownerCount === 0}\n <div class=\"alert alert-warning alert-soft\" role=\"status\">\n {t(\"organization.ownerless\", { organization: organization.name })}\n </div>\n {/if}\n\n <Tally {counts} />\n\n {#if invited}\n <div class=\"alert alert-info alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"organization.invitation_link\")}</span>\n <code class=\"font-mono text-xs break-all\">{invited}</code>\n </div>\n {/if}\n\n <Section\n title={t(\"organization.members.title\")}\n lede={t(\"organization.members.lede\")}\n >\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"organization.members.who\")}>\n {#each LENSES as [key, label] (key)}\n <button type=\"button\" aria-pressed={lens === key} onclick={() => (lens = key)}>{label}</button>\n {/each}\n </div>\n {#if !organization.archivedAt}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={openAdding}>{t(\"organization.members.add\")}</button>\n {/if}\n {/snippet}\n\n {#if adding}\n <div class=\"grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem_auto] sm:items-end\">\n <Field label={t(\"organization.members.email\")} type=\"email\" bind:value={adding.email} placeholder=\"person@example.com\" />\n <Select label={t(\"organization.members.role\")} value={adding.role} options={roleOptions} onchange={(chosen) => (adding.role = chosen)} />\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !adding.email.trim()} onclick={add}>\n {t(\"organization.members.invite\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (adding = null)}>{t(\"organization.members.cancel\")}</button>\n </div>\n </div>\n <p class=\"hint\">\n {t(\"organization.members.hint\")}\n </p>\n {/if}\n\n <Table\n columns={[\n t(\"organization.members.person\"),\n { label: t(\"organization.members.role\"), hide: true },\n { label: \"\", right: true, hide: true },\n ]}\n count={shown.length}\n empty={t(`organization.members.empty.${lens}`)}\n >\n {#snippet rows()}\n {#each shown as member (member.actor.uuid)}\n <tr>\n <td class=\"w-full min-w-0\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <span class=\"flex flex-wrap items-center gap-2\">\n <Link to={`/actors/${member.actor.uuid}`} class=\"link link-hover font-medium break-all\">\n {named(member)}\n </Link>\n {#if member.expired}<span class=\"badge badge-sm badge-error badge-soft\">{t(\"organization.members.expired\")}</span>\n {:else if member.pending}<span class=\"badge badge-sm badge-warning badge-soft\">{t(\"organization.members.invited\")}</span>{/if}\n {#if lastOwner(member)}<span class=\"badge badge-sm badge-ghost\">{t(\"organization.members.last_owner\")}</span>{/if}\n </span>\n <span class=\"hint\">{status(member)}</span>\n <div class=\"mt-2 flex flex-wrap items-center gap-2 md:hidden\">\n <div class=\"min-w-28 flex-1 basis-28\">{@render roleOf(member)}</div>\n <div class=\"-me-3 flex shrink-0\">{@render removeOf(member)}</div>\n </div>\n </div>\n </td>\n <td class=\"hidden w-44 min-w-44 md:table-cell\">\n {@render roleOf(member)}\n </td>\n <td class=\"hidden text-right whitespace-nowrap md:table-cell\">\n {@render removeOf(member)}\n </td>\n </tr>\n {/each}\n {/snippet}\n </Table>\n </Section>\n\n <div class=\"grid items-start gap-4 lg:grid-cols-2\">\n <div class=\"flex flex-col gap-4\">\n <Section\n title={t(\"organization.signing_in.title\")}\n lede={t(\"organization.signing_in.lede\")}\n >\n <Select\n label={t(\"organization.signing_in.policy\")}\n value={organization.signInPolicy?.key ?? \"\"}\n options={[[\"\", t(\"organization.signing_in.inherited\")], ...policies.map((policy) => [policy.key, policy.name])]}\n disabled={busy}\n onchange={setPolicy}\n />\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"organization.signing_in.providers\")}</span>\n\n {#each organization.providers as provider (provider.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2 sheet p-3\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">{provider.name}</span>\n <span class=\"hint\">\n {t(\"organization.signing_in.joins_as\", {\n mapping: Object.keys(provider.roleMap).length\n ? Object.entries(provider.roleMap)\n .map(([group, held]) => `${group} → ${held}`)\n .join(\", \")\n : t(\"organization.signing_in.no_groups_mapped\"),\n role: provider.unmappedRole ?? \"member\",\n })}\n </span>\n </div>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => pickProvider(provider.key)}>{t(\"organization.signing_in.edit\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={() => handBack(provider)}>\n {t(\"organization.signing_in.hand_back\")}\n </button>\n </div>\n </div>\n {:else}\n <p class=\"hint\">\n {t(\"organization.signing_in.no_providers\")}\n </p>\n {/each}\n\n {#if handable.length && !handing.provider}\n <Select\n value=\"\"\n name={t(\"organization.signing_in.give_provider\")}\n options={[\n [\"\", t(\"organization.signing_in.give_provider\")],\n ...handable.map((provider) => [provider.key, provider.name]),\n ]}\n onchange={pickProvider}\n />\n {/if}\n </div>\n\n {#if handing.provider}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <span class=\"font-medium\">\n {providers.find((provider) => provider.key === handing.provider)?.name ?? handing.provider}\n </span>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"organization.signing_in.groups_claim\")} bind:value={handing.roleClaim} placeholder=\"groups\" />\n <Select\n label={t(\"organization.signing_in.unmapped_role\")}\n value={handing.unmappedRole}\n options={[[\"\", \"member\"], ...roleOptions.filter(([held]) => held !== \"member\")]}\n onchange={(chosen) => (handing.unmappedRole = chosen)}\n />\n </div>\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"organization.signing_in.role_map\")}</span>\n <textarea\n class=\"textarea w-full font-mono\"\n rows=\"3\"\n bind:value={handing.roleMap}\n placeholder=\"Acme Admins = owner\"\n ></textarea>\n <p class=\"hint\">{t(\"organization.signing_in.role_map_hint\")}</p>\n </label>\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy} onclick={handOver}>{t(\"organization.signing_in.save\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => (handing = idle())}\n >\n {t(\"organization.signing_in.cancel\")}\n </button>\n </div>\n </div>\n {/if}\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"organization.signing_in.domains\")}</span>\n\n {#each organization.domains as claim (claim.domain)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"font-mono text-sm break-all\">{claim.domain}</span>\n <span class=\"hint\">\n {claim.verifiedAt\n ? t(\"organization.signing_in.proven\", { day: day(claim.verifiedAt) })\n : t(\"organization.signing_in.waiting\")} · {claim.provider?.name}\n </span>\n </div>\n {:else}\n <p class=\"hint\">\n {t(\"organization.signing_in.no_domains\")}\n <Link to=\"/settings\" class=\"link\">{t(\"organization.signing_in.domains_link\")}</Link>\n </p>\n {/each}\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <span class=\"legend\">{t(\"organization.signing_in.provisioning\")}</span>\n <p class=\"hint\">\n {organization.provisioningTokens.length\n ? t(\"organization.signing_in.tokens_reach\", { count: organization.provisioningTokens.length })\n : t(\"organization.signing_in.no_tokens\")}\n <Link to=\"/directory\" class=\"link\">{t(\"organization.signing_in.provisioning_link\")}</Link>\n </p>\n </div>\n </Section>\n </div>\n\n <div class=\"flex flex-col gap-4\">\n <Section title={t(\"organization.roles.title\")} lede={t(\"organization.roles.lede\")}>\n <div class=\"flex flex-wrap gap-2\">\n {#each organization.roles as held (held)}\n <span class=\"badge badge-lg gap-1.5 {BUILT_IN.includes(held) ? 'badge-ghost' : 'badge-outline'}\">\n <span class=\"font-medium\">{held}</span>\n <span class=\"opacity-70\">{holding[held] ?? 0}</span>\n {#if !BUILT_IN.includes(held)}\n <button\n type=\"button\"\n class=\"-mr-1 cursor-pointer px-1 opacity-70 hover:opacity-100 disabled:cursor-not-allowed disabled:opacity-30\"\n aria-label={t(\"organization.roles.stop_offering\", { role: held })}\n title={holding[held]\n ? t(\"organization.roles.held\", { count: holding[held] })\n : t(\"organization.roles.stop_offering\", { role: held })}\n disabled={busy || holding[held] > 0}\n onclick={() => dropRole(held)}\n >\n ×\n </button>\n {/if}\n </span>\n {/each}\n </div>\n <Field\n label={t(\"organization.roles.offer\")}\n bind:value={role}\n placeholder=\"support\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n onsave={addRole}\n save={t(\"organization.roles.add\")}\n />\n <p class=\"hint\">{t(\"organization.roles.hint\")}</p>\n </Section>\n\n <Section title={t(\"organization.details.title\")}>\n <Field label={t(\"organization.details.name\")} bind:value={naming} onsave={rename} />\n <Facts rows={facts} />\n </Section>\n </div>\n </div>\n\n <Section title={t(\"organization.activity.title\")} lede={t(\"organization.activity.lede\")}>\n <Events events={organization.events} empty={t(\"organization.activity.empty\")} />\n </Section>\n\n {#if !organization.archivedAt}\n <Section\n title={t(\"organization.archive.title\")}\n lede={revoking(\"organization.archive.lede\", \"organization.archive.lede_tokens\")}\n >\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline self-start\" disabled={busy} onclick={archive}>\n {t(\"organization.archive.button\", { organization: organization.name })}\n </button>\n </Section>\n {/if}\n {/if}\n</Page>\n\n{#snippet roleOf(member)}\n <Select\n value={member.role}\n options={roleOptions}\n name={t(\"organization.members.role_of\", { name: named(member) })}\n disabled={busy || lastOwner(member) || Boolean(organization.archivedAt)}\n onchange={(chosen) => setRole(member, chosen)}\n />\n{/snippet}\n\n{#snippet removeOf(member)}\n {#if member.pending}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n disabled={busy || Boolean(organization.archivedAt)}\n onclick={() => resend(member)}\n >\n {t(\"organization.members.send_again\")}\n </button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm btn-error\"\n disabled={busy || lastOwner(member)}\n title={lastOwner(member) ? t(\"organization.members.owner_first\") : null}\n onclick={() => remove(member)}\n >\n {member.pending ? t(\"organization.members.withdraw\") : t(\"organization.members.remove\")}\n </button>\n{/snippet}\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { since } from \"./lib/format.js\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Domains {\n domainClaims { domain recordName recordValue verifiedAt missingSince provider { key name } }\n providers { key name }\n tenant { customHost origins }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let busy = $state(false);\n let domain = $state(\"\");\n let host = $state(\"\");\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n if (answer) {\n data = answer;\n host = answer.tenant.customHost ?? \"\";\n }\n }\n\n load();\n\n const providerOptions = $derived([\n [\"\", t(\"domains.here\")],\n ...(data?.providers ?? []).map((provider) => [provider.key, t(\"domains.to\", { name: provider.name })]),\n ]);\n\n const proven = $derived((data?.domainClaims ?? []).filter((held) => held.verifiedAt));\n\n async function run(query, variables, notice) {\n busy = true;\n\n const answer = await feedback.attempt(() => api.query(query, variables), notice);\n\n busy = false;\n\n if (answer) await load();\n\n return answer;\n }\n\n async function claim() {\n const value = domain.trim();\n\n if (!value) return;\n\n const answer = await run(\n `mutation Claim($domain: String!) { claimDomain(domain: $domain) { domainClaim { domain } } }`,\n { domain: value },\n t(\"domains.claimed\", { domain: value }),\n );\n\n if (answer) domain = \"\";\n }\n\n async function check(held) {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Check($domain: String!) { checkDomain(domain: $domain) { found } }`, { domain: held.domain }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.checkDomain.found) {\n feedback.say(t(\"domains.proven\", { domain: held.domain }));\n } else {\n feedback.blame(t(\"domains.unanswered\", { name: held.recordName }));\n }\n\n await load();\n }\n\n function route(held, provider) {\n run(\n `mutation Route($domain: String!, $provider: ID) {\n updateDomainClaim(domain: $domain, provider: $provider) { domainClaim { domain } }\n }`,\n { domain: held.domain, provider: provider || null },\n provider ? t(\"domains.routed_away\", { domain: held.domain }) : t(\"domains.routed_here\", { domain: held.domain }),\n );\n }\n\n function release(held) {\n if (!confirm(t(\"domains.release_confirm\", { domain: held.domain }))) return;\n\n run(\n `mutation Release($domain: String!) { releaseDomain(domain: $domain) { domain } }`,\n { domain: held.domain },\n t(\"domains.released\", { domain: held.domain }),\n );\n }\n\n function serve(value) {\n if (!value && !confirm(t(\"domains.stop_confirm\", { host: data.tenant.customHost }))) return;\n\n run(\n `mutation Serve($host: String) { serveDomain(host: $host) { tenant { customHost } } }`,\n { host: value },\n value ? t(\"domains.served\", { host: value }) : t(\"domains.unserved\"),\n );\n }\n</script>\n\n<Section row title={t(\"domains.title\")} help={t(\"domains.help\")}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n {#if data.domainClaims.length}\n <ul class=\"compact-list\">\n {#each data.domainClaims as held (held.domain)}\n <li class=\"flex-wrap\">\n <code class=\"min-w-0 truncate font-mono text-sm\">{held.domain}</code>\n\n {#if held.missingSince}\n <span class=\"badge badge-warning badge-soft badge-sm\">{t(\"domains.missing\", { since: since(held.missingSince) })}</span>\n {:else if !held.verifiedAt}\n <span class=\"badge badge-ghost badge-sm\">{t(\"domains.unproven\")}</span>\n {/if}\n\n <div class=\"ml-auto flex items-center gap-1\">\n {#if held.verifiedAt && !held.missingSince}\n <Select\n name={t(\"domains.send\", { domain: held.domain })}\n value={held.provider?.key ?? \"\"}\n options={providerOptions}\n disabled={busy}\n onchange={(key) => route(held, key)}\n />\n {:else}\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => check(held)}>{t(\"domains.check\")}</button>\n {/if}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs\"\n aria-label={t(\"domains.release\", { domain: held.domain })}\n disabled={busy}\n onclick={() => release(held)}\n >×</button>\n </div>\n\n {#if !held.verifiedAt || held.missingSince}\n <p class=\"hint w-full\">\n {t(\"domains.record\")}\n <code class=\"font-mono text-xs break-all\">{held.recordName}</code>\n <code class=\"font-mono text-xs break-all\">{held.recordValue}</code>\n </p>\n {/if}\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n claim();\n }}\n >\n <input\n class=\"input input-sm join-item w-full max-w-60 font-mono\"\n aria-label={t(\"domains.new\")}\n placeholder=\"acme.example\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n bind:value={domain}\n />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={busy || !domain.trim()}>{t(\"domains.add\")}</button>\n </form>\n\n {#if proven.length || data.tenant.customHost}\n <form\n class=\"flex flex-wrap items-center gap-2\"\n onsubmit={(event) => {\n event.preventDefault();\n serve(host.trim());\n }}\n >\n <span class=\"text-sm\">{t(\"domains.serve\")}</span>\n <input\n class=\"input input-sm w-full max-w-60 font-mono\"\n aria-label={t(\"domains.serve\")}\n placeholder=\"login.{proven[0]?.domain ?? 'acme.example'}\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n bind:value={host}\n />\n <button type=\"submit\" class=\"btn btn-sm\" disabled={busy || !host.trim() || host.trim() === data.tenant.customHost}>\n {t(\"domains.save\")}\n </button>\n {#if data.tenant.customHost}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" disabled={busy} onclick={() => serve(null)}>{t(\"domains.stop\")}</button>\n {/if}\n </form>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n\n let { api } = $props();\n\n const feedback = createFeedback();\n\n let groups = $state([]);\n let name = $state(\"\");\n\n const key = $derived(\n name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\"),\n );\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(`query Groups { groups { key name memberCount } }`));\n\n if (answer) groups = answer.groups;\n }\n\n load();\n\n async function create() {\n if (!key) return;\n\n const label = name.trim();\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Create($key: String!, $name: String!) { createGroup(key: $key, name: $name) { group { key } } }`, {\n key,\n name: label,\n }),\n t(\"groups.added\", { name: label }),\n );\n\n if (!done) return;\n\n name = \"\";\n await load();\n }\n\n async function remove(group) {\n if (!confirm(t(\"groups.delete_confirm\", { name: group.name }))) return;\n\n const done = await feedback.attempt(\n () => api.query(`mutation Delete($key: String!) { deleteGroup(key: $key) { key } }`, { key: group.key }),\n t(\"groups.deleted\", { name: group.name }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"groups.title\")} help={t(\"groups.lede\")}>\n <Notices feedback={feedback.state} />\n\n {#if groups.length}\n <ul class=\"compact-list\">\n {#each groups as group (group.key)}\n <li>\n <span class=\"min-w-0 truncate text-sm font-medium\">{group.name}</span>\n <code class=\"hint font-mono\">{group.key}</code>\n <span class=\"hint\">{t(\"groups.people\", { count: group.memberCount })}</span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs ml-auto\"\n aria-label={t(\"groups.delete\", { name: group.name })}\n onclick={() => remove(group)}\n >×</button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n create();\n }}\n >\n <input class=\"input input-sm join-item w-full max-w-60\" aria-label={t(\"groups.new\")} placeholder={t(\"groups.new\")} bind:value={name} />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={!key}>{t(\"groups.add\")}</button>\n </form>\n\n {#if key}\n <p class=\"hint\">{t(\"groups.key\", { key })}</p>\n {/if}\n</Section>\n","<script>\n import { t } from \"../lib/copy.js\";\n let { points, label } = $props();\n\n const W = 720;\n const H = 168;\n const FOOT = 22;\n const PLOT = H - FOOT;\n const GAP = 2;\n const CAP = 2;\n\n const peak = $derived(Math.max(1, ...points.map((point) => point.value)));\n const step = $derived(W / Math.max(points.length, 1));\n const width = $derived(Math.max(step - GAP, 1));\n const total = $derived(points.reduce((sum, point) => sum + point.value, 0));\n\n let hovered = $state(null);\n\n function share(index) {\n return ((index + 0.5) / Math.max(points.length, 1)) * 100;\n }\n\n function bar(value, x) {\n const height = value === 0 ? 2 : Math.max((value / peak) * (PLOT - 8), 3);\n const y = PLOT - height;\n const radius = Math.min(CAP, width / 2, height);\n\n return [\n `M ${x} ${PLOT}`,\n `L ${x} ${y + radius}`,\n `Q ${x} ${y} ${x + radius} ${y}`,\n `L ${x + width - radius} ${y}`,\n `Q ${x + width} ${y} ${x + width} ${y + radius}`,\n `L ${x + width} ${PLOT}`,\n \"Z\",\n ].join(\" \");\n }\n\n const ticks = $derived(\n points.length\n ? [0, Math.floor((points.length - 1) / 2), points.length - 1]\n .filter((at, index, all) => all.indexOf(at) === index)\n .map((at) => ({ at, point: points[at] }))\n : [],\n );\n</script>\n\n<figure class=\"chart\">\n <figcaption class=\"chart-head\">\n <span class=\"sr-only\">{label}</span>\n <span class=\"chart-peak\">{t(\"ui.bar_chart.peak\", { peak })}</span>\n </figcaption>\n\n <div class=\"chart-plot tray\">\n <svg\n viewBox=\"0 0 {W} {H}\"\n class=\"chart-svg\"\n role=\"img\"\n aria-label={t(\"ui.bar_chart.summary\", { label, total, days: points.length, peak })}\n >\n <line class=\"chart-base\" x1=\"0\" y1={PLOT} x2={W} y2={PLOT} />\n\n {#each points as point, index (point.key)}\n <path\n class=\"chart-bar\"\n class:chart-bar-idle={point.value === 0}\n class:chart-bar-on={hovered?.index === index}\n d={bar(point.value, index * step)}\n />\n {/each}\n\n {#each points as point, index (point.key)}\n <rect\n class=\"chart-hit\"\n x={index * step}\n y=\"0\"\n width={step}\n height={PLOT}\n onmouseenter={() => (hovered = { ...point, index })}\n onmouseleave={() => (hovered = null)}\n onfocus={() => (hovered = { ...point, index })}\n onblur={() => (hovered = null)}\n tabindex=\"-1\"\n role=\"presentation\"\n />\n {/each}\n </svg>\n\n {#if hovered}\n <div\n class=\"chart-tip\"\n style=\"--at: {share(hovered.index)}%\"\n aria-hidden=\"true\"\n >\n <strong>{hovered.value}</strong>\n {t(\"ui.bar_chart.unit\", { count: hovered.value })}\n <span>{hovered.label}</span>\n </div>\n {/if}\n </div>\n\n <div class=\"chart-axis\">\n {#each ticks as tick (tick.at)}\n <span style=\"--at: {share(tick.at)}%\">{tick.point.label}</span>\n {/each}\n </div>\n\n <table class=\"sr-only\">\n <caption>{label}</caption>\n <thead><tr><th>{t(\"ui.bar_chart.day\")}</th><th>{t(\"ui.bar_chart.units\")}</th></tr></thead>\n <tbody>\n {#each points as point (point.key)}\n <tr><td>{point.label}</td><td>{point.value}</td></tr>\n {/each}\n </tbody>\n </table>\n</figure>\n","<script>\n import { t } from \"../lib/copy.js\";\n import Spinner from \"./Spinner.svelte\";\n\n let { load, children } = $props();\n\n let state = $state({ loading: true, failure: null, data: null });\n\n async function run() {\n state.loading = true;\n state.failure = null;\n\n try {\n state.data = await load();\n } catch (thrown) {\n state.failure = thrown.message;\n } finally {\n state.loading = false;\n }\n }\n\n run();\n</script>\n\n{#if state.loading}\n <Spinner />\n{:else if state.failure}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">\n <span>{state.failure}</span>\n <button type=\"button\" class=\"btn btn-sm\" onclick={run}>{t(\"ui.retry\")}</button>\n </div>\n{:else}\n {@render children(state.data, run)}\n{/if}\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Events from \"./Events.svelte\";\n import DomainsSection from \"./DomainsSection.svelte\";\n import GroupsSection from \"./GroupsSection.svelte\";\n import Namespaces from \"./Namespaces.svelte\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import BarChart from \"./ui/BarChart.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Facts from \"./ui/Facts.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import OrganizationCell from \"./OrganizationCell.svelte\";\n import OrganizationHeadcount from \"./OrganizationHeadcount.svelte\";\n import Loader from \"./ui/Loader.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Tally from \"./ui/Tally.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Row from \"./ui/Row.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Table from \"./ui/Table.svelte\";\n\n let { api, boot, overview = false } = $props();\n\n const QUERY = `\n query Tenant {\n tenant {\n uuid subdomain name dynamicRegistration dynamicClientScopes createdAt mails accentColor logoUrl keyRotationDays\n eventRetentionDays\n signingKeys { kid algorithm activatedAt retiredAt state }\n }\n viewer { identifier scopes }\n tally { actors clients devices organizations }\n namespaces {\n name resource claimedAt releasable\n client { clientId name }\n }\n scopesSupported\n }\n `;\n\n const EVENT_FIELDS = `\n id action label createdAt ipAddress details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n `;\n\n const ACTIVITY = `\n query Activity($days: Int) {\n activity(days: $days) { date signIns }\n }\n `;\n\n const RECENT = `\n query Recent {\n worrying: events(grave: true, limit: 8) { ${EVENT_FIELDS} }\n latest: events(limit: 8) { ${EVENT_FIELDS} }\n }\n `;\n\n const ORGANIZATIONS_SHOWN = 5;\n\n const ORGANIZATIONS = `\n query Organizations {\n organizations(limit: ${ORGANIZATIONS_SHOWN}) { key name memberCount ownerCount pendingCount }\n }\n `;\n\n const SPANS = [7, 30, 90];\n\n const RETENTION = [\n [30, t(\"settings.retention.days_30\")],\n [90, t(\"settings.retention.days_90\")],\n [180, t(\"settings.retention.days_180\")],\n [365, t(\"settings.retention.a_year\")],\n [1095, t(\"settings.retention.three_years\")],\n [2555, t(\"settings.retention.seven_years\")],\n ];\n\n const choices = (listed, held) =>\n !held || listed.some(([days]) => days === held) ? listed : [...listed, [held, t(\"settings.after_days\", { days: held })]];\n\n const BADGE = {\n staged: \"badge-warning\",\n active: \"badge-success\",\n retiring: \"badge-info\",\n retired: \"badge-ghost\",\n };\n\n const MARK = new Intl.DateTimeFormat(undefined, { day: \"numeric\", month: \"short\" });\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let name = $state(\"\");\n let loading = $state(true);\n let days = $state(30);\n\n const counts = $derived(\n data\n ? [\n { to: \"/actors\", label: t(\"settings.counts.actors\"), value: data.tally.actors },\n { to: \"/clients\", label: t(\"settings.counts.clients\"), value: data.tally.clients },\n { to: \"/organizations\", label: t(\"settings.counts.organizations\"), value: data.tally.organizations },\n { to: \"/actors#devices\", label: t(\"settings.counts.devices\"), value: data.tally.devices },\n ]\n : [],\n );\n\n const STARTED = \"masks:manage:started\";\n\n let hidden = $state(false);\n\n try {\n hidden = localStorage.getItem(STARTED) === \"1\";\n } catch {}\n\n function hideStarting() {\n hidden = true;\n\n try {\n localStorage.setItem(STARTED, \"1\");\n } catch {}\n }\n\n const starting = $derived(\n data\n ? [\n {\n done: data.tenant.mails,\n title: t(\"settings.starting.mail.title\"),\n detail: t(\"settings.starting.mail.detail\"),\n to: \"/messages\",\n action: t(\"settings.starting.mail.action\"),\n },\n {\n done: data.tally.clients > 0,\n title: t(\"settings.starting.client.title\"),\n detail: t(\"settings.starting.client.detail\"),\n to: \"/clients\",\n action: t(\"settings.starting.client.action\"),\n },\n {\n done: data.tally.actors > 1,\n title: t(\"settings.starting.invite.title\"),\n detail: t(\"settings.starting.invite.detail\"),\n to: \"/actors\",\n action: t(\"settings.starting.invite.action\"),\n },\n ]\n : [],\n );\n\n const plotted = (rows) =>\n rows.map((row) => ({\n key: row.date,\n value: row.signIns,\n label: MARK.format(new Date(`${row.date}T00:00:00`)),\n }));\n\n async function load() {\n loading = true;\n\n try {\n data = await api.query(QUERY);\n name = data.tenant.name;\n } catch (thrown) {\n feedback.blame(thrown);\n } finally {\n loading = false;\n }\n }\n\n load();\n\n async function update(changes, notice) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Update(\n $name: String, $dynamicClientScopes: [String!], $dynamicRegistration: String,\n $eventRetentionDays: Int, $accentColor: String, $keyRotationDays: Int\n ) {\n updateTenant(\n name: $name\n dynamicClientScopes: $dynamicClientScopes\n dynamicRegistration: $dynamicRegistration\n eventRetentionDays: $eventRetentionDays\n accentColor: $accentColor\n keyRotationDays: $keyRotationDays\n ) { tenant { name } }\n }`,\n changes,\n ),\n notice,\n );\n\n if (done) await load();\n }\n\n async function chooseLogo(event) {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n if (!file) return;\n\n await keys(\n `mutation Logo($logo: Upload!) { uploadTenantLogo(logo: $logo) { tenant { logoUrl } } }`,\n { logo: file },\n t(\"settings.branding.logo_updated\"),\n );\n\n input.value = \"\";\n }\n\n async function keys(query, variables, notice) {\n const done = await feedback.attempt(() => api.query(query, variables), notice);\n\n if (done) await load();\n }\n\n const stage = () =>\n keys(\n `mutation Stage { stageSigningKey { signingKey { kid } } }`,\n {},\n t(\"settings.keys.staged_notice\"),\n );\n\n function activate(kid) {\n if (!confirm(t(\"settings.keys.activate_confirm\"))) return;\n\n return keys(\n `mutation Activate($kid: ID!) { activateSigningKey(kid: $kid) { signingKey { kid } } }`,\n { kid },\n t(\"settings.keys.activated_notice\"),\n );\n }\n\n function discard(kid) {\n if (!confirm(t(\"settings.keys.discard_confirm\"))) return;\n\n return keys(\n `mutation Discard($kid: ID!) { discardSigningKey(kid: $kid) { kid } }`,\n { kid },\n t(\"settings.keys.discarded\"),\n );\n }\n\n function rotate() {\n if (!confirm(t(\"settings.keys.rotate_confirm\"))) return;\n\n return keys(\n `mutation Rotate { rotateSigningKey { signingKey { kid } } }`,\n {},\n t(\"settings.keys.rotated\"),\n );\n }\n</script>\n\n{#if loading && !data}\n <Spinner />\n{:else if !data}\n <div class=\"alert alert-error alert-soft text-sm\" role=\"alert\">{feedback.state.failure}</div>\n{:else if overview}\n <Page\n title={data.tenant.name}\n id={boot.issuer}\n hero\n >\n {#if !hidden && starting.some((step) => !step.done)}\n <Section title={t(\"settings.starting.title\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={hideStarting}>{t(\"settings.starting.hide\")}</button>\n {/snippet}\n\n <ol class=\"flex flex-col gap-3\">\n {#each starting as step (step.title)}\n <li class=\"flex flex-wrap items-start justify-between gap-3\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span class=\"text-sm font-semibold\" class:line-through={step.done} class:opacity-60={step.done}>\n {step.done ? \"✓ \" : \"\"}{step.title}\n </span>\n {#if !step.done}\n <span class=\"text-sm opacity-80\">{step.detail}</span>\n {/if}\n </div>\n {#if !step.done}\n <Link to={step.to} class=\"btn btn-sm\">{step.action}</Link>\n {/if}\n </li>\n {/each}\n </ol>\n </Section>\n {/if}\n\n <Tally {counts} />\n\n <div class=\"dash\">\n <div class=\"dash-main\">\n <Section title={t(\"settings.sign_ins.title\")}>\n {#snippet actions()}\n <div class=\"range\" role=\"group\" aria-label={t(\"settings.sign_ins.range\")}>\n {#each SPANS as span (span)}\n <button type=\"button\" aria-pressed={days === span} onclick={() => (days = span)}>\n {t(\"settings.sign_ins.span\", { days: span })}\n </button>\n {/each}\n </div>\n {/snippet}\n\n {#key days}\n <Loader load={() => api.query(ACTIVITY, { days })}>\n {#snippet children(activity)}\n <BarChart points={plotted(activity.activity)} label={t(\"settings.sign_ins.chart\")} />\n {/snippet}\n </Loader>\n {/key}\n </Section>\n\n <Section title={t(\"settings.organizations.title\")}>\n {#snippet actions()}\n <Link to=\"/organizations\" class=\"btn btn-ghost btn-sm\">\n {data.tally.organizations > ORGANIZATIONS_SHOWN\n ? t(\"settings.organizations.all_count\", { count: data.tally.organizations })\n : t(\"settings.organizations.all\")}\n </Link>\n {/snippet}\n\n <Loader load={() => api.query(ORGANIZATIONS)}>\n {#snippet children(held)}\n <Table\n columns={[t(\"settings.organizations.organization\"), { label: t(\"settings.organizations.members\"), right: true }]}\n count={held.organizations.length}\n empty={t(\"settings.organizations.empty\")}\n >\n {#snippet rows()}\n {#each held.organizations as organization (organization.key)}\n <Row to={`/organizations/${organization.key}`}>\n <td>\n <OrganizationCell {organization} />\n </td>\n <td class=\"text-right text-sm\">\n <OrganizationHeadcount {organization} class=\"flex flex-col items-end\" />\n </td>\n </Row>\n {/each}\n {/snippet}\n </Table>\n {/snippet}\n </Loader>\n </Section>\n </div>\n\n <div class=\"dash-side\">\n <Loader load={() => api.query(RECENT)}>\n {#snippet children(recent)}\n {#if recent.worrying.length}\n <Section title={t(\"settings.recent.worrying\")}>\n {#snippet actions()}\n <Link to=\"/activity\" class=\"btn btn-sm\">{t(\"settings.recent.all\")}</Link>\n {/snippet}\n\n <Events events={recent.worrying} />\n </Section>\n {/if}\n\n <Section title={t(\"settings.recent.lately\")}>\n {#snippet actions()}\n <Link to=\"/activity\" class=\"btn btn-ghost btn-sm\">{t(\"settings.recent.all\")}</Link>\n {/snippet}\n\n <Events events={recent.latest} empty={t(\"settings.recent.empty\")} />\n </Section>\n {/snippet}\n </Loader>\n </div>\n </div>\n </Page>\n{:else}\n <Page title={t(\"settings.title\")}>\n <Notices feedback={feedback.state} />\n\n <div class=\"grid gap-4\">\n <Section\n row\n title={t(\"settings.tenant.title\")}\n help={t(\"settings.tenant.help\")}\n >\n <Field label={t(\"settings.tenant.name\")} bind:value={name} onsave={() => update({ name }, t(\"settings.tenant.renamed\"))} />\n\n <Facts\n rows={[\n { term: t(\"settings.tenant.subdomain\"), value: data.tenant.subdomain, mono: true },\n { term: t(\"settings.tenant.issuer\"), value: boot.issuer, mono: true },\n { term: t(\"settings.tenant.resource\"), value: boot.resource, mono: true },\n { term: t(\"settings.tenant.since\"), value: day(data.tenant.createdAt) },\n ]}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.branding.title\")}\n help={t(\"settings.branding.help\")}\n >\n <div class=\"flex flex-wrap items-center gap-3\">\n {#if data.tenant.logoUrl}\n <img src={data.tenant.logoUrl} alt=\"\" width=\"48\" height=\"48\" class=\"rounded-lg\" />\n {/if}\n\n <label class=\"btn btn-sm\">\n {data.tenant.logoUrl ? t(\"settings.branding.change_logo\") : t(\"settings.branding.upload_logo\")}\n <input type=\"file\" class=\"hidden\" accept=\"image/png,image/jpeg,image/webp,image/gif\" onchange={chooseLogo} />\n </label>\n\n {#if data.tenant.logoUrl}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => keys(`mutation { removeTenantLogo { tenant { logoUrl } } }`, {}, t(\"settings.branding.logo_removed\"))}\n >\n {t(\"settings.branding.remove\")}\n </button>\n {/if}\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input\n type=\"color\"\n value={data.tenant.accentColor ?? \"#b3380f\"}\n onchange={(event) => update({ accentColor: event.currentTarget.value }, t(\"settings.branding.color_updated\"))}\n />\n {t(\"settings.branding.accent\")}\n </label>\n\n {#if data.tenant.accentColor}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => update({ accentColor: \"\" }, t(\"settings.branding.color_reset\"))}>\n {t(\"settings.branding.own\")}\n </button>\n {/if}\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.retention.title\")}\n help={t(\"settings.retention.help\")}\n >\n <Select\n value={data.tenant.eventRetentionDays}\n options={choices(RETENTION, data.tenant.eventRetentionDays)}\n onchange={(days) => update({ eventRetentionDays: Number(days) }, t(\"settings.retention.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.registration.title\")}\n help={t(\"settings.registration.help\")}\n >\n <Select\n value={data.tenant.dynamicRegistration}\n options={[\n [\"off\", t(\"settings.registration.off\")],\n [\"anything\", t(\"settings.registration.on\")],\n [\"bounded\", t(\"settings.registration.bounded\")],\n ]}\n onchange={(dynamicRegistration) =>\n update({ dynamicRegistration }, t(\"settings.registration.updated\"))}\n />\n\n {#if data.tenant.dynamicRegistration === \"bounded\"}\n <ScopesEditor\n value={data.tenant.dynamicClientScopes ?? []}\n available={data.scopesSupported}\n onchange={(dynamicClientScopes) => update({ dynamicClientScopes }, t(\"settings.registration.ceiling_updated\"))}\n />\n {/if}\n </Section>\n\n {#if data.namespaces.length}\n <Namespaces {api} rows={data.namespaces} onreleased={load} showClient row />\n {/if}\n\n <Section row title={t(\"settings.keys.title\")} help={t(\"settings.keys.help\")}>\n <ul class=\"compact-list\">\n {#each data.tenant.signingKeys as key (key.kid)}\n <li class=\"flex-wrap\">\n <code class=\"font-mono text-sm\">{key.kid.slice(0, 8)}</code>\n <span class=\"badge badge-sm {BADGE[key.state]}\">{BADGE[key.state] ? t(`settings.keys.states.${key.state}`) : key.state}</span>\n <span class=\"hint text-xs\">\n {key.algorithm} ·\n {#if key.state === \"retiring\"}\n {t(\"settings.keys.until\", { day: day(key.retiredAt) })}\n {:else}\n {day(key.activatedAt, t(\"settings.keys.not_yet\"))}\n {/if}\n </span>\n\n {#if key.state === \"staged\"}\n <div class=\"ml-auto flex gap-1\">\n <button type=\"button\" class=\"btn btn-xs\" onclick={() => activate(key.kid)}>{t(\"settings.keys.activate\")}</button>\n <button type=\"button\" class=\"btn btn-xs btn-ghost\" onclick={() => discard(key.kid)}>{t(\"settings.keys.discard\")}</button>\n </div>\n {/if}\n </li>\n {/each}\n </ul>\n\n <div class=\"flex flex-wrap items-center gap-2\">\n <Select\n name={t(\"settings.keys.schedule\")}\n value={String(data.tenant.keyRotationDays ?? 0)}\n options={[0, 30, 90, 180, 365].map((days) => [\n String(days),\n days ? t(\"settings.keys.every\", { count: days }) : t(\"settings.keys.by_hand\"),\n ])}\n onchange={(days) => update({ keyRotationDays: Number(days) }, t(\"settings.keys.scheduled\"))}\n />\n <button type=\"button\" class=\"btn btn-sm\" onclick={stage}>{t(\"settings.keys.stage\")}</button>\n <button type=\"button\" class=\"btn btn-sm btn-ghost\" onclick={rotate}>{t(\"settings.keys.rotate\")}</button>\n </div>\n </Section>\n\n <GroupsSection {api} />\n\n <DomainsSection {api} />\n </div>\n </Page>\n{/if}\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { part } = $props();\n</script>\n\n<nav class=\"settings-tabs\" aria-label={t(\"activity.title\")}>\n <Link to=\"/activity\" class=\"settings-tab {part === 'log' ? 'settings-tab-on' : ''}\">{t(\"activity.parts.log\")}</Link>\n <Link to=\"/activity/streams\" class=\"settings-tab {part === 'streams' ? 'settings-tab-on' : ''}\">{t(\"activity.parts.streams\")}</Link>\n</nav>\n","<script>\n import ActivityParts from \"./ActivityParts.svelte\";\n import Tip from \"./ui/Tip.svelte\";\n import { t } from \"./lib/copy.js\";\n import { createPages } from \"./lib/pages.svelte.js\";\n import Pager from \"./ui/Pager.svelte\";\n import { untrack } from \"svelte\";\n import Events from \"./Events.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { useRouter } from \"./lib/router.svelte.js\";\n import Section from \"./ui/Section.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api } = $props();\n\n const pages = createPages();\n\n const FIELDS = `\n id action label createdAt ipAddress userAgent details\n actor { uuid identifier }\n by { uuid identifier }\n client { clientId name }\n device { id label }\n `;\n\n const QUERY = `\n query Activity(\n $action: String, $grave: Boolean, $afterId: ID, $limit: Int,\n $actor: ID, $client: ID\n ) {\n events(\n action: $action, grave: $grave, afterId: $afterId, limit: $limit,\n actor: $actor, client: $client\n ) { ${FIELDS} }\n eventCount(action: $action, grave: $grave, actor: $actor, client: $client)\n eventActions { action label }\n }\n `;\n\n const ABOUT_ACTOR = `query About($uuid: ID!) { actor(uuid: $uuid) { uuid identifier } }`;\n const ABOUT_CLIENT = `query About($clientId: ID!) { client(clientId: $clientId) { clientId name } }`;\n\n const feedback = createFeedback();\n const router = useRouter();\n\n let events = $state([]);\n let actions = $state([]);\n let exporting = $state(false);\n\n const today = () => new Date().toISOString().slice(0, 10);\n const daysAgo = (days) => new Date(Date.now() - days * 86400000).toISOString().slice(0, 10);\n\n let range = $state({ from: daysAgo(30), to: today() });\n let action = $state(\"\");\n let grave = $state(false);\n let loading = $state(true);\n let about = $state(null);\n\n const actorId = $derived(router.query.get(\"actor\"));\n const clientId = $derived(router.query.get(\"client\"));\n const narrowed = $derived(Boolean(actorId || clientId));\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() =>\n api.query(QUERY, {\n action: action || null,\n grave,\n afterId: pages.cursor,\n limit: pages.size,\n actor: actorId,\n client: clientId,\n }),\n );\n\n loading = false;\n\n if (!data) return;\n\n actions = data.eventActions;\n events = data.events;\n pages.counted(data.eventCount);\n }\n\n function turn(direction) {\n if (direction === \"forward\") pages.forward(events.at(-1)?.id);\n else pages.back();\n\n load();\n }\n\n async function describe() {\n about = null;\n\n if (actorId) {\n const data = await api.query(ABOUT_ACTOR, { uuid: actorId }).catch(() => null);\n\n if (data?.actor) {\n about = { label: data.actor.identifier, to: `/actors/${data.actor.uuid}`, noun: t(\"activity.nouns.actor\") };\n }\n\n return;\n }\n\n if (!clientId) return;\n\n const data = await api.query(ABOUT_CLIENT, { clientId }).catch(() => null);\n\n if (data?.client) {\n about = { label: data.client.name, to: `/clients/${data.client.clientId}`, noun: t(\"activity.nouns.client\") };\n }\n }\n\n $effect(() => {\n actorId;\n clientId;\n\n untrack(() => {\n pages.reset();\n load();\n describe();\n });\n });\n\n function filter(chosen) {\n action = chosen;\n pages.reset();\n load();\n }\n\n function only(worrying) {\n grave = worrying;\n if (worrying) action = \"\";\n pages.reset();\n load();\n }\n\n async function download() {\n exporting = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Export($from: ISO8601DateTime!, $to: ISO8601DateTime!, $action: String, $actor: ID) {\n exportEvents(from: $from, to: $to, action: $action, actor: $actor) { url count }\n }`,\n {\n from: new Date(`${range.from}T00:00:00`).toISOString(),\n to: new Date(new Date(`${range.to}T00:00:00`).getTime() + 86400000).toISOString(),\n action: action || null,\n actor: actorId || null,\n },\n ),\n );\n\n exporting = false;\n\n if (!answer) return;\n\n feedback.say(t(\"activity.downloading\", { count: answer.exportEvents.count }));\n location.assign(answer.exportEvents.url);\n }\n</script>\n\n<Page title={t(\"activity.title\")}>\n <ActivityParts part=\"log\" />\n\n <Notices feedback={feedback.state} />\n\n {#if narrowed}\n <div class=\"alert alert-info alert-soft flex-wrap items-center gap-3 text-sm\" role=\"status\">\n {#if about}\n <span>\n {t(\"activity.involves\", { noun: about.noun })}\n <Link to={about.to} class=\"link font-medium\">{about.label}</Link>{t(\"activity.involves_end\")}\n </span>\n {:else}\n <span>{t(actorId ? \"activity.gone.actor\" : \"activity.gone.client\")}</span>\n {/if}\n\n <Link to=\"/activity\" class=\"btn btn-sm\">{t(\"activity.everything\")}</Link>\n </div>\n {/if}\n\n <Section>\n <div class=\"flex flex-wrap items-end gap-4\">\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"legend\">{t(\"activity.show\")}</span>\n <select\n class=\"select select-sm w-full max-w-xs\"\n value={action}\n disabled={grave}\n onchange={(event) => filter(event.currentTarget.value)}\n >\n <option value=\"\">{t(\"activity.all\")}</option>\n {#each actions as one (one.action)}\n <option value={one.action}>{one.label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex items-center gap-2 pb-1 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n checked={grave}\n onchange={(event) => only(event.currentTarget.checked)}\n />\n {t(\"activity.grave\")}\n </label>\n\n <div class=\"flex flex-col gap-1.5 md:ml-auto\">\n <span class=\"legend flex items-center gap-2\">\n {t(\"activity.export.title\")}\n <Tip text={t(\"activity.export.lede\")} label={t(\"activity.export.title\")} />\n </span>\n <div class=\"flex flex-wrap items-center gap-2\">\n <input class=\"input input-sm w-auto\" type=\"date\" aria-label={t(\"activity.export.from\")} bind:value={range.from} max={range.to} />\n <span class=\"hint\">–</span>\n <input class=\"input input-sm w-auto\" type=\"date\" aria-label={t(\"activity.export.through\")} bind:value={range.to} min={range.from} max={today()} />\n <button type=\"button\" class=\"btn btn-sm\" disabled={exporting || !range.from || !range.to} onclick={download}>\n {t(\"activity.export.download\")}\n </button>\n </div>\n </div>\n </div>\n </Section>\n\n {#if loading && events.length === 0}\n <Spinner />\n {:else}\n <Section>\n <Events\n {events}\n empty={grave ? t(\"activity.empty.grave\") : t(\"activity.empty.plain\")}\n />\n\n <Pager {pages} shown={events.length} busy={loading} onpage={turn} />\n </Section>\n {/if}\n</Page>\n","<script>\n import Connections from \"./Connections.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day } from \"./lib/format.js\";\n import Empty from \"./ui/Empty.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import { t } from \"./lib/copy.js\";\n\n let { api } = $props();\n\n const PROTOCOLS = Object.fromEntries(\n [\"oidc\", \"oauth2\", \"saml\", \"mcp\"].map((protocol) => [protocol, t(`providers.protocols.${protocol}`)]),\n );\n\n const MAPPED = [\"email\", \"email_verified\", \"name\", \"given_name\", \"family_name\", \"preferred_username\", \"picture\"].map(\n (claim) => [claim, t(`providers.claims.${claim}`)],\n );\n\n const NAME_ID_FORMATS = [\n [\"\", t(\"providers.name_id_formats.any\")],\n [\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\", t(\"providers.name_id_formats.persistent\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\", t(\"providers.name_id_formats.email\")],\n [\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\", t(\"providers.name_id_formats.unspecified\")],\n ];\n\n const ASKED = {\n domain: [t(\"providers.asked.domain\"), \"acme.okta.com\"],\n tenant: [t(\"providers.asked.tenant\"), \"00000000-0000-0000-0000-000000000000\"],\n realm: [t(\"providers.asked.realm\"), \"staff\"],\n };\n\n const FIELDS = `\n key name protocol preset authorizationUrl tokenUrl userinfoUrl emailsUrl clientId\n scopes authorizeParams subjectClaim claims tokenAuthMethod responseMode teamId keyId\n secretHeld privateKeyHeld connections signedIn archivedAt createdAt callbackUrl\n issuer jwksUri role trustsEmail receivesSignals emailDomains signupScopes\n idpEntityId idpSsoUrl idpCertificates metadataUrl metadataFetchedAt nameIdFormat spEntityId\n delegates delegatedScopes delegationParams delegationScope resourceUrl registeredAt delegations\n `;\n\n const QUERY = `\n query Providers {\n active: providers { ${FIELDS} }\n archived: providers(archived: true) { ${FIELDS} }\n providerPresets { key name protocol asks needs defaults guide custom trustsEmail delegates delegatedScopes }\n connections {\n id subject label email emailVerified connectedAt signedInAt delegable\n provider { key name }\n actor { uuid identifier }\n delegations { id releasedAt client { clientId name } }\n }\n }\n `;\n\n const ARGUMENTS = [\n [\"name\", \"String\"],\n [\"protocol\", \"String\"],\n [\"authorizationUrl\", \"String\"],\n [\"tokenUrl\", \"String\"],\n [\"userinfoUrl\", \"String\"],\n [\"emailsUrl\", \"String\"],\n [\"clientId\", \"String\"],\n [\"clientSecret\", \"String\"],\n [\"scopes\", \"[String!]\"],\n [\"subjectClaim\", \"String\"],\n [\"claims\", \"JSON\"],\n [\"issuer\", \"String\"],\n [\"jwksUri\", \"String\"],\n [\"tokenAuthMethod\", \"String\"],\n [\"responseMode\", \"String\"],\n [\"teamId\", \"String\"],\n [\"keyId\", \"String\"],\n [\"privateKey\", \"String\"],\n [\"idpEntityId\", \"String\"],\n [\"idpSsoUrl\", \"String\"],\n [\"idpCertificates\", \"String\"],\n [\"metadataUrl\", \"String\"],\n [\"nameIdFormat\", \"String\"],\n [\"role\", \"String\"],\n [\"trustsEmail\", \"Boolean\"],\n [\"receivesSignals\", \"Boolean\"],\n [\"emailDomains\", \"[String!]\"],\n [\"signupScopes\", \"[String!]\"],\n [\"delegates\", \"Boolean\"],\n [\"delegatedScopes\", \"[String!]\"],\n [\"delegationParams\", \"JSON\"],\n [\"resourceUrl\", \"String\"],\n ];\n\n const declared = (extra) =>\n [...extra, ...ARGUMENTS].map(([name, type]) => `$${name}: ${type}`).join(\", \");\n\n const passed = (extra) => [...extra, ...ARGUMENTS].map(([name]) => `${name}: $${name}`).join(\", \");\n\n const CREATE_EXTRA = [\n [\"key\", \"ID!\"],\n [\"preset\", \"ID\"],\n [\"presetValues\", \"JSON\"],\n ];\n\n const CREATE = `\n mutation Create(${declared(CREATE_EXTRA).replace(\"$name: String\", \"$name: String!\")}) {\n createProvider(${passed(CREATE_EXTRA)}) { provider { key callbackUrl } }\n }\n `;\n\n const UPDATE = `\n mutation Update(${declared([[\"key\", \"ID!\"]])}) {\n updateProvider(${passed([[\"key\", \"ID!\"]])}) { provider { key } }\n }\n `;\n\n const DISCOVER = `\n mutation Discover($issuer: String!) {\n discoverProvider(issuer: $issuer) { issuer authorizationUrl tokenUrl userinfoUrl jwksUri }\n }\n `;\n\n const METADATA = `\n mutation Metadata($metadataUrl: String, $metadataXml: String) {\n readSamlMetadata(metadataUrl: $metadataUrl, metadataXml: $metadataXml) {\n idpEntityId idpSsoUrl idpCertificates\n }\n }\n `;\n\n const blank = (preset) => ({\n key: preset.custom ? \"\" : preset.key,\n name: preset.custom ? \"\" : preset.name,\n preset: preset.custom ? null : preset.key,\n protocol: preset.protocol,\n asked: { ...preset.defaults },\n authorizationUrl: \"\",\n tokenUrl: \"\",\n userinfoUrl: \"\",\n emailsUrl: \"\",\n clientId: \"\",\n clientSecret: \"\",\n scopes: \"\",\n subjectClaim: preset.protocol === \"oidc\" ? \"sub\" : preset.protocol === \"saml\" ? \"name_id\" : \"id\",\n claims: {},\n issuer: \"\",\n jwksUri: \"\",\n tokenAuthMethod: preset.needs.includes(\"private_key\") ? \"signed_secret\" : \"client_secret_post\",\n responseMode: \"\",\n teamId: \"\",\n keyId: \"\",\n privateKey: \"\",\n idpEntityId: \"\",\n idpSsoUrl: \"\",\n idpCertificates: \"\",\n metadataUrl: \"\",\n metadataXml: \"\",\n nameIdFormat: \"\",\n role: \"credential\",\n trustsEmail: Boolean(preset.trustsEmail),\n receivesSignals: false,\n emailDomains: \"\",\n signupScopes: \"\",\n delegates: Boolean(preset.delegates),\n delegatedScopes: (preset.delegatedScopes ?? []).join(\" \"),\n delegationParams: \"\",\n resourceUrl: \"\",\n });\n\n const feedback = createFeedback();\n\n let active = $state([]);\n let archived = $state([]);\n let presets = $state([]);\n let connected = $state([]);\n let loading = $state(true);\n let busy = $state(false);\n let picking = $state(false);\n let editing = $state(null);\n let chosen = $state(null);\n let draft = $state(null);\n\n async function load() {\n loading = true;\n\n const data = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (!data) return;\n\n active = data.active;\n archived = data.archived;\n presets = data.providerPresets;\n connected = data.connections;\n }\n\n load();\n\n const connectionsFor = (provider) =>\n connected.filter((held) => held.provider.key === provider.key);\n\n const presetNamed = (key) => presets.find((preset) => preset.key === key);\n\n const fresh = $derived(editing === \"\");\n const custom = $derived(fresh ? Boolean(chosen?.custom) : true);\n const saml = $derived(draft?.protocol === \"saml\");\n const oauth2 = $derived(draft?.protocol === \"oauth2\");\n const oidc = $derived(draft?.protocol === \"oidc\");\n const mcp = $derived(draft?.protocol === \"mcp\");\n const signsSecret = $derived(draft?.tokenAuthMethod === \"signed_secret\");\n const origin = typeof window === \"undefined\" ? \"\" : window.location.origin;\n const callbackUrl = $derived(`${origin}/login/provider/${draft?.key?.trim() || \"…\"}/callback`);\n const spEntityId = $derived(`${origin}/login/provider/${draft?.key?.trim() || \"…\"}/metadata`);\n\n function add() {\n picking = true;\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n function pick(preset) {\n chosen = preset;\n picking = false;\n editing = \"\";\n draft = blank(preset);\n feedback.clear();\n }\n\n function edit(provider) {\n picking = false;\n chosen = presetNamed(provider.preset) ?? null;\n editing = provider.key;\n draft = {\n ...blank({ key: provider.key, name: provider.name, protocol: provider.protocol, needs: [], defaults: {}, custom: true }),\n key: provider.key,\n name: provider.name,\n preset: provider.preset,\n authorizationUrl: provider.authorizationUrl ?? \"\",\n tokenUrl: provider.tokenUrl ?? \"\",\n userinfoUrl: provider.userinfoUrl ?? \"\",\n emailsUrl: provider.emailsUrl ?? \"\",\n clientId: provider.clientId ?? \"\",\n scopes: provider.scopes.join(\" \"),\n subjectClaim: provider.subjectClaim,\n claims: { ...provider.claims },\n issuer: provider.issuer ?? \"\",\n jwksUri: provider.jwksUri ?? \"\",\n tokenAuthMethod: provider.tokenAuthMethod,\n responseMode: provider.responseMode ?? \"\",\n teamId: provider.teamId ?? \"\",\n keyId: provider.keyId ?? \"\",\n idpEntityId: provider.idpEntityId ?? \"\",\n idpSsoUrl: provider.idpSsoUrl ?? \"\",\n idpCertificates: provider.idpCertificates ?? \"\",\n metadataUrl: provider.metadataUrl ?? \"\",\n nameIdFormat: provider.nameIdFormat ?? \"\",\n role: provider.role,\n trustsEmail: provider.trustsEmail,\n receivesSignals: provider.receivesSignals,\n emailDomains: provider.emailDomains.join(\" \"),\n signupScopes: provider.signupScopes.join(\" \"),\n delegates: provider.delegates,\n delegatedScopes: provider.delegatedScopes.join(\" \"),\n delegationParams: pairs(provider.delegationParams),\n resourceUrl: provider.resourceUrl ?? \"\",\n };\n feedback.clear();\n }\n\n function close() {\n picking = false;\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n const trimmed = (value) => value?.trim() || null;\n const words = (value) => value.split(/[\\s,]+/).filter(Boolean);\n const pairs = (held) =>\n Object.entries(held ?? {})\n .map(([name, value]) => `${name}=${value}`)\n .join(\" \");\n const params = (value) =>\n Object.fromEntries(\n words(value)\n .map((pair) => pair.split(\"=\"))\n .filter(([name, held]) => name && held !== undefined)\n .map(([name, ...rest]) => [name, rest.join(\"=\")]),\n );\n\n function claims() {\n return Object.fromEntries(\n Object.entries(draft.claims)\n .map(([claim, path]) => [claim, path?.trim()])\n .filter(([, path]) => path),\n );\n }\n\n function variables() {\n const held = {\n key: draft.key.trim(),\n name: draft.name.trim(),\n role: draft.role,\n trustsEmail: saml ? false : draft.trustsEmail,\n receivesSignals: oidc ? draft.receivesSignals : false,\n emailDomains: words(draft.emailDomains),\n signupScopes: words(draft.signupScopes),\n clientSecret: trimmed(draft.clientSecret),\n privateKey: trimmed(draft.privateKey),\n delegates: saml ? false : mcp || draft.delegates,\n delegatedScopes: saml ? [] : words(draft.delegatedScopes),\n delegationParams: saml ? {} : params(draft.delegationParams),\n };\n\n if (fresh && !custom) {\n return {\n ...held,\n preset: draft.preset,\n presetValues: draft.asked,\n clientId: trimmed(draft.clientId),\n teamId: trimmed(draft.teamId),\n keyId: trimmed(draft.keyId),\n metadataUrl: trimmed(draft.metadataUrl),\n ...(saml ? metadataFields() : {}),\n ...(mcp ? { resourceUrl: trimmed(draft.resourceUrl) } : {}),\n };\n }\n\n return {\n ...held,\n protocol: draft.protocol,\n authorizationUrl: saml ? null : trimmed(draft.authorizationUrl),\n tokenUrl: saml ? null : trimmed(draft.tokenUrl),\n userinfoUrl: saml ? null : trimmed(draft.userinfoUrl),\n emailsUrl: oauth2 ? trimmed(draft.emailsUrl) : null,\n clientId: saml ? null : trimmed(draft.clientId),\n scopes: saml ? [] : words(draft.scopes),\n subjectClaim: draft.subjectClaim.trim(),\n claims: claims(),\n issuer: oidc ? trimmed(draft.issuer) : null,\n jwksUri: oidc ? trimmed(draft.jwksUri) : null,\n tokenAuthMethod: draft.tokenAuthMethod,\n responseMode: trimmed(draft.responseMode),\n teamId: signsSecret ? trimmed(draft.teamId) : null,\n keyId: signsSecret ? trimmed(draft.keyId) : null,\n metadataUrl: saml ? trimmed(draft.metadataUrl) : null,\n nameIdFormat: saml ? trimmed(draft.nameIdFormat) : null,\n resourceUrl: mcp ? trimmed(draft.resourceUrl) : null,\n ...(saml ? metadataFields() : { idpEntityId: null, idpSsoUrl: null, idpCertificates: null }),\n };\n }\n\n const metadataFields = () => ({\n idpEntityId: trimmed(draft.idpEntityId),\n idpSsoUrl: trimmed(draft.idpSsoUrl),\n idpCertificates: trimmed(draft.idpCertificates),\n nameIdFormat: trimmed(draft.nameIdFormat),\n });\n\n async function discover() {\n busy = true;\n\n const data = await feedback.attempt(\n () => api.query(DISCOVER, { issuer: draft.issuer.trim() }),\n t(\"providers.notices.discovered\"),\n );\n\n busy = false;\n\n if (!data) return;\n\n const found = data.discoverProvider;\n\n draft.issuer = found.issuer;\n draft.authorizationUrl = found.authorizationUrl;\n draft.tokenUrl = found.tokenUrl;\n draft.jwksUri = found.jwksUri;\n draft.userinfoUrl = found.userinfoUrl ?? draft.userinfoUrl;\n }\n\n async function readMetadata() {\n busy = true;\n\n const data = await feedback.attempt(\n () =>\n api.query(METADATA, {\n metadataUrl: trimmed(draft.metadataUrl),\n metadataXml: trimmed(draft.metadataXml),\n }),\n t(\"providers.notices.metadata_read\"),\n );\n\n busy = false;\n\n if (!data) return;\n\n Object.assign(draft, data.readSamlMetadata);\n draft.metadataXml = \"\";\n }\n\n async function save() {\n busy = true;\n\n const adding = fresh;\n const done = await feedback.attempt(\n () => api.query(adding ? CREATE : UPDATE, variables()),\n adding\n ? mcp\n ? t(\"providers.notices.registered\", { name: draft.name })\n : t(\"providers.notices.added\", { name: draft.name })\n : t(\"providers.notices.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n close();\n\n await load();\n }\n\n async function act(mutation, provider, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { provider { key } } }`, {\n key: provider.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n const archive = (provider) =>\n act(\n \"archiveProvider\",\n provider,\n t(\"providers.notices.archived\", { name: provider.name }),\n t(\"providers.confirm.archive\", { name: provider.name }),\n );\n\n const restore = (provider) => act(\"restoreProvider\", provider, t(\"providers.notices.restored\", { name: provider.name }));\n\n const register = (provider) =>\n act(\n \"registerProvider\",\n provider,\n t(\"providers.notices.reregistered\", { name: provider.name }),\n t(\"providers.confirm.register\", { name: provider.name }),\n );\n\n function copy(value) {\n navigator.clipboard?.writeText(value);\n feedback.clear();\n }\n\n const needsSecret = $derived(\n !saml && !mcp && !signsSecret && (fresh ? (chosen?.needs ?? [\"client_secret\"]).includes(\"client_secret\") : true),\n );\n\n const complete = $derived.by(() => {\n if (!draft?.key.trim() || !draft.name.trim()) return false;\n if (fresh && !custom) return (chosen?.asks ?? []).every((variable) => draft.asked[variable]?.trim());\n if (saml) return draft.idpEntityId.trim() && draft.idpSsoUrl.trim() && draft.idpCertificates.trim();\n if (mcp) return fresh ? draft.resourceUrl.trim() : true;\n\n return draft.clientId.trim() && draft.authorizationUrl.trim() && draft.tokenUrl.trim();\n });\n</script>\n\n<Page title={t(\"providers.title\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"providers.add\")}</button>\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if picking}\n <Section title={t(\"providers.add\")} help={t(\"providers.picker.help\")}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"providers.cancel\")}</button>\n {/snippet}\n\n <div class=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-3\">\n {#each presets as preset (preset.key)}\n <button\n type=\"button\"\n class=\"flex items-baseline justify-between gap-3 sheet sheet-press px-3 py-2.5 text-left\"\n onclick={() => pick(preset)}\n >\n <span class=\"text-sm font-medium\">{preset.name}</span>\n <span class=\"font-mono text-xs opacity-75\">{preset.protocol}</span>\n </button>\n {/each}\n </div>\n </Section>\n {/if}\n\n {#if draft}\n <Section\n title={fresh\n ? t(\"providers.form.add_title\", { name: chosen?.custom ? PROTOCOLS[draft.protocol] : chosen?.name })\n : t(\"providers.form.edit_title\", { name: draft.name })}\n lede={chosen?.guide ? null : PROTOCOLS[draft.protocol]}\n >\n {#if chosen?.guide && fresh}\n <p class=\"text-sm opacity-85\">\n {t(\"providers.form.guide_lead\", { name: chosen.name })}\n <a class=\"link\" href={chosen.guide} target=\"_blank\" rel=\"noreferrer noopener\">{t(\"providers.form.guide_link\", { name: chosen.name })}</a>.\n </p>\n {/if}\n\n <div class=\"flex flex-col gap-2 tray p-3\">\n <span class=\"legend\">{t(\"providers.form.give\", { name: draft.name.trim() || t(\"providers.form.the_provider\") })}</span>\n\n {#each saml ? [[t(\"providers.form.acs_url\"), callbackUrl], [t(\"providers.form.sp_entity_id\"), spEntityId]] : [[t(\"providers.form.redirect_uri\"), callbackUrl]] as [label, value] (label)}\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"hint\">{label}</span>\n <button type=\"button\" class=\"link font-mono text-xs break-all\" onclick={() => copy(value)}>\n {value}\n </button>\n </div>\n {/each}\n </div>\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"providers.form.name\")} bind:value={draft.name} placeholder=\"Acme\" />\n <Field\n label={t(\"providers.form.key\")}\n bind:value={draft.key}\n disabled={!fresh}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"acme\"\n />\n </div>\n\n {#if fresh && !custom && chosen.asks.length}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n {#each chosen.asks as variable (variable)}\n <Field\n label={ASKED[variable]?.[0] ?? variable}\n bind:value={draft.asked[variable]}\n placeholder={ASKED[variable]?.[1] ?? \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {/each}\n </div>\n {/if}\n\n {#if saml}\n <div class=\"flex flex-col gap-3\">\n <span class=\"legend\">{t(\"providers.form.identity_provider\")}</span>\n\n <div class=\"flex flex-wrap items-end gap-3\">\n <div class=\"min-w-64 flex-1\">\n <Field\n label={t(\"providers.form.metadata_url\")}\n bind:value={draft.metadataUrl}\n placeholder=\"https://idp.acme.test/metadata\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n </div>\n <button\n type=\"button\"\n class=\"btn btn-sm\"\n disabled={busy || !(draft.metadataUrl.trim() || draft.metadataXml.trim())}\n onclick={readMetadata}\n >\n {t(\"providers.form.read\")}\n </button>\n </div>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.paste_metadata\")}</span>\n <textarea class=\"textarea textarea-sm w-full font-mono text-xs\" rows=\"3\" bind:value={draft.metadataXml}></textarea>\n </label>\n\n <p class=\"hint\">\n {t(\"providers.form.metadata_hint\")}\n </p>\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"providers.form.entity_id\")} bind:value={draft.idpEntityId} />\n <Field label={t(\"providers.form.sign_in_url\")} bind:value={draft.idpSsoUrl} />\n </div>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.certificates\")}</span>\n <textarea class=\"textarea textarea-sm w-full font-mono text-xs\" rows=\"4\" bind:value={draft.idpCertificates}></textarea>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.name_id_format\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.nameIdFormat}>\n {#each NAME_ID_FORMATS as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n {/if}\n\n {#if mcp}\n <div class=\"flex flex-col gap-2\">\n {#if fresh && custom}\n <Field\n label={t(\"providers.form.mcp_url\")}\n bind:value={draft.resourceUrl}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://mcp.acme.test/mcp\"\n />\n {:else}\n <span class=\"font-mono text-xs break-all opacity-85\">{draft.resourceUrl}</span>\n {/if}\n <p class=\"hint\">\n {t(\"providers.form.mcp_hint\")}\n </p>\n </div>\n {/if}\n\n {#if custom && oidc}\n <div class=\"flex flex-wrap items-end gap-3\">\n <div class=\"min-w-64 flex-1\">\n <Field\n label={t(\"providers.form.issuer\")}\n bind:value={draft.issuer}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"https://id.acme.test\"\n />\n </div>\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy || !draft.issuer.trim()} onclick={discover}>\n {t(\"providers.form.discover\")}\n </button>\n </div>\n {/if}\n\n {#if custom && !saml && !mcp}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"providers.form.authorization_url\")} bind:value={draft.authorizationUrl} />\n <Field label={t(\"providers.form.token_url\")} bind:value={draft.tokenUrl} />\n <Field\n label={t(\"providers.form.userinfo_url\")}\n bind:value={draft.userinfoUrl}\n placeholder={oauth2 ? \"\" : t(\"providers.form.optional\")}\n />\n {#if oauth2}\n <Field label={t(\"providers.form.emails_url\")} bind:value={draft.emailsUrl} placeholder={t(\"providers.form.optional\")} />\n {:else}\n <Field\n label={t(\"providers.form.jwks_uri\")}\n bind:value={draft.jwksUri}\n placeholder={t(\"providers.form.discovered_if_empty\")}\n />\n {/if}\n </div>\n {/if}\n\n {#if !saml && !mcp}\n <div class=\"flex flex-col gap-3\">\n <span class=\"legend\">{t(\"providers.form.credentials\")}</span>\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={signsSecret ? t(\"providers.form.services_id\") : t(\"providers.form.client_id\")}\n bind:value={draft.clientId}\n autocomplete=\"off\"\n />\n {#if needsSecret}\n <Field\n label={t(\"providers.form.client_secret\")}\n type=\"password\"\n bind:value={draft.clientSecret}\n autocomplete=\"off\"\n placeholder={fresh ? \"\" : t(\"providers.form.unchanged\")}\n />\n {/if}\n </div>\n\n {#if signsSecret}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field label={t(\"providers.form.team_id\")} bind:value={draft.teamId} autocomplete=\"off\" />\n <Field label={t(\"providers.form.key_id\")} bind:value={draft.keyId} autocomplete=\"off\" />\n </div>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.private_key\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full font-mono text-xs\"\n rows=\"4\"\n bind:value={draft.privateKey}\n placeholder={fresh ? \"-----BEGIN PRIVATE KEY-----\" : t(\"providers.form.unchanged\")}\n ></textarea>\n </label>\n {/if}\n\n {#if custom}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"providers.form.sends_secret\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.tokenAuthMethod}>\n <option value=\"client_secret_post\">{t(\"providers.form.secret_post\")}</option>\n <option value=\"client_secret_basic\">{t(\"providers.form.secret_basic\")}</option>\n <option value=\"signed_secret\">{t(\"providers.form.secret_signed\")}</option>\n </select>\n </label>\n <Field\n label={t(\"providers.form.extra_scopes\")}\n bind:value={draft.scopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={oidc ? t(\"providers.form.oidc_scopes\") : \"read:user\"}\n />\n </div>\n {/if}\n </div>\n {/if}\n\n {#if custom && !mcp}\n <details class=\"text-sm\" open={oauth2 || saml}>\n <summary class=\"cursor-pointer opacity-85\">{t(\"providers.form.claims\")}</summary>\n\n <div class=\"grid gap-3 pt-3 sm:grid-cols-2\">\n <Field\n label={saml\n ? t(\"providers.form.subject_saml\")\n : oidc\n ? t(\"providers.form.subject_oidc\")\n : t(\"providers.form.subject_path\")}\n bind:value={draft.subjectClaim}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {#each MAPPED.filter(([claim]) => !(saml && claim === \"email_verified\")) as [claim, label] (claim)}\n <Field\n {label}\n bind:value={draft.claims[claim]}\n placeholder={saml ? t(\"providers.form.attribute_name\") : claim}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n {/each}\n </div>\n </details>\n {/if}\n\n {#if !saml}\n <div class=\"flex flex-col gap-3 tray p-3\">\n <span class=\"legend\">{t(\"providers.form.applications\")}</span>\n\n {#if !mcp}\n <label class=\"flex items-start gap-3 text-sm\">\n <input type=\"checkbox\" class=\"toggle toggle-sm\" bind:checked={draft.delegates} />\n <span>\n {t(\"providers.form.delegates\", { name: draft.name.trim() || t(\"providers.form.provider\") })}\n <span class=\"hint block\">\n {t(\"providers.form.delegates_hint\", { name: draft.name.trim() || t(\"providers.form.the_provider\") })}\n </span>\n </span>\n </label>\n {/if}\n\n {#if draft.delegates || mcp}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"providers.form.delegated_scopes\")}\n bind:value={draft.delegatedScopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={mcp ? t(\"providers.form.server_grants\") : \"https://www.googleapis.com/auth/drive.readonly\"}\n />\n <Field\n label={t(\"providers.form.delegation_params\")}\n bind:value={draft.delegationParams}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"access_type=offline prompt=consent\"\n />\n </div>\n <p class=\"hint\">\n {t(\"providers.form.delegation_asks\")}\n <span class=\"font-mono\">masks:delegate:{draft.key.trim() || \"key\"}</span>.\n {t(\"providers.form.delegation_reconnect\")}\n </p>\n {/if}\n </div>\n {/if}\n\n {#if !mcp}\n <div class=\"flex flex-col gap-3 tray p-3\">\n <span class=\"legend\">{t(\"providers.form.signing_in\")}</span>\n\n <label class=\"flex items-start gap-3 text-sm\">\n <input\n type=\"checkbox\"\n class=\"toggle toggle-sm\"\n checked={draft.role === \"delegate\"}\n onchange={(event) => (draft.role = event.currentTarget.checked ? \"delegate\" : \"credential\")}\n />\n <span>\n {t(\"providers.form.owns\", { name: draft.name.trim() || t(\"providers.form.this_provider\") })}\n <span class=\"hint block\">\n {t(\"providers.form.owns_hint\", { name: draft.name.trim() || t(\"providers.form.the_provider\") })}\n </span>\n </span>\n </label>\n\n {#if !saml}\n <label class=\"flex items-start gap-3 text-sm\">\n <input type=\"checkbox\" class=\"toggle toggle-sm\" bind:checked={draft.trustsEmail} />\n <span>\n {t(\"providers.form.trusts_email\")}\n <span class=\"hint block\">\n {t(\"providers.form.trusts_email_hint\")}\n </span>\n </span>\n </label>\n {/if}\n\n {#if oidc}\n <label class=\"flex items-start gap-3 text-sm\">\n <input type=\"checkbox\" class=\"toggle toggle-sm\" bind:checked={draft.receivesSignals} />\n <span>\n {t(\"providers.form.signals\")}\n <span class=\"hint block\">\n {t(\"providers.form.signals_lead\")} <code>{origin}/ssf/events</code>.\n {t(\"providers.form.signals_rest\")}\n </span>\n </span>\n </label>\n {/if}\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={saml ? t(\"providers.form.saml_domains\") : t(\"providers.form.domains\")}\n bind:value={draft.emailDomains}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder={t(\"providers.form.any_domain\")}\n />\n {#if draft.role === \"delegate\"}\n <Field\n label={t(\"providers.form.signup_scopes\")}\n bind:value={draft.signupScopes}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n placeholder=\"openid profile email offline_access identities\"\n />\n {/if}\n </div>\n </div>\n {/if}\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {busy ? t(\"providers.form.saving\") : fresh ? t(\"providers.form.add\") : t(\"providers.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"providers.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if loading && active.length === 0 && archived.length === 0}\n <Spinner />\n {:else if active.length === 0 && archived.length === 0 && !picking && !draft}\n <Empty>\n {t(\"providers.empty\")}\n </Empty>\n {:else}\n {#each active as provider (provider.key)}\n <Section title={provider.name} lede={provider.key}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(provider)}>{t(\"providers.edit\")}</button>\n {#if provider.protocol === \"mcp\"}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => register(provider)}>{t(\"providers.register\")}</button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm btn-error btn-outline\" onclick={() => archive(provider)}>\n {t(\"providers.archive\")}\n </button>\n {/snippet}\n\n <div class=\"flex flex-wrap gap-2\">\n <span class=\"badge badge-ghost badge-sm\">{PROTOCOLS[provider.protocol]}</span>\n {#if provider.protocol === \"mcp\"}\n <span class=\"badge badge-ghost badge-sm\">{t(\"providers.badges.never_signs_in\")}</span>\n {:else if provider.role === \"delegate\"}\n <span class=\"badge badge-warning badge-sm\">{t(\"providers.badges.owns_accounts\")}</span>\n {:else}\n <span class=\"badge badge-ghost badge-sm\">{t(\"providers.badges.existing_only\")}</span>\n {/if}\n {#if provider.trustsEmail}\n <span class=\"badge badge-ghost badge-sm\">{t(\"providers.badges.trusts_email\")}</span>\n {/if}\n {#if provider.receivesSignals}\n <span class=\"badge badge-ghost badge-sm\">{t(\"providers.badges.signals\")}</span>\n {/if}\n {#if provider.delegates}\n <span class=\"badge badge-info badge-sm\">{t(\"providers.badges.delegates\")}</span>\n {/if}\n {#each provider.emailDomains as domain (domain)}\n <span class=\"badge badge-ghost badge-sm font-mono\">@{domain}</span>\n {/each}\n </div>\n\n <dl class=\"grid gap-x-6 gap-y-2 text-sm sm:grid-cols-2\">\n <div class=\"sm:col-span-2\">\n <dt class=\"term\">\n {provider.protocol === \"saml\" ? t(\"providers.facts.acs_url\") : t(\"providers.facts.redirect_uri\")}\n </dt>\n <dd>\n <button type=\"button\" class=\"link font-mono text-xs break-all\" onclick={() => copy(provider.callbackUrl)}>\n {provider.callbackUrl}\n </button>\n </dd>\n </div>\n\n {#if provider.protocol === \"saml\"}\n <div class=\"sm:col-span-2\">\n <dt class=\"term\">{t(\"providers.facts.sp_entity_id\")}</dt>\n <dd>\n <a class=\"link font-mono text-xs break-all\" href={provider.spEntityId} target=\"_blank\" rel=\"noreferrer\">\n {provider.spEntityId}\n </a>\n </dd>\n </div>\n <div>\n <dt class=\"term\">{t(\"providers.facts.identity_provider\")}</dt>\n <dd class=\"font-mono text-xs break-all\">{provider.idpEntityId}</dd>\n </div>\n <div>\n <dt class=\"term\">{t(\"providers.facts.metadata\")}</dt>\n <dd class=\"text-xs\">\n {#if provider.metadataUrl}\n {t(\"providers.facts.metadata_read\", {\n day: provider.metadataFetchedAt ? day(provider.metadataFetchedAt) : t(\"providers.facts.never\"),\n })}\n {:else}\n {t(\"providers.facts.pasted\")}\n {/if}\n </dd>\n </div>\n {:else if provider.protocol !== \"mcp\"}\n <div>\n <dt class=\"term\">{t(\"providers.facts.client_id\")}</dt>\n <dd class=\"font-mono break-all\">{provider.clientId}</dd>\n </div>\n <div>\n <dt class=\"term\">\n {provider.tokenAuthMethod === \"signed_secret\" ? t(\"providers.facts.signing_key\") : t(\"providers.facts.secret\")}\n </dt>\n <dd>\n {#if provider.tokenAuthMethod === \"signed_secret\" ? provider.privateKeyHeld : provider.secretHeld}\n {t(\"providers.facts.held\")}\n {:else}\n <span class=\"text-warning\">{t(\"providers.facts.none_set\")}</span>\n {/if}\n </dd>\n </div>\n {#if provider.issuer}\n <div>\n <dt class=\"term\">{t(\"providers.facts.issuer\")}</dt>\n <dd class=\"font-mono text-xs break-all\">{provider.issuer}</dd>\n </div>\n {/if}\n <div>\n <dt class=\"term\">{t(\"providers.facts.scopes\")}</dt>\n <dd class=\"font-mono text-xs break-all\">{provider.scopes.join(\" \") || \"—\"}</dd>\n </div>\n {/if}\n\n {#if provider.protocol === \"mcp\"}\n <div class=\"sm:col-span-2\">\n <dt class=\"term\">{t(\"providers.facts.mcp_server\")}</dt>\n <dd class=\"font-mono text-xs break-all\">{provider.resourceUrl}</dd>\n </div>\n <div>\n <dt class=\"term\">{t(\"providers.facts.registered\")}</dt>\n <dd class=\"text-xs\">{provider.registeredAt ? day(provider.registeredAt) : t(\"providers.facts.never\")}</dd>\n </div>\n {/if}\n\n {#if provider.delegates}\n <div>\n <dt class=\"term\">{t(\"providers.facts.delegation_scope\")}</dt>\n <dd class=\"font-mono text-xs break-all\">{provider.delegationScope}</dd>\n </div>\n <div>\n <dt class=\"term\">{t(\"providers.facts.delegations\")}</dt>\n <dd>{provider.delegations}</dd>\n </div>\n {#if provider.delegatedScopes.length}\n <div class=\"sm:col-span-2\">\n <dt class=\"term\">{t(\"providers.facts.delegated_scopes\")}</dt>\n <dd class=\"font-mono text-xs break-all\">{provider.delegatedScopes.join(\" \")}</dd>\n </div>\n {/if}\n {/if}\n\n <div>\n <dt class=\"term\">{t(\"providers.facts.connections\")}</dt>\n <dd>\n {provider.connections}\n {#if provider.signedIn}\n <span class=\"hint\">· {t(\"providers.facts.signed_in\", { count: provider.signedIn })}</span>\n {/if}\n </dd>\n </div>\n </dl>\n\n {#if connectionsFor(provider).length}\n <details class=\"text-sm\">\n <summary class=\"cursor-pointer opacity-85\">\n {t(\"providers.connected\", { count: connectionsFor(provider).length })}\n </summary>\n\n <div class=\"pt-3\">\n <Connections {api} {feedback} rows={connectionsFor(provider)} onchange={load} showActor />\n </div>\n </details>\n {/if}\n </Section>\n {/each}\n\n {#if archived.length}\n <Section title={t(\"providers.archived\")}>\n <ul class=\"slats\">\n {#each archived as provider (provider.key)}\n <li class=\"slat\">\n <div class=\"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1\">\n <span class=\"flex flex-wrap items-baseline gap-2\">\n <span class=\"text-sm font-medium\">{provider.name}</span>\n <span class=\"font-mono text-xs opacity-75\">{provider.key}</span>\n </span>\n\n <span class=\"flex items-baseline gap-3 text-xs\">\n <span class=\"opacity-80\">{t(\"providers.archived_on\", { day: day(provider.archivedAt) })}</span>\n <button type=\"button\" class=\"link\" onclick={() => restore(provider)}>{t(\"providers.restore\")}</button>\n </span>\n </div>\n </li>\n {/each}\n </ul>\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const FIELDS = `key name kind service label primary settings secretsHeld archivedAt createdAt`;\n\n const QUERY = `\n query Senders {\n active: senders { ${FIELDS} }\n archived: senders(archived: true) { ${FIELDS} }\n senderServices {\n service kind label\n fields { key label type secret required options default hint }\n }\n tenant { mails texts }\n }\n `;\n\n const KINDS = [\n {\n kind: \"mail\",\n title: t(\"senders.kinds.mail.title\"),\n lede: t(\"senders.kinds.mail.lede\"),\n idle: t(\"senders.kinds.mail.idle\"),\n to: \"you@example.com\",\n },\n {\n kind: \"sms\",\n title: t(\"senders.kinds.sms.title\"),\n lede: t(\"senders.kinds.sms.lede\"),\n idle: t(\"senders.kinds.sms.idle\"),\n to: \"+15551234567\",\n },\n ];\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state(null);\n let testing = $state({});\n\n const services = $derived(data?.senderServices ?? []);\n const serviceOf = (name) => services.find((held) => held.service === name);\n const forKind = (list, kind) => (list ?? []).filter((held) => held.kind === kind);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n function blankConfig(service) {\n return Object.fromEntries(\n service.fields.map((field) => [\n field.key,\n field.secret ? \"\" : (field.default ?? (field.type === \"boolean\" ? false : \"\")),\n ]),\n );\n }\n\n function add(kind) {\n const service = services.find((held) => held.kind === kind);\n\n editing = \"\";\n draft = {\n kind,\n service: service.service,\n key: \"\",\n name: \"\",\n primary: forKind(data.active, kind).length === 0,\n config: blankConfig(service),\n };\n feedback.clear();\n }\n\n function pick(name) {\n const service = serviceOf(name);\n\n draft.service = name;\n draft.config = blankConfig(service);\n\n if (!draft.key) draft.key = name.replace(/_/g, \"-\");\n if (!draft.name) draft.name = service.label;\n }\n\n function edit(sender) {\n const service = serviceOf(sender.service);\n\n editing = sender.key;\n draft = {\n kind: sender.kind,\n service: sender.service,\n key: sender.key,\n name: sender.name,\n primary: sender.primary,\n secretsHeld: sender.secretsHeld,\n config: Object.fromEntries(\n service.fields.map((field) => [\n field.key,\n field.secret ? \"\" : (sender.settings[field.key] ?? field.default ?? \"\"),\n ]),\n ),\n };\n feedback.clear();\n }\n\n function close() {\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n function config() {\n const service = serviceOf(draft.service);\n\n return Object.fromEntries(\n service.fields\n .filter((field) => !(field.secret && !draft.config[field.key]))\n .map((field) => [\n field.key,\n field.type === \"integer\" ? Number(draft.config[field.key]) || null : draft.config[field.key],\n ]),\n );\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const done = await feedback.attempt(\n () =>\n fresh\n ? api.query(\n `mutation Create($key: ID!, $service: String!, $name: String!, $config: JSON, $primary: Boolean) {\n createSender(key: $key, service: $service, name: $name, config: $config, primary: $primary) {\n sender { key }\n }\n }`,\n {\n key: draft.key.trim(),\n service: draft.service,\n name: draft.name.trim(),\n config: config(),\n primary: draft.primary,\n },\n )\n : api.query(\n `mutation Update($key: ID!, $name: String, $config: JSON, $primary: Boolean) {\n updateSender(key: $key, name: $name, config: $config, primary: $primary) {\n sender { key }\n }\n }`,\n { key: draft.key, name: draft.name.trim(), config: config(), primary: draft.primary },\n ),\n fresh ? t(\"senders.added\", { name: draft.name }) : t(\"senders.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n close();\n await load();\n }\n\n async function act(mutation, sender, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { sender { key } } }`, {\n key: sender.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n async function makePrimary(sender) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Primary($key: ID!) { updateSender(key: $key, primary: true) { sender { key } } }`,\n { key: sender.key },\n ),\n t(\"senders.primary_notice\", { name: sender.name }),\n );\n\n if (done) await load();\n }\n\n async function test(sender) {\n const to = (testing[sender.key] ?? \"\").trim();\n\n if (!to) return;\n\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(\n `mutation Test($key: ID!, $to: String!) { testSender(key: $key, to: $to) { delivered failure } }`,\n { key: sender.key, to },\n ),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.testSender.delivered) {\n feedback.say(t(\"senders.tested\", { name: sender.name, to }));\n } else {\n feedback.blame(answer.testSender.failure);\n }\n }\n\n const complete = $derived.by(() => {\n if (!draft) return false;\n\n const service = serviceOf(draft.service);\n\n return (\n draft.key.trim() &&\n draft.name.trim() &&\n service.fields.every(\n (field) =>\n !field.required ||\n field.type === \"boolean\" ||\n (field.secret && draft.secretsHeld?.includes(field.key)) ||\n String(draft.config[field.key] ?? \"\").trim(),\n )\n );\n });\n</script>\n\n<div class=\"console-page\">\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if draft}\n <Section title={editing === \"\" ? t(\"senders.form.add\") : t(\"senders.form.edit\", { name: draft.name })}>\n {#if editing === \"\"}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"senders.form.service\")}</span>\n <select\n class=\"select select-sm w-full\"\n value={draft.service}\n onchange={(event) => pick(event.currentTarget.value)}\n >\n {#each services.filter((held) => held.kind === draft.kind) as service (service.service)}\n <option value={service.service}>{service.label}</option>\n {/each}\n </select>\n </label>\n {/if}\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"senders.form.key\")}\n bind:value={draft.key}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n <Field label={t(\"senders.form.name\")} bind:value={draft.name} />\n </div>\n\n <div class=\"grid gap-3 sm:grid-cols-2\">\n {#each serviceOf(draft.service).fields as field (field.key)}\n {#if field.type === \"boolean\"}\n <div class=\"flex flex-col gap-1 sm:col-span-2\">\n <Switch label={field.label} bind:checked={draft.config[field.key]} />\n {#if field.hint}<p class=\"hint\">{field.hint}</p>{/if}\n </div>\n {:else if field.options}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{field.label}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.config[field.key]}>\n {#each field.options as option (option)}\n <option value={option}>{option}</option>\n {/each}\n </select>\n </label>\n {:else}\n <div class=\"flex flex-col gap-1\">\n <Field\n label={field.required ? field.label : t(\"senders.form.optional\", { label: field.label })}\n type={field.secret ? \"password\" : field.type === \"integer\" ? \"number\" : \"text\"}\n bind:value={draft.config[field.key]}\n autocomplete=\"off\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n placeholder={field.secret && draft.secretsHeld?.includes(field.key) ? t(\"senders.form.unchanged\") : \"\"}\n />\n {#if field.hint}<p class=\"hint\">{field.hint}</p>{/if}\n </div>\n {/if}\n {/each}\n </div>\n\n <Switch label={t(\"senders.form.primary\")} bind:checked={draft.primary} />\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {editing === \"\" ? t(\"senders.form.create\") : t(\"senders.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"senders.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n {#each KINDS as group (group.kind)}\n {@const held = forKind(data.active, group.kind)}\n\n <Section title={group.title} lede={held.length ? group.lede : group.idle}>\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => add(group.kind)}>{t(\"senders.list.add\")}</button>\n {/snippet}\n\n {#each held as sender (sender.key)}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">\n {sender.name}\n {#if sender.primary}<span class=\"badge badge-success badge-sm\">{t(\"senders.list.primary\")}</span>{/if}\n </span>\n <span class=\"hint\">\n {sender.label} · <span class=\"font-mono\">{sender.key}</span> · {t(\"senders.list.added\", { day: day(sender.createdAt) })}\n </span>\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n {#if !sender.primary}\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => makePrimary(sender)}>\n {t(\"senders.list.make_primary\")}\n </button>\n {/if}\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(sender)}>{t(\"senders.list.edit\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveSender\",\n sender,\n t(\"senders.archived_notice\", { name: sender.name }),\n t(\"senders.archive_confirm\", { name: sender.name }),\n )}\n >\n {t(\"senders.list.archive\")}\n </button>\n </div>\n </div>\n\n <Field\n label={t(\"senders.list.test_to\")}\n bind:value={testing[sender.key]}\n placeholder={group.to}\n save={t(\"senders.list.test\")}\n onsave={() => test(sender)}\n />\n </div>\n {/each}\n </Section>\n {/each}\n\n {#if data.archived.length}\n <Section title={t(\"senders.archived.title\")}>\n {#each data.archived as sender (sender.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"text-sm\">\n {sender.name} <span class=\"hint\">{sender.label} · {sender.kind}</span>\n </span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreSender\", sender, t(\"senders.restored\", { name: sender.name }))}\n >\n {t(\"senders.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { untrack } from \"svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n\n let { api, template, title, onsaved } = $props();\n\n const UPDATE = `\n mutation Word($kind: ID!, $subject: String, $message: String) {\n updateMailTemplate(kind: $kind, subject: $subject, message: $message) { mailTemplate { kind } }\n }\n `;\n\n const feedback = createFeedback();\n\n let subject = $state(untrack(() => template.subject) ?? \"\");\n let message = $state(untrack(() => template.message) ?? \"\");\n let busy = $state(false);\n\n const signature = $derived(template.kind === \"signature\");\n const custom = $derived(Boolean(template.subject || template.message));\n const names = $derived(template.placeholders.map((name) => `{{${name}}}`).join(\", \"));\n\n async function save(blank = false) {\n busy = true;\n\n const done = await feedback.attempt(\n () =>\n api.query(UPDATE, {\n kind: template.kind,\n subject: blank || signature ? \"\" : subject,\n message: blank ? \"\" : message,\n }),\n blank ? t(\"mail_template.reset\", { title }) : t(\"mail_template.saved\", { title }),\n );\n\n busy = false;\n\n if (done) onsaved?.();\n }\n</script>\n\n<details class=\"mail-template\" open={custom || undefined}>\n <summary class=\"term\">\n {t(signature ? \"mail_template.signature\" : \"mail_template.template\")}{custom ? t(\"mail_template.customized\") : \"\"}\n </summary>\n\n <form\n class=\"flex flex-col gap-3 pt-3\"\n onsubmit={(event) => {\n event.preventDefault();\n save();\n }}\n >\n <Notices feedback={feedback.state} />\n\n {#if !signature}\n <Field\n label={t(\"mail_template.subject\")}\n bind:value={subject}\n maxlength=\"150\"\n placeholder={t(\"mail_template.subject_placeholder\")}\n />\n {/if}\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(signature ? \"mail_template.closing\" : \"mail_template.opening\")}</span>\n <textarea\n class=\"textarea textarea-sm w-full\"\n rows=\"4\"\n maxlength=\"2000\"\n placeholder={t(signature ? \"mail_template.closing_placeholder\" : \"mail_template.opening_placeholder\")}\n bind:value={message}\n ></textarea>\n <span class=\"hint\">\n {t(\"mail_template.hint\", { names })}\n {#if !signature}{t(\"mail_template.hint_more\")}{/if}\n </span>\n </label>\n\n <div class=\"flex gap-2\">\n <button type=\"submit\" class=\"btn btn-sm btn-primary\" disabled={busy}>{t(\"mail_template.save\")}</button>\n {#if custom}\n <button type=\"button\" class=\"btn btn-sm btn-ghost\" disabled={busy} onclick={() => save(true)}>\n {t(\"mail_template.use_default\")}\n </button>\n {/if}\n </div>\n </form>\n</details>\n","<script>\n import { t } from \"./lib/copy.js\";\n import MailTemplate from \"./MailTemplate.svelte\";\n import Loader from \"./ui/Loader.svelte\";\n import Tip from \"./ui/Tip.svelte\";\n\n let { api } = $props();\n\n const PREVIEWS = `\n query MailPreviews($client: ID) {\n mailPreviews(client: $client) { key name journey heading subject from to html text }\n clients { clientId name approvedAt }\n mailTemplates { kind subject message placeholders }\n }\n `;\n\n const GROUPS = [\"sign_in\", \"manage\", \"account\", \"system\"];\n\n const templated = (key) => (key === \"invitation_organization\" ? \"invitation\" : key);\n\n let client = $state(\"\");\n let version = $state(0);\n let chosen = $state(null);\n let showing = $state(\"html\");\n\n function fit(event) {\n const frame = event.currentTarget;\n\n frame.style.height = `${frame.contentDocument.documentElement.scrollHeight}px`;\n }\n</script>\n\n<div class=\"console-page\">\n {#key `${client}:${version}`}\n <Loader load={() => api.query(PREVIEWS, { client: client || null })}>\n {#snippet children(data)}\n {@const previews = data.mailPreviews}\n {@const shown = previews.find((preview) => preview.key === chosen) ?? previews[0]}\n {@const templates = Object.fromEntries(data.mailTemplates.map((template) => [template.kind, template]))}\n {@const template = templates[templated(shown.key)]}\n\n <div class=\"mail\">\n <div class=\"mail-pick\">\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.list\")}\n value={shown.key}\n onchange={(event) => (chosen = event.currentTarget.value)}\n >\n {#each GROUPS as journey (journey)}\n {@const members = previews.filter((preview) => preview.journey === journey)}\n\n {#if members.length}\n <optgroup label={t(`emails.groups.${journey}.title`)}>\n {#each members as preview (preview.key)}\n <option value={preview.key}>{preview.name}</option>\n {/each}\n </optgroup>\n {/if}\n {/each}\n </select>\n\n {#if shown.journey === \"sign_in\"}\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.app\")}\n value={client}\n onchange={(event) => (client = event.currentTarget.value)}\n >\n <option value=\"\">{t(\"emails.no_app\")}</option>\n {#each data.clients as each (each.clientId)}\n <option value={each.clientId}>{each.approvedAt ? each.name : t(\"emails.not_approved\", { name: each.name })}</option>\n {/each}\n </select>\n {/if}\n </div>\n\n <nav class=\"mail-list\" aria-label={t(\"emails.list\")}>\n {#each GROUPS as journey (journey)}\n {@const members = previews.filter((preview) => preview.journey === journey)}\n\n {#if members.length}\n <div class=\"mail-group\">\n <div class=\"flex items-center gap-2\">\n <span class=\"term\">{t(`emails.groups.${journey}.title`)}</span>\n <Tip text={t(`emails.groups.${journey}.help`)} label={t(`emails.groups.${journey}.about`)} />\n </div>\n\n {#if journey === \"sign_in\"}\n <select\n class=\"select select-sm w-full\"\n aria-label={t(\"emails.app\")}\n value={client}\n onchange={(event) => (client = event.currentTarget.value)}\n >\n <option value=\"\">{t(\"emails.no_app\")}</option>\n {#each data.clients as each (each.clientId)}\n <option value={each.clientId}>{each.approvedAt ? each.name : t(\"emails.not_approved\", { name: each.name })}</option>\n {/each}\n </select>\n {/if}\n\n {#each members as preview (preview.key)}\n <button\n type=\"button\"\n class=\"mail-item\"\n aria-current={preview.key === shown.key ? \"true\" : undefined}\n onclick={() => (chosen = preview.key)}\n >\n {preview.name}\n </button>\n {/each}\n </div>\n {/if}\n {/each}\n </nav>\n\n <article class=\"mail-view\">\n <header class=\"mail-head\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <h2 class=\"mail-subject\">{shown.subject}</h2>\n <p class=\"hint\">\n {t(\"emails.headed\", {\n heading: shown.heading,\n from: shown.from || t(\"emails.no_sender\"),\n to: shown.to,\n })}\n </p>\n </div>\n\n <div class=\"range\" role=\"group\" aria-label={t(\"emails.part\")}>\n <button type=\"button\" aria-pressed={showing === \"html\"} onclick={() => (showing = \"html\")}>{t(\"emails.html\")}</button>\n <button type=\"button\" aria-pressed={showing === \"text\"} onclick={() => (showing = \"text\")}>{t(\"emails.text\")}</button>\n </div>\n </header>\n\n <div class=\"mail-words\">\n {#if template}\n {#key template.kind}\n <MailTemplate {api} template={template} title={shown.name} onsaved={() => version++} />\n {/key}\n {/if}\n\n <MailTemplate {api} template={templates.signature} title={t(\"emails.signature\")} onsaved={() => version++} />\n </div>\n\n {#if showing === \"html\" && shown.html}\n <iframe\n class=\"mail-frame\"\n title={shown.subject}\n sandbox=\"allow-same-origin\"\n srcdoc={shown.html}\n onload={fit}\n ></iframe>\n {:else}\n <pre class=\"mail-text\">{shown.text ?? \"\"}</pre>\n {/if}\n </article>\n </div>\n {/snippet}\n </Loader>\n {/key}\n</div>\n","<script>\n import { t } from \"./lib/copy.js\";\n import MessageSending from \"./MessageSending.svelte\";\n import MessageTemplates from \"./MessageTemplates.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Page from \"./ui/Page.svelte\";\n\n let { api, part = null } = $props();\n\n const templates = $derived(part === \"templates\");\n</script>\n\n<Page title={t(\"messages.title\")} lede={t(templates ? \"messages.templates.lede\" : \"messages.sending.lede\")}>\n <nav class=\"settings-tabs\" aria-label={t(\"messages.parts\")}>\n <Link to=\"/messages\" class=\"settings-tab {templates ? '' : 'settings-tab-on'}\">{t(\"messages.sending.title\")}</Link>\n <Link to=\"/messages/templates\" class=\"settings-tab {templates ? 'settings-tab-on' : ''}\">{t(\"messages.templates.title\")}</Link>\n </nav>\n\n {#if templates}\n <MessageTemplates {api} />\n {:else}\n <MessageSending {api} />\n {/if}\n</Page>\n","<script>\n import ActivityParts from \"./ActivityParts.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { day } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n\n let { api } = $props();\n\n const FIELDS = `key name url actions lastDeliveredAt lastFailure archivedAt createdAt organization { key name }`;\n\n const QUERY = `\n query Streams {\n active: eventStreams { ${FIELDS} }\n archived: eventStreams(archived: true) { ${FIELDS} }\n organizations { key name }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state(null);\n let secret = $state(null);\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n const listed = (text) =>\n text\n .split(/[\\s,]+/)\n .map((held) => held.trim())\n .filter(Boolean);\n\n function add() {\n editing = \"\";\n draft = { key: \"\", name: \"\", url: \"\", actions: \"\", organization: \"\" };\n secret = null;\n feedback.clear();\n }\n\n function edit(stream) {\n editing = stream.key;\n draft = {\n key: stream.key,\n name: stream.name,\n url: stream.url,\n actions: stream.actions.join(\"\\n\"),\n organization: stream.organization?.key ?? \"\",\n };\n secret = null;\n feedback.clear();\n }\n\n function close() {\n editing = null;\n draft = null;\n feedback.clear();\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const variables = {\n key: draft.key.trim(),\n name: draft.name.trim(),\n url: draft.url.trim(),\n actions: listed(draft.actions),\n organization: draft.organization,\n };\n\n const answer = await feedback.attempt(\n () =>\n fresh\n ? api.query(\n `mutation Create($key: ID!, $name: String!, $url: String!, $actions: [String!], $organization: ID) {\n createEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) { secret }\n }`,\n variables,\n )\n : api.query(\n `mutation Update($key: ID!, $name: String, $url: String, $actions: [String!], $organization: ID) {\n updateEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) {\n eventStream { key }\n }\n }`,\n variables,\n ),\n fresh ? t(\"streams.added\", { name: draft.name }) : t(\"streams.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n secret = fresh ? answer.createEventStream.secret : null;\n\n close();\n await load();\n }\n\n async function act(mutation, stream, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { eventStream { key } } }`, {\n key: stream.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n async function rotate(stream) {\n if (!confirm(t(\"streams.rotate_confirm\", { name: stream.name }))) return;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Rotate($key: ID!) { rotateEventStreamSecret(key: $key) { secret } }`, {\n key: stream.key,\n }),\n );\n\n if (answer) secret = answer.rotateEventStreamSecret.secret;\n }\n\n async function test(stream) {\n busy = true;\n\n const answer = await feedback.attempt(() =>\n api.query(`mutation Test($key: ID!) { testEventStream(key: $key) { delivered failure } }`, {\n key: stream.key,\n }),\n );\n\n busy = false;\n\n if (!answer) return;\n\n if (answer.testEventStream.delivered) {\n feedback.say(t(\"streams.tested\", { name: stream.name }));\n } else {\n feedback.blame(answer.testEventStream.failure);\n }\n\n await load();\n }\n\n const complete = $derived(draft?.key.trim() && draft.name.trim() && draft.url.trim());\n</script>\n\n<Page title={t(\"activity.title\")}>\n <ActivityParts part=\"streams\" />\n\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if secret}\n <Section\n title={t(\"streams.secret.title\")}\n lede={t(\"streams.secret.lede\")}\n >\n <input class=\"input input-sm w-full font-mono\" readonly value={secret} onfocus={(event) => event.currentTarget.select()} />\n <div>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => (secret = null)}>{t(\"streams.secret.saved\")}</button>\n </div>\n </Section>\n {/if}\n\n {#if draft}\n <Section title={editing === \"\" ? t(\"streams.form.add\") : t(\"streams.form.edit\", { name: draft.name })}>\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"streams.form.key\")}\n bind:value={draft.key}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n />\n <Field label={t(\"streams.form.name\")} bind:value={draft.name} />\n </div>\n\n <Field\n label={t(\"streams.form.address\")}\n type=\"url\"\n bind:value={draft.url}\n placeholder=\"https://siem.example.com/masks\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"streams.form.actions\")}</span>\n <textarea\n class=\"textarea w-full font-mono\"\n rows=\"4\"\n bind:value={draft.actions}\n placeholder=\"session.started actor.deleted\"\n ></textarea>\n <p class=\"hint\">{t(\"streams.form.actions_hint\")}</p>\n </label>\n\n {#if data.organizations.length}\n <Select\n label={t(\"streams.form.events_from\")}\n value={draft.organization}\n options={[[\"\", t(\"streams.form.every_organization\")], ...data.organizations.map((held) => [held.key, t(\"streams.form.only\", { name: held.name })])]}\n onchange={(key) => (draft.organization = key)}\n />\n {/if}\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" disabled={busy || !complete} onclick={save}>\n {editing === \"\" ? t(\"streams.form.create\") : t(\"streams.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"streams.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n <Section\n title={t(\"streams.list.title\")}\n lede={data.active.length ? t(\"streams.list.lede\") : t(\"streams.list.empty\")}\n >\n {#snippet actions()}\n <button type=\"button\" class=\"btn btn-sm\" onclick={add}>{t(\"streams.list.add\")}</button>\n {/snippet}\n\n {#each data.active as stream (stream.key)}\n <div class=\"flex flex-col gap-3 sheet p-3\">\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"font-medium\">{stream.name}</span>\n <span class=\"hint break-all\">\n <span class=\"font-mono\">{stream.key}</span> · {stream.url} · {t(\"streams.list.added\", { day: day(stream.createdAt) })}\n </span>\n <span class=\"hint\">\n {stream.actions.length ? stream.actions.join(\", \") : t(\"streams.list.every_action\")}{stream.organization\n ? t(\"streams.list.only\", { name: stream.organization.name })\n : \"\"}\n </span>\n {#if stream.lastFailure}\n <span class=\"text-sm text-error\">{stream.lastFailure}</span>\n {:else if stream.lastDeliveredAt}\n <span class=\"hint\">{t(\"streams.list.last_delivered\", { day: day(stream.lastDeliveredAt) })}</span>\n {/if}\n </div>\n\n <div class=\"flex flex-wrap gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" disabled={busy} onclick={() => test(stream)}>{t(\"streams.list.test\")}</button>\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(stream)}>{t(\"streams.list.edit\")}</button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={() => rotate(stream)}>{t(\"streams.list.rotate\")}</button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveEventStream\",\n stream,\n t(\"streams.archived_notice\", { name: stream.name }),\n t(\"streams.archive_confirm\", { name: stream.name }),\n )}\n >\n {t(\"streams.list.archive\")}\n </button>\n </div>\n </div>\n </div>\n {/each}\n </Section>\n\n {#if data.archived.length}\n <Section title={t(\"streams.archived.title\")}>\n {#each data.archived as stream (stream.key)}\n <div class=\"flex flex-wrap items-center justify-between gap-2\">\n <span class=\"text-sm\">{stream.name} <span class=\"hint\">{stream.url}</span></span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreEventStream\", stream, t(\"streams.restored\", { name: stream.name }))}\n >\n {t(\"streams.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Select from \"./ui/Select.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query SignInRules {\n tenant { namedBy browsersOnly blockedAgents riskyNetworks suspendAfter deleteAfter signInPolicy { key } }\n signInPolicies { key name }\n }\n `;\n\n const SUSPEND_AFTER = [\n [0, t(\"settings.idle.never\")],\n [90, t(\"settings.idle.after_90_days\")],\n [180, t(\"settings.idle.after_180_days\")],\n [365, t(\"settings.idle.after_a_year\")],\n [730, t(\"settings.idle.after_two_years\")],\n ];\n\n const DELETE_AFTER = [\n [0, t(\"settings.idle.never\")],\n [180, t(\"settings.idle.after_180_days\")],\n [365, t(\"settings.idle.after_a_year\")],\n [730, t(\"settings.idle.after_two_years\")],\n [1095, t(\"settings.idle.after_three_years\")],\n ];\n\n const choices = (listed, held) =>\n !held || listed.some(([days]) => days === held) ? listed : [...listed, [held, t(\"settings.after_days\", { days: held })]];\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let agents = $state(\"\");\n let networks = $state(\"\");\n\n async function load() {\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n if (!answer) return;\n\n data = answer;\n agents = answer.tenant.blockedAgents ?? \"\";\n networks = answer.tenant.riskyNetworks ?? \"\";\n }\n\n load();\n\n async function update(changes, notice) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Update(\n $namedBy: String, $browsersOnly: Boolean, $blockedAgents: String, $signInPolicy: ID,\n $riskyNetworks: String, $suspendAfter: Int, $deleteAfter: Int\n ) {\n updateTenant(\n namedBy: $namedBy\n browsersOnly: $browsersOnly\n blockedAgents: $blockedAgents\n riskyNetworks: $riskyNetworks\n signInPolicy: $signInPolicy\n suspendAfter: $suspendAfter\n deleteAfter: $deleteAfter\n ) { tenant { name } }\n }`,\n changes,\n ),\n notice,\n );\n\n if (done) await load();\n }\n\n function deleteAfter(days) {\n if (days && !confirm(t(\"settings.idle.delete_confirm\"))) return load();\n\n return update({ deleteAfter: days }, t(\"settings.idle.updated\"));\n }\n</script>\n\n<Notices feedback={feedback.state} />\n\n{#if data}\n <Section\n row\n title={t(\"settings.naming.title\")}\n help={t(\"settings.naming.help\")}\n >\n <Select\n value={data.tenant.namedBy}\n options={[\n [\"nickname\", t(\"settings.naming.nickname\")],\n [\"email\", t(\"settings.naming.email\")],\n [\"either\", t(\"settings.naming.either\")],\n ]}\n onchange={(namedBy) => update({ namedBy }, t(\"settings.naming.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.policy.title\")}\n help={t(\"settings.policy.help\")}\n >\n <Select\n value={data.tenant.signInPolicy?.key ?? \"\"}\n options={[[\"\", t(\"settings.policy.built_in\")], ...data.signInPolicies.map((policy) => [policy.key, policy.name])]}\n onchange={(signInPolicy) => update({ signInPolicy }, t(\"settings.policy.updated\"))}\n />\n </Section>\n\n <Section\n row\n title={t(\"settings.access.title\")}\n help={t(\"settings.access.help\")}\n >\n <Switch\n label={t(\"settings.access.browsers_only\")}\n checked={data.tenant.browsersOnly}\n onchange={(browsersOnly) =>\n update({ browsersOnly }, t(\"settings.access.updated\"))}\n />\n\n <Field\n label={t(\"settings.access.refused_agents\")}\n bind:value={agents}\n placeholder=\"curl, python-requests\"\n onsave={() => update({ blockedAgents: agents }, t(\"settings.access.updated\"))}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"settings.access.risky_networks\")}</span>\n <textarea class=\"textarea w-full font-mono\" rows=\"3\" bind:value={networks} placeholder=\"203.0.113.0/24\"></textarea>\n <span class=\"hint\">\n {t(\"settings.access.risky_hint\")}\n </span>\n </label>\n <div>\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => update({ riskyNetworks: networks }, t(\"settings.access.networks_saved\"))}>\n {t(\"settings.access.save_networks\")}\n </button>\n </div>\n </Section>\n\n <Section\n row\n title={t(\"settings.idle.title\")}\n help={t(\"settings.idle.help\")}\n >\n <div class=\"grid max-w-xl gap-3 sm:grid-cols-2\">\n <Select\n label={t(\"settings.idle.suspend\")}\n value={data.tenant.suspendAfter ?? 0}\n options={choices(SUSPEND_AFTER, data.tenant.suspendAfter)}\n onchange={(days) => update({ suspendAfter: Number(days) }, t(\"settings.idle.updated\"))}\n />\n\n <Select\n label={t(\"settings.idle.delete\")}\n value={data.tenant.deleteAfter ?? 0}\n options={choices(DELETE_AFTER, data.tenant.deleteAfter).map(([days, label]) => [\n days,\n label,\n days > 0 && days <= (data.tenant.suspendAfter ?? 0),\n ])}\n onchange={(days) => deleteAfter(Number(days))}\n />\n </div>\n </Section>\n{/if}\n","<script>\n import SignInRules from \"./SignInRules.svelte\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import ScopesEditor from \"./ScopesEditor.svelte\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Page from \"./ui/Page.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n import { t } from \"./lib/copy.js\";\n import { duration } from \"./lib/policies.js\";\n\n let { api } = $props();\n\n const FIELDS = `\n key name signup nickname email emailVerified phone phoneVerified\n passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor\n sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork\n emailDomains providers confirmation hidden signupScopes default archivedAt\n clients { clientId name }\n `;\n\n const QUERY = `\n query Policies {\n active: signInPolicies { ${FIELDS} }\n archived: signInPolicies(archived: true) { ${FIELDS} }\n providers { key name }\n tenant { namedBy texts mails }\n scopesSupported\n }\n `;\n\n const ARGS = `\n $key: ID!, $name: String, $signup: Boolean, $nickname: String, $email: String,\n $emailVerified: Boolean, $phone: String, $phoneVerified: Boolean, $passwordMinimum: Int,\n $refuseCommonPasswords: Boolean, $passwordRequired: Boolean, $firstFactors: [String!], $secondFactors: [String!],\n $secondFactorRequired: Boolean, $appsRequireSecondFactor: Boolean,\n $sessionLifetime: Int, $sessionIdleTimeout: Int,\n $refuseBreachedPasswords: Boolean, $riskStepUpAt: Int, $riskRefuseAt: Int, $proofOfWork: Int, $emailDomains: [String!], $providers: [String!],\n $everyProvider: Boolean, $confirmation: String, $hidden: Boolean, $signupScopes: [String!]\n `;\n\n const PASS = `\n key: $key, name: $name, signup: $signup, nickname: $nickname, email: $email,\n emailVerified: $emailVerified, phone: $phone, phoneVerified: $phoneVerified,\n passwordMinimum: $passwordMinimum, refuseCommonPasswords: $refuseCommonPasswords, passwordRequired: $passwordRequired,\n firstFactors: $firstFactors, secondFactors: $secondFactors,\n secondFactorRequired: $secondFactorRequired, appsRequireSecondFactor: $appsRequireSecondFactor,\n sessionLifetime: $sessionLifetime, sessionIdleTimeout: $sessionIdleTimeout,\n refuseBreachedPasswords: $refuseBreachedPasswords, riskStepUpAt: $riskStepUpAt, riskRefuseAt: $riskRefuseAt, proofOfWork: $proofOfWork, emailDomains: $emailDomains,\n providers: $providers, everyProvider: $everyProvider, confirmation: $confirmation,\n hidden: $hidden, signupScopes: $signupScopes\n `;\n\n const HOUR = 3600;\n const DAY = 24 * HOUR;\n\n const LIFETIMES = [\n [null, t(\"policy_rules.values.default_lifetime\")],\n ...[HOUR, 8 * HOUR, 12 * HOUR, DAY, 7 * DAY, 30 * DAY, 90 * DAY].map((seconds) => [seconds, duration(seconds)]),\n ];\n\n const IDLE = [\n [null, t(\"policies.never\")],\n ...[15 * 60, 30 * 60, HOUR, 4 * HOUR, DAY].map((seconds) => [seconds, duration(seconds)]),\n ];\n\n const SCORES = [[null, t(\"policies.never\")], ...[30, 50, 70, 90].map((score) => [score, t(\"policies.score\", { score })])];\n\n const WORK = [\n [0, t(\"policies.form.signup.work_off\")],\n [14, t(\"policies.form.signup.work_light\")],\n [17, t(\"policies.form.signup.work_standard\")],\n [20, t(\"policies.form.signup.work_strong\")],\n ];\n\n const offeredWork = (value) =>\n WORK.some(([held]) => held === value) ? WORK : [...WORK, [value, t(\"policies.form.signup.work_bits\", { bits: value })]];\n\n const offered = (choices, value) =>\n value === null || choices.some(([held]) => held === value)\n ? choices\n : [...choices, [value, t(\"policy_rules.units.second\", { count: value })]];\n\n const labelled = (group, values) => values.map((value) => [value, t(`policies.${group}.${value}`)]);\n\n const PRESENCE = labelled(\"presence\", [\"off\", \"optional\", \"required\"]);\n\n const FIRST = labelled(\"first\", [\"password\", \"passkey\", \"provider\", \"email_code\"]);\n\n const SECOND = labelled(\"second\", [\"otp\", \"passkey\", \"backup_codes\", \"email\", \"sms\", \"trusted_device\"]);\n\n const CONFIRMATIONS = labelled(\"confirmations\", [\"none\", \"code\", \"link\", \"approval\"]);\n\n const ACCOUNT_FIELDS = [\"nickname\", \"email\", \"phone\"].map((field) => [field, t(`policies.form.account.${field}`)]);\n\n const BLANK = {\n key: \"\",\n name: \"\",\n signup: false,\n nickname: \"optional\",\n email: \"required\",\n emailVerified: false,\n phone: \"off\",\n phoneVerified: false,\n passwordMinimum: 8,\n refuseCommonPasswords: true,\n passwordRequired: false,\n firstFactors: [\"password\", \"passkey\", \"provider\"],\n secondFactors: [\"otp\", \"passkey\", \"backup_codes\"],\n secondFactorRequired: false,\n appsRequireSecondFactor: false,\n sessionLifetime: null,\n sessionIdleTimeout: null,\n refuseBreachedPasswords: false,\n riskStepUpAt: null,\n riskRefuseAt: null,\n proofOfWork: 17,\n emailDomains: \"\",\n providers: null,\n confirmation: \"none\",\n hidden: false,\n signupScopes: [],\n };\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let loading = $state(true);\n let busy = $state(false);\n let editing = $state(null);\n let draft = $state({ ...BLANK });\n\n async function load() {\n loading = true;\n\n const answer = await feedback.attempt(() => api.query(QUERY));\n\n loading = false;\n\n if (answer) data = answer;\n }\n\n load();\n\n function add() {\n editing = \"\";\n keyTouched = false;\n draft = structuredClone(BLANK);\n feedback.clear();\n }\n\n function edit(policy) {\n editing = policy.key;\n draft = {\n ...structuredClone($state.snapshot(policy)),\n emailDomains: policy.emailDomains.join(\" \"),\n };\n feedback.clear();\n }\n\n const slug = (name) =>\n name\n .toLowerCase()\n .normalize(\"NFKD\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n let keyTouched = $state(false);\n\n function named(name) {\n draft.name = name;\n if (editing === \"\" && !keyTouched) draft.key = slug(name);\n }\n\n function close() {\n editing = null;\n feedback.clear();\n }\n\n const toggle = (list, value, on) =>\n on ? [...new Set([...list, value])] : list.filter((held) => held !== value);\n\n function variables() {\n return {\n key: draft.key.trim(),\n name: draft.name.trim(),\n signup: draft.signup,\n nickname: draft.nickname,\n email: draft.email,\n emailVerified: draft.emailVerified,\n phone: draft.phone,\n phoneVerified: draft.phoneVerified,\n passwordMinimum: Number(draft.passwordMinimum) || 8,\n refuseCommonPasswords: draft.refuseCommonPasswords,\n passwordRequired: draft.passwordRequired && draft.firstFactors.includes(\"password\"),\n firstFactors: draft.firstFactors,\n secondFactors: draft.secondFactors,\n secondFactorRequired: draft.secondFactorRequired,\n appsRequireSecondFactor: draft.appsRequireSecondFactor,\n sessionLifetime: draft.sessionLifetime,\n sessionIdleTimeout: draft.sessionIdleTimeout,\n refuseBreachedPasswords: draft.refuseBreachedPasswords,\n riskStepUpAt: draft.riskStepUpAt,\n riskRefuseAt: draft.riskRefuseAt,\n proofOfWork: Number(draft.proofOfWork) || 0,\n emailDomains: draft.emailDomains.split(/[\\s,]+/).filter(Boolean),\n providers: draft.providers ?? [],\n everyProvider: draft.providers === null,\n confirmation: draft.confirmation,\n hidden: draft.hidden,\n signupScopes: draft.signupScopes,\n };\n }\n\n async function save() {\n busy = true;\n\n const fresh = editing === \"\";\n const done = await feedback.attempt(\n () =>\n api.query(\n fresh\n ? `mutation Create(${ARGS}) { createSignInPolicy(${PASS}) { signInPolicy { key } } }`\n : `mutation Update(${ARGS}) { updateSignInPolicy(${PASS}) { signInPolicy { key } } }`,\n variables(),\n ),\n fresh ? t(\"policies.added\", { name: draft.name }) : t(\"policies.saved\", { name: draft.name }),\n );\n\n busy = false;\n\n if (!done) return;\n\n editing = null;\n await load();\n }\n\n async function act(mutation, policy, notice, question = null) {\n if (question && !confirm(question)) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Act($key: ID!) { ${mutation}(key: $key) { signInPolicy { key } } }`, {\n key: policy.key,\n }),\n notice,\n );\n\n if (done) await load();\n }\n\n const summary = (policy) =>\n [\n policy.signup ? t(\"policies.summary.signup_open\") : t(\"policies.summary.invitation_only\"),\n policy.secondFactorRequired ? t(\"policies.summary.second_factor_required\") : null,\n policy.appsRequireSecondFactor ? t(\"policies.summary.apps_require_second_factor\") : null,\n policy.sessionLifetime ? t(\"policies.summary.lifetime\", { duration: duration(policy.sessionLifetime) }) : null,\n policy.sessionIdleTimeout ? t(\"policies.summary.idle\", { duration: duration(policy.sessionIdleTimeout) }) : null,\n policy.confirmation !== \"none\" ? t(\"policies.summary.confirmed_by\", { confirmation: policy.confirmation }) : null,\n policy.phone === \"required\" ? t(\"policies.summary.phone_required\") : null,\n policy.hidden ? t(\"policies.summary.hidden\") : null,\n ]\n .filter(Boolean)\n .join(\" · \");\n\n const signingProviders = $derived(data?.providers ?? []);\n</script>\n\n<Page title={t(\"policies.title\")}>\n {#snippet actions()}\n {#if editing === null}\n <button type=\"button\" class=\"btn btn-primary btn-sm\" onclick={add}>{t(\"policies.add\")}</button>\n {/if}\n {/snippet}\n\n <Notices feedback={feedback.state} />\n\n {#if loading && !data}\n <Spinner />\n {:else if data}\n {#if editing !== null}\n <Section title={editing === \"\" ? t(\"policies.form.new\") : draft.name}>\n <div class=\"grid gap-3 sm:grid-cols-[2fr_1fr]\">\n <Field\n label={t(\"policies.form.name\")}\n value={draft.name}\n oninput={(event) => named(event.currentTarget.value)}\n placeholder={t(\"policies.form.name_placeholder\")}\n />\n <Field\n label={t(\"policies.form.key\")}\n bind:value={draft.key}\n oninput={() => (keyTouched = true)}\n disabled={editing !== \"\"}\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n class=\"input input-sm w-full font-mono\"\n />\n </div>\n\n <div class=\"policy-rows\">\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.signup.legend\")}</span>\n <div class=\"policy-controls\">\n <Switch label={t(\"policies.form.signup.open\")} bind:checked={draft.signup} />\n\n {#if draft.signup}\n <div class=\"grid gap-3 sm:grid-cols-2\">\n <Field\n label={t(\"policies.form.signup.email_domains\")}\n bind:value={draft.emailDomains}\n autocapitalize=\"none\"\n spellcheck=\"false\"\n placeholder={t(\"policies.form.signup.email_domains_placeholder\")}\n />\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.confirmation\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.confirmation}>\n {#each CONFIRMATIONS as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.work\")}</span>\n <select class=\"select select-sm w-full\" bind:value={draft.proofOfWork}>\n {#each offeredWork(draft.proofOfWork) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n\n <p class=\"hint\">{t(\"policies.form.signup.work_hint\")}</p>\n\n {#if (draft.confirmation === \"code\" || draft.confirmation === \"link\") && !data.tenant.mails}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.no_mail\")} <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"policies.form.signup.scopes\")}</span>\n <ScopesEditor\n value={draft.signupScopes}\n available={data.scopesSupported.filter((scope) => !scope.startsWith(\"masks:\"))}\n onchange={(scopes) => (draft.signupScopes = scopes)}\n />\n </div>\n {/if}\n\n <Switch label={t(\"policies.form.signup.hidden\")} bind:checked={draft.hidden} />\n\n {#if draft.hidden}\n <p class=\"text-xs opacity-85\">\n {t(\"policies.form.signup.hidden_hint\")}\n </p>\n {#if !data.tenant.mails}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.hidden_no_mail\")}\n <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n {:else if draft.signup}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.signup.open_warning\")}\n </p>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.account.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"grid gap-3 sm:grid-cols-3\">\n {#each ACCOUNT_FIELDS as [field, label] (field)}\n <label class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{label}</span>\n <select class=\"select select-sm w-full\" bind:value={draft[field]}>\n {#each PRESENCE as [value, text] (value)}\n <option {value}>{text}</option>\n {/each}\n </select>\n </label>\n {/each}\n </div>\n\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n <Switch label={t(\"policies.form.account.email_verified\")} bind:checked={draft.emailVerified} />\n <Switch label={t(\"policies.form.account.phone_verified\")} bind:checked={draft.phoneVerified} />\n </div>\n\n {#if draft.phone !== \"off\" && draft.phoneVerified && !data.tenant.texts}\n <p class=\"text-xs text-warning\">\n {t(\"policies.form.account.no_sms\")} <Link to=\"/messages\" class=\"link\">{t(\"policies.form.add_one\")}</Link>\n </p>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.sign_in.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n {#each FIRST as [value, label] (value)}\n <Switch\n label={label}\n checked={draft.firstFactors.includes(value)}\n onchange={(on) => (draft.firstFactors = toggle(draft.firstFactors, value, on))}\n />\n {/each}\n </div>\n\n {#if draft.firstFactors.includes(\"password\")}\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n <input class=\"input input-sm w-16\" type=\"number\" min=\"8\" bind:value={draft.passwordMinimum} />\n {t(\"policies.form.sign_in.characters\")}\n </label>\n <Switch label={t(\"policies.form.sign_in.refuse_common\")} bind:checked={draft.refuseCommonPasswords} />\n {#if draft.firstFactors.includes(\"passkey\")}\n <Switch label={t(\"policies.form.sign_in.password_required\")} bind:checked={draft.passwordRequired} />\n {/if}\n </div>\n {/if}\n\n {#if draft.firstFactors.includes(\"provider\") && signingProviders.length}\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n <Switch\n label={t(\"policies.form.sign_in.all_providers\")}\n checked={draft.providers === null}\n onchange={(on) => (draft.providers = on ? null : signingProviders.map((held) => held.key))}\n />\n\n {#if draft.providers !== null}\n {#each signingProviders as provider (provider.key)}\n <Switch\n label={provider.name}\n checked={draft.providers.includes(provider.key)}\n onchange={(on) => (draft.providers = toggle(draft.providers, provider.key, on))}\n />\n {/each}\n {/if}\n </div>\n {/if}\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.second_factor.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap gap-x-5 gap-y-2\">\n {#each SECOND as [value, label] (value)}\n <Switch\n label={label}\n checked={draft.secondFactors.includes(value)}\n onchange={(on) => (draft.secondFactors = toggle(draft.secondFactors, value, on))}\n />\n {/each}\n </div>\n\n <Switch label={t(\"policies.form.second_factor.required\")} bind:checked={draft.secondFactorRequired} />\n <Switch\n label={t(\"policies.form.second_factor.apps\")}\n bind:checked={draft.appsRequireSecondFactor}\n />\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.risk.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.risk.step_up\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.riskStepUpAt}>\n {#each offered(SCORES, draft.riskStepUpAt) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.risk.refuse\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.riskRefuseAt}>\n {#each offered(SCORES, draft.riskRefuseAt) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n </label>\n </div>\n <Switch label={t(\"policies.form.risk.refuse_breached\")} bind:checked={draft.refuseBreachedPasswords} />\n <p class=\"hint\">\n {t(\"policies.form.risk.hint\")}\n </p>\n </div>\n </div>\n\n <div class=\"policy-row\">\n <span class=\"legend\">{t(\"policies.form.sessions.legend\")}</span>\n <div class=\"policy-controls\">\n <div class=\"flex flex-wrap items-center gap-x-5 gap-y-2\">\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.sessions.last\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.sessionLifetime}>\n {#each offered(LIFETIMES, draft.sessionLifetime) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n {t(\"policies.form.sessions.after_sign_in\")}\n </label>\n <label class=\"flex items-center gap-2 text-sm\">\n {t(\"policies.form.sessions.end_after\")}\n <select class=\"select select-sm w-auto\" bind:value={draft.sessionIdleTimeout}>\n {#each offered(IDLE, draft.sessionIdleTimeout) as [value, label] (value)}\n <option {value}>{label}</option>\n {/each}\n </select>\n {t(\"policies.form.sessions.idle\")}\n </label>\n </div>\n <p class=\"hint\">\n {t(\"policies.form.sessions.hint\")}\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n disabled={busy || !draft.key.trim() || !draft.name.trim()}\n onclick={save}\n >\n {editing === \"\" ? t(\"policies.form.create\") : t(\"policies.form.save\")}\n </button>\n <button type=\"button\" class=\"btn btn-ghost btn-sm\" onclick={close}>{t(\"policies.form.cancel\")}</button>\n </div>\n </Section>\n {/if}\n\n <Section>\n {#if data.active.length === 0}\n <p class=\"text-sm opacity-85\">{t(\"policies.list.empty\")}</p>\n {/if}\n\n {#each data.active as policy (policy.key)}\n <div class=\"flex flex-wrap items-start justify-between gap-2 border-b border-base-300 pb-3 last:border-0 last:pb-0\">\n <div class=\"flex min-w-0 flex-col gap-1\">\n <span class=\"font-medium\">\n {policy.name}\n {#if policy.default}<span class=\"badge badge-success badge-sm\">{t(\"policies.list.default\")}</span>{/if}\n </span>\n <span class=\"hint\">{summary(policy)}</span>\n {#if policy.clients.length}\n <span class=\"hint\">\n {t(\"policies.list.used_by\")}\n {#each policy.clients as client, index (client.clientId)}\n {index ? \", \" : \"\"}<Link to={`/clients/${client.clientId}`} class=\"link\">{client.name}</Link>\n {/each}\n </span>\n {/if}\n </div>\n\n <div class=\"flex gap-2\">\n <button type=\"button\" class=\"btn btn-sm\" onclick={() => edit(policy)}>{t(\"policies.list.edit\")}</button>\n {#if !policy.default}\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() =>\n act(\n \"archiveSignInPolicy\",\n policy,\n t(\"policies.archived_notice\", { name: policy.name }),\n t(\"policies.archive_confirm\", { name: policy.name }),\n )}\n >\n {t(\"policies.list.archive\")}\n </button>\n {/if}\n </div>\n </div>\n {/each}\n </Section>\n\n {#if editing === null}\n {#key data}\n <SignInRules {api} />\n {/key}\n {/if}\n\n {#if data.archived.length}\n <Section title={t(\"policies.archived.title\")}>\n {#each data.archived as policy (policy.key)}\n <div class=\"flex items-center justify-between gap-2\">\n <span class=\"text-sm\">{policy.name}</span>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n onclick={() => act(\"restoreSignInPolicy\", policy, t(\"policies.restored\", { name: policy.name }))}\n >\n {t(\"policies.archived.restore\")}\n </button>\n </div>\n {/each}\n </Section>\n {/if}\n {/if}\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Switch from \"./ui/Switch.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Ldap {\n ldapBaseDn\n ldapPort\n ldapTls\n ldapCredentials { id label bindDn usedAt createdAt issuedBy { identifier } }\n tenant { ldapEnabled ldapPasswordOnly }\n }\n `;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let issued = $state(null);\n\n async function load() {\n try {\n data = await api.query(QUERY);\n } catch (thrown) {\n feedback.blame(thrown);\n }\n }\n\n load();\n\n async function issue() {\n const done = await feedback.attempt(() =>\n api.query(\n `mutation Issue($label: String!) {\n issueLdapCredential(label: $label) { secret ldapCredential { bindDn } }\n }`,\n { label: label.trim() },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueLdapCredential;\n label = \"\";\n\n await load();\n }\n\n async function revoke(credential) {\n if (!confirm(t(\"ldap.revoke_confirm\", { label: credential.label }))) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(`mutation Revoke($id: ID!) { revokeLdapCredential(id: $id) { ldapCredential { id } } }`, {\n id: credential.id,\n }),\n t(\"ldap.revoked\", { label: credential.label }),\n );\n\n if (done) await load();\n }\n\n async function serve(ldapEnabled) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Serve($ldapEnabled: Boolean) {\n updateTenant(ldapEnabled: $ldapEnabled) { tenant { ldapEnabled } }\n }`,\n { ldapEnabled },\n ),\n t(\"ldap.serve.updated\"),\n );\n\n if (done) await load();\n }\n\n async function passwordOnly(ldapPasswordOnly) {\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation PasswordOnly($ldapPasswordOnly: Boolean) {\n updateTenant(ldapPasswordOnly: $ldapPasswordOnly) { tenant { ldapPasswordOnly } }\n }`,\n { ldapPasswordOnly },\n ),\n t(\"ldap.binds.updated\"),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"ldap.title\")} help={`${t(\"ldap.lede\")} ${t(\"ldap.serve.help\")}`}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n <Switch label={t(\"ldap.serve.on\")} checked={data.tenant.ldapEnabled} onchange={serve} />\n\n {#if data.tenant.ldapEnabled}\n <dl class=\"ldap-facts\">\n <dt class=\"field-label\">{t(\"ldap.connect.address\")}</dt>\n <dd><code class=\"font-mono text-xs\">{t(data.ldapTls ? \"ldap.connect.ldaps\" : \"ldap.connect.port\", { port: data.ldapPort })}</code></dd>\n <dt class=\"field-label\">{t(\"ldap.connect.base_dn\")}</dt>\n <dd><code class=\"font-mono text-xs break-all\">{data.ldapBaseDn}</code></dd>\n </dl>\n\n {#if data.ldapCredentials.length}\n <ul class=\"compact-list\">\n {#each data.ldapCredentials as credential (credential.id)}\n <li>\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium\">{credential.label}</div>\n <code class=\"hint font-mono text-xs break-all\">{credential.bindDn}</code>\n <div class=\"hint text-xs\">\n {t(\"ldap.credentials.used\", { used: since(credential.usedAt, t(\"ldap.credentials.never\")) })}\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs ml-auto\" onclick={() => revoke(credential)}>\n {t(\"ldap.credentials.revoke\")}\n </button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"join\"\n onsubmit={(event) => {\n event.preventDefault();\n issue();\n }}\n >\n <input class=\"input input-sm join-item w-full max-w-48\" aria-label={t(\"ldap.connect.label\")} placeholder=\"jellyfin\" bind:value={label} />\n <button type=\"submit\" class=\"btn btn-sm join-item\" disabled={!label.trim()}>{t(\"ldap.connect.issue\")}</button>\n </form>\n <p class=\"hint\">{t(\"ldap.connect.help\")}</p>\n\n {#if issued}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"ldap.connect.shown_once\")}</span>\n <span class=\"text-xs\">{t(\"ldap.connect.bind_dn\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.ldapCredential.bindDn}</code>\n <span class=\"text-xs\">{t(\"ldap.connect.secret\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.secret}</code>\n </div>\n {/if}\n\n <Switch label={t(\"ldap.binds.password_only\")} checked={data.tenant.ldapPasswordOnly} onchange={passwordOnly} />\n <p class=\"hint\">{t(\"ldap.binds.help\")}</p>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import { createFeedback } from \"./lib/feedback.svelte.js\";\n import { day, since } from \"./lib/format.js\";\n import Section from \"./ui/Section.svelte\";\n import Field from \"./ui/Field.svelte\";\n import Notices from \"./ui/Notices.svelte\";\n import Select from \"./ui/Select.svelte\";\n\n let { api } = $props();\n\n const QUERY = `\n query Provisioning {\n scimBaseUrl\n provisioningTokens { id label usedAt expiresAt createdAt issuedBy { identifier } organization { name } }\n organizations { key name }\n }\n `;\n\n const LIFETIMES = [\n [30, \"month\"],\n [90, \"quarter\"],\n [365, \"year\"],\n ];\n\n const DAY = 86400;\n\n const feedback = createFeedback();\n\n let data = $state(null);\n let label = $state(\"\");\n let organization = $state(\"\");\n let lifetime = $state(90);\n let issued = $state(null);\n\n async function load() {\n try {\n data = await api.query(QUERY);\n } catch (thrown) {\n feedback.blame(thrown);\n }\n }\n\n load();\n\n async function issue() {\n const done = await feedback.attempt(() =>\n api.query(\n `mutation Issue($label: String!, $expiresIn: Int, $organization: ID) {\n issueProvisioningToken(label: $label, expiresIn: $expiresIn, organization: $organization) { secret }\n }`,\n { label: label.trim() || \"Provisioning\", expiresIn: lifetime * DAY, organization: organization || null },\n ),\n );\n\n if (!done) return;\n\n issued = done.issueProvisioningToken;\n label = \"\";\n\n await load();\n }\n\n async function revoke(token) {\n if (!confirm(t(\"provisioning.revoke_confirm\", { label: token.label }))) return;\n\n const done = await feedback.attempt(\n () =>\n api.query(\n `mutation Revoke($id: ID!) { revokeProvisioningToken(id: $id) { provisioningToken { id } } }`,\n { id: token.id },\n ),\n t(\"provisioning.revoked\", { label: token.label }),\n );\n\n if (done) await load();\n }\n</script>\n\n<Section row title={t(\"provisioning.title\")} help={`${t(\"provisioning.lede\")} ${t(\"provisioning.connect.help\")}`}>\n <Notices feedback={feedback.state} />\n\n {#if data}\n <div class=\"flex flex-col gap-1.5\">\n <span class=\"field-label\">{t(\"provisioning.connect.base_url\")}</span>\n <code class=\"tray px-2 py-1 font-mono text-xs break-all\">{data.scimBaseUrl}</code>\n </div>\n\n {#if data.provisioningTokens.length}\n <ul class=\"compact-list\">\n {#each data.provisioningTokens as token (token.id)}\n <li>\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium\">\n {token.label}{#if token.organization}<span class=\"hint\"> · {token.organization.name}</span>{/if}\n </div>\n <div class=\"hint text-xs\">\n {token.issuedBy\n ? t(\"provisioning.tokens.issued_by\", {\n identifier: token.issuedBy.identifier,\n used: since(token.usedAt, t(\"provisioning.tokens.never\")),\n expires: day(token.expiresAt),\n })\n : t(\"provisioning.tokens.detail\", {\n used: since(token.usedAt, t(\"provisioning.tokens.never\")),\n expires: day(token.expiresAt),\n })}\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs ml-auto\" onclick={() => revoke(token)}>{t(\"provisioning.tokens.revoke\")}</button>\n </li>\n {/each}\n </ul>\n {/if}\n\n <form\n class=\"flex flex-wrap items-center gap-2\"\n onsubmit={(event) => {\n event.preventDefault();\n issue();\n }}\n >\n <input class=\"input input-sm w-full max-w-48\" aria-label={t(\"provisioning.connect.label\")} placeholder=\"Entra ID\" bind:value={label} />\n\n {#if data.organizations.length}\n <Select\n name={t(\"provisioning.connect.provisions\")}\n value={organization}\n options={[\n [\"\", t(\"provisioning.connect.every_account\")],\n ...data.organizations.map((held) => [held.key, t(\"provisioning.connect.only_members\", { name: held.name })]),\n ]}\n onchange={(key) => (organization = key)}\n />\n {/if}\n\n <div class=\"range\" role=\"group\" aria-label={t(\"provisioning.connect.lifetime\")}>\n {#each LIFETIMES as [days, name] (days)}\n <button type=\"button\" aria-pressed={lifetime === days} onclick={() => (lifetime = days)}>\n {t(`provisioning.lifetimes.${name}`)}\n </button>\n {/each}\n </div>\n\n <button type=\"submit\" class=\"btn btn-sm\">{t(\"provisioning.connect.issue\")}</button>\n </form>\n\n {#if issued}\n <div class=\"alert alert-warning alert-soft flex-col items-start gap-2\" role=\"status\">\n <span class=\"font-medium\">{t(\"provisioning.connect.shown_once\")}</span>\n <code class=\"font-mono text-xs break-all\">{issued.secret}</code>\n </div>\n {/if}\n {/if}\n</Section>\n","<script>\n import { t } from \"./lib/copy.js\";\n import LdapSection from \"./LdapSection.svelte\";\n import ProvisioningSection from \"./ProvisioningSection.svelte\";\n import Page from \"./ui/Page.svelte\";\n\n let { api } = $props();\n</script>\n\n<Page title={t(\"directory.title\")} lede={t(\"directory.lede\")}>\n <div class=\"grid gap-4\">\n <ProvisioningSection {api} />\n\n <LdapSection {api} />\n </div>\n</Page>\n","<script>\n import { t } from \"./lib/copy.js\";\n import Link from \"./ui/Link.svelte\";\n\n let { current, viewer, identifier, account, onsignout, onunpair, children } = $props();\n\n const TABS = [\"settings\", \"policies\", \"providers\", \"directory\", \"messages\", \"activity\"];\n\n function unpair() {\n if (confirm(t(\"settings_shell.forget_confirm\"))) onunpair();\n }\n</script>\n\n<div class=\"settings\">\n <div class=\"settings-bar\">\n <nav class=\"settings-tabs\" aria-label={t(\"settings_shell.label\")}>\n {#each TABS as tab (tab)}\n <Link\n to={`/${tab}`}\n class=\"settings-tab {current === tab ? 'settings-tab-on' : ''}\"\n >{t(`settings_shell.tabs.${tab}`)}</Link>\n {/each}\n </nav>\n\n <div class=\"settings-me\">\n <a class=\"settings-who\" href={account} title={t(\"settings_shell.account\")}>\n {#if viewer}\n <img\n src={`${viewer.avatars.photo ?? viewer.avatars.identicon}?size=64`}\n width=\"24\"\n height=\"24\"\n alt=\"\"\n class:drawn={!viewer.avatars.photo}\n onerror={(event) => (event.currentTarget.src = `${viewer.avatars.identicon}?size=64`)}\n />\n {/if}\n <span>{identifier}</span>\n </a>\n <button type=\"button\" class=\"settings-tab\" onclick={onsignout}>{t(\"settings_shell.sign_out\")}</button>\n <button type=\"button\" class=\"settings-tab settings-quiet\" onclick={unpair}>{t(\"settings_shell.forget\")}</button>\n </div>\n </div>\n\n <div class=\"min-w-0\">{@render children()}</div>\n</div>\n","<script>\n import { untrack } from \"svelte\";\n import { createApi } from \"./lib/api.svelte.js\";\n import { t } from \"./lib/copy.js\";\n import { createRouter, provideRouter } from \"./lib/router.svelte.js\";\n import { handshakeUrl, redeem } from \"./lib/pairing.js\";\n import Empty from \"./ui/Empty.svelte\";\n import Link from \"./ui/Link.svelte\";\n import Spinner from \"./ui/Spinner.svelte\";\n import ActorsPage from \"./ActorsPage.svelte\";\n import ActorPage from \"./ActorPage.svelte\";\n import DevicePage from \"./DevicePage.svelte\";\n import ClientsPage from \"./ClientsPage.svelte\";\n import ClientPage from \"./ClientPage.svelte\";\n import OrganizationsPage from \"./OrganizationsPage.svelte\";\n import OrganizationPage from \"./OrganizationPage.svelte\";\n import SettingsPage from \"./SettingsPage.svelte\";\n import ActivityPage from \"./ActivityPage.svelte\";\n import ProvidersPage from \"./ProvidersPage.svelte\";\n import MessagesPage from \"./MessagesPage.svelte\";\n import StreamsPage from \"./StreamsPage.svelte\";\n import PoliciesPage from \"./PoliciesPage.svelte\";\n import DirectoryPage from \"./DirectoryPage.svelte\";\n import SettingsShell from \"./SettingsShell.svelte\";\n\n let { boot } = $props();\n\n const api = untrack(() => createApi(boot));\n const router = untrack(() => createRouter(boot.root));\n\n provideRouter(router);\n\n let phase = $state(\"starting\");\n let failure = $state(null);\n let viewer = $state(null);\n let levels = $state(null);\n\n const limit = $derived.by(() => {\n if (!levels || levels.includes(\"owner\")) return null;\n if (levels.includes(\"security\") && levels.includes(\"support\")) return t(\"app.limited.both\");\n if (levels.includes(\"security\")) return t(\"app.limited.security\");\n if (levels.includes(\"support\")) return t(\"app.limited.support\");\n return t(\"app.limited.read\");\n });\n\n const NAV = [\n [\"\", \"overview\", '<path d=\"M3.5 10.5 10 4l6.5 6.5\"/><path d=\"M5.5 9v7h9V9\"/>'],\n [\"/actors\", \"actors\", '<circle cx=\"10\" cy=\"7\" r=\"3\"/><path d=\"M4 17c.8-3 3.2-4.5 6-4.5s5.2 1.5 6 4.5\"/>'],\n [\"/organizations\", \"organizations\", '<rect x=\"3.5\" y=\"7\" width=\"13\" height=\"9.5\" rx=\"1.5\"/><path d=\"M7.5 7V4.5h5V7\"/><path d=\"M3.5 11h13\"/>'],\n [\"/clients\", \"clients\", '<rect x=\"3\" y=\"3\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"11\" y=\"3\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"3\" y=\"11\" width=\"6\" height=\"6\" rx=\"1.5\"/><rect x=\"11\" y=\"11\" width=\"6\" height=\"6\" rx=\"1.5\"/>'],\n ];\n\n const SETTINGS = [\"settings\", \"policies\", \"providers\", \"directory\", \"messages\", \"activity\"];\n\n const REPAIRED = \"masks:manage:repaired\";\n\n function stale(error) {\n if (error === \"invalid_client\") return true;\n if (error !== \"invalid_scope\") return false;\n\n try {\n if (sessionStorage.getItem(REPAIRED)) return false;\n sessionStorage.setItem(REPAIRED, \"1\");\n return true;\n } catch {\n return false;\n }\n }\n\n function register() {\n location.replace(handshakeUrl(boot));\n }\n\n async function start() {\n const query = new URLSearchParams(location.search);\n\n try {\n if (stale(query.get(\"error\"))) {\n api.unpair();\n register();\n return;\n }\n\n if (query.get(\"error\")) {\n failure = query.get(\"error_description\") || query.get(\"error\");\n router.replace(\"\");\n phase = \"failed\";\n return;\n }\n\n if (query.get(\"initial_access_token\")) {\n await redeem(boot, query.get(\"initial_access_token\"));\n router.replace(\"\");\n await api.authorize(\"\");\n return;\n }\n\n if (!api.paired()) {\n register();\n return;\n }\n\n if (router.segments[0] === \"callback\") {\n const { returnTo } = await api.callback();\n router.replace(returnTo || \"\");\n ready();\n return;\n }\n\n if (!api.signedIn()) {\n await api.authorize(router.state.path.slice(boot.root.length));\n return;\n }\n\n ready();\n } catch (thrown) {\n failure = thrown.message;\n phase = \"failed\";\n }\n }\n\n let waiting = $state(0);\n\n async function countWaiting() {\n try {\n const data = await api.query(\n \"query Waiting { approvals: actorCount(pendingApproval: true) help: actorCount(recoveryRequested: true) }\",\n );\n\n waiting = data.approvals + data.help;\n } catch {\n waiting = 0;\n }\n }\n\n const section = $derived(router.segments[0] ?? \"\");\n const waitingLabel = $derived(t(\"app.waiting\", { count: waiting }));\n\n $effect(() => {\n if (phase === \"ready\" && section !== undefined) countWaiting();\n });\n\n function ready() {\n phase = \"ready\";\n\n api\n .query(\"query Viewer { viewer { identifier avatars { photo identicon } } manageLevels }\")\n .then((data) => {\n viewer = data.viewer;\n levels = data.manageLevels;\n })\n .catch(() => {});\n }\n\n start();\n\n const current = $derived(router.segments[0] ?? \"\");\n const inSettings = $derived(SETTINGS.includes(current));\n const signedInAs = $derived(\n viewer?.identifier ?? api.state.identity?.preferred_username ?? t(\"app.account\"),\n );\n\n function retry() {\n location.assign(boot.root);\n }\n\n function forget() {\n api.unpair();\n retry();\n }\n\n async function signOut() {\n location.assign((await api.signOut()) ?? boot.root);\n }\n</script>\n\n{#if phase === \"starting\"}\n <div class=\"grid min-h-screen place-items-center\">\n <Spinner label={t(\"app.starting\")} />\n </div>\n{:else if phase === \"failed\"}\n <div class=\"auth-page\">\n <main class=\"auth-col surface-terminus\">\n <div class=\"flow\">\n <span class=\"state state-bad\">{t(\"app.stopped\")}</span>\n\n <h1 class=\"prompt-title\">{t(\"app.failed\", { tenant: boot.tenant.name })}</h1>\n\n <p class=\"said\">{failure}</p>\n\n <button type=\"button\" class=\"action\" onclick={retry}>{t(\"app.retry\")}</button>\n </div>\n </main>\n </div>\n{:else}\n <div class=\"flex min-h-screen flex-col\">\n <header class=\"console-top sticky top-0 z-20\">\n <div class=\"console-bar mx-auto flex w-full max-w-6xl items-center gap-x-6 py-2\">\n <Link to=\"\" class=\"brand\"><img src=\"/masks-public/icon.svg\" alt=\"\" class=\"brand-mark\" />{boot.tenant.name}</Link>\n\n <nav class=\"nav md:flex-1\">\n {#each NAV as [to, label] (to)}\n <Link\n {to}\n class=\"nav-item {current === to.replace('/', '') ? 'nav-item-on' : ''}\"\n >{t(`app.nav.${label}`)}{#if label === \"actors\" && waiting > 0}<span class=\"nav-count\" title={waitingLabel}>{waiting}</span>{/if}</Link>\n {/each}\n </nav>\n\n <Link\n to=\"/settings\"\n class=\"console-cog ms-auto {inSettings ? 'console-cog-on' : ''}\"\n aria-label={t(\"app.settings\")}\n title={t(\"app.settings\")}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M17.03 8.46 L19.13 8.85 L19.13 11.15 L17.03 11.54 L16.06 13.88 L17.27 15.64 L15.64 17.27 L13.88 16.06 L11.54 17.03 L11.15 19.13 L8.85 19.13 L8.46 17.03 L6.12 16.06 L4.36 17.27 L2.73 15.64 L3.94 13.88 L2.97 11.54 L0.87 11.15 L0.87 8.85 L2.97 8.46 L3.94 6.12 L2.73 4.36 L4.36 2.73 L6.12 3.94 L8.46 2.97 L8.85 0.87 L11.15 0.87 L11.54 2.97 L13.88 3.94 L15.64 2.73 L17.27 4.36 L16.06 6.12 Z\" />\n <circle cx=\"10\" cy=\"10\" r=\"2.75\" />\n </svg>\n </Link>\n </div>\n </header>\n\n <main class=\"console-main mx-auto w-full max-w-6xl flex-1\">\n {#if limit}\n <p class=\"alert alert-info mb-4 text-sm\" role=\"status\">{limit}</p>\n {/if}\n {#if current === \"\"}\n <SettingsPage {api} {boot} overview />\n {:else if current === \"actors\"}\n {#if router.segments[1] === \"devices\" && router.segments[2]}\n <DevicePage {api} id={router.segments[2]} />\n {:else if router.segments[1]}\n <ActorPage {api} uuid={router.segments[1]} />\n {:else}\n <ActorsPage {api} />\n {/if}\n {:else if current === \"organizations\"}\n {#if router.segments[1]}\n <OrganizationPage {api} organizationKey={router.segments[1]} />\n {:else}\n <OrganizationsPage {api} />\n {/if}\n {:else if current === \"clients\"}\n {#if router.segments[1]}\n <ClientPage {api} clientId={router.segments[1]} part={router.segments[2]} />\n {:else}\n <ClientsPage {api} />\n {/if}\n {:else if inSettings}\n <SettingsShell {current} {viewer} identifier={signedInAs} account={boot.account} onsignout={signOut} onunpair={forget}>\n {#if current === \"providers\"}\n <ProvidersPage {api} />\n {:else if current === \"policies\"}\n <PoliciesPage {api} />\n {:else if current === \"directory\"}\n <DirectoryPage {api} />\n {:else if current === \"messages\"}\n <MessagesPage {api} part={router.segments[1]} />\n {:else if current === \"activity\" && router.segments[1] === \"streams\"}\n <StreamsPage {api} />\n {:else if current === \"activity\"}\n <ActivityPage {api} />\n {:else}\n <SettingsPage {api} {boot} />\n {/if}\n </SettingsShell>\n {:else}\n <Empty>{t(\"app.missing\")}</Empty>\n {/if}\n </main>\n\n <nav class=\"tabbar md:hidden\" aria-label={t(\"app.sections\")}>\n {#each NAV as [to, label, icon] (to)}\n <Link {to} class=\"tabbar-item {current === to.replace('/', '') ? 'tabbar-item-on' : ''}\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">{@html icon}</svg>\n <span>{t(`app.nav.${label}`)}</span>\n </Link>\n {/each}\n </nav>\n </div>\n{/if}\n","import { mount } from \"svelte\";\nimport App from \"../manage/App.svelte\";\nimport { useCopy } from \"../manage/lib/copy.js\";\n\nconst target = document.getElementById(\"manage\");\n\nif (target) {\n const boot = JSON.parse(target.dataset.boot);\n\n useCopy(boot.copy, document.documentElement.lang || \"en\");\n target.replaceChildren();\n\n mount(App, { target, props: { boot } });\n}\n"],"mappings":"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"}
|