@inf-monkeys-tech/monkeys-design 0.4.43 → 0.4.45
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/components/login/index.d.mts +13 -89
- package/dist/components/login/index.d.ts +13 -89
- package/dist/components/login/index.js +22 -305
- package/dist/components/login/index.js.map +1 -1
- package/dist/components/login/index.mjs +24 -301
- package/dist/components/login/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +22 -305
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -301
- package/dist/index.mjs.map +1 -1
- package/dist/styles/login-page.scss +58 -0
- package/package.json +1 -1
|
@@ -83,6 +83,16 @@ interface LoginPageCalloutConfig {
|
|
|
83
83
|
onClick: () => void;
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
+
interface LoginPageExternalPanelConfig {
|
|
87
|
+
title?: React__default.ReactNode;
|
|
88
|
+
description?: React__default.ReactNode;
|
|
89
|
+
content: React__default.ReactNode;
|
|
90
|
+
footer?: React__default.ReactNode;
|
|
91
|
+
backAction?: {
|
|
92
|
+
label: React__default.ReactNode;
|
|
93
|
+
onClick: () => void;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
86
96
|
interface LoginPageProps {
|
|
87
97
|
className?: string;
|
|
88
98
|
style?: React__default.CSSProperties;
|
|
@@ -104,96 +114,10 @@ interface LoginPageProps {
|
|
|
104
114
|
onMethodChange?: (methodId: string) => void;
|
|
105
115
|
externalLabel?: React__default.ReactNode;
|
|
106
116
|
externalMethods?: LoginPageExternalMethodConfig[];
|
|
117
|
+
externalPanel?: LoginPageExternalPanelConfig;
|
|
107
118
|
callout?: LoginPageCalloutConfig;
|
|
108
119
|
}
|
|
109
|
-
interface LoginLayoutProps {
|
|
110
|
-
className?: string;
|
|
111
|
-
style?: React__default.CSSProperties;
|
|
112
|
-
children?: React__default.ReactNode;
|
|
113
|
-
/** Logo element or image URL */
|
|
114
|
-
logo?: React__default.ReactNode | string;
|
|
115
|
-
/** Title text */
|
|
116
|
-
title?: string;
|
|
117
|
-
/** Subtitle text */
|
|
118
|
-
subtitle?: string;
|
|
119
|
-
/** Footer text */
|
|
120
|
-
footer?: string;
|
|
121
|
-
}
|
|
122
|
-
interface EmailAuthProps {
|
|
123
|
-
className?: string;
|
|
124
|
-
/** Controlled email value */
|
|
125
|
-
email: string;
|
|
126
|
-
onEmailChange: (value: string) => void;
|
|
127
|
-
/** Controlled password value */
|
|
128
|
-
password: string;
|
|
129
|
-
onPasswordChange: (value: string) => void;
|
|
130
|
-
/** Submit handler */
|
|
131
|
-
onSubmit: () => void;
|
|
132
|
-
/** Loading state */
|
|
133
|
-
isLoading?: boolean;
|
|
134
|
-
/** Disable the form */
|
|
135
|
-
disabled?: boolean;
|
|
136
|
-
/** Labels */
|
|
137
|
-
emailLabel?: string;
|
|
138
|
-
emailPlaceholder?: string;
|
|
139
|
-
passwordLabel?: string;
|
|
140
|
-
passwordPlaceholder?: string;
|
|
141
|
-
submitText?: string;
|
|
142
|
-
loadingText?: string;
|
|
143
|
-
/** Error message to display */
|
|
144
|
-
error?: string;
|
|
145
|
-
}
|
|
146
|
-
interface OIDCButtonProps {
|
|
147
|
-
className?: string;
|
|
148
|
-
/** Button label */
|
|
149
|
-
label?: string;
|
|
150
|
-
/** Click handler - should redirect to OIDC login URL */
|
|
151
|
-
onClick: () => void;
|
|
152
|
-
/** Optional icon */
|
|
153
|
-
icon?: React__default.ReactNode;
|
|
154
|
-
}
|
|
155
|
-
interface OAuthButtonProps {
|
|
156
|
-
className?: string;
|
|
157
|
-
/** Provider name for display */
|
|
158
|
-
providerName: string;
|
|
159
|
-
/** Provider type identifier */
|
|
160
|
-
providerType: 'feishu' | 'dingtalk' | 'wework' | string;
|
|
161
|
-
/** Click handler */
|
|
162
|
-
onClick: () => void;
|
|
163
|
-
/** Optional icon */
|
|
164
|
-
icon?: React__default.ReactNode;
|
|
165
|
-
}
|
|
166
|
-
interface AuthDividerProps {
|
|
167
|
-
className?: string;
|
|
168
|
-
/** Text to show in the divider */
|
|
169
|
-
text?: string;
|
|
170
|
-
}
|
|
171
|
-
interface PendingApprovalProps {
|
|
172
|
-
className?: string;
|
|
173
|
-
/** Icon to display */
|
|
174
|
-
icon?: React__default.ReactNode;
|
|
175
|
-
/** Title text */
|
|
176
|
-
title?: string;
|
|
177
|
-
/** Description text */
|
|
178
|
-
description?: string;
|
|
179
|
-
/** Back button text */
|
|
180
|
-
backText?: string;
|
|
181
|
-
/** Back button handler */
|
|
182
|
-
onBack?: () => void;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
declare function LoginPage({ className, style, background, logo, primaryColor, radius, customCss, toolbar, title, backAction, methods, activeMethodId, defaultMethodId, onMethodChange, externalLabel, externalMethods, callout, }: LoginPageProps): react_jsx_runtime.JSX.Element;
|
|
186
|
-
|
|
187
|
-
declare const LoginLayout: React__default.FC<LoginLayoutProps>;
|
|
188
|
-
|
|
189
|
-
declare const EmailAuth: React__default.ForwardRefExoticComponent<EmailAuthProps & React__default.RefAttributes<HTMLFormElement>>;
|
|
190
|
-
|
|
191
|
-
declare const OIDCButton: React__default.ForwardRefExoticComponent<OIDCButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
192
|
-
|
|
193
|
-
declare const OAuthButton: React__default.ForwardRefExoticComponent<OAuthButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
194
|
-
|
|
195
|
-
declare const AuthDivider: React__default.FC<AuthDividerProps>;
|
|
196
120
|
|
|
197
|
-
declare
|
|
121
|
+
declare function LoginPage({ className, style, background, logo, primaryColor, radius, customCss, toolbar, title, backAction, methods, activeMethodId, defaultMethodId, onMethodChange, externalLabel, externalMethods, externalPanel, callout, }: LoginPageProps): react_jsx_runtime.JSX.Element;
|
|
198
122
|
|
|
199
|
-
export {
|
|
123
|
+
export { LoginPage, type LoginPageBackgroundConfig, type LoginPageCalloutConfig, type LoginPageCheckboxConfig, type LoginPageExternalMethodConfig, type LoginPageExternalPanelConfig, type LoginPageFieldConfig, type LoginPageLogoConfig, type LoginPageLogoLocation, type LoginPageMethodConfig, type LoginPageProps };
|
|
@@ -83,6 +83,16 @@ interface LoginPageCalloutConfig {
|
|
|
83
83
|
onClick: () => void;
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
+
interface LoginPageExternalPanelConfig {
|
|
87
|
+
title?: React__default.ReactNode;
|
|
88
|
+
description?: React__default.ReactNode;
|
|
89
|
+
content: React__default.ReactNode;
|
|
90
|
+
footer?: React__default.ReactNode;
|
|
91
|
+
backAction?: {
|
|
92
|
+
label: React__default.ReactNode;
|
|
93
|
+
onClick: () => void;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
86
96
|
interface LoginPageProps {
|
|
87
97
|
className?: string;
|
|
88
98
|
style?: React__default.CSSProperties;
|
|
@@ -104,96 +114,10 @@ interface LoginPageProps {
|
|
|
104
114
|
onMethodChange?: (methodId: string) => void;
|
|
105
115
|
externalLabel?: React__default.ReactNode;
|
|
106
116
|
externalMethods?: LoginPageExternalMethodConfig[];
|
|
117
|
+
externalPanel?: LoginPageExternalPanelConfig;
|
|
107
118
|
callout?: LoginPageCalloutConfig;
|
|
108
119
|
}
|
|
109
|
-
interface LoginLayoutProps {
|
|
110
|
-
className?: string;
|
|
111
|
-
style?: React__default.CSSProperties;
|
|
112
|
-
children?: React__default.ReactNode;
|
|
113
|
-
/** Logo element or image URL */
|
|
114
|
-
logo?: React__default.ReactNode | string;
|
|
115
|
-
/** Title text */
|
|
116
|
-
title?: string;
|
|
117
|
-
/** Subtitle text */
|
|
118
|
-
subtitle?: string;
|
|
119
|
-
/** Footer text */
|
|
120
|
-
footer?: string;
|
|
121
|
-
}
|
|
122
|
-
interface EmailAuthProps {
|
|
123
|
-
className?: string;
|
|
124
|
-
/** Controlled email value */
|
|
125
|
-
email: string;
|
|
126
|
-
onEmailChange: (value: string) => void;
|
|
127
|
-
/** Controlled password value */
|
|
128
|
-
password: string;
|
|
129
|
-
onPasswordChange: (value: string) => void;
|
|
130
|
-
/** Submit handler */
|
|
131
|
-
onSubmit: () => void;
|
|
132
|
-
/** Loading state */
|
|
133
|
-
isLoading?: boolean;
|
|
134
|
-
/** Disable the form */
|
|
135
|
-
disabled?: boolean;
|
|
136
|
-
/** Labels */
|
|
137
|
-
emailLabel?: string;
|
|
138
|
-
emailPlaceholder?: string;
|
|
139
|
-
passwordLabel?: string;
|
|
140
|
-
passwordPlaceholder?: string;
|
|
141
|
-
submitText?: string;
|
|
142
|
-
loadingText?: string;
|
|
143
|
-
/** Error message to display */
|
|
144
|
-
error?: string;
|
|
145
|
-
}
|
|
146
|
-
interface OIDCButtonProps {
|
|
147
|
-
className?: string;
|
|
148
|
-
/** Button label */
|
|
149
|
-
label?: string;
|
|
150
|
-
/** Click handler - should redirect to OIDC login URL */
|
|
151
|
-
onClick: () => void;
|
|
152
|
-
/** Optional icon */
|
|
153
|
-
icon?: React__default.ReactNode;
|
|
154
|
-
}
|
|
155
|
-
interface OAuthButtonProps {
|
|
156
|
-
className?: string;
|
|
157
|
-
/** Provider name for display */
|
|
158
|
-
providerName: string;
|
|
159
|
-
/** Provider type identifier */
|
|
160
|
-
providerType: 'feishu' | 'dingtalk' | 'wework' | string;
|
|
161
|
-
/** Click handler */
|
|
162
|
-
onClick: () => void;
|
|
163
|
-
/** Optional icon */
|
|
164
|
-
icon?: React__default.ReactNode;
|
|
165
|
-
}
|
|
166
|
-
interface AuthDividerProps {
|
|
167
|
-
className?: string;
|
|
168
|
-
/** Text to show in the divider */
|
|
169
|
-
text?: string;
|
|
170
|
-
}
|
|
171
|
-
interface PendingApprovalProps {
|
|
172
|
-
className?: string;
|
|
173
|
-
/** Icon to display */
|
|
174
|
-
icon?: React__default.ReactNode;
|
|
175
|
-
/** Title text */
|
|
176
|
-
title?: string;
|
|
177
|
-
/** Description text */
|
|
178
|
-
description?: string;
|
|
179
|
-
/** Back button text */
|
|
180
|
-
backText?: string;
|
|
181
|
-
/** Back button handler */
|
|
182
|
-
onBack?: () => void;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
declare function LoginPage({ className, style, background, logo, primaryColor, radius, customCss, toolbar, title, backAction, methods, activeMethodId, defaultMethodId, onMethodChange, externalLabel, externalMethods, callout, }: LoginPageProps): react_jsx_runtime.JSX.Element;
|
|
186
|
-
|
|
187
|
-
declare const LoginLayout: React__default.FC<LoginLayoutProps>;
|
|
188
|
-
|
|
189
|
-
declare const EmailAuth: React__default.ForwardRefExoticComponent<EmailAuthProps & React__default.RefAttributes<HTMLFormElement>>;
|
|
190
|
-
|
|
191
|
-
declare const OIDCButton: React__default.ForwardRefExoticComponent<OIDCButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
192
|
-
|
|
193
|
-
declare const OAuthButton: React__default.ForwardRefExoticComponent<OAuthButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
194
|
-
|
|
195
|
-
declare const AuthDivider: React__default.FC<AuthDividerProps>;
|
|
196
120
|
|
|
197
|
-
declare
|
|
121
|
+
declare function LoginPage({ className, style, background, logo, primaryColor, radius, customCss, toolbar, title, backAction, methods, activeMethodId, defaultMethodId, onMethodChange, externalLabel, externalMethods, externalPanel, callout, }: LoginPageProps): react_jsx_runtime.JSX.Element;
|
|
198
122
|
|
|
199
|
-
export {
|
|
123
|
+
export { LoginPage, type LoginPageBackgroundConfig, type LoginPageCalloutConfig, type LoginPageCheckboxConfig, type LoginPageExternalMethodConfig, type LoginPageExternalPanelConfig, type LoginPageFieldConfig, type LoginPageLogoConfig, type LoginPageLogoLocation, type LoginPageMethodConfig, type LoginPageProps };
|
|
@@ -179,6 +179,7 @@ function LoginPage({
|
|
|
179
179
|
onMethodChange,
|
|
180
180
|
externalLabel,
|
|
181
181
|
externalMethods = [],
|
|
182
|
+
externalPanel,
|
|
182
183
|
callout
|
|
183
184
|
}) {
|
|
184
185
|
const availableMethods = React.useMemo(() => methods.filter((method) => !method.hidden), [methods]);
|
|
@@ -187,6 +188,7 @@ function LoginPage({
|
|
|
187
188
|
const currentMethodId = activeMethodId ?? internalMethodId;
|
|
188
189
|
const activeMethod = availableMethods.find((method) => method.id === currentMethodId) ?? availableMethods[0];
|
|
189
190
|
const hasTabs = availableMethods.length > 1;
|
|
191
|
+
const showAuthMethods = !externalPanel;
|
|
190
192
|
const backgroundImage = createBackgroundImage(background?.gradient, background?.imageUrl);
|
|
191
193
|
const backgroundMode = backgroundImage ? "custom" : "default";
|
|
192
194
|
const logoPosition = normalizeLogoPosition(logo?.position);
|
|
@@ -310,7 +312,7 @@ function LoginPage({
|
|
|
310
312
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: backAction.label })
|
|
311
313
|
] }) : null,
|
|
312
314
|
title ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "login-page__title", "data-login-part": "title", children: title }) : null,
|
|
313
|
-
hasTabs ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__tabs", "data-login-part": "tabs", role: "tablist", children: availableMethods.map((method) => {
|
|
315
|
+
showAuthMethods && hasTabs ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__tabs", "data-login-part": "tabs", role: "tablist", children: availableMethods.map((method) => {
|
|
314
316
|
const selected = method.id === activeMethod?.id;
|
|
315
317
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
316
318
|
"button",
|
|
@@ -331,7 +333,24 @@ function LoginPage({
|
|
|
331
333
|
method.id
|
|
332
334
|
);
|
|
333
335
|
}) }) : null,
|
|
334
|
-
|
|
336
|
+
externalPanel ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__external-panel", "data-login-part": "external-panel", children: [
|
|
337
|
+
externalPanel.title ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__external-panel-title", "data-login-part": "external-panel-title", children: externalPanel.title }) : null,
|
|
338
|
+
externalPanel.description ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "login-page__external-panel-description", "data-login-part": "external-panel-description", children: externalPanel.description }) : null,
|
|
339
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__external-panel-content", "data-login-part": "external-panel-content", children: externalPanel.content }),
|
|
340
|
+
externalPanel.footer || externalPanel.backAction ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__external-panel-footer", "data-login-part": "external-panel-footer", children: [
|
|
341
|
+
externalPanel.footer,
|
|
342
|
+
externalPanel.backAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
343
|
+
"button",
|
|
344
|
+
{
|
|
345
|
+
type: "button",
|
|
346
|
+
className: "login-page__external-panel-back",
|
|
347
|
+
"data-login-part": "external-panel-back",
|
|
348
|
+
onClick: externalPanel.backAction.onClick,
|
|
349
|
+
children: externalPanel.backAction.label
|
|
350
|
+
}
|
|
351
|
+
) : null
|
|
352
|
+
] }) : null
|
|
353
|
+
] }) : showAuthMethods && activeMethod ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
335
354
|
"form",
|
|
336
355
|
{
|
|
337
356
|
className: "login-page__form-fields",
|
|
@@ -425,7 +444,7 @@ function LoginPage({
|
|
|
425
444
|
]
|
|
426
445
|
}
|
|
427
446
|
) : null,
|
|
428
|
-
externalMethods.length ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__oauth-section", "data-login-part": "external-methods", children: [
|
|
447
|
+
!externalPanel && externalMethods.length ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__oauth-section", "data-login-part": "external-methods", children: [
|
|
429
448
|
externalLabel ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__oauth-label", "data-login-part": "external-label", children: externalLabel }) : null,
|
|
430
449
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__oauth-list", "data-login-part": "external-list", children: externalMethods.map(renderExternalMethod) })
|
|
431
450
|
] }) : null
|
|
@@ -436,309 +455,7 @@ function LoginPage({
|
|
|
436
455
|
}
|
|
437
456
|
);
|
|
438
457
|
}
|
|
439
|
-
var containerStyle = {
|
|
440
|
-
display: "flex",
|
|
441
|
-
alignItems: "center",
|
|
442
|
-
justifyContent: "center",
|
|
443
|
-
minHeight: "100vh",
|
|
444
|
-
padding: "1rem"
|
|
445
|
-
};
|
|
446
|
-
var cardStyle = {
|
|
447
|
-
width: "100%",
|
|
448
|
-
maxWidth: "400px"
|
|
449
|
-
};
|
|
450
|
-
var logoContainerStyle = {
|
|
451
|
-
display: "flex",
|
|
452
|
-
justifyContent: "center",
|
|
453
|
-
marginBottom: "1.5rem"
|
|
454
|
-
};
|
|
455
|
-
var logoImageStyle = {
|
|
456
|
-
height: "48px",
|
|
457
|
-
width: "auto"
|
|
458
|
-
};
|
|
459
|
-
var titleStyle = {
|
|
460
|
-
fontSize: "1.5rem",
|
|
461
|
-
fontWeight: 700,
|
|
462
|
-
textAlign: "center",
|
|
463
|
-
marginBottom: "0.5rem",
|
|
464
|
-
lineHeight: 1.2
|
|
465
|
-
};
|
|
466
|
-
var subtitleStyle = {
|
|
467
|
-
fontSize: "0.875rem",
|
|
468
|
-
textAlign: "center",
|
|
469
|
-
marginBottom: "1.5rem",
|
|
470
|
-
opacity: 0.6
|
|
471
|
-
};
|
|
472
|
-
var footerStyle = {
|
|
473
|
-
fontSize: "0.75rem",
|
|
474
|
-
textAlign: "center",
|
|
475
|
-
marginTop: "2rem",
|
|
476
|
-
opacity: 0.4
|
|
477
|
-
};
|
|
478
|
-
var LoginLayout = ({
|
|
479
|
-
className,
|
|
480
|
-
style,
|
|
481
|
-
children,
|
|
482
|
-
logo,
|
|
483
|
-
title,
|
|
484
|
-
subtitle,
|
|
485
|
-
footer
|
|
486
|
-
}) => {
|
|
487
|
-
const renderLogo = () => {
|
|
488
|
-
if (!logo) return null;
|
|
489
|
-
if (typeof logo === "string") {
|
|
490
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: logoContainerStyle, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: title || "Logo", style: logoImageStyle }) });
|
|
491
|
-
}
|
|
492
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: logoContainerStyle, children: logo });
|
|
493
|
-
};
|
|
494
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style: { ...containerStyle, ...style }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: cardStyle, children: [
|
|
495
|
-
renderLogo(),
|
|
496
|
-
title && /* @__PURE__ */ jsxRuntime.jsx("h1", { style: titleStyle, children: title }),
|
|
497
|
-
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { style: subtitleStyle, children: subtitle }),
|
|
498
|
-
children,
|
|
499
|
-
footer && /* @__PURE__ */ jsxRuntime.jsx("p", { style: footerStyle, children: footer })
|
|
500
|
-
] }) });
|
|
501
|
-
};
|
|
502
|
-
var formStyle = {
|
|
503
|
-
display: "flex",
|
|
504
|
-
flexDirection: "column",
|
|
505
|
-
gap: "1rem"
|
|
506
|
-
};
|
|
507
|
-
var labelStyle = {
|
|
508
|
-
display: "block",
|
|
509
|
-
fontSize: "0.875rem",
|
|
510
|
-
fontWeight: 500,
|
|
511
|
-
marginBottom: "0.375rem"
|
|
512
|
-
};
|
|
513
|
-
var inputStyle = {
|
|
514
|
-
display: "block",
|
|
515
|
-
width: "100%",
|
|
516
|
-
padding: "0.5rem 0.75rem",
|
|
517
|
-
fontSize: "0.875rem",
|
|
518
|
-
lineHeight: 1.5,
|
|
519
|
-
backgroundColor: "transparent",
|
|
520
|
-
border: "1px solid #d1d5db",
|
|
521
|
-
borderRadius: "0.375rem",
|
|
522
|
-
outline: "none",
|
|
523
|
-
boxSizing: "border-box"
|
|
524
|
-
};
|
|
525
|
-
var buttonStyle = {
|
|
526
|
-
display: "inline-flex",
|
|
527
|
-
alignItems: "center",
|
|
528
|
-
justifyContent: "center",
|
|
529
|
-
width: "100%",
|
|
530
|
-
padding: "0.625rem 1rem",
|
|
531
|
-
fontSize: "0.875rem",
|
|
532
|
-
fontWeight: 500,
|
|
533
|
-
color: "#ffffff",
|
|
534
|
-
backgroundColor: "#111827",
|
|
535
|
-
border: "none",
|
|
536
|
-
borderRadius: "0.375rem",
|
|
537
|
-
cursor: "pointer",
|
|
538
|
-
lineHeight: 1.5
|
|
539
|
-
};
|
|
540
|
-
var buttonDisabledStyle = {
|
|
541
|
-
...buttonStyle,
|
|
542
|
-
opacity: 0.6,
|
|
543
|
-
cursor: "not-allowed"
|
|
544
|
-
};
|
|
545
|
-
var errorStyle = {
|
|
546
|
-
fontSize: "0.875rem",
|
|
547
|
-
color: "#dc2626",
|
|
548
|
-
marginTop: "-0.25rem"
|
|
549
|
-
};
|
|
550
|
-
var EmailAuth = React__default.default.forwardRef(
|
|
551
|
-
({
|
|
552
|
-
className,
|
|
553
|
-
email,
|
|
554
|
-
onEmailChange,
|
|
555
|
-
password,
|
|
556
|
-
onPasswordChange,
|
|
557
|
-
onSubmit,
|
|
558
|
-
isLoading = false,
|
|
559
|
-
disabled = false,
|
|
560
|
-
emailLabel = "Email",
|
|
561
|
-
emailPlaceholder = "Enter your email",
|
|
562
|
-
passwordLabel = "Password",
|
|
563
|
-
passwordPlaceholder = "Enter your password",
|
|
564
|
-
submitText = "Sign In",
|
|
565
|
-
loadingText = "Signing in...",
|
|
566
|
-
error
|
|
567
|
-
}, ref) => {
|
|
568
|
-
const handleSubmit = React.useCallback(
|
|
569
|
-
(e) => {
|
|
570
|
-
e.preventDefault();
|
|
571
|
-
if (!isLoading && !disabled) {
|
|
572
|
-
onSubmit();
|
|
573
|
-
}
|
|
574
|
-
},
|
|
575
|
-
[onSubmit, isLoading, disabled]
|
|
576
|
-
);
|
|
577
|
-
const isDisabled = isLoading || disabled;
|
|
578
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("form", { ref, className, style: formStyle, onSubmit: handleSubmit, children: [
|
|
579
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
580
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, children: emailLabel }),
|
|
581
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
582
|
-
"input",
|
|
583
|
-
{
|
|
584
|
-
type: "email",
|
|
585
|
-
value: email,
|
|
586
|
-
onChange: (e) => onEmailChange(e.target.value),
|
|
587
|
-
placeholder: emailPlaceholder,
|
|
588
|
-
disabled: isDisabled,
|
|
589
|
-
required: true,
|
|
590
|
-
autoComplete: "email",
|
|
591
|
-
style: inputStyle
|
|
592
|
-
}
|
|
593
|
-
)
|
|
594
|
-
] }),
|
|
595
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
596
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, children: passwordLabel }),
|
|
597
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
598
|
-
"input",
|
|
599
|
-
{
|
|
600
|
-
type: "password",
|
|
601
|
-
value: password,
|
|
602
|
-
onChange: (e) => onPasswordChange(e.target.value),
|
|
603
|
-
placeholder: passwordPlaceholder,
|
|
604
|
-
disabled: isDisabled,
|
|
605
|
-
required: true,
|
|
606
|
-
autoComplete: "current-password",
|
|
607
|
-
style: inputStyle
|
|
608
|
-
}
|
|
609
|
-
)
|
|
610
|
-
] }),
|
|
611
|
-
error && /* @__PURE__ */ jsxRuntime.jsx("p", { style: errorStyle, children: error }),
|
|
612
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "submit", disabled: isDisabled, style: isDisabled ? buttonDisabledStyle : buttonStyle, children: isLoading ? loadingText : submitText })
|
|
613
|
-
] });
|
|
614
|
-
}
|
|
615
|
-
);
|
|
616
|
-
EmailAuth.displayName = "EmailAuth";
|
|
617
|
-
var buttonStyle2 = {
|
|
618
|
-
display: "inline-flex",
|
|
619
|
-
alignItems: "center",
|
|
620
|
-
justifyContent: "center",
|
|
621
|
-
gap: "0.5rem",
|
|
622
|
-
width: "100%",
|
|
623
|
-
padding: "0.625rem 1rem",
|
|
624
|
-
fontSize: "0.875rem",
|
|
625
|
-
fontWeight: 500,
|
|
626
|
-
backgroundColor: "transparent",
|
|
627
|
-
border: "1px solid #d1d5db",
|
|
628
|
-
borderRadius: "0.375rem",
|
|
629
|
-
cursor: "pointer",
|
|
630
|
-
lineHeight: 1.5
|
|
631
|
-
};
|
|
632
|
-
var OIDCButton = React__default.default.forwardRef(
|
|
633
|
-
({ className, label = "Sign in with SSO", onClick, icon }, ref) => {
|
|
634
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("button", { ref, type: "button", className, style: buttonStyle2, onClick, children: [
|
|
635
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-flex", alignItems: "center" }, children: icon }),
|
|
636
|
-
label
|
|
637
|
-
] });
|
|
638
|
-
}
|
|
639
|
-
);
|
|
640
|
-
OIDCButton.displayName = "OIDCButton";
|
|
641
|
-
var buttonStyle3 = {
|
|
642
|
-
display: "inline-flex",
|
|
643
|
-
alignItems: "center",
|
|
644
|
-
justifyContent: "center",
|
|
645
|
-
gap: "0.5rem",
|
|
646
|
-
width: "100%",
|
|
647
|
-
padding: "0.625rem 1rem",
|
|
648
|
-
fontSize: "0.875rem",
|
|
649
|
-
fontWeight: 500,
|
|
650
|
-
backgroundColor: "transparent",
|
|
651
|
-
border: "1px solid #d1d5db",
|
|
652
|
-
borderRadius: "0.375rem",
|
|
653
|
-
cursor: "pointer",
|
|
654
|
-
lineHeight: 1.5
|
|
655
|
-
};
|
|
656
|
-
var OAuthButton = React__default.default.forwardRef(
|
|
657
|
-
({ className, providerName, onClick, icon }, ref) => {
|
|
658
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("button", { ref, type: "button", className, style: buttonStyle3, onClick, children: [
|
|
659
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-flex", alignItems: "center" }, children: icon }),
|
|
660
|
-
providerName
|
|
661
|
-
] });
|
|
662
|
-
}
|
|
663
|
-
);
|
|
664
|
-
OAuthButton.displayName = "OAuthButton";
|
|
665
|
-
var containerStyle2 = {
|
|
666
|
-
display: "flex",
|
|
667
|
-
alignItems: "center",
|
|
668
|
-
gap: "0.75rem",
|
|
669
|
-
margin: "1rem 0"
|
|
670
|
-
};
|
|
671
|
-
var lineStyle = {
|
|
672
|
-
flex: 1,
|
|
673
|
-
height: "1px",
|
|
674
|
-
backgroundColor: "#e5e7eb"
|
|
675
|
-
};
|
|
676
|
-
var textStyle = {
|
|
677
|
-
fontSize: "0.75rem",
|
|
678
|
-
opacity: 0.5,
|
|
679
|
-
whiteSpace: "nowrap"
|
|
680
|
-
};
|
|
681
|
-
var AuthDivider = ({ className, text = "or" }) => {
|
|
682
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: containerStyle2, children: [
|
|
683
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: lineStyle }),
|
|
684
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { style: textStyle, children: text }),
|
|
685
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: lineStyle })
|
|
686
|
-
] });
|
|
687
|
-
};
|
|
688
|
-
var containerStyle3 = {
|
|
689
|
-
display: "flex",
|
|
690
|
-
flexDirection: "column",
|
|
691
|
-
alignItems: "center",
|
|
692
|
-
textAlign: "center",
|
|
693
|
-
padding: "1.5rem 0",
|
|
694
|
-
gap: "1rem"
|
|
695
|
-
};
|
|
696
|
-
var titleStyle2 = {
|
|
697
|
-
fontSize: "1.125rem",
|
|
698
|
-
fontWeight: 600,
|
|
699
|
-
margin: 0
|
|
700
|
-
};
|
|
701
|
-
var descriptionStyle = {
|
|
702
|
-
fontSize: "0.875rem",
|
|
703
|
-
opacity: 0.6,
|
|
704
|
-
lineHeight: 1.5,
|
|
705
|
-
margin: 0
|
|
706
|
-
};
|
|
707
|
-
var backButtonStyle = {
|
|
708
|
-
display: "inline-flex",
|
|
709
|
-
alignItems: "center",
|
|
710
|
-
justifyContent: "center",
|
|
711
|
-
padding: "0.5rem 1.5rem",
|
|
712
|
-
fontSize: "0.875rem",
|
|
713
|
-
fontWeight: 500,
|
|
714
|
-
backgroundColor: "transparent",
|
|
715
|
-
border: "1px solid #d1d5db",
|
|
716
|
-
borderRadius: "0.375rem",
|
|
717
|
-
cursor: "pointer",
|
|
718
|
-
marginTop: "0.5rem"
|
|
719
|
-
};
|
|
720
|
-
var PendingApproval = ({
|
|
721
|
-
className,
|
|
722
|
-
icon,
|
|
723
|
-
title = "Pending Approval",
|
|
724
|
-
description = "Your account is awaiting administrator approval. Please check back later.",
|
|
725
|
-
backText = "Go Back",
|
|
726
|
-
onBack
|
|
727
|
-
}) => {
|
|
728
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: containerStyle3, children: [
|
|
729
|
-
icon,
|
|
730
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { style: titleStyle2, children: title }),
|
|
731
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { style: descriptionStyle, children: description }),
|
|
732
|
-
onBack && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", style: backButtonStyle, onClick: onBack, children: backText })
|
|
733
|
-
] });
|
|
734
|
-
};
|
|
735
458
|
|
|
736
|
-
exports.AuthDivider = AuthDivider;
|
|
737
|
-
exports.EmailAuth = EmailAuth;
|
|
738
|
-
exports.LoginLayout = LoginLayout;
|
|
739
459
|
exports.LoginPage = LoginPage;
|
|
740
|
-
exports.OAuthButton = OAuthButton;
|
|
741
|
-
exports.OIDCButton = OIDCButton;
|
|
742
|
-
exports.PendingApproval = PendingApproval;
|
|
743
460
|
//# sourceMappingURL=index.js.map
|
|
744
461
|
//# sourceMappingURL=index.js.map
|