@visns-studio/visns-components 6.1.2 → 6.1.3
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/package.json
CHANGED
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
92
92
|
},
|
|
93
93
|
"name": "@visns-studio/visns-components",
|
|
94
|
-
"version": "6.1.
|
|
94
|
+
"version": "6.1.3",
|
|
95
95
|
"description": "Various packages to assist in the development of our Custom Applications.",
|
|
96
96
|
"main": "src/index.js",
|
|
97
97
|
"files": [
|
|
@@ -19,6 +19,12 @@ const Login = ({
|
|
|
19
19
|
}) => {
|
|
20
20
|
const location = useLocation();
|
|
21
21
|
const navigate = useNavigate();
|
|
22
|
+
|
|
23
|
+
// Brand copy comes from the consuming project — this library is shared
|
|
24
|
+
// across every VISNS CRM, so nothing project-specific may be hardcoded
|
|
25
|
+
// here. Absent entries simply don't render (except the sign-in hint,
|
|
26
|
+
// which falls back to a generic line).
|
|
27
|
+
const branding = config.branding || {};
|
|
22
28
|
const [isLoading, setIsLoading] = useState(false);
|
|
23
29
|
const [showPassword, setShowPassword] = useState(false);
|
|
24
30
|
|
|
@@ -189,28 +195,39 @@ const Login = ({
|
|
|
189
195
|
}
|
|
190
196
|
aria-hidden="true"
|
|
191
197
|
>
|
|
192
|
-
|
|
193
|
-
<
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
{(branding.eyebrow || branding.name || branding.tagline) && (
|
|
199
|
+
<div className={styles.brandInk}>
|
|
200
|
+
{branding.eyebrow && (
|
|
201
|
+
<p className={styles.eyebrow}>{branding.eyebrow}</p>
|
|
202
|
+
)}
|
|
203
|
+
{branding.name && (
|
|
204
|
+
<p className={styles.brandLine}>{branding.name}</p>
|
|
205
|
+
)}
|
|
206
|
+
{branding.tagline && (
|
|
207
|
+
<p className={styles.brandSub}>{branding.tagline}</p>
|
|
208
|
+
)}
|
|
209
|
+
</div>
|
|
210
|
+
)}
|
|
200
211
|
</aside>
|
|
201
212
|
|
|
202
213
|
<main className={styles.panel}>
|
|
203
214
|
<div className={styles.panelInner}>
|
|
204
|
-
<img
|
|
215
|
+
<img
|
|
216
|
+
src={logo}
|
|
217
|
+
alt={branding.name || 'Logo'}
|
|
218
|
+
className={styles.logo}
|
|
219
|
+
/>
|
|
205
220
|
|
|
206
221
|
<h1 className={styles.title}>Sign in</h1>
|
|
207
222
|
<p className={styles.subtitle}>
|
|
208
|
-
|
|
223
|
+
{branding.signInHint ||
|
|
224
|
+
(ssoAvailable
|
|
225
|
+
? 'Use your Microsoft account to continue.'
|
|
226
|
+
: 'Sign in with your email and password.')}
|
|
209
227
|
</p>
|
|
210
228
|
|
|
211
|
-
{/*
|
|
212
|
-
|
|
213
|
-
without a Microsoft sign-in. */}
|
|
229
|
+
{/* SSO leads when configured; the email form stays
|
|
230
|
+
available underneath for accounts without it. */}
|
|
214
231
|
{renderSsoButton()}
|
|
215
232
|
|
|
216
233
|
{ssoAvailable && !showEmail && (
|
|
@@ -320,9 +337,9 @@ const Login = ({
|
|
|
320
337
|
</div>
|
|
321
338
|
</div>
|
|
322
339
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
340
|
+
{branding.footer && (
|
|
341
|
+
<p className={styles.foot}>{branding.footer}</p>
|
|
342
|
+
)}
|
|
326
343
|
</div>
|
|
327
344
|
</main>
|
|
328
345
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Sign in.
|
|
3
3
|
*
|
|
4
4
|
* An asymmetric split: the company's own completed work on the left, the form
|
|
5
5
|
* on the right. Colours are taken from that photograph and the logo rather
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
/* Local aliases only — every brand value comes from the consuming app's
|
|
16
16
|
token layer so this library stays reusable. The fallbacks are neutral
|
|
17
17
|
on purpose: a project that defines nothing gets a plain, working sign
|
|
18
|
-
in rather than
|
|
18
|
+
in rather than any one project's colours. */
|
|
19
19
|
--ink: var(--header-color, #10192a);
|
|
20
20
|
--navy: var(--primary-color, #26364a);
|
|
21
21
|
--navy-deep: var(--primary-color-darker, #16202e);
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
//
|
|
56
56
|
// The foot is a near-solid plate rather than a fade. The brand line has to
|
|
57
57
|
// hold against whatever the photograph is doing behind it, and this one is
|
|
58
|
-
// bright exactly where the type sits, which left
|
|
59
|
-
// into the
|
|
58
|
+
// bright exactly where the type sits, which left the brand line washing
|
|
59
|
+
// into the photograph. Held high — 0.88 still at 18%, which is where the ink
|
|
60
60
|
// block ends — so the whole block reads on one ground, then released
|
|
61
61
|
// quickly to 0.06 at the top, so the sky above is still a photograph and
|
|
62
62
|
// not a tint.
|
|
@@ -439,7 +439,7 @@
|
|
|
439
439
|
}
|
|
440
440
|
}
|
|
441
441
|
|
|
442
|
-
/* Primary.
|
|
442
|
+
/* Primary. SSO is the main way in when configured, so it carries the fill
|
|
443
443
|
and sits above the fold of the form. */
|
|
444
444
|
.sso {
|
|
445
445
|
display: flex;
|
|
@@ -431,7 +431,7 @@
|
|
|
431
431
|
appearance: none;
|
|
432
432
|
|
|
433
433
|
/* Brand red on hover, matching the rest of the bar. A neutral
|
|
434
|
-
white lift read as a system default rather than a
|
|
434
|
+
white lift read as a system default rather than a project
|
|
435
435
|
control, and left this cluster looking unrelated to everything
|
|
436
436
|
around it. */
|
|
437
437
|
&:hover,
|