@aiquants/auth-react-router 0.16.0 → 0.17.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.
package/dist/admin.js CHANGED
@@ -1 +1 @@
1
- "use strict";var He=Object.create;var se=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var Je=(t,r)=>{for(var i in r)se(t,i,{get:r[i],enumerable:!0})},we=(t,r,i,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let d of _e(r))!Ye.call(t,d)&&d!==i&&se(t,d,{get:()=>r[d],enumerable:!(l=Qe(r,d))||l.enumerable});return t};var Xe=(t,r,i)=>(i=t!=null?He(Ze(t)):{},we(r||!t||!t.__esModule?se(i,"default",{value:t,enumerable:!0}):i,t)),et=t=>we(se({},"__esModule",{value:!0}),t);var Ut={};Je(Ut,{AllowlistView:()=>De,AuthUserAdminAppView:()=>Ct,DEFAULT_PENDING_SYNC_POLLING:()=>Se,DirectoryView:()=>Ne,GroupMembersView:()=>Ie,GroupsView:()=>Pe,UserAdminInputError:()=>B,UserAdminOperatorError:()=>K,UserAdminShell:()=>ge,UsersView:()=>ye,createInMemoryUserAdminStore:()=>ot,createUserAdminApp:()=>bt,defaultUserAdminLabels:()=>j,jaUserAdminLabels:()=>tt,normalizeUpstreamKey:()=>z,resolveUserAdminLabels:()=>me,userAdminAccessFor:()=>mt,userAdminIntents:()=>ct});module.exports=et(Ut);var xe=require("@aiquants/virtualscroll"),j={title:"Users & Groups",locale:"en",formatLocale:"en-US",timeZone:"UTC",heading:"\u{1F464} User administration",common:{create:"Create",edit:"Edit",delete:"Delete",save:"Save",cancel:"Cancel",actions:"Actions",status:"Status",id:"ID",readOnly:"Read-only",managedUpstream:"Managed upstream",idTemplate:"#{id}",none:"-"},errors:{unknownUpstream:"No group named {key} exists upstream. Check the spelling, or pick one from the list.",directoryDisabled:"This deployment has no directory configured, so groups cannot be linked.",invalidField:"\u201C{field}\u201D is missing or not a value this operation accepts.",unknownIntent:"This screen does not perform that operation.",fieldNames:{groupId:"Group",userId:"User",entryId:"Entry",displayName:"Display name",email:"Email",groupKey:"Group key",name:"Name",provider:"Directory provider",externalKey:"Directory group address",membershipMode:"Membership expansion",isActive:"Active",isSyncEnabled:"Synchronization",pattern:"Pattern",type:"Type"},invalidAllowlistType:"The allowlist type must be either an address or a domain.",unexpected:"The operation failed. The reason is in the server log.",alreadyLinked:"{key} is already linked to {group}. One upstream group can back only one local group.",forbidden:"You do not have permission for this operation. The badge in the header shows what you currently hold; ask an administrator for the rest.",requestTooLarge:"The request was too large to process."},permissions:{label:"Your permissions:",canWrite:"Editable",canRead:"Read only",canDelete:"Delete only",none:"No access",unknown:"Unknown"},tabs:{users:"\u{1F464} Users",groups:"\u{1F465} Groups",groupMembers:"\u{1F517} Members",allowlist:"\u2709\uFE0F Allowlist",directory:"\u{1F504} Directory"},usersView:{title:"Users",sortBy:"Sort by {column}",searchPlaceholder:"Search by name or email...",searchLabel:"Search users",addUser:"\uFF0B Add user",editUser:"Edit user",displayName:"Name",email:"Email",active:"Active",inactive:"Inactive",activate:"Activate",deactivate:"Deactivate",editUserAria:"Edit {user}",activateAria:"Activate {user}",deactivateAria:"Deactivate {user}",emptyFiltered:"No user matches this search.",listSummary:"Showing {shown} of {total} users.",sortedAscending:"{column}, sorted ascending. Activate to sort descending.",sortedDescending:"{column}, sorted descending. Activate to sort ascending.",confirmDeactivate:"Deactivate {user}? They will no longer be able to sign in.",empty:"No user is registered yet."},groupsView:{emptyFiltered:"No group matches this search",createModeLabel:"How to create the group",createModeLocal:"Create locally",createModeUpstream:"Create from a directory group",pickUpstream:"Directory group",pickUpstreamPlaceholder:"Search by name or address...",upstreamOptionMembers:"{count} members",upstreamAlreadyLinked:"already linked to {group}",providerUnset:"This deployment has no directory provider configured, so a directory group cannot be linked yet. Ask an administrator to set it.",pickUpstreamFirst:"Pick a directory group first.",allUpstreamLinked:"Every directory group is already linked to a local group. One upstream group can back only one local group, so unlink one first.",catalogEmpty:"The directory reported no groups as of {at}. Creating from a directory group is unavailable until one exists upstream.",catalogUnavailable:"The directory could not be reached, so the group list is unavailable. Enter the address by hand instead. ({reason})",catalogUnavailableHere:"The directory could not be reached, so creating from a directory group is unavailable. Create the group locally, then link it on the Directory tab. ({reason})",catalogObservedAt:"This list is the directory as of {at}.",catalogStale:"\u26A0 This list is the directory as of {at} and is overdue for a refresh \u2014 a group created since then will not appear.",catalogFailures:{denied:"the directory refused this deployment's credential",rateLimited:"the directory is rate-limiting this deployment",upstreamError:"the directory reported an internal error",neverObserved:"the directory has not been read yet \u2014 the synchronization job may not be running",unknown:"the reason is in the server log"},createUpstreamNotice:"Creates the group and links it in one step. The directory then owns its membership \u2014 and this screen can no longer rename, describe or delete the group. Unlinking is the only way back, and it removes the member ledger and the group-based sign-in permission.",openMembers:"Members",openMembersAria:"Show the members of {group}",title:"Groups",searchPlaceholder:"Search by group name or key...",searchLabel:"Search groups",addGroup:"\uFF0B Add group",editGroup:"Edit group",groupKey:"Group key",name:"Name",description:"Description",memberCountTemplate:"{count} members",confirmDelete:"Delete {group}? Its {count} membership record(s) go with it, and anyone who could sign in only through this group will be locked out.",confirmCreateLinked:"Create {group} and hand its membership to {upstream}? Renaming and deleting it here becomes impossible.",editGroupAria:"Edit {group}",deleteGroupAria:"Delete {group}",noDescription:"No description",groupKeyPlaceholder:"e.g. dev-team",namePlaceholder:"e.g. Development team",empty:"No groups registered"},groupMembersView:{title:"Group members",searchLabel:"Search users",searchPlaceholder:"Search by name or email...",onlyMembers:"Members only ({count})",emptyFiltered:"No user matches this search",summary:"Showing {shown} of {total} users. This group has {members} member(s).",selectGroup:"Select a group",selectPrompt:"Select a group to manage its members",noGroups:"No group exists yet. Create one on the Groups tab first.",emptyNoMembers:"This group has no members yet. Untick \u201CMembers only\u201D to add someone.",noUsers:"No user is registered yet. Add one on the Users tab first.",deepLinkMissed:"Group {id} was not found \u2014 it may have been deleted. Showing {group} instead.",actionAdd:"Add",actionRemove:"Remove",actionAddAria:"Add {user} to this group",actionRemoveAria:"Remove {user} from this group",upstreamNotice:"Membership of this group is owned by the upstream directory. Edit it there \u2014 a local change would be reverted at the next synchronization.",membersOfTemplate:"Members of {group}",groupKeyLabel:"Group key"},allowlistView:{title:"Sign-in allowlist",addEntry:"\uFF0B Add pattern",pattern:"Pattern (e.g. @example.com or user@example.com)",type:"Type",emailType:"Exact email match",domainType:"Domain match",emailTypeShort:"Email",domainTypeShort:"Domain",groupTypeShort:"Group",target:"Target",description:"Description",deploymentOwner:"Deployment-wide",confirmDelete:"Remove {target} from the sign-in allowlist? Anyone who could sign in only through it will be locked out.",deleteAria:"Remove the allowlist entry for {target}",empty:"No allowlist entries registered"},directoryView:{title:"Directory synchronization",membershipMode:"Membership",directMode:"Direct only",transitiveMode:"Nested expanded",lastSynced:"Last synced",neverSynced:"Never",unresolvedTemplate:"{count} unresolved",syncPaused:"Paused",syncEnabled:"Active",syncNow:"Sync now",syncQueued:"Queued",syncAlreadyPending:"A synchronization request for this scope is already waiting, so nothing was queued. If it never completes, the synchronization job may not be running.",linkSyncNotQueued:'The link was created, but a synchronization request could not be queued. Use "Sync now" on the Directory tab.',staleWarning:"Synchronization is overdue. Until it runs, people removed upstream keep their access.",disabledWarning:"Directory synchronization is not wired for this deployment. Existing memberships remain in force and are no longer being refreshed.",pausedTemplate:"{paused} of {total} links are paused",erroredTemplate:"Last synchronization failed for {groups}",erroredItemTemplate:"{group}: {reason}",listSeparator:", ",oldestSyncedTemplate:"oldest successful sync: {at}",pendingTemplate:"{count} sync requests are queued",nothingToLink:"Every group is already linked to a directory.",noGroupsToLink:"No group exists yet. Create one on the Groups tab first.",notWiredNotice:"Directory synchronization is not wired for this deployment, so links cannot be created or changed here.",syncNowAria:"Synchronize {group} now",syncQueuedAria:"A synchronization of {group} is queued",pauseAria:"Pause synchronization of {group}",resumeAria:"Resume synchronization of {group}",allowGroupAria:"Allow members of {group} to sign in",disallowGroupAria:"Stop allowing members of {group} to sign in",unlinkAria:"Unlink {group} from the directory",confirmDisallow:"Stop allowing {group} to sign in? Anyone who could sign in only through it will be locked out.",link:"Link to a directory group",unlink:"Unlink",externalKey:"Upstream group",empty:"No groups are linked to a directory",selectGroup:"Group to link",pickUpstreamPlaceholder:"Search by name or address...",pickerNoOptions:"No matching group",pickerClear:"Clear the selection",pickerToggle:"Show the group list",pickerSelected:"Selected: {value}",pickerAvailable:"{count} groups available",externalKeyPlaceholder:"e.g. dev-team@example.com",confirmLink:"Hand {group}'s membership to {upstream}? Renaming, deleting, and editing its members here becomes impossible.",confirmUnlink:"Unlink {group} from {upstream}? Its member ledger and group-based sign-in permission are removed.",pause:"Pause",resume:"Resume",allowGroup:"Allow sign-in",disallowGroup:"Stop allowing sign-in",groupOptionTemplate:"{name} ({key})"}},tt={title:"\u30E6\u30FC\u30B6\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406",locale:"ja",formatLocale:"ja-JP",timeZone:"Asia/Tokyo",heading:"\u{1F464} \u30E6\u30FC\u30B6\u30FC\u7BA1\u7406",common:{create:"\u4F5C\u6210",edit:"\u7DE8\u96C6",delete:"\u524A\u9664",save:"\u4FDD\u5B58",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",actions:"\u64CD\u4F5C",status:"\u72B6\u614B",id:"ID",readOnly:"\u5909\u66F4\u4E0D\u53EF",managedUpstream:"\u4E0A\u6D41\u304C\u6240\u6709",idTemplate:"#{id}",none:"-"},errors:{unknownUpstream:"\u4E0A\u6D41\u306B {key} \u3068\u3044\u3046\u30B0\u30EB\u30FC\u30D7\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u7DB4\u308A\u3092\u78BA\u8A8D\u3059\u308B\u304B\u3001\u4E00\u89A7\u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002",directoryDisabled:"\u3053\u306E\u914D\u5099\u306B\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30B0\u30EB\u30FC\u30D7\u3092\u9023\u643A\u3067\u304D\u307E\u305B\u3093\u3002",invalidField:"\u300C{field}\u300D\u304C\u672A\u6307\u5B9A\u304B\u3001\u3053\u306E\u64CD\u4F5C\u304C\u53D7\u3051\u4ED8\u3051\u3089\u308C\u306A\u3044\u5024\u3067\u3059\u3002",unknownIntent:"\u3053\u306E\u753B\u9762\u3067\u306F\u3001\u305D\u306E\u64CD\u4F5C\u3092\u884C\u3044\u307E\u305B\u3093\u3002",fieldNames:{groupId:"\u30B0\u30EB\u30FC\u30D7",userId:"\u30E6\u30FC\u30B6\u30FC",entryId:"\u9805\u76EE",displayName:"\u8868\u793A\u540D",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",groupKey:"\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC",name:"\u540D\u524D",provider:"\u9023\u643A\u30D7\u30ED\u30D0\u30A4\u30C0",externalKey:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u30A2\u30C9\u30EC\u30B9",membershipMode:"\u6240\u5C5E\u306E\u5C55\u958B",isActive:"\u6709\u52B9",isSyncEnabled:"\u540C\u671F",pattern:"\u30D1\u30BF\u30FC\u30F3",type:"\u7A2E\u5225"},invalidAllowlistType:"\u8A31\u53EF\u30EA\u30B9\u30C8\u306E\u7A2E\u5225\u306F\u3001\u30A2\u30C9\u30EC\u30B9\u304B\u30C9\u30E1\u30A4\u30F3\u306E\u3044\u305A\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",unexpected:"\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u7406\u7531\u306F\u30B5\u30FC\u30D0\u30FC\u306E\u30ED\u30B0\u306B\u51FA\u3066\u3044\u307E\u3059\u3002",alreadyLinked:"{key} \u306F\u65E2\u306B {group} \u3068\u9023\u643A\u3057\u3066\u3044\u307E\u3059\u30021 \u3064\u306E\u4E0A\u6D41\u30B0\u30EB\u30FC\u30D7\u3092 2 \u3064\u306E\u30ED\u30FC\u30AB\u30EB\u30B0\u30EB\u30FC\u30D7\u3078\u7E4B\u3050\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002",forbidden:"\u3053\u306E\u64CD\u4F5C\u3092\u884C\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u4ECA\u306E\u6A29\u9650\u306F\u30D8\u30C3\u30C0\u30FC\u306E\u30D0\u30C3\u30B8\u306B\u51FA\u3066\u3044\u307E\u3059\u3002\u5FC5\u8981\u3067\u3042\u308C\u3070\u7BA1\u7406\u8005\u306B\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",requestTooLarge:"\u9001\u4FE1\u3055\u308C\u305F\u5185\u5BB9\u304C\u5927\u304D\u3059\u304E\u308B\u305F\u3081\u51E6\u7406\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},permissions:{label:"\u3042\u306A\u305F\u306E\u6A29\u9650:",canWrite:"\u7DE8\u96C6\u53EF",canRead:"\u95B2\u89A7\u306E\u307F",canDelete:"\u524A\u9664\u306E\u307F",none:"\u6A29\u9650\u306A\u3057",unknown:"\u6A29\u9650\u4E0D\u660E"},tabs:{users:"\u{1F464} \u30E6\u30FC\u30B6\u30FC\u4E00\u89A7",groups:"\u{1F465} \u30E6\u30FC\u30B6\u30FC\u30B0\u30EB\u30FC\u30D7",groupMembers:"\u{1F517} \u30B0\u30EB\u30FC\u30D7\u30E1\u30F3\u30D0\u30FC",allowlist:"\u2709\uFE0F \u30A2\u30AF\u30BB\u30B9\u8A31\u53EF\u30EA\u30B9\u30C8",directory:"\u{1F504} \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9023\u643A"},usersView:{title:"\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406",sortBy:"{column} \u3067\u4E26\u3079\u66FF\u3048",searchPlaceholder:"\u8868\u793A\u540D\u3084 Email \u3067\u691C\u7D22...",searchLabel:"\u30E6\u30FC\u30B6\u30FC\u3092\u691C\u7D22",addUser:"\uFF0B \u30E6\u30FC\u30B6\u30FC\u8FFD\u52A0",editUser:"\u30E6\u30FC\u30B6\u30FC\u7DE8\u96C6",displayName:"\u8868\u793A\u540D",email:"Email",active:"\u6709\u52B9",inactive:"\u7121\u52B9",activate:"\u6709\u52B9\u5316",deactivate:"\u7121\u52B9\u5316",editUserAria:"{user} \u3092\u7DE8\u96C6",activateAria:"{user} \u3092\u6709\u52B9\u5316",deactivateAria:"{user} \u3092\u7121\u52B9\u5316",emptyFiltered:"\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u5229\u7528\u8005\u306F\u3044\u307E\u305B\u3093\u3002",listSummary:"{total} \u4EBA\u4E2D {shown} \u4EBA\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002",sortedAscending:"{column} (\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048\u4E2D)\u3002\u62BC\u3059\u3068\u964D\u9806\u306B\u306A\u308A\u307E\u3059\u3002",sortedDescending:"{column} (\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048\u4E2D)\u3002\u62BC\u3059\u3068\u6607\u9806\u306B\u306A\u308A\u307E\u3059\u3002",confirmDeactivate:"{user} \u3092\u7121\u52B9\u5316\u3057\u307E\u3059\u304B\uFF1F \u4EE5\u5F8C\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",empty:"\u30E6\u30FC\u30B6\u30FC\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},groupsView:{emptyFiltered:"\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u306F\u3042\u308A\u307E\u305B\u3093",createModeLabel:"\u4F5C\u6210\u65B9\u6CD5",createModeLocal:"\u30ED\u30FC\u30AB\u30EB\u306B\u4F5C\u6210",createModeUpstream:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u304B\u3089\u4F5C\u6210",pickUpstream:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7",pickUpstreamPlaceholder:"\u540D\u524D\u304B\u30A2\u30C9\u30EC\u30B9\u3067\u691C\u7D22...",upstreamOptionMembers:"{count} \u540D",upstreamAlreadyLinked:"{group} \u3068\u9023\u643A\u6E08\u307F",providerUnset:"\u3053\u306E\u914D\u5099\u306B\u306F\u9023\u643A\u30D7\u30ED\u30D0\u30A4\u30C0\u540D\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u9023\u643A\u3067\u304D\u307E\u305B\u3093\u3002\u7BA1\u7406\u8005\u306B\u8A2D\u5B9A\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",pickUpstreamFirst:"\u5148\u306B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002",allUpstreamLinked:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u306F\u3059\u3079\u3066\u3001\u3044\u305A\u308C\u304B\u306E\u30ED\u30FC\u30AB\u30EB\u30B0\u30EB\u30FC\u30D7\u3068\u9023\u643A\u6E08\u307F\u3067\u3059\u30021 \u3064\u306E\u4E0A\u6D41\u30B0\u30EB\u30FC\u30D7\u3092\u7E4B\u3052\u308B\u5148\u306F 1 \u3064\u3060\u3051\u306A\u306E\u3067\u3001\u7E4B\u304E\u66FF\u3048\u308B\u306B\u306F\u3069\u308C\u304B\u306E\u9023\u643A\u3092\u89E3\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002",catalogEmpty:"{at} \u6642\u70B9\u3067\u3001\u4E0A\u6D41\u306B\u30B0\u30EB\u30FC\u30D7\u304C 1 \u3064\u3082\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4E0A\u6D41\u306B\u30B0\u30EB\u30FC\u30D7\u304C\u3067\u304D\u308B\u307E\u3067\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304B\u3089\u306E\u4F5C\u6210\u306F\u3067\u304D\u307E\u305B\u3093\u3002",catalogUnavailable:"\u4E0A\u6D41\u3078\u5230\u9054\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30B0\u30EB\u30FC\u30D7\u4E00\u89A7\u3092\u51FA\u305B\u307E\u305B\u3093\u3002\u30A2\u30C9\u30EC\u30B9\u3092\u624B\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002({reason})",catalogUnavailableHere:"\u4E0A\u6D41\u3078\u5230\u9054\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304B\u3089\u306E\u4F5C\u6210\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30ED\u30FC\u30AB\u30EB\u306B\u4F5C\u6210\u3057\u305F\u3046\u3048\u3067\u3001\u9023\u643A\u30BF\u30D6\u304B\u3089\u9023\u643A\u3057\u3066\u304F\u3060\u3055\u3044\u3002({reason})",catalogObservedAt:"\u3053\u306E\u4E00\u89A7\u306F {at} \u6642\u70B9\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002",catalogStale:"\u26A0 \u3053\u306E\u4E00\u89A7\u306F {at} \u6642\u70B9\u306E\u3082\u306E\u3067\u3001\u66F4\u65B0\u304C\u6EDE\u3063\u3066\u3044\u307E\u3059\u3002\u305D\u308C\u4EE5\u964D\u306B\u4F5C\u3089\u308C\u305F\u30B0\u30EB\u30FC\u30D7\u306F\u51FA\u3066\u304D\u307E\u305B\u3093\u3002",catalogFailures:{denied:"\u3053\u306E\u914D\u5099\u306E\u8CC7\u683C\u60C5\u5831\u304C\u4E0A\u6D41\u306B\u62D2\u5426\u3055\u308C\u307E\u3057\u305F",rateLimited:"\u4E0A\u6D41\u304C\u3053\u306E\u914D\u5099\u306E\u547C\u3073\u51FA\u3057\u3092\u5236\u9650\u3057\u3066\u3044\u307E\u3059",upstreamError:"\u4E0A\u6D41\u304C\u5185\u90E8\u30A8\u30E9\u30FC\u3092\u8FD4\u3057\u307E\u3057\u305F",neverObserved:"\u4E0A\u6D41\u3092\u307E\u3060\u4E00\u5EA6\u3082\u8AAD\u3081\u3066\u3044\u307E\u305B\u3093 (\u540C\u671F\u30B8\u30E7\u30D6\u304C\u52D5\u3044\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059)",unknown:"\u7406\u7531\u306F\u30B5\u30FC\u30D0\u30FC\u306E\u30ED\u30B0\u306B\u51FA\u3066\u3044\u307E\u3059"},createUpstreamNotice:"\u30B0\u30EB\u30FC\u30D7\u306E\u4F5C\u6210\u3068\u9023\u643A\u3092 1 \u624B\u3067\u884C\u3044\u307E\u3059\u3002\u4EE5\u5F8C\u3001\u6240\u5C5E\u306F\u4E0A\u6D41\u304C\u6240\u6709\u3057 \u2014 \u3053\u306E\u753B\u9762\u304B\u3089\u306F\u540D\u79F0\u30FB\u8AAC\u660E\u306E\u5909\u66F4\u3082\u524A\u9664\u3082\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002\u623B\u3059\u624B\u6BB5\u306F\u9023\u643A\u89E3\u9664\u3060\u3051\u3067\u3001\u305D\u308C\u306F\u30E1\u30F3\u30D0\u30FC\u53F0\u5E33\u3068\u30B0\u30EB\u30FC\u30D7\u5358\u4F4D\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u6D88\u3057\u307E\u3059\u3002",openMembers:"\u30E1\u30F3\u30D0\u30FC",openMembersAria:"{group} \u306E\u30E1\u30F3\u30D0\u30FC\u3092\u8868\u793A",title:"\u30E6\u30FC\u30B6\u30FC\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406",searchPlaceholder:"\u30B0\u30EB\u30FC\u30D7\u540D\u3084\u30AD\u30FC\u3067\u691C\u7D22...",searchLabel:"\u30B0\u30EB\u30FC\u30D7\u3092\u691C\u7D22",addGroup:"\uFF0B \u30B0\u30EB\u30FC\u30D7\u8FFD\u52A0",editGroup:"\u30B0\u30EB\u30FC\u30D7\u7DE8\u96C6",groupKey:"\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC",name:"\u540D\u79F0",description:"\u8AAC\u660E",memberCountTemplate:"\u6240\u5C5E {count} \u540D",confirmDelete:"{group} \u3092\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F \u6240\u5C5E {count} \u4EF6\u3082\u4E00\u7DD2\u306B\u6D88\u3048\u3001\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3067\u3057\u304B\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u3044\u4EBA\u306F\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",confirmCreateLinked:"{group} \u3092\u4F5C\u6210\u3057\u3001\u305D\u306E\u6240\u5C5E\u3092 {upstream} \u306B\u59D4\u306D\u307E\u3059\u304B\uFF1F \u4EE5\u5F8C\u3053\u306E\u753B\u9762\u304B\u3089\u540D\u79F0\u5909\u66F4\u3068\u524A\u9664\u304C\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",editGroupAria:"{group} \u3092\u7DE8\u96C6",deleteGroupAria:"{group} \u3092\u524A\u9664",noDescription:"\u8AAC\u660E\u306A\u3057",groupKeyPlaceholder:"\u4F8B: dev-team",namePlaceholder:"\u4F8B: \u958B\u767A\u30C1\u30FC\u30E0",empty:"\u30E6\u30FC\u30B6\u30FC\u30B0\u30EB\u30FC\u30D7\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},groupMembersView:{title:"\u30B0\u30EB\u30FC\u30D7\u30E1\u30F3\u30D0\u30FC\u7BA1\u7406",searchLabel:"\u5229\u7528\u8005\u3092\u691C\u7D22",searchPlaceholder:"\u8868\u793A\u540D\u3084 Email \u3067\u691C\u7D22...",onlyMembers:"\u6240\u5C5E\u306E\u307F\u8868\u793A ({count} \u540D)",emptyFiltered:"\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u5229\u7528\u8005\u306F\u3044\u307E\u305B\u3093",summary:"{total} \u540D\u306E\u3046\u3061 {shown} \u540D\u3092\u8868\u793A\u4E2D\u3002\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u6240\u5C5E\u306F {members} \u540D\u3067\u3059\u3002",selectGroup:"\u30B0\u30EB\u30FC\u30D7\u9078\u629E",selectPrompt:"\u30B0\u30EB\u30FC\u30D7\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",noGroups:"\u30B0\u30EB\u30FC\u30D7\u304C\u307E\u3060 1 \u3064\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5148\u306B\u30B0\u30EB\u30FC\u30D7\u30BF\u30D6\u3067\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",emptyNoMembers:"\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306B\u306F\u307E\u3060\u30E1\u30F3\u30D0\u30FC\u304C\u3044\u307E\u305B\u3093\u3002\u300C\u6240\u5C5E\u306E\u307F\u8868\u793A\u300D\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5916\u3059\u3068\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002",noUsers:"\u5229\u7528\u8005\u304C\u307E\u3060 1 \u4EBA\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5148\u306B\u30E6\u30FC\u30B6\u30FC\u30BF\u30D6\u3067\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",deepLinkMissed:"\u30B0\u30EB\u30FC\u30D7 {id} \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F (\u524A\u9664\u3055\u308C\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059)\u3002\u4EE3\u308F\u308A\u306B {group} \u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002",actionAdd:"\u8FFD\u52A0",actionRemove:"\u9664\u5916",actionAddAria:"{user} \u3092\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3078\u8FFD\u52A0",actionRemoveAria:"{user} \u3092\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u304B\u3089\u9664\u5916",upstreamNotice:"\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u6240\u5C5E\u306F\u4E0A\u6D41\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u6240\u6709\u3057\u3066\u3044\u307E\u3059\u3002\u5909\u66F4\u306F\u4E0A\u6D41\u3067\u884C\u3063\u3066\u304F\u3060\u3055\u3044 (\u3053\u3053\u3067\u5909\u3048\u3066\u3082\u6B21\u306E\u540C\u671F\u3067\u5143\u306B\u623B\u308A\u307E\u3059)\u3002",membersOfTemplate:"{group} \u306E\u6240\u5C5E\u30E1\u30F3\u30D0\u30FC",groupKeyLabel:"\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC"},allowlistView:{title:"\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u30EA\u30B9\u30C8",addEntry:"\uFF0B \u30D1\u30BF\u30FC\u30F3\u8FFD\u52A0",pattern:"\u30D1\u30BF\u30FC\u30F3 (\u4F8B: @example.com \u307E\u305F\u306F user@example.com)",type:"\u7A2E\u5225",emailType:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u5B8C\u5168\u4E00\u81F4",domainType:"\u30C9\u30E1\u30A4\u30F3\u4E00\u81F4",emailTypeShort:"\u30E1\u30FC\u30EB",domainTypeShort:"\u30C9\u30E1\u30A4\u30F3",groupTypeShort:"\u30B0\u30EB\u30FC\u30D7",target:"\u5BFE\u8C61",description:"\u8AAC\u660E / \u5099\u8003",deploymentOwner:"\u914D\u5099\u5171\u901A",confirmDelete:"{target} \u3092\u8A31\u53EF\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F \u3053\u308C\u3067\u3057\u304B\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u3044\u4EBA\u306F\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",deleteAria:"{target} \u306E\u8A31\u53EF\u3092\u524A\u9664",empty:"\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u30EA\u30B9\u30C8\u306B\u767B\u9332\u304C\u3042\u308A\u307E\u305B\u3093\u3002"},directoryView:{title:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540C\u671F",membershipMode:"\u6240\u5C5E\u306E\u5C55\u958B",directMode:"\u76F4\u63A5\u6240\u5C5E\u306E\u307F",transitiveMode:"\u5165\u308C\u5B50\u3092\u5C55\u958B",lastSynced:"\u6700\u7D42\u540C\u671F",neverSynced:"\u672A\u5B9F\u884C",unresolvedTemplate:"{count} \u4EF6\u304C\u672A\u89E3\u6C7A",syncPaused:"\u505C\u6B62\u4E2D",syncEnabled:"\u6709\u52B9",syncNow:"\u4ECA\u3059\u3050\u540C\u671F",syncQueued:"\u540C\u671F\u3092\u8981\u6C42\u3057\u307E\u3057\u305F",syncAlreadyPending:"\u3053\u306E\u7BC4\u56F2\u306E\u540C\u671F\u8981\u6C42\u306F\u65E2\u306B\u5F85\u6A5F\u4E2D\u306E\u305F\u3081\u3001\u65B0\u3057\u304F\u306F\u7A4D\u307F\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3044\u3064\u307E\u3067\u3082\u5B8C\u4E86\u3057\u306A\u3044\u5834\u5408\u3001\u540C\u671F\u30B8\u30E7\u30D6\u304C\u52D5\u3044\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",linkSyncNotQueued:"\u9023\u643A\u306F\u4F5C\u6210\u3057\u307E\u3057\u305F\u304C\u3001\u540C\u671F\u8981\u6C42\u3092\u7A4D\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9023\u643A\u30BF\u30D6\u306E\u300C\u4ECA\u3059\u3050\u540C\u671F\u300D\u3067\u8981\u6C42\u3057\u3066\u304F\u3060\u3055\u3044\u3002",staleWarning:"\u540C\u671F\u304C\u6EDE\u3063\u3066\u3044\u307E\u3059\u3002\u5B9F\u884C\u3055\u308C\u308B\u307E\u3067\u3001\u4E0A\u6D41\u304B\u3089\u5916\u308C\u305F\u4EBA\u306E\u30A2\u30AF\u30BB\u30B9\u306F\u6B8B\u308A\u7D9A\u3051\u307E\u3059\u3002",disabledWarning:"\u3053\u306E\u914D\u5099\u3067\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540C\u671F\u304C\u7D50\u7DDA\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u65E2\u5B58\u306E\u6240\u5C5E\u306F\u305D\u306E\u307E\u307E\u6709\u52B9\u3067\u3001\u66F4\u65B0\u3060\u3051\u304C\u6B62\u307E\u3063\u3066\u3044\u307E\u3059\u3002",pausedTemplate:"\u9023\u643A {total} \u4EF6\u306E\u3046\u3061 {paused} \u4EF6\u304C\u505C\u6B62\u4E2D",erroredTemplate:"\u76F4\u8FD1\u306E\u540C\u671F\u306B\u5931\u6557\u3057\u305F\u30B0\u30EB\u30FC\u30D7: {groups}",erroredItemTemplate:"{group}: {reason}",listSeparator:" / ",oldestSyncedTemplate:"\u6700\u3082\u53E4\u3044\u540C\u671F\u6210\u529F: {at}",pendingTemplate:"{count} \u4EF6\u306E\u540C\u671F\u8981\u6C42\u304C\u672A\u51E6\u7406",nothingToLink:"\u3059\u3079\u3066\u306E\u30B0\u30EB\u30FC\u30D7\u304C\u65E2\u306B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u9023\u643A\u3057\u3066\u3044\u307E\u3059\u3002",noGroupsToLink:"\u30B0\u30EB\u30FC\u30D7\u304C\u307E\u3060 1 \u3064\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5148\u306B\u30B0\u30EB\u30FC\u30D7\u30BF\u30D6\u3067\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",notWiredNotice:"\u3053\u306E\u914D\u5099\u3067\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540C\u671F\u304C\u7D50\u7DDA\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u3053\u304B\u3089\u9023\u643A\u306E\u4F5C\u6210\u30FB\u5909\u66F4\u306F\u3067\u304D\u307E\u305B\u3093\u3002",syncNowAria:"{group} \u3092\u4ECA\u3059\u3050\u540C\u671F",syncQueuedAria:"{group} \u306E\u540C\u671F\u3092\u8981\u6C42\u6E08\u307F",pauseAria:"{group} \u306E\u540C\u671F\u3092\u4E00\u6642\u505C\u6B62",resumeAria:"{group} \u306E\u540C\u671F\u3092\u518D\u958B",allowGroupAria:"{group} \u306E\u30E1\u30F3\u30D0\u30FC\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u3092\u8A31\u53EF",disallowGroupAria:"{group} \u306E\u30E1\u30F3\u30D0\u30FC\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u5916\u3059",unlinkAria:"{group} \u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9023\u643A\u3092\u89E3\u9664",confirmDisallow:"{group} \u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u5916\u3057\u307E\u3059\u304B\uFF1F \u3053\u308C\u3067\u3057\u304B\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u3044\u4EBA\u306F\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",link:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u3068\u9023\u643A\u3059\u308B",unlink:"\u9023\u643A\u3092\u89E3\u9664",externalKey:"\u4E0A\u6D41\u30B0\u30EB\u30FC\u30D7",empty:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u9023\u643A\u3057\u3066\u3044\u308B\u30B0\u30EB\u30FC\u30D7\u306F\u3042\u308A\u307E\u305B\u3093",selectGroup:"\u9023\u643A\u3059\u308B\u30B0\u30EB\u30FC\u30D7",pickUpstreamPlaceholder:"\u540D\u524D\u304B\u30A2\u30C9\u30EC\u30B9\u3067\u691C\u7D22...",pickerNoOptions:"\u4E00\u81F4\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u304C\u3042\u308A\u307E\u305B\u3093",pickerClear:"\u9078\u629E\u3092\u89E3\u9664",pickerToggle:"\u30B0\u30EB\u30FC\u30D7\u4E00\u89A7\u3092\u958B\u304F",pickerSelected:"\u9078\u629E\u4E2D: {value}",pickerAvailable:"\u5019\u88DC {count} \u4EF6",externalKeyPlaceholder:"\u4F8B: dev-team@example.com",confirmLink:"{group} \u306E\u6240\u5C5E\u3092 {upstream} \u306B\u59D4\u306D\u307E\u3059\u304B\uFF1F \u4EE5\u5F8C\u3053\u306E\u753B\u9762\u304B\u3089\u540D\u79F0\u5909\u66F4\u30FB\u524A\u9664\u30FB\u30E1\u30F3\u30D0\u30FC\u7DE8\u96C6\u304C\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",confirmUnlink:"{group} \u3068 {upstream} \u306E\u9023\u643A\u3092\u89E3\u9664\u3057\u307E\u3059\u304B\uFF1F \u30E1\u30F3\u30D0\u30FC\u53F0\u5E33\u3068\u30B0\u30EB\u30FC\u30D7\u5358\u4F4D\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u304C\u5931\u308F\u308C\u307E\u3059\u3002",pause:"\u4E00\u6642\u505C\u6B62",resume:"\u518D\u958B",allowGroup:"\u30B5\u30A4\u30F3\u30A4\u30F3\u3092\u8A31\u53EF",disallowGroup:"\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u5916\u3059",groupOptionTemplate:"{name} ({key})"}};function rt(t){if(t===void 0)return j.locale;try{return(0,xe.resolveVirtualScrollLocale)(t)}catch(r){throw r instanceof RangeError?new RangeError(`[auth-react-router] labels.locale is the UI language, not a BCP 47 tag (dates and sorting read labels.formatLocale): ${r.message}`,{cause:r}):r}}function me(t){let r=j;return t?{title:t.title??r.title,locale:rt(t.locale),formatLocale:t.formatLocale??r.formatLocale,timeZone:t.timeZone??r.timeZone,heading:t.heading??r.heading,common:{...r.common,...t.common},errors:{...r.errors,...t.errors},permissions:{...r.permissions,...t.permissions},tabs:{...r.tabs,...t.tabs},usersView:{...r.usersView,...t.usersView},groupsView:{...r.groupsView,...t.groupsView},groupMembersView:{...r.groupMembersView,...t.groupMembersView},allowlistView:{...r.allowlistView,...t.allowlistView},directoryView:{...r.directoryView,...t.directoryView}}:r}var re=require("react-router");function x(t,r){return t.replace(/\{(\w+)\}/g,(i,l)=>Object.hasOwn(r,l)?String(r[l]):i)}function J(t,r){let i=/(?:Z|[+-]\d{2}:?\d{2})$/.test(t)?t:`${t}Z`;try{return new Intl.DateTimeFormat(r.formatLocale,{timeZone:r.timeZone,dateStyle:"medium",timeStyle:"short"}).format(new Date(i))}catch{return t}}function ot(t){let r=t?.users??[{id:1,email:"admin@example.com",displayName:"\u30B7\u30B9\u30C6\u30E0\u7BA1\u7406\u8005",isActive:!0},{id:2,email:"user1@example.com",displayName:"\u958B\u767A \u592A\u90CE",isActive:!0},{id:3,email:"user2@example.com",displayName:"\u55B6\u696D \u82B1\u5B50",isActive:!0}],i=t?.groups??[{id:1,groupKey:"dev-team",name:"\u958B\u767A\u30C1\u30FC\u30E0",description:"\u30B7\u30B9\u30C6\u30E0\u958B\u767A\u62C5\u5F53\u30B0\u30EB\u30FC\u30D7",isActive:!0,readOnly:!1},{id:2,groupKey:"sales-dept",name:"\u55B6\u696D\u90E8",description:"\u55B6\u696D\u30BD\u30EA\u30E5\u30FC\u30B7\u30E7\u30F3\u62C5\u5F53",isActive:!0,readOnly:!1}],l=t?.groupMembers??[{id:1,groupId:1,userId:2},{id:2,groupId:2,userId:3}],d=t?.allowlist??[{id:1,pattern:"admin@example.com",type:"email",description:"\u521D\u671F\u7BA1\u7406\u8005",owner:{kind:"tenant",tenantId:"default"},readOnly:!1},{id:2,pattern:"@example.com",type:"domain",description:"\u793E\u5185\u30C9\u30E1\u30A4\u30F3",owner:{kind:"tenant",tenantId:"default"},readOnly:!1}];return{async listUsers(){return[...r]},async createUser(o){let n={id:Math.max(...r.map(g=>g.id),0)+1,email:o.email,displayName:o.displayName,isActive:!0};return r.push(n),n},async updateUser(o,n){let g=r.findIndex(h=>h.id===o);if(g===-1)throw new K(`User not found: ${o}`);return r[g]={...r[g],displayName:n.displayName,email:n.email},r[g]},async toggleUserActive(o,n){let g=r.findIndex(h=>h.id===o);if(g===-1)throw new K(`User not found: ${o}`);return r[g]={...r[g],isActive:n},r[g]},async listGroups(){return[...i]},async createGroup(o){let n={id:Math.max(...i.map(g=>g.id),0)+1,groupKey:o.groupKey,name:o.name,description:o.description,isActive:!0,readOnly:!1};return i.push(n),n},async updateGroup(o,n){let g=i.findIndex(h=>h.id===o);if(g===-1)throw new K(`Group not found: ${o}`);return i[g]={...i[g],name:n.name,description:n.description},i[g]},async deleteGroup(o){i=i.filter(n=>n.id!==o),l=l.filter(n=>n.groupId!==o)},async listGroupMembers(){return[...l]},async addGroupMember(o,n){let g=l.find(C=>C.groupId===o&&C.userId===n);if(g)return g;let h={id:Math.max(...l.map(C=>C.id),0)+1,groupId:o,userId:n};return l.push(h),h},async removeGroupMember(o,n){l=l.filter(g=>!(g.groupId===o&&g.userId===n))},async listAllowlist(){return[...d]},async addAllowlistEntry(o){let n={id:Math.max(...d.map(g=>g.id),0)+1,pattern:o.pattern,type:o.type,description:o.description,owner:{kind:"tenant",tenantId:"default"},readOnly:!1};return d.push(n),n},async removeAllowlistEntry(o){d=d.filter(n=>n.id!==o)},async addAllowlistGroup(o,n){let g=i.find(h=>h.id===o);if(!g)throw new K(`Group not found: ${o}`);d=[...d,{id:Math.max(...d.map(h=>h.id),0)+1,type:"group",groupId:o,groupKey:g.groupKey,groupName:g.name,description:n,owner:{kind:"tenant",tenantId:"default"},readOnly:!1}]},async removeAllowlistGroup(o){d=d.filter(n=>!(n.type==="group"&&n.id===o))},async linkDirectoryGroup(){throw new K("This in-memory store has no upstream directory; inject a real store to link groups.")},async createLinkedGroup(){throw new K("This in-memory store has no upstream directory; inject a real store to create a linked group.")},async unlinkDirectoryGroup(){throw new K("This in-memory store has no upstream directory; inject a real store to unlink groups.")},async setDirectorySyncEnabled(){throw new K("This in-memory store has no upstream directory; inject a real store to pause synchronization.")},async requestDirectorySync(){throw new K("This in-memory store has no upstream directory; inject a real store to request a sync.")},async getDirectoryStatus(){return{isEnabled:!1,provider:"",linkedGroupCount:0,isStale:!1,pausedGroupCount:0,stalenessThresholdSec:0,erroredGroupIds:[],pendingRequestCount:0}}}}function it(t,r){let i=Number.isFinite(r)&&r>0?r:at;return(Date.now()-t.getTime())/1e3>i}var nt=64*1024,at=5400;async function ve(t,r,i,l){if(!t)return{kind:"not-wired"};if(!r)return{kind:"not-wired"};try{let{groups:d,observedAt:o}=await t.listGroups(i);return o===null||!Number.isFinite(o.getTime())?{kind:"unavailable",reason:"neverObserved"}:{kind:"ready",groups:d,observedAt:o.toISOString(),isStale:it(o,l)}}catch(d){return console.error("[@aiquants/auth-react-router] directoryCatalog.listGroups failed; the picker falls back to manual entry:",d),{kind:"unavailable",reason:gt(d)}}}function z(t){return t.trim().toLowerCase()}var K=class extends Error{constructor(i){super(i);this.operatorFacing=!0;this.name="UserAdminOperatorError"}};function st(t){return t instanceof K||typeof t=="object"&&t!==null&&t.operatorFacing===!0&&t instanceof Error}var B=class extends Error{constructor(i,l={}){super(i);this.labelKey=i;this.values=l;this.name="UserAdminInputError"}};function lt(t){return typeof t=="object"&&t!==null&&t.status===403}function dt(t){let r=String(t.get("type")??"");if(r==="email"||r==="domain")return r;throw new B("invalidAllowlistType")}var ut=["users","groups","group_members","allowlist","directory"];function pt(t){let r=t.replace(/\.data$/,"").split("/").filter(Boolean),i=r[r.length-1]??"";return ut.includes(i)?i:"users"}var le=new Map([["createUser",["create"]],["updateUser",["update"]],["toggleUserActive",["update"]],["createGroup",["create"]],["updateGroup",["update"]],["deleteGroup",["delete"]],["addGroupMember",["create"]],["removeGroupMember",["delete"]],["addAllowlistEntry",["create"]],["removeAllowlistEntry",["delete"]],["addAllowlistGroup",["create"]],["removeAllowlistGroup",["delete"]],["createLinkedGroup",["create","update","delete"]],["linkDirectoryGroup",["update","create","delete"]],["unlinkDirectoryGroup",["update","delete"]],["setDirectorySyncEnabled",["update"]],["requestDirectorySync",["update"]],["catalog",["update","create","delete"]]]);function ct(){return[...le.keys()]}function mt(t){return le.get(t)??[]}function gt(t){let r=typeof t=="object"&&t!==null&&"status"in t?t.status:void 0;return typeof r!="number"?"unknown":r===401||r===403?"denied":r===429?"rateLimited":r>=500?"upstreamError":"unknown"}function O(t,r){let i=t.get(r),l=Number(i);if(i===null||String(i).trim()===""||!Number.isInteger(l)||l<=0)throw new B("invalidField",{field:r});return l}function $(t,r){let i=String(t.get(r)??"").trim();if(i==="")throw new B("invalidField",{field:r});return i}function yt(t,r){let i=String(t.get(r)??"");if(i!=="true"&&i!=="false")throw new B("invalidField",{field:r});return i==="true"}function ke(t){let r=String(t.get("membershipMode")??"");if(r!=="direct"&&r!=="transitive")throw new B("invalidField",{field:"membershipMode"});return r}function te(t,r){let i=String(t.get(r)??"").trim();return i===""?void 0:i}function bt(t){let r=me(t.labels);async function i(u){if(!t.resolveActor)return"user-admin";try{return await t.resolveActor(u)||"user-admin"}catch(s){return console.error("[@aiquants/auth-react-router] resolveActor failed; recording the request as an unnamed actor:",s),"user-admin"}}async function l(u,s){try{return await t.store.requestDirectorySync(u,await i(s))}catch(w){return console.error(`[@aiquants/auth-react-router] the link for group ${u} was created, but its sync request could not be queued:`,w),"not-queued"}}async function d(u){if(!t.directoryCatalog)return!1;let s=le.get("catalog");if(s===void 0||s.length===0)return!1;try{for(let w of s)await t.guards.requireAccess(u,{action:w,intent:"catalog"});return!0}catch(w){try{t.guards.onDenied?.({intent:"catalog",actions:s,error:w})}catch(p){console.error("[@aiquants/auth-react-router] onDenied threw; the denial itself still stands:",p)}return!1}}async function o({request:u}){await t.guards.requireAccess(u,{action:"read",intent:"loader"});let s=pt(new URL(u.url).pathname),w=(s==="groups"||s==="directory")&&await d(u),[p,y,S,f,b,G]=await Promise.all([t.store.listUsers(),t.store.listGroups(),t.store.listGroupMembers(),t.store.listAllowlist(),t.store.getDirectoryStatus(),t.getMyPermissions?t.getMyPermissions(u).catch(V=>(console.error("[@aiquants/auth-react-router] getMyPermissions failed; rendering the permission badge as unknown:",V),null)):Promise.resolve(null)]),U=await ve(t.directoryCatalog,w,u,b.stalenessThresholdSec);return{resourceLabels:t.resourceLabels,segment:s,users:p,groups:y,groupMembers:S,allowlist:f,directoryStatus:b,myPermissions:G,catalog:U,labels:r}}async function n({request:u}){let s=Number(u.headers.get("content-length")??Number.NaN);if(Number.isFinite(s)&&s>nt)return(0,re.data)({ok:!1,error:r.errors.requestTooLarge},{status:413});let w=await u.formData(),p=String(w.get("intent")??""),y=le.get(p);if(!y)return(0,re.data)({ok:!1,error:r.errors.unknownIntent},{status:400});let S=b=>lt(b),f=b=>{try{t.guards.onDenied?.({intent:p,actions:y,error:b})}catch{}return(0,re.data)({ok:!1,error:r.errors.forbidden},{status:403})};try{for(let b of y)await t.guards.requireAccess(u,{action:b,intent:p})}catch(b){if(!S(b))throw b;return f(b)}try{return await M(p,w,u)}catch(b){if(S(b))return f(b);if(b instanceof Response)throw b;if(b instanceof B){let G=b.values.field,U=typeof G=="string"?{...b.values,field:r.errors.fieldNames[G]??G}:b.values,V=r.errors[b.labelKey];return{ok:!1,error:x(typeof V=="string"?V:String(b.labelKey),U)}}return console.error(`[@aiquants/auth-react-router] intent "${p}" failed:`,b),{ok:!1,error:st(b)?b.message:r.errors.unexpected}}}function g(u,s,w){let p=String(u.get("externalId")??"").trim();if(w.kind==="ready"){if(p!==""&&w.groups.some(f=>f.externalId===p))return p;let y=z(s),S=w.groups.find(f=>z(f.externalKey)===y);if(S)return S.externalId}return p===""?s:p}function h(u){let s=u.provider.trim();if(!u.isEnabled||s==="")throw new B("directoryDisabled");return s}async function C(u,s){let w=z(u),p=z(s),S=(await t.store.listGroups()).find(f=>f.externalLink!==void 0&&(z(f.externalLink.externalId)===w||z(f.externalLink.externalKey)===p));if(S)throw new B("alreadyLinked",{key:s,group:S.name})}function k(u,s,w){if(w.kind!=="ready")return;let p=z(u),y=z(s);if(!w.groups.some(S=>z(S.externalId)===p&&z(S.externalKey)===y))throw new B("unknownUpstream",{key:s})}async function M(u,s,w){let p=null,y=async()=>(p??(p=await t.store.getDirectoryStatus()),p),S=async()=>ve(t.directoryCatalog,!0,w,(await y()).stalenessThresholdSec);if(u==="createUser")return await t.store.createUser({displayName:$(s,"displayName"),email:$(s,"email")}),{ok:!0};if(u==="updateUser")return await t.store.updateUser(O(s,"userId"),{displayName:$(s,"displayName"),email:$(s,"email")}),{ok:!0};if(u==="toggleUserActive"){let f=String(s.get("isActive")??"");if(f!=="true"&&f!=="false")throw new B("invalidField",{field:"isActive"});return await t.store.toggleUserActive(O(s,"userId"),f==="true"),{ok:!0}}if(u==="createGroup")return await t.store.createGroup({groupKey:$(s,"groupKey"),name:$(s,"name"),description:te(s,"description")}),{ok:!0};if(u==="updateGroup")return await t.store.updateGroup(O(s,"groupId"),{name:$(s,"name"),description:te(s,"description")}),{ok:!0};if(u==="deleteGroup")return await t.store.deleteGroup(O(s,"groupId")),{ok:!0};if(u==="addGroupMember")return await t.store.addGroupMember(O(s,"groupId"),O(s,"userId")),{ok:!0};if(u==="removeGroupMember")return await t.store.removeGroupMember(O(s,"groupId"),O(s,"userId")),{ok:!0};if(u==="addAllowlistEntry"){let f=dt(s);return await t.store.addAllowlistEntry({pattern:$(s,"pattern"),type:f,description:te(s,"description")}),{ok:!0}}if(u==="addAllowlistGroup")return await t.store.addAllowlistGroup(O(s,"groupId"),te(s,"description")),{ok:!0};if(u==="removeAllowlistGroup")return await t.store.removeAllowlistGroup(O(s,"entryId")),{ok:!0};if(u==="createLinkedGroup"){let f=$(s,"externalKey"),b=h(await y()),G=await S(),U=g(s,f,G);await C(U,f),k(U,f,G);let V=await t.store.createLinkedGroup({groupKey:$(s,"groupKey"),name:$(s,"name"),description:te(s,"description"),provider:b,externalId:U,externalKey:f,membershipMode:ke(s)});return{ok:!0,syncRequest:await l(V.id,w)}}if(u==="linkDirectoryGroup"){let f=$(s,"externalKey"),b=h(await y()),G=await S(),U=g(s,f,G);await C(U,f),k(U,f,G);let V=O(s,"groupId");return await t.store.linkDirectoryGroup(V,{provider:b,externalId:U,externalKey:f,membershipMode:ke(s)}),{ok:!0,syncRequest:await l(V,w)}}if(u==="unlinkDirectoryGroup")return await t.store.unlinkDirectoryGroup(O(s,"groupId")),{ok:!0};if(u==="setDirectorySyncEnabled")return await t.store.setDirectorySyncEnabled(O(s,"groupId"),yt(s,"isSyncEnabled")),{ok:!0};if(u==="requestDirectorySync"){let f=String(s.get("groupId")??"").trim();return{ok:!0,syncRequest:await t.store.requestDirectorySync(f===""?null:O(s,"groupId"),await i(w))}}return u==="removeAllowlistEntry"?(await t.store.removeAllowlistEntry(O(s,"entryId")),{ok:!0}):(console.error(`[@aiquants/auth-react-router] intent "${u}" is in the permission table but has no handler`),(0,re.data)({ok:!1,error:r.errors.unknownIntent},{status:400}))}return{loader:o,action:n}}var de=require("react"),X=require("react-router");var E=require("react/jsx-runtime"),Se={intervalMs:3e3,maxMs:3e5};function ft(t,r){let i=(0,X.useRevalidator)(),l=(0,de.useRef)(i.state);l.current=i.state;let{revalidate:d}=i,{intervalMs:o,maxMs:n}=r;(0,de.useEffect)(()=>{if(t<=0)return;let g=Date.now(),h=setInterval(()=>{if(Date.now()-g>=n){clearInterval(h);return}l.current==="idle"&&d()},o);return()=>clearInterval(h)},[t,o,n,d])}function Ae({label:t,summary:r}){return(0,E.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem",fontSize:"0.65rem",padding:"0.08rem 0.35rem",borderRadius:"9999px",backgroundColor:r.bgColor,color:r.color,border:`1px solid ${r.borderColor}`,fontWeight:600,lineHeight:"1.2"},children:[(0,E.jsxs)("span",{children:[t,":"]}),(0,E.jsx)("span",{children:r.text})]})}function ht({status:t,labels:r,groups:i}){if(!t||t.linkedGroupCount===0)return null;let l=r.directoryView,d=[];if(t.isEnabled||d.push({id:"disabled",text:l.disabledWarning}),t.pausedGroupCount>0&&d.push({id:"paused",text:x(l.pausedTemplate,{paused:t.pausedGroupCount,total:t.linkedGroupCount})}),t.isStale){let o=t.oldestSyncedAt?J(t.oldestSyncedAt,r):l.neverSynced;d.push({id:"stale",text:`${l.staleWarning} ${x(l.oldestSyncedTemplate,{at:o})}`})}if(t.erroredGroupIds.length>0){let o=t.erroredGroupIds.map(n=>{let g=i.find(C=>C.id===n);if(!g)return x(r.common.idTemplate,{id:n});let h=g.externalLink?.syncError;return h?x(l.erroredItemTemplate,{group:g.name,reason:h}):g.name});d.push({id:"errored",text:x(l.erroredTemplate,{groups:o.join(l.listSeparator)})})}return t.pendingRequestCount>0&&d.push({id:"pending",text:x(l.pendingTemplate,{count:t.pendingRequestCount})}),d.length===0?null:(0,E.jsxs)("section",{"aria-labelledby":"directory-sync-heading","data-testid":"directory-sync-banner",style:{display:"flex",flexDirection:"column",gap:"0.35rem",padding:"0.7rem 1rem",marginBottom:"1rem",borderRadius:"6px",border:"1px solid #fde68a",backgroundColor:"#fffbeb",color:"#92400e",fontSize:"0.85rem"},children:[(0,E.jsx)("h2",{id:"directory-sync-heading",style:{margin:0,fontSize:"0.9rem",fontWeight:700},children:l.title}),d.map(o=>(0,E.jsx)("span",{"data-directory-warning":o.id,children:o.text},o.id))]})}function ge({children:t,renderHeader:r,pendingSyncPolling:i,basePath:l}){let d=(0,X.useLoaderData)();ft(d?.directoryStatus?.pendingRequestCount??0,i??Se);let o=d?.segment??"users",n=d?.labels??j,g=d?.myPermissions??null,h=d?.resourceLabels??{},C=y=>Object.hasOwn(h,y)?h[y]:y,k=[{key:"users",label:n.tabs.users,href:l},{key:"groups",label:n.tabs.groups,href:`${l}/groups`},{key:"group_members",label:n.tabs.groupMembers,href:`${l}/group_members`},{key:"allowlist",label:n.tabs.allowlist,href:`${l}/allowlist`}],M=(d?.groups??[]).some(y=>y.externalLink);(d?.directoryStatus?.isEnabled||(d?.directoryStatus?.linkedGroupCount??0)>0||M)&&k.push({key:"directory",label:n.tabs.directory,href:`${l}/directory`});let u=Object.entries(g??{}),s={text:n.permissions.unknown,color:"#92400e",bgColor:"#fffbeb",borderColor:"#fde68a"},w=y=>y===void 0?s:y.canWrite?{text:n.permissions.canWrite,color:"#047857",bgColor:"#ecfdf5",borderColor:"#a7f3d0"}:y.canRead?{text:n.permissions.canRead,color:"#1d4ed8",bgColor:"#eff6ff",borderColor:"#bfdbfe"}:y.canDelete?{text:n.permissions.canDelete,color:"#b91c1c",bgColor:"#fef2f2",borderColor:"#fecaca"}:{text:n.permissions.none,color:"#475569",bgColor:"#f1f5f9",borderColor:"#cbd5e1"},p=(0,E.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.4rem"},"data-testid":"user-admin-header-annotation",children:[(0,E.jsx)("span",{style:{fontSize:"0.75rem",backgroundColor:"#e0f2fe",color:"#0369a1",padding:"2px 8px",borderRadius:"12px",fontWeight:600},children:n.heading}),(0,E.jsxs)("div",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem",fontSize:"0.68rem",color:"#475569"},"data-testid":"user-admin-permissions-badge",children:[(0,E.jsx)("span",{style:{fontWeight:600,color:"#334155"},children:n.permissions.label}),(0,E.jsx)("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem"},children:u.length===0?(0,E.jsx)("span",{"data-testid":"user-admin-permission-unavailable",children:(0,E.jsx)(Ae,{label:n.heading,summary:s})}):u.map(([y,S])=>(0,E.jsx)(Ae,{label:C(y),summary:w(S)},y))})]})]});return(0,E.jsxs)("div",{"data-testid":"user-admin-shell",style:{width:"100%",minHeight:"100vh",backgroundColor:"#f8fafc",padding:"1.5rem",boxSizing:"border-box"},children:[r?r({title:n.title,annotation:p}):(0,E.jsxs)("div",{style:{marginBottom:"1.5rem",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,E.jsx)("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:700,color:"#0f172a"},children:n.title}),p]}),(0,E.jsx)("nav",{"aria-label":n.title,style:{display:"flex",gap:"0.5rem",marginBottom:"1.2rem",borderBottom:"2px solid #e2e8f0",paddingBottom:"0.5rem"},children:k.map(y=>{let S=o===y.key;return(0,E.jsx)(X.Link,{to:y.href,"data-testid":`user-admin-tab-${y.key}`,"aria-current":S?"page":void 0,style:{padding:"0.5rem 1rem",borderRadius:"6px 6px 0 0",fontSize:"0.88rem",fontWeight:S?700:500,color:S?"#0284c7":"#64748b",backgroundColor:S?"#ffffff":"transparent",textDecoration:"none",borderBottom:S?"3px solid #0284c7":"3px solid transparent",transition:"all 0.15s ease"},children:y.label},y.key)})}),(0,E.jsx)(ht,{status:d?.directoryStatus,labels:n,groups:d?.groups??[]}),(0,E.jsx)("main",{children:t})]})}var oe=require("@aiquants/select-box"),v=Xe(require("react")),N=require("react-router");var e=require("react/jsx-runtime");function H({result:t,id:r}){let i=t;return i?.ok!==!1||!i.error?null:(0,e.jsx)("div",{id:r,"data-testid":"user-admin-action-error",role:"alert",style:{gridColumn:"1 / -1",padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #fecaca",backgroundColor:"#fef2f2",color:"#b91c1c",fontSize:"0.85rem"},children:i.error})}function ie(t){let r=(0,v.useRef)(null),[i,l]=(0,v.useState)(void 0),d=t.data===i?void 0:t.data;return(0,v.useEffect)(()=>{if(t.state!=="idle"||t.data===void 0)return;let g=r.current;g&&(r.current=null,t.data.ok===!0&&g(t.data))},[t.state,t.data]),{submit:(g,h)=>{r.current=h??null,l(void 0),t.submit(g,{method:"post"})},resetResult:()=>l(t.data),result:d}}function pe(t,r,i){let l=(0,v.useRef)(null),d=(0,v.useRef)(r);return d.current=r,(0,v.useEffect)(()=>{if(!t)return;let o=l.current,n=i?.current??document.activeElement,g=()=>{let k=Array.from(o?.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])')??[]).filter(u=>!(u.disabled||u.hasAttribute("inert"))&&u.closest("[inert]")===null&&u.getAttribute("aria-hidden")!=="true"),M=new Set;return k.filter(u=>{let s=u instanceof HTMLInputElement&&u.type==="radio"?u:null;return!s||s.name===""?!0:!s.checked&&k.some(w=>w instanceof HTMLInputElement&&w.type==="radio"&&w.name===s.name&&w.checked)||M.has(s.name)?!1:(M.add(s.name),!0)})},h=g();(h.find(k=>!k.hasAttribute("data-aqar-visually-hidden"))??h[0])?.focus();let C=k=>{if(k.key==="Escape"){if(k.isComposing||k.keyCode===229||k.defaultPrevented)return;k.preventDefault(),d.current();return}if(k.key!=="Tab")return;let M=g();if(M.length===0)return;let u=M[0],s=M[M.length-1],w=document.activeElement,p=!o?.contains(w);k.shiftKey&&(w===u||p)?(k.preventDefault(),s.focus()):!k.shiftKey&&(w===s||p)&&(k.preventDefault(),u.focus())};return document.addEventListener("keydown",C),()=>{document.removeEventListener("keydown",C),n?.focus?.()}},[t,i]),l}function Le(t,r,i){return t.kind!=="ready"?[]:t.groups.map(l=>{let d=r.get(z(l.externalId))??r.get(z(l.externalKey)),o=d!==void 0,n=l.memberCount===void 0?"":x(i.groupsView.upstreamOptionMembers,{count:l.memberCount});return{label:x(i.directoryView.groupOptionTemplate,{name:l.name,key:l.externalKey}),value:l.externalId,note:o?x(i.groupsView.upstreamAlreadyLinked,{group:d}):n,...o?{disabled:!0}:{},entry:l}})}function Me({observedAt:t,isStale:r,labels:i}){return(0,e.jsx)("p",{"data-testid":"catalog-freshness","data-stale":r?"":void 0,style:{margin:"0.35rem 0 0 0",fontSize:"0.72rem",color:r?"#92400e":"#64748b"},children:x(r?i.groupsView.catalogStale:i.groupsView.catalogObservedAt,{at:J(t,i)})})}function ce(t){return typeof t=="object"&&t!==null&&t.ok===!1&&typeof t.error=="string"}var wt={exact:{backgroundColor:"#d1fae5",color:"#064e3b",borderRadius:"2px",fontWeight:600},fuzzy:{backgroundColor:"#fef3c7",color:"#78350f",borderRadius:"2px",fontWeight:600}};function Ge(t,r){if(typeof t!="object"||t===null)return null;let i=t.syncRequest;return i==="already-pending"?r.directoryView.syncAlreadyPending:i==="not-queued"?r.directoryView.linkSyncNotQueued:null}function Re(t){let r=new Map;for(let i of t){let l=i.externalLink;l&&(r.set(z(l.externalId),i.name),r.set(z(l.externalKey),i.name))}return r}function Te(t,r){let i=typeof t.note=="string"?t.note:"";return(0,e.jsxs)("span",{"data-aqar-upstream-option":!0,title:i===""?t.label:`${t.label} \u2014 ${i}`,style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"0.75rem",width:"100%",minWidth:0},children:[(0,e.jsx)("span",{"data-aqar-upstream-option-label":!0,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,oe.getHighlightSegments)(t.label,r.query).map((l,d)=>(0,e.jsx)("span",{"data-aqar-match":l.matchType==="none"?void 0:l.matchType,style:l.matchType==="none"?void 0:wt[l.matchType],children:l.text},d))}),i===""?null:(0,e.jsx)("span",{"data-aqar-upstream-option-note":!0,style:{flexShrink:0,fontSize:"0.72rem",opacity:.75},children:i})]})}function Ve(t){let r=t.directoryView;return{noOptions:r.pickerNoOptions,clear:r.pickerClear,toggle:r.pickerToggle,selection:i=>x(r.pickerSelected,{value:i.map(l=>l.label).join(", ")}),status:i=>x(r.pickerAvailable,{count:i.count})}}function xt(t){try{return new Intl.Collator(t).compare}catch{return new Intl.Collator().compare}}function vt(t){return(t.split("@")[0]??t).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function ye(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),{submit:i,resetResult:l,result:d}=ie(r),o=t.labels??j,[n,g]=(0,v.useState)(""),[h,C]=(0,v.useState)(null),k=h?.kind==="edit"?h.user:null,M=h?.kind==="create",u=(0,v.useRef)(null),s=(m,I)=>{u.current=I.currentTarget,l(),m.kind==="create"&&(p(""),S("")),C(m)},[w,p]=(0,v.useState)(""),[y,S]=(0,v.useState)(""),f=pe(M,()=>C(null),u),b=pe(k!==null,()=>C(null),u),G=r.state!=="idle",[U,V]=(0,v.useState)({column:"displayName",ascending:!0}),T=xt(o.formatLocale),q=n.trim().toLowerCase(),A=t.users.filter(m=>m.displayName.toLowerCase().includes(q)||m.email.toLowerCase().includes(q)).slice().sort((m,I)=>{let Q=U.ascending?1:-1;return U.column==="id"?(m.id-I.id)*Q:U.column==="isActive"?(Number(m.isActive)-Number(I.isActive))*Q:T(m[U.column],I[U.column])*Q}),P=m=>{V(I=>I.column===m?{column:m,ascending:!I.ascending}:{column:m,ascending:!0})},c=m=>{G||m.isActive&&!window.confirm(x(o.usersView.confirmDeactivate,{user:m.displayName}))||i({intent:"toggleUserActive",userId:String(m.id),isActive:String(!m.isActive)})},L=m=>{if(m.preventDefault(),!(w&&y))return;let I=w,Q=y;i({intent:"createUser",displayName:I,email:Q},()=>{p(_=>_===I?"":_),S(_=>_===Q?"":_),C(null)})},D=m=>{m.preventDefault(),k&&i({intent:"updateUser",userId:String(k.id),displayName:k.displayName,email:k.email},()=>C(null))};return(0,e.jsxs)("section",{"data-testid":"users-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[(0,e.jsx)("h2",{style:ne,children:o.usersView.title}),!h&&(0,e.jsx)(H,{result:d}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("input",{type:"text","aria-label":o.usersView.searchLabel,placeholder:o.usersView.searchPlaceholder,value:n,onChange:m=>g(m.target.value),"data-testid":"users-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),(0,e.jsx)("button",{type:"button",onClick:m=>s({kind:"create"},m),"data-testid":"users-add-button",style:{padding:"6px 14px",borderRadius:"6px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:o.usersView.addUser})]}),(0,e.jsx)("p",{"data-testid":"users-summary",role:"status","aria-live":"polite",style:{margin:0,fontSize:"0.78rem",color:"#475569"},children:x(o.usersView.listSummary,{shown:A.length,total:t.users.length})}),(0,e.jsx)("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:(0,e.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[[["id",o.common.id],["displayName",o.usersView.displayName],["email",o.usersView.email],["isActive",o.common.status]].map(([m,I])=>(0,e.jsx)("th",{scope:"col",style:{padding:0},"aria-sort":U.column===m?U.ascending?"ascending":"descending":"none",children:(0,e.jsxs)("button",{type:"button","data-testid":`users-sort-${m}`,onClick:()=>P(m),"aria-label":x(U.column===m?U.ascending?o.usersView.sortedAscending:o.usersView.sortedDescending:o.usersView.sortBy,{column:I}),style:{width:"100%",padding:"10px 14px",textAlign:"left",background:"transparent",border:"none",cursor:"pointer",font:"inherit",color:"inherit",fontWeight:U.column===m?700:500},children:[I,(0,e.jsx)("span",{"aria-hidden":"true",style:{marginLeft:"4px",opacity:U.column===m?1:.35},children:U.column===m?U.ascending?"\u25B2":"\u25BC":"\u21C5"})]})},m)),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:o.common.actions})]})}),(0,e.jsxs)("tbody",{children:[A.map(m=>(0,e.jsxs)("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`user-row-${m.id}`,children:[(0,e.jsx)("td",{style:{padding:"10px 14px",color:"#475569"},children:x(o.common.idTemplate,{id:m.id})}),(0,e.jsx)("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:m.displayName}),(0,e.jsx)("td",{style:{padding:"10px 14px",color:"#475569"},children:m.email}),(0,e.jsx)("td",{style:{padding:"10px 14px"},children:(0,e.jsx)("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:m.isActive?"#dcfce7":"#fee2e2",color:m.isActive?"#15803d":"#b91c1c",fontWeight:600},children:m.isActive?o.usersView.active:o.usersView.inactive})}),(0,e.jsxs)("td",{style:{padding:"10px 14px",textAlign:"right"},children:[(0,e.jsx)("button",{type:"button",onClick:I=>s({kind:"edit",user:m},I),"aria-label":x(o.usersView.editUserAria,{user:m.displayName}),"data-testid":`edit-user-btn-${m.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:"pointer",marginRight:"6px"},children:o.common.edit}),(0,e.jsx)("button",{type:"button",onClick:()=>c(m),...Y(G),"aria-label":x(m.isActive?o.usersView.deactivateAria:o.usersView.activateAria,{user:m.displayName}),"data-testid":`toggle-user-btn-${m.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:G?"default":"pointer",color:m.isActive?"#b91c1c":"#15803d"},children:m.isActive?o.usersView.deactivate:o.usersView.activate})]})]},m.id)),A.length===0&&(0,e.jsx)("tr",{children:(0,e.jsx)("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:q===""?o.usersView.empty:o.usersView.emptyFiltered})})]})]})}),M&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:f,onSubmit:L,role:"dialog","aria-modal":"true","aria-labelledby":"create-user-title",...ce(d)?{"aria-describedby":"create-user-error"}:{},"data-testid":"user-create-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"create-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:o.usersView.addUser}),(0,e.jsx)(H,{result:d,id:"create-user-error"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"create-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.displayName}),(0,e.jsx)("input",{id:"create-user-display-name-input",type:"text",value:w,onChange:m=>p(m.target.value),required:!0,"data-testid":"create-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"create-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.email}),(0,e.jsx)("input",{id:"create-user-email-input",type:"email",value:y,onChange:m=>S(m.target.value),required:!0,"data-testid":"create-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>C(null),"data-testid":"cancel-create-user",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:o.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-create-user",disabled:G,"aria-busy":G,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:o.common.create})]})]})}),k&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:b,onSubmit:D,role:"dialog","aria-modal":"true","aria-labelledby":"edit-user-title",...ce(d)?{"aria-describedby":"edit-user-error"}:{},"data-testid":"user-edit-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"edit-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:o.usersView.editUser}),(0,e.jsx)(H,{result:d,id:"edit-user-error"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.displayName}),(0,e.jsx)("input",{id:"edit-user-display-name-input",type:"text",value:k.displayName,onChange:m=>C({kind:"edit",user:{...k,displayName:m.target.value}}),required:!0,"data-testid":"edit-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.email}),(0,e.jsx)("input",{id:"edit-user-email-input",type:"email",value:k.email,onChange:m=>C({kind:"edit",user:{...k,email:m.target.value}}),required:!0,"data-testid":"edit-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>C(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:o.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-edit-user",disabled:G,"aria-busy":G,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:o.common.save})]})]})})]})}var Ee=v.default.createContext(null);function kt(){return v.default.useContext(Ee)??""}function Pe(){let t=kt(),r=(0,N.useLoaderData)(),i=(0,N.useFetcher)(),{submit:l,resetResult:d,result:o}=ie(i),n=r.labels??j,g=Ge(o,n),[h,C]=(0,v.useState)(""),[k,M]=(0,v.useState)(null),u=k?.kind==="edit"?k.group:null,s=k?.kind==="create",w=(0,v.useRef)(null),p=(a,R)=>{w.current=R.currentTarget,d(),a.kind==="create"&&qe(),M(a)},y=i.state!=="idle",[S,f]=(0,v.useState)(""),[b,G]=(0,v.useState)(""),[U,V]=(0,v.useState)(""),[T,q]=(0,v.useState)("local"),[A,P]=(0,v.useState)(null),[c,L]=(0,v.useState)(null),[D,m]=(0,v.useState)("direct"),I=(0,v.useRef)(null),Q=(0,v.useMemo)(()=>{let a=new Map;for(let R of r.groupMembers)a.set(R.groupId,(a.get(R.groupId)??0)+1);return a},[r.groupMembers]),_=(0,v.useMemo)(()=>Re(r.groups),[r.groups]),ae=(0,v.useMemo)(()=>Le(r.catalog,_,n),[r.catalog,_,n]),ze=(0,v.useMemo)(()=>ae.filter(a=>a.disabled!==!0).length,[ae]),be=r.catalog.kind==="ready"&&r.catalog.groups.length>0&&r.directoryStatus.provider!=="",Fe=pe(s,()=>M(null),w),Oe=pe(u!==null,()=>M(null),w),fe=h.trim().toLowerCase(),he=r.groups.filter(a=>a.name.toLowerCase().includes(fe)||a.groupKey.toLowerCase().includes(fe)),qe=()=>{f(""),G(""),V(""),q("local"),L(null),m("direct"),I.current=null},Ke=a=>{if(a.preventDefault(),!(S&&b)||T==="upstream"&&c===null||T==="upstream"&&c!==null&&!window.confirm(x(n.groupsView.confirmCreateLinked,{group:b,upstream:c.externalKey})))return;let R={key:S,name:b,description:U},F=()=>{f(Z=>Z===R.key?"":Z),G(Z=>Z===R.name?"":Z),V(Z=>Z===R.description?"":Z),L(null),M(null)};if(T==="upstream"&&c!==null){l({intent:"createLinkedGroup",groupKey:R.key,name:R.name,description:R.description,provider:r.directoryStatus.provider,externalKey:c.externalKey,membershipMode:D},F);return}l({intent:"createGroup",groupKey:R.key,name:R.name,description:R.description},F)},Be=a=>{if(L(a),!a)return;let R={key:vt(a.externalKey),name:a.name,description:a.description??""};G(R.name),f(R.key),V(R.description),I.current=R},$e=a=>{if(q(a),a==="upstream")return;L(null);let R=I.current;R&&(f(F=>F===R.key?"":F),G(F=>F===R.name?"":F),V(F=>F===R.description?"":F),I.current=null)},We=a=>{a.preventDefault(),u&&l({intent:"updateGroup",groupId:String(u.id),name:u.name,description:u.description??""},()=>M(null))},je=a=>{if(y)return;let R=r.groupMembers.filter(F=>F.groupId===a.id).length;window.confirm(x(n.groupsView.confirmDelete,{group:a.name,count:R}))&&l({intent:"deleteGroup",groupId:String(a.id)})};return(0,e.jsxs)("section",{"data-testid":"groups-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[(0,e.jsx)("h2",{style:ne,children:n.groupsView.title}),!k&&(0,e.jsx)(H,{result:o}),(0,e.jsx)("p",{"data-testid":"groups-sync-request-notice",role:"status","aria-live":"polite",hidden:g===null,style:g===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:g}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("input",{type:"text","aria-label":n.groupsView.searchLabel,placeholder:n.groupsView.searchPlaceholder,value:h,onChange:a=>C(a.target.value),"data-testid":"groups-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),(0,e.jsx)("button",{type:"button",onClick:a=>p({kind:"create"},a),"data-testid":"groups-add-button",style:{padding:"6px 14px",borderRadius:"6px",backgroundColor:"#4338ca",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:n.groupsView.addGroup})]}),(0,e.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:"1rem"},children:he.map(a=>{let R=Q.get(a.id)??0;return(0,e.jsxs)("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",padding:"1rem",display:"flex",flexDirection:"column",justifyContent:"space-between"},"data-testid":`group-card-${a.id}`,"data-group-readonly":a.readOnly?"true":"false",children:[(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[(0,e.jsx)("h3",{style:{margin:0,fontSize:"1rem",color:"#0f172a"},children:a.name}),(0,e.jsx)("span",{style:{fontSize:"0.72rem",backgroundColor:"#e0e7ff",color:"#4338ca",padding:"2px 6px",borderRadius:"4px",fontFamily:"monospace"},children:a.groupKey})]}),(0,e.jsx)("p",{style:{margin:"0 0 0.8rem 0",fontSize:"0.82rem",color:"#64748b",minHeight:"2.4em"},children:a.description||n.groupsView.noDescription}),a.externalLink&&(0,e.jsxs)("div",{"data-testid":`group-source-${a.id}`,style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap",marginBottom:"0.6rem"},children:[(0,e.jsx)("span",{style:{fontSize:"0.72rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:"#ede9fe",color:"#6d28d9",fontWeight:600},children:n.common.managedUpstream}),(0,e.jsx)("span",{style:{fontSize:"0.72rem",fontFamily:"monospace",color:"#64748b"},children:a.externalLink.externalKey}),a.externalLink.unresolvedCount>0&&(0,e.jsx)("span",{"data-testid":`group-unresolved-${a.id}`,style:{fontSize:"0.72rem",color:"#b45309"},children:x(n.directoryView.unresolvedTemplate,{count:a.externalLink.unresolvedCount})})]})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",borderTop:"1px solid #f1f5f9",paddingTop:"0.6rem"},children:[(0,e.jsx)(N.Link,{to:`${t}/group_members?group=${a.id}`,"data-testid":`group-open-members-${a.id}`,"aria-label":x(n.groupsView.openMembersAria,{group:a.name}),style:{fontSize:"0.78rem",color:"#1d4ed8",textDecoration:"none"},children:x(n.groupsView.memberCountTemplate,{count:R})}),a.readOnly?(0,e.jsx)("span",{"data-testid":`readonly-group-${a.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:n.common.readOnly}):(0,e.jsxs)("div",{children:[(0,e.jsx)("button",{type:"button",onClick:F=>p({kind:"edit",group:a},F),...Y(y),"aria-label":x(n.groupsView.editGroupAria,{group:a.name}),"data-testid":`edit-group-btn-${a.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.75rem",cursor:"pointer",marginRight:"4px"},children:n.common.edit}),(0,e.jsx)("button",{type:"button",onClick:()=>je(a),...Y(y),"aria-label":x(n.groupsView.deleteGroupAria,{group:a.name}),"data-testid":`delete-group-btn-${a.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.75rem",cursor:"pointer"},children:n.common.delete})]})]})]},a.id)})}),he.length===0&&(0,e.jsx)("div",{"data-testid":"groups-empty",style:{padding:"2rem",textAlign:"center",color:"#475569",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:r.groups.length===0?n.groupsView.empty:n.groupsView.emptyFiltered}),s&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:Fe,onSubmit:Ke,role:"dialog","aria-modal":"true","aria-labelledby":"create-group-title",...ce(o)?{"aria-describedby":"create-group-error"}:{},"data-testid":"group-create-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"create-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:n.groupsView.addGroup}),(0,e.jsx)(H,{result:o,id:"create-group-error"}),be&&(0,e.jsxs)("fieldset",{"data-testid":"create-group-mode",style:{display:"flex",gap:"0.25rem",marginBottom:"1rem",border:"none",padding:0,margin:"0 0 1rem 0"},children:[(0,e.jsx)("legend",{style:Ce,children:n.groupsView.createModeLabel}),["local","upstream"].map(a=>(0,e.jsxs)("label",{"data-aqar-create-mode":a,"data-selected":T===a?"":void 0,"data-focused":A===a?"":void 0,style:{outline:A===a?"2px solid #4338ca":void 0,outlineOffset:"2px",flex:1,padding:"0.4rem 0.6rem",fontSize:"0.8rem",borderRadius:"6px",cursor:"pointer",textAlign:"center",border:T===a?"1px solid #4338ca":"1px solid #cbd5e1",backgroundColor:T===a?"#eef2ff":"#ffffff",color:T===a?"#3730a3":"#475569",fontWeight:T===a?700:500},children:[(0,e.jsx)("input",{type:"radio",name:"create-group-mode",value:a,checked:T===a,onChange:()=>$e(a),"data-testid":`create-group-mode-${a}`,"data-aqar-visually-hidden":!0,onFocus:()=>P(a),onBlur:()=>P(R=>R===a?null:R),style:Ce}),a==="local"?n.groupsView.createModeLocal:n.groupsView.createModeUpstream]},a))]}),r.catalog.kind==="ready"&&r.catalog.groups.length===0&&(0,e.jsx)("p",{"data-testid":"create-group-catalog-empty",role:"note",style:{margin:"0 0 1rem 0",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#f8fafc",border:"1px solid #e2e8f0",color:"#475569",fontSize:"0.78rem"},children:x(n.groupsView.catalogEmpty,{at:J(r.catalog.observedAt??"",n)})}),r.catalog.kind==="ready"&&r.catalog.groups.length>0&&r.directoryStatus.provider===""&&(0,e.jsx)("p",{"data-testid":"create-group-provider-unset",role:"note",style:{margin:"0 0 1rem 0",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.78rem"},children:n.groupsView.providerUnset}),r.catalog.kind==="unavailable"&&(0,e.jsx)("p",{"data-testid":"create-group-catalog-unavailable",role:"note",style:{margin:"0 0 1rem 0",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.78rem"},children:x(n.groupsView.catalogUnavailableHere,{reason:n.groupsView.catalogFailures[r.catalog.reason]})}),T==="upstream"&&be&&r.catalog.kind==="ready"&&(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("p",{"data-testid":"create-group-upstream-notice",role:"note",style:{margin:"0 0 0.5rem 0",fontSize:"0.78rem",color:"#5b21b6"},children:n.groupsView.createUpstreamNotice}),(0,e.jsx)("div",{id:"create-group-upstream-label",style:ee,children:n.groupsView.pickUpstream}),(0,e.jsx)("div",{"data-testid":"create-group-upstream-picker",onKeyDown:a=>{a.nativeEvent.isComposing||a.nativeEvent.keyCode===229||a.key==="Enter"&&a.preventDefault()},children:(0,e.jsx)(oe.SelectBox,{options:ae,value:c===null?null:ae.find(a=>a.value===c.externalId)??null,onChange:a=>Be(a===null||Array.isArray(a)?null:a.entry??null),placeholder:n.groupsView.pickUpstreamPlaceholder,ariaLabelledBy:"create-group-upstream-label",renderOption:Te,locale:n.locale,labels:Ve(n),clearable:!0})}),(0,e.jsx)(Me,{observedAt:r.catalog.observedAt,isStale:r.catalog.isStale,labels:n}),(0,e.jsxs)("div",{style:{marginTop:"0.6rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-membership-mode",style:ee,children:n.directoryView.membershipMode}),(0,e.jsxs)("select",{id:"create-group-membership-mode","data-testid":"create-group-membership-mode",value:D,onChange:a=>m(a.target.value),style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"},children:[(0,e.jsx)("option",{value:"direct",children:n.directoryView.directMode}),(0,e.jsx)("option",{value:"transitive",children:n.directoryView.transitiveMode})]})]})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-key-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.groupKey}),(0,e.jsx)("input",{id:"create-group-key-input",type:"text",value:S,onChange:a=>f(a.target.value),placeholder:n.groupsView.groupKeyPlaceholder,required:!0,"data-testid":"create-group-key",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.name}),(0,e.jsx)("input",{id:"create-group-name-input",type:"text",value:b,onChange:a=>G(a.target.value),placeholder:n.groupsView.namePlaceholder,required:!0,"data-testid":"create-group-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.description}),(0,e.jsx)("textarea",{id:"create-group-desc-input",value:U,onChange:a=>V(a.target.value),"data-testid":"create-group-description",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box",height:"60px"}})]}),T==="upstream"&&c===null&&(0,e.jsx)("p",{id:"create-group-submit-hint","data-testid":"create-group-submit-hint",style:{margin:"0 0 0.6rem 0",fontSize:"0.78rem",color:"#475569",textAlign:"right"},children:ze>0?n.groupsView.pickUpstreamFirst:n.groupsView.allUpstreamLinked}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>M(null),"data-testid":"cancel-create-group",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:n.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-create-group",disabled:y||T==="upstream"&&c===null,"aria-busy":y,...T==="upstream"&&c===null?{"aria-describedby":"create-group-submit-hint"}:{},style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:y||T==="upstream"&&c===null?"#a5b4fc":"#4338ca",color:"#ffffff",border:"none",cursor:y||T==="upstream"&&c===null?"not-allowed":"pointer"},children:n.common.create})]})]})}),u&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:Oe,onSubmit:We,role:"dialog","aria-modal":"true","aria-labelledby":"edit-group-title",...ce(o)?{"aria-describedby":"edit-group-error"}:{},"data-testid":"group-edit-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"edit-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:n.groupsView.editGroup}),(0,e.jsx)(H,{result:o,id:"edit-group-error"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.name}),(0,e.jsx)("input",{id:"edit-group-name-input",type:"text",value:u.name,onChange:a=>M({kind:"edit",group:{...u,name:a.target.value}}),required:!0,"data-testid":"edit-group-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.description}),(0,e.jsx)("textarea",{id:"edit-group-desc-input",value:u.description??"",onChange:a=>M({kind:"edit",group:{...u,description:a.target.value}}),"data-testid":"edit-group-description",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box",height:"60px"}})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>M(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:n.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-edit-group",disabled:y,"aria-busy":y,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#4338ca",color:"#ffffff",border:"none",cursor:"pointer"},children:n.common.save})]})]})})]})}function Ie(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),{submit:i,result:l}=ie(r),d=r.state!=="idle",o=t.labels??j,[n]=(0,N.useSearchParams)(),g=Number(n.get("group")??""),h=Number.isInteger(g)&&g>0?g:null,[C,k]=(0,v.useState)(null),[M,u]=(0,v.useState)(new Set),s=(0,v.useRef)(h);s.current!==h&&(s.current=h,h!==null&&(k(h),u(new Set)));let[w,p]=(0,v.useState)(""),[y,S]=(0,v.useState)(!1),f=C??h??t.groups[0]?.id??null,b=t.groups.find(A=>A.id===f)??t.groups[0],G=f!==null&&b!==void 0&&b.id!==f?f:null,U=new Set(t.groupMembers.filter(A=>A.groupId===b?.id).map(A=>A.userId)),V=w.trim().toLowerCase(),T=t.users.filter(A=>y&&!U.has(A.id)&&!M.has(A.id)?!1:V===""?!0:A.displayName.toLowerCase().includes(V)||A.email.toLowerCase().includes(V)),q=(A,P)=>{if(d||!b)return;let c=String(b.id);P?(u(L=>new Set(L).add(A)),i({intent:"removeGroupMember",groupId:c,userId:String(A)})):(u(L=>{if(!L.has(A))return L;let D=new Set(L);return D.delete(A),D}),i({intent:"addGroupMember",groupId:c,userId:String(A)}))};return(0,e.jsxs)("section",{"data-testid":"group-members-view-section",style:{display:"grid",gridTemplateColumns:"240px 1fr",gap:"1.2rem"},children:[(0,e.jsx)("h2",{style:{...ne,gridColumn:"1 / -1"},children:o.groupMembersView.title}),(0,e.jsx)(H,{result:l}),G!==null&&(0,e.jsx)("p",{"data-testid":"member-deep-link-missed",role:"note",style:{gridColumn:"1 / -1",margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:x(o.groupMembersView.deepLinkMissed,{id:G,group:b?.name??""})}),(0,e.jsxs)("div",{style:{backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("h3",{style:{margin:"0 0 0.8rem 0",fontSize:"0.9rem",color:"#475569"},children:o.groupMembersView.selectGroup}),(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.4rem"},children:t.groups.map(A=>{let P=A.id===b?.id;return(0,e.jsxs)("button",{type:"button",onClick:()=>{k(A.id),u(new Set)},"data-testid":`select-group-btn-${A.id}`,style:{textAlign:"left",padding:"8px 10px",borderRadius:"6px",border:P?"1px solid #6366f1":"1px solid #e2e8f0",backgroundColor:P?"#e0e7ff":"#ffffff",color:P?"#3730a3":"#0f172a",cursor:"pointer",fontWeight:P?600:400,fontSize:"0.85rem"},children:[A.name,A.readOnly?(0,e.jsx)("span",{"data-testid":`group-upstream-marker-${A.id}`,style:{marginLeft:"6px",fontSize:"0.7rem",color:"#7c3aed"},children:o.common.managedUpstream}):null]},A.id)})})]}),(0,e.jsx)("div",{style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:b?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{style:{marginBottom:"1rem",borderBottom:"1px solid #e2e8f0",paddingBottom:"0.8rem"},children:[(0,e.jsx)("h3",{style:{margin:0,fontSize:"1.1rem",color:"#0f172a"},children:x(o.groupMembersView.membersOfTemplate,{group:b.name})}),(0,e.jsxs)("span",{style:{fontSize:"0.8rem",color:"#64748b"},children:[o.groupMembersView.groupKeyLabel,": ",b.groupKey]}),b.readOnly?(0,e.jsx)("div",{"data-testid":"group-members-upstream-notice",role:"note",style:{marginTop:"0.5rem",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#f5f3ff",border:"1px solid #ddd6fe",color:"#5b21b6",fontSize:"0.8rem"},children:o.groupMembersView.upstreamNotice}):null]}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center",flexWrap:"wrap",marginBottom:"0.8rem"},children:[(0,e.jsx)("input",{type:"search","aria-label":o.groupMembersView.searchLabel,placeholder:o.groupMembersView.searchPlaceholder,value:w,onChange:A=>p(A.target.value),"data-testid":"member-search-input",style:{flex:1,minWidth:"220px",padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem"}}),(0,e.jsxs)("label",{style:{display:"inline-flex",alignItems:"center",gap:"0.35rem",fontSize:"0.8rem",color:"#475569"},children:[(0,e.jsx)("input",{type:"checkbox","data-testid":"member-only-toggle",checked:y,onChange:A=>{S(A.target.checked),u(new Set)}}),x(o.groupMembersView.onlyMembers,{count:U.size})]})]}),(0,e.jsx)("p",{"data-testid":"member-summary",role:"status","aria-live":"polite",style:{margin:"0 0 0.6rem 0",fontSize:"0.78rem",color:"#475569"},children:x(o.groupMembersView.summary,{shown:T.length,total:t.users.length,members:U.size})}),T.length===0&&(0,e.jsx)("p",{"data-testid":"member-empty-filtered",style:{margin:"0 0 0.6rem 0",fontSize:"0.85rem",color:"#475569"},children:t.users.length===0?o.groupMembersView.noUsers:V===""&&y?o.groupMembersView.emptyNoMembers:o.groupMembersView.emptyFiltered}),(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:T.map(A=>{let P=U.has(A.id);return(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderRadius:"6px",border:"1px solid #f1f5f9",backgroundColor:P?"#f0fdf4":"#ffffff"},"data-testid":`member-row-${A.id}`,children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("span",{style:{fontWeight:600,fontSize:"0.88rem",color:"#0f172a",marginRight:"8px"},children:A.displayName}),(0,e.jsxs)("span",{style:{fontSize:"0.78rem",color:"#64748b"},children:["(",A.email,")"]})]}),b.readOnly?P?(0,e.jsx)("span",{"data-testid":`member-readonly-${A.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:o.common.managedUpstream}):null:(0,e.jsx)("button",{type:"button",onClick:()=>q(A.id,P),...Y(d),"aria-label":x(P?o.groupMembersView.actionRemoveAria:o.groupMembersView.actionAddAria,{user:A.displayName}),"data-testid":`toggle-member-btn-${A.id}`,style:{padding:"4px 12px",borderRadius:"4px",border:P?"1px solid #b91c1c":"1px solid #0284c7",backgroundColor:P?"#ffffff":"#0284c7",color:P?"#b91c1c":"#ffffff",fontSize:"0.78rem",fontWeight:600,cursor:"pointer"},children:P?o.groupMembersView.actionRemove:o.groupMembersView.actionAdd})]},A.id)})})]}):(0,e.jsx)("div",{"data-testid":"member-no-groups",style:{color:"#475569",textAlign:"center",padding:"2rem"},children:t.groups.length===0?o.groupMembersView.noGroups:o.groupMembersView.selectPrompt})})]})}function At(t){return t==="email"?{backgroundColor:"#e0f2fe",color:"#0369a1"}:t==="domain"?{backgroundColor:"#fef3c7",color:"#b45309"}:{backgroundColor:"#ede9fe",color:"#6d28d9"}}function St(t,r){return t==="email"?r.allowlistView.emailTypeShort:t==="domain"?r.allowlistView.domainTypeShort:r.allowlistView.groupTypeShort}function De(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),i=t.labels??j,{submit:l,result:d}=ie(r),o=r.state!=="idle",[n,g]=(0,v.useState)(""),[h,C]=(0,v.useState)("email"),[k,M]=(0,v.useState)(""),u=p=>{if(p.preventDefault(),!n)return;let y={pattern:n,description:k};l({intent:"addAllowlistEntry",pattern:y.pattern,type:h,description:y.description},()=>{g(S=>S===y.pattern?"":S),M(S=>S===y.description?"":S)})},s=p=>{l({intent:"removeAllowlistEntry",entryId:String(p)})},w=p=>{l({intent:"removeAllowlistGroup",entryId:String(p)})};return(0,e.jsxs)("section",{"data-testid":"allowlist-view-section",style:{display:"flex",flexDirection:"column",gap:"1.2rem"},children:[(0,e.jsx)("h2",{style:ne,children:i.allowlistView.title}),(0,e.jsx)(H,{result:d}),(0,e.jsxs)("form",{onSubmit:u,style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0",display:"flex",flexWrap:"wrap",gap:"0.8rem",alignItems:"flex-end"},children:[(0,e.jsxs)("div",{style:{flex:2,minWidth:"220px"},children:[(0,e.jsx)("label",{htmlFor:"allowlist-pattern-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.pattern}),(0,e.jsx)("input",{id:"allowlist-pattern-input-field",type:"text",value:n,onChange:p=>g(p.target.value),required:!0,"data-testid":"allowlist-pattern-input",style:{width:"100%",padding:"6px 10px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{flex:1,minWidth:"140px"},children:[(0,e.jsx)("label",{htmlFor:"allowlist-type-select-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.type}),(0,e.jsxs)("select",{id:"allowlist-type-select-field",value:h,onChange:p=>C(p.target.value),"data-testid":"allowlist-type-select",style:{width:"100%",padding:"6px 10px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",boxSizing:"border-box"},children:[(0,e.jsx)("option",{value:"email",children:i.allowlistView.emailType}),(0,e.jsx)("option",{value:"domain",children:i.allowlistView.domainType})]})]}),(0,e.jsxs)("div",{style:{flex:2,minWidth:"200px"},children:[(0,e.jsx)("label",{htmlFor:"allowlist-desc-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.description}),(0,e.jsx)("input",{id:"allowlist-desc-input-field",type:"text",value:k,onChange:p=>M(p.target.value),"data-testid":"allowlist-desc-input",style:{width:"100%",padding:"6px 10px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",boxSizing:"border-box"}})]}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-allowlist-add",disabled:o,"aria-busy":o,style:{padding:"7px 16px",borderRadius:"6px",backgroundColor:"#047857",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:i.allowlistView.addEntry})]}),(0,e.jsx)("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:(0,e.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.common.id}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.target}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.type}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.description}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:i.common.actions})]})}),(0,e.jsxs)("tbody",{children:[t.allowlist.map(p=>(0,e.jsxs)("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`allowlist-row-${p.type}-${p.id}`,"data-allowlist-type":p.type,children:[(0,e.jsx)("td",{style:{padding:"10px 14px",color:"#475569"},children:x(i.common.idTemplate,{id:p.id})}),(0,e.jsx)("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:p.type==="group"?(0,e.jsxs)("span",{"data-testid":`allowlist-group-${p.type}-${p.id}`,children:[p.groupName,(0,e.jsx)("span",{style:{marginLeft:"6px",fontFamily:"monospace",fontSize:"0.78rem",color:"#64748b"},children:p.groupKey})]}):(0,e.jsx)("span",{style:{fontFamily:"monospace"},children:p.pattern})}),(0,e.jsx)("td",{style:{padding:"10px 14px"},children:(0,e.jsx)("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",...At(p.type),fontWeight:600},children:St(p.type,i)})}),(0,e.jsxs)("td",{style:{padding:"10px 14px",color:"#475569"},children:[p.description||i.common.none,p.owner.kind==="deployment"&&(0,e.jsx)("span",{"data-testid":`allowlist-owner-${p.type}-${p.id}`,style:{marginLeft:"8px",fontSize:"0.72rem",color:"#475569"},children:i.allowlistView.deploymentOwner})]}),(0,e.jsx)("td",{style:{padding:"10px 14px",textAlign:"right"},children:p.readOnly?(0,e.jsx)("span",{"data-testid":`readonly-allowlist-${p.type}-${p.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:i.common.readOnly}):(0,e.jsx)("button",{type:"button",onClick:()=>{window.confirm(x(i.allowlistView.confirmDelete,{target:p.type==="group"?p.groupName:p.pattern}))&&(p.type==="group"?w(p.id):s(p.id))},disabled:o,"aria-busy":o,"aria-label":x(i.allowlistView.deleteAria,{target:p.type==="group"?p.groupName:p.pattern}),"data-testid":`remove-allowlist-btn-${p.type}-${p.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.78rem",cursor:"pointer"},children:i.common.delete})})]},`${p.type}-${p.id}`)),t.allowlist.length===0&&(0,e.jsx)("tr",{children:(0,e.jsx)("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:i.allowlistView.empty})})]})]})})]})}function Ne(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),{submit:i,result:l}=ie(r),d=t.labels??j,o=d.directoryView,n=t.groups.filter(c=>!c.externalLink),[g,h]=(0,v.useState)(""),[C,k]=(0,v.useState)(""),[M,u]=(0,v.useState)(""),[s,w]=(0,v.useState)("direct"),p=t.groups.filter(c=>c.externalLink),y=new Set(t.allowlist.filter(c=>c.type==="group").map(c=>c.groupId)),S=c=>t.allowlist.find(L=>L.type==="group"&&L.groupId===c),f=r.state!=="idle",[b,G]=(0,v.useState)(null),U=Ge(l,d),V=b===null||(t.groups.find(D=>D.id===b.groupId)?.externalLink?.syncedAt??null)!==b.syncedAtAtPress?null:b.groupId,T=t.directoryStatus.isEnabled&&t.directoryStatus.provider!=="",q=(0,v.useMemo)(()=>Le(t.catalog,Re(p),d),[t.catalog,p,d]),A=(0,v.useMemo)(()=>q.filter(c=>c.disabled!==!0).length,[q]),P=c=>{if(c.preventDefault(),!(g&&C))return;let L=n.find(m=>String(m.id)===g);if(!window.confirm(x(o.confirmLink,{group:L?.name??g,upstream:C})))return;let D=C;i({intent:"linkDirectoryGroup",groupId:g,provider:t.directoryStatus.provider,externalKey:D,externalId:M,membershipMode:s},()=>{k(m=>m===D?"":m),u(m=>C===D?"":m),h("")})};return(0,e.jsxs)("section",{"data-testid":"directory-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[(0,e.jsx)("h2",{style:ne,children:o.title}),(0,e.jsx)(H,{result:l}),!T&&(0,e.jsx)("p",{"data-testid":"directory-not-wired",style:{margin:0,padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#f8fafc",color:"#475569",fontSize:"0.85rem"},children:o.notWiredNotice}),T&&t.groups.length===0&&(0,e.jsx)("p",{"data-testid":"directory-no-groups",style:{margin:0,padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#f8fafc",color:"#475569",fontSize:"0.85rem"},children:o.noGroupsToLink}),T&&t.groups.length>0&&n.length===0&&(0,e.jsx)("p",{"data-testid":"directory-nothing-to-link",style:{margin:0,padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#f8fafc",color:"#475569",fontSize:"0.85rem"},children:o.nothingToLink}),(0,e.jsx)("p",{"data-testid":"directory-sync-already-pending",role:"status","aria-live":"polite",hidden:U===null,style:U===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:U}),T&&n.length>0&&(0,e.jsxs)("form",{onSubmit:P,"data-testid":"directory-link-form",style:{display:"flex",gap:"0.75rem",flexWrap:"wrap",alignItems:"flex-end",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[(0,e.jsx)("label",{htmlFor:"directory-group-select-input",style:ee,children:o.selectGroup}),(0,e.jsxs)("select",{id:"directory-group-select-input","data-testid":"directory-group-select",value:g,onChange:c=>h(c.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[(0,e.jsx)("option",{value:"",children:o.selectGroup}),n.map(c=>(0,e.jsx)("option",{value:String(c.id),children:x(o.groupOptionTemplate,{name:c.name,key:c.groupKey})},c.id))]})]}),(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem",flex:1,minWidth:"260px"},children:t.catalog.kind==="ready"&&t.catalog.groups.length>0?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{id:"directory-external-key-label",style:ee,children:o.externalKey}),(0,e.jsx)("div",{"data-testid":"directory-external-key-picker",onKeyDown:c=>{c.nativeEvent.isComposing||c.nativeEvent.keyCode===229||c.key==="Enter"&&c.preventDefault()},children:(0,e.jsx)(oe.SelectBox,{options:q,value:M===""?null:q.find(c=>c.value===M)??null,onChange:c=>{if(c===null||Array.isArray(c)){u(""),k("");return}u(String(c.value)),k(c.entry.externalKey)},placeholder:o.pickUpstreamPlaceholder,ariaLabelledBy:"directory-external-key-label",renderOption:Te,locale:d.locale,labels:Ve(d),clearable:!0})}),A===0&&(0,e.jsx)("span",{"data-testid":"directory-all-upstream-linked",style:{fontSize:"0.72rem",color:"#92400e"},children:d.groupsView.allUpstreamLinked}),(0,e.jsx)(Me,{observedAt:t.catalog.observedAt,isStale:t.catalog.isStale,labels:d})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("label",{htmlFor:"directory-external-key-input",style:ee,children:o.externalKey}),(0,e.jsx)("input",{id:"directory-external-key-input",type:"email",required:!0,"data-testid":"directory-external-key",placeholder:o.externalKeyPlaceholder,value:C,onChange:c=>{u(""),k(c.target.value)},style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"}}),t.catalog.kind==="unavailable"&&(0,e.jsx)("span",{"data-testid":"directory-catalog-unavailable",style:{fontSize:"0.72rem",color:"#92400e"},children:x(d.groupsView.catalogUnavailable,{reason:d.groupsView.catalogFailures[t.catalog.reason]})}),t.catalog.kind==="ready"&&(0,e.jsx)("span",{"data-testid":"directory-catalog-empty",style:{fontSize:"0.72rem",color:"#475569"},children:x(d.groupsView.catalogEmpty,{at:J(t.catalog.observedAt,d)})})]})}),(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[(0,e.jsx)("label",{htmlFor:"directory-membership-mode-input",style:ee,children:o.membershipMode}),(0,e.jsxs)("select",{id:"directory-membership-mode-input","data-testid":"directory-membership-mode",value:s,onChange:c=>w(c.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[(0,e.jsx)("option",{value:"direct",children:o.directMode}),(0,e.jsx)("option",{value:"transitive",children:o.transitiveMode})]})]}),(0,e.jsx)("button",{type:"submit","data-testid":"directory-link-submit",disabled:!(g&&C)||f,"aria-busy":f,style:{padding:"0.5rem 1rem",borderRadius:"6px",border:"none",backgroundColor:g&&C&&!f?"#2563eb":"#94a3b8",color:"#fff",fontWeight:600},children:o.link})]}),p.length===0?(0,e.jsx)("div",{"data-testid":"directory-empty",style:{padding:"2rem",textAlign:"center",color:"#64748b",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:o.empty}):(0,e.jsxs)("table",{"data-testid":"directory-table",style:{width:"100%",borderCollapse:"collapse",backgroundColor:"#ffffff",borderRadius:"8px",overflow:"hidden",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{style:{backgroundColor:"#f8fafc",textAlign:"left"},children:[(0,e.jsx)("th",{scope:"col",style:W,children:d.groupsView.name}),(0,e.jsx)("th",{scope:"col",style:W,children:o.externalKey}),(0,e.jsx)("th",{scope:"col",style:W,children:o.membershipMode}),(0,e.jsx)("th",{scope:"col",style:W,children:o.lastSynced}),(0,e.jsx)("th",{scope:"col",style:W,children:d.common.status}),(0,e.jsx)("th",{scope:"col",style:W,children:d.common.actions})]})}),(0,e.jsx)("tbody",{children:p.map(c=>{let L=c.externalLink,D=y.has(c.id);return(0,e.jsxs)("tr",{"data-testid":`directory-row-${c.id}`,"data-sync-enabled":String(L.isSyncEnabled),style:{borderTop:"1px solid #e2e8f0"},children:[(0,e.jsxs)("td",{style:W,children:[c.name,(0,e.jsx)("div",{style:{fontSize:"0.75rem",color:"#64748b"},children:c.groupKey})]}),(0,e.jsx)("td",{style:W,"data-testid":`directory-external-${c.id}`,children:L.externalKey}),(0,e.jsx)("td",{style:W,children:L.membershipMode==="direct"?o.directMode:o.transitiveMode}),(0,e.jsxs)("td",{style:W,"data-testid":`directory-synced-${c.id}`,children:[L.syncedAt?J(L.syncedAt,d):o.neverSynced,L.unresolvedCount>0?(0,e.jsx)("div",{style:{fontSize:"0.75rem",color:"#b45309"},"data-testid":`directory-unresolved-${c.id}`,children:x(o.unresolvedTemplate,{count:L.unresolvedCount})}):null]}),(0,e.jsxs)("td",{style:W,children:[(0,e.jsx)("span",{"data-testid":`directory-status-${c.id}`,style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:L.isSyncEnabled?"#dcfce7":"#fee2e2",color:L.isSyncEnabled?"#166534":"#b91c1c",fontWeight:600},children:L.isSyncEnabled?o.syncEnabled:o.syncPaused}),L.syncError?(0,e.jsx)("div",{style:{fontSize:"0.75rem",color:"#b91c1c",marginTop:"0.25rem"},"data-testid":`directory-error-${c.id}`,children:L.syncError}):null]}),(0,e.jsx)("td",{style:W,children:(0,e.jsxs)("div",{style:{display:"flex",gap:"0.35rem",flexWrap:"wrap"},children:[(0,e.jsx)("button",{type:"button","data-testid":`directory-sync-now-${c.id}`,...Y(f),"aria-label":x(V===c.id?o.syncQueuedAria:o.syncNowAria,{group:c.name}),onClick:()=>i({intent:"requestDirectorySync",groupId:String(c.id)},m=>{m?.syncRequest==="queued"&&G({groupId:c.id,syncedAtAtPress:c.externalLink?.syncedAt??null})}),style:ue,children:V===c.id?o.syncQueued:o.syncNow}),(0,e.jsx)("button",{type:"button","data-testid":`directory-toggle-sync-${c.id}`,...Y(f),"aria-label":x(L.isSyncEnabled?o.pauseAria:o.resumeAria,{group:c.name}),onClick:()=>{G(null),i({intent:"setDirectorySyncEnabled",groupId:String(c.id),isSyncEnabled:String(!L.isSyncEnabled)})},style:ue,children:L.isSyncEnabled?o.pause:o.resume}),(0,e.jsx)("button",{type:"button","data-testid":`directory-allow-${c.id}`,...Y(f),"aria-label":x(D?o.disallowGroupAria:o.allowGroupAria,{group:c.name}),onClick:()=>{let m=S(c.id);if(D&&m){if(!window.confirm(x(o.confirmDisallow,{group:c.name})))return;i({intent:"removeAllowlistGroup",entryId:String(m.id)})}else i({intent:"addAllowlistGroup",groupId:String(c.id)})},style:ue,children:D?o.disallowGroup:o.allowGroup}),(0,e.jsx)("button",{type:"button","data-testid":`directory-unlink-${c.id}`,...Y(f),"aria-label":x(o.unlinkAria,{group:c.name}),onClick:()=>{window.confirm(x(o.confirmUnlink,{group:c.name,upstream:c.externalLink?.externalKey??""}))&&i({intent:"unlinkDirectoryGroup",groupId:String(c.id)})},style:{...ue,color:"#b91c1c",borderColor:"#fecaca"},children:o.unlink})]})})]},c.id)})})]})]})}var ee={fontSize:"0.78rem",color:"#475569",fontWeight:600},Ce={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clipPath:"inset(50%)",whiteSpace:"nowrap",border:0},ne={margin:0,fontSize:"1.05rem",fontWeight:700,color:"#0f172a"},W={padding:"0.6rem 0.75rem",fontSize:"0.85rem",verticalAlign:"top"};function Y(t){return{"aria-disabled":t,"aria-busy":t,"data-busy":t?"true":void 0}}var ue={padding:"0.25rem 0.6rem",fontSize:"0.75rem",borderRadius:"6px",border:"1px solid #cbd5e1",backgroundColor:"#fff",cursor:"pointer"},Ue={users:ye,groups:Pe,group_members:Ie,allowlist:De,directory:Ne};function Ct({renderHeader:t,pendingSyncPolling:r,basePath:i}){let d=(0,N.useLoaderData)()?.segment??"users",o=Object.hasOwn(Ue,d)?Ue[d]:ye;return(0,e.jsx)(ge,{renderHeader:t,pendingSyncPolling:r,basePath:i,children:(0,e.jsx)(Ee.Provider,{value:i,children:(0,e.jsx)(o,{})})})}0&&(module.exports={AllowlistView,AuthUserAdminAppView,DEFAULT_PENDING_SYNC_POLLING,DirectoryView,GroupMembersView,GroupsView,UserAdminInputError,UserAdminOperatorError,UserAdminShell,UsersView,createInMemoryUserAdminStore,createUserAdminApp,defaultUserAdminLabels,jaUserAdminLabels,normalizeUpstreamKey,resolveUserAdminLabels,userAdminAccessFor,userAdminIntents});
1
+ "use strict";var He=Object.create;var ae=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var Je=(t,r)=>{for(var i in r)ae(t,i,{get:r[i],enumerable:!0})},we=(t,r,i,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of _e(r))!Ye.call(t,l)&&l!==i&&ae(t,l,{get:()=>r[l],enumerable:!(u=Qe(r,l))||u.enumerable});return t};var Xe=(t,r,i)=>(i=t!=null?He(Ze(t)):{},we(r||!t||!t.__esModule?ae(i,"default",{value:t,enumerable:!0}):i,t)),et=t=>we(ae({},"__esModule",{value:!0}),t);var Ut={};Je(Ut,{AllowlistView:()=>De,AuthUserAdminAppView:()=>Ct,DEFAULT_PENDING_SYNC_POLLING:()=>Se,DirectoryView:()=>Ne,GroupMembersView:()=>Ie,GroupsView:()=>Pe,UserAdminInputError:()=>B,UserAdminOperatorError:()=>K,UserAdminShell:()=>me,UsersView:()=>ye,createInMemoryUserAdminStore:()=>ot,createUserAdminApp:()=>bt,defaultUserAdminLabels:()=>j,jaUserAdminLabels:()=>tt,normalizeUpstreamKey:()=>z,resolveUserAdminLabels:()=>ce,userAdminAccessFor:()=>mt,userAdminIntents:()=>ct});module.exports=et(Ut);var xe=require("@aiquants/virtualscroll"),j={title:"Users & Groups",locale:"en",formatLocale:"en-US",timeZone:"UTC",heading:"\u{1F464} User administration",common:{create:"Create",edit:"Edit",delete:"Delete",save:"Save",cancel:"Cancel",actions:"Actions",status:"Status",id:"ID",readOnly:"Read-only",managedUpstream:"Managed upstream",idTemplate:"#{id}",none:"-"},errors:{unknownUpstream:"No group named {key} exists upstream. Check the spelling, or pick one from the list.",directoryDisabled:"This deployment has no directory configured, so groups cannot be linked.",invalidField:"\u201C{field}\u201D is missing or not a value this operation accepts.",unknownIntent:"This screen does not perform that operation.",fieldNames:{groupId:"Group",userId:"User",entryId:"Entry",displayName:"Display name",email:"Email",groupKey:"Group key",name:"Name",provider:"Directory provider",externalKey:"Directory group address",membershipMode:"Membership expansion",isActive:"Active",isSyncEnabled:"Synchronization",pattern:"Pattern",type:"Type"},invalidAllowlistType:"The allowlist type must be either an address or a domain.",unexpected:"The operation failed. The reason is in the server log.",alreadyLinked:"{key} is already linked to {group}. One upstream group can back only one local group.",forbidden:"You do not have permission for this operation. The badge in the header shows what you currently hold; ask an administrator for the rest.",requestTooLarge:"The request was too large to process."},permissions:{label:"Your permissions:",canWrite:"Editable",canRead:"Read only",canDelete:"Delete only",none:"No access",unknown:"Unknown"},tabs:{users:"\u{1F464} Users",groups:"\u{1F465} Groups",groupMembers:"\u{1F517} Members",allowlist:"\u2709\uFE0F Allowlist",directory:"\u{1F504} Directory"},usersView:{title:"Users",sortBy:"Sort by {column}",searchPlaceholder:"Search by name or email...",searchLabel:"Search users",addUser:"\uFF0B Add user",editUser:"Edit user",displayName:"Name",email:"Email",active:"Active",inactive:"Inactive",activate:"Activate",deactivate:"Deactivate",editUserAria:"Edit {user}",activateAria:"Activate {user}",deactivateAria:"Deactivate {user}",emptyFiltered:"No user matches this search.",listSummary:"Showing {shown} of {total} users.",sortedAscending:"{column}, sorted ascending. Activate to sort descending.",sortedDescending:"{column}, sorted descending. Activate to sort ascending.",confirmDeactivate:"Deactivate {user}? They will no longer be able to sign in.",empty:"No user is registered yet."},groupsView:{emptyFiltered:"No group matches this search",createModeLabel:"How to create the group",createModeLocal:"Create locally",createModeUpstream:"Create from a directory group",pickUpstream:"Directory group",pickUpstreamPlaceholder:"Search by name or address...",upstreamOptionMembers:"{count} members",upstreamAlreadyLinked:"already linked to {group}",providerUnset:"This deployment has no directory provider configured, so a directory group cannot be linked yet. Ask an administrator to set it.",pickUpstreamFirst:"Pick a directory group first.",allUpstreamLinked:"Every directory group is already linked to a local group. One upstream group can back only one local group, so unlink one first.",catalogEmpty:"The directory reported no groups as of {at}. Creating from a directory group is unavailable until one exists upstream.",catalogUnavailable:"The directory could not be reached, so the group list is unavailable. Enter the address by hand instead. ({reason})",catalogUnavailableHere:"The directory could not be reached, so creating from a directory group is unavailable. Create the group locally, then link it on the Directory tab. ({reason})",catalogObservedAt:"This list is the directory as of {at}.",catalogStale:"\u26A0 This list is the directory as of {at} and is overdue for a refresh \u2014 a group created since then will not appear.",catalogFailures:{denied:"the directory refused this deployment's credential",rateLimited:"the directory is rate-limiting this deployment",upstreamError:"the directory reported an internal error",neverObserved:"the directory has not been read yet \u2014 the synchronization job may not be running",unknown:"the reason is in the server log"},createUpstreamNotice:"Creates the group and links it in one step. The directory then owns its membership \u2014 and this screen can no longer rename, describe or delete the group. Unlinking is the only way back, and it removes the member ledger and the group-based sign-in permission.",openMembers:"Members",openMembersAria:"Show the members of {group}",title:"Groups",searchPlaceholder:"Search by group name or key...",searchLabel:"Search groups",addGroup:"\uFF0B Add group",editGroup:"Edit group",groupKey:"Group key",name:"Name",description:"Description",memberCountTemplate:"{count} members",confirmDelete:"Delete {group}? Its {count} membership record(s) go with it, and anyone who could sign in only through this group will be locked out.",confirmCreateLinked:"Create {group} and hand its membership to {upstream}? Renaming and deleting it here becomes impossible.",editGroupAria:"Edit {group}",deleteGroupAria:"Delete {group}",noDescription:"No description",groupKeyPlaceholder:"e.g. dev-team",namePlaceholder:"e.g. Development team",empty:"No groups registered"},groupMembersView:{title:"Group members",searchLabel:"Search users",searchPlaceholder:"Search by name or email...",onlyMembers:"Members only ({count})",emptyFiltered:"No user matches this search",summary:"Showing {shown} of {total} users. This group has {members} member(s).",selectGroup:"Select a group",selectPrompt:"Select a group to manage its members",noGroups:"No group exists yet. Create one on the Groups tab first.",emptyNoMembers:"This group has no members yet. Untick \u201CMembers only\u201D to add someone.",noUsers:"No user is registered yet. Add one on the Users tab first.",deepLinkMissed:"Group {id} was not found \u2014 it may have been deleted. Showing {group} instead.",actionAdd:"Add",actionRemove:"Remove",actionAddAria:"Add {user} to this group",actionRemoveAria:"Remove {user} from this group",upstreamNotice:"Membership of this group is owned by the upstream directory. Edit it there \u2014 a local change would be reverted at the next synchronization.",membersOfTemplate:"Members of {group}",groupKeyLabel:"Group key"},allowlistView:{title:"Sign-in allowlist",addEntry:"\uFF0B Add pattern",pattern:"Pattern (e.g. @example.com or user@example.com)",type:"Type",emailType:"Exact email match",domainType:"Domain match",emailTypeShort:"Email",domainTypeShort:"Domain",groupTypeShort:"Group",target:"Target",description:"Description",deploymentOwner:"Deployment-wide",confirmDelete:"Remove {target} from the sign-in allowlist? Anyone who could sign in only through it will be locked out.",deleteAria:"Remove the allowlist entry for {target}",empty:"No allowlist entries registered"},directoryView:{title:"Directory synchronization",membershipMode:"Membership",directMode:"Direct only",transitiveMode:"Nested expanded",lastSynced:"Last synced",neverSynced:"Never",unresolvedTemplate:"{count} unresolved",syncPaused:"Paused",syncEnabled:"Active",syncNow:"Sync now",syncQueued:"Queued",syncAlreadyPending:"A synchronization request for this scope is already waiting, so nothing was queued. If it never completes, the synchronization job may not be running.",linkSyncNotQueued:'The link was created, but a synchronization request could not be queued. Use "Sync now" on the Directory tab.',staleWarning:"Synchronization is overdue. Until it runs, people removed upstream keep their access.",disabledWarning:"Directory synchronization is not wired for this deployment. Existing memberships remain in force and are no longer being refreshed.",pausedTemplate:"{paused} of {total} links are paused",erroredTemplate:"Last synchronization failed for {groups}",erroredItemTemplate:"{group}: {reason}",listSeparator:", ",oldestSyncedTemplate:"oldest successful sync: {at}",pendingTemplate:"{count} sync requests are queued",nothingToLink:"Every group is already linked to a directory.",noGroupsToLink:"No group exists yet. Create one on the Groups tab first.",notWiredNotice:"Directory synchronization is not wired for this deployment, so links cannot be created or changed here.",syncNowAria:"Synchronize {group} now",syncQueuedAria:"A synchronization of {group} is queued",pauseAria:"Pause synchronization of {group}",resumeAria:"Resume synchronization of {group}",allowGroupAria:"Allow members of {group} to sign in",disallowGroupAria:"Stop allowing members of {group} to sign in",unlinkAria:"Unlink {group} from the directory",confirmDisallow:"Stop allowing {group} to sign in? Anyone who could sign in only through it will be locked out.",link:"Link to a directory group",unlink:"Unlink",externalKey:"Upstream group",empty:"No groups are linked to a directory",selectGroup:"Group to link",pickUpstreamPlaceholder:"Search by name or address...",pickerNoOptions:"No matching group",pickerClear:"Clear the selection",pickerToggle:"Show the group list",pickerSelected:"Selected: {value}",pickerAvailable:"{count} groups available",externalKeyPlaceholder:"e.g. dev-team@example.com",confirmLink:"Hand {group}'s membership to {upstream}? Renaming, deleting, and editing its members here becomes impossible.",confirmUnlink:"Unlink {group} from {upstream}? Its member ledger and group-based sign-in permission are removed.",pause:"Pause",resume:"Resume",allowGroup:"Allow sign-in",disallowGroup:"Stop allowing sign-in",groupOptionTemplate:"{name} ({key})"}},tt={title:"\u30E6\u30FC\u30B6\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406",locale:"ja",formatLocale:"ja-JP",timeZone:"Asia/Tokyo",heading:"\u{1F464} \u30E6\u30FC\u30B6\u30FC\u7BA1\u7406",common:{create:"\u4F5C\u6210",edit:"\u7DE8\u96C6",delete:"\u524A\u9664",save:"\u4FDD\u5B58",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",actions:"\u64CD\u4F5C",status:"\u72B6\u614B",id:"ID",readOnly:"\u5909\u66F4\u4E0D\u53EF",managedUpstream:"\u4E0A\u6D41\u304C\u6240\u6709",idTemplate:"#{id}",none:"-"},errors:{unknownUpstream:"\u4E0A\u6D41\u306B {key} \u3068\u3044\u3046\u30B0\u30EB\u30FC\u30D7\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u7DB4\u308A\u3092\u78BA\u8A8D\u3059\u308B\u304B\u3001\u4E00\u89A7\u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002",directoryDisabled:"\u3053\u306E\u914D\u5099\u306B\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30B0\u30EB\u30FC\u30D7\u3092\u9023\u643A\u3067\u304D\u307E\u305B\u3093\u3002",invalidField:"\u300C{field}\u300D\u304C\u672A\u6307\u5B9A\u304B\u3001\u3053\u306E\u64CD\u4F5C\u304C\u53D7\u3051\u4ED8\u3051\u3089\u308C\u306A\u3044\u5024\u3067\u3059\u3002",unknownIntent:"\u3053\u306E\u753B\u9762\u3067\u306F\u3001\u305D\u306E\u64CD\u4F5C\u3092\u884C\u3044\u307E\u305B\u3093\u3002",fieldNames:{groupId:"\u30B0\u30EB\u30FC\u30D7",userId:"\u30E6\u30FC\u30B6\u30FC",entryId:"\u9805\u76EE",displayName:"\u8868\u793A\u540D",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",groupKey:"\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC",name:"\u540D\u524D",provider:"\u9023\u643A\u30D7\u30ED\u30D0\u30A4\u30C0",externalKey:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u30A2\u30C9\u30EC\u30B9",membershipMode:"\u6240\u5C5E\u306E\u5C55\u958B",isActive:"\u6709\u52B9",isSyncEnabled:"\u540C\u671F",pattern:"\u30D1\u30BF\u30FC\u30F3",type:"\u7A2E\u5225"},invalidAllowlistType:"\u8A31\u53EF\u30EA\u30B9\u30C8\u306E\u7A2E\u5225\u306F\u3001\u30A2\u30C9\u30EC\u30B9\u304B\u30C9\u30E1\u30A4\u30F3\u306E\u3044\u305A\u308C\u304B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",unexpected:"\u64CD\u4F5C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u7406\u7531\u306F\u30B5\u30FC\u30D0\u30FC\u306E\u30ED\u30B0\u306B\u51FA\u3066\u3044\u307E\u3059\u3002",alreadyLinked:"{key} \u306F\u65E2\u306B {group} \u3068\u9023\u643A\u3057\u3066\u3044\u307E\u3059\u30021 \u3064\u306E\u4E0A\u6D41\u30B0\u30EB\u30FC\u30D7\u3092 2 \u3064\u306E\u30ED\u30FC\u30AB\u30EB\u30B0\u30EB\u30FC\u30D7\u3078\u7E4B\u3050\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002",forbidden:"\u3053\u306E\u64CD\u4F5C\u3092\u884C\u3046\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u4ECA\u306E\u6A29\u9650\u306F\u30D8\u30C3\u30C0\u30FC\u306E\u30D0\u30C3\u30B8\u306B\u51FA\u3066\u3044\u307E\u3059\u3002\u5FC5\u8981\u3067\u3042\u308C\u3070\u7BA1\u7406\u8005\u306B\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",requestTooLarge:"\u9001\u4FE1\u3055\u308C\u305F\u5185\u5BB9\u304C\u5927\u304D\u3059\u304E\u308B\u305F\u3081\u51E6\u7406\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002"},permissions:{label:"\u3042\u306A\u305F\u306E\u6A29\u9650:",canWrite:"\u7DE8\u96C6\u53EF",canRead:"\u95B2\u89A7\u306E\u307F",canDelete:"\u524A\u9664\u306E\u307F",none:"\u6A29\u9650\u306A\u3057",unknown:"\u6A29\u9650\u4E0D\u660E"},tabs:{users:"\u{1F464} \u30E6\u30FC\u30B6\u30FC\u4E00\u89A7",groups:"\u{1F465} \u30E6\u30FC\u30B6\u30FC\u30B0\u30EB\u30FC\u30D7",groupMembers:"\u{1F517} \u30B0\u30EB\u30FC\u30D7\u30E1\u30F3\u30D0\u30FC",allowlist:"\u2709\uFE0F \u30A2\u30AF\u30BB\u30B9\u8A31\u53EF\u30EA\u30B9\u30C8",directory:"\u{1F504} \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9023\u643A"},usersView:{title:"\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406",sortBy:"{column} \u3067\u4E26\u3079\u66FF\u3048",searchPlaceholder:"\u8868\u793A\u540D\u3084 Email \u3067\u691C\u7D22...",searchLabel:"\u30E6\u30FC\u30B6\u30FC\u3092\u691C\u7D22",addUser:"\uFF0B \u30E6\u30FC\u30B6\u30FC\u8FFD\u52A0",editUser:"\u30E6\u30FC\u30B6\u30FC\u7DE8\u96C6",displayName:"\u8868\u793A\u540D",email:"Email",active:"\u6709\u52B9",inactive:"\u7121\u52B9",activate:"\u6709\u52B9\u5316",deactivate:"\u7121\u52B9\u5316",editUserAria:"{user} \u3092\u7DE8\u96C6",activateAria:"{user} \u3092\u6709\u52B9\u5316",deactivateAria:"{user} \u3092\u7121\u52B9\u5316",emptyFiltered:"\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u5229\u7528\u8005\u306F\u3044\u307E\u305B\u3093\u3002",listSummary:"{total} \u4EBA\u4E2D {shown} \u4EBA\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002",sortedAscending:"{column} (\u6607\u9806\u3067\u4E26\u3079\u66FF\u3048\u4E2D)\u3002\u62BC\u3059\u3068\u964D\u9806\u306B\u306A\u308A\u307E\u3059\u3002",sortedDescending:"{column} (\u964D\u9806\u3067\u4E26\u3079\u66FF\u3048\u4E2D)\u3002\u62BC\u3059\u3068\u6607\u9806\u306B\u306A\u308A\u307E\u3059\u3002",confirmDeactivate:"{user} \u3092\u7121\u52B9\u5316\u3057\u307E\u3059\u304B\uFF1F \u4EE5\u5F8C\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",empty:"\u30E6\u30FC\u30B6\u30FC\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},groupsView:{emptyFiltered:"\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u306F\u3042\u308A\u307E\u305B\u3093",createModeLabel:"\u4F5C\u6210\u65B9\u6CD5",createModeLocal:"\u30ED\u30FC\u30AB\u30EB\u306B\u4F5C\u6210",createModeUpstream:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u304B\u3089\u4F5C\u6210",pickUpstream:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7",pickUpstreamPlaceholder:"\u540D\u524D\u304B\u30A2\u30C9\u30EC\u30B9\u3067\u691C\u7D22...",upstreamOptionMembers:"{count} \u540D",upstreamAlreadyLinked:"{group} \u3068\u9023\u643A\u6E08\u307F",providerUnset:"\u3053\u306E\u914D\u5099\u306B\u306F\u9023\u643A\u30D7\u30ED\u30D0\u30A4\u30C0\u540D\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u9023\u643A\u3067\u304D\u307E\u305B\u3093\u3002\u7BA1\u7406\u8005\u306B\u8A2D\u5B9A\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",pickUpstreamFirst:"\u5148\u306B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044\u3002",allUpstreamLinked:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u306F\u3059\u3079\u3066\u3001\u3044\u305A\u308C\u304B\u306E\u30ED\u30FC\u30AB\u30EB\u30B0\u30EB\u30FC\u30D7\u3068\u9023\u643A\u6E08\u307F\u3067\u3059\u30021 \u3064\u306E\u4E0A\u6D41\u30B0\u30EB\u30FC\u30D7\u3092\u7E4B\u3052\u308B\u5148\u306F 1 \u3064\u3060\u3051\u306A\u306E\u3067\u3001\u7E4B\u304E\u66FF\u3048\u308B\u306B\u306F\u3069\u308C\u304B\u306E\u9023\u643A\u3092\u89E3\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002",catalogEmpty:"{at} \u6642\u70B9\u3067\u3001\u4E0A\u6D41\u306B\u30B0\u30EB\u30FC\u30D7\u304C 1 \u3064\u3082\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4E0A\u6D41\u306B\u30B0\u30EB\u30FC\u30D7\u304C\u3067\u304D\u308B\u307E\u3067\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304B\u3089\u306E\u4F5C\u6210\u306F\u3067\u304D\u307E\u305B\u3093\u3002",catalogUnavailable:"\u4E0A\u6D41\u3078\u5230\u9054\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30B0\u30EB\u30FC\u30D7\u4E00\u89A7\u3092\u51FA\u305B\u307E\u305B\u3093\u3002\u30A2\u30C9\u30EC\u30B9\u3092\u624B\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002({reason})",catalogUnavailableHere:"\u4E0A\u6D41\u3078\u5230\u9054\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304B\u3089\u306E\u4F5C\u6210\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30ED\u30FC\u30AB\u30EB\u306B\u4F5C\u6210\u3057\u305F\u3046\u3048\u3067\u3001\u9023\u643A\u30BF\u30D6\u304B\u3089\u9023\u643A\u3057\u3066\u304F\u3060\u3055\u3044\u3002({reason})",catalogObservedAt:"\u3053\u306E\u4E00\u89A7\u306F {at} \u6642\u70B9\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002",catalogStale:"\u26A0 \u3053\u306E\u4E00\u89A7\u306F {at} \u6642\u70B9\u306E\u3082\u306E\u3067\u3001\u66F4\u65B0\u304C\u6EDE\u3063\u3066\u3044\u307E\u3059\u3002\u305D\u308C\u4EE5\u964D\u306B\u4F5C\u3089\u308C\u305F\u30B0\u30EB\u30FC\u30D7\u306F\u51FA\u3066\u304D\u307E\u305B\u3093\u3002",catalogFailures:{denied:"\u3053\u306E\u914D\u5099\u306E\u8CC7\u683C\u60C5\u5831\u304C\u4E0A\u6D41\u306B\u62D2\u5426\u3055\u308C\u307E\u3057\u305F",rateLimited:"\u4E0A\u6D41\u304C\u3053\u306E\u914D\u5099\u306E\u547C\u3073\u51FA\u3057\u3092\u5236\u9650\u3057\u3066\u3044\u307E\u3059",upstreamError:"\u4E0A\u6D41\u304C\u5185\u90E8\u30A8\u30E9\u30FC\u3092\u8FD4\u3057\u307E\u3057\u305F",neverObserved:"\u4E0A\u6D41\u3092\u307E\u3060\u4E00\u5EA6\u3082\u8AAD\u3081\u3066\u3044\u307E\u305B\u3093 (\u540C\u671F\u30B8\u30E7\u30D6\u304C\u52D5\u3044\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059)",unknown:"\u7406\u7531\u306F\u30B5\u30FC\u30D0\u30FC\u306E\u30ED\u30B0\u306B\u51FA\u3066\u3044\u307E\u3059"},createUpstreamNotice:"\u30B0\u30EB\u30FC\u30D7\u306E\u4F5C\u6210\u3068\u9023\u643A\u3092 1 \u624B\u3067\u884C\u3044\u307E\u3059\u3002\u4EE5\u5F8C\u3001\u6240\u5C5E\u306F\u4E0A\u6D41\u304C\u6240\u6709\u3057 \u2014 \u3053\u306E\u753B\u9762\u304B\u3089\u306F\u540D\u79F0\u30FB\u8AAC\u660E\u306E\u5909\u66F4\u3082\u524A\u9664\u3082\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002\u623B\u3059\u624B\u6BB5\u306F\u9023\u643A\u89E3\u9664\u3060\u3051\u3067\u3001\u305D\u308C\u306F\u30E1\u30F3\u30D0\u30FC\u53F0\u5E33\u3068\u30B0\u30EB\u30FC\u30D7\u5358\u4F4D\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u6D88\u3057\u307E\u3059\u3002",openMembers:"\u30E1\u30F3\u30D0\u30FC",openMembersAria:"{group} \u306E\u30E1\u30F3\u30D0\u30FC\u3092\u8868\u793A",title:"\u30E6\u30FC\u30B6\u30FC\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406",searchPlaceholder:"\u30B0\u30EB\u30FC\u30D7\u540D\u3084\u30AD\u30FC\u3067\u691C\u7D22...",searchLabel:"\u30B0\u30EB\u30FC\u30D7\u3092\u691C\u7D22",addGroup:"\uFF0B \u30B0\u30EB\u30FC\u30D7\u8FFD\u52A0",editGroup:"\u30B0\u30EB\u30FC\u30D7\u7DE8\u96C6",groupKey:"\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC",name:"\u540D\u79F0",description:"\u8AAC\u660E",memberCountTemplate:"\u6240\u5C5E {count} \u540D",confirmDelete:"{group} \u3092\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F \u6240\u5C5E {count} \u4EF6\u3082\u4E00\u7DD2\u306B\u6D88\u3048\u3001\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3067\u3057\u304B\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u3044\u4EBA\u306F\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",confirmCreateLinked:"{group} \u3092\u4F5C\u6210\u3057\u3001\u305D\u306E\u6240\u5C5E\u3092 {upstream} \u306B\u59D4\u306D\u307E\u3059\u304B\uFF1F \u4EE5\u5F8C\u3053\u306E\u753B\u9762\u304B\u3089\u540D\u79F0\u5909\u66F4\u3068\u524A\u9664\u304C\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",editGroupAria:"{group} \u3092\u7DE8\u96C6",deleteGroupAria:"{group} \u3092\u524A\u9664",noDescription:"\u8AAC\u660E\u306A\u3057",groupKeyPlaceholder:"\u4F8B: dev-team",namePlaceholder:"\u4F8B: \u958B\u767A\u30C1\u30FC\u30E0",empty:"\u30E6\u30FC\u30B6\u30FC\u30B0\u30EB\u30FC\u30D7\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},groupMembersView:{title:"\u30B0\u30EB\u30FC\u30D7\u30E1\u30F3\u30D0\u30FC\u7BA1\u7406",searchLabel:"\u5229\u7528\u8005\u3092\u691C\u7D22",searchPlaceholder:"\u8868\u793A\u540D\u3084 Email \u3067\u691C\u7D22...",onlyMembers:"\u6240\u5C5E\u306E\u307F\u8868\u793A ({count} \u540D)",emptyFiltered:"\u691C\u7D22\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u5229\u7528\u8005\u306F\u3044\u307E\u305B\u3093",summary:"{total} \u540D\u306E\u3046\u3061 {shown} \u540D\u3092\u8868\u793A\u4E2D\u3002\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u6240\u5C5E\u306F {members} \u540D\u3067\u3059\u3002",selectGroup:"\u30B0\u30EB\u30FC\u30D7\u9078\u629E",selectPrompt:"\u30B0\u30EB\u30FC\u30D7\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",noGroups:"\u30B0\u30EB\u30FC\u30D7\u304C\u307E\u3060 1 \u3064\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5148\u306B\u30B0\u30EB\u30FC\u30D7\u30BF\u30D6\u3067\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",emptyNoMembers:"\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306B\u306F\u307E\u3060\u30E1\u30F3\u30D0\u30FC\u304C\u3044\u307E\u305B\u3093\u3002\u300C\u6240\u5C5E\u306E\u307F\u8868\u793A\u300D\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5916\u3059\u3068\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002",noUsers:"\u5229\u7528\u8005\u304C\u307E\u3060 1 \u4EBA\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5148\u306B\u30E6\u30FC\u30B6\u30FC\u30BF\u30D6\u3067\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",deepLinkMissed:"\u30B0\u30EB\u30FC\u30D7 {id} \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F (\u524A\u9664\u3055\u308C\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059)\u3002\u4EE3\u308F\u308A\u306B {group} \u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002",actionAdd:"\u8FFD\u52A0",actionRemove:"\u9664\u5916",actionAddAria:"{user} \u3092\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3078\u8FFD\u52A0",actionRemoveAria:"{user} \u3092\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u304B\u3089\u9664\u5916",upstreamNotice:"\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u6240\u5C5E\u306F\u4E0A\u6D41\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u6240\u6709\u3057\u3066\u3044\u307E\u3059\u3002\u5909\u66F4\u306F\u4E0A\u6D41\u3067\u884C\u3063\u3066\u304F\u3060\u3055\u3044 (\u3053\u3053\u3067\u5909\u3048\u3066\u3082\u6B21\u306E\u540C\u671F\u3067\u5143\u306B\u623B\u308A\u307E\u3059)\u3002",membersOfTemplate:"{group} \u306E\u6240\u5C5E\u30E1\u30F3\u30D0\u30FC",groupKeyLabel:"\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC"},allowlistView:{title:"\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u30EA\u30B9\u30C8",addEntry:"\uFF0B \u30D1\u30BF\u30FC\u30F3\u8FFD\u52A0",pattern:"\u30D1\u30BF\u30FC\u30F3 (\u4F8B: @example.com \u307E\u305F\u306F user@example.com)",type:"\u7A2E\u5225",emailType:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u5B8C\u5168\u4E00\u81F4",domainType:"\u30C9\u30E1\u30A4\u30F3\u4E00\u81F4",emailTypeShort:"\u30E1\u30FC\u30EB",domainTypeShort:"\u30C9\u30E1\u30A4\u30F3",groupTypeShort:"\u30B0\u30EB\u30FC\u30D7",target:"\u5BFE\u8C61",description:"\u8AAC\u660E / \u5099\u8003",deploymentOwner:"\u914D\u5099\u5171\u901A",confirmDelete:"{target} \u3092\u8A31\u53EF\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F \u3053\u308C\u3067\u3057\u304B\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u3044\u4EBA\u306F\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",deleteAria:"{target} \u306E\u8A31\u53EF\u3092\u524A\u9664",empty:"\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u30EA\u30B9\u30C8\u306B\u767B\u9332\u304C\u3042\u308A\u307E\u305B\u3093\u3002"},directoryView:{title:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540C\u671F",membershipMode:"\u6240\u5C5E\u306E\u5C55\u958B",directMode:"\u76F4\u63A5\u6240\u5C5E\u306E\u307F",transitiveMode:"\u5165\u308C\u5B50\u3092\u5C55\u958B",lastSynced:"\u6700\u7D42\u540C\u671F",neverSynced:"\u672A\u5B9F\u884C",unresolvedTemplate:"{count} \u4EF6\u304C\u672A\u89E3\u6C7A",syncPaused:"\u505C\u6B62\u4E2D",syncEnabled:"\u6709\u52B9",syncNow:"\u4ECA\u3059\u3050\u540C\u671F",syncQueued:"\u540C\u671F\u3092\u8981\u6C42\u3057\u307E\u3057\u305F",syncAlreadyPending:"\u3053\u306E\u7BC4\u56F2\u306E\u540C\u671F\u8981\u6C42\u306F\u65E2\u306B\u5F85\u6A5F\u4E2D\u306E\u305F\u3081\u3001\u65B0\u3057\u304F\u306F\u7A4D\u307F\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3044\u3064\u307E\u3067\u3082\u5B8C\u4E86\u3057\u306A\u3044\u5834\u5408\u3001\u540C\u671F\u30B8\u30E7\u30D6\u304C\u52D5\u3044\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",linkSyncNotQueued:"\u9023\u643A\u306F\u4F5C\u6210\u3057\u307E\u3057\u305F\u304C\u3001\u540C\u671F\u8981\u6C42\u3092\u7A4D\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9023\u643A\u30BF\u30D6\u306E\u300C\u4ECA\u3059\u3050\u540C\u671F\u300D\u3067\u8981\u6C42\u3057\u3066\u304F\u3060\u3055\u3044\u3002",staleWarning:"\u540C\u671F\u304C\u6EDE\u3063\u3066\u3044\u307E\u3059\u3002\u5B9F\u884C\u3055\u308C\u308B\u307E\u3067\u3001\u4E0A\u6D41\u304B\u3089\u5916\u308C\u305F\u4EBA\u306E\u30A2\u30AF\u30BB\u30B9\u306F\u6B8B\u308A\u7D9A\u3051\u307E\u3059\u3002",disabledWarning:"\u3053\u306E\u914D\u5099\u3067\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540C\u671F\u304C\u7D50\u7DDA\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u65E2\u5B58\u306E\u6240\u5C5E\u306F\u305D\u306E\u307E\u307E\u6709\u52B9\u3067\u3001\u66F4\u65B0\u3060\u3051\u304C\u6B62\u307E\u3063\u3066\u3044\u307E\u3059\u3002",pausedTemplate:"\u9023\u643A {total} \u4EF6\u306E\u3046\u3061 {paused} \u4EF6\u304C\u505C\u6B62\u4E2D",erroredTemplate:"\u76F4\u8FD1\u306E\u540C\u671F\u306B\u5931\u6557\u3057\u305F\u30B0\u30EB\u30FC\u30D7: {groups}",erroredItemTemplate:"{group}: {reason}",listSeparator:" / ",oldestSyncedTemplate:"\u6700\u3082\u53E4\u3044\u540C\u671F\u6210\u529F: {at}",pendingTemplate:"{count} \u4EF6\u306E\u540C\u671F\u8981\u6C42\u304C\u672A\u51E6\u7406",nothingToLink:"\u3059\u3079\u3066\u306E\u30B0\u30EB\u30FC\u30D7\u304C\u65E2\u306B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u9023\u643A\u3057\u3066\u3044\u307E\u3059\u3002",noGroupsToLink:"\u30B0\u30EB\u30FC\u30D7\u304C\u307E\u3060 1 \u3064\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5148\u306B\u30B0\u30EB\u30FC\u30D7\u30BF\u30D6\u3067\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",notWiredNotice:"\u3053\u306E\u914D\u5099\u3067\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540C\u671F\u304C\u7D50\u7DDA\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u3053\u304B\u3089\u9023\u643A\u306E\u4F5C\u6210\u30FB\u5909\u66F4\u306F\u3067\u304D\u307E\u305B\u3093\u3002",syncNowAria:"{group} \u3092\u4ECA\u3059\u3050\u540C\u671F",syncQueuedAria:"{group} \u306E\u540C\u671F\u3092\u8981\u6C42\u6E08\u307F",pauseAria:"{group} \u306E\u540C\u671F\u3092\u4E00\u6642\u505C\u6B62",resumeAria:"{group} \u306E\u540C\u671F\u3092\u518D\u958B",allowGroupAria:"{group} \u306E\u30E1\u30F3\u30D0\u30FC\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u3092\u8A31\u53EF",disallowGroupAria:"{group} \u306E\u30E1\u30F3\u30D0\u30FC\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u5916\u3059",unlinkAria:"{group} \u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9023\u643A\u3092\u89E3\u9664",confirmDisallow:"{group} \u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u5916\u3057\u307E\u3059\u304B\uFF1F \u3053\u308C\u3067\u3057\u304B\u30B5\u30A4\u30F3\u30A4\u30F3\u3067\u304D\u306A\u3044\u4EBA\u306F\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",link:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30B0\u30EB\u30FC\u30D7\u3068\u9023\u643A\u3059\u308B",unlink:"\u9023\u643A\u3092\u89E3\u9664",externalKey:"\u4E0A\u6D41\u30B0\u30EB\u30FC\u30D7",empty:"\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u9023\u643A\u3057\u3066\u3044\u308B\u30B0\u30EB\u30FC\u30D7\u306F\u3042\u308A\u307E\u305B\u3093",selectGroup:"\u9023\u643A\u3059\u308B\u30B0\u30EB\u30FC\u30D7",pickUpstreamPlaceholder:"\u540D\u524D\u304B\u30A2\u30C9\u30EC\u30B9\u3067\u691C\u7D22...",pickerNoOptions:"\u4E00\u81F4\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u304C\u3042\u308A\u307E\u305B\u3093",pickerClear:"\u9078\u629E\u3092\u89E3\u9664",pickerToggle:"\u30B0\u30EB\u30FC\u30D7\u4E00\u89A7\u3092\u958B\u304F",pickerSelected:"\u9078\u629E\u4E2D: {value}",pickerAvailable:"\u5019\u88DC {count} \u4EF6",externalKeyPlaceholder:"\u4F8B: dev-team@example.com",confirmLink:"{group} \u306E\u6240\u5C5E\u3092 {upstream} \u306B\u59D4\u306D\u307E\u3059\u304B\uFF1F \u4EE5\u5F8C\u3053\u306E\u753B\u9762\u304B\u3089\u540D\u79F0\u5909\u66F4\u30FB\u524A\u9664\u30FB\u30E1\u30F3\u30D0\u30FC\u7DE8\u96C6\u304C\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002",confirmUnlink:"{group} \u3068 {upstream} \u306E\u9023\u643A\u3092\u89E3\u9664\u3057\u307E\u3059\u304B\uFF1F \u30E1\u30F3\u30D0\u30FC\u53F0\u5E33\u3068\u30B0\u30EB\u30FC\u30D7\u5358\u4F4D\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u304C\u5931\u308F\u308C\u307E\u3059\u3002",pause:"\u4E00\u6642\u505C\u6B62",resume:"\u518D\u958B",allowGroup:"\u30B5\u30A4\u30F3\u30A4\u30F3\u3092\u8A31\u53EF",disallowGroup:"\u30B5\u30A4\u30F3\u30A4\u30F3\u8A31\u53EF\u3092\u5916\u3059",groupOptionTemplate:"{name} ({key})"}};function rt(t){if(t===void 0)return j.locale;try{return(0,xe.resolveVirtualScrollLocale)(t)}catch(r){throw r instanceof RangeError?new RangeError(`[auth-react-router] labels.locale is the UI language, not a BCP 47 tag (dates and sorting read labels.formatLocale): ${r.message}`,{cause:r}):r}}function ce(t){let r=j;return t?{title:t.title??r.title,locale:rt(t.locale),formatLocale:t.formatLocale??r.formatLocale,timeZone:t.timeZone??r.timeZone,heading:t.heading??r.heading,common:{...r.common,...t.common},errors:{...r.errors,...t.errors},permissions:{...r.permissions,...t.permissions},tabs:{...r.tabs,...t.tabs},usersView:{...r.usersView,...t.usersView},groupsView:{...r.groupsView,...t.groupsView},groupMembersView:{...r.groupMembersView,...t.groupMembersView},allowlistView:{...r.allowlistView,...t.allowlistView},directoryView:{...r.directoryView,...t.directoryView}}:r}var re=require("react-router");function x(t,r){return t.replace(/\{(\w+)\}/g,(i,u)=>Object.hasOwn(r,u)?String(r[u]):i)}function J(t,r){let i=/(?:Z|[+-]\d{2}:?\d{2})$/.test(t)?t:`${t}Z`;try{return new Intl.DateTimeFormat(r.formatLocale,{timeZone:r.timeZone,dateStyle:"medium",timeStyle:"short"}).format(new Date(i))}catch{return t}}function ot(t){let r=t?.users??[{id:1,email:"admin@example.com",displayName:"\u30B7\u30B9\u30C6\u30E0\u7BA1\u7406\u8005",isActive:!0},{id:2,email:"user1@example.com",displayName:"\u958B\u767A \u592A\u90CE",isActive:!0},{id:3,email:"user2@example.com",displayName:"\u55B6\u696D \u82B1\u5B50",isActive:!0}],i=t?.groups??[{id:1,groupKey:"dev-team",name:"\u958B\u767A\u30C1\u30FC\u30E0",description:"\u30B7\u30B9\u30C6\u30E0\u958B\u767A\u62C5\u5F53\u30B0\u30EB\u30FC\u30D7",isActive:!0,readOnly:!1},{id:2,groupKey:"sales-dept",name:"\u55B6\u696D\u90E8",description:"\u55B6\u696D\u30BD\u30EA\u30E5\u30FC\u30B7\u30E7\u30F3\u62C5\u5F53",isActive:!0,readOnly:!1}],u=t?.groupMembers??[{id:1,groupId:1,userId:2},{id:2,groupId:2,userId:3}],l=t?.allowlist??[{id:1,pattern:"admin@example.com",type:"email",description:"\u521D\u671F\u7BA1\u7406\u8005",owner:{kind:"tenant",tenantId:"default"},readOnly:!1},{id:2,pattern:"@example.com",type:"domain",description:"\u793E\u5185\u30C9\u30E1\u30A4\u30F3",owner:{kind:"tenant",tenantId:"default"},readOnly:!1}];return{async listUsers(){return[...r]},async createUser(o){let n={id:Math.max(...r.map(g=>g.id),0)+1,email:o.email,displayName:o.displayName,isActive:!0};return r.push(n),n},async updateUser(o,n){let g=r.findIndex(h=>h.id===o);if(g===-1)throw new K(`User not found: ${o}`);return r[g]={...r[g],displayName:n.displayName,email:n.email},r[g]},async toggleUserActive(o,n){let g=r.findIndex(h=>h.id===o);if(g===-1)throw new K(`User not found: ${o}`);return r[g]={...r[g],isActive:n},r[g]},async listGroups(){return[...i]},async createGroup(o){let n={id:Math.max(...i.map(g=>g.id),0)+1,groupKey:o.groupKey,name:o.name,description:o.description,isActive:!0,readOnly:!1};return i.push(n),n},async updateGroup(o,n){let g=i.findIndex(h=>h.id===o);if(g===-1)throw new K(`Group not found: ${o}`);return i[g]={...i[g],name:n.name,description:n.description},i[g]},async deleteGroup(o){i=i.filter(n=>n.id!==o),u=u.filter(n=>n.groupId!==o)},async listGroupMembers(){return[...u]},async addGroupMember(o,n){let g=u.find(C=>C.groupId===o&&C.userId===n);if(g)return g;let h={id:Math.max(...u.map(C=>C.id),0)+1,groupId:o,userId:n};return u.push(h),h},async removeGroupMember(o,n){u=u.filter(g=>!(g.groupId===o&&g.userId===n))},async listAllowlist(){return[...l]},async addAllowlistEntry(o){let n={id:Math.max(...l.map(g=>g.id),0)+1,pattern:o.pattern,type:o.type,description:o.description,owner:{kind:"tenant",tenantId:"default"},readOnly:!1};return l.push(n),n},async removeAllowlistEntry(o){l=l.filter(n=>n.id!==o)},async addAllowlistGroup(o,n){let g=i.find(h=>h.id===o);if(!g)throw new K(`Group not found: ${o}`);l=[...l,{id:Math.max(...l.map(h=>h.id),0)+1,type:"group",groupId:o,groupKey:g.groupKey,groupName:g.name,description:n,owner:{kind:"tenant",tenantId:"default"},readOnly:!1}]},async removeAllowlistGroup(o){l=l.filter(n=>!(n.type==="group"&&n.id===o))},async linkDirectoryGroup(){throw new K("This in-memory store has no upstream directory; inject a real store to link groups.")},async createLinkedGroup(){throw new K("This in-memory store has no upstream directory; inject a real store to create a linked group.")},async unlinkDirectoryGroup(){throw new K("This in-memory store has no upstream directory; inject a real store to unlink groups.")},async setDirectorySyncEnabled(){throw new K("This in-memory store has no upstream directory; inject a real store to pause synchronization.")},async requestDirectorySync(){throw new K("This in-memory store has no upstream directory; inject a real store to request a sync.")},async getDirectoryStatus(){return{isEnabled:!1,provider:"",linkedGroupCount:0,isStale:!1,pausedGroupCount:0,stalenessThresholdSec:0,erroredGroupIds:[],pendingRequestCount:0}}}}function it(t,r){let i=Number.isFinite(r)&&r>0?r:at;return(Date.now()-t.getTime())/1e3>i}var nt=64*1024,at=5400;async function ve(t,r,i,u){if(!t)return{kind:"not-wired"};if(!r)return{kind:"not-wired"};try{let{groups:l,observedAt:o}=await t.listGroups(i);return o===null||!Number.isFinite(o.getTime())?{kind:"unavailable",reason:"neverObserved"}:{kind:"ready",groups:l,observedAt:o.toISOString(),isStale:it(o,u)}}catch(l){return console.error("[@aiquants/auth-react-router] directoryCatalog.listGroups failed; the picker falls back to manual entry:",l),{kind:"unavailable",reason:gt(l)}}}function z(t){return t.trim().toLowerCase()}var K=class extends Error{constructor(i){super(i);this.operatorFacing=!0;this.name="UserAdminOperatorError"}};function st(t){return t instanceof K||typeof t=="object"&&t!==null&&t.operatorFacing===!0&&t instanceof Error}var B=class extends Error{constructor(i,u={}){super(i);this.labelKey=i;this.values=u;this.name="UserAdminInputError"}};function lt(t){return typeof t=="object"&&t!==null&&t.status===403}function dt(t){let r=String(t.get("type")??"");if(r==="email"||r==="domain")return r;throw new B("invalidAllowlistType")}var ut=["users","groups","group_members","allowlist","directory"];function pt(t){let r=t.replace(/\.data$/,"").split("/").filter(Boolean),i=r[r.length-1]??"";return ut.includes(i)?i:"users"}var se=new Map([["createUser",["create"]],["updateUser",["update"]],["toggleUserActive",["update"]],["createGroup",["create"]],["updateGroup",["update"]],["deleteGroup",["delete"]],["addGroupMember",["create"]],["removeGroupMember",["delete"]],["addAllowlistEntry",["create"]],["removeAllowlistEntry",["delete"]],["addAllowlistGroup",["create"]],["removeAllowlistGroup",["delete"]],["createLinkedGroup",["create","update","delete"]],["linkDirectoryGroup",["update","create","delete"]],["unlinkDirectoryGroup",["update","delete"]],["setDirectorySyncEnabled",["update"]],["requestDirectorySync",["update"]],["catalog",["update","create","delete"]]]);function ct(){return[...se.keys()]}function mt(t){return se.get(t)??[]}function gt(t){let r=typeof t=="object"&&t!==null&&"status"in t?t.status:void 0;return typeof r!="number"?"unknown":r===401||r===403?"denied":r===429?"rateLimited":r>=500?"upstreamError":"unknown"}function q(t,r){let i=t.get(r),u=Number(i);if(i===null||String(i).trim()===""||!Number.isInteger(u)||u<=0)throw new B("invalidField",{field:r});return u}function $(t,r){let i=String(t.get(r)??"").trim();if(i==="")throw new B("invalidField",{field:r});return i}function yt(t,r){let i=String(t.get(r)??"");if(i!=="true"&&i!=="false")throw new B("invalidField",{field:r});return i==="true"}function ke(t){let r=String(t.get("membershipMode")??"");if(r!=="direct"&&r!=="transitive")throw new B("invalidField",{field:"membershipMode"});return r}function te(t,r){let i=String(t.get(r)??"").trim();return i===""?void 0:i}function bt(t){let r=ce(t.labels);async function i(d){if(!t.resolveActor)return"user-admin";try{return await t.resolveActor(d)||"user-admin"}catch(s){return console.error("[@aiquants/auth-react-router] resolveActor failed; recording the request as an unnamed actor:",s),"user-admin"}}async function u(d,s){try{return await t.store.requestDirectorySync(d,await i(s))}catch(w){return console.error(`[@aiquants/auth-react-router] the link for group ${d} was created, but its sync request could not be queued:`,w),"not-queued"}}async function l(d){if(!t.directoryCatalog)return!1;let s=se.get("catalog");if(s===void 0||s.length===0)return!1;try{for(let w of s)await t.guards.requireAccess(d,{action:w,intent:"catalog"});return!0}catch(w){try{t.guards.onDenied?.({intent:"catalog",actions:s,error:w})}catch(p){console.error("[@aiquants/auth-react-router] onDenied threw; the denial itself still stands:",p)}return!1}}async function o({request:d}){await t.guards.requireAccess(d,{action:"read",intent:"loader"});let s=pt(new URL(d.url).pathname),w=(s==="groups"||s==="directory")&&await l(d),[p,y,S,f,b,G]=await Promise.all([t.store.listUsers(),t.store.listGroups(),t.store.listGroupMembers(),t.store.listAllowlist(),t.store.getDirectoryStatus(),t.getMyPermissions?t.getMyPermissions(d).catch(V=>(console.error("[@aiquants/auth-react-router] getMyPermissions failed; rendering the permission badge as unknown:",V),null)):Promise.resolve(null)]),U=await ve(t.directoryCatalog,w,d,b.stalenessThresholdSec);return{resourceLabels:t.resourceLabels,segment:s,users:p,groups:y,groupMembers:S,allowlist:f,directoryStatus:b,myPermissions:G,catalog:U,labels:r}}async function n({request:d}){let s=Number(d.headers.get("content-length")??Number.NaN);if(Number.isFinite(s)&&s>nt)return(0,re.data)({ok:!1,error:r.errors.requestTooLarge},{status:413});let w=await d.formData(),p=String(w.get("intent")??""),y=se.get(p);if(!y)return(0,re.data)({ok:!1,error:r.errors.unknownIntent},{status:400});let S=b=>lt(b),f=b=>{try{t.guards.onDenied?.({intent:p,actions:y,error:b})}catch{}return(0,re.data)({ok:!1,error:r.errors.forbidden},{status:403})};try{for(let b of y)await t.guards.requireAccess(d,{action:b,intent:p})}catch(b){if(!S(b))throw b;return f(b)}try{return await M(p,w,d)}catch(b){if(S(b))return f(b);if(b instanceof Response)throw b;if(b instanceof B){let G=b.values.field,U=typeof G=="string"?{...b.values,field:r.errors.fieldNames[G]??G}:b.values,V=r.errors[b.labelKey];return{ok:!1,error:x(typeof V=="string"?V:String(b.labelKey),U)}}return console.error(`[@aiquants/auth-react-router] intent "${p}" failed:`,b),{ok:!1,error:st(b)?b.message:r.errors.unexpected}}}function g(d,s,w){let p=String(d.get("externalId")??"").trim();if(w.kind==="ready"){if(p!==""&&w.groups.some(f=>f.externalId===p))return p;let y=z(s),S=w.groups.find(f=>z(f.externalKey)===y);if(S)return S.externalId}return p===""?s:p}function h(d){let s=d.provider.trim();if(!d.isEnabled||s==="")throw new B("directoryDisabled");return s}async function C(d,s){let w=z(d),p=z(s),S=(await t.store.listGroups()).find(f=>f.externalLink!==void 0&&(z(f.externalLink.externalId)===w||z(f.externalLink.externalKey)===p));if(S)throw new B("alreadyLinked",{key:s,group:S.name})}function k(d,s,w){if(w.kind!=="ready")return;let p=z(d),y=z(s);if(!w.groups.some(S=>z(S.externalId)===p&&z(S.externalKey)===y))throw new B("unknownUpstream",{key:s})}async function M(d,s,w){let p=null,y=async()=>(p??(p=await t.store.getDirectoryStatus()),p),S=async()=>ve(t.directoryCatalog,!0,w,(await y()).stalenessThresholdSec);if(d==="createUser")return await t.store.createUser({displayName:$(s,"displayName"),email:$(s,"email")}),{ok:!0};if(d==="updateUser")return await t.store.updateUser(q(s,"userId"),{displayName:$(s,"displayName"),email:$(s,"email")}),{ok:!0};if(d==="toggleUserActive"){let f=String(s.get("isActive")??"");if(f!=="true"&&f!=="false")throw new B("invalidField",{field:"isActive"});return await t.store.toggleUserActive(q(s,"userId"),f==="true"),{ok:!0}}if(d==="createGroup")return await t.store.createGroup({groupKey:$(s,"groupKey"),name:$(s,"name"),description:te(s,"description")}),{ok:!0};if(d==="updateGroup")return await t.store.updateGroup(q(s,"groupId"),{name:$(s,"name"),description:te(s,"description")}),{ok:!0};if(d==="deleteGroup")return await t.store.deleteGroup(q(s,"groupId")),{ok:!0};if(d==="addGroupMember")return await t.store.addGroupMember(q(s,"groupId"),q(s,"userId")),{ok:!0};if(d==="removeGroupMember")return await t.store.removeGroupMember(q(s,"groupId"),q(s,"userId")),{ok:!0};if(d==="addAllowlistEntry"){let f=dt(s);return await t.store.addAllowlistEntry({pattern:$(s,"pattern"),type:f,description:te(s,"description")}),{ok:!0}}if(d==="addAllowlistGroup")return await t.store.addAllowlistGroup(q(s,"groupId"),te(s,"description")),{ok:!0};if(d==="removeAllowlistGroup")return await t.store.removeAllowlistGroup(q(s,"entryId")),{ok:!0};if(d==="createLinkedGroup"){let f=$(s,"externalKey"),b=h(await y()),G=await S(),U=g(s,f,G);await C(U,f),k(U,f,G);let V=await t.store.createLinkedGroup({groupKey:$(s,"groupKey"),name:$(s,"name"),description:te(s,"description"),provider:b,externalId:U,externalKey:f,membershipMode:ke(s)});return{ok:!0,syncRequest:await u(V.id,w)}}if(d==="linkDirectoryGroup"){let f=$(s,"externalKey"),b=h(await y()),G=await S(),U=g(s,f,G);await C(U,f),k(U,f,G);let V=q(s,"groupId");return await t.store.linkDirectoryGroup(V,{provider:b,externalId:U,externalKey:f,membershipMode:ke(s)}),{ok:!0,syncRequest:await u(V,w)}}if(d==="unlinkDirectoryGroup")return await t.store.unlinkDirectoryGroup(q(s,"groupId")),{ok:!0};if(d==="setDirectorySyncEnabled")return await t.store.setDirectorySyncEnabled(q(s,"groupId"),yt(s,"isSyncEnabled")),{ok:!0};if(d==="requestDirectorySync"){let f=String(s.get("groupId")??"").trim();return{ok:!0,syncRequest:await t.store.requestDirectorySync(f===""?null:q(s,"groupId"),await i(w))}}return d==="removeAllowlistEntry"?(await t.store.removeAllowlistEntry(q(s,"entryId")),{ok:!0}):(console.error(`[@aiquants/auth-react-router] intent "${d}" is in the permission table but has no handler`),(0,re.data)({ok:!1,error:r.errors.unknownIntent},{status:400}))}return{loader:o,action:n}}var le=require("react"),X=require("react-router");var E=require("react/jsx-runtime"),Se={intervalMs:3e3,maxMs:3e5};function ft(t,r){let i=(0,X.useRevalidator)(),u=(0,le.useRef)(i.state);u.current=i.state;let{revalidate:l}=i,{intervalMs:o,maxMs:n}=r;(0,le.useEffect)(()=>{if(t<=0)return;let g=Date.now(),h=setInterval(()=>{if(Date.now()-g>=n){clearInterval(h);return}u.current==="idle"&&l()},o);return()=>clearInterval(h)},[t,o,n,l])}function Ae({label:t,summary:r}){return(0,E.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem",fontSize:"0.65rem",padding:"0.08rem 0.35rem",borderRadius:"9999px",backgroundColor:r.bgColor,color:r.color,border:`1px solid ${r.borderColor}`,fontWeight:600,lineHeight:"1.2"},children:[(0,E.jsxs)("span",{children:[t,":"]}),(0,E.jsx)("span",{children:r.text})]})}function ht({status:t,labels:r,groups:i}){if(!t||t.linkedGroupCount===0)return null;let u=r.directoryView,l=[];if(t.isEnabled||l.push({id:"disabled",text:u.disabledWarning}),t.pausedGroupCount>0&&l.push({id:"paused",text:x(u.pausedTemplate,{paused:t.pausedGroupCount,total:t.linkedGroupCount})}),t.isStale){let o=t.oldestSyncedAt?J(t.oldestSyncedAt,r):u.neverSynced;l.push({id:"stale",text:`${u.staleWarning} ${x(u.oldestSyncedTemplate,{at:o})}`})}if(t.erroredGroupIds.length>0){let o=t.erroredGroupIds.map(n=>{let g=i.find(C=>C.id===n);if(!g)return x(r.common.idTemplate,{id:n});let h=g.externalLink?.syncError;return h?x(u.erroredItemTemplate,{group:g.name,reason:h}):g.name});l.push({id:"errored",text:x(u.erroredTemplate,{groups:o.join(u.listSeparator)})})}return t.pendingRequestCount>0&&l.push({id:"pending",text:x(u.pendingTemplate,{count:t.pendingRequestCount})}),l.length===0?null:(0,E.jsxs)("section",{"aria-labelledby":"directory-sync-heading","data-testid":"directory-sync-banner",style:{display:"flex",flexDirection:"column",gap:"0.35rem",padding:"0.7rem 1rem",marginBottom:"1rem",borderRadius:"6px",border:"1px solid #fde68a",backgroundColor:"#fffbeb",color:"#92400e",fontSize:"0.85rem"},children:[(0,E.jsx)("h2",{id:"directory-sync-heading",style:{margin:0,fontSize:"0.9rem",fontWeight:700},children:u.title}),l.map(o=>(0,E.jsx)("span",{"data-directory-warning":o.id,children:o.text},o.id))]})}function me({children:t,renderHeader:r,pendingSyncPolling:i,basePath:u}){let l=(0,X.useLoaderData)();ft(l?.directoryStatus?.pendingRequestCount??0,i??Se);let o=l?.segment??"users",n=l?.labels??j,g=l?.myPermissions??null,h=l?.resourceLabels??{},C=y=>Object.hasOwn(h,y)?h[y]:y,k=[{key:"users",label:n.tabs.users,href:u},{key:"groups",label:n.tabs.groups,href:`${u}/groups`},{key:"group_members",label:n.tabs.groupMembers,href:`${u}/group_members`},{key:"allowlist",label:n.tabs.allowlist,href:`${u}/allowlist`}],M=(l?.groups??[]).some(y=>y.externalLink);(l?.directoryStatus?.isEnabled||(l?.directoryStatus?.linkedGroupCount??0)>0||M)&&k.push({key:"directory",label:n.tabs.directory,href:`${u}/directory`});let d=Object.entries(g??{}),s={text:n.permissions.unknown,color:"#92400e",bgColor:"#fffbeb",borderColor:"#fde68a"},w=y=>y===void 0?s:y.canWrite?{text:n.permissions.canWrite,color:"#047857",bgColor:"#ecfdf5",borderColor:"#a7f3d0"}:y.canRead?{text:n.permissions.canRead,color:"#1d4ed8",bgColor:"#eff6ff",borderColor:"#bfdbfe"}:y.canDelete?{text:n.permissions.canDelete,color:"#b91c1c",bgColor:"#fef2f2",borderColor:"#fecaca"}:{text:n.permissions.none,color:"#475569",bgColor:"#f1f5f9",borderColor:"#cbd5e1"},p=(0,E.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.4rem"},"data-testid":"user-admin-header-annotation",children:[(0,E.jsx)("span",{style:{fontSize:"0.75rem",backgroundColor:"#e0f2fe",color:"#0369a1",padding:"2px 8px",borderRadius:"12px",fontWeight:600},children:n.heading}),(0,E.jsxs)("div",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem",fontSize:"0.68rem",color:"#475569"},"data-testid":"user-admin-permissions-badge",children:[(0,E.jsx)("span",{style:{fontWeight:600,color:"#334155"},children:n.permissions.label}),(0,E.jsx)("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem"},children:d.length===0?(0,E.jsx)("span",{"data-testid":"user-admin-permission-unavailable",children:(0,E.jsx)(Ae,{label:n.heading,summary:s})}):d.map(([y,S])=>(0,E.jsx)(Ae,{label:C(y),summary:w(S)},y))})]})]});return(0,E.jsxs)("div",{"data-testid":"user-admin-shell",style:{width:"100%",minHeight:"100vh",backgroundColor:"#f8fafc",padding:"1.5rem",boxSizing:"border-box"},children:[r?r({title:n.title,annotation:p}):(0,E.jsxs)("div",{style:{marginBottom:"1.5rem",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,E.jsx)("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:700,color:"#0f172a"},children:n.title}),p]}),(0,E.jsx)("nav",{"aria-label":n.title,style:{display:"flex",gap:"0.5rem",marginBottom:"1.2rem",borderBottom:"2px solid #e2e8f0",paddingBottom:"0.5rem"},children:k.map(y=>{let S=o===y.key;return(0,E.jsx)(X.Link,{to:y.href,"data-testid":`user-admin-tab-${y.key}`,"aria-current":S?"page":void 0,style:{padding:"0.5rem 1rem",borderRadius:"6px 6px 0 0",fontSize:"0.88rem",fontWeight:S?700:500,color:S?"#0284c7":"#64748b",backgroundColor:S?"#ffffff":"transparent",textDecoration:"none",borderBottom:S?"3px solid #0284c7":"3px solid transparent",transition:"all 0.15s ease"},children:y.label},y.key)})}),(0,E.jsx)(ht,{status:l?.directoryStatus,labels:n,groups:l?.groups??[]}),(0,E.jsx)("main",{children:t})]})}var ge=require("@aiquants/select-box"),v=Xe(require("react")),N=require("react-router");var e=require("react/jsx-runtime");function H({result:t,id:r}){let i=t;return i?.ok!==!1||!i.error?null:(0,e.jsx)("div",{id:r,"data-testid":"user-admin-action-error",role:"alert",style:{gridColumn:"1 / -1",padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #fecaca",backgroundColor:"#fef2f2",color:"#b91c1c",fontSize:"0.85rem"},children:i.error})}function oe(t){let r=(0,v.useRef)(null),[i,u]=(0,v.useState)(void 0),l=t.data===i?void 0:t.data;return(0,v.useEffect)(()=>{if(t.state!=="idle"||t.data===void 0)return;let g=r.current;g&&(r.current=null,t.data.ok===!0&&g(t.data))},[t.state,t.data]),{submit:(g,h)=>{r.current=h??null,u(void 0),t.submit(g,{method:"post"})},resetResult:()=>u(t.data),result:l}}function ue(t,r,i){let u=(0,v.useRef)(null),l=(0,v.useRef)(r);return l.current=r,(0,v.useEffect)(()=>{if(!t)return;let o=u.current,n=i?.current??document.activeElement,g=()=>{let k=Array.from(o?.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])')??[]).filter(d=>!(d.disabled||d.hasAttribute("inert"))&&d.closest("[inert]")===null&&d.getAttribute("aria-hidden")!=="true"),M=new Set;return k.filter(d=>{let s=d instanceof HTMLInputElement&&d.type==="radio"?d:null;return!s||s.name===""?!0:!s.checked&&k.some(w=>w instanceof HTMLInputElement&&w.type==="radio"&&w.name===s.name&&w.checked)||M.has(s.name)?!1:(M.add(s.name),!0)})},h=g();(h.find(k=>!k.hasAttribute("data-aqar-visually-hidden"))??h[0])?.focus();let C=k=>{if(k.key==="Escape"){if(k.isComposing||k.keyCode===229||k.defaultPrevented)return;k.preventDefault(),l.current();return}if(k.key!=="Tab")return;let M=g();if(M.length===0)return;let d=M[0],s=M[M.length-1],w=document.activeElement,p=!o?.contains(w);k.shiftKey&&(w===d||p)?(k.preventDefault(),s.focus()):!k.shiftKey&&(w===s||p)&&(k.preventDefault(),d.focus())};return document.addEventListener("keydown",C),()=>{document.removeEventListener("keydown",C),n?.focus?.()}},[t,i]),u}function Le(t,r,i){return t.kind!=="ready"?[]:t.groups.map(u=>{let l=r.get(z(u.externalId))??r.get(z(u.externalKey)),o=l!==void 0,n=u.memberCount===void 0?"":x(i.groupsView.upstreamOptionMembers,{count:u.memberCount});return{label:x(i.directoryView.groupOptionTemplate,{name:u.name,key:u.externalKey}),value:u.externalId,note:o?x(i.groupsView.upstreamAlreadyLinked,{group:l}):n,...o?{disabled:!0}:{},entry:u}})}function Me({observedAt:t,isStale:r,labels:i}){return(0,e.jsx)("p",{"data-testid":"catalog-freshness","data-stale":r?"":void 0,style:{margin:"0.35rem 0 0 0",fontSize:"0.72rem",color:r?"#92400e":"#64748b"},children:x(r?i.groupsView.catalogStale:i.groupsView.catalogObservedAt,{at:J(t,i)})})}function pe(t){return typeof t=="object"&&t!==null&&t.ok===!1&&typeof t.error=="string"}var wt={exact:{backgroundColor:"#d1fae5",color:"#064e3b",borderRadius:"2px"},fuzzy:{backgroundColor:"#fef3c7",color:"#78350f",borderRadius:"2px"}};function Ge(t,r){if(typeof t!="object"||t===null)return null;let i=t.syncRequest;return i==="already-pending"?r.directoryView.syncAlreadyPending:i==="not-queued"?r.directoryView.linkSyncNotQueued:null}function Re(t){let r=new Map;for(let i of t){let u=i.externalLink;u&&(r.set(z(u.externalId),i.name),r.set(z(u.externalKey),i.name))}return r}function Te(t,r){let{label:i,note:u}=t;return(0,e.jsxs)("span",{"data-aqar-upstream-option":!0,title:u===""?i:`${i} \u2014 ${u}`,style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"0.75rem",width:"100%",minWidth:0},children:[(0,e.jsx)("span",{"data-aqar-upstream-option-label":!0,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.highlight(i).map((l,o)=>(0,e.jsx)("span",{"data-aqar-match":l.matchType==="none"?void 0:l.matchType,style:l.matchType==="none"?void 0:wt[l.matchType],children:l.text},o))}),u===""?null:(0,e.jsx)("span",{"data-aqar-upstream-option-note":!0,style:{flexShrink:0,fontSize:"0.72rem",opacity:.75},children:u})]})}function Ve(t){let r=t.directoryView;return{noOptions:r.pickerNoOptions,clear:r.pickerClear,toggle:r.pickerToggle,selection:i=>x(r.pickerSelected,{value:i.map(u=>u.label).join(", ")}),status:i=>x(r.pickerAvailable,{count:i.count})}}function xt(t){try{return new Intl.Collator(t).compare}catch{return new Intl.Collator().compare}}function vt(t){return(t.split("@")[0]??t).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function ye(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),{submit:i,resetResult:u,result:l}=oe(r),o=t.labels??j,[n,g]=(0,v.useState)(""),[h,C]=(0,v.useState)(null),k=h?.kind==="edit"?h.user:null,M=h?.kind==="create",d=(0,v.useRef)(null),s=(m,I)=>{d.current=I.currentTarget,u(),m.kind==="create"&&(p(""),S("")),C(m)},[w,p]=(0,v.useState)(""),[y,S]=(0,v.useState)(""),f=ue(M,()=>C(null),d),b=ue(k!==null,()=>C(null),d),G=r.state!=="idle",[U,V]=(0,v.useState)({column:"displayName",ascending:!0}),T=xt(o.formatLocale),O=n.trim().toLowerCase(),A=t.users.filter(m=>m.displayName.toLowerCase().includes(O)||m.email.toLowerCase().includes(O)).slice().sort((m,I)=>{let Q=U.ascending?1:-1;return U.column==="id"?(m.id-I.id)*Q:U.column==="isActive"?(Number(m.isActive)-Number(I.isActive))*Q:T(m[U.column],I[U.column])*Q}),P=m=>{V(I=>I.column===m?{column:m,ascending:!I.ascending}:{column:m,ascending:!0})},c=m=>{G||m.isActive&&!window.confirm(x(o.usersView.confirmDeactivate,{user:m.displayName}))||i({intent:"toggleUserActive",userId:String(m.id),isActive:String(!m.isActive)})},L=m=>{if(m.preventDefault(),!(w&&y))return;let I=w,Q=y;i({intent:"createUser",displayName:I,email:Q},()=>{p(_=>_===I?"":_),S(_=>_===Q?"":_),C(null)})},D=m=>{m.preventDefault(),k&&i({intent:"updateUser",userId:String(k.id),displayName:k.displayName,email:k.email},()=>C(null))};return(0,e.jsxs)("section",{"data-testid":"users-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[(0,e.jsx)("h2",{style:ie,children:o.usersView.title}),!h&&(0,e.jsx)(H,{result:l}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("input",{type:"text","aria-label":o.usersView.searchLabel,placeholder:o.usersView.searchPlaceholder,value:n,onChange:m=>g(m.target.value),"data-testid":"users-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),(0,e.jsx)("button",{type:"button",onClick:m=>s({kind:"create"},m),"data-testid":"users-add-button",style:{padding:"6px 14px",borderRadius:"6px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:o.usersView.addUser})]}),(0,e.jsx)("p",{"data-testid":"users-summary",role:"status","aria-live":"polite",style:{margin:0,fontSize:"0.78rem",color:"#475569"},children:x(o.usersView.listSummary,{shown:A.length,total:t.users.length})}),(0,e.jsx)("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:(0,e.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[[["id",o.common.id],["displayName",o.usersView.displayName],["email",o.usersView.email],["isActive",o.common.status]].map(([m,I])=>(0,e.jsx)("th",{scope:"col",style:{padding:0},"aria-sort":U.column===m?U.ascending?"ascending":"descending":"none",children:(0,e.jsxs)("button",{type:"button","data-testid":`users-sort-${m}`,onClick:()=>P(m),"aria-label":x(U.column===m?U.ascending?o.usersView.sortedAscending:o.usersView.sortedDescending:o.usersView.sortBy,{column:I}),style:{width:"100%",padding:"10px 14px",textAlign:"left",background:"transparent",border:"none",cursor:"pointer",font:"inherit",color:"inherit",fontWeight:U.column===m?700:500},children:[I,(0,e.jsx)("span",{"aria-hidden":"true",style:{marginLeft:"4px",opacity:U.column===m?1:.35},children:U.column===m?U.ascending?"\u25B2":"\u25BC":"\u21C5"})]})},m)),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:o.common.actions})]})}),(0,e.jsxs)("tbody",{children:[A.map(m=>(0,e.jsxs)("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`user-row-${m.id}`,children:[(0,e.jsx)("td",{style:{padding:"10px 14px",color:"#475569"},children:x(o.common.idTemplate,{id:m.id})}),(0,e.jsx)("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:m.displayName}),(0,e.jsx)("td",{style:{padding:"10px 14px",color:"#475569"},children:m.email}),(0,e.jsx)("td",{style:{padding:"10px 14px"},children:(0,e.jsx)("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:m.isActive?"#dcfce7":"#fee2e2",color:m.isActive?"#15803d":"#b91c1c",fontWeight:600},children:m.isActive?o.usersView.active:o.usersView.inactive})}),(0,e.jsxs)("td",{style:{padding:"10px 14px",textAlign:"right"},children:[(0,e.jsx)("button",{type:"button",onClick:I=>s({kind:"edit",user:m},I),"aria-label":x(o.usersView.editUserAria,{user:m.displayName}),"data-testid":`edit-user-btn-${m.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:"pointer",marginRight:"6px"},children:o.common.edit}),(0,e.jsx)("button",{type:"button",onClick:()=>c(m),...Y(G),"aria-label":x(m.isActive?o.usersView.deactivateAria:o.usersView.activateAria,{user:m.displayName}),"data-testid":`toggle-user-btn-${m.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:G?"default":"pointer",color:m.isActive?"#b91c1c":"#15803d"},children:m.isActive?o.usersView.deactivate:o.usersView.activate})]})]},m.id)),A.length===0&&(0,e.jsx)("tr",{children:(0,e.jsx)("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:O===""?o.usersView.empty:o.usersView.emptyFiltered})})]})]})}),M&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:f,onSubmit:L,role:"dialog","aria-modal":"true","aria-labelledby":"create-user-title",...pe(l)?{"aria-describedby":"create-user-error"}:{},"data-testid":"user-create-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"create-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:o.usersView.addUser}),(0,e.jsx)(H,{result:l,id:"create-user-error"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"create-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.displayName}),(0,e.jsx)("input",{id:"create-user-display-name-input",type:"text",value:w,onChange:m=>p(m.target.value),required:!0,"data-testid":"create-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"create-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.email}),(0,e.jsx)("input",{id:"create-user-email-input",type:"email",value:y,onChange:m=>S(m.target.value),required:!0,"data-testid":"create-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>C(null),"data-testid":"cancel-create-user",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:o.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-create-user",disabled:G,"aria-busy":G,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:o.common.create})]})]})}),k&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:b,onSubmit:D,role:"dialog","aria-modal":"true","aria-labelledby":"edit-user-title",...pe(l)?{"aria-describedby":"edit-user-error"}:{},"data-testid":"user-edit-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"edit-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:o.usersView.editUser}),(0,e.jsx)(H,{result:l,id:"edit-user-error"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.displayName}),(0,e.jsx)("input",{id:"edit-user-display-name-input",type:"text",value:k.displayName,onChange:m=>C({kind:"edit",user:{...k,displayName:m.target.value}}),required:!0,"data-testid":"edit-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:o.usersView.email}),(0,e.jsx)("input",{id:"edit-user-email-input",type:"email",value:k.email,onChange:m=>C({kind:"edit",user:{...k,email:m.target.value}}),required:!0,"data-testid":"edit-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>C(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:o.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-edit-user",disabled:G,"aria-busy":G,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:o.common.save})]})]})})]})}var Ee=v.default.createContext(null);function kt(){return v.default.useContext(Ee)??""}function Pe(){let t=kt(),r=(0,N.useLoaderData)(),i=(0,N.useFetcher)(),{submit:u,resetResult:l,result:o}=oe(i),n=r.labels??j,g=Ge(o,n),[h,C]=(0,v.useState)(""),[k,M]=(0,v.useState)(null),d=k?.kind==="edit"?k.group:null,s=k?.kind==="create",w=(0,v.useRef)(null),p=(a,R)=>{w.current=R.currentTarget,l(),a.kind==="create"&&Oe(),M(a)},y=i.state!=="idle",[S,f]=(0,v.useState)(""),[b,G]=(0,v.useState)(""),[U,V]=(0,v.useState)(""),[T,O]=(0,v.useState)("local"),[A,P]=(0,v.useState)(null),[c,L]=(0,v.useState)(null),[D,m]=(0,v.useState)("direct"),I=(0,v.useRef)(null),Q=(0,v.useMemo)(()=>{let a=new Map;for(let R of r.groupMembers)a.set(R.groupId,(a.get(R.groupId)??0)+1);return a},[r.groupMembers]),_=(0,v.useMemo)(()=>Re(r.groups),[r.groups]),ne=(0,v.useMemo)(()=>Le(r.catalog,_,n),[r.catalog,_,n]),ze=(0,v.useMemo)(()=>ne.filter(a=>a.disabled!==!0).length,[ne]),be=r.catalog.kind==="ready"&&r.catalog.groups.length>0&&r.directoryStatus.provider!=="",Fe=ue(s,()=>M(null),w),qe=ue(d!==null,()=>M(null),w),fe=h.trim().toLowerCase(),he=r.groups.filter(a=>a.name.toLowerCase().includes(fe)||a.groupKey.toLowerCase().includes(fe)),Oe=()=>{f(""),G(""),V(""),O("local"),L(null),m("direct"),I.current=null},Ke=a=>{if(a.preventDefault(),!(S&&b)||T==="upstream"&&c===null||T==="upstream"&&c!==null&&!window.confirm(x(n.groupsView.confirmCreateLinked,{group:b,upstream:c.externalKey})))return;let R={key:S,name:b,description:U},F=()=>{f(Z=>Z===R.key?"":Z),G(Z=>Z===R.name?"":Z),V(Z=>Z===R.description?"":Z),L(null),M(null)};if(T==="upstream"&&c!==null){u({intent:"createLinkedGroup",groupKey:R.key,name:R.name,description:R.description,provider:r.directoryStatus.provider,externalKey:c.externalKey,membershipMode:D},F);return}u({intent:"createGroup",groupKey:R.key,name:R.name,description:R.description},F)},Be=a=>{if(L(a),!a)return;let R={key:vt(a.externalKey),name:a.name,description:a.description??""};G(R.name),f(R.key),V(R.description),I.current=R},$e=a=>{if(O(a),a==="upstream")return;L(null);let R=I.current;R&&(f(F=>F===R.key?"":F),G(F=>F===R.name?"":F),V(F=>F===R.description?"":F),I.current=null)},We=a=>{a.preventDefault(),d&&u({intent:"updateGroup",groupId:String(d.id),name:d.name,description:d.description??""},()=>M(null))},je=a=>{if(y)return;let R=r.groupMembers.filter(F=>F.groupId===a.id).length;window.confirm(x(n.groupsView.confirmDelete,{group:a.name,count:R}))&&u({intent:"deleteGroup",groupId:String(a.id)})};return(0,e.jsxs)("section",{"data-testid":"groups-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[(0,e.jsx)("h2",{style:ie,children:n.groupsView.title}),!k&&(0,e.jsx)(H,{result:o}),(0,e.jsx)("p",{"data-testid":"groups-sync-request-notice",role:"status","aria-live":"polite",hidden:g===null,style:g===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:g}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("input",{type:"text","aria-label":n.groupsView.searchLabel,placeholder:n.groupsView.searchPlaceholder,value:h,onChange:a=>C(a.target.value),"data-testid":"groups-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),(0,e.jsx)("button",{type:"button",onClick:a=>p({kind:"create"},a),"data-testid":"groups-add-button",style:{padding:"6px 14px",borderRadius:"6px",backgroundColor:"#4338ca",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:n.groupsView.addGroup})]}),(0,e.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:"1rem"},children:he.map(a=>{let R=Q.get(a.id)??0;return(0,e.jsxs)("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",padding:"1rem",display:"flex",flexDirection:"column",justifyContent:"space-between"},"data-testid":`group-card-${a.id}`,"data-group-readonly":a.readOnly?"true":"false",children:[(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[(0,e.jsx)("h3",{style:{margin:0,fontSize:"1rem",color:"#0f172a"},children:a.name}),(0,e.jsx)("span",{style:{fontSize:"0.72rem",backgroundColor:"#e0e7ff",color:"#4338ca",padding:"2px 6px",borderRadius:"4px",fontFamily:"monospace"},children:a.groupKey})]}),(0,e.jsx)("p",{style:{margin:"0 0 0.8rem 0",fontSize:"0.82rem",color:"#64748b",minHeight:"2.4em"},children:a.description||n.groupsView.noDescription}),a.externalLink&&(0,e.jsxs)("div",{"data-testid":`group-source-${a.id}`,style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap",marginBottom:"0.6rem"},children:[(0,e.jsx)("span",{style:{fontSize:"0.72rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:"#ede9fe",color:"#6d28d9",fontWeight:600},children:n.common.managedUpstream}),(0,e.jsx)("span",{style:{fontSize:"0.72rem",fontFamily:"monospace",color:"#64748b"},children:a.externalLink.externalKey}),a.externalLink.unresolvedCount>0&&(0,e.jsx)("span",{"data-testid":`group-unresolved-${a.id}`,style:{fontSize:"0.72rem",color:"#b45309"},children:x(n.directoryView.unresolvedTemplate,{count:a.externalLink.unresolvedCount})})]})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",borderTop:"1px solid #f1f5f9",paddingTop:"0.6rem"},children:[(0,e.jsx)(N.Link,{to:`${t}/group_members?group=${a.id}`,"data-testid":`group-open-members-${a.id}`,"aria-label":x(n.groupsView.openMembersAria,{group:a.name}),style:{fontSize:"0.78rem",color:"#1d4ed8",textDecoration:"none"},children:x(n.groupsView.memberCountTemplate,{count:R})}),a.readOnly?(0,e.jsx)("span",{"data-testid":`readonly-group-${a.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:n.common.readOnly}):(0,e.jsxs)("div",{children:[(0,e.jsx)("button",{type:"button",onClick:F=>p({kind:"edit",group:a},F),...Y(y),"aria-label":x(n.groupsView.editGroupAria,{group:a.name}),"data-testid":`edit-group-btn-${a.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.75rem",cursor:"pointer",marginRight:"4px"},children:n.common.edit}),(0,e.jsx)("button",{type:"button",onClick:()=>je(a),...Y(y),"aria-label":x(n.groupsView.deleteGroupAria,{group:a.name}),"data-testid":`delete-group-btn-${a.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.75rem",cursor:"pointer"},children:n.common.delete})]})]})]},a.id)})}),he.length===0&&(0,e.jsx)("div",{"data-testid":"groups-empty",style:{padding:"2rem",textAlign:"center",color:"#475569",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:r.groups.length===0?n.groupsView.empty:n.groupsView.emptyFiltered}),s&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:Fe,onSubmit:Ke,role:"dialog","aria-modal":"true","aria-labelledby":"create-group-title",...pe(o)?{"aria-describedby":"create-group-error"}:{},"data-testid":"group-create-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"create-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:n.groupsView.addGroup}),(0,e.jsx)(H,{result:o,id:"create-group-error"}),be&&(0,e.jsxs)("fieldset",{"data-testid":"create-group-mode",style:{display:"flex",gap:"0.25rem",marginBottom:"1rem",border:"none",padding:0,margin:"0 0 1rem 0"},children:[(0,e.jsx)("legend",{style:Ce,children:n.groupsView.createModeLabel}),["local","upstream"].map(a=>(0,e.jsxs)("label",{"data-aqar-create-mode":a,"data-selected":T===a?"":void 0,"data-focused":A===a?"":void 0,style:{outline:A===a?"2px solid #4338ca":void 0,outlineOffset:"2px",flex:1,padding:"0.4rem 0.6rem",fontSize:"0.8rem",borderRadius:"6px",cursor:"pointer",textAlign:"center",border:T===a?"1px solid #4338ca":"1px solid #cbd5e1",backgroundColor:T===a?"#eef2ff":"#ffffff",color:T===a?"#3730a3":"#475569",fontWeight:T===a?700:500},children:[(0,e.jsx)("input",{type:"radio",name:"create-group-mode",value:a,checked:T===a,onChange:()=>$e(a),"data-testid":`create-group-mode-${a}`,"data-aqar-visually-hidden":!0,onFocus:()=>P(a),onBlur:()=>P(R=>R===a?null:R),style:Ce}),a==="local"?n.groupsView.createModeLocal:n.groupsView.createModeUpstream]},a))]}),r.catalog.kind==="ready"&&r.catalog.groups.length===0&&(0,e.jsx)("p",{"data-testid":"create-group-catalog-empty",role:"note",style:{margin:"0 0 1rem 0",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#f8fafc",border:"1px solid #e2e8f0",color:"#475569",fontSize:"0.78rem"},children:x(n.groupsView.catalogEmpty,{at:J(r.catalog.observedAt??"",n)})}),r.catalog.kind==="ready"&&r.catalog.groups.length>0&&r.directoryStatus.provider===""&&(0,e.jsx)("p",{"data-testid":"create-group-provider-unset",role:"note",style:{margin:"0 0 1rem 0",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.78rem"},children:n.groupsView.providerUnset}),r.catalog.kind==="unavailable"&&(0,e.jsx)("p",{"data-testid":"create-group-catalog-unavailable",role:"note",style:{margin:"0 0 1rem 0",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.78rem"},children:x(n.groupsView.catalogUnavailableHere,{reason:n.groupsView.catalogFailures[r.catalog.reason]})}),T==="upstream"&&be&&r.catalog.kind==="ready"&&(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("p",{"data-testid":"create-group-upstream-notice",role:"note",style:{margin:"0 0 0.5rem 0",fontSize:"0.78rem",color:"#5b21b6"},children:n.groupsView.createUpstreamNotice}),(0,e.jsx)("div",{id:"create-group-upstream-label",style:ee,children:n.groupsView.pickUpstream}),(0,e.jsx)("div",{"data-testid":"create-group-upstream-picker",onKeyDown:a=>{a.nativeEvent.isComposing||a.nativeEvent.keyCode===229||a.key==="Enter"&&a.preventDefault()},children:(0,e.jsx)(ge.SelectBox,{options:ne,value:c===null?null:ne.find(a=>a.value===c.externalId)??null,onChange:a=>Be(a===null?null:a.entry),placeholder:n.groupsView.pickUpstreamPlaceholder,ariaLabelledBy:"create-group-upstream-label",renderOption:Te,locale:n.locale,labels:Ve(n),clearable:!0})}),(0,e.jsx)(Me,{observedAt:r.catalog.observedAt,isStale:r.catalog.isStale,labels:n}),(0,e.jsxs)("div",{style:{marginTop:"0.6rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-membership-mode",style:ee,children:n.directoryView.membershipMode}),(0,e.jsxs)("select",{id:"create-group-membership-mode","data-testid":"create-group-membership-mode",value:D,onChange:a=>m(a.target.value),style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"},children:[(0,e.jsx)("option",{value:"direct",children:n.directoryView.directMode}),(0,e.jsx)("option",{value:"transitive",children:n.directoryView.transitiveMode})]})]})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-key-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.groupKey}),(0,e.jsx)("input",{id:"create-group-key-input",type:"text",value:S,onChange:a=>f(a.target.value),placeholder:n.groupsView.groupKeyPlaceholder,required:!0,"data-testid":"create-group-key",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.name}),(0,e.jsx)("input",{id:"create-group-name-input",type:"text",value:b,onChange:a=>G(a.target.value),placeholder:n.groupsView.namePlaceholder,required:!0,"data-testid":"create-group-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"create-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.description}),(0,e.jsx)("textarea",{id:"create-group-desc-input",value:U,onChange:a=>V(a.target.value),"data-testid":"create-group-description",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box",height:"60px"}})]}),T==="upstream"&&c===null&&(0,e.jsx)("p",{id:"create-group-submit-hint","data-testid":"create-group-submit-hint",style:{margin:"0 0 0.6rem 0",fontSize:"0.78rem",color:"#475569",textAlign:"right"},children:ze>0?n.groupsView.pickUpstreamFirst:n.groupsView.allUpstreamLinked}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>M(null),"data-testid":"cancel-create-group",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:n.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-create-group",disabled:y||T==="upstream"&&c===null,"aria-busy":y,...T==="upstream"&&c===null?{"aria-describedby":"create-group-submit-hint"}:{},style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:y||T==="upstream"&&c===null?"#a5b4fc":"#4338ca",color:"#ffffff",border:"none",cursor:y||T==="upstream"&&c===null?"not-allowed":"pointer"},children:n.common.create})]})]})}),d&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:(0,e.jsxs)("form",{ref:qe,onSubmit:We,role:"dialog","aria-modal":"true","aria-labelledby":"edit-group-title",...pe(o)?{"aria-describedby":"edit-group-error"}:{},"data-testid":"group-edit-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[(0,e.jsx)("h3",{id:"edit-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:n.groupsView.editGroup}),(0,e.jsx)(H,{result:o,id:"edit-group-error"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.name}),(0,e.jsx)("input",{id:"edit-group-name-input",type:"text",value:d.name,onChange:a=>M({kind:"edit",group:{...d,name:a.target.value}}),required:!0,"data-testid":"edit-group-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{marginBottom:"1.2rem"},children:[(0,e.jsx)("label",{htmlFor:"edit-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:n.groupsView.description}),(0,e.jsx)("textarea",{id:"edit-group-desc-input",value:d.description??"",onChange:a=>M({kind:"edit",group:{...d,description:a.target.value}}),"data-testid":"edit-group-description",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box",height:"60px"}})]}),(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[(0,e.jsx)("button",{type:"button",onClick:()=>M(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:n.common.cancel}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-edit-group",disabled:y,"aria-busy":y,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#4338ca",color:"#ffffff",border:"none",cursor:"pointer"},children:n.common.save})]})]})})]})}function Ie(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),{submit:i,result:u}=oe(r),l=r.state!=="idle",o=t.labels??j,[n]=(0,N.useSearchParams)(),g=Number(n.get("group")??""),h=Number.isInteger(g)&&g>0?g:null,[C,k]=(0,v.useState)(null),[M,d]=(0,v.useState)(new Set),s=(0,v.useRef)(h);s.current!==h&&(s.current=h,h!==null&&(k(h),d(new Set)));let[w,p]=(0,v.useState)(""),[y,S]=(0,v.useState)(!1),f=C??h??t.groups[0]?.id??null,b=t.groups.find(A=>A.id===f)??t.groups[0],G=f!==null&&b!==void 0&&b.id!==f?f:null,U=new Set(t.groupMembers.filter(A=>A.groupId===b?.id).map(A=>A.userId)),V=w.trim().toLowerCase(),T=t.users.filter(A=>y&&!U.has(A.id)&&!M.has(A.id)?!1:V===""?!0:A.displayName.toLowerCase().includes(V)||A.email.toLowerCase().includes(V)),O=(A,P)=>{if(l||!b)return;let c=String(b.id);P?(d(L=>new Set(L).add(A)),i({intent:"removeGroupMember",groupId:c,userId:String(A)})):(d(L=>{if(!L.has(A))return L;let D=new Set(L);return D.delete(A),D}),i({intent:"addGroupMember",groupId:c,userId:String(A)}))};return(0,e.jsxs)("section",{"data-testid":"group-members-view-section",style:{display:"grid",gridTemplateColumns:"240px 1fr",gap:"1.2rem"},children:[(0,e.jsx)("h2",{style:{...ie,gridColumn:"1 / -1"},children:o.groupMembersView.title}),(0,e.jsx)(H,{result:u}),G!==null&&(0,e.jsx)("p",{"data-testid":"member-deep-link-missed",role:"note",style:{gridColumn:"1 / -1",margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:x(o.groupMembersView.deepLinkMissed,{id:G,group:b?.name??""})}),(0,e.jsxs)("div",{style:{backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("h3",{style:{margin:"0 0 0.8rem 0",fontSize:"0.9rem",color:"#475569"},children:o.groupMembersView.selectGroup}),(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.4rem"},children:t.groups.map(A=>{let P=A.id===b?.id;return(0,e.jsxs)("button",{type:"button",onClick:()=>{k(A.id),d(new Set)},"data-testid":`select-group-btn-${A.id}`,style:{textAlign:"left",padding:"8px 10px",borderRadius:"6px",border:P?"1px solid #6366f1":"1px solid #e2e8f0",backgroundColor:P?"#e0e7ff":"#ffffff",color:P?"#3730a3":"#0f172a",cursor:"pointer",fontWeight:P?600:400,fontSize:"0.85rem"},children:[A.name,A.readOnly?(0,e.jsx)("span",{"data-testid":`group-upstream-marker-${A.id}`,style:{marginLeft:"6px",fontSize:"0.7rem",color:"#7c3aed"},children:o.common.managedUpstream}):null]},A.id)})})]}),(0,e.jsx)("div",{style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:b?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{style:{marginBottom:"1rem",borderBottom:"1px solid #e2e8f0",paddingBottom:"0.8rem"},children:[(0,e.jsx)("h3",{style:{margin:0,fontSize:"1.1rem",color:"#0f172a"},children:x(o.groupMembersView.membersOfTemplate,{group:b.name})}),(0,e.jsxs)("span",{style:{fontSize:"0.8rem",color:"#64748b"},children:[o.groupMembersView.groupKeyLabel,": ",b.groupKey]}),b.readOnly?(0,e.jsx)("div",{"data-testid":"group-members-upstream-notice",role:"note",style:{marginTop:"0.5rem",padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#f5f3ff",border:"1px solid #ddd6fe",color:"#5b21b6",fontSize:"0.8rem"},children:o.groupMembersView.upstreamNotice}):null]}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center",flexWrap:"wrap",marginBottom:"0.8rem"},children:[(0,e.jsx)("input",{type:"search","aria-label":o.groupMembersView.searchLabel,placeholder:o.groupMembersView.searchPlaceholder,value:w,onChange:A=>p(A.target.value),"data-testid":"member-search-input",style:{flex:1,minWidth:"220px",padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem"}}),(0,e.jsxs)("label",{style:{display:"inline-flex",alignItems:"center",gap:"0.35rem",fontSize:"0.8rem",color:"#475569"},children:[(0,e.jsx)("input",{type:"checkbox","data-testid":"member-only-toggle",checked:y,onChange:A=>{S(A.target.checked),d(new Set)}}),x(o.groupMembersView.onlyMembers,{count:U.size})]})]}),(0,e.jsx)("p",{"data-testid":"member-summary",role:"status","aria-live":"polite",style:{margin:"0 0 0.6rem 0",fontSize:"0.78rem",color:"#475569"},children:x(o.groupMembersView.summary,{shown:T.length,total:t.users.length,members:U.size})}),T.length===0&&(0,e.jsx)("p",{"data-testid":"member-empty-filtered",style:{margin:"0 0 0.6rem 0",fontSize:"0.85rem",color:"#475569"},children:t.users.length===0?o.groupMembersView.noUsers:V===""&&y?o.groupMembersView.emptyNoMembers:o.groupMembersView.emptyFiltered}),(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:T.map(A=>{let P=U.has(A.id);return(0,e.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderRadius:"6px",border:"1px solid #f1f5f9",backgroundColor:P?"#f0fdf4":"#ffffff"},"data-testid":`member-row-${A.id}`,children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("span",{style:{fontWeight:600,fontSize:"0.88rem",color:"#0f172a",marginRight:"8px"},children:A.displayName}),(0,e.jsxs)("span",{style:{fontSize:"0.78rem",color:"#64748b"},children:["(",A.email,")"]})]}),b.readOnly?P?(0,e.jsx)("span",{"data-testid":`member-readonly-${A.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:o.common.managedUpstream}):null:(0,e.jsx)("button",{type:"button",onClick:()=>O(A.id,P),...Y(l),"aria-label":x(P?o.groupMembersView.actionRemoveAria:o.groupMembersView.actionAddAria,{user:A.displayName}),"data-testid":`toggle-member-btn-${A.id}`,style:{padding:"4px 12px",borderRadius:"4px",border:P?"1px solid #b91c1c":"1px solid #0284c7",backgroundColor:P?"#ffffff":"#0284c7",color:P?"#b91c1c":"#ffffff",fontSize:"0.78rem",fontWeight:600,cursor:"pointer"},children:P?o.groupMembersView.actionRemove:o.groupMembersView.actionAdd})]},A.id)})})]}):(0,e.jsx)("div",{"data-testid":"member-no-groups",style:{color:"#475569",textAlign:"center",padding:"2rem"},children:t.groups.length===0?o.groupMembersView.noGroups:o.groupMembersView.selectPrompt})})]})}function At(t){return t==="email"?{backgroundColor:"#e0f2fe",color:"#0369a1"}:t==="domain"?{backgroundColor:"#fef3c7",color:"#b45309"}:{backgroundColor:"#ede9fe",color:"#6d28d9"}}function St(t,r){return t==="email"?r.allowlistView.emailTypeShort:t==="domain"?r.allowlistView.domainTypeShort:r.allowlistView.groupTypeShort}function De(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),i=t.labels??j,{submit:u,result:l}=oe(r),o=r.state!=="idle",[n,g]=(0,v.useState)(""),[h,C]=(0,v.useState)("email"),[k,M]=(0,v.useState)(""),d=p=>{if(p.preventDefault(),!n)return;let y={pattern:n,description:k};u({intent:"addAllowlistEntry",pattern:y.pattern,type:h,description:y.description},()=>{g(S=>S===y.pattern?"":S),M(S=>S===y.description?"":S)})},s=p=>{u({intent:"removeAllowlistEntry",entryId:String(p)})},w=p=>{u({intent:"removeAllowlistGroup",entryId:String(p)})};return(0,e.jsxs)("section",{"data-testid":"allowlist-view-section",style:{display:"flex",flexDirection:"column",gap:"1.2rem"},children:[(0,e.jsx)("h2",{style:ie,children:i.allowlistView.title}),(0,e.jsx)(H,{result:l}),(0,e.jsxs)("form",{onSubmit:d,style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0",display:"flex",flexWrap:"wrap",gap:"0.8rem",alignItems:"flex-end"},children:[(0,e.jsxs)("div",{style:{flex:2,minWidth:"220px"},children:[(0,e.jsx)("label",{htmlFor:"allowlist-pattern-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.pattern}),(0,e.jsx)("input",{id:"allowlist-pattern-input-field",type:"text",value:n,onChange:p=>g(p.target.value),required:!0,"data-testid":"allowlist-pattern-input",style:{width:"100%",padding:"6px 10px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",boxSizing:"border-box"}})]}),(0,e.jsxs)("div",{style:{flex:1,minWidth:"140px"},children:[(0,e.jsx)("label",{htmlFor:"allowlist-type-select-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.type}),(0,e.jsxs)("select",{id:"allowlist-type-select-field",value:h,onChange:p=>C(p.target.value),"data-testid":"allowlist-type-select",style:{width:"100%",padding:"6px 10px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",boxSizing:"border-box"},children:[(0,e.jsx)("option",{value:"email",children:i.allowlistView.emailType}),(0,e.jsx)("option",{value:"domain",children:i.allowlistView.domainType})]})]}),(0,e.jsxs)("div",{style:{flex:2,minWidth:"200px"},children:[(0,e.jsx)("label",{htmlFor:"allowlist-desc-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.description}),(0,e.jsx)("input",{id:"allowlist-desc-input-field",type:"text",value:k,onChange:p=>M(p.target.value),"data-testid":"allowlist-desc-input",style:{width:"100%",padding:"6px 10px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",boxSizing:"border-box"}})]}),(0,e.jsx)("button",{type:"submit","data-testid":"submit-allowlist-add",disabled:o,"aria-busy":o,style:{padding:"7px 16px",borderRadius:"6px",backgroundColor:"#047857",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:i.allowlistView.addEntry})]}),(0,e.jsx)("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:(0,e.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.common.id}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.target}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.type}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.description}),(0,e.jsx)("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:i.common.actions})]})}),(0,e.jsxs)("tbody",{children:[t.allowlist.map(p=>(0,e.jsxs)("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`allowlist-row-${p.type}-${p.id}`,"data-allowlist-type":p.type,children:[(0,e.jsx)("td",{style:{padding:"10px 14px",color:"#475569"},children:x(i.common.idTemplate,{id:p.id})}),(0,e.jsx)("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:p.type==="group"?(0,e.jsxs)("span",{"data-testid":`allowlist-group-${p.type}-${p.id}`,children:[p.groupName,(0,e.jsx)("span",{style:{marginLeft:"6px",fontFamily:"monospace",fontSize:"0.78rem",color:"#64748b"},children:p.groupKey})]}):(0,e.jsx)("span",{style:{fontFamily:"monospace"},children:p.pattern})}),(0,e.jsx)("td",{style:{padding:"10px 14px"},children:(0,e.jsx)("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",...At(p.type),fontWeight:600},children:St(p.type,i)})}),(0,e.jsxs)("td",{style:{padding:"10px 14px",color:"#475569"},children:[p.description||i.common.none,p.owner.kind==="deployment"&&(0,e.jsx)("span",{"data-testid":`allowlist-owner-${p.type}-${p.id}`,style:{marginLeft:"8px",fontSize:"0.72rem",color:"#475569"},children:i.allowlistView.deploymentOwner})]}),(0,e.jsx)("td",{style:{padding:"10px 14px",textAlign:"right"},children:p.readOnly?(0,e.jsx)("span",{"data-testid":`readonly-allowlist-${p.type}-${p.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:i.common.readOnly}):(0,e.jsx)("button",{type:"button",onClick:()=>{window.confirm(x(i.allowlistView.confirmDelete,{target:p.type==="group"?p.groupName:p.pattern}))&&(p.type==="group"?w(p.id):s(p.id))},disabled:o,"aria-busy":o,"aria-label":x(i.allowlistView.deleteAria,{target:p.type==="group"?p.groupName:p.pattern}),"data-testid":`remove-allowlist-btn-${p.type}-${p.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.78rem",cursor:"pointer"},children:i.common.delete})})]},`${p.type}-${p.id}`)),t.allowlist.length===0&&(0,e.jsx)("tr",{children:(0,e.jsx)("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:i.allowlistView.empty})})]})]})})]})}function Ne(){let t=(0,N.useLoaderData)(),r=(0,N.useFetcher)(),{submit:i,result:u}=oe(r),l=t.labels??j,o=l.directoryView,n=t.groups.filter(c=>!c.externalLink),[g,h]=(0,v.useState)(""),[C,k]=(0,v.useState)(""),[M,d]=(0,v.useState)(""),[s,w]=(0,v.useState)("direct"),p=t.groups.filter(c=>c.externalLink),y=new Set(t.allowlist.filter(c=>c.type==="group").map(c=>c.groupId)),S=c=>t.allowlist.find(L=>L.type==="group"&&L.groupId===c),f=r.state!=="idle",[b,G]=(0,v.useState)(null),U=Ge(u,l),V=b===null||(t.groups.find(D=>D.id===b.groupId)?.externalLink?.syncedAt??null)!==b.syncedAtAtPress?null:b.groupId,T=t.directoryStatus.isEnabled&&t.directoryStatus.provider!=="",O=(0,v.useMemo)(()=>Le(t.catalog,Re(p),l),[t.catalog,p,l]),A=(0,v.useMemo)(()=>O.filter(c=>c.disabled!==!0).length,[O]),P=c=>{if(c.preventDefault(),!(g&&C))return;let L=n.find(m=>String(m.id)===g);if(!window.confirm(x(o.confirmLink,{group:L?.name??g,upstream:C})))return;let D=C;i({intent:"linkDirectoryGroup",groupId:g,provider:t.directoryStatus.provider,externalKey:D,externalId:M,membershipMode:s},()=>{k(m=>m===D?"":m),d(m=>C===D?"":m),h("")})};return(0,e.jsxs)("section",{"data-testid":"directory-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[(0,e.jsx)("h2",{style:ie,children:o.title}),(0,e.jsx)(H,{result:u}),!T&&(0,e.jsx)("p",{"data-testid":"directory-not-wired",style:{margin:0,padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#f8fafc",color:"#475569",fontSize:"0.85rem"},children:o.notWiredNotice}),T&&t.groups.length===0&&(0,e.jsx)("p",{"data-testid":"directory-no-groups",style:{margin:0,padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#f8fafc",color:"#475569",fontSize:"0.85rem"},children:o.noGroupsToLink}),T&&t.groups.length>0&&n.length===0&&(0,e.jsx)("p",{"data-testid":"directory-nothing-to-link",style:{margin:0,padding:"0.7rem 1rem",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#f8fafc",color:"#475569",fontSize:"0.85rem"},children:o.nothingToLink}),(0,e.jsx)("p",{"data-testid":"directory-sync-already-pending",role:"status","aria-live":"polite",hidden:U===null,style:U===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:U}),T&&n.length>0&&(0,e.jsxs)("form",{onSubmit:P,"data-testid":"directory-link-form",style:{display:"flex",gap:"0.75rem",flexWrap:"wrap",alignItems:"flex-end",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[(0,e.jsx)("label",{htmlFor:"directory-group-select-input",style:ee,children:o.selectGroup}),(0,e.jsxs)("select",{id:"directory-group-select-input","data-testid":"directory-group-select",value:g,onChange:c=>h(c.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[(0,e.jsx)("option",{value:"",children:o.selectGroup}),n.map(c=>(0,e.jsx)("option",{value:String(c.id),children:x(o.groupOptionTemplate,{name:c.name,key:c.groupKey})},c.id))]})]}),(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem",flex:1,minWidth:"260px"},children:t.catalog.kind==="ready"&&t.catalog.groups.length>0?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{id:"directory-external-key-label",style:ee,children:o.externalKey}),(0,e.jsx)("div",{"data-testid":"directory-external-key-picker",onKeyDown:c=>{c.nativeEvent.isComposing||c.nativeEvent.keyCode===229||c.key==="Enter"&&c.preventDefault()},children:(0,e.jsx)(ge.SelectBox,{options:O,value:M===""?null:O.find(c=>c.value===M)??null,onChange:c=>{if(c===null){d(""),k("");return}d(c.value),k(c.entry.externalKey)},placeholder:o.pickUpstreamPlaceholder,ariaLabelledBy:"directory-external-key-label",renderOption:Te,locale:l.locale,labels:Ve(l),clearable:!0})}),A===0&&(0,e.jsx)("span",{"data-testid":"directory-all-upstream-linked",style:{fontSize:"0.72rem",color:"#92400e"},children:l.groupsView.allUpstreamLinked}),(0,e.jsx)(Me,{observedAt:t.catalog.observedAt,isStale:t.catalog.isStale,labels:l})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("label",{htmlFor:"directory-external-key-input",style:ee,children:o.externalKey}),(0,e.jsx)("input",{id:"directory-external-key-input",type:"email",required:!0,"data-testid":"directory-external-key",placeholder:o.externalKeyPlaceholder,value:C,onChange:c=>{d(""),k(c.target.value)},style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"}}),t.catalog.kind==="unavailable"&&(0,e.jsx)("span",{"data-testid":"directory-catalog-unavailable",style:{fontSize:"0.72rem",color:"#92400e"},children:x(l.groupsView.catalogUnavailable,{reason:l.groupsView.catalogFailures[t.catalog.reason]})}),t.catalog.kind==="ready"&&(0,e.jsx)("span",{"data-testid":"directory-catalog-empty",style:{fontSize:"0.72rem",color:"#475569"},children:x(l.groupsView.catalogEmpty,{at:J(t.catalog.observedAt,l)})})]})}),(0,e.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[(0,e.jsx)("label",{htmlFor:"directory-membership-mode-input",style:ee,children:o.membershipMode}),(0,e.jsxs)("select",{id:"directory-membership-mode-input","data-testid":"directory-membership-mode",value:s,onChange:c=>w(c.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[(0,e.jsx)("option",{value:"direct",children:o.directMode}),(0,e.jsx)("option",{value:"transitive",children:o.transitiveMode})]})]}),(0,e.jsx)("button",{type:"submit","data-testid":"directory-link-submit",disabled:!(g&&C)||f,"aria-busy":f,style:{padding:"0.5rem 1rem",borderRadius:"6px",border:"none",backgroundColor:g&&C&&!f?"#2563eb":"#94a3b8",color:"#fff",fontWeight:600},children:o.link})]}),p.length===0?(0,e.jsx)("div",{"data-testid":"directory-empty",style:{padding:"2rem",textAlign:"center",color:"#64748b",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:o.empty}):(0,e.jsxs)("table",{"data-testid":"directory-table",style:{width:"100%",borderCollapse:"collapse",backgroundColor:"#ffffff",borderRadius:"8px",overflow:"hidden",border:"1px solid #e2e8f0"},children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{style:{backgroundColor:"#f8fafc",textAlign:"left"},children:[(0,e.jsx)("th",{scope:"col",style:W,children:l.groupsView.name}),(0,e.jsx)("th",{scope:"col",style:W,children:o.externalKey}),(0,e.jsx)("th",{scope:"col",style:W,children:o.membershipMode}),(0,e.jsx)("th",{scope:"col",style:W,children:o.lastSynced}),(0,e.jsx)("th",{scope:"col",style:W,children:l.common.status}),(0,e.jsx)("th",{scope:"col",style:W,children:l.common.actions})]})}),(0,e.jsx)("tbody",{children:p.map(c=>{let L=c.externalLink,D=y.has(c.id);return(0,e.jsxs)("tr",{"data-testid":`directory-row-${c.id}`,"data-sync-enabled":String(L.isSyncEnabled),style:{borderTop:"1px solid #e2e8f0"},children:[(0,e.jsxs)("td",{style:W,children:[c.name,(0,e.jsx)("div",{style:{fontSize:"0.75rem",color:"#64748b"},children:c.groupKey})]}),(0,e.jsx)("td",{style:W,"data-testid":`directory-external-${c.id}`,children:L.externalKey}),(0,e.jsx)("td",{style:W,children:L.membershipMode==="direct"?o.directMode:o.transitiveMode}),(0,e.jsxs)("td",{style:W,"data-testid":`directory-synced-${c.id}`,children:[L.syncedAt?J(L.syncedAt,l):o.neverSynced,L.unresolvedCount>0?(0,e.jsx)("div",{style:{fontSize:"0.75rem",color:"#b45309"},"data-testid":`directory-unresolved-${c.id}`,children:x(o.unresolvedTemplate,{count:L.unresolvedCount})}):null]}),(0,e.jsxs)("td",{style:W,children:[(0,e.jsx)("span",{"data-testid":`directory-status-${c.id}`,style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:L.isSyncEnabled?"#dcfce7":"#fee2e2",color:L.isSyncEnabled?"#166534":"#b91c1c",fontWeight:600},children:L.isSyncEnabled?o.syncEnabled:o.syncPaused}),L.syncError?(0,e.jsx)("div",{style:{fontSize:"0.75rem",color:"#b91c1c",marginTop:"0.25rem"},"data-testid":`directory-error-${c.id}`,children:L.syncError}):null]}),(0,e.jsx)("td",{style:W,children:(0,e.jsxs)("div",{style:{display:"flex",gap:"0.35rem",flexWrap:"wrap"},children:[(0,e.jsx)("button",{type:"button","data-testid":`directory-sync-now-${c.id}`,...Y(f),"aria-label":x(V===c.id?o.syncQueuedAria:o.syncNowAria,{group:c.name}),onClick:()=>i({intent:"requestDirectorySync",groupId:String(c.id)},m=>{m?.syncRequest==="queued"&&G({groupId:c.id,syncedAtAtPress:c.externalLink?.syncedAt??null})}),style:de,children:V===c.id?o.syncQueued:o.syncNow}),(0,e.jsx)("button",{type:"button","data-testid":`directory-toggle-sync-${c.id}`,...Y(f),"aria-label":x(L.isSyncEnabled?o.pauseAria:o.resumeAria,{group:c.name}),onClick:()=>{G(null),i({intent:"setDirectorySyncEnabled",groupId:String(c.id),isSyncEnabled:String(!L.isSyncEnabled)})},style:de,children:L.isSyncEnabled?o.pause:o.resume}),(0,e.jsx)("button",{type:"button","data-testid":`directory-allow-${c.id}`,...Y(f),"aria-label":x(D?o.disallowGroupAria:o.allowGroupAria,{group:c.name}),onClick:()=>{let m=S(c.id);if(D&&m){if(!window.confirm(x(o.confirmDisallow,{group:c.name})))return;i({intent:"removeAllowlistGroup",entryId:String(m.id)})}else i({intent:"addAllowlistGroup",groupId:String(c.id)})},style:de,children:D?o.disallowGroup:o.allowGroup}),(0,e.jsx)("button",{type:"button","data-testid":`directory-unlink-${c.id}`,...Y(f),"aria-label":x(o.unlinkAria,{group:c.name}),onClick:()=>{window.confirm(x(o.confirmUnlink,{group:c.name,upstream:c.externalLink?.externalKey??""}))&&i({intent:"unlinkDirectoryGroup",groupId:String(c.id)})},style:{...de,color:"#b91c1c",borderColor:"#fecaca"},children:o.unlink})]})})]},c.id)})})]})]})}var ee={fontSize:"0.78rem",color:"#475569",fontWeight:600},Ce={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clipPath:"inset(50%)",whiteSpace:"nowrap",border:0},ie={margin:0,fontSize:"1.05rem",fontWeight:700,color:"#0f172a"},W={padding:"0.6rem 0.75rem",fontSize:"0.85rem",verticalAlign:"top"};function Y(t){return{"aria-disabled":t,"aria-busy":t,"data-busy":t?"true":void 0}}var de={padding:"0.25rem 0.6rem",fontSize:"0.75rem",borderRadius:"6px",border:"1px solid #cbd5e1",backgroundColor:"#fff",cursor:"pointer"},Ue={users:ye,groups:Pe,group_members:Ie,allowlist:De,directory:Ne};function Ct({renderHeader:t,pendingSyncPolling:r,basePath:i}){let l=(0,N.useLoaderData)()?.segment??"users",o=Object.hasOwn(Ue,l)?Ue[l]:ye;return(0,e.jsx)(me,{renderHeader:t,pendingSyncPolling:r,basePath:i,children:(0,e.jsx)(Ee.Provider,{value:i,children:(0,e.jsx)(o,{})})})}0&&(module.exports={AllowlistView,AuthUserAdminAppView,DEFAULT_PENDING_SYNC_POLLING,DirectoryView,GroupMembersView,GroupsView,UserAdminInputError,UserAdminOperatorError,UserAdminShell,UsersView,createInMemoryUserAdminStore,createUserAdminApp,defaultUserAdminLabels,jaUserAdminLabels,normalizeUpstreamKey,resolveUserAdminLabels,userAdminAccessFor,userAdminIntents});