nexus-shared 3.0.0 → 3.2.0
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/CHANGELOG.md +442 -0
- package/README.md +1123 -1000
- package/dist/Client.Index.d.ts +6 -0
- package/dist/Client.Index.js +6 -0
- package/dist/Components/Chats/ChatParts.d.ts +2 -2
- package/dist/Components/Chats/ChatParts.js +3 -7
- package/dist/Components/Chats/ChatThread.js +3 -3
- package/dist/Components/Documents/Button.d.ts +6 -1
- package/dist/Components/Documents/Button.js +2 -2
- package/dist/Components/Documents/Menu.js +21 -9
- package/dist/Components/Documents/SplitButton.d.ts +3 -1
- package/dist/Components/Documents/SplitButton.js +7 -5
- package/dist/Components/Documents/TabButtons.d.ts +5 -2
- package/dist/Components/Documents/TabButtons.js +2 -2
- package/dist/Components/Forms/ApiForm.d.ts +1 -1
- package/dist/Components/Forms/ApiForm.js +1 -1
- package/dist/Components/Forms/Crud.js +486 -206
- package/dist/Components/Forms/CrudHistory.d.ts +66 -0
- package/dist/Components/Forms/CrudHistory.js +140 -0
- package/dist/Components/Forms/CrudParts.d.ts +5 -1
- package/dist/Components/Forms/CrudParts.js +38 -5
- package/dist/Components/Forms/ExcelImport.d.ts +23 -7
- package/dist/Components/Forms/ExcelImport.js +189 -60
- package/dist/Components/Forms/Form.js +9 -14
- package/dist/Components/Forms/SubmitForm.d.ts +11 -2
- package/dist/Components/Forms/SubmitForm.js +23 -12
- package/dist/Components/Inputs/CodeBox.d.ts +69 -0
- package/dist/Components/Inputs/CodeBox.js +316 -0
- package/dist/Components/Inputs/DatePicker.js +4 -1
- package/dist/Components/Inputs/DateRangePicker.js +4 -1
- package/dist/Components/Inputs/DateTimePicker.js +4 -1
- package/dist/Components/Inputs/Dropdown.js +4 -1
- package/dist/Components/Inputs/DropdownParts.d.ts +1 -1
- package/dist/Components/Inputs/DropdownParts.js +4 -6
- package/dist/Components/Inputs/InputRenderer.js +3 -0
- package/dist/Components/Inputs/NumberBox.js +26 -2
- package/dist/Components/Inputs/RowsInput.js +2 -2
- package/dist/Components/Inputs/Slider.js +4 -1
- package/dist/Components/Inputs/TabularForm.js +42 -10
- package/dist/Components/Inputs/TextArea.js +4 -1
- package/dist/Components/Inputs/TextBox.js +4 -1
- package/dist/Components/Inputs/TimePanel.js +4 -3
- package/dist/Components/Inputs/TimePicker.js +4 -1
- package/dist/Components/Inputs/TreeView.d.ts +55 -5
- package/dist/Components/Inputs/TreeView.js +372 -23
- package/dist/Components/Layouts/Popup.js +1 -4
- package/dist/Components/Layouts/ThemePicker.d.ts +21 -3
- package/dist/Components/Layouts/ThemePicker.js +89 -6
- package/dist/Components/Layouts/ThemeScript.d.ts +4 -2
- package/dist/Components/Layouts/ThemeScript.js +4 -2
- package/dist/Components/Layouts/ThemeSwitcher.d.ts +6 -3
- package/dist/Components/Layouts/ThemeSwitcher.js +9 -8
- package/dist/Components/Viewers/Avatar.d.ts +21 -0
- package/dist/Components/Viewers/Avatar.js +21 -0
- package/dist/Components/Viewers/DataTable.js +252 -62
- package/dist/Components/Viewers/DataTableColumns.d.ts +7 -3
- package/dist/Components/Viewers/DataTableColumns.js +25 -68
- package/dist/Components/Viewers/DataTableFilters.d.ts +21 -0
- package/dist/Components/Viewers/DataTableFilters.js +68 -0
- package/dist/Components/Viewers/DataTableParts.d.ts +28 -10
- package/dist/Components/Viewers/DataTableParts.js +42 -13
- package/dist/Helpers/AnimationHelpers.d.ts +11 -0
- package/dist/Helpers/AnimationHelpers.js +20 -2
- package/dist/Helpers/ApiModules.d.ts +3 -34
- package/dist/Helpers/ApiModules.js +3 -3
- package/dist/Helpers/ApiRoutes.d.ts +68 -26
- package/dist/Helpers/ApiRoutes.js +31 -27
- package/dist/Helpers/ArrayHelpers.d.ts +0 -0
- package/dist/Helpers/ArrayHelpers.js +2 -0
- package/dist/Helpers/CodeHelpers.d.ts +97 -0
- package/dist/Helpers/CodeHelpers.js +332 -0
- package/dist/Helpers/CrudBackend.d.ts +101 -8
- package/dist/Helpers/CrudBackend.js +172 -11
- package/dist/Helpers/CrudColumns.d.ts +51 -0
- package/dist/Helpers/CrudColumns.js +69 -0
- package/dist/Helpers/CrudHelpers.d.ts +50 -5
- package/dist/Helpers/CrudHelpers.js +109 -12
- package/dist/Helpers/ExcelBackend.d.ts +3 -3
- package/dist/Helpers/ExcelBackend.js +8 -2
- package/dist/Helpers/ExcelHelpers.d.ts +36 -8
- package/dist/Helpers/ExcelHelpers.js +55 -13
- package/dist/Helpers/FormStore.d.ts +9 -5
- package/dist/Helpers/FormStore.js +25 -5
- package/dist/Helpers/InputParamsHelpers.js +8 -0
- package/dist/Helpers/MessageBuilder.js +3 -0
- package/dist/Helpers/NexusHelpers.d.ts +0 -0
- package/dist/Helpers/NexusHelpers.js +1 -0
- package/dist/Helpers/NumberHelpers.d.ts +7 -1
- package/dist/Helpers/NumberHelpers.js +41 -3
- package/dist/Helpers/PopoverHelpers.d.ts +17 -5
- package/dist/Helpers/PopoverHelpers.js +52 -17
- package/dist/Helpers/PopoverHooks.d.ts +24 -0
- package/dist/Helpers/PopoverHooks.js +62 -0
- package/dist/Helpers/RequestCache.d.ts +35 -0
- package/dist/Helpers/RequestCache.js +113 -0
- package/dist/Helpers/RowsStore.d.ts +7 -2
- package/dist/Helpers/RowsStore.js +15 -3
- package/dist/Helpers/TableFilters.d.ts +25 -0
- package/dist/Helpers/TableFilters.js +162 -0
- package/dist/Helpers/TableHelpers.d.ts +7 -4
- package/dist/Helpers/TableHelpers.js +15 -6
- package/dist/Helpers/TableJoins.d.ts +70 -0
- package/dist/Helpers/TableJoins.js +250 -0
- package/dist/Helpers/TableStore.d.ts +16 -3
- package/dist/Helpers/TableStore.js +25 -5
- package/dist/Helpers/ThemeHelpers.d.ts +21 -4
- package/dist/Helpers/ThemeHelpers.js +46 -9
- package/dist/Helpers/TreeStore.d.ts +225 -11
- package/dist/Helpers/TreeStore.js +683 -90
- package/dist/Helpers/UserPreferences.d.ts +22 -0
- package/dist/Helpers/UserPreferences.js +116 -0
- package/dist/Interfaces/CrudInterfaces.d.ts +67 -10
- package/dist/Interfaces/ExcelInterfaces.d.ts +12 -0
- package/dist/Interfaces/FormInterfaces.d.ts +37 -6
- package/dist/Interfaces/InputInterfaces.d.ts +24 -0
- package/dist/Interfaces/MessageInterfaces.d.ts +1 -1
- package/dist/Interfaces/PreferenceInterfaces.d.ts +51 -0
- package/dist/Interfaces/PreferenceInterfaces.js +25 -0
- package/dist/Interfaces/TableInterfaces.d.ts +145 -16
- package/dist/Interfaces/ThemeInterfaces.d.ts +25 -0
- package/dist/Interfaces/ThemeInterfaces.js +15 -0
- package/dist/Services/ApiProxy.d.ts +36 -1
- package/dist/Services/ApiProxy.js +182 -52
- package/dist/Services/ApiProxyRules.d.ts +203 -0
- package/dist/Services/ApiProxyRules.js +426 -0
- package/dist/Services/ExcelApi.d.ts +3 -1
- package/dist/Services/ExcelApi.js +1 -1
- package/dist/Services/JoinSources.d.ts +48 -0
- package/dist/Services/JoinSources.js +74 -0
- package/dist/Services/ServerApi.d.ts +13 -2
- package/dist/Services/ServerApi.js +8 -3
- package/dist/Services/ThemeService.d.ts +18 -2
- package/dist/Services/ThemeService.js +80 -16
- package/dist/Shared.Index.d.ts +6 -0
- package/dist/Shared.Index.js +6 -0
- package/package.json +4 -2
- package/src/Styles/Nexus.Avatar.css +79 -0
- package/src/Styles/Nexus.Base.css +51 -4
- package/src/Styles/Nexus.Button.css +27 -0
- package/src/Styles/Nexus.Calendar.css +4 -6
- package/src/Styles/Nexus.Chat.css +5 -51
- package/src/Styles/Nexus.Choice.css +4 -6
- package/src/Styles/Nexus.Crud.css +16 -9
- package/src/Styles/Nexus.Dropdown.css +12 -61
- package/src/Styles/Nexus.Editor.css +4 -6
- package/src/Styles/Nexus.Excel.css +34 -15
- package/src/Styles/Nexus.Form.css +25 -67
- package/src/Styles/Nexus.Index.css +1 -0
- package/src/Styles/Nexus.Input.css +794 -637
- package/src/Styles/Nexus.Markdown.css +0 -28
- package/src/Styles/Nexus.Menu.css +8 -30
- package/src/Styles/Nexus.Popup.css +22 -29
- package/src/Styles/Nexus.RichText.css +2 -32
- package/src/Styles/Nexus.Rows.css +51 -10
- package/src/Styles/Nexus.Slider.css +3 -5
- package/src/Styles/Nexus.Tab.Buttons.css +20 -7
- package/src/Styles/Nexus.Table.css +1387 -1296
- package/src/Styles/Nexus.Theme.Picker.css +342 -232
- package/src/Styles/Nexus.Time.css +9 -12
- package/src/Styles/Nexus.Toast.css +6 -8
- package/src/Styles/Nexus.Tokens.css +17 -0
- package/src/Styles/Nexus.Tree.css +76 -11
|
@@ -252,13 +252,12 @@
|
|
|
252
252
|
|
|
253
253
|
/* The panel */
|
|
254
254
|
.nx-dropdown-panel {
|
|
255
|
-
--nx-dropdown-row:
|
|
255
|
+
--nx-dropdown-row: calc(var(--nx-row) + 2px);
|
|
256
256
|
--nx-dropdown-font: var(--nx-text-md);
|
|
257
257
|
--nx-dropdown-media: 24px;
|
|
258
258
|
--nx-dropdown-check: 16px;
|
|
259
259
|
--nx-dropdown-pad-x: var(--nx-space-2);
|
|
260
260
|
--nx-dropdown-bg: light-dark(var(--nx-surface), var(--nx-surface-2));
|
|
261
|
-
--nx-dropdown-scrollbar: color-mix(in oklab, var(--nx-text-subtle) 75%, transparent);
|
|
262
261
|
|
|
263
262
|
position: fixed;
|
|
264
263
|
inset: auto;
|
|
@@ -273,14 +272,14 @@
|
|
|
273
272
|
}
|
|
274
273
|
|
|
275
274
|
.nx-dropdown-panel--sm {
|
|
276
|
-
--nx-dropdown-row:
|
|
275
|
+
--nx-dropdown-row: calc(var(--nx-row) - 2px);
|
|
277
276
|
--nx-dropdown-font: var(--nx-text-sm);
|
|
278
277
|
--nx-dropdown-media: 20px;
|
|
279
278
|
--nx-dropdown-check: 14px;
|
|
280
279
|
}
|
|
281
280
|
|
|
282
281
|
.nx-dropdown-panel--lg {
|
|
283
|
-
--nx-dropdown-row:
|
|
282
|
+
--nx-dropdown-row: calc(var(--nx-row) + 8px);
|
|
284
283
|
--nx-dropdown-font: var(--nx-text-lg);
|
|
285
284
|
--nx-dropdown-media: 28px;
|
|
286
285
|
--nx-dropdown-check: 18px;
|
|
@@ -291,14 +290,6 @@
|
|
|
291
290
|
.nx-dropdown-panel:popover-open {
|
|
292
291
|
display: flex;
|
|
293
292
|
flex-direction: column;
|
|
294
|
-
animation: nx-dropdown-in 120ms ease-out;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
@keyframes nx-dropdown-in {
|
|
298
|
-
from {
|
|
299
|
-
opacity: 0;
|
|
300
|
-
transform: translateY(-4px);
|
|
301
|
-
}
|
|
302
293
|
}
|
|
303
294
|
|
|
304
295
|
/*
|
|
@@ -318,8 +309,6 @@
|
|
|
318
309
|
font-size: var(--nx-dropdown-font);
|
|
319
310
|
line-height: 1.35;
|
|
320
311
|
scrollbar-gutter: stable;
|
|
321
|
-
scrollbar-width: thin;
|
|
322
|
-
scrollbar-color: var(--nx-dropdown-scrollbar) transparent;
|
|
323
312
|
}
|
|
324
313
|
|
|
325
314
|
/*
|
|
@@ -578,44 +567,9 @@
|
|
|
578
567
|
color: var(--nx-text-muted);
|
|
579
568
|
}
|
|
580
569
|
|
|
570
|
+
/* The shared avatar, at the size of the dropdown's pictures. */
|
|
581
571
|
.nx-dropdown-avatar {
|
|
582
|
-
|
|
583
|
-
display: inline-grid;
|
|
584
|
-
flex-shrink: 0;
|
|
585
|
-
place-items: center;
|
|
586
|
-
width: var(--nx-dropdown-media);
|
|
587
|
-
height: var(--nx-dropdown-media);
|
|
588
|
-
overflow: hidden;
|
|
589
|
-
border-radius: 50%;
|
|
590
|
-
background: color-mix(in oklab, var(--nx-text) 10%, var(--nx-surface));
|
|
591
|
-
color: var(--nx-text);
|
|
592
|
-
font-size: max(8px, calc(var(--nx-dropdown-media) * 0.4));
|
|
593
|
-
font-weight: 600;
|
|
594
|
-
line-height: 1;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
.nx-dropdown-avatar[data-tone="primary"] {
|
|
598
|
-
background: var(--nx-primary-soft);
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
.nx-dropdown-avatar[data-tone="info"] {
|
|
602
|
-
background: var(--nx-info-soft);
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
.nx-dropdown-avatar[data-tone="success"] {
|
|
606
|
-
background: var(--nx-success-soft);
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
.nx-dropdown-avatar[data-tone="warning"] {
|
|
610
|
-
background: var(--nx-warning-soft);
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
.nx-dropdown-avatar img {
|
|
614
|
-
position: absolute;
|
|
615
|
-
inset: 0;
|
|
616
|
-
width: 100%;
|
|
617
|
-
height: 100%;
|
|
618
|
-
object-fit: cover;
|
|
572
|
+
--nx-avatar-size: var(--nx-dropdown-media);
|
|
619
573
|
}
|
|
620
574
|
|
|
621
575
|
/* A flag or a logo: 4:3, with a faint edge so white flags do not melt into the panel. */
|
|
@@ -759,16 +713,13 @@
|
|
|
759
713
|
white-space: nowrap;
|
|
760
714
|
}
|
|
761
715
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
animation: none;
|
|
766
|
-
}
|
|
716
|
+
[data-nx-motion="reduce"] .nx-dropdown-skeleton {
|
|
717
|
+
animation: none;
|
|
718
|
+
}
|
|
767
719
|
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
}
|
|
720
|
+
[data-nx-motion="reduce"] .nx-dropdown__toggle .nx-icon,
|
|
721
|
+
[data-nx-motion="reduce"] .nx-dropdown-checkbox,
|
|
722
|
+
[data-nx-motion="reduce"] .nx-dropdown-checkbox::before {
|
|
723
|
+
transition: none;
|
|
773
724
|
}
|
|
774
725
|
}
|
|
@@ -287,11 +287,9 @@
|
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
transition: none;
|
|
295
|
-
}
|
|
290
|
+
[data-nx-motion="reduce"] .nx-editor__grip,
|
|
291
|
+
[data-nx-motion="reduce"] .nx-editor__size,
|
|
292
|
+
[data-nx-motion="reduce"] .nx-editor__footer {
|
|
293
|
+
transition: none;
|
|
296
294
|
}
|
|
297
295
|
}
|
|
@@ -67,6 +67,15 @@
|
|
|
67
67
|
font-size: var(--nx-text-sm);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
/* The picked file's icon, on the line of its name; the line stays text, so "Checking" keeps its space. */
|
|
71
|
+
.nx-excel__file > .nx-icon {
|
|
72
|
+
width: 16px;
|
|
73
|
+
height: 16px;
|
|
74
|
+
margin-right: 6px;
|
|
75
|
+
color: var(--nx-text-muted);
|
|
76
|
+
vertical-align: -3px;
|
|
77
|
+
}
|
|
78
|
+
|
|
70
79
|
.nx-excel__muted {
|
|
71
80
|
color: var(--nx-text-muted);
|
|
72
81
|
}
|
|
@@ -84,6 +93,11 @@
|
|
|
84
93
|
font-size: var(--nx-text-sm);
|
|
85
94
|
}
|
|
86
95
|
|
|
96
|
+
/* What the new records start as: one short choice, as wide as its words need and no wider. */
|
|
97
|
+
.nx-excel__status {
|
|
98
|
+
max-width: 18rem;
|
|
99
|
+
}
|
|
100
|
+
|
|
87
101
|
/* A refusal, and what the import could not write: a tint, with the words in the text color so they read on it. */
|
|
88
102
|
.nx-excel__failure,
|
|
89
103
|
.nx-excel__result {
|
|
@@ -188,6 +202,15 @@
|
|
|
188
202
|
transform: rotate(-90deg);
|
|
189
203
|
}
|
|
190
204
|
|
|
205
|
+
/* The new rows' line, which does not fold: the same line as a toggle, with nothing to press. */
|
|
206
|
+
.nx-excel__toggle[data-fixed] {
|
|
207
|
+
cursor: default;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.nx-excel__toggle[data-fixed]:hover {
|
|
211
|
+
background: none;
|
|
212
|
+
}
|
|
213
|
+
|
|
191
214
|
.nx-excel__title {
|
|
192
215
|
flex: none;
|
|
193
216
|
font-weight: 600;
|
|
@@ -264,8 +287,7 @@
|
|
|
264
287
|
color: var(--nx-warning);
|
|
265
288
|
}
|
|
266
289
|
|
|
267
|
-
.nx-excel__problems ul
|
|
268
|
-
.nx-excel__refused {
|
|
290
|
+
.nx-excel__problems ul {
|
|
269
291
|
display: grid;
|
|
270
292
|
gap: var(--nx-space-1);
|
|
271
293
|
margin: 0;
|
|
@@ -273,17 +295,12 @@
|
|
|
273
295
|
list-style: none;
|
|
274
296
|
}
|
|
275
297
|
|
|
276
|
-
.nx-excel__problems li
|
|
277
|
-
.nx-excel__refused li {
|
|
298
|
+
.nx-excel__problems li {
|
|
278
299
|
display: grid;
|
|
279
300
|
grid-template-columns: minmax(6rem, max-content) 1fr;
|
|
280
301
|
gap: var(--nx-space-1) var(--nx-space-3);
|
|
281
302
|
}
|
|
282
303
|
|
|
283
|
-
.nx-excel__refused {
|
|
284
|
-
font-size: var(--nx-text-xs);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
304
|
.nx-excel__place {
|
|
288
305
|
font-weight: 600;
|
|
289
306
|
font-variant-numeric: tabular-nums;
|
|
@@ -315,8 +332,7 @@
|
|
|
315
332
|
}
|
|
316
333
|
|
|
317
334
|
@media (width < 36rem) {
|
|
318
|
-
.nx-excel__problems li
|
|
319
|
-
.nx-excel__refused li {
|
|
335
|
+
.nx-excel__problems li {
|
|
320
336
|
grid-template-columns: 1fr;
|
|
321
337
|
}
|
|
322
338
|
|
|
@@ -334,6 +350,11 @@
|
|
|
334
350
|
padding-left: 24px;
|
|
335
351
|
white-space: normal;
|
|
336
352
|
}
|
|
353
|
+
|
|
354
|
+
/* Under the title, where the title starts: a line that does not fold has no chevron to clear. */
|
|
355
|
+
.nx-excel__toggle[data-fixed] .nx-excel__hint {
|
|
356
|
+
padding-left: 0;
|
|
357
|
+
}
|
|
337
358
|
}
|
|
338
359
|
|
|
339
360
|
/* The sentence about what will be sent, then the buttons. */
|
|
@@ -361,10 +382,8 @@
|
|
|
361
382
|
margin-left: auto;
|
|
362
383
|
}
|
|
363
384
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
transition: none;
|
|
368
|
-
}
|
|
385
|
+
[data-nx-motion="reduce"] .nx-excel__toggle,
|
|
386
|
+
[data-nx-motion="reduce"] .nx-excel__chevron {
|
|
387
|
+
transition: none;
|
|
369
388
|
}
|
|
370
389
|
}
|
|
@@ -143,73 +143,6 @@
|
|
|
143
143
|
margin-block: -4px;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
/* Placeholders while the values load, in the shape of the inputs to come. */
|
|
147
|
-
.nx-form__skeleton {
|
|
148
|
-
display: flex;
|
|
149
|
-
flex-direction: column;
|
|
150
|
-
gap: 6px;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/* A checkbox's placeholder starts where its box would. */
|
|
154
|
-
.nx-form__skeleton.nx-form__cell--choice {
|
|
155
|
-
flex-direction: row;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.nx-form__skeleton-label,
|
|
159
|
-
.nx-form__skeleton-box {
|
|
160
|
-
display: block;
|
|
161
|
-
border-radius: var(--nx-radius-sm);
|
|
162
|
-
background: color-mix(in oklab, var(--nx-text) 9%, transparent);
|
|
163
|
-
animation: nx-form-pulse 1.6s ease-in-out infinite;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/* The label's line: 1.3 × the label font, with the text's height as the bar. */
|
|
167
|
-
.nx-form__skeleton-label {
|
|
168
|
-
width: min(40%, 10rem);
|
|
169
|
-
height: 0.85em;
|
|
170
|
-
margin-block: 0.225em;
|
|
171
|
-
font-size: var(--nx-text-sm);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
.nx-form__skeleton-box {
|
|
175
|
-
height: var(--nx-control-md);
|
|
176
|
-
border-radius: var(--nx-radius);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.nx-form--sm .nx-form__skeleton-box {
|
|
180
|
-
height: var(--nx-control-sm);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.nx-form--lg .nx-form__skeleton-box {
|
|
184
|
-
height: var(--nx-control-lg);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
.nx-form__skeleton-box--tall,
|
|
188
|
-
.nx-form--sm .nx-form__skeleton-box--tall,
|
|
189
|
-
.nx-form--lg .nx-form__skeleton-box--tall {
|
|
190
|
-
height: calc(var(--nx-control-md) * 2.75);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.nx-form__skeleton-box--choice,
|
|
194
|
-
.nx-form--sm .nx-form__skeleton-box--choice,
|
|
195
|
-
.nx-form--lg .nx-form__skeleton-box--choice {
|
|
196
|
-
width: min(60%, 12rem);
|
|
197
|
-
height: 1.1em;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
@keyframes nx-form-pulse {
|
|
201
|
-
50% {
|
|
202
|
-
opacity: 0.45;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
@media (prefers-reduced-motion: reduce) {
|
|
207
|
-
.nx-form__skeleton-label,
|
|
208
|
-
.nx-form__skeleton-box {
|
|
209
|
-
animation: none;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
146
|
/* SubmitForm */
|
|
214
147
|
.nx-submit-form {
|
|
215
148
|
display: flex;
|
|
@@ -237,12 +170,24 @@
|
|
|
237
170
|
margin-left: auto;
|
|
238
171
|
}
|
|
239
172
|
|
|
173
|
+
/* `block`: the buttons share the bar's whole width, as a sign-in's one button fills its card. */
|
|
174
|
+
.nx-form-buttons--block .nx-form-buttons__actions {
|
|
175
|
+
width: 100%;
|
|
176
|
+
margin-left: 0;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.nx-form-buttons--block .nx-form-buttons__actions > .nx-btn {
|
|
180
|
+
flex: 1;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* One line kept even when empty: "Loading…", "Saving…" and "Unsaved changes" come and go, and the bar never jumps. */
|
|
240
184
|
.nx-form-status {
|
|
241
185
|
display: flex;
|
|
242
186
|
flex: 1 1 14rem;
|
|
243
187
|
align-items: flex-start;
|
|
244
188
|
gap: 6px;
|
|
245
189
|
min-width: 0;
|
|
190
|
+
min-height: 1lh;
|
|
246
191
|
margin: 0;
|
|
247
192
|
color: var(--nx-text-muted);
|
|
248
193
|
font-size: var(--nx-text-sm);
|
|
@@ -265,6 +210,19 @@
|
|
|
265
210
|
color: var(--nx-success);
|
|
266
211
|
}
|
|
267
212
|
|
|
213
|
+
/*
|
|
214
|
+
* An `errors` line has nothing to say until something goes wrong, so it keeps no room until then. It is clipped,
|
|
215
|
+
* not removed: a live region has to be there before its words arrive for a screen reader to read them.
|
|
216
|
+
*/
|
|
217
|
+
.nx-form-status--errors:empty {
|
|
218
|
+
position: absolute;
|
|
219
|
+
width: 1px;
|
|
220
|
+
height: 1px;
|
|
221
|
+
min-height: 0;
|
|
222
|
+
overflow: hidden;
|
|
223
|
+
clip-path: inset(50%);
|
|
224
|
+
}
|
|
225
|
+
|
|
268
226
|
/* An input's name in the status line: a link-like button that goes to it. */
|
|
269
227
|
.nx-form-status__jump {
|
|
270
228
|
padding: 0;
|