@tableslayer/ui 0.1.4 → 0.1.5

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.
Files changed (206) hide show
  1. package/dist/components/PropsTable/PropsTable.svelte +1 -1
  2. package/package.json +9 -9
  3. package/src/lib/components/Avatar/Avatar.svelte +0 -82
  4. package/src/lib/components/Avatar/AvatarFileInput.svelte +0 -85
  5. package/src/lib/components/Avatar/AvatarPopover.svelte +0 -34
  6. package/src/lib/components/Avatar/index.ts +0 -4
  7. package/src/lib/components/Avatar/types.ts +0 -24
  8. package/src/lib/components/BrushSizeSlider/BrushSizeSlider.svelte +0 -174
  9. package/src/lib/components/BrushSizeSlider/index.ts +0 -1
  10. package/src/lib/components/Button/Button.svelte +0 -182
  11. package/src/lib/components/Button/ConfirmActionButton.svelte +0 -98
  12. package/src/lib/components/Button/IconButton.svelte +0 -121
  13. package/src/lib/components/Button/RadioButton.svelte +0 -93
  14. package/src/lib/components/Button/index.ts +0 -5
  15. package/src/lib/components/Button/types.ts +0 -54
  16. package/src/lib/components/CardFan/CardFan.svelte +0 -165
  17. package/src/lib/components/CardFan/index.ts +0 -2
  18. package/src/lib/components/CardFan/types.ts +0 -6
  19. package/src/lib/components/CodeBlock/Code.svelte +0 -7
  20. package/src/lib/components/CodeBlock/CodeBlock.svelte +0 -102
  21. package/src/lib/components/CodeBlock/index.ts +0 -3
  22. package/src/lib/components/CodeBlock/types.ts +0 -10
  23. package/src/lib/components/ColorMode/ColorMode.svelte +0 -8
  24. package/src/lib/components/ColorMode/index.ts +0 -2
  25. package/src/lib/components/ColorMode/types.ts +0 -12
  26. package/src/lib/components/ColorPicker/ColorPicker.svelte +0 -838
  27. package/src/lib/components/ColorPicker/ColorPickerSwatch.svelte +0 -32
  28. package/src/lib/components/ColorPicker/index.ts +0 -3
  29. package/src/lib/components/ColorPicker/types.ts +0 -51
  30. package/src/lib/components/ContextMenu/ContextMenu.svelte +0 -86
  31. package/src/lib/components/ContextMenu/index.ts +0 -2
  32. package/src/lib/components/ContextMenu/types.ts +0 -15
  33. package/src/lib/components/DrawingSliders/DrawingSliders.svelte +0 -379
  34. package/src/lib/components/DrawingSliders/index.ts +0 -1
  35. package/src/lib/components/Editor/Editor.svelte +0 -825
  36. package/src/lib/components/Editor/index.ts +0 -1
  37. package/src/lib/components/FogSliders/FogSliders.svelte +0 -33
  38. package/src/lib/components/FogSliders/index.ts +0 -1
  39. package/src/lib/components/Hr/Hr.svelte +0 -15
  40. package/src/lib/components/Hr/index.ts +0 -1
  41. package/src/lib/components/Icon/Icon.svelte +0 -6
  42. package/src/lib/components/Icon/index.ts +0 -2
  43. package/src/lib/components/Icon/types.ts +0 -20
  44. package/src/lib/components/Input/DualInputSlider.svelte +0 -126
  45. package/src/lib/components/Input/FileInput.svelte +0 -176
  46. package/src/lib/components/Input/FormControl.svelte +0 -150
  47. package/src/lib/components/Input/FormError.svelte +0 -37
  48. package/src/lib/components/Input/Input.svelte +0 -56
  49. package/src/lib/components/Input/InputCheckbox.svelte +0 -99
  50. package/src/lib/components/Input/InputSlider.svelte +0 -86
  51. package/src/lib/components/Input/Label.svelte +0 -19
  52. package/src/lib/components/Input/index.ts +0 -9
  53. package/src/lib/components/Input/types.ts +0 -39
  54. package/src/lib/components/Link/Link.svelte +0 -41
  55. package/src/lib/components/Link/LinkBox.svelte +0 -20
  56. package/src/lib/components/Link/LinkOverlay.svelte +0 -23
  57. package/src/lib/components/Link/index.ts +0 -4
  58. package/src/lib/components/Link/types.ts +0 -17
  59. package/src/lib/components/Loading/Loader.svelte +0 -60
  60. package/src/lib/components/Loading/Skeleton.svelte +0 -9
  61. package/src/lib/components/Loading/index.ts +0 -2
  62. package/src/lib/components/Logo/Logo.svelte +0 -16
  63. package/src/lib/components/Logo/index.ts +0 -1
  64. package/src/lib/components/MarkerTooltip/MarkerTooltip.svelte +0 -435
  65. package/src/lib/components/MarkerTooltip/index.ts +0 -1
  66. package/src/lib/components/Menu/SelectorMenu.svelte +0 -280
  67. package/src/lib/components/Menu/index.ts +0 -2
  68. package/src/lib/components/Menu/types.ts +0 -17
  69. package/src/lib/components/MyCounterButton.svelte +0 -11
  70. package/src/lib/components/Panel/index.ts +0 -2
  71. package/src/lib/components/Panel/panel.svelte +0 -18
  72. package/src/lib/components/Panel/types.ts +0 -8
  73. package/src/lib/components/PersistButton/PersistButton.svelte +0 -100
  74. package/src/lib/components/PersistButton/index.ts +0 -1
  75. package/src/lib/components/Popover/Popover.svelte +0 -81
  76. package/src/lib/components/Popover/index.ts +0 -2
  77. package/src/lib/components/Popover/types.ts +0 -19
  78. package/src/lib/components/PropsTable/PropsTable.svelte +0 -107
  79. package/src/lib/components/RadialMenu/EffectPreview.svelte +0 -36
  80. package/src/lib/components/RadialMenu/EffectPreviewScene.svelte +0 -194
  81. package/src/lib/components/RadialMenu/RadialMenu.svelte +0 -503
  82. package/src/lib/components/RadialMenu/RadialMenuItem.svelte +0 -176
  83. package/src/lib/components/RadialMenu/index.ts +0 -2
  84. package/src/lib/components/RadialMenu/types.ts +0 -35
  85. package/src/lib/components/Select/Select.svelte +0 -342
  86. package/src/lib/components/Select/index.ts +0 -2
  87. package/src/lib/components/Select/types.ts +0 -22
  88. package/src/lib/components/Spacer/Spacer.svelte +0 -14
  89. package/src/lib/components/Spacer/index.ts +0 -2
  90. package/src/lib/components/Spacer/types.ts +0 -5
  91. package/src/lib/components/Stage/components/AnnotationLayer/AnnotationLayer.svelte +0 -445
  92. package/src/lib/components/Stage/components/AnnotationLayer/AnnotationMaterial.svelte +0 -167
  93. package/src/lib/components/Stage/components/AnnotationLayer/types.ts +0 -196
  94. package/src/lib/components/Stage/components/CursorLayer/CursorLayer.svelte +0 -148
  95. package/src/lib/components/Stage/components/CursorLayer/cursor.svg +0 -26
  96. package/src/lib/components/Stage/components/CursorLayer/index.ts +0 -2
  97. package/src/lib/components/Stage/components/CursorLayer/types.ts +0 -23
  98. package/src/lib/components/Stage/components/DrawingLayer/DrawingMaterial.svelte +0 -364
  99. package/src/lib/components/Stage/components/DrawingLayer/types.ts +0 -65
  100. package/src/lib/components/Stage/components/EdgeOverlayLayer/EdgeOverlayLayer.svelte +0 -72
  101. package/src/lib/components/Stage/components/EdgeOverlayLayer/types.ts +0 -34
  102. package/src/lib/components/Stage/components/FogLayer/FogLayer.svelte +0 -75
  103. package/src/lib/components/Stage/components/FogLayer/types.ts +0 -51
  104. package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarLayer.svelte +0 -249
  105. package/src/lib/components/Stage/components/FogOfWarLayer/FogOfWarMaterial.svelte +0 -200
  106. package/src/lib/components/Stage/components/FogOfWarLayer/types.ts +0 -116
  107. package/src/lib/components/Stage/components/GridLayer/GridLayer.svelte +0 -20
  108. package/src/lib/components/Stage/components/GridLayer/GridMaterial.svelte +0 -69
  109. package/src/lib/components/Stage/components/GridLayer/types.ts +0 -79
  110. package/src/lib/components/Stage/components/LayerInput/LayerInput.svelte +0 -300
  111. package/src/lib/components/Stage/components/MapLayer/MapLayer.svelte +0 -196
  112. package/src/lib/components/Stage/components/MapLayer/dataSources/GifDataSource.ts +0 -265
  113. package/src/lib/components/Stage/components/MapLayer/dataSources/IMapDataSource.ts +0 -55
  114. package/src/lib/components/Stage/components/MapLayer/dataSources/ImageDataSource.ts +0 -87
  115. package/src/lib/components/Stage/components/MapLayer/dataSources/VideoDataSource.ts +0 -150
  116. package/src/lib/components/Stage/components/MapLayer/dataSources/dataSourceFactory.ts +0 -48
  117. package/src/lib/components/Stage/components/MapLayer/dataSources/index.ts +0 -16
  118. package/src/lib/components/Stage/components/MapLayer/types.ts +0 -58
  119. package/src/lib/components/Stage/components/MarkerLayer/MarkerLayer.svelte +0 -398
  120. package/src/lib/components/Stage/components/MarkerLayer/MarkerToken.svelte +0 -262
  121. package/src/lib/components/Stage/components/MarkerLayer/types.ts +0 -126
  122. package/src/lib/components/Stage/components/MeasurementLayer/MeasurementLayer.svelte +0 -364
  123. package/src/lib/components/Stage/components/MeasurementLayer/MeasurementManager.svelte +0 -473
  124. package/src/lib/components/Stage/components/MeasurementLayer/measurements/BaseMeasurement.ts +0 -427
  125. package/src/lib/components/Stage/components/MeasurementLayer/measurements/BeamMeasurement.ts +0 -105
  126. package/src/lib/components/Stage/components/MeasurementLayer/measurements/CircleMeasurement.ts +0 -98
  127. package/src/lib/components/Stage/components/MeasurementLayer/measurements/ConeMeasurement.ts +0 -163
  128. package/src/lib/components/Stage/components/MeasurementLayer/measurements/LineMeasurement.ts +0 -102
  129. package/src/lib/components/Stage/components/MeasurementLayer/measurements/RectangleMeasurement.ts +0 -120
  130. package/src/lib/components/Stage/components/MeasurementLayer/measurements/index.ts +0 -7
  131. package/src/lib/components/Stage/components/MeasurementLayer/types.ts +0 -94
  132. package/src/lib/components/Stage/components/MeasurementLayer/utils/canvasDrawing.ts +0 -357
  133. package/src/lib/components/Stage/components/MeasurementLayer/utils/distanceCalculations.ts +0 -170
  134. package/src/lib/components/Stage/components/ParticleSystem/ParticleSystem.svelte +0 -220
  135. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/ash.png +0 -0
  136. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/leaves.png +0 -0
  137. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/rain.png +0 -0
  138. package/src/lib/components/Stage/components/ParticleSystem/particles/atlases/snow.png +0 -0
  139. package/src/lib/components/Stage/components/ParticleSystem/rng.js +0 -20
  140. package/src/lib/components/Stage/components/ParticleSystem/types.ts +0 -95
  141. package/src/lib/components/Stage/components/PerformanceDebugger/PerformanceDebugger.svelte +0 -144
  142. package/src/lib/components/Stage/components/PerformanceDebugger/index.ts +0 -1
  143. package/src/lib/components/Stage/components/PerformanceOverlay/PerformanceOverlay.svelte +0 -208
  144. package/src/lib/components/Stage/components/PerformanceOverlay/index.ts +0 -1
  145. package/src/lib/components/Stage/components/PointerInputManager/PointerInputManager.svelte +0 -201
  146. package/src/lib/components/Stage/components/Scene/Scene.svelte +0 -651
  147. package/src/lib/components/Stage/components/Scene/luts.ts +0 -24
  148. package/src/lib/components/Stage/components/Scene/types.ts +0 -225
  149. package/src/lib/components/Stage/components/Stage/Stage.svelte +0 -332
  150. package/src/lib/components/Stage/components/Stage/types.ts +0 -136
  151. package/src/lib/components/Stage/components/WeatherLayer/WeatherLayer.svelte +0 -135
  152. package/src/lib/components/Stage/components/WeatherLayer/presets/AshPreset.ts +0 -71
  153. package/src/lib/components/Stage/components/WeatherLayer/presets/LeavesPreset.ts +0 -70
  154. package/src/lib/components/Stage/components/WeatherLayer/presets/RainPreset.ts +0 -68
  155. package/src/lib/components/Stage/components/WeatherLayer/presets/SnowPreset.ts +0 -70
  156. package/src/lib/components/Stage/components/WeatherLayer/presets/index.ts +0 -6
  157. package/src/lib/components/Stage/components/WeatherLayer/types.ts +0 -35
  158. package/src/lib/components/Stage/helpers/clippingPlaneStore.svelte.ts +0 -28
  159. package/src/lib/components/Stage/helpers/debugState.svelte.ts +0 -18
  160. package/src/lib/components/Stage/helpers/grid.ts +0 -548
  161. package/src/lib/components/Stage/helpers/lazyBrush.ts +0 -171
  162. package/src/lib/components/Stage/helpers/performanceMetrics.svelte.ts +0 -220
  163. package/src/lib/components/Stage/helpers/utils.ts +0 -21
  164. package/src/lib/components/Stage/index.ts +0 -49
  165. package/src/lib/components/Stage/shaders/AnnotationEffects.frag +0 -1070
  166. package/src/lib/components/Stage/shaders/Annotations.frag +0 -29
  167. package/src/lib/components/Stage/shaders/Drawing.frag +0 -83
  168. package/src/lib/components/Stage/shaders/Drawing.vert +0 -5
  169. package/src/lib/components/Stage/shaders/Fog.frag +0 -147
  170. package/src/lib/components/Stage/shaders/FractalNoise.frag +0 -96
  171. package/src/lib/components/Stage/shaders/GridShader.frag +0 -174
  172. package/src/lib/components/Stage/shaders/Overlay.frag +0 -23
  173. package/src/lib/components/Stage/shaders/Overlay.vert +0 -0
  174. package/src/lib/components/Stage/shaders/Particles.frag +0 -27
  175. package/src/lib/components/Stage/shaders/Particles.vert +0 -51
  176. package/src/lib/components/Stage/shaders/ToolOutline.frag +0 -59
  177. package/src/lib/components/Stage/shaders/default.vert +0 -8
  178. package/src/lib/components/Stage/types.ts +0 -4
  179. package/src/lib/components/Table/Table.svelte +0 -16
  180. package/src/lib/components/Table/Td.svelte +0 -17
  181. package/src/lib/components/Table/Th.svelte +0 -18
  182. package/src/lib/components/Table/index.ts +0 -4
  183. package/src/lib/components/Table/types.ts +0 -14
  184. package/src/lib/components/Text/Text.svelte +0 -23
  185. package/src/lib/components/Text/index.ts +0 -2
  186. package/src/lib/components/Text/types.ts +0 -12
  187. package/src/lib/components/Title/Title.svelte +0 -54
  188. package/src/lib/components/Title/index.ts +0 -2
  189. package/src/lib/components/Title/types.ts +0 -9
  190. package/src/lib/components/Toast/Toast.svelte +0 -155
  191. package/src/lib/components/Toast/index.ts +0 -5
  192. package/src/lib/components/Toast/toastCookie.ts +0 -24
  193. package/src/lib/components/Toast/types.ts +0 -6
  194. package/src/lib/components/ToolTip/ToolTip.svelte +0 -70
  195. package/src/lib/components/ToolTip/index.ts +0 -2
  196. package/src/lib/components/ToolTip/types.ts +0 -14
  197. package/src/lib/components/index.ts +0 -32
  198. package/src/lib/components/types.ts +0 -0
  199. package/src/lib/index.ts +0 -2
  200. package/src/lib/styles/globals.css +0 -108
  201. package/src/lib/styles/normalize.css +0 -9
  202. package/src/lib/styles/reset.css +0 -133
  203. package/src/lib/styles/utilities.css +0 -179
  204. package/src/lib/styles/vars.css +0 -1103
  205. package/src/lib/types/awareness.ts +0 -17
  206. package/src/lib/utils/rle.ts +0 -217
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import jsonData from '../../../../typedocgen.json';
2
+ import jsonData from '@tableslayer/ui/typedoc.json';
3
3
  import Markdown from '@magidoc/plugin-svelte-marked';
