@aiquants/auth-react-router 0.14.2 → 0.15.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.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var H={title:"Users & Groups",locale:"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.",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})"}},pt={title:"\u30E6\u30FC\u30B6\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406",locale:"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",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 fe(e){let o=H;return e?{title:e.title??o.title,locale:e.locale??o.locale,timeZone:e.timeZone??o.timeZone,heading:e.heading??o.heading,common:{...o.common,...e.common},errors:{...o.errors,...e.errors},permissions:{...o.permissions,...e.permissions},tabs:{...o.tabs,...e.tabs},usersView:{...o.usersView,...e.usersView},groupsView:{...o.groupsView,...e.groupsView},groupMembersView:{...o.groupMembersView,...e.groupMembersView},allowlistView:{...o.allowlistView,...e.allowlistView},directoryView:{...o.directoryView,...e.directoryView}}:o}import{data as le}from"react-router";function w(e,o){return e.replace(/\{(\w+)\}/g,(i,d)=>Object.hasOwn(o,d)?String(o[d]):i)}function J(e,o){let i=/(?:Z|[+-]\d{2}:?\d{2})$/.test(e)?e:`${e}Z`;try{return new Intl.DateTimeFormat(o.locale,{timeZone:o.timeZone,dateStyle:"medium",timeStyle:"short"}).format(new Date(i))}catch{return e}}function ft(e){let o=e?.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=e?.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}],d=e?.groupMembers??[{id:1,groupId:1,userId:2},{id:2,groupId:2,userId:3}],s=e?.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[...o]},async createUser(t){let b={id:Math.max(...o.map(y=>y.id),0)+1,email:t.email,displayName:t.displayName,isActive:!0};return o.push(b),b},async updateUser(t,b){let y=o.findIndex(v=>v.id===t);if(y===-1)throw new B(`User not found: ${t}`);return o[y]={...o[y],displayName:b.displayName,email:b.email},o[y]},async toggleUserActive(t,b){let y=o.findIndex(v=>v.id===t);if(y===-1)throw new B(`User not found: ${t}`);return o[y]={...o[y],isActive:b},o[y]},async listGroups(){return[...i]},async createGroup(t){let b={id:Math.max(...i.map(y=>y.id),0)+1,groupKey:t.groupKey,name:t.name,description:t.description,isActive:!0,readOnly:!1};return i.push(b),b},async updateGroup(t,b){let y=i.findIndex(v=>v.id===t);if(y===-1)throw new B(`Group not found: ${t}`);return i[y]={...i[y],name:b.name,description:b.description},i[y]},async deleteGroup(t){i=i.filter(b=>b.id!==t),d=d.filter(b=>b.groupId!==t)},async listGroupMembers(){return[...d]},async addGroupMember(t,b){let y=d.find(S=>S.groupId===t&&S.userId===b);if(y)return y;let v={id:Math.max(...d.map(S=>S.id),0)+1,groupId:t,userId:b};return d.push(v),v},async removeGroupMember(t,b){d=d.filter(y=>!(y.groupId===t&&y.userId===b))},async listAllowlist(){return[...s]},async addAllowlistEntry(t){let b={id:Math.max(...s.map(y=>y.id),0)+1,pattern:t.pattern,type:t.type,description:t.description,owner:{kind:"tenant",tenantId:"default"},readOnly:!1};return s.push(b),b},async removeAllowlistEntry(t){s=s.filter(b=>b.id!==t)},async addAllowlistGroup(t,b){let y=i.find(v=>v.id===t);if(!y)throw new B(`Group not found: ${t}`);s=[...s,{id:Math.max(...s.map(v=>v.id),0)+1,type:"group",groupId:t,groupKey:y.groupKey,groupName:y.name,description:b,owner:{kind:"tenant",tenantId:"default"},readOnly:!1}]},async removeAllowlistGroup(t){s=s.filter(b=>!(b.type==="group"&&b.id===t))},async linkDirectoryGroup(){throw new B("This in-memory store has no upstream directory; inject a real store to link groups.")},async createLinkedGroup(){throw new B("This in-memory store has no upstream directory; inject a real store to create a linked group.")},async unlinkDirectoryGroup(){throw new B("This in-memory store has no upstream directory; inject a real store to unlink groups.")},async setDirectorySyncEnabled(){throw new B("This in-memory store has no upstream directory; inject a real store to pause synchronization.")},async requestDirectorySync(){throw new B("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 Oe(e,o){let i=Number.isFinite(o)&&o>0?o:Ke;return(Date.now()-e.getTime())/1e3>i}var qe=64*1024,Ke=5400;async function he(e,o,i,d){if(!e)return{kind:"not-wired"};if(!o)return{kind:"not-wired"};try{let{groups:s,observedAt:t}=await e.listGroups(i);return t===null||!Number.isFinite(t.getTime())?{kind:"unavailable",reason:"neverObserved"}:{kind:"ready",groups:s,observedAt:t.toISOString(),isStale:Oe(t,d)}}catch(s){return console.error("[@aiquants/auth-react-router] directoryCatalog.listGroups failed; the picker falls back to manual entry:",s),{kind:"unavailable",reason:Qe(s)}}}function z(e){return e.trim().toLowerCase()}var B=class extends Error{constructor(i){super(i);this.operatorFacing=!0;this.name="UserAdminOperatorError"}};function Be(e){return e instanceof B||typeof e=="object"&&e!==null&&e.operatorFacing===!0&&e instanceof Error}var $=class extends Error{constructor(i,d={}){super(i);this.labelKey=i;this.values=d;this.name="UserAdminInputError"}};function $e(e){return typeof e=="object"&&e!==null&&e.status===403}function We(e){let o=String(e.get("type")??"");if(o==="email"||o==="domain")return o;throw new $("invalidAllowlistType")}var je=["users","groups","group_members","allowlist","directory"];function He(e){let o=e.replace(/\.data$/,"").split("/").filter(Boolean),i=o[o.length-1]??"";return je.includes(i)?i:"users"}var de=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 ht(){return[...de.keys()]}function xt(e){return de.get(e)??[]}function Qe(e){let o=typeof e=="object"&&e!==null&&"status"in e?e.status:void 0;return typeof o!="number"?"unknown":o===401||o===403?"denied":o===429?"rateLimited":o>=500?"upstreamError":"unknown"}function P(e,o){let i=e.get(o),d=Number(i);if(i===null||String(i).trim()===""||!Number.isInteger(d)||d<=0)throw new $("invalidField",{field:o});return d}function K(e,o){let i=String(e.get(o)??"").trim();if(i==="")throw new $("invalidField",{field:o});return i}function _e(e,o){let i=String(e.get(o)??"");if(i!=="true"&&i!=="false")throw new $("invalidField",{field:o});return i==="true"}function xe(e){let o=String(e.get("membershipMode")??"");if(o!=="direct"&&o!=="transitive")throw new $("invalidField",{field:"membershipMode"});return o}function ie(e,o){let i=String(e.get(o)??"").trim();return i===""?void 0:i}function wt(e){let o=fe(e.labels);async function i(g){if(!e.resolveActor)return"user-admin";try{return await e.resolveActor(g)||"user-admin"}catch(n){return console.error("[@aiquants/auth-react-router] resolveActor failed; recording the request as an unnamed actor:",n),"user-admin"}}async function d(g){if(!e.directoryCatalog)return!1;let n=de.get("catalog");if(n===void 0||n.length===0)return!1;try{for(let A of n)await e.guards.requireAccess(g,{action:A,intent:"catalog"});return!0}catch(A){try{e.guards.onDenied?.({intent:"catalog",actions:n,error:A})}catch(m){console.error("[@aiquants/auth-react-router] onDenied threw; the denial itself still stands:",m)}return!1}}async function s({request:g}){await e.guards.requireAccess(g,{action:"read",intent:"loader"});let n=He(new URL(g.url).pathname),A=(n==="groups"||n==="directory")&&await d(g),[m,l,U,k,x,M]=await Promise.all([e.store.listUsers(),e.store.listGroups(),e.store.listGroupMembers(),e.store.listAllowlist(),e.store.getDirectoryStatus(),e.getMyPermissions?e.getMyPermissions(g).catch(C=>(console.error("[@aiquants/auth-react-router] getMyPermissions failed; rendering the permission badge as unknown:",C),null)):Promise.resolve(null)]),R=await he(e.directoryCatalog,A,g,x.stalenessThresholdSec);return{resourceLabels:e.resourceLabels,segment:n,users:m,groups:l,groupMembers:U,allowlist:k,directoryStatus:x,myPermissions:M,catalog:R,labels:o}}async function t({request:g}){let n=Number(g.headers.get("content-length")??Number.NaN);if(Number.isFinite(n)&&n>qe)return le({ok:!1,error:o.errors.requestTooLarge},{status:413});let A=await g.formData(),m=String(A.get("intent")??""),l=de.get(m);if(!l)return le({ok:!1,error:o.errors.unknownIntent},{status:400});let U=x=>$e(x),k=x=>{try{e.guards.onDenied?.({intent:m,actions:l,error:x})}catch{}return le({ok:!1,error:o.errors.forbidden},{status:403})};try{for(let x of l)await e.guards.requireAccess(g,{action:x,intent:m})}catch(x){if(!U(x))throw x;return k(x)}try{return await h(m,A,g)}catch(x){if(U(x))return k(x);if(x instanceof Response)throw x;if(x instanceof $){let M=x.values.field,R=typeof M=="string"?{...x.values,field:o.errors.fieldNames[M]??M}:x.values,C=o.errors[x.labelKey];return{ok:!1,error:w(typeof C=="string"?C:String(x.labelKey),R)}}return console.error(`[@aiquants/auth-react-router] intent "${m}" failed:`,x),{ok:!1,error:Be(x)?x.message:o.errors.unexpected}}}function b(g,n,A){let m=String(g.get("externalId")??"").trim();if(A.kind==="ready"){if(m!==""&&A.groups.some(k=>k.externalId===m))return m;let l=z(n),U=A.groups.find(k=>z(k.externalKey)===l);if(U)return U.externalId}return m===""?n:m}function y(g){let n=g.provider.trim();if(!g.isEnabled||n==="")throw new $("directoryDisabled");return n}async function v(g,n){let A=z(g),m=z(n),U=(await e.store.listGroups()).find(k=>k.externalLink!==void 0&&(z(k.externalLink.externalId)===A||z(k.externalLink.externalKey)===m));if(U)throw new $("alreadyLinked",{key:n,group:U.name})}function S(g,n,A){if(A.kind!=="ready")return;let m=z(g),l=z(n);if(!A.groups.some(U=>z(U.externalId)===m&&z(U.externalKey)===l))throw new $("unknownUpstream",{key:n})}async function h(g,n,A){let m=null,l=async()=>(m??(m=await e.store.getDirectoryStatus()),m),U=async()=>he(e.directoryCatalog,!0,A,(await l()).stalenessThresholdSec);if(g==="createUser")return await e.store.createUser({displayName:K(n,"displayName"),email:K(n,"email")}),{ok:!0};if(g==="updateUser")return await e.store.updateUser(P(n,"userId"),{displayName:K(n,"displayName"),email:K(n,"email")}),{ok:!0};if(g==="toggleUserActive"){let k=String(n.get("isActive")??"");if(k!=="true"&&k!=="false")throw new $("invalidField",{field:"isActive"});return await e.store.toggleUserActive(P(n,"userId"),k==="true"),{ok:!0}}if(g==="createGroup")return await e.store.createGroup({groupKey:K(n,"groupKey"),name:K(n,"name"),description:ie(n,"description")}),{ok:!0};if(g==="updateGroup")return await e.store.updateGroup(P(n,"groupId"),{name:K(n,"name"),description:ie(n,"description")}),{ok:!0};if(g==="deleteGroup")return await e.store.deleteGroup(P(n,"groupId")),{ok:!0};if(g==="addGroupMember")return await e.store.addGroupMember(P(n,"groupId"),P(n,"userId")),{ok:!0};if(g==="removeGroupMember")return await e.store.removeGroupMember(P(n,"groupId"),P(n,"userId")),{ok:!0};if(g==="addAllowlistEntry"){let k=We(n);return await e.store.addAllowlistEntry({pattern:K(n,"pattern"),type:k,description:ie(n,"description")}),{ok:!0}}if(g==="addAllowlistGroup")return await e.store.addAllowlistGroup(P(n,"groupId"),ie(n,"description")),{ok:!0};if(g==="removeAllowlistGroup")return await e.store.removeAllowlistGroup(P(n,"entryId")),{ok:!0};if(g==="createLinkedGroup"){let k=K(n,"externalKey"),x=y(await l()),M=await U(),R=b(n,k,M);return await v(R,k),S(R,k,M),await e.store.createLinkedGroup({groupKey:K(n,"groupKey"),name:K(n,"name"),description:ie(n,"description"),provider:x,externalId:R,externalKey:k,membershipMode:xe(n)}),{ok:!0}}if(g==="linkDirectoryGroup"){let k=K(n,"externalKey"),x=y(await l()),M=await U(),R=b(n,k,M);return await v(R,k),S(R,k,M),await e.store.linkDirectoryGroup(P(n,"groupId"),{provider:x,externalId:R,externalKey:k,membershipMode:xe(n)}),{ok:!0}}if(g==="unlinkDirectoryGroup")return await e.store.unlinkDirectoryGroup(P(n,"groupId")),{ok:!0};if(g==="setDirectorySyncEnabled")return await e.store.setDirectorySyncEnabled(P(n,"groupId"),_e(n,"isSyncEnabled")),{ok:!0};if(g==="requestDirectorySync"){let k=String(n.get("groupId")??"").trim();return{ok:!0,syncRequest:await e.store.requestDirectorySync(k===""?null:P(n,"groupId"),await i(A))}}return g==="removeAllowlistEntry"?(await e.store.removeAllowlistEntry(P(n,"entryId")),{ok:!0}):(console.error(`[@aiquants/auth-react-router] intent "${g}" is in the permission table but has no handler`),le({ok:!1,error:o.errors.unknownIntent},{status:400}))}return{loader:s,action:t}}import{Link as Ze,useLoaderData as Ye}from"react-router";import{jsx as N,jsxs as X}from"react/jsx-runtime";function we({label:e,summary:o}){return X("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem",fontSize:"0.65rem",padding:"0.08rem 0.35rem",borderRadius:"9999px",backgroundColor:o.bgColor,color:o.color,border:`1px solid ${o.borderColor}`,fontWeight:600,lineHeight:"1.2"},children:[X("span",{children:[e,":"]}),N("span",{children:o.text})]})}function Je({status:e,labels:o,groups:i}){if(!e||e.linkedGroupCount===0)return null;let d=o.directoryView,s=[];if(e.isEnabled||s.push({id:"disabled",text:d.disabledWarning}),e.pausedGroupCount>0&&s.push({id:"paused",text:w(d.pausedTemplate,{paused:e.pausedGroupCount,total:e.linkedGroupCount})}),e.isStale){let t=e.oldestSyncedAt?J(e.oldestSyncedAt,o):d.neverSynced;s.push({id:"stale",text:`${d.staleWarning} ${w(d.oldestSyncedTemplate,{at:t})}`})}if(e.erroredGroupIds.length>0){let t=e.erroredGroupIds.map(b=>{let y=i.find(S=>S.id===b);if(!y)return w(o.common.idTemplate,{id:b});let v=y.externalLink?.syncError;return v?w(d.erroredItemTemplate,{group:y.name,reason:v}):y.name});s.push({id:"errored",text:w(d.erroredTemplate,{groups:t.join(d.listSeparator)})})}return e.pendingRequestCount>0&&s.push({id:"pending",text:w(d.pendingTemplate,{count:e.pendingRequestCount})}),s.length===0?null:X("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:[N("h2",{id:"directory-sync-heading",style:{margin:0,fontSize:"0.9rem",fontWeight:700},children:d.title}),s.map(t=>N("span",{"data-directory-warning":t.id,children:t.text},t.id))]})}function ve({children:e,renderHeader:o}){let i=Ye(),d=i?.segment??"users",s=i?.labels??H,t=i?.myPermissions??null,b=i?.resourceLabels??{},y=m=>Object.hasOwn(b,m)?b[m]:m,v=[{key:"users",label:s.tabs.users,href:"/users"},{key:"groups",label:s.tabs.groups,href:"/users/groups"},{key:"group_members",label:s.tabs.groupMembers,href:"/users/group_members"},{key:"allowlist",label:s.tabs.allowlist,href:"/users/allowlist"}],S=(i?.groups??[]).some(m=>m.externalLink);(i?.directoryStatus?.isEnabled||(i?.directoryStatus?.linkedGroupCount??0)>0||S)&&v.push({key:"directory",label:s.tabs.directory,href:"/users/directory"});let h=Object.entries(t??{}),g={text:s.permissions.unknown,color:"#92400e",bgColor:"#fffbeb",borderColor:"#fde68a"},n=m=>m===void 0?g:m.canWrite?{text:s.permissions.canWrite,color:"#047857",bgColor:"#ecfdf5",borderColor:"#a7f3d0"}:m.canRead?{text:s.permissions.canRead,color:"#1d4ed8",bgColor:"#eff6ff",borderColor:"#bfdbfe"}:m.canDelete?{text:s.permissions.canDelete,color:"#b91c1c",bgColor:"#fef2f2",borderColor:"#fecaca"}:{text:s.permissions.none,color:"#475569",bgColor:"#f1f5f9",borderColor:"#cbd5e1"},A=X("div",{style:{display:"flex",alignItems:"center",gap:"0.4rem"},"data-testid":"user-admin-header-annotation",children:[N("span",{style:{fontSize:"0.75rem",backgroundColor:"#e0f2fe",color:"#0369a1",padding:"2px 8px",borderRadius:"12px",fontWeight:600},children:s.heading}),X("div",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem",fontSize:"0.68rem",color:"#475569"},"data-testid":"user-admin-permissions-badge",children:[N("span",{style:{fontWeight:600,color:"#334155"},children:s.permissions.label}),N("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem"},children:h.length===0?N("span",{"data-testid":"user-admin-permission-unavailable",children:N(we,{label:s.heading,summary:g})}):h.map(([m,l])=>N(we,{label:y(m),summary:n(l)},m))})]})]});return X("div",{"data-testid":"user-admin-shell",style:{width:"100%",minHeight:"100vh",backgroundColor:"#f8fafc",padding:"1.5rem",boxSizing:"border-box"},children:[o?o({title:s.title,annotation:A}):X("div",{style:{marginBottom:"1.5rem",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[N("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:700,color:"#0f172a"},children:s.title}),A]}),N("nav",{"aria-label":s.title,style:{display:"flex",gap:"0.5rem",marginBottom:"1.2rem",borderBottom:"2px solid #e2e8f0",paddingBottom:"0.5rem"},children:v.map(m=>{let l=d===m.key;return N(Ze,{to:m.href,"data-testid":`user-admin-tab-${m.key}`,"aria-current":l?"page":void 0,style:{padding:"0.5rem 1rem",borderRadius:"6px 6px 0 0",fontSize:"0.88rem",fontWeight:l?700:500,color:l?"#0284c7":"#64748b",backgroundColor:l?"#ffffff":"transparent",textDecoration:"none",borderBottom:l?"3px solid #0284c7":"3px solid transparent",transition:"all 0.15s ease"},children:m.label},m.key)})}),N(Je,{status:i?.directoryStatus,labels:s,groups:i?.groups??[]}),N("main",{children:e})]})}import{getHighlightSegments as Xe,SelectBox as Se}from"@aiquants/select-box";import{useEffect as Ce,useMemo as te,useRef as ee,useState as T}from"react";import{Link as et,useFetcher as ne,useLoaderData as oe,useSearchParams as tt}from"react-router";import{Fragment as me,jsx as r,jsxs as p}from"react/jsx-runtime";function Q({result:e,id:o}){let i=e;return i?.ok!==!1||!i.error?null:r("div",{id:o,"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 ae(e){let o=ee(null),[i,d]=T(void 0),s=e.data===i?void 0:e.data;return Ce(()=>{if(e.state!=="idle"||e.data===void 0)return;let y=o.current;y&&(o.current=null,e.data.ok===!0&&y(e.data))},[e.state,e.data]),{submit:(y,v)=>{o.current=v??null,d(void 0),e.submit(y,{method:"post"})},resetResult:()=>d(e.data),result:s}}function pe(e,o,i){let d=ee(null),s=ee(o);return s.current=o,Ce(()=>{if(!e)return;let t=d.current,b=i?.current??document.activeElement,y=()=>{let h=Array.from(t?.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])')??[]).filter(n=>!(n.disabled||n.hasAttribute("inert"))&&n.closest("[inert]")===null&&n.getAttribute("aria-hidden")!=="true"),g=new Set;return h.filter(n=>{let A=n instanceof HTMLInputElement&&n.type==="radio"?n:null;return!A||A.name===""?!0:!A.checked&&h.some(m=>m instanceof HTMLInputElement&&m.type==="radio"&&m.name===A.name&&m.checked)||g.has(A.name)?!1:(g.add(A.name),!0)})},v=y();(v.find(h=>!h.hasAttribute("data-aqar-visually-hidden"))??v[0])?.focus();let S=h=>{if(h.key==="Escape"){if(h.isComposing||h.keyCode===229||h.defaultPrevented)return;h.preventDefault(),s.current();return}if(h.key!=="Tab")return;let g=y();if(g.length===0)return;let n=g[0],A=g[g.length-1],m=document.activeElement,l=!t?.contains(m);h.shiftKey&&(m===n||l)?(h.preventDefault(),A.focus()):!h.shiftKey&&(m===A||l)&&(h.preventDefault(),n.focus())};return document.addEventListener("keydown",S),()=>{document.removeEventListener("keydown",S),b?.focus?.()}},[e,i]),d}function Ue(e,o,i){return e.kind!=="ready"?[]:e.groups.map(d=>{let s=o.get(z(d.externalId))??o.get(z(d.externalKey)),t=s!==void 0,b=d.memberCount===void 0?"":w(i.groupsView.upstreamOptionMembers,{count:d.memberCount});return{label:w(i.directoryView.groupOptionTemplate,{name:d.name,key:d.externalKey}),value:d.externalId,note:t?w(i.groupsView.upstreamAlreadyLinked,{group:s}):b,...t?{disabled:!0}:{},entry:d}})}function Me({observedAt:e,isStale:o,labels:i}){return r("p",{"data-testid":"catalog-freshness","data-stale":o?"":void 0,style:{margin:"0.35rem 0 0 0",fontSize:"0.72rem",color:o?"#92400e":"#64748b"},children:w(o?i.groupsView.catalogStale:i.groupsView.catalogObservedAt,{at:J(e,i)})})}function ce(e){return typeof e=="object"&&e!==null&&e.ok===!1&&typeof e.error=="string"}var rt={exact:{backgroundColor:"#d1fae5",color:"#064e3b",borderRadius:"2px",fontWeight:600},fuzzy:{backgroundColor:"#fef3c7",color:"#78350f",borderRadius:"2px",fontWeight:600}};function Ge(e){let o=new Map;for(let i of e){let d=i.externalLink;d&&(o.set(z(d.externalId),i.name),o.set(z(d.externalKey),i.name))}return o}function Re(e,o){let i=typeof e.note=="string"?e.note:"";return p("span",{"data-aqar-upstream-option":!0,title:i===""?e.label:`${e.label} \u2014 ${i}`,style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"0.75rem",width:"100%",minWidth:0},children:[r("span",{"data-aqar-upstream-option-label":!0,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Xe(e.label,o.query).map((d,s)=>r("span",{"data-aqar-match":d.matchType==="none"?void 0:d.matchType,style:d.matchType==="none"?void 0:rt[d.matchType],children:d.text},s))}),i===""?null:r("span",{"data-aqar-upstream-option-note":!0,style:{flexShrink:0,fontSize:"0.72rem",opacity:.75},children:i})]})}function Le(e){let o=e.directoryView;return{noOptions:o.pickerNoOptions,clear:o.pickerClear,toggle:o.pickerToggle,selection:i=>w(o.pickerSelected,{value:i.map(d=>d.label).join(", ")}),status:i=>w(o.pickerAvailable,{count:i.count})}}function ot(e){try{return new Intl.Collator(e).compare}catch{return new Intl.Collator().compare}}function it(e){return(e.split("@")[0]??e).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function Te(){let e=oe(),o=ne(),{submit:i,resetResult:d,result:s}=ae(o),t=e.labels??H,[b,y]=T(""),[v,S]=T(null),h=v?.kind==="edit"?v.user:null,g=v?.kind==="create",n=ee(null),A=(c,I)=>{n.current=I.currentTarget,d(),c.kind==="create"&&(l(""),k("")),S(c)},[m,l]=T(""),[U,k]=T(""),x=pe(g,()=>S(null),n),M=pe(h!==null,()=>S(null),n),R=o.state!=="idle",[C,q]=T({column:"displayName",ascending:!0}),F=ot(t.locale),O=b.trim().toLowerCase(),f=e.users.filter(c=>c.displayName.toLowerCase().includes(O)||c.email.toLowerCase().includes(O)).slice().sort((c,I)=>{let j=C.ascending?1:-1;return C.column==="id"?(c.id-I.id)*j:C.column==="isActive"?(Number(c.isActive)-Number(I.isActive))*j:F(c[C.column],I[C.column])*j}),V=c=>{q(I=>I.column===c?{column:c,ascending:!I.ascending}:{column:c,ascending:!0})},u=c=>{R||c.isActive&&!window.confirm(w(t.usersView.confirmDeactivate,{user:c.displayName}))||i({intent:"toggleUserActive",userId:String(c.id),isActive:String(!c.isActive)})},G=c=>{if(c.preventDefault(),!(m&&U))return;let I=m,j=U;i({intent:"createUser",displayName:I,email:j},()=>{l(Y=>Y===I?"":Y),k(Y=>Y===j?"":Y),S(null)})},E=c=>{c.preventDefault(),h&&i({intent:"updateUser",userId:String(h.id),displayName:h.displayName,email:h.email},()=>S(null))};return p("section",{"data-testid":"users-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[r("h2",{style:se,children:t.usersView.title}),!v&&r(Q,{result:s}),p("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[r("input",{type:"text","aria-label":t.usersView.searchLabel,placeholder:t.usersView.searchPlaceholder,value:b,onChange:c=>y(c.target.value),"data-testid":"users-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),r("button",{type:"button",onClick:c=>A({kind:"create"},c),"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:t.usersView.addUser})]}),r("p",{"data-testid":"users-summary",role:"status","aria-live":"polite",style:{margin:0,fontSize:"0.78rem",color:"#475569"},children:w(t.usersView.listSummary,{shown:f.length,total:e.users.length})}),r("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:p("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[r("thead",{children:p("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[[["id",t.common.id],["displayName",t.usersView.displayName],["email",t.usersView.email],["isActive",t.common.status]].map(([c,I])=>r("th",{scope:"col",style:{padding:0},"aria-sort":C.column===c?C.ascending?"ascending":"descending":"none",children:p("button",{type:"button","data-testid":`users-sort-${c}`,onClick:()=>V(c),"aria-label":w(C.column===c?C.ascending?t.usersView.sortedAscending:t.usersView.sortedDescending:t.usersView.sortBy,{column:I}),style:{width:"100%",padding:"10px 14px",textAlign:"left",background:"transparent",border:"none",cursor:"pointer",font:"inherit",color:"inherit",fontWeight:C.column===c?700:500},children:[I,r("span",{"aria-hidden":"true",style:{marginLeft:"4px",opacity:C.column===c?1:.35},children:C.column===c?C.ascending?"\u25B2":"\u25BC":"\u21C5"})]})},c)),r("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:t.common.actions})]})}),p("tbody",{children:[f.map(c=>p("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`user-row-${c.id}`,children:[r("td",{style:{padding:"10px 14px",color:"#475569"},children:w(t.common.idTemplate,{id:c.id})}),r("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:c.displayName}),r("td",{style:{padding:"10px 14px",color:"#475569"},children:c.email}),r("td",{style:{padding:"10px 14px"},children:r("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:c.isActive?"#dcfce7":"#fee2e2",color:c.isActive?"#15803d":"#b91c1c",fontWeight:600},children:c.isActive?t.usersView.active:t.usersView.inactive})}),p("td",{style:{padding:"10px 14px",textAlign:"right"},children:[r("button",{type:"button",onClick:I=>A({kind:"edit",user:c},I),"aria-label":w(t.usersView.editUserAria,{user:c.displayName}),"data-testid":`edit-user-btn-${c.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:"pointer",marginRight:"6px"},children:t.common.edit}),r("button",{type:"button",onClick:()=>u(c),...Z(R),"aria-label":w(c.isActive?t.usersView.deactivateAria:t.usersView.activateAria,{user:c.displayName}),"data-testid":`toggle-user-btn-${c.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:R?"default":"pointer",color:c.isActive?"#b91c1c":"#15803d"},children:c.isActive?t.usersView.deactivate:t.usersView.activate})]})]},c.id)),f.length===0&&r("tr",{children:r("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:O===""?t.usersView.empty:t.usersView.emptyFiltered})})]})]})}),g&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:p("form",{ref:x,onSubmit:G,role:"dialog","aria-modal":"true","aria-labelledby":"create-user-title",...ce(s)?{"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:[r("h3",{id:"create-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.usersView.addUser}),r(Q,{result:s,id:"create-user-error"}),p("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"create-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.displayName}),r("input",{id:"create-user-display-name-input",type:"text",value:m,onChange:c=>l(c.target.value),required:!0,"data-testid":"create-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),p("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"create-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.email}),r("input",{id:"create-user-email-input",type:"email",value:U,onChange:c=>k(c.target.value),required:!0,"data-testid":"create-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),p("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>S(null),"data-testid":"cancel-create-user",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-create-user",disabled:R,"aria-busy":R,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:t.common.create})]})]})}),h&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:p("form",{ref:M,onSubmit:E,role:"dialog","aria-modal":"true","aria-labelledby":"edit-user-title",...ce(s)?{"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:[r("h3",{id:"edit-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.usersView.editUser}),r(Q,{result:s,id:"edit-user-error"}),p("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"edit-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.displayName}),r("input",{id:"edit-user-display-name-input",type:"text",value:h.displayName,onChange:c=>S({kind:"edit",user:{...h,displayName:c.target.value}}),required:!0,"data-testid":"edit-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),p("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"edit-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.email}),r("input",{id:"edit-user-email-input",type:"email",value:h.email,onChange:c=>S({kind:"edit",user:{...h,email:c.target.value}}),required:!0,"data-testid":"edit-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),p("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>S(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-edit-user",disabled:R,"aria-busy":R,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:t.common.save})]})]})})]})}function nt(){let e=oe(),o=ne(),{submit:i,resetResult:d,result:s}=ae(o),t=e.labels??H,[b,y]=T(""),[v,S]=T(null),h=v?.kind==="edit"?v.group:null,g=v?.kind==="create",n=ee(null),A=(a,L)=>{n.current=L.currentTarget,d(),a.kind==="create"&&Ie(),S(a)},m=o.state!=="idle",[l,U]=T(""),[k,x]=T(""),[M,R]=T(""),[C,q]=T("local"),[F,O]=T(null),[f,V]=T(null),[u,G]=T("direct"),E=ee(null),c=te(()=>{let a=new Map;for(let L of e.groupMembers)a.set(L.groupId,(a.get(L.groupId)??0)+1);return a},[e.groupMembers]),I=te(()=>Ge(e.groups),[e.groups]),j=te(()=>Ue(e.catalog,I,t),[e.catalog,I,t]),Y=te(()=>j.filter(a=>a.disabled!==!0).length,[j]),ge=e.catalog.kind==="ready"&&e.catalog.groups.length>0&&e.directoryStatus.provider!=="",Ve=pe(g,()=>S(null),n),Ee=pe(h!==null,()=>S(null),n),ye=b.trim().toLowerCase(),be=e.groups.filter(a=>a.name.toLowerCase().includes(ye)||a.groupKey.toLowerCase().includes(ye)),Ie=()=>{U(""),x(""),R(""),q("local"),V(null),G("direct"),E.current=null},De=a=>{if(a.preventDefault(),!(l&&k)||C==="upstream"&&f===null||C==="upstream"&&f!==null&&!window.confirm(w(t.groupsView.confirmCreateLinked,{group:k,upstream:f.externalKey})))return;let L={key:l,name:k,description:M},D=()=>{U(_=>_===L.key?"":_),x(_=>_===L.name?"":_),R(_=>_===L.description?"":_),V(null),S(null)};if(C==="upstream"&&f!==null){i({intent:"createLinkedGroup",groupKey:L.key,name:L.name,description:L.description,provider:e.directoryStatus.provider,externalKey:f.externalKey,membershipMode:u},D);return}i({intent:"createGroup",groupKey:L.key,name:L.name,description:L.description},D)},Pe=a=>{if(V(a),!a)return;let L={key:it(a.externalKey),name:a.name,description:a.description??""};x(L.name),U(L.key),R(L.description),E.current=L},ze=a=>{if(q(a),a==="upstream")return;V(null);let L=E.current;L&&(U(D=>D===L.key?"":D),x(D=>D===L.name?"":D),R(D=>D===L.description?"":D),E.current=null)},Ne=a=>{a.preventDefault(),h&&i({intent:"updateGroup",groupId:String(h.id),name:h.name,description:h.description??""},()=>S(null))},Fe=a=>{if(m)return;let L=e.groupMembers.filter(D=>D.groupId===a.id).length;window.confirm(w(t.groupsView.confirmDelete,{group:a.name,count:L}))&&i({intent:"deleteGroup",groupId:String(a.id)})};return p("section",{"data-testid":"groups-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[r("h2",{style:se,children:t.groupsView.title}),!v&&r(Q,{result:s}),p("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[r("input",{type:"text","aria-label":t.groupsView.searchLabel,placeholder:t.groupsView.searchPlaceholder,value:b,onChange:a=>y(a.target.value),"data-testid":"groups-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),r("button",{type:"button",onClick:a=>A({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:t.groupsView.addGroup})]}),r("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:"1rem"},children:be.map(a=>{let L=c.get(a.id)??0;return p("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:[p("div",{children:[p("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[r("h3",{style:{margin:0,fontSize:"1rem",color:"#0f172a"},children:a.name}),r("span",{style:{fontSize:"0.72rem",backgroundColor:"#e0e7ff",color:"#4338ca",padding:"2px 6px",borderRadius:"4px",fontFamily:"monospace"},children:a.groupKey})]}),r("p",{style:{margin:"0 0 0.8rem 0",fontSize:"0.82rem",color:"#64748b",minHeight:"2.4em"},children:a.description||t.groupsView.noDescription}),a.externalLink&&p("div",{"data-testid":`group-source-${a.id}`,style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap",marginBottom:"0.6rem"},children:[r("span",{style:{fontSize:"0.72rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:"#ede9fe",color:"#6d28d9",fontWeight:600},children:t.common.managedUpstream}),r("span",{style:{fontSize:"0.72rem",fontFamily:"monospace",color:"#64748b"},children:a.externalLink.externalKey}),a.externalLink.unresolvedCount>0&&r("span",{"data-testid":`group-unresolved-${a.id}`,style:{fontSize:"0.72rem",color:"#b45309"},children:w(t.directoryView.unresolvedTemplate,{count:a.externalLink.unresolvedCount})})]})]}),p("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",borderTop:"1px solid #f1f5f9",paddingTop:"0.6rem"},children:[r(et,{to:`/users/group_members?group=${a.id}`,"data-testid":`group-open-members-${a.id}`,"aria-label":w(t.groupsView.openMembersAria,{group:a.name}),style:{fontSize:"0.78rem",color:"#1d4ed8",textDecoration:"none"},children:w(t.groupsView.memberCountTemplate,{count:L})}),a.readOnly?r("span",{"data-testid":`readonly-group-${a.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:t.common.readOnly}):p("div",{children:[r("button",{type:"button",onClick:D=>A({kind:"edit",group:a},D),...Z(m),"aria-label":w(t.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:t.common.edit}),r("button",{type:"button",onClick:()=>Fe(a),...Z(m),"aria-label":w(t.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:t.common.delete})]})]})]},a.id)})}),be.length===0&&r("div",{"data-testid":"groups-empty",style:{padding:"2rem",textAlign:"center",color:"#475569",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:e.groups.length===0?t.groupsView.empty:t.groupsView.emptyFiltered}),g&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:p("form",{ref:Ve,onSubmit:De,role:"dialog","aria-modal":"true","aria-labelledby":"create-group-title",...ce(s)?{"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:[r("h3",{id:"create-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.groupsView.addGroup}),r(Q,{result:s,id:"create-group-error"}),ge&&p("fieldset",{"data-testid":"create-group-mode",style:{display:"flex",gap:"0.25rem",marginBottom:"1rem",border:"none",padding:0,margin:"0 0 1rem 0"},children:[r("legend",{style:ke,children:t.groupsView.createModeLabel}),["local","upstream"].map(a=>p("label",{"data-aqar-create-mode":a,"data-selected":C===a?"":void 0,"data-focused":F===a?"":void 0,style:{outline:F===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:C===a?"1px solid #4338ca":"1px solid #cbd5e1",backgroundColor:C===a?"#eef2ff":"#ffffff",color:C===a?"#3730a3":"#475569",fontWeight:C===a?700:500},children:[r("input",{type:"radio",name:"create-group-mode",value:a,checked:C===a,onChange:()=>ze(a),"data-testid":`create-group-mode-${a}`,"data-aqar-visually-hidden":!0,onFocus:()=>O(a),onBlur:()=>O(L=>L===a?null:L),style:ke}),a==="local"?t.groupsView.createModeLocal:t.groupsView.createModeUpstream]},a))]}),e.catalog.kind==="ready"&&e.catalog.groups.length===0&&r("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:w(t.groupsView.catalogEmpty,{at:J(e.catalog.observedAt??"",t)})}),e.catalog.kind==="ready"&&e.catalog.groups.length>0&&e.directoryStatus.provider===""&&r("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:t.groupsView.providerUnset}),e.catalog.kind==="unavailable"&&r("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:w(t.groupsView.catalogUnavailableHere,{reason:t.groupsView.catalogFailures[e.catalog.reason]})}),C==="upstream"&&ge&&e.catalog.kind==="ready"&&p("div",{style:{marginBottom:"1rem"},children:[r("p",{"data-testid":"create-group-upstream-notice",role:"note",style:{margin:"0 0 0.5rem 0",fontSize:"0.78rem",color:"#5b21b6"},children:t.groupsView.createUpstreamNotice}),r("div",{id:"create-group-upstream-label",style:re,children:t.groupsView.pickUpstream}),r("div",{"data-testid":"create-group-upstream-picker",onKeyDown:a=>{a.nativeEvent.isComposing||a.nativeEvent.keyCode===229||a.key==="Enter"&&a.preventDefault()},children:r(Se,{options:j,value:f===null?null:j.find(a=>a.value===f.externalId)??null,onChange:a=>Pe(a===null||Array.isArray(a)?null:a.entry??null),placeholder:t.groupsView.pickUpstreamPlaceholder,ariaLabelledBy:"create-group-upstream-label",renderOption:Re,texts:Le(t),clearable:!0})}),r(Me,{observedAt:e.catalog.observedAt,isStale:e.catalog.isStale,labels:t}),p("div",{style:{marginTop:"0.6rem"},children:[r("label",{htmlFor:"create-group-membership-mode",style:re,children:t.directoryView.membershipMode}),p("select",{id:"create-group-membership-mode","data-testid":"create-group-membership-mode",value:u,onChange:a=>G(a.target.value),style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"},children:[r("option",{value:"direct",children:t.directoryView.directMode}),r("option",{value:"transitive",children:t.directoryView.transitiveMode})]})]})]}),p("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"create-group-key-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.groupKey}),r("input",{id:"create-group-key-input",type:"text",value:l,onChange:a=>U(a.target.value),placeholder:t.groupsView.groupKeyPlaceholder,required:!0,"data-testid":"create-group-key",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),p("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"create-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.name}),r("input",{id:"create-group-name-input",type:"text",value:k,onChange:a=>x(a.target.value),placeholder:t.groupsView.namePlaceholder,required:!0,"data-testid":"create-group-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),p("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"create-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.description}),r("textarea",{id:"create-group-desc-input",value:M,onChange:a=>R(a.target.value),"data-testid":"create-group-description",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box",height:"60px"}})]}),C==="upstream"&&f===null&&r("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:Y>0?t.groupsView.pickUpstreamFirst:t.groupsView.allUpstreamLinked}),p("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>S(null),"data-testid":"cancel-create-group",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-create-group",disabled:m||C==="upstream"&&f===null,"aria-busy":m,...C==="upstream"&&f===null?{"aria-describedby":"create-group-submit-hint"}:{},style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:m||C==="upstream"&&f===null?"#a5b4fc":"#4338ca",color:"#ffffff",border:"none",cursor:m||C==="upstream"&&f===null?"not-allowed":"pointer"},children:t.common.create})]})]})}),h&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:p("form",{ref:Ee,onSubmit:Ne,role:"dialog","aria-modal":"true","aria-labelledby":"edit-group-title",...ce(s)?{"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:[r("h3",{id:"edit-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.groupsView.editGroup}),r(Q,{result:s,id:"edit-group-error"}),p("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"edit-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.name}),r("input",{id:"edit-group-name-input",type:"text",value:h.name,onChange:a=>S({kind:"edit",group:{...h,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"}})]}),p("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"edit-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.description}),r("textarea",{id:"edit-group-desc-input",value:h.description??"",onChange:a=>S({kind:"edit",group:{...h,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"}})]}),p("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>S(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-edit-group",disabled:m,"aria-busy":m,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#4338ca",color:"#ffffff",border:"none",cursor:"pointer"},children:t.common.save})]})]})})]})}function at(){let e=oe(),o=ne(),{submit:i,result:d}=ae(o),s=o.state!=="idle",t=e.labels??H,[b]=tt(),y=Number(b.get("group")??""),v=Number.isInteger(y)&&y>0?y:null,[S,h]=T(null),[g,n]=T(new Set),A=ee(v);A.current!==v&&(A.current=v,v!==null&&(h(v),n(new Set)));let[m,l]=T(""),[U,k]=T(!1),x=S??v??e.groups[0]?.id??null,M=e.groups.find(f=>f.id===x)??e.groups[0],R=x!==null&&M!==void 0&&M.id!==x?x:null,C=new Set(e.groupMembers.filter(f=>f.groupId===M?.id).map(f=>f.userId)),q=m.trim().toLowerCase(),F=e.users.filter(f=>U&&!C.has(f.id)&&!g.has(f.id)?!1:q===""?!0:f.displayName.toLowerCase().includes(q)||f.email.toLowerCase().includes(q)),O=(f,V)=>{if(s||!M)return;let u=String(M.id);V?(n(G=>new Set(G).add(f)),i({intent:"removeGroupMember",groupId:u,userId:String(f)})):(n(G=>{if(!G.has(f))return G;let E=new Set(G);return E.delete(f),E}),i({intent:"addGroupMember",groupId:u,userId:String(f)}))};return p("section",{"data-testid":"group-members-view-section",style:{display:"grid",gridTemplateColumns:"240px 1fr",gap:"1.2rem"},children:[r("h2",{style:{...se,gridColumn:"1 / -1"},children:t.groupMembersView.title}),r(Q,{result:d}),R!==null&&r("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:w(t.groupMembersView.deepLinkMissed,{id:R,group:M?.name??""})}),p("div",{style:{backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[r("h3",{style:{margin:"0 0 0.8rem 0",fontSize:"0.9rem",color:"#475569"},children:t.groupMembersView.selectGroup}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.4rem"},children:e.groups.map(f=>{let V=f.id===M?.id;return p("button",{type:"button",onClick:()=>{h(f.id),n(new Set)},"data-testid":`select-group-btn-${f.id}`,style:{textAlign:"left",padding:"8px 10px",borderRadius:"6px",border:V?"1px solid #6366f1":"1px solid #e2e8f0",backgroundColor:V?"#e0e7ff":"#ffffff",color:V?"#3730a3":"#0f172a",cursor:"pointer",fontWeight:V?600:400,fontSize:"0.85rem"},children:[f.name,f.readOnly?r("span",{"data-testid":`group-upstream-marker-${f.id}`,style:{marginLeft:"6px",fontSize:"0.7rem",color:"#7c3aed"},children:t.common.managedUpstream}):null]},f.id)})})]}),r("div",{style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:M?p(me,{children:[p("div",{style:{marginBottom:"1rem",borderBottom:"1px solid #e2e8f0",paddingBottom:"0.8rem"},children:[r("h3",{style:{margin:0,fontSize:"1.1rem",color:"#0f172a"},children:w(t.groupMembersView.membersOfTemplate,{group:M.name})}),p("span",{style:{fontSize:"0.8rem",color:"#64748b"},children:[t.groupMembersView.groupKeyLabel,": ",M.groupKey]}),M.readOnly?r("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:t.groupMembersView.upstreamNotice}):null]}),p("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center",flexWrap:"wrap",marginBottom:"0.8rem"},children:[r("input",{type:"search","aria-label":t.groupMembersView.searchLabel,placeholder:t.groupMembersView.searchPlaceholder,value:m,onChange:f=>l(f.target.value),"data-testid":"member-search-input",style:{flex:1,minWidth:"220px",padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem"}}),p("label",{style:{display:"inline-flex",alignItems:"center",gap:"0.35rem",fontSize:"0.8rem",color:"#475569"},children:[r("input",{type:"checkbox","data-testid":"member-only-toggle",checked:U,onChange:f=>{k(f.target.checked),n(new Set)}}),w(t.groupMembersView.onlyMembers,{count:C.size})]})]}),r("p",{"data-testid":"member-summary",role:"status","aria-live":"polite",style:{margin:"0 0 0.6rem 0",fontSize:"0.78rem",color:"#475569"},children:w(t.groupMembersView.summary,{shown:F.length,total:e.users.length,members:C.size})}),F.length===0&&r("p",{"data-testid":"member-empty-filtered",style:{margin:"0 0 0.6rem 0",fontSize:"0.85rem",color:"#475569"},children:e.users.length===0?t.groupMembersView.noUsers:q===""&&U?t.groupMembersView.emptyNoMembers:t.groupMembersView.emptyFiltered}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:F.map(f=>{let V=C.has(f.id);return p("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderRadius:"6px",border:"1px solid #f1f5f9",backgroundColor:V?"#f0fdf4":"#ffffff"},"data-testid":`member-row-${f.id}`,children:[p("div",{children:[r("span",{style:{fontWeight:600,fontSize:"0.88rem",color:"#0f172a",marginRight:"8px"},children:f.displayName}),p("span",{style:{fontSize:"0.78rem",color:"#64748b"},children:["(",f.email,")"]})]}),M.readOnly?V?r("span",{"data-testid":`member-readonly-${f.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:t.common.managedUpstream}):null:r("button",{type:"button",onClick:()=>O(f.id,V),...Z(s),"aria-label":w(V?t.groupMembersView.actionRemoveAria:t.groupMembersView.actionAddAria,{user:f.displayName}),"data-testid":`toggle-member-btn-${f.id}`,style:{padding:"4px 12px",borderRadius:"4px",border:V?"1px solid #b91c1c":"1px solid #0284c7",backgroundColor:V?"#ffffff":"#0284c7",color:V?"#b91c1c":"#ffffff",fontSize:"0.78rem",fontWeight:600,cursor:"pointer"},children:V?t.groupMembersView.actionRemove:t.groupMembersView.actionAdd})]},f.id)})})]}):r("div",{"data-testid":"member-no-groups",style:{color:"#475569",textAlign:"center",padding:"2rem"},children:e.groups.length===0?t.groupMembersView.noGroups:t.groupMembersView.selectPrompt})})]})}function st(e){return e==="email"?{backgroundColor:"#e0f2fe",color:"#0369a1"}:e==="domain"?{backgroundColor:"#fef3c7",color:"#b45309"}:{backgroundColor:"#ede9fe",color:"#6d28d9"}}function lt(e,o){return e==="email"?o.allowlistView.emailTypeShort:e==="domain"?o.allowlistView.domainTypeShort:o.allowlistView.groupTypeShort}function dt(){let e=oe(),o=ne(),i=e.labels??H,{submit:d,result:s}=ae(o),t=o.state!=="idle",[b,y]=T(""),[v,S]=T("email"),[h,g]=T(""),n=l=>{if(l.preventDefault(),!b)return;let U={pattern:b,description:h};d({intent:"addAllowlistEntry",pattern:U.pattern,type:v,description:U.description},()=>{y(k=>k===U.pattern?"":k),g(k=>k===U.description?"":k)})},A=l=>{d({intent:"removeAllowlistEntry",entryId:String(l)})},m=l=>{d({intent:"removeAllowlistGroup",entryId:String(l)})};return p("section",{"data-testid":"allowlist-view-section",style:{display:"flex",flexDirection:"column",gap:"1.2rem"},children:[r("h2",{style:se,children:i.allowlistView.title}),r(Q,{result:s}),p("form",{onSubmit:n,style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0",display:"flex",flexWrap:"wrap",gap:"0.8rem",alignItems:"flex-end"},children:[p("div",{style:{flex:2,minWidth:"220px"},children:[r("label",{htmlFor:"allowlist-pattern-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.pattern}),r("input",{id:"allowlist-pattern-input-field",type:"text",value:b,onChange:l=>y(l.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"}})]}),p("div",{style:{flex:1,minWidth:"140px"},children:[r("label",{htmlFor:"allowlist-type-select-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.type}),p("select",{id:"allowlist-type-select-field",value:v,onChange:l=>S(l.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:[r("option",{value:"email",children:i.allowlistView.emailType}),r("option",{value:"domain",children:i.allowlistView.domainType})]})]}),p("div",{style:{flex:2,minWidth:"200px"},children:[r("label",{htmlFor:"allowlist-desc-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.description}),r("input",{id:"allowlist-desc-input-field",type:"text",value:h,onChange:l=>g(l.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"}})]}),r("button",{type:"submit","data-testid":"submit-allowlist-add",disabled:t,"aria-busy":t,style:{padding:"7px 16px",borderRadius:"6px",backgroundColor:"#047857",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:i.allowlistView.addEntry})]}),r("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:p("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[r("thead",{children:p("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[r("th",{scope:"col",style:{padding:"10px 14px"},children:i.common.id}),r("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.target}),r("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.type}),r("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.description}),r("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:i.common.actions})]})}),p("tbody",{children:[e.allowlist.map(l=>p("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`allowlist-row-${l.type}-${l.id}`,"data-allowlist-type":l.type,children:[r("td",{style:{padding:"10px 14px",color:"#475569"},children:w(i.common.idTemplate,{id:l.id})}),r("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:l.type==="group"?p("span",{"data-testid":`allowlist-group-${l.type}-${l.id}`,children:[l.groupName,r("span",{style:{marginLeft:"6px",fontFamily:"monospace",fontSize:"0.78rem",color:"#64748b"},children:l.groupKey})]}):r("span",{style:{fontFamily:"monospace"},children:l.pattern})}),r("td",{style:{padding:"10px 14px"},children:r("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",...st(l.type),fontWeight:600},children:lt(l.type,i)})}),p("td",{style:{padding:"10px 14px",color:"#475569"},children:[l.description||i.common.none,l.owner.kind==="deployment"&&r("span",{"data-testid":`allowlist-owner-${l.type}-${l.id}`,style:{marginLeft:"8px",fontSize:"0.72rem",color:"#475569"},children:i.allowlistView.deploymentOwner})]}),r("td",{style:{padding:"10px 14px",textAlign:"right"},children:l.readOnly?r("span",{"data-testid":`readonly-allowlist-${l.type}-${l.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:i.common.readOnly}):r("button",{type:"button",onClick:()=>{window.confirm(w(i.allowlistView.confirmDelete,{target:l.type==="group"?l.groupName:l.pattern}))&&(l.type==="group"?m(l.id):A(l.id))},disabled:t,"aria-busy":t,"aria-label":w(i.allowlistView.deleteAria,{target:l.type==="group"?l.groupName:l.pattern}),"data-testid":`remove-allowlist-btn-${l.type}-${l.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.78rem",cursor:"pointer"},children:i.common.delete})})]},`${l.type}-${l.id}`)),e.allowlist.length===0&&r("tr",{children:r("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:i.allowlistView.empty})})]})]})})]})}function ut(){let e=oe(),o=ne(),{submit:i,result:d}=ae(o),s=e.labels??H,t=s.directoryView,b=e.groups.filter(u=>!u.externalLink),[y,v]=T(""),[S,h]=T(""),[g,n]=T(""),[A,m]=T("direct"),l=e.groups.filter(u=>u.externalLink),U=new Set(e.allowlist.filter(u=>u.type==="group").map(u=>u.groupId)),k=u=>e.allowlist.find(G=>G.type==="group"&&G.groupId===u),x=o.state!=="idle",[M,R]=T(null),C=typeof d=="object"&&d!==null&&d.syncRequest==="already-pending"?t.syncAlreadyPending:null,q=M===null||(e.groups.find(E=>E.id===M.groupId)?.externalLink?.syncedAt??null)!==M.syncedAtAtPress?null:M.groupId,F=e.directoryStatus.isEnabled&&e.directoryStatus.provider!=="",O=te(()=>Ue(e.catalog,Ge(l),s),[e.catalog,l,s]),f=te(()=>O.filter(u=>u.disabled!==!0).length,[O]),V=u=>{if(u.preventDefault(),!(y&&S))return;let G=b.find(c=>String(c.id)===y);if(!window.confirm(w(t.confirmLink,{group:G?.name??y,upstream:S})))return;let E=S;i({intent:"linkDirectoryGroup",groupId:y,provider:e.directoryStatus.provider,externalKey:E,externalId:g,membershipMode:A},()=>{h(c=>c===E?"":c),n(c=>S===E?"":c),v("")})};return p("section",{"data-testid":"directory-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[r("h2",{style:se,children:t.title}),r(Q,{result:d}),!F&&r("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:t.notWiredNotice}),F&&e.groups.length===0&&r("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:t.noGroupsToLink}),F&&e.groups.length>0&&b.length===0&&r("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:t.nothingToLink}),r("p",{"data-testid":"directory-sync-already-pending",role:"status","aria-live":"polite",hidden:C===null,style:C===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:C}),F&&b.length>0&&p("form",{onSubmit:V,"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:[p("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[r("label",{htmlFor:"directory-group-select-input",style:re,children:t.selectGroup}),p("select",{id:"directory-group-select-input","data-testid":"directory-group-select",value:y,onChange:u=>v(u.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[r("option",{value:"",children:t.selectGroup}),b.map(u=>r("option",{value:String(u.id),children:w(t.groupOptionTemplate,{name:u.name,key:u.groupKey})},u.id))]})]}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem",flex:1,minWidth:"260px"},children:e.catalog.kind==="ready"&&e.catalog.groups.length>0?p(me,{children:[r("div",{id:"directory-external-key-label",style:re,children:t.externalKey}),r("div",{"data-testid":"directory-external-key-picker",onKeyDown:u=>{u.nativeEvent.isComposing||u.nativeEvent.keyCode===229||u.key==="Enter"&&u.preventDefault()},children:r(Se,{options:O,value:g===""?null:O.find(u=>u.value===g)??null,onChange:u=>{if(u===null||Array.isArray(u)){n(""),h("");return}n(String(u.value)),h(u.entry.externalKey)},placeholder:t.pickUpstreamPlaceholder,ariaLabelledBy:"directory-external-key-label",renderOption:Re,texts:Le(s),clearable:!0})}),f===0&&r("span",{"data-testid":"directory-all-upstream-linked",style:{fontSize:"0.72rem",color:"#92400e"},children:s.groupsView.allUpstreamLinked}),r(Me,{observedAt:e.catalog.observedAt,isStale:e.catalog.isStale,labels:s})]}):p(me,{children:[r("label",{htmlFor:"directory-external-key-input",style:re,children:t.externalKey}),r("input",{id:"directory-external-key-input",type:"email",required:!0,"data-testid":"directory-external-key",placeholder:t.externalKeyPlaceholder,value:S,onChange:u=>{n(""),h(u.target.value)},style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"}}),e.catalog.kind==="unavailable"&&r("span",{"data-testid":"directory-catalog-unavailable",style:{fontSize:"0.72rem",color:"#92400e"},children:w(s.groupsView.catalogUnavailable,{reason:s.groupsView.catalogFailures[e.catalog.reason]})}),e.catalog.kind==="ready"&&r("span",{"data-testid":"directory-catalog-empty",style:{fontSize:"0.72rem",color:"#475569"},children:w(s.groupsView.catalogEmpty,{at:J(e.catalog.observedAt,s)})})]})}),p("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[r("label",{htmlFor:"directory-membership-mode-input",style:re,children:t.membershipMode}),p("select",{id:"directory-membership-mode-input","data-testid":"directory-membership-mode",value:A,onChange:u=>m(u.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[r("option",{value:"direct",children:t.directMode}),r("option",{value:"transitive",children:t.transitiveMode})]})]}),r("button",{type:"submit","data-testid":"directory-link-submit",disabled:!(y&&S)||x,"aria-busy":x,style:{padding:"0.5rem 1rem",borderRadius:"6px",border:"none",backgroundColor:y&&S&&!x?"#2563eb":"#94a3b8",color:"#fff",fontWeight:600},children:t.link})]}),l.length===0?r("div",{"data-testid":"directory-empty",style:{padding:"2rem",textAlign:"center",color:"#64748b",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:t.empty}):p("table",{"data-testid":"directory-table",style:{width:"100%",borderCollapse:"collapse",backgroundColor:"#ffffff",borderRadius:"8px",overflow:"hidden",border:"1px solid #e2e8f0"},children:[r("thead",{children:p("tr",{style:{backgroundColor:"#f8fafc",textAlign:"left"},children:[r("th",{scope:"col",style:W,children:s.groupsView.name}),r("th",{scope:"col",style:W,children:t.externalKey}),r("th",{scope:"col",style:W,children:t.membershipMode}),r("th",{scope:"col",style:W,children:t.lastSynced}),r("th",{scope:"col",style:W,children:s.common.status}),r("th",{scope:"col",style:W,children:s.common.actions})]})}),r("tbody",{children:l.map(u=>{let G=u.externalLink,E=U.has(u.id);return p("tr",{"data-testid":`directory-row-${u.id}`,"data-sync-enabled":String(G.isSyncEnabled),style:{borderTop:"1px solid #e2e8f0"},children:[p("td",{style:W,children:[u.name,r("div",{style:{fontSize:"0.75rem",color:"#64748b"},children:u.groupKey})]}),r("td",{style:W,"data-testid":`directory-external-${u.id}`,children:G.externalKey}),r("td",{style:W,children:G.membershipMode==="direct"?t.directMode:t.transitiveMode}),p("td",{style:W,"data-testid":`directory-synced-${u.id}`,children:[G.syncedAt?J(G.syncedAt,s):t.neverSynced,G.unresolvedCount>0?r("div",{style:{fontSize:"0.75rem",color:"#b45309"},"data-testid":`directory-unresolved-${u.id}`,children:w(t.unresolvedTemplate,{count:G.unresolvedCount})}):null]}),p("td",{style:W,children:[r("span",{"data-testid":`directory-status-${u.id}`,style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:G.isSyncEnabled?"#dcfce7":"#fee2e2",color:G.isSyncEnabled?"#166534":"#b91c1c",fontWeight:600},children:G.isSyncEnabled?t.syncEnabled:t.syncPaused}),G.syncError?r("div",{style:{fontSize:"0.75rem",color:"#b91c1c",marginTop:"0.25rem"},"data-testid":`directory-error-${u.id}`,children:G.syncError}):null]}),r("td",{style:W,children:p("div",{style:{display:"flex",gap:"0.35rem",flexWrap:"wrap"},children:[r("button",{type:"button","data-testid":`directory-sync-now-${u.id}`,...Z(x),"aria-label":w(q===u.id?t.syncQueuedAria:t.syncNowAria,{group:u.name}),onClick:()=>i({intent:"requestDirectorySync",groupId:String(u.id)},c=>{c?.syncRequest==="queued"&&R({groupId:u.id,syncedAtAtPress:u.externalLink?.syncedAt??null})}),style:ue,children:q===u.id?t.syncQueued:t.syncNow}),r("button",{type:"button","data-testid":`directory-toggle-sync-${u.id}`,...Z(x),"aria-label":w(G.isSyncEnabled?t.pauseAria:t.resumeAria,{group:u.name}),onClick:()=>{R(null),i({intent:"setDirectorySyncEnabled",groupId:String(u.id),isSyncEnabled:String(!G.isSyncEnabled)})},style:ue,children:G.isSyncEnabled?t.pause:t.resume}),r("button",{type:"button","data-testid":`directory-allow-${u.id}`,...Z(x),"aria-label":w(E?t.disallowGroupAria:t.allowGroupAria,{group:u.name}),onClick:()=>{let c=k(u.id);if(E&&c){if(!window.confirm(w(t.confirmDisallow,{group:u.name})))return;i({intent:"removeAllowlistGroup",entryId:String(c.id)})}else i({intent:"addAllowlistGroup",groupId:String(u.id)})},style:ue,children:E?t.disallowGroup:t.allowGroup}),r("button",{type:"button","data-testid":`directory-unlink-${u.id}`,...Z(x),"aria-label":w(t.unlinkAria,{group:u.name}),onClick:()=>{window.confirm(w(t.confirmUnlink,{group:u.name,upstream:u.externalLink?.externalKey??""}))&&i({intent:"unlinkDirectoryGroup",groupId:String(u.id)})},style:{...ue,color:"#b91c1c",borderColor:"#fecaca"},children:t.unlink})]})})]},u.id)})})]})]})}var re={fontSize:"0.78rem",color:"#475569",fontWeight:600},ke={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clipPath:"inset(50%)",whiteSpace:"nowrap",border:0},se={margin:0,fontSize:"1.05rem",fontWeight:700,color:"#0f172a"},W={padding:"0.6rem 0.75rem",fontSize:"0.85rem",verticalAlign:"top"};function Z(e){return{"aria-disabled":e,"aria-busy":e,"data-busy":e?"true":void 0}}var ue={padding:"0.25rem 0.6rem",fontSize:"0.75rem",borderRadius:"6px",border:"1px solid #cbd5e1",backgroundColor:"#fff",cursor:"pointer"},Ae={users:Te,groups:nt,group_members:at,allowlist:dt,directory:ut};function It({renderHeader:e}={}){let i=oe()?.segment??"users",d=Object.hasOwn(Ae,i)?Ae[i]:Te;return r(ve,{renderHeader:e,children:r(d,{})})}export{dt as AllowlistView,It as AuthUserAdminAppView,ut as DirectoryView,at as GroupMembersView,nt as GroupsView,$ as UserAdminInputError,B as UserAdminOperatorError,ve as UserAdminShell,Te as UsersView,ft as createInMemoryUserAdminStore,wt as createUserAdminApp,H as defaultUserAdminLabels,pt as jaUserAdminLabels,z as normalizeUpstreamKey,fe as resolveUserAdminLabels,xt as userAdminAccessFor,ht as userAdminIntents};
1
+ var Q={title:"Users & Groups",locale:"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})"}},ht={title:"\u30E6\u30FC\u30B6\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7\u7BA1\u7406",locale:"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 fe(e){let o=Q;return e?{title:e.title??o.title,locale:e.locale??o.locale,timeZone:e.timeZone??o.timeZone,heading:e.heading??o.heading,common:{...o.common,...e.common},errors:{...o.errors,...e.errors},permissions:{...o.permissions,...e.permissions},tabs:{...o.tabs,...e.tabs},usersView:{...o.usersView,...e.usersView},groupsView:{...o.groupsView,...e.groupsView},groupMembersView:{...o.groupMembersView,...e.groupMembersView},allowlistView:{...o.allowlistView,...e.allowlistView},directoryView:{...o.directoryView,...e.directoryView}}:o}import{data as le}from"react-router";function x(e,o){return e.replace(/\{(\w+)\}/g,(i,l)=>Object.hasOwn(o,l)?String(o[l]):i)}function J(e,o){let i=/(?:Z|[+-]\d{2}:?\d{2})$/.test(e)?e:`${e}Z`;try{return new Intl.DateTimeFormat(o.locale,{timeZone:o.timeZone,dateStyle:"medium",timeStyle:"short"}).format(new Date(i))}catch{return e}}function St(e){let o=e?.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=e?.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=e?.groupMembers??[{id:1,groupId:1,userId:2},{id:2,groupId:2,userId:3}],m=e?.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[...o]},async createUser(t){let y={id:Math.max(...o.map(g=>g.id),0)+1,email:t.email,displayName:t.displayName,isActive:!0};return o.push(y),y},async updateUser(t,y){let g=o.findIndex(v=>v.id===t);if(g===-1)throw new B(`User not found: ${t}`);return o[g]={...o[g],displayName:y.displayName,email:y.email},o[g]},async toggleUserActive(t,y){let g=o.findIndex(v=>v.id===t);if(g===-1)throw new B(`User not found: ${t}`);return o[g]={...o[g],isActive:y},o[g]},async listGroups(){return[...i]},async createGroup(t){let y={id:Math.max(...i.map(g=>g.id),0)+1,groupKey:t.groupKey,name:t.name,description:t.description,isActive:!0,readOnly:!1};return i.push(y),y},async updateGroup(t,y){let g=i.findIndex(v=>v.id===t);if(g===-1)throw new B(`Group not found: ${t}`);return i[g]={...i[g],name:y.name,description:y.description},i[g]},async deleteGroup(t){i=i.filter(y=>y.id!==t),l=l.filter(y=>y.groupId!==t)},async listGroupMembers(){return[...l]},async addGroupMember(t,y){let g=l.find(A=>A.groupId===t&&A.userId===y);if(g)return g;let v={id:Math.max(...l.map(A=>A.id),0)+1,groupId:t,userId:y};return l.push(v),v},async removeGroupMember(t,y){l=l.filter(g=>!(g.groupId===t&&g.userId===y))},async listAllowlist(){return[...m]},async addAllowlistEntry(t){let y={id:Math.max(...m.map(g=>g.id),0)+1,pattern:t.pattern,type:t.type,description:t.description,owner:{kind:"tenant",tenantId:"default"},readOnly:!1};return m.push(y),y},async removeAllowlistEntry(t){m=m.filter(y=>y.id!==t)},async addAllowlistGroup(t,y){let g=i.find(v=>v.id===t);if(!g)throw new B(`Group not found: ${t}`);m=[...m,{id:Math.max(...m.map(v=>v.id),0)+1,type:"group",groupId:t,groupKey:g.groupKey,groupName:g.name,description:y,owner:{kind:"tenant",tenantId:"default"},readOnly:!1}]},async removeAllowlistGroup(t){m=m.filter(y=>!(y.type==="group"&&y.id===t))},async linkDirectoryGroup(){throw new B("This in-memory store has no upstream directory; inject a real store to link groups.")},async createLinkedGroup(){throw new B("This in-memory store has no upstream directory; inject a real store to create a linked group.")},async unlinkDirectoryGroup(){throw new B("This in-memory store has no upstream directory; inject a real store to unlink groups.")},async setDirectorySyncEnabled(){throw new B("This in-memory store has no upstream directory; inject a real store to pause synchronization.")},async requestDirectorySync(){throw new B("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 Ke(e,o){let i=Number.isFinite(o)&&o>0?o:$e;return(Date.now()-e.getTime())/1e3>i}var Be=64*1024,$e=5400;async function he(e,o,i,l){if(!e)return{kind:"not-wired"};if(!o)return{kind:"not-wired"};try{let{groups:m,observedAt:t}=await e.listGroups(i);return t===null||!Number.isFinite(t.getTime())?{kind:"unavailable",reason:"neverObserved"}:{kind:"ready",groups:m,observedAt:t.toISOString(),isStale:Ke(t,l)}}catch(m){return console.error("[@aiquants/auth-react-router] directoryCatalog.listGroups failed; the picker falls back to manual entry:",m),{kind:"unavailable",reason:Ze(m)}}}function z(e){return e.trim().toLowerCase()}var B=class extends Error{constructor(i){super(i);this.operatorFacing=!0;this.name="UserAdminOperatorError"}};function We(e){return e instanceof B||typeof e=="object"&&e!==null&&e.operatorFacing===!0&&e instanceof Error}var $=class extends Error{constructor(i,l={}){super(i);this.labelKey=i;this.values=l;this.name="UserAdminInputError"}};function je(e){return typeof e=="object"&&e!==null&&e.status===403}function He(e){let o=String(e.get("type")??"");if(o==="email"||o==="domain")return o;throw new $("invalidAllowlistType")}var Qe=["users","groups","group_members","allowlist","directory"];function _e(e){let o=e.replace(/\.data$/,"").split("/").filter(Boolean),i=o[o.length-1]??"";return Qe.includes(i)?i:"users"}var de=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[...de.keys()]}function Ut(e){return de.get(e)??[]}function Ze(e){let o=typeof e=="object"&&e!==null&&"status"in e?e.status:void 0;return typeof o!="number"?"unknown":o===401||o===403?"denied":o===429?"rateLimited":o>=500?"upstreamError":"unknown"}function N(e,o){let i=e.get(o),l=Number(i);if(i===null||String(i).trim()===""||!Number.isInteger(l)||l<=0)throw new $("invalidField",{field:o});return l}function K(e,o){let i=String(e.get(o)??"").trim();if(i==="")throw new $("invalidField",{field:o});return i}function Ye(e,o){let i=String(e.get(o)??"");if(i!=="true"&&i!=="false")throw new $("invalidField",{field:o});return i==="true"}function we(e){let o=String(e.get("membershipMode")??"");if(o!=="direct"&&o!=="transitive")throw new $("invalidField",{field:"membershipMode"});return o}function ie(e,o){let i=String(e.get(o)??"").trim();return i===""?void 0:i}function Mt(e){let o=fe(e.labels);async function i(d){if(!e.resolveActor)return"user-admin";try{return await e.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 l(d,s){try{return await e.store.requestDirectorySync(d,await i(s))}catch(h){return console.error(`[@aiquants/auth-react-router] the link for group ${d} was created, but its sync request could not be queued:`,h),"not-queued"}}async function m(d){if(!e.directoryCatalog)return!1;let s=de.get("catalog");if(s===void 0||s.length===0)return!1;try{for(let h of s)await e.guards.requireAccess(d,{action:h,intent:"catalog"});return!0}catch(h){try{e.guards.onDenied?.({intent:"catalog",actions:s,error:h})}catch(n){console.error("[@aiquants/auth-react-router] onDenied threw; the denial itself still stands:",n)}return!1}}async function t({request:d}){await e.guards.requireAccess(d,{action:"read",intent:"loader"});let s=_e(new URL(d.url).pathname),h=(s==="groups"||s==="directory")&&await m(d),[n,S,U,w,b,V]=await Promise.all([e.store.listUsers(),e.store.listGroups(),e.store.listGroupMembers(),e.store.listAllowlist(),e.store.getDirectoryStatus(),e.getMyPermissions?e.getMyPermissions(d).catch(G=>(console.error("[@aiquants/auth-react-router] getMyPermissions failed; rendering the permission badge as unknown:",G),null)):Promise.resolve(null)]),C=await he(e.directoryCatalog,h,d,b.stalenessThresholdSec);return{resourceLabels:e.resourceLabels,segment:s,users:n,groups:S,groupMembers:U,allowlist:w,directoryStatus:b,myPermissions:V,catalog:C,labels:o}}async function y({request:d}){let s=Number(d.headers.get("content-length")??Number.NaN);if(Number.isFinite(s)&&s>Be)return le({ok:!1,error:o.errors.requestTooLarge},{status:413});let h=await d.formData(),n=String(h.get("intent")??""),S=de.get(n);if(!S)return le({ok:!1,error:o.errors.unknownIntent},{status:400});let U=b=>je(b),w=b=>{try{e.guards.onDenied?.({intent:n,actions:S,error:b})}catch{}return le({ok:!1,error:o.errors.forbidden},{status:403})};try{for(let b of S)await e.guards.requireAccess(d,{action:b,intent:n})}catch(b){if(!U(b))throw b;return w(b)}try{return await M(n,h,d)}catch(b){if(U(b))return w(b);if(b instanceof Response)throw b;if(b instanceof $){let V=b.values.field,C=typeof V=="string"?{...b.values,field:o.errors.fieldNames[V]??V}:b.values,G=o.errors[b.labelKey];return{ok:!1,error:x(typeof G=="string"?G:String(b.labelKey),C)}}return console.error(`[@aiquants/auth-react-router] intent "${n}" failed:`,b),{ok:!1,error:We(b)?b.message:o.errors.unexpected}}}function g(d,s,h){let n=String(d.get("externalId")??"").trim();if(h.kind==="ready"){if(n!==""&&h.groups.some(w=>w.externalId===n))return n;let S=z(s),U=h.groups.find(w=>z(w.externalKey)===S);if(U)return U.externalId}return n===""?s:n}function v(d){let s=d.provider.trim();if(!d.isEnabled||s==="")throw new $("directoryDisabled");return s}async function A(d,s){let h=z(d),n=z(s),U=(await e.store.listGroups()).find(w=>w.externalLink!==void 0&&(z(w.externalLink.externalId)===h||z(w.externalLink.externalKey)===n));if(U)throw new $("alreadyLinked",{key:s,group:U.name})}function f(d,s,h){if(h.kind!=="ready")return;let n=z(d),S=z(s);if(!h.groups.some(U=>z(U.externalId)===n&&z(U.externalKey)===S))throw new $("unknownUpstream",{key:s})}async function M(d,s,h){let n=null,S=async()=>(n??(n=await e.store.getDirectoryStatus()),n),U=async()=>he(e.directoryCatalog,!0,h,(await S()).stalenessThresholdSec);if(d==="createUser")return await e.store.createUser({displayName:K(s,"displayName"),email:K(s,"email")}),{ok:!0};if(d==="updateUser")return await e.store.updateUser(N(s,"userId"),{displayName:K(s,"displayName"),email:K(s,"email")}),{ok:!0};if(d==="toggleUserActive"){let w=String(s.get("isActive")??"");if(w!=="true"&&w!=="false")throw new $("invalidField",{field:"isActive"});return await e.store.toggleUserActive(N(s,"userId"),w==="true"),{ok:!0}}if(d==="createGroup")return await e.store.createGroup({groupKey:K(s,"groupKey"),name:K(s,"name"),description:ie(s,"description")}),{ok:!0};if(d==="updateGroup")return await e.store.updateGroup(N(s,"groupId"),{name:K(s,"name"),description:ie(s,"description")}),{ok:!0};if(d==="deleteGroup")return await e.store.deleteGroup(N(s,"groupId")),{ok:!0};if(d==="addGroupMember")return await e.store.addGroupMember(N(s,"groupId"),N(s,"userId")),{ok:!0};if(d==="removeGroupMember")return await e.store.removeGroupMember(N(s,"groupId"),N(s,"userId")),{ok:!0};if(d==="addAllowlistEntry"){let w=He(s);return await e.store.addAllowlistEntry({pattern:K(s,"pattern"),type:w,description:ie(s,"description")}),{ok:!0}}if(d==="addAllowlistGroup")return await e.store.addAllowlistGroup(N(s,"groupId"),ie(s,"description")),{ok:!0};if(d==="removeAllowlistGroup")return await e.store.removeAllowlistGroup(N(s,"entryId")),{ok:!0};if(d==="createLinkedGroup"){let w=K(s,"externalKey"),b=v(await S()),V=await U(),C=g(s,w,V);await A(C,w),f(C,w,V);let G=await e.store.createLinkedGroup({groupKey:K(s,"groupKey"),name:K(s,"name"),description:ie(s,"description"),provider:b,externalId:C,externalKey:w,membershipMode:we(s)});return{ok:!0,syncRequest:await l(G.id,h)}}if(d==="linkDirectoryGroup"){let w=K(s,"externalKey"),b=v(await S()),V=await U(),C=g(s,w,V);await A(C,w),f(C,w,V);let G=N(s,"groupId");return await e.store.linkDirectoryGroup(G,{provider:b,externalId:C,externalKey:w,membershipMode:we(s)}),{ok:!0,syncRequest:await l(G,h)}}if(d==="unlinkDirectoryGroup")return await e.store.unlinkDirectoryGroup(N(s,"groupId")),{ok:!0};if(d==="setDirectorySyncEnabled")return await e.store.setDirectorySyncEnabled(N(s,"groupId"),Ye(s,"isSyncEnabled")),{ok:!0};if(d==="requestDirectorySync"){let w=String(s.get("groupId")??"").trim();return{ok:!0,syncRequest:await e.store.requestDirectorySync(w===""?null:N(s,"groupId"),await i(h))}}return d==="removeAllowlistEntry"?(await e.store.removeAllowlistEntry(N(s,"entryId")),{ok:!0}):(console.error(`[@aiquants/auth-react-router] intent "${d}" is in the permission table but has no handler`),le({ok:!1,error:o.errors.unknownIntent},{status:400}))}return{loader:t,action:y}}import{useEffect as Je,useRef as Xe}from"react";import{Link as et,useLoaderData as tt,useRevalidator as rt}from"react-router";import{jsx as F,jsxs as X}from"react/jsx-runtime";var ot={intervalMs:3e3,maxMs:3e5};function it(e,o){let i=rt(),l=Xe(i.state);l.current=i.state;let{revalidate:m}=i,{intervalMs:t,maxMs:y}=o;Je(()=>{if(e<=0)return;let g=Date.now(),v=setInterval(()=>{if(Date.now()-g>=y){clearInterval(v);return}l.current==="idle"&&m()},t);return()=>clearInterval(v)},[e,t,y,m])}function xe({label:e,summary:o}){return X("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem",fontSize:"0.65rem",padding:"0.08rem 0.35rem",borderRadius:"9999px",backgroundColor:o.bgColor,color:o.color,border:`1px solid ${o.borderColor}`,fontWeight:600,lineHeight:"1.2"},children:[X("span",{children:[e,":"]}),F("span",{children:o.text})]})}function nt({status:e,labels:o,groups:i}){if(!e||e.linkedGroupCount===0)return null;let l=o.directoryView,m=[];if(e.isEnabled||m.push({id:"disabled",text:l.disabledWarning}),e.pausedGroupCount>0&&m.push({id:"paused",text:x(l.pausedTemplate,{paused:e.pausedGroupCount,total:e.linkedGroupCount})}),e.isStale){let t=e.oldestSyncedAt?J(e.oldestSyncedAt,o):l.neverSynced;m.push({id:"stale",text:`${l.staleWarning} ${x(l.oldestSyncedTemplate,{at:t})}`})}if(e.erroredGroupIds.length>0){let t=e.erroredGroupIds.map(y=>{let g=i.find(A=>A.id===y);if(!g)return x(o.common.idTemplate,{id:y});let v=g.externalLink?.syncError;return v?x(l.erroredItemTemplate,{group:g.name,reason:v}):g.name});m.push({id:"errored",text:x(l.erroredTemplate,{groups:t.join(l.listSeparator)})})}return e.pendingRequestCount>0&&m.push({id:"pending",text:x(l.pendingTemplate,{count:e.pendingRequestCount})}),m.length===0?null:X("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:[F("h2",{id:"directory-sync-heading",style:{margin:0,fontSize:"0.9rem",fontWeight:700},children:l.title}),m.map(t=>F("span",{"data-directory-warning":t.id,children:t.text},t.id))]})}function ve({children:e,renderHeader:o,pendingSyncPolling:i}){let l=tt();it(l?.directoryStatus?.pendingRequestCount??0,i??ot);let m=l?.segment??"users",t=l?.labels??Q,y=l?.myPermissions??null,g=l?.resourceLabels??{},v=n=>Object.hasOwn(g,n)?g[n]:n,A=[{key:"users",label:t.tabs.users,href:"/users"},{key:"groups",label:t.tabs.groups,href:"/users/groups"},{key:"group_members",label:t.tabs.groupMembers,href:"/users/group_members"},{key:"allowlist",label:t.tabs.allowlist,href:"/users/allowlist"}],f=(l?.groups??[]).some(n=>n.externalLink);(l?.directoryStatus?.isEnabled||(l?.directoryStatus?.linkedGroupCount??0)>0||f)&&A.push({key:"directory",label:t.tabs.directory,href:"/users/directory"});let M=Object.entries(y??{}),d={text:t.permissions.unknown,color:"#92400e",bgColor:"#fffbeb",borderColor:"#fde68a"},s=n=>n===void 0?d:n.canWrite?{text:t.permissions.canWrite,color:"#047857",bgColor:"#ecfdf5",borderColor:"#a7f3d0"}:n.canRead?{text:t.permissions.canRead,color:"#1d4ed8",bgColor:"#eff6ff",borderColor:"#bfdbfe"}:n.canDelete?{text:t.permissions.canDelete,color:"#b91c1c",bgColor:"#fef2f2",borderColor:"#fecaca"}:{text:t.permissions.none,color:"#475569",bgColor:"#f1f5f9",borderColor:"#cbd5e1"},h=X("div",{style:{display:"flex",alignItems:"center",gap:"0.4rem"},"data-testid":"user-admin-header-annotation",children:[F("span",{style:{fontSize:"0.75rem",backgroundColor:"#e0f2fe",color:"#0369a1",padding:"2px 8px",borderRadius:"12px",fontWeight:600},children:t.heading}),X("div",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem",fontSize:"0.68rem",color:"#475569"},"data-testid":"user-admin-permissions-badge",children:[F("span",{style:{fontWeight:600,color:"#334155"},children:t.permissions.label}),F("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem"},children:M.length===0?F("span",{"data-testid":"user-admin-permission-unavailable",children:F(xe,{label:t.heading,summary:d})}):M.map(([n,S])=>F(xe,{label:v(n),summary:s(S)},n))})]})]});return X("div",{"data-testid":"user-admin-shell",style:{width:"100%",minHeight:"100vh",backgroundColor:"#f8fafc",padding:"1.5rem",boxSizing:"border-box"},children:[o?o({title:t.title,annotation:h}):X("div",{style:{marginBottom:"1.5rem",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[F("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:700,color:"#0f172a"},children:t.title}),h]}),F("nav",{"aria-label":t.title,style:{display:"flex",gap:"0.5rem",marginBottom:"1.2rem",borderBottom:"2px solid #e2e8f0",paddingBottom:"0.5rem"},children:A.map(n=>{let S=m===n.key;return F(et,{to:n.href,"data-testid":`user-admin-tab-${n.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:n.label},n.key)})}),F(nt,{status:l?.directoryStatus,labels:t,groups:l?.groups??[]}),F("main",{children:e})]})}import{getHighlightSegments as at,SelectBox as Se}from"@aiquants/select-box";import{useEffect as Ce,useMemo as te,useRef as ee,useState as E}from"react";import{Link as st,useFetcher as ne,useLoaderData as oe,useSearchParams as lt}from"react-router";import{Fragment as me,jsx as r,jsxs as c}from"react/jsx-runtime";function _({result:e,id:o}){let i=e;return i?.ok!==!1||!i.error?null:r("div",{id:o,"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 ae(e){let o=ee(null),[i,l]=E(void 0),m=e.data===i?void 0:e.data;return Ce(()=>{if(e.state!=="idle"||e.data===void 0)return;let g=o.current;g&&(o.current=null,e.data.ok===!0&&g(e.data))},[e.state,e.data]),{submit:(g,v)=>{o.current=v??null,l(void 0),e.submit(g,{method:"post"})},resetResult:()=>l(e.data),result:m}}function pe(e,o,i){let l=ee(null),m=ee(o);return m.current=o,Ce(()=>{if(!e)return;let t=l.current,y=i?.current??document.activeElement,g=()=>{let f=Array.from(t?.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 f.filter(d=>{let s=d instanceof HTMLInputElement&&d.type==="radio"?d:null;return!s||s.name===""?!0:!s.checked&&f.some(h=>h instanceof HTMLInputElement&&h.type==="radio"&&h.name===s.name&&h.checked)||M.has(s.name)?!1:(M.add(s.name),!0)})},v=g();(v.find(f=>!f.hasAttribute("data-aqar-visually-hidden"))??v[0])?.focus();let A=f=>{if(f.key==="Escape"){if(f.isComposing||f.keyCode===229||f.defaultPrevented)return;f.preventDefault(),m.current();return}if(f.key!=="Tab")return;let M=g();if(M.length===0)return;let d=M[0],s=M[M.length-1],h=document.activeElement,n=!t?.contains(h);f.shiftKey&&(h===d||n)?(f.preventDefault(),s.focus()):!f.shiftKey&&(h===s||n)&&(f.preventDefault(),d.focus())};return document.addEventListener("keydown",A),()=>{document.removeEventListener("keydown",A),y?.focus?.()}},[e,i]),l}function Ue(e,o,i){return e.kind!=="ready"?[]:e.groups.map(l=>{let m=o.get(z(l.externalId))??o.get(z(l.externalKey)),t=m!==void 0,y=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:t?x(i.groupsView.upstreamAlreadyLinked,{group:m}):y,...t?{disabled:!0}:{},entry:l}})}function Me({observedAt:e,isStale:o,labels:i}){return r("p",{"data-testid":"catalog-freshness","data-stale":o?"":void 0,style:{margin:"0.35rem 0 0 0",fontSize:"0.72rem",color:o?"#92400e":"#64748b"},children:x(o?i.groupsView.catalogStale:i.groupsView.catalogObservedAt,{at:J(e,i)})})}function ce(e){return typeof e=="object"&&e!==null&&e.ok===!1&&typeof e.error=="string"}var dt={exact:{backgroundColor:"#d1fae5",color:"#064e3b",borderRadius:"2px",fontWeight:600},fuzzy:{backgroundColor:"#fef3c7",color:"#78350f",borderRadius:"2px",fontWeight:600}};function Ge(e,o){if(typeof e!="object"||e===null)return null;let i=e.syncRequest;return i==="already-pending"?o.directoryView.syncAlreadyPending:i==="not-queued"?o.directoryView.linkSyncNotQueued:null}function Re(e){let o=new Map;for(let i of e){let l=i.externalLink;l&&(o.set(z(l.externalId),i.name),o.set(z(l.externalKey),i.name))}return o}function Le(e,o){let i=typeof e.note=="string"?e.note:"";return c("span",{"data-aqar-upstream-option":!0,title:i===""?e.label:`${e.label} \u2014 ${i}`,style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"0.75rem",width:"100%",minWidth:0},children:[r("span",{"data-aqar-upstream-option-label":!0,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:at(e.label,o.query).map((l,m)=>r("span",{"data-aqar-match":l.matchType==="none"?void 0:l.matchType,style:l.matchType==="none"?void 0:dt[l.matchType],children:l.text},m))}),i===""?null:r("span",{"data-aqar-upstream-option-note":!0,style:{flexShrink:0,fontSize:"0.72rem",opacity:.75},children:i})]})}function Te(e){let o=e.directoryView;return{noOptions:o.pickerNoOptions,clear:o.pickerClear,toggle:o.pickerToggle,selection:i=>x(o.pickerSelected,{value:i.map(l=>l.label).join(", ")}),status:i=>x(o.pickerAvailable,{count:i.count})}}function ut(e){try{return new Intl.Collator(e).compare}catch{return new Intl.Collator().compare}}function pt(e){return(e.split("@")[0]??e).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function Ve(){let e=oe(),o=ne(),{submit:i,resetResult:l,result:m}=ae(o),t=e.labels??Q,[y,g]=E(""),[v,A]=E(null),f=v?.kind==="edit"?v.user:null,M=v?.kind==="create",d=ee(null),s=(p,I)=>{d.current=I.currentTarget,l(),p.kind==="create"&&(n(""),U("")),A(p)},[h,n]=E(""),[S,U]=E(""),w=pe(M,()=>A(null),d),b=pe(f!==null,()=>A(null),d),V=o.state!=="idle",[C,G]=E({column:"displayName",ascending:!0}),q=ut(t.locale),O=y.trim().toLowerCase(),k=e.users.filter(p=>p.displayName.toLowerCase().includes(O)||p.email.toLowerCase().includes(O)).slice().sort((p,I)=>{let H=C.ascending?1:-1;return C.column==="id"?(p.id-I.id)*H:C.column==="isActive"?(Number(p.isActive)-Number(I.isActive))*H:q(p[C.column],I[C.column])*H}),R=p=>{G(I=>I.column===p?{column:p,ascending:!I.ascending}:{column:p,ascending:!0})},u=p=>{V||p.isActive&&!window.confirm(x(t.usersView.confirmDeactivate,{user:p.displayName}))||i({intent:"toggleUserActive",userId:String(p.id),isActive:String(!p.isActive)})},L=p=>{if(p.preventDefault(),!(h&&S))return;let I=h,H=S;i({intent:"createUser",displayName:I,email:H},()=>{n(j=>j===I?"":j),U(j=>j===H?"":j),A(null)})},P=p=>{p.preventDefault(),f&&i({intent:"updateUser",userId:String(f.id),displayName:f.displayName,email:f.email},()=>A(null))};return c("section",{"data-testid":"users-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[r("h2",{style:se,children:t.usersView.title}),!v&&r(_,{result:m}),c("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[r("input",{type:"text","aria-label":t.usersView.searchLabel,placeholder:t.usersView.searchPlaceholder,value:y,onChange:p=>g(p.target.value),"data-testid":"users-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),r("button",{type:"button",onClick:p=>s({kind:"create"},p),"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:t.usersView.addUser})]}),r("p",{"data-testid":"users-summary",role:"status","aria-live":"polite",style:{margin:0,fontSize:"0.78rem",color:"#475569"},children:x(t.usersView.listSummary,{shown:k.length,total:e.users.length})}),r("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:c("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[r("thead",{children:c("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[[["id",t.common.id],["displayName",t.usersView.displayName],["email",t.usersView.email],["isActive",t.common.status]].map(([p,I])=>r("th",{scope:"col",style:{padding:0},"aria-sort":C.column===p?C.ascending?"ascending":"descending":"none",children:c("button",{type:"button","data-testid":`users-sort-${p}`,onClick:()=>R(p),"aria-label":x(C.column===p?C.ascending?t.usersView.sortedAscending:t.usersView.sortedDescending:t.usersView.sortBy,{column:I}),style:{width:"100%",padding:"10px 14px",textAlign:"left",background:"transparent",border:"none",cursor:"pointer",font:"inherit",color:"inherit",fontWeight:C.column===p?700:500},children:[I,r("span",{"aria-hidden":"true",style:{marginLeft:"4px",opacity:C.column===p?1:.35},children:C.column===p?C.ascending?"\u25B2":"\u25BC":"\u21C5"})]})},p)),r("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:t.common.actions})]})}),c("tbody",{children:[k.map(p=>c("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`user-row-${p.id}`,children:[r("td",{style:{padding:"10px 14px",color:"#475569"},children:x(t.common.idTemplate,{id:p.id})}),r("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:p.displayName}),r("td",{style:{padding:"10px 14px",color:"#475569"},children:p.email}),r("td",{style:{padding:"10px 14px"},children:r("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:p.isActive?"#dcfce7":"#fee2e2",color:p.isActive?"#15803d":"#b91c1c",fontWeight:600},children:p.isActive?t.usersView.active:t.usersView.inactive})}),c("td",{style:{padding:"10px 14px",textAlign:"right"},children:[r("button",{type:"button",onClick:I=>s({kind:"edit",user:p},I),"aria-label":x(t.usersView.editUserAria,{user:p.displayName}),"data-testid":`edit-user-btn-${p.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:"pointer",marginRight:"6px"},children:t.common.edit}),r("button",{type:"button",onClick:()=>u(p),...Y(V),"aria-label":x(p.isActive?t.usersView.deactivateAria:t.usersView.activateAria,{user:p.displayName}),"data-testid":`toggle-user-btn-${p.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",fontSize:"0.78rem",cursor:V?"default":"pointer",color:p.isActive?"#b91c1c":"#15803d"},children:p.isActive?t.usersView.deactivate:t.usersView.activate})]})]},p.id)),k.length===0&&r("tr",{children:r("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:O===""?t.usersView.empty:t.usersView.emptyFiltered})})]})]})}),M&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:c("form",{ref:w,onSubmit:L,role:"dialog","aria-modal":"true","aria-labelledby":"create-user-title",...ce(m)?{"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:[r("h3",{id:"create-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.usersView.addUser}),r(_,{result:m,id:"create-user-error"}),c("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"create-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.displayName}),r("input",{id:"create-user-display-name-input",type:"text",value:h,onChange:p=>n(p.target.value),required:!0,"data-testid":"create-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),c("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"create-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.email}),r("input",{id:"create-user-email-input",type:"email",value:S,onChange:p=>U(p.target.value),required:!0,"data-testid":"create-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),c("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>A(null),"data-testid":"cancel-create-user",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-create-user",disabled:V,"aria-busy":V,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:t.common.create})]})]})}),f&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:c("form",{ref:b,onSubmit:P,role:"dialog","aria-modal":"true","aria-labelledby":"edit-user-title",...ce(m)?{"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:[r("h3",{id:"edit-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.usersView.editUser}),r(_,{result:m,id:"edit-user-error"}),c("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"edit-user-display-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.displayName}),r("input",{id:"edit-user-display-name-input",type:"text",value:f.displayName,onChange:p=>A({kind:"edit",user:{...f,displayName:p.target.value}}),required:!0,"data-testid":"edit-user-display-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),c("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"edit-user-email-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.usersView.email}),r("input",{id:"edit-user-email-input",type:"email",value:f.email,onChange:p=>A({kind:"edit",user:{...f,email:p.target.value}}),required:!0,"data-testid":"edit-user-email",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),c("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>A(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-edit-user",disabled:V,"aria-busy":V,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#0284c7",color:"#ffffff",border:"none",cursor:"pointer"},children:t.common.save})]})]})})]})}function ct(){let e=oe(),o=ne(),{submit:i,resetResult:l,result:m}=ae(o),t=e.labels??Q,y=Ge(m,t),[g,v]=E(""),[A,f]=E(null),M=A?.kind==="edit"?A.group:null,d=A?.kind==="create",s=ee(null),h=(a,T)=>{s.current=T.currentTarget,l(),a.kind==="create"&&De(),f(a)},n=o.state!=="idle",[S,U]=E(""),[w,b]=E(""),[V,C]=E(""),[G,q]=E("local"),[O,k]=E(null),[R,u]=E(null),[L,P]=E("direct"),p=ee(null),I=te(()=>{let a=new Map;for(let T of e.groupMembers)a.set(T.groupId,(a.get(T.groupId)??0)+1);return a},[e.groupMembers]),H=te(()=>Re(e.groups),[e.groups]),j=te(()=>Ue(e.catalog,H,t),[e.catalog,H,t]),Ee=te(()=>j.filter(a=>a.disabled!==!0).length,[j]),ge=e.catalog.kind==="ready"&&e.catalog.groups.length>0&&e.directoryStatus.provider!=="",Ie=pe(d,()=>f(null),s),Pe=pe(M!==null,()=>f(null),s),ye=g.trim().toLowerCase(),be=e.groups.filter(a=>a.name.toLowerCase().includes(ye)||a.groupKey.toLowerCase().includes(ye)),De=()=>{U(""),b(""),C(""),q("local"),u(null),P("direct"),p.current=null},Ne=a=>{if(a.preventDefault(),!(S&&w)||G==="upstream"&&R===null||G==="upstream"&&R!==null&&!window.confirm(x(t.groupsView.confirmCreateLinked,{group:w,upstream:R.externalKey})))return;let T={key:S,name:w,description:V},D=()=>{U(Z=>Z===T.key?"":Z),b(Z=>Z===T.name?"":Z),C(Z=>Z===T.description?"":Z),u(null),f(null)};if(G==="upstream"&&R!==null){i({intent:"createLinkedGroup",groupKey:T.key,name:T.name,description:T.description,provider:e.directoryStatus.provider,externalKey:R.externalKey,membershipMode:L},D);return}i({intent:"createGroup",groupKey:T.key,name:T.name,description:T.description},D)},ze=a=>{if(u(a),!a)return;let T={key:pt(a.externalKey),name:a.name,description:a.description??""};b(T.name),U(T.key),C(T.description),p.current=T},Fe=a=>{if(q(a),a==="upstream")return;u(null);let T=p.current;T&&(U(D=>D===T.key?"":D),b(D=>D===T.name?"":D),C(D=>D===T.description?"":D),p.current=null)},qe=a=>{a.preventDefault(),M&&i({intent:"updateGroup",groupId:String(M.id),name:M.name,description:M.description??""},()=>f(null))},Oe=a=>{if(n)return;let T=e.groupMembers.filter(D=>D.groupId===a.id).length;window.confirm(x(t.groupsView.confirmDelete,{group:a.name,count:T}))&&i({intent:"deleteGroup",groupId:String(a.id)})};return c("section",{"data-testid":"groups-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[r("h2",{style:se,children:t.groupsView.title}),!A&&r(_,{result:m}),r("p",{"data-testid":"groups-sync-request-notice",role:"status","aria-live":"polite",hidden:y===null,style:y===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:y}),c("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[r("input",{type:"text","aria-label":t.groupsView.searchLabel,placeholder:t.groupsView.searchPlaceholder,value:g,onChange:a=>v(a.target.value),"data-testid":"groups-search-input",style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem",width:"260px"}}),r("button",{type:"button",onClick:a=>h({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:t.groupsView.addGroup})]}),r("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(280px, 1fr))",gap:"1rem"},children:be.map(a=>{let T=I.get(a.id)??0;return c("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:[c("div",{children:[c("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[r("h3",{style:{margin:0,fontSize:"1rem",color:"#0f172a"},children:a.name}),r("span",{style:{fontSize:"0.72rem",backgroundColor:"#e0e7ff",color:"#4338ca",padding:"2px 6px",borderRadius:"4px",fontFamily:"monospace"},children:a.groupKey})]}),r("p",{style:{margin:"0 0 0.8rem 0",fontSize:"0.82rem",color:"#64748b",minHeight:"2.4em"},children:a.description||t.groupsView.noDescription}),a.externalLink&&c("div",{"data-testid":`group-source-${a.id}`,style:{display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap",marginBottom:"0.6rem"},children:[r("span",{style:{fontSize:"0.72rem",padding:"2px 8px",borderRadius:"10px",backgroundColor:"#ede9fe",color:"#6d28d9",fontWeight:600},children:t.common.managedUpstream}),r("span",{style:{fontSize:"0.72rem",fontFamily:"monospace",color:"#64748b"},children:a.externalLink.externalKey}),a.externalLink.unresolvedCount>0&&r("span",{"data-testid":`group-unresolved-${a.id}`,style:{fontSize:"0.72rem",color:"#b45309"},children:x(t.directoryView.unresolvedTemplate,{count:a.externalLink.unresolvedCount})})]})]}),c("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",borderTop:"1px solid #f1f5f9",paddingTop:"0.6rem"},children:[r(st,{to:`/users/group_members?group=${a.id}`,"data-testid":`group-open-members-${a.id}`,"aria-label":x(t.groupsView.openMembersAria,{group:a.name}),style:{fontSize:"0.78rem",color:"#1d4ed8",textDecoration:"none"},children:x(t.groupsView.memberCountTemplate,{count:T})}),a.readOnly?r("span",{"data-testid":`readonly-group-${a.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:t.common.readOnly}):c("div",{children:[r("button",{type:"button",onClick:D=>h({kind:"edit",group:a},D),...Y(n),"aria-label":x(t.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:t.common.edit}),r("button",{type:"button",onClick:()=>Oe(a),...Y(n),"aria-label":x(t.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:t.common.delete})]})]})]},a.id)})}),be.length===0&&r("div",{"data-testid":"groups-empty",style:{padding:"2rem",textAlign:"center",color:"#475569",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:e.groups.length===0?t.groupsView.empty:t.groupsView.emptyFiltered}),d&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:c("form",{ref:Ie,onSubmit:Ne,role:"dialog","aria-modal":"true","aria-labelledby":"create-group-title",...ce(m)?{"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:[r("h3",{id:"create-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.groupsView.addGroup}),r(_,{result:m,id:"create-group-error"}),ge&&c("fieldset",{"data-testid":"create-group-mode",style:{display:"flex",gap:"0.25rem",marginBottom:"1rem",border:"none",padding:0,margin:"0 0 1rem 0"},children:[r("legend",{style:ke,children:t.groupsView.createModeLabel}),["local","upstream"].map(a=>c("label",{"data-aqar-create-mode":a,"data-selected":G===a?"":void 0,"data-focused":O===a?"":void 0,style:{outline:O===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:G===a?"1px solid #4338ca":"1px solid #cbd5e1",backgroundColor:G===a?"#eef2ff":"#ffffff",color:G===a?"#3730a3":"#475569",fontWeight:G===a?700:500},children:[r("input",{type:"radio",name:"create-group-mode",value:a,checked:G===a,onChange:()=>Fe(a),"data-testid":`create-group-mode-${a}`,"data-aqar-visually-hidden":!0,onFocus:()=>k(a),onBlur:()=>k(T=>T===a?null:T),style:ke}),a==="local"?t.groupsView.createModeLocal:t.groupsView.createModeUpstream]},a))]}),e.catalog.kind==="ready"&&e.catalog.groups.length===0&&r("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(t.groupsView.catalogEmpty,{at:J(e.catalog.observedAt??"",t)})}),e.catalog.kind==="ready"&&e.catalog.groups.length>0&&e.directoryStatus.provider===""&&r("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:t.groupsView.providerUnset}),e.catalog.kind==="unavailable"&&r("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(t.groupsView.catalogUnavailableHere,{reason:t.groupsView.catalogFailures[e.catalog.reason]})}),G==="upstream"&&ge&&e.catalog.kind==="ready"&&c("div",{style:{marginBottom:"1rem"},children:[r("p",{"data-testid":"create-group-upstream-notice",role:"note",style:{margin:"0 0 0.5rem 0",fontSize:"0.78rem",color:"#5b21b6"},children:t.groupsView.createUpstreamNotice}),r("div",{id:"create-group-upstream-label",style:re,children:t.groupsView.pickUpstream}),r("div",{"data-testid":"create-group-upstream-picker",onKeyDown:a=>{a.nativeEvent.isComposing||a.nativeEvent.keyCode===229||a.key==="Enter"&&a.preventDefault()},children:r(Se,{options:j,value:R===null?null:j.find(a=>a.value===R.externalId)??null,onChange:a=>ze(a===null||Array.isArray(a)?null:a.entry??null),placeholder:t.groupsView.pickUpstreamPlaceholder,ariaLabelledBy:"create-group-upstream-label",renderOption:Le,texts:Te(t),clearable:!0})}),r(Me,{observedAt:e.catalog.observedAt,isStale:e.catalog.isStale,labels:t}),c("div",{style:{marginTop:"0.6rem"},children:[r("label",{htmlFor:"create-group-membership-mode",style:re,children:t.directoryView.membershipMode}),c("select",{id:"create-group-membership-mode","data-testid":"create-group-membership-mode",value:L,onChange:a=>P(a.target.value),style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"},children:[r("option",{value:"direct",children:t.directoryView.directMode}),r("option",{value:"transitive",children:t.directoryView.transitiveMode})]})]})]}),c("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"create-group-key-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.groupKey}),r("input",{id:"create-group-key-input",type:"text",value:S,onChange:a=>U(a.target.value),placeholder:t.groupsView.groupKeyPlaceholder,required:!0,"data-testid":"create-group-key",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),c("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"create-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.name}),r("input",{id:"create-group-name-input",type:"text",value:w,onChange:a=>b(a.target.value),placeholder:t.groupsView.namePlaceholder,required:!0,"data-testid":"create-group-name",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box"}})]}),c("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"create-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.description}),r("textarea",{id:"create-group-desc-input",value:V,onChange:a=>C(a.target.value),"data-testid":"create-group-description",style:{width:"100%",padding:"6px",borderRadius:"4px",border:"1px solid #cbd5e1",boxSizing:"border-box",height:"60px"}})]}),G==="upstream"&&R===null&&r("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:Ee>0?t.groupsView.pickUpstreamFirst:t.groupsView.allUpstreamLinked}),c("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>f(null),"data-testid":"cancel-create-group",style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-create-group",disabled:n||G==="upstream"&&R===null,"aria-busy":n,...G==="upstream"&&R===null?{"aria-describedby":"create-group-submit-hint"}:{},style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:n||G==="upstream"&&R===null?"#a5b4fc":"#4338ca",color:"#ffffff",border:"none",cursor:n||G==="upstream"&&R===null?"not-allowed":"pointer"},children:t.common.create})]})]})}),M&&r("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.4)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:100},children:c("form",{ref:Pe,onSubmit:qe,role:"dialog","aria-modal":"true","aria-labelledby":"edit-group-title",...ce(m)?{"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:[r("h3",{id:"edit-group-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.groupsView.editGroup}),r(_,{result:m,id:"edit-group-error"}),c("div",{style:{marginBottom:"1rem"},children:[r("label",{htmlFor:"edit-group-name-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.name}),r("input",{id:"edit-group-name-input",type:"text",value:M.name,onChange:a=>f({kind:"edit",group:{...M,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"}})]}),c("div",{style:{marginBottom:"1.2rem"},children:[r("label",{htmlFor:"edit-group-desc-input",style:{display:"block",fontSize:"0.8rem",color:"#475569",marginBottom:"4px"},children:t.groupsView.description}),r("textarea",{id:"edit-group-desc-input",value:M.description??"",onChange:a=>f({kind:"edit",group:{...M,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"}})]}),c("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.5rem"},children:[r("button",{type:"button",onClick:()=>f(null),style:{padding:"6px 12px",borderRadius:"4px",border:"1px solid #cbd5e1",backgroundColor:"#ffffff",cursor:"pointer"},children:t.common.cancel}),r("button",{type:"submit","data-testid":"submit-edit-group",disabled:n,"aria-busy":n,style:{padding:"6px 12px",borderRadius:"4px",backgroundColor:"#4338ca",color:"#ffffff",border:"none",cursor:"pointer"},children:t.common.save})]})]})})]})}function mt(){let e=oe(),o=ne(),{submit:i,result:l}=ae(o),m=o.state!=="idle",t=e.labels??Q,[y]=lt(),g=Number(y.get("group")??""),v=Number.isInteger(g)&&g>0?g:null,[A,f]=E(null),[M,d]=E(new Set),s=ee(v);s.current!==v&&(s.current=v,v!==null&&(f(v),d(new Set)));let[h,n]=E(""),[S,U]=E(!1),w=A??v??e.groups[0]?.id??null,b=e.groups.find(k=>k.id===w)??e.groups[0],V=w!==null&&b!==void 0&&b.id!==w?w:null,C=new Set(e.groupMembers.filter(k=>k.groupId===b?.id).map(k=>k.userId)),G=h.trim().toLowerCase(),q=e.users.filter(k=>S&&!C.has(k.id)&&!M.has(k.id)?!1:G===""?!0:k.displayName.toLowerCase().includes(G)||k.email.toLowerCase().includes(G)),O=(k,R)=>{if(m||!b)return;let u=String(b.id);R?(d(L=>new Set(L).add(k)),i({intent:"removeGroupMember",groupId:u,userId:String(k)})):(d(L=>{if(!L.has(k))return L;let P=new Set(L);return P.delete(k),P}),i({intent:"addGroupMember",groupId:u,userId:String(k)}))};return c("section",{"data-testid":"group-members-view-section",style:{display:"grid",gridTemplateColumns:"240px 1fr",gap:"1.2rem"},children:[r("h2",{style:{...se,gridColumn:"1 / -1"},children:t.groupMembersView.title}),r(_,{result:l}),V!==null&&r("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(t.groupMembersView.deepLinkMissed,{id:V,group:b?.name??""})}),c("div",{style:{backgroundColor:"#ffffff",padding:"1rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:[r("h3",{style:{margin:"0 0 0.8rem 0",fontSize:"0.9rem",color:"#475569"},children:t.groupMembersView.selectGroup}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.4rem"},children:e.groups.map(k=>{let R=k.id===b?.id;return c("button",{type:"button",onClick:()=>{f(k.id),d(new Set)},"data-testid":`select-group-btn-${k.id}`,style:{textAlign:"left",padding:"8px 10px",borderRadius:"6px",border:R?"1px solid #6366f1":"1px solid #e2e8f0",backgroundColor:R?"#e0e7ff":"#ffffff",color:R?"#3730a3":"#0f172a",cursor:"pointer",fontWeight:R?600:400,fontSize:"0.85rem"},children:[k.name,k.readOnly?r("span",{"data-testid":`group-upstream-marker-${k.id}`,style:{marginLeft:"6px",fontSize:"0.7rem",color:"#7c3aed"},children:t.common.managedUpstream}):null]},k.id)})})]}),r("div",{style:{backgroundColor:"#ffffff",padding:"1.2rem",borderRadius:"8px",border:"1px solid #e2e8f0"},children:b?c(me,{children:[c("div",{style:{marginBottom:"1rem",borderBottom:"1px solid #e2e8f0",paddingBottom:"0.8rem"},children:[r("h3",{style:{margin:0,fontSize:"1.1rem",color:"#0f172a"},children:x(t.groupMembersView.membersOfTemplate,{group:b.name})}),c("span",{style:{fontSize:"0.8rem",color:"#64748b"},children:[t.groupMembersView.groupKeyLabel,": ",b.groupKey]}),b.readOnly?r("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:t.groupMembersView.upstreamNotice}):null]}),c("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center",flexWrap:"wrap",marginBottom:"0.8rem"},children:[r("input",{type:"search","aria-label":t.groupMembersView.searchLabel,placeholder:t.groupMembersView.searchPlaceholder,value:h,onChange:k=>n(k.target.value),"data-testid":"member-search-input",style:{flex:1,minWidth:"220px",padding:"6px 12px",borderRadius:"6px",border:"1px solid #cbd5e1",fontSize:"0.85rem"}}),c("label",{style:{display:"inline-flex",alignItems:"center",gap:"0.35rem",fontSize:"0.8rem",color:"#475569"},children:[r("input",{type:"checkbox","data-testid":"member-only-toggle",checked:S,onChange:k=>{U(k.target.checked),d(new Set)}}),x(t.groupMembersView.onlyMembers,{count:C.size})]})]}),r("p",{"data-testid":"member-summary",role:"status","aria-live":"polite",style:{margin:"0 0 0.6rem 0",fontSize:"0.78rem",color:"#475569"},children:x(t.groupMembersView.summary,{shown:q.length,total:e.users.length,members:C.size})}),q.length===0&&r("p",{"data-testid":"member-empty-filtered",style:{margin:"0 0 0.6rem 0",fontSize:"0.85rem",color:"#475569"},children:e.users.length===0?t.groupMembersView.noUsers:G===""&&S?t.groupMembersView.emptyNoMembers:t.groupMembersView.emptyFiltered}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:q.map(k=>{let R=C.has(k.id);return c("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderRadius:"6px",border:"1px solid #f1f5f9",backgroundColor:R?"#f0fdf4":"#ffffff"},"data-testid":`member-row-${k.id}`,children:[c("div",{children:[r("span",{style:{fontWeight:600,fontSize:"0.88rem",color:"#0f172a",marginRight:"8px"},children:k.displayName}),c("span",{style:{fontSize:"0.78rem",color:"#64748b"},children:["(",k.email,")"]})]}),b.readOnly?R?r("span",{"data-testid":`member-readonly-${k.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:t.common.managedUpstream}):null:r("button",{type:"button",onClick:()=>O(k.id,R),...Y(m),"aria-label":x(R?t.groupMembersView.actionRemoveAria:t.groupMembersView.actionAddAria,{user:k.displayName}),"data-testid":`toggle-member-btn-${k.id}`,style:{padding:"4px 12px",borderRadius:"4px",border:R?"1px solid #b91c1c":"1px solid #0284c7",backgroundColor:R?"#ffffff":"#0284c7",color:R?"#b91c1c":"#ffffff",fontSize:"0.78rem",fontWeight:600,cursor:"pointer"},children:R?t.groupMembersView.actionRemove:t.groupMembersView.actionAdd})]},k.id)})})]}):r("div",{"data-testid":"member-no-groups",style:{color:"#475569",textAlign:"center",padding:"2rem"},children:e.groups.length===0?t.groupMembersView.noGroups:t.groupMembersView.selectPrompt})})]})}function gt(e){return e==="email"?{backgroundColor:"#e0f2fe",color:"#0369a1"}:e==="domain"?{backgroundColor:"#fef3c7",color:"#b45309"}:{backgroundColor:"#ede9fe",color:"#6d28d9"}}function yt(e,o){return e==="email"?o.allowlistView.emailTypeShort:e==="domain"?o.allowlistView.domainTypeShort:o.allowlistView.groupTypeShort}function bt(){let e=oe(),o=ne(),i=e.labels??Q,{submit:l,result:m}=ae(o),t=o.state!=="idle",[y,g]=E(""),[v,A]=E("email"),[f,M]=E(""),d=n=>{if(n.preventDefault(),!y)return;let S={pattern:y,description:f};l({intent:"addAllowlistEntry",pattern:S.pattern,type:v,description:S.description},()=>{g(U=>U===S.pattern?"":U),M(U=>U===S.description?"":U)})},s=n=>{l({intent:"removeAllowlistEntry",entryId:String(n)})},h=n=>{l({intent:"removeAllowlistGroup",entryId:String(n)})};return c("section",{"data-testid":"allowlist-view-section",style:{display:"flex",flexDirection:"column",gap:"1.2rem"},children:[r("h2",{style:se,children:i.allowlistView.title}),r(_,{result:m}),c("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:[c("div",{style:{flex:2,minWidth:"220px"},children:[r("label",{htmlFor:"allowlist-pattern-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.pattern}),r("input",{id:"allowlist-pattern-input-field",type:"text",value:y,onChange:n=>g(n.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"}})]}),c("div",{style:{flex:1,minWidth:"140px"},children:[r("label",{htmlFor:"allowlist-type-select-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.type}),c("select",{id:"allowlist-type-select-field",value:v,onChange:n=>A(n.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:[r("option",{value:"email",children:i.allowlistView.emailType}),r("option",{value:"domain",children:i.allowlistView.domainType})]})]}),c("div",{style:{flex:2,minWidth:"200px"},children:[r("label",{htmlFor:"allowlist-desc-input-field",style:{display:"block",fontSize:"0.78rem",color:"#475569",marginBottom:"4px"},children:i.allowlistView.description}),r("input",{id:"allowlist-desc-input-field",type:"text",value:f,onChange:n=>M(n.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"}})]}),r("button",{type:"submit","data-testid":"submit-allowlist-add",disabled:t,"aria-busy":t,style:{padding:"7px 16px",borderRadius:"6px",backgroundColor:"#047857",color:"#ffffff",border:"none",fontSize:"0.85rem",fontWeight:600,cursor:"pointer"},children:i.allowlistView.addEntry})]}),r("div",{style:{backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0",overflow:"hidden"},children:c("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",textAlign:"left"},children:[r("thead",{children:c("tr",{style:{backgroundColor:"#f8fafc",borderBottom:"1px solid #e2e8f0",color:"#475569"},children:[r("th",{scope:"col",style:{padding:"10px 14px"},children:i.common.id}),r("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.target}),r("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.type}),r("th",{scope:"col",style:{padding:"10px 14px"},children:i.allowlistView.description}),r("th",{scope:"col",style:{padding:"10px 14px",textAlign:"right"},children:i.common.actions})]})}),c("tbody",{children:[e.allowlist.map(n=>c("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`allowlist-row-${n.type}-${n.id}`,"data-allowlist-type":n.type,children:[r("td",{style:{padding:"10px 14px",color:"#475569"},children:x(i.common.idTemplate,{id:n.id})}),r("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:n.type==="group"?c("span",{"data-testid":`allowlist-group-${n.type}-${n.id}`,children:[n.groupName,r("span",{style:{marginLeft:"6px",fontFamily:"monospace",fontSize:"0.78rem",color:"#64748b"},children:n.groupKey})]}):r("span",{style:{fontFamily:"monospace"},children:n.pattern})}),r("td",{style:{padding:"10px 14px"},children:r("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",...gt(n.type),fontWeight:600},children:yt(n.type,i)})}),c("td",{style:{padding:"10px 14px",color:"#475569"},children:[n.description||i.common.none,n.owner.kind==="deployment"&&r("span",{"data-testid":`allowlist-owner-${n.type}-${n.id}`,style:{marginLeft:"8px",fontSize:"0.72rem",color:"#475569"},children:i.allowlistView.deploymentOwner})]}),r("td",{style:{padding:"10px 14px",textAlign:"right"},children:n.readOnly?r("span",{"data-testid":`readonly-allowlist-${n.type}-${n.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:i.common.readOnly}):r("button",{type:"button",onClick:()=>{window.confirm(x(i.allowlistView.confirmDelete,{target:n.type==="group"?n.groupName:n.pattern}))&&(n.type==="group"?h(n.id):s(n.id))},disabled:t,"aria-busy":t,"aria-label":x(i.allowlistView.deleteAria,{target:n.type==="group"?n.groupName:n.pattern}),"data-testid":`remove-allowlist-btn-${n.type}-${n.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.78rem",cursor:"pointer"},children:i.common.delete})})]},`${n.type}-${n.id}`)),e.allowlist.length===0&&r("tr",{children:r("td",{colSpan:5,style:{padding:"2rem",textAlign:"center",color:"#475569"},children:i.allowlistView.empty})})]})]})})]})}function ft(){let e=oe(),o=ne(),{submit:i,result:l}=ae(o),m=e.labels??Q,t=m.directoryView,y=e.groups.filter(u=>!u.externalLink),[g,v]=E(""),[A,f]=E(""),[M,d]=E(""),[s,h]=E("direct"),n=e.groups.filter(u=>u.externalLink),S=new Set(e.allowlist.filter(u=>u.type==="group").map(u=>u.groupId)),U=u=>e.allowlist.find(L=>L.type==="group"&&L.groupId===u),w=o.state!=="idle",[b,V]=E(null),C=Ge(l,m),G=b===null||(e.groups.find(P=>P.id===b.groupId)?.externalLink?.syncedAt??null)!==b.syncedAtAtPress?null:b.groupId,q=e.directoryStatus.isEnabled&&e.directoryStatus.provider!=="",O=te(()=>Ue(e.catalog,Re(n),m),[e.catalog,n,m]),k=te(()=>O.filter(u=>u.disabled!==!0).length,[O]),R=u=>{if(u.preventDefault(),!(g&&A))return;let L=y.find(p=>String(p.id)===g);if(!window.confirm(x(t.confirmLink,{group:L?.name??g,upstream:A})))return;let P=A;i({intent:"linkDirectoryGroup",groupId:g,provider:e.directoryStatus.provider,externalKey:P,externalId:M,membershipMode:s},()=>{f(p=>p===P?"":p),d(p=>A===P?"":p),v("")})};return c("section",{"data-testid":"directory-view-section",style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[r("h2",{style:se,children:t.title}),r(_,{result:l}),!q&&r("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:t.notWiredNotice}),q&&e.groups.length===0&&r("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:t.noGroupsToLink}),q&&e.groups.length>0&&y.length===0&&r("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:t.nothingToLink}),r("p",{"data-testid":"directory-sync-already-pending",role:"status","aria-live":"polite",hidden:C===null,style:C===null?void 0:{margin:0,padding:"0.5rem 0.7rem",borderRadius:"6px",backgroundColor:"#fffbeb",border:"1px solid #fde68a",color:"#92400e",fontSize:"0.8rem"},children:C}),q&&y.length>0&&c("form",{onSubmit:R,"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:[c("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[r("label",{htmlFor:"directory-group-select-input",style:re,children:t.selectGroup}),c("select",{id:"directory-group-select-input","data-testid":"directory-group-select",value:g,onChange:u=>v(u.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[r("option",{value:"",children:t.selectGroup}),y.map(u=>r("option",{value:String(u.id),children:x(t.groupOptionTemplate,{name:u.name,key:u.groupKey})},u.id))]})]}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem",flex:1,minWidth:"260px"},children:e.catalog.kind==="ready"&&e.catalog.groups.length>0?c(me,{children:[r("div",{id:"directory-external-key-label",style:re,children:t.externalKey}),r("div",{"data-testid":"directory-external-key-picker",onKeyDown:u=>{u.nativeEvent.isComposing||u.nativeEvent.keyCode===229||u.key==="Enter"&&u.preventDefault()},children:r(Se,{options:O,value:M===""?null:O.find(u=>u.value===M)??null,onChange:u=>{if(u===null||Array.isArray(u)){d(""),f("");return}d(String(u.value)),f(u.entry.externalKey)},placeholder:t.pickUpstreamPlaceholder,ariaLabelledBy:"directory-external-key-label",renderOption:Le,texts:Te(m),clearable:!0})}),k===0&&r("span",{"data-testid":"directory-all-upstream-linked",style:{fontSize:"0.72rem",color:"#92400e"},children:m.groupsView.allUpstreamLinked}),r(Me,{observedAt:e.catalog.observedAt,isStale:e.catalog.isStale,labels:m})]}):c(me,{children:[r("label",{htmlFor:"directory-external-key-input",style:re,children:t.externalKey}),r("input",{id:"directory-external-key-input",type:"email",required:!0,"data-testid":"directory-external-key",placeholder:t.externalKeyPlaceholder,value:A,onChange:u=>{d(""),f(u.target.value)},style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"}}),e.catalog.kind==="unavailable"&&r("span",{"data-testid":"directory-catalog-unavailable",style:{fontSize:"0.72rem",color:"#92400e"},children:x(m.groupsView.catalogUnavailable,{reason:m.groupsView.catalogFailures[e.catalog.reason]})}),e.catalog.kind==="ready"&&r("span",{"data-testid":"directory-catalog-empty",style:{fontSize:"0.72rem",color:"#475569"},children:x(m.groupsView.catalogEmpty,{at:J(e.catalog.observedAt,m)})})]})}),c("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[r("label",{htmlFor:"directory-membership-mode-input",style:re,children:t.membershipMode}),c("select",{id:"directory-membership-mode-input","data-testid":"directory-membership-mode",value:s,onChange:u=>h(u.target.value),style:{padding:"0.5rem",borderRadius:"6px",border:"1px solid #cbd5e1"},children:[r("option",{value:"direct",children:t.directMode}),r("option",{value:"transitive",children:t.transitiveMode})]})]}),r("button",{type:"submit","data-testid":"directory-link-submit",disabled:!(g&&A)||w,"aria-busy":w,style:{padding:"0.5rem 1rem",borderRadius:"6px",border:"none",backgroundColor:g&&A&&!w?"#2563eb":"#94a3b8",color:"#fff",fontWeight:600},children:t.link})]}),n.length===0?r("div",{"data-testid":"directory-empty",style:{padding:"2rem",textAlign:"center",color:"#64748b",backgroundColor:"#ffffff",borderRadius:"8px",border:"1px solid #e2e8f0"},children:t.empty}):c("table",{"data-testid":"directory-table",style:{width:"100%",borderCollapse:"collapse",backgroundColor:"#ffffff",borderRadius:"8px",overflow:"hidden",border:"1px solid #e2e8f0"},children:[r("thead",{children:c("tr",{style:{backgroundColor:"#f8fafc",textAlign:"left"},children:[r("th",{scope:"col",style:W,children:m.groupsView.name}),r("th",{scope:"col",style:W,children:t.externalKey}),r("th",{scope:"col",style:W,children:t.membershipMode}),r("th",{scope:"col",style:W,children:t.lastSynced}),r("th",{scope:"col",style:W,children:m.common.status}),r("th",{scope:"col",style:W,children:m.common.actions})]})}),r("tbody",{children:n.map(u=>{let L=u.externalLink,P=S.has(u.id);return c("tr",{"data-testid":`directory-row-${u.id}`,"data-sync-enabled":String(L.isSyncEnabled),style:{borderTop:"1px solid #e2e8f0"},children:[c("td",{style:W,children:[u.name,r("div",{style:{fontSize:"0.75rem",color:"#64748b"},children:u.groupKey})]}),r("td",{style:W,"data-testid":`directory-external-${u.id}`,children:L.externalKey}),r("td",{style:W,children:L.membershipMode==="direct"?t.directMode:t.transitiveMode}),c("td",{style:W,"data-testid":`directory-synced-${u.id}`,children:[L.syncedAt?J(L.syncedAt,m):t.neverSynced,L.unresolvedCount>0?r("div",{style:{fontSize:"0.75rem",color:"#b45309"},"data-testid":`directory-unresolved-${u.id}`,children:x(t.unresolvedTemplate,{count:L.unresolvedCount})}):null]}),c("td",{style:W,children:[r("span",{"data-testid":`directory-status-${u.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?t.syncEnabled:t.syncPaused}),L.syncError?r("div",{style:{fontSize:"0.75rem",color:"#b91c1c",marginTop:"0.25rem"},"data-testid":`directory-error-${u.id}`,children:L.syncError}):null]}),r("td",{style:W,children:c("div",{style:{display:"flex",gap:"0.35rem",flexWrap:"wrap"},children:[r("button",{type:"button","data-testid":`directory-sync-now-${u.id}`,...Y(w),"aria-label":x(G===u.id?t.syncQueuedAria:t.syncNowAria,{group:u.name}),onClick:()=>i({intent:"requestDirectorySync",groupId:String(u.id)},p=>{p?.syncRequest==="queued"&&V({groupId:u.id,syncedAtAtPress:u.externalLink?.syncedAt??null})}),style:ue,children:G===u.id?t.syncQueued:t.syncNow}),r("button",{type:"button","data-testid":`directory-toggle-sync-${u.id}`,...Y(w),"aria-label":x(L.isSyncEnabled?t.pauseAria:t.resumeAria,{group:u.name}),onClick:()=>{V(null),i({intent:"setDirectorySyncEnabled",groupId:String(u.id),isSyncEnabled:String(!L.isSyncEnabled)})},style:ue,children:L.isSyncEnabled?t.pause:t.resume}),r("button",{type:"button","data-testid":`directory-allow-${u.id}`,...Y(w),"aria-label":x(P?t.disallowGroupAria:t.allowGroupAria,{group:u.name}),onClick:()=>{let p=U(u.id);if(P&&p){if(!window.confirm(x(t.confirmDisallow,{group:u.name})))return;i({intent:"removeAllowlistGroup",entryId:String(p.id)})}else i({intent:"addAllowlistGroup",groupId:String(u.id)})},style:ue,children:P?t.disallowGroup:t.allowGroup}),r("button",{type:"button","data-testid":`directory-unlink-${u.id}`,...Y(w),"aria-label":x(t.unlinkAria,{group:u.name}),onClick:()=>{window.confirm(x(t.confirmUnlink,{group:u.name,upstream:u.externalLink?.externalKey??""}))&&i({intent:"unlinkDirectoryGroup",groupId:String(u.id)})},style:{...ue,color:"#b91c1c",borderColor:"#fecaca"},children:t.unlink})]})})]},u.id)})})]})]})}var re={fontSize:"0.78rem",color:"#475569",fontWeight:600},ke={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clipPath:"inset(50%)",whiteSpace:"nowrap",border:0},se={margin:0,fontSize:"1.05rem",fontWeight:700,color:"#0f172a"},W={padding:"0.6rem 0.75rem",fontSize:"0.85rem",verticalAlign:"top"};function Y(e){return{"aria-disabled":e,"aria-busy":e,"data-busy":e?"true":void 0}}var ue={padding:"0.25rem 0.6rem",fontSize:"0.75rem",borderRadius:"6px",border:"1px solid #cbd5e1",backgroundColor:"#fff",cursor:"pointer"},Ae={users:Ve,groups:ct,group_members:mt,allowlist:bt,directory:ft};function Kt({renderHeader:e,pendingSyncPolling:o}={}){let l=oe()?.segment??"users",m=Object.hasOwn(Ae,l)?Ae[l]:Ve;return r(ve,{renderHeader:e,pendingSyncPolling:o,children:r(m,{})})}export{bt as AllowlistView,Kt as AuthUserAdminAppView,ot as DEFAULT_PENDING_SYNC_POLLING,ft as DirectoryView,mt as GroupMembersView,ct as GroupsView,$ as UserAdminInputError,B as UserAdminOperatorError,ve as UserAdminShell,Ve as UsersView,St as createInMemoryUserAdminStore,Mt as createUserAdminApp,Q as defaultUserAdminLabels,ht as jaUserAdminLabels,z as normalizeUpstreamKey,fe as resolveUserAdminLabels,Ut as userAdminAccessFor,Ct as userAdminIntents};
2
2
  //# sourceMappingURL=admin.mjs.map