@burdenoff/microfe-auth 2026.511.1 → 2026.514.1
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/auth/AuthRoutes.d.ts.map +1 -1
- package/dist/auth/AuthRoutes.js +94 -58
- package/dist/auth/AuthRoutes.js.map +1 -1
- package/dist/auth/components/AuthLayout.js +1 -1
- package/dist/auth/components/AuthLayout.js.map +1 -1
- package/dist/auth/hooks/useApiKeyOperations.d.ts +5 -1
- package/dist/auth/hooks/useApiKeyOperations.d.ts.map +1 -1
- package/dist/auth/hooks/useAppOperations.d.ts +5 -1
- package/dist/auth/hooks/useAppOperations.d.ts.map +1 -1
- package/dist/auth/hooks/useDelegationOperations.d.ts +10 -2
- package/dist/auth/hooks/useDelegationOperations.d.ts.map +1 -1
- package/dist/auth/hooks/useSessionOperations.js +1 -1
- package/dist/auth/hooks/useSessionOperations.js.map +1 -1
- package/dist/auth/pages/AuditLogPage.d.ts +8 -1
- package/dist/auth/pages/AuditLogPage.d.ts.map +1 -1
- package/dist/auth/pages/AuditLogPage.js +189 -104
- package/dist/auth/pages/AuditLogPage.js.map +1 -1
- package/dist/auth/pages/MfaSetupPage.d.ts.map +1 -1
- package/dist/auth/pages/MfaSetupPage.js +5 -5
- package/dist/auth/pages/MfaSetupPage.js.map +1 -1
- package/dist/auth/pages/SecurityPage.d.ts.map +1 -1
- package/dist/auth/pages/SecurityPage.js +335 -267
- package/dist/auth/pages/SecurityPage.js.map +1 -1
- package/dist/auth/pages/SessionsPage.d.ts +6 -0
- package/dist/auth/pages/SessionsPage.d.ts.map +1 -1
- package/dist/auth/pages/SessionsPage.js +255 -143
- package/dist/auth/pages/SessionsPage.js.map +1 -1
- package/dist/auth/pages/UserDetailsPage.d.ts.map +1 -1
- package/dist/auth/pages/UserDetailsPage.js +1 -1
- package/dist/auth/pages/UserDetailsPage.js.map +1 -1
- package/dist/auth/pages/UsersPage.d.ts.map +1 -1
- package/dist/auth/pages/UsersPage.js +501 -378
- package/dist/auth/pages/UsersPage.js.map +1 -1
- package/dist/generated/global-operations.d.ts +219 -103
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +237 -166
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +2544 -270
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/wspace-operations.d.ts +41 -1
- package/dist/generated/wspace-operations.d.ts.map +1 -1
- package/dist/generated/wspace-operations.js +26 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +2974 -337
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/microfe-auth.css +1 -1
- package/dist/translations/en.d.ts +249 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/auth/pages/ApiKeysPage.d.ts +0 -5
- package/dist/auth/pages/ApiKeysPage.d.ts.map +0 -1
- package/dist/auth/pages/DelegationsPage.d.ts +0 -5
- package/dist/auth/pages/DelegationsPage.d.ts.map +0 -1
|
@@ -3,256 +3,368 @@ import { useSessionOperations as t } from "../hooks/useSessionOperations.js";
|
|
|
3
3
|
import "../hooks/index.js";
|
|
4
4
|
import { AlertIcon as n, SpinnerIcon as r } from "../components/AuthIcons.js";
|
|
5
5
|
import { formatRelativeTime as i, parseBrowserName as a, parseDeviceName as o } from "../utils/formatters.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { useCreateAuthExportJobMutation as s } from "../../generated/wspace-operations.js";
|
|
7
|
+
import { ConfirmActionDialog as c } from "../components/ConfirmActionDialog.js";
|
|
8
|
+
import { useState as l } from "react";
|
|
9
|
+
import { useI18n as u } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
10
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
10
11
|
//#region src/auth/pages/SessionsPage.tsx
|
|
11
|
-
function
|
|
12
|
-
let { t:
|
|
13
|
-
let n =
|
|
12
|
+
function m() {
|
|
13
|
+
let { t: m } = u(), h = (e, t) => {
|
|
14
|
+
let n = m(e);
|
|
14
15
|
return n === e ? t : n;
|
|
15
|
-
},
|
|
16
|
+
}, g = e((e) => e.isAuthenticated), { activeSessions: _, revokeSession: v, revokeAllSessions: y, isLoading: b } = t({ disableTokenInfoQuery: !0 }), [x, S] = l(null), [C, w] = l(null), [T, E] = l(null), [D, O] = l(!1), [k, { loading: A }] = s(), [j, M] = l(null), N = async () => {
|
|
17
|
+
M(null);
|
|
16
18
|
try {
|
|
17
|
-
await
|
|
19
|
+
await k({ variables: { input: {
|
|
20
|
+
name: "Sessions Export",
|
|
21
|
+
entityTypes: ["vibecontrols_sessions"],
|
|
22
|
+
format: "CSV",
|
|
23
|
+
exportScope: "INDIVIDUAL",
|
|
24
|
+
includeMetadata: !0
|
|
25
|
+
} } });
|
|
18
26
|
} catch (e) {
|
|
19
|
-
|
|
27
|
+
M(e instanceof Error ? e.message : "Failed to start export");
|
|
28
|
+
}
|
|
29
|
+
}, P = async (e) => {
|
|
30
|
+
try {
|
|
31
|
+
await v(e), w("Session revoked successfully"), E(null);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
S(e instanceof Error ? e.message : "Failed to revoke session");
|
|
20
34
|
}
|
|
21
35
|
};
|
|
22
|
-
return
|
|
36
|
+
return g ? /* @__PURE__ */ p("div", {
|
|
23
37
|
className: "max-w-4xl mx-auto p-6",
|
|
24
38
|
children: [
|
|
25
|
-
/* @__PURE__ */
|
|
26
|
-
open:
|
|
39
|
+
/* @__PURE__ */ f(c, {
|
|
40
|
+
open: T !== null,
|
|
27
41
|
onOpenChange: (e) => {
|
|
28
|
-
e ||
|
|
42
|
+
e || E(null);
|
|
29
43
|
},
|
|
30
44
|
title: "Revoke this session?",
|
|
31
45
|
description: "The selected device will be signed out immediately and will need to authenticate again.",
|
|
32
46
|
confirmText: "Revoke session",
|
|
33
47
|
variant: "danger",
|
|
34
|
-
isPending:
|
|
48
|
+
isPending: b,
|
|
35
49
|
onConfirm: async () => {
|
|
36
|
-
|
|
50
|
+
T && await P(T);
|
|
37
51
|
}
|
|
38
52
|
}),
|
|
39
|
-
/* @__PURE__ */
|
|
40
|
-
open:
|
|
41
|
-
onOpenChange:
|
|
53
|
+
/* @__PURE__ */ f(c, {
|
|
54
|
+
open: D,
|
|
55
|
+
onOpenChange: O,
|
|
42
56
|
title: "Revoke every other session?",
|
|
43
57
|
description: "All devices except your current one will be signed out immediately.",
|
|
44
58
|
confirmText: "Revoke all other sessions",
|
|
45
59
|
variant: "warning",
|
|
46
|
-
isPending:
|
|
60
|
+
isPending: b,
|
|
47
61
|
onConfirm: async () => {
|
|
48
62
|
try {
|
|
49
|
-
await
|
|
63
|
+
await y(), w("All other sessions have been revoked"), O(!1);
|
|
50
64
|
} catch (e) {
|
|
51
|
-
|
|
65
|
+
S(e instanceof Error ? e.message : "Failed to revoke all sessions");
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
}),
|
|
55
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ f("div", {
|
|
70
|
+
"aria-live": "polite",
|
|
71
|
+
"aria-atomic": "true",
|
|
72
|
+
className: "sr-only",
|
|
73
|
+
children: C
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ f("div", {
|
|
76
|
+
role: "alert",
|
|
77
|
+
"aria-live": "assertive",
|
|
78
|
+
"aria-atomic": "true",
|
|
79
|
+
className: "sr-only",
|
|
80
|
+
children: x
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ p("div", {
|
|
56
83
|
className: "flex items-center justify-between mb-8",
|
|
57
|
-
children: [/* @__PURE__ */
|
|
58
|
-
className: "text-3xl font-semibold text-
|
|
59
|
-
children:
|
|
60
|
-
}), /* @__PURE__ */
|
|
61
|
-
className: "text-
|
|
84
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
|
|
85
|
+
className: "text-3xl font-semibold text-text-primary",
|
|
86
|
+
children: h("auth.sessions.title", "Active Sessions")
|
|
87
|
+
}), /* @__PURE__ */ p("p", {
|
|
88
|
+
className: "text-text-secondary mt-2",
|
|
62
89
|
children: [
|
|
63
|
-
"You have
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
90
|
+
h("auth.sessions.sessionCount", "You have"),
|
|
91
|
+
" ",
|
|
92
|
+
_.length,
|
|
93
|
+
" ",
|
|
94
|
+
h(_.length === 1 ? "auth.sessions.sessionsSingular" : "auth.sessions.sessionsPlural", _.length === 1 ? "active session" : "active sessions")
|
|
67
95
|
]
|
|
68
|
-
})] }),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
96
|
+
})] }), /* @__PURE__ */ p("div", {
|
|
97
|
+
className: "flex items-center gap-3",
|
|
98
|
+
children: [/* @__PURE__ */ f("button", {
|
|
99
|
+
type: "button",
|
|
100
|
+
onClick: () => void N(),
|
|
101
|
+
disabled: A,
|
|
102
|
+
"aria-label": h("auth.sessions.exportAriaLabel", "Export sessions list"),
|
|
103
|
+
className: "flex items-center gap-2 px-4 py-2.5 rounded-xl border border-border-default text-text-primary bg-bg-surface hover:bg-bg-sunken disabled:opacity-50 disabled:cursor-not-allowed transition-colors font-medium",
|
|
104
|
+
children: A ? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(r, {
|
|
105
|
+
className: "w-4 h-4 animate-spin",
|
|
106
|
+
"aria-hidden": "true"
|
|
107
|
+
}), h("auth.sessions.exporting", "Exporting...")] }) : /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f("svg", {
|
|
108
|
+
className: "w-4 h-4",
|
|
109
|
+
fill: "none",
|
|
110
|
+
viewBox: "0 0 24 24",
|
|
111
|
+
stroke: "currentColor",
|
|
112
|
+
"aria-hidden": "true",
|
|
113
|
+
children: /* @__PURE__ */ f("path", {
|
|
114
|
+
strokeLinecap: "round",
|
|
115
|
+
strokeLinejoin: "round",
|
|
116
|
+
strokeWidth: 2,
|
|
117
|
+
d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
|
|
118
|
+
})
|
|
119
|
+
}), h("auth.sessions.export", "Export")] })
|
|
120
|
+
}), _.length > 1 && /* @__PURE__ */ f("button", {
|
|
121
|
+
type: "button",
|
|
122
|
+
onClick: () => O(!0),
|
|
123
|
+
className: "px-4 py-2.5 rounded-xl border border-status-error-border text-status-error-text font-medium hover:bg-status-error-bg-subtle transition-colors duration-200",
|
|
124
|
+
children: h("auth.sessions.revokeAll", "Revoke All Sessions")
|
|
125
|
+
})]
|
|
126
|
+
})]
|
|
127
|
+
}),
|
|
128
|
+
j && /* @__PURE__ */ p("div", {
|
|
129
|
+
role: "alert",
|
|
130
|
+
className: "mb-6 flex items-start gap-3 p-4 rounded-xl bg-status-error-bg-subtle border border-status-error-border",
|
|
131
|
+
children: [/* @__PURE__ */ f(n, {
|
|
132
|
+
className: "w-5 h-5 text-status-error-text flex-shrink-0 mt-0.5",
|
|
133
|
+
"aria-hidden": "true"
|
|
134
|
+
}), /* @__PURE__ */ f("p", {
|
|
135
|
+
className: "text-sm text-status-error-text",
|
|
136
|
+
children: j
|
|
72
137
|
})]
|
|
73
138
|
}),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
139
|
+
C && /* @__PURE__ */ p("div", {
|
|
140
|
+
role: "status",
|
|
141
|
+
className: "mb-6 p-4 rounded-xl bg-status-success-bg-subtle border border-status-success-border",
|
|
142
|
+
children: [/* @__PURE__ */ f("p", {
|
|
143
|
+
className: "text-status-success-text",
|
|
144
|
+
children: C
|
|
145
|
+
}), /* @__PURE__ */ f("button", {
|
|
146
|
+
type: "button",
|
|
147
|
+
onClick: () => w(null),
|
|
148
|
+
className: "mt-2 text-sm text-status-success-text hover:underline transition-colors duration-200",
|
|
82
149
|
children: "Dismiss"
|
|
83
150
|
})]
|
|
84
151
|
}),
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
152
|
+
x && /* @__PURE__ */ p("div", {
|
|
153
|
+
role: "alert",
|
|
154
|
+
className: "mb-6 flex items-start gap-3 p-4 rounded-xl bg-status-error-bg-subtle border border-status-error-border",
|
|
155
|
+
children: [/* @__PURE__ */ f(n, {
|
|
156
|
+
className: "w-5 h-5 text-status-error-text flex-shrink-0 mt-0.5",
|
|
157
|
+
"aria-hidden": "true"
|
|
158
|
+
}), /* @__PURE__ */ p("div", {
|
|
88
159
|
className: "flex-1",
|
|
89
|
-
children: [/* @__PURE__ */
|
|
90
|
-
className: "text-sm text-
|
|
91
|
-
children:
|
|
92
|
-
}), /* @__PURE__ */
|
|
93
|
-
|
|
94
|
-
|
|
160
|
+
children: [/* @__PURE__ */ f("p", {
|
|
161
|
+
className: "text-sm text-status-error-text",
|
|
162
|
+
children: x
|
|
163
|
+
}), /* @__PURE__ */ f("button", {
|
|
164
|
+
type: "button",
|
|
165
|
+
onClick: () => S(null),
|
|
166
|
+
className: "mt-2 text-sm text-status-error-text hover:underline transition-colors duration-200",
|
|
95
167
|
children: "Dismiss"
|
|
96
168
|
})]
|
|
97
169
|
})]
|
|
98
170
|
}),
|
|
99
|
-
|
|
171
|
+
b ? /* @__PURE__ */ p("div", {
|
|
172
|
+
"aria-live": "polite",
|
|
173
|
+
"aria-busy": "true",
|
|
100
174
|
className: "flex items-center justify-center py-12",
|
|
101
|
-
children: [/* @__PURE__ */
|
|
102
|
-
className: "
|
|
103
|
-
|
|
175
|
+
children: [/* @__PURE__ */ f(r, {
|
|
176
|
+
className: "w-8 h-8 text-text-link animate-spin",
|
|
177
|
+
"aria-hidden": "true"
|
|
178
|
+
}), /* @__PURE__ */ f("span", {
|
|
179
|
+
className: "ml-3 text-text-secondary",
|
|
180
|
+
children: h("auth.sessions.loading", "Loading sessions...")
|
|
104
181
|
})]
|
|
105
|
-
}) :
|
|
106
|
-
className: "text-center py-16 border-2 border-dashed border-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
182
|
+
}) : _.length === 0 ? /* @__PURE__ */ p("div", {
|
|
183
|
+
className: "text-center py-16 border-2 border-dashed border-border-subtle rounded-xl",
|
|
184
|
+
role: "status",
|
|
185
|
+
children: [/* @__PURE__ */ f("div", {
|
|
186
|
+
className: "w-16 h-16 mx-auto mb-4 rounded-full bg-bg-muted flex items-center justify-center",
|
|
187
|
+
children: /* @__PURE__ */ f("svg", {
|
|
188
|
+
className: "w-8 h-8 text-text-tertiary",
|
|
111
189
|
fill: "none",
|
|
112
190
|
viewBox: "0 0 24 24",
|
|
113
191
|
stroke: "currentColor",
|
|
114
|
-
|
|
192
|
+
"aria-hidden": "true",
|
|
193
|
+
children: /* @__PURE__ */ f("path", {
|
|
115
194
|
strokeLinecap: "round",
|
|
116
195
|
strokeLinejoin: "round",
|
|
117
196
|
strokeWidth: 1.5,
|
|
118
197
|
d: "M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
|
|
119
198
|
})
|
|
120
199
|
})
|
|
121
|
-
}), /* @__PURE__ */
|
|
122
|
-
className: "text-
|
|
123
|
-
children:
|
|
200
|
+
}), /* @__PURE__ */ f("p", {
|
|
201
|
+
className: "text-text-secondary",
|
|
202
|
+
children: h("auth.sessions.noSessions", "No active sessions found")
|
|
124
203
|
})]
|
|
125
|
-
}) : /* @__PURE__ */
|
|
204
|
+
}) : /* @__PURE__ */ f("div", {
|
|
126
205
|
className: "space-y-4",
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
206
|
+
"aria-live": "polite",
|
|
207
|
+
"aria-busy": b,
|
|
208
|
+
children: _.map((e) => /* @__PURE__ */ f("div", {
|
|
209
|
+
className: "p-6 rounded-xl border border-border-default bg-bg-surface shadow-sm hover:shadow-md transition-shadow",
|
|
210
|
+
children: /* @__PURE__ */ p("div", {
|
|
130
211
|
className: "flex items-start justify-between",
|
|
131
|
-
children: [/* @__PURE__ */
|
|
212
|
+
children: [/* @__PURE__ */ p("div", {
|
|
132
213
|
className: "flex items-start gap-4",
|
|
133
|
-
children: [/* @__PURE__ */
|
|
134
|
-
className: "w-12 h-12 rounded-xl bg-
|
|
135
|
-
|
|
136
|
-
|
|
214
|
+
children: [/* @__PURE__ */ f("div", {
|
|
215
|
+
className: "w-12 h-12 rounded-xl bg-bg-accent flex items-center justify-center flex-shrink-0",
|
|
216
|
+
"aria-hidden": "true",
|
|
217
|
+
children: /* @__PURE__ */ f("svg", {
|
|
218
|
+
className: "w-6 h-6 text-text-link",
|
|
137
219
|
fill: "none",
|
|
138
220
|
viewBox: "0 0 24 24",
|
|
139
221
|
stroke: "currentColor",
|
|
140
|
-
children: /* @__PURE__ */
|
|
222
|
+
children: /* @__PURE__ */ f("path", {
|
|
141
223
|
strokeLinecap: "round",
|
|
142
224
|
strokeLinejoin: "round",
|
|
143
225
|
strokeWidth: 1.5,
|
|
144
226
|
d: "M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
|
|
145
227
|
})
|
|
146
228
|
})
|
|
147
|
-
}), /* @__PURE__ */
|
|
229
|
+
}), /* @__PURE__ */ p("div", {
|
|
148
230
|
className: "flex-1",
|
|
149
231
|
children: [
|
|
150
|
-
/* @__PURE__ */
|
|
232
|
+
/* @__PURE__ */ p("div", {
|
|
151
233
|
className: "flex items-center gap-3 mb-1",
|
|
152
|
-
children: [/* @__PURE__ */
|
|
153
|
-
className: "text-lg font-semibold text-
|
|
154
|
-
children: e.isCurrent && o(e.userAgent) === "Unknown Device" ?
|
|
155
|
-
}), e.isCurrent && /* @__PURE__ */
|
|
156
|
-
|
|
157
|
-
|
|
234
|
+
children: [/* @__PURE__ */ f("h3", {
|
|
235
|
+
className: "text-lg font-semibold text-text-primary",
|
|
236
|
+
children: e.isCurrent && o(e.userAgent) === "Unknown Device" ? h("auth.sessions.thisDevice", "This Device") : o(e.userAgent)
|
|
237
|
+
}), e.isCurrent && /* @__PURE__ */ f("span", {
|
|
238
|
+
role: "status",
|
|
239
|
+
className: "px-2.5 py-1 rounded-full bg-status-success-bg-subtle text-status-success-text text-xs font-medium",
|
|
240
|
+
children: h("auth.sessions.currentSession", "Current Session")
|
|
158
241
|
})]
|
|
159
242
|
}),
|
|
160
|
-
/* @__PURE__ */
|
|
161
|
-
className: "text-sm text-
|
|
162
|
-
children: a(e.userAgent) === "Unknown Browser" && e.isCurrent ?
|
|
243
|
+
/* @__PURE__ */ f("p", {
|
|
244
|
+
className: "text-sm text-text-secondary mb-2",
|
|
245
|
+
children: a(e.userAgent) === "Unknown Browser" && e.isCurrent ? h("auth.sessions.currentBrowser", "Current Browser") : a(e.userAgent)
|
|
163
246
|
}),
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
className: "flex flex-wrap gap-4 text-sm text-
|
|
247
|
+
/* @__PURE__ */ p("dl", {
|
|
248
|
+
className: "flex flex-wrap gap-4 text-sm text-text-secondary",
|
|
166
249
|
children: [
|
|
167
|
-
e.ipAddress && e.ipAddress !== "unknown" && /* @__PURE__ */
|
|
250
|
+
e.ipAddress && e.ipAddress !== "unknown" && /* @__PURE__ */ p("div", {
|
|
168
251
|
className: "flex items-center gap-1.5",
|
|
169
|
-
children: [
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
252
|
+
children: [
|
|
253
|
+
/* @__PURE__ */ f("svg", {
|
|
254
|
+
className: "w-4 h-4",
|
|
255
|
+
fill: "none",
|
|
256
|
+
viewBox: "0 0 24 24",
|
|
257
|
+
stroke: "currentColor",
|
|
258
|
+
"aria-hidden": "true",
|
|
259
|
+
children: /* @__PURE__ */ f("path", {
|
|
260
|
+
strokeLinecap: "round",
|
|
261
|
+
strokeLinejoin: "round",
|
|
262
|
+
strokeWidth: 2,
|
|
263
|
+
d: "M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"
|
|
264
|
+
})
|
|
265
|
+
}),
|
|
266
|
+
/* @__PURE__ */ f("dt", {
|
|
267
|
+
className: "sr-only",
|
|
268
|
+
children: "IP address"
|
|
269
|
+
}),
|
|
270
|
+
/* @__PURE__ */ f("dd", { children: e.ipAddress })
|
|
271
|
+
]
|
|
181
272
|
}),
|
|
182
|
-
e.location && /* @__PURE__ */
|
|
273
|
+
e.location && /* @__PURE__ */ p("div", {
|
|
183
274
|
className: "flex items-center gap-1.5",
|
|
184
|
-
children: [
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
275
|
+
children: [
|
|
276
|
+
/* @__PURE__ */ p("svg", {
|
|
277
|
+
className: "w-4 h-4",
|
|
278
|
+
fill: "none",
|
|
279
|
+
viewBox: "0 0 24 24",
|
|
280
|
+
stroke: "currentColor",
|
|
281
|
+
"aria-hidden": "true",
|
|
282
|
+
children: [/* @__PURE__ */ f("path", {
|
|
283
|
+
strokeLinecap: "round",
|
|
284
|
+
strokeLinejoin: "round",
|
|
285
|
+
strokeWidth: 2,
|
|
286
|
+
d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"
|
|
287
|
+
}), /* @__PURE__ */ f("path", {
|
|
288
|
+
strokeLinecap: "round",
|
|
289
|
+
strokeLinejoin: "round",
|
|
290
|
+
strokeWidth: 2,
|
|
291
|
+
d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z"
|
|
292
|
+
})]
|
|
293
|
+
}),
|
|
294
|
+
/* @__PURE__ */ f("dt", {
|
|
295
|
+
className: "sr-only",
|
|
296
|
+
children: "Location"
|
|
297
|
+
}),
|
|
298
|
+
/* @__PURE__ */ f("dd", { children: e.location })
|
|
299
|
+
]
|
|
201
300
|
}),
|
|
202
|
-
/* @__PURE__ */
|
|
301
|
+
/* @__PURE__ */ p("div", {
|
|
203
302
|
className: "flex items-center gap-1.5",
|
|
204
303
|
children: [
|
|
205
|
-
/* @__PURE__ */
|
|
304
|
+
/* @__PURE__ */ f("svg", {
|
|
206
305
|
className: "w-4 h-4",
|
|
207
306
|
fill: "none",
|
|
208
307
|
viewBox: "0 0 24 24",
|
|
209
308
|
stroke: "currentColor",
|
|
210
|
-
|
|
309
|
+
"aria-hidden": "true",
|
|
310
|
+
children: /* @__PURE__ */ f("path", {
|
|
211
311
|
strokeLinecap: "round",
|
|
212
312
|
strokeLinejoin: "round",
|
|
213
313
|
strokeWidth: 2,
|
|
214
314
|
d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
215
315
|
})
|
|
216
316
|
}),
|
|
217
|
-
|
|
218
|
-
|
|
317
|
+
/* @__PURE__ */ f("dt", {
|
|
318
|
+
className: "sr-only",
|
|
319
|
+
children: "Last active"
|
|
320
|
+
}),
|
|
321
|
+
/* @__PURE__ */ p("dd", { children: [
|
|
322
|
+
h("auth.sessions.lastActive", "Last active"),
|
|
323
|
+
" ",
|
|
324
|
+
i(e.lastActivityAt)
|
|
325
|
+
] })
|
|
219
326
|
]
|
|
220
327
|
})
|
|
221
328
|
]
|
|
222
329
|
})
|
|
223
330
|
]
|
|
224
331
|
})]
|
|
225
|
-
}), !e.isCurrent && /* @__PURE__ */
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
332
|
+
}), !e.isCurrent && /* @__PURE__ */ f("button", {
|
|
333
|
+
type: "button",
|
|
334
|
+
onClick: () => E(e.id),
|
|
335
|
+
"aria-label": `${h("auth.sessions.revoke", "Revoke")} ${o(e.userAgent)} session`,
|
|
336
|
+
className: "ml-4 px-4 py-2 rounded-lg text-sm font-medium border border-status-error-border text-status-error-text bg-bg-surface hover:bg-status-error-bg-subtle transition-colors duration-200",
|
|
337
|
+
children: h("auth.sessions.revoke", "Revoke")
|
|
229
338
|
})]
|
|
230
339
|
})
|
|
231
340
|
}, e.id))
|
|
232
341
|
})
|
|
233
342
|
]
|
|
234
|
-
}) : /* @__PURE__ */
|
|
343
|
+
}) : /* @__PURE__ */ f("div", {
|
|
235
344
|
className: "max-w-4xl mx-auto p-6",
|
|
236
|
-
children: /* @__PURE__ */
|
|
237
|
-
className: "text-center py-16 border-2 border-dashed border-
|
|
345
|
+
children: /* @__PURE__ */ p("div", {
|
|
346
|
+
className: "text-center py-16 border-2 border-dashed border-border-subtle rounded-xl",
|
|
238
347
|
children: [
|
|
239
|
-
/* @__PURE__ */
|
|
240
|
-
className: "w-16 h-16 mx-auto mb-4 rounded-full bg-
|
|
241
|
-
children: /* @__PURE__ */
|
|
348
|
+
/* @__PURE__ */ f("div", {
|
|
349
|
+
className: "w-16 h-16 mx-auto mb-4 rounded-full bg-status-warning-bg-subtle flex items-center justify-center",
|
|
350
|
+
children: /* @__PURE__ */ f(n, {
|
|
351
|
+
className: "w-8 h-8 text-status-warning-text",
|
|
352
|
+
"aria-hidden": "true"
|
|
353
|
+
})
|
|
242
354
|
}),
|
|
243
|
-
/* @__PURE__ */
|
|
244
|
-
className: "text-xl font-semibold text-
|
|
245
|
-
children:
|
|
355
|
+
/* @__PURE__ */ f("h2", {
|
|
356
|
+
className: "text-xl font-semibold text-text-primary mb-2",
|
|
357
|
+
children: h("auth.sessions.authRequired", "Authentication Required")
|
|
246
358
|
}),
|
|
247
|
-
/* @__PURE__ */
|
|
248
|
-
className: "text-
|
|
249
|
-
children:
|
|
359
|
+
/* @__PURE__ */ f("p", {
|
|
360
|
+
className: "text-text-secondary",
|
|
361
|
+
children: h("auth.sessions.signInToView", "Please sign in to view your active sessions")
|
|
250
362
|
})
|
|
251
363
|
]
|
|
252
364
|
})
|
|
253
365
|
});
|
|
254
366
|
}
|
|
255
367
|
//#endregion
|
|
256
|
-
export {
|
|
368
|
+
export { m as SessionsPage };
|
|
257
369
|
|
|
258
370
|
//# sourceMappingURL=SessionsPage.js.map
|