@fuzdev/fuz_ui 0.208.0 → 0.210.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/dist/ApiModulesList.svelte +1 -1
- package/dist/ColorSchemeInput.svelte +11 -49
- package/dist/ColorSchemeInput.svelte.d.ts +2 -1
- package/dist/ColorSchemeInput.svelte.d.ts.map +1 -1
- package/dist/CopyToClipboard.svelte +1 -1
- package/dist/Dialog.svelte +6 -2
- package/dist/DialogContent.svelte +3 -3
- package/dist/DialogContent.svelte.d.ts +2 -2
- package/dist/DocsFooter.svelte +1 -1
- package/dist/EcosystemLinks.svelte +2 -2
- package/dist/HueInput.svelte +8 -16
- package/dist/LibraryDetail.svelte +4 -4
- package/dist/ModuleLink.svelte +1 -1
- package/dist/ProjectLinks.svelte +3 -32
- package/dist/ProjectLinks.svelte.d.ts.map +1 -1
- package/dist/RadioMenu.svelte +97 -0
- package/dist/RadioMenu.svelte.d.ts +41 -0
- package/dist/RadioMenu.svelte.d.ts.map +1 -0
- package/dist/Spiders.svelte +10 -10
- package/dist/ThemeInput.svelte +2 -2
- package/dist/ThemeInput.svelte.d.ts +1 -1
- package/dist/ThemeInput.svelte.d.ts.map +1 -1
- package/dist/ThemeRoot.svelte +2 -1
- package/dist/ThemeRoot.svelte.d.ts +1 -1
- package/dist/ThemeRoot.svelte.d.ts.map +1 -1
- package/dist/alert.js +2 -2
- package/dist/logos.d.ts +1 -1
- package/dist/logos.d.ts.map +1 -1
- package/dist/logos.js +14 -12
- package/dist/projects.d.ts +0 -3
- package/dist/projects.d.ts.map +1 -1
- package/dist/projects.js +4 -4
- package/dist/sparkline.d.ts +1 -1
- package/dist/sparkline.js +1 -1
- package/dist/theme_state.svelte.d.ts +2 -1
- package/dist/theme_state.svelte.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/lib/alert.ts +2 -2
- package/src/lib/logos.ts +14 -12
- package/src/lib/projects.ts +4 -7
- package/src/lib/sparkline.ts +1 -1
- package/src/lib/theme_state.svelte.ts +2 -1
- package/dist/ProjectActivityChart.svelte +0 -137
- package/dist/ProjectActivityChart.svelte.d.ts +0 -30
- package/dist/ProjectActivityChart.svelte.d.ts.map +0 -1
- package/dist/project_stats.d.ts +0 -121
- package/dist/project_stats.d.ts.map +0 -1
- package/dist/project_stats.js +0 -153
- package/dist/project_stats_data.d.ts +0 -3
- package/dist/project_stats_data.d.ts.map +0 -1
- package/dist/project_stats_data.js +0 -476
- package/dist/project_stats_update.task.d.ts +0 -4
- package/dist/project_stats_update.task.d.ts.map +0 -1
- package/dist/project_stats_update.task.js +0 -50
- package/dist/publish.task.d.ts +0 -3
- package/dist/publish.task.d.ts.map +0 -1
- package/dist/publish.task.js +0 -23
- package/src/lib/project_stats.ts +0 -220
- package/src/lib/project_stats_data.ts +0 -479
- package/src/lib/project_stats_update.task.ts +0 -53
- package/src/lib/publish.task.ts +0 -22
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<TomeSection>
|
|
26
26
|
<TomeSectionHeader text="Modules" />
|
|
27
27
|
{#if modules.length === 0}
|
|
28
|
-
<p class="
|
|
28
|
+
<p class="negative_60">No modules match your search.</p>
|
|
29
29
|
{:else}
|
|
30
30
|
<ul class="modules-list">
|
|
31
31
|
{#each modules as module (module.path)}
|
|
@@ -1,64 +1,26 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { swallow } from '@fuzdev/fuz_util/dom.ts';
|
|
3
2
|
import { color_schemes, type ColorScheme } from '@fuzdev/fuz_css/theme.ts';
|
|
3
|
+
import type { OmitStrict } from '@fuzdev/fuz_util/types.ts';
|
|
4
4
|
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
5
5
|
|
|
6
6
|
import { theme_state_context } from './theme_state.svelte.js';
|
|
7
|
+
import RadioMenu from './RadioMenu.svelte';
|
|
7
8
|
|
|
8
9
|
const get_theme_state = theme_state_context.get();
|
|
9
10
|
|
|
10
11
|
const {
|
|
11
12
|
value = get_theme_state(),
|
|
12
13
|
...rest
|
|
13
|
-
}: SvelteHTMLElements['menu'] & {
|
|
14
|
+
}: OmitStrict<SvelteHTMLElements['menu'], 'title' | 'children' | 'onselect'> & {
|
|
14
15
|
value?: { color_scheme: ColorScheme };
|
|
15
16
|
} = $props();
|
|
16
17
|
</script>
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
role="menuitemradio"
|
|
27
|
-
title={selected
|
|
28
|
-
? `${color_scheme} color scheme is selected`
|
|
29
|
-
: `select ${color_scheme} color scheme`}
|
|
30
|
-
aria-checked={selected}
|
|
31
|
-
onclick={(e) => {
|
|
32
|
-
swallow(e);
|
|
33
|
-
value.color_scheme = color_scheme;
|
|
34
|
-
}}
|
|
35
|
-
>
|
|
36
|
-
<div class="content">{color_scheme}</div>
|
|
37
|
-
</button>
|
|
38
|
-
{/each}
|
|
39
|
-
</menu>
|
|
40
|
-
|
|
41
|
-
<style>
|
|
42
|
-
.color-scheme-control {
|
|
43
|
-
display: flex;
|
|
44
|
-
flex-direction: row;
|
|
45
|
-
justify-content: center;
|
|
46
|
-
}
|
|
47
|
-
.content {
|
|
48
|
-
display: flex;
|
|
49
|
-
align-items: center;
|
|
50
|
-
justify-content: center;
|
|
51
|
-
padding: 0 var(--space_lg);
|
|
52
|
-
}
|
|
53
|
-
.color-scheme {
|
|
54
|
-
border-radius: 0;
|
|
55
|
-
}
|
|
56
|
-
.color-scheme:first-child {
|
|
57
|
-
border-top-left-radius: var(--border_radius, var(--border_radius_md));
|
|
58
|
-
border-bottom-left-radius: var(--border_radius, var(--border_radius_md));
|
|
59
|
-
}
|
|
60
|
-
.color-scheme:last-child {
|
|
61
|
-
border-top-right-radius: var(--border_radius, var(--border_radius_md));
|
|
62
|
-
border-bottom-right-radius: var(--border_radius, var(--border_radius_md));
|
|
63
|
-
}
|
|
64
|
-
</style>
|
|
19
|
+
<RadioMenu
|
|
20
|
+
{...rest}
|
|
21
|
+
options={color_schemes}
|
|
22
|
+
bind:value={value.color_scheme}
|
|
23
|
+
label={(color_scheme) => color_scheme}
|
|
24
|
+
title={(color_scheme, selected) =>
|
|
25
|
+
selected ? `${color_scheme} color scheme is selected` : `select ${color_scheme} color scheme`}
|
|
26
|
+
/>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ColorScheme } from '@fuzdev/fuz_css/theme.ts';
|
|
2
|
+
import type { OmitStrict } from '@fuzdev/fuz_util/types.ts';
|
|
2
3
|
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
3
|
-
type $$ComponentProps = SvelteHTMLElements['menu'] & {
|
|
4
|
+
type $$ComponentProps = OmitStrict<SvelteHTMLElements['menu'], 'title' | 'children' | 'onselect'> & {
|
|
4
5
|
value?: {
|
|
5
6
|
color_scheme: ColorScheme;
|
|
6
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSchemeInput.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ColorSchemeInput.svelte"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ColorSchemeInput.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ColorSchemeInput.svelte"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,KAAK,gBAAgB,GAAI,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACpG,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,WAAW,CAAA;KAAE,CAAC;CACtC,CAAC;AAsBH,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
class={[
|
|
70
70
|
'copy-to-clipboard',
|
|
71
71
|
rest.class,
|
|
72
|
-
{ icon_button: children ? false : icon_button, copied, failed,
|
|
72
|
+
{ icon_button: children ? false : icon_button, copied, failed, palette_c: failed }
|
|
73
73
|
]}
|
|
74
74
|
onclick={(e) => {
|
|
75
75
|
onclick?.(e); // before the internal handler, which is async
|
package/dist/Dialog.svelte
CHANGED
|
@@ -196,9 +196,13 @@
|
|
|
196
196
|
overflow: auto;
|
|
197
197
|
overscroll-behavior: contain;
|
|
198
198
|
}
|
|
199
|
-
/* the native backdrop is the dim background; fade it in on open
|
|
199
|
+
/* the native backdrop is the dim background; fade it in on open. It reads
|
|
200
|
+
fuz_css's `--backdrop_color` like a plain dialog's does, then its default
|
|
201
|
+
`--darken_60` for a variable set without it. Older browsers don't let
|
|
202
|
+
::backdrop inherit custom properties from the page, so the last fallback
|
|
203
|
+
is that value as a literal */
|
|
200
204
|
.dialog::backdrop {
|
|
201
|
-
background-color: var(--
|
|
205
|
+
background-color: var(--backdrop_color, var(--darken_60, #000000a6));
|
|
202
206
|
transition: background-color var(--duration_2) ease;
|
|
203
207
|
}
|
|
204
208
|
@starting-style {
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
max_width?: string;
|
|
69
69
|
/**
|
|
70
70
|
* The close button floating just outside the content surface's top-right
|
|
71
|
-
* corner. `true` (the default) renders an absolutely-positioned
|
|
72
|
-
* that closes the dialog; `false` removes it. It renders after
|
|
71
|
+
* corner. `true` (the default) renders an absolutely-positioned
|
|
72
|
+
* `.sized_sm.plain.icon_button` that closes the dialog; `false` removes it. It renders after
|
|
73
73
|
* `children`, so a content control (or an `autofocus` element) takes initial
|
|
74
74
|
* focus on open rather than the close button.
|
|
75
75
|
*
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
// into the consumer's snippet, which carries its own style scope
|
|
108
108
|
const close_button_attrs: DialogCloseButtonAttrs = {
|
|
109
109
|
type: 'button',
|
|
110
|
-
class: '
|
|
110
|
+
class: 'sized_sm plain icon_button',
|
|
111
111
|
style: 'position: absolute; top: 0; right: 0;',
|
|
112
112
|
onclick: dialog.close,
|
|
113
113
|
title: 'close',
|
|
@@ -33,8 +33,8 @@ type $$ComponentProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
|
|
|
33
33
|
max_width?: string;
|
|
34
34
|
/**
|
|
35
35
|
* The close button floating just outside the content surface's top-right
|
|
36
|
-
* corner. `true` (the default) renders an absolutely-positioned
|
|
37
|
-
* that closes the dialog; `false` removes it. It renders after
|
|
36
|
+
* corner. `true` (the default) renders an absolutely-positioned
|
|
37
|
+
* `.sized_sm.plain.icon_button` that closes the dialog; `false` removes it. It renders after
|
|
38
38
|
* `children`, so a content control (or an `autofocus` element) takes initial
|
|
39
39
|
* focus on open rather than the close button.
|
|
40
40
|
*
|
package/dist/DocsFooter.svelte
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
<ul {...rest}>
|
|
15
15
|
<li>
|
|
16
16
|
<!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
|
|
17
|
-
<a rel="me" href={FUZ_DEV_URL} class={{ selected: selected === 'fuz.dev' }}>fuz.dev</a>
|
|
18
|
-
|
|
17
|
+
<a rel="me" href={FUZ_DEV_URL} class={{ selected: selected === 'fuz.dev' }}>fuz.dev</a> - the
|
|
18
|
+
Fuz stack homepage{#if selected === 'fuz.dev'}, you are here{/if}
|
|
19
19
|
</li>
|
|
20
20
|
<li>
|
|
21
21
|
GitHub as <a rel="me" href="https://github.com/fuzdev">@fuzdev</a>
|
package/dist/HueInput.svelte
CHANGED
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
|
|
68
68
|
<style>
|
|
69
69
|
.hue-input {
|
|
70
|
-
--outline_color:
|
|
70
|
+
--outline_color: oklch(0.65 0.13 var(--hue));
|
|
71
71
|
/* TODO @many figure these variables out so they're easily customized (similar pattern in a lot of places) */
|
|
72
|
-
/* --thumb_background_color:
|
|
72
|
+
/* --thumb_background_color: oklch(0.6 0.13 var(--hue)); */
|
|
73
73
|
}
|
|
74
74
|
.preview {
|
|
75
|
-
background-color:
|
|
75
|
+
background-color: oklch(0.6 0.13 var(--hue));
|
|
76
76
|
/* mirror the `min-height: var(--input_height)` that fuz_css gives the sibling inputs,
|
|
77
77
|
so the preview tracks their height even when `--input_height` is customized */
|
|
78
78
|
min-height: var(--input_height);
|
|
@@ -88,22 +88,14 @@
|
|
|
88
88
|
}
|
|
89
89
|
.minimap-wrapper {
|
|
90
90
|
padding: 0 var(--input_padding_x);
|
|
91
|
-
background: hsl(0 50% 50%) 0%;
|
|
92
91
|
}
|
|
93
92
|
.minimap {
|
|
93
|
+
/* sweep the OKLCH hue circle at constant lightness/chroma so the strip
|
|
94
|
+
matches what the hue knobs actually produce */
|
|
94
95
|
background: linear-gradient(
|
|
95
|
-
90deg,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
hsl(72 50% 50%) 20%,
|
|
99
|
-
hsl(108 50% 50%) 30%,
|
|
100
|
-
hsl(144 50% 50%) 40%,
|
|
101
|
-
hsl(180 50% 50%) 50%,
|
|
102
|
-
hsl(216 50% 50%) 60%,
|
|
103
|
-
hsl(252 50% 50%) 70%,
|
|
104
|
-
hsl(288 50% 50%) 80%,
|
|
105
|
-
hsl(324 50% 50%) 90%,
|
|
106
|
-
hsl(360 50% 50%) 100%
|
|
96
|
+
90deg in oklch longer hue,
|
|
97
|
+
oklch(0.6 0.13 0) 0%,
|
|
98
|
+
oklch(0.6 0.13 360) 100%
|
|
107
99
|
);
|
|
108
100
|
height: var(--space_lg);
|
|
109
101
|
}
|
|
@@ -282,16 +282,16 @@ with file-type coloring. Uses svelte-docinfo's file type predicates for module c
|
|
|
282
282
|
}
|
|
283
283
|
/* TODO probably add variables/classes for these */
|
|
284
284
|
.ts {
|
|
285
|
-
--link_color: var(--
|
|
285
|
+
--link_color: var(--palette_a_50);
|
|
286
286
|
}
|
|
287
287
|
.svelte {
|
|
288
|
-
--link_color: var(--
|
|
288
|
+
--link_color: var(--palette_h_50);
|
|
289
289
|
}
|
|
290
290
|
.css {
|
|
291
|
-
--link_color: var(--
|
|
291
|
+
--link_color: var(--palette_b_50);
|
|
292
292
|
}
|
|
293
293
|
.json {
|
|
294
|
-
--link_color: var(--
|
|
294
|
+
--link_color: var(--palette_f_50);
|
|
295
295
|
}
|
|
296
296
|
/* TODO extract */
|
|
297
297
|
.declarations {
|
package/dist/ModuleLink.svelte
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
// the site-local path if `homepage_url` is unavailable.
|
|
35
35
|
const url_api = $derived((full && module?.url_api_full) || module?.url_api);
|
|
36
36
|
|
|
37
|
-
const color_class = $derived(module_path.endsWith('.svelte') ? '
|
|
37
|
+
const color_class = $derived(module_path.endsWith('.svelte') ? 'palette_h' : '');
|
|
38
38
|
|
|
39
39
|
const contextmenu_entries = $derived(module ? create_module_contextmenu(module) : undefined);
|
|
40
40
|
</script>
|
package/dist/ProjectLinks.svelte
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import Svg from './Svg.svelte';
|
|
3
|
-
import Sparkline from './Sparkline.svelte';
|
|
4
3
|
import { project_items, type ProjectItem } from './projects.js';
|
|
5
|
-
import { project_stats_data } from './project_stats_data.js';
|
|
6
|
-
import { project_stats_label, project_stats_to_monthly_series } from './project_stats.js';
|
|
7
|
-
|
|
8
|
-
const { series, max } = project_stats_to_monthly_series(project_stats_data);
|
|
9
|
-
const series_by_name = new Map(series.map((s) => [s.name, s.counts]));
|
|
10
|
-
const label_by_name = new Map(
|
|
11
|
-
project_stats_data.projects.map((p) => [p.name, project_stats_label(p)])
|
|
12
|
-
);
|
|
13
4
|
</script>
|
|
14
5
|
|
|
15
6
|
<h2 class="mt_0 mb_xl2">Packages</h2>
|
|
@@ -18,36 +9,19 @@
|
|
|
18
9
|
{@render package_thumbnail(project_item)}
|
|
19
10
|
{/each}
|
|
20
11
|
</menu>
|
|
21
|
-
<small class="display:block text-align:right">
|
|
22
|
-
the charts show public commit activity<br />since Gro started in August 2019 -<br />most of the
|
|
23
|
-
repos created in 2023-2024 are<br />history-resetting forks from 2020~2023 attempts
|
|
24
|
-
</small>
|
|
25
12
|
|
|
26
13
|
{#snippet package_thumbnail(project_item: ProjectItem)}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<a
|
|
30
|
-
class="thumbnail row align-items:start shade_00 px_md py_xs border_radius_sm mb_lg"
|
|
31
|
-
href={project_item.url}
|
|
32
|
-
>
|
|
14
|
+
<!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
|
|
15
|
+
<a class="thumbnail row shade_00 px_md py_xs border_radius_sm mb_lg" href={project_item.url}>
|
|
33
16
|
<Svg shrink={false} data={project_item.logo} size="var(--icon_size_lg)" />
|
|
34
17
|
<div class="pl_lg width_atmost_sm">
|
|
35
|
-
<div class="thumbnail-name
|
|
36
|
-
{project_item.name}
|
|
37
|
-
{#if counts}
|
|
38
|
-
{@const stats_label = label_by_name.get(project_item.name)}
|
|
39
|
-
<div class="thumbnail-sparkline pl_md {project_item.color_class}" title={stats_label}>
|
|
40
|
-
<Sparkline values={counts} {max} scale={1 / 3} end_dot label={stats_label} />
|
|
41
|
-
</div>
|
|
42
|
-
{/if}
|
|
43
|
-
</div>
|
|
18
|
+
<div class="thumbnail-name {project_item.color_class}">{project_item.name}</div>
|
|
44
19
|
<div class="thumbnail-description font_size_md text_70 font-weight:500">
|
|
45
20
|
{project_item.description}
|
|
46
21
|
{project_item.glyph}
|
|
47
22
|
</div>
|
|
48
23
|
</div>
|
|
49
24
|
</a>
|
|
50
|
-
<!-- eslint-enable svelte/no-navigation-without-resolve -->
|
|
51
25
|
{/snippet}
|
|
52
26
|
|
|
53
27
|
<style>
|
|
@@ -84,7 +58,4 @@
|
|
|
84
58
|
transparent
|
|
85
59
|
);
|
|
86
60
|
}
|
|
87
|
-
.thumbnail-sparkline {
|
|
88
|
-
margin-left: auto;
|
|
89
|
-
}
|
|
90
61
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectLinks.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ProjectLinks.svelte"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectLinks.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ProjectLinks.svelte"],"names":[],"mappings":"AAoCA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;;kBAA+E,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<script lang="ts" generics="T">
|
|
2
|
+
import { swallow } from '@fuzdev/fuz_util/dom.ts';
|
|
3
|
+
import type { OmitStrict } from '@fuzdev/fuz_util/types.ts';
|
|
4
|
+
import type { Snippet } from 'svelte';
|
|
5
|
+
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A horizontal menu of joined `menuitemradio` buttons with one selected -
|
|
9
|
+
* the shape `ColorSchemeInput` takes, and any other few-way pick where the
|
|
10
|
+
* options should sit one glance apart rather than behind a `select`.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
options,
|
|
17
|
+
value = $bindable(),
|
|
18
|
+
onselect,
|
|
19
|
+
label,
|
|
20
|
+
title,
|
|
21
|
+
key = (option: T): unknown => label(option),
|
|
22
|
+
children,
|
|
23
|
+
...rest
|
|
24
|
+
}: OmitStrict<SvelteHTMLElements['menu'], 'title' | 'children' | 'onselect'> & {
|
|
25
|
+
options: Array<T>;
|
|
26
|
+
/** The selected option, compared by identity; bindable. */
|
|
27
|
+
value: T;
|
|
28
|
+
/** Called after a click selects an option. */
|
|
29
|
+
onselect?: (option: T) => void;
|
|
30
|
+
/** The display text of an option - also the default `title` and `key` source. */
|
|
31
|
+
label: (option: T) => string;
|
|
32
|
+
/** The button title, defaulting to "select X" / "X is selected" from `label`. */
|
|
33
|
+
title?: (option: T, selected: boolean) => string;
|
|
34
|
+
/** Keys the options list; defaults to the label. */
|
|
35
|
+
key?: (option: T) => unknown;
|
|
36
|
+
/** Custom button content in place of the label text. */
|
|
37
|
+
children?: Snippet<[option: T, selected: boolean]>;
|
|
38
|
+
} = $props();
|
|
39
|
+
|
|
40
|
+
const title_of = (option: T, selected: boolean): string =>
|
|
41
|
+
title
|
|
42
|
+
? title(option, selected)
|
|
43
|
+
: selected
|
|
44
|
+
? `${label(option)} is selected`
|
|
45
|
+
: `select ${label(option)}`;
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<menu {...rest} class={['radio-menu unstyled', rest.class]}>
|
|
49
|
+
{#each options as option (key(option))}
|
|
50
|
+
{@const selected = option === value}
|
|
51
|
+
<button
|
|
52
|
+
type="button"
|
|
53
|
+
class={['radio-menu-item palette_a', { selected }]}
|
|
54
|
+
role="menuitemradio"
|
|
55
|
+
title={title_of(option, selected)}
|
|
56
|
+
aria-checked={selected}
|
|
57
|
+
onclick={(e) => {
|
|
58
|
+
swallow(e);
|
|
59
|
+
value = option;
|
|
60
|
+
onselect?.(option);
|
|
61
|
+
}}
|
|
62
|
+
>
|
|
63
|
+
<div class="content">
|
|
64
|
+
{#if children}
|
|
65
|
+
{@render children(option, selected)}
|
|
66
|
+
{:else}
|
|
67
|
+
{label(option)}
|
|
68
|
+
{/if}
|
|
69
|
+
</div>
|
|
70
|
+
</button>
|
|
71
|
+
{/each}
|
|
72
|
+
</menu>
|
|
73
|
+
|
|
74
|
+
<style>
|
|
75
|
+
.radio-menu {
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-direction: row;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
}
|
|
80
|
+
.content {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
padding: 0 var(--space_lg);
|
|
85
|
+
}
|
|
86
|
+
.radio-menu-item {
|
|
87
|
+
border-radius: 0;
|
|
88
|
+
}
|
|
89
|
+
.radio-menu-item:first-child {
|
|
90
|
+
border-top-left-radius: var(--border_radius, var(--border_radius_md));
|
|
91
|
+
border-bottom-left-radius: var(--border_radius, var(--border_radius_md));
|
|
92
|
+
}
|
|
93
|
+
.radio-menu-item:last-child {
|
|
94
|
+
border-top-right-radius: var(--border_radius, var(--border_radius_md));
|
|
95
|
+
border-bottom-right-radius: var(--border_radius, var(--border_radius_md));
|
|
96
|
+
}
|
|
97
|
+
</style>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { OmitStrict } from '@fuzdev/fuz_util/types.ts';
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
declare function $$render<T>(): {
|
|
4
|
+
props: OmitStrict<import("svelte/elements").HTMLMenuAttributes, "children" | "title" | "onselect"> & {
|
|
5
|
+
options: Array<T>;
|
|
6
|
+
/** The selected option, compared by identity; bindable. */
|
|
7
|
+
value: T;
|
|
8
|
+
/** Called after a click selects an option. */
|
|
9
|
+
onselect?: (option: T) => void;
|
|
10
|
+
/** The display text of an option - also the default `title` and `key` source. */
|
|
11
|
+
label: (option: T) => string;
|
|
12
|
+
/** The button title, defaulting to "select X" / "X is selected" from `label`. */
|
|
13
|
+
title?: (option: T, selected: boolean) => string;
|
|
14
|
+
/** Keys the options list; defaults to the label. */
|
|
15
|
+
key?: (option: T) => unknown;
|
|
16
|
+
/** Custom button content in place of the label text. */
|
|
17
|
+
children?: Snippet<[option: T, selected: boolean]>;
|
|
18
|
+
};
|
|
19
|
+
exports: {};
|
|
20
|
+
bindings: "value";
|
|
21
|
+
slots: {};
|
|
22
|
+
events: {};
|
|
23
|
+
};
|
|
24
|
+
declare class __sveltets_Render<T> {
|
|
25
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
26
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
27
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
28
|
+
bindings(): "value";
|
|
29
|
+
exports(): {};
|
|
30
|
+
}
|
|
31
|
+
interface $$IsomorphicComponent {
|
|
32
|
+
new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
33
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
34
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
35
|
+
<T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
36
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
37
|
+
}
|
|
38
|
+
declare const RadioMenu: $$IsomorphicComponent;
|
|
39
|
+
type RadioMenu<T> = InstanceType<typeof RadioMenu<T>>;
|
|
40
|
+
export default RadioMenu;
|
|
41
|
+
//# sourceMappingURL=RadioMenu.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioMenu.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/RadioMenu.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,iBAAS,QAAQ,CAAC,CAAC;;iBAMR,KAAK,CAAC,CAAC,CAAC;QACjB,2DAA2D;eACpD,CAAC;QACR,8CAA8C;mBACnC,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI;QAC9B,iFAAiF;eAC1E,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM;QAC5B,iFAAiF;gBACzE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM;QAChD,oDAAoD;cAC9C,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO;QAC5B,wDAAwD;mBAC7C,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;;;;;;EAoD0E;AAC9H,cAAM,iBAAiB,CAAC,CAAC;IACrB,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,QAAQ;IACR,OAAO;CACV;AAED,UAAU,qBAAqB;IAC3B,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5X,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3H,YAAY,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACjE;AACD,QAAA,MAAM,SAAS,EAAE,qBAAmC,CAAC;AACnC,KAAK,SAAS,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,eAAe,SAAS,CAAC"}
|
package/dist/Spiders.svelte
CHANGED
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
|
|
16
16
|
const {
|
|
17
17
|
spiders = [
|
|
18
|
-
'var(--
|
|
19
|
-
'var(--
|
|
20
|
-
'var(--
|
|
21
|
-
'var(--
|
|
22
|
-
'var(--
|
|
23
|
-
'var(--
|
|
24
|
-
'var(--
|
|
25
|
-
'var(--
|
|
26
|
-
'var(--
|
|
27
|
-
'var(--
|
|
18
|
+
'var(--palette_a_50)',
|
|
19
|
+
'var(--palette_b_50)',
|
|
20
|
+
'var(--palette_c_50)',
|
|
21
|
+
'var(--palette_d_50)',
|
|
22
|
+
'var(--palette_e_50)',
|
|
23
|
+
'var(--palette_f_50)',
|
|
24
|
+
'var(--palette_g_50)',
|
|
25
|
+
'var(--palette_h_50)',
|
|
26
|
+
'var(--palette_i_50)',
|
|
27
|
+
'var(--palette_j_50)'
|
|
28
28
|
],
|
|
29
29
|
seed = minute_of_day(),
|
|
30
30
|
random = create_random_alea(seed),
|
package/dist/ThemeInput.svelte
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { swallow } from '@fuzdev/fuz_util/dom.ts';
|
|
3
|
-
import type { Theme } from '@fuzdev/fuz_css/
|
|
3
|
+
import type { Theme } from '@fuzdev/fuz_css/variable.ts';
|
|
4
4
|
import { default_themes } from '@fuzdev/fuz_css/themes.ts';
|
|
5
5
|
import type { SvelteHTMLElements } from 'svelte/elements';
|
|
6
6
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<li class="row" role="none">
|
|
36
36
|
<button
|
|
37
37
|
type="button"
|
|
38
|
-
class={['theme-button
|
|
38
|
+
class={['theme-button palette_a', { selected }]}
|
|
39
39
|
role="menuitemradio"
|
|
40
40
|
aria-label="{theme.name} theme"
|
|
41
41
|
aria-checked={selected}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeInput.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ThemeInput.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ThemeInput.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ThemeInput.svelte"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,KAAK,gBAAgB,GAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG;IACrD,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IAClC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC,CAAC;AAqDH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
package/dist/ThemeRoot.svelte
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
<script lang="ts">
|
|
6
6
|
import { onMount, type Snippet } from 'svelte';
|
|
7
|
-
import { render_theme_style
|
|
7
|
+
import { render_theme_style } from '@fuzdev/fuz_css/theme.ts';
|
|
8
|
+
import type { Theme } from '@fuzdev/fuz_css/variable.ts';
|
|
8
9
|
import { DEFAULT_THEME } from '@fuzdev/fuz_css/themes.ts';
|
|
9
10
|
import { DEV } from 'esm-env';
|
|
10
11
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Snippet } from 'svelte';
|
|
2
|
-
import {
|
|
2
|
+
import type { Theme } from '@fuzdev/fuz_css/variable.ts';
|
|
3
3
|
import { load_color_scheme as default_load_color_scheme, save_color_scheme as default_save_color_scheme, sync_color_scheme as default_sync_color_scheme, save_theme as default_save_theme, load_theme as default_load_theme, ThemeState } from './theme_state.svelte.js';
|
|
4
4
|
type $$ComponentProps = {
|
|
5
5
|
sync_color_scheme?: typeof default_sync_color_scheme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeRoot.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ThemeRoot.svelte"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeRoot.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/ThemeRoot.svelte"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EACL,iBAAiB,IAAI,yBAAyB,EAC9C,iBAAiB,IAAI,yBAAyB,EAC9C,iBAAiB,IAAI,yBAAyB,EAC9C,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAEhC,UAAU,EACV,MAAM,yBAAyB,CAAC;AAGjC,KAAK,gBAAgB,GAAI;IACxB,iBAAiB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACrD,iBAAiB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACrD,iBAAiB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACrD,UAAU,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACvC,cAAc,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,QAAQ,EAAE,OAAO,CAChB;QAAC,WAAW,EAAE,UAAU;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI;QAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;KAAC,CAChF,CAAC;CACF,CAAC;AAqFH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
package/dist/alert.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// TODO move to module context?
|
|
2
2
|
export const alert_status_options = {
|
|
3
3
|
inform: { color: 'var(--text_70)', icon: '✻' },
|
|
4
|
-
help: { color: 'var(--
|
|
5
|
-
error: { color: 'var(--
|
|
4
|
+
help: { color: 'var(--palette_b_50)', icon: '➺' },
|
|
5
|
+
error: { color: 'var(--negative_50)', icon: '!?' }
|
|
6
6
|
};
|
package/dist/logos.d.ts
CHANGED
package/dist/logos.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logos.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/logos.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logos.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/logos.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,QAAQ;;;;;;CAgCF,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;;;CAIN,CAAC;AAEpB,eAAO,MAAM,YAAY;;;;;;;CAKN,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;;;CAIL,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;CAIX,CAAC;AAEpB,eAAO,MAAM,cAAc;;;;;;CAIR,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAIP,CAAC;AAEpB,eAAO,MAAM,mBAAmB;;;;;;CAQb,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;CAQX,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;;;CAwBP,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;;;;;;CAWL,CAAC;AAEpB,eAAO,MAAM,QAAQ;;;;;;CAQF,CAAC"}
|
package/dist/logos.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
// TODO these can be optimized during builds, helpers and gen files?
|
|
2
2
|
/*
|
|
3
3
|
|
|
4
|
-
Logo colors are
|
|
4
|
+
Logo colors are frozen brand values, originally derived as the midpoint
|
|
5
|
+
between the light and dark mid-stops of fuz_css's pre-OKLCH palette
|
|
6
|
+
(today's `--palette_X_50`), and deliberately not re-derived since:
|
|
5
7
|
|
|
6
8
|
```css
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
#6199d1 (blue, a)
|
|
10
|
+
#3db33d (green, b)
|
|
11
|
+
#d93636 (red, c)
|
|
12
|
+
#8866cc (purple, d)
|
|
13
|
+
#d8bc31 (yellow, e)
|
|
14
|
+
#84522a (brown, f)
|
|
15
|
+
#e55d95 (pink, g)
|
|
16
|
+
#f4672f (orange, h)
|
|
17
|
+
#36e2e2 (cyan, i)
|
|
16
18
|
```
|
|
17
19
|
*/
|
|
18
20
|
export const logo_gro = {
|
|
@@ -88,7 +90,7 @@ export const logo_fuz_mastodon = {
|
|
|
88
90
|
fill: '#8866cc',
|
|
89
91
|
paths: logo_fuz.paths
|
|
90
92
|
};
|
|
91
|
-
export const
|
|
93
|
+
export const logo_fuz_repos = {
|
|
92
94
|
label: 'a friendly blue spider facing you',
|
|
93
95
|
fill: '#6199d1',
|
|
94
96
|
paths: logo_fuz.paths
|
|
@@ -142,7 +144,7 @@ export const logo_fuz_util = {
|
|
|
142
144
|
]
|
|
143
145
|
};
|
|
144
146
|
export const logo_tsv = {
|
|
145
|
-
label: 'a pixelated orange quill drawing a
|
|
147
|
+
label: 'a pixelated orange quill drawing a precise line',
|
|
146
148
|
fill: '#f4672f',
|
|
147
149
|
paths: [
|
|
148
150
|
{
|