@runwisp/ui 1.4.0 → 1.5.1
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 -5
- package/src/lib/actions/floating.ts +73 -0
- package/src/lib/actions/focusTrap.ts +3 -3
- package/src/lib/actions/portal.ts +5 -1
- package/src/lib/components/Accordion.svelte +6 -2
- package/src/lib/components/AccordionItem.svelte +80 -23
- package/src/lib/components/Avatar.svelte +0 -1
- package/src/lib/components/Badge.svelte +1 -1
- package/src/lib/components/CodeBlock.svelte +84 -35
- package/src/lib/components/CronInput.svelte +5 -2
- package/src/lib/components/DataGrid.svelte +100 -138
- package/src/lib/components/Drawer.svelte +2 -6
- package/src/lib/components/Dropdown.svelte +19 -57
- package/src/lib/components/EmptyState.svelte +2 -1
- package/src/lib/components/ErrorState.svelte +2 -1
- package/src/lib/components/FilterBar.svelte +1 -1
- package/src/lib/components/FilterPill.svelte +2 -2
- package/src/lib/components/FormField.svelte +1 -1
- package/src/lib/components/Heading.svelte +19 -12
- package/src/lib/components/Kbd.svelte +25 -10
- package/src/lib/components/Link.svelte +7 -1
- package/src/lib/components/LogConsole.svelte +40 -42
- package/src/lib/components/Modal.svelte +44 -33
- package/src/lib/components/NotificationBell.svelte +2 -1
- package/src/lib/components/PageContainer.svelte +1 -10
- package/src/lib/components/PageHeader.svelte +8 -4
- package/src/lib/components/Popover.svelte +9 -51
- package/src/lib/components/Progress.svelte +19 -6
- package/src/lib/components/Radio.svelte +16 -4
- package/src/lib/components/RadioGroup.svelte +15 -2
- package/src/lib/components/SearchInput.svelte +1 -1
- package/src/lib/components/Select.svelte +16 -47
- package/src/lib/components/Sparkline.svelte +2 -2
- package/src/lib/components/StatusDot.svelte +1 -1
- package/src/lib/components/Table.svelte +13 -4
- package/src/lib/components/TableBody.svelte +2 -1
- package/src/lib/components/TableCell.svelte +38 -8
- package/src/lib/components/TableHead.svelte +12 -4
- package/src/lib/components/TableRow.svelte +23 -3
- package/src/lib/components/TaskCard.svelte +1 -1
- package/src/lib/components/TimezoneSelect.svelte +2 -2
- package/src/lib/components/Tooltip.svelte +1 -1
- package/src/lib/components/accordion.svelte.ts +19 -0
- package/src/lib/components/dashboard/RunDetailPanel.svelte +106 -79
- package/src/lib/components/dashboard/RunFilterPopover.svelte +12 -21
- package/src/lib/components/dashboard/RunsList.svelte +17 -26
- package/src/lib/components/dashboard/cron-format.test.ts +1 -1
- package/src/lib/components/dashboard/cron-format.ts +3 -3
- package/src/lib/components/dashboard/run-filters.test.ts +4 -60
- package/src/lib/components/dashboard/run-filters.ts +29 -144
- package/src/lib/components/dashboard/run-helpers.test.ts +25 -6
- package/src/lib/components/dashboard/run-helpers.ts +40 -39
- package/src/lib/components/dashboard/status-config.ts +38 -83
- package/src/lib/components/dashboard/types.ts +0 -26
- package/src/lib/components/data-grid-selection.ts +2 -9
- package/src/lib/components/filter-spec.ts +3 -3
- package/src/lib/components/radio-group.ts +11 -0
- package/src/lib/index.ts +8 -43
- package/src/lib/log-console/LogCache.svelte.ts +1 -1
- package/src/lib/log-console/LogFetcher.svelte.ts +3 -14
- package/src/lib/log-console/ansi.ts +1 -1
- package/src/lib/log-console/highlight-scroll.test.ts +59 -0
- package/src/lib/log-console/highlight-scroll.ts +41 -0
- package/src/lib/theme-tokens.css +21 -21
- package/src/lib/theme.css +22 -16
- package/src/lib/utils/clipboard.svelte.test.ts +92 -0
- package/src/lib/utils/clipboard.svelte.ts +73 -0
- package/src/lib/utils/format.test.ts +3 -3
- package/src/lib/utils/format.ts +65 -94
- package/src/lib/utils/id.test.ts +3 -7
- package/src/lib/utils/id.ts +3 -2
- package/src/lib/utils/theme.svelte.test.ts +0 -6
- package/src/lib/utils/theme.svelte.ts +3 -5
- package/src/lib/utils/toast.svelte.ts +5 -14
- package/src/stories/Accordion.stories.svelte +61 -0
- package/src/stories/CodeBlock.stories.svelte +55 -0
- package/src/stories/DataGrid.stories.svelte +0 -5
- package/src/stories/Heading.stories.svelte +31 -0
- package/src/stories/Kbd.stories.svelte +36 -0
- package/src/stories/Link.stories.svelte +38 -0
- package/src/stories/LogConsole.stories.svelte +2 -2
- package/src/stories/PageHeader.stories.svelte +31 -0
- package/src/stories/Progress.stories.svelte +26 -0
- package/src/stories/RadioGroup.stories.svelte +43 -0
- package/src/stories/Table.stories.svelte +69 -0
- package/src/svelte-shims.d.ts +0 -5
- package/src/lib/components/dashboard/status-config.test.ts +0 -18
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: PoppyCake, s.r.o. -->
|
|
2
|
+
<!-- SPDX-License-Identifier: Apache-2.0 -->
|
|
3
|
+
|
|
4
|
+
<script module>
|
|
5
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
6
|
+
import Radio from "$lib/components/Radio.svelte";
|
|
7
|
+
import RadioGroup from "$lib/components/RadioGroup.svelte";
|
|
8
|
+
|
|
9
|
+
const { Story } = defineMeta({
|
|
10
|
+
title: "Forms/RadioGroup",
|
|
11
|
+
component: RadioGroup,
|
|
12
|
+
tags: ["autodocs"],
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<script lang="ts">
|
|
17
|
+
let policy = $state("queue");
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<Story name="Default" asChild>
|
|
21
|
+
<div class="space-y-3">
|
|
22
|
+
<RadioGroup name="concurrency" label="When a run is already active" bind:value={policy}>
|
|
23
|
+
<Radio value="queue" label="Queue" description="Start after the current run ends." />
|
|
24
|
+
<Radio value="skip" label="Skip" description="Drop the new firing." />
|
|
25
|
+
<Radio value="replace" label="Replace" description="Stop the current run first." />
|
|
26
|
+
</RadioGroup>
|
|
27
|
+
<p class="font-mono text-xs text-on-surface-muted">selected: {policy}</p>
|
|
28
|
+
</div>
|
|
29
|
+
</Story>
|
|
30
|
+
|
|
31
|
+
<Story name="Horizontal" asChild>
|
|
32
|
+
<RadioGroup
|
|
33
|
+
name="theme"
|
|
34
|
+
label="Theme"
|
|
35
|
+
value="auto"
|
|
36
|
+
orientation="horizontal"
|
|
37
|
+
hint="Follows your OS by default."
|
|
38
|
+
>
|
|
39
|
+
<Radio value="auto" label="Auto" />
|
|
40
|
+
<Radio value="light" label="Light" />
|
|
41
|
+
<Radio value="dark" label="Dark" />
|
|
42
|
+
</RadioGroup>
|
|
43
|
+
</Story>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: PoppyCake, s.r.o. -->
|
|
2
|
+
<!-- SPDX-License-Identifier: Apache-2.0 -->
|
|
3
|
+
|
|
4
|
+
<script module>
|
|
5
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
6
|
+
import Table from "$lib/components/Table.svelte";
|
|
7
|
+
import TableBody from "$lib/components/TableBody.svelte";
|
|
8
|
+
import TableCell from "$lib/components/TableCell.svelte";
|
|
9
|
+
import TableHead from "$lib/components/TableHead.svelte";
|
|
10
|
+
import TableRow from "$lib/components/TableRow.svelte";
|
|
11
|
+
|
|
12
|
+
const { Story } = defineMeta({
|
|
13
|
+
title: "Data/Table",
|
|
14
|
+
component: Table,
|
|
15
|
+
tags: ["autodocs"],
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const runs = [
|
|
19
|
+
{ id: "01J9Z3", task: "backup-db", status: "success", duration: "12s" },
|
|
20
|
+
{ id: "01J9Z4", task: "sync-files", status: "failed", duration: "3m 1s" },
|
|
21
|
+
{ id: "01J9Z5", task: "cleanup", status: "success", duration: "800ms" },
|
|
22
|
+
];
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<Story name="Default" asChild>
|
|
26
|
+
<Table class="max-w-xl">
|
|
27
|
+
<TableHead>
|
|
28
|
+
<TableCell header>Task</TableCell>
|
|
29
|
+
<TableCell header aria-sort="descending">Status</TableCell>
|
|
30
|
+
<TableCell header align="right">Duration</TableCell>
|
|
31
|
+
</TableHead>
|
|
32
|
+
<TableBody>
|
|
33
|
+
{#each runs as run (run.id)}
|
|
34
|
+
<TableRow border="faint" hoverable>
|
|
35
|
+
<TableCell class="font-mono">{run.task}</TableCell>
|
|
36
|
+
<TableCell class="text-on-surface-muted">{run.status}</TableCell>
|
|
37
|
+
<TableCell align="right" class="font-mono">{run.duration}</TableCell>
|
|
38
|
+
</TableRow>
|
|
39
|
+
{/each}
|
|
40
|
+
</TableBody>
|
|
41
|
+
</Table>
|
|
42
|
+
</Story>
|
|
43
|
+
|
|
44
|
+
<Story name="Compact, two-row header" asChild>
|
|
45
|
+
<Table class="max-w-xl">
|
|
46
|
+
<TableHead row={false}>
|
|
47
|
+
<TableRow border="faint">
|
|
48
|
+
<TableCell header density="compact" colspan={2}>Run</TableCell>
|
|
49
|
+
<TableCell header density="compact" align="right">Timing</TableCell>
|
|
50
|
+
</TableRow>
|
|
51
|
+
<TableRow>
|
|
52
|
+
<TableCell header density="compact">Id</TableCell>
|
|
53
|
+
<TableCell header density="compact">Task</TableCell>
|
|
54
|
+
<TableCell header density="compact" align="right">Duration</TableCell>
|
|
55
|
+
</TableRow>
|
|
56
|
+
</TableHead>
|
|
57
|
+
<TableBody>
|
|
58
|
+
{#each runs as run (run.id)}
|
|
59
|
+
<TableRow border="faint">
|
|
60
|
+
<TableCell density="compact" class="font-mono">{run.id}</TableCell>
|
|
61
|
+
<TableCell density="compact" class="font-mono">{run.task}</TableCell>
|
|
62
|
+
<TableCell density="compact" align="right" class="font-mono"
|
|
63
|
+
>{run.duration}</TableCell
|
|
64
|
+
>
|
|
65
|
+
</TableRow>
|
|
66
|
+
{/each}
|
|
67
|
+
</TableBody>
|
|
68
|
+
</Table>
|
|
69
|
+
</Story>
|
package/src/svelte-shims.d.ts
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// Copyright (c) PoppyCake, s.r.o. SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
|
|
3
|
-
import { describe, expect, it } from "vitest";
|
|
4
|
-
import { RUN_STATUSES } from "@runwisp/common";
|
|
5
|
-
import { RUN_STATUS_CONFIG } from "./status-config.js";
|
|
6
|
-
|
|
7
|
-
describe("RUN_STATUS_CONFIG", () => {
|
|
8
|
-
it("has a non-empty description for every run status", () => {
|
|
9
|
-
for (const status of RUN_STATUSES) {
|
|
10
|
-
const config = RUN_STATUS_CONFIG[status];
|
|
11
|
-
expect(config, `missing config for status "${status}"`).toBeDefined();
|
|
12
|
-
expect(
|
|
13
|
-
config.description.trim().length,
|
|
14
|
-
`empty description for status "${status}"`,
|
|
15
|
-
).toBeGreaterThan(0);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
});
|