@tableslayer/ui 0.1.3 → 0.1.4
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 +2 -13
- package/src/lib/components/Avatar/Avatar.svelte +82 -0
- package/src/lib/components/Avatar/AvatarFileInput.svelte +85 -0
- package/src/lib/components/Avatar/AvatarPopover.svelte +34 -0
- package/src/lib/components/Avatar/index.ts +4 -0
- package/src/lib/components/Avatar/types.ts +24 -0
- package/src/lib/components/BrushSizeSlider/BrushSizeSlider.svelte +174 -0
- package/src/lib/components/BrushSizeSlider/index.ts +1 -0
- package/src/lib/components/Button/Button.svelte +182 -0
- package/src/lib/components/Button/ConfirmActionButton.svelte +98 -0
- package/src/lib/components/Button/IconButton.svelte +121 -0
- package/src/lib/components/Button/RadioButton.svelte +93 -0
- package/src/lib/components/Button/index.ts +5 -0
- package/src/lib/components/Button/types.ts +54 -0
- package/src/lib/components/CardFan/CardFan.svelte +165 -0
- package/src/lib/components/CardFan/index.ts +2 -0
- package/src/lib/components/CardFan/types.ts +6 -0
- package/src/lib/components/CodeBlock/Code.svelte +7 -0
- package/src/lib/components/CodeBlock/CodeBlock.svelte +102 -0
- package/src/lib/components/CodeBlock/index.ts +3 -0
- package/src/lib/components/CodeBlock/types.ts +10 -0
- package/src/lib/components/ColorMode/ColorMode.svelte +8 -0
- package/src/lib/components/ColorMode/index.ts +2 -0
- package/src/lib/components/ColorMode/types.ts +12 -0
- package/src/lib/components/ColorPicker/ColorPicker.svelte +838 -0
- package/src/lib/components/ColorPicker/ColorPickerSwatch.svelte +32 -0
- package/src/lib/components/ColorPicker/index.ts +3 -0
- package/src/lib/components/ColorPicker/types.ts +51 -0
- package/src/lib/components/ContextMenu/ContextMenu.svelte +86 -0
- package/src/lib/components/ContextMenu/index.ts +2 -0
- package/src/lib/components/ContextMenu/types.ts +15 -0
- package/src/lib/components/DrawingSliders/DrawingSliders.svelte +379 -0
- package/src/lib/components/DrawingSliders/index.ts +1 -0
- package/src/lib/components/Editor/Editor.svelte +825 -0
- package/src/lib/components/Editor/index.ts +1 -0
- package/src/lib/components/FogSliders/FogSliders.svelte +33 -0
- package/src/lib/components/FogSliders/index.ts +1 -0
- package/src/lib/components/Hr/Hr.svelte +15 -0
- package/src/lib/components/Hr/index.ts +1 -0
- package/src/lib/components/Icon/Icon.svelte +6 -0
- package/src/lib/components/Icon/index.ts +2 -0
- package/src/lib/components/Icon/types.ts +20 -0
- package/src/lib/components/Input/DualInputSlider.svelte +126 -0
- package/src/lib/components/Input/FileInput.svelte +176 -0
- package/src/lib/components/Input/FormControl.svelte +150 -0
- package/src/lib/components/Input/FormError.svelte +37 -0
- package/src/lib/components/Input/Input.svelte +56 -0
- package/src/lib/components/Input/InputCheckbox.svelte +99 -0
- package/src/lib/components/Input/InputSlider.svelte +86 -0
- package/src/lib/components/Input/Label.svelte +19 -0
- package/src/lib/components/Input/index.ts +9 -0
- package/src/lib/components/Input/types.ts +39 -0
- package/src/lib/components/Link/Link.svelte +41 -0
- package/src/lib/components/Link/LinkBox.svelte +20 -0
- package/src/lib/components/Link/LinkOverlay.svelte +23 -0
- package/src/lib/components/Link/index.ts +4 -0
- package/src/lib/components/Link/types.ts +17 -0
- package/src/lib/components/Loading/Loader.svelte +60 -0
- package/src/lib/components/Loading/Skeleton.svelte +9 -0
- package/src/lib/components/Loading/index.ts +2 -0
- package/src/lib/components/Logo/Logo.svelte +16 -0
- package/src/lib/components/Logo/index.ts +1 -0
- package/src/lib/components/MarkerTooltip/MarkerTooltip.svelte +435 -0
- package/src/lib/components/MarkerTooltip/index.ts +1 -0
- package/src/lib/components/Menu/SelectorMenu.svelte +280 -0
- package/src/lib/components/Menu/index.ts +2 -0
- package/src/lib/components/Menu/types.ts +17 -0
- package/src/lib/components/MyCounterButton.svelte +11 -0
- package/src/lib/components/Panel/index.ts +2 -0
- package/src/lib/components/Panel/panel.svelte +18 -0
- package/src/lib/components/Panel/types.ts +8 -0
- package/src/lib/components/PersistButton/PersistButton.svelte +100 -0
- package/src/lib/components/PersistButton/index.ts +1 -0
- package/src/lib/components/Popover/Popover.svelte +81 -0
- package/src/lib/components/Popover/index.ts +2 -0
- package/src/lib/components/Popover/types.ts +19 -0
- package/src/lib/components/PropsTable/PropsTable.svelte +107 -0
- package/src/lib/components/RadialMenu/EffectPreview.svelte +36 -0
- package/src/lib/components/RadialMenu/EffectPreviewScene.svelte +194 -0
- package/src/lib/components/RadialMenu/RadialMenu.svelte +503 -0
- package/src/lib/components/RadialMenu/RadialMenuItem.svelte +176 -0
- package/src/lib/components/RadialMenu/index.ts +2 -0
- package/src/lib/components/RadialMenu/types.ts +35 -0
- package/src/lib/components/Select/Select.svelte +342 -0
- package/src/lib/components/Select/index.ts +2 -0
- package/src/lib/components/Select/types.ts +22 -0
- package/src/lib/components/Spacer/Spacer.svelte +14 -0
- package/src/lib/components/Spacer/index.ts +2 -0
- package/src/lib/components/Spacer/types.ts +5 -0
- package/src/lib/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +445 -0
- package/src/lib/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +167 -0
- package/src/lib/components/Stage/components/AnnotationLayer/types.ts +196 -0
- package/src/lib/components/Stage/components/CursorLayer/CursorLayer.svelte +148 -0
- package/src/lib/components/Stage/components/CursorLayer/cursor.svg +26 -0
- package/src/lib/components/Stage/components/CursorLayer/index.ts +2 -0
- package/src/lib/components/Stage/components/CursorLayer/types.ts +23 -0
- package/src/lib/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +364 -0
- package/src/lib/components/Stage/components/DrawingLayer/types.ts +65 -0
- package/src/lib/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +72 -0
- package/src/lib/components/Stage/components/EdgeOverlayLayer/types.ts +34 -0
- package/src/lib/components/Stage/components/FogLayer/FogLayer.svelte +75 -0
- package/src/lib/components/Stage/components/FogLayer/types.ts +51 -0
- package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +249 -0
- package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +200 -0
- package/src/lib/components/Stage/components/FogOfWarLayer/types.ts +116 -0
- package/src/lib/components/Stage/components/GridLayer/GridLayer.svelte +20 -0
- package/src/lib/components/Stage/components/GridLayer/GridMaterial.svelte +69 -0
- package/src/lib/components/Stage/components/GridLayer/types.ts +79 -0
- package/src/lib/components/Stage/components/LayerInput/LayerInput.svelte +300 -0
- package/src/lib/components/Stage/components/MapLayer/MapLayer.svelte +196 -0
- package/src/lib/components/Stage/components/MapLayer/dataSources/GifDataSource.ts +265 -0
- package/src/lib/components/Stage/components/MapLayer/dataSources/IMapDataSource.ts +55 -0
- package/src/lib/components/Stage/components/MapLayer/dataSources/ImageDataSource.ts +87 -0
- package/src/lib/components/Stage/components/MapLayer/dataSources/VideoDataSource.ts +150 -0
- package/src/lib/components/Stage/components/MapLayer/dataSources/dataSourceFactory.ts +48 -0
- package/src/lib/components/Stage/components/MapLayer/dataSources/index.ts +16 -0
- package/src/lib/components/Stage/components/MapLayer/types.ts +58 -0
- package/src/lib/components/Stage/components/MarkerLayer/MarkerLayer.svelte +398 -0
- package/src/lib/components/Stage/components/MarkerLayer/MarkerToken.svelte +262 -0
- package/src/lib/components/Stage/components/MarkerLayer/types.ts +126 -0
- package/src/lib/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +364 -0
- package/src/lib/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +473 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.ts +427 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.ts +105 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.ts +98 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.ts +163 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.ts +102 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.ts +120 -0
- package/src/lib/components/Stage/components/MeasurementLayer/measurements/index.ts +7 -0
- package/src/lib/components/Stage/components/MeasurementLayer/types.ts +94 -0
- package/src/lib/components/Stage/components/MeasurementLayer/utils/canvasDrawing.ts +357 -0
- package/src/lib/components/Stage/components/MeasurementLayer/utils/distanceCalculations.ts +170 -0
- package/src/lib/components/Stage/components/ParticleSystem/ParticleSystem.svelte +220 -0
- package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
- package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
- package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
- package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
- package/src/lib/components/Stage/components/ParticleSystem/rng.js +20 -0
- package/src/lib/components/Stage/components/ParticleSystem/types.ts +95 -0
- package/src/lib/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +144 -0
- package/src/lib/components/Stage/components/PerformanceDebugger/index.ts +1 -0
- package/src/lib/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +208 -0
- package/src/lib/components/Stage/components/PerformanceOverlay/index.ts +1 -0
- package/src/lib/components/Stage/components/PointerInputManager/PointerInputManager.svelte +201 -0
- package/src/lib/components/Stage/components/Scene/Scene.svelte +651 -0
- package/src/lib/components/Stage/components/Scene/luts.ts +24 -0
- package/src/lib/components/Stage/components/Scene/types.ts +225 -0
- package/src/lib/components/Stage/components/Stage/Stage.svelte +332 -0
- package/src/lib/components/Stage/components/Stage/types.ts +136 -0
- package/src/lib/components/Stage/components/WeatherLayer/WeatherLayer.svelte +135 -0
- package/src/lib/components/Stage/components/WeatherLayer/presets/AshPreset.ts +71 -0
- package/src/lib/components/Stage/components/WeatherLayer/presets/LeavesPreset.ts +70 -0
- package/src/lib/components/Stage/components/WeatherLayer/presets/RainPreset.ts +68 -0
- package/src/lib/components/Stage/components/WeatherLayer/presets/SnowPreset.ts +70 -0
- package/src/lib/components/Stage/components/WeatherLayer/presets/index.ts +6 -0
- package/src/lib/components/Stage/components/WeatherLayer/types.ts +35 -0
- package/src/lib/components/Stage/helpers/clippingPlaneStore.svelte.ts +28 -0
- package/src/lib/components/Stage/helpers/debugState.svelte.ts +18 -0
- package/src/lib/components/Stage/helpers/grid.ts +548 -0
- package/src/lib/components/Stage/helpers/lazyBrush.ts +171 -0
- package/src/lib/components/Stage/helpers/performanceMetrics.svelte.ts +220 -0
- package/src/lib/components/Stage/helpers/utils.ts +21 -0
- package/src/lib/components/Stage/index.ts +49 -0
- package/src/lib/components/Stage/shaders/AnnotationEffects.frag +1070 -0
- package/src/lib/components/Stage/shaders/Annotations.frag +29 -0
- package/src/lib/components/Stage/shaders/Drawing.frag +83 -0
- package/src/lib/components/Stage/shaders/Drawing.vert +5 -0
- package/src/lib/components/Stage/shaders/Fog.frag +147 -0
- package/src/lib/components/Stage/shaders/FractalNoise.frag +96 -0
- package/src/lib/components/Stage/shaders/GridShader.frag +174 -0
- package/src/lib/components/Stage/shaders/Overlay.frag +23 -0
- package/src/lib/components/Stage/shaders/Overlay.vert +0 -0
- package/src/lib/components/Stage/shaders/Particles.frag +27 -0
- package/src/lib/components/Stage/shaders/Particles.vert +51 -0
- package/src/lib/components/Stage/shaders/ToolOutline.frag +59 -0
- package/src/lib/components/Stage/shaders/default.vert +8 -0
- package/src/lib/components/Stage/types.ts +4 -0
- package/src/lib/components/Table/Table.svelte +16 -0
- package/src/lib/components/Table/Td.svelte +17 -0
- package/src/lib/components/Table/Th.svelte +18 -0
- package/src/lib/components/Table/index.ts +4 -0
- package/src/lib/components/Table/types.ts +14 -0
- package/src/lib/components/Text/Text.svelte +23 -0
- package/src/lib/components/Text/index.ts +2 -0
- package/src/lib/components/Text/types.ts +12 -0
- package/src/lib/components/Title/Title.svelte +54 -0
- package/src/lib/components/Title/index.ts +2 -0
- package/src/lib/components/Title/types.ts +9 -0
- package/src/lib/components/Toast/Toast.svelte +155 -0
- package/src/lib/components/Toast/index.ts +5 -0
- package/src/lib/components/Toast/toastCookie.ts +24 -0
- package/src/lib/components/Toast/types.ts +6 -0
- package/src/lib/components/ToolTip/ToolTip.svelte +70 -0
- package/src/lib/components/ToolTip/index.ts +2 -0
- package/src/lib/components/ToolTip/types.ts +14 -0
- package/src/lib/components/index.ts +32 -0
- package/src/lib/components/types.ts +0 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/styles/globals.css +108 -0
- package/src/lib/styles/normalize.css +9 -0
- package/src/lib/styles/reset.css +133 -0
- package/src/lib/styles/utilities.css +179 -0
- package/src/lib/styles/vars.css +1103 -0
- package/src/lib/types/awareness.ts +17 -0
- package/src/lib/utils/rle.ts +217 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { InputCheckboxProps } from './types';
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
+
let {
|
|
5
|
+
checked = $bindable(),
|
|
6
|
+
element = $bindable(),
|
|
7
|
+
variant = 'default',
|
|
8
|
+
label,
|
|
9
|
+
hideAutocomplete,
|
|
10
|
+
...restProps
|
|
11
|
+
}: InputCheckboxProps = $props();
|
|
12
|
+
|
|
13
|
+
const inputClasses = $derived(['input', variant && `input--${variant}`, restProps.class ?? '']);
|
|
14
|
+
let autoCompleteOffAttrs = hideAutocomplete
|
|
15
|
+
? {
|
|
16
|
+
autocomplete: 'off' as const,
|
|
17
|
+
'data-1p-ignore': 'true' as const,
|
|
18
|
+
'data-lpignore': 'true' as const
|
|
19
|
+
}
|
|
20
|
+
: {};
|
|
21
|
+
|
|
22
|
+
const id = `checkbox-${uuidv4()}`;
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<label for={id}>
|
|
26
|
+
<input
|
|
27
|
+
type="checkbox"
|
|
28
|
+
{id}
|
|
29
|
+
bind:this={element}
|
|
30
|
+
bind:checked
|
|
31
|
+
{...restProps}
|
|
32
|
+
{...autoCompleteOffAttrs}
|
|
33
|
+
class={inputClasses}
|
|
34
|
+
/>
|
|
35
|
+
{#if typeof label === 'string'}
|
|
36
|
+
{label}
|
|
37
|
+
{:else}
|
|
38
|
+
{@render label()}
|
|
39
|
+
{/if}
|
|
40
|
+
</label>
|
|
41
|
+
|
|
42
|
+
<style>
|
|
43
|
+
label {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
gap: 0.5rem;
|
|
48
|
+
}
|
|
49
|
+
input[type='checkbox'] {
|
|
50
|
+
/* Add if not using autoprefixer */
|
|
51
|
+
-webkit-appearance: none;
|
|
52
|
+
/* Remove most all native input styles */
|
|
53
|
+
appearance: none;
|
|
54
|
+
/* For iOS < 15 */
|
|
55
|
+
background-color: var(--inputBg);
|
|
56
|
+
/* Not removed via appearance */
|
|
57
|
+
margin: 0;
|
|
58
|
+
|
|
59
|
+
font: inherit;
|
|
60
|
+
color: currentColor;
|
|
61
|
+
width: 1.5rem;
|
|
62
|
+
height: 1.5rem;
|
|
63
|
+
border: var(--borderThin);
|
|
64
|
+
border-radius: var(--radius-2);
|
|
65
|
+
display: grid;
|
|
66
|
+
place-content: center;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
}
|
|
69
|
+
input[type='checkbox']::before {
|
|
70
|
+
content: '';
|
|
71
|
+
width: 0.875rem;
|
|
72
|
+
height: 0.875rem;
|
|
73
|
+
clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
|
|
74
|
+
opacity: 0;
|
|
75
|
+
transform-origin: bottom left;
|
|
76
|
+
transition: 100ms opacity ease-in;
|
|
77
|
+
box-shadow: inset 1em 1em var(--fgPrimary);
|
|
78
|
+
/* Windows High Contrast Mode */
|
|
79
|
+
background-color: CanvasText;
|
|
80
|
+
}
|
|
81
|
+
input[type='checkbox']:checked::before {
|
|
82
|
+
opacity: 1;
|
|
83
|
+
}
|
|
84
|
+
input[type='checkbox']:disabled {
|
|
85
|
+
color: var(--fgMuted);
|
|
86
|
+
cursor: not-allowed;
|
|
87
|
+
}
|
|
88
|
+
.input--transparent {
|
|
89
|
+
border-color: transparent;
|
|
90
|
+
background: transparent;
|
|
91
|
+
&:hover {
|
|
92
|
+
border-color: var(--inputBorderColor);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
[data-fs-error],
|
|
96
|
+
[aria-invalid='true'] {
|
|
97
|
+
border-color: var(--fgDanger);
|
|
98
|
+
}
|
|
99
|
+
</style>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { InputSliderProps } from './types';
|
|
3
|
+
import chroma from 'chroma-js';
|
|
4
|
+
let { value = $bindable(), hex = '#555', variant = 'default', ...restProps }: InputSliderProps = $props();
|
|
5
|
+
|
|
6
|
+
const sliderClasses = $derived(['inputSlider', variant && `inputSlider--${variant}`, restProps.class ?? '']);
|
|
7
|
+
|
|
8
|
+
const getLinearGradient = $derived(() => {
|
|
9
|
+
if (!hex) return 'var(--fgMuted)';
|
|
10
|
+
const colorStart = chroma(hex).alpha(0).css('rgb');
|
|
11
|
+
const colorEnd = chroma(hex).css('rgb');
|
|
12
|
+
return `linear-gradient(to right, ${colorStart}, ${colorEnd})`;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const background = $derived(() => {
|
|
16
|
+
if (variant === 'opacity') {
|
|
17
|
+
return getLinearGradient();
|
|
18
|
+
} else {
|
|
19
|
+
if (!hex) return 'var(--fgMuted)';
|
|
20
|
+
return hex;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<div class="inputSliderWrapper">
|
|
26
|
+
<input
|
|
27
|
+
type="range"
|
|
28
|
+
min="0"
|
|
29
|
+
max="100"
|
|
30
|
+
step="1"
|
|
31
|
+
bind:value
|
|
32
|
+
class={sliderClasses}
|
|
33
|
+
style={`background: ${background()}`}
|
|
34
|
+
{...restProps}
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<style>
|
|
39
|
+
.inputSliderWrapper {
|
|
40
|
+
width: 100%;
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
height: 2rem;
|
|
44
|
+
}
|
|
45
|
+
.inputSlider {
|
|
46
|
+
-webkit-appearance: none;
|
|
47
|
+
appearance: none;
|
|
48
|
+
width: 100%;
|
|
49
|
+
height: 3px;
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.inputSlider::-webkit-slider-thumb {
|
|
54
|
+
-webkit-appearance: none;
|
|
55
|
+
appearance: none;
|
|
56
|
+
width: 0.5rem;
|
|
57
|
+
height: 0.5rem;
|
|
58
|
+
border-radius: 50%;
|
|
59
|
+
border: 2px solid white;
|
|
60
|
+
background-color: transparent;
|
|
61
|
+
filter: drop-shadow(0 0 1px rgba(0, 0, 0, 1));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.inputSlider::-moz-range-thumb {
|
|
65
|
+
width: 0.5rem;
|
|
66
|
+
height: 0.5rem;
|
|
67
|
+
border-radius: 50%;
|
|
68
|
+
border: 2px solid white;
|
|
69
|
+
background-color: transparent;
|
|
70
|
+
filter: drop-shadow(0 0 1px rgba(0, 0, 0, 1));
|
|
71
|
+
}
|
|
72
|
+
@media (pointer: coarse) {
|
|
73
|
+
.inputSlider {
|
|
74
|
+
height: 1rem;
|
|
75
|
+
border-radius: var(--radius-2);
|
|
76
|
+
}
|
|
77
|
+
.inputSlider::-webkit-slider-thumb {
|
|
78
|
+
width: 1rem;
|
|
79
|
+
height: 1rem;
|
|
80
|
+
}
|
|
81
|
+
.inputSlider::-moz-range-thumb {
|
|
82
|
+
width: 1rem;
|
|
83
|
+
height: 1rem;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { LabelProps } from './types';
|
|
3
|
+
let { children, props, ...restProps }: LabelProps = $props();
|
|
4
|
+
|
|
5
|
+
let labelClasses = $derived(['label', restProps.class ?? '']);
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<label {...props} {...restProps} class={labelClasses}>
|
|
9
|
+
{@render children()}
|
|
10
|
+
</label>
|
|
11
|
+
|
|
12
|
+
<style>
|
|
13
|
+
.label {
|
|
14
|
+
display: block;
|
|
15
|
+
font-weight: var(--font-weight-6);
|
|
16
|
+
font-size: var(--font-size-1);
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as DualInputSlider } from './DualInputSlider.svelte';
|
|
2
|
+
export { default as FileInput } from './FileInput.svelte';
|
|
3
|
+
export { default as FormControl } from './FormControl.svelte';
|
|
4
|
+
export { default as FormError } from './FormError.svelte';
|
|
5
|
+
export { default as Input } from './Input.svelte';
|
|
6
|
+
export { default as InputCheckbox } from './InputCheckbox.svelte';
|
|
7
|
+
export { default as InputSlider } from './InputSlider.svelte';
|
|
8
|
+
export { default as Label } from './Label.svelte';
|
|
9
|
+
export * from './types';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLInputAttributes, HTMLLabelAttributes } from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
export type InputProps = {
|
|
5
|
+
isDisabled?: boolean;
|
|
6
|
+
variant?: 'transparent' | 'default' | 'dropzone' | 'button';
|
|
7
|
+
hideAutocomplete?: boolean;
|
|
8
|
+
element?: HTMLInputElement;
|
|
9
|
+
} & HTMLInputAttributes;
|
|
10
|
+
|
|
11
|
+
export type InputCheckboxProps = {
|
|
12
|
+
checked: boolean;
|
|
13
|
+
label: Snippet | string;
|
|
14
|
+
} & InputProps;
|
|
15
|
+
|
|
16
|
+
export type FileInputProps = {
|
|
17
|
+
files: FileList | null;
|
|
18
|
+
accept?: string;
|
|
19
|
+
showPreviews?: boolean;
|
|
20
|
+
} & InputProps;
|
|
21
|
+
|
|
22
|
+
export type LabelProps = {
|
|
23
|
+
children: Snippet;
|
|
24
|
+
props?: Record<string, unknown>;
|
|
25
|
+
} & HTMLLabelAttributes;
|
|
26
|
+
|
|
27
|
+
export type InputSliderProps = {
|
|
28
|
+
variant?: 'default' | 'opacity';
|
|
29
|
+
hex?: string;
|
|
30
|
+
} & HTMLInputAttributes;
|
|
31
|
+
|
|
32
|
+
export type DualInputSliderProps = {
|
|
33
|
+
valueStart: number;
|
|
34
|
+
valueEnd: number;
|
|
35
|
+
color?: string;
|
|
36
|
+
min: number;
|
|
37
|
+
max: number;
|
|
38
|
+
step: number;
|
|
39
|
+
} & HTMLInputAttributes;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { LinkProps } from './types';
|
|
3
|
+
let { children, as = 'a', color = 'primary', ...restProps }: LinkProps = $props();
|
|
4
|
+
|
|
5
|
+
let linkClasses = $derived(['link', `link--${color}`, restProps.class ?? '']);
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<svelte:element this={as} {...restProps} class={linkClasses}>
|
|
9
|
+
{@render children()}
|
|
10
|
+
</svelte:element>
|
|
11
|
+
|
|
12
|
+
<style>
|
|
13
|
+
:global(.light) {
|
|
14
|
+
color-scheme: light;
|
|
15
|
+
--link-color: var(--primary-600);
|
|
16
|
+
}
|
|
17
|
+
:global(.dark) {
|
|
18
|
+
color-scheme: dark;
|
|
19
|
+
--link-color: var(--primary-500);
|
|
20
|
+
}
|
|
21
|
+
.link {
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
font-weight: var(--font-weight-6);
|
|
25
|
+
}
|
|
26
|
+
.link--primary {
|
|
27
|
+
color: var(--fgPrimary);
|
|
28
|
+
}
|
|
29
|
+
.link--fg {
|
|
30
|
+
color: var(--fg);
|
|
31
|
+
}
|
|
32
|
+
.link--bg {
|
|
33
|
+
color: var(--bg);
|
|
34
|
+
}
|
|
35
|
+
.link--muted {
|
|
36
|
+
color: var(--fgMuted);
|
|
37
|
+
}
|
|
38
|
+
.link:hover {
|
|
39
|
+
text-decoration: underline;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { LinkBoxProps } from './types';
|
|
3
|
+
let { as = 'div', children }: LinkBoxProps = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<svelte:element this={as} class="linkBox">
|
|
7
|
+
{@render children()}
|
|
8
|
+
</svelte:element>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
.linkBox {
|
|
12
|
+
position: relative;
|
|
13
|
+
}
|
|
14
|
+
:global {
|
|
15
|
+
.linkBox a:not(.linkOverlay) {
|
|
16
|
+
position: relative;
|
|
17
|
+
z-index: 1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { LinkOverlayProps } from './types';
|
|
3
|
+
let { href, children }: LinkOverlayProps = $props();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<a {href} class="linkOverlay">
|
|
7
|
+
{@render children()}
|
|
8
|
+
</a>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
.linkOverlay::after {
|
|
12
|
+
content: '';
|
|
13
|
+
position: absolute;
|
|
14
|
+
inset: 0;
|
|
15
|
+
z-index: 0;
|
|
16
|
+
top: 0;
|
|
17
|
+
left: 0;
|
|
18
|
+
right: 0;
|
|
19
|
+
bottom: 0;
|
|
20
|
+
width: 100%;
|
|
21
|
+
height: 100%;
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAnchorAttributes, HTMLBaseAttributes, SvelteHTMLElements } from 'svelte/elements';
|
|
3
|
+
export type LinkProps = {
|
|
4
|
+
children: Snippet;
|
|
5
|
+
color?: 'primary' | 'fg' | 'bg' | 'accent' | 'muted';
|
|
6
|
+
as?: keyof SvelteHTMLElements;
|
|
7
|
+
} & HTMLAnchorAttributes;
|
|
8
|
+
|
|
9
|
+
export type LinkBoxProps = {
|
|
10
|
+
children: Snippet;
|
|
11
|
+
as?: keyof SvelteHTMLElements;
|
|
12
|
+
} & HTMLBaseAttributes;
|
|
13
|
+
|
|
14
|
+
export type LinkOverlayProps = {
|
|
15
|
+
children: Snippet;
|
|
16
|
+
href: string;
|
|
17
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { ...restProps } = $props();
|
|
3
|
+
let loaderClasses = $derived(['loader', restProps.class ?? '']);
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<div class={loaderClasses}>
|
|
7
|
+
<div class="loader__anim"></div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
.loader {
|
|
12
|
+
width: 14px;
|
|
13
|
+
height: 14px;
|
|
14
|
+
display: inline-flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
}
|
|
18
|
+
.loader__anim {
|
|
19
|
+
width: 8px;
|
|
20
|
+
height: 8px;
|
|
21
|
+
--c: no-repeat linear-gradient(var(--primary-500) 0 0);
|
|
22
|
+
background: var(--c), var(--c), var(--c), var(--c);
|
|
23
|
+
background-size: 5px 5px;
|
|
24
|
+
animation: l5 1.5s infinite cubic-bezier(0.3, 1, 0, 1);
|
|
25
|
+
}
|
|
26
|
+
@keyframes l5 {
|
|
27
|
+
0% {
|
|
28
|
+
background-position:
|
|
29
|
+
0 0,
|
|
30
|
+
100% 0,
|
|
31
|
+
100% 100%,
|
|
32
|
+
0 100%;
|
|
33
|
+
}
|
|
34
|
+
33% {
|
|
35
|
+
background-position:
|
|
36
|
+
0 0,
|
|
37
|
+
100% 0,
|
|
38
|
+
100% 100%,
|
|
39
|
+
0 100%;
|
|
40
|
+
width: 14px;
|
|
41
|
+
height: 14px;
|
|
42
|
+
}
|
|
43
|
+
66% {
|
|
44
|
+
background-position:
|
|
45
|
+
100% 0,
|
|
46
|
+
100% 100%,
|
|
47
|
+
0 100%,
|
|
48
|
+
0 0;
|
|
49
|
+
width: 14px;
|
|
50
|
+
height: 14px;
|
|
51
|
+
}
|
|
52
|
+
100% {
|
|
53
|
+
background-position:
|
|
54
|
+
100% 0,
|
|
55
|
+
100% 100%,
|
|
56
|
+
0 100%,
|
|
57
|
+
0 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let { color = 'var(--fg)', size = 128, ...rest }: { color?: string; size?: string | number } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg width={size} height={size} viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg" {...rest}>
|
|
6
|
+
<path
|
|
7
|
+
fill-rule="evenodd"
|
|
8
|
+
clip-rule="evenodd"
|
|
9
|
+
d="M64 120C94.9279 120 120 94.9279 120 64C120 33.0721 94.9279 8 64 8C33.0721 8 8 33.0721 8 64C8 94.9279 33.0721 120 64 120ZM64 128C99.3462 128 128 99.3462 128 64C128 28.6538 99.3462 0 64 0C28.6538 0 0 28.6538 0 64C0 99.3462 28.6538 128 64 128Z"
|
|
10
|
+
fill={color}
|
|
11
|
+
/>
|
|
12
|
+
<path
|
|
13
|
+
d="M30.9196 118.799C31.1236 117.921 31.1467 116.811 31.2144 114.752L31.3282 111.284L43.1193 105.567C56.3171 99.1666 58.9093 98.8979 58.6365 103.958C58.5544 105.541 58.5227 109.757 58.573 113.327L58.6646 119.817L63.6226 122.411C66.1733 123.746 67.6328 124.611 68.5062 124.208C69.7688 123.624 69.8067 120.39 70.1459 112.09L70.6296 100.256L67.6086 98.4417C65.0513 96.9055 56.0699 90.2583 52.6318 87.3573C52.0699 86.884 49.3807 85.2381 46.655 83.7007C43.9292 82.1635 40.8562 79.9785 39.8264 78.8454C38.7966 77.7123 36.6815 75.7763 35.1261 74.5433C31.734 71.8543 31.4397 70.603 31.1197 57.5058L30.8714 47.333L27.4541 46.2047C22.551 44.5858 23.0901 42.6393 29.2767 39.6239C32.1585 38.2194 36.7717 35.8101 39.5283 34.2704C49.1824 28.8775 58.2372 24.6163 61.3986 23.9779C63.1528 23.6235 65.6132 22.6584 66.8662 21.8328C69.2763 20.2449 70.7484 19.2605 72.3255 19.0449C74.8791 18.6958 77.7082 20.3623 85.2401 24.7464L96.482 31.2898L97 47.6621L93.1579 50.613C91.0448 52.2359 88.7933 53.5637 88.1547 53.5637C87.5165 53.5637 85.0277 54.7194 82.625 56.132C78.2074 58.7292 72.9701 60.8489 70.9708 60.8489C70.198 60.8489 69.8853 58.2653 69.8978 51.9702L69.9179 43.0913L59.1227 39.2194V60.9357L66.4126 66.3152C70.4222 69.274 75.958 73.2021 78.7146 75.0445C81.4712 76.8868 85.0198 79.4664 86.6005 80.7769C88.1812 82.0874 91.0742 84.305 93.0295 85.7051L96.5847 88.2505L96.4238 119.191C86.9151 124.789 75.8326 128 64 128C51.894 128 40.5731 124.639 30.9196 118.799Z"
|
|
14
|
+
fill={color}
|
|
15
|
+
/>
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Logo } from './Logo.svelte';
|