@redzone/taunt-logins-ui-react 0.0.5 → 0.0.7
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/assets/fonts/DrukTextWide-Bold-Trial.otf +0 -0
- package/dist/coinbase.d.ts +3 -0
- package/dist/index.d.ts +7 -0
- package/dist/magic.d.ts +3 -0
- package/dist/meta.d.ts +3 -0
- package/dist/metamask.d.ts +3 -0
- package/dist/taunt-logins-ui-react.d.ts +2 -0
- package/dist/taunt-logins-ui-react.js +3289 -0
- package/dist/taunt-logins-ui-react.js.map +1 -0
- package/dist/taunt-logins-ui-react.umd.cjs +7 -0
- package/dist/taunt-logins-ui-react.umd.cjs.map +1 -0
- package/dist/tauntContext.d.ts +17 -0
- package/dist/tauntProvider.d.ts +5 -0
- package/dist/telegram.d.ts +3 -0
- package/package.json +18 -5
- package/.history/babel.config_20251002171845.json +0 -0
- package/.history/babel.config_20251002171847.json +0 -3
- package/.history/babel.config_20251002172145.json +0 -3
- package/.history/babel.config_20251002172313.json +0 -3
- package/.history/babel.config_20251002172415.json +0 -8
- package/.history/index_20251002141038.html +0 -13
- package/.history/index_20251002141344.html +0 -13
- package/.history/package_20251002154235.json +0 -32
- package/.history/package_20251002160110.json +0 -33
- package/.history/package_20251002161109.json +0 -33
- package/.history/package_20251002161124.json +0 -32
- package/.history/package_20251002161826.json +0 -32
- package/.history/package_20251002162139.json +0 -32
- package/.history/package_20251002162605.json +0 -35
- package/.history/package_20251002162619.json +0 -35
- package/.history/package_20251002162631.json +0 -35
- package/.history/package_20251002162639.json +0 -35
- package/.history/package_20251002162659.json +0 -35
- package/.history/package_20251002162811.json +0 -39
- package/.history/package_20251002162820.json +0 -39
- package/.history/package_20251002171613.json +0 -40
- package/.history/package_20251002171644.json +0 -40
- package/.history/package_20251002171740.json +0 -43
- package/.history/package_20251002172017.json +0 -43
- package/.history/package_20251002172634.json +0 -53
- package/.history/package_20251002182812.json +0 -52
- package/.history/package_20251002183227.json +0 -34
- package/.history/package_20251002183258.json +0 -42
- package/.history/package_20251002202514.json +0 -46
- package/.history/package_20251002202542.json +0 -46
- package/.history/package_20251002202550.json +0 -45
- package/.history/package_20251002203503.json +0 -46
- package/.history/package_20251002204314.json +0 -45
- package/.history/package_20251002213111.json +0 -45
- package/.history/package_20251002222438.json +0 -47
- package/.history/package_20251002222511.json +0 -45
- package/.history/package_20251002222541.json +0 -45
- package/.history/src/App_20251002141038.tsx +0 -35
- package/.history/src/App_20251002142848.tsx +0 -15
- package/.history/src/App_20251002152540.tsx +0 -15
- package/.history/src/App_20251002152831.tsx +0 -17
- package/.history/src/App_20251002153145.tsx +0 -18
- package/.history/src/App_20251002153323.tsx +0 -25
- package/.history/src/App_20251002153420.tsx +0 -32
- package/.history/src/App_20251002153429.tsx +0 -33
- package/.history/src/App_20251002153457.tsx +0 -39
- package/.history/src/App_20251002153516.tsx +0 -39
- package/.history/src/App_20251002153520.tsx +0 -39
- package/.history/src/App_20251002153546.tsx +0 -41
- package/.history/src/App_20251002154625.tsx +0 -41
- package/.history/src/App_20251002154740.tsx +0 -47
- package/.history/src/App_20251002154812.tsx +0 -47
- package/.history/src/App_20251002154841.tsx +0 -47
- package/.history/src/App_20251002154915.tsx +0 -54
- package/.history/src/App_20251002160347.tsx +0 -54
- package/.history/src/App_20251002205122.tsx +0 -54
- package/.history/src/lib/exports_20251002160004.ts +0 -0
- package/.history/src/lib/exports_20251002160045.ts +0 -3
- package/.history/src/lib/index_20251002162704.ts +0 -0
- package/.history/src/lib/index_20251002162712.ts +0 -1
- package/.history/src/lib/index_20251002182429.ts +0 -4
- package/.history/src/lib/magic_20251002142829.tsx +0 -0
- package/.history/src/lib/magic_20251002142848.tsx +0 -44
- package/.history/src/lib/magic_20251002152540.tsx +0 -28
- package/.history/src/lib/magic_20251002152543.tsx +0 -28
- package/.history/src/lib/magic_20251002152546.tsx +0 -28
- package/.history/src/lib/magic_20251002152802.tsx +0 -47
- package/.history/src/lib/magic_20251002154740.tsx +0 -47
- package/.history/src/lib/magic_20251002155035.tsx +0 -47
- package/.history/src/lib/magic_20251002160411.tsx +0 -49
- package/.history/src/lib/magic_20251002160428.tsx +0 -49
- package/.history/src/lib/magic_20251002161028.tsx +0 -50
- package/.history/src/lib/magic_20251002162134.tsx +0 -50
- package/.history/src/lib/magic_20251002171038.tsx +0 -50
- package/.history/src/lib/metamask_20251002141612.tsx +0 -0
- package/.history/src/lib/metamask_20251002142622.tsx +0 -38
- package/.history/src/lib/metamask_20251002142654.tsx +0 -41
- package/.history/src/lib/metamask_20251002142726.tsx +0 -44
- package/.history/src/lib/metamask_20251002142848.tsx +0 -0
- package/.history/src/lib/metamask_20251002152802.tsx +0 -28
- package/.history/src/lib/metamask_20251002153516.tsx +0 -27
- package/.history/src/lib/metamask_20251002154228.tsx +0 -27
- package/.history/src/lib/metamask_20251002154523.tsx +0 -27
- package/.history/src/lib/metamask_20251002162122.tsx +0 -27
- package/.history/src/lib/metamask_20251002171636.tsx +0 -27
- package/.history/src/lib/styling_20251002154448.css +0 -0
- package/.history/src/lib/styling_20251002154523.css +0 -19
- package/.history/src/lib/styling_20251002154531.css +0 -19
- package/.history/src/lib/styling_20251002154544.css +0 -20
- package/.history/src/lib/styling_20251002154548.css +0 -19
- package/.history/src/lib/styling_20251002160446.css +0 -20
- package/.history/src/lib/styling_20251002160511.css +0 -23
- package/.history/src/lib/styling_20251002160515.css +0 -24
- package/.history/src/lib/styling_20251002160815.css +0 -24
- package/.history/src/lib/styling_20251002160910.css +0 -24
- package/.history/src/lib/styling_20251002160915.css +0 -24
- package/.history/src/lib/styling_20251002160952.css +0 -24
- package/.history/src/lib/styling_20251002161001.css +0 -24
- package/.history/src/lib/styling_20251002161011.css +0 -24
- package/.history/src/lib/styling_20251002161016.css +0 -24
- package/.history/src/lib/styling_20251002161036.css +0 -25
- package/.history/src/lib/tauntContext_20251002142359.ts +0 -0
- package/.history/src/lib/tauntContext_20251002142622.ts +0 -17
- package/.history/src/lib/tauntContext_20251002152540.ts +0 -22
- package/.history/src/lib/tauntContext_20251002152802.ts +0 -22
- package/.history/src/lib/tauntProvider_20251002142503.tsx +0 -0
- package/.history/src/lib/tauntProvider_20251002142622.tsx +0 -15
- package/.history/src/lib/tauntProvider_20251002143158.tsx +0 -19
- package/.history/src/lib/tauntProvider_20251002144018.tsx +0 -19
- package/.history/src/lib/tauntProvider_20251002152234.tsx +0 -40
- package/.history/src/lib/tauntProvider_20251002152802.tsx +0 -40
- package/.history/src/lib/tauntProvider_20251002153101.tsx +0 -49
- package/.history/src/lib/taunt_20251002160026.ts +0 -0
- package/.history/src/lib/taunt_20251002160045.ts +0 -2
- package/.history/src/main_20251002141038.tsx +0 -10
- package/.history/src/main_20251002141444.tsx +0 -12
- package/.history/src/main_20251002160347.tsx +0 -12
- package/.history/tsconfig.app_20251002141038.json +0 -28
- package/.history/tsconfig.app_20251002172720.json +0 -28
- package/.history/vite.config_20251002141038.ts +0 -7
- package/.history/vite.config_20251002141323.ts +0 -10
- package/.history/vite.config_20251002182237.ts +0 -19
- package/.history/vite.config_20251002182326.ts +0 -19
- package/.history/vite.config_20251002182358.ts +0 -19
- package/.history/vite.config_20251002182434.ts +0 -19
- package/.history/vite.config_20251002182749.ts +0 -26
- package/.history/vite.config_20251002182810.ts +0 -26
- package/.history/vite.config_20251002184535.ts +0 -36
- package/.history/vite.config_20251002184720.ts +0 -41
- package/.history/vite.config_20251002184748.ts +0 -37
- package/.history/vite.config_20251002184844.ts +0 -37
- package/.history/vite.config_20251002201901.ts +0 -45
- package/.history/vite.config_20251002202019.ts +0 -47
- package/.history/vite.config_20251002202043.ts +0 -47
- package/.history/vite.config_20251002202502.ts +0 -47
- package/.history/vite.config_20251002203503.ts +0 -43
- package/.prettierrc.mjs +0 -22
- package/asdf/tsconfig.app.json +0 -28
- package/asdf/tsconfig.json +0 -7
- package/asdf/tsconfig.node.json +0 -26
- package/eslint.config.js +0 -23
- package/index.html +0 -13
- package/src/App.css +0 -42
- package/src/App.tsx +0 -54
- package/src/index.css +0 -68
- package/src/lib/index.ts +0 -4
- package/src/lib/magic.tsx +0 -50
- package/src/lib/metamask.tsx +0 -27
- package/src/lib/styling.css +0 -25
- package/src/lib/tauntContext.ts +0 -22
- package/src/lib/tauntProvider.tsx +0 -49
- package/src/main.tsx +0 -12
- package/tsconfig.json +0 -25
- package/tsconfig.node.json +0 -10
- package/vite.config.ts +0 -43
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import "./App.css"
|
|
2
|
-
|
|
3
|
-
import { MagicEmailInput } from "./lib/magic"
|
|
4
|
-
import { MetaMaskButton } from "./lib/metamask"
|
|
5
|
-
import { useTaunt } from "./lib/tauntContext"
|
|
6
|
-
import { TauntProvider } from "./lib/tauntProvider"
|
|
7
|
-
|
|
8
|
-
function App() {
|
|
9
|
-
return (
|
|
10
|
-
<TauntProvider
|
|
11
|
-
tauntServiceEndpoint={import.meta.env.VITE_TAUNT_SERVICE_ENDPOINT}
|
|
12
|
-
magicKey={import.meta.env.VITE_MAGIC_KEY}>
|
|
13
|
-
<div
|
|
14
|
-
style={{
|
|
15
|
-
display: "flex",
|
|
16
|
-
flexDirection: "column",
|
|
17
|
-
gap: 8,
|
|
18
|
-
alignItems: "center"
|
|
19
|
-
}}>
|
|
20
|
-
<MagicEmailInput />
|
|
21
|
-
<MetaMaskButton />
|
|
22
|
-
<LogoutButton />
|
|
23
|
-
<TauntDeets />
|
|
24
|
-
</div>
|
|
25
|
-
</TauntProvider>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function LogoutButton() {
|
|
30
|
-
const { deets } = useTaunt()
|
|
31
|
-
if (!deets) return null
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<button
|
|
35
|
-
className="ml-2 p-2 bg-blue-500 text-white rounded-md"
|
|
36
|
-
type="button">
|
|
37
|
-
Logout
|
|
38
|
-
</button>
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function TauntDeets() {
|
|
43
|
-
const { deets } = useTaunt()
|
|
44
|
-
return (
|
|
45
|
-
<textarea
|
|
46
|
-
rows={5}
|
|
47
|
-
cols={50}
|
|
48
|
-
value={JSON.stringify(deets, null, 2)}
|
|
49
|
-
readOnly
|
|
50
|
-
/>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default App
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// import "./App.css"
|
|
2
|
-
|
|
3
|
-
import { MagicEmailInput } from "./lib/magic"
|
|
4
|
-
import { MetaMaskButton } from "./lib/metamask"
|
|
5
|
-
import { useTaunt } from "./lib/tauntContext"
|
|
6
|
-
import { TauntProvider } from "./lib/tauntProvider"
|
|
7
|
-
|
|
8
|
-
function App() {
|
|
9
|
-
return (
|
|
10
|
-
<TauntProvider
|
|
11
|
-
tauntServiceEndpoint={import.meta.env.VITE_TAUNT_SERVICE_ENDPOINT}
|
|
12
|
-
magicKey={import.meta.env.VITE_MAGIC_KEY}>
|
|
13
|
-
<div
|
|
14
|
-
style={{
|
|
15
|
-
display: "flex",
|
|
16
|
-
flexDirection: "column",
|
|
17
|
-
gap: 8,
|
|
18
|
-
alignItems: "center"
|
|
19
|
-
}}>
|
|
20
|
-
<MagicEmailInput />
|
|
21
|
-
<MetaMaskButton />
|
|
22
|
-
<LogoutButton />
|
|
23
|
-
<TauntDeets />
|
|
24
|
-
</div>
|
|
25
|
-
</TauntProvider>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function LogoutButton() {
|
|
30
|
-
const { deets } = useTaunt()
|
|
31
|
-
if (!deets) return null
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<button
|
|
35
|
-
className="ml-2 p-2 bg-blue-500 text-white rounded-md"
|
|
36
|
-
type="button">
|
|
37
|
-
Logout
|
|
38
|
-
</button>
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function TauntDeets() {
|
|
43
|
-
const { deets } = useTaunt()
|
|
44
|
-
return (
|
|
45
|
-
<textarea
|
|
46
|
-
rows={5}
|
|
47
|
-
cols={50}
|
|
48
|
-
value={JSON.stringify(deets, null, 2)}
|
|
49
|
-
readOnly
|
|
50
|
-
/>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default App
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// import "./App.css"
|
|
2
|
-
|
|
3
|
-
import { MagicEmailInput } from "./lib/magic"
|
|
4
|
-
import { MetaMaskButton } from "./lib/metamask"
|
|
5
|
-
import { useTaunt } from "./lib/tauntContext"
|
|
6
|
-
import { TauntProvider } from "./lib/tauntProvider"
|
|
7
|
-
|
|
8
|
-
function App() {
|
|
9
|
-
return (
|
|
10
|
-
<TauntProvider
|
|
11
|
-
tauntServiceEndpoint={process.env.VITE_TAUNT_SERVICE_ENDPOINT}
|
|
12
|
-
magicKey={process.env.VITE_MAGIC_KEY}>
|
|
13
|
-
<div
|
|
14
|
-
style={{
|
|
15
|
-
display: "flex",
|
|
16
|
-
flexDirection: "column",
|
|
17
|
-
gap: 8,
|
|
18
|
-
alignItems: "center"
|
|
19
|
-
}}>
|
|
20
|
-
<MagicEmailInput />
|
|
21
|
-
<MetaMaskButton />
|
|
22
|
-
<LogoutButton />
|
|
23
|
-
<TauntDeets />
|
|
24
|
-
</div>
|
|
25
|
-
</TauntProvider>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function LogoutButton() {
|
|
30
|
-
const { deets } = useTaunt()
|
|
31
|
-
if (!deets) return null
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<button
|
|
35
|
-
className="ml-2 p-2 bg-blue-500 text-white rounded-md"
|
|
36
|
-
type="button">
|
|
37
|
-
Logout
|
|
38
|
-
</button>
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function TauntDeets() {
|
|
43
|
-
const { deets } = useTaunt()
|
|
44
|
-
return (
|
|
45
|
-
<textarea
|
|
46
|
-
rows={5}
|
|
47
|
-
cols={50}
|
|
48
|
-
value={JSON.stringify(deets, null, 2)}
|
|
49
|
-
readOnly
|
|
50
|
-
/>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default App
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./exports"
|
|
File without changes
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { tauntMagicDidLogin } from "@redzone/taunt-logins"
|
|
2
|
-
import { useCallback, useMemo, useState } from "react"
|
|
3
|
-
|
|
4
|
-
import { useTaunt } from "./tauntContext"
|
|
5
|
-
|
|
6
|
-
export const Emailer = ({ onEmail }: { onEmail?: (email: string) => void }) => {
|
|
7
|
-
const { tauntServiceEndpoint } = useTaunt()
|
|
8
|
-
const [email, setEmail] = useState<string>()
|
|
9
|
-
|
|
10
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
11
|
-
|
|
12
|
-
const validEmail = useMemo(() => {
|
|
13
|
-
const validRegex =
|
|
14
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
15
|
-
return email?.match(validRegex) ? email : undefined
|
|
16
|
-
}, [email])
|
|
17
|
-
|
|
18
|
-
const runMagic = useCallback(() => {
|
|
19
|
-
if (!validEmail) return
|
|
20
|
-
|
|
21
|
-
if (onEmail) {
|
|
22
|
-
onEmail(email!)
|
|
23
|
-
} else {
|
|
24
|
-
tauntMagicDidLogin(tauntServiceEndpoint, email!)
|
|
25
|
-
}
|
|
26
|
-
}, [validEmail, onEmail])
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<div>
|
|
30
|
-
{initialised && !validEmail && (
|
|
31
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
32
|
-
)}
|
|
33
|
-
<input
|
|
34
|
-
onChange={(e) => setEmail(e.target.value)}
|
|
35
|
-
placeholder="Enter your email"
|
|
36
|
-
type="email"
|
|
37
|
-
value={email}
|
|
38
|
-
/>
|
|
39
|
-
<button onClick={runMagic} type="button">
|
|
40
|
-
Send Magic Link
|
|
41
|
-
</button>
|
|
42
|
-
</div>
|
|
43
|
-
)
|
|
44
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { tauntMagicDidLogin } from "@redzone/taunt-logins"
|
|
2
|
-
import { useCallback, useMemo, useState } from "react"
|
|
3
|
-
|
|
4
|
-
import { useTaunt } from "./tauntContext"
|
|
5
|
-
|
|
6
|
-
export const MetaMaskButton = ({openMetamask}: {openMetamask?: () => void}) => {
|
|
7
|
-
const { metamaskLogin } = useTaunt()
|
|
8
|
-
|
|
9
|
-
const runMetamask = useCallback(() => {
|
|
10
|
-
if(openMetamask) {
|
|
11
|
-
openMetamask()
|
|
12
|
-
} else {
|
|
13
|
-
|
|
14
|
-
metamaskLogin()
|
|
15
|
-
}
|
|
16
|
-
}, [metamaskLogin, openMetamask])
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
|
|
20
|
-
<button
|
|
21
|
-
className="ml-2 p-2 bg-blue-500 text-white rounded-md"
|
|
22
|
-
onClick={runMetamask}
|
|
23
|
-
type="button">
|
|
24
|
-
Login with Metamask
|
|
25
|
-
</button>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { tauntMagicDidLogin } from "@redzone/taunt-logins"
|
|
2
|
-
import { useCallback, useMemo, useState } from "react"
|
|
3
|
-
|
|
4
|
-
import { useTaunt } from "./tauntContext"
|
|
5
|
-
|
|
6
|
-
export const MetaMaskButton = ({openMetamask}: {openMetamask?: () => void}) => {
|
|
7
|
-
const { metamaskLogin } = useTaunt()
|
|
8
|
-
|
|
9
|
-
const runMetamask = useCallback(() => {
|
|
10
|
-
if(openMetamask) {
|
|
11
|
-
openMetamask()
|
|
12
|
-
} else {
|
|
13
|
-
|
|
14
|
-
metamaskLogin()
|
|
15
|
-
}
|
|
16
|
-
}, [metamaskLogin, openMetamask])
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
|
|
20
|
-
<button
|
|
21
|
-
className="ml-2 p-2 bg-blue-500 text-white rounded-md"
|
|
22
|
-
onClick={runMetamask}
|
|
23
|
-
type="button">
|
|
24
|
-
Login with Metamask
|
|
25
|
-
</button>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { useCallback } from "react"
|
|
2
|
-
|
|
3
|
-
import { useTaunt } from "./tauntContext"
|
|
4
|
-
|
|
5
|
-
export const MetaMaskButton = ({
|
|
6
|
-
openMetamask
|
|
7
|
-
}: {
|
|
8
|
-
openMetamask?: () => void
|
|
9
|
-
}) => {
|
|
10
|
-
const { metamaskLogin } = useTaunt()
|
|
11
|
-
|
|
12
|
-
const runMetamask = useCallback(() => {
|
|
13
|
-
if (openMetamask) {
|
|
14
|
-
openMetamask()
|
|
15
|
-
} else {
|
|
16
|
-
metamaskLogin()
|
|
17
|
-
}
|
|
18
|
-
}, [metamaskLogin, openMetamask])
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<button
|
|
22
|
-
className="ml-2 p-2 bg-blue-500 text-white rounded-md"
|
|
23
|
-
onClick={runMetamask}
|
|
24
|
-
type="button">
|
|
25
|
-
Login with Metamask
|
|
26
|
-
</button>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import { useTaunt } from "./tauntContext"
|
|
4
|
-
|
|
5
|
-
export const MagicEmailInput = ({
|
|
6
|
-
onEmail
|
|
7
|
-
}: {
|
|
8
|
-
onEmail?: (email: string) => void
|
|
9
|
-
}) => {
|
|
10
|
-
const { otpMagicLogin } = useTaunt()
|
|
11
|
-
const [email, setEmail] = useState<string>()
|
|
12
|
-
|
|
13
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
14
|
-
|
|
15
|
-
const validEmail = useMemo(() => {
|
|
16
|
-
const validRegex =
|
|
17
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
18
|
-
return email?.match(validRegex) ? email : undefined
|
|
19
|
-
}, [email])
|
|
20
|
-
|
|
21
|
-
const runMagic = useCallback(() => {
|
|
22
|
-
if (!validEmail) return
|
|
23
|
-
|
|
24
|
-
if (onEmail) {
|
|
25
|
-
onEmail(email!)
|
|
26
|
-
} else {
|
|
27
|
-
otpMagicLogin(email!)
|
|
28
|
-
}
|
|
29
|
-
}, [validEmail, onEmail])
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<div>
|
|
33
|
-
{initialised && !validEmail && (
|
|
34
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
35
|
-
)}
|
|
36
|
-
<input
|
|
37
|
-
onChange={(e) => setEmail(e.target.value)}
|
|
38
|
-
placeholder="Enter your email"
|
|
39
|
-
type="email"
|
|
40
|
-
value={email}
|
|
41
|
-
/>
|
|
42
|
-
<button onClick={runMagic} type="button">
|
|
43
|
-
Send Magic Link
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
)
|
|
47
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import { useTaunt } from "./tauntContext"
|
|
4
|
-
|
|
5
|
-
export const MagicEmailInput = ({
|
|
6
|
-
onEmail
|
|
7
|
-
}: {
|
|
8
|
-
onEmail?: (email: string) => void
|
|
9
|
-
}) => {
|
|
10
|
-
const { otpMagicLogin } = useTaunt()
|
|
11
|
-
const [email, setEmail] = useState<string>()
|
|
12
|
-
|
|
13
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
14
|
-
|
|
15
|
-
const validEmail = useMemo(() => {
|
|
16
|
-
const validRegex =
|
|
17
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
18
|
-
return email?.match(validRegex) ? email : undefined
|
|
19
|
-
}, [email])
|
|
20
|
-
|
|
21
|
-
const runMagic = useCallback(() => {
|
|
22
|
-
if (!validEmail) return
|
|
23
|
-
|
|
24
|
-
if (onEmail) {
|
|
25
|
-
onEmail(email!)
|
|
26
|
-
} else {
|
|
27
|
-
otpMagicLogin(email!)
|
|
28
|
-
}
|
|
29
|
-
}, [validEmail, onEmail])
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<div style={{ display: "flex", flexDirection: "row", gap: 8 }}>
|
|
33
|
-
{initialised && !validEmail && (
|
|
34
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
35
|
-
)}
|
|
36
|
-
<input
|
|
37
|
-
onChange={(e) => setEmail(e.target.value)}
|
|
38
|
-
placeholder="Enter your email"
|
|
39
|
-
type="email"
|
|
40
|
-
value={email}
|
|
41
|
-
/>
|
|
42
|
-
<button onClick={runMagic} type="button">
|
|
43
|
-
Send Magic Link
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
)
|
|
47
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import { useTaunt } from "./tauntContext"
|
|
4
|
-
|
|
5
|
-
export const MagicEmailInput = ({
|
|
6
|
-
onEmail
|
|
7
|
-
}: {
|
|
8
|
-
onEmail?: (email: string) => void
|
|
9
|
-
}) => {
|
|
10
|
-
const { otpMagicLogin } = useTaunt()
|
|
11
|
-
const [email, setEmail] = useState<string>()
|
|
12
|
-
|
|
13
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
14
|
-
|
|
15
|
-
const validEmail = useMemo(() => {
|
|
16
|
-
const validRegex =
|
|
17
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
18
|
-
return email?.match(validRegex) ? email : undefined
|
|
19
|
-
}, [email])
|
|
20
|
-
|
|
21
|
-
const runMagic = useCallback(() => {
|
|
22
|
-
if (!validEmail) return
|
|
23
|
-
|
|
24
|
-
if (onEmail) {
|
|
25
|
-
onEmail(email!)
|
|
26
|
-
} else {
|
|
27
|
-
otpMagicLogin(email!)
|
|
28
|
-
}
|
|
29
|
-
}, [validEmail, onEmail])
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<div style={{ display: "flex", flexDirection: "row", gap: 8 }}>
|
|
33
|
-
{initialised && !validEmail && (
|
|
34
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
35
|
-
)}
|
|
36
|
-
<input
|
|
37
|
-
onChange={(e) => setEmail(e.target.value ? e.target.value : undefined)}
|
|
38
|
-
placeholder="Enter your email"
|
|
39
|
-
type="email"
|
|
40
|
-
value={email}
|
|
41
|
-
/>
|
|
42
|
-
<button onClick={runMagic} type="button">
|
|
43
|
-
Send Magic Link
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
)
|
|
47
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import "./styling.css"
|
|
4
|
-
|
|
5
|
-
import { useTaunt } from "./tauntContext"
|
|
6
|
-
|
|
7
|
-
export const MagicEmailInput = ({
|
|
8
|
-
onEmail
|
|
9
|
-
}: {
|
|
10
|
-
onEmail?: (email: string) => void
|
|
11
|
-
}) => {
|
|
12
|
-
const { otpMagicLogin } = useTaunt()
|
|
13
|
-
const [email, setEmail] = useState<string>()
|
|
14
|
-
|
|
15
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
16
|
-
|
|
17
|
-
const validEmail = useMemo(() => {
|
|
18
|
-
const validRegex =
|
|
19
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
20
|
-
return email?.match(validRegex) ? email : undefined
|
|
21
|
-
}, [email])
|
|
22
|
-
|
|
23
|
-
const runMagic = useCallback(() => {
|
|
24
|
-
if (!validEmail) return
|
|
25
|
-
|
|
26
|
-
if (onEmail) {
|
|
27
|
-
onEmail(email!)
|
|
28
|
-
} else {
|
|
29
|
-
otpMagicLogin(email!)
|
|
30
|
-
}
|
|
31
|
-
}, [validEmail, onEmail])
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div style={{ display: "flex", flexDirection: "row", gap: 8 }}>
|
|
35
|
-
{initialised && !validEmail && (
|
|
36
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
37
|
-
)}
|
|
38
|
-
<input
|
|
39
|
-
onChange={(e) => setEmail(e.target.value ? e.target.value : undefined)}
|
|
40
|
-
placeholder="Enter your email"
|
|
41
|
-
type="email"
|
|
42
|
-
value={email}
|
|
43
|
-
/>
|
|
44
|
-
<button onClick={runMagic} type="button">
|
|
45
|
-
Send Magic Link
|
|
46
|
-
</button>
|
|
47
|
-
</div>
|
|
48
|
-
)
|
|
49
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import "./styling.css"
|
|
4
|
-
|
|
5
|
-
import { useTaunt } from "./tauntContext"
|
|
6
|
-
|
|
7
|
-
export const MagicEmailInput = ({
|
|
8
|
-
onEmail
|
|
9
|
-
}: {
|
|
10
|
-
onEmail?: (email: string) => void
|
|
11
|
-
}) => {
|
|
12
|
-
const { otpMagicLogin } = useTaunt()
|
|
13
|
-
const [email, setEmail] = useState<string>()
|
|
14
|
-
|
|
15
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
16
|
-
|
|
17
|
-
const validEmail = useMemo(() => {
|
|
18
|
-
const validRegex =
|
|
19
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
20
|
-
return email?.match(validRegex) ? email : undefined
|
|
21
|
-
}, [email])
|
|
22
|
-
|
|
23
|
-
const runMagic = useCallback(() => {
|
|
24
|
-
if (!validEmail) return
|
|
25
|
-
|
|
26
|
-
if (onEmail) {
|
|
27
|
-
onEmail(email!)
|
|
28
|
-
} else {
|
|
29
|
-
otpMagicLogin(email!)
|
|
30
|
-
}
|
|
31
|
-
}, [validEmail, onEmail])
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div style={{ display: "flex", flexDirection: "row", gap: 8 }}>
|
|
35
|
-
{initialised && !validEmail && (
|
|
36
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
37
|
-
)}
|
|
38
|
-
<input
|
|
39
|
-
onChange={(e) => setEmail(e.target.value ? e.target.value : undefined)}
|
|
40
|
-
placeholder="Enter your email"
|
|
41
|
-
type="email"
|
|
42
|
-
value={email}
|
|
43
|
-
/>
|
|
44
|
-
<button className="rdz-button" onClick={runMagic} type="button">
|
|
45
|
-
Send Magic Link
|
|
46
|
-
</button>
|
|
47
|
-
</div>
|
|
48
|
-
)
|
|
49
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import "./styling.css"
|
|
4
|
-
|
|
5
|
-
import { useTaunt } from "./tauntContext"
|
|
6
|
-
|
|
7
|
-
export const MagicEmailInput = ({
|
|
8
|
-
onEmail
|
|
9
|
-
}: {
|
|
10
|
-
onEmail?: (email: string) => void
|
|
11
|
-
}) => {
|
|
12
|
-
const { otpMagicLogin } = useTaunt()
|
|
13
|
-
const [email, setEmail] = useState<string>()
|
|
14
|
-
|
|
15
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
16
|
-
|
|
17
|
-
const validEmail = useMemo(() => {
|
|
18
|
-
const validRegex =
|
|
19
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
20
|
-
return email?.match(validRegex) ? email : undefined
|
|
21
|
-
}, [email])
|
|
22
|
-
|
|
23
|
-
const runMagic = useCallback(() => {
|
|
24
|
-
if (!validEmail) return
|
|
25
|
-
|
|
26
|
-
if (onEmail) {
|
|
27
|
-
onEmail(email!)
|
|
28
|
-
} else {
|
|
29
|
-
otpMagicLogin(email!)
|
|
30
|
-
}
|
|
31
|
-
}, [validEmail, onEmail])
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div style={{ display: "flex", flexDirection: "row", gap: 8 }}>
|
|
35
|
-
{initialised && !validEmail && (
|
|
36
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
37
|
-
)}
|
|
38
|
-
<input
|
|
39
|
-
className="rdz-input"
|
|
40
|
-
onChange={(e) => setEmail(e.target.value ? e.target.value : undefined)}
|
|
41
|
-
placeholder="Enter your email"
|
|
42
|
-
type="email"
|
|
43
|
-
value={email}
|
|
44
|
-
/>
|
|
45
|
-
<button className="rdz-button" onClick={runMagic} type="button">
|
|
46
|
-
Send Magic Link
|
|
47
|
-
</button>
|
|
48
|
-
</div>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from "react"
|
|
2
|
-
|
|
3
|
-
import "./styling.css"
|
|
4
|
-
|
|
5
|
-
import { useTaunt } from "./tauntContext"
|
|
6
|
-
|
|
7
|
-
export const MagicEmailInput = ({
|
|
8
|
-
onEmail
|
|
9
|
-
}: {
|
|
10
|
-
onEmail?: (email: string) => void
|
|
11
|
-
}) => {
|
|
12
|
-
const { otpMagicLogin } = useTaunt()
|
|
13
|
-
const [email, setEmail] = useState<string>()
|
|
14
|
-
|
|
15
|
-
const initialised = useMemo(() => email !== undefined, [email])
|
|
16
|
-
|
|
17
|
-
const validEmail = useMemo(() => {
|
|
18
|
-
const validRegex =
|
|
19
|
-
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
|
|
20
|
-
return email?.match(validRegex) ? email : undefined
|
|
21
|
-
}, [email])
|
|
22
|
-
|
|
23
|
-
const runMagic = useCallback(() => {
|
|
24
|
-
if (!validEmail) return
|
|
25
|
-
|
|
26
|
-
if (onEmail) {
|
|
27
|
-
onEmail(email!)
|
|
28
|
-
} else {
|
|
29
|
-
otpMagicLogin(email!)
|
|
30
|
-
}
|
|
31
|
-
}, [validEmail, onEmail])
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div style={{ display: "flex", flexDirection: "row", gap: 8 }}>
|
|
35
|
-
{initialised && !validEmail && (
|
|
36
|
-
<div style={{ color: "red" }}>Please enter a valid email</div>
|
|
37
|
-
)}
|
|
38
|
-
<input
|
|
39
|
-
class="rdz-input"
|
|
40
|
-
onChange={(e) => setEmail(e.target.value ? e.target.value : undefined)}
|
|
41
|
-
placeholder="Enter your email"
|
|
42
|
-
type="email"
|
|
43
|
-
value={email}
|
|
44
|
-
/>
|
|
45
|
-
<button class="rdz-button" onClick={runMagic} type="button">
|
|
46
|
-
Send Magic Link
|
|
47
|
-
</button>
|
|
48
|
-
</div>
|
|
49
|
-
)
|
|
50
|
-
}
|