@inf-monkeys-tech/monkeys-design 0.4.43 → 0.4.44
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 +20 -304
- package/dist/components/login/index.js.map +1 -1
- package/dist/components/login/index.mjs +22 -300
- 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 +20 -304
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +22 -300
- 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]);
|
|
@@ -331,7 +332,24 @@ function LoginPage({
|
|
|
331
332
|
method.id
|
|
332
333
|
);
|
|
333
334
|
}) }) : null,
|
|
334
|
-
|
|
335
|
+
externalPanel ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__external-panel", "data-login-part": "external-panel", children: [
|
|
336
|
+
externalPanel.title ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__external-panel-title", "data-login-part": "external-panel-title", children: externalPanel.title }) : null,
|
|
337
|
+
externalPanel.description ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "login-page__external-panel-description", "data-login-part": "external-panel-description", children: externalPanel.description }) : null,
|
|
338
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__external-panel-content", "data-login-part": "external-panel-content", children: externalPanel.content }),
|
|
339
|
+
externalPanel.footer || externalPanel.backAction ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__external-panel-footer", "data-login-part": "external-panel-footer", children: [
|
|
340
|
+
externalPanel.footer,
|
|
341
|
+
externalPanel.backAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
342
|
+
"button",
|
|
343
|
+
{
|
|
344
|
+
type: "button",
|
|
345
|
+
className: "login-page__external-panel-back",
|
|
346
|
+
"data-login-part": "external-panel-back",
|
|
347
|
+
onClick: externalPanel.backAction.onClick,
|
|
348
|
+
children: externalPanel.backAction.label
|
|
349
|
+
}
|
|
350
|
+
) : null
|
|
351
|
+
] }) : null
|
|
352
|
+
] }) : activeMethod ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
335
353
|
"form",
|
|
336
354
|
{
|
|
337
355
|
className: "login-page__form-fields",
|
|
@@ -425,7 +443,7 @@ function LoginPage({
|
|
|
425
443
|
]
|
|
426
444
|
}
|
|
427
445
|
) : null,
|
|
428
|
-
externalMethods.length ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__oauth-section", "data-login-part": "external-methods", children: [
|
|
446
|
+
!externalPanel && externalMethods.length ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "login-page__oauth-section", "data-login-part": "external-methods", children: [
|
|
429
447
|
externalLabel ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__oauth-label", "data-login-part": "external-label", children: externalLabel }) : null,
|
|
430
448
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "login-page__oauth-list", "data-login-part": "external-list", children: externalMethods.map(renderExternalMethod) })
|
|
431
449
|
] }) : null
|
|
@@ -436,309 +454,7 @@ function LoginPage({
|
|
|
436
454
|
}
|
|
437
455
|
);
|
|
438
456
|
}
|
|
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
457
|
|
|
736
|
-
exports.AuthDivider = AuthDivider;
|
|
737
|
-
exports.EmailAuth = EmailAuth;
|
|
738
|
-
exports.LoginLayout = LoginLayout;
|
|
739
458
|
exports.LoginPage = LoginPage;
|
|
740
|
-
exports.OAuthButton = OAuthButton;
|
|
741
|
-
exports.OIDCButton = OIDCButton;
|
|
742
|
-
exports.PendingApproval = PendingApproval;
|
|
743
459
|
//# sourceMappingURL=index.js.map
|
|
744
460
|
//# sourceMappingURL=index.js.map
|