nexus-shared 4.0.0 → 4.1.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 +795 -0
- package/README.md +220 -14
- package/dist/Client.Index.d.ts +13 -0
- package/dist/Client.Index.js +13 -0
- package/dist/Components/Chats/ChatComposer.d.ts +7 -1
- package/dist/Components/Chats/ChatComposer.js +9 -6
- package/dist/Components/Chats/ChatParts.d.ts +15 -2
- package/dist/Components/Chats/ChatParts.js +15 -4
- package/dist/Components/Chats/ChatPopup.d.ts +46 -0
- package/dist/Components/Chats/ChatPopup.js +34 -0
- package/dist/Components/Chats/ChatThread.d.ts +9 -1
- package/dist/Components/Chats/ChatThread.js +54 -6
- package/dist/Components/Dashboards/DashboardBoard.d.ts +62 -0
- package/dist/Components/Dashboards/DashboardBoard.js +594 -0
- package/dist/Components/Dashboards/DashboardWidgets.d.ts +155 -0
- package/dist/Components/Dashboards/DashboardWidgets.js +159 -0
- package/dist/Components/Dashboards/WidgetFrame.d.ts +51 -0
- package/dist/Components/Dashboards/WidgetFrame.js +45 -0
- package/dist/Components/Documents/Button.d.ts +6 -1
- package/dist/Components/Documents/Button.js +2 -2
- package/dist/Components/Documents/TabButtons.d.ts +6 -0
- package/dist/Components/Documents/TabButtons.js +5 -4
- package/dist/Components/Domains/DomainCard.d.ts +98 -0
- package/dist/Components/Domains/DomainCard.js +182 -0
- package/dist/Components/Forms/ApiForm.js +5 -1
- package/dist/Components/Forms/Crud.js +72 -24
- package/dist/Components/Forms/CrudActions.d.ts +5 -4
- package/dist/Components/Forms/CrudActions.js +42 -12
- package/dist/Components/Forms/CrudHistory.d.ts +6 -1
- package/dist/Components/Forms/CrudHistory.js +14 -6
- package/dist/Components/Forms/CrudParts.d.ts +11 -4
- package/dist/Components/Forms/CrudParts.js +76 -10
- package/dist/Components/Forms/CrudRowForms.js +65 -5
- package/dist/Components/Forms/CrudTree.js +7 -7
- package/dist/Components/Forms/CrudWorkspace.d.ts +15 -5
- package/dist/Components/Forms/CrudWorkspace.js +19 -11
- package/dist/Components/Forms/Form.d.ts +3 -2
- package/dist/Components/Forms/Form.js +33 -26
- package/dist/Components/Forms/FormQuestion.d.ts +6 -0
- package/dist/Components/Forms/FormQuestion.js +28 -0
- package/dist/Components/Forms/SubmitForm.js +2 -15
- package/dist/Components/Inputs/ComputedInput.d.ts +51 -0
- package/dist/Components/Inputs/ComputedInput.js +179 -0
- package/dist/Components/Inputs/Dropdown.js +4 -2
- package/dist/Components/Inputs/GroupForm.js +3 -2
- package/dist/Components/Inputs/InputRenderer.d.ts +5 -1
- package/dist/Components/Inputs/MarkdownEditor.d.ts +6 -0
- package/dist/Components/Inputs/MarkdownEditor.js +32 -6
- package/dist/Components/Inputs/PictureInput.js +8 -3
- package/dist/Components/Inputs/RowsInput.d.ts +14 -1
- package/dist/Components/Inputs/RowsInput.js +78 -5
- package/dist/Components/Inputs/TabularForm.js +16 -3
- package/dist/Components/Inputs/TreeView.d.ts +24 -1
- package/dist/Components/Inputs/TreeView.js +84 -7
- package/dist/Components/Layouts/Popup.d.ts +22 -2
- package/dist/Components/Layouts/Popup.js +108 -6
- package/dist/Components/Messages/MailClient.d.ts +50 -0
- package/dist/Components/Messages/MailClient.js +410 -0
- package/dist/Components/Messages/MailColumns.d.ts +21 -0
- package/dist/Components/Messages/MailColumns.js +92 -0
- package/dist/Components/Messages/MailCompose.d.ts +46 -0
- package/dist/Components/Messages/MailCompose.js +154 -0
- package/dist/Components/Messages/MailReader.d.ts +43 -0
- package/dist/Components/Messages/MailReader.js +207 -0
- package/dist/Components/Messages/MailThread.d.ts +71 -0
- package/dist/Components/Messages/MailThread.js +185 -0
- package/dist/Components/Messages/MessageBell.d.ts +41 -0
- package/dist/Components/Messages/MessageBell.js +76 -0
- package/dist/Components/Viewers/DataTable.js +7 -5
- package/dist/Components/Viewers/DataTableColumns.d.ts +2 -2
- package/dist/Components/Viewers/DataTableColumns.js +2 -1
- package/dist/Components/Viewers/DataTableParts.d.ts +3 -1
- package/dist/Components/Viewers/DataTableParts.js +2 -2
- package/dist/Components/Viewers/OwnerFiles.d.ts +57 -5
- package/dist/Components/Viewers/OwnerFiles.js +142 -31
- package/dist/Helpers/ApiModules.js +4 -0
- package/dist/Helpers/AuditEntries.d.ts +50 -0
- package/dist/Helpers/AuditEntries.js +96 -0
- package/dist/Helpers/ChatBackend.d.ts +8 -1
- package/dist/Helpers/ChatBackend.js +18 -0
- package/dist/Helpers/ChatHelpers.d.ts +2 -0
- package/dist/Helpers/ChatHelpers.js +4 -1
- package/dist/Helpers/CrudColumns.d.ts +44 -6
- package/dist/Helpers/CrudColumns.js +63 -13
- package/dist/Helpers/CrudHelpers.d.ts +36 -1
- package/dist/Helpers/CrudHelpers.js +61 -0
- package/dist/Helpers/CrudPickerPlan.d.ts +58 -0
- package/dist/Helpers/CrudPickerPlan.js +46 -0
- package/dist/Helpers/CrudRowForms.d.ts +18 -1
- package/dist/Helpers/CrudRowForms.js +35 -2
- package/dist/Helpers/DashboardHelpers.d.ts +115 -0
- package/dist/Helpers/DashboardHelpers.js +305 -0
- package/dist/Helpers/DomainCards.d.ts +140 -0
- package/dist/Helpers/DomainCards.js +370 -0
- package/dist/Helpers/FileAdapter.d.ts +82 -2
- package/dist/Helpers/FileAdapter.js +72 -1
- package/dist/Helpers/FormStore.d.ts +11 -1
- package/dist/Helpers/FormStore.js +66 -19
- package/dist/Helpers/InputConditions.d.ts +6 -0
- package/dist/Helpers/InputConditions.js +24 -0
- package/dist/Helpers/InputMemory.js +40 -30
- package/dist/Helpers/InputNarrowing.d.ts +38 -6
- package/dist/Helpers/InputNarrowing.js +102 -21
- package/dist/Helpers/MailClientHelpers.d.ts +96 -0
- package/dist/Helpers/MailClientHelpers.js +211 -0
- package/dist/Helpers/MessageBackend.d.ts +152 -0
- package/dist/Helpers/MessageBackend.js +329 -0
- package/dist/Helpers/MessageHelpers.d.ts +160 -0
- package/dist/Helpers/MessageHelpers.js +573 -0
- package/dist/Helpers/MessageUnread.d.ts +95 -0
- package/dist/Helpers/MessageUnread.js +245 -0
- package/dist/Helpers/NexusDriveAdapter.d.ts +17 -1
- package/dist/Helpers/NexusDriveAdapter.js +32 -3
- package/dist/Helpers/NumberHelpers.d.ts +61 -0
- package/dist/Helpers/NumberHelpers.js +124 -8
- package/dist/Helpers/PagedPicker.d.ts +42 -0
- package/dist/Helpers/PagedPicker.js +85 -0
- package/dist/Helpers/RowsStore.d.ts +24 -0
- package/dist/Helpers/RowsStore.js +79 -10
- package/dist/Helpers/TableHelpers.d.ts +15 -2
- package/dist/Helpers/TableHelpers.js +28 -1
- package/dist/Helpers/TableStore.d.ts +7 -3
- package/dist/Helpers/TableStore.js +9 -4
- package/dist/Helpers/ToolbarFit.d.ts +23 -0
- package/dist/Helpers/ToolbarFit.js +30 -0
- package/dist/Helpers/TreeStore.d.ts +75 -6
- package/dist/Helpers/TreeStore.js +182 -18
- package/dist/Interfaces/ApiInterfaces.d.ts +10 -1
- package/dist/Interfaces/ApiInterfaces.js +10 -1
- package/dist/Interfaces/ChatInterfaces.d.ts +22 -0
- package/dist/Interfaces/CrudInterfaces.d.ts +78 -5
- package/dist/Interfaces/DashboardInterfaces.d.ts +123 -0
- package/dist/Interfaces/DashboardInterfaces.js +1 -0
- package/dist/Interfaces/DomainInterfaces.d.ts +145 -0
- package/dist/Interfaces/DomainInterfaces.js +1 -0
- package/dist/Interfaces/FileInterfaces.d.ts +21 -0
- package/dist/Interfaces/FileInterfaces.js +2 -0
- package/dist/Interfaces/FormInterfaces.d.ts +78 -11
- package/dist/Interfaces/InputInterfaces.d.ts +12 -5
- package/dist/Interfaces/MailInterfaces.d.ts +192 -0
- package/dist/Interfaces/MailInterfaces.js +1 -0
- package/dist/Interfaces/TableInterfaces.d.ts +28 -2
- package/dist/Services/JoinSources.d.ts +47 -6
- package/dist/Services/JoinSources.js +68 -33
- package/dist/Services/MessageApi.d.ts +18 -0
- package/dist/Services/MessageApi.js +64 -0
- package/dist/Shared.Index.d.ts +12 -0
- package/dist/Shared.Index.js +12 -0
- package/package.json +7 -1
- package/src/Styles/Nexus.Button.css +29 -0
- package/src/Styles/Nexus.Chat.css +114 -22
- package/src/Styles/Nexus.Crud.css +119 -28
- package/src/Styles/Nexus.Dashboard.css +763 -0
- package/src/Styles/Nexus.Domain.css +384 -0
- package/src/Styles/Nexus.Editor.css +20 -0
- package/src/Styles/Nexus.Files.css +27 -0
- package/src/Styles/Nexus.Index.css +3 -0
- package/src/Styles/Nexus.Input.css +31 -0
- package/src/Styles/Nexus.Mail.css +1062 -0
- package/src/Styles/Nexus.Popup.css +58 -0
- package/src/Styles/Nexus.Table.css +1458 -1449
- package/src/Styles/Nexus.Theme.Picker.css +1 -0
- package/src/Styles/Nexus.Tree.css +10 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
@layer nexus.components {
|
|
2
|
+
/*
|
|
3
|
+
* A record's card (`DomainCard`, `DomainCardFrame`): its title line - the kind as a tag, the title, the code, the state
|
|
4
|
+
* - then its fields, figures, lines and link. A band of whatever holds it (a mail thread's head draws a line above it),
|
|
5
|
+
* never a bordered box of its own. Its placeholder is the same parts with a bone on each line, so the card holds its
|
|
6
|
+
* height when the record lands. A record named with no card (`DomainLine`) is its kind and its words on one line.
|
|
7
|
+
* Table.css loads after this sheet: a rule on a table tag or bone takes two classes.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* A band: as wide as what holds it, also where a grid or a column lines its items up at the start. */
|
|
11
|
+
.nx-domain-card {
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
gap: var(--nx-space-2);
|
|
15
|
+
align-self: stretch;
|
|
16
|
+
justify-self: stretch;
|
|
17
|
+
min-width: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* The head: the title takes the room; the marks, the state and the fold button sit at the end; the quiet line under.
|
|
22
|
+
* Its own width lays it out (the status beside the title, or under it when narrow), so it is the size container.
|
|
23
|
+
*/
|
|
24
|
+
.nx-domain-card__head {
|
|
25
|
+
container: nx-domain-card / inline-size;
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-wrap: wrap;
|
|
28
|
+
gap: var(--nx-space-1) var(--nx-space-2);
|
|
29
|
+
align-items: center;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* The title takes the room the status leaves. The width of the card, never the length of its words, decides whether
|
|
34
|
+
* the status sits beside it, so the placeholder and the card it stands for lay out alike at every width.
|
|
35
|
+
*/
|
|
36
|
+
.nx-domain-card__title {
|
|
37
|
+
flex: 1 1 0;
|
|
38
|
+
min-width: 0;
|
|
39
|
+
margin: 0;
|
|
40
|
+
font-size: var(--nx-text-md);
|
|
41
|
+
font-weight: 600;
|
|
42
|
+
line-height: 1.5;
|
|
43
|
+
overflow-wrap: anywhere;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@container nx-domain-card (max-width: 24rem) {
|
|
47
|
+
.nx-domain-card__title {
|
|
48
|
+
flex-basis: 100%;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.nx-table__tag.nx-domain-card__kind {
|
|
53
|
+
margin-inline-end: var(--nx-space-1);
|
|
54
|
+
vertical-align: 1px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* The quiet line under the title, one line at any width: the code, then the subtitle, cut with "..." when the link at
|
|
59
|
+
* its end needs the room (their whole words on hover), so the card is as tall on a phone as its placeholder.
|
|
60
|
+
*/
|
|
61
|
+
.nx-domain-card__subtitle {
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-basis: 100%;
|
|
64
|
+
gap: var(--nx-space-3);
|
|
65
|
+
align-items: baseline;
|
|
66
|
+
min-width: 0;
|
|
67
|
+
color: var(--nx-text-muted);
|
|
68
|
+
font-size: var(--nx-text-sm);
|
|
69
|
+
line-height: 1.5;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.nx-domain-card__subtitle > :first-child {
|
|
73
|
+
min-width: 0;
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
text-overflow: ellipsis;
|
|
76
|
+
white-space: nowrap;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.nx-domain-card__code {
|
|
80
|
+
font-variant-numeric: tabular-nums;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.nx-domain-card__status {
|
|
84
|
+
display: inline-flex;
|
|
85
|
+
flex-shrink: 0;
|
|
86
|
+
gap: var(--nx-space-2);
|
|
87
|
+
align-items: center;
|
|
88
|
+
margin-inline-start: auto;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.nx-table__tag.nx-domain-card__state {
|
|
92
|
+
flex-shrink: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* The fold button keeps the title line as tall as its text: a small control laid over the line's own height. */
|
|
96
|
+
.nx-btn.nx-domain-card__toggle {
|
|
97
|
+
margin-block: calc((var(--nx-text-md) * 1.5 - var(--nx-control-sm)) / 2);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* A mark beside the state: read again just now, being read, not up to date. */
|
|
101
|
+
.nx-domain-card__meta {
|
|
102
|
+
display: inline-flex;
|
|
103
|
+
gap: 4px;
|
|
104
|
+
align-items: center;
|
|
105
|
+
color: var(--nx-text-muted);
|
|
106
|
+
font-size: var(--nx-text-xs);
|
|
107
|
+
font-variant-numeric: tabular-nums;
|
|
108
|
+
white-space: nowrap;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.nx-domain-card__meta .nx-icon {
|
|
112
|
+
width: 14px;
|
|
113
|
+
height: 14px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.nx-domain-card__meta--failed {
|
|
117
|
+
color: var(--nx-danger);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.nx-domain-card__retry {
|
|
121
|
+
padding: 0;
|
|
122
|
+
border: 0;
|
|
123
|
+
border-radius: var(--nx-radius-sm);
|
|
124
|
+
background: none;
|
|
125
|
+
color: inherit;
|
|
126
|
+
font: inherit;
|
|
127
|
+
font-weight: 600;
|
|
128
|
+
text-decoration: underline;
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.nx-domain-card__retry:focus-visible {
|
|
133
|
+
outline: none;
|
|
134
|
+
box-shadow: var(--nx-focus-ring);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.nx-domain-card__body {
|
|
138
|
+
display: flex;
|
|
139
|
+
flex-direction: column;
|
|
140
|
+
gap: var(--nx-space-2);
|
|
141
|
+
min-width: 0;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Folded: the class's display would otherwise beat the browser's own [hidden]. */
|
|
145
|
+
/*
|
|
146
|
+
* The details - fields, lines, what a kind adds - fold under the figures, which always show: folded, a leave's card is
|
|
147
|
+
* its title, its code and its balance. Their display would otherwise beat the browser's own [hidden].
|
|
148
|
+
*/
|
|
149
|
+
.nx-domain-card__details {
|
|
150
|
+
display: flex;
|
|
151
|
+
flex-direction: column;
|
|
152
|
+
gap: var(--nx-space-2);
|
|
153
|
+
min-width: 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.nx-domain-card__body[hidden],
|
|
157
|
+
.nx-domain-card__details[hidden] {
|
|
158
|
+
display: none;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* Fields: a label over its value, as many to a row as fit. */
|
|
162
|
+
.nx-domain-card__fields {
|
|
163
|
+
display: grid;
|
|
164
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 9rem), 1fr));
|
|
165
|
+
gap: var(--nx-space-2) var(--nx-space-4);
|
|
166
|
+
margin: 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.nx-domain-card__field {
|
|
170
|
+
min-width: 0;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.nx-domain-card__field > dt,
|
|
174
|
+
.nx-domain-card__figure > dt {
|
|
175
|
+
color: var(--nx-text-muted);
|
|
176
|
+
font-size: var(--nx-text-xs);
|
|
177
|
+
line-height: 1.5;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.nx-domain-card__field > dd {
|
|
181
|
+
margin: 0;
|
|
182
|
+
font-size: var(--nx-text-sm);
|
|
183
|
+
line-height: 1.5;
|
|
184
|
+
overflow-wrap: anywhere;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.nx-domain-card__field[data-empty] > dd,
|
|
188
|
+
.nx-domain-card__note {
|
|
189
|
+
color: var(--nx-text-muted);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/*
|
|
193
|
+
* Figures: each a label over a large value, marked at its start by its tone (a second cue beside the words), on one
|
|
194
|
+
* track width so a row of them does not move as their values arrive; two to a row on a phone.
|
|
195
|
+
*/
|
|
196
|
+
.nx-domain-card__figures {
|
|
197
|
+
display: grid;
|
|
198
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 7.5rem), 1fr));
|
|
199
|
+
gap: var(--nx-space-2) var(--nx-space-4);
|
|
200
|
+
margin: 0;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.nx-domain-card__figure {
|
|
204
|
+
--nx-figure-tone: var(--nx-border-strong);
|
|
205
|
+
min-width: 0;
|
|
206
|
+
padding-inline-start: var(--nx-space-2);
|
|
207
|
+
border-inline-start: 3px solid var(--nx-figure-tone);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.nx-domain-card__figure[data-tone="primary"] {
|
|
211
|
+
--nx-figure-tone: var(--nx-primary);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.nx-domain-card__figure[data-tone="info"] {
|
|
215
|
+
--nx-figure-tone: var(--nx-info);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.nx-domain-card__figure[data-tone="success"] {
|
|
219
|
+
--nx-figure-tone: var(--nx-success);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.nx-domain-card__figure[data-tone="warning"] {
|
|
223
|
+
--nx-figure-tone: var(--nx-warning);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.nx-domain-card__figure[data-tone="danger"] {
|
|
227
|
+
--nx-figure-tone: var(--nx-danger);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.nx-domain-card__figure > dd {
|
|
231
|
+
margin: 0;
|
|
232
|
+
white-space: nowrap;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.nx-domain-card__value {
|
|
236
|
+
font-size: var(--nx-text-xl);
|
|
237
|
+
font-weight: 600;
|
|
238
|
+
line-height: 1.3;
|
|
239
|
+
font-variant-numeric: tabular-nums;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.nx-domain-card__unit {
|
|
243
|
+
color: var(--nx-text-muted);
|
|
244
|
+
font-size: var(--nx-text-sm);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/*
|
|
248
|
+
* A hint keeps two lines, in the placeholder and the card alike, so a figure keeps one size whether its words take one
|
|
249
|
+
* line or wrap to two ("1.5 paid, 0.5 unpaid (1 day's pay)" in a narrow column).
|
|
250
|
+
*/
|
|
251
|
+
.nx-domain-card__figure > dd.nx-domain-card__hint {
|
|
252
|
+
min-height: 3em;
|
|
253
|
+
color: var(--nx-text-muted);
|
|
254
|
+
font-size: var(--nx-text-xs);
|
|
255
|
+
line-height: 1.5;
|
|
256
|
+
white-space: normal;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* Lines: a short table with no frame, lines between rows, numbers at the end. */
|
|
260
|
+
.nx-domain-card__lines {
|
|
261
|
+
width: 100%;
|
|
262
|
+
border-collapse: collapse;
|
|
263
|
+
font-size: var(--nx-text-sm);
|
|
264
|
+
font-variant-numeric: tabular-nums;
|
|
265
|
+
line-height: 1.5;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* Every cell one line: the values are short, and the first column gives way for the rest. */
|
|
269
|
+
.nx-domain-card__lines th {
|
|
270
|
+
padding: 2px var(--nx-space-2);
|
|
271
|
+
white-space: nowrap;
|
|
272
|
+
border-bottom: 1px solid var(--nx-border);
|
|
273
|
+
color: var(--nx-text-muted);
|
|
274
|
+
font-size: var(--nx-text-xs);
|
|
275
|
+
font-weight: 500;
|
|
276
|
+
text-align: start;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.nx-domain-card__lines td {
|
|
280
|
+
padding: 3px var(--nx-space-2);
|
|
281
|
+
border-bottom: 1px solid color-mix(in oklab, var(--nx-border) 60%, transparent);
|
|
282
|
+
white-space: nowrap;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.nx-domain-card__lines :is(th, td):first-child {
|
|
286
|
+
padding-inline-start: 0;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.nx-domain-card__lines :is(th, td):last-child {
|
|
290
|
+
padding-inline-end: 0;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.nx-domain-card__lines :is(th, td)[data-align="end"] {
|
|
294
|
+
text-align: end;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/* The first column takes the room the others leave and keeps to one line, so a row is one line tall at any width. */
|
|
298
|
+
.nx-domain-card__lines td:first-child {
|
|
299
|
+
width: 100%;
|
|
300
|
+
max-width: 0;
|
|
301
|
+
overflow: hidden;
|
|
302
|
+
text-overflow: ellipsis;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.nx-domain-card__more {
|
|
306
|
+
margin: 0;
|
|
307
|
+
color: var(--nx-text-muted);
|
|
308
|
+
font-size: var(--nx-text-xs);
|
|
309
|
+
line-height: 1.5;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.nx-domain-card__link {
|
|
313
|
+
display: inline-flex;
|
|
314
|
+
gap: 4px;
|
|
315
|
+
align-items: center;
|
|
316
|
+
margin-inline-start: auto;
|
|
317
|
+
white-space: nowrap;
|
|
318
|
+
border-radius: var(--nx-radius-sm);
|
|
319
|
+
color: var(--nx-primary);
|
|
320
|
+
font-size: var(--nx-text-sm);
|
|
321
|
+
font-weight: 500;
|
|
322
|
+
line-height: 1.5;
|
|
323
|
+
text-decoration: none;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
a.nx-domain-card__link:hover {
|
|
327
|
+
text-decoration: underline;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.nx-domain-card__link:focus-visible {
|
|
331
|
+
outline: none;
|
|
332
|
+
box-shadow: var(--nx-focus-ring);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.nx-domain-card__link .nx-icon {
|
|
336
|
+
width: 14px;
|
|
337
|
+
height: 14px;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/* A record the reader cannot open: one quiet sentence under its words, the lock as its second cue. */
|
|
341
|
+
.nx-domain-card__notice {
|
|
342
|
+
display: flex;
|
|
343
|
+
gap: 6px;
|
|
344
|
+
align-items: center;
|
|
345
|
+
margin: 0;
|
|
346
|
+
color: var(--nx-text-muted);
|
|
347
|
+
font-size: var(--nx-text-sm);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.nx-domain-card__notice .nx-icon {
|
|
351
|
+
flex-shrink: 0;
|
|
352
|
+
width: 14px;
|
|
353
|
+
height: 14px;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/* The placeholder: a bone on the line of the text it stands for, and a tag's size for the state. */
|
|
357
|
+
.nx-table__bone.nx-domain-card__bone {
|
|
358
|
+
display: inline-block;
|
|
359
|
+
max-width: 100%;
|
|
360
|
+
height: 0.9em;
|
|
361
|
+
vertical-align: -0.1em;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.nx-table__tag.nx-domain-card__bone-tag {
|
|
365
|
+
width: 6.5rem;
|
|
366
|
+
height: calc(var(--nx-text-xs) * 1.6 + 2px);
|
|
367
|
+
background: color-mix(in oklab, var(--nx-text) 9%, transparent);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* A record with no card: its kind as a tag, then its words. */
|
|
371
|
+
.nx-domain-line {
|
|
372
|
+
display: flex;
|
|
373
|
+
flex-wrap: wrap;
|
|
374
|
+
gap: var(--nx-space-1) var(--nx-space-2);
|
|
375
|
+
align-items: center;
|
|
376
|
+
margin: 0;
|
|
377
|
+
font-size: var(--nx-text-sm);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.nx-domain-line__label {
|
|
381
|
+
min-width: 0;
|
|
382
|
+
overflow-wrap: anywhere;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
@@ -49,6 +49,26 @@
|
|
|
49
49
|
margin-left: auto;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/*
|
|
53
|
+
* One row (`toolbarOverflow="menu"`): at any width the buttons take the room the views and the end leave them, never a
|
|
54
|
+
* row of their own, and those that do not fit are in the "More formatting" menu at their end. Two classes, so the
|
|
55
|
+
* narrow rule below that gives the buttons a row of their own does not reach them.
|
|
56
|
+
*/
|
|
57
|
+
.nx-editor__bar--one-row {
|
|
58
|
+
flex-wrap: nowrap;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.nx-editor__bar--one-row > .nx-editor__tools {
|
|
62
|
+
flex: 1 1 0;
|
|
63
|
+
flex-wrap: nowrap;
|
|
64
|
+
order: 0;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.nx-editor__bar--one-row > .nx-editor__end {
|
|
69
|
+
order: 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
52
72
|
.nx-editor__tool {
|
|
53
73
|
display: grid;
|
|
54
74
|
place-items: center;
|
|
@@ -280,6 +280,33 @@
|
|
|
280
280
|
box-shadow: var(--nx-shadow-sm);
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
+
/*
|
|
284
|
+
* A picture whose removal waits for a review: still shown, faded, with the warning tag as a band across its foot,
|
|
285
|
+
* wrapping in a narrow tile. The tag says why in words, so the fade is never the only cue.
|
|
286
|
+
*/
|
|
287
|
+
.nx-files__tile[data-pending] .nx-files__thumb img {
|
|
288
|
+
opacity: 0.55;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.nx-table__tag.nx-files__pending {
|
|
292
|
+
position: absolute;
|
|
293
|
+
inset-inline: 0;
|
|
294
|
+
bottom: 0;
|
|
295
|
+
justify-content: center;
|
|
296
|
+
max-width: none;
|
|
297
|
+
padding: 3px var(--nx-space-2);
|
|
298
|
+
border-radius: 0;
|
|
299
|
+
line-height: 1.35;
|
|
300
|
+
text-align: center;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/* Its tag in a document's row and beside the main picture: under the words, as wide as it says. */
|
|
304
|
+
:is(.nx-files__row-text, .nx-files__about) > .nx-table__tag {
|
|
305
|
+
justify-self: start;
|
|
306
|
+
width: fit-content;
|
|
307
|
+
line-height: 1.45;
|
|
308
|
+
}
|
|
309
|
+
|
|
283
310
|
/*
|
|
284
311
|
* The picture's buttons, inside it and centred, on a popover's panel. Shown on hover and on a keyboard's focus in the
|
|
285
312
|
* picture; where a finger may press (a touch screen, a laptop's too) always, so no button waits behind a hover.
|
|
@@ -18,12 +18,15 @@
|
|
|
18
18
|
@import "./Nexus.DateTime.css";
|
|
19
19
|
@import "./Nexus.Choice.css";
|
|
20
20
|
@import "./Nexus.Crud.css";
|
|
21
|
+
@import "./Nexus.Dashboard.css";
|
|
22
|
+
@import "./Nexus.Domain.css";
|
|
21
23
|
@import "./Nexus.Dropdown.css";
|
|
22
24
|
@import "./Nexus.Input.css";
|
|
23
25
|
@import "./Nexus.Editor.css";
|
|
24
26
|
@import "./Nexus.Excel.css";
|
|
25
27
|
@import "./Nexus.Files.css";
|
|
26
28
|
@import "./Nexus.Form.css";
|
|
29
|
+
@import "./Nexus.Mail.css";
|
|
27
30
|
@import "./Nexus.Markdown.css";
|
|
28
31
|
@import "./Nexus.Menu.css";
|
|
29
32
|
@import "./Nexus.Popup.css";
|
|
@@ -152,7 +152,9 @@
|
|
|
152
152
|
cursor: default;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
/* It fills the box, so the box's `text-align` places it: at the end of a table's number column, as a typed figure is. */
|
|
155
156
|
.nx-field__output-text {
|
|
157
|
+
flex: 1 1 auto;
|
|
156
158
|
min-width: 0;
|
|
157
159
|
overflow: hidden;
|
|
158
160
|
text-overflow: ellipsis;
|
|
@@ -456,6 +458,35 @@
|
|
|
456
458
|
font-weight: 500;
|
|
457
459
|
}
|
|
458
460
|
|
|
461
|
+
/*
|
|
462
|
+
* A worked-out input that can be typed in (`compute.solve`): its hint and the line that says what the typed figure set
|
|
463
|
+
* share one place, as tall as the taller of the two and at least a line, so nothing below moves as the line comes and goes.
|
|
464
|
+
*/
|
|
465
|
+
.nx-field__notes {
|
|
466
|
+
display: grid;
|
|
467
|
+
min-width: 0;
|
|
468
|
+
min-height: 1.35em;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.nx-field__notes > * {
|
|
472
|
+
grid-area: 1 / 1;
|
|
473
|
+
min-width: 0;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.nx-field__note--off {
|
|
477
|
+
visibility: hidden;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.nx-field__note--refused {
|
|
481
|
+
color: var(--nx-danger);
|
|
482
|
+
font-weight: 500;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.nx-field__note .nx-icon {
|
|
486
|
+
margin-inline-end: 5px;
|
|
487
|
+
vertical-align: -0.25em;
|
|
488
|
+
}
|
|
489
|
+
|
|
459
490
|
.nx-field__aside {
|
|
460
491
|
margin-left: auto;
|
|
461
492
|
color: var(--nx-text-muted);
|