@papu1337/builder 0.0.5 → 1.0.1
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/builder/BuilderView.svelte +158 -0
- package/dist/builder/BuilderView.svelte.d.ts +8 -0
- package/dist/builder/builder.vanilla.es.js +6514 -0
- package/dist/builder/builder.vanilla.umd.js +89 -0
- package/dist/builder/canvas/canvas.svelte +92 -0
- package/dist/builder/canvas/canvas.svelte.d.ts +17 -0
- package/dist/builder/canvas/styles.css +63 -0
- package/dist/builder/createBuilder.svelte.d.ts +9 -0
- package/dist/builder/createBuilder.svelte.js +17 -0
- package/dist/builder/index.d.ts +8 -0
- package/dist/builder/index.js +7 -0
- package/dist/builder/leftbar/leftBar.svelte +740 -0
- package/dist/builder/leftbar/leftBar.svelte.d.ts +8 -0
- package/dist/builder/leftbar/styles.css +152 -0
- package/dist/builder/pageMeta.svelte.d.ts +13 -0
- package/dist/builder/pageMeta.svelte.js +25 -0
- package/dist/builder/rightbar/rightBar.svelte +100 -0
- package/dist/builder/rightbar/rightBar.svelte.d.ts +10 -0
- package/dist/builder/rightbar/styles.css +167 -0
- package/dist/builder/topbar/TopBar.svelte +337 -0
- package/dist/builder/topbar/TopBar.svelte.d.ts +12 -0
- package/dist/builder/topbar/styles.css +123 -0
- package/dist/builder/viewport.svelte.d.ts +9 -0
- package/dist/builder/viewport.svelte.js +17 -0
- package/dist/elements/_shared/Arrow.svelte +58 -0
- package/dist/elements/_shared/Arrow.svelte.d.ts +11 -0
- package/dist/elements/_shared/GradientBorder.svelte +55 -0
- package/dist/elements/_shared/GradientBorder.svelte.d.ts +10 -0
- package/dist/elements/banner/bannerElement.svelte +101 -33
- package/dist/elements/banner/settings.d.ts +13 -3
- package/dist/elements/banner/settings.js +88 -8
- package/dist/elements/button/buttonElement.svelte +27 -21
- package/dist/elements/button/settings.d.ts +11 -9
- package/dist/elements/button/settings.js +18 -39
- package/dist/elements/globalSettings.js +5 -4
- package/dist/elements/howItWorks/howItWorksElement.svelte +221 -0
- package/dist/elements/howItWorks/howItWorksElement.svelte.d.ts +7 -0
- package/dist/elements/howItWorks/settings.d.ts +16 -0
- package/dist/elements/howItWorks/settings.js +70 -0
- package/dist/elements/steps/settings.d.ts +17 -0
- package/dist/elements/steps/settings.js +69 -0
- package/dist/elements/steps/stepsElement.svelte +220 -0
- package/dist/elements/steps/stepsElement.svelte.d.ts +7 -0
- package/dist/elements/terms/settings.d.ts +14 -0
- package/dist/elements/terms/settings.js +32 -0
- package/dist/elements/terms/termsElement.svelte +209 -0
- package/dist/elements/terms/termsElement.svelte.d.ts +7 -0
- package/dist/elements/text/settings.d.ts +8 -11
- package/dist/elements/text/settings.js +21 -51
- package/dist/elements/text/textElement.svelte +23 -23
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useTranslation.svelte.d.ts +9 -0
- package/dist/hooks/useTranslation.svelte.js +10 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/renderer/BuilderRenderer.svelte +30 -2
- package/dist/renderer/registry.js +6 -6
- package/dist/renderer/renderer.vanilla.es.js +1547 -1188
- package/dist/renderer/renderer.vanilla.umd.js +64 -39
- package/dist/renderer/resolve.d.ts +1 -1
- package/dist/renderer/resolve.js +28 -14
- package/dist/renderer/types.d.ts +2 -0
- package/dist/service/element.action.svelte.d.ts +21 -0
- package/dist/service/element.action.svelte.js +125 -0
- package/dist/service/element.history.svelte.d.ts +8 -0
- package/dist/service/element.history.svelte.js +36 -0
- package/dist/service/element.io.svelte.d.ts +4 -0
- package/dist/service/element.io.svelte.js +232 -0
- package/dist/service/element.reader.svelte.d.ts +4 -0
- package/dist/service/element.reader.svelte.js +51 -0
- package/dist/service/element.translate.svelte.d.ts +12 -0
- package/dist/service/element.translate.svelte.js +81 -0
- package/dist/service/index.d.ts +5 -0
- package/dist/service/index.js +5 -0
- package/dist/service/types.d.ts +13 -0
- package/dist/service/types.js +1 -0
- package/dist/settings/base.svelte.d.ts +6 -1
- package/dist/settings/base.svelte.js +61 -17
- package/dist/settings/components/ColorSettings.svelte +169 -40
- package/dist/settings/components/ColorSettings.svelte.d.ts +3 -2
- package/dist/settings/components/ListSettings.svelte +4 -5
- package/dist/settings/components/NumberSettings.svelte +117 -20
- package/dist/settings/components/RepeaterSettings.svelte +145 -0
- package/dist/settings/components/RepeaterSettings.svelte.d.ts +14 -0
- package/dist/settings/components/SegmentSettings.svelte +85 -0
- package/dist/settings/components/SegmentSettings.svelte.d.ts +5 -0
- package/dist/settings/components/SelectSettings.svelte +2 -3
- package/dist/settings/components/SettingsGroup.svelte +14 -69
- package/dist/settings/components/SettingsRenderer.svelte +76 -0
- package/dist/settings/components/SettingsRenderer.svelte.d.ts +8 -0
- package/dist/settings/components/TextSettings.svelte +2 -3
- package/dist/settings/components/TranslatableSettings.svelte +3 -4
- package/dist/settings/components/UploadSettings.svelte +2 -3
- package/dist/settings/groups.d.ts +23 -7
- package/dist/settings/groups.js +48 -24
- package/dist/settings/implementation.svelte.js +4 -0
- package/dist/settings/index.d.ts +2 -0
- package/dist/settings/index.js +2 -0
- package/dist/settings/mode.svelte.d.ts +4 -0
- package/dist/settings/mode.svelte.js +4 -0
- package/dist/settings/repeater.svelte.d.ts +26 -0
- package/dist/settings/repeater.svelte.js +70 -0
- package/dist/settings/types.d.ts +28 -2
- package/package.json +8 -2
- package/dist/elements/accordion/accordionElement.svelte +0 -101
- package/dist/elements/accordion/accordionElement.svelte.d.ts +0 -7
- package/dist/elements/accordion/settings.d.ts +0 -17
- package/dist/elements/accordion/settings.js +0 -54
- package/dist/elements/badge/badgeElement.svelte +0 -49
- package/dist/elements/badge/badgeElement.svelte.d.ts +0 -7
- package/dist/elements/badge/settings.d.ts +0 -14
- package/dist/elements/badge/settings.js +0 -47
- package/dist/elements/ctaCard/ctaCardElement.svelte +0 -132
- package/dist/elements/ctaCard/ctaCardElement.svelte.d.ts +0 -7
- package/dist/elements/ctaCard/settings.d.ts +0 -22
- package/dist/elements/ctaCard/settings.js +0 -64
|
@@ -2,46 +2,102 @@
|
|
|
2
2
|
import type { BannerSettingsMap } from './settings';
|
|
3
3
|
|
|
4
4
|
let { settings }: { settings: BannerSettingsMap } = $props();
|
|
5
|
+
|
|
6
|
+
const hasImage = $derived(Boolean(settings.desktopImage || settings.mobileImage));
|
|
7
|
+
const layers = $derived(settings.layers ?? []);
|
|
8
|
+
|
|
9
|
+
const alignItems = $derived(
|
|
10
|
+
settings.textAlign === 'left'
|
|
11
|
+
? 'flex-start'
|
|
12
|
+
: settings.textAlign === 'right'
|
|
13
|
+
? 'flex-end'
|
|
14
|
+
: 'center'
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
const colorStyle = (color: string): string =>
|
|
18
|
+
/gradient\(/i.test(color)
|
|
19
|
+
? `background-image: ${color}; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent;`
|
|
20
|
+
: `color: ${color};`;
|
|
5
21
|
</script>
|
|
6
22
|
|
|
7
|
-
<div
|
|
8
|
-
class="banner-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
<div class="banner-root" style="margin-top: {settings.marginTop}px;">
|
|
24
|
+
<div class="banner-media">
|
|
25
|
+
{#if hasImage}
|
|
26
|
+
{#if settings.desktopImage}
|
|
27
|
+
<img
|
|
28
|
+
class="banner-img banner-desktop"
|
|
29
|
+
src={settings.desktopImage}
|
|
30
|
+
alt="Banner"
|
|
31
|
+
style="object-fit: {settings.objectFit};"
|
|
32
|
+
/>
|
|
33
|
+
{/if}
|
|
34
|
+
{#if settings.mobileImage}
|
|
35
|
+
<img
|
|
36
|
+
class="banner-img banner-mobile"
|
|
37
|
+
src={settings.mobileImage}
|
|
38
|
+
alt="Banner"
|
|
39
|
+
style="object-fit: {settings.objectFit};"
|
|
40
|
+
/>
|
|
41
|
+
{/if}
|
|
42
|
+
{:else}
|
|
43
|
+
<div class="banner-empty">Banner image</div>
|
|
44
|
+
{/if}
|
|
45
|
+
|
|
46
|
+
{#if settings.overlayColor && settings.overlayColor !== 'rgba(0,0,0,0)'}
|
|
47
|
+
<div class="banner-scrim" style="background: {settings.overlayColor};"></div>
|
|
48
|
+
{/if}
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
{#if layers.length > 0}
|
|
52
|
+
<div
|
|
53
|
+
class="banner-stack"
|
|
54
|
+
style="
|
|
55
|
+
top: {settings.verticalPosition}%;
|
|
56
|
+
align-items: {alignItems};
|
|
57
|
+
text-align: {settings.textAlign};
|
|
58
|
+
gap: {settings.gap}px;
|
|
59
|
+
"
|
|
60
|
+
>
|
|
61
|
+
{#each layers as layer, index (index)}
|
|
62
|
+
{#if layer.text}
|
|
63
|
+
<span
|
|
64
|
+
class="banner-layer-text"
|
|
65
|
+
style="
|
|
66
|
+
font-size: {layer.fontSize}px;
|
|
67
|
+
font-weight: {layer.fontWeight};
|
|
68
|
+
{colorStyle(layer.color)}
|
|
69
|
+
"
|
|
70
|
+
>
|
|
71
|
+
{layer.text}
|
|
72
|
+
</span>
|
|
73
|
+
{/if}
|
|
74
|
+
{/each}
|
|
21
75
|
</div>
|
|
22
76
|
{/if}
|
|
23
77
|
</div>
|
|
24
78
|
|
|
25
79
|
<style>
|
|
26
|
-
.banner-
|
|
80
|
+
.banner-root {
|
|
81
|
+
position: relative;
|
|
82
|
+
width: 100%;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.banner-media {
|
|
27
86
|
position: relative;
|
|
28
87
|
width: 100%;
|
|
29
88
|
overflow: hidden;
|
|
30
89
|
}
|
|
31
90
|
|
|
32
|
-
.banner-
|
|
33
|
-
.banner-mobile {
|
|
91
|
+
.banner-img {
|
|
34
92
|
display: block;
|
|
35
93
|
width: 100%;
|
|
36
|
-
height: auto;
|
|
37
|
-
object-fit: cover;
|
|
38
94
|
}
|
|
39
95
|
|
|
40
96
|
.banner-mobile {
|
|
41
97
|
display: none;
|
|
42
98
|
}
|
|
43
99
|
|
|
44
|
-
@
|
|
100
|
+
@container page (max-width: 767px) {
|
|
45
101
|
.banner-desktop {
|
|
46
102
|
display: none;
|
|
47
103
|
}
|
|
@@ -50,25 +106,37 @@
|
|
|
50
106
|
}
|
|
51
107
|
}
|
|
52
108
|
|
|
53
|
-
.banner-
|
|
109
|
+
.banner-empty {
|
|
54
110
|
display: flex;
|
|
55
|
-
flex-direction: column;
|
|
56
111
|
align-items: center;
|
|
57
112
|
justify-content: center;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
background: rgba(255, 255, 255, 0.
|
|
113
|
+
min-height: 280px;
|
|
114
|
+
font-size: 0.85rem;
|
|
115
|
+
color: rgba(255, 255, 255, 0.5);
|
|
116
|
+
background: rgba(255, 255, 255, 0.04);
|
|
117
|
+
border: 1px dashed rgba(255, 255, 255, 0.15);
|
|
62
118
|
}
|
|
63
119
|
|
|
64
|
-
.
|
|
65
|
-
|
|
66
|
-
|
|
120
|
+
.banner-scrim {
|
|
121
|
+
position: absolute;
|
|
122
|
+
inset: 0;
|
|
123
|
+
pointer-events: none;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.banner-stack {
|
|
127
|
+
position: absolute;
|
|
128
|
+
left: 0;
|
|
129
|
+
right: 0;
|
|
130
|
+
transform: translateY(-50%);
|
|
131
|
+
display: flex;
|
|
132
|
+
flex-direction: column;
|
|
133
|
+
padding: 0 1.5rem;
|
|
134
|
+
pointer-events: none;
|
|
67
135
|
}
|
|
68
136
|
|
|
69
|
-
.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
137
|
+
.banner-layer-text {
|
|
138
|
+
display: inline-block;
|
|
139
|
+
line-height: 1.1;
|
|
140
|
+
max-width: 100%;
|
|
73
141
|
}
|
|
74
142
|
</style>
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UploadSetting, NumberSetting, SelectSetting, SegmentSetting, ColorSetting, TranslatableSetting, RepeaterSetting, Settings, type InferSettingsMapType } from '../../settings';
|
|
2
2
|
export declare const bannerSettings: Settings<{
|
|
3
|
+
marginTop: NumberSetting;
|
|
4
|
+
objectFit: SelectSetting;
|
|
3
5
|
desktopImage: UploadSetting;
|
|
4
6
|
mobileImage: UploadSetting;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
overlayColor: ColorSetting;
|
|
8
|
+
verticalPosition: NumberSetting;
|
|
9
|
+
textAlign: SegmentSetting;
|
|
10
|
+
gap: NumberSetting;
|
|
11
|
+
layers: RepeaterSetting<{
|
|
12
|
+
text: TranslatableSetting;
|
|
13
|
+
color: ColorSetting;
|
|
14
|
+
fontSize: NumberSetting;
|
|
15
|
+
fontWeight: SelectSetting;
|
|
16
|
+
}>;
|
|
7
17
|
}>;
|
|
8
18
|
export type BannerSettingsMap = InferSettingsMapType<typeof bannerSettings>;
|
|
@@ -1,5 +1,61 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UploadSetting, NumberSetting, SelectSetting, SegmentSetting, ColorSetting, TranslatableSetting, RepeaterSetting, Settings } from '../../settings';
|
|
2
|
+
const FONT_WEIGHTS = [
|
|
3
|
+
{ label: 'Light', value: '300' },
|
|
4
|
+
{ label: 'Regular', value: '400' },
|
|
5
|
+
{ label: 'Medium', value: '500' },
|
|
6
|
+
{ label: 'Semi Bold', value: '600' },
|
|
7
|
+
{ label: 'Bold', value: '700' },
|
|
8
|
+
{ label: 'Extra Bold', value: '800' },
|
|
9
|
+
{ label: 'Black', value: '900' }
|
|
10
|
+
];
|
|
11
|
+
const LAYER_SEEDS = [
|
|
12
|
+
{ text: 'Cashback', color: '#FFFFFF', fontSize: 34, fontWeight: '700' },
|
|
13
|
+
{ text: 'Get 15% Back', color: '#E8C75C', fontSize: 46, fontWeight: '800' },
|
|
14
|
+
{ text: 'Every Eligible Ticket Gets Covered', color: '#FFFFFF', fontSize: 16, fontWeight: '500' }
|
|
15
|
+
];
|
|
16
|
+
const layerFactory = (index) => {
|
|
17
|
+
const seed = LAYER_SEEDS[index] ?? {
|
|
18
|
+
text: 'New text',
|
|
19
|
+
color: '#FFFFFF',
|
|
20
|
+
fontSize: 24,
|
|
21
|
+
fontWeight: '700'
|
|
22
|
+
};
|
|
23
|
+
return new Settings('Text layer', {
|
|
24
|
+
text: new TranslatableSetting({ title: 'Text', defaultValue: { en: seed.text } }),
|
|
25
|
+
color: new ColorSetting({
|
|
26
|
+
title: 'Color',
|
|
27
|
+
defaultValue: seed.color,
|
|
28
|
+
extra: { allowGradient: true }
|
|
29
|
+
}),
|
|
30
|
+
fontSize: new NumberSetting({
|
|
31
|
+
title: 'Font Size',
|
|
32
|
+
defaultValue: seed.fontSize,
|
|
33
|
+
extra: { min: 8, max: 120, step: 1 }
|
|
34
|
+
}),
|
|
35
|
+
fontWeight: new SelectSetting({
|
|
36
|
+
title: 'Font Weight',
|
|
37
|
+
defaultValue: seed.fontWeight,
|
|
38
|
+
extra: { options: FONT_WEIGHTS }
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
};
|
|
2
42
|
export const bannerSettings = new Settings('Banner', {
|
|
43
|
+
marginTop: new NumberSetting({
|
|
44
|
+
title: 'Margin Top',
|
|
45
|
+
defaultValue: 0,
|
|
46
|
+
extra: { min: 0, max: 200 }
|
|
47
|
+
}),
|
|
48
|
+
objectFit: new SelectSetting({
|
|
49
|
+
title: 'Fit',
|
|
50
|
+
defaultValue: 'cover',
|
|
51
|
+
extra: {
|
|
52
|
+
options: [
|
|
53
|
+
{ label: 'Cover', value: 'cover' },
|
|
54
|
+
{ label: 'Contain', value: 'contain' },
|
|
55
|
+
{ label: 'Fill', value: 'fill' }
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
}),
|
|
3
59
|
desktopImage: new UploadSetting({
|
|
4
60
|
title: 'Desktop Image',
|
|
5
61
|
defaultValue: ''
|
|
@@ -8,13 +64,37 @@ export const bannerSettings = new Settings('Banner', {
|
|
|
8
64
|
title: 'Mobile Image',
|
|
9
65
|
defaultValue: ''
|
|
10
66
|
}),
|
|
11
|
-
|
|
12
|
-
title: '
|
|
13
|
-
defaultValue: '
|
|
67
|
+
overlayColor: new ColorSetting({
|
|
68
|
+
title: 'Overlay',
|
|
69
|
+
defaultValue: 'rgba(0,0,0,0)',
|
|
70
|
+
extra: { allowGradient: true }
|
|
71
|
+
}),
|
|
72
|
+
verticalPosition: new NumberSetting({
|
|
73
|
+
title: 'Vertical Position',
|
|
74
|
+
defaultValue: 50,
|
|
75
|
+
extra: { min: 0, max: 100, step: 1 }
|
|
76
|
+
}),
|
|
77
|
+
textAlign: new SegmentSetting({
|
|
78
|
+
title: 'Align',
|
|
79
|
+
defaultValue: 'center',
|
|
80
|
+
extra: {
|
|
81
|
+
options: [
|
|
82
|
+
{ label: 'Left', value: 'left', icon: 'align-left' },
|
|
83
|
+
{ label: 'Center', value: 'center', icon: 'align-center' },
|
|
84
|
+
{ label: 'Right', value: 'right', icon: 'align-right' }
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}),
|
|
88
|
+
gap: new NumberSetting({
|
|
89
|
+
title: 'Gap',
|
|
90
|
+
defaultValue: 8,
|
|
91
|
+
extra: { min: 0, max: 80, step: 1 }
|
|
14
92
|
}),
|
|
15
|
-
|
|
16
|
-
title: '
|
|
17
|
-
|
|
18
|
-
|
|
93
|
+
layers: new RepeaterSetting({
|
|
94
|
+
title: 'Text Layers',
|
|
95
|
+
itemLabel: 'Text layer',
|
|
96
|
+
addButtonText: '+ Add text',
|
|
97
|
+
factory: layerFactory,
|
|
98
|
+
count: 3
|
|
19
99
|
})
|
|
20
100
|
});
|
|
@@ -2,45 +2,51 @@
|
|
|
2
2
|
import type { ButtonSettingsMap } from './settings';
|
|
3
3
|
|
|
4
4
|
let { settings }: { settings: ButtonSettingsMap } = $props();
|
|
5
|
+
|
|
6
|
+
const isGradient = $derived(/gradient\(/i.test(settings.background));
|
|
7
|
+
const backgroundStyle = $derived(
|
|
8
|
+
isGradient ? `background-image: ${settings.background};` : `background: ${settings.background};`
|
|
9
|
+
);
|
|
5
10
|
</script>
|
|
6
11
|
|
|
7
|
-
<div class="button-
|
|
12
|
+
<div class="button-wrap" style="margin-top: {settings.marginTop}px;">
|
|
8
13
|
<a
|
|
9
|
-
href={settings.link}
|
|
10
|
-
class="
|
|
14
|
+
href={settings.link || undefined}
|
|
15
|
+
class="button-element"
|
|
11
16
|
style="
|
|
12
|
-
|
|
13
|
-
color: {settings.
|
|
14
|
-
border-radius: {settings.borderRadius}px;
|
|
15
|
-
|
|
16
|
-
font-size: {settings.fontSize}px;
|
|
17
|
+
{backgroundStyle}
|
|
18
|
+
color: {settings.typography.color};
|
|
19
|
+
border-radius: {settings.border.borderRadius}px;
|
|
20
|
+
border: {settings.border.borderWidth}px solid {settings.border.borderColor};
|
|
21
|
+
font-size: {settings.typography.fontSize}px;
|
|
22
|
+
font-weight: {settings.typography.fontWeight};
|
|
23
|
+
font-family: {settings.typography.fontFamily};
|
|
17
24
|
"
|
|
18
25
|
>
|
|
19
|
-
{settings.text}
|
|
26
|
+
{settings.typography.text}
|
|
20
27
|
</a>
|
|
21
28
|
</div>
|
|
22
29
|
|
|
23
30
|
<style>
|
|
24
|
-
.button-
|
|
31
|
+
.button-wrap {
|
|
25
32
|
display: flex;
|
|
26
33
|
justify-content: center;
|
|
27
34
|
width: 100%;
|
|
28
|
-
max-width: 750px;
|
|
29
|
-
margin: 0 auto;
|
|
30
35
|
}
|
|
31
36
|
|
|
32
|
-
.
|
|
33
|
-
display: inline-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
letter-spacing: 0.02em;
|
|
37
|
+
.button-element {
|
|
38
|
+
display: inline-flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
justify-content: center;
|
|
41
|
+
padding: 0.75rem 2rem;
|
|
38
42
|
text-decoration: none;
|
|
39
43
|
text-align: center;
|
|
40
|
-
|
|
44
|
+
letter-spacing: 0.02em;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
transition: filter 0.2s ease;
|
|
41
47
|
}
|
|
42
48
|
|
|
43
|
-
.
|
|
44
|
-
|
|
49
|
+
.button-element:hover {
|
|
50
|
+
filter: brightness(1.05);
|
|
45
51
|
}
|
|
46
52
|
</style>
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { ColorSetting, NumberSetting, TextSetting, Settings, type InferSettingsMapType } from '../../settings';
|
|
2
2
|
export declare const buttonSettings: Settings<{
|
|
3
|
-
|
|
3
|
+
marginTop: NumberSetting;
|
|
4
4
|
link: TextSetting;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
background: ColorSetting;
|
|
6
|
+
typography: Settings<{
|
|
7
|
+
text: import("../../settings").TranslatableSetting;
|
|
8
|
+
color: ColorSetting;
|
|
8
9
|
fontSize: NumberSetting;
|
|
9
|
-
|
|
10
|
+
fontFamily: TextSetting;
|
|
11
|
+
fontWeight: import("../../settings").SelectSetting;
|
|
10
12
|
}>;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
border: Settings<{
|
|
14
|
+
borderWidth: NumberSetting;
|
|
15
|
+
borderColor: ColorSetting;
|
|
16
|
+
borderRadius: NumberSetting;
|
|
15
17
|
}>;
|
|
16
18
|
}>;
|
|
17
19
|
export type ButtonSettingsMap = InferSettingsMapType<typeof buttonSettings>;
|
|
@@ -1,47 +1,26 @@
|
|
|
1
|
-
import { ColorSetting, NumberSetting, TextSetting, Settings } from '../../settings';
|
|
1
|
+
import { ColorSetting, NumberSetting, TextSetting, Settings, TypographySettings, BorderSettings } from '../../settings';
|
|
2
2
|
export const buttonSettings = new Settings('Button', {
|
|
3
|
-
|
|
4
|
-
title: '
|
|
5
|
-
defaultValue:
|
|
3
|
+
marginTop: new NumberSetting({
|
|
4
|
+
title: 'Margin Top',
|
|
5
|
+
defaultValue: 16,
|
|
6
|
+
extra: { min: 0, max: 200 }
|
|
6
7
|
}),
|
|
7
8
|
link: new TextSetting({
|
|
8
9
|
title: 'Link URL',
|
|
9
|
-
defaultValue: '
|
|
10
|
+
defaultValue: ''
|
|
10
11
|
}),
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}),
|
|
16
|
-
textColor: new ColorSetting({
|
|
17
|
-
title: 'Text Color',
|
|
18
|
-
defaultValue: '#ffffff'
|
|
19
|
-
}),
|
|
20
|
-
fontSize: new NumberSetting({
|
|
21
|
-
title: 'Font Size',
|
|
22
|
-
defaultValue: 16,
|
|
23
|
-
extra: { min: 10, max: 48, step: 1 }
|
|
24
|
-
}),
|
|
25
|
-
borderRadius: new NumberSetting({
|
|
26
|
-
title: 'Border Radius',
|
|
27
|
-
defaultValue: 12,
|
|
28
|
-
extra: { min: 0, max: 50, step: 1 }
|
|
29
|
-
})
|
|
12
|
+
background: new ColorSetting({
|
|
13
|
+
title: 'Background',
|
|
14
|
+
defaultValue: '#E8C75C',
|
|
15
|
+
extra: { allowGradient: true }
|
|
30
16
|
}),
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
extra: { min: 0, step: 1 }
|
|
40
|
-
}),
|
|
41
|
-
paddingY: new NumberSetting({
|
|
42
|
-
title: 'Padding Vertical',
|
|
43
|
-
defaultValue: 16,
|
|
44
|
-
extra: { min: 0, step: 1 }
|
|
45
|
-
})
|
|
17
|
+
typography: TypographySettings({
|
|
18
|
+
text: 'Bet Now',
|
|
19
|
+
color: '#29220B',
|
|
20
|
+
fontSize: 16,
|
|
21
|
+
fontWeight: '700'
|
|
22
|
+
}),
|
|
23
|
+
border: BorderSettings({
|
|
24
|
+
borderRadius: 12
|
|
46
25
|
})
|
|
47
26
|
});
|
|
@@ -2,7 +2,8 @@ import { ColorSetting, NumberSetting, Settings } from '../settings';
|
|
|
2
2
|
export const globalSettings = new Settings('Global', {
|
|
3
3
|
background: new ColorSetting({
|
|
4
4
|
title: 'Background',
|
|
5
|
-
defaultValue: '#
|
|
5
|
+
defaultValue: 'linear-gradient(160deg, #1B4D7A, #081A30)',
|
|
6
|
+
extra: { allowGradient: true }
|
|
6
7
|
}),
|
|
7
8
|
paddingTop: new NumberSetting({
|
|
8
9
|
title: 'Padding Top',
|
|
@@ -14,7 +15,7 @@ export const globalSettings = new Settings('Global', {
|
|
|
14
15
|
}),
|
|
15
16
|
paddingBottom: new NumberSetting({
|
|
16
17
|
title: 'Padding Bottom',
|
|
17
|
-
defaultValue:
|
|
18
|
+
defaultValue: 24,
|
|
18
19
|
extra: {
|
|
19
20
|
min: 0,
|
|
20
21
|
max: 100
|
|
@@ -22,7 +23,7 @@ export const globalSettings = new Settings('Global', {
|
|
|
22
23
|
}),
|
|
23
24
|
paddingLeft: new NumberSetting({
|
|
24
25
|
title: 'Padding Left',
|
|
25
|
-
defaultValue:
|
|
26
|
+
defaultValue: 16,
|
|
26
27
|
extra: {
|
|
27
28
|
min: 0,
|
|
28
29
|
max: 100
|
|
@@ -30,7 +31,7 @@ export const globalSettings = new Settings('Global', {
|
|
|
30
31
|
}),
|
|
31
32
|
paddingRight: new NumberSetting({
|
|
32
33
|
title: 'Padding Right',
|
|
33
|
-
defaultValue:
|
|
34
|
+
defaultValue: 16,
|
|
34
35
|
extra: {
|
|
35
36
|
min: 0,
|
|
36
37
|
max: 100
|