@civic/auth 0.0.1-beta.28 → 0.0.1-beta.29
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/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-lint.log +14 -0
- package/.turbo/turbo-test.log +1678 -0
- package/civic-auth-0.0.1-beta.15.tgz +0 -0
- package/civic-auth-0.0.1-beta.17.tgz +0 -0
- package/dist/AuthProvider-BYZ8w92b.d.mts +15 -0
- package/dist/AuthProvider-BgOwv9h8.d.ts +15 -0
- package/dist/AuthProvider-Bj_Prt1x.d.ts +21 -0
- package/dist/AuthProvider-DUAoX4G9.d.mts +21 -0
- package/dist/UserProvider-BA2uflVB.d.ts +16 -0
- package/dist/UserProvider-Bl3j1PUO.d.mts +16 -0
- package/dist/UserProvider-CMLaYOUD.d.ts +16 -0
- package/dist/UserProvider-Cbm8MZkJ.d.mts +16 -0
- package/dist/chunk-4PLCDPEN.mjs +599 -0
- package/dist/chunk-4PLCDPEN.mjs.map +1 -0
- package/dist/chunk-5UQQYXCX.js +1 -0
- package/dist/chunk-5UQQYXCX.js.map +1 -0
- package/dist/chunk-63YGK3A7.mjs +223 -0
- package/dist/chunk-63YGK3A7.mjs.map +1 -0
- package/dist/chunk-6RFRDWIP.js +223 -0
- package/dist/chunk-6RFRDWIP.js.map +1 -0
- package/dist/chunk-7K3QN2AT.js +599 -0
- package/dist/chunk-7K3QN2AT.js.map +1 -0
- package/dist/chunk-AM2Y662I.js +601 -0
- package/dist/chunk-AM2Y662I.js.map +1 -0
- package/dist/chunk-AP4627CS.mjs +223 -0
- package/dist/chunk-AP4627CS.mjs.map +1 -0
- package/dist/chunk-CRTRMMJ7.js +59 -0
- package/dist/chunk-CRTRMMJ7.js.map +1 -0
- package/dist/chunk-CTVJJBBA.js +118 -0
- package/dist/chunk-CTVJJBBA.js.map +1 -0
- package/dist/chunk-EKLYHP2D.mjs +711 -0
- package/dist/chunk-EKLYHP2D.mjs.map +1 -0
- package/dist/chunk-FHRZSX3C.js +710 -0
- package/dist/chunk-FHRZSX3C.js.map +1 -0
- package/dist/chunk-GB3H3I47.js +711 -0
- package/dist/chunk-GB3H3I47.js.map +1 -0
- package/dist/chunk-JDZPCA3P.js +173 -0
- package/dist/chunk-JDZPCA3P.js.map +1 -0
- package/dist/chunk-JEOPLLWO.js +223 -0
- package/dist/chunk-JEOPLLWO.js.map +1 -0
- package/dist/chunk-MK7557NR.mjs +118 -0
- package/dist/chunk-MK7557NR.mjs.map +1 -0
- package/dist/chunk-NLRREFOX.mjs +710 -0
- package/dist/chunk-NLRREFOX.mjs.map +1 -0
- package/dist/chunk-O3WGNLRO.mjs +173 -0
- package/dist/chunk-O3WGNLRO.mjs.map +1 -0
- package/dist/chunk-OXXUQ36U.mjs +283 -0
- package/dist/chunk-OXXUQ36U.mjs.map +1 -0
- package/dist/chunk-PMJAV4JJ.mjs +1 -0
- package/dist/chunk-PMJAV4JJ.mjs.map +1 -0
- package/dist/chunk-Q7DSPTUG.mjs +601 -0
- package/dist/chunk-Q7DSPTUG.mjs.map +1 -0
- package/dist/chunk-RGHW4PYM.mjs +59 -0
- package/dist/chunk-RGHW4PYM.mjs.map +1 -0
- package/dist/chunk-TH6FI2XI.js +283 -0
- package/dist/chunk-TH6FI2XI.js.map +1 -0
- package/dist/cjs/src/browser/storage.d.ts +2 -2
- package/dist/cjs/src/browser/storage.d.ts.map +1 -1
- package/dist/cjs/src/browser/storage.js +3 -3
- package/dist/cjs/src/browser/storage.js.map +1 -1
- package/dist/cjs/src/nextjs/GetUser.d.ts +1 -1
- package/dist/cjs/src/nextjs/GetUser.d.ts.map +1 -1
- package/dist/cjs/src/nextjs/GetUser.js +3 -3
- package/dist/cjs/src/nextjs/GetUser.js.map +1 -1
- package/dist/cjs/src/nextjs/config.d.ts.map +1 -1
- package/dist/cjs/src/nextjs/config.js +0 -2
- package/dist/cjs/src/nextjs/config.js.map +1 -1
- package/dist/cjs/src/nextjs/cookies.d.ts +4 -4
- package/dist/cjs/src/nextjs/cookies.d.ts.map +1 -1
- package/dist/cjs/src/nextjs/cookies.js +14 -11
- package/dist/cjs/src/nextjs/cookies.js.map +1 -1
- package/dist/cjs/src/nextjs/routeHandler.d.ts.map +1 -1
- package/dist/cjs/src/nextjs/routeHandler.js +1 -5
- package/dist/cjs/src/nextjs/routeHandler.js.map +1 -1
- package/dist/cjs/src/reactjs/hooks/index.d.ts +0 -1
- package/dist/cjs/src/reactjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/src/reactjs/hooks/index.js +1 -3
- package/dist/cjs/src/reactjs/hooks/index.js.map +1 -1
- package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts.map +1 -1
- package/dist/cjs/src/server/ServerAuthenticationResolver.js +2 -7
- package/dist/cjs/src/server/ServerAuthenticationResolver.js.map +1 -1
- package/dist/cjs/src/server/login.d.ts +1 -1
- package/dist/cjs/src/server/login.d.ts.map +1 -1
- package/dist/cjs/src/server/login.js +2 -2
- package/dist/cjs/src/server/login.js.map +1 -1
- package/dist/cjs/src/services/AuthenticationService.d.ts.map +1 -1
- package/dist/cjs/src/services/AuthenticationService.js +6 -16
- package/dist/cjs/src/services/AuthenticationService.js.map +1 -1
- package/dist/cjs/src/shared/components/CivicAuthIframeContainer.d.ts.map +1 -1
- package/dist/cjs/src/shared/components/CivicAuthIframeContainer.js +0 -2
- package/dist/cjs/src/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
- package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js +2 -6
- package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
- package/dist/cjs/src/shared/lib/UserSession.d.ts +4 -4
- package/dist/cjs/src/shared/lib/UserSession.d.ts.map +1 -1
- package/dist/cjs/src/shared/lib/UserSession.js +4 -4
- package/dist/cjs/src/shared/lib/UserSession.js.map +1 -1
- package/dist/cjs/src/shared/lib/session.js +1 -1
- package/dist/cjs/src/shared/lib/session.js.map +1 -1
- package/dist/cjs/src/shared/lib/storage.d.ts +2 -2
- package/dist/cjs/src/shared/lib/storage.d.ts.map +1 -1
- package/dist/cjs/src/shared/lib/storage.js.map +1 -1
- package/dist/cjs/src/shared/lib/util.d.ts +4 -4
- package/dist/cjs/src/shared/lib/util.d.ts.map +1 -1
- package/dist/cjs/src/shared/lib/util.js +16 -15
- package/dist/cjs/src/shared/lib/util.js.map +1 -1
- package/dist/cjs/src/types.d.ts +2 -2
- package/dist/cjs/src/types.d.ts.map +1 -1
- package/dist/cjs/src/types.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/browser/storage.d.ts +2 -2
- package/dist/esm/src/browser/storage.d.ts.map +1 -1
- package/dist/esm/src/browser/storage.js +3 -3
- package/dist/esm/src/browser/storage.js.map +1 -1
- package/dist/esm/src/nextjs/GetUser.d.ts +1 -1
- package/dist/esm/src/nextjs/GetUser.d.ts.map +1 -1
- package/dist/esm/src/nextjs/GetUser.js +3 -3
- package/dist/esm/src/nextjs/GetUser.js.map +1 -1
- package/dist/esm/src/nextjs/config.d.ts.map +1 -1
- package/dist/esm/src/nextjs/config.js +0 -2
- package/dist/esm/src/nextjs/config.js.map +1 -1
- package/dist/esm/src/nextjs/cookies.d.ts +4 -4
- package/dist/esm/src/nextjs/cookies.d.ts.map +1 -1
- package/dist/esm/src/nextjs/cookies.js +14 -11
- package/dist/esm/src/nextjs/cookies.js.map +1 -1
- package/dist/esm/src/nextjs/routeHandler.d.ts.map +1 -1
- package/dist/esm/src/nextjs/routeHandler.js +1 -5
- package/dist/esm/src/nextjs/routeHandler.js.map +1 -1
- package/dist/esm/src/reactjs/hooks/index.d.ts +0 -1
- package/dist/esm/src/reactjs/hooks/index.d.ts.map +1 -1
- package/dist/esm/src/reactjs/hooks/index.js +0 -1
- package/dist/esm/src/reactjs/hooks/index.js.map +1 -1
- package/dist/esm/src/server/ServerAuthenticationResolver.d.ts.map +1 -1
- package/dist/esm/src/server/ServerAuthenticationResolver.js +2 -7
- package/dist/esm/src/server/ServerAuthenticationResolver.js.map +1 -1
- package/dist/esm/src/server/login.d.ts +1 -1
- package/dist/esm/src/server/login.d.ts.map +1 -1
- package/dist/esm/src/server/login.js +2 -2
- package/dist/esm/src/server/login.js.map +1 -1
- package/dist/esm/src/services/AuthenticationService.d.ts.map +1 -1
- package/dist/esm/src/services/AuthenticationService.js +6 -16
- package/dist/esm/src/services/AuthenticationService.js.map +1 -1
- package/dist/esm/src/shared/components/CivicAuthIframeContainer.d.ts.map +1 -1
- package/dist/esm/src/shared/components/CivicAuthIframeContainer.js +0 -2
- package/dist/esm/src/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
- package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js +2 -6
- package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
- package/dist/esm/src/shared/lib/UserSession.d.ts +4 -4
- package/dist/esm/src/shared/lib/UserSession.d.ts.map +1 -1
- package/dist/esm/src/shared/lib/UserSession.js +4 -4
- package/dist/esm/src/shared/lib/UserSession.js.map +1 -1
- package/dist/esm/src/shared/lib/session.js +1 -1
- package/dist/esm/src/shared/lib/session.js.map +1 -1
- package/dist/esm/src/shared/lib/storage.d.ts +2 -2
- package/dist/esm/src/shared/lib/storage.d.ts.map +1 -1
- package/dist/esm/src/shared/lib/storage.js.map +1 -1
- package/dist/esm/src/shared/lib/util.d.ts +4 -4
- package/dist/esm/src/shared/lib/util.d.ts.map +1 -1
- package/dist/esm/src/shared/lib/util.js +16 -15
- package/dist/esm/src/shared/lib/util.js.map +1 -1
- package/dist/esm/src/types.d.ts +2 -2
- package/dist/esm/src/types.d.ts.map +1 -1
- package/dist/esm/src/types.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/index.css +340 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/dist/nextjs/client.css +340 -0
- package/dist/nextjs/client.css.map +1 -0
- package/dist/nextjs/client.d.mts +10 -0
- package/dist/nextjs/client.d.ts +10 -0
- package/dist/nextjs/client.js +185 -0
- package/dist/nextjs/client.js.map +1 -0
- package/dist/nextjs/client.mjs +185 -0
- package/dist/nextjs/client.mjs.map +1 -0
- package/dist/nextjs.d.mts +267 -0
- package/dist/nextjs.d.ts +267 -0
- package/dist/nextjs.js +315 -0
- package/dist/nextjs.js.map +1 -0
- package/dist/nextjs.mjs +315 -0
- package/dist/nextjs.mjs.map +1 -0
- package/dist/react.d.mts +65 -0
- package/dist/react.d.ts +65 -0
- package/dist/react.js +226 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +226 -0
- package/dist/react.mjs.map +1 -0
- package/dist/server.d.mts +35 -0
- package/dist/server.d.ts +35 -0
- package/dist/server.js +20 -0
- package/dist/server.js.map +1 -0
- package/dist/server.mjs +20 -0
- package/dist/server.mjs.map +1 -0
- package/dist/src/shared/components/LoadingIcon.d.ts.map +1 -1
- package/dist/src/shared/components/LoadingIcon.js +0 -6
- package/dist/src/shared/components/LoadingIcon.js.map +1 -1
- package/dist/storage-ANmRwpZ3.d.ts +25 -0
- package/dist/storage-B2eAQNdv.d.ts +25 -0
- package/dist/storage-BJPUpxhm.d.mts +25 -0
- package/dist/storage-BJyqsZwC.d.mts +25 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types-Bqm9OCZN.d.mts +22 -0
- package/dist/types-Bqm9OCZN.d.ts +22 -0
- package/dist/types-BxAubCqO.d.mts +58 -0
- package/dist/types-BxAubCqO.d.ts +58 -0
- package/dist/types-DOfl9w7j.d.mts +23 -0
- package/dist/types-DOfl9w7j.d.ts +23 -0
- package/dist/types-HdCjGldB.d.mts +58 -0
- package/dist/types-HdCjGldB.d.ts +58 -0
- package/package.json +1 -1
- package/src/browser/storage.ts +3 -3
- package/src/nextjs/GetUser.ts +3 -3
- package/src/nextjs/config.ts +0 -2
- package/src/nextjs/cookies.ts +14 -18
- package/src/nextjs/routeHandler.ts +1 -5
- package/src/reactjs/hooks/index.ts +0 -1
- package/src/server/ServerAuthenticationResolver.ts +2 -7
- package/src/server/login.ts +2 -2
- package/src/services/AuthenticationService.ts +6 -16
- package/src/shared/components/CivicAuthIframeContainer.tsx +0 -4
- package/src/shared/lib/GenericAuthenticationRefresher.ts +3 -8
- package/src/shared/lib/UserSession.ts +6 -6
- package/src/shared/lib/session.ts +1 -1
- package/src/shared/lib/storage.ts +2 -2
- package/src/shared/lib/util.ts +21 -18
- package/src/types.ts +2 -2
- package/test/unit/nextjs/getUser.test.ts +8 -8
- package/test/unit/publicApi/__snapshots__/apiSnapshot.test.ts.snap +0 -7
- package/test/unit/server/login.test.ts +20 -18
- package/test/unit/server/session.test.ts +4 -4
- package/test/unit/services/AuthenticationService.test.ts +3 -3
- package/test/unit/services/ServerAuthenticationResolver.test.ts +11 -6
- package/test/unit/shared/GenericAuthenticationRefresher.test.ts +4 -4
- package/test/unit/shared/UserSession.test.ts +6 -6
- package/test/unit/shared/storage.test.ts +6 -6
- package/dist/cjs/src/nextjs/client/index.d.ts +0 -2
- package/dist/cjs/src/nextjs/client/index.d.ts.map +0 -1
- package/dist/cjs/src/nextjs/client/index.js +0 -6
- package/dist/cjs/src/nextjs/client/index.js.map +0 -1
- package/dist/cjs/src/styles.css +0 -387
- package/dist/esm/src/nextjs/client/index.d.ts +0 -2
- package/dist/esm/src/nextjs/client/index.d.ts.map +0 -1
- package/dist/esm/src/nextjs/client/index.js +0 -2
- package/dist/esm/src/nextjs/client/index.js.map +0 -1
- package/dist/esm/src/styles.css +0 -387
- package/dist/src/nextjs/client/index.d.ts +0 -2
- package/dist/src/nextjs/client/index.d.ts.map +0 -1
- package/dist/src/nextjs/client/index.js +0 -2
- package/dist/src/nextjs/client/index.js.map +0 -1
- package/dist/test/unit/nextjs/routeHandler.test.d.ts +0 -2
- package/dist/test/unit/nextjs/routeHandler.test.d.ts.map +0 -1
- package/dist/test/unit/nextjs/routeHandler.test.js +0 -271
- package/dist/test/unit/nextjs/routeHandler.test.js.map +0 -1
package/dist/react.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunkGB3H3I47js = require('./chunk-GB3H3I47.js');
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
var _chunkAM2Y662Ijs = require('./chunk-AM2Y662I.js');
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
var _chunkCRTRMMJ7js = require('./chunk-CRTRMMJ7.js');
|
|
23
|
+
|
|
24
|
+
// src/react/hooks/useUser.tsx
|
|
25
|
+
var _react = require('react');
|
|
26
|
+
|
|
27
|
+
// src/shared/CivicAuthProvider.tsx
|
|
28
|
+
var _reactquery = require('@tanstack/react-query');
|
|
29
|
+
require('@civic/auth/styles.css');
|
|
30
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
31
|
+
var queryClient = new (0, _reactquery.QueryClient)();
|
|
32
|
+
var CivicAuthProvider = (_a) => {
|
|
33
|
+
var _b = _a, { children } = _b, props = _chunkCRTRMMJ7js.__objRest.call(void 0, _b, ["children"]);
|
|
34
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactquery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
35
|
+
_chunkGB3H3I47js.AuthProvider,
|
|
36
|
+
_chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, props), {
|
|
37
|
+
pkceConsumer: new (0, _chunkAM2Y662Ijs.BrowserPublicClientPKCEProducer)(),
|
|
38
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGB3H3I47js.UserProvider, { storage: new (0, _chunkAM2Y662Ijs.LocalStorageAdapter)(), children })
|
|
39
|
+
})
|
|
40
|
+
) });
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// src/react/hooks/useUser.tsx
|
|
44
|
+
var useUser = () => {
|
|
45
|
+
const context = _react.useContext.call(void 0, _chunkGB3H3I47js.UserContext);
|
|
46
|
+
if (!context) {
|
|
47
|
+
throw new Error("useUser must be used within a UserProvider");
|
|
48
|
+
}
|
|
49
|
+
return context;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// src/react/components/UserButton.tsx
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
var ChevronDown = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
56
|
+
"svg",
|
|
57
|
+
{
|
|
58
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
59
|
+
width: "24",
|
|
60
|
+
height: "24",
|
|
61
|
+
viewBox: "0 0 24 24",
|
|
62
|
+
fill: "none",
|
|
63
|
+
stroke: "currentColor",
|
|
64
|
+
strokeWidth: "2",
|
|
65
|
+
strokeLinecap: "round",
|
|
66
|
+
strokeLinejoin: "round",
|
|
67
|
+
className: "lucide lucide-chevron-down",
|
|
68
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "m6 9 6 6 6-6" })
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
var ChevronUp = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
72
|
+
"svg",
|
|
73
|
+
{
|
|
74
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
75
|
+
width: "24",
|
|
76
|
+
height: "24",
|
|
77
|
+
viewBox: "0 0 24 24",
|
|
78
|
+
fill: "none",
|
|
79
|
+
stroke: "currentColor",
|
|
80
|
+
strokeWidth: "2",
|
|
81
|
+
strokeLinecap: "round",
|
|
82
|
+
strokeLinejoin: "round",
|
|
83
|
+
className: "lucide lucide-chevron-up",
|
|
84
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "m18 15-6-6-6 6" })
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
var UserButton = ({
|
|
88
|
+
displayMode,
|
|
89
|
+
className
|
|
90
|
+
}) => {
|
|
91
|
+
const [isOpen, setIsOpen] = _react.useState.call(void 0, false);
|
|
92
|
+
const { user, signIn, signOut } = useUser();
|
|
93
|
+
const handleClickOutside = _react.useCallback.call(void 0, (event) => {
|
|
94
|
+
const target = event.target;
|
|
95
|
+
if (!target.closest("#civic-dropdown-container")) {
|
|
96
|
+
setIsOpen(false);
|
|
97
|
+
}
|
|
98
|
+
}, []);
|
|
99
|
+
const handleSignOut = _react.useCallback.call(void 0, () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
|
|
100
|
+
signOut();
|
|
101
|
+
setIsOpen(false);
|
|
102
|
+
}), [signOut]);
|
|
103
|
+
const handleSignIn = _react.useCallback.call(void 0, () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
|
|
104
|
+
yield signIn(displayMode);
|
|
105
|
+
setIsOpen(false);
|
|
106
|
+
}), [signIn, displayMode]);
|
|
107
|
+
const handleEscape = _react.useCallback.call(void 0, (event) => {
|
|
108
|
+
if (event.key === "Escape") {
|
|
109
|
+
setIsOpen(false);
|
|
110
|
+
}
|
|
111
|
+
}, []);
|
|
112
|
+
_react.useEffect.call(void 0, () => {
|
|
113
|
+
if (isOpen) {
|
|
114
|
+
window.addEventListener("click", handleClickOutside);
|
|
115
|
+
window.addEventListener("keydown", handleEscape);
|
|
116
|
+
}
|
|
117
|
+
return () => {
|
|
118
|
+
window.removeEventListener("click", handleClickOutside);
|
|
119
|
+
window.removeEventListener("keydown", handleEscape);
|
|
120
|
+
};
|
|
121
|
+
}, [handleClickOutside, handleEscape, isOpen]);
|
|
122
|
+
if (user) {
|
|
123
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "cac-relative", id: "civic-dropdown-container", children: [
|
|
124
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
125
|
+
"button",
|
|
126
|
+
{
|
|
127
|
+
className: _chunkAM2Y662Ijs.cn.call(void 0,
|
|
128
|
+
"cac-flex cac-w-full cac-items-center cac-justify-between cac-gap-2 cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-text-neutral-500 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
129
|
+
className
|
|
130
|
+
),
|
|
131
|
+
onClick: () => setIsOpen((isOpen2) => !isOpen2),
|
|
132
|
+
children: [
|
|
133
|
+
(user == null ? void 0 : user.picture) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "cac-relative cac-flex cac-h-10 cac-w-10 cac-shrink-0 cac-gap-2 cac-overflow-hidden cac-rounded-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
134
|
+
"img",
|
|
135
|
+
{
|
|
136
|
+
className: "cac-h-full cac-w-full cac-object-cover",
|
|
137
|
+
src: user.picture,
|
|
138
|
+
alt: (user == null ? void 0 : user.name) || (user == null ? void 0 : user.email)
|
|
139
|
+
}
|
|
140
|
+
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}),
|
|
141
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: (user == null ? void 0 : user.name) || (user == null ? void 0 : user.email) }),
|
|
142
|
+
isOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChevronUp, {}) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChevronDown, {})
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
),
|
|
146
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
147
|
+
"div",
|
|
148
|
+
{
|
|
149
|
+
className: isOpen ? "cac-absolute cac-right-0 cac-mt-2 cac-w-full cac-rounded-lg cac-bg-white cac-py-2 cac-text-neutral-500 cac-shadow-xl" : "cac-hidden",
|
|
150
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
151
|
+
"button",
|
|
152
|
+
{
|
|
153
|
+
className: "cac-block cac-w-full cac-px-4 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
154
|
+
onClick: handleSignOut,
|
|
155
|
+
children: "Logout"
|
|
156
|
+
}
|
|
157
|
+
) }) })
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
] });
|
|
161
|
+
}
|
|
162
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
163
|
+
"button",
|
|
164
|
+
{
|
|
165
|
+
"data-testid": "sign-in-button",
|
|
166
|
+
className: _chunkAM2Y662Ijs.cn.call(void 0,
|
|
167
|
+
"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
168
|
+
className
|
|
169
|
+
),
|
|
170
|
+
onClick: handleSignIn,
|
|
171
|
+
children: "Sign in"
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
// src/react/components/SignInButton.tsx
|
|
177
|
+
|
|
178
|
+
var SignInButton = ({
|
|
179
|
+
displayMode,
|
|
180
|
+
className
|
|
181
|
+
}) => {
|
|
182
|
+
const { signIn } = useUser();
|
|
183
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
184
|
+
"button",
|
|
185
|
+
{
|
|
186
|
+
"data-testid": "sign-in-button",
|
|
187
|
+
className: _chunkAM2Y662Ijs.cn.call(void 0,
|
|
188
|
+
"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
189
|
+
className
|
|
190
|
+
),
|
|
191
|
+
onClick: () => signIn(displayMode),
|
|
192
|
+
children: "Sign In"
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/react/components/SignOutButton.tsx
|
|
198
|
+
|
|
199
|
+
var SignOutButton = ({ className }) => {
|
|
200
|
+
const { signOut } = useUser();
|
|
201
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
202
|
+
"button",
|
|
203
|
+
{
|
|
204
|
+
className: _chunkAM2Y662Ijs.cn.call(void 0,
|
|
205
|
+
"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
206
|
+
className
|
|
207
|
+
),
|
|
208
|
+
onClick: () => signOut(),
|
|
209
|
+
children: "Sign Out"
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
exports.CivicAuthIframeContainer = _chunkGB3H3I47js.CivicAuthIframeContainer; exports.CivicAuthProvider = CivicAuthProvider; exports.SignInButton = SignInButton; exports.SignOutButton = SignOutButton; exports.UserButton = UserButton; exports.useAuth = _chunkGB3H3I47js.useAuth; exports.useConfig = _chunkGB3H3I47js.useConfig; exports.useIframe = _chunkGB3H3I47js.useIframe; exports.useSession = _chunkGB3H3I47js.useSession; exports.useToken = _chunkGB3H3I47js.useToken; exports.useUser = useUser;
|
|
226
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/patrick/Code/civic-auth/packages/civic-auth-client/dist/react.js","../src/react/hooks/useUser.tsx","../src/shared/CivicAuthProvider.tsx","../src/react/components/UserButton.tsx","../src/react/components/SignInButton.tsx","../src/react/components/SignOutButton.tsx"],"names":["jsx","isOpen"],"mappings":"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","file":"/Users/patrick/Code/civic-auth/packages/civic-auth-client/dist/react.js","sourcesContent":[null,"\"use client\";\nimport { useContext } from \"react\";\nimport { UserContext, UserContextType } from \"@/react/providers\";\n\nconst useUser = <\n T extends Record<string, unknown> = Record<string, never>,\n>(): UserContextType<T> => {\n const context = useContext(UserContext);\n\n if (!context) {\n throw new Error(\"useUser must be used within a UserProvider\");\n }\n\n return context as UserContextType<T>;\n};\n\nexport { useUser };\n","\"use client\";\nimport { AuthProvider, AuthProviderProps } from \"./AuthProvider\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\n// adding the styles import here to be added to the bundle\nimport \"@civic/auth/styles.css\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE\";\nimport { UserProvider } from \"./UserProvider\";\nimport { LocalStorageAdapter } from \"@/browser/storage\";\n\nconst queryClient = new QueryClient();\n\ntype CivicAuthProviderProps = Omit<AuthProviderProps, \"pkceConsumer\">;\n\nconst CivicAuthProvider = ({ children, ...props }: CivicAuthProviderProps) => {\n return (\n <QueryClientProvider client={queryClient}>\n <AuthProvider\n {...props}\n pkceConsumer={new BrowserPublicClientPKCEProducer()}\n >\n <UserProvider storage={new LocalStorageAdapter()}>\n {children}\n </UserProvider>\n </AuthProvider>\n </QueryClientProvider>\n );\n};\n\nexport { CivicAuthProvider, type CivicAuthProviderProps };\n","\"use client\";\nimport { useUser } from \"@/react/hooks\";\nimport { DisplayMode } from \"@/types\";\nimport { cn } from \"@/utils\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nconst ChevronDown = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-chevron-down\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nconst ChevronUp = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-chevron-up\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n);\n\nconst UserButton = ({\n displayMode,\n className,\n}: {\n displayMode?: DisplayMode;\n className?: string;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const { user, signIn, signOut } = useUser();\n\n const handleClickOutside = useCallback((event: MouseEvent) => {\n const target = event.target as HTMLElement;\n\n if (!target.closest(\"#civic-dropdown-container\")) {\n setIsOpen(false);\n }\n }, []);\n\n const handleSignOut = useCallback(async () => {\n signOut();\n\n setIsOpen(false);\n }, [signOut]);\n\n const handleSignIn = useCallback(async () => {\n await signIn(displayMode);\n\n setIsOpen(false);\n }, [signIn, displayMode]);\n\n const handleEscape = useCallback((event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n window.addEventListener(\"click\", handleClickOutside);\n\n window.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n window.removeEventListener(\"click\", handleClickOutside);\n\n window.removeEventListener(\"keydown\", handleEscape);\n };\n }, [handleClickOutside, handleEscape, isOpen]);\n\n if (user) {\n return (\n <div className=\"cac-relative\" id=\"civic-dropdown-container\">\n <button\n className={cn(\n \"cac-flex cac-w-full cac-items-center cac-justify-between cac-gap-2 cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-text-neutral-500 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={() => setIsOpen((isOpen) => !isOpen)}\n >\n {user?.picture ? (\n <span className=\"cac-relative cac-flex cac-h-10 cac-w-10 cac-shrink-0 cac-gap-2 cac-overflow-hidden cac-rounded-full\">\n <img\n className=\"cac-h-full cac-w-full cac-object-cover\"\n src={user.picture}\n alt={user?.name || user?.email}\n />\n </span>\n ) : (\n <div />\n )}\n\n <span>{user?.name || user?.email}</span>\n\n {isOpen ? <ChevronUp /> : <ChevronDown />}\n </button>\n <div\n className={\n isOpen\n ? \"cac-absolute cac-right-0 cac-mt-2 cac-w-full cac-rounded-lg cac-bg-white cac-py-2 cac-text-neutral-500 cac-shadow-xl\"\n : \"cac-hidden\"\n }\n >\n <ul>\n <li>\n <button\n className=\"cac-block cac-w-full cac-px-4 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\"\n onClick={handleSignOut}\n >\n Logout\n </button>\n </li>\n </ul>\n </div>\n </div>\n );\n }\n\n return (\n <button\n data-testid=\"sign-in-button\"\n className={cn(\n \"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={handleSignIn}\n >\n Sign in\n </button>\n );\n};\n\nexport { UserButton };\n","\"use client\";\nimport { cn } from \"@/utils\";\nimport { DisplayMode } from \"@/types\";\nimport { useUser } from \"@/react/hooks\";\n\nconst SignInButton = ({\n displayMode,\n className,\n}: {\n displayMode?: DisplayMode;\n className?: string;\n}) => {\n const { signIn } = useUser();\n\n return (\n <button\n data-testid=\"sign-in-button\"\n className={cn(\n \"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={() => signIn(displayMode)}\n >\n Sign In\n </button>\n );\n};\n\nexport { SignInButton };\n","\"use client\";\nimport { cn } from \"@/utils\";\nimport { useUser } from \"@/react/hooks\";\n\nconst SignOutButton = ({ className }: { className?: string }) => {\n const { signOut } = useUser();\n\n return (\n <button\n className={cn(\n \"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={() => signOut()}\n >\n Sign Out\n </button>\n );\n};\n\nexport { SignOutButton };\n"]}
|
package/dist/react.mjs
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AuthProvider,
|
|
3
|
+
CivicAuthIframeContainer,
|
|
4
|
+
UserContext,
|
|
5
|
+
UserProvider,
|
|
6
|
+
useAuth,
|
|
7
|
+
useConfig,
|
|
8
|
+
useIframe,
|
|
9
|
+
useSession,
|
|
10
|
+
useToken
|
|
11
|
+
} from "./chunk-EKLYHP2D.mjs";
|
|
12
|
+
import {
|
|
13
|
+
BrowserPublicClientPKCEProducer,
|
|
14
|
+
LocalStorageAdapter,
|
|
15
|
+
cn
|
|
16
|
+
} from "./chunk-Q7DSPTUG.mjs";
|
|
17
|
+
import {
|
|
18
|
+
__async,
|
|
19
|
+
__objRest,
|
|
20
|
+
__spreadProps,
|
|
21
|
+
__spreadValues
|
|
22
|
+
} from "./chunk-RGHW4PYM.mjs";
|
|
23
|
+
|
|
24
|
+
// src/react/hooks/useUser.tsx
|
|
25
|
+
import { useContext } from "react";
|
|
26
|
+
|
|
27
|
+
// src/shared/CivicAuthProvider.tsx
|
|
28
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
29
|
+
import "@civic/auth/styles.css";
|
|
30
|
+
import { jsx } from "react/jsx-runtime";
|
|
31
|
+
var queryClient = new QueryClient();
|
|
32
|
+
var CivicAuthProvider = (_a) => {
|
|
33
|
+
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
34
|
+
return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(
|
|
35
|
+
AuthProvider,
|
|
36
|
+
__spreadProps(__spreadValues({}, props), {
|
|
37
|
+
pkceConsumer: new BrowserPublicClientPKCEProducer(),
|
|
38
|
+
children: /* @__PURE__ */ jsx(UserProvider, { storage: new LocalStorageAdapter(), children })
|
|
39
|
+
})
|
|
40
|
+
) });
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// src/react/hooks/useUser.tsx
|
|
44
|
+
var useUser = () => {
|
|
45
|
+
const context = useContext(UserContext);
|
|
46
|
+
if (!context) {
|
|
47
|
+
throw new Error("useUser must be used within a UserProvider");
|
|
48
|
+
}
|
|
49
|
+
return context;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// src/react/components/UserButton.tsx
|
|
53
|
+
import { useCallback, useEffect, useState } from "react";
|
|
54
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
55
|
+
var ChevronDown = () => /* @__PURE__ */ jsx2(
|
|
56
|
+
"svg",
|
|
57
|
+
{
|
|
58
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
59
|
+
width: "24",
|
|
60
|
+
height: "24",
|
|
61
|
+
viewBox: "0 0 24 24",
|
|
62
|
+
fill: "none",
|
|
63
|
+
stroke: "currentColor",
|
|
64
|
+
strokeWidth: "2",
|
|
65
|
+
strokeLinecap: "round",
|
|
66
|
+
strokeLinejoin: "round",
|
|
67
|
+
className: "lucide lucide-chevron-down",
|
|
68
|
+
children: /* @__PURE__ */ jsx2("path", { d: "m6 9 6 6 6-6" })
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
var ChevronUp = () => /* @__PURE__ */ jsx2(
|
|
72
|
+
"svg",
|
|
73
|
+
{
|
|
74
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
75
|
+
width: "24",
|
|
76
|
+
height: "24",
|
|
77
|
+
viewBox: "0 0 24 24",
|
|
78
|
+
fill: "none",
|
|
79
|
+
stroke: "currentColor",
|
|
80
|
+
strokeWidth: "2",
|
|
81
|
+
strokeLinecap: "round",
|
|
82
|
+
strokeLinejoin: "round",
|
|
83
|
+
className: "lucide lucide-chevron-up",
|
|
84
|
+
children: /* @__PURE__ */ jsx2("path", { d: "m18 15-6-6-6 6" })
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
var UserButton = ({
|
|
88
|
+
displayMode,
|
|
89
|
+
className
|
|
90
|
+
}) => {
|
|
91
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
92
|
+
const { user, signIn, signOut } = useUser();
|
|
93
|
+
const handleClickOutside = useCallback((event) => {
|
|
94
|
+
const target = event.target;
|
|
95
|
+
if (!target.closest("#civic-dropdown-container")) {
|
|
96
|
+
setIsOpen(false);
|
|
97
|
+
}
|
|
98
|
+
}, []);
|
|
99
|
+
const handleSignOut = useCallback(() => __async(void 0, null, function* () {
|
|
100
|
+
signOut();
|
|
101
|
+
setIsOpen(false);
|
|
102
|
+
}), [signOut]);
|
|
103
|
+
const handleSignIn = useCallback(() => __async(void 0, null, function* () {
|
|
104
|
+
yield signIn(displayMode);
|
|
105
|
+
setIsOpen(false);
|
|
106
|
+
}), [signIn, displayMode]);
|
|
107
|
+
const handleEscape = useCallback((event) => {
|
|
108
|
+
if (event.key === "Escape") {
|
|
109
|
+
setIsOpen(false);
|
|
110
|
+
}
|
|
111
|
+
}, []);
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
if (isOpen) {
|
|
114
|
+
window.addEventListener("click", handleClickOutside);
|
|
115
|
+
window.addEventListener("keydown", handleEscape);
|
|
116
|
+
}
|
|
117
|
+
return () => {
|
|
118
|
+
window.removeEventListener("click", handleClickOutside);
|
|
119
|
+
window.removeEventListener("keydown", handleEscape);
|
|
120
|
+
};
|
|
121
|
+
}, [handleClickOutside, handleEscape, isOpen]);
|
|
122
|
+
if (user) {
|
|
123
|
+
return /* @__PURE__ */ jsxs("div", { className: "cac-relative", id: "civic-dropdown-container", children: [
|
|
124
|
+
/* @__PURE__ */ jsxs(
|
|
125
|
+
"button",
|
|
126
|
+
{
|
|
127
|
+
className: cn(
|
|
128
|
+
"cac-flex cac-w-full cac-items-center cac-justify-between cac-gap-2 cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-text-neutral-500 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
129
|
+
className
|
|
130
|
+
),
|
|
131
|
+
onClick: () => setIsOpen((isOpen2) => !isOpen2),
|
|
132
|
+
children: [
|
|
133
|
+
(user == null ? void 0 : user.picture) ? /* @__PURE__ */ jsx2("span", { className: "cac-relative cac-flex cac-h-10 cac-w-10 cac-shrink-0 cac-gap-2 cac-overflow-hidden cac-rounded-full", children: /* @__PURE__ */ jsx2(
|
|
134
|
+
"img",
|
|
135
|
+
{
|
|
136
|
+
className: "cac-h-full cac-w-full cac-object-cover",
|
|
137
|
+
src: user.picture,
|
|
138
|
+
alt: (user == null ? void 0 : user.name) || (user == null ? void 0 : user.email)
|
|
139
|
+
}
|
|
140
|
+
) }) : /* @__PURE__ */ jsx2("div", {}),
|
|
141
|
+
/* @__PURE__ */ jsx2("span", { children: (user == null ? void 0 : user.name) || (user == null ? void 0 : user.email) }),
|
|
142
|
+
isOpen ? /* @__PURE__ */ jsx2(ChevronUp, {}) : /* @__PURE__ */ jsx2(ChevronDown, {})
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
),
|
|
146
|
+
/* @__PURE__ */ jsx2(
|
|
147
|
+
"div",
|
|
148
|
+
{
|
|
149
|
+
className: isOpen ? "cac-absolute cac-right-0 cac-mt-2 cac-w-full cac-rounded-lg cac-bg-white cac-py-2 cac-text-neutral-500 cac-shadow-xl" : "cac-hidden",
|
|
150
|
+
children: /* @__PURE__ */ jsx2("ul", { children: /* @__PURE__ */ jsx2("li", { children: /* @__PURE__ */ jsx2(
|
|
151
|
+
"button",
|
|
152
|
+
{
|
|
153
|
+
className: "cac-block cac-w-full cac-px-4 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
154
|
+
onClick: handleSignOut,
|
|
155
|
+
children: "Logout"
|
|
156
|
+
}
|
|
157
|
+
) }) })
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
] });
|
|
161
|
+
}
|
|
162
|
+
return /* @__PURE__ */ jsx2(
|
|
163
|
+
"button",
|
|
164
|
+
{
|
|
165
|
+
"data-testid": "sign-in-button",
|
|
166
|
+
className: cn(
|
|
167
|
+
"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
168
|
+
className
|
|
169
|
+
),
|
|
170
|
+
onClick: handleSignIn,
|
|
171
|
+
children: "Sign in"
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
// src/react/components/SignInButton.tsx
|
|
177
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
178
|
+
var SignInButton = ({
|
|
179
|
+
displayMode,
|
|
180
|
+
className
|
|
181
|
+
}) => {
|
|
182
|
+
const { signIn } = useUser();
|
|
183
|
+
return /* @__PURE__ */ jsx3(
|
|
184
|
+
"button",
|
|
185
|
+
{
|
|
186
|
+
"data-testid": "sign-in-button",
|
|
187
|
+
className: cn(
|
|
188
|
+
"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
189
|
+
className
|
|
190
|
+
),
|
|
191
|
+
onClick: () => signIn(displayMode),
|
|
192
|
+
children: "Sign In"
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/react/components/SignOutButton.tsx
|
|
198
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
199
|
+
var SignOutButton = ({ className }) => {
|
|
200
|
+
const { signOut } = useUser();
|
|
201
|
+
return /* @__PURE__ */ jsx4(
|
|
202
|
+
"button",
|
|
203
|
+
{
|
|
204
|
+
className: cn(
|
|
205
|
+
"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50",
|
|
206
|
+
className
|
|
207
|
+
),
|
|
208
|
+
onClick: () => signOut(),
|
|
209
|
+
children: "Sign Out"
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
};
|
|
213
|
+
export {
|
|
214
|
+
CivicAuthIframeContainer,
|
|
215
|
+
CivicAuthProvider,
|
|
216
|
+
SignInButton,
|
|
217
|
+
SignOutButton,
|
|
218
|
+
UserButton,
|
|
219
|
+
useAuth,
|
|
220
|
+
useConfig,
|
|
221
|
+
useIframe,
|
|
222
|
+
useSession,
|
|
223
|
+
useToken,
|
|
224
|
+
useUser
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=react.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/hooks/useUser.tsx","../src/shared/CivicAuthProvider.tsx","../src/react/components/UserButton.tsx","../src/react/components/SignInButton.tsx","../src/react/components/SignOutButton.tsx"],"sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { UserContext, UserContextType } from \"@/react/providers\";\n\nconst useUser = <\n T extends Record<string, unknown> = Record<string, never>,\n>(): UserContextType<T> => {\n const context = useContext(UserContext);\n\n if (!context) {\n throw new Error(\"useUser must be used within a UserProvider\");\n }\n\n return context as UserContextType<T>;\n};\n\nexport { useUser };\n","\"use client\";\nimport { AuthProvider, AuthProviderProps } from \"./AuthProvider\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\n// adding the styles import here to be added to the bundle\nimport \"@civic/auth/styles.css\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE\";\nimport { UserProvider } from \"./UserProvider\";\nimport { LocalStorageAdapter } from \"@/browser/storage\";\n\nconst queryClient = new QueryClient();\n\ntype CivicAuthProviderProps = Omit<AuthProviderProps, \"pkceConsumer\">;\n\nconst CivicAuthProvider = ({ children, ...props }: CivicAuthProviderProps) => {\n return (\n <QueryClientProvider client={queryClient}>\n <AuthProvider\n {...props}\n pkceConsumer={new BrowserPublicClientPKCEProducer()}\n >\n <UserProvider storage={new LocalStorageAdapter()}>\n {children}\n </UserProvider>\n </AuthProvider>\n </QueryClientProvider>\n );\n};\n\nexport { CivicAuthProvider, type CivicAuthProviderProps };\n","\"use client\";\nimport { useUser } from \"@/react/hooks\";\nimport { DisplayMode } from \"@/types\";\nimport { cn } from \"@/utils\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nconst ChevronDown = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-chevron-down\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nconst ChevronUp = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-chevron-up\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n);\n\nconst UserButton = ({\n displayMode,\n className,\n}: {\n displayMode?: DisplayMode;\n className?: string;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const { user, signIn, signOut } = useUser();\n\n const handleClickOutside = useCallback((event: MouseEvent) => {\n const target = event.target as HTMLElement;\n\n if (!target.closest(\"#civic-dropdown-container\")) {\n setIsOpen(false);\n }\n }, []);\n\n const handleSignOut = useCallback(async () => {\n signOut();\n\n setIsOpen(false);\n }, [signOut]);\n\n const handleSignIn = useCallback(async () => {\n await signIn(displayMode);\n\n setIsOpen(false);\n }, [signIn, displayMode]);\n\n const handleEscape = useCallback((event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n window.addEventListener(\"click\", handleClickOutside);\n\n window.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n window.removeEventListener(\"click\", handleClickOutside);\n\n window.removeEventListener(\"keydown\", handleEscape);\n };\n }, [handleClickOutside, handleEscape, isOpen]);\n\n if (user) {\n return (\n <div className=\"cac-relative\" id=\"civic-dropdown-container\">\n <button\n className={cn(\n \"cac-flex cac-w-full cac-items-center cac-justify-between cac-gap-2 cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-text-neutral-500 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={() => setIsOpen((isOpen) => !isOpen)}\n >\n {user?.picture ? (\n <span className=\"cac-relative cac-flex cac-h-10 cac-w-10 cac-shrink-0 cac-gap-2 cac-overflow-hidden cac-rounded-full\">\n <img\n className=\"cac-h-full cac-w-full cac-object-cover\"\n src={user.picture}\n alt={user?.name || user?.email}\n />\n </span>\n ) : (\n <div />\n )}\n\n <span>{user?.name || user?.email}</span>\n\n {isOpen ? <ChevronUp /> : <ChevronDown />}\n </button>\n <div\n className={\n isOpen\n ? \"cac-absolute cac-right-0 cac-mt-2 cac-w-full cac-rounded-lg cac-bg-white cac-py-2 cac-text-neutral-500 cac-shadow-xl\"\n : \"cac-hidden\"\n }\n >\n <ul>\n <li>\n <button\n className=\"cac-block cac-w-full cac-px-4 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\"\n onClick={handleSignOut}\n >\n Logout\n </button>\n </li>\n </ul>\n </div>\n </div>\n );\n }\n\n return (\n <button\n data-testid=\"sign-in-button\"\n className={cn(\n \"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={handleSignIn}\n >\n Sign in\n </button>\n );\n};\n\nexport { UserButton };\n","\"use client\";\nimport { cn } from \"@/utils\";\nimport { DisplayMode } from \"@/types\";\nimport { useUser } from \"@/react/hooks\";\n\nconst SignInButton = ({\n displayMode,\n className,\n}: {\n displayMode?: DisplayMode;\n className?: string;\n}) => {\n const { signIn } = useUser();\n\n return (\n <button\n data-testid=\"sign-in-button\"\n className={cn(\n \"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={() => signIn(displayMode)}\n >\n Sign In\n </button>\n );\n};\n\nexport { SignInButton };\n","\"use client\";\nimport { cn } from \"@/utils\";\nimport { useUser } from \"@/react/hooks\";\n\nconst SignOutButton = ({ className }: { className?: string }) => {\n const { signOut } = useUser();\n\n return (\n <button\n className={cn(\n \"cac-rounded-full cac-border cac-border-neutral-500 cac-px-3 cac-py-2 cac-transition-colors hover:cac-bg-neutral-200 hover:cac-bg-opacity-50\",\n className,\n )}\n onClick={() => signOut()}\n >\n Sign Out\n </button>\n );\n};\n\nexport { SignOutButton };\n"],"mappings":"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","names":["jsx","isOpen","jsx","jsx"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export { C as CookieStorage, a as CookieStorageSettings, S as SessionStorage } from './storage-BJyqsZwC.mjs';
|
|
2
|
+
import { E as Endpoints, A as AuthStorage, O as OIDCTokenResponseBody, U as User } from './types-BxAubCqO.mjs';
|
|
3
|
+
import 'oslo/oauth2';
|
|
4
|
+
|
|
5
|
+
type AuthConfig = {
|
|
6
|
+
clientId: string;
|
|
7
|
+
oauthServer: string;
|
|
8
|
+
redirectUrl: string;
|
|
9
|
+
challengeUrl?: string;
|
|
10
|
+
endpointOverrides?: Partial<Endpoints> | undefined;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Resolve an OAuth access code to a set of OIDC tokens
|
|
15
|
+
* @param code The access code, typically from a query parameter in the redirect url
|
|
16
|
+
* @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url
|
|
17
|
+
* @param storage The place that this server uses to store session data (e.g. a cookie store)
|
|
18
|
+
* @param config Oauth Server configuration
|
|
19
|
+
*/
|
|
20
|
+
declare function resolveOAuthAccessCode(code: string, state: string, storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
|
|
21
|
+
declare function isLoggedIn(storage: AuthStorage): boolean;
|
|
22
|
+
declare function buildLoginUrl(config: Pick<AuthConfig, "oauthServer" | "clientId" | "redirectUrl"> & {
|
|
23
|
+
scopes?: string[];
|
|
24
|
+
state?: string;
|
|
25
|
+
nonce?: string;
|
|
26
|
+
}, storage: AuthStorage): Promise<URL>;
|
|
27
|
+
|
|
28
|
+
declare function getUser(storage: AuthStorage): Promise<User | null>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Refresh the current set of OIDC tokens
|
|
32
|
+
*/
|
|
33
|
+
declare function refreshTokens(storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
|
|
34
|
+
|
|
35
|
+
export { buildLoginUrl, getUser, isLoggedIn, refreshTokens, resolveOAuthAccessCode };
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export { C as CookieStorage, a as CookieStorageSettings, S as SessionStorage } from './storage-ANmRwpZ3.js';
|
|
2
|
+
import { E as Endpoints, A as AuthStorage, O as OIDCTokenResponseBody, U as User } from './types-BxAubCqO.js';
|
|
3
|
+
import 'oslo/oauth2';
|
|
4
|
+
|
|
5
|
+
type AuthConfig = {
|
|
6
|
+
clientId: string;
|
|
7
|
+
oauthServer: string;
|
|
8
|
+
redirectUrl: string;
|
|
9
|
+
challengeUrl?: string;
|
|
10
|
+
endpointOverrides?: Partial<Endpoints> | undefined;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Resolve an OAuth access code to a set of OIDC tokens
|
|
15
|
+
* @param code The access code, typically from a query parameter in the redirect url
|
|
16
|
+
* @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url
|
|
17
|
+
* @param storage The place that this server uses to store session data (e.g. a cookie store)
|
|
18
|
+
* @param config Oauth Server configuration
|
|
19
|
+
*/
|
|
20
|
+
declare function resolveOAuthAccessCode(code: string, state: string, storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
|
|
21
|
+
declare function isLoggedIn(storage: AuthStorage): boolean;
|
|
22
|
+
declare function buildLoginUrl(config: Pick<AuthConfig, "oauthServer" | "clientId" | "redirectUrl"> & {
|
|
23
|
+
scopes?: string[];
|
|
24
|
+
state?: string;
|
|
25
|
+
nonce?: string;
|
|
26
|
+
}, storage: AuthStorage): Promise<URL>;
|
|
27
|
+
|
|
28
|
+
declare function getUser(storage: AuthStorage): Promise<User | null>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Refresh the current set of OIDC tokens
|
|
32
|
+
*/
|
|
33
|
+
declare function refreshTokens(storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
|
|
34
|
+
|
|
35
|
+
export { buildLoginUrl, getUser, isLoggedIn, refreshTokens, resolveOAuthAccessCode };
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkJEOPLLWOjs = require('./chunk-JEOPLLWO.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkAM2Y662Ijs = require('./chunk-AM2Y662I.js');
|
|
11
|
+
require('./chunk-CRTRMMJ7.js');
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
exports.CookieStorage = _chunkJEOPLLWOjs.CookieStorage; exports.buildLoginUrl = _chunkJEOPLLWOjs.buildLoginUrl; exports.getUser = _chunkAM2Y662Ijs.getUser; exports.isLoggedIn = _chunkJEOPLLWOjs.isLoggedIn; exports.refreshTokens = _chunkJEOPLLWOjs.refreshTokens; exports.resolveOAuthAccessCode = _chunkJEOPLLWOjs.resolveOAuthAccessCode;
|
|
20
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/patrick/Code/civic-auth/packages/civic-auth-client/dist/server.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,+UAAC","file":"/Users/patrick/Code/civic-auth/packages/civic-auth-client/dist/server.js"}
|
package/dist/server.mjs
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CookieStorage,
|
|
3
|
+
buildLoginUrl,
|
|
4
|
+
isLoggedIn,
|
|
5
|
+
refreshTokens,
|
|
6
|
+
resolveOAuthAccessCode
|
|
7
|
+
} from "./chunk-63YGK3A7.mjs";
|
|
8
|
+
import {
|
|
9
|
+
getUser
|
|
10
|
+
} from "./chunk-Q7DSPTUG.mjs";
|
|
11
|
+
import "./chunk-RGHW4PYM.mjs";
|
|
12
|
+
export {
|
|
13
|
+
CookieStorage,
|
|
14
|
+
buildLoginUrl,
|
|
15
|
+
getUser,
|
|
16
|
+
isLoggedIn,
|
|
17
|
+
refreshTokens,
|
|
18
|
+
resolveOAuthAccessCode
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/LoadingIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"LoadingIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/LoadingIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAA,MAAM,WAAW,yBAwChB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
const LoadingIcon = () => (React.createElement("div", { role: "status" },
|
|
3
|
-
React.createElement("style", null, `
|
|
4
|
-
@keyframes spin {
|
|
5
|
-
0% { transform: rotate(0deg); }
|
|
6
|
-
100% { transform: rotate(360deg); }
|
|
7
|
-
}
|
|
8
|
-
`),
|
|
9
3
|
React.createElement("svg", { "aria-hidden": "true", style: {
|
|
10
4
|
display: "inline",
|
|
11
5
|
height: "2rem",
|