@streamscloud/kit 0.1.9 → 0.1.10

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 (48) hide show
  1. package/dist/core/utils/color-helper.d.ts +13 -0
  2. package/dist/core/utils/color-helper.js +39 -0
  3. package/dist/core/utils/index.d.ts +1 -0
  4. package/dist/core/utils/index.js +1 -0
  5. package/dist/ui/color-picker/cmp.color-picker.svelte +150 -0
  6. package/dist/ui/color-picker/cmp.color-picker.svelte.d.ts +33 -0
  7. package/dist/ui/color-picker/cmp.input-stub.svelte +98 -0
  8. package/dist/ui/color-picker/cmp.input-stub.svelte.d.ts +40 -0
  9. package/dist/ui/color-picker/color-picker-localization.d.ts +3 -0
  10. package/dist/ui/color-picker/color-picker-localization.js +12 -0
  11. package/dist/ui/color-picker/index.d.ts +1 -0
  12. package/dist/ui/color-picker/index.js +1 -0
  13. package/dist/ui/cropper/image-editor-dialog/cmp.image-editor-dialog.svelte +109 -0
  14. package/dist/ui/cropper/image-editor-dialog/cmp.image-editor-dialog.svelte.d.ts +9 -0
  15. package/dist/ui/cropper/image-editor-dialog/image-editor-dialog-localization.d.ts +6 -0
  16. package/dist/ui/cropper/image-editor-dialog/image-editor-dialog-localization.js +33 -0
  17. package/dist/ui/cropper/image-editor-dialog/index.d.ts +21 -0
  18. package/dist/ui/cropper/image-editor-dialog/index.js +25 -0
  19. package/dist/ui/cropper/image-editor-dialog/types.d.ts +25 -0
  20. package/dist/ui/cropper/image-editor-dialog/types.js +1 -0
  21. package/dist/ui/cropper/img-cropper/cmp.img-cropper-controls.svelte +67 -0
  22. package/dist/ui/cropper/img-cropper/cmp.img-cropper-controls.svelte.d.ts +21 -0
  23. package/dist/ui/cropper/img-cropper/cmp.img-cropper-toolbar.svelte +228 -0
  24. package/dist/ui/cropper/img-cropper/cmp.img-cropper-toolbar.svelte.d.ts +28 -0
  25. package/dist/ui/cropper/img-cropper/cmp.img-cropper.svelte +198 -0
  26. package/dist/ui/cropper/img-cropper/cmp.img-cropper.svelte.d.ts +58 -0
  27. package/dist/ui/cropper/img-cropper/cropperjs-elements.d.ts +33 -0
  28. package/dist/ui/cropper/img-cropper/img-cropper-contain-worker.svelte.d.ts +40 -0
  29. package/dist/ui/cropper/img-cropper/img-cropper-contain-worker.svelte.js +159 -0
  30. package/dist/ui/cropper/img-cropper/img-cropper-cover-worker.svelte.d.ts +40 -0
  31. package/dist/ui/cropper/img-cropper/img-cropper-cover-worker.svelte.js +163 -0
  32. package/dist/ui/cropper/img-cropper/img-cropper-localization.d.ts +6 -0
  33. package/dist/ui/cropper/img-cropper/img-cropper-localization.js +33 -0
  34. package/dist/ui/cropper/img-cropper/img-cropper-toolbar-localization.d.ts +11 -0
  35. package/dist/ui/cropper/img-cropper/img-cropper-toolbar-localization.js +68 -0
  36. package/dist/ui/cropper/img-cropper/img-cropper-utils.d.ts +32 -0
  37. package/dist/ui/cropper/img-cropper/img-cropper-utils.js +138 -0
  38. package/dist/ui/cropper/img-cropper/img-cropper-worker.svelte.d.ts +39 -0
  39. package/dist/ui/cropper/img-cropper/img-cropper-worker.svelte.js +1 -0
  40. package/dist/ui/cropper/img-cropper/img-cropper.svelte.d.ts +81 -0
  41. package/dist/ui/cropper/img-cropper/img-cropper.svelte.js +160 -0
  42. package/dist/ui/cropper/img-cropper/index.d.ts +4 -0
  43. package/dist/ui/cropper/img-cropper/index.js +4 -0
  44. package/dist/ui/icon-text/cmp.icon-text.svelte +90 -0
  45. package/dist/ui/icon-text/cmp.icon-text.svelte.d.ts +39 -0
  46. package/dist/ui/icon-text/index.d.ts +1 -0
  47. package/dist/ui/icon-text/index.js +1 -0
  48. package/package.json +27 -5
