@hyvor/design 2.1.8-beta.5 → 2.1.9

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 (64) hide show
  1. package/dist/cloud/HyvorBar/BarNotice/BarNotice.svelte +1 -1
  2. package/dist/cloud/HyvorBar/BarSupport.svelte +1 -1
  3. package/dist/cloud/HyvorBar/Organization/BarOrganization.svelte +1 -1
  4. package/dist/components/Avatar/Avatar.svelte +50 -4
  5. package/dist/components/Avatar/Avatar.svelte.d.ts +4 -1
  6. package/dist/components/Avatar/AvatarStack.svelte +6 -3
  7. package/dist/components/ButtonGroup/ButtonGroup.svelte +82 -0
  8. package/dist/components/{Button → ButtonGroup}/ButtonGroup.svelte.d.ts +1 -0
  9. package/dist/components/Modal/ConfirmModalProvider.svelte +6 -9
  10. package/dist/components/Modal/ModalFooter.svelte +24 -27
  11. package/dist/components/Toast/ToastMessage.svelte +3 -6
  12. package/dist/components/Toast/ToastProvider.svelte +8 -4
  13. package/dist/components/Tooltip/Tooltip.svelte +54 -28
  14. package/dist/components/Tooltip/Tooltip.svelte.d.ts +15 -35
  15. package/dist/components/index.d.ts +1 -1
  16. package/dist/components/index.js +1 -1
  17. package/dist/index.css +4 -1
  18. package/dist/marketing/Docs/Docs.svelte +2 -2
  19. package/dist/marketing/Footer/Footer.svelte +98 -402
  20. package/dist/marketing/Footer/Footer.svelte.d.ts +2 -18
  21. package/dist/marketing/Footer/FooterLinkList.svelte +3 -10
  22. package/dist/marketing/Header/Header.svelte +28 -72
  23. package/dist/marketing/Header/Header.svelte.d.ts +2 -5
  24. package/dist/marketing/index.d.ts +0 -18
  25. package/dist/marketing/index.js +0 -17
  26. package/dist/marketing/social.d.ts +1 -1
  27. package/dist/marketing/social.js +1 -1
  28. package/package.json +1 -1
  29. package/dist/components/Button/ButtonGroup.svelte +0 -18
  30. package/dist/marketing/AllFeaturesAccordion/AllFeaturesAccordion.svelte +0 -251
  31. package/dist/marketing/AllFeaturesAccordion/AllFeaturesAccordion.svelte.d.ts +0 -23
  32. package/dist/marketing/AllFeaturesAccordion/AllFeaturesAccordionFeature.svelte +0 -75
  33. package/dist/marketing/AllFeaturesAccordion/AllFeaturesAccordionFeature.svelte.d.ts +0 -10
  34. package/dist/marketing/FAQ/FAQ.svelte +0 -233
  35. package/dist/marketing/FAQ/FAQ.svelte.d.ts +0 -13
  36. package/dist/marketing/FeatureSplit/FeatureSplit.svelte +0 -325
  37. package/dist/marketing/FeatureSplit/FeatureSplit.svelte.d.ts +0 -24
  38. package/dist/marketing/FullTrialSignup/FullTrialSignup.svelte +0 -164
  39. package/dist/marketing/FullTrialSignup/FullTrialSignup.svelte.d.ts +0 -18
  40. package/dist/marketing/Header/HeaderLanguageToggle.svelte +0 -121
  41. package/dist/marketing/Header/HeaderLanguageToggle.svelte.d.ts +0 -14
  42. package/dist/marketing/Header/HeaderNavLink.svelte +0 -148
  43. package/dist/marketing/Header/HeaderNavLink.svelte.d.ts +0 -17
  44. package/dist/marketing/Header/language.d.ts +0 -18
  45. package/dist/marketing/Header/language.js +0 -35
  46. package/dist/marketing/Hero/Hero.svelte +0 -353
  47. package/dist/marketing/Hero/Hero.svelte.d.ts +0 -16
  48. package/dist/marketing/LogoStrip/LogoStrip.svelte +0 -204
  49. package/dist/marketing/LogoStrip/LogoStrip.svelte.d.ts +0 -19
  50. package/dist/marketing/Seal/CcpaSeal.svelte +0 -29
  51. package/dist/marketing/Seal/CcpaSeal.svelte.d.ts +0 -6
  52. package/dist/marketing/Seal/GdprSeal.svelte +0 -60
  53. package/dist/marketing/Seal/GdprSeal.svelte.d.ts +0 -6
  54. package/dist/marketing/Seal/IsoSeal.svelte +0 -44
  55. package/dist/marketing/Seal/IsoSeal.svelte.d.ts +0 -6
  56. package/dist/marketing/Seal/Seal.svelte +0 -62
  57. package/dist/marketing/Seal/Seal.svelte.d.ts +0 -8
  58. package/dist/marketing/Seal/SsoSeal.svelte +0 -31
  59. package/dist/marketing/Seal/SsoSeal.svelte.d.ts +0 -6
  60. package/dist/marketing/Seal/ccpa.svg +0 -131
  61. package/dist/marketing/SpotlightSplit/SpotlightSplit.svelte +0 -256
  62. package/dist/marketing/SpotlightSplit/SpotlightSplit.svelte.d.ts +0 -19
  63. package/dist/marketing/Testimonials/Testimonials.svelte +0 -382
  64. package/dist/marketing/Testimonials/Testimonials.svelte.d.ts +0 -23
