@aiquants/auth-react-router 0.14.0 → 0.14.2

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 x(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}],l=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[...l]},async addAllowlistEntry(t){let b={id:Math.max(...l.map(y=>y.id),0)+1,pattern:t.pattern,type:t.type,description:t.description,owner:{kind:"tenant",tenantId:"default"},readOnly:!1};return l.push(b),b},async removeAllowlistEntry(t){l=l.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}`);l=[...l,{id:Math.max(...l.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){l=l.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:l,observedAt:t}=await e.listGroups(i);return t===null||!Number.isFinite(t.getTime())?{kind:"unavailable",reason:"neverObserved"}:{kind:"ready",groups:l,observedAt:t.toISOString(),isStale:Oe(t,d)}}catch(l){return console.error("[@aiquants/auth-react-router] directoryCatalog.listGroups failed; the picker falls back to manual entry:",l),{kind:"unavailable",reason:Qe(l)}}}function N(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 wt(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 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 xt(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 l({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,s,U,k,w,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,w.stalenessThresholdSec);return{resourceLabels:e.resourceLabels,segment:n,users:m,groups:s,groupMembers:U,allowlist:k,directoryStatus:w,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")??""),s=de.get(m);if(!s)return le({ok:!1,error:o.errors.unknownIntent},{status:400});let U=w=>$e(w),k=w=>{try{e.guards.onDenied?.({intent:m,actions:s,error:w})}catch{}return le({ok:!1,error:o.errors.forbidden},{status:403})};try{for(let w of s)await e.guards.requireAccess(g,{action:w,intent:m})}catch(w){if(!U(w))throw w;return k(w)}try{return await h(m,A,g)}catch(w){if(U(w))return k(w);if(w instanceof Response)throw w;if(w instanceof $){let M=w.values.field,R=typeof M=="string"?{...w.values,field:o.errors.fieldNames[M]??M}:w.values,C=o.errors[w.labelKey];return{ok:!1,error:x(typeof C=="string"?C:String(w.labelKey),R)}}return console.error(`[@aiquants/auth-react-router] intent "${m}" failed:`,w),{ok:!1,error:Be(w)?w.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 s=N(n),U=A.groups.find(k=>N(k.externalKey)===s);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=N(g),m=N(n),U=(await e.store.listGroups()).find(k=>k.externalLink!==void 0&&(N(k.externalLink.externalId)===A||N(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=N(g),s=N(n);if(!A.groups.some(U=>N(U.externalId)===m&&N(U.externalKey)===s))throw new $("unknownUpstream",{key:n})}async function h(g,n,A){let m=null,s=async()=>(m??(m=await e.store.getDirectoryStatus()),m),U=async()=>he(e.directoryCatalog,!0,A,(await s()).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"),w=y(await s()),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:w,externalId:R,externalKey:k,membershipMode:we(n)}),{ok:!0}}if(g==="linkDirectoryGroup"){let k=K(n,"externalKey"),w=y(await s()),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:w,externalId:R,externalKey:k,membershipMode:we(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:l,action:t}}import{Link as Ze,useLoaderData as Ye}from"react-router";import{jsx as z,jsxs as X}from"react/jsx-runtime";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,":"]}),z("span",{children:o.text})]})}function Je({status:e,labels:o,groups:i}){if(!e||e.linkedGroupCount===0)return null;let d=o.directoryView,l=[];if(e.isEnabled||l.push({id:"disabled",text:d.disabledWarning}),e.pausedGroupCount>0&&l.push({id:"paused",text:x(d.pausedTemplate,{paused:e.pausedGroupCount,total:e.linkedGroupCount})}),e.isStale){let t=e.oldestSyncedAt?J(e.oldestSyncedAt,o):d.neverSynced;l.push({id:"stale",text:`${d.staleWarning} ${x(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 x(o.common.idTemplate,{id:b});let v=y.externalLink?.syncError;return v?x(d.erroredItemTemplate,{group:y.name,reason:v}):y.name});l.push({id:"errored",text:x(d.erroredTemplate,{groups:t.join(d.listSeparator)})})}return e.pendingRequestCount>0&&l.push({id:"pending",text:x(d.pendingTemplate,{count:e.pendingRequestCount})}),l.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:[z("h2",{id:"directory-sync-heading",style:{margin:0,fontSize:"0.9rem",fontWeight:700},children:d.title}),l.map(t=>z("span",{"data-directory-warning":t.id,children:t.text},t.id))]})}function ve({children:e,renderHeader:o}){let i=Ye(),d=i?.segment??"users",l=i?.labels??H,t=i?.myPermissions??null,b=i?.resourceLabels??{},y=m=>Object.hasOwn(b,m)?b[m]:m,v=[{key:"users",label:l.tabs.users,href:"/users"},{key:"groups",label:l.tabs.groups,href:"/users/groups"},{key:"group_members",label:l.tabs.groupMembers,href:"/users/group_members"},{key:"allowlist",label:l.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:l.tabs.directory,href:"/users/directory"});let h=Object.entries(t??{}),g={text:l.permissions.unknown,color:"#92400e",bgColor:"#fffbeb",borderColor:"#fde68a"},n=m=>m===void 0?g:m.canWrite?{text:l.permissions.canWrite,color:"#047857",bgColor:"#ecfdf5",borderColor:"#a7f3d0"}:m.canRead?{text:l.permissions.canRead,color:"#1d4ed8",bgColor:"#eff6ff",borderColor:"#bfdbfe"}:m.canDelete?{text:l.permissions.canDelete,color:"#b91c1c",bgColor:"#fef2f2",borderColor:"#fecaca"}:{text:l.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:[z("span",{style:{fontSize:"0.75rem",backgroundColor:"#e0f2fe",color:"#0369a1",padding:"2px 8px",borderRadius:"12px",fontWeight:600},children:l.heading}),X("div",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem",fontSize:"0.68rem",color:"#475569"},"data-testid":"user-admin-permissions-badge",children:[z("span",{style:{fontWeight:600,color:"#334155"},children:l.permissions.label}),z("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.18rem"},children:h.length===0?z("span",{"data-testid":"user-admin-permission-unavailable",children:z(xe,{label:l.heading,summary:g})}):h.map(([m,s])=>z(xe,{label:y(m),summary:n(s)},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:l.title,annotation:A}):X("div",{style:{marginBottom:"1.5rem",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[z("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:700,color:"#0f172a"},children:l.title}),A]}),z("nav",{"aria-label":l.title,style:{display:"flex",gap:"0.5rem",marginBottom:"1.2rem",borderBottom:"2px solid #e2e8f0",paddingBottom:"0.5rem"},children:v.map(m=>{let s=d===m.key;return z(Ze,{to:m.href,"data-testid":`user-admin-tab-${m.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:m.label},m.key)})}),z(Je,{status:i?.directoryStatus,labels:l,groups:i?.groups??[]}),z("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),l=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:l}}function pe(e,o,i){let d=ee(null),l=ee(o);return l.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(),l.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,s=!t?.contains(m);h.shiftKey&&(m===n||s)?(h.preventDefault(),A.focus()):!h.shiftKey&&(m===A||s)&&(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 l=o.get(N(d.externalId))??o.get(N(d.externalKey)),t=l!==void 0,b=d.memberCount===void 0?"":x(i.groupsView.upstreamOptionMembers,{count:d.memberCount});return{label:x(i.directoryView.groupOptionTemplate,{name:d.name,key:d.externalKey}),value:d.externalId,note:t?x(i.groupsView.upstreamAlreadyLinked,{group:l}):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: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 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(N(d.externalId),i.name),o.set(N(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,l)=>r("span",{"data-aqar-match":d.matchType==="none"?void 0:d.matchType,style:d.matchType==="none"?void 0:rt[d.matchType],children:d.text},l))}),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=>x(o.pickerSelected,{value:i.map(d=>d.label).join(", ")}),status:i=>x(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:l}=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"&&(s(""),k("")),S(c)},[m,s]=T(""),[U,k]=T(""),w=pe(g,()=>S(null),n),M=pe(h!==null,()=>S(null),n),R=o.state!=="idle",[C,O]=T({column:"displayName",ascending:!0}),q=ot(t.locale),F=b.trim().toLowerCase(),f=e.users.filter(c=>c.displayName.toLowerCase().includes(F)||c.email.toLowerCase().includes(F)).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:q(c[C.column],I[C.column])*j}),V=c=>{O(I=>I.column===c?{column:c,ascending:!I.ascending}:{column:c,ascending:!0})},u=c=>{R||c.isActive&&!window.confirm(x(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},()=>{s(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:l}),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:x(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":x(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:x(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":x(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":x(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:F===""?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:w,onSubmit:G,role:"dialog","aria-modal":"true","aria-labelledby":"create-user-title",...ce(l)?{"aria-describedby":"create-user-error"}:{},"data-testid":"user-create-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[r("h3",{id:"create-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.usersView.addUser}),r(Q,{result:l,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=>s(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(l)?{"aria-describedby":"edit-user-error"}:{},"data-testid":"user-edit-modal",style:{backgroundColor:"#ffffff",padding:"1.5rem",borderRadius:"8px",width:"360px",boxShadow:"0 10px 25px rgba(0,0,0,0.15)"},children:[r("h3",{id:"edit-user-title",style:{margin:"0 0 1rem 0",fontSize:"1.1rem"},children:t.usersView.editUser}),r(Q,{result:l,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:l}=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",[s,U]=T(""),[k,w]=T(""),[M,R]=T(""),[C,O]=T("local"),[q,F]=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(""),w(""),R(""),O("local"),V(null),G("direct"),E.current=null},De=a=>{if(a.preventDefault(),!(s&&k)||C==="upstream"&&f===null||C==="upstream"&&f!==null&&!window.confirm(x(t.groupsView.confirmCreateLinked,{group:k,upstream:f.externalKey})))return;let L={key:s,name:k,description:M},D=()=>{U(_=>_===L.key?"":_),w(_=>_===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??""};w(L.name),U(L.key),R(L.description),E.current=L},Ne=a=>{if(O(a),a==="upstream")return;V(null);let L=E.current;L&&(U(D=>D===L.key?"":D),w(D=>D===L.name?"":D),R(D=>D===L.description?"":D),E.current=null)},ze=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(x(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:l}),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:x(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":x(t.groupsView.openMembersAria,{group:a.name}),style:{fontSize:"0.78rem",color:"#1d4ed8",textDecoration:"none"},children:x(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":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:()=>Fe(a),...Z(m),"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}),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(l)?{"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:l,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":q===a?"":void 0,style:{outline:q===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:()=>Ne(a),"data-testid":`create-group-mode-${a}`,"data-aqar-visually-hidden":!0,onFocus:()=>F(a),onBlur:()=>F(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: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]})}),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: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"}})]}),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=>w(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:ze,role:"dialog","aria-modal":"true","aria-labelledby":"edit-group-title",...ce(l)?{"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:l,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),l=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,s]=T(""),[U,k]=T(!1),w=S??v??e.groups[0]?.id??null,M=e.groups.find(f=>f.id===w)??e.groups[0],R=w!==null&&M!==void 0&&M.id!==w?w:null,C=new Set(e.groupMembers.filter(f=>f.groupId===M?.id).map(f=>f.userId)),O=m.trim().toLowerCase(),q=e.users.filter(f=>U&&!C.has(f.id)&&!g.has(f.id)?!1:O===""?!0:f.displayName.toLowerCase().includes(O)||f.email.toLowerCase().includes(O)),F=(f,V)=>{if(l||!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:x(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:x(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=>s(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)}}),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:O===""&&U?t.groupMembersView.emptyNoMembers:t.groupMembersView.emptyFiltered}),r("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:q.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:()=>F(f.id,V),...Z(l),"aria-label":x(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:l}=ae(o),t=o.state!=="idle",[b,y]=T(""),[v,S]=T("email"),[h,g]=T(""),n=s=>{if(s.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=s=>{d({intent:"removeAllowlistEntry",entryId:String(s)})},m=s=>{d({intent:"removeAllowlistGroup",entryId:String(s)})};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:l}),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:s=>y(s.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:s=>S(s.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:s=>g(s.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(s=>p("tr",{style:{borderBottom:"1px solid #f1f5f9"},"data-testid":`allowlist-row-${s.type}-${s.id}`,"data-allowlist-type":s.type,children:[r("td",{style:{padding:"10px 14px",color:"#475569"},children:x(i.common.idTemplate,{id:s.id})}),r("td",{style:{padding:"10px 14px",fontWeight:600,color:"#0f172a"},children:s.type==="group"?p("span",{"data-testid":`allowlist-group-${s.type}-${s.id}`,children:[s.groupName,r("span",{style:{marginLeft:"6px",fontFamily:"monospace",fontSize:"0.78rem",color:"#64748b"},children:s.groupKey})]}):r("span",{style:{fontFamily:"monospace"},children:s.pattern})}),r("td",{style:{padding:"10px 14px"},children:r("span",{style:{fontSize:"0.75rem",padding:"2px 8px",borderRadius:"10px",...st(s.type),fontWeight:600},children:lt(s.type,i)})}),p("td",{style:{padding:"10px 14px",color:"#475569"},children:[s.description||i.common.none,s.owner.kind==="deployment"&&r("span",{"data-testid":`allowlist-owner-${s.type}-${s.id}`,style:{marginLeft:"8px",fontSize:"0.72rem",color:"#475569"},children:i.allowlistView.deploymentOwner})]}),r("td",{style:{padding:"10px 14px",textAlign:"right"},children:s.readOnly?r("span",{"data-testid":`readonly-allowlist-${s.type}-${s.id}`,style:{fontSize:"0.75rem",color:"#475569"},children:i.common.readOnly}):r("button",{type:"button",onClick:()=>{window.confirm(x(i.allowlistView.confirmDelete,{target:s.type==="group"?s.groupName:s.pattern}))&&(s.type==="group"?m(s.id):A(s.id))},disabled:t,"aria-busy":t,"aria-label":x(i.allowlistView.deleteAria,{target:s.type==="group"?s.groupName:s.pattern}),"data-testid":`remove-allowlist-btn-${s.type}-${s.id}`,style:{padding:"3px 8px",borderRadius:"4px",border:"1px solid #fee2e2",backgroundColor:"#fff5f5",color:"#b91c1c",fontSize:"0.78rem",cursor:"pointer"},children:i.common.delete})})]},`${s.type}-${s.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),l=e.labels??H,t=l.directoryView,b=e.groups.filter(u=>!u.externalLink),[y,v]=T(""),[S,h]=T(""),[g,n]=T(""),[A,m]=T("direct"),s=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),w=o.state!=="idle",[M,R]=T(null),C=typeof d=="object"&&d!==null&&d.syncRequest==="already-pending"?t.syncAlreadyPending:null,O=M===null||(e.groups.find(E=>E.id===M.groupId)?.externalLink?.syncedAt??null)!==M.syncedAtAtPress?null:M.groupId,q=e.directoryStatus.isEnabled&&e.directoryStatus.provider!=="",F=te(()=>Ue(e.catalog,Ge(s),l),[e.catalog,s,l]),f=te(()=>F.filter(u=>u.disabled!==!0).length,[F]),V=u=>{if(u.preventDefault(),!(y&&S))return;let G=b.find(c=>String(c.id)===y);if(!window.confirm(x(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}),!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&&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}),q&&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: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?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:F,value:g===""?null:F.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(l),clearable:!0})}),r(Me,{observedAt:e.catalog.observedAt,isStale:e.catalog.isStale,labels:l})]}):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:x(l.groupsView.catalogUnavailable,{reason:l.groupsView.catalogFailures[e.catalog.reason]})}),e.catalog.kind==="ready"&&r("span",{"data-testid":"directory-catalog-empty",style:{fontSize:"0.72rem",color:"#475569"},children:x(l.groupsView.catalogEmpty,{at:J(e.catalog.observedAt,l)})})]})}),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)||w,"aria-busy":w,style:{padding:"0.5rem 1rem",borderRadius:"6px",border:"none",backgroundColor:y&&S&&!w?"#2563eb":"#94a3b8",color:"#fff",fontWeight:600},children:t.link})]}),s.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:l.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:l.common.status}),r("th",{scope:"col",style:W,children:l.common.actions})]})}),r("tbody",{children:s.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,l):t.neverSynced,G.unresolvedCount>0?r("div",{style:{fontSize:"0.75rem",color:"#b45309"},"data-testid":`directory-unresolved-${u.id}`,children:x(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(w),"aria-label":x(O===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:O===u.id?t.syncQueued:t.syncNow}),r("button",{type:"button","data-testid":`directory-toggle-sync-${u.id}`,...Z(w),"aria-label":x(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(w),"aria-label":x(E?t.disallowGroupAria:t.allowGroupAria,{group:u.name}),onClick:()=>{let c=k(u.id);if(E&&c){if(!window.confirm(x(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(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 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,xt as createUserAdminApp,H as defaultUserAdminLabels,pt as jaUserAdminLabels,N as normalizeUpstreamKey,fe as resolveUserAdminLabels,wt as userAdminAccessFor,ht as userAdminIntents};
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};
2
2
  //# sourceMappingURL=admin.mjs.map