@inf-monkeys-tech/monkeys-design 0.4.37 → 0.4.39
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/README.md +6 -0
- package/dist/components/data-explorer/index.d.mts +6 -59
- package/dist/components/data-explorer/index.d.ts +6 -59
- package/dist/components/data-explorer/index.js +412 -8
- package/dist/components/data-explorer/index.js.map +1 -1
- package/dist/components/data-explorer/index.mjs +413 -10
- package/dist/components/data-explorer/index.mjs.map +1 -1
- package/dist/components/login/index.d.mts +11 -0
- package/dist/components/login/index.d.ts +11 -0
- package/dist/components/login/index.js +36 -4
- package/dist/components/login/index.js.map +1 -1
- package/dist/components/login/index.mjs +37 -5
- package/dist/components/login/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +38 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +38 -4
- package/dist/index.mjs.map +1 -1
- package/dist/styles/login-page.scss +12 -0
- package/dist/theme-DnbkgyCq.d.mts +61 -0
- package/dist/theme-rXHbVr6l.d.ts +61 -0
- package/dist/theme-system/index.d.mts +1 -1
- package/dist/theme-system/index.d.ts +1 -1
- package/dist/theme-system/index.js +3 -0
- package/dist/theme-system/index.js.map +1 -1
- package/dist/theme-system/index.mjs +3 -0
- package/dist/theme-system/index.mjs.map +1 -1
- package/dist/{types-B81dpI1o.d.mts → types-BnC3Z85r.d.mts} +98 -1
- package/dist/{types-B81dpI1o.d.ts → types-BnC3Z85r.d.ts} +98 -1
- package/package.json +3 -1
|
@@ -7,7 +7,18 @@ interface LoginPageBackgroundConfig {
|
|
|
7
7
|
gradient?: string;
|
|
8
8
|
}
|
|
9
9
|
interface LoginPageLogoConfig {
|
|
10
|
+
/**
|
|
11
|
+
* Fallback logo URL used for both color modes.
|
|
12
|
+
*/
|
|
10
13
|
url?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Logo URL for light mode. Falls back to url when empty.
|
|
16
|
+
*/
|
|
17
|
+
lightUrl?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Logo URL for dark mode. Falls back to url or lightUrl when empty.
|
|
20
|
+
*/
|
|
21
|
+
darkUrl?: string;
|
|
11
22
|
alt?: string;
|
|
12
23
|
position?: LoginPageLogoLocation;
|
|
13
24
|
scale?: number;
|
|
@@ -7,7 +7,18 @@ interface LoginPageBackgroundConfig {
|
|
|
7
7
|
gradient?: string;
|
|
8
8
|
}
|
|
9
9
|
interface LoginPageLogoConfig {
|
|
10
|
+
/**
|
|
11
|
+
* Fallback logo URL used for both color modes.
|
|
12
|
+
*/
|
|
10
13
|
url?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Logo URL for light mode. Falls back to url when empty.
|
|
16
|
+
*/
|
|
17
|
+
lightUrl?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Logo URL for dark mode. Falls back to url or lightUrl when empty.
|
|
20
|
+
*/
|
|
21
|
+
darkUrl?: string;
|
|
11
22
|
alt?: string;
|
|
12
23
|
position?: LoginPageLogoLocation;
|
|
13
24
|
scale?: number;
|
|
@@ -20,6 +20,12 @@ var createBackgroundImage = (gradient, imageUrl) => {
|
|
|
20
20
|
};
|
|
21
21
|
var normalizeLogoPosition = (position) => position && LOGIN_LOGO_POSITIONS.includes(position) ? position : "bottom";
|
|
22
22
|
var normalizeLogoScale = (scale) => typeof scale === "number" && Number.isFinite(scale) && scale > 0 ? scale : void 0;
|
|
23
|
+
var resolveLogoUrls = (logo) => {
|
|
24
|
+
const url = normalizeCssValue(logo?.url);
|
|
25
|
+
const lightUrl = normalizeCssValue(logo?.lightUrl) || url;
|
|
26
|
+
const darkUrl = normalizeCssValue(logo?.darkUrl) || url || lightUrl;
|
|
27
|
+
return { lightUrl, darkUrl };
|
|
28
|
+
};
|
|
23
29
|
function LoginPage({
|
|
24
30
|
className,
|
|
25
31
|
style,
|
|
@@ -49,6 +55,9 @@ function LoginPage({
|
|
|
49
55
|
const backgroundMode = backgroundImage ? "custom" : "default";
|
|
50
56
|
const logoPosition = normalizeLogoPosition(logo?.position);
|
|
51
57
|
const logoScale = normalizeLogoScale(logo?.scale);
|
|
58
|
+
const { lightUrl: logoLightUrl, darkUrl: logoDarkUrl } = resolveLogoUrls(logo);
|
|
59
|
+
const hasLogo = Boolean(logoLightUrl || logoDarkUrl);
|
|
60
|
+
const usesSeparateModeLogos = Boolean(logoLightUrl && logoDarkUrl && logoLightUrl !== logoDarkUrl);
|
|
52
61
|
React.useEffect(() => {
|
|
53
62
|
if (!availableMethods.length) {
|
|
54
63
|
setInternalMethodId(void 0);
|
|
@@ -111,19 +120,42 @@ function LoginPage({
|
|
|
111
120
|
}
|
|
112
121
|
),
|
|
113
122
|
toolbar ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__toolbar", "data-login-part": "toolbar", children: toolbar }) : null,
|
|
114
|
-
|
|
123
|
+
hasLogo ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
115
124
|
"div",
|
|
116
125
|
{
|
|
117
126
|
className: `login-page__logo login-page__logo--${logoPosition}`,
|
|
118
127
|
"data-login-part": "logo",
|
|
119
128
|
"data-logo-position": logoPosition,
|
|
120
|
-
children: /* @__PURE__ */ jsxRuntime.
|
|
129
|
+
children: usesSeparateModeLogos ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
130
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
131
|
+
"img",
|
|
132
|
+
{
|
|
133
|
+
className: "login-page__logo-image login-page__logo-image--light",
|
|
134
|
+
"data-login-part": "logo-image",
|
|
135
|
+
"data-login-logo-mode": "light",
|
|
136
|
+
src: logoLightUrl,
|
|
137
|
+
alt: logo?.alt ?? "",
|
|
138
|
+
style: logoScale ? { transform: `scale(${logoScale})` } : void 0
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
142
|
+
"img",
|
|
143
|
+
{
|
|
144
|
+
className: "login-page__logo-image login-page__logo-image--dark",
|
|
145
|
+
"data-login-part": "logo-image",
|
|
146
|
+
"data-login-logo-mode": "dark",
|
|
147
|
+
src: logoDarkUrl,
|
|
148
|
+
alt: logo?.alt ?? "",
|
|
149
|
+
style: logoScale ? { transform: `scale(${logoScale})` } : void 0
|
|
150
|
+
}
|
|
151
|
+
)
|
|
152
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
121
153
|
"img",
|
|
122
154
|
{
|
|
123
155
|
className: "login-page__logo-image",
|
|
124
156
|
"data-login-part": "logo-image",
|
|
125
|
-
src:
|
|
126
|
-
alt: logo
|
|
157
|
+
src: logoLightUrl || logoDarkUrl,
|
|
158
|
+
alt: logo?.alt ?? "",
|
|
127
159
|
style: logoScale ? { transform: `scale(${logoScale})` } : void 0
|
|
128
160
|
}
|
|
129
161
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/login/LoginPage.tsx","../../../src/components/login/LoginLayout.tsx","../../../src/components/login/EmailAuth.tsx","../../../src/components/login/OIDCButton.tsx","../../../src/components/login/OAuthButton.tsx","../../../src/components/login/AuthDivider.tsx","../../../src/components/login/PendingApproval.tsx"],"names":["useMemo","useState","useEffect","jsxs","jsx","React","useCallback","buttonStyle","containerStyle","titleStyle"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport type { LoginPageLogoLocation, LoginPageProps } from './types';\n\nconst LOGIN_LOGO_POSITIONS: LoginPageLogoLocation[] = ['top', 'middle', 'bottom'];\n\nconst normalizeCssValue = (value?: string) => {\n const trimmed = value?.trim();\n return trimmed || undefined;\n};\n\nconst createBackgroundImage = (gradient?: string, imageUrl?: string) => {\n const resolvedGradient = normalizeCssValue(gradient);\n const resolvedImageUrl = normalizeCssValue(imageUrl);\n\n return [resolvedGradient, resolvedImageUrl ? `url(${JSON.stringify(resolvedImageUrl)})` : undefined]\n .filter(Boolean)\n .join(', ');\n};\n\nconst normalizeLogoPosition = (position?: LoginPageLogoLocation): LoginPageLogoLocation =>\n position && LOGIN_LOGO_POSITIONS.includes(position) ? position : 'bottom';\n\nconst normalizeLogoScale = (scale?: number) =>\n typeof scale === 'number' && Number.isFinite(scale) && scale > 0 ? scale : undefined;\n\nexport function LoginPage({\n className,\n style,\n background,\n logo,\n primaryColor,\n radius,\n customCss,\n toolbar,\n title,\n backAction,\n methods,\n activeMethodId,\n defaultMethodId,\n onMethodChange,\n externalLabel,\n externalMethods = [],\n callout,\n}: LoginPageProps) {\n const availableMethods = useMemo(() => methods.filter((method) => !method.hidden), [methods]);\n const fallbackMethodId = defaultMethodId ?? availableMethods[0]?.id;\n const [internalMethodId, setInternalMethodId] = useState<string | undefined>(fallbackMethodId);\n const currentMethodId = activeMethodId ?? internalMethodId;\n const activeMethod = availableMethods.find((method) => method.id === currentMethodId) ?? availableMethods[0];\n const hasTabs = availableMethods.length > 1;\n const backgroundImage = createBackgroundImage(background?.gradient, background?.imageUrl);\n const backgroundMode = backgroundImage ? 'custom' : 'default';\n const logoPosition = normalizeLogoPosition(logo?.position);\n const logoScale = normalizeLogoScale(logo?.scale);\n\n useEffect(() => {\n if (!availableMethods.length) {\n setInternalMethodId(undefined);\n return;\n }\n\n if (!currentMethodId || !availableMethods.some((method) => method.id === currentMethodId)) {\n setInternalMethodId(fallbackMethodId ?? availableMethods[0]?.id);\n }\n }, [availableMethods, currentMethodId, fallbackMethodId]);\n\n const rootStyle = useMemo<React.CSSProperties>(\n () => ({\n ...(primaryColor ? { ['--login-page-theme-primary-color' as string]: primaryColor } : null),\n ...(radius ? { ['--login-page-theme-radius' as string]: radius } : null),\n ...style,\n }),\n [primaryColor, radius, style],\n );\n\n const handleMethodChange = (methodId: string) => {\n if (activeMethodId === undefined) {\n setInternalMethodId(methodId);\n }\n onMethodChange?.(methodId);\n };\n\n const renderExternalMethod = (method: NonNullable<LoginPageProps['externalMethods']>[number]) => {\n const button = (\n <button\n type=\"button\"\n className=\"login-page__oauth-button\"\n data-login-part=\"external-button\"\n data-login-method-id={method.id}\n onClick={method.onClick}\n disabled={method.disabled}\n >\n {method.icon ? (\n <span className=\"login-page__oauth-icon\" data-login-part=\"external-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n\n return <React.Fragment key={method.id}>{method.render ? method.render(button) : button}</React.Fragment>;\n };\n\n return (\n <main\n className={['login-page', className].filter(Boolean).join(' ')}\n data-login-page\n data-login-part=\"root\"\n data-login-background={backgroundMode}\n style={rootStyle}\n >\n {customCss ? <style data-login-page-custom-css>{customCss}</style> : null}\n\n <div\n className=\"login-page__background\"\n data-login-part=\"background\"\n data-login-background={backgroundMode}\n style={backgroundImage ? { backgroundImage } : undefined}\n aria-hidden=\"true\"\n />\n\n {toolbar ? (\n <div className=\"login-page__toolbar\" data-login-part=\"toolbar\">\n {toolbar}\n </div>\n ) : null}\n\n {logo?.url ? (\n <div\n className={`login-page__logo login-page__logo--${logoPosition}`}\n data-login-part=\"logo\"\n data-logo-position={logoPosition}\n >\n <img\n className=\"login-page__logo-image\"\n data-login-part=\"logo-image\"\n src={logo.url}\n alt={logo.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n </div>\n ) : null}\n\n <section\n className=\"login-page__form\"\n data-login-part=\"panel\"\n aria-label={typeof title === 'string' ? title : undefined}\n >\n {backAction ? (\n <button type=\"button\" className=\"login-page__back\" data-login-part=\"back\" onClick={backAction.onClick}>\n {backAction.icon ? (\n <span className=\"login-page__back-icon\" data-login-part=\"back-icon\">\n {backAction.icon}\n </span>\n ) : null}\n <span>{backAction.label}</span>\n </button>\n ) : null}\n\n {title ? (\n <h1 className=\"login-page__title\" data-login-part=\"title\">\n {title}\n </h1>\n ) : null}\n\n {hasTabs ? (\n <div className=\"login-page__tabs\" data-login-part=\"tabs\" role=\"tablist\">\n {availableMethods.map((method) => {\n const selected = method.id === activeMethod?.id;\n return (\n <button\n key={method.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n className={`login-page__tab ${selected ? 'login-page__tab--active' : ''}`}\n data-login-part=\"tab\"\n data-login-method-id={method.id}\n data-active={selected ? 'true' : 'false'}\n onClick={() => handleMethodChange(method.id)}\n >\n {method.icon ? (\n <span className=\"login-page__tab-icon\" data-login-part=\"tab-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n\n {activeMethod ? (\n <form\n className=\"login-page__form-fields\"\n data-login-part=\"form\"\n data-login-method-id={activeMethod.id}\n onSubmit={activeMethod.onSubmit}\n >\n {activeMethod.fields.map((field) => (\n <div className=\"login-page__field\" data-login-part=\"field\" data-login-field-name={field.name} key={field.name}>\n <input\n id={field.id}\n name={field.name}\n type={field.type ?? 'text'}\n value={field.value}\n placeholder={field.placeholder}\n autoComplete={field.autoComplete}\n inputMode={field.inputMode}\n maxLength={field.maxLength}\n pattern={field.pattern}\n disabled={activeMethod.disabled || activeMethod.isLoading || field.disabled}\n required={field.required}\n className=\"login-page__input\"\n data-login-part=\"input\"\n onChange={(event) => field.onChange(event.target.value)}\n />\n </div>\n ))}\n\n {activeMethod.checkbox ? (\n <label className=\"login-page__remember\" data-login-part=\"checkbox-label\" htmlFor={activeMethod.checkbox.id}>\n <input\n id={activeMethod.checkbox.id}\n type=\"checkbox\"\n className=\"login-page__checkbox\"\n data-login-part=\"checkbox\"\n checked={activeMethod.checkbox.checked}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.checkbox.disabled}\n onChange={(event) => activeMethod.checkbox?.onChange(event.target.checked)}\n />\n <span>{activeMethod.checkbox.label}</span>\n </label>\n ) : null}\n\n {activeMethod.footer || activeMethod.footerAction ? (\n <div className=\"login-page__method-footer\" data-login-part=\"method-footer\">\n {activeMethod.footer}\n {activeMethod.footerAction ? (\n <button\n type=\"button\"\n className=\"login-page__method-footer-action\"\n data-login-part=\"method-footer-action\"\n data-login-method-id={activeMethod.id}\n onClick={activeMethod.footerAction.onClick}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.footerAction.disabled}\n >\n {activeMethod.footerAction.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n <button\n type=\"submit\"\n className=\"login-page__submit\"\n data-login-part=\"submit-button\"\n disabled={activeMethod.disabled || activeMethod.isLoading}\n >\n {activeMethod.isLoading && activeMethod.loadingLabel ? activeMethod.loadingLabel : activeMethod.submitLabel}\n </button>\n </form>\n ) : null}\n\n {callout ? (\n <div\n className={`login-page__callout login-page__callout--${callout.tone ?? 'info'}`}\n data-login-part=\"callout\"\n data-tone={callout.tone ?? 'info'}\n >\n <div className=\"login-page__callout-title\" data-login-part=\"callout-title\">\n {callout.title}\n </div>\n {callout.description ? (\n <p className=\"login-page__callout-description\" data-login-part=\"callout-description\">\n {callout.description}\n </p>\n ) : null}\n {callout.detail ? (\n <p className=\"login-page__callout-detail\" data-login-part=\"callout-detail\">\n {callout.detail}\n </p>\n ) : null}\n {callout.action ? (\n <button\n type=\"button\"\n className=\"login-page__callout-action\"\n data-login-part=\"callout-action\"\n onClick={callout.action.onClick}\n disabled={callout.action.disabled}\n >\n {callout.action.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n {externalMethods.length ? (\n <div className=\"login-page__oauth-section\" data-login-part=\"external-methods\">\n {externalLabel ? (\n <div className=\"login-page__oauth-label\" data-login-part=\"external-label\">\n {externalLabel}\n </div>\n ) : null}\n <div className=\"login-page__oauth-list\" data-login-part=\"external-list\">\n {externalMethods.map(renderExternalMethod)}\n </div>\n </div>\n ) : null}\n </section>\n </main>\n );\n}\n","import React from 'react';\nimport type { LoginLayoutProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n padding: '1rem',\n};\n\nconst cardStyle: React.CSSProperties = {\n width: '100%',\n maxWidth: '400px',\n};\n\nconst logoContainerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n marginBottom: '1.5rem',\n};\n\nconst logoImageStyle: React.CSSProperties = {\n height: '48px',\n width: 'auto',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.5rem',\n fontWeight: 700,\n textAlign: 'center' as const,\n marginBottom: '0.5rem',\n lineHeight: 1.2,\n};\n\nconst subtitleStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n textAlign: 'center' as const,\n marginBottom: '1.5rem',\n opacity: 0.6,\n};\n\nconst footerStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n textAlign: 'center' as const,\n marginTop: '2rem',\n opacity: 0.4,\n};\n\nexport const LoginLayout: React.FC<LoginLayoutProps> = ({\n className,\n style,\n children,\n logo,\n title,\n subtitle,\n footer,\n}) => {\n const renderLogo = () => {\n if (!logo) return null;\n if (typeof logo === 'string') {\n return (\n <div style={logoContainerStyle}>\n <img src={logo} alt={title || 'Logo'} style={logoImageStyle} />\n </div>\n );\n }\n return <div style={logoContainerStyle}>{logo}</div>;\n };\n\n return (\n <div className={className} style={{ ...containerStyle, ...style }}>\n <div style={cardStyle}>\n {renderLogo()}\n {title && <h1 style={titleStyle}>{title}</h1>}\n {subtitle && <p style={subtitleStyle}>{subtitle}</p>}\n {children}\n {footer && <p style={footerStyle}>{footer}</p>}\n </div>\n </div>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { EmailAuthProps } from './types';\n\nconst formStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n};\n\nconst labelStyle: React.CSSProperties = {\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 500,\n marginBottom: '0.375rem',\n};\n\nconst inputStyle: React.CSSProperties = {\n display: 'block',\n width: '100%',\n padding: '0.5rem 0.75rem',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n outline: 'none',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#ffffff',\n backgroundColor: '#111827',\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nconst buttonDisabledStyle: React.CSSProperties = {\n ...buttonStyle,\n opacity: 0.6,\n cursor: 'not-allowed',\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n color: '#dc2626',\n marginTop: '-0.25rem',\n};\n\nexport const EmailAuth = React.forwardRef<HTMLFormElement, EmailAuthProps>(\n (\n {\n className,\n email,\n onEmailChange,\n password,\n onPasswordChange,\n onSubmit,\n isLoading = false,\n disabled = false,\n emailLabel = 'Email',\n emailPlaceholder = 'Enter your email',\n passwordLabel = 'Password',\n passwordPlaceholder = 'Enter your password',\n submitText = 'Sign In',\n loadingText = 'Signing in...',\n error,\n },\n ref,\n ) => {\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (!isLoading && !disabled) {\n onSubmit();\n }\n },\n [onSubmit, isLoading, disabled],\n );\n\n const isDisabled = isLoading || disabled;\n\n return (\n <form ref={ref} className={className} style={formStyle} onSubmit={handleSubmit}>\n <div>\n <label style={labelStyle}>{emailLabel}</label>\n <input\n type=\"email\"\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n placeholder={emailPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"email\"\n style={inputStyle}\n />\n </div>\n\n <div>\n <label style={labelStyle}>{passwordLabel}</label>\n <input\n type=\"password\"\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n placeholder={passwordPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"current-password\"\n style={inputStyle}\n />\n </div>\n\n {error && <p style={errorStyle}>{error}</p>}\n\n <button type=\"submit\" disabled={isDisabled} style={isDisabled ? buttonDisabledStyle : buttonStyle}>\n {isLoading ? loadingText : submitText}\n </button>\n </form>\n );\n },\n);\n\nEmailAuth.displayName = 'EmailAuth';\n","import React from 'react';\nimport type { OIDCButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OIDCButton = React.forwardRef<HTMLButtonElement, OIDCButtonProps>(\n ({ className, label = 'Sign in with SSO', onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {label}\n </button>\n );\n },\n);\n\nOIDCButton.displayName = 'OIDCButton';\n","import React from 'react';\nimport type { OAuthButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OAuthButton = React.forwardRef<HTMLButtonElement, OAuthButtonProps>(\n ({ className, providerName, onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {providerName}\n </button>\n );\n },\n);\n\nOAuthButton.displayName = 'OAuthButton';\n","import React from 'react';\nimport type { AuthDividerProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n margin: '1rem 0',\n};\n\nconst lineStyle: React.CSSProperties = {\n flex: 1,\n height: '1px',\n backgroundColor: '#e5e7eb',\n};\n\nconst textStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n opacity: 0.5,\n whiteSpace: 'nowrap',\n};\n\nexport const AuthDivider: React.FC<AuthDividerProps> = ({ className, text = 'or' }) => {\n return (\n <div className={className} style={containerStyle}>\n <div style={lineStyle} />\n <span style={textStyle}>{text}</span>\n <div style={lineStyle} />\n </div>\n );\n};\n","import React from 'react';\nimport type { PendingApprovalProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n padding: '1.5rem 0',\n gap: '1rem',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n fontWeight: 600,\n margin: 0,\n};\n\nconst descriptionStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n opacity: 0.6,\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst backButtonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.5rem 1.5rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n marginTop: '0.5rem',\n};\n\nexport const PendingApproval: React.FC<PendingApprovalProps> = ({\n className,\n icon,\n title = 'Pending Approval',\n description = 'Your account is awaiting administrator approval. Please check back later.',\n backText = 'Go Back',\n onBack,\n}) => {\n return (\n <div className={className} style={containerStyle}>\n {icon}\n <h2 style={titleStyle}>{title}</h2>\n <p style={descriptionStyle}>{description}</p>\n {onBack && (\n <button type=\"button\" style={backButtonStyle} onClick={onBack}>\n {backText}\n </button>\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/login/LoginPage.tsx","../../../src/components/login/LoginLayout.tsx","../../../src/components/login/EmailAuth.tsx","../../../src/components/login/OIDCButton.tsx","../../../src/components/login/OAuthButton.tsx","../../../src/components/login/AuthDivider.tsx","../../../src/components/login/PendingApproval.tsx"],"names":["useMemo","useState","useEffect","jsxs","jsx","React","Fragment","useCallback","buttonStyle","containerStyle","titleStyle"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport type { LoginPageLogoLocation, LoginPageProps } from './types';\n\nconst LOGIN_LOGO_POSITIONS: LoginPageLogoLocation[] = ['top', 'middle', 'bottom'];\n\nconst normalizeCssValue = (value?: string) => {\n const trimmed = value?.trim();\n return trimmed || undefined;\n};\n\nconst createBackgroundImage = (gradient?: string, imageUrl?: string) => {\n const resolvedGradient = normalizeCssValue(gradient);\n const resolvedImageUrl = normalizeCssValue(imageUrl);\n\n return [resolvedGradient, resolvedImageUrl ? `url(${JSON.stringify(resolvedImageUrl)})` : undefined]\n .filter(Boolean)\n .join(', ');\n};\n\nconst normalizeLogoPosition = (position?: LoginPageLogoLocation): LoginPageLogoLocation =>\n position && LOGIN_LOGO_POSITIONS.includes(position) ? position : 'bottom';\n\nconst normalizeLogoScale = (scale?: number) =>\n typeof scale === 'number' && Number.isFinite(scale) && scale > 0 ? scale : undefined;\n\nconst resolveLogoUrls = (logo?: LoginPageProps['logo']) => {\n const url = normalizeCssValue(logo?.url);\n const lightUrl = normalizeCssValue(logo?.lightUrl) || url;\n const darkUrl = normalizeCssValue(logo?.darkUrl) || url || lightUrl;\n\n return { lightUrl, darkUrl };\n};\n\nexport function LoginPage({\n className,\n style,\n background,\n logo,\n primaryColor,\n radius,\n customCss,\n toolbar,\n title,\n backAction,\n methods,\n activeMethodId,\n defaultMethodId,\n onMethodChange,\n externalLabel,\n externalMethods = [],\n callout,\n}: LoginPageProps) {\n const availableMethods = useMemo(() => methods.filter((method) => !method.hidden), [methods]);\n const fallbackMethodId = defaultMethodId ?? availableMethods[0]?.id;\n const [internalMethodId, setInternalMethodId] = useState<string | undefined>(fallbackMethodId);\n const currentMethodId = activeMethodId ?? internalMethodId;\n const activeMethod = availableMethods.find((method) => method.id === currentMethodId) ?? availableMethods[0];\n const hasTabs = availableMethods.length > 1;\n const backgroundImage = createBackgroundImage(background?.gradient, background?.imageUrl);\n const backgroundMode = backgroundImage ? 'custom' : 'default';\n const logoPosition = normalizeLogoPosition(logo?.position);\n const logoScale = normalizeLogoScale(logo?.scale);\n const { lightUrl: logoLightUrl, darkUrl: logoDarkUrl } = resolveLogoUrls(logo);\n const hasLogo = Boolean(logoLightUrl || logoDarkUrl);\n const usesSeparateModeLogos = Boolean(logoLightUrl && logoDarkUrl && logoLightUrl !== logoDarkUrl);\n\n useEffect(() => {\n if (!availableMethods.length) {\n setInternalMethodId(undefined);\n return;\n }\n\n if (!currentMethodId || !availableMethods.some((method) => method.id === currentMethodId)) {\n setInternalMethodId(fallbackMethodId ?? availableMethods[0]?.id);\n }\n }, [availableMethods, currentMethodId, fallbackMethodId]);\n\n const rootStyle = useMemo<React.CSSProperties>(\n () => ({\n ...(primaryColor ? { ['--login-page-theme-primary-color' as string]: primaryColor } : null),\n ...(radius ? { ['--login-page-theme-radius' as string]: radius } : null),\n ...style,\n }),\n [primaryColor, radius, style],\n );\n\n const handleMethodChange = (methodId: string) => {\n if (activeMethodId === undefined) {\n setInternalMethodId(methodId);\n }\n onMethodChange?.(methodId);\n };\n\n const renderExternalMethod = (method: NonNullable<LoginPageProps['externalMethods']>[number]) => {\n const button = (\n <button\n type=\"button\"\n className=\"login-page__oauth-button\"\n data-login-part=\"external-button\"\n data-login-method-id={method.id}\n onClick={method.onClick}\n disabled={method.disabled}\n >\n {method.icon ? (\n <span className=\"login-page__oauth-icon\" data-login-part=\"external-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n\n return <React.Fragment key={method.id}>{method.render ? method.render(button) : button}</React.Fragment>;\n };\n\n return (\n <main\n className={['login-page', className].filter(Boolean).join(' ')}\n data-login-page\n data-login-part=\"root\"\n data-login-background={backgroundMode}\n style={rootStyle}\n >\n {customCss ? <style data-login-page-custom-css>{customCss}</style> : null}\n\n <div\n className=\"login-page__background\"\n data-login-part=\"background\"\n data-login-background={backgroundMode}\n style={backgroundImage ? { backgroundImage } : undefined}\n aria-hidden=\"true\"\n />\n\n {toolbar ? (\n <div className=\"login-page__toolbar\" data-login-part=\"toolbar\">\n {toolbar}\n </div>\n ) : null}\n\n {hasLogo ? (\n <div\n className={`login-page__logo login-page__logo--${logoPosition}`}\n data-login-part=\"logo\"\n data-logo-position={logoPosition}\n >\n {usesSeparateModeLogos ? (\n <>\n <img\n className=\"login-page__logo-image login-page__logo-image--light\"\n data-login-part=\"logo-image\"\n data-login-logo-mode=\"light\"\n src={logoLightUrl}\n alt={logo?.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n <img\n className=\"login-page__logo-image login-page__logo-image--dark\"\n data-login-part=\"logo-image\"\n data-login-logo-mode=\"dark\"\n src={logoDarkUrl}\n alt={logo?.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n </>\n ) : (\n <img\n className=\"login-page__logo-image\"\n data-login-part=\"logo-image\"\n src={logoLightUrl || logoDarkUrl}\n alt={logo?.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n )}\n </div>\n ) : null}\n\n <section\n className=\"login-page__form\"\n data-login-part=\"panel\"\n aria-label={typeof title === 'string' ? title : undefined}\n >\n {backAction ? (\n <button type=\"button\" className=\"login-page__back\" data-login-part=\"back\" onClick={backAction.onClick}>\n {backAction.icon ? (\n <span className=\"login-page__back-icon\" data-login-part=\"back-icon\">\n {backAction.icon}\n </span>\n ) : null}\n <span>{backAction.label}</span>\n </button>\n ) : null}\n\n {title ? (\n <h1 className=\"login-page__title\" data-login-part=\"title\">\n {title}\n </h1>\n ) : null}\n\n {hasTabs ? (\n <div className=\"login-page__tabs\" data-login-part=\"tabs\" role=\"tablist\">\n {availableMethods.map((method) => {\n const selected = method.id === activeMethod?.id;\n return (\n <button\n key={method.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n className={`login-page__tab ${selected ? 'login-page__tab--active' : ''}`}\n data-login-part=\"tab\"\n data-login-method-id={method.id}\n data-active={selected ? 'true' : 'false'}\n onClick={() => handleMethodChange(method.id)}\n >\n {method.icon ? (\n <span className=\"login-page__tab-icon\" data-login-part=\"tab-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n\n {activeMethod ? (\n <form\n className=\"login-page__form-fields\"\n data-login-part=\"form\"\n data-login-method-id={activeMethod.id}\n onSubmit={activeMethod.onSubmit}\n >\n {activeMethod.fields.map((field) => (\n <div className=\"login-page__field\" data-login-part=\"field\" data-login-field-name={field.name} key={field.name}>\n <input\n id={field.id}\n name={field.name}\n type={field.type ?? 'text'}\n value={field.value}\n placeholder={field.placeholder}\n autoComplete={field.autoComplete}\n inputMode={field.inputMode}\n maxLength={field.maxLength}\n pattern={field.pattern}\n disabled={activeMethod.disabled || activeMethod.isLoading || field.disabled}\n required={field.required}\n className=\"login-page__input\"\n data-login-part=\"input\"\n onChange={(event) => field.onChange(event.target.value)}\n />\n </div>\n ))}\n\n {activeMethod.checkbox ? (\n <label className=\"login-page__remember\" data-login-part=\"checkbox-label\" htmlFor={activeMethod.checkbox.id}>\n <input\n id={activeMethod.checkbox.id}\n type=\"checkbox\"\n className=\"login-page__checkbox\"\n data-login-part=\"checkbox\"\n checked={activeMethod.checkbox.checked}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.checkbox.disabled}\n onChange={(event) => activeMethod.checkbox?.onChange(event.target.checked)}\n />\n <span>{activeMethod.checkbox.label}</span>\n </label>\n ) : null}\n\n {activeMethod.footer || activeMethod.footerAction ? (\n <div className=\"login-page__method-footer\" data-login-part=\"method-footer\">\n {activeMethod.footer}\n {activeMethod.footerAction ? (\n <button\n type=\"button\"\n className=\"login-page__method-footer-action\"\n data-login-part=\"method-footer-action\"\n data-login-method-id={activeMethod.id}\n onClick={activeMethod.footerAction.onClick}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.footerAction.disabled}\n >\n {activeMethod.footerAction.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n <button\n type=\"submit\"\n className=\"login-page__submit\"\n data-login-part=\"submit-button\"\n disabled={activeMethod.disabled || activeMethod.isLoading}\n >\n {activeMethod.isLoading && activeMethod.loadingLabel ? activeMethod.loadingLabel : activeMethod.submitLabel}\n </button>\n </form>\n ) : null}\n\n {callout ? (\n <div\n className={`login-page__callout login-page__callout--${callout.tone ?? 'info'}`}\n data-login-part=\"callout\"\n data-tone={callout.tone ?? 'info'}\n >\n <div className=\"login-page__callout-title\" data-login-part=\"callout-title\">\n {callout.title}\n </div>\n {callout.description ? (\n <p className=\"login-page__callout-description\" data-login-part=\"callout-description\">\n {callout.description}\n </p>\n ) : null}\n {callout.detail ? (\n <p className=\"login-page__callout-detail\" data-login-part=\"callout-detail\">\n {callout.detail}\n </p>\n ) : null}\n {callout.action ? (\n <button\n type=\"button\"\n className=\"login-page__callout-action\"\n data-login-part=\"callout-action\"\n onClick={callout.action.onClick}\n disabled={callout.action.disabled}\n >\n {callout.action.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n {externalMethods.length ? (\n <div className=\"login-page__oauth-section\" data-login-part=\"external-methods\">\n {externalLabel ? (\n <div className=\"login-page__oauth-label\" data-login-part=\"external-label\">\n {externalLabel}\n </div>\n ) : null}\n <div className=\"login-page__oauth-list\" data-login-part=\"external-list\">\n {externalMethods.map(renderExternalMethod)}\n </div>\n </div>\n ) : null}\n </section>\n </main>\n );\n}\n","import React from 'react';\nimport type { LoginLayoutProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n padding: '1rem',\n};\n\nconst cardStyle: React.CSSProperties = {\n width: '100%',\n maxWidth: '400px',\n};\n\nconst logoContainerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n marginBottom: '1.5rem',\n};\n\nconst logoImageStyle: React.CSSProperties = {\n height: '48px',\n width: 'auto',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.5rem',\n fontWeight: 700,\n textAlign: 'center' as const,\n marginBottom: '0.5rem',\n lineHeight: 1.2,\n};\n\nconst subtitleStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n textAlign: 'center' as const,\n marginBottom: '1.5rem',\n opacity: 0.6,\n};\n\nconst footerStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n textAlign: 'center' as const,\n marginTop: '2rem',\n opacity: 0.4,\n};\n\nexport const LoginLayout: React.FC<LoginLayoutProps> = ({\n className,\n style,\n children,\n logo,\n title,\n subtitle,\n footer,\n}) => {\n const renderLogo = () => {\n if (!logo) return null;\n if (typeof logo === 'string') {\n return (\n <div style={logoContainerStyle}>\n <img src={logo} alt={title || 'Logo'} style={logoImageStyle} />\n </div>\n );\n }\n return <div style={logoContainerStyle}>{logo}</div>;\n };\n\n return (\n <div className={className} style={{ ...containerStyle, ...style }}>\n <div style={cardStyle}>\n {renderLogo()}\n {title && <h1 style={titleStyle}>{title}</h1>}\n {subtitle && <p style={subtitleStyle}>{subtitle}</p>}\n {children}\n {footer && <p style={footerStyle}>{footer}</p>}\n </div>\n </div>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { EmailAuthProps } from './types';\n\nconst formStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n};\n\nconst labelStyle: React.CSSProperties = {\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 500,\n marginBottom: '0.375rem',\n};\n\nconst inputStyle: React.CSSProperties = {\n display: 'block',\n width: '100%',\n padding: '0.5rem 0.75rem',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n outline: 'none',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#ffffff',\n backgroundColor: '#111827',\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nconst buttonDisabledStyle: React.CSSProperties = {\n ...buttonStyle,\n opacity: 0.6,\n cursor: 'not-allowed',\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n color: '#dc2626',\n marginTop: '-0.25rem',\n};\n\nexport const EmailAuth = React.forwardRef<HTMLFormElement, EmailAuthProps>(\n (\n {\n className,\n email,\n onEmailChange,\n password,\n onPasswordChange,\n onSubmit,\n isLoading = false,\n disabled = false,\n emailLabel = 'Email',\n emailPlaceholder = 'Enter your email',\n passwordLabel = 'Password',\n passwordPlaceholder = 'Enter your password',\n submitText = 'Sign In',\n loadingText = 'Signing in...',\n error,\n },\n ref,\n ) => {\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (!isLoading && !disabled) {\n onSubmit();\n }\n },\n [onSubmit, isLoading, disabled],\n );\n\n const isDisabled = isLoading || disabled;\n\n return (\n <form ref={ref} className={className} style={formStyle} onSubmit={handleSubmit}>\n <div>\n <label style={labelStyle}>{emailLabel}</label>\n <input\n type=\"email\"\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n placeholder={emailPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"email\"\n style={inputStyle}\n />\n </div>\n\n <div>\n <label style={labelStyle}>{passwordLabel}</label>\n <input\n type=\"password\"\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n placeholder={passwordPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"current-password\"\n style={inputStyle}\n />\n </div>\n\n {error && <p style={errorStyle}>{error}</p>}\n\n <button type=\"submit\" disabled={isDisabled} style={isDisabled ? buttonDisabledStyle : buttonStyle}>\n {isLoading ? loadingText : submitText}\n </button>\n </form>\n );\n },\n);\n\nEmailAuth.displayName = 'EmailAuth';\n","import React from 'react';\nimport type { OIDCButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OIDCButton = React.forwardRef<HTMLButtonElement, OIDCButtonProps>(\n ({ className, label = 'Sign in with SSO', onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {label}\n </button>\n );\n },\n);\n\nOIDCButton.displayName = 'OIDCButton';\n","import React from 'react';\nimport type { OAuthButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OAuthButton = React.forwardRef<HTMLButtonElement, OAuthButtonProps>(\n ({ className, providerName, onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {providerName}\n </button>\n );\n },\n);\n\nOAuthButton.displayName = 'OAuthButton';\n","import React from 'react';\nimport type { AuthDividerProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n margin: '1rem 0',\n};\n\nconst lineStyle: React.CSSProperties = {\n flex: 1,\n height: '1px',\n backgroundColor: '#e5e7eb',\n};\n\nconst textStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n opacity: 0.5,\n whiteSpace: 'nowrap',\n};\n\nexport const AuthDivider: React.FC<AuthDividerProps> = ({ className, text = 'or' }) => {\n return (\n <div className={className} style={containerStyle}>\n <div style={lineStyle} />\n <span style={textStyle}>{text}</span>\n <div style={lineStyle} />\n </div>\n );\n};\n","import React from 'react';\nimport type { PendingApprovalProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n padding: '1.5rem 0',\n gap: '1rem',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n fontWeight: 600,\n margin: 0,\n};\n\nconst descriptionStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n opacity: 0.6,\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst backButtonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.5rem 1.5rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n marginTop: '0.5rem',\n};\n\nexport const PendingApproval: React.FC<PendingApprovalProps> = ({\n className,\n icon,\n title = 'Pending Approval',\n description = 'Your account is awaiting administrator approval. Please check back later.',\n backText = 'Go Back',\n onBack,\n}) => {\n return (\n <div className={className} style={containerStyle}>\n {icon}\n <h2 style={titleStyle}>{title}</h2>\n <p style={descriptionStyle}>{description}</p>\n {onBack && (\n <button type=\"button\" style={backButtonStyle} onClick={onBack}>\n {backText}\n </button>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useMemo, useState, useEffect } from 'react';
|
|
2
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
// src/components/login/LoginPage.tsx
|
|
5
5
|
var LOGIN_LOGO_POSITIONS = ["top", "middle", "bottom"];
|
|
@@ -14,6 +14,12 @@ var createBackgroundImage = (gradient, imageUrl) => {
|
|
|
14
14
|
};
|
|
15
15
|
var normalizeLogoPosition = (position) => position && LOGIN_LOGO_POSITIONS.includes(position) ? position : "bottom";
|
|
16
16
|
var normalizeLogoScale = (scale) => typeof scale === "number" && Number.isFinite(scale) && scale > 0 ? scale : void 0;
|
|
17
|
+
var resolveLogoUrls = (logo) => {
|
|
18
|
+
const url = normalizeCssValue(logo?.url);
|
|
19
|
+
const lightUrl = normalizeCssValue(logo?.lightUrl) || url;
|
|
20
|
+
const darkUrl = normalizeCssValue(logo?.darkUrl) || url || lightUrl;
|
|
21
|
+
return { lightUrl, darkUrl };
|
|
22
|
+
};
|
|
17
23
|
function LoginPage({
|
|
18
24
|
className,
|
|
19
25
|
style,
|
|
@@ -43,6 +49,9 @@ function LoginPage({
|
|
|
43
49
|
const backgroundMode = backgroundImage ? "custom" : "default";
|
|
44
50
|
const logoPosition = normalizeLogoPosition(logo?.position);
|
|
45
51
|
const logoScale = normalizeLogoScale(logo?.scale);
|
|
52
|
+
const { lightUrl: logoLightUrl, darkUrl: logoDarkUrl } = resolveLogoUrls(logo);
|
|
53
|
+
const hasLogo = Boolean(logoLightUrl || logoDarkUrl);
|
|
54
|
+
const usesSeparateModeLogos = Boolean(logoLightUrl && logoDarkUrl && logoLightUrl !== logoDarkUrl);
|
|
46
55
|
useEffect(() => {
|
|
47
56
|
if (!availableMethods.length) {
|
|
48
57
|
setInternalMethodId(void 0);
|
|
@@ -105,19 +114,42 @@ function LoginPage({
|
|
|
105
114
|
}
|
|
106
115
|
),
|
|
107
116
|
toolbar ? /* @__PURE__ */ jsx("div", { className: "login-page__toolbar", "data-login-part": "toolbar", children: toolbar }) : null,
|
|
108
|
-
|
|
117
|
+
hasLogo ? /* @__PURE__ */ jsx(
|
|
109
118
|
"div",
|
|
110
119
|
{
|
|
111
120
|
className: `login-page__logo login-page__logo--${logoPosition}`,
|
|
112
121
|
"data-login-part": "logo",
|
|
113
122
|
"data-logo-position": logoPosition,
|
|
114
|
-
children: /* @__PURE__ */
|
|
123
|
+
children: usesSeparateModeLogos ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
124
|
+
/* @__PURE__ */ jsx(
|
|
125
|
+
"img",
|
|
126
|
+
{
|
|
127
|
+
className: "login-page__logo-image login-page__logo-image--light",
|
|
128
|
+
"data-login-part": "logo-image",
|
|
129
|
+
"data-login-logo-mode": "light",
|
|
130
|
+
src: logoLightUrl,
|
|
131
|
+
alt: logo?.alt ?? "",
|
|
132
|
+
style: logoScale ? { transform: `scale(${logoScale})` } : void 0
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
/* @__PURE__ */ jsx(
|
|
136
|
+
"img",
|
|
137
|
+
{
|
|
138
|
+
className: "login-page__logo-image login-page__logo-image--dark",
|
|
139
|
+
"data-login-part": "logo-image",
|
|
140
|
+
"data-login-logo-mode": "dark",
|
|
141
|
+
src: logoDarkUrl,
|
|
142
|
+
alt: logo?.alt ?? "",
|
|
143
|
+
style: logoScale ? { transform: `scale(${logoScale})` } : void 0
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
] }) : /* @__PURE__ */ jsx(
|
|
115
147
|
"img",
|
|
116
148
|
{
|
|
117
149
|
className: "login-page__logo-image",
|
|
118
150
|
"data-login-part": "logo-image",
|
|
119
|
-
src:
|
|
120
|
-
alt: logo
|
|
151
|
+
src: logoLightUrl || logoDarkUrl,
|
|
152
|
+
alt: logo?.alt ?? "",
|
|
121
153
|
style: logoScale ? { transform: `scale(${logoScale})` } : void 0
|
|
122
154
|
}
|
|
123
155
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/login/LoginPage.tsx","../../../src/components/login/LoginLayout.tsx","../../../src/components/login/EmailAuth.tsx","../../../src/components/login/OIDCButton.tsx","../../../src/components/login/OAuthButton.tsx","../../../src/components/login/AuthDivider.tsx","../../../src/components/login/PendingApproval.tsx"],"names":["jsx","jsxs","React","buttonStyle","containerStyle","titleStyle"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport type { LoginPageLogoLocation, LoginPageProps } from './types';\n\nconst LOGIN_LOGO_POSITIONS: LoginPageLogoLocation[] = ['top', 'middle', 'bottom'];\n\nconst normalizeCssValue = (value?: string) => {\n const trimmed = value?.trim();\n return trimmed || undefined;\n};\n\nconst createBackgroundImage = (gradient?: string, imageUrl?: string) => {\n const resolvedGradient = normalizeCssValue(gradient);\n const resolvedImageUrl = normalizeCssValue(imageUrl);\n\n return [resolvedGradient, resolvedImageUrl ? `url(${JSON.stringify(resolvedImageUrl)})` : undefined]\n .filter(Boolean)\n .join(', ');\n};\n\nconst normalizeLogoPosition = (position?: LoginPageLogoLocation): LoginPageLogoLocation =>\n position && LOGIN_LOGO_POSITIONS.includes(position) ? position : 'bottom';\n\nconst normalizeLogoScale = (scale?: number) =>\n typeof scale === 'number' && Number.isFinite(scale) && scale > 0 ? scale : undefined;\n\nexport function LoginPage({\n className,\n style,\n background,\n logo,\n primaryColor,\n radius,\n customCss,\n toolbar,\n title,\n backAction,\n methods,\n activeMethodId,\n defaultMethodId,\n onMethodChange,\n externalLabel,\n externalMethods = [],\n callout,\n}: LoginPageProps) {\n const availableMethods = useMemo(() => methods.filter((method) => !method.hidden), [methods]);\n const fallbackMethodId = defaultMethodId ?? availableMethods[0]?.id;\n const [internalMethodId, setInternalMethodId] = useState<string | undefined>(fallbackMethodId);\n const currentMethodId = activeMethodId ?? internalMethodId;\n const activeMethod = availableMethods.find((method) => method.id === currentMethodId) ?? availableMethods[0];\n const hasTabs = availableMethods.length > 1;\n const backgroundImage = createBackgroundImage(background?.gradient, background?.imageUrl);\n const backgroundMode = backgroundImage ? 'custom' : 'default';\n const logoPosition = normalizeLogoPosition(logo?.position);\n const logoScale = normalizeLogoScale(logo?.scale);\n\n useEffect(() => {\n if (!availableMethods.length) {\n setInternalMethodId(undefined);\n return;\n }\n\n if (!currentMethodId || !availableMethods.some((method) => method.id === currentMethodId)) {\n setInternalMethodId(fallbackMethodId ?? availableMethods[0]?.id);\n }\n }, [availableMethods, currentMethodId, fallbackMethodId]);\n\n const rootStyle = useMemo<React.CSSProperties>(\n () => ({\n ...(primaryColor ? { ['--login-page-theme-primary-color' as string]: primaryColor } : null),\n ...(radius ? { ['--login-page-theme-radius' as string]: radius } : null),\n ...style,\n }),\n [primaryColor, radius, style],\n );\n\n const handleMethodChange = (methodId: string) => {\n if (activeMethodId === undefined) {\n setInternalMethodId(methodId);\n }\n onMethodChange?.(methodId);\n };\n\n const renderExternalMethod = (method: NonNullable<LoginPageProps['externalMethods']>[number]) => {\n const button = (\n <button\n type=\"button\"\n className=\"login-page__oauth-button\"\n data-login-part=\"external-button\"\n data-login-method-id={method.id}\n onClick={method.onClick}\n disabled={method.disabled}\n >\n {method.icon ? (\n <span className=\"login-page__oauth-icon\" data-login-part=\"external-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n\n return <React.Fragment key={method.id}>{method.render ? method.render(button) : button}</React.Fragment>;\n };\n\n return (\n <main\n className={['login-page', className].filter(Boolean).join(' ')}\n data-login-page\n data-login-part=\"root\"\n data-login-background={backgroundMode}\n style={rootStyle}\n >\n {customCss ? <style data-login-page-custom-css>{customCss}</style> : null}\n\n <div\n className=\"login-page__background\"\n data-login-part=\"background\"\n data-login-background={backgroundMode}\n style={backgroundImage ? { backgroundImage } : undefined}\n aria-hidden=\"true\"\n />\n\n {toolbar ? (\n <div className=\"login-page__toolbar\" data-login-part=\"toolbar\">\n {toolbar}\n </div>\n ) : null}\n\n {logo?.url ? (\n <div\n className={`login-page__logo login-page__logo--${logoPosition}`}\n data-login-part=\"logo\"\n data-logo-position={logoPosition}\n >\n <img\n className=\"login-page__logo-image\"\n data-login-part=\"logo-image\"\n src={logo.url}\n alt={logo.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n </div>\n ) : null}\n\n <section\n className=\"login-page__form\"\n data-login-part=\"panel\"\n aria-label={typeof title === 'string' ? title : undefined}\n >\n {backAction ? (\n <button type=\"button\" className=\"login-page__back\" data-login-part=\"back\" onClick={backAction.onClick}>\n {backAction.icon ? (\n <span className=\"login-page__back-icon\" data-login-part=\"back-icon\">\n {backAction.icon}\n </span>\n ) : null}\n <span>{backAction.label}</span>\n </button>\n ) : null}\n\n {title ? (\n <h1 className=\"login-page__title\" data-login-part=\"title\">\n {title}\n </h1>\n ) : null}\n\n {hasTabs ? (\n <div className=\"login-page__tabs\" data-login-part=\"tabs\" role=\"tablist\">\n {availableMethods.map((method) => {\n const selected = method.id === activeMethod?.id;\n return (\n <button\n key={method.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n className={`login-page__tab ${selected ? 'login-page__tab--active' : ''}`}\n data-login-part=\"tab\"\n data-login-method-id={method.id}\n data-active={selected ? 'true' : 'false'}\n onClick={() => handleMethodChange(method.id)}\n >\n {method.icon ? (\n <span className=\"login-page__tab-icon\" data-login-part=\"tab-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n\n {activeMethod ? (\n <form\n className=\"login-page__form-fields\"\n data-login-part=\"form\"\n data-login-method-id={activeMethod.id}\n onSubmit={activeMethod.onSubmit}\n >\n {activeMethod.fields.map((field) => (\n <div className=\"login-page__field\" data-login-part=\"field\" data-login-field-name={field.name} key={field.name}>\n <input\n id={field.id}\n name={field.name}\n type={field.type ?? 'text'}\n value={field.value}\n placeholder={field.placeholder}\n autoComplete={field.autoComplete}\n inputMode={field.inputMode}\n maxLength={field.maxLength}\n pattern={field.pattern}\n disabled={activeMethod.disabled || activeMethod.isLoading || field.disabled}\n required={field.required}\n className=\"login-page__input\"\n data-login-part=\"input\"\n onChange={(event) => field.onChange(event.target.value)}\n />\n </div>\n ))}\n\n {activeMethod.checkbox ? (\n <label className=\"login-page__remember\" data-login-part=\"checkbox-label\" htmlFor={activeMethod.checkbox.id}>\n <input\n id={activeMethod.checkbox.id}\n type=\"checkbox\"\n className=\"login-page__checkbox\"\n data-login-part=\"checkbox\"\n checked={activeMethod.checkbox.checked}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.checkbox.disabled}\n onChange={(event) => activeMethod.checkbox?.onChange(event.target.checked)}\n />\n <span>{activeMethod.checkbox.label}</span>\n </label>\n ) : null}\n\n {activeMethod.footer || activeMethod.footerAction ? (\n <div className=\"login-page__method-footer\" data-login-part=\"method-footer\">\n {activeMethod.footer}\n {activeMethod.footerAction ? (\n <button\n type=\"button\"\n className=\"login-page__method-footer-action\"\n data-login-part=\"method-footer-action\"\n data-login-method-id={activeMethod.id}\n onClick={activeMethod.footerAction.onClick}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.footerAction.disabled}\n >\n {activeMethod.footerAction.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n <button\n type=\"submit\"\n className=\"login-page__submit\"\n data-login-part=\"submit-button\"\n disabled={activeMethod.disabled || activeMethod.isLoading}\n >\n {activeMethod.isLoading && activeMethod.loadingLabel ? activeMethod.loadingLabel : activeMethod.submitLabel}\n </button>\n </form>\n ) : null}\n\n {callout ? (\n <div\n className={`login-page__callout login-page__callout--${callout.tone ?? 'info'}`}\n data-login-part=\"callout\"\n data-tone={callout.tone ?? 'info'}\n >\n <div className=\"login-page__callout-title\" data-login-part=\"callout-title\">\n {callout.title}\n </div>\n {callout.description ? (\n <p className=\"login-page__callout-description\" data-login-part=\"callout-description\">\n {callout.description}\n </p>\n ) : null}\n {callout.detail ? (\n <p className=\"login-page__callout-detail\" data-login-part=\"callout-detail\">\n {callout.detail}\n </p>\n ) : null}\n {callout.action ? (\n <button\n type=\"button\"\n className=\"login-page__callout-action\"\n data-login-part=\"callout-action\"\n onClick={callout.action.onClick}\n disabled={callout.action.disabled}\n >\n {callout.action.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n {externalMethods.length ? (\n <div className=\"login-page__oauth-section\" data-login-part=\"external-methods\">\n {externalLabel ? (\n <div className=\"login-page__oauth-label\" data-login-part=\"external-label\">\n {externalLabel}\n </div>\n ) : null}\n <div className=\"login-page__oauth-list\" data-login-part=\"external-list\">\n {externalMethods.map(renderExternalMethod)}\n </div>\n </div>\n ) : null}\n </section>\n </main>\n );\n}\n","import React from 'react';\nimport type { LoginLayoutProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n padding: '1rem',\n};\n\nconst cardStyle: React.CSSProperties = {\n width: '100%',\n maxWidth: '400px',\n};\n\nconst logoContainerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n marginBottom: '1.5rem',\n};\n\nconst logoImageStyle: React.CSSProperties = {\n height: '48px',\n width: 'auto',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.5rem',\n fontWeight: 700,\n textAlign: 'center' as const,\n marginBottom: '0.5rem',\n lineHeight: 1.2,\n};\n\nconst subtitleStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n textAlign: 'center' as const,\n marginBottom: '1.5rem',\n opacity: 0.6,\n};\n\nconst footerStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n textAlign: 'center' as const,\n marginTop: '2rem',\n opacity: 0.4,\n};\n\nexport const LoginLayout: React.FC<LoginLayoutProps> = ({\n className,\n style,\n children,\n logo,\n title,\n subtitle,\n footer,\n}) => {\n const renderLogo = () => {\n if (!logo) return null;\n if (typeof logo === 'string') {\n return (\n <div style={logoContainerStyle}>\n <img src={logo} alt={title || 'Logo'} style={logoImageStyle} />\n </div>\n );\n }\n return <div style={logoContainerStyle}>{logo}</div>;\n };\n\n return (\n <div className={className} style={{ ...containerStyle, ...style }}>\n <div style={cardStyle}>\n {renderLogo()}\n {title && <h1 style={titleStyle}>{title}</h1>}\n {subtitle && <p style={subtitleStyle}>{subtitle}</p>}\n {children}\n {footer && <p style={footerStyle}>{footer}</p>}\n </div>\n </div>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { EmailAuthProps } from './types';\n\nconst formStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n};\n\nconst labelStyle: React.CSSProperties = {\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 500,\n marginBottom: '0.375rem',\n};\n\nconst inputStyle: React.CSSProperties = {\n display: 'block',\n width: '100%',\n padding: '0.5rem 0.75rem',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n outline: 'none',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#ffffff',\n backgroundColor: '#111827',\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nconst buttonDisabledStyle: React.CSSProperties = {\n ...buttonStyle,\n opacity: 0.6,\n cursor: 'not-allowed',\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n color: '#dc2626',\n marginTop: '-0.25rem',\n};\n\nexport const EmailAuth = React.forwardRef<HTMLFormElement, EmailAuthProps>(\n (\n {\n className,\n email,\n onEmailChange,\n password,\n onPasswordChange,\n onSubmit,\n isLoading = false,\n disabled = false,\n emailLabel = 'Email',\n emailPlaceholder = 'Enter your email',\n passwordLabel = 'Password',\n passwordPlaceholder = 'Enter your password',\n submitText = 'Sign In',\n loadingText = 'Signing in...',\n error,\n },\n ref,\n ) => {\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (!isLoading && !disabled) {\n onSubmit();\n }\n },\n [onSubmit, isLoading, disabled],\n );\n\n const isDisabled = isLoading || disabled;\n\n return (\n <form ref={ref} className={className} style={formStyle} onSubmit={handleSubmit}>\n <div>\n <label style={labelStyle}>{emailLabel}</label>\n <input\n type=\"email\"\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n placeholder={emailPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"email\"\n style={inputStyle}\n />\n </div>\n\n <div>\n <label style={labelStyle}>{passwordLabel}</label>\n <input\n type=\"password\"\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n placeholder={passwordPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"current-password\"\n style={inputStyle}\n />\n </div>\n\n {error && <p style={errorStyle}>{error}</p>}\n\n <button type=\"submit\" disabled={isDisabled} style={isDisabled ? buttonDisabledStyle : buttonStyle}>\n {isLoading ? loadingText : submitText}\n </button>\n </form>\n );\n },\n);\n\nEmailAuth.displayName = 'EmailAuth';\n","import React from 'react';\nimport type { OIDCButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OIDCButton = React.forwardRef<HTMLButtonElement, OIDCButtonProps>(\n ({ className, label = 'Sign in with SSO', onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {label}\n </button>\n );\n },\n);\n\nOIDCButton.displayName = 'OIDCButton';\n","import React from 'react';\nimport type { OAuthButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OAuthButton = React.forwardRef<HTMLButtonElement, OAuthButtonProps>(\n ({ className, providerName, onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {providerName}\n </button>\n );\n },\n);\n\nOAuthButton.displayName = 'OAuthButton';\n","import React from 'react';\nimport type { AuthDividerProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n margin: '1rem 0',\n};\n\nconst lineStyle: React.CSSProperties = {\n flex: 1,\n height: '1px',\n backgroundColor: '#e5e7eb',\n};\n\nconst textStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n opacity: 0.5,\n whiteSpace: 'nowrap',\n};\n\nexport const AuthDivider: React.FC<AuthDividerProps> = ({ className, text = 'or' }) => {\n return (\n <div className={className} style={containerStyle}>\n <div style={lineStyle} />\n <span style={textStyle}>{text}</span>\n <div style={lineStyle} />\n </div>\n );\n};\n","import React from 'react';\nimport type { PendingApprovalProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n padding: '1.5rem 0',\n gap: '1rem',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n fontWeight: 600,\n margin: 0,\n};\n\nconst descriptionStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n opacity: 0.6,\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst backButtonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.5rem 1.5rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n marginTop: '0.5rem',\n};\n\nexport const PendingApproval: React.FC<PendingApprovalProps> = ({\n className,\n icon,\n title = 'Pending Approval',\n description = 'Your account is awaiting administrator approval. Please check back later.',\n backText = 'Go Back',\n onBack,\n}) => {\n return (\n <div className={className} style={containerStyle}>\n {icon}\n <h2 style={titleStyle}>{title}</h2>\n <p style={descriptionStyle}>{description}</p>\n {onBack && (\n <button type=\"button\" style={backButtonStyle} onClick={onBack}>\n {backText}\n </button>\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/login/LoginPage.tsx","../../../src/components/login/LoginLayout.tsx","../../../src/components/login/EmailAuth.tsx","../../../src/components/login/OIDCButton.tsx","../../../src/components/login/OAuthButton.tsx","../../../src/components/login/AuthDivider.tsx","../../../src/components/login/PendingApproval.tsx"],"names":["jsx","jsxs","React","buttonStyle","containerStyle","titleStyle"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport type { LoginPageLogoLocation, LoginPageProps } from './types';\n\nconst LOGIN_LOGO_POSITIONS: LoginPageLogoLocation[] = ['top', 'middle', 'bottom'];\n\nconst normalizeCssValue = (value?: string) => {\n const trimmed = value?.trim();\n return trimmed || undefined;\n};\n\nconst createBackgroundImage = (gradient?: string, imageUrl?: string) => {\n const resolvedGradient = normalizeCssValue(gradient);\n const resolvedImageUrl = normalizeCssValue(imageUrl);\n\n return [resolvedGradient, resolvedImageUrl ? `url(${JSON.stringify(resolvedImageUrl)})` : undefined]\n .filter(Boolean)\n .join(', ');\n};\n\nconst normalizeLogoPosition = (position?: LoginPageLogoLocation): LoginPageLogoLocation =>\n position && LOGIN_LOGO_POSITIONS.includes(position) ? position : 'bottom';\n\nconst normalizeLogoScale = (scale?: number) =>\n typeof scale === 'number' && Number.isFinite(scale) && scale > 0 ? scale : undefined;\n\nconst resolveLogoUrls = (logo?: LoginPageProps['logo']) => {\n const url = normalizeCssValue(logo?.url);\n const lightUrl = normalizeCssValue(logo?.lightUrl) || url;\n const darkUrl = normalizeCssValue(logo?.darkUrl) || url || lightUrl;\n\n return { lightUrl, darkUrl };\n};\n\nexport function LoginPage({\n className,\n style,\n background,\n logo,\n primaryColor,\n radius,\n customCss,\n toolbar,\n title,\n backAction,\n methods,\n activeMethodId,\n defaultMethodId,\n onMethodChange,\n externalLabel,\n externalMethods = [],\n callout,\n}: LoginPageProps) {\n const availableMethods = useMemo(() => methods.filter((method) => !method.hidden), [methods]);\n const fallbackMethodId = defaultMethodId ?? availableMethods[0]?.id;\n const [internalMethodId, setInternalMethodId] = useState<string | undefined>(fallbackMethodId);\n const currentMethodId = activeMethodId ?? internalMethodId;\n const activeMethod = availableMethods.find((method) => method.id === currentMethodId) ?? availableMethods[0];\n const hasTabs = availableMethods.length > 1;\n const backgroundImage = createBackgroundImage(background?.gradient, background?.imageUrl);\n const backgroundMode = backgroundImage ? 'custom' : 'default';\n const logoPosition = normalizeLogoPosition(logo?.position);\n const logoScale = normalizeLogoScale(logo?.scale);\n const { lightUrl: logoLightUrl, darkUrl: logoDarkUrl } = resolveLogoUrls(logo);\n const hasLogo = Boolean(logoLightUrl || logoDarkUrl);\n const usesSeparateModeLogos = Boolean(logoLightUrl && logoDarkUrl && logoLightUrl !== logoDarkUrl);\n\n useEffect(() => {\n if (!availableMethods.length) {\n setInternalMethodId(undefined);\n return;\n }\n\n if (!currentMethodId || !availableMethods.some((method) => method.id === currentMethodId)) {\n setInternalMethodId(fallbackMethodId ?? availableMethods[0]?.id);\n }\n }, [availableMethods, currentMethodId, fallbackMethodId]);\n\n const rootStyle = useMemo<React.CSSProperties>(\n () => ({\n ...(primaryColor ? { ['--login-page-theme-primary-color' as string]: primaryColor } : null),\n ...(radius ? { ['--login-page-theme-radius' as string]: radius } : null),\n ...style,\n }),\n [primaryColor, radius, style],\n );\n\n const handleMethodChange = (methodId: string) => {\n if (activeMethodId === undefined) {\n setInternalMethodId(methodId);\n }\n onMethodChange?.(methodId);\n };\n\n const renderExternalMethod = (method: NonNullable<LoginPageProps['externalMethods']>[number]) => {\n const button = (\n <button\n type=\"button\"\n className=\"login-page__oauth-button\"\n data-login-part=\"external-button\"\n data-login-method-id={method.id}\n onClick={method.onClick}\n disabled={method.disabled}\n >\n {method.icon ? (\n <span className=\"login-page__oauth-icon\" data-login-part=\"external-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n\n return <React.Fragment key={method.id}>{method.render ? method.render(button) : button}</React.Fragment>;\n };\n\n return (\n <main\n className={['login-page', className].filter(Boolean).join(' ')}\n data-login-page\n data-login-part=\"root\"\n data-login-background={backgroundMode}\n style={rootStyle}\n >\n {customCss ? <style data-login-page-custom-css>{customCss}</style> : null}\n\n <div\n className=\"login-page__background\"\n data-login-part=\"background\"\n data-login-background={backgroundMode}\n style={backgroundImage ? { backgroundImage } : undefined}\n aria-hidden=\"true\"\n />\n\n {toolbar ? (\n <div className=\"login-page__toolbar\" data-login-part=\"toolbar\">\n {toolbar}\n </div>\n ) : null}\n\n {hasLogo ? (\n <div\n className={`login-page__logo login-page__logo--${logoPosition}`}\n data-login-part=\"logo\"\n data-logo-position={logoPosition}\n >\n {usesSeparateModeLogos ? (\n <>\n <img\n className=\"login-page__logo-image login-page__logo-image--light\"\n data-login-part=\"logo-image\"\n data-login-logo-mode=\"light\"\n src={logoLightUrl}\n alt={logo?.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n <img\n className=\"login-page__logo-image login-page__logo-image--dark\"\n data-login-part=\"logo-image\"\n data-login-logo-mode=\"dark\"\n src={logoDarkUrl}\n alt={logo?.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n </>\n ) : (\n <img\n className=\"login-page__logo-image\"\n data-login-part=\"logo-image\"\n src={logoLightUrl || logoDarkUrl}\n alt={logo?.alt ?? ''}\n style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n />\n )}\n </div>\n ) : null}\n\n <section\n className=\"login-page__form\"\n data-login-part=\"panel\"\n aria-label={typeof title === 'string' ? title : undefined}\n >\n {backAction ? (\n <button type=\"button\" className=\"login-page__back\" data-login-part=\"back\" onClick={backAction.onClick}>\n {backAction.icon ? (\n <span className=\"login-page__back-icon\" data-login-part=\"back-icon\">\n {backAction.icon}\n </span>\n ) : null}\n <span>{backAction.label}</span>\n </button>\n ) : null}\n\n {title ? (\n <h1 className=\"login-page__title\" data-login-part=\"title\">\n {title}\n </h1>\n ) : null}\n\n {hasTabs ? (\n <div className=\"login-page__tabs\" data-login-part=\"tabs\" role=\"tablist\">\n {availableMethods.map((method) => {\n const selected = method.id === activeMethod?.id;\n return (\n <button\n key={method.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n className={`login-page__tab ${selected ? 'login-page__tab--active' : ''}`}\n data-login-part=\"tab\"\n data-login-method-id={method.id}\n data-active={selected ? 'true' : 'false'}\n onClick={() => handleMethodChange(method.id)}\n >\n {method.icon ? (\n <span className=\"login-page__tab-icon\" data-login-part=\"tab-icon\">\n {method.icon}\n </span>\n ) : null}\n <span>{method.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n\n {activeMethod ? (\n <form\n className=\"login-page__form-fields\"\n data-login-part=\"form\"\n data-login-method-id={activeMethod.id}\n onSubmit={activeMethod.onSubmit}\n >\n {activeMethod.fields.map((field) => (\n <div className=\"login-page__field\" data-login-part=\"field\" data-login-field-name={field.name} key={field.name}>\n <input\n id={field.id}\n name={field.name}\n type={field.type ?? 'text'}\n value={field.value}\n placeholder={field.placeholder}\n autoComplete={field.autoComplete}\n inputMode={field.inputMode}\n maxLength={field.maxLength}\n pattern={field.pattern}\n disabled={activeMethod.disabled || activeMethod.isLoading || field.disabled}\n required={field.required}\n className=\"login-page__input\"\n data-login-part=\"input\"\n onChange={(event) => field.onChange(event.target.value)}\n />\n </div>\n ))}\n\n {activeMethod.checkbox ? (\n <label className=\"login-page__remember\" data-login-part=\"checkbox-label\" htmlFor={activeMethod.checkbox.id}>\n <input\n id={activeMethod.checkbox.id}\n type=\"checkbox\"\n className=\"login-page__checkbox\"\n data-login-part=\"checkbox\"\n checked={activeMethod.checkbox.checked}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.checkbox.disabled}\n onChange={(event) => activeMethod.checkbox?.onChange(event.target.checked)}\n />\n <span>{activeMethod.checkbox.label}</span>\n </label>\n ) : null}\n\n {activeMethod.footer || activeMethod.footerAction ? (\n <div className=\"login-page__method-footer\" data-login-part=\"method-footer\">\n {activeMethod.footer}\n {activeMethod.footerAction ? (\n <button\n type=\"button\"\n className=\"login-page__method-footer-action\"\n data-login-part=\"method-footer-action\"\n data-login-method-id={activeMethod.id}\n onClick={activeMethod.footerAction.onClick}\n disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.footerAction.disabled}\n >\n {activeMethod.footerAction.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n <button\n type=\"submit\"\n className=\"login-page__submit\"\n data-login-part=\"submit-button\"\n disabled={activeMethod.disabled || activeMethod.isLoading}\n >\n {activeMethod.isLoading && activeMethod.loadingLabel ? activeMethod.loadingLabel : activeMethod.submitLabel}\n </button>\n </form>\n ) : null}\n\n {callout ? (\n <div\n className={`login-page__callout login-page__callout--${callout.tone ?? 'info'}`}\n data-login-part=\"callout\"\n data-tone={callout.tone ?? 'info'}\n >\n <div className=\"login-page__callout-title\" data-login-part=\"callout-title\">\n {callout.title}\n </div>\n {callout.description ? (\n <p className=\"login-page__callout-description\" data-login-part=\"callout-description\">\n {callout.description}\n </p>\n ) : null}\n {callout.detail ? (\n <p className=\"login-page__callout-detail\" data-login-part=\"callout-detail\">\n {callout.detail}\n </p>\n ) : null}\n {callout.action ? (\n <button\n type=\"button\"\n className=\"login-page__callout-action\"\n data-login-part=\"callout-action\"\n onClick={callout.action.onClick}\n disabled={callout.action.disabled}\n >\n {callout.action.label}\n </button>\n ) : null}\n </div>\n ) : null}\n\n {externalMethods.length ? (\n <div className=\"login-page__oauth-section\" data-login-part=\"external-methods\">\n {externalLabel ? (\n <div className=\"login-page__oauth-label\" data-login-part=\"external-label\">\n {externalLabel}\n </div>\n ) : null}\n <div className=\"login-page__oauth-list\" data-login-part=\"external-list\">\n {externalMethods.map(renderExternalMethod)}\n </div>\n </div>\n ) : null}\n </section>\n </main>\n );\n}\n","import React from 'react';\nimport type { LoginLayoutProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n padding: '1rem',\n};\n\nconst cardStyle: React.CSSProperties = {\n width: '100%',\n maxWidth: '400px',\n};\n\nconst logoContainerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n marginBottom: '1.5rem',\n};\n\nconst logoImageStyle: React.CSSProperties = {\n height: '48px',\n width: 'auto',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.5rem',\n fontWeight: 700,\n textAlign: 'center' as const,\n marginBottom: '0.5rem',\n lineHeight: 1.2,\n};\n\nconst subtitleStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n textAlign: 'center' as const,\n marginBottom: '1.5rem',\n opacity: 0.6,\n};\n\nconst footerStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n textAlign: 'center' as const,\n marginTop: '2rem',\n opacity: 0.4,\n};\n\nexport const LoginLayout: React.FC<LoginLayoutProps> = ({\n className,\n style,\n children,\n logo,\n title,\n subtitle,\n footer,\n}) => {\n const renderLogo = () => {\n if (!logo) return null;\n if (typeof logo === 'string') {\n return (\n <div style={logoContainerStyle}>\n <img src={logo} alt={title || 'Logo'} style={logoImageStyle} />\n </div>\n );\n }\n return <div style={logoContainerStyle}>{logo}</div>;\n };\n\n return (\n <div className={className} style={{ ...containerStyle, ...style }}>\n <div style={cardStyle}>\n {renderLogo()}\n {title && <h1 style={titleStyle}>{title}</h1>}\n {subtitle && <p style={subtitleStyle}>{subtitle}</p>}\n {children}\n {footer && <p style={footerStyle}>{footer}</p>}\n </div>\n </div>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { EmailAuthProps } from './types';\n\nconst formStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n};\n\nconst labelStyle: React.CSSProperties = {\n display: 'block',\n fontSize: '0.875rem',\n fontWeight: 500,\n marginBottom: '0.375rem',\n};\n\nconst inputStyle: React.CSSProperties = {\n display: 'block',\n width: '100%',\n padding: '0.5rem 0.75rem',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n outline: 'none',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#ffffff',\n backgroundColor: '#111827',\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nconst buttonDisabledStyle: React.CSSProperties = {\n ...buttonStyle,\n opacity: 0.6,\n cursor: 'not-allowed',\n};\n\nconst errorStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n color: '#dc2626',\n marginTop: '-0.25rem',\n};\n\nexport const EmailAuth = React.forwardRef<HTMLFormElement, EmailAuthProps>(\n (\n {\n className,\n email,\n onEmailChange,\n password,\n onPasswordChange,\n onSubmit,\n isLoading = false,\n disabled = false,\n emailLabel = 'Email',\n emailPlaceholder = 'Enter your email',\n passwordLabel = 'Password',\n passwordPlaceholder = 'Enter your password',\n submitText = 'Sign In',\n loadingText = 'Signing in...',\n error,\n },\n ref,\n ) => {\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (!isLoading && !disabled) {\n onSubmit();\n }\n },\n [onSubmit, isLoading, disabled],\n );\n\n const isDisabled = isLoading || disabled;\n\n return (\n <form ref={ref} className={className} style={formStyle} onSubmit={handleSubmit}>\n <div>\n <label style={labelStyle}>{emailLabel}</label>\n <input\n type=\"email\"\n value={email}\n onChange={(e) => onEmailChange(e.target.value)}\n placeholder={emailPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"email\"\n style={inputStyle}\n />\n </div>\n\n <div>\n <label style={labelStyle}>{passwordLabel}</label>\n <input\n type=\"password\"\n value={password}\n onChange={(e) => onPasswordChange(e.target.value)}\n placeholder={passwordPlaceholder}\n disabled={isDisabled}\n required\n autoComplete=\"current-password\"\n style={inputStyle}\n />\n </div>\n\n {error && <p style={errorStyle}>{error}</p>}\n\n <button type=\"submit\" disabled={isDisabled} style={isDisabled ? buttonDisabledStyle : buttonStyle}>\n {isLoading ? loadingText : submitText}\n </button>\n </form>\n );\n },\n);\n\nEmailAuth.displayName = 'EmailAuth';\n","import React from 'react';\nimport type { OIDCButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OIDCButton = React.forwardRef<HTMLButtonElement, OIDCButtonProps>(\n ({ className, label = 'Sign in with SSO', onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {label}\n </button>\n );\n },\n);\n\nOIDCButton.displayName = 'OIDCButton';\n","import React from 'react';\nimport type { OAuthButtonProps } from './types';\n\nconst buttonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n lineHeight: 1.5,\n};\n\nexport const OAuthButton = React.forwardRef<HTMLButtonElement, OAuthButtonProps>(\n ({ className, providerName, onClick, icon }, ref) => {\n return (\n <button ref={ref} type=\"button\" className={className} style={buttonStyle} onClick={onClick}>\n {icon && <span style={{ display: 'inline-flex', alignItems: 'center' }}>{icon}</span>}\n {providerName}\n </button>\n );\n },\n);\n\nOAuthButton.displayName = 'OAuthButton';\n","import React from 'react';\nimport type { AuthDividerProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n margin: '1rem 0',\n};\n\nconst lineStyle: React.CSSProperties = {\n flex: 1,\n height: '1px',\n backgroundColor: '#e5e7eb',\n};\n\nconst textStyle: React.CSSProperties = {\n fontSize: '0.75rem',\n opacity: 0.5,\n whiteSpace: 'nowrap',\n};\n\nexport const AuthDivider: React.FC<AuthDividerProps> = ({ className, text = 'or' }) => {\n return (\n <div className={className} style={containerStyle}>\n <div style={lineStyle} />\n <span style={textStyle}>{text}</span>\n <div style={lineStyle} />\n </div>\n );\n};\n","import React from 'react';\nimport type { PendingApprovalProps } from './types';\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n padding: '1.5rem 0',\n gap: '1rem',\n};\n\nconst titleStyle: React.CSSProperties = {\n fontSize: '1.125rem',\n fontWeight: 600,\n margin: 0,\n};\n\nconst descriptionStyle: React.CSSProperties = {\n fontSize: '0.875rem',\n opacity: 0.6,\n lineHeight: 1.5,\n margin: 0,\n};\n\nconst backButtonStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.5rem 1.5rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n marginTop: '0.5rem',\n};\n\nexport const PendingApproval: React.FC<PendingApprovalProps> = ({\n className,\n icon,\n title = 'Pending Approval',\n description = 'Your account is awaiting administrator approval. Please check back later.',\n backText = 'Go Back',\n onBack,\n}) => {\n return (\n <div className={className} style={containerStyle}>\n {icon}\n <h2 style={titleStyle}>{title}</h2>\n <p style={descriptionStyle}>{description}</p>\n {onBack && (\n <button type=\"button\" style={backButtonStyle} onClick={onBack}>\n {backText}\n </button>\n )}\n </div>\n );\n};\n"]}
|