@@ -1,353 +0,0 @@
1
- <script lang="ts">
2
- import Button from '../../components/Button/Button.svelte';
3
- import IconChevronDown from '@hyvor/icons/IconChevronDown';
4
- import type { ComponentProps, Snippet } from 'svelte';
5
-
6
- type ButtonProps = ComponentProps<typeof Button>;
7
-
8
- interface Props {
9
- title: string | Snippet;
10
- subtitle?: string | Snippet;
11
- badge?: string | Snippet;
12
- buttons?: ButtonProps | ButtonProps[] | null;
13
- accentColor?: string;
14
- accentColorDark?: string;
15
- fullHeight?: boolean;
16
- after?: Snippet;
17
- }
18
-
19
- let {
20
- title,
21
- subtitle,
22
- badge,
23
- buttons = null,
24
- accentColor,
25
- accentColorDark,
26
- fullHeight = false,
27
- after
28
- }: Props = $props();
29
-
30
- const buttonList = $derived(buttons ? (Array.isArray(buttons) ? buttons : [buttons]) : []);
31
- </script>
32
-
33
- <section
34
- class="hero"
35
- class:full-height={fullHeight}
36
- style:--hero-accent={accentColor}
37
- style:--hero-accent-dark={accentColorDark}
38
- >
39
- <svg class="hero-pattern" aria-hidden="true" focusable="false">
40
- <defs>
41
- <pattern id="hero-dot-pattern" width="28" height="28" patternUnits="userSpaceOnUse">
42
- <circle cx="2" cy="2" r="1.6" fill="currentColor" />
43
- </pattern>
44
- </defs>
45
- <rect width="100%" height="100%" fill="url(#hero-dot-pattern)" />
46
- </svg>
47
-
48
- <div class="hds-container inner">
49
- <div class="left">
50
- {#if badge}
51
- <div class="badge anim anim-0">
52
- {#if typeof badge === 'string'}
53
- {badge}
54
- {:else}
55
- {@render badge()}
56
- {/if}
57
- </div>
58
- {/if}
59
-
60
- <h1 class="anim anim-1">
61
- {#if typeof title === 'string'}
62
- {@html title}
63
- {:else}
64
- {@render title()}
65
- {/if}
66
- </h1>
67
-
68
- {#if subtitle}
69
- <h2 class="subtitle anim anim-2">
70
- {#if typeof subtitle === 'string'}
71
- {@html subtitle}
72
- {:else}
73
- {@render subtitle()}
74
- {/if}
75
- </h2>
76
- {/if}
77
-
78
- {#if buttonList.length}
79
- <div class="buttons anim anim-3">
80
- {#each buttonList as b}
81
- <Button
82
- as="a"
83
- href={b.href}
84
- target={b.external ? '_blank' : undefined}
85
- rel={b.external ? 'noopener' : undefined}
86
- size={b.size || 'x-large'}
87
- variant={b.variant}
88
- >
89
- {b.label}
90
- </Button>
91
- {/each}
92
- </div>
93
- {/if}
94
-
95
- {#if after}
96
- <div class="anim anim-3">
97
- {@render after()}
98
- </div>
99
- {/if}
100
- </div>
101
- </div>
102
-
103
- <div class="scroll-indicator anim anim-4" aria-hidden="true">
104
- <div class="scroll-mouse">
105
- <div class="scroll-dot"></div>
106
- </div>
107
- <IconChevronDown size={12} />
108
- </div>
109
- </section>
110
-
111
- <style>
112
- .hero {
113
- --hero-accent-resolved: var(--hero-accent, var(--accent));
114
-
115
- position: relative;
116
- display: flex;
117
- align-items: center;
118
- padding: 60px 0 80px;
119
- overflow: hidden;
120
- }
121
-
122
- .hero.full-height {
123
- min-height: calc(100vh - var(--header-height, 60px));
124
- }
125
-
126
- :global(:root.dark) .hero {
127
- --hero-accent-resolved: var(--hero-accent-dark, var(--hero-accent, var(--accent)));
128
- }
129
-
130
- .hero-pattern {
131
- position: absolute;
132
- inset: 0;
133
- width: 100%;
134
- height: 100%;
135
- color: var(--border);
136
- mask-image: radial-gradient(ellipse 65% 60% at 50% 38%, black 0%, transparent 75%);
137
- -webkit-mask-image: radial-gradient(ellipse 65% 60% at 50% 38%, black 0%, transparent 75%);
138
- pointer-events: none;
139
- }
140
-
141
- .inner {
142
- position: relative;
143
- z-index: 1;
144
- display: flex;
145
- align-items: center;
146
- gap: 100px;
147
- width: 1120px;
148
- max-width: 100%;
149
- }
150
-
151
- .left {
152
- flex: 1;
153
- min-width: 0;
154
- text-align: center;
155
- }
156
-
157
- .badge {
158
- display: inline-flex;
159
- align-items: center;
160
- gap: 6px;
161
- padding: 4px 12px;
162
- border-radius: 100px;
163
- font-size: 13px;
164
- font-weight: 600;
165
- background: color-mix(in srgb, var(--hero-accent-resolved) 12%, transparent);
166
- color: var(--hero-accent-resolved);
167
- margin-bottom: 24px;
168
- border: 1px solid color-mix(in srgb, var(--hero-accent-resolved) 25%, transparent);
169
- }
170
-
171
- h1 {
172
- margin: 0;
173
- font-size: clamp(36px, 5vw, 56px);
174
- line-height: 1.1;
175
- letter-spacing: -0.02em;
176
- font-weight: 800;
177
- font-family: var(--font-serif);
178
- }
179
-
180
- /* smaller second line inside the title, e.g. a parenthetical sub-line */
181
- .left :global(h1 .heading-small) {
182
- font-size: clamp(35px, 5vw, 46px);
183
- font-weight: 800;
184
- }
185
-
186
- .subtitle {
187
- font-weight: 500;
188
- letter-spacing: -0.02em;
189
- font-family: var(--font-serif);
190
-
191
- margin: auto;
192
- margin-top: 30px;
193
- font-size: clamp(22px, 3vw, 26px);
194
- line-height: 1.6;
195
- color: color-mix(in srgb, var(--text) 70%, var(--text-light));
196
- max-width: 480px;
197
- }
198
-
199
- .left :global(.hds-hl) {
200
- color: var(--hero-accent-resolved);
201
- font-weight: 700;
202
- }
203
-
204
- .left :global(.hds-marker) {
205
- position: relative;
206
- font-weight: 700;
207
- background-image: linear-gradient(
208
- 100deg,
209
- color-mix(in srgb, var(--hero-accent-resolved) 35%, transparent) 0%,
210
- color-mix(in srgb, var(--hero-accent-resolved) 45%, transparent) 100%
211
- );
212
- background-repeat: no-repeat;
213
- background-size: 100% 0.5em;
214
- background-position: 0 88%;
215
- box-decoration-break: clone;
216
- -webkit-box-decoration-break: clone;
217
- }
218
-
219
- .buttons {
220
- display: flex;
221
- gap: 12px;
222
- margin-top: 36px;
223
- flex-wrap: wrap;
224
- justify-content: center;
225
- }
226
-
227
- /* Entrance animation */
228
- .anim {
229
- opacity: 0;
230
- animation: hero-fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
231
- }
232
-
233
- .anim-0 {
234
- animation-delay: 0s;
235
- }
236
-
237
- .anim-1 {
238
- animation-delay: 0.05s;
239
- }
240
-
241
- .anim-2 {
242
- animation-delay: 0.15s;
243
- }
244
-
245
- .anim-3 {
246
- animation-delay: 0.25s;
247
- }
248
-
249
- .anim-4 {
250
- animation-delay: 0.6s;
251
- }
252
-
253
- @keyframes hero-fade-up {
254
- from {
255
- opacity: 0;
256
- transform: translateY(18px);
257
- }
258
- to {
259
- opacity: 1;
260
- transform: translateY(0);
261
- }
262
- }
263
-
264
- @media (prefers-reduced-motion: reduce) {
265
- .anim {
266
- animation: none;
267
- opacity: 1;
268
- transform: none;
269
- }
270
- }
271
-
272
- /* Scroll indicator */
273
- .scroll-indicator {
274
- position: absolute;
275
- left: 50%;
276
- bottom: 28px;
277
- transform: translateX(-50%);
278
- z-index: 1;
279
- display: flex;
280
- flex-direction: column;
281
- align-items: center;
282
- gap: 8px;
283
- color: var(--text-light);
284
- }
285
-
286
- .scroll-mouse {
287
- width: 24px;
288
- height: 38px;
289
- border: 2px solid var(--border);
290
- border-radius: 100px;
291
- display: flex;
292
- justify-content: center;
293
- padding-top: 6px;
294
- }
295
-
296
- .scroll-dot {
297
- width: 4px;
298
- height: 8px;
299
- border-radius: 2px;
300
- background: var(--hero-accent-resolved);
301
- animation: scroll-wheel 1.8s ease-in-out infinite;
302
- }
303
-
304
- @keyframes scroll-wheel {
305
- 0% {
306
- opacity: 1;
307
- transform: translateY(0);
308
- }
309
- 60% {
310
- opacity: 0;
311
- transform: translateY(12px);
312
- }
313
- 100% {
314
- opacity: 0;
315
- transform: translateY(12px);
316
- }
317
- }
318
-
319
- @media (prefers-reduced-motion: reduce) {
320
- .scroll-dot {
321
- animation: none;
322
- }
323
- }
324
-
325
- /* Responsive */
326
- @media (max-width: 992px) {
327
- .hero.full-height {
328
- min-height: unset;
329
- }
330
-
331
- .hero {
332
- padding: 60px 0;
333
- }
334
-
335
- .inner {
336
- flex-direction: column;
337
- gap: 48px;
338
- text-align: center;
339
- }
340
-
341
- .subtitle {
342
- max-width: 100%;
343
- }
344
-
345
- .buttons {
346
- justify-content: center;
347
- }
348
-
349
- .scroll-indicator {
350
- display: none;
351
- }
352
- }
353
- </style>
@@ -1,16 +0,0 @@
1
- import Button from '../../components/Button/Button.svelte';
2
- import type { ComponentProps, Snippet } from 'svelte';
3
- type ButtonProps = ComponentProps<typeof Button>;
4
- interface Props {
5
- title: string | Snippet;
6
- subtitle?: string | Snippet;
7
- badge?: string | Snippet;
8
- buttons?: ButtonProps | ButtonProps[] | null;
9
- accentColor?: string;
10
- accentColorDark?: string;
11
- fullHeight?: boolean;
12
- after?: Snippet;
13
- }
14
- declare const Hero: import("svelte").Component<Props, {}, "">;
15
- type Hero = ReturnType<typeof Hero>;
16
- export default Hero;
@@ -1,204 +0,0 @@
1
- <script lang="ts">
2
- interface Logo {
3
- name: string;
4
- src: string;
5
- href?: string;
6
- width?: number;
7
- height?: number;
8
- // keep this one logo in its real colors instead of the shared white
9
- // silhouette treatment below, for opaque, full-color icons (e.g. a
10
- // square app icon) that would otherwise crush into a blank box
11
- color?: boolean;
12
- }
13
-
14
- interface Props {
15
- logos: Logo[];
16
- label?: string;
17
- background?: string;
18
- invert?: boolean;
19
- marquee?: boolean;
20
- speed?: number;
21
- }
22
-
23
- let {
24
- logos,
25
- label = '',
26
- background = 'var(--accent)',
27
- invert = true,
28
- marquee = true,
29
- speed = 34
30
- }: Props = $props();
31
-
32
- // the track is rendered twice back to back and animated exactly -50%,
33
- // since both halves are pixel-identical, the loop point is invisible
34
- const track = $derived(marquee ? [...logos, ...logos] : logos);
35
- </script>
36
-
37
- {#snippet logoImg(logo: Logo, hidden = false)}
38
- <img
39
- src={logo.src}
40
- alt={logo.name}
41
- width={logo.width ?? 120}
42
- height={logo.height ?? 28}
43
- class="logo"
44
- class:invert={invert && !logo.color}
45
- class:color={logo.color}
46
- aria-hidden={hidden}
47
- />
48
- {/snippet}
49
-
50
- <section class="hds-logo-strip" style:--ls-bg={background} style:--ls-speed="{speed}s">
51
- <div class="hds-container">
52
- {#if label}
53
- <p class="label">{label}</p>
54
- {/if}
55
-
56
- {#if !marquee}
57
- <div class="logos">
58
- {#each logos as logo}
59
- {#if logo.href}
60
- <a href={logo.href} target="_blank" rel="noopener" class="logo-link">
61
- {@render logoImg(logo)}
62
- </a>
63
- {:else}
64
- {@render logoImg(logo)}
65
- {/if}
66
- {/each}
67
- </div>
68
- {/if}
69
- </div>
70
-
71
- {#if marquee}
72
- <div class="marquee">
73
- <div class="marquee-track">
74
- {#each track as logo, i}
75
- {@const hidden = i >= logos.length}
76
- {#if logo.href}
77
- <a
78
- href={logo.href}
79
- target="_blank"
80
- rel="noopener"
81
- class="logo-link"
82
- tabindex={hidden ? -1 : undefined}
83
- >
84
- {@render logoImg(logo, hidden)}
85
- </a>
86
- {:else}
87
- {@render logoImg(logo, hidden)}
88
- {/if}
89
- {/each}
90
- </div>
91
- </div>
92
- {/if}
93
- </section>
94
-
95
- <style>
96
- .hds-logo-strip {
97
- background: var(--ls-bg);
98
- padding: 52px 0;
99
- overflow: hidden;
100
- }
101
-
102
- .label {
103
- text-align: center;
104
- font-size: 16px;
105
- font-weight: 600;
106
- letter-spacing: 0.07em;
107
- text-transform: uppercase;
108
- color: var(--accent-light-mid);
109
- margin: 0 0 36px;
110
- }
111
-
112
- /* static (non-marquee) layout */
113
- .logos {
114
- display: flex;
115
- align-items: center;
116
- justify-content: center;
117
- flex-wrap: wrap;
118
- gap: 24px 52px;
119
- }
120
-
121
- /* marquee layout */
122
- .marquee {
123
- mask-image: linear-gradient(
124
- to right,
125
- transparent 0,
126
- black 64px,
127
- black calc(100% - 64px),
128
- transparent 100%
129
- );
130
- -webkit-mask-image: linear-gradient(
131
- to right,
132
- transparent 0,
133
- black 64px,
134
- black calc(100% - 64px),
135
- transparent 100%
136
- );
137
- }
138
-
139
- .marquee-track {
140
- display: flex;
141
- align-items: center;
142
- gap: 52px;
143
- width: max-content;
144
- animation: marquee-scroll var(--ls-speed) linear infinite;
145
- }
146
-
147
- .marquee:hover .marquee-track {
148
- animation-play-state: paused;
149
- }
150
-
151
- @keyframes marquee-scroll {
152
- from {
153
- transform: translateX(0);
154
- }
155
- to {
156
- /* one full set-width, since the track is two identical sets back to back */
157
- transform: translateX(-50%);
158
- }
159
- }
160
-
161
- .logo-link {
162
- display: block;
163
- }
164
-
165
- .logo {
166
- display: block;
167
- flex-shrink: 0;
168
- opacity: 0.8;
169
- transition: opacity 0.15s ease;
170
- }
171
-
172
- .logo.invert {
173
- filter: brightness(0) invert(1);
174
- }
175
-
176
- .logo.color {
177
- filter: none;
178
- opacity: 1;
179
- border-radius: 10px;
180
- }
181
-
182
- .logo:hover {
183
- opacity: 1;
184
- }
185
-
186
- @media (prefers-reduced-motion: reduce) {
187
- .marquee {
188
- mask-image: none;
189
- -webkit-mask-image: none;
190
- }
191
-
192
- .marquee-track {
193
- animation: none;
194
- flex-wrap: wrap;
195
- justify-content: center;
196
- width: 100%;
197
- padding: 0 15px;
198
- }
199
-
200
- .marquee-track :global(.logo[aria-hidden='true']) {
201
- display: none;
202
- }
203
- }
204
- </style>
@@ -1,19 +0,0 @@
1
- interface Logo {
2
- name: string;
3
- src: string;
4
- href?: string;
5
- width?: number;
6
- height?: number;
7
- color?: boolean;
8
- }
9
- interface Props {
10
- logos: Logo[];
11
- label?: string;
12
- background?: string;
13
- invert?: boolean;
14
- marquee?: boolean;
15
- speed?: number;
16
- }
17
- declare const LogoStrip: import("svelte").Component<Props, {}, "">;
18
- type LogoStrip = ReturnType<typeof LogoStrip>;
19
- export default LogoStrip;
@@ -1,29 +0,0 @@
1
- <script lang="ts">
2
- import Seal from './Seal.svelte';
3
- import ccpa from './ccpa.svg?url';
4
-
5
- interface Props {
6
- size?: number;
7
- }
8
-
9
- let { size = 100 }: Props = $props();
10
- </script>
11
-
12
- <Seal {size}>
13
- <img src={ccpa} alt="CCPA Seal" class="map" />
14
- <span class="label">CCPA</span>
15
- </Seal>
16
-
17
- <style>
18
- .map {
19
- width: 22px;
20
- height: auto;
21
- }
22
-
23
- .label {
24
- font-size: 13px;
25
- font-weight: 700;
26
- letter-spacing: 0.03em;
27
- color: #fff;
28
- }
29
- </style>
@@ -1,6 +0,0 @@
1
- interface Props {
2
- size?: number;
3
- }
4
- declare const CcpaSeal: import("svelte").Component<Props, {}, "">;
5
- type CcpaSeal = ReturnType<typeof CcpaSeal>;
6
- export default CcpaSeal;
@@ -1,60 +0,0 @@
1
- <script lang="ts">
2
- import IconStarFill from '@hyvor/icons/IconStarFill';
3
- import Seal from './Seal.svelte';
4
-
5
- interface Props {
6
- size?: number;
7
- }
8
-
9
- let { size = 100 }: Props = $props();
10
-
11
- const starAngles = Array.from({ length: 12 }, (_, i) => i * 30);
12
- </script>
13
-
14
- <Seal {size}>
15
- <div class="star-ring">
16
- {#each starAngles as angle}
17
- <span class="star" style="--angle: {angle}deg">
18
- <IconStarFill size={7} />
19
- </span>
20
- {/each}
21
- </div>
22
- <span class="label">GDPR</span>
23
- </Seal>
24
-
25
- <style>
26
- .star-ring {
27
- position: absolute;
28
- inset: 0;
29
- --star-radius: 34px;
30
- }
31
-
32
- .star {
33
- position: absolute;
34
- top: 50%;
35
- left: 50%;
36
- width: 10px;
37
- height: 10px;
38
- margin: -5px 0 0 -5px;
39
- display: flex;
40
- align-items: center;
41
- justify-content: center;
42
- color: #e3b34a;
43
- transform: rotate(var(--angle)) translateY(calc(var(--star-radius) * -1))
44
- rotate(calc(var(--angle) * -1));
45
- }
46
-
47
- .label {
48
- font-size: 13px;
49
- font-weight: 700;
50
- letter-spacing: 0.03em;
51
- color: #fff;
52
- z-index: 1;
53
- }
54
-
55
- @media (max-width: 768px) {
56
- .star-ring {
57
- --star-radius: 28px;
58
- }
59
- }
60
- </style>
@@ -1,6 +0,0 @@
1
- interface Props {
2
- size?: number;
3
- }
4
- declare const GdprSeal: import("svelte").Component<Props, {}, "">;
5
- type GdprSeal = ReturnType<typeof GdprSeal>;
6
- export default GdprSeal;