@visns-studio/visns-components 6.0.3 → 6.0.5
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 +1 -1
- package/src/components/DataGrid.jsx +30 -12
- package/src/components/auth/Login.jsx +203 -175
- package/src/components/columns/ColumnRenderers.jsx +34 -0
- package/src/components/generic/GenericFormBuilder.jsx +550 -25
- package/src/components/generic/GenericIndex.jsx +15 -5
- package/src/components/styles/DataGrid.module.scss +38 -22
- package/src/components/styles/Form.module.scss +32 -33
- package/src/components/styles/GenericDetail.module.scss +28 -30
- package/src/components/styles/GenericDynamic.module.scss +7 -21
- package/src/components/styles/GenericEditableTable.module.scss +5 -22
- package/src/components/styles/GenericFormBuilder.module.scss +545 -30
- package/src/components/styles/GenericIndex.module.scss +17 -32
- package/src/components/styles/GenericMain.module.scss +18 -6
- package/src/components/styles/GenericQuote.module.scss +7 -22
- package/src/components/styles/GenericReport.module.scss +5 -37
- package/src/components/styles/Login.module.scss +415 -239
- package/src/components/styles/Navigation.module.scss +124 -35
- package/src/components/styles/Profile.module.scss +5 -26
- package/src/components/styles/QuickAction.module.scss +34 -29
- package/src/components/styles/_controls.scss +139 -0
- package/src/components/styles/global.css +54 -15
|
@@ -923,15 +923,25 @@ function GenericIndex({
|
|
|
923
923
|
) &&
|
|
924
924
|
setting.page.tableInfo.heading.length > 0 &&
|
|
925
925
|
setting.page.tableInfo.heading.map((h) => (
|
|
926
|
-
<span>
|
|
927
|
-
|
|
928
|
-
{h.label}
|
|
926
|
+
<span key={h.id}>
|
|
927
|
+
<strong>{tableInfo[h.id]}</strong>{' '}
|
|
928
|
+
{h.label}
|
|
929
929
|
</span>
|
|
930
930
|
))}
|
|
931
|
+
{/* Square brackets round a count is a convention
|
|
932
|
+
from a spreadsheet, not an interface — and it
|
|
933
|
+
repeated the page title back at you. The count
|
|
934
|
+
alone is what anyone actually reads. */}
|
|
931
935
|
{total > 0 && (
|
|
932
936
|
<span>
|
|
933
|
-
|
|
934
|
-
|
|
937
|
+
{/* Grouped, matching the pager's own
|
|
938
|
+
"of 32,134" — the same figure was
|
|
939
|
+
printing two different ways on one
|
|
940
|
+
screen. */}
|
|
941
|
+
<strong>
|
|
942
|
+
{Number(total).toLocaleString()}
|
|
943
|
+
</strong>{' '}
|
|
944
|
+
total
|
|
935
945
|
</span>
|
|
936
946
|
)}
|
|
937
947
|
</div>
|
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
width: max-content;
|
|
3
|
-
display: inline-block;
|
|
4
|
-
position: relative;
|
|
5
|
-
padding: 0.65rem 1rem;
|
|
6
|
-
cursor: pointer;
|
|
7
|
-
font-size: 1rem;
|
|
8
|
-
color: var(--tertiary-color);
|
|
9
|
-
text-decoration: none;
|
|
10
|
-
overflow: hidden;
|
|
11
|
-
background: var(--primary-color);
|
|
12
|
-
border: 1px solid rgba(var(--primary-rgb), 1.1);
|
|
13
|
-
outline: none;
|
|
14
|
-
transition: all 0.2s cubic-bezier(0.85, 0, 0.15, 1) 0s;
|
|
1
|
+
@use 'controls' as *;
|
|
15
2
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
background: var(--secondary-color);
|
|
19
|
-
border: 1px solid rgba(var(--secondary-rgb), 1.05);
|
|
20
|
-
}
|
|
3
|
+
.btn {
|
|
4
|
+
@include button-primary;
|
|
21
5
|
}
|
|
22
|
-
|
|
23
6
|
/* Clock button styles - Compact version */
|
|
24
7
|
.clockButton {
|
|
25
8
|
display: flex;
|
|
@@ -59,8 +42,41 @@
|
|
|
59
42
|
overflow: hidden !important;
|
|
60
43
|
}
|
|
61
44
|
|
|
62
|
-
|
|
63
|
-
|
|
45
|
+
:global {
|
|
46
|
+
/* The header is a label row, not a heading. It was navy body text at the same
|
|
47
|
+
size and weight as the data, so it read as another row of values. Smaller,
|
|
48
|
+
uppercase and recessive puts the emphasis back on the data, and it stays put
|
|
49
|
+
while the rows scroll under it. */
|
|
50
|
+
.InovuaReactDataGrid__header {
|
|
51
|
+
color: var(--muted-color) !important;
|
|
52
|
+
background: var(--alternate-color) !important;
|
|
53
|
+
border-bottom: 1px solid var(--border-color) !important;
|
|
54
|
+
font-size: var(--font-size-xs) !important;
|
|
55
|
+
font-weight: var(--font-weight-semibold) !important;
|
|
56
|
+
letter-spacing: 0.06em;
|
|
57
|
+
text-transform: uppercase;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Digits only line up if they are the same width. Applied to the numeric and
|
|
61
|
+
date columns rather than globally, since tabular figures are wider and
|
|
62
|
+
would loosen ordinary text. */
|
|
63
|
+
.InovuaReactDataGrid__cell[data-column-id*='date'],
|
|
64
|
+
.InovuaReactDataGrid__cell[data-column-id*='Date'],
|
|
65
|
+
.InovuaReactDataGrid__cell[data-column-id*='count'],
|
|
66
|
+
.InovuaReactDataGrid__cell[data-column-id*='total'],
|
|
67
|
+
.InovuaReactDataGrid__cell[data-column-id*='no'],
|
|
68
|
+
.InovuaReactDataGrid__cell[data-column-id*='number'],
|
|
69
|
+
.InovuaReactDataGrid__cell[data-column-id*='amount'],
|
|
70
|
+
.InovuaReactDataGrid__cell[data-column-id*='qty'] {
|
|
71
|
+
font-variant-numeric: tabular-nums;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Banding, so the eye can track a row across a wide table. Kept very faint —
|
|
75
|
+
strong enough to follow, quiet enough not to compete with the hover state
|
|
76
|
+
or a status colour in the row. */
|
|
77
|
+
.InovuaReactDataGrid__row--odd .InovuaReactDataGrid__row-cell-wrap {
|
|
78
|
+
background: var(--alternate-color);
|
|
79
|
+
}
|
|
64
80
|
}
|
|
65
81
|
|
|
66
82
|
.InovuaReactDataGrid__row-hover-target:hover {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
@use 'controls' as *;
|
|
2
|
+
|
|
3
|
+
.btn {
|
|
4
|
+
@include button-primary;
|
|
5
|
+
}
|
|
1
6
|
.label {
|
|
2
7
|
display: block;
|
|
3
8
|
}
|
|
@@ -209,34 +214,50 @@ input[type='file'] {
|
|
|
209
214
|
|
|
210
215
|
.modal__header {
|
|
211
216
|
width: 100%;
|
|
212
|
-
border-bottom: 1px solid
|
|
217
|
+
border-bottom: 1px solid var(--border-color);
|
|
213
218
|
display: flex;
|
|
214
219
|
align-items: center;
|
|
215
220
|
justify-content: space-between;
|
|
216
|
-
|
|
221
|
+
gap: var(--spacing-md);
|
|
222
|
+
padding: var(--spacing-md) var(--spacing-lg);
|
|
217
223
|
|
|
218
224
|
h1 {
|
|
219
|
-
|
|
225
|
+
/* Was --secondary-color, the same red that means destructive
|
|
226
|
+
everywhere else in the console — so every edit dialog opened
|
|
227
|
+
looking like a warning. A dialog title is just a title. */
|
|
228
|
+
color: var(--heading-color);
|
|
220
229
|
margin: 0;
|
|
221
230
|
padding: 0;
|
|
222
|
-
font-size:
|
|
231
|
+
font-size: var(--font-size-lg);
|
|
232
|
+
font-weight: var(--font-weight-bold);
|
|
233
|
+
letter-spacing: -0.01em;
|
|
223
234
|
}
|
|
224
235
|
}
|
|
225
236
|
|
|
226
237
|
.modal__close {
|
|
227
|
-
|
|
228
|
-
|
|
238
|
+
/* A close control should recede until reached for. It was a permanently
|
|
239
|
+
tinted box with a navy glyph, which read as another action. */
|
|
240
|
+
display: flex;
|
|
241
|
+
align-items: center;
|
|
242
|
+
justify-content: center;
|
|
243
|
+
width: 2rem;
|
|
244
|
+
height: 2rem;
|
|
245
|
+
flex: none;
|
|
246
|
+
background: none;
|
|
229
247
|
cursor: pointer;
|
|
230
|
-
padding: 0
|
|
248
|
+
padding: 0;
|
|
231
249
|
margin: 0;
|
|
232
|
-
outline: none;
|
|
233
250
|
border: none;
|
|
234
|
-
border-radius: var(--
|
|
235
|
-
display: block;
|
|
251
|
+
border-radius: var(--radius-sm);
|
|
236
252
|
line-height: 1;
|
|
253
|
+
transition: background-color var(--speed) var(--ease);
|
|
254
|
+
|
|
255
|
+
&:hover {
|
|
256
|
+
background: var(--hover-color);
|
|
257
|
+
}
|
|
237
258
|
|
|
238
259
|
svg {
|
|
239
|
-
color: var(--
|
|
260
|
+
color: var(--muted-color);
|
|
240
261
|
display: block;
|
|
241
262
|
}
|
|
242
263
|
}
|
|
@@ -272,29 +293,7 @@ input[type='file'] {
|
|
|
272
293
|
}
|
|
273
294
|
}
|
|
274
295
|
|
|
275
|
-
.btn {
|
|
276
|
-
width: max-content;
|
|
277
|
-
display: inline-block;
|
|
278
|
-
position: relative;
|
|
279
|
-
padding: 0.65rem 1rem;
|
|
280
|
-
cursor: pointer;
|
|
281
|
-
font-size: 1rem;
|
|
282
|
-
color: var(--tertiary-color);
|
|
283
|
-
text-decoration: none;
|
|
284
|
-
overflow: hidden;
|
|
285
|
-
background: var(--primary-color);
|
|
286
|
-
border: 1px solid rgba(var(--primary-color--rgb), 1.1);
|
|
287
|
-
border-radius: var(--br);
|
|
288
|
-
outline: none;
|
|
289
|
-
transition: all 0.2s cubic-bezier(0.85, 0, 0.15, 1) 0s;
|
|
290
|
-
font-size: 1.25em;
|
|
291
296
|
|
|
292
|
-
&:hover {
|
|
293
|
-
color: var(--primary-color);
|
|
294
|
-
background: var(--highlight-color);
|
|
295
|
-
border: 1px solid rgba(var(--highlight-rgb), 1.05);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
297
|
|
|
299
298
|
.saveBtn {
|
|
300
299
|
width: max-content;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
@use 'controls' as *;
|
|
2
|
+
|
|
3
|
+
.btn {
|
|
4
|
+
@include button-primary;
|
|
5
|
+
}
|
|
1
6
|
.grid {
|
|
2
7
|
width: 100%;
|
|
3
8
|
display: flex;
|
|
@@ -156,14 +161,21 @@
|
|
|
156
161
|
.gridtxt__header {
|
|
157
162
|
width: 100%;
|
|
158
163
|
display: block;
|
|
159
|
-
background:
|
|
164
|
+
background: none;
|
|
160
165
|
box-sizing: border-box;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
/* Was a centred, tinted bar. A section heading is read at the start of
|
|
167
|
+
the line like everything under it; centring it made the eye jump to the
|
|
168
|
+
middle and back for every section on the page. */
|
|
169
|
+
padding: 0 0 var(--spacing-sm);
|
|
170
|
+
border-bottom: 1px solid var(--border-color);
|
|
171
|
+
border-radius: 0;
|
|
172
|
+
margin-bottom: var(--spacing-md);
|
|
173
|
+
font-size: var(--font-size-sm);
|
|
174
|
+
font-weight: var(--font-weight-semibold);
|
|
175
|
+
letter-spacing: 0.06em;
|
|
176
|
+
text-transform: uppercase;
|
|
177
|
+
text-align: left;
|
|
178
|
+
color: var(--muted-color);
|
|
167
179
|
}
|
|
168
180
|
|
|
169
181
|
.gridtxt__header span {
|
|
@@ -199,8 +211,14 @@
|
|
|
199
211
|
flex: 0 0 calc(100% - 10px);
|
|
200
212
|
}
|
|
201
213
|
|
|
214
|
+
/* No accent. Description and Comments are ordinary fields — the same kind of
|
|
215
|
+
thing as Label and Source beside them — so they get the same neutral card.
|
|
216
|
+
The brand red here was decorative, and on a page with no validation it read
|
|
217
|
+
as an error; a left rule was only a quieter version of the same mistake.
|
|
218
|
+
Emphasis should mean something, and here there is nothing to emphasise. */
|
|
202
219
|
.gridtxt > ul .notecolor {
|
|
203
|
-
border: 1px solid var(--
|
|
220
|
+
border: 1px solid var(--border-color);
|
|
221
|
+
background: var(--surface-color);
|
|
204
222
|
}
|
|
205
223
|
|
|
206
224
|
.titleInfo {
|
|
@@ -618,29 +636,9 @@
|
|
|
618
636
|
line-height: 1.475em;
|
|
619
637
|
}
|
|
620
638
|
|
|
621
|
-
.btn {
|
|
622
|
-
width: max-content;
|
|
623
|
-
display: inline-block;
|
|
624
|
-
position: relative;
|
|
625
|
-
padding: 0.65rem 1rem;
|
|
626
|
-
cursor: pointer;
|
|
627
|
-
font-size: 1rem;
|
|
628
|
-
color: var(--tertiary-color);
|
|
629
|
-
text-decoration: none;
|
|
630
|
-
overflow: hidden;
|
|
631
|
-
background: var(--primary-color);
|
|
632
|
-
border: 1px solid rgba(var(--primary-color--rgb), 1.1);
|
|
633
|
-
border-radius: var(--br);
|
|
634
|
-
outline: none;
|
|
635
|
-
transition: all 0.2s cubic-bezier(0.85, 0, 0.15, 1) 0s;
|
|
636
|
-
font-size: 1.25em;
|
|
637
|
-
}
|
|
638
639
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
background: var(--highlight-color);
|
|
642
|
-
border: 1px solid rgba(var(--highlight-rgb), 1.05);
|
|
643
|
-
}
|
|
640
|
+
|
|
641
|
+
|
|
644
642
|
|
|
645
643
|
.crmtitle {
|
|
646
644
|
min-height: auto;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
@use 'controls' as *;
|
|
2
|
+
|
|
3
|
+
.btn {
|
|
4
|
+
@include button-primary;
|
|
5
|
+
}
|
|
1
6
|
.grid__row {
|
|
2
7
|
width: 100%;
|
|
3
8
|
display: flex;
|
|
@@ -397,28 +402,9 @@ select:not(:placeholder-shown) + .fi__span {
|
|
|
397
402
|
}
|
|
398
403
|
|
|
399
404
|
/* Adding btn class */
|
|
400
|
-
.btn {
|
|
401
|
-
width: max-content;
|
|
402
|
-
display: inline-block;
|
|
403
|
-
position: relative;
|
|
404
|
-
padding: 0.65rem 1rem;
|
|
405
|
-
cursor: pointer;
|
|
406
|
-
font-size: 1rem;
|
|
407
|
-
color: var(--secondary-color);
|
|
408
|
-
text-decoration: none;
|
|
409
|
-
overflow: hidden;
|
|
410
|
-
background: var(--primary-color);
|
|
411
|
-
border: 1px solid rgba(var(--primary-rgb), 1.1);
|
|
412
|
-
border-radius: var(--br);
|
|
413
|
-
outline: none;
|
|
414
|
-
transition: all 0.2s cubic-bezier(0.85, 0, 0.15, 1) 0s;
|
|
415
|
-
}
|
|
416
405
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
background: var(--secondary-color);
|
|
420
|
-
border: 1px solid rgba(var(--secondary-color-rgb), 1.1);
|
|
421
|
-
}
|
|
406
|
+
|
|
407
|
+
|
|
422
408
|
|
|
423
409
|
/* Adding polActions style to the module.css */
|
|
424
410
|
.polActions {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
@use 'controls' as *;
|
|
2
|
+
|
|
3
|
+
.btn {
|
|
4
|
+
@include button-primary;
|
|
5
|
+
}
|
|
1
6
|
.schedulingTable {
|
|
2
7
|
width: 100%;
|
|
3
8
|
border-collapse: collapse;
|
|
@@ -205,29 +210,7 @@
|
|
|
205
210
|
}
|
|
206
211
|
}
|
|
207
212
|
|
|
208
|
-
.btn {
|
|
209
|
-
width: max-content;
|
|
210
|
-
display: inline-block;
|
|
211
|
-
position: relative;
|
|
212
|
-
padding: 0.65rem 1rem;
|
|
213
|
-
cursor: pointer;
|
|
214
|
-
font-size: 1rem;
|
|
215
|
-
color: var(--tertiary-color);
|
|
216
|
-
text-decoration: none;
|
|
217
|
-
overflow: hidden;
|
|
218
|
-
background: var(--primary-color);
|
|
219
|
-
border: 1px solid rgba(var(--primary-color--rgb), 1.1);
|
|
220
|
-
border-radius: var(--br);
|
|
221
|
-
outline: none;
|
|
222
|
-
transition: all 0.2s cubic-bezier(0.85, 0, 0.15, 1) 0s;
|
|
223
|
-
font-size: 1.25em;
|
|
224
213
|
|
|
225
|
-
&:hover {
|
|
226
|
-
color: var(--primary-color);
|
|
227
|
-
background: var(--highlight-color);
|
|
228
|
-
border: 1px solid rgba(var(--highlight-rgb), 1.05);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
214
|
|
|
232
215
|
.btn_compact {
|
|
233
216
|
width: max-content;
|