@plures/runebook 0.4.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/ANALYSIS_LADDER.md +231 -0
- package/CHANGELOG.md +124 -0
- package/INTEGRATIONS.md +242 -0
- package/LICENSE +21 -0
- package/MEMORY.md +253 -0
- package/NIXOS.md +357 -0
- package/QUICKSTART.md +157 -0
- package/README.md +295 -0
- package/RELEASE.md +190 -0
- package/ValidationChecklist.md +598 -0
- package/docs/demo.md +338 -0
- package/docs/llm-integration.md +300 -0
- package/docs/parallel-execution-plan.md +160 -0
- package/flake.nix +228 -0
- package/integrations/README.md +242 -0
- package/integrations/demo-steps.sh +64 -0
- package/integrations/nvim-runebook.lua +140 -0
- package/integrations/tmux-status.sh +51 -0
- package/integrations/vim-runebook.vim +77 -0
- package/integrations/wezterm-status-simple.lua +48 -0
- package/integrations/wezterm-status.lua +76 -0
- package/nixos-module.nix +156 -0
- package/package.json +76 -0
- package/packages/design-dojo/index.js +4 -0
- package/packages/design-dojo/package.json +20 -0
- package/packages/design-dojo/tokens.css +69 -0
- package/playwright.config.ts +16 -0
- package/scripts/check-versions.cjs +62 -0
- package/scripts/demo.sh +220 -0
- package/shell.nix +31 -0
- package/src/app.html +13 -0
- package/src/cli/index.ts +1050 -0
- package/src/lib/agent/analysis-pipeline.ts +347 -0
- package/src/lib/agent/analysis-service.ts +171 -0
- package/src/lib/agent/analysis.ts +159 -0
- package/src/lib/agent/analyzers/heuristic.ts +289 -0
- package/src/lib/agent/analyzers/index.ts +7 -0
- package/src/lib/agent/analyzers/llm.ts +204 -0
- package/src/lib/agent/analyzers/local-search.ts +215 -0
- package/src/lib/agent/capture.ts +123 -0
- package/src/lib/agent/index.ts +244 -0
- package/src/lib/agent/integration.ts +81 -0
- package/src/lib/agent/llm/providers/base.ts +99 -0
- package/src/lib/agent/llm/providers/index.ts +60 -0
- package/src/lib/agent/llm/providers/mock.ts +67 -0
- package/src/lib/agent/llm/providers/ollama.ts +151 -0
- package/src/lib/agent/llm/providers/openai.ts +153 -0
- package/src/lib/agent/llm/sanitizer.ts +170 -0
- package/src/lib/agent/llm/types.ts +118 -0
- package/src/lib/agent/memory.ts +363 -0
- package/src/lib/agent/node-status.ts +56 -0
- package/src/lib/agent/node-suggestions.ts +64 -0
- package/src/lib/agent/status.ts +80 -0
- package/src/lib/agent/suggestions.ts +169 -0
- package/src/lib/components/Canvas.svelte +124 -0
- package/src/lib/components/ConnectionLine.svelte +46 -0
- package/src/lib/components/DisplayNode.svelte +167 -0
- package/src/lib/components/InputNode.svelte +158 -0
- package/src/lib/components/TerminalNode.svelte +237 -0
- package/src/lib/components/Toolbar.svelte +359 -0
- package/src/lib/components/TransformNode.svelte +327 -0
- package/src/lib/core/index.ts +31 -0
- package/src/lib/core/observer.ts +278 -0
- package/src/lib/core/redaction.ts +158 -0
- package/src/lib/core/shell-adapters/base.ts +325 -0
- package/src/lib/core/shell-adapters/bash.ts +110 -0
- package/src/lib/core/shell-adapters/index.ts +62 -0
- package/src/lib/core/shell-adapters/zsh.ts +105 -0
- package/src/lib/core/storage.ts +360 -0
- package/src/lib/core/types.ts +176 -0
- package/src/lib/design-dojo/Box.svelte +47 -0
- package/src/lib/design-dojo/Button.svelte +75 -0
- package/src/lib/design-dojo/Input.svelte +65 -0
- package/src/lib/design-dojo/List.svelte +38 -0
- package/src/lib/design-dojo/Select.svelte +48 -0
- package/src/lib/design-dojo/SplitPane.svelte +43 -0
- package/src/lib/design-dojo/StatusBar.svelte +61 -0
- package/src/lib/design-dojo/Table.svelte +47 -0
- package/src/lib/design-dojo/Text.svelte +36 -0
- package/src/lib/design-dojo/Toggle.svelte +48 -0
- package/src/lib/design-dojo/index.ts +10 -0
- package/src/lib/stores/canvas-praxis.ts +268 -0
- package/src/lib/stores/canvas.ts +58 -0
- package/src/lib/types/agent.ts +78 -0
- package/src/lib/types/canvas.ts +71 -0
- package/src/lib/utils/storage.ts +326 -0
- package/src/lib/utils/yaml-loader.ts +52 -0
- package/src/routes/+layout.svelte +5 -0
- package/src/routes/+layout.ts +5 -0
- package/src/routes/+page.svelte +32 -0
- package/src-tauri/Cargo.lock +5735 -0
- package/src-tauri/Cargo.toml +38 -0
- package/src-tauri/build.rs +3 -0
- package/src-tauri/capabilities/default.json +10 -0
- package/src-tauri/icons/128x128.png +0 -0
- package/src-tauri/icons/128x128@2x.png +0 -0
- package/src-tauri/icons/32x32.png +0 -0
- package/src-tauri/icons/Square107x107Logo.png +0 -0
- package/src-tauri/icons/Square142x142Logo.png +0 -0
- package/src-tauri/icons/Square150x150Logo.png +0 -0
- package/src-tauri/icons/Square284x284Logo.png +0 -0
- package/src-tauri/icons/Square30x30Logo.png +0 -0
- package/src-tauri/icons/Square310x310Logo.png +0 -0
- package/src-tauri/icons/Square44x44Logo.png +0 -0
- package/src-tauri/icons/Square71x71Logo.png +0 -0
- package/src-tauri/icons/Square89x89Logo.png +0 -0
- package/src-tauri/icons/StoreLogo.png +0 -0
- package/src-tauri/icons/icon.icns +0 -0
- package/src-tauri/icons/icon.ico +0 -0
- package/src-tauri/icons/icon.png +0 -0
- package/src-tauri/src/agents/agent1.rs +66 -0
- package/src-tauri/src/agents/agent2.rs +80 -0
- package/src-tauri/src/agents/agent3.rs +73 -0
- package/src-tauri/src/agents/agent4.rs +66 -0
- package/src-tauri/src/agents/agent5.rs +68 -0
- package/src-tauri/src/agents/agent6.rs +75 -0
- package/src-tauri/src/agents/base.rs +52 -0
- package/src-tauri/src/agents/mod.rs +17 -0
- package/src-tauri/src/core/coordination.rs +117 -0
- package/src-tauri/src/core/mod.rs +12 -0
- package/src-tauri/src/core/ownership.rs +61 -0
- package/src-tauri/src/core/types.rs +132 -0
- package/src-tauri/src/execution/mod.rs +5 -0
- package/src-tauri/src/execution/runner.rs +143 -0
- package/src-tauri/src/lib.rs +161 -0
- package/src-tauri/src/main.rs +6 -0
- package/src-tauri/src/memory/api.rs +422 -0
- package/src-tauri/src/memory/client.rs +156 -0
- package/src-tauri/src/memory/encryption.rs +79 -0
- package/src-tauri/src/memory/migration.rs +110 -0
- package/src-tauri/src/memory/mod.rs +28 -0
- package/src-tauri/src/memory/schema.rs +275 -0
- package/src-tauri/src/memory/tests.rs +192 -0
- package/src-tauri/src/orchestrator/coordinator.rs +232 -0
- package/src-tauri/src/orchestrator/mod.rs +13 -0
- package/src-tauri/src/orchestrator/planner.rs +304 -0
- package/src-tauri/tauri.conf.json +35 -0
- package/static/examples/date-time-example.yaml +147 -0
- package/static/examples/hello-world.yaml +74 -0
- package/static/examples/transform-example.yaml +157 -0
- package/static/favicon.png +0 -0
- package/static/svelte.svg +1 -0
- package/static/tauri.svg +6 -0
- package/static/vite.svg +1 -0
- package/svelte.config.js +18 -0
- package/tsconfig.json +19 -0
- package/vite.config.js +45 -0
- package/vitest.config.ts +21 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
variant?: 'primary' | 'secondary' | 'danger';
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
onclick?: (e: MouseEvent) => void;
|
|
9
|
+
class?: string;
|
|
10
|
+
children?: Snippet;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
tui = false,
|
|
15
|
+
variant = 'secondary',
|
|
16
|
+
disabled = false,
|
|
17
|
+
onclick,
|
|
18
|
+
class: cls = '',
|
|
19
|
+
children
|
|
20
|
+
}: Props = $props();
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<button
|
|
24
|
+
class="dd-btn dd-btn--{variant} {cls}"
|
|
25
|
+
{disabled}
|
|
26
|
+
{onclick}
|
|
27
|
+
data-tui={tui}
|
|
28
|
+
>
|
|
29
|
+
{@render children?.()}
|
|
30
|
+
</button>
|
|
31
|
+
|
|
32
|
+
<style>
|
|
33
|
+
.dd-btn {
|
|
34
|
+
padding: var(--space-2) var(--space-3);
|
|
35
|
+
border: none;
|
|
36
|
+
border-radius: var(--radius-2);
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
font-size: var(--font-size-1);
|
|
39
|
+
font-weight: 500;
|
|
40
|
+
transition: background-color var(--transition-base);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.dd-btn--primary {
|
|
44
|
+
background: var(--brand);
|
|
45
|
+
color: var(--surface-1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.dd-btn--primary:hover:not(:disabled) {
|
|
49
|
+
filter: brightness(1.15);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.dd-btn--secondary {
|
|
53
|
+
background: var(--surface-3);
|
|
54
|
+
color: var(--text-1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.dd-btn--secondary:hover:not(:disabled) {
|
|
58
|
+
filter: brightness(1.2);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.dd-btn--danger {
|
|
62
|
+
background: var(--error);
|
|
63
|
+
color: var(--text-1);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.dd-btn--danger:hover:not(:disabled) {
|
|
67
|
+
filter: brightness(1.15);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.dd-btn:disabled {
|
|
71
|
+
background: var(--surface-2);
|
|
72
|
+
color: var(--text-3);
|
|
73
|
+
cursor: not-allowed;
|
|
74
|
+
}
|
|
75
|
+
</style>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
tui?: boolean;
|
|
4
|
+
type?: string;
|
|
5
|
+
value?: any;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
step?: number;
|
|
10
|
+
class?: string;
|
|
11
|
+
oninput?: (e: Event) => void;
|
|
12
|
+
onchange?: (e: Event) => void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
tui = false,
|
|
17
|
+
type = 'text',
|
|
18
|
+
value = $bindable(''),
|
|
19
|
+
placeholder = '',
|
|
20
|
+
min,
|
|
21
|
+
max,
|
|
22
|
+
step,
|
|
23
|
+
class: cls = '',
|
|
24
|
+
oninput,
|
|
25
|
+
onchange,
|
|
26
|
+
}: Props = $props();
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<input
|
|
30
|
+
class="dd-input {cls}"
|
|
31
|
+
{type}
|
|
32
|
+
bind:value
|
|
33
|
+
{placeholder}
|
|
34
|
+
{min}
|
|
35
|
+
{max}
|
|
36
|
+
{step}
|
|
37
|
+
{oninput}
|
|
38
|
+
{onchange}
|
|
39
|
+
data-tui={tui}
|
|
40
|
+
/>
|
|
41
|
+
|
|
42
|
+
<style>
|
|
43
|
+
.dd-input {
|
|
44
|
+
width: 100%;
|
|
45
|
+
padding: var(--space-2);
|
|
46
|
+
background: var(--surface-1);
|
|
47
|
+
border: 1px solid var(--border-color);
|
|
48
|
+
border-radius: var(--radius-2);
|
|
49
|
+
color: var(--text-1);
|
|
50
|
+
font-size: var(--font-size-2);
|
|
51
|
+
box-sizing: border-box;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.dd-input:focus {
|
|
55
|
+
outline: none;
|
|
56
|
+
border-color: var(--brand);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.dd-input[type='range'] {
|
|
60
|
+
padding: 0;
|
|
61
|
+
border: none;
|
|
62
|
+
background: transparent;
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
}
|
|
65
|
+
</style>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
class?: string;
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
tui = false,
|
|
12
|
+
class: cls = '',
|
|
13
|
+
children
|
|
14
|
+
}: Props = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<ul class="dd-list {cls}" data-tui={tui}>
|
|
18
|
+
{@render children?.()}
|
|
19
|
+
</ul>
|
|
20
|
+
|
|
21
|
+
<style>
|
|
22
|
+
.dd-list {
|
|
23
|
+
list-style: none;
|
|
24
|
+
margin: 0;
|
|
25
|
+
padding: 0;
|
|
26
|
+
color: var(--text-1);
|
|
27
|
+
font-size: var(--font-size-1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:global(.dd-list li) {
|
|
31
|
+
padding: var(--space-1) 0;
|
|
32
|
+
border-bottom: 1px solid var(--border-color);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:global(.dd-list li:last-child) {
|
|
36
|
+
border-bottom: none;
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
value?: string;
|
|
7
|
+
id?: string;
|
|
8
|
+
class?: string;
|
|
9
|
+
onchange?: (e: Event) => void;
|
|
10
|
+
children?: Snippet;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
tui = false,
|
|
15
|
+
value = '',
|
|
16
|
+
id,
|
|
17
|
+
class: cls = '',
|
|
18
|
+
onchange,
|
|
19
|
+
children
|
|
20
|
+
}: Props = $props();
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<select
|
|
24
|
+
class="dd-select {cls}"
|
|
25
|
+
{value}
|
|
26
|
+
{id}
|
|
27
|
+
{onchange}
|
|
28
|
+
data-tui={tui}
|
|
29
|
+
>
|
|
30
|
+
{@render children?.()}
|
|
31
|
+
</select>
|
|
32
|
+
|
|
33
|
+
<style>
|
|
34
|
+
.dd-select {
|
|
35
|
+
width: 100%;
|
|
36
|
+
padding: var(--space-2);
|
|
37
|
+
background: var(--surface-1);
|
|
38
|
+
border: 1px solid var(--border-color);
|
|
39
|
+
border-radius: var(--radius-2);
|
|
40
|
+
color: var(--text-1);
|
|
41
|
+
font-size: var(--font-size-1);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.dd-select:focus {
|
|
45
|
+
outline: none;
|
|
46
|
+
border-color: var(--brand);
|
|
47
|
+
}
|
|
48
|
+
</style>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
left?: Snippet;
|
|
7
|
+
right?: Snippet;
|
|
8
|
+
children?: Snippet;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let {
|
|
12
|
+
tui = false,
|
|
13
|
+
left,
|
|
14
|
+
right,
|
|
15
|
+
children
|
|
16
|
+
}: Props = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<div class="dd-split-pane" data-tui={tui}>
|
|
20
|
+
{#if left || right}
|
|
21
|
+
<div class="dd-split-pane__left">{@render left?.()}</div>
|
|
22
|
+
<div class="dd-split-pane__right">{@render right?.()}</div>
|
|
23
|
+
{:else}
|
|
24
|
+
{@render children?.()}
|
|
25
|
+
{/if}
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<style>
|
|
29
|
+
.dd-split-pane {
|
|
30
|
+
display: flex;
|
|
31
|
+
width: 100%;
|
|
32
|
+
height: 100%;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.dd-split-pane__left {
|
|
36
|
+
flex-shrink: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.dd-split-pane__right {
|
|
40
|
+
flex: 1;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
}
|
|
43
|
+
</style>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
7
|
+
width?: string;
|
|
8
|
+
class?: string;
|
|
9
|
+
children?: Snippet;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
tui = false,
|
|
14
|
+
position = 'left',
|
|
15
|
+
width = '200px',
|
|
16
|
+
class: cls = '',
|
|
17
|
+
children
|
|
18
|
+
}: Props = $props();
|
|
19
|
+
|
|
20
|
+
const isVertical = $derived(position === 'left' || position === 'right');
|
|
21
|
+
const sizeStyle = $derived(isVertical ? `width: ${width}` : `height: ${width}`);
|
|
22
|
+
const positionStyle = $derived(
|
|
23
|
+
position === 'left' ? 'left: 0; top: 0; bottom: 0;' :
|
|
24
|
+
position === 'right' ? 'right: 0; top: 0; bottom: 0;' :
|
|
25
|
+
position === 'top' ? 'top: 0; left: 0; right: 0;' :
|
|
26
|
+
'bottom: 0; left: 0; right: 0;'
|
|
27
|
+
);
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<aside
|
|
31
|
+
class="dd-status-bar {cls}"
|
|
32
|
+
style="{sizeStyle}; {positionStyle}"
|
|
33
|
+
data-position={position}
|
|
34
|
+
data-tui={tui}
|
|
35
|
+
>
|
|
36
|
+
{@render children?.()}
|
|
37
|
+
</aside>
|
|
38
|
+
|
|
39
|
+
<style>
|
|
40
|
+
.dd-status-bar {
|
|
41
|
+
position: fixed;
|
|
42
|
+
background: var(--surface-2);
|
|
43
|
+
border-right: 1px solid var(--border-color);
|
|
44
|
+
overflow-y: auto;
|
|
45
|
+
z-index: 1000;
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.dd-status-bar[data-position='top'],
|
|
51
|
+
.dd-status-bar[data-position='bottom'] {
|
|
52
|
+
border-right: none;
|
|
53
|
+
border-bottom: 1px solid var(--border-color);
|
|
54
|
+
flex-direction: row;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.dd-status-bar[data-position='right'] {
|
|
58
|
+
border-right: none;
|
|
59
|
+
border-left: 1px solid var(--border-color);
|
|
60
|
+
}
|
|
61
|
+
</style>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
class?: string;
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
tui = false,
|
|
12
|
+
class: cls = '',
|
|
13
|
+
children
|
|
14
|
+
}: Props = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<table class="dd-table {cls}" data-tui={tui}>
|
|
18
|
+
{@render children?.()}
|
|
19
|
+
</table>
|
|
20
|
+
|
|
21
|
+
<style>
|
|
22
|
+
.dd-table {
|
|
23
|
+
width: 100%;
|
|
24
|
+
border-collapse: collapse;
|
|
25
|
+
background: var(--surface-1);
|
|
26
|
+
border-radius: var(--radius-2);
|
|
27
|
+
font-size: var(--font-size-1);
|
|
28
|
+
color: var(--text-1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:global(.dd-table th) {
|
|
32
|
+
background: var(--surface-2);
|
|
33
|
+
font-weight: 600;
|
|
34
|
+
padding: var(--space-2);
|
|
35
|
+
text-align: left;
|
|
36
|
+
border-bottom: 1px solid var(--border-color);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:global(.dd-table td) {
|
|
40
|
+
padding: var(--space-2);
|
|
41
|
+
border-bottom: 1px solid var(--border-color);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:global(.dd-table tr:last-child td) {
|
|
45
|
+
border-bottom: none;
|
|
46
|
+
}
|
|
47
|
+
</style>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
tui?: boolean;
|
|
6
|
+
mono?: boolean;
|
|
7
|
+
variant?: 1 | 2 | 3;
|
|
8
|
+
class?: string;
|
|
9
|
+
children?: Snippet;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
tui = false,
|
|
14
|
+
mono = false,
|
|
15
|
+
variant = 1,
|
|
16
|
+
class: cls = '',
|
|
17
|
+
children
|
|
18
|
+
}: Props = $props();
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<span
|
|
22
|
+
class="dd-text dd-text--{variant} {mono ? 'dd-text--mono' : ''} {cls}"
|
|
23
|
+
data-tui={tui}
|
|
24
|
+
>
|
|
25
|
+
{@render children?.()}
|
|
26
|
+
</span>
|
|
27
|
+
|
|
28
|
+
<style>
|
|
29
|
+
.dd-text--1 { color: var(--text-1); }
|
|
30
|
+
.dd-text--2 { color: var(--text-2); }
|
|
31
|
+
.dd-text--3 { color: var(--text-3); }
|
|
32
|
+
|
|
33
|
+
.dd-text--mono {
|
|
34
|
+
font-family: var(--font-mono);
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
tui?: boolean;
|
|
4
|
+
checked?: boolean;
|
|
5
|
+
label?: string;
|
|
6
|
+
class?: string;
|
|
7
|
+
onchange?: (e: Event) => void;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
tui = false,
|
|
12
|
+
checked = $bindable(false),
|
|
13
|
+
label = '',
|
|
14
|
+
class: cls = '',
|
|
15
|
+
onchange,
|
|
16
|
+
}: Props = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<label class="dd-toggle {cls}" data-tui={tui}>
|
|
20
|
+
<input
|
|
21
|
+
type="checkbox"
|
|
22
|
+
bind:checked
|
|
23
|
+
{onchange}
|
|
24
|
+
class="dd-toggle__input"
|
|
25
|
+
/>
|
|
26
|
+
{#if label}<span class="dd-toggle__label">{label}</span>{/if}
|
|
27
|
+
</label>
|
|
28
|
+
|
|
29
|
+
<style>
|
|
30
|
+
.dd-toggle {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: var(--space-2);
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
color: var(--text-1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.dd-toggle__input {
|
|
39
|
+
width: 18px;
|
|
40
|
+
height: 18px;
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
accent-color: var(--brand);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.dd-toggle__label {
|
|
46
|
+
font-size: var(--font-size-2);
|
|
47
|
+
}
|
|
48
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as Box } from './Box.svelte';
|
|
2
|
+
export { default as Button } from './Button.svelte';
|
|
3
|
+
export { default as Input } from './Input.svelte';
|
|
4
|
+
export { default as Text } from './Text.svelte';
|
|
5
|
+
export { default as Table } from './Table.svelte';
|
|
6
|
+
export { default as Select } from './Select.svelte';
|
|
7
|
+
export { default as Toggle } from './Toggle.svelte';
|
|
8
|
+
export { default as SplitPane } from './SplitPane.svelte';
|
|
9
|
+
export { default as StatusBar } from './StatusBar.svelte';
|
|
10
|
+
export { default as List } from './List.svelte';
|