@finsweet/webflow-apps-utils 1.0.24 → 1.0.26
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/ui/components/button-group/ButtonGroup.stories.d.ts +45 -0
- package/dist/ui/components/button-group/ButtonGroup.svelte +8 -8
- package/dist/ui/components/button-group/ButtonGroup.svelte.d.ts +2 -11
- package/dist/ui/components/color-picker/ColorPicker.svelte +14 -23
- package/dist/ui/components/color-picker/ColorSelect.svelte +8 -1
- package/dist/ui/components/color-picker/ColorSelect.svelte.d.ts +1 -0
- package/dist/ui/components/copy-text/CopyText.svelte +40 -45
- package/dist/ui/components/section/Section.stories.svelte +1 -1
- package/dist/ui/components/section/Section.svelte +12 -50
- package/dist/ui/components/section/Section.svelte.d.ts +0 -1
- package/dist/ui/components/tooltip/Tooltip.svelte +10 -0
- package/dist/ui/components/tooltip/Tooltip.svelte.d.ts +1 -0
- package/dist/ui/icons/CMSIcon.svelte.d.ts +3 -3
- package/dist/ui/icons/DOMElement.svelte.d.ts +3 -3
- package/dist/ui/icons/XL.svelte.d.ts +3 -3
- package/dist/ui/icons/XXL.svelte.d.ts +3 -3
- package/dist/ui/icons/XXXL.svelte.d.ts +3 -3
- package/dist/ui/index.css +27 -38
- package/dist/ui/providers/globalContext.svelte.js +1 -0
- package/dist/ui/router/hooks.svelte.js +1 -0
- package/dist/ui/router/router.svelte.js +1 -0
- package/dist/ui/utils/copy.d.ts +4 -0
- package/dist/ui/utils/copy.js +7 -0
- package/dist/ui/utils/index.d.ts +1 -0
- package/dist/ui/utils/index.js +1 -0
- package/package.json +2 -4
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/sveltekit';
|
|
2
|
+
import type { ButtonGroupProps } from './types.js';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import("svelte").Component<ButtonGroupProps, {}, "selected">;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
tags: string[];
|
|
15
|
+
argTypes: {
|
|
16
|
+
buttons: {
|
|
17
|
+
control: "object";
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
selected: {
|
|
21
|
+
control: "text";
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
disabled: {
|
|
25
|
+
control: "boolean";
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
id: {
|
|
29
|
+
control: "text";
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
onselect: {
|
|
33
|
+
action: string;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export default meta;
|
|
39
|
+
type Story = StoryObj<typeof meta>;
|
|
40
|
+
export declare const Default: Story;
|
|
41
|
+
export declare const WithoutSelection: Story;
|
|
42
|
+
export declare const Disabled: Story;
|
|
43
|
+
export declare const LongLabels: Story;
|
|
44
|
+
export declare const ManyOptions: Story;
|
|
45
|
+
export declare const Interactive: Story;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
id?: string;
|
|
4
|
-
buttons?: { name: string; value: string }[];
|
|
5
|
-
selected?: string;
|
|
6
|
-
disabled?: boolean;
|
|
7
|
-
onselect?: (value: string) => void;
|
|
8
|
-
}
|
|
2
|
+
import type { ButtonGroupProps } from './types.js';
|
|
9
3
|
|
|
10
|
-
let {
|
|
4
|
+
let {
|
|
5
|
+
id,
|
|
6
|
+
buttons = [],
|
|
7
|
+
selected = $bindable(),
|
|
8
|
+
disabled = false,
|
|
9
|
+
onselect
|
|
10
|
+
}: ButtonGroupProps = $props();
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Sets selected value and dispatches the select event.
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
buttons?: {
|
|
4
|
-
name: string;
|
|
5
|
-
value: string;
|
|
6
|
-
}[];
|
|
7
|
-
selected?: string;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
onselect?: (value: string) => void;
|
|
10
|
-
}
|
|
11
|
-
declare const ButtonGroup: import("svelte").Component<Props, {}, "selected">;
|
|
1
|
+
import type { ButtonGroupProps } from './types.js';
|
|
2
|
+
declare const ButtonGroup: import("svelte").Component<ButtonGroupProps, {}, "selected">;
|
|
12
3
|
type ButtonGroup = ReturnType<typeof ButtonGroup>;
|
|
13
4
|
export default ButtonGroup;
|
|
@@ -50,28 +50,6 @@
|
|
|
50
50
|
id
|
|
51
51
|
}: Props = $props();
|
|
52
52
|
|
|
53
|
-
// Remove local inputValue state
|
|
54
|
-
// let inputValue = $state(color);
|
|
55
|
-
|
|
56
|
-
// Helper: normalize hex to 6-digit uppercase
|
|
57
|
-
// function normalizeHex(value: string): string {
|
|
58
|
-
// if (/^#[A-Fa-f0-9]{3}$/.test(value)) {
|
|
59
|
-
// return (
|
|
60
|
-
// '#' +
|
|
61
|
-
// value
|
|
62
|
-
// .slice(1)
|
|
63
|
-
// .split('')
|
|
64
|
-
// .map((c) => c + c)
|
|
65
|
-
// .join('')
|
|
66
|
-
// .toUpperCase()
|
|
67
|
-
// );
|
|
68
|
-
// }
|
|
69
|
-
// if (/^#[A-Fa-f0-9]{6}$/.test(value)) {
|
|
70
|
-
// return value.toUpperCase();
|
|
71
|
-
// }
|
|
72
|
-
// return value;
|
|
73
|
-
// }
|
|
74
|
-
|
|
75
53
|
function isValidColor(value: string): boolean {
|
|
76
54
|
const hexRegex = /^#?([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/;
|
|
77
55
|
return hexRegex.test(value.startsWith('#') ? value.slice(1) : value);
|
|
@@ -211,11 +189,19 @@
|
|
|
211
189
|
color = fullColor.hex;
|
|
212
190
|
}
|
|
213
191
|
|
|
192
|
+
function handleDragEnd() {
|
|
193
|
+
// Signal the tooltip to ignore the next click event
|
|
194
|
+
// This prevents the tooltip from closing when dragging and releasing outside
|
|
195
|
+
tooltipRef?.ignoreNextClickEvent?.();
|
|
196
|
+
}
|
|
197
|
+
|
|
214
198
|
let showColorSelect = $state(defaultShowColorSelect);
|
|
199
|
+
let tooltipRef: { ignoreNextClickEvent?: () => void } | undefined = $state();
|
|
215
200
|
</script>
|
|
216
201
|
|
|
217
202
|
<div class="color-picker">
|
|
218
203
|
<Tooltip
|
|
204
|
+
bind:this={tooltipRef}
|
|
219
205
|
listener="click"
|
|
220
206
|
listenerout="click"
|
|
221
207
|
showArrow={false}
|
|
@@ -235,7 +221,7 @@
|
|
|
235
221
|
{/snippet}
|
|
236
222
|
{#snippet tooltip()}
|
|
237
223
|
{#if showColorSelect}
|
|
238
|
-
<ColorSelect bind:color oncolorchange={handleFullColorChange} />
|
|
224
|
+
<ColorSelect bind:color oncolorchange={handleFullColorChange} ondragend={handleDragEnd} />
|
|
239
225
|
{/if}
|
|
240
226
|
{/snippet}
|
|
241
227
|
</Tooltip>
|
|
@@ -275,6 +261,11 @@
|
|
|
275
261
|
0px 4px 4px -4px rgba(0, 0, 0, 0.17) inset,
|
|
276
262
|
0px 3px 3px -3px rgba(0, 0, 0, 0.17) inset,
|
|
277
263
|
0px 1px 1px -1px rgba(0, 0, 0, 0.13) inset;
|
|
264
|
+
|
|
265
|
+
user-select: none;
|
|
266
|
+
-webkit-user-select: none;
|
|
267
|
+
-moz-user-select: none;
|
|
268
|
+
-ms-user-select: none;
|
|
278
269
|
}
|
|
279
270
|
|
|
280
271
|
.color-picker__swatch {
|
|
@@ -12,9 +12,14 @@
|
|
|
12
12
|
alpha: number;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
let {
|
|
15
|
+
let {
|
|
16
|
+
color = $bindable('#fff'),
|
|
17
|
+
oncolorchange,
|
|
18
|
+
ondragend
|
|
19
|
+
} = $props<{
|
|
16
20
|
color?: string;
|
|
17
21
|
oncolorchange?: (fullColor: ColorObject) => void;
|
|
22
|
+
ondragend?: () => void;
|
|
18
23
|
}>();
|
|
19
24
|
|
|
20
25
|
function setColor(newColor: string) {
|
|
@@ -510,6 +515,8 @@
|
|
|
510
515
|
if (isDragging) {
|
|
511
516
|
isDragging = false;
|
|
512
517
|
dragTarget = null;
|
|
518
|
+
// Signal that a drag operation just ended
|
|
519
|
+
ondragend?.();
|
|
513
520
|
}
|
|
514
521
|
|
|
515
522
|
// Reset drag detection state
|
|
@@ -24,6 +24,7 @@ interface ColorObject {
|
|
|
24
24
|
type $$ComponentProps = {
|
|
25
25
|
color?: string;
|
|
26
26
|
oncolorchange?: (fullColor: ColorObject) => void;
|
|
27
|
+
ondragend?: () => void;
|
|
27
28
|
};
|
|
28
29
|
declare const ColorSelect: import("svelte").Component<$$ComponentProps, {}, "color">;
|
|
29
30
|
type ColorSelect = ReturnType<typeof ColorSelect>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import copy from 'copy-text-to-clipboard';
|
|
3
3
|
import type { Snippet } from 'svelte';
|
|
4
|
-
import { onDestroy } from 'svelte';
|
|
5
4
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
6
5
|
|
|
7
6
|
import { CopyIcon, EyeIcon } from '../../icons';
|
|
@@ -30,7 +29,6 @@
|
|
|
30
29
|
let isCopied = $state(false);
|
|
31
30
|
let isCooldown = $state(false);
|
|
32
31
|
let copyButtonElement: HTMLDivElement | undefined = $state();
|
|
33
|
-
let clipboard: ClipboardJS | null = null;
|
|
34
32
|
|
|
35
33
|
function getProcessedContent() {
|
|
36
34
|
if (raw) {
|
|
@@ -63,50 +61,45 @@
|
|
|
63
61
|
}
|
|
64
62
|
};
|
|
65
63
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// Reset copied state after 2 seconds
|
|
94
|
-
setTimeout(() => {
|
|
95
|
-
isCopied = false;
|
|
96
|
-
}, 2000);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
clipboard.on('error', () => {
|
|
100
|
-
const errorMessage = 'Failed to copy. Please try again.';
|
|
101
|
-
handleNotification('Error', errorMessage);
|
|
102
|
-
onError?.(errorMessage);
|
|
103
|
-
});
|
|
64
|
+
/**
|
|
65
|
+
* Handles copying text to clipboard
|
|
66
|
+
*/
|
|
67
|
+
const handleCopy = () => {
|
|
68
|
+
if (disabled) {
|
|
69
|
+
const errorMessage = 'Copy is disabled';
|
|
70
|
+
handleNotification('Error', errorMessage);
|
|
71
|
+
onError?.(errorMessage);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const contentToCopy = getProcessedContent();
|
|
76
|
+
const success = copy(contentToCopy);
|
|
77
|
+
|
|
78
|
+
if (success) {
|
|
79
|
+
isCopied = true;
|
|
80
|
+
handleNotification('Success', 'Copied to clipboard!');
|
|
81
|
+
onCopy?.(contentToCopy);
|
|
82
|
+
|
|
83
|
+
// Reset copied state after 2 seconds
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
isCopied = false;
|
|
86
|
+
}, 2000);
|
|
87
|
+
} else {
|
|
88
|
+
const errorMessage = 'Failed to copy. Please try again.';
|
|
89
|
+
handleNotification('Error', errorMessage);
|
|
90
|
+
onError?.(errorMessage);
|
|
104
91
|
}
|
|
105
|
-
}
|
|
92
|
+
};
|
|
106
93
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Handle keyboard events for accessibility
|
|
96
|
+
*/
|
|
97
|
+
const handleKeydown = (event: KeyboardEvent) => {
|
|
98
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
handleCopy();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
110
103
|
</script>
|
|
111
104
|
|
|
112
105
|
{#if !hidden}
|
|
@@ -128,6 +121,8 @@
|
|
|
128
121
|
tabindex="0"
|
|
129
122
|
aria-label={disabled ? 'Copy disabled' : tooltip}
|
|
130
123
|
title={tooltip}
|
|
124
|
+
onclick={handleCopy}
|
|
125
|
+
onkeydown={handleKeydown}
|
|
131
126
|
>
|
|
132
127
|
<div class="copy-button__content" id="copy-content">
|
|
133
128
|
{getProcessedContent()}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import 'overlayscrollbars/overlayscrollbars.css';
|
|
3
|
-
|
|
4
|
-
import type { PartialOptions } from 'overlayscrollbars';
|
|
5
|
-
import { OverlayScrollbarsComponent } from 'overlayscrollbars-svelte';
|
|
6
|
-
|
|
7
2
|
import { WarningCircleOutlineIcon } from '../../icons';
|
|
8
3
|
import { Tooltip } from '../tooltip';
|
|
9
4
|
import type { SectionProps } from './types.js';
|
|
@@ -128,20 +123,6 @@
|
|
|
128
123
|
disabledMessage ||
|
|
129
124
|
`This option is disabled in edit mode. If you want to change it, please generate a new Component.`
|
|
130
125
|
);
|
|
131
|
-
|
|
132
|
-
// OverlayScrollbars options
|
|
133
|
-
let overlayScrollbarsOptions: PartialOptions = {
|
|
134
|
-
overflow: {
|
|
135
|
-
x: 'hidden',
|
|
136
|
-
y: 'scroll'
|
|
137
|
-
},
|
|
138
|
-
scrollbars: {
|
|
139
|
-
theme: 'os-theme-dark',
|
|
140
|
-
visibility: 'auto',
|
|
141
|
-
autoHide: 'leave',
|
|
142
|
-
autoHideDelay: 800
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
126
|
</script>
|
|
146
127
|
|
|
147
128
|
{#snippet sectionContent()}
|
|
@@ -166,11 +147,11 @@
|
|
|
166
147
|
{...restProps}
|
|
167
148
|
>
|
|
168
149
|
{#if scrollable}
|
|
169
|
-
<
|
|
150
|
+
<div class="scrollable-content">
|
|
170
151
|
{#if children}
|
|
171
152
|
{@render children()}
|
|
172
153
|
{/if}
|
|
173
|
-
</
|
|
154
|
+
</div>
|
|
174
155
|
{:else if children}
|
|
175
156
|
{@render children()}
|
|
176
157
|
{/if}
|
|
@@ -290,38 +271,19 @@
|
|
|
290
271
|
transform: none !important;
|
|
291
272
|
}
|
|
292
273
|
|
|
293
|
-
.section-wrap.scrollable :global([data-overlayscrollbars-initialize]) {
|
|
294
|
-
width: 100% !important;
|
|
295
|
-
height: 100% !important;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
274
|
/* Scrollable content styles */
|
|
299
275
|
.section-wrap.scrollable {
|
|
300
|
-
overflow: hidden; /*
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/* OverlayScrollbars dark theme customization using design system */
|
|
304
|
-
.section-wrap :global(.os-scrollbar) {
|
|
305
|
-
--os-size: var(--sb-size);
|
|
306
|
-
--os-padding-perpendicular: 2px;
|
|
307
|
-
--os-padding-axis: 2px;
|
|
276
|
+
overflow: hidden; /* Parent container hides overflow */
|
|
308
277
|
}
|
|
309
278
|
|
|
310
|
-
.section-wrap
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
.section-wrap :global(.os-scrollbar-handle:hover) {
|
|
321
|
-
background: var(--background3);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
.section-wrap :global(.os-scrollbar-handle:active) {
|
|
325
|
-
background: var(--background2);
|
|
279
|
+
.section-wrap.scrollable .scrollable-content {
|
|
280
|
+
width: 100%;
|
|
281
|
+
height: 100%;
|
|
282
|
+
overflow-y: auto;
|
|
283
|
+
overflow-x: hidden;
|
|
284
|
+
/* Enable smooth scrolling */
|
|
285
|
+
scroll-behavior: smooth;
|
|
286
|
+
/* Add scrollbar gutter for consistent layout */
|
|
287
|
+
scrollbar-gutter: stable;
|
|
326
288
|
}
|
|
327
289
|
</style>
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
let arrowElement: HTMLDivElement | undefined = $state();
|
|
65
65
|
let observer: MutationObserver | null = null;
|
|
66
66
|
let documentClickListener: ((event: MouseEvent) => void) | null = null;
|
|
67
|
+
let ignoreNextClick = $state(false);
|
|
67
68
|
const tooltipId = `tooltip-${uuidv4()}`;
|
|
68
69
|
|
|
69
70
|
/**
|
|
@@ -214,6 +215,12 @@
|
|
|
214
215
|
|
|
215
216
|
// Store reference to the click handler for cleanup
|
|
216
217
|
documentClickListener = (event: MouseEvent) => {
|
|
218
|
+
// Ignore clicks that happen immediately after a drag operation
|
|
219
|
+
if (ignoreNextClick) {
|
|
220
|
+
ignoreNextClick = false;
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
|
|
217
224
|
if (
|
|
218
225
|
tooltipElement &&
|
|
219
226
|
toggle &&
|
|
@@ -263,6 +270,9 @@
|
|
|
263
270
|
|
|
264
271
|
export const show = () => tooltipInstance?.showTooltip();
|
|
265
272
|
export const hide = () => tooltipInstance?.hideTooltip();
|
|
273
|
+
export const ignoreNextClickEvent = () => {
|
|
274
|
+
ignoreNextClick = true;
|
|
275
|
+
};
|
|
266
276
|
|
|
267
277
|
// Svelte 5 effect for hidden prop
|
|
268
278
|
$effect(() => {
|
|
@@ -3,6 +3,7 @@ import type { TooltipProps } from './types';
|
|
|
3
3
|
declare const Tooltip: Component<TooltipProps, {
|
|
4
4
|
show: () => void | undefined;
|
|
5
5
|
hide: () => void | undefined;
|
|
6
|
+
ignoreNextClickEvent: () => void;
|
|
6
7
|
}, "hidden" | "isActive">;
|
|
7
8
|
type Tooltip = ReturnType<typeof Tooltip>;
|
|
8
9
|
export default Tooltip;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export default
|
|
2
|
-
type
|
|
1
|
+
export default CMSIcon;
|
|
2
|
+
type CMSIcon = SvelteComponent<{
|
|
3
3
|
[x: string]: never;
|
|
4
4
|
}, {
|
|
5
5
|
[evt: string]: CustomEvent<any>;
|
|
6
6
|
}, {}> & {
|
|
7
7
|
$$bindings?: string | undefined;
|
|
8
8
|
};
|
|
9
|
-
declare const
|
|
9
|
+
declare const CMSIcon: $$__sveltets_2_IsomorphicComponent<{
|
|
10
10
|
[x: string]: never;
|
|
11
11
|
}, {
|
|
12
12
|
[evt: string]: CustomEvent<any>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export default
|
|
2
|
-
type
|
|
1
|
+
export default DOMElement;
|
|
2
|
+
type DOMElement = SvelteComponent<{
|
|
3
3
|
width?: number | undefined;
|
|
4
4
|
height?: number | undefined;
|
|
5
5
|
}, {
|
|
@@ -7,7 +7,7 @@ type DomElement = SvelteComponent<{
|
|
|
7
7
|
}, {}> & {
|
|
8
8
|
$$bindings?: string | undefined;
|
|
9
9
|
};
|
|
10
|
-
declare const
|
|
10
|
+
declare const DOMElement: $$__sveltets_2_IsomorphicComponent<{
|
|
11
11
|
width?: number | undefined;
|
|
12
12
|
height?: number | undefined;
|
|
13
13
|
}, {
|
|
@@ -11,11 +11,11 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
11
11
|
};
|
|
12
12
|
z_$$bindings?: Bindings;
|
|
13
13
|
}
|
|
14
|
-
declare const
|
|
14
|
+
declare const XL: $$__sveltets_2_IsomorphicComponent<{
|
|
15
15
|
width?: number;
|
|
16
16
|
height?: number;
|
|
17
17
|
}, {
|
|
18
18
|
[evt: string]: CustomEvent<any>;
|
|
19
19
|
}, {}, {}, string>;
|
|
20
|
-
type
|
|
21
|
-
export default
|
|
20
|
+
type XL = InstanceType<typeof XL>;
|
|
21
|
+
export default XL;
|
|
@@ -11,11 +11,11 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
11
11
|
};
|
|
12
12
|
z_$$bindings?: Bindings;
|
|
13
13
|
}
|
|
14
|
-
declare const
|
|
14
|
+
declare const XXL: $$__sveltets_2_IsomorphicComponent<{
|
|
15
15
|
width?: number;
|
|
16
16
|
height?: number;
|
|
17
17
|
}, {
|
|
18
18
|
[evt: string]: CustomEvent<any>;
|
|
19
19
|
}, {}, {}, string>;
|
|
20
|
-
type
|
|
21
|
-
export default
|
|
20
|
+
type XXL = InstanceType<typeof XXL>;
|
|
21
|
+
export default XXL;
|
|
@@ -11,11 +11,11 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
11
11
|
};
|
|
12
12
|
z_$$bindings?: Bindings;
|
|
13
13
|
}
|
|
14
|
-
declare const
|
|
14
|
+
declare const XXXL: $$__sveltets_2_IsomorphicComponent<{
|
|
15
15
|
width?: number;
|
|
16
16
|
height?: number;
|
|
17
17
|
}, {
|
|
18
18
|
[evt: string]: CustomEvent<any>;
|
|
19
19
|
}, {}, {}, string>;
|
|
20
|
-
type
|
|
21
|
-
export default
|
|
20
|
+
type XXXL = InstanceType<typeof XXXL>;
|
|
21
|
+
export default XXXL;
|
package/dist/ui/index.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/* custom scrollbar related */
|
|
5
5
|
--sb-track-color: #1e1e1e;
|
|
6
6
|
--sb-thumb-color: #373737;
|
|
7
|
-
--sb-size:
|
|
7
|
+
--sb-size: 6px;
|
|
8
8
|
|
|
9
9
|
/* Webflow colors */
|
|
10
10
|
--background1: #292929;
|
|
@@ -272,41 +272,6 @@ label {
|
|
|
272
272
|
.not-allowed {
|
|
273
273
|
cursor: not-allowed !important;
|
|
274
274
|
}
|
|
275
|
-
/* OverlayScrollbars Global Theme */
|
|
276
|
-
:root {
|
|
277
|
-
/* OverlayScrollbars theme variables using design system colors */
|
|
278
|
-
--os-size: var(--sb-size, 6px);
|
|
279
|
-
--os-padding-perpendicular: 0px;
|
|
280
|
-
--os-padding-axis: 0px;
|
|
281
|
-
--os-track-bg: var(--background1);
|
|
282
|
-
--os-handle-bg: var(--background4);
|
|
283
|
-
--os-handle-bg-hover: var(--background3);
|
|
284
|
-
--os-handle-bg-active: var(--background2);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/* OverlayScrollbars global dark theme */
|
|
288
|
-
.os-theme-dark .os-scrollbar {
|
|
289
|
-
--os-size: var(--sb-size, 6px);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
.os-theme-dark .os-scrollbar-track {
|
|
293
|
-
background: var(--background1);
|
|
294
|
-
border-radius: 4px;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
.os-theme-dark .os-scrollbar-handle {
|
|
298
|
-
background: var(--background4);
|
|
299
|
-
border-radius: 4px;
|
|
300
|
-
transition: background-color 0.2s ease;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
.os-theme-dark .os-scrollbar-handle:hover {
|
|
304
|
-
background: var(--background3);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
.os-theme-dark .os-scrollbar-handle:active {
|
|
308
|
-
background: var(--background2);
|
|
309
|
-
}
|
|
310
275
|
|
|
311
276
|
input {
|
|
312
277
|
/* Remove default appearance for some browsers */
|
|
@@ -503,8 +468,9 @@ input::-webkit-inner-spin-button {
|
|
|
503
468
|
align-self: stretch;
|
|
504
469
|
}
|
|
505
470
|
|
|
506
|
-
/*
|
|
471
|
+
/* Modern Native Scrollbar Styles */
|
|
507
472
|
|
|
473
|
+
/* Webkit browsers (Chrome, Safari, Edge) */
|
|
508
474
|
::-webkit-scrollbar {
|
|
509
475
|
width: var(--sb-size);
|
|
510
476
|
height: var(--sb-size);
|
|
@@ -518,10 +484,33 @@ input::-webkit-inner-spin-button {
|
|
|
518
484
|
::-webkit-scrollbar-thumb {
|
|
519
485
|
background: var(--sb-thumb-color);
|
|
520
486
|
border-radius: 4px;
|
|
487
|
+
transition: background-color 0.2s ease;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
::-webkit-scrollbar-thumb:hover {
|
|
491
|
+
background: var(--background3);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
::-webkit-scrollbar-thumb:active {
|
|
495
|
+
background: var(--background2);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
::-webkit-scrollbar-corner {
|
|
499
|
+
background: var(--sb-track-color);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/* Firefox scrollbar styling */
|
|
503
|
+
@supports selector(::-moz-scrollbar-thumb) {
|
|
504
|
+
* {
|
|
505
|
+
scrollbar-color: var(--sb-thumb-color) var(--sb-track-color);
|
|
506
|
+
scrollbar-width: thin;
|
|
507
|
+
}
|
|
521
508
|
}
|
|
522
509
|
|
|
510
|
+
/* Fallback for Firefox without newer scrollbar support */
|
|
523
511
|
@supports not selector(::-webkit-scrollbar) {
|
|
524
|
-
|
|
512
|
+
html {
|
|
525
513
|
scrollbar-color: var(--sb-thumb-color) var(--sb-track-color);
|
|
514
|
+
scrollbar-width: thin;
|
|
526
515
|
}
|
|
527
516
|
}
|
package/dist/ui/utils/index.d.ts
CHANGED
package/dist/ui/utils/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finsweet/webflow-apps-utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26",
|
|
4
4
|
"description": "Shared utilities for Webflow apps",
|
|
5
5
|
"homepage": "https://github.com/finsweet/webflow-apps-utils",
|
|
6
6
|
"repository": {
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"@floating-ui/dom": "^1.7.1",
|
|
89
89
|
"cheerio": "^1.1.0",
|
|
90
|
-
"clipboard": "^2.
|
|
90
|
+
"copy-text-to-clipboard": "^3.2.2",
|
|
91
91
|
"csv-parse": "^5.6.0",
|
|
92
92
|
"js-cookie": "^3.0.5",
|
|
93
93
|
"just-debounce": "^1.1.0",
|
|
@@ -96,8 +96,6 @@
|
|
|
96
96
|
"logrocket": "^10.1.0",
|
|
97
97
|
"luxon": "^3.6.1",
|
|
98
98
|
"motion": "^10.18.0",
|
|
99
|
-
"overlayscrollbars": "^2.11.4",
|
|
100
|
-
"overlayscrollbars-svelte": "^0.5.5",
|
|
101
99
|
"svelte-routing": "^2.13.0",
|
|
102
100
|
"swiper": "^11.2.8",
|
|
103
101
|
"terser": "^5.43.1",
|