contain-css-svelte 1.1.4 → 1.1.6
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/controls/ButtonLink.svelte +5 -1
- package/dist/controls/Input.svelte.d.ts +1 -1
- package/dist/controls/Option.svelte +3 -3
- package/dist/controls/Select.svelte +4 -3
- package/dist/controls/Slider.svelte +5 -1
- package/dist/cssprops.js +3 -0
- package/dist/dropdowns/DropdownMenu.svelte +40 -31
- package/dist/layout/Bar.svelte +4 -2
- package/dist/layout/Container.svelte.d.ts +6 -4
- package/dist/layout/DataListItem.svelte +1 -1
- package/dist/layout/FormProvider.svelte +3 -1
- package/dist/layout/GridLayout.svelte +1 -1
- package/dist/layout/Inline.svelte +5 -1
- package/dist/layout/Page.svelte +29 -1
- package/dist/layout/ResponsiveText.svelte +1 -1
- package/dist/layout/ResponsiveText.svelte.d.ts +2 -0
- package/dist/layout/Sidebar.svelte +22 -7
- package/dist/layout/SplitPane.svelte +3 -3
- package/dist/layout/Stack.svelte +5 -1
- package/dist/layout/TabBar.svelte +2 -3
- package/dist/layout/Table.svelte +21 -11
- package/dist/layout/Tile.svelte +1 -0
- package/dist/overlays/Dialog.svelte +2 -2
- package/dist/overlays/Dialog.svelte.d.ts +2 -2
- package/dist/overlays/Tooltip.svelte +65 -27
- package/dist/overlays/Tooltip.svelte.d.ts +1 -0
- package/dist/review/loadReviewAppPage.d.ts +1 -1
- package/dist/review/scenarios/IncredibleAppShell.svelte +44 -37
- package/dist/review/scenarios/LaunchStudio.svelte +108 -83
- package/dist/review/scenarios/LayoutWorkbench.svelte +49 -34
- package/dist/review/scenarios/TableWorkbench.svelte +82 -74
- package/dist/review/scenarios/VisualSystemBoard.svelte +387 -0
- package/dist/review/scenarios/VisualSystemBoard.svelte.d.ts +3 -0
- package/dist/review/scenarios.d.ts +8 -4
- package/dist/review/scenarios.js +9 -4
- package/dist/types.d.ts +3 -0
- package/dist/vars/colors.css +1 -1
- package/dist/vars/defaults.css +8 -1
- package/dist/vars/layout.css +7 -0
- package/dist/vars/themes/bootstrap.css +1 -0
- package/package.json +1 -1
|
@@ -11,115 +11,115 @@ import Table from "../../layout/Table.svelte";
|
|
|
11
11
|
import TextLayout from "../../typography/TextLayout.svelte";
|
|
12
12
|
const rows = [
|
|
13
13
|
{
|
|
14
|
-
id: "
|
|
15
|
-
task: "
|
|
16
|
-
owner: "
|
|
17
|
-
team: "
|
|
14
|
+
id: "BOX-1042",
|
|
15
|
+
task: "Define box as the square diplomat of containment",
|
|
16
|
+
owner: "BX",
|
|
17
|
+
team: "Boxes",
|
|
18
18
|
priority: "P0",
|
|
19
19
|
status: "Blocked",
|
|
20
20
|
due: "Today",
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
id: "
|
|
24
|
-
task: "
|
|
25
|
-
owner: "
|
|
26
|
-
team: "
|
|
23
|
+
id: "BIN-221",
|
|
24
|
+
task: "Compare open bins with lids, labels, and mild ambition",
|
|
25
|
+
owner: "BN",
|
|
26
|
+
team: "Bins",
|
|
27
27
|
priority: "P1",
|
|
28
28
|
status: "In Review",
|
|
29
29
|
due: "Tomorrow",
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
id: "
|
|
33
|
-
task: "
|
|
34
|
-
owner: "
|
|
35
|
-
team: "
|
|
32
|
+
id: "BBL-878",
|
|
33
|
+
task: "Separate barrels from casks without starting a cellar debate",
|
|
34
|
+
owner: "BR",
|
|
35
|
+
team: "Barrels",
|
|
36
36
|
priority: "P1",
|
|
37
37
|
status: "In Progress",
|
|
38
38
|
due: "Tue",
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
|
-
id: "
|
|
42
|
-
task: "
|
|
43
|
-
owner: "
|
|
44
|
-
team: "
|
|
41
|
+
id: "CRT-1048",
|
|
42
|
+
task: "Cross-reference crate with shipping, fruit, and stage magic",
|
|
43
|
+
owner: "CR",
|
|
44
|
+
team: "Crates",
|
|
45
45
|
priority: "P2",
|
|
46
46
|
status: "Ready",
|
|
47
47
|
due: "Tue",
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
|
-
id: "
|
|
51
|
-
task: "Audit
|
|
52
|
-
owner: "
|
|
53
|
-
team: "
|
|
50
|
+
id: "CAN-55",
|
|
51
|
+
task: "Audit canister, tin, and can for pantry precision",
|
|
52
|
+
owner: "CN",
|
|
53
|
+
team: "Cans",
|
|
54
54
|
priority: "P2",
|
|
55
55
|
status: "In Progress",
|
|
56
56
|
due: "Wed",
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
|
-
id: "
|
|
60
|
-
task: "Resolve
|
|
61
|
-
owner: "
|
|
62
|
-
team: "
|
|
59
|
+
id: "TUB-881",
|
|
60
|
+
task: "Resolve whether a tub is a bin taking a bath",
|
|
61
|
+
owner: "TB",
|
|
62
|
+
team: "Bins",
|
|
63
63
|
priority: "P0",
|
|
64
64
|
status: "Blocked",
|
|
65
65
|
due: "Wed",
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
|
-
id: "
|
|
69
|
-
task: "Update
|
|
70
|
-
owner: "
|
|
71
|
-
team: "
|
|
68
|
+
id: "JAR-399",
|
|
69
|
+
task: "Update jar notes for pickles, buttons, and tiny CSS tokens",
|
|
70
|
+
owner: "JR",
|
|
71
|
+
team: "Jars",
|
|
72
72
|
priority: "P3",
|
|
73
73
|
status: "Done",
|
|
74
74
|
due: "Thu",
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
|
-
id: "
|
|
78
|
-
task: "Instrument
|
|
79
|
-
owner: "
|
|
80
|
-
team: "
|
|
77
|
+
id: "DRM-1054",
|
|
78
|
+
task: "Instrument drum definitions for industrial rhythm",
|
|
79
|
+
owner: "DM",
|
|
80
|
+
team: "Barrels",
|
|
81
81
|
priority: "P1",
|
|
82
82
|
status: "In Review",
|
|
83
83
|
due: "Thu",
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
|
-
id: "
|
|
87
|
-
task: "Finalize
|
|
88
|
-
owner: "
|
|
89
|
-
team: "
|
|
86
|
+
id: "TTE-228",
|
|
87
|
+
task: "Finalize tote entry for handles, errands, and library books",
|
|
88
|
+
owner: "TT",
|
|
89
|
+
team: "Totes",
|
|
90
90
|
priority: "P2",
|
|
91
91
|
status: "Ready",
|
|
92
92
|
due: "Fri",
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
id: "
|
|
96
|
-
task: "Review
|
|
97
|
-
owner: "
|
|
98
|
-
team: "
|
|
95
|
+
id: "VLT-61",
|
|
96
|
+
task: "Review vault as the dramatic cousin of a lockbox",
|
|
97
|
+
owner: "VT",
|
|
98
|
+
team: "Boxes",
|
|
99
99
|
priority: "P3",
|
|
100
100
|
status: "In Progress",
|
|
101
101
|
due: "Fri",
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
|
-
id: "
|
|
105
|
-
task: "Reconcile
|
|
106
|
-
owner: "
|
|
107
|
-
team: "
|
|
104
|
+
id: "AMP-889",
|
|
105
|
+
task: "Reconcile amphora with vase, urn, and ancient snack jar",
|
|
106
|
+
owner: "AM",
|
|
107
|
+
team: "Jars",
|
|
108
108
|
priority: "P2",
|
|
109
109
|
status: "In Progress",
|
|
110
110
|
due: "Next Mon",
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
|
-
id: "
|
|
114
|
-
task: "Publish
|
|
115
|
-
owner: "
|
|
116
|
-
team: "
|
|
113
|
+
id: "PKT-405",
|
|
114
|
+
task: "Publish packet notes for envelopes, sachets, and tiny payloads",
|
|
115
|
+
owner: "PK",
|
|
116
|
+
team: "Pouches",
|
|
117
117
|
priority: "P2",
|
|
118
118
|
status: "Ready",
|
|
119
119
|
due: "Next Mon",
|
|
120
120
|
},
|
|
121
121
|
];
|
|
122
|
-
let query = $state("
|
|
122
|
+
let query = $state("");
|
|
123
123
|
let team = $state("all");
|
|
124
124
|
let showClosed = $state(false);
|
|
125
125
|
let bulkActionsOpen = $state(false);
|
|
@@ -190,7 +190,7 @@ function getCssLengthValue(node, property) {
|
|
|
190
190
|
{#snippet header()}
|
|
191
191
|
<Bar primary>
|
|
192
192
|
<div>
|
|
193
|
-
<h1>
|
|
193
|
+
<h1>Container Reference Table</h1>
|
|
194
194
|
</div>
|
|
195
195
|
|
|
196
196
|
<div>
|
|
@@ -199,7 +199,7 @@ function getCssLengthValue(node, property) {
|
|
|
199
199
|
aria-expanded={bulkActionsOpen}
|
|
200
200
|
onclick={toggleBulkActions}
|
|
201
201
|
>
|
|
202
|
-
{bulkActionsOpen ? "Hide Actions" : "
|
|
202
|
+
{bulkActionsOpen ? "Hide Actions" : "Reference Actions"}
|
|
203
203
|
</Button>
|
|
204
204
|
<Button secondary>Refresh</Button>
|
|
205
205
|
</div>
|
|
@@ -207,36 +207,44 @@ function getCssLengthValue(node, property) {
|
|
|
207
207
|
{/snippet}
|
|
208
208
|
|
|
209
209
|
<TextLayout>
|
|
210
|
-
<h1>
|
|
210
|
+
<h1>Thesaurus of things that contain other things</h1>
|
|
211
211
|
<p>
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
A container may be humble or ceremonial, disposable or heirloom, open to
|
|
213
|
+
the air or sealed against weather. This reference table catalogs boxes,
|
|
214
|
+
bins, barrels, jars, pouches, crates, drums, and every other noun that
|
|
215
|
+
wants to keep a smaller noun from rolling away.
|
|
214
216
|
</p>
|
|
215
217
|
|
|
216
218
|
<Form layout="above" fullWidth globalInputStyles>
|
|
217
219
|
<Fieldset>
|
|
218
220
|
{#snippet legend()}
|
|
219
|
-
Filters
|
|
221
|
+
Reference Filters
|
|
220
222
|
{/snippet}
|
|
221
223
|
|
|
222
224
|
<FormItem>
|
|
223
225
|
{#snippet label()}
|
|
224
|
-
Search
|
|
226
|
+
Search Terms
|
|
225
227
|
{/snippet}
|
|
226
|
-
<Input
|
|
228
|
+
<Input
|
|
229
|
+
bind:value={query}
|
|
230
|
+
placeholder="Search by container, family, or curator"
|
|
231
|
+
/>
|
|
227
232
|
</FormItem>
|
|
228
233
|
|
|
229
234
|
<FormItem>
|
|
230
235
|
{#snippet label()}
|
|
231
|
-
|
|
236
|
+
Family
|
|
232
237
|
{/snippet}
|
|
233
|
-
<Select bind:value={team}>
|
|
234
|
-
<option value="all">All
|
|
235
|
-
<option value="
|
|
236
|
-
<option value="
|
|
237
|
-
<option value="
|
|
238
|
-
<option value="
|
|
239
|
-
<option value="
|
|
238
|
+
<Select bind:value={team} data-audit-action="open-team-select">
|
|
239
|
+
<option value="all">All families</option>
|
|
240
|
+
<option value="Boxes">Boxes</option>
|
|
241
|
+
<option value="Bins">Bins</option>
|
|
242
|
+
<option value="Barrels">Barrels</option>
|
|
243
|
+
<option value="Crates">Crates</option>
|
|
244
|
+
<option value="Cans">Cans</option>
|
|
245
|
+
<option value="Jars">Jars</option>
|
|
246
|
+
<option value="Totes">Totes</option>
|
|
247
|
+
<option value="Pouches">Pouches</option>
|
|
240
248
|
</Select>
|
|
241
249
|
</FormItem>
|
|
242
250
|
|
|
@@ -244,7 +252,7 @@ function getCssLengthValue(node, property) {
|
|
|
244
252
|
{#snippet label()}
|
|
245
253
|
Visibility
|
|
246
254
|
{/snippet}
|
|
247
|
-
<Checkbox bind:checked={showClosed}>Include
|
|
255
|
+
<Checkbox bind:checked={showClosed}>Include archived definitions</Checkbox>
|
|
248
256
|
</FormItem>
|
|
249
257
|
</Fieldset>
|
|
250
258
|
</Form>
|
|
@@ -252,11 +260,11 @@ function getCssLengthValue(node, property) {
|
|
|
252
260
|
{#if bulkActionsOpen}
|
|
253
261
|
<div data-audit-target="bulk-actions-open">
|
|
254
262
|
<Bar secondary>
|
|
255
|
-
<div>{filteredRows.length} selected for
|
|
263
|
+
<div>{filteredRows.length} selected for lexical containment review</div>
|
|
256
264
|
<div>
|
|
257
|
-
<Button success>Assign
|
|
258
|
-
<Button warning>
|
|
259
|
-
<Button danger>
|
|
265
|
+
<Button success>Assign Curator</Button>
|
|
266
|
+
<Button warning>Shelve</Button>
|
|
267
|
+
<Button danger>Dispute Term</Button>
|
|
260
268
|
</div>
|
|
261
269
|
</Bar>
|
|
262
270
|
</div>
|
|
@@ -278,7 +286,7 @@ function getCssLengthValue(node, property) {
|
|
|
278
286
|
>
|
|
279
287
|
Scroll Preview
|
|
280
288
|
</Button>
|
|
281
|
-
<Button info>Export
|
|
289
|
+
<Button info>Export Glossary</Button>
|
|
282
290
|
</div>
|
|
283
291
|
</Bar>
|
|
284
292
|
|
|
@@ -287,9 +295,9 @@ function getCssLengthValue(node, property) {
|
|
|
287
295
|
{#snippet thead()}
|
|
288
296
|
<thead>
|
|
289
297
|
<tr>
|
|
290
|
-
<th>
|
|
291
|
-
<th>
|
|
292
|
-
<th>
|
|
298
|
+
<th>Entry</th>
|
|
299
|
+
<th>Curator</th>
|
|
300
|
+
<th>Family</th>
|
|
293
301
|
<th>Priority</th>
|
|
294
302
|
<th>Status</th>
|
|
295
303
|
<th>Due</th>
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
<script lang="ts">import Card from "../../Card.svelte";
|
|
2
|
+
import Button from "../../controls/Button.svelte";
|
|
3
|
+
import Checkbox from "../../controls/Checkbox.svelte";
|
|
4
|
+
import Input from "../../controls/Input.svelte";
|
|
5
|
+
import RadioButton from "../../controls/RadioButton.svelte";
|
|
6
|
+
import Select from "../../controls/Select.svelte";
|
|
7
|
+
import Slider from "../../controls/Slider.svelte";
|
|
8
|
+
import Toggle from "../../controls/Toggle.svelte";
|
|
9
|
+
import DropdownMenu from "../../dropdowns/DropdownMenu.svelte";
|
|
10
|
+
import Bar from "../../layout/Bar.svelte";
|
|
11
|
+
import Container from "../../layout/Container.svelte";
|
|
12
|
+
import DataList from "../../layout/DataList.svelte";
|
|
13
|
+
import DataListItem from "../../layout/DataListItem.svelte";
|
|
14
|
+
import Fieldset from "../../layout/Fieldset.svelte";
|
|
15
|
+
import Form from "../../layout/Form.svelte";
|
|
16
|
+
import FormItem from "../../layout/FormItem.svelte";
|
|
17
|
+
import GridLayout from "../../layout/GridLayout.svelte";
|
|
18
|
+
import Inline from "../../layout/Inline.svelte";
|
|
19
|
+
import Page from "../../layout/Page.svelte";
|
|
20
|
+
import Stack from "../../layout/Stack.svelte";
|
|
21
|
+
import Table from "../../layout/Table.svelte";
|
|
22
|
+
import Progress from "../../misc/Progress.svelte";
|
|
23
|
+
import Tag from "../../misc/Tag.svelte";
|
|
24
|
+
import Dialog from "../../overlays/Dialog.svelte";
|
|
25
|
+
import TextLayout from "../../typography/TextLayout.svelte";
|
|
26
|
+
const members = [
|
|
27
|
+
{
|
|
28
|
+
name: "Avery Crate",
|
|
29
|
+
role: "Box model curator",
|
|
30
|
+
status: "Approved",
|
|
31
|
+
intent: "success",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "Mina Can",
|
|
35
|
+
role: "Canister operations",
|
|
36
|
+
status: "Reviewing",
|
|
37
|
+
intent: "warning",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "Jon Barrel",
|
|
41
|
+
role: "Cargo product",
|
|
42
|
+
status: "Queued",
|
|
43
|
+
intent: "info",
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
const rhythm = [
|
|
47
|
+
{ label: "Crate contrast", value: 84 },
|
|
48
|
+
{ label: "Seal separation", value: 68 },
|
|
49
|
+
{ label: "Manifest density", value: 72 },
|
|
50
|
+
{ label: "Cargo hierarchy", value: 91 },
|
|
51
|
+
];
|
|
52
|
+
const rows = [
|
|
53
|
+
[
|
|
54
|
+
"Lids",
|
|
55
|
+
"Primary, secondary, and emergency closures for decisive sealing",
|
|
56
|
+
"Sealed",
|
|
57
|
+
],
|
|
58
|
+
[
|
|
59
|
+
"Walls",
|
|
60
|
+
"Panel seams, bin edges, manifest rows, and dividers that hold the line",
|
|
61
|
+
"Inspect",
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
"Manifests",
|
|
65
|
+
"Search fields, selectors, toggles, and sliders for cargo edits",
|
|
66
|
+
"Sealed",
|
|
67
|
+
],
|
|
68
|
+
[
|
|
69
|
+
"Stacks",
|
|
70
|
+
"Bars, cards, lists, inline controls, and ledgers stacked like tidy bins",
|
|
71
|
+
"Sealed",
|
|
72
|
+
],
|
|
73
|
+
];
|
|
74
|
+
let plan = $state("growth");
|
|
75
|
+
let density = $state("balanced");
|
|
76
|
+
let includeArchived = $state(false);
|
|
77
|
+
let notifications = $state(true);
|
|
78
|
+
let confidence = $state(72);
|
|
79
|
+
let owner = $state("design");
|
|
80
|
+
let search = $state("crate polish");
|
|
81
|
+
let detailOpen = $state(false);
|
|
82
|
+
let dialogOpen = $state(false);
|
|
83
|
+
let confidenceLabel = $derived(confidence > 80 ? "High" : confidence > 55 ? "Medium" : "Low");
|
|
84
|
+
function openDetail() {
|
|
85
|
+
detailOpen = true;
|
|
86
|
+
}
|
|
87
|
+
function openDialog() {
|
|
88
|
+
dialogOpen = true;
|
|
89
|
+
}
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<Page data-audit-target="page">
|
|
93
|
+
{#snippet header()}
|
|
94
|
+
<Bar primary height="auto">
|
|
95
|
+
<Stack gap="0">
|
|
96
|
+
<small>Workspace</small>
|
|
97
|
+
<h1>Contain Depot Board</h1>
|
|
98
|
+
</Stack>
|
|
99
|
+
|
|
100
|
+
<Inline wrap="wrap">
|
|
101
|
+
<DropdownMenu triggerAuditAction="open-actions-menu">
|
|
102
|
+
{#snippet label()}
|
|
103
|
+
Actions
|
|
104
|
+
{/snippet}
|
|
105
|
+
<li><button type="button">Share snapshot</button></li>
|
|
106
|
+
<li><button type="button">Create inspection note</button></li>
|
|
107
|
+
<li><button type="button">Export comparison</button></li>
|
|
108
|
+
</DropdownMenu>
|
|
109
|
+
<Button data-audit-action="open-dialog" primary onclick={openDialog}>
|
|
110
|
+
Preview
|
|
111
|
+
</Button>
|
|
112
|
+
</Inline>
|
|
113
|
+
</Bar>
|
|
114
|
+
{/snippet}
|
|
115
|
+
|
|
116
|
+
<Container maxWidth="1180px">
|
|
117
|
+
<Stack gap="var(--space-lg)">
|
|
118
|
+
<TextLayout>
|
|
119
|
+
<h2>Contain depot board</h2>
|
|
120
|
+
<h1>Lids, walls, manifests, and stacks in one cargo view</h1>
|
|
121
|
+
<p>
|
|
122
|
+
Welcome to the Contain depot, where ship manifests, policy memos,
|
|
123
|
+
retail storage reports, and old-fashioned box glossaries arrive at the
|
|
124
|
+
same inspection desk. Every crate earns a label, every label earns a
|
|
125
|
+
little skepticism, and every suspicious lid is asked politely to close
|
|
126
|
+
before the evening whistle.
|
|
127
|
+
</p>
|
|
128
|
+
</TextLayout>
|
|
129
|
+
|
|
130
|
+
<GridLayout card>
|
|
131
|
+
<Card>
|
|
132
|
+
{#snippet header()}
|
|
133
|
+
<h3>Readiness</h3>
|
|
134
|
+
{/snippet}
|
|
135
|
+
<h2>84%</h2>
|
|
136
|
+
<p>
|
|
137
|
+
Eight of ten containment checks are sealed and stacked. The
|
|
138
|
+
remaining issues are ordinary yard dents: one crate has a soft
|
|
139
|
+
corner, one manifest line needs more breathing room, and one label
|
|
140
|
+
has been warned not to drift into international waters.
|
|
141
|
+
</p>
|
|
142
|
+
{#snippet footer()}
|
|
143
|
+
<Inline wrap="wrap">
|
|
144
|
+
<Tag success>Passing</Tag>
|
|
145
|
+
<Tag info>{confidenceLabel}</Tag>
|
|
146
|
+
</Inline>
|
|
147
|
+
{/snippet}
|
|
148
|
+
</Card>
|
|
149
|
+
|
|
150
|
+
<Card>
|
|
151
|
+
{#snippet header()}
|
|
152
|
+
<h3>Closure Set</h3>
|
|
153
|
+
{/snippet}
|
|
154
|
+
<Stack gap="var(--space)">
|
|
155
|
+
<Inline wrap="wrap">
|
|
156
|
+
<Button primary data-audit-action="focus-primary" data-audit-focus="true">
|
|
157
|
+
Seal
|
|
158
|
+
</Button>
|
|
159
|
+
<Button secondary>Hold</Button>
|
|
160
|
+
</Inline>
|
|
161
|
+
<Inline wrap="wrap">
|
|
162
|
+
<Button success>Clear</Button>
|
|
163
|
+
<Button warning>Delay</Button>
|
|
164
|
+
<Button danger>Reject</Button>
|
|
165
|
+
</Inline>
|
|
166
|
+
</Stack>
|
|
167
|
+
</Card>
|
|
168
|
+
|
|
169
|
+
<Card>
|
|
170
|
+
{#snippet header()}
|
|
171
|
+
<h3>Yard Rhythm</h3>
|
|
172
|
+
{/snippet}
|
|
173
|
+
<p>
|
|
174
|
+
These progress rows track the practical rhythm of the yard: contrast
|
|
175
|
+
between crates, separation between seals, density on the manifest,
|
|
176
|
+
and hierarchy in the cargo stack. A good depot never lets a barrel
|
|
177
|
+
pretend it is a filing cabinet.
|
|
178
|
+
</p>
|
|
179
|
+
<Stack gap="var(--space)">
|
|
180
|
+
{#each rhythm as item}
|
|
181
|
+
<div>
|
|
182
|
+
<strong>{item.label}</strong>
|
|
183
|
+
<Progress value={item.value} max={100}>{item.value}%</Progress>
|
|
184
|
+
</div>
|
|
185
|
+
{/each}
|
|
186
|
+
</Stack>
|
|
187
|
+
</Card>
|
|
188
|
+
</GridLayout>
|
|
189
|
+
|
|
190
|
+
<GridLayout>
|
|
191
|
+
<Container border data-audit-target="form-panel">
|
|
192
|
+
<Bar secondary>
|
|
193
|
+
<h2>Filters</h2>
|
|
194
|
+
<Toggle bind:checked={notifications}>Alerts</Toggle>
|
|
195
|
+
</Bar>
|
|
196
|
+
|
|
197
|
+
<Form layout="above" fullWidth globalInputStyles>
|
|
198
|
+
<Fieldset>
|
|
199
|
+
{#snippet legend()}
|
|
200
|
+
Search and segmentation
|
|
201
|
+
{/snippet}
|
|
202
|
+
|
|
203
|
+
<FormItem>
|
|
204
|
+
{#snippet label()}
|
|
205
|
+
Search
|
|
206
|
+
{/snippet}
|
|
207
|
+
<Input
|
|
208
|
+
bind:value={search}
|
|
209
|
+
placeholder="Find a crate, seal, or manifest"
|
|
210
|
+
/>
|
|
211
|
+
</FormItem>
|
|
212
|
+
|
|
213
|
+
<FormItem>
|
|
214
|
+
{#snippet label()}
|
|
215
|
+
Container
|
|
216
|
+
{/snippet}
|
|
217
|
+
<Select bind:value={plan}>
|
|
218
|
+
<option value="starter">Lunchbox</option>
|
|
219
|
+
<option value="growth">Shipping crate</option>
|
|
220
|
+
<option value="enterprise">Freight container</option>
|
|
221
|
+
</Select>
|
|
222
|
+
</FormItem>
|
|
223
|
+
|
|
224
|
+
<FormItem>
|
|
225
|
+
{#snippet label()}
|
|
226
|
+
Handler
|
|
227
|
+
{/snippet}
|
|
228
|
+
<RadioButton bind:group={owner} value="design">Box crew</RadioButton>
|
|
229
|
+
<RadioButton bind:group={owner} value="frontend">Can crew</RadioButton>
|
|
230
|
+
<RadioButton bind:group={owner} value="product">Pack crew</RadioButton>
|
|
231
|
+
</FormItem>
|
|
232
|
+
|
|
233
|
+
<FormItem>
|
|
234
|
+
{#snippet label()}
|
|
235
|
+
Density
|
|
236
|
+
{/snippet}
|
|
237
|
+
<Select bind:value={density}>
|
|
238
|
+
<option value="compact">Compact</option>
|
|
239
|
+
<option value="balanced">Balanced</option>
|
|
240
|
+
<option value="spacious">Spacious</option>
|
|
241
|
+
</Select>
|
|
242
|
+
</FormItem>
|
|
243
|
+
|
|
244
|
+
<FormItem>
|
|
245
|
+
{#snippet label()}
|
|
246
|
+
Confidence {confidence}%
|
|
247
|
+
{/snippet}
|
|
248
|
+
<Slider bind:value={confidence} min={0} max={100} />
|
|
249
|
+
</FormItem>
|
|
250
|
+
|
|
251
|
+
<FormItem>
|
|
252
|
+
{#snippet label()}
|
|
253
|
+
History
|
|
254
|
+
{/snippet}
|
|
255
|
+
<Checkbox bind:checked={includeArchived}>Include archived containers</Checkbox>
|
|
256
|
+
</FormItem>
|
|
257
|
+
</Fieldset>
|
|
258
|
+
</Form>
|
|
259
|
+
</Container>
|
|
260
|
+
|
|
261
|
+
<Container border>
|
|
262
|
+
<Bar secondary>
|
|
263
|
+
<h2>Containment Queue</h2>
|
|
264
|
+
<Button data-audit-action="open-detail" onclick={openDetail}>
|
|
265
|
+
Inspect
|
|
266
|
+
</Button>
|
|
267
|
+
</Bar>
|
|
268
|
+
|
|
269
|
+
{#if detailOpen}
|
|
270
|
+
<div data-audit-target="detail-open">
|
|
271
|
+
<Card>
|
|
272
|
+
{#snippet header()}
|
|
273
|
+
<h3>Selection detail</h3>
|
|
274
|
+
{/snippet}
|
|
275
|
+
<p>
|
|
276
|
+
The selected container has survived the first shake test, but
|
|
277
|
+
the crew still needs to inspect its label, closure, and
|
|
278
|
+
surrounding paperwork. Long copy is useful here because a
|
|
279
|
+
container can look perfectly calm until a full manifest asks
|
|
280
|
+
it to hold three more lines than planned.
|
|
281
|
+
</p>
|
|
282
|
+
</Card>
|
|
283
|
+
</div>
|
|
284
|
+
{/if}
|
|
285
|
+
|
|
286
|
+
<DataList stackable>
|
|
287
|
+
{#each members as member}
|
|
288
|
+
<DataListItem interactive>
|
|
289
|
+
{#snippet start()}
|
|
290
|
+
<Tag info>{member.name.slice(0, 1)}</Tag>
|
|
291
|
+
{/snippet}
|
|
292
|
+
<h3>{member.name}</h3>
|
|
293
|
+
<span>{member.role}</span>
|
|
294
|
+
{#snippet end()}
|
|
295
|
+
{#if member.intent === "success"}
|
|
296
|
+
<Tag success>{member.status}</Tag>
|
|
297
|
+
{:else if member.intent === "warning"}
|
|
298
|
+
<Tag warning>{member.status}</Tag>
|
|
299
|
+
{:else}
|
|
300
|
+
<Tag info>{member.status}</Tag>
|
|
301
|
+
{/if}
|
|
302
|
+
{/snippet}
|
|
303
|
+
</DataListItem>
|
|
304
|
+
{/each}
|
|
305
|
+
</DataList>
|
|
306
|
+
</Container>
|
|
307
|
+
</GridLayout>
|
|
308
|
+
|
|
309
|
+
<Container border data-audit-target="table-panel">
|
|
310
|
+
<Bar secondary>
|
|
311
|
+
<h2>Seal Checklist</h2>
|
|
312
|
+
<Inline wrap="wrap">
|
|
313
|
+
<Tag info>{density}</Tag>
|
|
314
|
+
<Tag success>{plan}</Tag>
|
|
315
|
+
</Inline>
|
|
316
|
+
</Bar>
|
|
317
|
+
|
|
318
|
+
<Table>
|
|
319
|
+
{#snippet thead()}
|
|
320
|
+
<thead>
|
|
321
|
+
<tr>
|
|
322
|
+
<th>Area</th>
|
|
323
|
+
<th>Inspection Focus</th>
|
|
324
|
+
<th>Status</th>
|
|
325
|
+
<th>Action</th>
|
|
326
|
+
</tr>
|
|
327
|
+
</thead>
|
|
328
|
+
{/snippet}
|
|
329
|
+
|
|
330
|
+
{#snippet tbody()}
|
|
331
|
+
<tbody>
|
|
332
|
+
{#each rows as row}
|
|
333
|
+
<tr>
|
|
334
|
+
<th>{row[0]}</th>
|
|
335
|
+
<td>{row[1]}</td>
|
|
336
|
+
<td>{row[2]}</td>
|
|
337
|
+
<td><Button>Open</Button></td>
|
|
338
|
+
</tr>
|
|
339
|
+
{/each}
|
|
340
|
+
</tbody>
|
|
341
|
+
{/snippet}
|
|
342
|
+
</Table>
|
|
343
|
+
</Container>
|
|
344
|
+
</Stack>
|
|
345
|
+
</Container>
|
|
346
|
+
|
|
347
|
+
{#if dialogOpen}
|
|
348
|
+
<Dialog
|
|
349
|
+
open={dialogOpen}
|
|
350
|
+
onClose={() => {
|
|
351
|
+
dialogOpen = false;
|
|
352
|
+
}}
|
|
353
|
+
>
|
|
354
|
+
<div data-audit-target="dialog-open">
|
|
355
|
+
<TextLayout>
|
|
356
|
+
<h2>Inspection preview</h2>
|
|
357
|
+
<p>
|
|
358
|
+
This modal is the inspection booth at the edge of the yard. The
|
|
359
|
+
supervisor checks the selected container, confirms the handler, and
|
|
360
|
+
stamps the confidence score before the little box is allowed to
|
|
361
|
+
travel with the rest of the shipment.
|
|
362
|
+
</p>
|
|
363
|
+
</TextLayout>
|
|
364
|
+
<GridLayout card>
|
|
365
|
+
<Card>
|
|
366
|
+
{#snippet header()}
|
|
367
|
+
<h3>Container</h3>
|
|
368
|
+
{/snippet}
|
|
369
|
+
<strong>{plan}</strong>
|
|
370
|
+
</Card>
|
|
371
|
+
<Card>
|
|
372
|
+
{#snippet header()}
|
|
373
|
+
<h3>Owner</h3>
|
|
374
|
+
{/snippet}
|
|
375
|
+
<strong>{owner}</strong>
|
|
376
|
+
</Card>
|
|
377
|
+
<Card>
|
|
378
|
+
{#snippet header()}
|
|
379
|
+
<h3>Confidence</h3>
|
|
380
|
+
{/snippet}
|
|
381
|
+
<strong>{confidence}%</strong>
|
|
382
|
+
</Card>
|
|
383
|
+
</GridLayout>
|
|
384
|
+
</div>
|
|
385
|
+
</Dialog>
|
|
386
|
+
{/if}
|
|
387
|
+
</Page>
|