@yccui/ui 1.0.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/README.md +504 -0
- package/dist/components/DataDisplay/Accordion.d.ts +12 -0
- package/dist/components/DataDisplay/Accordion.d.ts.map +1 -0
- package/dist/components/DataDisplay/Avatar.d.ts +9 -0
- package/dist/components/DataDisplay/Avatar.d.ts.map +1 -0
- package/dist/components/DataDisplay/Badge.d.ts +8 -0
- package/dist/components/DataDisplay/Badge.d.ts.map +1 -0
- package/dist/components/DataDisplay/Banner.d.ts +13 -0
- package/dist/components/DataDisplay/Banner.d.ts.map +1 -0
- package/dist/components/DataDisplay/Card.d.ts +27 -0
- package/dist/components/DataDisplay/Card.d.ts.map +1 -0
- package/dist/components/DataDisplay/CompareBar.d.ts +10 -0
- package/dist/components/DataDisplay/CompareBar.d.ts.map +1 -0
- package/dist/components/DataDisplay/CopyButton.d.ts +8 -0
- package/dist/components/DataDisplay/CopyButton.d.ts.map +1 -0
- package/dist/components/DataDisplay/DataList.d.ts +11 -0
- package/dist/components/DataDisplay/DataList.d.ts.map +1 -0
- package/dist/components/DataDisplay/Donut.d.ts +10 -0
- package/dist/components/DataDisplay/Donut.d.ts.map +1 -0
- package/dist/components/DataDisplay/EmptyState.d.ts +10 -0
- package/dist/components/DataDisplay/EmptyState.d.ts.map +1 -0
- package/dist/components/DataDisplay/KV.d.ts +9 -0
- package/dist/components/DataDisplay/KV.d.ts.map +1 -0
- package/dist/components/DataDisplay/Popover.d.ts +9 -0
- package/dist/components/DataDisplay/Popover.d.ts.map +1 -0
- package/dist/components/DataDisplay/ProgressBar.d.ts +10 -0
- package/dist/components/DataDisplay/ProgressBar.d.ts.map +1 -0
- package/dist/components/DataDisplay/StatCard.d.ts +13 -0
- package/dist/components/DataDisplay/StatCard.d.ts.map +1 -0
- package/dist/components/DataDisplay/Table.d.ts +23 -0
- package/dist/components/DataDisplay/Table.d.ts.map +1 -0
- package/dist/components/DataDisplay/Tag.d.ts +9 -0
- package/dist/components/DataDisplay/Tag.d.ts.map +1 -0
- package/dist/components/DataDisplay/Timeline.d.ts +12 -0
- package/dist/components/DataDisplay/Timeline.d.ts.map +1 -0
- package/dist/components/DataDisplay/Tooltip.d.ts +9 -0
- package/dist/components/DataDisplay/Tooltip.d.ts.map +1 -0
- package/dist/components/DataDisplay/TrendSpark.d.ts +9 -0
- package/dist/components/DataDisplay/TrendSpark.d.ts.map +1 -0
- package/dist/components/DataDisplay/index.d.ts +39 -0
- package/dist/components/DataDisplay/index.d.ts.map +1 -0
- package/dist/components/Feedback/Alert.d.ts +9 -0
- package/dist/components/Feedback/Alert.d.ts.map +1 -0
- package/dist/components/Feedback/ConfirmDialog.d.ts +14 -0
- package/dist/components/Feedback/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/Feedback/Drawer.d.ts +12 -0
- package/dist/components/Feedback/Drawer.d.ts.map +1 -0
- package/dist/components/Feedback/Modal.d.ts +14 -0
- package/dist/components/Feedback/Modal.d.ts.map +1 -0
- package/dist/components/Feedback/Skeleton.d.ts +8 -0
- package/dist/components/Feedback/Skeleton.d.ts.map +1 -0
- package/dist/components/Feedback/Spinner.d.ts +8 -0
- package/dist/components/Feedback/Spinner.d.ts.map +1 -0
- package/dist/components/Feedback/Toast.d.ts +20 -0
- package/dist/components/Feedback/Toast.d.ts.map +1 -0
- package/dist/components/Feedback/index.d.ts +15 -0
- package/dist/components/Feedback/index.d.ts.map +1 -0
- package/dist/components/Form/Button.d.ts +16 -0
- package/dist/components/Form/Button.d.ts.map +1 -0
- package/dist/components/Form/Checkbox.d.ts +12 -0
- package/dist/components/Form/Checkbox.d.ts.map +1 -0
- package/dist/components/Form/DateInput.d.ts +12 -0
- package/dist/components/Form/DateInput.d.ts.map +1 -0
- package/dist/components/Form/FileUpload.d.ts +11 -0
- package/dist/components/Form/FileUpload.d.ts.map +1 -0
- package/dist/components/Form/FormGroup.d.ts +11 -0
- package/dist/components/Form/FormGroup.d.ts.map +1 -0
- package/dist/components/Form/Input.d.ts +17 -0
- package/dist/components/Form/Input.d.ts.map +1 -0
- package/dist/components/Form/Radio.d.ts +13 -0
- package/dist/components/Form/Radio.d.ts.map +1 -0
- package/dist/components/Form/RadioGroup.d.ts +16 -0
- package/dist/components/Form/RadioGroup.d.ts.map +1 -0
- package/dist/components/Form/ScanZone.d.ts +8 -0
- package/dist/components/Form/ScanZone.d.ts.map +1 -0
- package/dist/components/Form/SearchInput.d.ts +13 -0
- package/dist/components/Form/SearchInput.d.ts.map +1 -0
- package/dist/components/Form/Select.d.ts +18 -0
- package/dist/components/Form/Select.d.ts.map +1 -0
- package/dist/components/Form/Textarea.d.ts +14 -0
- package/dist/components/Form/Textarea.d.ts.map +1 -0
- package/dist/components/Form/Toggle.d.ts +11 -0
- package/dist/components/Form/Toggle.d.ts.map +1 -0
- package/dist/components/Form/index.d.ts +27 -0
- package/dist/components/Form/index.d.ts.map +1 -0
- package/dist/components/Icons/Icon.d.ts +10 -0
- package/dist/components/Icons/Icon.d.ts.map +1 -0
- package/dist/components/Icons/index.d.ts +3 -0
- package/dist/components/Icons/index.d.ts.map +1 -0
- package/dist/components/Layout/Col.d.ts +12 -0
- package/dist/components/Layout/Col.d.ts.map +1 -0
- package/dist/components/Layout/Container.d.ts +9 -0
- package/dist/components/Layout/Container.d.ts.map +1 -0
- package/dist/components/Layout/Divider.d.ts +7 -0
- package/dist/components/Layout/Divider.d.ts.map +1 -0
- package/dist/components/Layout/Footer.d.ts +10 -0
- package/dist/components/Layout/Footer.d.ts.map +1 -0
- package/dist/components/Layout/Grid.d.ts +10 -0
- package/dist/components/Layout/Grid.d.ts.map +1 -0
- package/dist/components/Layout/Header.d.ts +15 -0
- package/dist/components/Layout/Header.d.ts.map +1 -0
- package/dist/components/Layout/Page.d.ts +14 -0
- package/dist/components/Layout/Page.d.ts.map +1 -0
- package/dist/components/Layout/PageHeader.d.ts +9 -0
- package/dist/components/Layout/PageHeader.d.ts.map +1 -0
- package/dist/components/Layout/Row.d.ts +9 -0
- package/dist/components/Layout/Row.d.ts.map +1 -0
- package/dist/components/Layout/Sidebar.d.ts +10 -0
- package/dist/components/Layout/Sidebar.d.ts.map +1 -0
- package/dist/components/Layout/Spacer.d.ts +7 -0
- package/dist/components/Layout/Spacer.d.ts.map +1 -0
- package/dist/components/Layout/Stack.d.ts +10 -0
- package/dist/components/Layout/Stack.d.ts.map +1 -0
- package/dist/components/Layout/index.d.ts +25 -0
- package/dist/components/Layout/index.d.ts.map +1 -0
- package/dist/components/Navigation/Breadcrumb.d.ts +12 -0
- package/dist/components/Navigation/Breadcrumb.d.ts.map +1 -0
- package/dist/components/Navigation/ContextMenu.d.ts +14 -0
- package/dist/components/Navigation/ContextMenu.d.ts.map +1 -0
- package/dist/components/Navigation/Nav.d.ts +31 -0
- package/dist/components/Navigation/Nav.d.ts.map +1 -0
- package/dist/components/Navigation/Pagination.d.ts +9 -0
- package/dist/components/Navigation/Pagination.d.ts.map +1 -0
- package/dist/components/Navigation/Stepper.d.ts +10 -0
- package/dist/components/Navigation/Stepper.d.ts.map +1 -0
- package/dist/components/Navigation/Tabs.d.ts +14 -0
- package/dist/components/Navigation/Tabs.d.ts.map +1 -0
- package/dist/components/Navigation/index.d.ts +13 -0
- package/dist/components/Navigation/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/index.cjs +5 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3704 -0
- package/dist/pages/ComponentShowcase.d.ts +2 -0
- package/dist/pages/ComponentShowcase.d.ts.map +1 -0
- package/dist/pages/DashboardDemo.d.ts +2 -0
- package/dist/pages/DashboardDemo.d.ts.map +1 -0
- package/dist/pages/PrototypeHome.d.ts +3 -0
- package/dist/pages/PrototypeHome.d.ts.map +1 -0
- package/dist/pages/index.d.ts +4 -0
- package/dist/pages/index.d.ts.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tokens/colors.d.ts +259 -0
- package/dist/tokens/colors.d.ts.map +1 -0
- package/dist/tokens/index.d.ts +4 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/layout.d.ts +138 -0
- package/dist/tokens/layout.d.ts.map +1 -0
- package/dist/tokens/typography.d.ts +148 -0
- package/dist/tokens/typography.d.ts.map +1 -0
- package/package.json +42 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,3704 @@
|
|
|
1
|
+
import { jsxs as n, jsx as e, Fragment as ce } from "react/jsx-runtime";
|
|
2
|
+
import { useState as y, useMemo as ie, useRef as Ae, useCallback as Fe, useContext as _e, createContext as Ve, useEffect as na, isValidElement as ra, cloneElement as ia } from "react";
|
|
3
|
+
const we = {
|
|
4
|
+
Activity: [["polyline", { points: "22 12 18 12 15 21 9 3 6 12 2 12" }]],
|
|
5
|
+
AlertTriangle: [["path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }], ["path", { d: "M12 9v4" }], ["path", { d: "M12 17h.01" }]],
|
|
6
|
+
ArrowLeft: [["path", { d: "m12 19-7-7 7-7" }], ["path", { d: "M19 12H5" }]],
|
|
7
|
+
ArrowLeftRight: [["path", { d: "m16 3 4 4-4 4" }], ["path", { d: "M20 7H4" }], ["path", { d: "m8 21-4-4 4-4" }], ["path", { d: "M4 17h16" }]],
|
|
8
|
+
ArrowRight: [["path", { d: "M5 12h14" }], ["path", { d: "m12 5 7 7-7 7" }]],
|
|
9
|
+
BarChart3: [["path", { d: "M3 3v18h18" }], ["path", { d: "M18 17V9" }], ["path", { d: "M13 17V5" }], ["path", { d: "M8 17v-3" }]],
|
|
10
|
+
Bell: [["path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }], ["path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" }]],
|
|
11
|
+
BellOff: [["path", { d: "M13.73 21a2 2 0 0 1-3.46 0" }], ["path", { d: "M18.63 13A17.89 17.89 0 0 1 18 8" }], ["path", { d: "M6.26 6.26A6 6 0 0 0 6 8c0 7-3 9-3 9h14" }], ["path", { d: "m2 2 20 20" }]],
|
|
12
|
+
BookOpen: [["path", { d: "M12 7v14" }], ["path", { d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" }]],
|
|
13
|
+
Boxes: [["path", { d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z" }], ["path", { d: "m7 16.5-4.74-2.85" }], ["path", { d: "m7 16.5 5-3" }], ["path", { d: "M7 16.5v5.17" }], ["path", { d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z" }], ["path", { d: "m17 16.5-5-3" }], ["path", { d: "m17 16.5 4.74-2.85" }], ["path", { d: "M17 16.5v5.17" }], ["path", { d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0Z" }], ["path", { d: "M12 8 7.26 5.15" }], ["path", { d: "m12 8 4.74-2.85" }], ["path", { d: "M12 13.5V8" }]],
|
|
14
|
+
Briefcase: [["rect", { x: 2, y: 7, width: 20, height: 14, rx: 2 }], ["path", { d: "M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16" }]],
|
|
15
|
+
Cable: [["path", { d: "M4 9a2 2 0 0 1-2-2V5h6v2a2 2 0 0 1-2 2Z" }], ["path", { d: "M3 5V3" }], ["path", { d: "M7 5V3" }], ["path", { d: "M19 15a2 2 0 0 1 2 2v2h-6v-2a2 2 0 0 1 2-2Z" }], ["path", { d: "M17 21v-2" }], ["path", { d: "M21 21v-2" }], ["path", { d: "M5 9v3a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V9" }]],
|
|
16
|
+
Calendar: [["path", { d: "M8 2v4" }], ["path", { d: "M16 2v4" }], ["rect", { x: 3, y: 4, width: 18, height: 18, rx: 2 }], ["path", { d: "M3 10h18" }]],
|
|
17
|
+
Camera: [["path", { d: "M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z" }], ["circle", { cx: 12, cy: 13, r: 3 }]],
|
|
18
|
+
Check: [["polyline", { points: "20 6 9 17 4 12" }]],
|
|
19
|
+
CheckCircle2: [["circle", { cx: 12, cy: 12, r: 10 }], ["path", { d: "m9 12 2 2 4-4" }]],
|
|
20
|
+
ChevronDown: [["polyline", { points: "6 9 12 15 18 9" }]],
|
|
21
|
+
ChevronRight: [["polyline", { points: "9 18 15 12 9 6" }]],
|
|
22
|
+
ClipboardCheck: [["rect", { width: 8, height: 4, x: 8, y: 2, rx: 1, ry: 1 }], ["path", { d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2" }], ["path", { d: "m9 14 2 2 4-4" }]],
|
|
23
|
+
Clock: [["circle", { cx: 12, cy: 12, r: 10 }], ["polyline", { points: "12 6 12 12 16 14" }]],
|
|
24
|
+
Copy: [["rect", { x: 8, y: 8, width: 12, height: 12, rx: 2 }], ["path", { d: "M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2" }]],
|
|
25
|
+
Cpu: [["rect", { x: 4, y: 4, width: 16, height: 16, rx: 2 }], ["rect", { x: 9, y: 9, width: 6, height: 6 }], ["line", { x1: 15, y1: 2, x2: 15, y2: 4 }], ["line", { x1: 15, y1: 20, x2: 15, y2: 22 }], ["line", { x1: 2, y1: 15, x2: 4, y2: 15 }], ["line", { x1: 2, y1: 9, x2: 4, y2: 9 }], ["line", { x1: 20, y1: 15, x2: 22, y2: 15 }], ["line", { x1: 20, y1: 9, x2: 22, y2: 9 }], ["line", { x1: 9, y1: 2, x2: 9, y2: 4 }], ["line", { x1: 9, y1: 20, x2: 9, y2: 22 }]],
|
|
26
|
+
Database: [["ellipse", { cx: 12, cy: 5, rx: 9, ry: 3 }], ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5" }], ["path", { d: "M3 12A9 3 0 0 0 21 12" }]],
|
|
27
|
+
Download: [["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }], ["polyline", { points: "7 10 12 15 17 10" }], ["line", { x1: 12, y1: 15, x2: 12, y2: 3 }]],
|
|
28
|
+
Euro: [["path", { d: "M4 10h12" }], ["path", { d: "M4 14h9" }], ["path", { d: "M19 5a7 7 0 1 0 0 14" }]],
|
|
29
|
+
FileCheck: [["path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }], ["polyline", { points: "14 2 14 8 20 8" }], ["path", { d: "m9 15 2 2 4-4" }]],
|
|
30
|
+
FileSpreadsheet: [["path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }], ["polyline", { points: "14 2 14 8 20 8" }], ["path", { d: "M8 13h2" }], ["path", { d: "M8 17h2" }], ["path", { d: "M14 13h2" }], ["path", { d: "M14 17h2" }]],
|
|
31
|
+
FileText: [["path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }], ["polyline", { points: "14 2 14 8 20 8" }], ["line", { x1: 16, y1: 13, x2: 8, y2: 13 }], ["line", { x1: 16, y1: 17, x2: 8, y2: 17 }], ["line", { x1: 10, y1: 9, x2: 8, y2: 9 }]],
|
|
32
|
+
Filter: [["polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" }]],
|
|
33
|
+
Gauge: [["path", { d: "m12 14 4-4" }], ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0" }]],
|
|
34
|
+
Globe: [["circle", { cx: 12, cy: 12, r: 10 }], ["line", { x1: 2, y1: 12, x2: 22, y2: 12 }], ["path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" }]],
|
|
35
|
+
Hash: [["line", { x1: 4, y1: 9, x2: 20, y2: 9 }], ["line", { x1: 4, y1: 15, x2: 20, y2: 15 }], ["path", { d: "M10 3 8 21" }], ["path", { d: "M16 3 14 21" }]],
|
|
36
|
+
HelpCircle: [["circle", { cx: 12, cy: 12, r: 10 }], ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }], ["path", { d: "M12 17h.01" }]],
|
|
37
|
+
Home: [["path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }], ["polyline", { points: "9 22 9 12 15 12 15 22" }]],
|
|
38
|
+
Image: [["rect", { x: 3, y: 3, width: 18, height: 18, rx: 2 }], ["circle", { cx: 8.5, cy: 8.5, r: 1.5 }], ["path", { d: "m21 15-5-5L5 21" }]],
|
|
39
|
+
Landmark: [["line", { x1: 3, y1: 22, x2: 21, y2: 22 }], ["line", { x1: 6, y1: 18, x2: 6, y2: 11 }], ["line", { x1: 10, y1: 18, x2: 10, y2: 11 }], ["line", { x1: 14, y1: 18, x2: 14, y2: 11 }], ["line", { x1: 18, y1: 18, x2: 18, y2: 11 }], ["polygon", { points: "12 2 20 7 4 7" }]],
|
|
40
|
+
Layers: [["path", { d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z" }], ["path", { d: "m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65" }], ["path", { d: "m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65" }]],
|
|
41
|
+
LayoutDashboard: [["rect", { x: 3, y: 3, width: 7, height: 9, rx: 1 }], ["rect", { x: 14, y: 3, width: 7, height: 5, rx: 1 }], ["rect", { x: 14, y: 12, width: 7, height: 9, rx: 1 }], ["rect", { x: 3, y: 16, width: 7, height: 5, rx: 1 }]],
|
|
42
|
+
LayoutGrid: [["rect", { x: 3, y: 3, width: 7, height: 7, rx: 1 }], ["rect", { x: 14, y: 3, width: 7, height: 7, rx: 1 }], ["rect", { x: 14, y: 14, width: 7, height: 7, rx: 1 }], ["rect", { x: 3, y: 14, width: 7, height: 7, rx: 1 }]],
|
|
43
|
+
Link2: [["path", { d: "M9 17H7A5 5 0 0 1 7 7h2" }], ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2" }], ["line", { x1: 8, y1: 12, x2: 16, y2: 12 }]],
|
|
44
|
+
Lock: [["rect", { x: 3, y: 11, width: 18, height: 11, rx: 2 }], ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4" }]],
|
|
45
|
+
Mail: [["rect", { x: 2, y: 4, width: 20, height: 16, rx: 2 }], ["path", { d: "m22 7-10 7L2 7" }]],
|
|
46
|
+
MapPin: [["path", { d: "M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z" }], ["circle", { cx: 12, cy: 10, r: 3 }]],
|
|
47
|
+
Menu: [["line", { x1: 4, y1: 6, x2: 20, y2: 6 }], ["line", { x1: 4, y1: 12, x2: 20, y2: 12 }], ["line", { x1: 4, y1: 18, x2: 20, y2: 18 }]],
|
|
48
|
+
PackageCheck: [["path", { d: "m16 16 2 2 4-4" }], ["path", { d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14" }], ["path", { d: "M3.3 7 12 12l8.7-5" }], ["path", { d: "M12 22V12" }]],
|
|
49
|
+
PackageOpen: [["path", { d: "M12 22v-9" }], ["path", { d: "m15.17 2.21 4.83 2.8a2 2 0 0 1 1 1.73v6.54a2 2 0 0 1-1 1.73l-1 .58" }], ["path", { d: "m2 8.3 10 5.8 10-5.8" }], ["path", { d: "M2 17.7V8.3a2 2 0 0 1 1-1.73l4.83-2.8" }]],
|
|
50
|
+
PackageSearch: [["path", { d: "M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l5 2.857" }], ["path", { d: "M3.3 7 12 12l8.7-5" }], ["path", { d: "M12 22V12" }], ["circle", { cx: 18.5, cy: 15.5, r: 2.5 }], ["path", { d: "M20.27 17.27 22 19" }]],
|
|
51
|
+
Pause: [["rect", { x: 6, y: 4, width: 4, height: 16, rx: 1 }], ["rect", { x: 14, y: 4, width: 4, height: 16, rx: 1 }]],
|
|
52
|
+
Pencil: [["path", { d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" }], ["path", { d: "m15 5 4 4" }]],
|
|
53
|
+
Plane: [["path", { d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z" }]],
|
|
54
|
+
PlaneLanding: [["path", { d: "M2 22h20" }], ["path", { d: "M3 18 21 12 19 8 11 10 6 4 3 5l4 8-4 2z" }]],
|
|
55
|
+
PlaneTakeoff: [["path", { d: "M2 22h20" }], ["path", { d: "M6.36 17.4 4 17l-2-4 1.1-.55 3.77 1 4.12-2.5L4 4l1.5-2 9.65 6.05L19 5.7a2.09 2.09 0 0 1 2.85.75 2.06 2.06 0 0 1-.74 2.83z" }]],
|
|
56
|
+
Play: [["polygon", { points: "6 3 20 12 6 21 6 3" }]],
|
|
57
|
+
Plug: [["path", { d: "M12 22v-5" }], ["path", { d: "M9 8V2" }], ["path", { d: "M15 8V2" }], ["path", { d: "M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z" }]],
|
|
58
|
+
Plus: [["path", { d: "M5 12h14" }], ["path", { d: "M12 5v14" }]],
|
|
59
|
+
Power: [["path", { d: "M12 2v10" }], ["path", { d: "M18.4 6.6a9 9 0 1 1-12.77.04" }]],
|
|
60
|
+
Printer: [["path", { d: "M6 9V2h12v7" }], ["path", { d: "M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" }], ["rect", { x: 6, y: 14, width: 12, height: 8 }]],
|
|
61
|
+
Radio: [["circle", { cx: 12, cy: 12, r: 2 }], ["path", { d: "M4.93 19.07a10 10 0 0 1 0-14.14" }], ["path", { d: "M7.76 16.24a6 6 0 0 1 0-8.49" }], ["path", { d: "M16.24 7.76a6 6 0 0 1 0 8.49" }], ["path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14" }]],
|
|
62
|
+
Receipt: [["path", { d: "M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z" }], ["path", { d: "M16 8h-6" }], ["path", { d: "M16 12h-6" }]],
|
|
63
|
+
RefreshCw: [["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }], ["path", { d: "M21 3v5h-5" }], ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }], ["path", { d: "M3 21v-5h5" }]],
|
|
64
|
+
RotateCcw: [["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }], ["path", { d: "M3 3v5h5" }]],
|
|
65
|
+
Route: [["circle", { cx: 6, cy: 19, r: 3 }], ["path", { d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15" }], ["circle", { cx: 18, cy: 5, r: 3 }]],
|
|
66
|
+
Ruler: [["path", { d: "M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z" }], ["path", { d: "m14.5 12.5 2-2" }], ["path", { d: "m11.5 9.5 2-2" }], ["path", { d: "m8.5 6.5 2-2" }], ["path", { d: "m17.5 15.5 2-2" }]],
|
|
67
|
+
Scale: [["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z" }], ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z" }], ["path", { d: "M7 21h10" }], ["path", { d: "M12 3v18" }], ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2" }]],
|
|
68
|
+
ScanLine: [["path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }], ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }], ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }], ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" }], ["path", { d: "M7 12h10" }]],
|
|
69
|
+
ScanSearch: [["path", { d: "M3 7V5a2 2 0 0 1 2-2h2" }], ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2" }], ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2" }], ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2" }], ["circle", { cx: 11.5, cy: 11.5, r: 2.5 }], ["path", { d: "M21 21l-2.5-2.5" }]],
|
|
70
|
+
Search: [["circle", { cx: 11, cy: 11, r: 8 }], ["path", { d: "m21 21-4.3-4.3" }]],
|
|
71
|
+
Send: [["path", { d: "m22 2-7 20-4-9-9-4Z" }], ["path", { d: "M22 2 11 13" }]],
|
|
72
|
+
Server: [["rect", { x: 2, y: 2, width: 20, height: 8, rx: 2 }], ["rect", { x: 2, y: 14, width: 20, height: 8, rx: 2 }], ["line", { x1: 6, y1: 6, x2: 6.01, y2: 6 }], ["line", { x1: 6, y1: 18, x2: 6.01, y2: 18 }]],
|
|
73
|
+
Settings: [["circle", { cx: 12, cy: 12, r: 3 }], ["path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" }]],
|
|
74
|
+
ShieldCheck: [["path", { d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" }], ["path", { d: "m9 12 2 2 4-4" }]],
|
|
75
|
+
Ship: [["path", { d: "M12 10.189V14" }], ["path", { d: "M12 2v3" }], ["path", { d: "M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6" }], ["path", { d: "M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76" }], ["path", { d: "M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1" }]],
|
|
76
|
+
SlidersHorizontal: [["line", { x1: 21, y1: 4, x2: 14, y2: 4 }], ["line", { x1: 10, y1: 4, x2: 3, y2: 4 }], ["line", { x1: 21, y1: 12, x2: 12, y2: 12 }], ["line", { x1: 8, y1: 12, x2: 3, y2: 12 }], ["line", { x1: 21, y1: 20, x2: 16, y2: 20 }], ["line", { x1: 12, y1: 20, x2: 3, y2: 20 }], ["line", { x1: 14, y1: 2, x2: 14, y2: 6 }], ["line", { x1: 8, y1: 10, x2: 8, y2: 14 }], ["line", { x1: 16, y1: 18, x2: 16, y2: 22 }]],
|
|
77
|
+
Split: [["path", { d: "M16 3h5v5" }], ["path", { d: "M8 3H3v5" }], ["path", { d: "M21 3l-7.83 7.83A4 4 0 0 0 12 13.66V22" }], ["path", { d: "M3 3l7.83 7.83" }]],
|
|
78
|
+
Square: [["rect", { x: 3, y: 3, width: 18, height: 18, rx: 2 }]],
|
|
79
|
+
Tag: [["path", { d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z" }], ["circle", { cx: 7.5, cy: 7.5, r: 0.5 }]],
|
|
80
|
+
Tags: [["path", { d: "M3 5v6.172a2 2 0 0 0 .586 1.414L11 20l8-8-7.414-7.414A2 2 0 0 0 10.172 4H5a2 2 0 0 0-2 1z" }], ["circle", { cx: 7.5, cy: 8.5, r: 0.5 }]],
|
|
81
|
+
Trash2: [["path", { d: "M3 6h18" }], ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }], ["line", { x1: 10, y1: 11, x2: 10, y2: 17 }], ["line", { x1: 14, y1: 11, x2: 14, y2: 17 }]],
|
|
82
|
+
TrendingUp: [["polyline", { points: "22 7 13.5 15.5 8.5 10.5 2 17" }], ["polyline", { points: "16 7 22 7 22 13" }]],
|
|
83
|
+
Truck: [["path", { d: "M10 17h4V5H2v12h3" }], ["path", { d: "M20 17h2v-3.34a4 4 0 0 0-1.17-2.83L19 9h-5v8h1" }], ["circle", { cx: 7.5, cy: 17.5, r: 2.5 }], ["circle", { cx: 17.5, cy: 17.5, r: 2.5 }]],
|
|
84
|
+
Upload: [["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }], ["polyline", { points: "17 8 12 3 7 8" }], ["line", { x1: 12, y1: 3, x2: 12, y2: 15 }]],
|
|
85
|
+
Users: [["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }], ["circle", { cx: 9, cy: 7, r: 4 }], ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }], ["path", { d: "M16 3.13a4 4 0 0 1 0 7.75" }]],
|
|
86
|
+
Wallet: [["path", { d: "M21 12V7H5a2 2 0 0 1 0-4h14v4" }], ["path", { d: "M3 5v14a2 2 0 0 0 2 2h16v-5" }], ["path", { d: "M18 12a2 2 0 0 0 0 4h4v-4Z" }]],
|
|
87
|
+
Warehouse: [["path", { d: "M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35a2 2 0 0 1 1.18-1.82l8-3.6a2 2 0 0 1 1.64 0l8 3.6A2 2 0 0 1 22 8.35Z" }], ["path", { d: "M6 18h12" }], ["path", { d: "M6 14h12" }], ["path", { d: "M6 22V10" }]],
|
|
88
|
+
Workflow: [["rect", { x: 3, y: 3, width: 8, height: 8, rx: 2 }], ["path", { d: "M7 11v4a2 2 0 0 0 2 2h4" }], ["rect", { x: 13, y: 13, width: 8, height: 8, rx: 2 }]],
|
|
89
|
+
XCircle: [["circle", { cx: 12, cy: 12, r: 10 }], ["path", { d: "m15 9-6 6" }], ["path", { d: "m9 9 6 6" }]],
|
|
90
|
+
Zap: [["polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" }]]
|
|
91
|
+
}, la = [...Object.keys(we), "LeafMark", "Barcode"].sort();
|
|
92
|
+
function ve(...a) {
|
|
93
|
+
return a.filter(Boolean).join(" ");
|
|
94
|
+
}
|
|
95
|
+
function ca([a, t], r) {
|
|
96
|
+
return a === "circle" ? /* @__PURE__ */ e("circle", { ...t }, r) : a === "rect" ? /* @__PURE__ */ e("rect", { ...t }, r) : a === "line" ? /* @__PURE__ */ e("line", { ...t }, r) : a === "polyline" ? /* @__PURE__ */ e("polyline", { ...t }, r) : a === "polygon" ? /* @__PURE__ */ e("polygon", { ...t }, r) : a === "ellipse" ? /* @__PURE__ */ e("ellipse", { ...t }, r) : /* @__PURE__ */ e("path", { ...t }, r);
|
|
97
|
+
}
|
|
98
|
+
function oa(a) {
|
|
99
|
+
const t = a || "YCC";
|
|
100
|
+
return Array.from({ length: 11 }, (r, i) => {
|
|
101
|
+
const l = t.charCodeAt(i % t.length) + i;
|
|
102
|
+
return { x: 3 + i * 1.7, width: l % 3 === 0 ? 0.9 : 0.4, height: 14 + l % 5 };
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function s({ name: a, size: t = 16, color: r, className: i }) {
|
|
106
|
+
if (a === "LeafMark")
|
|
107
|
+
return /* @__PURE__ */ n("svg", { className: ve("ycc-icon", i), width: t, height: t, viewBox: "0 0 24 24", fill: "none", style: { color: r }, "aria-hidden": "true", children: [
|
|
108
|
+
/* @__PURE__ */ e("path", { d: "M5 19c0-7 5-13 14-14 0 9-5 14-12 14-1 0-2 0-2-1z", fill: "currentColor", opacity: "0.92" }),
|
|
109
|
+
/* @__PURE__ */ e("path", { d: "M5.5 18.5c3-5 7-8 11-9.5", stroke: "var(--ycc-card)", strokeWidth: "1.3", strokeLinecap: "round" })
|
|
110
|
+
] });
|
|
111
|
+
if (a === "Barcode")
|
|
112
|
+
return /* @__PURE__ */ e("svg", { className: ve("ycc-icon", i), width: t, height: t, viewBox: "0 0 24 24", fill: "none", style: { color: r }, "aria-hidden": "true", children: oa(a).map((c, o) => /* @__PURE__ */ e("rect", { x: c.x, y: "4", width: c.width, height: c.height, fill: "currentColor" }, o)) });
|
|
113
|
+
const l = we[a] ?? we.HelpCircle;
|
|
114
|
+
return /* @__PURE__ */ e(
|
|
115
|
+
"svg",
|
|
116
|
+
{
|
|
117
|
+
className: ve("ycc-icon", i),
|
|
118
|
+
width: t,
|
|
119
|
+
height: t,
|
|
120
|
+
viewBox: "0 0 24 24",
|
|
121
|
+
stroke: "currentColor",
|
|
122
|
+
fill: "none",
|
|
123
|
+
strokeWidth: 1.5,
|
|
124
|
+
strokeLinecap: "round",
|
|
125
|
+
strokeLinejoin: "round",
|
|
126
|
+
style: { color: r },
|
|
127
|
+
"aria-hidden": "true",
|
|
128
|
+
children: l.map(ca)
|
|
129
|
+
}
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
function sa(...a) {
|
|
133
|
+
return a.filter(Boolean).join(" ");
|
|
134
|
+
}
|
|
135
|
+
function N({
|
|
136
|
+
variant: a = "primary",
|
|
137
|
+
size: t = "md",
|
|
138
|
+
loading: r = !1,
|
|
139
|
+
leftIcon: i,
|
|
140
|
+
rightIcon: l,
|
|
141
|
+
disabled: c,
|
|
142
|
+
onClick: o,
|
|
143
|
+
type: d = "button",
|
|
144
|
+
children: h,
|
|
145
|
+
className: p
|
|
146
|
+
}) {
|
|
147
|
+
return /* @__PURE__ */ n(
|
|
148
|
+
"button",
|
|
149
|
+
{
|
|
150
|
+
type: d,
|
|
151
|
+
disabled: c || r,
|
|
152
|
+
onClick: o,
|
|
153
|
+
className: sa(
|
|
154
|
+
"ycc-button",
|
|
155
|
+
`ycc-button--${a}`,
|
|
156
|
+
`ycc-button--${t}`,
|
|
157
|
+
r && "ycc-button--loading",
|
|
158
|
+
p
|
|
159
|
+
),
|
|
160
|
+
children: [
|
|
161
|
+
r ? /* @__PURE__ */ e(s, { name: "RefreshCw", size: 14, className: "ycc-button__spinner" }) : i ? /* @__PURE__ */ e(s, { name: i, size: 14 }) : null,
|
|
162
|
+
r ? null : h,
|
|
163
|
+
!r && l ? /* @__PURE__ */ e(s, { name: l, size: 14 }) : null
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
function da(...a) {
|
|
169
|
+
return a.filter(Boolean).join(" ");
|
|
170
|
+
}
|
|
171
|
+
function q({ checked: a, defaultChecked: t = !1, onChange: r, disabled: i, label: l, size: c = "md" }) {
|
|
172
|
+
const [o, d] = y(t), h = a ?? o;
|
|
173
|
+
function p() {
|
|
174
|
+
if (i) return;
|
|
175
|
+
const u = !h;
|
|
176
|
+
a === void 0 && d(u), r?.(u);
|
|
177
|
+
}
|
|
178
|
+
return /* @__PURE__ */ n("label", { className: "ycc-toggle", children: [
|
|
179
|
+
/* @__PURE__ */ e(
|
|
180
|
+
"button",
|
|
181
|
+
{
|
|
182
|
+
type: "button",
|
|
183
|
+
role: "switch",
|
|
184
|
+
"aria-checked": h,
|
|
185
|
+
disabled: i,
|
|
186
|
+
onClick: p,
|
|
187
|
+
className: da(
|
|
188
|
+
"ycc-toggle__control",
|
|
189
|
+
`ycc-toggle__control--${c}`,
|
|
190
|
+
h && "ycc-toggle__control--checked"
|
|
191
|
+
),
|
|
192
|
+
children: /* @__PURE__ */ e("span", { className: "ycc-toggle__knob" })
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
l ? /* @__PURE__ */ e("span", { children: l }) : null
|
|
196
|
+
] });
|
|
197
|
+
}
|
|
198
|
+
function De(...a) {
|
|
199
|
+
return a.filter(Boolean).join(" ");
|
|
200
|
+
}
|
|
201
|
+
function H({ type: a = "text", error: t, size: r = "md", leftAddon: i, rightAddon: l, disabled: c, className: o, ...d }) {
|
|
202
|
+
return /* @__PURE__ */ n("div", { className: De("ycc-input-field", o), children: [
|
|
203
|
+
/* @__PURE__ */ n("div", { className: De("ycc-input-control", `ycc-input-control--${r}`, t && "ycc-input-control--error", c && "ycc-input-control--disabled"), children: [
|
|
204
|
+
i ? /* @__PURE__ */ e("span", { className: "ycc-input-addon", children: i }) : null,
|
|
205
|
+
/* @__PURE__ */ e("input", { className: "ycc-input", type: a, disabled: c, ...d }),
|
|
206
|
+
l ? /* @__PURE__ */ e("span", { className: "ycc-input-addon", children: l }) : null
|
|
207
|
+
] }),
|
|
208
|
+
t ? /* @__PURE__ */ e("div", { className: "ycc-input-error", children: t }) : null
|
|
209
|
+
] });
|
|
210
|
+
}
|
|
211
|
+
function ha(...a) {
|
|
212
|
+
return a.filter(Boolean).join(" ");
|
|
213
|
+
}
|
|
214
|
+
function ne({ options: a, placeholder: t, error: r, size: i = "md", ...l }) {
|
|
215
|
+
return /* @__PURE__ */ n("div", { className: "ycc-select-field", children: [
|
|
216
|
+
/* @__PURE__ */ n("select", { className: ha("ycc-select", `ycc-select--${i}`, r && "ycc-select--error"), ...l, children: [
|
|
217
|
+
t ? /* @__PURE__ */ e("option", { value: "", children: t }) : null,
|
|
218
|
+
a.map((c) => /* @__PURE__ */ e("option", { value: c.value, children: c.label }, c.value))
|
|
219
|
+
] }),
|
|
220
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 14, className: "ycc-select-icon" }),
|
|
221
|
+
r ? /* @__PURE__ */ e("div", { className: "ycc-select-error", children: r }) : null
|
|
222
|
+
] });
|
|
223
|
+
}
|
|
224
|
+
function Le(...a) {
|
|
225
|
+
return a.filter(Boolean).join(" ");
|
|
226
|
+
}
|
|
227
|
+
function se({ checked: a, defaultChecked: t, indeterminate: r, onChange: i, label: l, disabled: c }) {
|
|
228
|
+
return /* @__PURE__ */ n("label", { className: Le("ycc-checkbox", c && "ycc-checkbox--disabled"), children: [
|
|
229
|
+
/* @__PURE__ */ e("input", { className: "ycc-checkbox__input", type: "checkbox", checked: a, defaultChecked: t, disabled: c, onChange: i }),
|
|
230
|
+
/* @__PURE__ */ e("span", { className: Le("ycc-checkbox__box", a && "ycc-checkbox__box--checked", r && "ycc-checkbox__box--indeterminate") }),
|
|
231
|
+
l ? /* @__PURE__ */ e("span", { children: l }) : null
|
|
232
|
+
] });
|
|
233
|
+
}
|
|
234
|
+
function ua(...a) {
|
|
235
|
+
return a.filter(Boolean).join(" ");
|
|
236
|
+
}
|
|
237
|
+
function me({ error: a, rows: t = 4, resize: r = "vertical", ...i }) {
|
|
238
|
+
return /* @__PURE__ */ n("div", { className: "ycc-textarea-field", children: [
|
|
239
|
+
/* @__PURE__ */ e("textarea", { className: ua("ycc-textarea", `ycc-textarea--${r}`, a && "ycc-textarea--error"), rows: t, ...i }),
|
|
240
|
+
a ? /* @__PURE__ */ e("div", { className: "ycc-textarea-error", children: a }) : null
|
|
241
|
+
] });
|
|
242
|
+
}
|
|
243
|
+
function fe({ label: a, required: t, helper: r, error: i, children: l }) {
|
|
244
|
+
return /* @__PURE__ */ n("div", { className: "ycc-form-group", children: [
|
|
245
|
+
a ? /* @__PURE__ */ n("label", { className: "ycc-form-group__label", children: [
|
|
246
|
+
a,
|
|
247
|
+
" ",
|
|
248
|
+
t ? /* @__PURE__ */ e("span", { className: "ycc-form-group__required", children: "*" }) : null
|
|
249
|
+
] }) : null,
|
|
250
|
+
l,
|
|
251
|
+
i ? /* @__PURE__ */ e("div", { className: "ycc-form-group__error", children: i }) : r ? /* @__PURE__ */ e("div", { className: "ycc-form-group__helper", children: r }) : null
|
|
252
|
+
] });
|
|
253
|
+
}
|
|
254
|
+
function pa(a) {
|
|
255
|
+
return a.trim().toLowerCase().replace(/\s+/g, "-");
|
|
256
|
+
}
|
|
257
|
+
function oe({ label: a, variant: t, size: r = "sm" }) {
|
|
258
|
+
const i = pa(t);
|
|
259
|
+
return /* @__PURE__ */ e("span", { className: `ycc-badge ycc-badge--${r} ycc-badge--${i || "fallback"}`, children: a });
|
|
260
|
+
}
|
|
261
|
+
function ma(a) {
|
|
262
|
+
return a.trim().split(/\s+/).filter(Boolean).slice(0, 2).map((t) => t.charAt(0).toUpperCase()).join("");
|
|
263
|
+
}
|
|
264
|
+
function le({ src: a, name: t, size: r = "md", status: i }) {
|
|
265
|
+
return /* @__PURE__ */ n("span", { className: `ycc-avatar ycc-avatar--${r}`, "aria-label": t, children: [
|
|
266
|
+
a ? /* @__PURE__ */ e("img", { className: "ycc-avatar__image", src: a, alt: t }) : ma(t),
|
|
267
|
+
i ? /* @__PURE__ */ e("span", { className: `ycc-avatar__status ycc-avatar__status--${i}` }) : null
|
|
268
|
+
] });
|
|
269
|
+
}
|
|
270
|
+
function Q({ label: a, onRemove: t, color: r, size: i = "sm" }) {
|
|
271
|
+
return /* @__PURE__ */ n("span", { className: `ycc-tag ycc-tag--${i}`, style: r ? { color: r, borderColor: r } : void 0, children: [
|
|
272
|
+
a,
|
|
273
|
+
t ? /* @__PURE__ */ e("button", { type: "button", className: "ycc-tag__remove", onClick: t, "aria-label": `Remove ${a}`, children: "×" }) : null
|
|
274
|
+
] });
|
|
275
|
+
}
|
|
276
|
+
function We(...a) {
|
|
277
|
+
return a.filter(Boolean).join(" ");
|
|
278
|
+
}
|
|
279
|
+
function ge({ children: a, className: t, padding: r = "md", shadow: i }) {
|
|
280
|
+
return /* @__PURE__ */ e("section", { className: We("ycc-card", `ycc-card--padding-${r}`, i && "ycc-card--shadow", t), children: a });
|
|
281
|
+
}
|
|
282
|
+
function Se({ title: a, subtitle: t, actions: r, icon: i }) {
|
|
283
|
+
return /* @__PURE__ */ n("div", { className: "ycc-card-header", children: [
|
|
284
|
+
/* @__PURE__ */ n("div", { children: [
|
|
285
|
+
/* @__PURE__ */ n("div", { className: "ycc-card-header__title-row", children: [
|
|
286
|
+
i ? /* @__PURE__ */ e(s, { name: i, size: 15, className: "ycc-card-header__icon" }) : null,
|
|
287
|
+
/* @__PURE__ */ e("h3", { className: "ycc-card-header__title", children: a })
|
|
288
|
+
] }),
|
|
289
|
+
t ? /* @__PURE__ */ e("p", { className: "ycc-card-header__subtitle", children: t }) : null
|
|
290
|
+
] }),
|
|
291
|
+
r
|
|
292
|
+
] });
|
|
293
|
+
}
|
|
294
|
+
function Lt({ children: a, className: t }) {
|
|
295
|
+
return /* @__PURE__ */ e("div", { className: We("ycc-card-body", t), children: a });
|
|
296
|
+
}
|
|
297
|
+
function Ge({ children: a, align: t = "right" }) {
|
|
298
|
+
return /* @__PURE__ */ e("div", { className: `ycc-card-footer ycc-card-footer--${t}`, children: a });
|
|
299
|
+
}
|
|
300
|
+
function V({ title: a, value: t, change: r, icon: i, iconColor: l, trend: c = "flat", subtitle: o, loading: d }) {
|
|
301
|
+
const h = r === void 0 || c === "flat" ? "flat" : r >= 0 ? "positive" : "negative", p = c === "down" ? "ArrowRight" : "TrendingUp";
|
|
302
|
+
return /* @__PURE__ */ n("article", { className: "ycc-stat-card", children: [
|
|
303
|
+
/* @__PURE__ */ n("div", { className: "ycc-stat-card__top", children: [
|
|
304
|
+
/* @__PURE__ */ e("div", { className: "ycc-stat-card__title", children: a }),
|
|
305
|
+
i ? /* @__PURE__ */ e(s, { name: i, size: 18, className: "ycc-stat-card__icon", color: l }) : null
|
|
306
|
+
] }),
|
|
307
|
+
/* @__PURE__ */ e("div", { className: "ycc-stat-card__value", children: d ? /* @__PURE__ */ e("span", { className: "ycc-stat-card__skeleton" }) : t }),
|
|
308
|
+
/* @__PURE__ */ n("div", { className: "ycc-stat-card__meta", children: [
|
|
309
|
+
!d && r !== void 0 ? /* @__PURE__ */ n("span", { className: `ycc-stat-card__change ycc-stat-card__change--${h}`, children: [
|
|
310
|
+
c !== "flat" ? /* @__PURE__ */ e(s, { name: p, size: 12 }) : null,
|
|
311
|
+
r > 0 ? "+" : "",
|
|
312
|
+
r,
|
|
313
|
+
"%"
|
|
314
|
+
] }) : null,
|
|
315
|
+
o ? /* @__PURE__ */ e("span", { children: o }) : null
|
|
316
|
+
] })
|
|
317
|
+
] });
|
|
318
|
+
}
|
|
319
|
+
function Ke({ message: a, variant: t = "info", title: r, onDismiss: i, action: l }) {
|
|
320
|
+
return /* @__PURE__ */ n("div", { className: `ycc-banner ycc-banner--${t}`, children: [
|
|
321
|
+
/* @__PURE__ */ n("span", { className: "ycc-banner__content", children: [
|
|
322
|
+
r ? /* @__PURE__ */ e("strong", { className: "ycc-banner__title", children: r }) : null,
|
|
323
|
+
/* @__PURE__ */ e("span", { children: a })
|
|
324
|
+
] }),
|
|
325
|
+
/* @__PURE__ */ n("span", { className: "ycc-banner__actions", children: [
|
|
326
|
+
l ? /* @__PURE__ */ e("button", { type: "button", className: "ycc-banner__action", onClick: l.onClick, children: l.label }) : null,
|
|
327
|
+
i ? /* @__PURE__ */ e("button", { type: "button", onClick: i, "aria-label": "Dismiss banner", children: /* @__PURE__ */ e(s, { name: "XCircle", size: 16 }) }) : null
|
|
328
|
+
] })
|
|
329
|
+
] });
|
|
330
|
+
}
|
|
331
|
+
function de(a) {
|
|
332
|
+
return typeof a == "string" || typeof a == "number" ? String(a) : "";
|
|
333
|
+
}
|
|
334
|
+
function ze(...a) {
|
|
335
|
+
return a.filter(Boolean).join(" ");
|
|
336
|
+
}
|
|
337
|
+
function Ue({
|
|
338
|
+
columns: a,
|
|
339
|
+
data: t,
|
|
340
|
+
loading: r,
|
|
341
|
+
searchable: i,
|
|
342
|
+
searchPlaceholder: l = "Search...",
|
|
343
|
+
striped: c,
|
|
344
|
+
clickableRows: o,
|
|
345
|
+
onRowClick: d,
|
|
346
|
+
emptyMessage: h = "No records found",
|
|
347
|
+
className: p
|
|
348
|
+
}) {
|
|
349
|
+
const [u, m] = y(""), [k, M] = y(null), z = ie(() => {
|
|
350
|
+
const f = u.toLowerCase(), O = f ? t.filter((g) => Object.values(g).some((A) => de(A).toLowerCase().includes(f))) : t;
|
|
351
|
+
return k ? [...O].sort((g, A) => {
|
|
352
|
+
const B = de(g[k.key]), G = de(A[k.key]);
|
|
353
|
+
return k.direction === "asc" ? B.localeCompare(G, void 0, { numeric: !0 }) : G.localeCompare(B, void 0, { numeric: !0 });
|
|
354
|
+
}) : O;
|
|
355
|
+
}, [t, u, k]);
|
|
356
|
+
function Z(f) {
|
|
357
|
+
f.sortable && M((O) => O?.key === f.key && O.direction === "asc" ? { key: f.key, direction: "desc" } : { key: f.key, direction: "asc" });
|
|
358
|
+
}
|
|
359
|
+
return /* @__PURE__ */ n("div", { className: ze("ycc-table-wrap", p), children: [
|
|
360
|
+
i ? /* @__PURE__ */ e("div", { className: "ycc-table-toolbar", children: /* @__PURE__ */ e(H, { value: u, onChange: (f) => m(f.target.value), placeholder: l, leftAddon: /* @__PURE__ */ e(s, { name: "Search", size: 14 }) }) }) : null,
|
|
361
|
+
/* @__PURE__ */ e("div", { className: "ycc-table-scroll", children: /* @__PURE__ */ n("table", { className: ze("ycc-table", c && "ycc-table--striped", o && "ycc-table--clickable"), children: [
|
|
362
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ e("tr", { children: a.map((f) => /* @__PURE__ */ e("th", { style: { width: f.width }, children: f.sortable ? /* @__PURE__ */ n("button", { type: "button", className: "ycc-table-sort", onClick: () => Z(f), children: [
|
|
363
|
+
f.header,
|
|
364
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 12 })
|
|
365
|
+
] }) : f.header }, String(f.key))) }) }),
|
|
366
|
+
/* @__PURE__ */ e("tbody", { children: r ? Array.from({ length: 5 }, (f, O) => /* @__PURE__ */ e("tr", { children: a.map((g) => /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: "ycc-table-skeleton" }) }, String(g.key))) }, O)) : z.length ? z.map((f, O) => /* @__PURE__ */ e("tr", { onClick: () => d?.(f), children: a.map((g) => {
|
|
367
|
+
const A = f[g.key];
|
|
368
|
+
return /* @__PURE__ */ e("td", { children: g.render ? g.render(A, f) : de(A) }, String(g.key));
|
|
369
|
+
}) }, O)) : /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e("td", { className: "ycc-table-empty", colSpan: a.length, children: h }) }) })
|
|
370
|
+
] }) })
|
|
371
|
+
] });
|
|
372
|
+
}
|
|
373
|
+
function zt({ label: a, value: t, size: r = "md" }) {
|
|
374
|
+
return /* @__PURE__ */ n("div", { className: `ycc-kv ycc-kv--${r}`, children: [
|
|
375
|
+
/* @__PURE__ */ e("span", { className: "ycc-kv__label", children: a }),
|
|
376
|
+
/* @__PURE__ */ e("span", { className: "ycc-kv__value", children: t })
|
|
377
|
+
] });
|
|
378
|
+
}
|
|
379
|
+
function Ot({ icon: a = "Inbox", title: t, message: r, action: i }) {
|
|
380
|
+
return /* @__PURE__ */ n("div", { className: "ycc-empty-state", children: [
|
|
381
|
+
/* @__PURE__ */ e("span", { className: "ycc-empty-state__icon", children: /* @__PURE__ */ e(s, { name: a, size: 24 }) }),
|
|
382
|
+
/* @__PURE__ */ e("h3", { children: t }),
|
|
383
|
+
r ? /* @__PURE__ */ e("p", { children: r }) : null,
|
|
384
|
+
i ? /* @__PURE__ */ e("div", { className: "ycc-empty-state__action", children: i }) : null
|
|
385
|
+
] });
|
|
386
|
+
}
|
|
387
|
+
function ga(a, t) {
|
|
388
|
+
return Math.max(0, Math.min(a, t));
|
|
389
|
+
}
|
|
390
|
+
function Bt({ value: a, max: t = 100, size: r = 52, color: i = "var(--ycc-accent)", label: l }) {
|
|
391
|
+
const o = 2 * Math.PI * 18, d = t > 0 ? ga(a, t) / t : 0;
|
|
392
|
+
return /* @__PURE__ */ n("figure", { className: "ycc-donut", style: { width: r, height: r, color: i }, children: [
|
|
393
|
+
/* @__PURE__ */ n("svg", { viewBox: "0 0 44 44", "aria-label": l ?? `${Math.round(d * 100)}%`, children: [
|
|
394
|
+
/* @__PURE__ */ e("circle", { className: "ycc-donut__track", cx: "22", cy: "22", r: 18 }),
|
|
395
|
+
/* @__PURE__ */ e("circle", { className: "ycc-donut__value", cx: "22", cy: "22", r: 18, strokeDasharray: o, strokeDashoffset: o * (1 - d) })
|
|
396
|
+
] }),
|
|
397
|
+
/* @__PURE__ */ e("figcaption", { children: l ?? `${Math.round(d * 100)}%` })
|
|
398
|
+
] });
|
|
399
|
+
}
|
|
400
|
+
function ba(a, t, r) {
|
|
401
|
+
if (a.length === 0) return "";
|
|
402
|
+
const i = Math.min(...a), c = Math.max(...a) - i || 1;
|
|
403
|
+
return a.map((o, d) => {
|
|
404
|
+
const h = a.length === 1 ? t / 2 : d / (a.length - 1) * t, p = r - (o - i) / c * r;
|
|
405
|
+
return `${d === 0 ? "M" : "L"} ${h.toFixed(2)} ${p.toFixed(2)}`;
|
|
406
|
+
}).join(" ");
|
|
407
|
+
}
|
|
408
|
+
function Rt({ data: a, color: t = "var(--ycc-accent)", width: r = 120, height: i = 36 }) {
|
|
409
|
+
const l = { color: t };
|
|
410
|
+
return /* @__PURE__ */ e("svg", { className: "ycc-trend-spark", viewBox: `0 0 ${r} ${i}`, width: r, height: i, style: l, role: "img", "aria-label": "Trend sparkline", children: /* @__PURE__ */ e("path", { d: ba(a, r, i) }) });
|
|
411
|
+
}
|
|
412
|
+
function Et({ labelA: a, valueA: t, labelB: r, valueB: i, color: l = "var(--ycc-accent)" }) {
|
|
413
|
+
const c = Math.max(t + i, 1), d = { "--ycc-compare-a": `${Math.max(0, Math.min(100, t / c * 100))}%`, color: l };
|
|
414
|
+
return /* @__PURE__ */ n("div", { className: "ycc-compare-bar", style: d, children: [
|
|
415
|
+
/* @__PURE__ */ n("div", { className: "ycc-compare-bar__meta", children: [
|
|
416
|
+
/* @__PURE__ */ n("span", { children: [
|
|
417
|
+
a,
|
|
418
|
+
" ",
|
|
419
|
+
/* @__PURE__ */ e("strong", { children: t })
|
|
420
|
+
] }),
|
|
421
|
+
/* @__PURE__ */ n("span", { children: [
|
|
422
|
+
r,
|
|
423
|
+
" ",
|
|
424
|
+
/* @__PURE__ */ e("strong", { children: i })
|
|
425
|
+
] })
|
|
426
|
+
] }),
|
|
427
|
+
/* @__PURE__ */ e("div", { className: "ycc-compare-bar__track", children: /* @__PURE__ */ e("span", {}) })
|
|
428
|
+
] });
|
|
429
|
+
}
|
|
430
|
+
function $t({ content: a, children: t, position: r = "top" }) {
|
|
431
|
+
return /* @__PURE__ */ n("span", { className: `ycc-tooltip ycc-tooltip--${r}`, children: [
|
|
432
|
+
t,
|
|
433
|
+
/* @__PURE__ */ e("span", { className: "ycc-tooltip__content", role: "tooltip", children: a })
|
|
434
|
+
] });
|
|
435
|
+
}
|
|
436
|
+
function Pt({ trigger: a, children: t, position: r = "bottom" }) {
|
|
437
|
+
const [i, l] = y(!1);
|
|
438
|
+
return /* @__PURE__ */ n("span", { className: `ycc-popover ycc-popover--${r}`, children: [
|
|
439
|
+
/* @__PURE__ */ e("button", { type: "button", className: "ycc-popover__trigger", onClick: () => l((c) => !c), "aria-expanded": i, children: a }),
|
|
440
|
+
i ? /* @__PURE__ */ e("span", { className: "ycc-popover__panel", children: t }) : null
|
|
441
|
+
] });
|
|
442
|
+
}
|
|
443
|
+
function It({ items: a, defaultOpen: t = [] }) {
|
|
444
|
+
const [r, i] = y(t);
|
|
445
|
+
function l(c) {
|
|
446
|
+
i((o) => o.includes(c) ? o.filter((d) => d !== c) : [...o, c]);
|
|
447
|
+
}
|
|
448
|
+
return /* @__PURE__ */ e("div", { className: "ycc-accordion", children: a.map((c) => {
|
|
449
|
+
const o = r.includes(c.id);
|
|
450
|
+
return /* @__PURE__ */ n("section", { className: "ycc-accordion__item", children: [
|
|
451
|
+
/* @__PURE__ */ n("button", { type: "button", className: "ycc-accordion__button", onClick: () => l(c.id), "aria-expanded": o, children: [
|
|
452
|
+
/* @__PURE__ */ e("span", { children: c.title }),
|
|
453
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 14, className: o ? "ycc-accordion__chevron ycc-accordion__chevron--open" : "ycc-accordion__chevron" })
|
|
454
|
+
] }),
|
|
455
|
+
o ? /* @__PURE__ */ e("div", { className: "ycc-accordion__content", children: c.content }) : null
|
|
456
|
+
] }, c.id);
|
|
457
|
+
}) });
|
|
458
|
+
}
|
|
459
|
+
function ya(a) {
|
|
460
|
+
return a?.trim().toLowerCase().replace(/\s+/g, "-") || "default";
|
|
461
|
+
}
|
|
462
|
+
function Ht({ events: a }) {
|
|
463
|
+
return /* @__PURE__ */ e("ol", { className: "ycc-timeline", children: a.map((t, r) => /* @__PURE__ */ n("li", { className: `ycc-timeline__event ycc-timeline__event--${ya(t.variant)}`, children: [
|
|
464
|
+
/* @__PURE__ */ e("span", { className: "ycc-timeline__dot", children: t.icon ? /* @__PURE__ */ e(s, { name: t.icon, size: 12 }) : null }),
|
|
465
|
+
/* @__PURE__ */ n("div", { className: "ycc-timeline__body", children: [
|
|
466
|
+
/* @__PURE__ */ n("div", { className: "ycc-timeline__head", children: [
|
|
467
|
+
/* @__PURE__ */ e("strong", { children: t.label }),
|
|
468
|
+
/* @__PURE__ */ e("time", { children: t.timestamp })
|
|
469
|
+
] }),
|
|
470
|
+
t.description ? /* @__PURE__ */ e("p", { children: t.description }) : null
|
|
471
|
+
] })
|
|
472
|
+
] }, `${t.label}-${r}`)) });
|
|
473
|
+
}
|
|
474
|
+
function Vt({ value: a, max: t = 100, label: r, variant: i = "default", showPercent: l }) {
|
|
475
|
+
const c = t > 0 ? Math.max(0, Math.min(100, a / t * 100)) : 0;
|
|
476
|
+
return /* @__PURE__ */ n("div", { className: `ycc-progress ycc-progress--${i}`, style: { "--ycc-progress-value": `${c}%` }, children: [
|
|
477
|
+
r || l ? /* @__PURE__ */ n("div", { className: "ycc-progress__meta", children: [
|
|
478
|
+
/* @__PURE__ */ e("span", { children: r }),
|
|
479
|
+
l ? /* @__PURE__ */ n("strong", { children: [
|
|
480
|
+
Math.round(c),
|
|
481
|
+
"%"
|
|
482
|
+
] }) : null
|
|
483
|
+
] }) : null,
|
|
484
|
+
/* @__PURE__ */ e("div", { className: "ycc-progress__track", children: /* @__PURE__ */ e("span", {}) })
|
|
485
|
+
] });
|
|
486
|
+
}
|
|
487
|
+
function Wt({ items: a, columns: t = 2 }) {
|
|
488
|
+
return /* @__PURE__ */ e("dl", { className: "ycc-data-list", style: { "--ycc-data-list-columns": t }, children: a.map((r) => /* @__PURE__ */ n("div", { className: "ycc-data-list__item", children: [
|
|
489
|
+
/* @__PURE__ */ e("dt", { children: r.label }),
|
|
490
|
+
/* @__PURE__ */ e("dd", { children: r.value })
|
|
491
|
+
] }, r.label)) });
|
|
492
|
+
}
|
|
493
|
+
function Gt({ value: a, label: t = "Copy", copiedLabel: r = "Copied" }) {
|
|
494
|
+
const [i, l] = y(!1);
|
|
495
|
+
async function c() {
|
|
496
|
+
await navigator.clipboard?.writeText(a), l(!0), window.setTimeout(() => l(!1), 1600);
|
|
497
|
+
}
|
|
498
|
+
return /* @__PURE__ */ n("button", { type: "button", className: i ? "ycc-copy-button ycc-copy-button--copied" : "ycc-copy-button", onClick: c, children: [
|
|
499
|
+
/* @__PURE__ */ e(s, { name: i ? "Check" : "Copy", size: 14 }),
|
|
500
|
+
i ? r : t
|
|
501
|
+
] });
|
|
502
|
+
}
|
|
503
|
+
function va(...a) {
|
|
504
|
+
return a.filter(Boolean).join(" ");
|
|
505
|
+
}
|
|
506
|
+
function fa({ onFilesSelected: a, accept: t, multiple: r, maxSizeMB: i, label: l = "Drop files here or click to browse", disabled: c }) {
|
|
507
|
+
const o = Ae(null), [d, h] = y(!1), [p, u] = y([]), [m, k] = y("");
|
|
508
|
+
function M(g) {
|
|
509
|
+
if (i) {
|
|
510
|
+
const A = g.find((B) => B.size > i * 1024 * 1024);
|
|
511
|
+
if (A) return `${A.name} exceeds ${i}MB`;
|
|
512
|
+
}
|
|
513
|
+
return "";
|
|
514
|
+
}
|
|
515
|
+
function z(g) {
|
|
516
|
+
const A = M(g);
|
|
517
|
+
k(A), !A && (u(g), a(g));
|
|
518
|
+
}
|
|
519
|
+
function Z(g) {
|
|
520
|
+
z(Array.from(g.target.files ?? []));
|
|
521
|
+
}
|
|
522
|
+
function f(g) {
|
|
523
|
+
g.preventDefault(), h(!1), c || z(Array.from(g.dataTransfer.files));
|
|
524
|
+
}
|
|
525
|
+
function O(g) {
|
|
526
|
+
u((A) => A.filter((B) => B !== g));
|
|
527
|
+
}
|
|
528
|
+
return /* @__PURE__ */ n("div", { className: "ycc-file-upload", children: [
|
|
529
|
+
/* @__PURE__ */ n(
|
|
530
|
+
"label",
|
|
531
|
+
{
|
|
532
|
+
className: va("ycc-file-upload__zone", d && "ycc-file-upload__zone--drag", c && "ycc-file-upload__zone--disabled"),
|
|
533
|
+
onDragOver: (g) => {
|
|
534
|
+
g.preventDefault(), h(!0);
|
|
535
|
+
},
|
|
536
|
+
onDragLeave: () => h(!1),
|
|
537
|
+
onDrop: f,
|
|
538
|
+
onClick: () => !c && o.current?.click(),
|
|
539
|
+
children: [
|
|
540
|
+
/* @__PURE__ */ e(s, { name: "Upload", size: 18 }),
|
|
541
|
+
/* @__PURE__ */ e("span", { className: "ycc-file-upload__label", children: l }),
|
|
542
|
+
/* @__PURE__ */ n("span", { className: "ycc-file-upload__hint", children: [
|
|
543
|
+
t ?? "Any file",
|
|
544
|
+
i ? ` · max ${i}MB` : ""
|
|
545
|
+
] }),
|
|
546
|
+
/* @__PURE__ */ e("input", { ref: o, className: "ycc-file-upload__input", type: "file", accept: t, multiple: r, disabled: c, onChange: Z })
|
|
547
|
+
]
|
|
548
|
+
}
|
|
549
|
+
),
|
|
550
|
+
m ? /* @__PURE__ */ e("div", { className: "ycc-file-upload__error", children: m }) : null,
|
|
551
|
+
/* @__PURE__ */ e("div", { className: "ycc-file-upload__files", children: p.map((g) => /* @__PURE__ */ e(Q, { label: g.name, onRemove: () => O(g) }, `${g.name}-${g.size}`)) })
|
|
552
|
+
] });
|
|
553
|
+
}
|
|
554
|
+
function Kt({ onScan: a, placeholder: t = "Scan or type barcode...", active: r }) {
|
|
555
|
+
const [i, l] = y("");
|
|
556
|
+
function c(o) {
|
|
557
|
+
o.key !== "Enter" || !i.trim() || (a(i.trim()), l(""));
|
|
558
|
+
}
|
|
559
|
+
return /* @__PURE__ */ n("label", { className: r ? "ycc-scan-zone ycc-scan-zone--active" : "ycc-scan-zone", children: [
|
|
560
|
+
/* @__PURE__ */ e(s, { name: "Barcode", size: 24 }),
|
|
561
|
+
/* @__PURE__ */ e("span", { className: "ycc-scan-zone__text", children: "Scanner ready" }),
|
|
562
|
+
/* @__PURE__ */ e("input", { value: i, onChange: (o) => l(o.target.value), onKeyDown: c, placeholder: t })
|
|
563
|
+
] });
|
|
564
|
+
}
|
|
565
|
+
function xa({ name: a, value: t, checked: r, defaultChecked: i, onChange: l, label: c, disabled: o }) {
|
|
566
|
+
return /* @__PURE__ */ n("label", { className: o ? "ycc-radio ycc-radio--disabled" : "ycc-radio", children: [
|
|
567
|
+
/* @__PURE__ */ e("input", { className: "ycc-radio__input", type: "radio", name: a, value: t, checked: r, defaultChecked: i, disabled: o, onChange: l }),
|
|
568
|
+
/* @__PURE__ */ e("span", { className: "ycc-radio__control" }),
|
|
569
|
+
c ? /* @__PURE__ */ e("span", { children: c }) : null
|
|
570
|
+
] });
|
|
571
|
+
}
|
|
572
|
+
function Ut({ name: a, options: t, value: r, defaultValue: i, onChange: l, direction: c = "column", disabled: o }) {
|
|
573
|
+
function d(h) {
|
|
574
|
+
l?.(h.target.value);
|
|
575
|
+
}
|
|
576
|
+
return /* @__PURE__ */ e("div", { className: `ycc-radio-group ycc-radio-group--${c}`, role: "radiogroup", children: t.map((h) => /* @__PURE__ */ e(
|
|
577
|
+
xa,
|
|
578
|
+
{
|
|
579
|
+
name: a,
|
|
580
|
+
value: h.value,
|
|
581
|
+
label: h.label,
|
|
582
|
+
checked: r === void 0 ? void 0 : r === h.value,
|
|
583
|
+
defaultChecked: r === void 0 ? i === h.value : void 0,
|
|
584
|
+
disabled: o || h.disabled,
|
|
585
|
+
onChange: d
|
|
586
|
+
},
|
|
587
|
+
h.value
|
|
588
|
+
)) });
|
|
589
|
+
}
|
|
590
|
+
function jt({ error: a, size: t = "md", disabled: r, ...i }) {
|
|
591
|
+
return /* @__PURE__ */ n("div", { className: "ycc-date-input-field", children: [
|
|
592
|
+
/* @__PURE__ */ n("div", { className: `ycc-date-input-control ycc-date-input-control--${t}${a ? " ycc-date-input-control--error" : ""}${r ? " ycc-date-input-control--disabled" : ""}`, children: [
|
|
593
|
+
/* @__PURE__ */ e(s, { name: "Calendar", size: 14 }),
|
|
594
|
+
/* @__PURE__ */ e("input", { className: "ycc-date-input", type: "date", disabled: r, ...i })
|
|
595
|
+
] }),
|
|
596
|
+
a ? /* @__PURE__ */ e("div", { className: "ycc-date-input-error", children: a }) : null
|
|
597
|
+
] });
|
|
598
|
+
}
|
|
599
|
+
function qt({ value: a, defaultValue: t, onChange: r, onClear: i, placeholder: l = "Search...", disabled: c, size: o = "md" }) {
|
|
600
|
+
const d = !!(a || t);
|
|
601
|
+
return /* @__PURE__ */ n("div", { className: `ycc-search-input ycc-search-input--${o}${c ? " ycc-search-input--disabled" : ""}`, children: [
|
|
602
|
+
/* @__PURE__ */ e(s, { name: "Search", size: 14 }),
|
|
603
|
+
/* @__PURE__ */ e("input", { value: a, defaultValue: t, onChange: r, placeholder: l, disabled: c, type: "search" }),
|
|
604
|
+
i && d ? /* @__PURE__ */ e("button", { type: "button", onClick: i, "aria-label": "Clear search", children: /* @__PURE__ */ e(s, { name: "XCircle", size: 14 }) }) : null
|
|
605
|
+
] });
|
|
606
|
+
}
|
|
607
|
+
const je = Ve(null);
|
|
608
|
+
function Ca(a) {
|
|
609
|
+
const t = typeof a == "string" ? { message: a } : a;
|
|
610
|
+
return { message: t.message, duration: t.duration ?? 4e3, position: t.position ?? "top-right" };
|
|
611
|
+
}
|
|
612
|
+
function ka({ children: a }) {
|
|
613
|
+
const [t, r] = y([]), i = Ae(/* @__PURE__ */ new Map()), l = Fe((h) => {
|
|
614
|
+
window.clearTimeout(i.current.get(h)), i.current.delete(h), r((p) => p.filter((u) => u.id !== h));
|
|
615
|
+
}, []), c = Fe((h, p) => {
|
|
616
|
+
const u = Date.now() + Math.random(), m = { ...Ca(p), id: u, variant: h };
|
|
617
|
+
r((k) => [...k.slice(-4), m]), i.current.set(u, window.setTimeout(() => l(u), m.duration));
|
|
618
|
+
}, [l]), o = ie(() => ({
|
|
619
|
+
success: (h) => c("success", h),
|
|
620
|
+
error: (h) => c("error", h),
|
|
621
|
+
warning: (h) => c("warning", h),
|
|
622
|
+
info: (h) => c("info", h)
|
|
623
|
+
}), [c]), d = t.reduce((h, p) => (h[p.position].push(p), h), { "top-right": [], "top-left": [], "bottom-right": [], "bottom-left": [] });
|
|
624
|
+
return /* @__PURE__ */ n(je.Provider, { value: o, children: [
|
|
625
|
+
a,
|
|
626
|
+
Object.keys(d).map((h) => d[h].length ? /* @__PURE__ */ e("div", { className: `ycc-toast-viewport ycc-toast-viewport--${h}`, children: d[h].map((p) => /* @__PURE__ */ n(
|
|
627
|
+
"div",
|
|
628
|
+
{
|
|
629
|
+
className: `ycc-toast ycc-toast--${p.variant}`,
|
|
630
|
+
onMouseEnter: () => window.clearTimeout(i.current.get(p.id)),
|
|
631
|
+
onMouseLeave: () => i.current.set(p.id, window.setTimeout(() => l(p.id), p.duration)),
|
|
632
|
+
children: [
|
|
633
|
+
/* @__PURE__ */ e(s, { name: p.variant === "success" ? "CheckCircle2" : p.variant === "warning" ? "AlertTriangle" : p.variant === "error" ? "XCircle" : "HelpCircle", size: 18 }),
|
|
634
|
+
/* @__PURE__ */ e("span", { className: "ycc-toast__message", children: p.message }),
|
|
635
|
+
/* @__PURE__ */ e("button", { type: "button", onClick: () => l(p.id), "aria-label": "Dismiss toast", children: /* @__PURE__ */ e(s, { name: "XCircle", size: 16 }) })
|
|
636
|
+
]
|
|
637
|
+
},
|
|
638
|
+
p.id
|
|
639
|
+
)) }, h) : null)
|
|
640
|
+
] });
|
|
641
|
+
}
|
|
642
|
+
function wa() {
|
|
643
|
+
const a = _e(je);
|
|
644
|
+
if (!a) throw new Error("useToast must be used inside ToastProvider");
|
|
645
|
+
return a;
|
|
646
|
+
}
|
|
647
|
+
function qe({ open: a, onClose: t, title: r, size: i = "md", children: l, footer: c, closeOnOverlay: o = !0, closeOnEscape: d = !0 }) {
|
|
648
|
+
const h = Ae(null);
|
|
649
|
+
na(() => {
|
|
650
|
+
if (!a || !d) return;
|
|
651
|
+
const u = (m) => {
|
|
652
|
+
m.key === "Escape" && t();
|
|
653
|
+
};
|
|
654
|
+
return document.addEventListener("keydown", u), () => document.removeEventListener("keydown", u);
|
|
655
|
+
}, [d, t, a]);
|
|
656
|
+
function p(u) {
|
|
657
|
+
if (u.key !== "Tab") return;
|
|
658
|
+
const m = h.current?.querySelectorAll('a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex="-1"])');
|
|
659
|
+
if (!m?.length) return;
|
|
660
|
+
const k = m[0], M = m[m.length - 1];
|
|
661
|
+
u.shiftKey && document.activeElement === k ? (u.preventDefault(), M.focus()) : !u.shiftKey && document.activeElement === M && (u.preventDefault(), k.focus());
|
|
662
|
+
}
|
|
663
|
+
return a ? /* @__PURE__ */ e("div", { className: "ycc-modal-overlay", onMouseDown: () => o && t(), children: /* @__PURE__ */ n("div", { ref: h, role: "dialog", "aria-modal": "true", className: `ycc-modal ycc-modal--${i}`, onMouseDown: (u) => u.stopPropagation(), onKeyDown: p, children: [
|
|
664
|
+
/* @__PURE__ */ n("div", { className: "ycc-modal__header", children: [
|
|
665
|
+
/* @__PURE__ */ e("h2", { className: "ycc-modal__title", children: r }),
|
|
666
|
+
/* @__PURE__ */ e("button", { type: "button", onClick: t, "aria-label": "Close modal", children: /* @__PURE__ */ e(s, { name: "XCircle", size: 18 }) })
|
|
667
|
+
] }),
|
|
668
|
+
/* @__PURE__ */ e("div", { className: "ycc-modal__body", children: l }),
|
|
669
|
+
c ? /* @__PURE__ */ e("div", { className: "ycc-modal__footer", children: c }) : null
|
|
670
|
+
] }) }) : null;
|
|
671
|
+
}
|
|
672
|
+
const Na = {
|
|
673
|
+
info: "HelpCircle",
|
|
674
|
+
success: "CheckCircle2",
|
|
675
|
+
warning: "AlertTriangle",
|
|
676
|
+
danger: "XCircle"
|
|
677
|
+
};
|
|
678
|
+
function Aa({ variant: a, title: t, message: r, onDismiss: i }) {
|
|
679
|
+
return /* @__PURE__ */ n("div", { className: `ycc-alert ycc-alert--${a}`, children: [
|
|
680
|
+
/* @__PURE__ */ e(s, { name: Na[a], size: 18, className: "ycc-alert__icon" }),
|
|
681
|
+
/* @__PURE__ */ n("div", { className: "ycc-alert__body", children: [
|
|
682
|
+
t ? /* @__PURE__ */ e("div", { className: "ycc-alert__title", children: t }) : null,
|
|
683
|
+
/* @__PURE__ */ e("div", { className: "ycc-alert__message", children: r })
|
|
684
|
+
] }),
|
|
685
|
+
i ? /* @__PURE__ */ e("button", { type: "button", className: "ycc-alert__dismiss", onClick: i, "aria-label": "Dismiss alert", children: /* @__PURE__ */ e(s, { name: "XCircle", size: 16 }) }) : null
|
|
686
|
+
] });
|
|
687
|
+
}
|
|
688
|
+
function _a({ size: a = "md", color: t, label: r = "Loading" }) {
|
|
689
|
+
return /* @__PURE__ */ e("svg", { className: `ycc-spinner ycc-spinner--${a}`, viewBox: "0 0 24 24", fill: "none", style: { color: t }, "aria-label": r, children: /* @__PURE__ */ e("circle", { className: "ycc-spinner__circle", cx: "12", cy: "12", r: "9", strokeWidth: "3" }) });
|
|
690
|
+
}
|
|
691
|
+
function Yt({ open: a, onClose: t, position: r = "right", size: i = "md", title: l, children: c }) {
|
|
692
|
+
return a ? /* @__PURE__ */ n("div", { className: "ycc-drawer-overlay", children: [
|
|
693
|
+
/* @__PURE__ */ e("button", { type: "button", className: "ycc-drawer-backdrop", "aria-label": "Close drawer", onClick: t }),
|
|
694
|
+
/* @__PURE__ */ n("aside", { className: `ycc-drawer ycc-drawer--${r} ycc-drawer--${i}`, children: [
|
|
695
|
+
/* @__PURE__ */ n("header", { className: "ycc-drawer__header", children: [
|
|
696
|
+
/* @__PURE__ */ e("h2", { children: l }),
|
|
697
|
+
/* @__PURE__ */ e("button", { type: "button", onClick: t, "aria-label": "Close drawer", children: /* @__PURE__ */ e(s, { name: "XCircle", size: 18 }) })
|
|
698
|
+
] }),
|
|
699
|
+
/* @__PURE__ */ e("div", { className: "ycc-drawer__body", children: c })
|
|
700
|
+
] })
|
|
701
|
+
] }) : null;
|
|
702
|
+
}
|
|
703
|
+
function Jt({ width: a = "100%", height: t = "var(--ycc-space-4)", radius: r = "md" }) {
|
|
704
|
+
return /* @__PURE__ */ e("span", { className: `ycc-skeleton ycc-skeleton--${r}`, style: { width: a, height: t } });
|
|
705
|
+
}
|
|
706
|
+
function Qt({
|
|
707
|
+
open: a,
|
|
708
|
+
onClose: t,
|
|
709
|
+
onConfirm: r,
|
|
710
|
+
title: i = "Confirm action",
|
|
711
|
+
message: l,
|
|
712
|
+
confirmLabel: c = "Confirm",
|
|
713
|
+
cancelLabel: o = "Cancel",
|
|
714
|
+
danger: d
|
|
715
|
+
}) {
|
|
716
|
+
return /* @__PURE__ */ e(
|
|
717
|
+
qe,
|
|
718
|
+
{
|
|
719
|
+
open: a,
|
|
720
|
+
onClose: t,
|
|
721
|
+
title: i,
|
|
722
|
+
size: "sm",
|
|
723
|
+
footer: /* @__PURE__ */ n(ce, { children: [
|
|
724
|
+
/* @__PURE__ */ e(N, { variant: "ghost", onClick: t, children: o }),
|
|
725
|
+
/* @__PURE__ */ e(N, { variant: d ? "danger" : "primary", onClick: r, children: c })
|
|
726
|
+
] }),
|
|
727
|
+
children: /* @__PURE__ */ e("div", { className: "ycc-confirm-dialog__message", children: l })
|
|
728
|
+
}
|
|
729
|
+
);
|
|
730
|
+
}
|
|
731
|
+
const Me = Ve({
|
|
732
|
+
activePage: "",
|
|
733
|
+
setActivePage: (a) => {
|
|
734
|
+
},
|
|
735
|
+
collapsed: !1
|
|
736
|
+
});
|
|
737
|
+
function Te(...a) {
|
|
738
|
+
return a.filter(Boolean).join(" ");
|
|
739
|
+
}
|
|
740
|
+
function Ye({ children: a, activePage: t, onNavigate: r, collapsed: i = !1 }) {
|
|
741
|
+
const [l, c] = y(t ?? ""), o = ie(() => ({
|
|
742
|
+
activePage: t ?? l,
|
|
743
|
+
collapsed: i,
|
|
744
|
+
setActivePage: (d) => {
|
|
745
|
+
c(d), r?.(d);
|
|
746
|
+
}
|
|
747
|
+
}), [t, i, l, r]);
|
|
748
|
+
return /* @__PURE__ */ e(Me.Provider, { value: o, children: /* @__PURE__ */ e("nav", { className: Te("ycc-nav", i && "ycc-nav--collapsed"), children: a }) });
|
|
749
|
+
}
|
|
750
|
+
function X({ label: a, icon: t, defaultExpanded: r = !0, children: i }) {
|
|
751
|
+
const [l, c] = y(r), { collapsed: o } = _e(Me);
|
|
752
|
+
return /* @__PURE__ */ n("div", { className: "ycc-nav-group", children: [
|
|
753
|
+
/* @__PURE__ */ n("button", { type: "button", className: "ycc-nav-group__button", onClick: () => c((d) => !d), title: o ? a : void 0, children: [
|
|
754
|
+
t ? /* @__PURE__ */ e(s, { name: t, size: 14 }) : null,
|
|
755
|
+
/* @__PURE__ */ e("span", { className: "ycc-nav-group__label", children: a }),
|
|
756
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 12, className: Te("ycc-nav-group__chevron", l && "ycc-nav-group__chevron--expanded") })
|
|
757
|
+
] }),
|
|
758
|
+
l || o ? /* @__PURE__ */ e("div", { className: "ycc-nav-group__items", children: i }) : null
|
|
759
|
+
] });
|
|
760
|
+
}
|
|
761
|
+
function L({ id: a, label: t, icon: r, badge: i, href: l, onClick: c }) {
|
|
762
|
+
const { activePage: o, setActivePage: d, collapsed: h } = _e(Me), u = Te("ycc-nav-item", o === a && "ycc-nav-item--active"), m = /* @__PURE__ */ n(ce, { children: [
|
|
763
|
+
r ? /* @__PURE__ */ e(s, { name: r, size: 16 }) : null,
|
|
764
|
+
/* @__PURE__ */ e("span", { className: "ycc-nav-item__label", children: t }),
|
|
765
|
+
i !== void 0 ? /* @__PURE__ */ e("span", { className: "ycc-nav-item__badge", children: /* @__PURE__ */ e(oe, { label: String(i), variant: "info" }) }) : null
|
|
766
|
+
] });
|
|
767
|
+
function k() {
|
|
768
|
+
d(a), c?.();
|
|
769
|
+
}
|
|
770
|
+
return l ? /* @__PURE__ */ e("a", { href: l, className: u, title: h ? t : void 0, onClick: k, children: m }) : /* @__PURE__ */ e("button", { type: "button", className: u, title: h ? t : void 0, onClick: k, children: m });
|
|
771
|
+
}
|
|
772
|
+
function Je({ items: a, separator: t = "/" }) {
|
|
773
|
+
return /* @__PURE__ */ e("nav", { className: "ycc-breadcrumb", "aria-label": "Breadcrumb", children: a.map((r, i) => {
|
|
774
|
+
const l = i === a.length - 1;
|
|
775
|
+
return /* @__PURE__ */ n("span", { className: "ycc-breadcrumb__item", children: [
|
|
776
|
+
i > 0 ? /* @__PURE__ */ e("span", { className: "ycc-breadcrumb__separator", children: t }) : null,
|
|
777
|
+
l ? /* @__PURE__ */ e("span", { className: "ycc-breadcrumb__current", children: r.label }) : r.href ? /* @__PURE__ */ e("a", { className: "ycc-breadcrumb__link", href: r.href, children: r.label }) : /* @__PURE__ */ e("button", { type: "button", className: "ycc-breadcrumb__link", onClick: r.onClick, children: r.label })
|
|
778
|
+
] }, `${r.label}-${i}`);
|
|
779
|
+
}) });
|
|
780
|
+
}
|
|
781
|
+
function Xt({ steps: a, currentStep: t }) {
|
|
782
|
+
return /* @__PURE__ */ e("ol", { className: "ycc-stepper", children: a.map((r, i) => {
|
|
783
|
+
const l = i < t ? "complete" : i === t ? "active" : "pending";
|
|
784
|
+
return /* @__PURE__ */ n("li", { className: `ycc-stepper__step ycc-stepper__step--${l}`, children: [
|
|
785
|
+
/* @__PURE__ */ e("span", { className: "ycc-stepper__marker", children: i + 1 }),
|
|
786
|
+
/* @__PURE__ */ n("span", { className: "ycc-stepper__text", children: [
|
|
787
|
+
/* @__PURE__ */ e("strong", { children: r.label }),
|
|
788
|
+
r.description ? /* @__PURE__ */ e("small", { children: r.description }) : null
|
|
789
|
+
] })
|
|
790
|
+
] }, `${r.label}-${i}`);
|
|
791
|
+
}) });
|
|
792
|
+
}
|
|
793
|
+
function Zt({ tabs: a, activeTab: t, onChange: r, children: i }) {
|
|
794
|
+
return /* @__PURE__ */ n("div", { className: "ycc-tabs", children: [
|
|
795
|
+
/* @__PURE__ */ e("div", { className: "ycc-tabs__list", role: "tablist", children: a.map((l) => /* @__PURE__ */ n("button", { type: "button", role: "tab", "aria-selected": t === l.id, className: t === l.id ? "ycc-tabs__tab ycc-tabs__tab--active" : "ycc-tabs__tab", onClick: () => r(l.id), children: [
|
|
796
|
+
l.icon ? /* @__PURE__ */ e(s, { name: l.icon, size: 14 }) : null,
|
|
797
|
+
l.label
|
|
798
|
+
] }, l.id)) }),
|
|
799
|
+
i ? /* @__PURE__ */ e("div", { className: "ycc-tabs__panel", children: i }) : null
|
|
800
|
+
] });
|
|
801
|
+
}
|
|
802
|
+
function en({ items: a, trigger: t }) {
|
|
803
|
+
const [r, i] = y(!1);
|
|
804
|
+
return /* @__PURE__ */ n("span", { className: "ycc-context-menu", onContextMenu: (l) => {
|
|
805
|
+
l.preventDefault(), i(!0);
|
|
806
|
+
}, children: [
|
|
807
|
+
/* @__PURE__ */ e("button", { type: "button", className: "ycc-context-menu__trigger", onClick: () => i((l) => !l), "aria-expanded": r, children: t }),
|
|
808
|
+
r ? /* @__PURE__ */ e("span", { className: "ycc-context-menu__panel", role: "menu", children: a.map((l) => /* @__PURE__ */ n(
|
|
809
|
+
"button",
|
|
810
|
+
{
|
|
811
|
+
type: "button",
|
|
812
|
+
role: "menuitem",
|
|
813
|
+
disabled: l.disabled,
|
|
814
|
+
className: l.danger ? "ycc-context-menu__item ycc-context-menu__item--danger" : "ycc-context-menu__item",
|
|
815
|
+
onClick: () => {
|
|
816
|
+
l.disabled || (l.onClick(), i(!1));
|
|
817
|
+
},
|
|
818
|
+
children: [
|
|
819
|
+
l.icon ? /* @__PURE__ */ e(s, { name: l.icon, size: 14 }) : null,
|
|
820
|
+
l.label
|
|
821
|
+
]
|
|
822
|
+
},
|
|
823
|
+
l.label
|
|
824
|
+
)) }) : null
|
|
825
|
+
] });
|
|
826
|
+
}
|
|
827
|
+
function Sa(a, t) {
|
|
828
|
+
return Array.from({ length: Math.max(t - a + 1, 0) }, (r, i) => a + i);
|
|
829
|
+
}
|
|
830
|
+
function an({ page: a, totalPages: t, onChange: r, siblingCount: i = 1 }) {
|
|
831
|
+
const l = Math.max(1, a - i), c = Math.min(t, a + i), o = Sa(l, c);
|
|
832
|
+
return /* @__PURE__ */ n("nav", { className: "ycc-pagination", "aria-label": "Pagination", children: [
|
|
833
|
+
/* @__PURE__ */ e("button", { type: "button", disabled: a <= 1, onClick: () => r(a - 1), "aria-label": "Previous page", children: /* @__PURE__ */ e(s, { name: "ArrowLeft", size: 14 }) }),
|
|
834
|
+
l > 1 ? /* @__PURE__ */ e("button", { type: "button", onClick: () => r(1), children: "1" }) : null,
|
|
835
|
+
l > 2 ? /* @__PURE__ */ e("span", { children: "..." }) : null,
|
|
836
|
+
o.map((d) => /* @__PURE__ */ e("button", { type: "button", "aria-current": d === a ? "page" : void 0, className: d === a ? "ycc-pagination__page--active" : void 0, onClick: () => r(d), children: d }, d)),
|
|
837
|
+
c < t - 1 ? /* @__PURE__ */ e("span", { children: "..." }) : null,
|
|
838
|
+
c < t ? /* @__PURE__ */ e("button", { type: "button", onClick: () => r(t), children: t }) : null,
|
|
839
|
+
/* @__PURE__ */ e("button", { type: "button", disabled: a >= t, onClick: () => r(a + 1), "aria-label": "Next page", children: /* @__PURE__ */ e(s, { name: "ArrowRight", size: 14 }) })
|
|
840
|
+
] });
|
|
841
|
+
}
|
|
842
|
+
function Ma({ collapsed: a, onToggle: t, logo: r, children: i }) {
|
|
843
|
+
return /* @__PURE__ */ n("aside", { className: `ycc-sidebar${a ? " ycc-sidebar--collapsed" : ""}`, children: [
|
|
844
|
+
/* @__PURE__ */ e("div", { className: "ycc-sidebar__logo", children: r ?? (a ? "Y" : "Your Cargo Contact") }),
|
|
845
|
+
/* @__PURE__ */ e("div", { className: "ycc-sidebar__body", children: i }),
|
|
846
|
+
t ? /* @__PURE__ */ e("button", { type: "button", className: "ycc-sidebar__toggle", onClick: t, "aria-label": "Toggle sidebar", children: /* @__PURE__ */ e(s, { name: a ? "ChevronRight" : "ArrowLeft", size: 16 }) }) : null
|
|
847
|
+
] });
|
|
848
|
+
}
|
|
849
|
+
function Ta({ onMenuToggle: a, title: t, user: r, notificationCount: i, onNotificationClick: l, onLogout: c }) {
|
|
850
|
+
const [o, d] = y(!1);
|
|
851
|
+
return /* @__PURE__ */ n("header", { className: "ycc-header", children: [
|
|
852
|
+
/* @__PURE__ */ n("div", { className: "ycc-header__left", children: [
|
|
853
|
+
/* @__PURE__ */ e("button", { type: "button", className: "ycc-header__icon-button", onClick: a, "aria-label": "Toggle menu", children: /* @__PURE__ */ e(s, { name: "Menu", size: 18 }) }),
|
|
854
|
+
t ? /* @__PURE__ */ e("h1", { className: "ycc-header__title", children: t }) : null
|
|
855
|
+
] }),
|
|
856
|
+
/* @__PURE__ */ e("div", { className: "ycc-header__search", children: /* @__PURE__ */ e(H, { placeholder: "Search...", leftAddon: /* @__PURE__ */ e(s, { name: "Search", size: 14 }) }) }),
|
|
857
|
+
/* @__PURE__ */ n("div", { className: "ycc-header__right", children: [
|
|
858
|
+
/* @__PURE__ */ e(ne, { size: "sm", defaultValue: "en", options: [{ value: "en", label: "EN" }, { value: "nl", label: "NL" }] }),
|
|
859
|
+
/* @__PURE__ */ n("button", { type: "button", className: "ycc-header__icon-button", onClick: l, "aria-label": "Notifications", children: [
|
|
860
|
+
/* @__PURE__ */ e(s, { name: "Bell", size: 17 }),
|
|
861
|
+
i ? /* @__PURE__ */ e("span", { className: "ycc-header__counter", children: /* @__PURE__ */ e(oe, { label: String(i), variant: "info" }) }) : null
|
|
862
|
+
] }),
|
|
863
|
+
r ? /* @__PURE__ */ n("div", { className: "ycc-header__user", children: [
|
|
864
|
+
/* @__PURE__ */ n("button", { type: "button", className: "ycc-header__user-button", onClick: () => d((h) => !h), children: [
|
|
865
|
+
/* @__PURE__ */ e(le, { name: r.name, src: r.avatar }),
|
|
866
|
+
/* @__PURE__ */ n("span", { className: "ycc-header__user-text", children: [
|
|
867
|
+
/* @__PURE__ */ e("span", { className: "ycc-header__user-name", children: r.name }),
|
|
868
|
+
/* @__PURE__ */ e("span", { className: "ycc-header__user-role", children: r.role })
|
|
869
|
+
] })
|
|
870
|
+
] }),
|
|
871
|
+
o ? /* @__PURE__ */ e("div", { className: "ycc-header__dropdown", children: /* @__PURE__ */ e(ge, { shadow: !0, padding: "sm", children: /* @__PURE__ */ e(N, { variant: "ghost", size: "sm", leftIcon: "Power", onClick: c, children: "Logout" }) }) }) : null
|
|
872
|
+
] }) : null
|
|
873
|
+
] })
|
|
874
|
+
] });
|
|
875
|
+
}
|
|
876
|
+
function Fa({ copyright: a = `© ${(/* @__PURE__ */ new Date()).getFullYear()} Your Cargo Contact`, links: t = [] }) {
|
|
877
|
+
return /* @__PURE__ */ n("footer", { className: "ycc-footer", children: [
|
|
878
|
+
/* @__PURE__ */ e("span", { children: a }),
|
|
879
|
+
/* @__PURE__ */ e("span", { className: "ycc-footer__links", children: t.map((r) => /* @__PURE__ */ e("a", { href: r.href, children: r.label }, r.href)) })
|
|
880
|
+
] });
|
|
881
|
+
}
|
|
882
|
+
function Da(a, t) {
|
|
883
|
+
return ra(a) ? ia(a, { collapsed: t }) : a;
|
|
884
|
+
}
|
|
885
|
+
function La({
|
|
886
|
+
nav: a,
|
|
887
|
+
user: t,
|
|
888
|
+
notificationCount: r,
|
|
889
|
+
onNotificationClick: i,
|
|
890
|
+
onLogout: l,
|
|
891
|
+
children: c,
|
|
892
|
+
defaultCollapsed: o = !1
|
|
893
|
+
}) {
|
|
894
|
+
const [d, h] = y(o), [p, u] = y(!1), k = { "--ycc-shell-offset": d ? "calc(var(--ycc-space-8) * 2)" : "var(--ycc-sidebar-width)" }, M = () => {
|
|
895
|
+
if (window.matchMedia("(max-width: 640px)").matches) {
|
|
896
|
+
u((z) => !z);
|
|
897
|
+
return;
|
|
898
|
+
}
|
|
899
|
+
h((z) => !z);
|
|
900
|
+
};
|
|
901
|
+
return /* @__PURE__ */ n("div", { className: "ycc-page", style: k, children: [
|
|
902
|
+
/* @__PURE__ */ e("div", { className: `ycc-page__sidebar${p ? " ycc-page__sidebar--open" : ""}`, children: /* @__PURE__ */ e(Ma, { collapsed: d, onToggle: () => h((z) => !z), children: Da(a, d) }) }),
|
|
903
|
+
p ? /* @__PURE__ */ e("button", { type: "button", className: "ycc-page__backdrop", "aria-label": "Close menu", onClick: () => u(!1) }) : null,
|
|
904
|
+
/* @__PURE__ */ e(
|
|
905
|
+
Ta,
|
|
906
|
+
{
|
|
907
|
+
onMenuToggle: M,
|
|
908
|
+
user: t,
|
|
909
|
+
notificationCount: r,
|
|
910
|
+
onNotificationClick: i,
|
|
911
|
+
onLogout: l
|
|
912
|
+
}
|
|
913
|
+
),
|
|
914
|
+
/* @__PURE__ */ n("div", { className: "ycc-page__content", children: [
|
|
915
|
+
/* @__PURE__ */ e("main", { className: "ycc-page__main", children: c }),
|
|
916
|
+
/* @__PURE__ */ e(Fa, {})
|
|
917
|
+
] })
|
|
918
|
+
] });
|
|
919
|
+
}
|
|
920
|
+
const za = {
|
|
921
|
+
sm: "var(--ycc-breakpoint-sm)",
|
|
922
|
+
md: "768px",
|
|
923
|
+
lg: "var(--ycc-breakpoint-lg)",
|
|
924
|
+
xl: "1280px",
|
|
925
|
+
full: "100%"
|
|
926
|
+
};
|
|
927
|
+
function tn({ children: a, maxWidth: t = "lg", className: r }) {
|
|
928
|
+
const i = {
|
|
929
|
+
width: "100%",
|
|
930
|
+
maxWidth: za[t],
|
|
931
|
+
margin: "0 auto"
|
|
932
|
+
};
|
|
933
|
+
return /* @__PURE__ */ e("div", { className: r ? `ycc-container ${r}` : "ycc-container", style: i, children: a });
|
|
934
|
+
}
|
|
935
|
+
const Oa = {
|
|
936
|
+
start: "flex-start",
|
|
937
|
+
center: "center",
|
|
938
|
+
end: "flex-end",
|
|
939
|
+
stretch: "stretch"
|
|
940
|
+
};
|
|
941
|
+
function $({ children: a, gap: t = 3, align: r = "stretch" }) {
|
|
942
|
+
const i = {
|
|
943
|
+
"--ycc-grid-gap": `calc(var(--ycc-space-1) * ${t})`,
|
|
944
|
+
alignItems: Oa[r]
|
|
945
|
+
};
|
|
946
|
+
return /* @__PURE__ */ e("div", { className: "ycc-row", style: i, children: a });
|
|
947
|
+
}
|
|
948
|
+
function nn({ children: a, span: t = 12, sm: r, lg: i }) {
|
|
949
|
+
return /* @__PURE__ */ e("div", { className: "ycc-col", style: {
|
|
950
|
+
"--ycc-col-span": t,
|
|
951
|
+
"--ycc-col-sm": r ?? t,
|
|
952
|
+
"--ycc-col-lg": i ?? r ?? t
|
|
953
|
+
}, children: a });
|
|
954
|
+
}
|
|
955
|
+
function rn({ title: a, subtitle: t, actions: r }) {
|
|
956
|
+
return /* @__PURE__ */ n("header", { className: "ycc-page-header", children: [
|
|
957
|
+
/* @__PURE__ */ n("div", { children: [
|
|
958
|
+
/* @__PURE__ */ e("h1", { children: a }),
|
|
959
|
+
t ? /* @__PURE__ */ e("p", { children: t }) : null
|
|
960
|
+
] }),
|
|
961
|
+
r ? /* @__PURE__ */ e("div", { className: "ycc-page-header__actions", children: r }) : null
|
|
962
|
+
] });
|
|
963
|
+
}
|
|
964
|
+
function ln({ label: a, spacing: t = "md" }) {
|
|
965
|
+
return a ? /* @__PURE__ */ e("div", { className: `ycc-divider ycc-divider--${t}`, children: /* @__PURE__ */ e("span", { children: a }) }) : /* @__PURE__ */ e("hr", { className: `ycc-divider ycc-divider--${t}` });
|
|
966
|
+
}
|
|
967
|
+
function cn({ children: a, cols: t = 2, gap: r = 3, className: i }) {
|
|
968
|
+
const l = {
|
|
969
|
+
"--ycc-grid-cols": t,
|
|
970
|
+
"--ycc-grid-gap": `calc(var(--ycc-space-1) * ${r})`
|
|
971
|
+
};
|
|
972
|
+
return /* @__PURE__ */ e("div", { className: i ? `ycc-grid ${i}` : "ycc-grid", style: l, children: a });
|
|
973
|
+
}
|
|
974
|
+
const Ba = {
|
|
975
|
+
start: "flex-start",
|
|
976
|
+
center: "center",
|
|
977
|
+
end: "flex-end",
|
|
978
|
+
stretch: "stretch"
|
|
979
|
+
};
|
|
980
|
+
function on({ children: a, gap: t = 3, align: r = "stretch", className: i }) {
|
|
981
|
+
const l = {
|
|
982
|
+
"--ycc-stack-gap": `calc(var(--ycc-space-1) * ${t})`,
|
|
983
|
+
alignItems: Ba[r]
|
|
984
|
+
};
|
|
985
|
+
return /* @__PURE__ */ e("div", { className: i ? `ycc-stack ${i}` : "ycc-stack", style: l, children: a });
|
|
986
|
+
}
|
|
987
|
+
function sn({ size: a = 4, axis: t = "y" }) {
|
|
988
|
+
const r = { "--ycc-spacer-size": `calc(var(--ycc-space-1) * ${a})` };
|
|
989
|
+
return /* @__PURE__ */ e("span", { "aria-hidden": "true", className: `ycc-spacer ycc-spacer--${t}`, style: r });
|
|
990
|
+
}
|
|
991
|
+
const Ra = [
|
|
992
|
+
{ name: "Omar Siddiqui", email: "omar.siddiqui@yourcargocontact.com", status: "delivered", role: "Broker", active: !0 },
|
|
993
|
+
{ name: "Sara Malik", email: "sara.malik@yourcargocontact.com", status: "pending", role: "Agent", active: !1 },
|
|
994
|
+
{ name: "Hassan Qureshi", email: "hassan.qureshi@yourcargocontact.com", status: "transit", role: "Supervisor", active: !0 },
|
|
995
|
+
{ name: "Aisha Khan", email: "aisha.khan@yourcargocontact.com", status: "cleared", role: "Analyst", active: !1 },
|
|
996
|
+
{ name: "Bilal Farooq", email: "bilal.farooq@yourcargocontact.com", status: "held", role: "Manager", active: !0 },
|
|
997
|
+
{ name: "Mariam Sheikh", email: "mariam.sheikh@yourcargocontact.com", status: "rejected", role: "Broker", active: !1 },
|
|
998
|
+
{ name: "Khalid Rahman", email: "khalid.rahman@yourcargocontact.com", status: "delivered", role: "Agent", active: !0 },
|
|
999
|
+
{ name: "Nadia Hussain", email: "nadia.hussain@yourcargocontact.com", status: "transit", role: "Supervisor", active: !1 },
|
|
1000
|
+
{ name: "Tariq Mehmood", email: "tariq.mehmood@yourcargocontact.com", status: "cleared", role: "Analyst", active: !0 },
|
|
1001
|
+
{ name: "Zara Ahmed", email: "zara.ahmed@yourcargocontact.com", status: "pending", role: "Manager", active: !1 }
|
|
1002
|
+
], Ea = [
|
|
1003
|
+
{
|
|
1004
|
+
key: "name",
|
|
1005
|
+
header: "Agent",
|
|
1006
|
+
render: (a, t) => /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
1007
|
+
/* @__PURE__ */ e(le, { name: t.name, size: "sm" }),
|
|
1008
|
+
/* @__PURE__ */ e("span", { children: t.name })
|
|
1009
|
+
] })
|
|
1010
|
+
},
|
|
1011
|
+
{ key: "email", header: "Email" },
|
|
1012
|
+
{
|
|
1013
|
+
key: "status",
|
|
1014
|
+
header: "Status",
|
|
1015
|
+
render: (a, t) => /* @__PURE__ */ e(oe, { label: t.status, variant: t.status })
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
key: "role",
|
|
1019
|
+
header: "Role",
|
|
1020
|
+
render: (a, t) => /* @__PURE__ */ e(Q, { label: t.role })
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
key: "active",
|
|
1024
|
+
header: "Active",
|
|
1025
|
+
render: (a, t) => /* @__PURE__ */ e(q, { checked: t.active, onChange: () => {
|
|
1026
|
+
}, size: "sm" })
|
|
1027
|
+
},
|
|
1028
|
+
{
|
|
1029
|
+
key: "actions",
|
|
1030
|
+
header: "Actions",
|
|
1031
|
+
render: () => /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
1032
|
+
/* @__PURE__ */ e(N, { variant: "ghost", size: "sm", children: "Edit" }),
|
|
1033
|
+
/* @__PURE__ */ e(N, { variant: "danger", size: "sm", children: "Delete" })
|
|
1034
|
+
] })
|
|
1035
|
+
}
|
|
1036
|
+
];
|
|
1037
|
+
function dn() {
|
|
1038
|
+
return /* @__PURE__ */ n(
|
|
1039
|
+
La,
|
|
1040
|
+
{
|
|
1041
|
+
nav: /* @__PURE__ */ n(Ye, { activePage: "airfreight", children: [
|
|
1042
|
+
/* @__PURE__ */ n(X, { label: "Freight", children: [
|
|
1043
|
+
/* @__PURE__ */ e(L, { id: "airfreight", label: "Air Freight", icon: "Plane" }),
|
|
1044
|
+
/* @__PURE__ */ e(L, { id: "seafreight", label: "Sea Freight", icon: "Anchor" }),
|
|
1045
|
+
/* @__PURE__ */ e(L, { id: "trucking", label: "Trucking", icon: "Truck" })
|
|
1046
|
+
] }),
|
|
1047
|
+
/* @__PURE__ */ n(X, { label: "Customs", children: [
|
|
1048
|
+
/* @__PURE__ */ e(L, { id: "customs", label: "Customs", icon: "FileCheck" }),
|
|
1049
|
+
/* @__PURE__ */ e(L, { id: "bonded", label: "Bonded", icon: "Warehouse" })
|
|
1050
|
+
] }),
|
|
1051
|
+
/* @__PURE__ */ n(X, { label: "Admin", children: [
|
|
1052
|
+
/* @__PURE__ */ e(L, { id: "hr", label: "HR", icon: "Users" }),
|
|
1053
|
+
/* @__PURE__ */ e(L, { id: "finance", label: "Finance", icon: "DollarSign" })
|
|
1054
|
+
] })
|
|
1055
|
+
] }),
|
|
1056
|
+
user: { name: "Ahmed Al-Rashid", role: "Operations Manager" },
|
|
1057
|
+
notificationCount: 3,
|
|
1058
|
+
children: [
|
|
1059
|
+
/* @__PURE__ */ e(Je, { items: [{ label: "Home" }, { label: "Dashboard" }] }),
|
|
1060
|
+
/* @__PURE__ */ n($, { gap: 16, children: [
|
|
1061
|
+
/* @__PURE__ */ e(V, { title: "Total Shipments", value: "1,284", change: 8.3, icon: "Package", trend: "up" }),
|
|
1062
|
+
/* @__PURE__ */ e(V, { title: "Revenue", value: "$94,210", change: 12.1, icon: "DollarSign", trend: "up" }),
|
|
1063
|
+
/* @__PURE__ */ e(V, { title: "Active Customers", value: "342", change: -2.4, icon: "Users", trend: "down" }),
|
|
1064
|
+
/* @__PURE__ */ e(V, { title: "On-Time Delivery", value: "97.2%", change: 0.8, icon: "CheckCircle", trend: "up" })
|
|
1065
|
+
] }),
|
|
1066
|
+
/* @__PURE__ */ e(
|
|
1067
|
+
Ke,
|
|
1068
|
+
{
|
|
1069
|
+
variant: "info",
|
|
1070
|
+
message: "System maintenance scheduled Sunday 02:00-04:00 UTC. All services will be temporarily unavailable.",
|
|
1071
|
+
onDismiss: () => {
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
),
|
|
1075
|
+
/* @__PURE__ */ e(Ue, { columns: Ea, data: Ra, searchable: !0, striped: !0, clickableRows: !0 }),
|
|
1076
|
+
/* @__PURE__ */ n(ge, { shadow: !0, children: [
|
|
1077
|
+
/* @__PURE__ */ e(Se, { title: "New Shipment", subtitle: "Fill in the details below" }),
|
|
1078
|
+
/* @__PURE__ */ e(fe, { label: "Reference Number", required: !0, children: /* @__PURE__ */ e(H, { placeholder: "e.g. SHP-2024-001" }) }),
|
|
1079
|
+
/* @__PURE__ */ e(fe, { label: "Origin Port", required: !0, children: /* @__PURE__ */ e(
|
|
1080
|
+
ne,
|
|
1081
|
+
{
|
|
1082
|
+
options: [
|
|
1083
|
+
{ value: "dxb", label: "Dubai (DXB)" },
|
|
1084
|
+
{ value: "sin", label: "Singapore (SIN)" },
|
|
1085
|
+
{ value: "lhr", label: "London (LHR)" },
|
|
1086
|
+
{ value: "jfk", label: "New York (JFK)" },
|
|
1087
|
+
{ value: "lhe", label: "Lahore (LHE)" }
|
|
1088
|
+
],
|
|
1089
|
+
placeholder: "Select origin..."
|
|
1090
|
+
}
|
|
1091
|
+
) }),
|
|
1092
|
+
/* @__PURE__ */ e(fe, { label: "Shipment Notes", children: /* @__PURE__ */ e(me, { placeholder: "Any special handling instructions...", rows: 3 }) }),
|
|
1093
|
+
/* @__PURE__ */ n(Ge, { align: "right", children: [
|
|
1094
|
+
/* @__PURE__ */ e(N, { variant: "ghost", size: "md", children: "Cancel" }),
|
|
1095
|
+
/* @__PURE__ */ e(N, { variant: "primary", size: "md", leftIcon: "Send", children: "Submit Shipment" })
|
|
1096
|
+
] })
|
|
1097
|
+
] })
|
|
1098
|
+
]
|
|
1099
|
+
}
|
|
1100
|
+
);
|
|
1101
|
+
}
|
|
1102
|
+
const $a = {
|
|
1103
|
+
minHeight: "100vh",
|
|
1104
|
+
background: "#FFFFFF",
|
|
1105
|
+
padding: 40
|
|
1106
|
+
}, Pa = {
|
|
1107
|
+
maxWidth: 1200,
|
|
1108
|
+
margin: "0 auto",
|
|
1109
|
+
display: "flex",
|
|
1110
|
+
flexDirection: "column",
|
|
1111
|
+
gap: 24
|
|
1112
|
+
}, Ia = {
|
|
1113
|
+
display: "flex",
|
|
1114
|
+
flexDirection: "column",
|
|
1115
|
+
gap: 16
|
|
1116
|
+
}, S = {
|
|
1117
|
+
fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Courier New', monospace"
|
|
1118
|
+
}, xe = [
|
|
1119
|
+
{ value: "dxb", label: "Dubai (DXB)" },
|
|
1120
|
+
{ value: "sin", label: "Singapore (SIN)" },
|
|
1121
|
+
{ value: "lhr", label: "London (LHR)" },
|
|
1122
|
+
{ value: "jfk", label: "New York (JFK)" },
|
|
1123
|
+
{ value: "lhe", label: "Lahore (LHE)" }
|
|
1124
|
+
];
|
|
1125
|
+
function Ha() {
|
|
1126
|
+
return [
|
|
1127
|
+
{ label: "Primary", swatches: Object.entries(te).map(([a, t]) => ({ name: a, value: t })) },
|
|
1128
|
+
{ label: "Neutral", swatches: Object.entries(P).map(([a, t]) => ({ name: a, value: t })) },
|
|
1129
|
+
{
|
|
1130
|
+
label: "Status",
|
|
1131
|
+
swatches: Object.entries(T).flatMap(([a, t]) => [
|
|
1132
|
+
{ name: `${a}.text`, value: t.text },
|
|
1133
|
+
{ name: `${a}.bg`, value: t.bg }
|
|
1134
|
+
])
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
label: "Milestone",
|
|
1138
|
+
swatches: Object.entries(F).flatMap(([a, t]) => [
|
|
1139
|
+
{ name: `${a}.text`, value: t.text },
|
|
1140
|
+
{ name: `${a}.bg`, value: t.bg }
|
|
1141
|
+
])
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
label: "Clearance",
|
|
1145
|
+
swatches: Object.entries(D).flatMap(([a, t]) => [
|
|
1146
|
+
{ name: `${a}.text`, value: t.text },
|
|
1147
|
+
{ name: `${a}.bg`, value: t.bg }
|
|
1148
|
+
])
|
|
1149
|
+
},
|
|
1150
|
+
{
|
|
1151
|
+
label: "Semantic",
|
|
1152
|
+
swatches: [
|
|
1153
|
+
...Object.entries(_).map(([a, t]) => ({ name: a, value: t })),
|
|
1154
|
+
...Object.entries(Y).flatMap(([a, t]) => [
|
|
1155
|
+
{ name: `direction.${a}.text`, value: t.text },
|
|
1156
|
+
{ name: `direction.${a}.bg`, value: t.bg }
|
|
1157
|
+
]),
|
|
1158
|
+
...Object.entries(J).flatMap(([a, t]) => [
|
|
1159
|
+
{ name: `tStatus.${a}.text`, value: t.text },
|
|
1160
|
+
{ name: `tStatus.${a}.bg`, value: t.bg }
|
|
1161
|
+
]),
|
|
1162
|
+
...Object.entries(E).flatMap(([a, t]) => [
|
|
1163
|
+
{ name: `warehouse.${a}.text`, value: t.text },
|
|
1164
|
+
{ name: `warehouse.${a}.bg`, value: t.bg }
|
|
1165
|
+
]),
|
|
1166
|
+
...Object.entries(I).map(([a, t]) => ({ name: `branch.${a}`, value: t }))
|
|
1167
|
+
]
|
|
1168
|
+
}
|
|
1169
|
+
];
|
|
1170
|
+
}
|
|
1171
|
+
function Va() {
|
|
1172
|
+
return [
|
|
1173
|
+
{ label: "STATUS", values: Object.keys(T) },
|
|
1174
|
+
{ label: "MPILL", values: Object.keys(F) },
|
|
1175
|
+
{ label: "CL", values: Object.keys(D) },
|
|
1176
|
+
{ label: "BRANCH MODULE", values: Object.keys(I) },
|
|
1177
|
+
{ label: "DIRECTION", values: Object.keys(Y) },
|
|
1178
|
+
{ label: "T STATUS", values: Object.keys(J) }
|
|
1179
|
+
];
|
|
1180
|
+
}
|
|
1181
|
+
const Wa = [
|
|
1182
|
+
{ name: "Omar Siddiqui", email: "omar.siddiqui@yourcargocontact.com", status: "delivered", role: "Broker", active: !0 },
|
|
1183
|
+
{ name: "Sara Malik", email: "sara.malik@yourcargocontact.com", status: "pending", role: "Agent", active: !1 },
|
|
1184
|
+
{ name: "Hassan Qureshi", email: "hassan.qureshi@yourcargocontact.com", status: "transit", role: "Supervisor", active: !0 },
|
|
1185
|
+
{ name: "Aisha Khan", email: "aisha.khan@yourcargocontact.com", status: "cleared", role: "Analyst", active: !1 },
|
|
1186
|
+
{ name: "Bilal Farooq", email: "bilal.farooq@yourcargocontact.com", status: "held", role: "Manager", active: !0 }
|
|
1187
|
+
], Ga = [
|
|
1188
|
+
{
|
|
1189
|
+
key: "name",
|
|
1190
|
+
header: "Agent",
|
|
1191
|
+
render: (a, t) => /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
1192
|
+
/* @__PURE__ */ e(le, { name: t.name, size: "sm" }),
|
|
1193
|
+
/* @__PURE__ */ e("span", { children: t.name })
|
|
1194
|
+
] })
|
|
1195
|
+
},
|
|
1196
|
+
{ key: "email", header: "Email" },
|
|
1197
|
+
{ key: "status", header: "Status", render: (a, t) => /* @__PURE__ */ e(oe, { label: t.status, variant: t.status }) },
|
|
1198
|
+
{ key: "role", header: "Role", render: (a, t) => /* @__PURE__ */ e(Q, { label: t.role }) },
|
|
1199
|
+
{ key: "active", header: "Active", render: (a, t) => /* @__PURE__ */ e(q, { checked: t.active, onChange: () => {
|
|
1200
|
+
}, size: "sm" }) },
|
|
1201
|
+
{
|
|
1202
|
+
key: "actions",
|
|
1203
|
+
header: "Actions",
|
|
1204
|
+
render: () => /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
1205
|
+
/* @__PURE__ */ e(N, { variant: "ghost", size: "sm", children: "Edit" }),
|
|
1206
|
+
/* @__PURE__ */ e(N, { variant: "danger", size: "sm", children: "Delete" })
|
|
1207
|
+
] })
|
|
1208
|
+
}
|
|
1209
|
+
];
|
|
1210
|
+
function C({ title: a, children: t }) {
|
|
1211
|
+
return /* @__PURE__ */ n(ge, { shadow: !0, children: [
|
|
1212
|
+
/* @__PURE__ */ e(Se, { title: a }),
|
|
1213
|
+
/* @__PURE__ */ e("div", { style: Ia, children: t })
|
|
1214
|
+
] });
|
|
1215
|
+
}
|
|
1216
|
+
function Ka(a) {
|
|
1217
|
+
return {
|
|
1218
|
+
fontFamily: "family" in a ? a.family : void 0,
|
|
1219
|
+
fontSize: a.size,
|
|
1220
|
+
fontWeight: a.weight,
|
|
1221
|
+
letterSpacing: "spacing" in a ? a.spacing : void 0,
|
|
1222
|
+
textTransform: "transform" in a ? a.transform : void 0
|
|
1223
|
+
};
|
|
1224
|
+
}
|
|
1225
|
+
function Ua({ label: a, values: t }) {
|
|
1226
|
+
return /* @__PURE__ */ n("div", { style: { display: "flex", flexDirection: "column", gap: 8 }, children: [
|
|
1227
|
+
/* @__PURE__ */ e("div", { style: { ...S, fontSize: 10, fontWeight: 700, letterSpacing: "0.05em" }, children: a }),
|
|
1228
|
+
/* @__PURE__ */ e("div", { style: { display: "flex", flexWrap: "wrap", gap: 8 }, children: t.map((r) => /* @__PURE__ */ e(oe, { label: r, variant: r, size: "md" }, `${a}-${r}`)) })
|
|
1229
|
+
] });
|
|
1230
|
+
}
|
|
1231
|
+
function ja() {
|
|
1232
|
+
const a = wa();
|
|
1233
|
+
return /* @__PURE__ */ n($, { gap: 4, children: [
|
|
1234
|
+
/* @__PURE__ */ e(N, { variant: "primary", onClick: () => a.success("Shipment saved successfully"), children: "Success Toast" }),
|
|
1235
|
+
/* @__PURE__ */ e(N, { variant: "danger", onClick: () => a.error("Unable to delete shipment"), children: "Error Toast" }),
|
|
1236
|
+
/* @__PURE__ */ e(N, { variant: "secondary", onClick: () => a.warning("Customs documents need review"), children: "Warning Toast" }),
|
|
1237
|
+
/* @__PURE__ */ e(N, { variant: "ghost", onClick: () => a.info("New tracking update received"), children: "Info Toast" })
|
|
1238
|
+
] });
|
|
1239
|
+
}
|
|
1240
|
+
function qa() {
|
|
1241
|
+
const [a, t] = y(!1), r = ["primary", "secondary", "ghost", "danger", "link"], i = ["sm", "md", "lg"], l = Ha(), c = Va();
|
|
1242
|
+
return /* @__PURE__ */ e("div", { style: $a, children: /* @__PURE__ */ n("main", { style: Pa, children: [
|
|
1243
|
+
/* @__PURE__ */ e(C, { title: "COLORS", children: l.map((o) => /* @__PURE__ */ n("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
|
|
1244
|
+
/* @__PURE__ */ e("div", { style: { ...S, fontSize: 11, fontWeight: 700, textTransform: "uppercase" }, children: o.label }),
|
|
1245
|
+
/* @__PURE__ */ e("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(88px, 1fr))", gap: 12 }, children: o.swatches.map((d) => /* @__PURE__ */ n("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: [
|
|
1246
|
+
/* @__PURE__ */ e("div", { style: { width: 48, height: 48, background: d.value, border: "1px solid #E8EAF2", borderRadius: 4 } }),
|
|
1247
|
+
/* @__PURE__ */ e("div", { style: { ...S, fontSize: 10, color: "#1B2440" }, children: d.value }),
|
|
1248
|
+
/* @__PURE__ */ e("div", { style: { ...S, fontSize: 9, color: "#8A93AD" }, children: d.name })
|
|
1249
|
+
] }, `${o.label}-${d.name}`)) })
|
|
1250
|
+
] }, o.label)) }),
|
|
1251
|
+
/* @__PURE__ */ e(C, { title: "TYPOGRAPHY", children: Object.entries(Tt).map(([o, d]) => /* @__PURE__ */ n("div", { style: { display: "grid", gridTemplateColumns: "180px 1fr", gap: 16, alignItems: "baseline" }, children: [
|
|
1252
|
+
/* @__PURE__ */ e("div", { style: { ...S, fontSize: 11, color: "#8A93AD" }, children: o }),
|
|
1253
|
+
/* @__PURE__ */ e("div", { style: Ka(d), children: "The quick brown fox jumps over the lazy dog" })
|
|
1254
|
+
] }, o)) }),
|
|
1255
|
+
/* @__PURE__ */ e(C, { title: "ICONS", children: /* @__PURE__ */ e("div", { style: { display: "grid", gridTemplateColumns: "repeat(8, minmax(0, 1fr))", gap: 12 }, children: la.map((o) => /* @__PURE__ */ n("div", { style: { display: "flex", minWidth: 0, flexDirection: "column", alignItems: "center", gap: 6 }, children: [
|
|
1256
|
+
/* @__PURE__ */ e(s, { name: o, size: 20 }),
|
|
1257
|
+
/* @__PURE__ */ e("div", { style: { ...S, maxWidth: "100%", overflow: "hidden", textOverflow: "ellipsis", fontSize: 9 }, children: o })
|
|
1258
|
+
] }, o)) }) }),
|
|
1259
|
+
/* @__PURE__ */ e(C, { title: "BUTTONS", children: /* @__PURE__ */ e("div", { style: { overflowX: "auto" }, children: /* @__PURE__ */ n("table", { style: { width: "100%", borderCollapse: "separate", borderSpacing: 12 }, children: [
|
|
1260
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ n("tr", { children: [
|
|
1261
|
+
/* @__PURE__ */ e("th", { style: { ...S, textAlign: "left", fontSize: 11 }, children: "variant" }),
|
|
1262
|
+
i.map((o) => /* @__PURE__ */ e("th", { style: { ...S, textAlign: "left", fontSize: 11 }, children: o }, o)),
|
|
1263
|
+
/* @__PURE__ */ e("th", { style: { ...S, textAlign: "left", fontSize: 11 }, children: "loading" }),
|
|
1264
|
+
/* @__PURE__ */ e("th", { style: { ...S, textAlign: "left", fontSize: 11 }, children: "leftIcon" }),
|
|
1265
|
+
/* @__PURE__ */ e("th", { style: { ...S, textAlign: "left", fontSize: 11 }, children: "rightIcon" })
|
|
1266
|
+
] }) }),
|
|
1267
|
+
/* @__PURE__ */ e("tbody", { children: r.map((o) => /* @__PURE__ */ n("tr", { children: [
|
|
1268
|
+
/* @__PURE__ */ e("td", { style: { ...S, fontSize: 11 }, children: o }),
|
|
1269
|
+
i.map((d) => /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(N, { variant: o, size: d, children: d }) }, `${o}-${d}`)),
|
|
1270
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(N, { variant: o, loading: !0, children: "Loading" }) }),
|
|
1271
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(N, { variant: o, leftIcon: "Plus", children: "Create" }) }),
|
|
1272
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(N, { variant: o, rightIcon: "ArrowRight", children: "Next" }) })
|
|
1273
|
+
] }, o)) })
|
|
1274
|
+
] }) }) }),
|
|
1275
|
+
/* @__PURE__ */ e(C, { title: "BADGES", children: c.map((o) => /* @__PURE__ */ e(Ua, { label: o.label, values: o.values }, o.label)) }),
|
|
1276
|
+
/* @__PURE__ */ e(C, { title: "AVATAR", children: /* @__PURE__ */ n("div", { style: { display: "flex", flexWrap: "wrap", gap: 20, alignItems: "center" }, children: [
|
|
1277
|
+
["sm", "md", "lg"].map((o) => /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: 10 }, children: [
|
|
1278
|
+
/* @__PURE__ */ e(le, { name: "Ahmed Al-Rashid", size: o }),
|
|
1279
|
+
/* @__PURE__ */ n("span", { style: { ...S, fontSize: 11 }, children: [
|
|
1280
|
+
"initials ",
|
|
1281
|
+
o
|
|
1282
|
+
] })
|
|
1283
|
+
] }, o)),
|
|
1284
|
+
["online", "offline", "away"].map((o) => /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: 10 }, children: [
|
|
1285
|
+
/* @__PURE__ */ e(le, { name: "Sara Malik", status: o }),
|
|
1286
|
+
/* @__PURE__ */ e("span", { style: { ...S, fontSize: 11 }, children: o })
|
|
1287
|
+
] }, o))
|
|
1288
|
+
] }) }),
|
|
1289
|
+
/* @__PURE__ */ e(C, { title: "TOGGLE", children: /* @__PURE__ */ n($, { gap: 6, children: [
|
|
1290
|
+
/* @__PURE__ */ e(q, { label: "Off", checked: !1, onChange: () => {
|
|
1291
|
+
} }),
|
|
1292
|
+
/* @__PURE__ */ e(q, { label: "On", checked: !0, onChange: () => {
|
|
1293
|
+
} }),
|
|
1294
|
+
/* @__PURE__ */ e(q, { label: "Disabled off", checked: !1, disabled: !0 }),
|
|
1295
|
+
/* @__PURE__ */ e(q, { label: "Disabled on", checked: !0, disabled: !0 })
|
|
1296
|
+
] }) }),
|
|
1297
|
+
/* @__PURE__ */ e(C, { title: "TAGS", children: /* @__PURE__ */ n($, { gap: 4, children: [
|
|
1298
|
+
/* @__PURE__ */ e(Q, { label: "Broker" }),
|
|
1299
|
+
/* @__PURE__ */ e(Q, { label: "Removable", onRemove: () => {
|
|
1300
|
+
} }),
|
|
1301
|
+
/* @__PURE__ */ e(Q, { label: "Custom Color", color: "#4338CA" })
|
|
1302
|
+
] }) }),
|
|
1303
|
+
/* @__PURE__ */ e(C, { title: "INPUTS", children: ["sm", "md", "lg"].map((o) => /* @__PURE__ */ n($, { gap: 4, children: [
|
|
1304
|
+
/* @__PURE__ */ e(H, { size: o, placeholder: `Default ${o}` }),
|
|
1305
|
+
/* @__PURE__ */ e(H, { size: o, placeholder: "With error", error: "Required field" }),
|
|
1306
|
+
/* @__PURE__ */ e(H, { size: o, placeholder: "Search", leftAddon: /* @__PURE__ */ e(s, { name: "Search", size: 14 }) }),
|
|
1307
|
+
/* @__PURE__ */ e(H, { size: o, placeholder: "Weight", rightAddon: "kg" }),
|
|
1308
|
+
/* @__PURE__ */ e(H, { size: o, placeholder: "Disabled", disabled: !0 })
|
|
1309
|
+
] }, o)) }),
|
|
1310
|
+
/* @__PURE__ */ e(C, { title: "SELECT", children: /* @__PURE__ */ n($, { gap: 4, children: [
|
|
1311
|
+
/* @__PURE__ */ e(ne, { options: xe, placeholder: "Select origin..." }),
|
|
1312
|
+
/* @__PURE__ */ e(ne, { options: xe, placeholder: "Select origin...", error: "Origin is required" }),
|
|
1313
|
+
/* @__PURE__ */ e(ne, { options: xe, placeholder: "Select origin...", disabled: !0 })
|
|
1314
|
+
] }) }),
|
|
1315
|
+
/* @__PURE__ */ e(C, { title: "CHECKBOX", children: /* @__PURE__ */ n($, { gap: 6, children: [
|
|
1316
|
+
/* @__PURE__ */ e(se, { label: "Unchecked" }),
|
|
1317
|
+
/* @__PURE__ */ e(se, { label: "Checked", checked: !0, onChange: () => {
|
|
1318
|
+
} }),
|
|
1319
|
+
/* @__PURE__ */ e(se, { label: "Indeterminate", indeterminate: !0, onChange: () => {
|
|
1320
|
+
} }),
|
|
1321
|
+
/* @__PURE__ */ e(se, { label: "Disabled", disabled: !0 })
|
|
1322
|
+
] }) }),
|
|
1323
|
+
/* @__PURE__ */ e(C, { title: "TEXTAREA", children: /* @__PURE__ */ n($, { gap: 4, children: [
|
|
1324
|
+
/* @__PURE__ */ e(me, { placeholder: "Default textarea", rows: 3 }),
|
|
1325
|
+
/* @__PURE__ */ e(me, { placeholder: "With error", error: "Notes are too short", rows: 3 }),
|
|
1326
|
+
/* @__PURE__ */ e(me, { placeholder: "No resize", resize: "none", rows: 3 })
|
|
1327
|
+
] }) }),
|
|
1328
|
+
/* @__PURE__ */ e(C, { title: "FILE UPLOAD", children: /* @__PURE__ */ e(fa, { label: "Upload shipping documents", onFilesSelected: () => {
|
|
1329
|
+
}, multiple: !0, accept: ".pdf,.doc,.docx,.png,.jpg" }) }),
|
|
1330
|
+
/* @__PURE__ */ e(C, { title: "CARDS", children: /* @__PURE__ */ n(ge, { shadow: !0, children: [
|
|
1331
|
+
/* @__PURE__ */ e(Se, { title: "Shipment Summary", subtitle: "Recent operational activity", actions: /* @__PURE__ */ e(N, { variant: "ghost", size: "sm", children: "Export" }) }),
|
|
1332
|
+
/* @__PURE__ */ e("p", { style: { margin: 0, color: "#1B2440", fontSize: 13 }, children: "Container release, customs review, and delivery notes are ready for review." }),
|
|
1333
|
+
/* @__PURE__ */ n(Ge, { align: "between", children: [
|
|
1334
|
+
/* @__PURE__ */ e("span", { style: { color: "#8A93AD", fontSize: 12 }, children: "Last updated 2 min ago" }),
|
|
1335
|
+
/* @__PURE__ */ e(N, { variant: "primary", children: "Save" })
|
|
1336
|
+
] })
|
|
1337
|
+
] }) }),
|
|
1338
|
+
/* @__PURE__ */ e(C, { title: "STAT CARDS", children: /* @__PURE__ */ n($, { gap: 16, children: [
|
|
1339
|
+
/* @__PURE__ */ e(V, { title: "Total Shipments", value: "1,284", change: 8.3, icon: "Package", trend: "up" }),
|
|
1340
|
+
/* @__PURE__ */ e(V, { title: "Revenue", value: "$94,210", change: 12.1, icon: "DollarSign", trend: "up" }),
|
|
1341
|
+
/* @__PURE__ */ e(V, { title: "Active Customers", value: "342", change: -2.4, icon: "Users", trend: "down" }),
|
|
1342
|
+
/* @__PURE__ */ e(V, { title: "On-Time Delivery", value: "97.2%", change: 0.8, icon: "CheckCircle", trend: "up" })
|
|
1343
|
+
] }) }),
|
|
1344
|
+
/* @__PURE__ */ e(C, { title: "BANNER", children: ["info", "success", "warning", "danger"].map((o) => /* @__PURE__ */ e(Ke, { variant: o, message: `${o} banner message for logistics operations.`, onDismiss: () => {
|
|
1345
|
+
} }, o)) }),
|
|
1346
|
+
/* @__PURE__ */ e(C, { title: "TABLE", children: /* @__PURE__ */ e(Ue, { columns: Ga, data: Wa, loading: !1, striped: !0 }) }),
|
|
1347
|
+
/* @__PURE__ */ e(C, { title: "TOAST", children: /* @__PURE__ */ e(ja, {}) }),
|
|
1348
|
+
/* @__PURE__ */ n(C, { title: "MODAL", children: [
|
|
1349
|
+
/* @__PURE__ */ e(N, { variant: "primary", onClick: () => t(!0), children: "Open Modal" }),
|
|
1350
|
+
/* @__PURE__ */ e(
|
|
1351
|
+
qe,
|
|
1352
|
+
{
|
|
1353
|
+
open: a,
|
|
1354
|
+
onClose: () => t(!1),
|
|
1355
|
+
size: "md",
|
|
1356
|
+
title: "Confirm Action",
|
|
1357
|
+
footer: /* @__PURE__ */ n(ce, { children: [
|
|
1358
|
+
/* @__PURE__ */ e(N, { variant: "ghost", onClick: () => t(!1), children: "Cancel" }),
|
|
1359
|
+
/* @__PURE__ */ e(N, { variant: "primary", onClick: () => t(!1), children: "Confirm" })
|
|
1360
|
+
] }),
|
|
1361
|
+
children: "This action will update the selected shipment record and notify the assigned operations team."
|
|
1362
|
+
}
|
|
1363
|
+
)
|
|
1364
|
+
] }),
|
|
1365
|
+
/* @__PURE__ */ e(C, { title: "ALERT", children: ["info", "success", "warning", "danger"].map((o) => /* @__PURE__ */ e(Aa, { variant: o, title: `${o} alert`, message: `This is a ${o} alert message.` }, o)) }),
|
|
1366
|
+
/* @__PURE__ */ e(C, { title: "SPINNER", children: /* @__PURE__ */ e($, { gap: 8, children: ["sm", "md", "lg"].map((o) => /* @__PURE__ */ n("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", gap: 8 }, children: [
|
|
1367
|
+
/* @__PURE__ */ e(_a, { size: o }),
|
|
1368
|
+
/* @__PURE__ */ e("span", { style: { ...S, fontSize: 11 }, children: o })
|
|
1369
|
+
] }, o)) }) }),
|
|
1370
|
+
/* @__PURE__ */ e(C, { title: "BREADCRUMB", children: /* @__PURE__ */ e(Je, { items: [{ label: "Home" }, { label: "Freight" }, { label: "Air Freight" }, { label: "Shipment #1284" }] }) }),
|
|
1371
|
+
/* @__PURE__ */ e(C, { title: "NAV", children: /* @__PURE__ */ e("div", { style: { width: 224, border: "1px solid #E8EAF2", borderRadius: 8, padding: 8 }, children: /* @__PURE__ */ n(Ye, { activePage: "airfreight", collapsed: !1, children: [
|
|
1372
|
+
/* @__PURE__ */ n(X, { label: "Freight", children: [
|
|
1373
|
+
/* @__PURE__ */ e(L, { id: "airfreight", label: "Air Freight", icon: "Plane" }),
|
|
1374
|
+
/* @__PURE__ */ e(L, { id: "seafreight", label: "Sea Freight", icon: "Anchor" }),
|
|
1375
|
+
/* @__PURE__ */ e(L, { id: "trucking", label: "Trucking", icon: "Truck" })
|
|
1376
|
+
] }),
|
|
1377
|
+
/* @__PURE__ */ n(X, { label: "Customs", children: [
|
|
1378
|
+
/* @__PURE__ */ e(L, { id: "customs", label: "Customs", icon: "FileCheck" }),
|
|
1379
|
+
/* @__PURE__ */ e(L, { id: "bonded", label: "Bonded", icon: "Warehouse" })
|
|
1380
|
+
] }),
|
|
1381
|
+
/* @__PURE__ */ n(X, { label: "Admin", children: [
|
|
1382
|
+
/* @__PURE__ */ e(L, { id: "hr", label: "HR", icon: "Users" }),
|
|
1383
|
+
/* @__PURE__ */ e(L, { id: "finance", label: "Finance", icon: "DollarSign" })
|
|
1384
|
+
] })
|
|
1385
|
+
] }) }) })
|
|
1386
|
+
] }) });
|
|
1387
|
+
}
|
|
1388
|
+
function hn() {
|
|
1389
|
+
return /* @__PURE__ */ e(ka, { children: /* @__PURE__ */ e(qa, {}) });
|
|
1390
|
+
}
|
|
1391
|
+
const be = [
|
|
1392
|
+
{ id: "home", label: "Home", icon: "Home" },
|
|
1393
|
+
{ id: "ceo", label: "CEO Dashboard", icon: "LayoutGrid" },
|
|
1394
|
+
{ id: "coo", label: "COO Dashboard", icon: "Gauge", section: "Operations" },
|
|
1395
|
+
{ id: "files", label: "All files", icon: "LayoutGrid" },
|
|
1396
|
+
{
|
|
1397
|
+
id: "air",
|
|
1398
|
+
label: "Air Freight",
|
|
1399
|
+
icon: "Plane",
|
|
1400
|
+
children: [
|
|
1401
|
+
{ id: "air-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1402
|
+
{ id: "air-quotations", label: "Quotations", icon: "FileText" },
|
|
1403
|
+
{ id: "air-files", label: "Files", icon: "Plane" },
|
|
1404
|
+
{ id: "air-warehouse", label: "Warehouse", icon: "Warehouse" },
|
|
1405
|
+
{ id: "air-track-trace", label: "Track & trace", icon: "ScanSearch" },
|
|
1406
|
+
{ id: "air-awb-stock", label: "AWB stock", icon: "Hash" },
|
|
1407
|
+
{ id: "air-security", label: "Security (RA/KC)", icon: "ShieldCheck" }
|
|
1408
|
+
]
|
|
1409
|
+
},
|
|
1410
|
+
{
|
|
1411
|
+
id: "customs",
|
|
1412
|
+
label: "Customs",
|
|
1413
|
+
icon: "Landmark",
|
|
1414
|
+
children: [
|
|
1415
|
+
{ id: "customs-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1416
|
+
{ id: "customs-declarations", label: "Declarations", icon: "FileCheck" },
|
|
1417
|
+
{ id: "customs-files", label: "Files", icon: "FileText" },
|
|
1418
|
+
{ id: "customs-clearance", label: "Clearance", icon: "ClipboardCheck" },
|
|
1419
|
+
{ id: "customs-hs-codes", label: "HS codes", icon: "Hash" },
|
|
1420
|
+
{ id: "customs-security", label: "Security", icon: "ShieldCheck" }
|
|
1421
|
+
]
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
id: "sea",
|
|
1425
|
+
label: "Sea Freight",
|
|
1426
|
+
icon: "Ship",
|
|
1427
|
+
children: [
|
|
1428
|
+
{ id: "sea-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1429
|
+
{ id: "sea-quotations", label: "Quotations", icon: "FileText" },
|
|
1430
|
+
{ id: "sea-files", label: "Files", icon: "Ship" },
|
|
1431
|
+
{ id: "sea-containers", label: "Containers", icon: "Boxes" },
|
|
1432
|
+
{ id: "sea-track-trace", label: "Track & trace", icon: "ScanSearch" },
|
|
1433
|
+
{ id: "sea-bl-stock", label: "B/L stock", icon: "Hash" }
|
|
1434
|
+
]
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
id: "truck",
|
|
1438
|
+
label: "Trucking",
|
|
1439
|
+
icon: "Truck",
|
|
1440
|
+
children: [
|
|
1441
|
+
{ id: "truck-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1442
|
+
{ id: "truck-quotations", label: "Quotations", icon: "FileText" },
|
|
1443
|
+
{ id: "truck-files", label: "Files", icon: "Truck" },
|
|
1444
|
+
{ id: "truck-dispatch", label: "Dispatch", icon: "Route" },
|
|
1445
|
+
{ id: "truck-track-trace", label: "Track & trace", icon: "ScanSearch" },
|
|
1446
|
+
{ id: "truck-fleet", label: "Fleet", icon: "Truck" }
|
|
1447
|
+
]
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
id: "warehouse",
|
|
1451
|
+
label: "Warehouse (WMS)",
|
|
1452
|
+
icon: "Warehouse",
|
|
1453
|
+
children: [
|
|
1454
|
+
{ id: "warehouse-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1455
|
+
{ id: "warehouse-receipts", label: "Receipts", icon: "PackageCheck" },
|
|
1456
|
+
{ id: "warehouse-files", label: "Files", icon: "FileText" },
|
|
1457
|
+
{ id: "warehouse-inventory", label: "Inventory", icon: "Boxes" },
|
|
1458
|
+
{ id: "warehouse-pick-pack", label: "Pick & pack", icon: "PackageOpen" },
|
|
1459
|
+
{ id: "warehouse-dispatch", label: "Dispatch", icon: "Truck" }
|
|
1460
|
+
]
|
|
1461
|
+
},
|
|
1462
|
+
{ id: "cfo", label: "CFO Dashboard", icon: "Wallet", section: "Corporate Services" },
|
|
1463
|
+
{
|
|
1464
|
+
id: "backoffice",
|
|
1465
|
+
label: "Backoffice",
|
|
1466
|
+
icon: "FileText",
|
|
1467
|
+
children: [
|
|
1468
|
+
{ id: "backoffice-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1469
|
+
{ id: "backoffice-tasks", label: "Tasks", icon: "ClipboardCheck" },
|
|
1470
|
+
{ id: "backoffice-files", label: "Files", icon: "FileText" },
|
|
1471
|
+
{ id: "backoffice-automations", label: "Automations", icon: "Workflow" }
|
|
1472
|
+
]
|
|
1473
|
+
},
|
|
1474
|
+
{
|
|
1475
|
+
id: "finance",
|
|
1476
|
+
label: "Finance",
|
|
1477
|
+
icon: "Wallet",
|
|
1478
|
+
children: [
|
|
1479
|
+
{ id: "finance-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1480
|
+
{ id: "finance-invoices", label: "Invoices", icon: "Receipt" },
|
|
1481
|
+
{ id: "finance-payments", label: "Payments", icon: "Wallet" },
|
|
1482
|
+
{ id: "finance-reports", label: "Reports", icon: "BarChart3" }
|
|
1483
|
+
]
|
|
1484
|
+
},
|
|
1485
|
+
{
|
|
1486
|
+
id: "ap",
|
|
1487
|
+
label: "AP Control Tower",
|
|
1488
|
+
icon: "ClipboardCheck",
|
|
1489
|
+
children: [
|
|
1490
|
+
{ id: "ap-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1491
|
+
{ id: "ap-vendor-bills", label: "Vendor bills", icon: "Receipt" },
|
|
1492
|
+
{ id: "ap-approvals", label: "Approvals", icon: "CheckCircle2" },
|
|
1493
|
+
{ id: "ap-exceptions", label: "Exceptions", icon: "AlertTriangle" }
|
|
1494
|
+
]
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
id: "hr",
|
|
1498
|
+
label: "Human Resources",
|
|
1499
|
+
icon: "Users",
|
|
1500
|
+
children: [
|
|
1501
|
+
{ id: "hr-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1502
|
+
{ id: "hr-employees", label: "Employees", icon: "Users" },
|
|
1503
|
+
{ id: "hr-attendance", label: "Attendance", icon: "Clock" },
|
|
1504
|
+
{ id: "hr-training", label: "Training", icon: "BookOpen" }
|
|
1505
|
+
]
|
|
1506
|
+
},
|
|
1507
|
+
{
|
|
1508
|
+
id: "affairs",
|
|
1509
|
+
label: "Corporate Affairs",
|
|
1510
|
+
icon: "Landmark",
|
|
1511
|
+
children: [
|
|
1512
|
+
{ id: "affairs-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1513
|
+
{ id: "affairs-licenses", label: "Licenses", icon: "ShieldCheck" },
|
|
1514
|
+
{ id: "affairs-policies", label: "Policies", icon: "FileText" },
|
|
1515
|
+
{ id: "affairs-cases", label: "Cases", icon: "Briefcase" }
|
|
1516
|
+
]
|
|
1517
|
+
},
|
|
1518
|
+
{ id: "cco", label: "CCO Dashboard", icon: "Activity", section: "Commercial" },
|
|
1519
|
+
{
|
|
1520
|
+
id: "marketing",
|
|
1521
|
+
label: "Marketing",
|
|
1522
|
+
icon: "Globe",
|
|
1523
|
+
children: [
|
|
1524
|
+
{ id: "marketing-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1525
|
+
{ id: "marketing-campaigns", label: "Campaigns", icon: "Activity" },
|
|
1526
|
+
{ id: "marketing-leads", label: "Leads", icon: "Users" },
|
|
1527
|
+
{ id: "marketing-content", label: "Content", icon: "FileText" }
|
|
1528
|
+
]
|
|
1529
|
+
},
|
|
1530
|
+
{
|
|
1531
|
+
id: "sales",
|
|
1532
|
+
label: "Sales",
|
|
1533
|
+
icon: "Briefcase",
|
|
1534
|
+
children: [
|
|
1535
|
+
{ id: "sales-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1536
|
+
{ id: "sales-opportunities", label: "Opportunities", icon: "TrendingUp" },
|
|
1537
|
+
{ id: "sales-quotations", label: "Quotations", icon: "FileText" },
|
|
1538
|
+
{ id: "sales-customers", label: "Customers", icon: "Users" }
|
|
1539
|
+
]
|
|
1540
|
+
},
|
|
1541
|
+
{
|
|
1542
|
+
id: "admin",
|
|
1543
|
+
label: "Admin",
|
|
1544
|
+
icon: "Lock",
|
|
1545
|
+
section: "System",
|
|
1546
|
+
children: [
|
|
1547
|
+
{ id: "admin-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1548
|
+
{ id: "admin-users", label: "Users", icon: "Users" },
|
|
1549
|
+
{ id: "admin-roles", label: "Roles", icon: "ShieldCheck" },
|
|
1550
|
+
{ id: "admin-audit-log", label: "Audit log", icon: "FileText" }
|
|
1551
|
+
]
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
id: "general",
|
|
1555
|
+
label: "General (shared)",
|
|
1556
|
+
icon: "Settings",
|
|
1557
|
+
children: [
|
|
1558
|
+
{ id: "general-dashboard", label: "Dashboard", icon: "LayoutGrid" },
|
|
1559
|
+
{ id: "general-master-data", label: "Master data", icon: "Database" },
|
|
1560
|
+
{ id: "general-shared-files", label: "Shared files", icon: "FileText" },
|
|
1561
|
+
{ id: "general-settings", label: "Settings", icon: "Settings" }
|
|
1562
|
+
]
|
|
1563
|
+
},
|
|
1564
|
+
{ id: "public", label: "Public website", icon: "Globe", external: !0, promoted: !0 }
|
|
1565
|
+
], Oe = {
|
|
1566
|
+
"Your Cargo Contact (HQ)": be.map((a) => a.id),
|
|
1567
|
+
"YCC Colchester": ["home", "ceo", "coo", "files", "air", "customs", "sea", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"],
|
|
1568
|
+
"YCC Liège": ["home", "ceo", "coo", "files", "air", "truck", "warehouse", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"],
|
|
1569
|
+
"Linex UK": ["home", "ceo", "coo", "files", "customs", "sea", "truck", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"],
|
|
1570
|
+
CCL: ["home", "ceo", "coo", "files", "customs", "sea", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"],
|
|
1571
|
+
"Linex France": ["home", "ceo", "coo", "files", "customs", "truck", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"],
|
|
1572
|
+
"YCC Madrid": ["home", "ceo", "coo", "files", "air", "truck", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"],
|
|
1573
|
+
"YCC Barcelona": ["home", "ceo", "coo", "files", "sea", "truck", "cfo", "hr", "affairs", "cco", "marketing", "sales", "admin", "general", "public"]
|
|
1574
|
+
};
|
|
1575
|
+
function Qe(a) {
|
|
1576
|
+
const t = Oe[a] ?? Oe["Your Cargo Contact (HQ)"], r = a === "Your Cargo Contact (HQ)";
|
|
1577
|
+
return be.filter((i) => t.includes(i.id)).map((i) => r ? i : { ...i, children: void 0 });
|
|
1578
|
+
}
|
|
1579
|
+
function Ya(a) {
|
|
1580
|
+
return Qe(a).flatMap((t) => [t.id, ...t.children?.map((r) => r.id) ?? []]);
|
|
1581
|
+
}
|
|
1582
|
+
const Be = ["Dubai DXB", "Madrid MAD", "Singapore SIN", "London LHR", "New York JFK"], Re = [
|
|
1583
|
+
{ name: "Mark", role: "Administrator" },
|
|
1584
|
+
{ name: "Eva Bakker", role: "Customs" },
|
|
1585
|
+
{ name: "Sven Mol", role: "Air Freight" },
|
|
1586
|
+
{ name: "Ravi Nair", role: "Sea Freight" },
|
|
1587
|
+
{ name: "Tom Visser", role: "Trucking" },
|
|
1588
|
+
{ name: "Lina Roos", role: "Finance" },
|
|
1589
|
+
{ name: "Nora Smit", role: "Sales" },
|
|
1590
|
+
{ name: "Daan Bos", role: "Warehouse" },
|
|
1591
|
+
{ name: "Iris Vos", role: "Backoffice" },
|
|
1592
|
+
{ name: "Sara Vidal", role: "Marketing" },
|
|
1593
|
+
{ name: "Pim de Groot", role: "Human Resources" },
|
|
1594
|
+
{ name: "Hannah de Wit", role: "Corporate Affairs" }
|
|
1595
|
+
], Ja = {
|
|
1596
|
+
home: {
|
|
1597
|
+
title: "Your Cargo Contact",
|
|
1598
|
+
eyebrow: "Customs · Freight · Warehousing",
|
|
1599
|
+
description: "Welcome, Mark. One platform for declarations, freight files, warehousing and back-office across every department.",
|
|
1600
|
+
icon: "Home",
|
|
1601
|
+
metrics: [
|
|
1602
|
+
{ label: "Open files", value: "1,284", change: "+8.3%", tone: "blue" },
|
|
1603
|
+
{ label: "Released today", value: "216", change: "+12", tone: "green" },
|
|
1604
|
+
{ label: "Pending reviews", value: "38", change: "-4", tone: "amber" },
|
|
1605
|
+
{ label: "On-time delivery", value: "97.2%", change: "+0.8%", tone: "violet" }
|
|
1606
|
+
],
|
|
1607
|
+
work: [
|
|
1608
|
+
{ ref: "SHP-1284", customer: "Atlas Foods", owner: "Sara Malik", status: "Released", due: "Today" },
|
|
1609
|
+
{ ref: "SHP-1285", customer: "Nile Trading", owner: "Omar Reyes", status: "In transit", due: "Tomorrow" },
|
|
1610
|
+
{ ref: "SHP-1286", customer: "Blue Harbor", owner: "Lea Santos", status: "Docs needed", due: "Jun 28" }
|
|
1611
|
+
]
|
|
1612
|
+
},
|
|
1613
|
+
ceo: {
|
|
1614
|
+
title: "CEO Dashboard",
|
|
1615
|
+
eyebrow: "Executive overview",
|
|
1616
|
+
description: "Revenue, service quality, customer movement, and cross-branch operating health.",
|
|
1617
|
+
icon: "BarChart3",
|
|
1618
|
+
metrics: [
|
|
1619
|
+
{ label: "Monthly revenue", value: "$482K", change: "+14.2%", tone: "green" },
|
|
1620
|
+
{ label: "Gross margin", value: "32.6%", change: "+2.1%", tone: "blue" },
|
|
1621
|
+
{ label: "Key accounts", value: "84", change: "+6", tone: "violet" },
|
|
1622
|
+
{ label: "Escalations", value: "7", change: "-3", tone: "amber" }
|
|
1623
|
+
],
|
|
1624
|
+
work: [
|
|
1625
|
+
{ ref: "CEO-441", customer: "Board pack", owner: "Mark Jensen", status: "Ready", due: "Today" },
|
|
1626
|
+
{ ref: "CEO-442", customer: "Top accounts", owner: "Lina Park", status: "Review", due: "Jun 27" },
|
|
1627
|
+
{ ref: "CEO-443", customer: "Branch forecast", owner: "Ahmed Noor", status: "Draft", due: "Jul 01" }
|
|
1628
|
+
]
|
|
1629
|
+
},
|
|
1630
|
+
coo: {
|
|
1631
|
+
title: "COO Dashboard",
|
|
1632
|
+
eyebrow: "Operations control",
|
|
1633
|
+
description: "Live operational throughput across air, road, warehouse, and customs desks.",
|
|
1634
|
+
icon: "Gauge",
|
|
1635
|
+
metrics: [
|
|
1636
|
+
{ label: "Throughput", value: "748", change: "+6.8%", tone: "blue" },
|
|
1637
|
+
{ label: "SLA met", value: "94%", change: "+1.4%", tone: "green" },
|
|
1638
|
+
{ label: "Bottlenecks", value: "11", change: "-5", tone: "amber" },
|
|
1639
|
+
{ label: "Capacity", value: "81%", change: "+3%", tone: "violet" }
|
|
1640
|
+
],
|
|
1641
|
+
work: [
|
|
1642
|
+
{ ref: "OPS-214", customer: "Night shift handover", owner: "Noor Ali", status: "Active", due: "Today" },
|
|
1643
|
+
{ ref: "OPS-215", customer: "Warehouse dock plan", owner: "Marta Ruiz", status: "Planned", due: "Tomorrow" },
|
|
1644
|
+
{ ref: "OPS-216", customer: "Customs queue", owner: "Chen Wei", status: "At risk", due: "Today" }
|
|
1645
|
+
]
|
|
1646
|
+
},
|
|
1647
|
+
files: {
|
|
1648
|
+
title: "All files",
|
|
1649
|
+
eyebrow: "Document workspace",
|
|
1650
|
+
description: "A searchable working set for declarations, invoices, airway bills, and delivery notes.",
|
|
1651
|
+
icon: "FileText",
|
|
1652
|
+
metrics: [
|
|
1653
|
+
{ label: "Total files", value: "8,410", change: "+312", tone: "blue" },
|
|
1654
|
+
{ label: "Missing docs", value: "26", change: "-9", tone: "amber" },
|
|
1655
|
+
{ label: "Completed", value: "1,102", change: "+91", tone: "green" },
|
|
1656
|
+
{ label: "Archived", value: "21K", change: "+1.1K", tone: "violet" }
|
|
1657
|
+
],
|
|
1658
|
+
work: [
|
|
1659
|
+
{ ref: "DOC-771", customer: "Commercial invoice", owner: "Sara Malik", status: "Uploaded", due: "Today" },
|
|
1660
|
+
{ ref: "DOC-772", customer: "AWB packet", owner: "Omar Reyes", status: "Missing stamp", due: "Today" },
|
|
1661
|
+
{ ref: "DOC-773", customer: "Packing list", owner: "Lea Santos", status: "Verified", due: "Jun 29" }
|
|
1662
|
+
]
|
|
1663
|
+
},
|
|
1664
|
+
air: {
|
|
1665
|
+
title: "Air Freight",
|
|
1666
|
+
eyebrow: "Freight operations",
|
|
1667
|
+
description: "Airway bill tracking, airport handoffs, customs readiness, and delivery milestones.",
|
|
1668
|
+
icon: "Plane",
|
|
1669
|
+
metrics: [
|
|
1670
|
+
{ label: "Flights tracked", value: "142", change: "+18", tone: "blue" },
|
|
1671
|
+
{ label: "Arrivals today", value: "37", change: "+5", tone: "green" },
|
|
1672
|
+
{ label: "Held shipments", value: "9", change: "-2", tone: "amber" },
|
|
1673
|
+
{ label: "Avg clearance", value: "3.2h", change: "-0.4h", tone: "violet" }
|
|
1674
|
+
],
|
|
1675
|
+
work: [
|
|
1676
|
+
{ ref: "AWB-889201", customer: "Falcon Pharma", owner: "Yusuf Khan", status: "Landed", due: "Today" },
|
|
1677
|
+
{ ref: "AWB-889202", customer: "Iberia Retail", owner: "Ana Lopez", status: "Customs", due: "Today" },
|
|
1678
|
+
{ ref: "AWB-889203", customer: "Pearl Devices", owner: "Mina Chen", status: "Departed", due: "Tomorrow" }
|
|
1679
|
+
]
|
|
1680
|
+
},
|
|
1681
|
+
customs: {
|
|
1682
|
+
title: "Customs",
|
|
1683
|
+
eyebrow: "Declaration control",
|
|
1684
|
+
description: "Customs declarations, inspection queues, release events, and authority messages.",
|
|
1685
|
+
icon: "Landmark",
|
|
1686
|
+
metrics: [
|
|
1687
|
+
{ label: "Declarations", value: "312", change: "+27", tone: "blue" },
|
|
1688
|
+
{ label: "Cleared today", value: "86", change: "+14", tone: "green" },
|
|
1689
|
+
{ label: "Held", value: "12", change: "-3", tone: "amber" },
|
|
1690
|
+
{ label: "Avg review", value: "2.8h", change: "-0.6h", tone: "violet" }
|
|
1691
|
+
],
|
|
1692
|
+
work: [
|
|
1693
|
+
{ ref: "CUS-6201", customer: "Atlas Foods", owner: "Sara Malik", status: "Cleared", due: "Today" },
|
|
1694
|
+
{ ref: "CUS-6202", customer: "Iberia Retail", owner: "Ana Lopez", status: "Inspection", due: "Today" },
|
|
1695
|
+
{ ref: "CUS-6203", customer: "Falcon Pharma", owner: "Yusuf Khan", status: "Submitted", due: "Tomorrow" }
|
|
1696
|
+
]
|
|
1697
|
+
},
|
|
1698
|
+
sea: {
|
|
1699
|
+
title: "Sea Freight",
|
|
1700
|
+
eyebrow: "Ocean operations",
|
|
1701
|
+
description: "Container milestones, vessel arrivals, demurrage exposure, and port handoffs.",
|
|
1702
|
+
icon: "Ship",
|
|
1703
|
+
metrics: [
|
|
1704
|
+
{ label: "Containers", value: "428", change: "+31", tone: "blue" },
|
|
1705
|
+
{ label: "Arrivals", value: "19", change: "+4", tone: "green" },
|
|
1706
|
+
{ label: "Demurrage risk", value: "7", change: "-2", tone: "amber" },
|
|
1707
|
+
{ label: "Port dwell", value: "1.9d", change: "-0.3d", tone: "violet" }
|
|
1708
|
+
],
|
|
1709
|
+
work: [
|
|
1710
|
+
{ ref: "SEA-7741", customer: "Blue Harbor", owner: "Lea Santos", status: "At port", due: "Today" },
|
|
1711
|
+
{ ref: "SEA-7742", customer: "Nile Trading", owner: "Omar Reyes", status: "Sailing", due: "Jul 02" },
|
|
1712
|
+
{ ref: "SEA-7743", customer: "Oceanic Parts", owner: "Nadia Karim", status: "Discharged", due: "Tomorrow" }
|
|
1713
|
+
]
|
|
1714
|
+
},
|
|
1715
|
+
truck: {
|
|
1716
|
+
title: "Trucking",
|
|
1717
|
+
eyebrow: "Road transport",
|
|
1718
|
+
description: "Fleet dispatch, delivery windows, driver assignments, and cross-dock visibility.",
|
|
1719
|
+
icon: "Truck",
|
|
1720
|
+
metrics: [
|
|
1721
|
+
{ label: "Active trucks", value: "58", change: "+7", tone: "blue" },
|
|
1722
|
+
{ label: "On route", value: "41", change: "+3", tone: "green" },
|
|
1723
|
+
{ label: "Delayed stops", value: "6", change: "-2", tone: "amber" },
|
|
1724
|
+
{ label: "Utilization", value: "88%", change: "+4%", tone: "violet" }
|
|
1725
|
+
],
|
|
1726
|
+
work: [
|
|
1727
|
+
{ ref: "TRK-5401", customer: "Metro Foods", owner: "Hassan Raza", status: "On route", due: "14:30" },
|
|
1728
|
+
{ ref: "TRK-5402", customer: "Delta Textiles", owner: "Victor Cruz", status: "Loading", due: "16:00" },
|
|
1729
|
+
{ ref: "TRK-5403", customer: "Oceanic Parts", owner: "Nadia Karim", status: "Delivered", due: "Done" }
|
|
1730
|
+
]
|
|
1731
|
+
},
|
|
1732
|
+
warehouse: {
|
|
1733
|
+
title: "Warehouse (WMS)",
|
|
1734
|
+
eyebrow: "Warehouse management",
|
|
1735
|
+
description: "Inbound receipts, put-away, inventory movements, picks, and outbound scans.",
|
|
1736
|
+
icon: "Warehouse",
|
|
1737
|
+
metrics: [
|
|
1738
|
+
{ label: "Pallets stored", value: "3,842", change: "+112", tone: "blue" },
|
|
1739
|
+
{ label: "Picked today", value: "694", change: "+58", tone: "green" },
|
|
1740
|
+
{ label: "Exceptions", value: "14", change: "-6", tone: "amber" },
|
|
1741
|
+
{ label: "Dock usage", value: "76%", change: "+5%", tone: "violet" }
|
|
1742
|
+
],
|
|
1743
|
+
work: [
|
|
1744
|
+
{ ref: "WMS-1801", customer: "Metro Foods", owner: "Marta Ruiz", status: "Receiving", due: "10:30" },
|
|
1745
|
+
{ ref: "WMS-1802", customer: "Pearl Devices", owner: "Mina Chen", status: "Put-away", due: "Today" },
|
|
1746
|
+
{ ref: "WMS-1803", customer: "Delta Textiles", owner: "Victor Cruz", status: "Outbound", due: "16:00" }
|
|
1747
|
+
]
|
|
1748
|
+
},
|
|
1749
|
+
cfo: {
|
|
1750
|
+
title: "CFO Dashboard",
|
|
1751
|
+
eyebrow: "Finance control",
|
|
1752
|
+
description: "Receivables, payable exposure, branch profitability, and invoice approvals.",
|
|
1753
|
+
icon: "Wallet",
|
|
1754
|
+
metrics: [
|
|
1755
|
+
{ label: "Receivables", value: "$214K", change: "-8%", tone: "green" },
|
|
1756
|
+
{ label: "Payables", value: "$96K", change: "+3%", tone: "blue" },
|
|
1757
|
+
{ label: "Overdue", value: "$18K", change: "-$6K", tone: "amber" },
|
|
1758
|
+
{ label: "Profitability", value: "24%", change: "+2%", tone: "violet" }
|
|
1759
|
+
],
|
|
1760
|
+
work: [
|
|
1761
|
+
{ ref: "FIN-901", customer: "Invoice batch", owner: "Elena Rossi", status: "Approved", due: "Today" },
|
|
1762
|
+
{ ref: "FIN-902", customer: "Vendor payments", owner: "Bilal Shah", status: "Queued", due: "Tomorrow" },
|
|
1763
|
+
{ ref: "FIN-903", customer: "Margin report", owner: "Mark Jensen", status: "Review", due: "Jun 30" }
|
|
1764
|
+
]
|
|
1765
|
+
},
|
|
1766
|
+
backoffice: {
|
|
1767
|
+
title: "Backoffice",
|
|
1768
|
+
eyebrow: "Administrative processing",
|
|
1769
|
+
description: "Internal tasks, document cleanup, branch support, and operational follow-ups.",
|
|
1770
|
+
icon: "FileText",
|
|
1771
|
+
metrics: [
|
|
1772
|
+
{ label: "Tasks open", value: "143", change: "-18", tone: "green" },
|
|
1773
|
+
{ label: "Documents fixed", value: "72", change: "+21", tone: "blue" },
|
|
1774
|
+
{ label: "Waiting input", value: "16", change: "-4", tone: "amber" },
|
|
1775
|
+
{ label: "Automation rate", value: "64%", change: "+7%", tone: "violet" }
|
|
1776
|
+
],
|
|
1777
|
+
work: [
|
|
1778
|
+
{ ref: "BKO-411", customer: "Invoice cleanup", owner: "Bilal Shah", status: "Active", due: "Today" },
|
|
1779
|
+
{ ref: "BKO-412", customer: "Data validation", owner: "Priya Shah", status: "Queued", due: "Tomorrow" },
|
|
1780
|
+
{ ref: "BKO-413", customer: "Branch support", owner: "Noor Ali", status: "Review", due: "Jun 29" }
|
|
1781
|
+
]
|
|
1782
|
+
},
|
|
1783
|
+
finance: {
|
|
1784
|
+
title: "Finance",
|
|
1785
|
+
eyebrow: "Finance operations",
|
|
1786
|
+
description: "Invoice issuance, payment matching, customer balances, and branch settlements.",
|
|
1787
|
+
icon: "Wallet",
|
|
1788
|
+
metrics: [
|
|
1789
|
+
{ label: "Invoices", value: "516", change: "+44", tone: "blue" },
|
|
1790
|
+
{ label: "Collected", value: "$148K", change: "+9%", tone: "green" },
|
|
1791
|
+
{ label: "Disputes", value: "8", change: "-2", tone: "amber" },
|
|
1792
|
+
{ label: "Matched", value: "92%", change: "+3%", tone: "violet" }
|
|
1793
|
+
],
|
|
1794
|
+
work: [
|
|
1795
|
+
{ ref: "PAY-221", customer: "Atlas Foods", owner: "Elena Rossi", status: "Matched", due: "Today" },
|
|
1796
|
+
{ ref: "PAY-222", customer: "Falcon Pharma", owner: "Bilal Shah", status: "Pending", due: "Tomorrow" },
|
|
1797
|
+
{ ref: "PAY-223", customer: "Blue Harbor", owner: "Mark Jensen", status: "Disputed", due: "Jun 30" }
|
|
1798
|
+
]
|
|
1799
|
+
},
|
|
1800
|
+
ap: {
|
|
1801
|
+
title: "AP Control Tower",
|
|
1802
|
+
eyebrow: "Accounts payable",
|
|
1803
|
+
description: "Vendor bills, approval routes, payment readiness, and exception management.",
|
|
1804
|
+
icon: "ClipboardCheck",
|
|
1805
|
+
metrics: [
|
|
1806
|
+
{ label: "Vendor bills", value: "238", change: "+19", tone: "blue" },
|
|
1807
|
+
{ label: "Approved", value: "174", change: "+26", tone: "green" },
|
|
1808
|
+
{ label: "Exceptions", value: "13", change: "-5", tone: "amber" },
|
|
1809
|
+
{ label: "Cycle time", value: "1.6d", change: "-0.2d", tone: "violet" }
|
|
1810
|
+
],
|
|
1811
|
+
work: [
|
|
1812
|
+
{ ref: "AP-701", customer: "Port handling bill", owner: "Elena Rossi", status: "Approved", due: "Today" },
|
|
1813
|
+
{ ref: "AP-702", customer: "Carrier invoice", owner: "Bilal Shah", status: "Needs review", due: "Tomorrow" },
|
|
1814
|
+
{ ref: "AP-703", customer: "Warehouse vendor", owner: "Priya Shah", status: "Queued", due: "Jun 29" }
|
|
1815
|
+
]
|
|
1816
|
+
},
|
|
1817
|
+
hr: {
|
|
1818
|
+
title: "Human Resources",
|
|
1819
|
+
eyebrow: "People operations",
|
|
1820
|
+
description: "Staffing, shift coverage, compliance training, and department onboarding.",
|
|
1821
|
+
icon: "Users",
|
|
1822
|
+
metrics: [
|
|
1823
|
+
{ label: "Employees", value: "126", change: "+4", tone: "blue" },
|
|
1824
|
+
{ label: "Open roles", value: "9", change: "+2", tone: "violet" },
|
|
1825
|
+
{ label: "Training due", value: "17", change: "-6", tone: "amber" },
|
|
1826
|
+
{ label: "Coverage", value: "98%", change: "+1%", tone: "green" }
|
|
1827
|
+
],
|
|
1828
|
+
work: [
|
|
1829
|
+
{ ref: "HR-330", customer: "Broker onboarding", owner: "Fatima Noor", status: "In progress", due: "Jul 03" },
|
|
1830
|
+
{ ref: "HR-331", customer: "COO shift roster", owner: "Daniel Meyer", status: "Ready", due: "Today" },
|
|
1831
|
+
{ ref: "HR-332", customer: "Safety training", owner: "Priya Shah", status: "Pending", due: "Jun 28" }
|
|
1832
|
+
]
|
|
1833
|
+
},
|
|
1834
|
+
affairs: {
|
|
1835
|
+
title: "Corporate Affairs",
|
|
1836
|
+
eyebrow: "Governance",
|
|
1837
|
+
description: "Licenses, compliance renewals, legal tasks, and authority correspondence.",
|
|
1838
|
+
icon: "Landmark",
|
|
1839
|
+
metrics: [
|
|
1840
|
+
{ label: "Licenses", value: "24", change: "0", tone: "blue" },
|
|
1841
|
+
{ label: "Renewals", value: "5", change: "-1", tone: "amber" },
|
|
1842
|
+
{ label: "Compliant", value: "100%", change: "OK", tone: "green" },
|
|
1843
|
+
{ label: "Cases", value: "3", change: "-2", tone: "violet" }
|
|
1844
|
+
],
|
|
1845
|
+
work: [
|
|
1846
|
+
{ ref: "CA-711", customer: "Free zone renewal", owner: "Maya Hall", status: "Submitted", due: "Jul 05" },
|
|
1847
|
+
{ ref: "CA-712", customer: "Authority letter", owner: "Omar Reyes", status: "Draft", due: "Today" },
|
|
1848
|
+
{ ref: "CA-713", customer: "Policy review", owner: "Ana Lopez", status: "Approved", due: "Done" }
|
|
1849
|
+
]
|
|
1850
|
+
},
|
|
1851
|
+
cco: {
|
|
1852
|
+
title: "CCO Dashboard",
|
|
1853
|
+
eyebrow: "Commercial growth",
|
|
1854
|
+
description: "Pipeline, conversion, account expansion, and commercial team performance.",
|
|
1855
|
+
icon: "TrendingUp",
|
|
1856
|
+
metrics: [
|
|
1857
|
+
{ label: "Pipeline", value: "$1.8M", change: "+11%", tone: "green" },
|
|
1858
|
+
{ label: "New leads", value: "64", change: "+14", tone: "blue" },
|
|
1859
|
+
{ label: "Conversion", value: "28%", change: "+3%", tone: "violet" },
|
|
1860
|
+
{ label: "At risk", value: "4", change: "-1", tone: "amber" }
|
|
1861
|
+
],
|
|
1862
|
+
work: [
|
|
1863
|
+
{ ref: "COM-490", customer: "Global Foods RFP", owner: "Lina Park", status: "Proposal", due: "Jun 29" },
|
|
1864
|
+
{ ref: "COM-491", customer: "Retail expansion", owner: "Ahmed Noor", status: "Negotiation", due: "Jul 02" },
|
|
1865
|
+
{ ref: "COM-492", customer: "Renewal pack", owner: "Mark Jensen", status: "Ready", due: "Today" }
|
|
1866
|
+
]
|
|
1867
|
+
},
|
|
1868
|
+
marketing: {
|
|
1869
|
+
title: "Marketing",
|
|
1870
|
+
eyebrow: "Campaign workspace",
|
|
1871
|
+
description: "Campaign planning, website requests, lead sources, and content approvals.",
|
|
1872
|
+
icon: "Globe",
|
|
1873
|
+
metrics: [
|
|
1874
|
+
{ label: "Campaigns", value: "12", change: "+2", tone: "blue" },
|
|
1875
|
+
{ label: "Inbound leads", value: "138", change: "+24", tone: "green" },
|
|
1876
|
+
{ label: "Approvals", value: "6", change: "-3", tone: "amber" },
|
|
1877
|
+
{ label: "Traffic", value: "42K", change: "+18%", tone: "violet" }
|
|
1878
|
+
],
|
|
1879
|
+
work: [
|
|
1880
|
+
{ ref: "MKT-221", customer: "Air freight landing page", owner: "Sofia Lane", status: "Review", due: "Today" },
|
|
1881
|
+
{ ref: "MKT-222", customer: "LinkedIn campaign", owner: "Bilal Shah", status: "Live", due: "Active" },
|
|
1882
|
+
{ ref: "MKT-223", customer: "Case study", owner: "Mina Chen", status: "Draft", due: "Jul 04" }
|
|
1883
|
+
]
|
|
1884
|
+
},
|
|
1885
|
+
sales: {
|
|
1886
|
+
title: "Sales",
|
|
1887
|
+
eyebrow: "Sales workspace",
|
|
1888
|
+
description: "Opportunities, quotes, account activities, and follow-up actions for commercial teams.",
|
|
1889
|
+
icon: "Briefcase",
|
|
1890
|
+
metrics: [
|
|
1891
|
+
{ label: "Quotes sent", value: "78", change: "+17", tone: "blue" },
|
|
1892
|
+
{ label: "Won deals", value: "21", change: "+6", tone: "green" },
|
|
1893
|
+
{ label: "Follow-ups", value: "34", change: "-8", tone: "amber" },
|
|
1894
|
+
{ label: "Win rate", value: "31%", change: "+4%", tone: "violet" }
|
|
1895
|
+
],
|
|
1896
|
+
work: [
|
|
1897
|
+
{ ref: "SAL-310", customer: "Metro Foods", owner: "Lina Park", status: "Quoted", due: "Today" },
|
|
1898
|
+
{ ref: "SAL-311", customer: "Global Foods RFP", owner: "Ahmed Noor", status: "Negotiation", due: "Jul 02" },
|
|
1899
|
+
{ ref: "SAL-312", customer: "Pearl Devices", owner: "Sofia Lane", status: "Follow-up", due: "Tomorrow" }
|
|
1900
|
+
]
|
|
1901
|
+
},
|
|
1902
|
+
admin: {
|
|
1903
|
+
title: "Admin",
|
|
1904
|
+
eyebrow: "System administration",
|
|
1905
|
+
description: "Roles, permissions, workspace controls, audit activity, and access governance.",
|
|
1906
|
+
icon: "Lock",
|
|
1907
|
+
metrics: [
|
|
1908
|
+
{ label: "Active users", value: "126", change: "+4", tone: "blue" },
|
|
1909
|
+
{ label: "Roles", value: "18", change: "+1", tone: "violet" },
|
|
1910
|
+
{ label: "Access alerts", value: "3", change: "-2", tone: "amber" },
|
|
1911
|
+
{ label: "Healthy checks", value: "99%", change: "OK", tone: "green" }
|
|
1912
|
+
],
|
|
1913
|
+
work: [
|
|
1914
|
+
{ ref: "ADM-101", customer: "Role update", owner: "Mark Jensen", status: "Applied", due: "Today" },
|
|
1915
|
+
{ ref: "ADM-102", customer: "New branch user", owner: "Fatima Noor", status: "Pending", due: "Tomorrow" },
|
|
1916
|
+
{ ref: "ADM-103", customer: "Audit review", owner: "Daniel Meyer", status: "Scheduled", due: "Jul 01" }
|
|
1917
|
+
]
|
|
1918
|
+
},
|
|
1919
|
+
general: {
|
|
1920
|
+
title: "General (shared)",
|
|
1921
|
+
eyebrow: "Shared settings",
|
|
1922
|
+
description: "Shared references, workspace defaults, master data, and team-level configuration.",
|
|
1923
|
+
icon: "Settings",
|
|
1924
|
+
metrics: [
|
|
1925
|
+
{ label: "Shared lists", value: "42", change: "+3", tone: "blue" },
|
|
1926
|
+
{ label: "Automations", value: "16", change: "+2", tone: "green" },
|
|
1927
|
+
{ label: "Draft changes", value: "5", change: "-1", tone: "amber" },
|
|
1928
|
+
{ label: "Sync status", value: "Live", change: "OK", tone: "violet" }
|
|
1929
|
+
],
|
|
1930
|
+
work: [
|
|
1931
|
+
{ ref: "GEN-501", customer: "Port master data", owner: "Marta Ruiz", status: "Updated", due: "Today" },
|
|
1932
|
+
{ ref: "GEN-502", customer: "Team defaults", owner: "Noor Ali", status: "Draft", due: "Tomorrow" },
|
|
1933
|
+
{ ref: "GEN-503", customer: "Notification rules", owner: "Priya Shah", status: "Active", due: "Done" }
|
|
1934
|
+
]
|
|
1935
|
+
},
|
|
1936
|
+
public: {
|
|
1937
|
+
title: "Public website",
|
|
1938
|
+
eyebrow: "Customer portal",
|
|
1939
|
+
description: "Public-facing service pages, contact forms, quote requests, and live tracking entry points.",
|
|
1940
|
+
icon: "Globe",
|
|
1941
|
+
metrics: [
|
|
1942
|
+
{ label: "Visitors", value: "18.4K", change: "+22%", tone: "green" },
|
|
1943
|
+
{ label: "Quote requests", value: "94", change: "+16", tone: "blue" },
|
|
1944
|
+
{ label: "Open forms", value: "11", change: "-5", tone: "amber" },
|
|
1945
|
+
{ label: "Uptime", value: "99.9%", change: "OK", tone: "violet" }
|
|
1946
|
+
],
|
|
1947
|
+
work: [
|
|
1948
|
+
{ ref: "WEB-801", customer: "Quote form", owner: "Sofia Lane", status: "Live", due: "Active" },
|
|
1949
|
+
{ ref: "WEB-802", customer: "Tracking page", owner: "Marta Ruiz", status: "Updated", due: "Today" },
|
|
1950
|
+
{ ref: "WEB-803", customer: "Service content", owner: "Lina Park", status: "Draft", due: "Jul 01" }
|
|
1951
|
+
]
|
|
1952
|
+
}
|
|
1953
|
+
}, Qa = be.flatMap((a) => a.children?.map((t) => ({ ...t, parentId: a.id, parentLabel: a.label, parentIcon: a.icon })) ?? []);
|
|
1954
|
+
function Xa(a) {
|
|
1955
|
+
const t = Qa.find((d) => d.id === a), r = be.find((d) => d.id === a), i = t?.label ?? r?.label ?? "Workspace", l = t?.parentLabel ?? r?.section ?? "Workspace", c = t?.icon ?? r?.icon ?? "LayoutGrid", o = a.toUpperCase().replace(/[^A-Z0-9]+/g, "-").slice(0, 10);
|
|
1956
|
+
return {
|
|
1957
|
+
title: i,
|
|
1958
|
+
eyebrow: t ? `${l} module` : "Workspace module",
|
|
1959
|
+
description: `${i} workspace for ${l.toLowerCase()} records, operational tracking, approvals, and team follow-up.`,
|
|
1960
|
+
icon: c,
|
|
1961
|
+
metrics: [
|
|
1962
|
+
{ label: "Open records", value: String(42 + a.length * 3), change: "+8", tone: "blue" },
|
|
1963
|
+
{ label: "Completed", value: String(18 + a.length * 2), change: "+5", tone: "green" },
|
|
1964
|
+
{ label: "Needs review", value: String(3 + a.length % 7), change: "-2", tone: "amber" },
|
|
1965
|
+
{ label: "SLA health", value: `${90 + a.length % 8}%`, change: "+1.2%", tone: "violet" }
|
|
1966
|
+
],
|
|
1967
|
+
work: [
|
|
1968
|
+
{ ref: `${o}-101`, customer: `${i} queue`, owner: "Sara Malik", status: "Active", due: "Today" },
|
|
1969
|
+
{ ref: `${o}-102`, customer: `${l} follow-up`, owner: "Omar Reyes", status: "Review", due: "Tomorrow" },
|
|
1970
|
+
{ ref: `${o}-103`, customer: `${i} report`, owner: "Lea Santos", status: "Ready", due: "Jun 30" }
|
|
1971
|
+
]
|
|
1972
|
+
};
|
|
1973
|
+
}
|
|
1974
|
+
function Za(a) {
|
|
1975
|
+
return Ja[a] ?? Xa(a);
|
|
1976
|
+
}
|
|
1977
|
+
function et(a, t) {
|
|
1978
|
+
return a.id === t || !!a.children?.some((r) => r.id === t);
|
|
1979
|
+
}
|
|
1980
|
+
function Xe({ compact: a = !1 }) {
|
|
1981
|
+
return /* @__PURE__ */ n(
|
|
1982
|
+
"svg",
|
|
1983
|
+
{
|
|
1984
|
+
className: a ? "ycc-prototype-logo ycc-prototype-logo--compact" : "ycc-prototype-logo",
|
|
1985
|
+
viewBox: "0 0 300 110",
|
|
1986
|
+
"aria-label": "YCC logo",
|
|
1987
|
+
role: "img",
|
|
1988
|
+
children: [
|
|
1989
|
+
/* @__PURE__ */ e("path", { className: "ycc-prototype-logo__shape", d: "M17 55C34 24 83 9 161 6C100 14 57 29 38 55C57 81 100 96 161 104C83 101 34 86 17 55Z" }),
|
|
1990
|
+
/* @__PURE__ */ e("text", { className: "ycc-prototype-logo__letters", x: "56", y: "79", children: "YCC" })
|
|
1991
|
+
]
|
|
1992
|
+
}
|
|
1993
|
+
);
|
|
1994
|
+
}
|
|
1995
|
+
function at({
|
|
1996
|
+
item: a,
|
|
1997
|
+
activePage: t,
|
|
1998
|
+
open: r,
|
|
1999
|
+
onSelect: i,
|
|
2000
|
+
onToggle: l
|
|
2001
|
+
}) {
|
|
2002
|
+
const c = a.id === t, o = et(a, t), d = !!a.children?.length;
|
|
2003
|
+
return /* @__PURE__ */ n(ce, { children: [
|
|
2004
|
+
a.section ? /* @__PURE__ */ e("div", { className: "prototype-sidebar__section", children: a.section }) : null,
|
|
2005
|
+
/* @__PURE__ */ n(
|
|
2006
|
+
"button",
|
|
2007
|
+
{
|
|
2008
|
+
type: "button",
|
|
2009
|
+
className: `prototype-sidebar__item${c ? " prototype-sidebar__item--active" : ""}${o && !c ? " prototype-sidebar__item--expanded" : ""}${a.promoted ? " prototype-sidebar__item--promoted" : ""}`,
|
|
2010
|
+
onClick: () => {
|
|
2011
|
+
i(a.id), d && l(a.id);
|
|
2012
|
+
},
|
|
2013
|
+
"aria-current": a.id === t ? "page" : void 0,
|
|
2014
|
+
"aria-expanded": d ? r : void 0,
|
|
2015
|
+
children: [
|
|
2016
|
+
/* @__PURE__ */ e(s, { name: a.icon, size: 18 }),
|
|
2017
|
+
/* @__PURE__ */ e("span", { children: a.label }),
|
|
2018
|
+
d ? /* @__PURE__ */ e(s, { name: r ? "ChevronDown" : "ChevronRight", size: 16, className: "prototype-sidebar__item-chevron" }) : null,
|
|
2019
|
+
a.external ? /* @__PURE__ */ e(s, { name: "ArrowRight", size: 16, className: "prototype-sidebar__item-chevron" }) : null
|
|
2020
|
+
]
|
|
2021
|
+
}
|
|
2022
|
+
),
|
|
2023
|
+
d && r ? /* @__PURE__ */ e("div", { className: "prototype-sidebar__submenu", role: "group", "aria-label": `${a.label} pages`, children: a.children?.map((h) => /* @__PURE__ */ n(
|
|
2024
|
+
"button",
|
|
2025
|
+
{
|
|
2026
|
+
type: "button",
|
|
2027
|
+
className: `prototype-sidebar__subitem${t === h.id ? " prototype-sidebar__subitem--active" : ""}`,
|
|
2028
|
+
onClick: () => i(h.id),
|
|
2029
|
+
"aria-current": t === h.id ? "page" : void 0,
|
|
2030
|
+
children: [
|
|
2031
|
+
/* @__PURE__ */ e(s, { name: h.icon, size: 18 }),
|
|
2032
|
+
/* @__PURE__ */ e("span", { children: h.label })
|
|
2033
|
+
]
|
|
2034
|
+
},
|
|
2035
|
+
h.id
|
|
2036
|
+
)) }) : null
|
|
2037
|
+
] });
|
|
2038
|
+
}
|
|
2039
|
+
function tt({
|
|
2040
|
+
activePage: a,
|
|
2041
|
+
branch: t,
|
|
2042
|
+
branches: r,
|
|
2043
|
+
items: i,
|
|
2044
|
+
branchOpen: l,
|
|
2045
|
+
openMenus: c,
|
|
2046
|
+
onSelectPage: o,
|
|
2047
|
+
onToggleBranchMenu: d,
|
|
2048
|
+
onSelectBranch: h,
|
|
2049
|
+
onToggleMenu: p
|
|
2050
|
+
}) {
|
|
2051
|
+
return /* @__PURE__ */ n("aside", { className: "prototype-sidebar", children: [
|
|
2052
|
+
/* @__PURE__ */ e("button", { type: "button", className: "prototype-sidebar__logo", onClick: () => o("home"), "aria-label": "Go to Home", children: /* @__PURE__ */ e(Xe, {}) }),
|
|
2053
|
+
/* @__PURE__ */ n("div", { className: "prototype-sidebar__workspace", children: [
|
|
2054
|
+
/* @__PURE__ */ n("div", { className: "prototype-sidebar__workspace-pill", children: [
|
|
2055
|
+
/* @__PURE__ */ e(s, { name: "Lock", size: 15 }),
|
|
2056
|
+
/* @__PURE__ */ e("span", { children: "Administrator workspace" })
|
|
2057
|
+
] }),
|
|
2058
|
+
/* @__PURE__ */ n("button", { type: "button", className: "prototype-sidebar__branch", onClick: d, "aria-expanded": l, "aria-haspopup": "listbox", children: [
|
|
2059
|
+
/* @__PURE__ */ e(s, { name: "Globe", size: 15 }),
|
|
2060
|
+
/* @__PURE__ */ e("span", { children: t }),
|
|
2061
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 16 })
|
|
2062
|
+
] }),
|
|
2063
|
+
l ? /* @__PURE__ */ e("div", { className: "prototype-sidebar__branch-menu", role: "listbox", "aria-label": "Select workspace", children: r.map((u) => /* @__PURE__ */ n(
|
|
2064
|
+
"button",
|
|
2065
|
+
{
|
|
2066
|
+
type: "button",
|
|
2067
|
+
role: "option",
|
|
2068
|
+
"aria-selected": u === t,
|
|
2069
|
+
className: "prototype-sidebar__branch-option",
|
|
2070
|
+
onClick: () => h(u),
|
|
2071
|
+
children: [
|
|
2072
|
+
/* @__PURE__ */ e("span", { className: "prototype-sidebar__branch-check", children: u === t ? "✓" : "" }),
|
|
2073
|
+
/* @__PURE__ */ e("span", { children: u })
|
|
2074
|
+
]
|
|
2075
|
+
},
|
|
2076
|
+
u
|
|
2077
|
+
)) }) : null
|
|
2078
|
+
] }),
|
|
2079
|
+
/* @__PURE__ */ e("nav", { className: "prototype-sidebar__nav", "aria-label": "Workspace navigation", children: i.map((u) => /* @__PURE__ */ e(
|
|
2080
|
+
at,
|
|
2081
|
+
{
|
|
2082
|
+
item: u,
|
|
2083
|
+
activePage: a,
|
|
2084
|
+
open: c.includes(u.id),
|
|
2085
|
+
onSelect: o,
|
|
2086
|
+
onToggle: p
|
|
2087
|
+
},
|
|
2088
|
+
u.id
|
|
2089
|
+
)) }),
|
|
2090
|
+
/* @__PURE__ */ n("div", { className: "prototype-sidebar__footer", children: [
|
|
2091
|
+
"© Customs Gateways LLC-FZ",
|
|
2092
|
+
/* @__PURE__ */ e("br", {}),
|
|
2093
|
+
"White-label platform"
|
|
2094
|
+
] })
|
|
2095
|
+
] });
|
|
2096
|
+
}
|
|
2097
|
+
function nt({
|
|
2098
|
+
query: a,
|
|
2099
|
+
language: t,
|
|
2100
|
+
notifications: r,
|
|
2101
|
+
userMenuOpen: i,
|
|
2102
|
+
users: l,
|
|
2103
|
+
activeUser: c,
|
|
2104
|
+
onQueryChange: o,
|
|
2105
|
+
onToggleLanguage: d,
|
|
2106
|
+
onToggleNotifications: h,
|
|
2107
|
+
onToggleUserMenu: p,
|
|
2108
|
+
onSelectUser: u
|
|
2109
|
+
}) {
|
|
2110
|
+
return /* @__PURE__ */ n("header", { className: "prototype-topbar", children: [
|
|
2111
|
+
/* @__PURE__ */ n("label", { className: "prototype-topbar__search", children: [
|
|
2112
|
+
/* @__PURE__ */ e(s, { name: "Search", size: 20 }),
|
|
2113
|
+
/* @__PURE__ */ e("input", { value: a, onChange: (m) => o(m.target.value), placeholder: "Search here...", "aria-label": "Search" })
|
|
2114
|
+
] }),
|
|
2115
|
+
/* @__PURE__ */ n("div", { className: "prototype-topbar__actions", children: [
|
|
2116
|
+
/* @__PURE__ */ n("button", { type: "button", className: "prototype-topbar__language", onClick: d, children: [
|
|
2117
|
+
/* @__PURE__ */ e(s, { name: "Globe", size: 18 }),
|
|
2118
|
+
/* @__PURE__ */ e("span", { children: t }),
|
|
2119
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 16 })
|
|
2120
|
+
] }),
|
|
2121
|
+
/* @__PURE__ */ n("button", { type: "button", className: "prototype-topbar__bell", "aria-label": "Notifications", onClick: h, children: [
|
|
2122
|
+
/* @__PURE__ */ e(s, { name: "Bell", size: 20 }),
|
|
2123
|
+
/* @__PURE__ */ e("span", {})
|
|
2124
|
+
] }),
|
|
2125
|
+
/* @__PURE__ */ n("button", { type: "button", className: "prototype-topbar__user", onClick: p, children: [
|
|
2126
|
+
/* @__PURE__ */ e("div", { className: "prototype-topbar__avatar", children: c.name.charAt(0) }),
|
|
2127
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2128
|
+
/* @__PURE__ */ e("strong", { children: c.name }),
|
|
2129
|
+
/* @__PURE__ */ e("span", { children: c.role })
|
|
2130
|
+
] }),
|
|
2131
|
+
/* @__PURE__ */ e(s, { name: "ChevronDown", size: 16 })
|
|
2132
|
+
] })
|
|
2133
|
+
] }),
|
|
2134
|
+
r ? /* @__PURE__ */ n("div", { className: "prototype-popover prototype-popover--notifications", children: [
|
|
2135
|
+
/* @__PURE__ */ e("strong", { children: "Notifications" }),
|
|
2136
|
+
/* @__PURE__ */ e("p", { children: "3 shipment alerts need review." }),
|
|
2137
|
+
/* @__PURE__ */ e("p", { children: "AWB-889202 moved to customs." }),
|
|
2138
|
+
/* @__PURE__ */ e("p", { children: "TRK-5401 is 12 minutes ahead of schedule." })
|
|
2139
|
+
] }) : null,
|
|
2140
|
+
i ? /* @__PURE__ */ n("div", { className: "prototype-popover prototype-popover--user", children: [
|
|
2141
|
+
/* @__PURE__ */ e("div", { className: "prototype-login-switcher__title", children: "Switch login (demo)" }),
|
|
2142
|
+
/* @__PURE__ */ e("div", { className: "prototype-login-switcher__list", children: l.map((m) => {
|
|
2143
|
+
const k = m.name === c.name;
|
|
2144
|
+
return /* @__PURE__ */ n(
|
|
2145
|
+
"button",
|
|
2146
|
+
{
|
|
2147
|
+
type: "button",
|
|
2148
|
+
className: `prototype-login-switcher__person${k ? " prototype-login-switcher__person--selected" : ""}`,
|
|
2149
|
+
onClick: () => u(m),
|
|
2150
|
+
children: [
|
|
2151
|
+
/* @__PURE__ */ e("span", { className: "prototype-login-switcher__avatar", children: m.name.charAt(0) }),
|
|
2152
|
+
/* @__PURE__ */ n("span", { className: "prototype-login-switcher__identity", children: [
|
|
2153
|
+
/* @__PURE__ */ e("strong", { children: m.name }),
|
|
2154
|
+
/* @__PURE__ */ e("span", { children: m.role })
|
|
2155
|
+
] }),
|
|
2156
|
+
k ? /* @__PURE__ */ e(s, { name: "Check", size: 18, className: "prototype-login-switcher__check" }) : null
|
|
2157
|
+
]
|
|
2158
|
+
},
|
|
2159
|
+
m.name
|
|
2160
|
+
);
|
|
2161
|
+
}) })
|
|
2162
|
+
] }) : null
|
|
2163
|
+
] });
|
|
2164
|
+
}
|
|
2165
|
+
function rt({ onOpenAir: a, onOpenFiles: t }) {
|
|
2166
|
+
return /* @__PURE__ */ n("section", { className: "prototype-welcome", "aria-labelledby": "prototype-title", children: [
|
|
2167
|
+
/* @__PURE__ */ e("div", { className: "prototype-welcome__mark", children: /* @__PURE__ */ e(Xe, { compact: !0 }) }),
|
|
2168
|
+
/* @__PURE__ */ e("h1", { id: "prototype-title", children: "Your Cargo Contact" }),
|
|
2169
|
+
/* @__PURE__ */ e("p", { className: "prototype-welcome__kicker", children: "Customs · Freight · Warehousing" }),
|
|
2170
|
+
/* @__PURE__ */ e("p", { className: "prototype-welcome__copy", children: "Welcome, Mark. One platform for declarations, freight files, warehousing and back-office across every department." }),
|
|
2171
|
+
/* @__PURE__ */ n("div", { className: "prototype-welcome__actions", children: [
|
|
2172
|
+
/* @__PURE__ */ e("button", { type: "button", className: "prototype-action prototype-action--primary", onClick: a, children: "Open Air Freight" }),
|
|
2173
|
+
/* @__PURE__ */ e("button", { type: "button", className: "prototype-action", onClick: t, children: "Review Files" })
|
|
2174
|
+
] }),
|
|
2175
|
+
/* @__PURE__ */ e("p", { className: "prototype-welcome__copyright", children: "© Customs Gateways LLC-FZ · White-label platform" })
|
|
2176
|
+
] });
|
|
2177
|
+
}
|
|
2178
|
+
function it({ metric: a }) {
|
|
2179
|
+
return /* @__PURE__ */ n("article", { className: `prototype-metric prototype-metric--${a.tone}`, children: [
|
|
2180
|
+
/* @__PURE__ */ e("span", { children: a.label }),
|
|
2181
|
+
/* @__PURE__ */ e("strong", { children: a.value }),
|
|
2182
|
+
/* @__PURE__ */ e("em", { children: a.change })
|
|
2183
|
+
] });
|
|
2184
|
+
}
|
|
2185
|
+
function lt({
|
|
2186
|
+
rows: a,
|
|
2187
|
+
onRowAction: t
|
|
2188
|
+
}) {
|
|
2189
|
+
return /* @__PURE__ */ e("div", { className: "prototype-table-wrap", children: /* @__PURE__ */ n("table", { className: "prototype-table", children: [
|
|
2190
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ n("tr", { children: [
|
|
2191
|
+
/* @__PURE__ */ e("th", { children: "Reference" }),
|
|
2192
|
+
/* @__PURE__ */ e("th", { children: "Customer" }),
|
|
2193
|
+
/* @__PURE__ */ e("th", { children: "Owner" }),
|
|
2194
|
+
/* @__PURE__ */ e("th", { children: "Status" }),
|
|
2195
|
+
/* @__PURE__ */ e("th", { children: "Due" }),
|
|
2196
|
+
/* @__PURE__ */ e("th", { children: "Action" })
|
|
2197
|
+
] }) }),
|
|
2198
|
+
/* @__PURE__ */ e("tbody", { children: a.map((r) => /* @__PURE__ */ n("tr", { children: [
|
|
2199
|
+
/* @__PURE__ */ e("td", { children: r.ref }),
|
|
2200
|
+
/* @__PURE__ */ e("td", { children: r.customer }),
|
|
2201
|
+
/* @__PURE__ */ e("td", { children: r.owner }),
|
|
2202
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: "prototype-status", children: r.status }) }),
|
|
2203
|
+
/* @__PURE__ */ e("td", { children: r.due }),
|
|
2204
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("button", { type: "button", className: "prototype-mini-button", onClick: () => t(r), children: "Open" }) })
|
|
2205
|
+
] }, r.ref)) })
|
|
2206
|
+
] }) });
|
|
2207
|
+
}
|
|
2208
|
+
function ct({
|
|
2209
|
+
data: a,
|
|
2210
|
+
activePage: t,
|
|
2211
|
+
filteredWork: r,
|
|
2212
|
+
message: i,
|
|
2213
|
+
onRowAction: l,
|
|
2214
|
+
onCreateShipment: c,
|
|
2215
|
+
onRefresh: o
|
|
2216
|
+
}) {
|
|
2217
|
+
return /* @__PURE__ */ n("section", { className: "prototype-dashboard", "aria-labelledby": "prototype-page-title", children: [
|
|
2218
|
+
/* @__PURE__ */ n("div", { className: "prototype-dashboard__head", children: [
|
|
2219
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2220
|
+
/* @__PURE__ */ e("p", { children: a.eyebrow }),
|
|
2221
|
+
/* @__PURE__ */ e("h1", { id: "prototype-page-title", children: a.title }),
|
|
2222
|
+
/* @__PURE__ */ e("span", { children: a.description })
|
|
2223
|
+
] }),
|
|
2224
|
+
/* @__PURE__ */ e("div", { className: "prototype-dashboard__icon", children: /* @__PURE__ */ e(s, { name: a.icon, size: 30 }) })
|
|
2225
|
+
] }),
|
|
2226
|
+
i ? /* @__PURE__ */ e("div", { className: "prototype-feedback", children: i }) : null,
|
|
2227
|
+
/* @__PURE__ */ e("div", { className: "prototype-metrics", children: a.metrics.map((d) => /* @__PURE__ */ e(it, { metric: d }, d.label)) }),
|
|
2228
|
+
/* @__PURE__ */ n("div", { className: "prototype-panel", children: [
|
|
2229
|
+
/* @__PURE__ */ n("div", { className: "prototype-panel__head", children: [
|
|
2230
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2231
|
+
/* @__PURE__ */ e("strong", { children: t === "files" ? "Document queue" : "Active work" }),
|
|
2232
|
+
/* @__PURE__ */ n("span", { children: [
|
|
2233
|
+
r.length,
|
|
2234
|
+
" records shown"
|
|
2235
|
+
] })
|
|
2236
|
+
] }),
|
|
2237
|
+
/* @__PURE__ */ n("div", { className: "prototype-panel__actions", children: [
|
|
2238
|
+
/* @__PURE__ */ n("button", { type: "button", className: "prototype-action", onClick: o, children: [
|
|
2239
|
+
/* @__PURE__ */ e(s, { name: "RefreshCw", size: 15 }),
|
|
2240
|
+
"Refresh"
|
|
2241
|
+
] }),
|
|
2242
|
+
/* @__PURE__ */ n("button", { type: "button", className: "prototype-action prototype-action--primary", onClick: c, children: [
|
|
2243
|
+
/* @__PURE__ */ e(s, { name: "Plus", size: 15 }),
|
|
2244
|
+
"New file"
|
|
2245
|
+
] })
|
|
2246
|
+
] })
|
|
2247
|
+
] }),
|
|
2248
|
+
/* @__PURE__ */ e(lt, { rows: r, onRowAction: l })
|
|
2249
|
+
] })
|
|
2250
|
+
] });
|
|
2251
|
+
}
|
|
2252
|
+
function Ze({ kind: a }) {
|
|
2253
|
+
const t = a === "ceo";
|
|
2254
|
+
return /* @__PURE__ */ n("div", { className: "executive-banner", children: [
|
|
2255
|
+
/* @__PURE__ */ n("div", { className: "executive-banner__title", children: [
|
|
2256
|
+
/* @__PURE__ */ e(s, { name: t ? "TrendingUp" : "Gauge", size: 15 }),
|
|
2257
|
+
/* @__PURE__ */ e("strong", { children: t ? "Outcomes, not tasks" : "Operations overview" }),
|
|
2258
|
+
t ? null : /* @__PURE__ */ e("span", { children: "COO-DASHBOARD" })
|
|
2259
|
+
] }),
|
|
2260
|
+
/* @__PURE__ */ e("p", { children: t ? "Volumes and margin per mode, what we move and who drives the margin - plus only the COO/CFO/CCO items that have been outstanding too long. Figures are illustrative in this prototype." : "Live parameters and to-do items across Air Freight, Customs, Sea Freight, Trucking and Warehouse (WMS)." })
|
|
2261
|
+
] });
|
|
2262
|
+
}
|
|
2263
|
+
function W({ title: a, section: t }) {
|
|
2264
|
+
return /* @__PURE__ */ n("div", { className: "executive-heading", children: [
|
|
2265
|
+
/* @__PURE__ */ n("div", { className: "executive-breadcrumb", children: [
|
|
2266
|
+
/* @__PURE__ */ e("span", { children: "Home" }),
|
|
2267
|
+
t ? /* @__PURE__ */ n(ce, { children: [
|
|
2268
|
+
/* @__PURE__ */ e(s, { name: "ChevronRight", size: 12 }),
|
|
2269
|
+
/* @__PURE__ */ e("span", { children: t })
|
|
2270
|
+
] }) : null,
|
|
2271
|
+
/* @__PURE__ */ e(s, { name: "ChevronRight", size: 12 }),
|
|
2272
|
+
/* @__PURE__ */ e("span", { children: a })
|
|
2273
|
+
] }),
|
|
2274
|
+
/* @__PURE__ */ e("h1", { children: a })
|
|
2275
|
+
] });
|
|
2276
|
+
}
|
|
2277
|
+
const ot = [
|
|
2278
|
+
["Freight files", "6", "dark"],
|
|
2279
|
+
["Manifests in progress", "6", "blue"],
|
|
2280
|
+
["Inspections open", "3", "orange"],
|
|
2281
|
+
["Declarations rejected", "3", "red"],
|
|
2282
|
+
["WMS on hold", "3", "red"],
|
|
2283
|
+
["Outbound open", "4", "violet"]
|
|
2284
|
+
], st = [
|
|
2285
|
+
{ title: "Air Freight", page: "air", stats: [["Files", "2", "dark"], ["In progress", "1", "blue"], ["Cleared", "0", "green"]] },
|
|
2286
|
+
{ title: "Customs", page: "customs", stats: [["Manifests", "6", "dark"], ["Inspections", "3", "orange"], ["Rejected", "3", "red"]] },
|
|
2287
|
+
{ title: "Sea Freight", page: "sea", stats: [["Files", "2", "dark"], ["In progress", "1", "blue"], ["Cleared", "0", "green"]] },
|
|
2288
|
+
{ title: "Trucking", page: "truck", stats: [["Files", "2", "dark"], ["In progress", "0", "blue"], ["Cleared", "1", "green"]] },
|
|
2289
|
+
{ title: "Warehouse (WMS)", page: "warehouse", stats: [["SKUs", "8", "dark"], ["On hold", "3", "red"], ["Outbound", "4", "violet"]] }
|
|
2290
|
+
], dt = [
|
|
2291
|
+
["1", "Sea Freight: file(s) in draft to complete", "sea"],
|
|
2292
|
+
["1", "Trucking: file(s) in draft to complete", "truck"],
|
|
2293
|
+
["2", "Customs: new manifest(s) awaiting audit / compliance", "customs"],
|
|
2294
|
+
["3", "Customs: inspection(s) awaiting value declaration", "customs"]
|
|
2295
|
+
];
|
|
2296
|
+
function ht({ onOpen: a }) {
|
|
2297
|
+
return /* @__PURE__ */ n("section", { className: "executive-page", children: [
|
|
2298
|
+
/* @__PURE__ */ e(W, { title: "COO Dashboard", section: "Operations" }),
|
|
2299
|
+
/* @__PURE__ */ e(Ze, { kind: "coo" }),
|
|
2300
|
+
/* @__PURE__ */ e("div", { className: "coo-kpi-grid", children: ot.map(([t, r, i]) => /* @__PURE__ */ n("article", { className: "coo-kpi", children: [
|
|
2301
|
+
/* @__PURE__ */ e("span", { children: t }),
|
|
2302
|
+
/* @__PURE__ */ e("strong", { className: `exec-tone-${i}`, children: r })
|
|
2303
|
+
] }, t)) }),
|
|
2304
|
+
/* @__PURE__ */ e("div", { className: "coo-module-grid", children: st.map((t) => /* @__PURE__ */ n("article", { className: "coo-module-card", children: [
|
|
2305
|
+
/* @__PURE__ */ n("div", { className: "coo-module-card__head", children: [
|
|
2306
|
+
/* @__PURE__ */ e("h2", { children: t.title }),
|
|
2307
|
+
/* @__PURE__ */ n("button", { type: "button", onClick: () => a(t.page), children: [
|
|
2308
|
+
"Open ",
|
|
2309
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 13 })
|
|
2310
|
+
] })
|
|
2311
|
+
] }),
|
|
2312
|
+
/* @__PURE__ */ e("div", { className: "coo-module-card__stats", children: t.stats.map(([r, i, l]) => /* @__PURE__ */ n("div", { className: "coo-module-stat", children: [
|
|
2313
|
+
/* @__PURE__ */ e("span", { children: r }),
|
|
2314
|
+
/* @__PURE__ */ e("strong", { className: `exec-tone-${l}`, children: i })
|
|
2315
|
+
] }, r)) })
|
|
2316
|
+
] }, t.title)) }),
|
|
2317
|
+
/* @__PURE__ */ e("h2", { className: "executive-section-title", children: "Operations to-do" }),
|
|
2318
|
+
/* @__PURE__ */ e("div", { className: "todo-list", children: dt.map(([t, r, i]) => /* @__PURE__ */ n("div", { className: "todo-row", children: [
|
|
2319
|
+
/* @__PURE__ */ e("strong", { children: t }),
|
|
2320
|
+
/* @__PURE__ */ e("span", { children: r }),
|
|
2321
|
+
/* @__PURE__ */ n("button", { type: "button", onClick: () => a(i), children: [
|
|
2322
|
+
"Open ",
|
|
2323
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 13 })
|
|
2324
|
+
] })
|
|
2325
|
+
] }, r)) })
|
|
2326
|
+
] });
|
|
2327
|
+
}
|
|
2328
|
+
const ut = [
|
|
2329
|
+
{ title: "Air freight", icon: "Plane", gpm: "24.6% GPM", tone: "green", inbound: "412", outbound: "388", page: "air" },
|
|
2330
|
+
{ title: "Sea freight", icon: "Ship", gpm: "18.2% GPM", tone: "orange", inbound: "96", outbound: "74", page: "sea" },
|
|
2331
|
+
{ title: "Trucking", icon: "Truck", gpm: "14.1% GPM", tone: "orange", inbound: "210", outbound: "240", page: "truck" }
|
|
2332
|
+
], pt = [
|
|
2333
|
+
["COO", "Customs clearance backlog not cleared", "6d", "hot"],
|
|
2334
|
+
["COO", "Inbound shipments stuck >1 week in the loads", "8d", "hot"],
|
|
2335
|
+
["CFO", "Supplier invoices >30 days awaiting approval", "12d", "danger"],
|
|
2336
|
+
["CCO", "Quotations awaiting response", "5d", "muted"]
|
|
2337
|
+
], mt = [
|
|
2338
|
+
["Electronics & components", 22],
|
|
2339
|
+
["Machinery & parts", 18],
|
|
2340
|
+
["Perishables & food", 15],
|
|
2341
|
+
["Pharma & healthcare", 12],
|
|
2342
|
+
["Apparel & textiles", 9]
|
|
2343
|
+
], gt = [
|
|
2344
|
+
["Lumitech Electronics B.V.", 14.2],
|
|
2345
|
+
["Gulf Components Trading", 11.8],
|
|
2346
|
+
["Pacific Foods Ltd", 9.6],
|
|
2347
|
+
["NorthSea Marine BV", 7.4],
|
|
2348
|
+
["Apex Robotics", 6.1]
|
|
2349
|
+
];
|
|
2350
|
+
function Ee({ title: a, icon: t, rows: r, footer: i }) {
|
|
2351
|
+
return /* @__PURE__ */ n("article", { className: "exec-bar-card", children: [
|
|
2352
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2353
|
+
/* @__PURE__ */ e(s, { name: t, size: 15 }),
|
|
2354
|
+
" ",
|
|
2355
|
+
a
|
|
2356
|
+
] }),
|
|
2357
|
+
r.map(([l, c]) => /* @__PURE__ */ n("div", { className: "exec-bar-row", children: [
|
|
2358
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2359
|
+
/* @__PURE__ */ e("strong", { children: l }),
|
|
2360
|
+
/* @__PURE__ */ n("span", { children: [
|
|
2361
|
+
c,
|
|
2362
|
+
"%"
|
|
2363
|
+
] })
|
|
2364
|
+
] }),
|
|
2365
|
+
/* @__PURE__ */ e("div", { className: "exec-bar-track", children: /* @__PURE__ */ e("span", { style: { width: `${Math.min(c * 4, 100)}%` } }) })
|
|
2366
|
+
] }, l)),
|
|
2367
|
+
/* @__PURE__ */ e("p", { children: i })
|
|
2368
|
+
] });
|
|
2369
|
+
}
|
|
2370
|
+
function bt({ onOpen: a }) {
|
|
2371
|
+
return /* @__PURE__ */ n("section", { className: "executive-page", children: [
|
|
2372
|
+
/* @__PURE__ */ e(W, { title: "CEO Dashboard" }),
|
|
2373
|
+
/* @__PURE__ */ e(Ze, { kind: "ceo" }),
|
|
2374
|
+
/* @__PURE__ */ e("div", { className: "ceo-mode-grid", children: ut.map((t) => /* @__PURE__ */ n("article", { className: "ceo-mode-card", children: [
|
|
2375
|
+
/* @__PURE__ */ n("div", { className: "ceo-mode-card__head", children: [
|
|
2376
|
+
/* @__PURE__ */ e("span", { children: /* @__PURE__ */ e(s, { name: t.icon, size: 16 }) }),
|
|
2377
|
+
/* @__PURE__ */ e("h2", { children: t.title }),
|
|
2378
|
+
/* @__PURE__ */ e("em", { className: `ceo-gpm ceo-gpm--${t.tone}`, children: t.gpm })
|
|
2379
|
+
] }),
|
|
2380
|
+
/* @__PURE__ */ n("div", { className: "ceo-mode-card__stats", children: [
|
|
2381
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2382
|
+
/* @__PURE__ */ e("strong", { children: t.inbound }),
|
|
2383
|
+
/* @__PURE__ */ e("span", { children: "Inbound" })
|
|
2384
|
+
] }),
|
|
2385
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2386
|
+
/* @__PURE__ */ e("strong", { children: t.outbound }),
|
|
2387
|
+
/* @__PURE__ */ e("span", { children: "Outbound" })
|
|
2388
|
+
] })
|
|
2389
|
+
] }),
|
|
2390
|
+
/* @__PURE__ */ n("button", { type: "button", onClick: () => a(t.page), children: [
|
|
2391
|
+
"Open dashboard ",
|
|
2392
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 13 })
|
|
2393
|
+
] })
|
|
2394
|
+
] }, t.title)) }),
|
|
2395
|
+
/* @__PURE__ */ n("article", { className: "escalation-card", children: [
|
|
2396
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2397
|
+
/* @__PURE__ */ e(s, { name: "AlertTriangle", size: 15 }),
|
|
2398
|
+
" Escalations - outstanding too long on COO / CFO / CCO"
|
|
2399
|
+
] }),
|
|
2400
|
+
pt.map(([t, r, i, l]) => /* @__PURE__ */ n("div", { className: "escalation-row", children: [
|
|
2401
|
+
/* @__PURE__ */ e("strong", { className: `escalation-pill escalation-pill--${t.toLowerCase()}`, children: t }),
|
|
2402
|
+
/* @__PURE__ */ e("span", { children: r }),
|
|
2403
|
+
/* @__PURE__ */ n("em", { className: `escalation-days escalation-days--${l}`, children: [
|
|
2404
|
+
/* @__PURE__ */ e(s, { name: "Clock", size: 12 }),
|
|
2405
|
+
" ",
|
|
2406
|
+
i
|
|
2407
|
+
] }),
|
|
2408
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 14 })
|
|
2409
|
+
] }, r)),
|
|
2410
|
+
/* @__PURE__ */ e("p", { children: "Only items past their threshold surface here; the CEO doesn't see the full task lists. Each row opens the owning dashboard." })
|
|
2411
|
+
] }),
|
|
2412
|
+
/* @__PURE__ */ n("div", { className: "exec-bottom-grid", children: [
|
|
2413
|
+
/* @__PURE__ */ e(Ee, { title: "Top 5 goods categories", icon: "Boxes", rows: mt, footer: "High-level categories by share of shipments moved." }),
|
|
2414
|
+
/* @__PURE__ */ e(Ee, { title: "Top 5 customers - share of GPM", icon: "Users", rows: gt, footer: "Share of total gross profit margin contributed by each customer." })
|
|
2415
|
+
] })
|
|
2416
|
+
] });
|
|
2417
|
+
}
|
|
2418
|
+
const $e = [
|
|
2419
|
+
{ file: "AF-2026-00142", service: "Air Freight", dir: "Import", customer: "TechShop BV", route: "PVG - Shanghai -> AMS - Amsterdam", status: "In progress" },
|
|
2420
|
+
{ file: "AF-2026-00151", service: "Air Freight", dir: "Export", customer: "Dutch Flowers BV", route: "AMS - Amsterdam -> NRT - Tokyo", status: "Invoiced" },
|
|
2421
|
+
{ file: "AF-202606044905", service: "Air Freight", dir: "Export", customer: "Uitvaart Service Nederland BV", route: "AMS - Amsterdam, Schiphol -> ASR - Kayseri", status: "Invoiced" },
|
|
2422
|
+
{ file: "SF-2026-00088", service: "Sea Freight", dir: "Import", customer: "FashionHub", route: "NSA -> RTM", status: "In progress" },
|
|
2423
|
+
{ file: "SF-2026-00090", service: "Sea Freight", dir: "Export", customer: "AgriExport NL", route: "RTM -> LOS", status: "Draft" },
|
|
2424
|
+
{ file: "TR-2026-00210", service: "Trucking", dir: "Import", customer: "FashionHub", route: "IST -> AMS", status: "Cleared" },
|
|
2425
|
+
{ file: "TR-2026-00214", service: "Trucking", dir: "Export", customer: "GlowStore", route: "TIL -> BER", status: "Draft" },
|
|
2426
|
+
{ file: "CB-2026-00024", service: "Customs - Bulk", dir: "Import", customer: "GadgetHub", route: "Consolidated e-commerce", status: "In progress" },
|
|
2427
|
+
{ file: "CS-2026-00017", service: "Customs - Single", dir: "Import", customer: "MediSupply", route: "-", status: "Docs ready" }
|
|
2428
|
+
], yt = ["All", "Air", "Sea", "Truck", "Cust. Bulk", "Cust. Single"];
|
|
2429
|
+
function vt(a, t) {
|
|
2430
|
+
return t === "All" ? !0 : t === "Air" ? a.service === "Air Freight" : t === "Sea" ? a.service === "Sea Freight" : t === "Truck" ? a.service === "Trucking" : t === "Cust. Bulk" ? a.service === "Customs - Bulk" : a.service === "Customs - Single";
|
|
2431
|
+
}
|
|
2432
|
+
function ft() {
|
|
2433
|
+
const [a, t] = y(""), [r, i] = y("All"), l = $e.filter((c) => {
|
|
2434
|
+
const o = a.trim().toLowerCase(), d = `${c.file} ${c.service} ${c.dir} ${c.customer} ${c.route} ${c.status}`.toLowerCase();
|
|
2435
|
+
return vt(c, r) && (!o || d.includes(o));
|
|
2436
|
+
});
|
|
2437
|
+
return /* @__PURE__ */ n("section", { className: "files-page", children: [
|
|
2438
|
+
/* @__PURE__ */ e(W, { title: "All files", section: "Operations" }),
|
|
2439
|
+
/* @__PURE__ */ e("h1", { className: "files-page__title", children: "All files - every modality" }),
|
|
2440
|
+
/* @__PURE__ */ n("div", { className: "files-banner", children: [
|
|
2441
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2442
|
+
/* @__PURE__ */ e(s, { name: "LayoutGrid", size: 14 }),
|
|
2443
|
+
/* @__PURE__ */ e("strong", { children: "One overview across Air, Sea, Trucking & Customs" })
|
|
2444
|
+
] }),
|
|
2445
|
+
/* @__PURE__ */ e("p", { children: "Search every file regardless of modality and open it directly - like the classic single work list, but with each type keeping its own continuous number." })
|
|
2446
|
+
] }),
|
|
2447
|
+
/* @__PURE__ */ n("div", { className: "files-toolbar", children: [
|
|
2448
|
+
/* @__PURE__ */ n("label", { className: "files-search", children: [
|
|
2449
|
+
/* @__PURE__ */ e(s, { name: "Search", size: 15 }),
|
|
2450
|
+
/* @__PURE__ */ e("input", { value: a, onChange: (c) => t(c.target.value), placeholder: "Search all files..." })
|
|
2451
|
+
] }),
|
|
2452
|
+
/* @__PURE__ */ e("div", { className: "files-tabs", children: yt.map((c) => /* @__PURE__ */ e("button", { type: "button", className: r === c ? "files-tab files-tab--active" : "files-tab", onClick: () => i(c), children: c }, c)) })
|
|
2453
|
+
] }),
|
|
2454
|
+
/* @__PURE__ */ e("div", { className: "files-table-card", children: /* @__PURE__ */ n("table", { className: "files-table", children: [
|
|
2455
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ n("tr", { children: [
|
|
2456
|
+
/* @__PURE__ */ e("th", { children: "File" }),
|
|
2457
|
+
/* @__PURE__ */ e("th", { children: "Service" }),
|
|
2458
|
+
/* @__PURE__ */ e("th", { children: "Dir" }),
|
|
2459
|
+
/* @__PURE__ */ e("th", { children: "Customer" }),
|
|
2460
|
+
/* @__PURE__ */ e("th", { children: "Route" }),
|
|
2461
|
+
/* @__PURE__ */ e("th", { children: "Status" })
|
|
2462
|
+
] }) }),
|
|
2463
|
+
/* @__PURE__ */ e("tbody", { children: l.map((c) => /* @__PURE__ */ n("tr", { children: [
|
|
2464
|
+
/* @__PURE__ */ e("td", { className: "files-table__file", children: c.file }),
|
|
2465
|
+
/* @__PURE__ */ e("td", { children: c.service }),
|
|
2466
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: `files-pill files-pill--${c.dir.toLowerCase()}`, children: c.dir }) }),
|
|
2467
|
+
/* @__PURE__ */ e("td", { className: "files-table__customer", children: c.customer }),
|
|
2468
|
+
/* @__PURE__ */ e("td", { children: c.route }),
|
|
2469
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: `files-status files-status--${c.status.toLowerCase().replace(/\s+/g, "-")}`, children: c.status }) })
|
|
2470
|
+
] }, c.file)) })
|
|
2471
|
+
] }) }),
|
|
2472
|
+
/* @__PURE__ */ n("p", { className: "files-page__meta", children: [
|
|
2473
|
+
l.length,
|
|
2474
|
+
" of ",
|
|
2475
|
+
$e.length,
|
|
2476
|
+
" files across all modalities."
|
|
2477
|
+
] })
|
|
2478
|
+
] });
|
|
2479
|
+
}
|
|
2480
|
+
const xt = [
|
|
2481
|
+
{ label: "Open files", value: "12", tone: "blue" },
|
|
2482
|
+
{ label: "Quotes pending", value: "4", tone: "orange" },
|
|
2483
|
+
{ label: "Departures today", value: "7", tone: "green" },
|
|
2484
|
+
{ label: "Security checks", value: "3", tone: "violet" }
|
|
2485
|
+
], Ct = [
|
|
2486
|
+
["AF-2026-00142", "TechShop BV", "PVG -> AMS", "In progress"],
|
|
2487
|
+
["AF-2026-00151", "Dutch Flowers BV", "AMS -> NRT", "Invoiced"],
|
|
2488
|
+
["AF-202606044905", "Uitvaart Service Nederland BV", "AMS -> ASR", "Invoiced"],
|
|
2489
|
+
["AF-2026-00168", "MediSupply", "DXB -> AMS", "Docs ready"]
|
|
2490
|
+
];
|
|
2491
|
+
function kt({ onOpen: a }) {
|
|
2492
|
+
return /* @__PURE__ */ n("section", { className: "air-page", children: [
|
|
2493
|
+
/* @__PURE__ */ e(W, { title: "Air Freight Dashboard", section: "Operations" }),
|
|
2494
|
+
/* @__PURE__ */ n("div", { className: "files-banner", children: [
|
|
2495
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2496
|
+
/* @__PURE__ */ e(s, { name: "Plane", size: 14 }),
|
|
2497
|
+
/* @__PURE__ */ e("strong", { children: "Air Freight operations" })
|
|
2498
|
+
] }),
|
|
2499
|
+
/* @__PURE__ */ e("p", { children: "Follow quotations, airway bill files, warehouse handoffs, track & trace updates and security checks from one dashboard." })
|
|
2500
|
+
] }),
|
|
2501
|
+
/* @__PURE__ */ e("div", { className: "air-card-grid", children: xt.map((t) => /* @__PURE__ */ n("article", { className: "air-stat-card", children: [
|
|
2502
|
+
/* @__PURE__ */ e("span", { children: t.label }),
|
|
2503
|
+
/* @__PURE__ */ e("strong", { className: `exec-tone-${t.tone}`, children: t.value })
|
|
2504
|
+
] }, t.label)) }),
|
|
2505
|
+
/* @__PURE__ */ e("div", { className: "air-module-grid", children: [
|
|
2506
|
+
["Quotations", "air-quotations", "FileText"],
|
|
2507
|
+
["Files", "air-files", "Plane"],
|
|
2508
|
+
["Warehouse", "air-warehouse", "Warehouse"],
|
|
2509
|
+
["Track & trace", "air-track-trace", "ScanSearch"],
|
|
2510
|
+
["AWB stock", "air-awb-stock", "Hash"],
|
|
2511
|
+
["Security (RA/KC)", "air-security", "ShieldCheck"]
|
|
2512
|
+
].map(([t, r, i]) => /* @__PURE__ */ n("button", { type: "button", className: "air-module-button", onClick: () => a(r), children: [
|
|
2513
|
+
/* @__PURE__ */ e(s, { name: i, size: 16 }),
|
|
2514
|
+
/* @__PURE__ */ e("span", { children: t }),
|
|
2515
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 13 })
|
|
2516
|
+
] }, r)) }),
|
|
2517
|
+
/* @__PURE__ */ n("article", { className: "files-table-card", children: [
|
|
2518
|
+
/* @__PURE__ */ e("div", { className: "air-table-title", children: "Recent Air Freight files" }),
|
|
2519
|
+
/* @__PURE__ */ n("table", { className: "files-table", children: [
|
|
2520
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ n("tr", { children: [
|
|
2521
|
+
/* @__PURE__ */ e("th", { children: "File" }),
|
|
2522
|
+
/* @__PURE__ */ e("th", { children: "Customer" }),
|
|
2523
|
+
/* @__PURE__ */ e("th", { children: "Route" }),
|
|
2524
|
+
/* @__PURE__ */ e("th", { children: "Status" })
|
|
2525
|
+
] }) }),
|
|
2526
|
+
/* @__PURE__ */ e("tbody", { children: Ct.map(([t, r, i, l]) => /* @__PURE__ */ n("tr", { children: [
|
|
2527
|
+
/* @__PURE__ */ e("td", { className: "files-table__file", children: t }),
|
|
2528
|
+
/* @__PURE__ */ e("td", { className: "files-table__customer", children: r }),
|
|
2529
|
+
/* @__PURE__ */ e("td", { children: i }),
|
|
2530
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: `files-status files-status--${l.toLowerCase().replace(/\s+/g, "-")}`, children: l }) })
|
|
2531
|
+
] }, t)) })
|
|
2532
|
+
] })
|
|
2533
|
+
] })
|
|
2534
|
+
] });
|
|
2535
|
+
}
|
|
2536
|
+
const wt = [
|
|
2537
|
+
["Plane", "Inbound: Flight arrived · 176-9001 2234 (Gulf Components Trading)"],
|
|
2538
|
+
["FileCheck", "Inbound: Released (NoA) · 020-4456 7781 (NorthSea Marine BV)"],
|
|
2539
|
+
["Warehouse", "Inbound: Arrived at YCC · 618-3321 0098 (Pacific Foods Ltd)"],
|
|
2540
|
+
["Truck", "Outbound: Handler arrived · WH-26-0002"],
|
|
2541
|
+
["Boxes", "Outbound: Loaded · WH-26-0001 (176-1234 5675)"]
|
|
2542
|
+
], Nt = [
|
|
2543
|
+
{
|
|
2544
|
+
awb: "176-9001 2234",
|
|
2545
|
+
customer: "Gulf Components Trading · DXB -> EK149 · ETA 12 Jun 14:20",
|
|
2546
|
+
status: "Expected",
|
|
2547
|
+
done: 1,
|
|
2548
|
+
action: "Confirm: Flight arrived",
|
|
2549
|
+
update: "Key milestones"
|
|
2550
|
+
},
|
|
2551
|
+
{
|
|
2552
|
+
awb: "020-4456 7781",
|
|
2553
|
+
customer: "NorthSea Marine BV · JFK -> LH405 · ETA 12 Jun 09:05",
|
|
2554
|
+
status: "Flight arrived",
|
|
2555
|
+
done: 2,
|
|
2556
|
+
action: "Confirm: Released (NoA)",
|
|
2557
|
+
update: "All updates"
|
|
2558
|
+
},
|
|
2559
|
+
{
|
|
2560
|
+
awb: "618-3321 0098",
|
|
2561
|
+
customer: "Pacific Foods Ltd · SIN -> SQ338 · ETA 11 Jun 22:40",
|
|
2562
|
+
status: "Collected",
|
|
2563
|
+
done: 4,
|
|
2564
|
+
action: "Confirm: Arrived at YCC",
|
|
2565
|
+
update: "No updates"
|
|
2566
|
+
}
|
|
2567
|
+
];
|
|
2568
|
+
function At() {
|
|
2569
|
+
const a = ["Expected", "Flight arrived", "Released (NoA)", "Collected", "Arrived at YCC", "Left YCC"];
|
|
2570
|
+
return /* @__PURE__ */ n("section", { className: "air-detail-page", children: [
|
|
2571
|
+
/* @__PURE__ */ e(W, { title: "Track & trace", section: "Air Freight" }),
|
|
2572
|
+
/* @__PURE__ */ e("div", { className: "air-summary-grid air-summary-grid--four", children: [
|
|
2573
|
+
["Inbound active", "3", "blue"],
|
|
2574
|
+
["Awaiting NoA", "1", "orange"],
|
|
2575
|
+
["Outbound in transit", "2", "violet"],
|
|
2576
|
+
["Open actions", "5", "red"]
|
|
2577
|
+
].map(([t, r, i]) => /* @__PURE__ */ n("article", { className: "air-summary-card", children: [
|
|
2578
|
+
/* @__PURE__ */ e("span", { children: t }),
|
|
2579
|
+
/* @__PURE__ */ e("strong", { className: `exec-tone-${i}`, children: r })
|
|
2580
|
+
] }, t)) }),
|
|
2581
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2582
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2583
|
+
/* @__PURE__ */ e(s, { name: "Activity", size: 14 }),
|
|
2584
|
+
" Operator actions / triggers"
|
|
2585
|
+
] }),
|
|
2586
|
+
/* @__PURE__ */ e("div", { className: "trigger-list", children: wt.map(([t, r]) => /* @__PURE__ */ n("button", { type: "button", className: "trigger-row", children: [
|
|
2587
|
+
/* @__PURE__ */ e("span", { children: /* @__PURE__ */ e(s, { name: t, size: 14 }) }),
|
|
2588
|
+
/* @__PURE__ */ e("strong", { children: r }),
|
|
2589
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 13 })
|
|
2590
|
+
] }, r)) }),
|
|
2591
|
+
/* @__PURE__ */ e("p", { children: "This feed also surfaces on the Air Freight dashboard so the operator starts the day here." })
|
|
2592
|
+
] }),
|
|
2593
|
+
/* @__PURE__ */ n("div", { className: "track-toolbar", children: [
|
|
2594
|
+
/* @__PURE__ */ n("div", { className: "track-tabs", children: [
|
|
2595
|
+
/* @__PURE__ */ e("button", { type: "button", className: "track-tab track-tab--active", children: "Inbound" }),
|
|
2596
|
+
/* @__PURE__ */ e("button", { type: "button", className: "track-tab", children: "Outbound" }),
|
|
2597
|
+
/* @__PURE__ */ n("button", { type: "button", className: "track-tab", children: [
|
|
2598
|
+
"NoA inbox ",
|
|
2599
|
+
/* @__PURE__ */ e("span", { children: "3" })
|
|
2600
|
+
] })
|
|
2601
|
+
] }),
|
|
2602
|
+
/* @__PURE__ */ n("label", { className: "track-search", children: [
|
|
2603
|
+
/* @__PURE__ */ e(s, { name: "Search", size: 13 }),
|
|
2604
|
+
/* @__PURE__ */ e("input", { placeholder: "Search AWB / custom" })
|
|
2605
|
+
] })
|
|
2606
|
+
] }),
|
|
2607
|
+
/* @__PURE__ */ n("article", { className: "air-panel milestone-card", children: [
|
|
2608
|
+
/* @__PURE__ */ e("h2", { children: "Inbound - import milestones" }),
|
|
2609
|
+
Nt.map((t) => /* @__PURE__ */ n("div", { className: "milestone-row", children: [
|
|
2610
|
+
/* @__PURE__ */ n("div", { className: "milestone-head", children: [
|
|
2611
|
+
/* @__PURE__ */ e("span", { className: "shipment-icon", children: /* @__PURE__ */ e(s, { name: "Plane", size: 17 }) }),
|
|
2612
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2613
|
+
/* @__PURE__ */ e("strong", { children: t.awb }),
|
|
2614
|
+
/* @__PURE__ */ e("em", { children: t.status }),
|
|
2615
|
+
/* @__PURE__ */ e("p", { children: t.customer })
|
|
2616
|
+
] }),
|
|
2617
|
+
/* @__PURE__ */ e("small", { children: t.update })
|
|
2618
|
+
] }),
|
|
2619
|
+
/* @__PURE__ */ e("div", { className: "milestone-line", children: a.map((r, i) => /* @__PURE__ */ n("div", { className: i < t.done ? "milestone-step milestone-step--done" : "milestone-step", children: [
|
|
2620
|
+
/* @__PURE__ */ e("span", {}),
|
|
2621
|
+
/* @__PURE__ */ e("small", { children: r })
|
|
2622
|
+
] }, r)) }),
|
|
2623
|
+
/* @__PURE__ */ n("div", { className: "milestone-actions", children: [
|
|
2624
|
+
/* @__PURE__ */ n("button", { type: "button", className: "air-action-primary", children: [
|
|
2625
|
+
/* @__PURE__ */ e(s, { name: "ArrowRight", size: 13 }),
|
|
2626
|
+
" ",
|
|
2627
|
+
t.action
|
|
2628
|
+
] }),
|
|
2629
|
+
/* @__PURE__ */ n("button", { type: "button", className: "air-action-secondary", children: [
|
|
2630
|
+
/* @__PURE__ */ e(s, { name: "Bell", size: 13 }),
|
|
2631
|
+
" Notify customer"
|
|
2632
|
+
] })
|
|
2633
|
+
] })
|
|
2634
|
+
] }, t.awb)),
|
|
2635
|
+
/* @__PURE__ */ e("p", { children: '"Released (NoA)" is the Notice of Arrival. "Arrived at YCC" feeds the warehouse intake.' })
|
|
2636
|
+
] })
|
|
2637
|
+
] });
|
|
2638
|
+
}
|
|
2639
|
+
function _t() {
|
|
2640
|
+
const a = [
|
|
2641
|
+
["Turkish Airlines (TK)", "136", "140"],
|
|
2642
|
+
["KLM (KL)", "99", "100"],
|
|
2643
|
+
["Emirates SkyCargo (EK)", "199", "200"],
|
|
2644
|
+
["Lufthansa Cargo (LH)", "10", "10"]
|
|
2645
|
+
], t = [
|
|
2646
|
+
["AMS", "195", "200"],
|
|
2647
|
+
["LGG", "40", "40"],
|
|
2648
|
+
["DXB", "199", "200"],
|
|
2649
|
+
["Global Pool", "10", "10"]
|
|
2650
|
+
], r = [
|
|
2651
|
+
["TK 235 · AMS", "96", "0.2", "480d"],
|
|
2652
|
+
["KL 074 · AMS", "99", "0.2", "495d"],
|
|
2653
|
+
["TK 235 · LGG", "40", "0.2", "200d"],
|
|
2654
|
+
["EK 176 · DXB", "199", "0.2", "995d"],
|
|
2655
|
+
["LH 020 · Global Pool", "10", "0.2", "50d"]
|
|
2656
|
+
];
|
|
2657
|
+
return /* @__PURE__ */ n("section", { className: "air-detail-page", children: [
|
|
2658
|
+
/* @__PURE__ */ n("div", { className: "air-page-titlebar", children: [
|
|
2659
|
+
/* @__PURE__ */ e(W, { title: "AWB Stock Management", section: "Air Freight" }),
|
|
2660
|
+
/* @__PURE__ */ e("div", { className: "awb-tabs", children: ["Dashboard", "Stock ranges", "Allocations", "Alerts", "Transfers"].map((i, l) => /* @__PURE__ */ e("button", { type: "button", className: l === 0 ? "awb-tab awb-tab--active" : "awb-tab", children: i }, i)) })
|
|
2661
|
+
] }),
|
|
2662
|
+
/* @__PURE__ */ n("div", { className: "files-banner", children: [
|
|
2663
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2664
|
+
/* @__PURE__ */ e(s, { name: "Hash", size: 15 }),
|
|
2665
|
+
/* @__PURE__ */ e("strong", { children: "One globally controlled AWB inventory" })
|
|
2666
|
+
] }),
|
|
2667
|
+
/* @__PURE__ */ e("p", { children: "Register airline stock ranges, allocate the next valid AWB on booking, and track each number from allocation to invoicing. Numbers are validated against the IATA Modulo-7 check digit." })
|
|
2668
|
+
] }),
|
|
2669
|
+
/* @__PURE__ */ e("div", { className: "air-summary-grid air-summary-grid--six", children: [
|
|
2670
|
+
["Total stock", "450", "violet"],
|
|
2671
|
+
["Available", "444", "green"],
|
|
2672
|
+
["Reserved", "1", "orange"],
|
|
2673
|
+
["Issued / Used", "4", "blue"],
|
|
2674
|
+
["Cancelled / Void", "1", "red"],
|
|
2675
|
+
["Active alerts", "3", "orange"]
|
|
2676
|
+
].map(([i, l, c]) => /* @__PURE__ */ n("article", { className: "air-summary-card", children: [
|
|
2677
|
+
/* @__PURE__ */ e("span", { children: i }),
|
|
2678
|
+
/* @__PURE__ */ e("strong", { className: `exec-tone-${c}`, children: l })
|
|
2679
|
+
] }, i)) }),
|
|
2680
|
+
/* @__PURE__ */ n("div", { className: "inventory-grid", children: [
|
|
2681
|
+
/* @__PURE__ */ e(Pe, { title: "Available per airline", icon: "Plane", rows: a }),
|
|
2682
|
+
/* @__PURE__ */ e(Pe, { title: "Available per branch", icon: "ArrowLeftRight", rows: t }),
|
|
2683
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2684
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2685
|
+
/* @__PURE__ */ e(s, { name: "Activity", size: 15 }),
|
|
2686
|
+
" Forecast - days to exhaustion"
|
|
2687
|
+
] }),
|
|
2688
|
+
/* @__PURE__ */ n("table", { className: "inventory-table", children: [
|
|
2689
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ n("tr", { children: [
|
|
2690
|
+
/* @__PURE__ */ e("th", { children: "Range" }),
|
|
2691
|
+
/* @__PURE__ */ e("th", { children: "Avail." }),
|
|
2692
|
+
/* @__PURE__ */ e("th", { children: "Avg/day" }),
|
|
2693
|
+
/* @__PURE__ */ e("th", { children: "Days left" })
|
|
2694
|
+
] }) }),
|
|
2695
|
+
/* @__PURE__ */ e("tbody", { children: r.map(([i, l, c, o]) => /* @__PURE__ */ n("tr", { children: [
|
|
2696
|
+
/* @__PURE__ */ e("td", { children: i }),
|
|
2697
|
+
/* @__PURE__ */ e("td", { children: l }),
|
|
2698
|
+
/* @__PURE__ */ e("td", { children: c }),
|
|
2699
|
+
/* @__PURE__ */ e("td", { className: "positive", children: o })
|
|
2700
|
+
] }, i)) })
|
|
2701
|
+
] })
|
|
2702
|
+
] }),
|
|
2703
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2704
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2705
|
+
/* @__PURE__ */ e(s, { name: "AlertTriangle", size: 15 }),
|
|
2706
|
+
" Alerts"
|
|
2707
|
+
] }),
|
|
2708
|
+
/* @__PURE__ */ n("div", { className: "alert-list", children: [
|
|
2709
|
+
/* @__PURE__ */ n("p", { children: [
|
|
2710
|
+
/* @__PURE__ */ e("span", { className: "dot dot--orange" }),
|
|
2711
|
+
" ",
|
|
2712
|
+
/* @__PURE__ */ e("strong", { children: "Range expiring:" }),
|
|
2713
|
+
" KLM (KL) 074 @ AMS expires in 18d (28-06-2026)"
|
|
2714
|
+
] }),
|
|
2715
|
+
/* @__PURE__ */ n("p", { children: [
|
|
2716
|
+
/* @__PURE__ */ e("span", { className: "dot dot--blue" }),
|
|
2717
|
+
" ",
|
|
2718
|
+
/* @__PURE__ */ e("strong", { children: "AWB gap:" }),
|
|
2719
|
+
" Prefix 235: gap 3469902-3469902 unused"
|
|
2720
|
+
] }),
|
|
2721
|
+
/* @__PURE__ */ n("p", { children: [
|
|
2722
|
+
/* @__PURE__ */ e("span", { className: "dot dot--blue" }),
|
|
2723
|
+
" ",
|
|
2724
|
+
/* @__PURE__ */ e("strong", { children: "AWB gap:" }),
|
|
2725
|
+
" Prefix 235: gap 3469904-3469993 unused"
|
|
2726
|
+
] })
|
|
2727
|
+
] })
|
|
2728
|
+
] })
|
|
2729
|
+
] })
|
|
2730
|
+
] });
|
|
2731
|
+
}
|
|
2732
|
+
function Pe({ title: a, icon: t, rows: r }) {
|
|
2733
|
+
return /* @__PURE__ */ n("article", { className: "air-panel inventory-list", children: [
|
|
2734
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2735
|
+
/* @__PURE__ */ e(s, { name: t, size: 15 }),
|
|
2736
|
+
" ",
|
|
2737
|
+
a
|
|
2738
|
+
] }),
|
|
2739
|
+
r.map(([i, l, c]) => /* @__PURE__ */ n("div", { className: "inventory-list__row", children: [
|
|
2740
|
+
/* @__PURE__ */ e("span", { children: i }),
|
|
2741
|
+
/* @__PURE__ */ n("strong", { children: [
|
|
2742
|
+
l,
|
|
2743
|
+
" ",
|
|
2744
|
+
/* @__PURE__ */ n("em", { children: [
|
|
2745
|
+
"/ ",
|
|
2746
|
+
c
|
|
2747
|
+
] })
|
|
2748
|
+
] })
|
|
2749
|
+
] }, i))
|
|
2750
|
+
] });
|
|
2751
|
+
}
|
|
2752
|
+
function St() {
|
|
2753
|
+
const a = [
|
|
2754
|
+
["WH-26-0001", "Lumitech Electronics B.V. · EK150 -> DXB · 6 colli · 482 kg", "Import", "Received", "8d", "A-12-03", "2", !0],
|
|
2755
|
+
["WH-26-0002", "Vortex Pumps NV · 3 colli · 310 kg", "Export", "Received", "Damage", "B-04-07", "1", !1],
|
|
2756
|
+
["WH-26-0003", "NorthSea Marine BV · LH404 -> JFK · 11 colli · 1.240 kg", "Import", "Expected", "", "-", "0", !1],
|
|
2757
|
+
["WH-26-0004", "Apex Robotics · EK150 -> DXB · 2 colli · 96 kg", "Export", "Out-scanned", "", "A-01-01", "1", !1]
|
|
2758
|
+
];
|
|
2759
|
+
return /* @__PURE__ */ n("section", { className: "air-detail-page", children: [
|
|
2760
|
+
/* @__PURE__ */ n("div", { className: "air-page-titlebar", children: [
|
|
2761
|
+
/* @__PURE__ */ e(W, { title: "Warehouse - loads intake", section: "Air Freight" }),
|
|
2762
|
+
/* @__PURE__ */ n("button", { type: "button", className: "air-action-primary", children: [
|
|
2763
|
+
/* @__PURE__ */ e(s, { name: "Plus", size: 14 }),
|
|
2764
|
+
" Announce new arrival"
|
|
2765
|
+
] })
|
|
2766
|
+
] }),
|
|
2767
|
+
/* @__PURE__ */ e("div", { className: "air-summary-grid air-summary-grid--four", children: [
|
|
2768
|
+
["In loads", "2", "blue"],
|
|
2769
|
+
["Alerts (>1 week)", "1", "red"],
|
|
2770
|
+
["Damage reported", "1", "orange"],
|
|
2771
|
+
["Out-scanned", "1", "green"]
|
|
2772
|
+
].map(([t, r, i]) => /* @__PURE__ */ n("article", { className: "air-summary-card", children: [
|
|
2773
|
+
/* @__PURE__ */ e("span", { children: t }),
|
|
2774
|
+
/* @__PURE__ */ e("strong", { className: `exec-tone-${i}`, children: r })
|
|
2775
|
+
] }, t)) }),
|
|
2776
|
+
/* @__PURE__ */ n("div", { className: "warehouse-alert warehouse-alert--danger", children: [
|
|
2777
|
+
/* @__PURE__ */ e(s, { name: "AlertTriangle", size: 15 }),
|
|
2778
|
+
" 1 shipment(s) in the loods over 1 week without an out-scan."
|
|
2779
|
+
] }),
|
|
2780
|
+
/* @__PURE__ */ n("div", { className: "warehouse-alert warehouse-alert--warning", children: [
|
|
2781
|
+
/* @__PURE__ */ e(s, { name: "AlertTriangle", size: 15 }),
|
|
2782
|
+
" 1 shipment(s) with reported damage."
|
|
2783
|
+
] }),
|
|
2784
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2785
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2786
|
+
/* @__PURE__ */ e(s, { name: "Warehouse", size: 15 }),
|
|
2787
|
+
" Announced shipments"
|
|
2788
|
+
] }),
|
|
2789
|
+
/* @__PURE__ */ n("label", { className: "files-search warehouse-search", children: [
|
|
2790
|
+
/* @__PURE__ */ e(s, { name: "Search", size: 14 }),
|
|
2791
|
+
/* @__PURE__ */ e("input", { placeholder: "Search reference / customer / AWB / flight" })
|
|
2792
|
+
] }),
|
|
2793
|
+
/* @__PURE__ */ e("div", { className: "shipment-list", children: a.map(([t, r, i, l, c, o, d, h]) => /* @__PURE__ */ n("button", { type: "button", className: h ? "shipment-row shipment-row--alert" : "shipment-row", children: [
|
|
2794
|
+
/* @__PURE__ */ e("span", { className: "shipment-icon", children: /* @__PURE__ */ e(s, { name: "Plane", size: 17 }) }),
|
|
2795
|
+
/* @__PURE__ */ n("span", { className: "shipment-main", children: [
|
|
2796
|
+
/* @__PURE__ */ e("strong", { children: t }),
|
|
2797
|
+
/* @__PURE__ */ e("span", { className: `files-pill files-pill--${i.toLowerCase()}`, children: i }),
|
|
2798
|
+
/* @__PURE__ */ e("span", { className: `files-status files-status--${l.toLowerCase().replace(/\s+/g, "-")}`, children: l }),
|
|
2799
|
+
c ? /* @__PURE__ */ e("em", { children: c }) : null,
|
|
2800
|
+
/* @__PURE__ */ e("small", { children: r })
|
|
2801
|
+
] }),
|
|
2802
|
+
/* @__PURE__ */ n("span", { className: "shipment-side", children: [
|
|
2803
|
+
/* @__PURE__ */ e(s, { name: "MapPin", size: 13 }),
|
|
2804
|
+
" ",
|
|
2805
|
+
o,
|
|
2806
|
+
" ",
|
|
2807
|
+
/* @__PURE__ */ e(s, { name: "FileText", size: 13 }),
|
|
2808
|
+
" ",
|
|
2809
|
+
d
|
|
2810
|
+
] })
|
|
2811
|
+
] }, t)) }),
|
|
2812
|
+
/* @__PURE__ */ e("p", { children: "Open a shipment to handle it, or announce a new arrival. Out-scan marks departure and feeds Track & Trace." })
|
|
2813
|
+
] })
|
|
2814
|
+
] });
|
|
2815
|
+
}
|
|
2816
|
+
function Mt() {
|
|
2817
|
+
return /* @__PURE__ */ n("section", { className: "air-detail-page", children: [
|
|
2818
|
+
/* @__PURE__ */ e(W, { title: "Aviation Security - RA/KC validation", section: "Air Freight" }),
|
|
2819
|
+
/* @__PURE__ */ n("div", { className: "files-banner", children: [
|
|
2820
|
+
/* @__PURE__ */ n("div", { children: [
|
|
2821
|
+
/* @__PURE__ */ e(s, { name: "ShieldCheck", size: 15 }),
|
|
2822
|
+
/* @__PURE__ */ e("strong", { children: "EU aviation security compliance" })
|
|
2823
|
+
] }),
|
|
2824
|
+
/* @__PURE__ */ e("p", { children: "As a Regulated Agent, YCC determines the security status of every consignment. Cargo from a valid Known Consignor is accepted as secure; otherwise it must be screened." })
|
|
2825
|
+
] }),
|
|
2826
|
+
/* @__PURE__ */ n("div", { className: "security-grid", children: [
|
|
2827
|
+
/* @__PURE__ */ n("article", { className: "air-panel security-status-card", children: [
|
|
2828
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2829
|
+
/* @__PURE__ */ e(s, { name: "ShieldCheck", size: 15 }),
|
|
2830
|
+
" Regulated Agent status"
|
|
2831
|
+
] }),
|
|
2832
|
+
/* @__PURE__ */ e("span", { children: "Agent" }),
|
|
2833
|
+
/* @__PURE__ */ e("strong", { children: "Your Cargo Contact B.V." }),
|
|
2834
|
+
/* @__PURE__ */ e("span", { children: "RA number" }),
|
|
2835
|
+
/* @__PURE__ */ e("strong", { children: "NL/RA/00528-00" }),
|
|
2836
|
+
/* @__PURE__ */ e("span", { children: "Valid until" }),
|
|
2837
|
+
/* @__PURE__ */ e("strong", { children: "31-12-2026" }),
|
|
2838
|
+
/* @__PURE__ */ e("em", { children: "Valid" }),
|
|
2839
|
+
/* @__PURE__ */ e("p", { children: "Set under Admin > Company details." })
|
|
2840
|
+
] }),
|
|
2841
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2842
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2843
|
+
/* @__PURE__ */ e(s, { name: "CheckCircle2", size: 15 }),
|
|
2844
|
+
" Consignment validation tool"
|
|
2845
|
+
] }),
|
|
2846
|
+
/* @__PURE__ */ n("div", { className: "security-form-grid", children: [
|
|
2847
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2848
|
+
"Shipper / Consignor",
|
|
2849
|
+
/* @__PURE__ */ n("select", { children: [
|
|
2850
|
+
/* @__PURE__ */ e("option", { children: "Select shipper" }),
|
|
2851
|
+
/* @__PURE__ */ e("option", { children: "Dutch Flowers BV" })
|
|
2852
|
+
] })
|
|
2853
|
+
] }),
|
|
2854
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2855
|
+
"Screening method (if not KC)",
|
|
2856
|
+
/* @__PURE__ */ n("select", { children: [
|
|
2857
|
+
/* @__PURE__ */ e("option", { children: "-" }),
|
|
2858
|
+
/* @__PURE__ */ e("option", { children: "XRY" }),
|
|
2859
|
+
/* @__PURE__ */ e("option", { children: "EDS" })
|
|
2860
|
+
] })
|
|
2861
|
+
] }),
|
|
2862
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2863
|
+
"Target",
|
|
2864
|
+
/* @__PURE__ */ n("select", { children: [
|
|
2865
|
+
/* @__PURE__ */ e("option", { children: "SPX" }),
|
|
2866
|
+
/* @__PURE__ */ e("option", { children: "SCO" })
|
|
2867
|
+
] })
|
|
2868
|
+
] })
|
|
2869
|
+
] }),
|
|
2870
|
+
/* @__PURE__ */ n("button", { type: "button", className: "air-action-primary", children: [
|
|
2871
|
+
/* @__PURE__ */ e(s, { name: "ShieldCheck", size: 14 }),
|
|
2872
|
+
" Validate consignment"
|
|
2873
|
+
] })
|
|
2874
|
+
] })
|
|
2875
|
+
] }),
|
|
2876
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2877
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2878
|
+
/* @__PURE__ */ e(s, { name: "AlertTriangle", size: 15 }),
|
|
2879
|
+
" Certificate alerts"
|
|
2880
|
+
] }),
|
|
2881
|
+
/* @__PURE__ */ n("p", { children: [
|
|
2882
|
+
/* @__PURE__ */ e("span", { className: "dot dot--orange" }),
|
|
2883
|
+
" ",
|
|
2884
|
+
/* @__PURE__ */ e("strong", { children: "Dutch Flowers BV" }),
|
|
2885
|
+
" (KC) - expires in 18d, 28-06-2026"
|
|
2886
|
+
] })
|
|
2887
|
+
] }),
|
|
2888
|
+
/* @__PURE__ */ n("article", { className: "air-panel", children: [
|
|
2889
|
+
/* @__PURE__ */ n("h2", { children: [
|
|
2890
|
+
/* @__PURE__ */ e(s, { name: "Users", size: 15 }),
|
|
2891
|
+
" Known Consignor / Account Consignor register"
|
|
2892
|
+
] }),
|
|
2893
|
+
/* @__PURE__ */ n("table", { className: "security-table", children: [
|
|
2894
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ n("tr", { children: [
|
|
2895
|
+
/* @__PURE__ */ e("th", { children: "Consignor" }),
|
|
2896
|
+
/* @__PURE__ */ e("th", { children: "Type" }),
|
|
2897
|
+
/* @__PURE__ */ e("th", { children: "Certificate" }),
|
|
2898
|
+
/* @__PURE__ */ e("th", { children: "Valid until" }),
|
|
2899
|
+
/* @__PURE__ */ e("th", { children: "Station" }),
|
|
2900
|
+
/* @__PURE__ */ e("th", { children: "Status" })
|
|
2901
|
+
] }) }),
|
|
2902
|
+
/* @__PURE__ */ e("tbody", { children: [
|
|
2903
|
+
["Uitvaart Service Nederland BV", "KC", "NL/KC/00231-01", "31-12-2026", "AMS", "Valid"],
|
|
2904
|
+
["MediSupply BV", "KC", "NL/KC/00488-02", "30-09-2026", "AMS", "Valid"],
|
|
2905
|
+
["FashionHub", "AC", "AC-2026-114", "31-07-2026", "AMS", "Valid"],
|
|
2906
|
+
["Dutch Flowers BV", "KC", "NL/KC/00120-03", "28-06-2026", "AMS", "18d"]
|
|
2907
|
+
].map(([t, r, i, l, c, o]) => /* @__PURE__ */ n("tr", { children: [
|
|
2908
|
+
/* @__PURE__ */ e("td", { children: t }),
|
|
2909
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: "files-status files-status--cleared", children: r }) }),
|
|
2910
|
+
/* @__PURE__ */ e("td", { children: i }),
|
|
2911
|
+
/* @__PURE__ */ e("td", { children: l }),
|
|
2912
|
+
/* @__PURE__ */ e("td", { children: c }),
|
|
2913
|
+
/* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { className: o === "Valid" ? "files-status files-status--cleared" : "files-status files-status--invoiced", children: o }) })
|
|
2914
|
+
] }, i)) })
|
|
2915
|
+
] }),
|
|
2916
|
+
/* @__PURE__ */ n("div", { className: "security-form", children: [
|
|
2917
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2918
|
+
"Consignor name",
|
|
2919
|
+
/* @__PURE__ */ e("input", {})
|
|
2920
|
+
] }),
|
|
2921
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2922
|
+
"Type",
|
|
2923
|
+
/* @__PURE__ */ n("select", { children: [
|
|
2924
|
+
/* @__PURE__ */ e("option", { children: "KC" }),
|
|
2925
|
+
/* @__PURE__ */ e("option", { children: "AC" })
|
|
2926
|
+
] })
|
|
2927
|
+
] }),
|
|
2928
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2929
|
+
"Certificate",
|
|
2930
|
+
/* @__PURE__ */ e("input", {})
|
|
2931
|
+
] }),
|
|
2932
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2933
|
+
"Valid until",
|
|
2934
|
+
/* @__PURE__ */ e("input", { placeholder: "dd-mm-yyyy" })
|
|
2935
|
+
] }),
|
|
2936
|
+
/* @__PURE__ */ n("label", { children: [
|
|
2937
|
+
"Station",
|
|
2938
|
+
/* @__PURE__ */ n("select", { children: [
|
|
2939
|
+
/* @__PURE__ */ e("option", { children: "AMS" }),
|
|
2940
|
+
/* @__PURE__ */ e("option", { children: "DXB" })
|
|
2941
|
+
] })
|
|
2942
|
+
] })
|
|
2943
|
+
] }),
|
|
2944
|
+
/* @__PURE__ */ n("button", { type: "button", className: "air-action-primary", children: [
|
|
2945
|
+
/* @__PURE__ */ e(s, { name: "Plus", size: 14 }),
|
|
2946
|
+
" Register consignor"
|
|
2947
|
+
] })
|
|
2948
|
+
] })
|
|
2949
|
+
] });
|
|
2950
|
+
}
|
|
2951
|
+
function un() {
|
|
2952
|
+
const [a, t] = y("home"), [r, i] = y(0), [l, c] = y(0), [o, d] = y(""), [h, p] = y(!1), [u, m] = y(!1), [k, M] = y(!1), [z, Z] = y(["air"]), [f, O] = y(Re[0]), [g, A] = y(""), B = [
|
|
2953
|
+
"Your Cargo Contact (HQ)",
|
|
2954
|
+
"YCC Colchester",
|
|
2955
|
+
"YCC Liège",
|
|
2956
|
+
"Linex UK",
|
|
2957
|
+
"CCL",
|
|
2958
|
+
"Linex France",
|
|
2959
|
+
"YCC Madrid",
|
|
2960
|
+
"YCC Barcelona"
|
|
2961
|
+
], G = ["Eng (US)", "Esp (ES)", "العربية"], ea = ie(() => Qe(B[r]), [r, B]), ee = Za(a), aa = ie(() => {
|
|
2962
|
+
const b = o.trim().toLowerCase();
|
|
2963
|
+
return b ? ee.work.filter((ae) => Object.values(ae).some((ye) => ye.toLowerCase().includes(b))) : ee.work;
|
|
2964
|
+
}, [ee.work, o]);
|
|
2965
|
+
function K(b) {
|
|
2966
|
+
t(b), A(""), d(""), p(!1), m(!1), M(!1);
|
|
2967
|
+
}
|
|
2968
|
+
function ta(b) {
|
|
2969
|
+
Z((ae) => ae.includes(b) ? ae.filter((ye) => ye !== b) : [...ae, b]);
|
|
2970
|
+
}
|
|
2971
|
+
function U(b) {
|
|
2972
|
+
A(b);
|
|
2973
|
+
}
|
|
2974
|
+
return /* @__PURE__ */ n("div", { className: "prototype-shell", children: [
|
|
2975
|
+
/* @__PURE__ */ e(
|
|
2976
|
+
tt,
|
|
2977
|
+
{
|
|
2978
|
+
activePage: a,
|
|
2979
|
+
branch: B[r],
|
|
2980
|
+
branches: B,
|
|
2981
|
+
items: ea,
|
|
2982
|
+
branchOpen: k,
|
|
2983
|
+
openMenus: z,
|
|
2984
|
+
onSelectPage: K,
|
|
2985
|
+
onToggleMenu: ta,
|
|
2986
|
+
onToggleBranchMenu: () => {
|
|
2987
|
+
M((b) => !b), p(!1), m(!1);
|
|
2988
|
+
},
|
|
2989
|
+
onSelectBranch: (b) => {
|
|
2990
|
+
i(B.indexOf(b)), Ya(b).includes(a) || (t("home"), d("")), M(!1), U(`Workspace switched to ${b}.`);
|
|
2991
|
+
}
|
|
2992
|
+
}
|
|
2993
|
+
),
|
|
2994
|
+
/* @__PURE__ */ n("div", { className: "prototype-main", children: [
|
|
2995
|
+
/* @__PURE__ */ e(
|
|
2996
|
+
nt,
|
|
2997
|
+
{
|
|
2998
|
+
query: o,
|
|
2999
|
+
language: G[l],
|
|
3000
|
+
notifications: h,
|
|
3001
|
+
userMenuOpen: u,
|
|
3002
|
+
users: Re,
|
|
3003
|
+
activeUser: f,
|
|
3004
|
+
onQueryChange: d,
|
|
3005
|
+
onToggleLanguage: () => {
|
|
3006
|
+
const b = (l + 1) % G.length;
|
|
3007
|
+
c(b), U(`Language changed to ${G[b]}.`);
|
|
3008
|
+
},
|
|
3009
|
+
onToggleNotifications: () => {
|
|
3010
|
+
p((b) => !b), m(!1), M(!1);
|
|
3011
|
+
},
|
|
3012
|
+
onToggleUserMenu: () => {
|
|
3013
|
+
m((b) => !b), p(!1), M(!1);
|
|
3014
|
+
},
|
|
3015
|
+
onSelectUser: (b) => {
|
|
3016
|
+
O(b), m(!1), U(`Demo login switched to ${b.name} with ${b.role} access.`);
|
|
3017
|
+
}
|
|
3018
|
+
}
|
|
3019
|
+
),
|
|
3020
|
+
/* @__PURE__ */ e("main", { className: "prototype-content", children: a === "home" ? /* @__PURE__ */ e(rt, { onOpenAir: () => K("air"), onOpenFiles: () => K("files") }) : a === "ceo" ? /* @__PURE__ */ e(bt, { onOpen: K }) : a === "coo" ? /* @__PURE__ */ e(ht, { onOpen: K }) : a === "files" ? /* @__PURE__ */ e(ft, {}) : a === "air" || a === "air-dashboard" ? /* @__PURE__ */ e(kt, { onOpen: K }) : a === "air-track-trace" ? /* @__PURE__ */ e(At, {}) : a === "air-awb-stock" ? /* @__PURE__ */ e(_t, {}) : a === "air-warehouse" ? /* @__PURE__ */ e(St, {}) : a === "air-security" ? /* @__PURE__ */ e(Mt, {}) : /* @__PURE__ */ e(
|
|
3021
|
+
ct,
|
|
3022
|
+
{
|
|
3023
|
+
data: ee,
|
|
3024
|
+
activePage: a,
|
|
3025
|
+
filteredWork: aa,
|
|
3026
|
+
message: g,
|
|
3027
|
+
onRowAction: (b) => U(`${b.ref} opened for ${b.customer}. Assigned owner: ${b.owner}.`),
|
|
3028
|
+
onCreateShipment: () => U(`New ${a === "files" ? "document" : "shipment"} draft created from ${Be[r + 1] ?? Be[0]}.`),
|
|
3029
|
+
onRefresh: () => U(`${ee.title} refreshed with latest dummy data.`)
|
|
3030
|
+
}
|
|
3031
|
+
) })
|
|
3032
|
+
] })
|
|
3033
|
+
] });
|
|
3034
|
+
}
|
|
3035
|
+
const te = {
|
|
3036
|
+
accent: "#5B7CE6",
|
|
3037
|
+
// primary action color, icon tint, active stepper fill
|
|
3038
|
+
indigo: "#6366F1",
|
|
3039
|
+
// active nav item text, user avatar bg, role chip text
|
|
3040
|
+
indigoBg: "#EEF0FE",
|
|
3041
|
+
// active nav bg, role chip bg, PGTS info banner bg
|
|
3042
|
+
navy: "#0E1438"
|
|
3043
|
+
// dark button bg, label print header, print document accents
|
|
3044
|
+
}, P = {
|
|
3045
|
+
page: "#F4F5F9",
|
|
3046
|
+
// app root background (body bg)
|
|
3047
|
+
card: "#FFFFFF",
|
|
3048
|
+
// card surface, sidebar, topbar
|
|
3049
|
+
soft: "#F6F7FB",
|
|
3050
|
+
// inset areas, form field bg, empty states, drag-zone default
|
|
3051
|
+
border: "#E8EAF2",
|
|
3052
|
+
// all card borders, dividers, input borders, connector bars
|
|
3053
|
+
ink: "#1B2440",
|
|
3054
|
+
// primary text
|
|
3055
|
+
sub: "#8A93AD",
|
|
3056
|
+
// secondary / supporting text, disabled icons
|
|
3057
|
+
faint: "#AEB4C9"
|
|
3058
|
+
// placeholder text, disabled icons, footnote text
|
|
3059
|
+
}, T = {
|
|
3060
|
+
released: { text: "#16A34A", bg: "#DCFCE7" },
|
|
3061
|
+
// Auto-released
|
|
3062
|
+
review: { text: "#EA580C", bg: "#FEF3C7" },
|
|
3063
|
+
// Human review
|
|
3064
|
+
hold: { text: "#C2410C", bg: "#FFEDD5" },
|
|
3065
|
+
// On hold
|
|
3066
|
+
inspect: { text: "#B91C1C", bg: "#FEE2E2" },
|
|
3067
|
+
// Physical inspection
|
|
3068
|
+
unknown: { text: "#6D28D9", bg: "#EDE9FE" },
|
|
3069
|
+
// Unknown parcel
|
|
3070
|
+
missing: { text: "#475569", bg: "#E2E8F0" }
|
|
3071
|
+
// Missing (not scanned)
|
|
3072
|
+
}, F = {
|
|
3073
|
+
cleared: { text: "#16A34A", bg: "#DCFCE7" },
|
|
3074
|
+
progress: { text: "#1D4ED8", bg: "#DBEAFE" },
|
|
3075
|
+
hold: { text: "#B91C1C", bg: "#FEE2E2" },
|
|
3076
|
+
pending: { text: "#EA580C", bg: "#FEF3C7" },
|
|
3077
|
+
active: { text: "#16A34A", bg: "#DCFCE7" },
|
|
3078
|
+
inactive: { text: "#64748B", bg: "#F1F5F9" }
|
|
3079
|
+
}, D = {
|
|
3080
|
+
ready: { text: "#64748B", bg: "#F1F5F9" },
|
|
3081
|
+
submitted: { text: "#1D4ED8", bg: "#DBEAFE" },
|
|
3082
|
+
ack: { text: "#6D28D9", bg: "#EDE9FE" },
|
|
3083
|
+
released: { text: "#16A34A", bg: "#DCFCE7" },
|
|
3084
|
+
hold: { text: "#B91C1C", bg: "#FEE2E2" },
|
|
3085
|
+
docs: { text: "#EA580C", bg: "#FEF3C7" }
|
|
3086
|
+
}, _ = {
|
|
3087
|
+
// Text on colored backgrounds (dark variants for readability)
|
|
3088
|
+
successTextDark: "#166534",
|
|
3089
|
+
// on #DCFCE7 / #ECFDF5
|
|
3090
|
+
warningTextDark: "#9A3412",
|
|
3091
|
+
// on #FEF3C7 / #FEF9EC
|
|
3092
|
+
dangerTextDark: "#B91C1C",
|
|
3093
|
+
// on #FEE2E2
|
|
3094
|
+
infoTextDeep: "#3730A3",
|
|
3095
|
+
// on C.indigoBg (PGTS/RTO banner title)
|
|
3096
|
+
infoTextMid: "#4338CA",
|
|
3097
|
+
// on C.indigoBg (PGTS/RTO banner body)
|
|
3098
|
+
// Raw semantic signals
|
|
3099
|
+
success: "#16A34A",
|
|
3100
|
+
warning: "#EA580C",
|
|
3101
|
+
danger: "#B91C1C",
|
|
3102
|
+
blue: "#1D4ED8",
|
|
3103
|
+
purple: "#6D28D9",
|
|
3104
|
+
slate: "#475569",
|
|
3105
|
+
// Alert border colors (used on banner borders)
|
|
3106
|
+
borderRed: "#FCA5A5",
|
|
3107
|
+
borderAmber: "#FCD34D",
|
|
3108
|
+
borderGreen: "#86EFAC",
|
|
3109
|
+
borderGreenSoft: "#A7F3D0"
|
|
3110
|
+
}, Y = {
|
|
3111
|
+
import: { text: "#1D4ED8", bg: "#EFF4FF" },
|
|
3112
|
+
export: { text: "#6D28D9", bg: "#F1ECFE" }
|
|
3113
|
+
}, J = {
|
|
3114
|
+
T1: { text: "#1D4ED8", bg: "#EFF4FF" },
|
|
3115
|
+
T2: { text: "#6D28D9", bg: "#F1ECFE" }
|
|
3116
|
+
}, E = {
|
|
3117
|
+
Draft: { text: "#64748B", bg: "#F1F5F9" },
|
|
3118
|
+
Expected: { text: "#1D4ED8", bg: "#EFF4FF" },
|
|
3119
|
+
Received: { text: "#EA580C", bg: "#FEF3C7" },
|
|
3120
|
+
Located: { text: "#6D28D9", bg: "#F1ECFE" },
|
|
3121
|
+
"Out-scanned": { text: "#16A34A", bg: "#DCFCE7" }
|
|
3122
|
+
}, I = {
|
|
3123
|
+
air: "#4338CA",
|
|
3124
|
+
sea: "#0369A1",
|
|
3125
|
+
road: "#C2410C",
|
|
3126
|
+
customs: "#15803D",
|
|
3127
|
+
warehouse: "#7C3AED",
|
|
3128
|
+
backoffice: "#64748B"
|
|
3129
|
+
}, he = {
|
|
3130
|
+
VIS: "#5B7CE6",
|
|
3131
|
+
// Vision-OCR
|
|
3132
|
+
HIST: "#0EA5E9",
|
|
3133
|
+
// Historical Match
|
|
3134
|
+
LLM: "#8B5CF6",
|
|
3135
|
+
// LLM Reasoner
|
|
3136
|
+
STAT: "#14B8A6"
|
|
3137
|
+
// Market-Stat
|
|
3138
|
+
}, pn = {
|
|
3139
|
+
// Primary
|
|
3140
|
+
accent: te.accent,
|
|
3141
|
+
indigo: te.indigo,
|
|
3142
|
+
"indigo-bg": te.indigoBg,
|
|
3143
|
+
navy: te.navy,
|
|
3144
|
+
// Neutral
|
|
3145
|
+
page: P.page,
|
|
3146
|
+
card: P.card,
|
|
3147
|
+
soft: P.soft,
|
|
3148
|
+
border: P.border,
|
|
3149
|
+
ink: P.ink,
|
|
3150
|
+
sub: P.sub,
|
|
3151
|
+
faint: P.faint,
|
|
3152
|
+
// Semantic signals
|
|
3153
|
+
success: _.success,
|
|
3154
|
+
warning: _.warning,
|
|
3155
|
+
danger: _.danger,
|
|
3156
|
+
blue: _.blue,
|
|
3157
|
+
purple: _.purple,
|
|
3158
|
+
slate: _.slate,
|
|
3159
|
+
// Text on colored surfaces
|
|
3160
|
+
"success-text": _.successTextDark,
|
|
3161
|
+
"warning-text": _.warningTextDark,
|
|
3162
|
+
"danger-text": _.dangerTextDark,
|
|
3163
|
+
"info-text-deep": _.infoTextDeep,
|
|
3164
|
+
"info-text-mid": _.infoTextMid,
|
|
3165
|
+
// Alert borders
|
|
3166
|
+
"border-red": _.borderRed,
|
|
3167
|
+
"border-amber": _.borderAmber,
|
|
3168
|
+
"border-green": _.borderGreen,
|
|
3169
|
+
"border-green-soft": _.borderGreenSoft,
|
|
3170
|
+
// Status pairs
|
|
3171
|
+
"status-released-text": T.released.text,
|
|
3172
|
+
"status-released-bg": T.released.bg,
|
|
3173
|
+
"status-review-text": T.review.text,
|
|
3174
|
+
"status-review-bg": T.review.bg,
|
|
3175
|
+
"status-hold-text": T.hold.text,
|
|
3176
|
+
"status-hold-bg": T.hold.bg,
|
|
3177
|
+
"status-inspect-text": T.inspect.text,
|
|
3178
|
+
"status-inspect-bg": T.inspect.bg,
|
|
3179
|
+
"status-unknown-text": T.unknown.text,
|
|
3180
|
+
"status-unknown-bg": T.unknown.bg,
|
|
3181
|
+
"status-missing-text": T.missing.text,
|
|
3182
|
+
"status-missing-bg": T.missing.bg,
|
|
3183
|
+
// Milestone pairs
|
|
3184
|
+
"ms-cleared-text": F.cleared.text,
|
|
3185
|
+
"ms-cleared-bg": F.cleared.bg,
|
|
3186
|
+
"ms-progress-text": F.progress.text,
|
|
3187
|
+
"ms-progress-bg": F.progress.bg,
|
|
3188
|
+
"ms-hold-text": F.hold.text,
|
|
3189
|
+
"ms-hold-bg": F.hold.bg,
|
|
3190
|
+
"ms-pending-text": F.pending.text,
|
|
3191
|
+
"ms-pending-bg": F.pending.bg,
|
|
3192
|
+
"ms-active-text": F.active.text,
|
|
3193
|
+
"ms-active-bg": F.active.bg,
|
|
3194
|
+
"ms-inactive-text": F.inactive.text,
|
|
3195
|
+
"ms-inactive-bg": F.inactive.bg,
|
|
3196
|
+
// Clearance pairs
|
|
3197
|
+
"cl-ready-text": D.ready.text,
|
|
3198
|
+
"cl-ready-bg": D.ready.bg,
|
|
3199
|
+
"cl-submitted-text": D.submitted.text,
|
|
3200
|
+
"cl-submitted-bg": D.submitted.bg,
|
|
3201
|
+
"cl-ack-text": D.ack.text,
|
|
3202
|
+
"cl-ack-bg": D.ack.bg,
|
|
3203
|
+
"cl-released-text": D.released.text,
|
|
3204
|
+
"cl-released-bg": D.released.bg,
|
|
3205
|
+
"cl-hold-text": D.hold.text,
|
|
3206
|
+
"cl-hold-bg": D.hold.bg,
|
|
3207
|
+
"cl-docs-text": D.docs.text,
|
|
3208
|
+
"cl-docs-bg": D.docs.bg,
|
|
3209
|
+
// Direction and T-status pairs
|
|
3210
|
+
"direction-import-text": Y.import.text,
|
|
3211
|
+
"direction-import-bg": Y.import.bg,
|
|
3212
|
+
"direction-export-text": Y.export.text,
|
|
3213
|
+
"direction-export-bg": Y.export.bg,
|
|
3214
|
+
"tstatus-t1-text": J.T1.text,
|
|
3215
|
+
"tstatus-t1-bg": J.T1.bg,
|
|
3216
|
+
"tstatus-t2-text": J.T2.text,
|
|
3217
|
+
"tstatus-t2-bg": J.T2.bg,
|
|
3218
|
+
// Warehouse status pairs
|
|
3219
|
+
"warehouse-draft-text": E.Draft.text,
|
|
3220
|
+
"warehouse-draft-bg": E.Draft.bg,
|
|
3221
|
+
"warehouse-expected-text": E.Expected.text,
|
|
3222
|
+
"warehouse-expected-bg": E.Expected.bg,
|
|
3223
|
+
"warehouse-received-text": E.Received.text,
|
|
3224
|
+
"warehouse-received-bg": E.Received.bg,
|
|
3225
|
+
"warehouse-located-text": E.Located.text,
|
|
3226
|
+
"warehouse-located-bg": E.Located.bg,
|
|
3227
|
+
"warehouse-out-scanned-text": E["Out-scanned"].text,
|
|
3228
|
+
"warehouse-out-scanned-bg": E["Out-scanned"].bg,
|
|
3229
|
+
// Branch module colors
|
|
3230
|
+
"branch-air": I.air,
|
|
3231
|
+
"branch-sea": I.sea,
|
|
3232
|
+
"branch-road": I.road,
|
|
3233
|
+
"branch-customs": I.customs,
|
|
3234
|
+
"branch-warehouse": I.warehouse,
|
|
3235
|
+
"branch-backoffice": I.backoffice,
|
|
3236
|
+
// AI bots
|
|
3237
|
+
"bot-vis": he.VIS,
|
|
3238
|
+
"bot-hist": he.HIST,
|
|
3239
|
+
"bot-llm": he.LLM,
|
|
3240
|
+
"bot-stat": he.STAT
|
|
3241
|
+
}, Ne = {
|
|
3242
|
+
// Used for every text node across the entire app (FONT constant)
|
|
3243
|
+
sans: "'Poppins', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
|
|
3244
|
+
// Used for AWB numbers, T-refs, PGTS refs, parcel IDs, integrity hashes
|
|
3245
|
+
mono: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Courier New', monospace"
|
|
3246
|
+
}, x = {
|
|
3247
|
+
regular: 400,
|
|
3248
|
+
medium: 500,
|
|
3249
|
+
semibold: 600,
|
|
3250
|
+
bold: 700,
|
|
3251
|
+
extrabold: 800,
|
|
3252
|
+
black: 900
|
|
3253
|
+
}, v = {
|
|
3254
|
+
// Micro — nav chrome and labels
|
|
3255
|
+
xs2: "9px",
|
|
3256
|
+
// nav group headers ("Operations", "Commercial") — text-[9px]
|
|
3257
|
+
xs: "10px",
|
|
3258
|
+
// field labels (uppercase + tracking-wide), bot source text — text-[10px]
|
|
3259
|
+
xs3: "10.5px",
|
|
3260
|
+
// footnotes, panel footer text — text-[10.5px]
|
|
3261
|
+
// Small — secondary content
|
|
3262
|
+
sm2: "11px",
|
|
3263
|
+
// secondary meta info, pill footnotes, notify chip — text-[11px]
|
|
3264
|
+
sm: "12px",
|
|
3265
|
+
// standard body / form text, alert banners — text-[12px]
|
|
3266
|
+
sm3: "12.5px",
|
|
3267
|
+
// sidebar nav section labels — text-[12.5px]
|
|
3268
|
+
// Base — primary content
|
|
3269
|
+
base: "13px",
|
|
3270
|
+
// card primary text, table cell values, ref numbers — text-[13px]
|
|
3271
|
+
md: "14px",
|
|
3272
|
+
// topbar search input, dossier prose (text-sm = 14px)
|
|
3273
|
+
md2: "15px",
|
|
3274
|
+
// shipper name in detail view — text-[15px]
|
|
3275
|
+
md3: "16px",
|
|
3276
|
+
// compact KPI/card values in operational dashboards
|
|
3277
|
+
// Large — headings and KPI
|
|
3278
|
+
lg: "18px",
|
|
3279
|
+
// detail page title ("Announce arrival", "Register bonded storage") — text-[18px]
|
|
3280
|
+
xl: "20px",
|
|
3281
|
+
// KPI values, report headings (text-xl)
|
|
3282
|
+
"2xl": "24px"
|
|
3283
|
+
// KPI primary large value (text-2xl)
|
|
3284
|
+
}, ue = {
|
|
3285
|
+
none: "1",
|
|
3286
|
+
// leading-none (avatar initials, badge counters)
|
|
3287
|
+
tight: "1.25",
|
|
3288
|
+
// leading-tight (stepper labels, two-line nav items)
|
|
3289
|
+
snug: "1.375",
|
|
3290
|
+
// leading-snug (DocHeader paragraph, notification text)
|
|
3291
|
+
normal: "1.5"
|
|
3292
|
+
// leading-normal (default body)
|
|
3293
|
+
}, re = {
|
|
3294
|
+
wide: "0.025em",
|
|
3295
|
+
// tracking-wide (field labels: Lbl component)
|
|
3296
|
+
wider: "0.05em"
|
|
3297
|
+
// tracking-wider (sidebar group headers)
|
|
3298
|
+
}, Tt = {
|
|
3299
|
+
// ── Navigation chrome
|
|
3300
|
+
navGroupLabel: {
|
|
3301
|
+
size: v.xs2,
|
|
3302
|
+
weight: x.bold,
|
|
3303
|
+
spacing: re.wider,
|
|
3304
|
+
transform: "uppercase"
|
|
3305
|
+
},
|
|
3306
|
+
navSectionLabel: {
|
|
3307
|
+
size: v.sm3,
|
|
3308
|
+
weight: x.semibold
|
|
3309
|
+
},
|
|
3310
|
+
navItem: {
|
|
3311
|
+
size: v.sm,
|
|
3312
|
+
weight: x.medium
|
|
3313
|
+
},
|
|
3314
|
+
// ── Form elements
|
|
3315
|
+
fieldLabel: {
|
|
3316
|
+
size: v.xs,
|
|
3317
|
+
weight: x.semibold,
|
|
3318
|
+
spacing: re.wide,
|
|
3319
|
+
transform: "uppercase"
|
|
3320
|
+
},
|
|
3321
|
+
input: {
|
|
3322
|
+
size: v.sm,
|
|
3323
|
+
weight: x.regular
|
|
3324
|
+
},
|
|
3325
|
+
// ── Content hierarchy
|
|
3326
|
+
pageTitle: {
|
|
3327
|
+
size: v.xl,
|
|
3328
|
+
weight: x.bold
|
|
3329
|
+
},
|
|
3330
|
+
detailTitle: {
|
|
3331
|
+
size: v.lg,
|
|
3332
|
+
weight: x.bold
|
|
3333
|
+
},
|
|
3334
|
+
panelTitle: {
|
|
3335
|
+
size: v.md,
|
|
3336
|
+
weight: x.bold
|
|
3337
|
+
},
|
|
3338
|
+
body: {
|
|
3339
|
+
size: v.sm,
|
|
3340
|
+
weight: x.regular
|
|
3341
|
+
},
|
|
3342
|
+
meta: {
|
|
3343
|
+
size: v.sm2,
|
|
3344
|
+
weight: x.regular
|
|
3345
|
+
},
|
|
3346
|
+
footnote: {
|
|
3347
|
+
size: v.xs3,
|
|
3348
|
+
weight: x.regular
|
|
3349
|
+
},
|
|
3350
|
+
// ── Data display
|
|
3351
|
+
kpiValue: {
|
|
3352
|
+
size: v["2xl"],
|
|
3353
|
+
weight: x.bold
|
|
3354
|
+
},
|
|
3355
|
+
kpiLabel: {
|
|
3356
|
+
size: v.xs,
|
|
3357
|
+
weight: x.semibold,
|
|
3358
|
+
spacing: re.wide,
|
|
3359
|
+
transform: "uppercase"
|
|
3360
|
+
},
|
|
3361
|
+
tableValue: {
|
|
3362
|
+
size: v.base,
|
|
3363
|
+
weight: x.regular
|
|
3364
|
+
},
|
|
3365
|
+
reference: {
|
|
3366
|
+
size: v.base,
|
|
3367
|
+
weight: x.bold,
|
|
3368
|
+
family: Ne.mono
|
|
3369
|
+
},
|
|
3370
|
+
badge: {
|
|
3371
|
+
size: "11px",
|
|
3372
|
+
weight: x.semibold
|
|
3373
|
+
},
|
|
3374
|
+
chip: {
|
|
3375
|
+
size: "10px",
|
|
3376
|
+
weight: x.bold
|
|
3377
|
+
},
|
|
3378
|
+
// ── Buttons
|
|
3379
|
+
btn: {
|
|
3380
|
+
size: v.xs,
|
|
3381
|
+
weight: x.semibold
|
|
3382
|
+
}
|
|
3383
|
+
}, mn = {
|
|
3384
|
+
"font-sans": Ne.sans,
|
|
3385
|
+
"font-mono": Ne.mono,
|
|
3386
|
+
"size-xs2": v.xs2,
|
|
3387
|
+
"size-xs": v.xs,
|
|
3388
|
+
"size-xs3": v.xs3,
|
|
3389
|
+
"size-sm2": v.sm2,
|
|
3390
|
+
"size-sm": v.sm,
|
|
3391
|
+
"size-sm3": v.sm3,
|
|
3392
|
+
"size-base": v.base,
|
|
3393
|
+
"size-md": v.md,
|
|
3394
|
+
"size-md2": v.md2,
|
|
3395
|
+
"size-md3": v.md3,
|
|
3396
|
+
"size-lg": v.lg,
|
|
3397
|
+
"size-xl": v.xl,
|
|
3398
|
+
"size-2xl": v["2xl"],
|
|
3399
|
+
"weight-regular": String(x.regular),
|
|
3400
|
+
"weight-medium": String(x.medium),
|
|
3401
|
+
"weight-semibold": String(x.semibold),
|
|
3402
|
+
"weight-bold": String(x.bold),
|
|
3403
|
+
"weight-extrabold": String(x.extrabold),
|
|
3404
|
+
"weight-black": String(x.black),
|
|
3405
|
+
"leading-tight": ue.tight,
|
|
3406
|
+
"leading-none": ue.none,
|
|
3407
|
+
"leading-snug": ue.snug,
|
|
3408
|
+
"leading-normal": ue.normal,
|
|
3409
|
+
"tracking-wide": re.wide,
|
|
3410
|
+
"tracking-wider": re.wider
|
|
3411
|
+
}, R = {
|
|
3412
|
+
0: "0px",
|
|
3413
|
+
0.5: "2px",
|
|
3414
|
+
// py-0.5 — pill vertical padding
|
|
3415
|
+
1: "4px",
|
|
3416
|
+
// gap-1, mb-0.5 — tightest gap
|
|
3417
|
+
1.5: "6px",
|
|
3418
|
+
// gap-1.5, px-1.5, py-1, mb-1 — tight gap
|
|
3419
|
+
2: "8px",
|
|
3420
|
+
// gap-2, px-2, py-1.5 — standard gap
|
|
3421
|
+
2.5: "10px",
|
|
3422
|
+
// gap-2.5, px-2.5, py-2 — search bar / chip pad
|
|
3423
|
+
3: "12px",
|
|
3424
|
+
// gap-3, px-3, py-2.5, mb-3 — section gap
|
|
3425
|
+
3.5: "14px",
|
|
3426
|
+
// px-3.5, py-3 — alert banner / Btn padding
|
|
3427
|
+
4: "16px",
|
|
3428
|
+
// gap-4, px-4, py-3.5 — card internal gap
|
|
3429
|
+
5: "20px",
|
|
3430
|
+
// py-5 — main content vertical pad
|
|
3431
|
+
6: "24px",
|
|
3432
|
+
// px-6, py-6 — main content horizontal pad, topbar px
|
|
3433
|
+
8: "32px"
|
|
3434
|
+
// px-8 — dossier print horizontal pad
|
|
3435
|
+
}, w = {
|
|
3436
|
+
// App shell
|
|
3437
|
+
sidebarWidth: "224px",
|
|
3438
|
+
// w-[224px] — Sidebar component
|
|
3439
|
+
topbarHeight: "58px",
|
|
3440
|
+
// h-[58px] — Topbar component
|
|
3441
|
+
// Sidebar internals
|
|
3442
|
+
logoHeight: "46px",
|
|
3443
|
+
// img height inside Sidebar logo zone
|
|
3444
|
+
// Icon sizes used across the app (passed as `size` prop)
|
|
3445
|
+
icon: {
|
|
3446
|
+
xs: 11,
|
|
3447
|
+
// ChevronRight in breadcrumb, inline chips
|
|
3448
|
+
sm: 12,
|
|
3449
|
+
// inline row meta icons (MapPin, FileText, Calendar, Euro)
|
|
3450
|
+
md: 13,
|
|
3451
|
+
// action chip icons (CheckCircle2, AlertTriangle inline)
|
|
3452
|
+
base: 14,
|
|
3453
|
+
// Btn icon, ChevronDown, Search topbar
|
|
3454
|
+
lg: 15,
|
|
3455
|
+
// PanelCard icon, alert banner icon, topbar Bell, Lbl icon
|
|
3456
|
+
xl: 16,
|
|
3457
|
+
// SidebarItem icon, row avatar icon, back arrow, topbar Bell
|
|
3458
|
+
"2xl": 17,
|
|
3459
|
+
// topbar Bell (notification)
|
|
3460
|
+
"3xl": 18
|
|
3461
|
+
// ScanZone icons (Camera, Upload)
|
|
3462
|
+
},
|
|
3463
|
+
// Avatars / icon containers
|
|
3464
|
+
avatar: {
|
|
3465
|
+
sm: "24px",
|
|
3466
|
+
// user switch dropdown avatar (h-6 w-6)
|
|
3467
|
+
md: "28px",
|
|
3468
|
+
// Stepper circle (h-7 w-7)
|
|
3469
|
+
base: "32px",
|
|
3470
|
+
// Topbar user avatar (h-8 w-8)
|
|
3471
|
+
lg: "36px"
|
|
3472
|
+
// row icon container (h-9 w-9, grid place-items-center rounded-lg)
|
|
3473
|
+
},
|
|
3474
|
+
// Thumbnails (ScanZone document previews)
|
|
3475
|
+
thumbnailWidth: "88px",
|
|
3476
|
+
thumbnailHeight: "64px",
|
|
3477
|
+
// Max-widths
|
|
3478
|
+
searchBarMax: "340px",
|
|
3479
|
+
// list page search bars (maxWidth: 340)
|
|
3480
|
+
topbarSearchMax: "max-w-md",
|
|
3481
|
+
// topbar global search
|
|
3482
|
+
dossierMax: "800px",
|
|
3483
|
+
// max-w-[800px] dossier print area
|
|
3484
|
+
// Donut chart defaults
|
|
3485
|
+
donutDefault: "52px",
|
|
3486
|
+
donutLarge: "72px"
|
|
3487
|
+
// ShipperDetail donut
|
|
3488
|
+
}, j = {
|
|
3489
|
+
none: "0px",
|
|
3490
|
+
sm: "4px",
|
|
3491
|
+
// rounded — progress bars, compare bars, sparkline bars
|
|
3492
|
+
md: "6px",
|
|
3493
|
+
// (implied Tailwind md, not explicitly observed but logical gap)
|
|
3494
|
+
lg: "8px",
|
|
3495
|
+
// rounded-lg — Btn, inputs, search bar, nav items, thumbnails
|
|
3496
|
+
xl: "12px",
|
|
3497
|
+
// rounded-xl — section panels, alert banners, list row items, form areas
|
|
3498
|
+
"2xl": "16px",
|
|
3499
|
+
// rounded-2xl — Card, PanelCard, Kpi, page-level cards
|
|
3500
|
+
full: "9999px"
|
|
3501
|
+
// rounded-full — status pills, avatar circles, tab switcher, notification dot
|
|
3502
|
+
}, Ie = {
|
|
3503
|
+
// shadow-sm — ShipperRow hover state
|
|
3504
|
+
sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
3505
|
+
// shadow-lg — Topbar user dropdown
|
|
3506
|
+
lg: "0 10px 15px -3px rgb(0 0 0 / 0.10), 0 4px 6px -4px rgb(0 0 0 / 0.10)",
|
|
3507
|
+
// No other shadows observed in the prototype
|
|
3508
|
+
none: "none"
|
|
3509
|
+
}, He = {
|
|
3510
|
+
sm: "640px",
|
|
3511
|
+
// sm: — KPI grid 2-col → 4-col, form 1-col → 2-col
|
|
3512
|
+
lg: "1024px"
|
|
3513
|
+
// lg: — Shipper detail 1-col → 3-col, dossier media grid
|
|
3514
|
+
}, pe = {
|
|
3515
|
+
base: 0,
|
|
3516
|
+
raised: 10,
|
|
3517
|
+
dropdown: 20,
|
|
3518
|
+
// z-20 — Topbar user account dropdown
|
|
3519
|
+
overlay: 30
|
|
3520
|
+
// Dossier / Proforma full-screen overlay (implied above shell)
|
|
3521
|
+
}, Ce = {
|
|
3522
|
+
// ChevronDown rotation in sidebar accordion
|
|
3523
|
+
chevron: "transform 0.15s ease",
|
|
3524
|
+
// Tailwind `transition` class on interactive elements (Btn, row buttons)
|
|
3525
|
+
default: "all 0.15s ease",
|
|
3526
|
+
// Connectivity feed polling interval (not a CSS transition, but a timing constant)
|
|
3527
|
+
feedPoll: 4e3
|
|
3528
|
+
// ms
|
|
3529
|
+
}, ke = {
|
|
3530
|
+
// @keyframes flpulse — used on connectivity status indicators
|
|
3531
|
+
flpulse: {
|
|
3532
|
+
name: "flpulse",
|
|
3533
|
+
keyframes: `
|
|
3534
|
+
0% { opacity: 0.3; }
|
|
3535
|
+
50% { opacity: 1; }
|
|
3536
|
+
100% { opacity: 0.3; }
|
|
3537
|
+
`,
|
|
3538
|
+
duration: "1.5s",
|
|
3539
|
+
timing: "ease-in-out",
|
|
3540
|
+
iteration: "infinite"
|
|
3541
|
+
}
|
|
3542
|
+
}, gn = {
|
|
3543
|
+
// Spacing
|
|
3544
|
+
"space-0": R[0],
|
|
3545
|
+
"space-0_5": R[0.5],
|
|
3546
|
+
"space-1": R[1],
|
|
3547
|
+
"space-1_5": R[1.5],
|
|
3548
|
+
"space-2": R[2],
|
|
3549
|
+
"space-2_5": R[2.5],
|
|
3550
|
+
"space-3": R[3],
|
|
3551
|
+
"space-3_5": R[3.5],
|
|
3552
|
+
"space-4": R[4],
|
|
3553
|
+
"space-5": R[5],
|
|
3554
|
+
"space-6": R[6],
|
|
3555
|
+
"space-8": R[8],
|
|
3556
|
+
// Shell
|
|
3557
|
+
"sidebar-width": w.sidebarWidth,
|
|
3558
|
+
"topbar-height": w.topbarHeight,
|
|
3559
|
+
"logo-height": w.logoHeight,
|
|
3560
|
+
// Icon sizes
|
|
3561
|
+
"icon-xs": String(w.icon.xs),
|
|
3562
|
+
"icon-sm": String(w.icon.sm),
|
|
3563
|
+
"icon-md": String(w.icon.md),
|
|
3564
|
+
"icon-base": String(w.icon.base),
|
|
3565
|
+
"icon-lg": String(w.icon.lg),
|
|
3566
|
+
"icon-xl": String(w.icon.xl),
|
|
3567
|
+
"icon-2xl": String(w.icon["2xl"]),
|
|
3568
|
+
"icon-3xl": String(w.icon["3xl"]),
|
|
3569
|
+
// Avatar and media sizes
|
|
3570
|
+
"avatar-sm": w.avatar.sm,
|
|
3571
|
+
"avatar-md": w.avatar.md,
|
|
3572
|
+
"avatar-base": w.avatar.base,
|
|
3573
|
+
"avatar-lg": w.avatar.lg,
|
|
3574
|
+
"thumbnail-width": w.thumbnailWidth,
|
|
3575
|
+
"thumbnail-height": w.thumbnailHeight,
|
|
3576
|
+
"search-bar-max": w.searchBarMax,
|
|
3577
|
+
"topbar-search-max": w.topbarSearchMax,
|
|
3578
|
+
"dossier-max": w.dossierMax,
|
|
3579
|
+
"donut-default": w.donutDefault,
|
|
3580
|
+
"donut-large": w.donutLarge,
|
|
3581
|
+
// Radius
|
|
3582
|
+
"radius-sm": j.sm,
|
|
3583
|
+
"radius-md": j.md,
|
|
3584
|
+
"radius-lg": j.lg,
|
|
3585
|
+
"radius-xl": j.xl,
|
|
3586
|
+
"radius-2xl": j["2xl"],
|
|
3587
|
+
"radius-full": j.full,
|
|
3588
|
+
// Shadow
|
|
3589
|
+
"shadow-sm": Ie.sm,
|
|
3590
|
+
"shadow-lg": Ie.lg,
|
|
3591
|
+
// Z-index
|
|
3592
|
+
"z-base": String(pe.base),
|
|
3593
|
+
"z-raised": String(pe.raised),
|
|
3594
|
+
"z-dropdown": String(pe.dropdown),
|
|
3595
|
+
"z-overlay": String(pe.overlay),
|
|
3596
|
+
// Breakpoints and transitions
|
|
3597
|
+
"breakpoint-sm": He.sm,
|
|
3598
|
+
"breakpoint-lg": He.lg,
|
|
3599
|
+
"transition-chevron": Ce.chevron,
|
|
3600
|
+
"transition-default": Ce.default,
|
|
3601
|
+
"feed-poll-ms": String(Ce.feedPoll),
|
|
3602
|
+
"flpulse-duration": ke.flpulse.duration,
|
|
3603
|
+
"flpulse-timing": ke.flpulse.timing,
|
|
3604
|
+
"flpulse-iteration": ke.flpulse.iteration
|
|
3605
|
+
};
|
|
3606
|
+
export {
|
|
3607
|
+
It as Accordion,
|
|
3608
|
+
Aa as Alert,
|
|
3609
|
+
le as Avatar,
|
|
3610
|
+
oe as Badge,
|
|
3611
|
+
Ke as Banner,
|
|
3612
|
+
Je as Breadcrumb,
|
|
3613
|
+
N as Button,
|
|
3614
|
+
ge as Card,
|
|
3615
|
+
Lt as CardBody,
|
|
3616
|
+
Ge as CardFooter,
|
|
3617
|
+
Se as CardHeader,
|
|
3618
|
+
se as Checkbox,
|
|
3619
|
+
nn as Col,
|
|
3620
|
+
Et as CompareBar,
|
|
3621
|
+
hn as ComponentShowcase,
|
|
3622
|
+
Qt as ConfirmDialog,
|
|
3623
|
+
tn as Container,
|
|
3624
|
+
en as ContextMenu,
|
|
3625
|
+
Gt as CopyButton,
|
|
3626
|
+
dn as DashboardDemo,
|
|
3627
|
+
Wt as DataList,
|
|
3628
|
+
jt as DateInput,
|
|
3629
|
+
ln as Divider,
|
|
3630
|
+
Bt as Donut,
|
|
3631
|
+
Yt as Drawer,
|
|
3632
|
+
Ot as EmptyState,
|
|
3633
|
+
fa as FileUpload,
|
|
3634
|
+
Fa as Footer,
|
|
3635
|
+
fe as FormGroup,
|
|
3636
|
+
cn as Grid,
|
|
3637
|
+
Ta as Header,
|
|
3638
|
+
s as Icon,
|
|
3639
|
+
H as Input,
|
|
3640
|
+
zt as KV,
|
|
3641
|
+
qe as Modal,
|
|
3642
|
+
Ye as Nav,
|
|
3643
|
+
Me as NavContext,
|
|
3644
|
+
X as NavGroup,
|
|
3645
|
+
L as NavItem,
|
|
3646
|
+
La as Page,
|
|
3647
|
+
rn as PageHeader,
|
|
3648
|
+
an as Pagination,
|
|
3649
|
+
Pt as Popover,
|
|
3650
|
+
Vt as ProgressBar,
|
|
3651
|
+
un as PrototypeHome,
|
|
3652
|
+
xa as Radio,
|
|
3653
|
+
Ut as RadioGroup,
|
|
3654
|
+
$ as Row,
|
|
3655
|
+
Kt as ScanZone,
|
|
3656
|
+
qt as SearchInput,
|
|
3657
|
+
ne as Select,
|
|
3658
|
+
Ma as Sidebar,
|
|
3659
|
+
Jt as Skeleton,
|
|
3660
|
+
sn as Spacer,
|
|
3661
|
+
_a as Spinner,
|
|
3662
|
+
on as Stack,
|
|
3663
|
+
V as StatCard,
|
|
3664
|
+
Xt as Stepper,
|
|
3665
|
+
Ue as Table,
|
|
3666
|
+
Zt as Tabs,
|
|
3667
|
+
Q as Tag,
|
|
3668
|
+
me as Textarea,
|
|
3669
|
+
Ht as Timeline,
|
|
3670
|
+
ka as ToastProvider,
|
|
3671
|
+
q as Toggle,
|
|
3672
|
+
$t as Tooltip,
|
|
3673
|
+
Rt as TrendSpark,
|
|
3674
|
+
he as aiBot,
|
|
3675
|
+
ke as animation,
|
|
3676
|
+
I as branchModule,
|
|
3677
|
+
He as breakpoint,
|
|
3678
|
+
D as clearance,
|
|
3679
|
+
pn as colorTokens,
|
|
3680
|
+
Y as direction,
|
|
3681
|
+
Ne as fontFamily,
|
|
3682
|
+
v as fontSize,
|
|
3683
|
+
x as fontWeight,
|
|
3684
|
+
la as iconNames,
|
|
3685
|
+
gn as layoutTokens,
|
|
3686
|
+
re as letterSpacing,
|
|
3687
|
+
ue as lineHeight,
|
|
3688
|
+
F as milestone,
|
|
3689
|
+
P as neutral,
|
|
3690
|
+
te as primary,
|
|
3691
|
+
j as radius,
|
|
3692
|
+
_ as semantic,
|
|
3693
|
+
Ie as shadow,
|
|
3694
|
+
w as size,
|
|
3695
|
+
R as spacing,
|
|
3696
|
+
T as status,
|
|
3697
|
+
J as tStatus,
|
|
3698
|
+
Tt as textStyle,
|
|
3699
|
+
Ce as transition,
|
|
3700
|
+
mn as typographyTokens,
|
|
3701
|
+
wa as useToast,
|
|
3702
|
+
E as warehouseStatus,
|
|
3703
|
+
pe as zIndex
|
|
3704
|
+
};
|