@w5-ui/svelte 0.1.0 → 0.2.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/package.json +4 -4
- package/src/lib/components/Accordion.svelte +9 -1
- package/src/lib/components/AccordionItem.svelte +11 -5
- package/src/lib/components/ActionMenu.svelte +19 -14
- package/src/lib/components/ActivityFeed.svelte +24 -11
- package/src/lib/components/Alert.svelte +9 -4
- package/src/lib/components/AnnotatedTimeSeries.svelte +40 -26
- package/src/lib/components/ArcDiagram.svelte +20 -8
- package/src/lib/components/AreaChart.svelte +26 -14
- package/src/lib/components/Avatar.svelte +20 -8
- package/src/lib/components/AvatarGroup.svelte +16 -7
- package/src/lib/components/Badge.svelte +24 -11
- package/src/lib/components/Banner.svelte +20 -9
- package/src/lib/components/BarChart.svelte +29 -17
- package/src/lib/components/BeeswarmChart.svelte +32 -18
- package/src/lib/components/BoxPlot.svelte +27 -15
- package/src/lib/components/Breadcrumb.svelte +12 -7
- package/src/lib/components/BubbleChart.svelte +39 -25
- package/src/lib/components/BulletChart.svelte +16 -9
- package/src/lib/components/BumpChart.svelte +15 -8
- package/src/lib/components/Button.svelte +32 -11
- package/src/lib/components/CIDRInput.svelte +27 -19
- package/src/lib/components/CalendarHeatmap.svelte +12 -5
- package/src/lib/components/Callout.svelte +9 -4
- package/src/lib/components/CandlestickChart.svelte +31 -16
- package/src/lib/components/Card.svelte +16 -6
- package/src/lib/components/Carousel.svelte +14 -11
- package/src/lib/components/Checkbox.svelte +37 -16
- package/src/lib/components/ChordDiagram.svelte +12 -5
- package/src/lib/components/CirclePacking.svelte +13 -6
- package/src/lib/components/CodeBlock.svelte +16 -7
- package/src/lib/components/ColorPicker.svelte +22 -11
- package/src/lib/components/ColumnToggle.svelte +18 -11
- package/src/lib/components/Combobox.svelte +44 -33
- package/src/lib/components/CommandPalette.svelte +41 -31
- package/src/lib/components/ConfirmDialog.svelte +66 -35
- package/src/lib/components/ContextMenu.svelte +46 -33
- package/src/lib/components/ContextualHelp.svelte +13 -9
- package/src/lib/components/ContourPlot.svelte +43 -28
- package/src/lib/components/CopyButton.svelte +8 -4
- package/src/lib/components/CorrelationMatrix.svelte +16 -7
- package/src/lib/components/CountUp.svelte +30 -13
- package/src/lib/components/CumulativeDistribution.svelte +32 -19
- package/src/lib/components/DatePicker.svelte +28 -21
- package/src/lib/components/DateRangePicker.svelte +39 -32
- package/src/lib/components/Dendrogram.svelte +18 -6
- package/src/lib/components/Donut.svelte +28 -14
- package/src/lib/components/DotPlot.svelte +31 -16
- package/src/lib/components/Drawer.svelte +28 -21
- package/src/lib/components/DualAxisChart.svelte +39 -26
- package/src/lib/components/DumbbellChart.svelte +24 -12
- package/src/lib/components/DurationInput.svelte +26 -17
- package/src/lib/components/EmptyState.svelte +16 -6
- package/src/lib/components/ErrorBandChart.svelte +28 -14
- package/src/lib/components/ExpandableRow.svelte +19 -6
- package/src/lib/components/Field.svelte +26 -12
- package/src/lib/components/FileUpload.svelte +29 -20
- package/src/lib/components/FilterBuilder.svelte +27 -17
- package/src/lib/components/FlameGraph.svelte +14 -7
- package/src/lib/components/ForceGraph.svelte +19 -7
- package/src/lib/components/FunnelChart.svelte +20 -13
- package/src/lib/components/GanttChart.svelte +14 -7
- package/src/lib/components/Gauge.svelte +26 -16
- package/src/lib/components/GroupedList.svelte +13 -6
- package/src/lib/components/HealthBar.svelte +14 -5
- package/src/lib/components/HeatMap.svelte +28 -17
- package/src/lib/components/HexbinChart.svelte +36 -22
- package/src/lib/components/Histogram.svelte +27 -14
- package/src/lib/components/HorizonChart.svelte +28 -16
- package/src/lib/components/HoverCard.svelte +24 -12
- package/src/lib/components/IPInput.svelte +24 -16
- package/src/lib/components/IcicleChart.svelte +14 -7
- package/src/lib/components/IconButton.svelte +27 -9
- package/src/lib/components/InlineEdit.svelte +22 -12
- package/src/lib/components/Input.svelte +67 -10
- package/src/lib/components/InputGroup.svelte +8 -3
- package/src/lib/components/JsonViewer.svelte +17 -6
- package/src/lib/components/JsonViewerNode.svelte +36 -18
- package/src/lib/components/KVTable.svelte +6 -2
- package/src/lib/components/KanbanBoard.svelte +24 -17
- package/src/lib/components/Kbd.svelte +8 -4
- package/src/lib/components/LineChart.svelte +29 -17
- package/src/lib/components/LogViewer.svelte +27 -12
- package/src/lib/components/LollipopChart.svelte +20 -8
- package/src/lib/components/MACInput.svelte +24 -16
- package/src/lib/components/MarimekkoChart.svelte +14 -7
- package/src/lib/components/MatrixChart.svelte +19 -9
- package/src/lib/components/Menubar.svelte +26 -19
- package/src/lib/components/MirroredBarChart.svelte +25 -10
- package/src/lib/components/Modal.svelte +46 -33
- package/src/lib/components/MultiSelect.svelte +49 -38
- package/src/lib/components/NightingaleChart.svelte +17 -10
- package/src/lib/components/NotificationPanel.svelte +48 -33
- package/src/lib/components/NumberInput.svelte +37 -23
- package/src/lib/components/OTPInput.svelte +28 -16
- package/src/lib/components/Pagination.svelte +16 -13
- package/src/lib/components/ParallelCoordinates.svelte +28 -16
- package/src/lib/components/ParetoChart.svelte +38 -24
- package/src/lib/components/PasswordInput.svelte +24 -14
- package/src/lib/components/PieChart.svelte +21 -13
- package/src/lib/components/Pill.svelte +17 -6
- package/src/lib/components/PolarHeatmap.svelte +32 -18
- package/src/lib/components/Popover.svelte +22 -11
- package/src/lib/components/ProgressBar.svelte +17 -8
- package/src/lib/components/PunchCard.svelte +31 -20
- package/src/lib/components/QuadrantChart.svelte +50 -30
- package/src/lib/components/RadarChart.svelte +30 -18
- package/src/lib/components/RadialBarChart.svelte +14 -7
- package/src/lib/components/RadioGroup.svelte +20 -8
- package/src/lib/components/RangeSlider.svelte +30 -18
- package/src/lib/components/RankedList.svelte +18 -6
- package/src/lib/components/ResizablePanel.svelte +33 -17
- package/src/lib/components/RidgelinePlot.svelte +33 -21
- package/src/lib/components/RowToggle.svelte +15 -5
- package/src/lib/components/SankeyDiagram.svelte +18 -6
- package/src/lib/components/ScatterPlot.svelte +34 -21
- package/src/lib/components/SearchBox.svelte +27 -5
- package/src/lib/components/SegmentedControl.svelte +11 -7
- package/src/lib/components/Select.svelte +37 -26
- package/src/lib/components/SelectionToolbar.svelte +25 -11
- package/src/lib/components/Sidebar.svelte +15 -9
- package/src/lib/components/Signal.svelte +6 -2
- package/src/lib/components/Skeleton.svelte +20 -10
- package/src/lib/components/SkipLink.svelte +9 -4
- package/src/lib/components/Slider.svelte +28 -14
- package/src/lib/components/SlopeChart.svelte +35 -21
- package/src/lib/components/SortHeader.svelte +20 -9
- package/src/lib/components/SortableList.svelte +20 -13
- package/src/lib/components/Sparkline.svelte +15 -6
- package/src/lib/components/SparklineMatrix.svelte +17 -10
- package/src/lib/components/Spinner.svelte +7 -3
- package/src/lib/components/SplitButton.svelte +28 -17
- package/src/lib/components/Spoiler.svelte +22 -11
- package/src/lib/components/StackedBarChart.svelte +35 -22
- package/src/lib/components/StackedProgress.svelte +21 -9
- package/src/lib/components/StarRating.svelte +22 -11
- package/src/lib/components/Stat.svelte +32 -10
- package/src/lib/components/StatusIndicator.svelte +7 -3
- package/src/lib/components/StepChart.svelte +27 -15
- package/src/lib/components/Stepper.svelte +10 -6
- package/src/lib/components/StreamGraph.svelte +19 -12
- package/src/lib/components/StripeChart.svelte +22 -12
- package/src/lib/components/SunburstChart.svelte +11 -4
- package/src/lib/components/SwitchPortGrid.svelte +13 -7
- package/src/lib/components/TabPanel.svelte +9 -4
- package/src/lib/components/Tabs.svelte +18 -10
- package/src/lib/components/Tag.svelte +9 -5
- package/src/lib/components/TagInput.svelte +28 -18
- package/src/lib/components/Textarea.svelte +37 -15
- package/src/lib/components/ThresholdAreaChart.svelte +34 -21
- package/src/lib/components/TimePicker.svelte +25 -17
- package/src/lib/components/TimeRange.svelte +19 -14
- package/src/lib/components/Timeline.svelte +8 -4
- package/src/lib/components/Toast.svelte +2 -2
- package/src/lib/components/Toggle.svelte +13 -7
- package/src/lib/components/ToggleGroup.svelte +19 -11
- package/src/lib/components/Tooltip.svelte +16 -6
- package/src/lib/components/Topbar.svelte +24 -10
- package/src/lib/components/TransferList.svelte +34 -27
- package/src/lib/components/TreeItem.svelte +23 -10
- package/src/lib/components/TreeMap.svelte +13 -6
- package/src/lib/components/TreeView.svelte +24 -12
- package/src/lib/components/UptimeTimeline.svelte +22 -15
- package/src/lib/components/VennDiagram.svelte +25 -13
- package/src/lib/components/ViolinPlot.svelte +31 -19
- package/src/lib/components/VirtualList.svelte +25 -13
- package/src/lib/components/WaffleChart.svelte +32 -18
- package/src/lib/components/WaterfallChart.svelte +33 -26
- package/src/lib/components/WordCloud.svelte +21 -14
- package/src/lib/icons/AlarmIcon.svelte +4 -1
- package/src/lib/icons/BellIcon.svelte +2 -1
- package/src/lib/icons/CaretIcon.svelte +5 -3
- package/src/lib/icons/ClientsIcon.svelte +4 -1
- package/src/lib/icons/CloseIcon.svelte +2 -1
- package/src/lib/icons/DashboardIcon.svelte +4 -1
- package/src/lib/icons/DevicesIcon.svelte +4 -1
- package/src/lib/icons/DownloadIcon.svelte +2 -1
- package/src/lib/icons/HelpIcon.svelte +2 -1
- package/src/lib/icons/InfraIcon.svelte +4 -1
- package/src/lib/icons/IntegrationsIcon.svelte +4 -1
- package/src/lib/icons/LogsIcon.svelte +4 -1
- package/src/lib/icons/PlusIcon.svelte +2 -1
- package/src/lib/icons/PortsIcon.svelte +4 -1
- package/src/lib/icons/SearchIcon.svelte +6 -4
- package/src/lib/icons/SecurityIcon.svelte +4 -1
- package/src/lib/icons/SettingsIcon.svelte +4 -1
- package/src/lib/icons/TopologyIcon.svelte +4 -1
- package/src/lib/icons/UpdatesIcon.svelte +2 -1
- package/src/lib/icons/VpnIcon.svelte +4 -1
- package/src/lib/icons/WifiIcon.svelte +4 -1
- package/src/lib/icons/WirelessIcon.svelte +4 -1
|
@@ -1,28 +1,42 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script module lang="ts">
|
|
2
2
|
export interface WaffleSegment {
|
|
3
3
|
label: string;
|
|
4
4
|
value: number;
|
|
5
5
|
color?: string;
|
|
6
6
|
}
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
segments?: WaffleSegment[];
|
|
13
|
+
total?: number | undefined;
|
|
14
|
+
cols?: number;
|
|
15
|
+
rows?: number;
|
|
16
|
+
gap?: number;
|
|
17
|
+
ariaLabel?: string;
|
|
18
|
+
}
|
|
7
19
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
20
|
+
let {
|
|
21
|
+
segments = [],
|
|
22
|
+
total = undefined,
|
|
23
|
+
cols = 10,
|
|
24
|
+
rows = 10,
|
|
25
|
+
gap = 2,
|
|
26
|
+
ariaLabel = 'Waffle chart'
|
|
27
|
+
}: Props = $props();
|
|
14
28
|
|
|
15
29
|
const COLORS = ['#006FFF', '#00C7A8', '#F5A623', '#FF6B6B', '#A78BFA'];
|
|
16
30
|
const VW = 280;
|
|
17
31
|
const LEGEND_H = 24;
|
|
18
32
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
33
|
+
let sum = $derived(total ?? segments.reduce((s, seg) => s + seg.value, 0));
|
|
34
|
+
let cellSize = $derived((VW - gap * (cols - 1)) / cols);
|
|
35
|
+
let gridH = $derived(rows * cellSize + gap * (rows - 1));
|
|
36
|
+
let svgH = $derived(gridH + LEGEND_H + 6);
|
|
37
|
+
let totalCells = $derived(cols * rows);
|
|
24
38
|
|
|
25
|
-
|
|
39
|
+
let cellMap = $derived((() => {
|
|
26
40
|
const map: number[] = new Array(totalCells).fill(-1);
|
|
27
41
|
let cursor = 0;
|
|
28
42
|
segments.forEach((seg, si) => {
|
|
@@ -32,9 +46,9 @@
|
|
|
32
46
|
}
|
|
33
47
|
});
|
|
34
48
|
return map;
|
|
35
|
-
})();
|
|
49
|
+
})());
|
|
36
50
|
|
|
37
|
-
|
|
51
|
+
let cells = $derived(Array.from({ length: totalCells }, (_, i) => {
|
|
38
52
|
const col = i % cols;
|
|
39
53
|
const row = Math.floor(i / cols);
|
|
40
54
|
const x = col * (cellSize + gap);
|
|
@@ -42,15 +56,15 @@
|
|
|
42
56
|
const si = cellMap[i];
|
|
43
57
|
const fill = si >= 0 ? (segments[si].color ?? COLORS[si % COLORS.length]) : 'rgba(255,255,255,0.06)';
|
|
44
58
|
return { x, y, fill, width: cellSize, height: cellSize };
|
|
45
|
-
});
|
|
59
|
+
}));
|
|
46
60
|
|
|
47
|
-
|
|
61
|
+
let legendItems = $derived(segments.map((seg, si) => ({
|
|
48
62
|
color: seg.color ?? COLORS[si % COLORS.length],
|
|
49
63
|
pct: Math.round((seg.value / sum) * 100),
|
|
50
64
|
label: seg.label,
|
|
51
65
|
lx: si * (VW / segments.length),
|
|
52
66
|
ly: gridH + 8,
|
|
53
|
-
}));
|
|
67
|
+
})));
|
|
54
68
|
</script>
|
|
55
69
|
|
|
56
70
|
<div role="img" aria-label={ariaLabel} style="width:100%;">
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script module lang="ts">
|
|
2
2
|
export interface WaterfallBar {
|
|
3
3
|
label: string;
|
|
4
4
|
value: number;
|
|
5
5
|
type?: 'start' | 'delta' | 'total';
|
|
6
6
|
}
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
bars?: WaterfallBar[];
|
|
13
|
+
height?: number;
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
}
|
|
7
16
|
|
|
8
|
-
|
|
9
|
-
export let height: number = 160;
|
|
10
|
-
export let ariaLabel: string = 'Waterfall chart';
|
|
17
|
+
let { bars = [], height = 160, ariaLabel = 'Waterfall chart' }: Props = $props();
|
|
11
18
|
|
|
12
19
|
const VW = 320;
|
|
13
20
|
const PAD = { t: 12, r: 8, b: 24, l: 8 };
|
|
@@ -16,14 +23,14 @@
|
|
|
16
23
|
const COLOR_NEG = '#F04949';
|
|
17
24
|
const COLOR_TOTAL = '#A78BFA';
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
let chartH = $derived(height - PAD.t - PAD.b);
|
|
27
|
+
let chartW = $derived(VW - PAD.l - PAD.r);
|
|
28
|
+
let n = $derived(bars.length);
|
|
29
|
+
let colW = $derived(n > 0 ? chartW / n : chartW);
|
|
30
|
+
let gap = $derived(colW * 0.15);
|
|
31
|
+
let barW = $derived(colW - gap * 2);
|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
let cumBases = $derived((() => {
|
|
27
34
|
const result: number[] = [];
|
|
28
35
|
let acc = 0;
|
|
29
36
|
for (const b of bars) {
|
|
@@ -36,25 +43,25 @@
|
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
45
|
return result;
|
|
39
|
-
})();
|
|
46
|
+
})());
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
let tops = $derived(bars.map((b, i) => {
|
|
42
49
|
if (b.type === 'start' || b.type === 'total') return b.value;
|
|
43
50
|
return cumBases[i] + b.value;
|
|
44
|
-
});
|
|
51
|
+
}));
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
let allVals = $derived([0, ...cumBases, ...tops]);
|
|
54
|
+
let minV = $derived(allVals.length ? Math.min(...allVals) : 0);
|
|
55
|
+
let maxV = $derived(allVals.length ? Math.max(...allVals) : 1);
|
|
56
|
+
let range = $derived(maxV - minV || 1);
|
|
50
57
|
|
|
51
58
|
function toY(v: number): number {
|
|
52
59
|
return PAD.t + (1 - (v - minV) / range) * chartH;
|
|
53
60
|
}
|
|
54
61
|
|
|
55
|
-
|
|
62
|
+
let bot = $derived(PAD.t + chartH);
|
|
56
63
|
|
|
57
|
-
|
|
64
|
+
let rects = $derived(bars.map((b, i) => {
|
|
58
65
|
const base = cumBases[i];
|
|
59
66
|
const top = b.type === 'start' || b.type === 'total' ? b.value : base + b.value;
|
|
60
67
|
const y0 = toY(Math.max(base, top));
|
|
@@ -62,20 +69,20 @@
|
|
|
62
69
|
const x = PAD.l + i * colW + gap;
|
|
63
70
|
const color = b.type === 'start' ? COLOR_START : b.type === 'total' ? COLOR_TOTAL : b.value >= 0 ? COLOR_POS : COLOR_NEG;
|
|
64
71
|
return { x: x.toFixed(1), y: y0.toFixed(1), w: barW.toFixed(1), h: Math.max(y1 - y0, 1).toFixed(1), color };
|
|
65
|
-
});
|
|
72
|
+
}));
|
|
66
73
|
|
|
67
|
-
|
|
74
|
+
let connectors = $derived(rects.slice(0, -1).map((r, i) => {
|
|
68
75
|
const nextX = PAD.l + (i + 1) * colW + gap;
|
|
69
76
|
return { x1: parseFloat(r.x), x2: nextX + barW + gap, y: parseFloat(r.y) };
|
|
70
|
-
});
|
|
77
|
+
}));
|
|
71
78
|
|
|
72
|
-
|
|
79
|
+
let labels = $derived(bars.map((b, i) => ({
|
|
73
80
|
x: (PAD.l + (i + 0.5) * colW).toFixed(1),
|
|
74
81
|
y: (bot + 10).toFixed(1),
|
|
75
82
|
label: b.label,
|
|
76
|
-
}));
|
|
83
|
+
})));
|
|
77
84
|
|
|
78
|
-
|
|
85
|
+
let gridLines = $derived([0.25, 0.5, 0.75, 1].map((f) => (PAD.t + (1 - f) * chartH).toFixed(1)));
|
|
79
86
|
</script>
|
|
80
87
|
|
|
81
88
|
<div role="img" aria-label={ariaLabel} style="width:100%;">
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script module lang="ts">
|
|
2
2
|
export interface WordCloudItem {
|
|
3
3
|
word: string;
|
|
4
4
|
weight: number;
|
|
5
5
|
color?: string;
|
|
6
6
|
}
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
items?: WordCloudItem[];
|
|
13
|
+
height?: number;
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
}
|
|
7
16
|
|
|
8
|
-
|
|
9
|
-
export let height: number = 160;
|
|
10
|
-
export let ariaLabel: string = 'Word cloud';
|
|
17
|
+
let { items = [], height = 160, ariaLabel = 'Word cloud' }: Props = $props();
|
|
11
18
|
|
|
12
19
|
const VW = 380;
|
|
13
20
|
const PAD = 14;
|
|
@@ -16,12 +23,12 @@
|
|
|
16
23
|
const GAP = 6;
|
|
17
24
|
const COLORS = ['#006FFF', '#00C8C8', '#F5A623', '#7FB6FF', '#A878F5', '#F56342', '#00C875', '#FF7BB1'];
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
let sorted = $derived([...items].sort((a, b) => b.weight - a.weight));
|
|
27
|
+
let maxW = $derived(sorted[0]?.weight ?? 1);
|
|
28
|
+
let minW = $derived(sorted[sorted.length - 1]?.weight ?? 0);
|
|
29
|
+
let range = $derived(maxW - minW || 1);
|
|
23
30
|
|
|
24
|
-
|
|
31
|
+
let words = $derived(sorted.map((item, i) => {
|
|
25
32
|
const t = (item.weight - minW) / range;
|
|
26
33
|
const fontSize = MIN_FONT + t * (MAX_FONT - MIN_FONT);
|
|
27
34
|
const approxW = item.word.length * fontSize * 0.56 + GAP * 2;
|
|
@@ -33,9 +40,9 @@
|
|
|
33
40
|
color: item.color ?? COLORS[i % COLORS.length],
|
|
34
41
|
bold: fontSize >= 16,
|
|
35
42
|
};
|
|
36
|
-
});
|
|
43
|
+
}));
|
|
37
44
|
|
|
38
|
-
|
|
45
|
+
let placed = $derived((() => {
|
|
39
46
|
const usableW = VW - PAD * 2;
|
|
40
47
|
const rows: (typeof words)[] = [];
|
|
41
48
|
let row: typeof words = [];
|
|
@@ -67,9 +74,9 @@
|
|
|
67
74
|
return { ...w, cx, cy: baseY + w.fontSize };
|
|
68
75
|
});
|
|
69
76
|
});
|
|
70
|
-
})();
|
|
77
|
+
})());
|
|
71
78
|
|
|
72
|
-
|
|
79
|
+
let svgH = $derived((() => {
|
|
73
80
|
const ROW_H = 32;
|
|
74
81
|
const usableW = VW - PAD * 2;
|
|
75
82
|
let rows = 1; let rowW = 0;
|
|
@@ -78,7 +85,7 @@
|
|
|
78
85
|
else rowW += w.approxW;
|
|
79
86
|
}
|
|
80
87
|
return Math.max(height, rows * ROW_H + PAD * 2);
|
|
81
|
-
})();
|
|
88
|
+
})());
|
|
82
89
|
</script>
|
|
83
90
|
|
|
84
91
|
<div role="img" aria-label={ariaLabel} style="width:100%;">
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<path d="m8 2 6 11H2L8 2Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" />
|
|
4
7
|
<path d="M8 7v3M8 11.5h.01" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
3
4
|
</script>
|
|
4
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
5
6
|
<path d="M4 6.5a4 4 0 0 1 8 0V9l1.2 2H2.8L4 9V6.5ZM6.5 12.5a1.5 1.5 0 0 0 3 0" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
interface Props {
|
|
3
|
+
class?: string;
|
|
4
|
+
size?: number;
|
|
5
|
+
}
|
|
6
|
+
let { class: className = '', size = 14 }: Props = $props();
|
|
5
7
|
</script>
|
|
6
8
|
<svg width={size} height={size} viewBox="0 0 20 20" fill="none" aria-hidden="true" focusable="false" class={className}>
|
|
7
9
|
<path d="M5.5 8 10 12.5 14.5 8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<circle cx="8" cy="6" r="2.5" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<path d="M3 13c0-2.5 2.2-4.5 5-4.5s5 2 5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 14 }: Props = $props();
|
|
3
4
|
</script>
|
|
4
5
|
<svg width={size} height={size} viewBox="0 0 14 14" fill="none" aria-hidden="true" focusable="false">
|
|
5
6
|
<path d="M3 3l8 8M11 3l-8 8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<rect x="2" y="2" width="5" height="5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<rect x="9" y="2" width="5" height="5" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<rect x="2.5" y="3.5" width="11" height="9" rx="1.5" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<line x1="2.5" y1="6.5" x2="13.5" y2="6.5" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 14 }: Props = $props();
|
|
3
4
|
</script>
|
|
4
5
|
<svg width={size} height={size} viewBox="0 0 14 14" fill="none" aria-hidden="true" focusable="false">
|
|
5
6
|
<path d="M7 1.5v7m0 0L4.5 6m2.5 2.5L9.5 6M2 11h10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
3
4
|
</script>
|
|
4
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
5
6
|
<circle cx="8" cy="8" r="6" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<rect x="2" y="2" width="4" height="4" rx="0.5" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<rect x="10" y="2" width="4" height="4" rx="0.5" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<circle cx="5" cy="8" r="2.5" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<circle cx="11" cy="8" r="2.5" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<rect x="3" y="2.5" width="10" height="11" rx="1.5" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<line x1="5.5" y1="6" x2="10.5" y2="6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 12 }: Props = $props();
|
|
3
4
|
</script>
|
|
4
5
|
<svg width={size} height={size} viewBox="0 0 12 12" fill="none" aria-hidden="true" focusable="false">
|
|
5
6
|
<path d="M6 1.5v9M1.5 6h9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<rect x="2" y="5" width="12" height="6" rx="1" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<line x1="5" y1="11" x2="5" y2="13" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
interface Props {
|
|
3
|
+
class?: string;
|
|
4
|
+
size?: number;
|
|
5
|
+
style?: string;
|
|
6
|
+
}
|
|
7
|
+
let { class: className = '', size = 16, style = '' }: Props = $props();
|
|
6
8
|
</script>
|
|
7
9
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false" class={className} {style}>
|
|
8
10
|
<circle cx="7" cy="7" r="4.5" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<path d="m8 1.5 5 2v4.5c0 3-2 5.5-5 6.5-3-1-5-3.5-5-6.5V3.5l5-2Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" />
|
|
4
7
|
</svg>
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<circle cx="8" cy="8" r="2.2" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<path d="M8 1.5v1.6M8 12.9v1.6M14.5 8h-1.6M3.1 8H1.5m11-4.6-1.1 1.1M4.6 11.4l-1.1 1.1m0-9 1.1 1.1m6.7 6.7 1.1 1.1" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<circle cx="8" cy="3.5" r="1.6" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<circle cx="3.5" cy="12.5" r="1.6" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
3
4
|
</script>
|
|
4
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
5
6
|
<path d="M8 2v6m0 0L5 5.5M8 8l3-2.5M3 12h10M3 14h10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<rect x="3" y="6" width="10" height="8" rx="1.5" stroke="currentColor" stroke-width="1.5" />
|
|
4
7
|
<path d="M5.5 6V4.5a2.5 2.5 0 0 1 5 0V6" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<path d="M2 6c3-3 9-3 12 0M4 9c2.5-2.5 5.5-2.5 8 0" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
4
7
|
<circle cx="8" cy="12" r="1" fill="currentColor" />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props { size?: number }
|
|
3
|
+
let { size = 16 }: Props = $props();
|
|
4
|
+
</script>
|
|
2
5
|
<svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false">
|
|
3
6
|
<path d="M2 11s1.5-1 6-1 6 1 6 1M2 8s1.5-1.5 6-1.5 6 1.5 6 1.5M2 5s1.5-2 6-2 6 2 6 2" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
|
4
7
|
</svg>
|