@@ -0,0 +1,39 @@
1
+ import type { CropperCanvas, CropperImage, CropperSelection } from 'cropperjs';
2
+ export type DragMode = 'move' | 'crop';
3
+ export type ImgCropperWorkerParams = {
4
+ originalSrc: string;
5
+ image: CropperImage;
6
+ selection: CropperSelection;
7
+ canvas: CropperCanvas;
8
+ selectHandle: HTMLElement | null;
9
+ };
10
+ export interface ImgCropperWorker {
11
+ cropBoxVisible: boolean;
12
+ dragMode: DragMode;
13
+ naturalWidth: number;
14
+ naturalHeight: number;
15
+ canvasRatio: number | null;
16
+ destroy: () => void;
17
+ ready: () => Promise<void>;
18
+ rotate: () => void | Promise<void>;
19
+ zoomIn: () => void;
20
+ zoomOut: () => void;
21
+ reset: () => Promise<void>;
22
+ crop: (options?: {
23
+ fillColor?: string;
24
+ freeRatio?: boolean;
25
+ }) => Promise<{
26
+ dataUrl: string;
27
+ width: number;
28
+ height: number;
29
+ }>;
30
+ save: (options?: {
31
+ fillColor?: string;
32
+ }) => Promise<{
33
+ dataUrl: string;
34
+ width: number;
35
+ height: number;
36
+ }>;
37
+ clearSelection: () => void;
38
+ enableCropMode: () => void;
39
+ }
@@ -0,0 +1,81 @@
1
+ import type { DragMode } from './img-cropper-worker.svelte';
2
+ import type { CropperCanvas, CropperImage, CropperSelection } from 'cropperjs';
3
+ export type CropperMode = 'contain' | 'cover';
4
+ export type CorsMode = 'native' | 'fetch';
5
+ export type { DragMode };
6
+ export type ImgCropperRatioOption = {
7
+ label: string;
8
+ value: number | null;
9
+ };
10
+ export type ImgCropperCoverAspectRatio = {
11
+ initial: number;
12
+ supported: number[];
13
+ };
14
+ export type ImgCropperContainAspectRatio = {
15
+ initial: number;
16
+ supported: number[];
17
+ allowFreeCrop?: false;
18
+ } | {
19
+ initial?: number;
20
+ supported: number[];
21
+ allowFreeCrop: true;
22
+ };
23
+ export type ImgCropperSaveResult = {
24
+ dataUrl: string;
25
+ width: number;
26
+ height: number;
27
+ };
28
+ type ImgCropperOptionsBase = {
29
+ corsMode?: CorsMode;
30
+ fillColor?: string;
31
+ showImageShadow?: boolean;
32
+ };
33
+ export type ImgCropperOptions = (ImgCropperOptionsBase & {
34
+ mode: 'cover';
35
+ aspectRatio?: number | ImgCropperCoverAspectRatio;
36
+ }) | (ImgCropperOptionsBase & {
37
+ mode: 'contain';
38
+ aspectRatio?: number | ImgCropperContainAspectRatio;
39
+ });
40
+ export declare class ImgCropper {
41
+ loading: boolean;
42
+ ready: boolean;
43
+ fillColor: string;
44
+ aspectRatio: number | null;
45
+ readonly mode: CropperMode;
46
+ readonly corsMode: CorsMode;
47
+ readonly ratioOptions: ImgCropperRatioOption[] | null;
48
+ readonly showImageShadow: boolean;
49
+ private _worker;
50
+ private _originalSrc;
51
+ constructor(options: ImgCropperOptions);
52
+ get showFillColor(): boolean;
53
+ get isTransparentFill(): boolean;
54
+ get effectiveCanvasRatio(): number | null;
55
+ get naturalWidth(): number;
56
+ get naturalHeight(): number;
57
+ get cropBoxVisible(): boolean;
58
+ get dragMode(): DragMode;
59
+ init: (params: {
60
+ src: string;
61
+ cropperImage: CropperImage;
62
+ cropperSelection: CropperSelection;
63
+ cropperCanvas: CropperCanvas;
64
+ selectHandle: HTMLElement | null;
65
+ }) => Promise<void>;
66
+ destroy: () => void;
67
+ rotate: () => Promise<void>;
68
+ zoomIn: () => void;
69
+ zoomOut: () => void;
70
+ reset: () => Promise<void>;
71
+ changeAspectRatio: (ratio: number | null) => Promise<void>;
72
+ crop: () => Promise<{
73
+ dataUrl: string;
74
+ width: number;
75
+ height: number;
76
+ } | null>;
77
+ save: () => Promise<ImgCropperSaveResult | null>;
78
+ clearSelection: () => void;
79
+ enableCropMode: () => void;
80
+ enableMoveMode: () => void;
81
+ }
@@ -0,0 +1,160 @@
1
+ import { FileWithBlobDataHelper } from '../../../core/files';
2
+ import { ColorHelper, Utils } from '../../../core/utils';
3
+ import { ImgCropperContainWorker } from './img-cropper-contain-worker.svelte';
4
+ import { ImgCropperCoverWorker } from './img-cropper-cover-worker.svelte';
5
+ export class ImgCropper {
6
+ loading = $state(false);
7
+ ready = $state(false);
8
+ fillColor = $state('');
9
+ aspectRatio = $state(null);
10
+ mode;
11
+ corsMode;
12
+ ratioOptions;
13
+ showImageShadow;
14
+ _worker = $state.raw(null);
15
+ _originalSrc = null;
16
+ constructor(options) {
17
+ this.mode = options.mode;
18
+ this.corsMode = options.corsMode ?? 'native';
19
+ this.fillColor = options.fillColor ?? '';
20
+ this.showImageShadow = options.showImageShadow ?? true;
21
+ const toOption = (r) => {
22
+ if (r === 0) {
23
+ return { label: '', value: null };
24
+ }
25
+ const ldd = Utils.ldd(r);
26
+ return ldd ? { label: `${ldd.dividend}:${ldd.divisor}`, value: r } : { label: String(r), value: r };
27
+ };
28
+ const toRatioOptions = (items) => (items.length >= 2 ? items : null);
29
+ if (options.aspectRatio === undefined || typeof options.aspectRatio === 'number') {
30
+ this.aspectRatio = options.aspectRatio ?? null;
31
+ this.ratioOptions = null;
32
+ }
33
+ else if (options.mode === 'cover') {
34
+ const dynamic = options.aspectRatio;
35
+ this.aspectRatio = dynamic.initial;
36
+ const supported = [...dynamic.supported];
37
+ if (!supported.includes(dynamic.initial)) {
38
+ supported.unshift(dynamic.initial);
39
+ }
40
+ this.ratioOptions = toRatioOptions(supported.map(toOption));
41
+ }
42
+ else {
43
+ const dynamic = options.aspectRatio;
44
+ const initialRatio = dynamic.initial ?? (dynamic.allowFreeCrop ? null : (dynamic.supported[0] ?? null));
45
+ this.aspectRatio = initialRatio;
46
+ const supported = [...dynamic.supported];
47
+ if (initialRatio !== null && !supported.includes(initialRatio)) {
48
+ supported.unshift(initialRatio);
49
+ }
50
+ if (dynamic.allowFreeCrop) {
51
+ supported.unshift(0);
52
+ }
53
+ this.ratioOptions = toRatioOptions(supported.map(toOption));
54
+ }
55
+ }
56
+ get showFillColor() {
57
+ return this.mode === 'contain';
58
+ }
59
+ get isTransparentFill() {
60
+ return ColorHelper.isTransparent(this.fillColor);
61
+ }
62
+ get effectiveCanvasRatio() {
63
+ return this.aspectRatio ?? this._worker?.canvasRatio ?? null;
64
+ }
65
+ get naturalWidth() {
66
+ return this._worker?.naturalWidth ?? 0;
67
+ }
68
+ get naturalHeight() {
69
+ return this._worker?.naturalHeight ?? 0;
70
+ }
71
+ get cropBoxVisible() {
72
+ return this._worker?.cropBoxVisible ?? false;
73
+ }
74
+ get dragMode() {
75
+ return this._worker?.dragMode ?? 'move';
76
+ }
77
+ init = async (params) => {
78
+ this.destroy();
79
+ this.loading = true;
80
+ try {
81
+ let resolvedSrc = params.src;
82
+ if (this.corsMode === 'fetch') {
83
+ const file = await FileWithBlobDataHelper.fromUrl(params.src);
84
+ resolvedSrc = file ? file.blobUrl : params.src;
85
+ this._originalSrc = resolvedSrc;
86
+ }
87
+ const workerParams = {
88
+ originalSrc: resolvedSrc,
89
+ image: params.cropperImage,
90
+ selection: params.cropperSelection,
91
+ canvas: params.cropperCanvas,
92
+ selectHandle: params.selectHandle
93
+ };
94
+ this._worker = this.mode === 'cover' ? new ImgCropperCoverWorker(workerParams) : new ImgCropperContainWorker(workerParams);
95
+ await this._worker.ready();
96
+ this.ready = true;
97
+ }
98
+ finally {
99
+ this.loading = false;
100
+ }
101
+ };
102
+ destroy = () => {
103
+ this._worker?.destroy();
104
+ this._worker = null;
105
+ this.ready = false;
106
+ if (this._originalSrc) {
107
+ URL.revokeObjectURL(this._originalSrc);
108
+ this._originalSrc = null;
109
+ }
110
+ };
111
+ rotate = async () => {
112
+ await this._worker?.rotate();
113
+ };
114
+ zoomIn = () => {
115
+ this._worker?.zoomIn();
116
+ };
117
+ zoomOut = () => {
118
+ this._worker?.zoomOut();
119
+ };
120
+ reset = async () => {
121
+ await this._worker?.reset();
122
+ };
123
+ changeAspectRatio = async (ratio) => {
124
+ this.aspectRatio = ratio;
125
+ await this.reset();
126
+ };
127
+ crop = async () => {
128
+ if (!this._worker) {
129
+ return null;
130
+ }
131
+ this.loading = true;
132
+ try {
133
+ return await this._worker.crop({ fillColor: this.fillColor, freeRatio: this.aspectRatio === null });
134
+ }
135
+ finally {
136
+ this.loading = false;
137
+ }
138
+ };
139
+ save = async () => {
140
+ if (!this._worker) {
141
+ return null;
142
+ }
143
+ this.loading = true;
144
+ try {
145
+ return await this._worker.save({ fillColor: this.fillColor });
146
+ }
147
+ finally {
148
+ this.loading = false;
149
+ }
150
+ };
151
+ clearSelection = () => {
152
+ this._worker?.clearSelection();
153
+ };
154
+ enableCropMode = () => {
155
+ this._worker?.enableCropMode();
156
+ };
157
+ enableMoveMode = () => {
158
+ this._worker?.clearSelection();
159
+ };
160
+ }
@@ -0,0 +1,4 @@
1
+ export { default as ImgCropperControls } from './cmp.img-cropper-controls.svelte';
2
+ export { default as ImgCropperToolbar } from './cmp.img-cropper-toolbar.svelte';
3
+ export { default as ImgCropperView } from './cmp.img-cropper.svelte';
4
+ export { type CorsMode, type CropperMode, type DragMode, ImgCropper, type ImgCropperContainAspectRatio, type ImgCropperCoverAspectRatio, type ImgCropperOptions, type ImgCropperRatioOption, type ImgCropperSaveResult } from './img-cropper.svelte';
@@ -0,0 +1,4 @@
1
+ export { default as ImgCropperControls } from './cmp.img-cropper-controls.svelte';
2
+ export { default as ImgCropperToolbar } from './cmp.img-cropper-toolbar.svelte';
3
+ export { default as ImgCropperView } from './cmp.img-cropper.svelte';
4
+ export { ImgCropper } from './img-cropper.svelte';
@@ -0,0 +1,90 @@
1
+ <script lang="ts">import { Icon } from '../icon';
2
+ let { icon, iconColor, iconPosition = 'left', trimText = false, children } = $props();
3
+ const iconAsSnippet = $derived(icon && typeof icon === 'function' ? icon : null);
4
+ const iconAsString = $derived(icon && typeof icon !== 'function' ? icon : null);
5
+ </script>
6
+
7
+ <span class="icon-text" class:icon-text--right={iconPosition === 'right'}>
8
+ <span class="icon-text__icon">
9
+ {#if iconAsSnippet}
10
+ {@render iconAsSnippet()}
11
+ {:else if iconAsString}
12
+ <Icon src={iconAsString} color={iconColor} />
13
+ {/if}
14
+ </span>
15
+ {#if children}
16
+ <span class="icon-text__text" class:icon-text__text--trim={trimText}>
17
+ {@render children()}
18
+ </span>
19
+ {/if}
20
+ </span>
21
+
22
+ <!--
23
+ @component
24
+ Displays an icon alongside text in a horizontal layout. The icon can be an SVG string
25
+ (rendered via `Icon`) or a custom `Snippet`. Use `iconPosition` to place the icon
26
+ before or after the text.
27
+
28
+ ### Props
29
+ | Prop | Type | Default | Description |
30
+ |---|---|---|---|
31
+ | `icon` | `string \| Snippet` | — | SVG string or custom snippet for the icon |
32
+ | `iconColor` | `IconColor \| null` | `null` | Color preset passed to `Icon` |
33
+ | `iconPosition` | `'left' \| 'right'` | `'left'` | Icon placement relative to text |
34
+ | `trimText` | `boolean` | `false` | Truncate text with ellipsis when overflowing |
35
+ | `children` | `Snippet` | — | Text content |
36
+
37
+ ### CSS Custom Properties
38
+ | Property | Description | Default |
39
+ |---|---|---|
40
+ | `--sc-kit--icon-text--global--font-size` | Root font size of the component | `1em` |
41
+ | `--sc-kit--icon-text--global--color` | Root text color | — |
42
+ | `--sc-kit--icon-text--text--display` | Display mode of the text slot (set `none` to hide) | `flex` |
43
+ | `--sc-kit--icon-text--text--font-size` | Font size of the text slot | `1em` |
44
+ | `--sc-kit--icon-text--icon--font-size` | Font size of the icon slot | text font size |
45
+ | `--sc-kit--icon-text--icon--color` | Icon color (also forwarded to `Icon`) | global color |
46
+ | `--sc-kit--icon-text--icon--size` | Icon width/height (forwarded to `Icon`) | `1em` |
47
+ | `--sc-kit--icon-text--gap` | Gap between icon and text | `0.5em` |
48
+ | `--sc-kit--icon-text--justify-content` | Flex justify-content | `normal` |
49
+ -->
50
+
51
+ <style>.icon-text {
52
+ --_icon-text--global--font-size: var(--sc-kit--icon-text--global--font-size, 1em);
53
+ --_icon-text--global--color: var(--sc-kit--icon-text--global--color);
54
+ --_icon-text--text--display: var(--sc-kit--icon-text--text--display, flex);
55
+ --_icon-text--text--font-size: var(--sc-kit--icon-text--text--font-size, 1em);
56
+ --_icon-text--icon--font-size: var(--sc-kit--icon-text--icon--font-size, var(--_icon-text--text--font-size));
57
+ --_icon-text--icon--color: var(--sc-kit--icon-text--icon--color);
58
+ --_icon-text--gap: var(--sc-kit--icon-text--gap, 0.5em);
59
+ --_icon-text--justify-content: var(--sc-kit--icon-text--justify-content, normal);
60
+ --_icon-text--icon--size: var(--sc-kit--icon-text--icon--size, 1em);
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: var(--_icon-text--justify-content);
64
+ font-size: var(--_icon-text--global--font-size);
65
+ gap: var(--_icon-text--gap);
66
+ color: var(--_icon-text--global--color);
67
+ min-width: 0;
68
+ }
69
+ .icon-text--right {
70
+ flex-direction: row-reverse;
71
+ }
72
+ .icon-text__text {
73
+ font-size: var(--_icon-text--text--font-size);
74
+ display: var(--_icon-text--text--display);
75
+ }
76
+ .icon-text__text--trim {
77
+ display: block;
78
+ flex: 1;
79
+ text-overflow: ellipsis;
80
+ max-width: 100%;
81
+ white-space: nowrap;
82
+ overflow: hidden;
83
+ }
84
+ .icon-text__icon {
85
+ font-size: var(--_icon-text--icon--font-size);
86
+ color: var(--_icon-text--icon--color);
87
+ display: flex;
88
+ --sc-kit--icon--color: var(--_icon-text--icon--color, var(--_icon-text--global--color));
89
+ --sc-kit--icon--size: var(--_icon-text--icon--size);
90
+ }</style>
@@ -0,0 +1,39 @@
1
+ import { type IconColor } from '../icon';
2
+ import type { Snippet } from 'svelte';
3
+ type Props = {
4
+ icon?: string | Snippet;
5
+ iconColor?: IconColor | null;
6
+ iconPosition?: 'left' | 'right';
7
+ trimText?: boolean;
8
+ children?: Snippet;
9
+ };
10
+ /**
11
+ * Displays an icon alongside text in a horizontal layout. The icon can be an SVG string
12
+ * (rendered via `Icon`) or a custom `Snippet`. Use `iconPosition` to place the icon
13
+ * before or after the text.
14
+ *
15
+ * ### Props
16
+ * | Prop | Type | Default | Description |
17
+ * |---|---|---|---|
18
+ * | `icon` | `string \| Snippet` | — | SVG string or custom snippet for the icon |
19
+ * | `iconColor` | `IconColor \| null` | `null` | Color preset passed to `Icon` |
20
+ * | `iconPosition` | `'left' \| 'right'` | `'left'` | Icon placement relative to text |
21
+ * | `trimText` | `boolean` | `false` | Truncate text with ellipsis when overflowing |
22
+ * | `children` | `Snippet` | — | Text content |
23
+ *
24
+ * ### CSS Custom Properties
25
+ * | Property | Description | Default |
26
+ * |---|---|---|
27
+ * | `--sc-kit--icon-text--global--font-size` | Root font size of the component | `1em` |
28
+ * | `--sc-kit--icon-text--global--color` | Root text color | — |
29
+ * | `--sc-kit--icon-text--text--display` | Display mode of the text slot (set `none` to hide) | `flex` |
30
+ * | `--sc-kit--icon-text--text--font-size` | Font size of the text slot | `1em` |
31
+ * | `--sc-kit--icon-text--icon--font-size` | Font size of the icon slot | text font size |
32
+ * | `--sc-kit--icon-text--icon--color` | Icon color (also forwarded to `Icon`) | global color |
33
+ * | `--sc-kit--icon-text--icon--size` | Icon width/height (forwarded to `Icon`) | `1em` |
34
+ * | `--sc-kit--icon-text--gap` | Gap between icon and text | `0.5em` |
35
+ * | `--sc-kit--icon-text--justify-content` | Flex justify-content | `normal` |
36
+ */
37
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
38
+ type Cmp = ReturnType<typeof Cmp>;
39
+ export default Cmp;
@@ -0,0 +1 @@
1
+ export { default as IconText } from './cmp.icon-text.svelte';
@@ -0,0 +1 @@
1
+ export { default as IconText } from './cmp.icon-text.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamscloud/kit",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "author": "StreamsCloud",
5
5
  "repository": {
6
6
  "type": "git",
@@ -92,26 +92,42 @@
92
92
  "types": "./dist/ui/card-actions/index.d.ts",
93
93
  "svelte": "./dist/ui/card-actions/index.js"
94
94
  },
95
+ "./ui/color-picker": {
96
+ "types": "./dist/ui/color-picker/index.d.ts",
97
+ "svelte": "./dist/ui/color-picker/index.js"
98
+ },
99
+ "./ui/cropper": {
100
+ "types": "./dist/ui/cropper/img-cropper/index.d.ts",
101
+ "svelte": "./dist/ui/cropper/img-cropper/index.js"
102
+ },
95
103
  "./ui/dialog": {
96
104
  "types": "./dist/ui/dialog/index.d.ts",
97
105
  "svelte": "./dist/ui/dialog/index.js"
98
106
  },
99
- "./ui/dynamic-component": {
100
- "types": "./dist/ui/dynamic-component/index.d.ts",
101
- "svelte": "./dist/ui/dynamic-component/index.js"
102
- },
103
107
  "./ui/dropdown": {
104
108
  "types": "./dist/ui/dropdown/index.d.ts",
105
109
  "svelte": "./dist/ui/dropdown/index.js"
106
110
  },
111
+ "./ui/dynamic-component": {
112
+ "types": "./dist/ui/dynamic-component/index.d.ts",
113
+ "svelte": "./dist/ui/dynamic-component/index.js"
114
+ },
107
115
  "./ui/icon": {
108
116
  "types": "./dist/ui/icon/index.d.ts",
109
117
  "svelte": "./dist/ui/icon/index.js"
110
118
  },
119
+ "./ui/icon-text": {
120
+ "types": "./dist/ui/icon-text/index.d.ts",
121
+ "svelte": "./dist/ui/icon-text/index.js"
122
+ },
111
123
  "./ui/image": {
112
124
  "types": "./dist/ui/image/index.d.ts",
113
125
  "svelte": "./dist/ui/image/index.js"
114
126
  },
127
+ "./ui/image-editor-dialog": {
128
+ "types": "./dist/ui/cropper/image-editor-dialog/index.d.ts",
129
+ "svelte": "./dist/ui/cropper/image-editor-dialog/index.js"
130
+ },
115
131
  "./ui/infinite-scrolling": {
116
132
  "types": "./dist/ui/infinite-scrolling/index.d.ts",
117
133
  "svelte": "./dist/ui/infinite-scrolling/index.js"
@@ -196,12 +212,15 @@
196
212
  "@fluentui/svg-icons": "^1.1.318",
197
213
  "@popperjs/core": "^2.11.8",
198
214
  "@urql/core": "^5.2.0 || ^6.0.0",
215
+ "colord": "^2.9.3",
216
+ "cropperjs": "^2.1.0",
199
217
  "dequal": "^2.0.0",
200
218
  "dompurify": "^3.3.0",
201
219
  "mime": "^4.1.0",
202
220
  "nanoid": "^5.1.6",
203
221
  "rfdc": "^1.4.1",
204
222
  "svelte": "^5.50.0",
223
+ "svelte-awesome-color-picker": "^4.1.1",
205
224
  "wheel-gestures": "^2.2.48",
206
225
  "yup": "^1.6.1"
207
226
  },
@@ -216,6 +235,8 @@
216
235
  "@types/node": "^25.2.3",
217
236
  "@urql/core": "^6.0.1",
218
237
  "autoprefixer": "^10.4.24",
238
+ "colord": "^2.9.3",
239
+ "cropperjs": "^2.1.0",
219
240
  "dequal": "^2.0.3",
220
241
  "dompurify": "^3.3.1",
221
242
  "eslint": "^9.39.2",
@@ -237,6 +258,7 @@
237
258
  "rfdc": "^1.4.1",
238
259
  "sass": "^1.97.3",
239
260
  "svelte": "^5.51.0",
261
+ "svelte-awesome-color-picker": "^4.1.1",
240
262
  "svelte-check": "^4.4.0",
241
263
  "svelte-preprocess": "^6.0.3",
242
264
  "svelte-sonner": "^1.0.7",