4
4
  import { Table, Th, Td, Title, Spacer } from '@tableslayer/ui';
5
5
  export let componentName = '';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tableslayer/ui",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "license": "FSL-1.1-ALv2",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,7 +17,7 @@
17
17
  ],
18
18
  "homepage": "https://github.com/Siege-Perilous/tableslayer/tree/main/packages/ui",
19
19
  "scripts": {
20
- "dev": "typedoc && pnpm check:watch",
20
+ "dev": "svelte-package --watch",
21
21
  "build": "svelte-kit sync && vite build && npm run package",
22
22
  "preview": "vite preview",
23
23
  "tsc": "tsc",
@@ -31,12 +31,13 @@
31
31
  },
32
32
  "exports": {
33
33
  ".": {
34
- "types": "./src/lib/index.d.ts",
35
- "svelte": "./src/lib/index.ts"
34
+ "types": "./dist/index.d.ts",
35
+ "svelte": "./dist/index.js",
36
+ "default": "./dist/index.js"
36
37
  },
37
38
  "./styles/*.css": {
38
- "import": "./src/lib/styles/*.css",
39
- "require": "./src/lib/styles/*.css"
39
+ "import": "./dist/styles/*.css",
40
+ "require": "./dist/styles/*.css"
40
41
  },
41
42
  "./typedoc.json": {
42
43
  "import": "./typedocgen.json",
@@ -45,7 +46,6 @@
45
46
  },
46
47
  "files": [
47
48
  "dist",
48
- "src/lib",
49
49
  "!dist/**/*.test.*",
50
50
  "!dist/**/*.spec.*"
51
51
  ],
@@ -93,7 +93,7 @@
93
93
  "uuid": "^13.0.0",
94
94
  "zod": "^4.3.6"
95
95
  },
