@lateralus-ai/shipping-ui 2.0.0-dev.20 → 2.0.0-dev.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/dist/components/Entry.d.ts +7 -27
- package/dist/components/Tabs.d.ts +5 -5
- package/dist/components/index.d.ts +2 -4
- package/dist/index.cjs +25 -25
- package/dist/index.d.ts +2 -2
- package/dist/index.esm.js +4628 -4857
- package/dist/patterns/Search/ResultRow.d.ts +5 -11
- package/dist/patterns/Sidebar/sidebar-styles.d.ts +1 -2
- package/dist/primitives/Badge.d.ts +4 -7
- package/dist/primitives/index.d.ts +1 -1
- package/dist/tailwind-theme.d.ts +4 -8
- package/dist/{theme-entry-tLBc6zGT.mjs → theme-entry-CxDa1D0_.mjs} +8 -12
- package/dist/theme-entry-D2X3Ptjf.js +1 -0
- package/dist/theme.cjs +1 -1
- package/dist/theme.esm.js +1 -1
- package/package.json +2 -2
- package/src/components/Entry.tsx +45 -119
- package/src/components/Tabs.tsx +139 -146
- package/src/components/index.ts +42 -56
- package/src/index.ts +74 -85
- package/src/patterns/Search/ResultRow.tsx +58 -44
- package/src/patterns/Search/SearchModal.tsx +292 -310
- package/src/patterns/Search/index.ts +31 -31
- package/src/patterns/Sidebar/CollapsibleNavGroup.tsx +1 -1
- package/src/patterns/Sidebar/SidebarAction.tsx +17 -26
- package/src/patterns/Sidebar/SidebarEntry.tsx +39 -54
- package/src/patterns/Sidebar/SidebarLink.tsx +20 -30
- package/src/patterns/Sidebar/sidebar-styles.ts +1 -2
- package/src/patterns/Skeleton/Skeleton.tsx +56 -56
- package/src/primitives/Badge.tsx +10 -20
- package/src/primitives/Button.tsx +11 -16
- package/src/primitives/index.ts +1 -1
- package/src/stories/canvases/ContentCanvas.tsx +114 -353
- package/src/stories/canvases/SearchCanvas.tsx +150 -150
- package/src/tailwind-theme.ts +182 -186
- package/src/utils/cn.ts +1 -28
- package/dist/components/PageHeader.d.ts +0 -41
- package/dist/components/ScrollableList.d.ts +0 -22
- package/dist/theme-entry-Dwr2mV7_.js +0 -1
- package/src/components/PageHeader.tsx +0 -132
- package/src/components/ScrollableList.tsx +0 -61
|
@@ -1,353 +1,114 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
EmptyState,
|
|
4
|
-
Entry,
|
|
5
|
-
Header,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
{row.signatures?.map((n) => (
|
|
116
|
-
<Badge key={n} color="orange" type="icon">
|
|
117
|
-
{n}
|
|
118
|
-
</Badge>
|
|
119
|
-
))}
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
<div className="w-[90px] shrink-0 text-caption-2 text-display-on-light-secondary">
|
|
123
|
-
{row.date}
|
|
124
|
-
</div>
|
|
125
|
-
<div className="w-[150px] shrink-0 truncate text-caption-2 text-display-on-light-secondary">
|
|
126
|
-
{row.vessel}
|
|
127
|
-
</div>
|
|
128
|
-
{row.initials ? (
|
|
129
|
-
<Avatar
|
|
130
|
-
chief="initials"
|
|
131
|
-
size={24}
|
|
132
|
-
initials={row.initials}
|
|
133
|
-
className={row.avatarClassName}
|
|
134
|
-
/>
|
|
135
|
-
) : (
|
|
136
|
-
<span className="size-6 shrink-0" aria-hidden />
|
|
137
|
-
)}
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
export const ContentCanvas = () => (
|
|
145
|
-
<FigmaPage title="Content" width={FIGMA_WIDTHS.content}>
|
|
146
|
-
<FigmaContent>
|
|
147
|
-
<FigmaSection label="Tab">
|
|
148
|
-
<FigmaGrid gap={16}>
|
|
149
|
-
<Tab label="Overview" />
|
|
150
|
-
<Tab label="Tasks" state="active" />
|
|
151
|
-
<Tab label="Reports" className="bg-background-hover" />
|
|
152
|
-
</FigmaGrid>
|
|
153
|
-
</FigmaSection>
|
|
154
|
-
|
|
155
|
-
<FigmaSection label="Tabs">
|
|
156
|
-
<div className="max-w-xl space-y-8">
|
|
157
|
-
<FigmaVariant label="Underline">
|
|
158
|
-
<Tabs defaultValue="all" type="tabs">
|
|
159
|
-
<TabsList>
|
|
160
|
-
<TabsTrigger value="all">All</TabsTrigger>
|
|
161
|
-
<TabsTrigger value="reports">Reports</TabsTrigger>
|
|
162
|
-
<TabsTrigger value="issues">Issues</TabsTrigger>
|
|
163
|
-
</TabsList>
|
|
164
|
-
<TabsContent
|
|
165
|
-
value="all"
|
|
166
|
-
className="pt-3 text-caption-2 text-display-on-light-secondary"
|
|
167
|
-
>
|
|
168
|
-
All content
|
|
169
|
-
</TabsContent>
|
|
170
|
-
<TabsContent
|
|
171
|
-
value="reports"
|
|
172
|
-
className="pt-3 text-caption-2 text-display-on-light-secondary"
|
|
173
|
-
>
|
|
174
|
-
Reports content
|
|
175
|
-
</TabsContent>
|
|
176
|
-
<TabsContent
|
|
177
|
-
value="issues"
|
|
178
|
-
className="pt-3 text-caption-2 text-display-on-light-secondary"
|
|
179
|
-
>
|
|
180
|
-
Issues content
|
|
181
|
-
</TabsContent>
|
|
182
|
-
</Tabs>
|
|
183
|
-
</FigmaVariant>
|
|
184
|
-
<FigmaVariant label="Pills · soft">
|
|
185
|
-
<Tabs defaultValue="active" type="pills" appearance="soft">
|
|
186
|
-
<TabsList>
|
|
187
|
-
<TabsTrigger value="active">Active</TabsTrigger>
|
|
188
|
-
<TabsTrigger value="completed">
|
|
189
|
-
Completed
|
|
190
|
-
<Badge color="blue">3</Badge>
|
|
191
|
-
</TabsTrigger>
|
|
192
|
-
</TabsList>
|
|
193
|
-
<TabsContent
|
|
194
|
-
value="active"
|
|
195
|
-
className="pt-3 text-caption-2 text-display-on-light-secondary"
|
|
196
|
-
>
|
|
197
|
-
Active content
|
|
198
|
-
</TabsContent>
|
|
199
|
-
<TabsContent
|
|
200
|
-
value="completed"
|
|
201
|
-
className="pt-3 text-caption-2 text-display-on-light-secondary"
|
|
202
|
-
>
|
|
203
|
-
Completed content
|
|
204
|
-
</TabsContent>
|
|
205
|
-
</Tabs>
|
|
206
|
-
</FigmaVariant>
|
|
207
|
-
<FigmaVariant label="Pills · solid">
|
|
208
|
-
<Tabs defaultValue="chat" type="pills" appearance="solid">
|
|
209
|
-
<TabsList>
|
|
210
|
-
<TabsTrigger value="chat">Chat</TabsTrigger>
|
|
211
|
-
<TabsTrigger value="questions">
|
|
212
|
-
Questions
|
|
213
|
-
<Badge color="grey">208</Badge>
|
|
214
|
-
</TabsTrigger>
|
|
215
|
-
<TabsTrigger value="review">
|
|
216
|
-
Review
|
|
217
|
-
<Badge color="green" type="icon">
|
|
218
|
-
<TickIcon size="xs" />
|
|
219
|
-
</Badge>
|
|
220
|
-
</TabsTrigger>
|
|
221
|
-
<TabsTrigger value="gaps">
|
|
222
|
-
Gaps
|
|
223
|
-
<Badge color="grey">47</Badge>
|
|
224
|
-
</TabsTrigger>
|
|
225
|
-
</TabsList>
|
|
226
|
-
</Tabs>
|
|
227
|
-
</FigmaVariant>
|
|
228
|
-
</div>
|
|
229
|
-
</FigmaSection>
|
|
230
|
-
|
|
231
|
-
<FigmaSection label="PageHeader">
|
|
232
|
-
<div className="max-w-[1120px] space-y-8">
|
|
233
|
-
<FigmaVariant label="Standard">
|
|
234
|
-
<PageHeader
|
|
235
|
-
icon={<ShipIcon size="large" />}
|
|
236
|
-
title="Title"
|
|
237
|
-
actions={demoActions}
|
|
238
|
-
/>
|
|
239
|
-
</FigmaVariant>
|
|
240
|
-
<FigmaVariant label="Nested">
|
|
241
|
-
<PageHeader
|
|
242
|
-
icon={<ShipIcon size="large" />}
|
|
243
|
-
title="Title"
|
|
244
|
-
crumbs={[{ label: "Parent", href: "#parent" }]}
|
|
245
|
-
actions={demoActions}
|
|
246
|
-
/>
|
|
247
|
-
</FigmaVariant>
|
|
248
|
-
<FigmaVariant label="Shell (pinned header)">
|
|
249
|
-
<div className="h-64 overflow-hidden rounded-control border border-divider-primary">
|
|
250
|
-
<PageHeader.Shell className="bg-background-primary p-4">
|
|
251
|
-
<PageHeader
|
|
252
|
-
icon={<ShipIcon size="large" />}
|
|
253
|
-
title="Fleet"
|
|
254
|
-
crumbs={[{ label: "Ships", href: "#ships" }]}
|
|
255
|
-
actions={demoActions}
|
|
256
|
-
/>
|
|
257
|
-
<PageHeader.Body className="mt-4 space-y-2 text-caption-2 text-display-on-light-secondary">
|
|
258
|
-
{Array.from({ length: 20 }, (_, i) => (
|
|
259
|
-
<p key={i}>Scrollable body line {i + 1}</p>
|
|
260
|
-
))}
|
|
261
|
-
</PageHeader.Body>
|
|
262
|
-
</PageHeader.Shell>
|
|
263
|
-
</div>
|
|
264
|
-
</FigmaVariant>
|
|
265
|
-
</div>
|
|
266
|
-
</FigmaSection>
|
|
267
|
-
|
|
268
|
-
<FigmaSection label="ScrollableList (Table)">
|
|
269
|
-
<FigmaVariant label="Column header + scrolling body">
|
|
270
|
-
<div className="flex h-[420px] w-full max-w-[960px] flex-col">
|
|
271
|
-
<ScrollableList>
|
|
272
|
-
<ScrollableList.Header>
|
|
273
|
-
<span className="min-w-0 flex-1">Title</span>
|
|
274
|
-
<span className="w-[90px] shrink-0">Date</span>
|
|
275
|
-
<span className="w-[210px] shrink-0">Vessel</span>
|
|
276
|
-
</ScrollableList.Header>
|
|
277
|
-
<ScrollableList.Body>
|
|
278
|
-
{DEMO_ROWS.map((row) => (
|
|
279
|
-
<DemoListRow key={row.title} row={row} />
|
|
280
|
-
))}
|
|
281
|
-
</ScrollableList.Body>
|
|
282
|
-
</ScrollableList>
|
|
283
|
-
</div>
|
|
284
|
-
</FigmaVariant>
|
|
285
|
-
</FigmaSection>
|
|
286
|
-
|
|
287
|
-
<FigmaSection label="Header (legacy)">
|
|
288
|
-
<div className="max-w-xl space-y-4">
|
|
289
|
-
<Header title="Fleet overview" />
|
|
290
|
-
<Header
|
|
291
|
-
variant="nested"
|
|
292
|
-
title="Outstanding actions"
|
|
293
|
-
actions={<Button hierarchy="primary">Add</Button>}
|
|
294
|
-
/>
|
|
295
|
-
</div>
|
|
296
|
-
</FigmaSection>
|
|
297
|
-
|
|
298
|
-
<FigmaSection label="Entry">
|
|
299
|
-
<div className="max-w-xl space-y-2">
|
|
300
|
-
<Entry
|
|
301
|
-
variant="chat"
|
|
302
|
-
title="Hull inspection report"
|
|
303
|
-
subtitle="We’ve got a persistent oil leak from the fuel pump."
|
|
304
|
-
/>
|
|
305
|
-
<Entry
|
|
306
|
-
variant="chat"
|
|
307
|
-
state="active"
|
|
308
|
-
title="Ballast Pump Not Starting"
|
|
309
|
-
subtitle="The fuel pump won’t start consistently."
|
|
310
|
-
trailing={
|
|
311
|
-
<span className="text-display-on-light-secondary">···</span>
|
|
312
|
-
}
|
|
313
|
-
/>
|
|
314
|
-
<Entry
|
|
315
|
-
variant="issue"
|
|
316
|
-
title="Excessive Rust on Fuel Pump"
|
|
317
|
-
subtitle="Created by Jake Silva on March 28"
|
|
318
|
-
count={3}
|
|
319
|
-
/>
|
|
320
|
-
<Entry
|
|
321
|
-
variant="report"
|
|
322
|
-
title="Engine Room Oil Leak"
|
|
323
|
-
subtitle="We’ve spotted a steady oil leak near the fuel pump."
|
|
324
|
-
/>
|
|
325
|
-
</div>
|
|
326
|
-
</FigmaSection>
|
|
327
|
-
|
|
328
|
-
<FigmaSection label="Empty State">
|
|
329
|
-
<FigmaGrid gap={32}>
|
|
330
|
-
<FigmaVariant label="Default">
|
|
331
|
-
<div className="w-80">
|
|
332
|
-
<EmptyState
|
|
333
|
-
title="No workflows yet"
|
|
334
|
-
description="Create your first workflow to get started."
|
|
335
|
-
/>
|
|
336
|
-
</div>
|
|
337
|
-
</FigmaVariant>
|
|
338
|
-
<FigmaVariant label="With illustration">
|
|
339
|
-
<div className="w-80">
|
|
340
|
-
<EmptyState
|
|
341
|
-
title="No reports"
|
|
342
|
-
illustration={
|
|
343
|
-
<WorkflowsIllustration className="mx-auto h-24 w-32" />
|
|
344
|
-
}
|
|
345
|
-
action={{ children: "Create report", hierarchy: "primary" }}
|
|
346
|
-
/>
|
|
347
|
-
</div>
|
|
348
|
-
</FigmaVariant>
|
|
349
|
-
</FigmaGrid>
|
|
350
|
-
</FigmaSection>
|
|
351
|
-
</FigmaContent>
|
|
352
|
-
</FigmaPage>
|
|
353
|
-
);
|
|
1
|
+
import { Button } from "../../primitives";
|
|
2
|
+
import {
|
|
3
|
+
EmptyState,
|
|
4
|
+
Entry,
|
|
5
|
+
Header,
|
|
6
|
+
Tab,
|
|
7
|
+
Tabs,
|
|
8
|
+
TabsContent,
|
|
9
|
+
TabsList,
|
|
10
|
+
TabsTrigger,
|
|
11
|
+
} from "../../components";
|
|
12
|
+
import { WorkflowsIllustration } from "../../illustrations";
|
|
13
|
+
import {
|
|
14
|
+
FigmaContent,
|
|
15
|
+
FigmaGrid,
|
|
16
|
+
FigmaPage,
|
|
17
|
+
FigmaSection,
|
|
18
|
+
FigmaVariant,
|
|
19
|
+
} from "../_layout";
|
|
20
|
+
import { FIGMA_WIDTHS } from "./figma-widths";
|
|
21
|
+
|
|
22
|
+
export const ContentCanvas = () => (
|
|
23
|
+
<FigmaPage title="Content" width={FIGMA_WIDTHS.content}>
|
|
24
|
+
<FigmaContent>
|
|
25
|
+
<FigmaSection label="Tab">
|
|
26
|
+
<FigmaGrid gap={16}>
|
|
27
|
+
<Tab label="Overview" />
|
|
28
|
+
<Tab label="Tasks" state="active" />
|
|
29
|
+
<Tab label="Reports" className="bg-background-hover" />
|
|
30
|
+
</FigmaGrid>
|
|
31
|
+
</FigmaSection>
|
|
32
|
+
|
|
33
|
+
<FigmaSection label="Tabs">
|
|
34
|
+
<div className="max-w-xl space-y-8">
|
|
35
|
+
<FigmaVariant label="Underline">
|
|
36
|
+
<Tabs defaultValue="all" type="tabs">
|
|
37
|
+
<TabsList>
|
|
38
|
+
<TabsTrigger value="all">All</TabsTrigger>
|
|
39
|
+
<TabsTrigger value="reports">Reports</TabsTrigger>
|
|
40
|
+
<TabsTrigger value="issues">Issues</TabsTrigger>
|
|
41
|
+
</TabsList>
|
|
42
|
+
<TabsContent value="all" className="pt-3 text-caption-2 text-display-on-light-secondary">
|
|
43
|
+
All content
|
|
44
|
+
</TabsContent>
|
|
45
|
+
<TabsContent value="reports" className="pt-3 text-caption-2 text-display-on-light-secondary">
|
|
46
|
+
Reports content
|
|
47
|
+
</TabsContent>
|
|
48
|
+
<TabsContent value="issues" className="pt-3 text-caption-2 text-display-on-light-secondary">
|
|
49
|
+
Issues content
|
|
50
|
+
</TabsContent>
|
|
51
|
+
</Tabs>
|
|
52
|
+
</FigmaVariant>
|
|
53
|
+
<FigmaVariant label="Pills">
|
|
54
|
+
<Tabs defaultValue="active" type="pills">
|
|
55
|
+
<TabsList>
|
|
56
|
+
<TabsTrigger value="active">Active</TabsTrigger>
|
|
57
|
+
<TabsTrigger value="completed" count={3}>
|
|
58
|
+
Completed
|
|
59
|
+
</TabsTrigger>
|
|
60
|
+
</TabsList>
|
|
61
|
+
<TabsContent value="active" className="pt-3 text-caption-2 text-display-on-light-secondary">
|
|
62
|
+
Active content
|
|
63
|
+
</TabsContent>
|
|
64
|
+
<TabsContent value="completed" className="pt-3 text-caption-2 text-display-on-light-secondary">
|
|
65
|
+
Completed content
|
|
66
|
+
</TabsContent>
|
|
67
|
+
</Tabs>
|
|
68
|
+
</FigmaVariant>
|
|
69
|
+
</div>
|
|
70
|
+
</FigmaSection>
|
|
71
|
+
|
|
72
|
+
<FigmaSection label="Header">
|
|
73
|
+
<div className="max-w-xl space-y-4">
|
|
74
|
+
<Header title="Fleet overview" />
|
|
75
|
+
<Header
|
|
76
|
+
variant="nested"
|
|
77
|
+
title="Outstanding actions"
|
|
78
|
+
actions={<Button hierarchy="primary">Add</Button>}
|
|
79
|
+
/>
|
|
80
|
+
</div>
|
|
81
|
+
</FigmaSection>
|
|
82
|
+
|
|
83
|
+
<FigmaSection label="Entry">
|
|
84
|
+
<div className="max-w-xl space-y-2">
|
|
85
|
+
<Entry type="chat" title="Hull inspection report" subtitle="2 hours ago" meta="17" />
|
|
86
|
+
<Entry type="issue" title="Critical valve malfunction" state="selected" meta="High" />
|
|
87
|
+
<Entry type="chat" title="Port state control checklist" subtitle="Yesterday" className="bg-background-hover" />
|
|
88
|
+
</div>
|
|
89
|
+
</FigmaSection>
|
|
90
|
+
|
|
91
|
+
<FigmaSection label="Empty State">
|
|
92
|
+
<FigmaGrid gap={32}>
|
|
93
|
+
<FigmaVariant label="Default">
|
|
94
|
+
<div className="w-80">
|
|
95
|
+
<EmptyState
|
|
96
|
+
title="No workflows yet"
|
|
97
|
+
description="Create your first workflow to get started."
|
|
98
|
+
/>
|
|
99
|
+
</div>
|
|
100
|
+
</FigmaVariant>
|
|
101
|
+
<FigmaVariant label="With illustration">
|
|
102
|
+
<div className="w-80">
|
|
103
|
+
<EmptyState
|
|
104
|
+
title="No reports"
|
|
105
|
+
illustration={<WorkflowsIllustration className="mx-auto h-24 w-32" />}
|
|
106
|
+
action={{ children: "Create report", hierarchy: "primary" }}
|
|
107
|
+
/>
|
|
108
|
+
</div>
|
|
109
|
+
</FigmaVariant>
|
|
110
|
+
</FigmaGrid>
|
|
111
|
+
</FigmaSection>
|
|
112
|
+
</FigmaContent>
|
|
113
|
+
</FigmaPage>
|
|
114
|
+
);
|