96
- "svelte": "./src/lib/index.ts",
97
- "types": "./src/lib/index.d.ts",
96
+ "svelte": "./dist/index.js",
97
+ "types": "./dist/index.d.ts",
98
98
  "type": "module"
99
99
  }
@@ -1,82 +0,0 @@
1
- <script lang="ts">
2
- import type { AvatarProps } from './types';
3
- let { src, alt, initials, variant = 'round', size = 'sm', isLoading, ...restProps }: AvatarProps = $props();
4
- import { createAvatar, melt } from '@melt-ui/svelte';
5
-
6
- let avatarClasses = $derived([
7
- 'avatar',
8
- `avatar--${size}`,
9
- isLoading && 'isLoading',
10
- `avatar--${variant}`,
11
- restProps.class
12
- ]);
13
-
14
- const {
15
- elements: { fallback }
16
- } = createAvatar({
17
- src: src || ''
18
- });
19
- </script>
20
-
21
- <div class={avatarClasses}>
22
- <img {src} {alt} class="avatar__image" />
23
- <span use:melt={$fallback} class="avatar__text">{initials}</span>
24
- </div>
25
-
26
- <style>
27
- .avatar {
28
- width: 40px;
29
- height: 40px;
30
- border-radius: 50%;
31
- background: var(--fg);
32
- color: var(--bg);
33
- display: flex;
34
- align-items: center;
35
- justify-content: center;
36
- border: 2px solid var(--fg);
37
- }
38
- .avatar--round {
39
- border-radius: 50%;
40
- }
41
- .avatar--square {
42
- border-radius: var(--radius-2);
43
- .avatar__image {
44
- border-radius: var(--radius-2);
45
- }
46
- }
47
- .avatar--sm {
48
- width: 1.5rem;
49
- height: 1.5rem;
50
- min-width: 1.5rem;
51
- min-height: 1.5rem;
52
- font-size: 0.875rem;
53
- }
54
- .avatar--md {
55
- width: 2rem;
56
- height: 2rem;
57
- min-width: 2rem;
58
- min-height: 2rem;
59
- font-size: var(--font-size-4);
60
- }
61
- .avatar--lg {
62
- width: 2.5rem;
63
- height: 2.5rem;
64
- min-width: 2.5rem;
65
- min-height: 2.5rem;
66
- }
67
- .avatar--xl {
68
- width: 5rem;
69
- height: 5rem;
70
- min-width: 5rem;
71
- min-height: 5rem;
72
- }
73
- .avatar__image {
74
- width: 100%;
75
- height: 100%;
76
- object-fit: cover;
77
- border-radius: 50%;
78
- }
79
- .avatar__text {
80
- font-weight: var(--font-weight-6);
81
- }
82
- </style>
@@ -1,85 +0,0 @@
1
- <script lang="ts">
2
- import { Avatar, Icon, type AvatarFileInputProps } from '../';
3
- import { IconPhotoCirclePlus } from '@tabler/icons-svelte';
4
-
5
- let {
6
- files = $bindable(),
7
- src,
8
- alt,
9
- initials,
10
- isLoading,
11
- size = 'xl',
12
- variant = 'round',
13
- onChange,
14
- ...restProps
15
- }: AvatarFileInputProps = $props();
16
-
17
- let avatarPreviewUrl = $state<string | null>(src ?? null);
18
- let hiddenFileInput: HTMLInputElement | null = null;
19
-
20
- function openFileDialog() {
21
- hiddenFileInput?.click();
22
- }
23
-
24
- async function handleFileChange(event: Event) {
25
- const input = event.target as HTMLInputElement;
26
- if (!input.files || input.files.length === 0) return;
27
-
28
- const file = input.files[0];
29
- avatarPreviewUrl = URL.createObjectURL(file);
30
- if (onChange) {
31
- onChange();
32
- }
33
- input.value = '';
34
- }
35
- </script>
36
-
37
- <div
38
- role="button"
39
- onkeydown={(e) => {
40
- if (e.key === 'Enter' || e.key === ' ') {
41
- openFileDialog();
42
- }
43
- }}
44
- aria-label="Change Avatar"
45
- tabindex="0"
46
- onclick={openFileDialog}
47
- class={['avatarFileInput', restProps.class]}
48
- >
49
- <Avatar src={avatarPreviewUrl || src} {alt} {initials} {isLoading} {size} {variant} {...restProps} />
50
- <div class="avatarFileInput__overlay">
51
- <Icon Icon={IconPhotoCirclePlus} size="2rem" stroke={2} />
52
- </div>
53
- <input
54
- type="file"
55
- bind:files
56
- accept="image/*"
57
- bind:this={hiddenFileInput}
58
- onchange={handleFileChange}
59
- style={'display: none;'}
60
- />
61
- </div>
62
-
63
- <style>
64
- .avatarFileInput {
65
- position: relative;
66
- display: flex;
67
- align-items: center;
68
- justify-content: center;
69
- cursor: pointer;
70
- }
71
- .avatarFileInput__overlay {
72
- position: absolute;
73
- width: calc(100% - 4px);
74
- height: calc(100% - 4px);
75
- display: flex;
76
- align-items: center;
77
- justify-content: center;
78
- background: rgba(0, 0, 0, 0.8);
79
- border-radius: 50%;
80
- opacity: 0;
81
- }
82
- .avatarFileInput:hover .avatarFileInput__overlay {
83
- opacity: 1;
84
- }
85
- </style>
@@ -1,34 +0,0 @@
1
- <script lang="ts">
2
- import { Avatar, Popover, Icon } from '../';
3
- import type { AvatarPopoverProps } from './types';
4
- let {
5
- src,
6
- size = 'md',
7
- positioning = { placement: 'bottom' },
8
- content: AvatarPopoverContent
9
- }: AvatarPopoverProps = $props();
10
- import { IconChevronDown } from '@tabler/icons-svelte';
11
- </script>
12
-
13
- <Popover {positioning}>
14
- {#snippet trigger()}
15
- <div class="avatarPopoverTrigger">
16
- <Avatar {src} {size} />
17
- <Icon Icon={IconChevronDown} />
18
- </div>
19
- {/snippet}
20
- {#snippet content()}
21
- {@render AvatarPopoverContent()}
22
- {/snippet}
23
- </Popover>
24
-
25
- <style>
26
- .avatarPopoverTrigger {
27
- display: flex;
28
- align-items: center;
29
- gap: var(--size-1);
30
- padding-right: var(--size-2);
31
- background: var(--contrastMedium);
32
- border-radius: var(--radius-3);
33
- }
34
- </style>
@@ -1,4 +0,0 @@
1
- export { default as Avatar } from './Avatar.svelte';
2
- export { default as AvatarFileInput } from './AvatarFileInput.svelte';
3
- export { default as AvatarPopover } from './AvatarPopover.svelte';
4
- export * from './types';
@@ -1,24 +0,0 @@
1
- import type { FloatingConfig } from '@melt-ui/svelte/internal/actions';
2
- import type { Snippet } from 'svelte';
3
- import type { HTMLBaseAttributes } from 'svelte/elements';
4
-
5
- export type AvatarProps = {
6
- src?: string;
7
- alt?: string;
8
- initials?: string;
9
- isLoading?: boolean;
10
- size?: 'sm' | 'md' | 'lg' | 'xl';
11
- variant?: 'round' | 'square';
12
- } & HTMLBaseAttributes;
13
-
14
- export type AvatarPopoverProps = {
15
- src: AvatarProps['src'];
16
- size?: AvatarProps['size'];
17
- content: Snippet;
18
- positioning?: FloatingConfig;
19
- };
20
-
21
- export type AvatarFileInputProps = AvatarProps & {
22
- files?: FileList | null;
23
- onChange?: () => void;
24
- };
@@ -1,174 +0,0 @@
1
- <script lang="ts">
2
- interface Props {
3
- brushSize: number;
4
- onBrushSizeChange: (value: number) => void;
5
- min?: number;
6
- max?: number;
7
- curve?: 'linear' | 'quadratic';
8
- displayAsPercentage?: boolean;
9
- }
10
-
11
- let {
12
- brushSize,
13
- onBrushSizeChange,
14
- min = 1,
15
- max = 200,
16
- curve = 'quadratic',
17
- displayAsPercentage = false
18
- }: Props = $props();
19
-
20
- // For quadratic curve: size = coefficient * slider^2
21
- // We want: at slider=50%, size should be at the midpoint between min and max
22
- // midpoint = (min + max) / 2
23
- // So: midpoint = coefficient * 50^2
24
- // coefficient = midpoint / 2500
25
- const midpoint = (min + max) / 2;
26
- const coefficient = midpoint / 2500;
27
-
28
- const brushSizeToSlider = (size: number): number => {
29
- const clampedSize = Math.max(min, Math.min(max, size));
30
-
31
- if (curve === 'linear') {
32
- // Linear: map size range to 0-100 slider range
33
- return ((clampedSize - min) / (max - min)) * 100;
34
- } else {
35
- // Quadratic: inverse of size = coefficient * slider^2
36
- return Math.sqrt(clampedSize / coefficient);
37
- }
38
- };
39
-
40
- const sliderToBrushSize = (slider: number): number => {
41
- if (curve === 'linear') {
42
- // Linear mapping from slider (0-100) to size range (min-max)
43
- const size = min + (slider / 100) * (max - min);
44
- // For linear curve (used by fog), keep decimal precision
45
- // Round to 1 decimal place
46
- return Math.max(min, Math.min(max, Math.round(size * 10) / 10));
47
- } else {
48
- // Quadratic curve (used by annotations)
49
- const size = coefficient * slider * slider;
50
- // For quadratic, we can round to integers as the range is small decimals (0.01-5.0)
51
- // but we need to preserve decimal precision, so round to 2 decimal places
52
- return Math.max(min, Math.min(max, Math.round(size * 100) / 100));
53
- }
54
- };
55
-
56
- let brushSliderValue = $derived(brushSizeToSlider(brushSize));
57
-
58
- const handleBrushSliderChange = (value: number) => {
59
- const actualSize = sliderToBrushSize(value);
60
- console.log('[BrushSizeSlider] Slider change:', {
61
- sliderValue: value,
62
- actualSize,
63
- min,
64
- max,
65
- curve
66
- });
67
- onBrushSizeChange(actualSize);
68
- };
69
-
70
- // Touch event handlers for better mobile support
71
- const handleTouchStart = (e: TouchEvent) => {
72
- // Prevent default to avoid conflicts with other touch interactions
73
- e.stopPropagation();
74
- };
75
-
76
- const handleTouchMove = (e: TouchEvent) => {
77
- // Prevent scrolling while adjusting sliders
78
- e.preventDefault();
79
- e.stopPropagation();
80
- };
81
- </script>
82
-
83
- <div class="brushSizeSlider">
84
- <input
85
- id="brush-size-slider"
86
- type="range"
87
- class="brushSizeSlider__input"
88
- min="0"
89
- max="100"
90
- step="0.1"
91
- value={brushSliderValue}
92
- oninput={(e) => handleBrushSliderChange(Number(e.currentTarget.value))}
93
- ontouchstart={handleTouchStart}
94
- ontouchmove={handleTouchMove}
95
- />
96
- <div class="brushSizeSlider__value">{displayAsPercentage ? `${brushSize.toFixed(1)}%` : brushSize}</div>
97
- </div>
98
-
99
- <style>
100
- .brushSizeSlider {
101
- display: flex;
102
- flex-direction: column;
103
- align-items: center;
104
- gap: 1rem;
105
- }
106
-
107
- .brushSizeSlider__input {
108
- writing-mode: vertical-lr;
109
- direction: rtl;
110
- width: 32px;
111
- height: 120px;
112
- -webkit-appearance: none;
113
- appearance: none;
114
- background: var(--contrastLow);
115
- border-radius: var(--radius-1);
116
- cursor: pointer;
117
- touch-action: none;
118
- outline: none;
119
- }
120
-
121
- /* Webkit browsers (Chrome, Safari, Edge) */
122
- .brushSizeSlider__input::-webkit-slider-track {
123
- width: 32px;
124
- height: 120px;
125
- background: transparent;
126
- border: none;
127
- }
128
-
129
- .brushSizeSlider__input::-webkit-slider-thumb {
130
- -webkit-appearance: none;
131
- appearance: none;
132
- width: 32px;
133
- height: 14px;
134
- background: var(--contrastHigh);
135
- border: none;
136
- border-radius: var(--radius-1);
137
- cursor: grab;
138
- box-shadow: 0 0px 2px rgba(0, 0, 0, 0.2);
139
- }
140
-
141
- .brushSizeSlider__input::-webkit-slider-thumb:active {
142
- cursor: grabbing;
143
- }
144
-
145
- /* Firefox */
146
- .brushSizeSlider__input::-moz-range-track {
147
- width: 32px;
148
- height: 120px;
149
- background: var(--contrastLow);
150
- border-radius: var(--radius-2);
151
- }
152
-
153
- .brushSizeSlider__input::-moz-range-thumb {
154
- width: 32px;
155
- height: 14px;
156
- background: var(--contrastHigh);
157
- border: none;
158
- border-radius: var(--radius-2);
159
- cursor: grab;
160
- box-shadow: 0 0px 2px rgba(0, 0, 0, 0.2);
161
- }
162
-
163
- .brushSizeSlider__input::-moz-range-thumb:active {
164
- cursor: grabbing;
165
- }
166
-
167
- .brushSizeSlider__value {
168
- font-size: 0.875rem;
169
- font-weight: 600;
170
- color: var(--fg);
171
- min-width: 3rem;
172
- text-align: center;
173
- }
174
- </style>
@@ -1 +0,0 @@
1
- export { default as BrushSizeSlider } from './BrushSizeSlider.svelte';
@@ -1,182 +0,0 @@
1
- <script lang="ts">
2
- import type { ButtonProps } from './types';
3
- import { Loader } from '../Loading';
4
- /* @type {ButtonProps} */
5
- let {
6
- children,
7
- start,
8
- end,
9
- isLoading = false,
10
- isDisabled = false,
11
- size = 'md',
12
- variant = 'primary',
13
- href,
14
- as,
15
- ...restProps
16
- }: ButtonProps = $props();
17
-
18
- let btnClasses = $derived([
19
- 'btn',
20
- `btn--${size}`,
21
- isLoading && 'btn-isLoading',
22
- isDisabled && 'btn--isDisabled',
23
- `btn--${variant}`,
24
- restProps.class ?? ''
25
- ]);
26
-
27
- const component = as !== undefined ? as : href !== undefined ? 'a' : 'button';
28
-
29
- let buttonProps = $state({});
30
- if (component === 'button') {
31
- buttonProps = { disabled: isDisabled };
32
- } else if (component === 'a') {
33
- buttonProps = { href };
34
- }
35
- </script>
36
-
37
- <!--
38
- @component
39
- ## Button
40
-
41
- Button component is used to trigger an action or event.
42
-
43
- @example
44
- ```svelte
45
- <Button>
46
- {#snippet start()}
47
- <Icon Icon={IconCheck} />
48
- {/snippet}
49
- Primary
50
- </Button>
51
- ```
52
- @props
53
- - `variant` - The variant of the button. Default is `primary`.
54
- - `size` - The size of the button. Default is `md`.
55
- - `isLoading` - The loading state of the button. Default is `false`.
56
- - `isDisabled` - The disabled state of the button. Default is `false`.
57
- - `start` - The start snippet of the button.
58
- - `end` - The end snippet of the button.
59
- -->
60
-
61
- <svelte:element this={component} {...buttonProps} {...restProps} class={btnClasses}>
62
- {#if isLoading}
63
- <Loader />
64
- {/if}
65
- {#if start}
66
- {@render start()}
67
- {/if}
68
- {@render children()}
69
- {#if end}
70
- {@render end()}
71
- {/if}
72
- </svelte:element>
73
-
74
- <style>
75
- :global(.light) {
76
- color-scheme: light;
77
- --btn-bg: var(--contrastEmpty);
78
- --btn-bgHover: var(--primary-50);
79
- --btn-border: solid 2px var(--fg);
80
- --btn-borderHover: solid 2px var(--primary-600);
81
- --btn-color: var(--fg);
82
- --btn-dangerStripesHover: var(--primary-300);
83
- --btn-bgSpecial: var(--primary-100);
84
- }
85
-
86
- :global(.dark) {
87
- color-scheme: dark;
88
- --btn-bg: var(--bg);
89
- --btn-bgHover: var(--primary-950);
90
- --btn-border: solid 2px var(--fg);
91
- --btn-borderHover: solid 2px var(--primary-500);
92
- --btn-color: var(--fg);
93
- --btn-dangerStripesHover: var(--primary-700);
94
- --btn-bgSpecial: var(--primary-900);
95
- }
96
-
97
- .btn {
98
- color: var(--btn-color);
99
- background-color: var(--btn-bg);
100
- padding: 0 var(--size-2);
101
- border-radius: var(--radius-2);
102
- display: inline-flex;
103
- align-items: center;
104
- justify-content: center;
105
- gap: var(--size-2);
106
- cursor: pointer;
107
- border: var(--btn-border);
108
- border-color: transparent;
109
- font-family: var(--font-sans);
110
- font-weight: 600;
111
- white-space: nowrap;
112
- }
113
-
114
- .btn--sm {
115
- font-size: var(--font-size-1);
116
- height: var(--size-6);
117
- }
118
- .btn--md {
119
- font-size: var(--font-size-1);
120
- height: var(--size-8);
121
- }
122
- .btn--lg {
123
- font-size: var(--font-size-2);
124
- height: var(--size-9);
125
- }
126
-
127
- .btn--primary {
128
- border-color: var(--fg);
129
- }
130
- .btn--danger {
131
- border-color: var(--fg);
132
- background-image: linear-gradient(
133
- 135deg,
134
- transparent 10%,
135
- transparent 10%,
136
- transparent 50%,
137
- color-mix(in srgb, var(--fg), transparent 40%) 50%,
138
- color-mix(in srgb, var(--fg), transparent 40%) 50%,
139
- transparent 60%,
140
- transparent 100%
141
- );
142
- background-size: 14.14px 14.14px;
143
- text-shadow: 0 0 4px var(--bg);
144
- }
145
- .btn--danger:hover {
146
- background-image: linear-gradient(
147
- 135deg,
148
- transparent 10%,
149
- transparent 10%,
150
- transparent 50%,
151
- var(--btn-dangerStripesHover),
152
- var(--btn-dangerStripesHover),
153
- transparent 60%,
154
- transparent 100%
155
- );
156
- }
157
- .btn--special {
158
- border: var(--btn-borderHover);
159
- background: var(--btn-bgSpecial);
160
- }
161
- .btn:hover {
162
- background-color: var(--btn-bgHover);
163
- border: var(--btn-borderHover);
164
- }
165
- .btn--isDisabled {
166
- cursor: pointer;
167
- }
168
- .btn--ghost {
169
- background: none;
170
- border-color: transparent;
171
- }
172
- .btn--link {
173
- background: none;
174
- border-color: transparent;
175
- color: var(--fgPrimary);
176
- }
177
- .btn--link:hover {
178
- background: none;
179
- border-color: transparent;
180
- text-decoration: underline;
181
- }
182
- </style>