@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.
Files changed (117) hide show
  1. package/dist/builder/BuilderView.svelte +158 -0
  2. package/dist/builder/BuilderView.svelte.d.ts +8 -0
  3. package/dist/builder/builder.vanilla.es.js +6514 -0
  4. package/dist/builder/builder.vanilla.umd.js +89 -0
  5. package/dist/builder/canvas/canvas.svelte +92 -0
  6. package/dist/builder/canvas/canvas.svelte.d.ts +17 -0
  7. package/dist/builder/canvas/styles.css +63 -0
  8. package/dist/builder/createBuilder.svelte.d.ts +9 -0
  9. package/dist/builder/createBuilder.svelte.js +17 -0
  10. package/dist/builder/index.d.ts +8 -0
  11. package/dist/builder/index.js +7 -0
  12. package/dist/builder/leftbar/leftBar.svelte +740 -0
  13. package/dist/builder/leftbar/leftBar.svelte.d.ts +8 -0
  14. package/dist/builder/leftbar/styles.css +152 -0
  15. package/dist/builder/pageMeta.svelte.d.ts +13 -0
  16. package/dist/builder/pageMeta.svelte.js +25 -0
  17. package/dist/builder/rightbar/rightBar.svelte +100 -0
  18. package/dist/builder/rightbar/rightBar.svelte.d.ts +10 -0
  19. package/dist/builder/rightbar/styles.css +167 -0
  20. package/dist/builder/topbar/TopBar.svelte +337 -0
  21. package/dist/builder/topbar/TopBar.svelte.d.ts +12 -0
  22. package/dist/builder/topbar/styles.css +123 -0
  23. package/dist/builder/viewport.svelte.d.ts +9 -0
  24. package/dist/builder/viewport.svelte.js +17 -0
  25. package/dist/elements/_shared/Arrow.svelte +58 -0
  26. package/dist/elements/_shared/Arrow.svelte.d.ts +11 -0
  27. package/dist/elements/_shared/GradientBorder.svelte +55 -0
  28. package/dist/elements/_shared/GradientBorder.svelte.d.ts +10 -0
  29. package/dist/elements/banner/bannerElement.svelte +101 -33
  30. package/dist/elements/banner/settings.d.ts +13 -3
  31. package/dist/elements/banner/settings.js +88 -8
  32. package/dist/elements/button/buttonElement.svelte +27 -21
  33. package/dist/elements/button/settings.d.ts +11 -9
  34. package/dist/elements/button/settings.js +18 -39
  35. package/dist/elements/globalSettings.js +5 -4
  36. package/dist/elements/howItWorks/howItWorksElement.svelte +221 -0
  37. package/dist/elements/howItWorks/howItWorksElement.svelte.d.ts +7 -0
  38. package/dist/elements/howItWorks/settings.d.ts +16 -0
  39. package/dist/elements/howItWorks/settings.js +70 -0
  40. package/dist/elements/steps/settings.d.ts +17 -0
  41. package/dist/elements/steps/settings.js +69 -0
  42. package/dist/elements/steps/stepsElement.svelte +220 -0
  43. package/dist/elements/steps/stepsElement.svelte.d.ts +7 -0
  44. package/dist/elements/terms/settings.d.ts +14 -0
  45. package/dist/elements/terms/settings.js +32 -0
  46. package/dist/elements/terms/termsElement.svelte +209 -0
  47. package/dist/elements/terms/termsElement.svelte.d.ts +7 -0
  48. package/dist/elements/text/settings.d.ts +8 -11
  49. package/dist/elements/text/settings.js +21 -51
  50. package/dist/elements/text/textElement.svelte +23 -23
  51. package/dist/hooks/index.d.ts +1 -0
  52. package/dist/hooks/index.js +1 -0
  53. package/dist/hooks/useTranslation.svelte.d.ts +9 -0
  54. package/dist/hooks/useTranslation.svelte.js +10 -0
  55. package/dist/index.d.ts +3 -0
  56. package/dist/index.js +3 -0
  57. package/dist/renderer/BuilderRenderer.svelte +30 -2
  58. package/dist/renderer/registry.js +6 -6
  59. package/dist/renderer/renderer.vanilla.es.js +1547 -1188
  60. package/dist/renderer/renderer.vanilla.umd.js +64 -39
  61. package/dist/renderer/resolve.d.ts +1 -1
  62. package/dist/renderer/resolve.js +28 -14
  63. package/dist/renderer/types.d.ts +2 -0
  64. package/dist/service/element.action.svelte.d.ts +21 -0
  65. package/dist/service/element.action.svelte.js +125 -0
  66. package/dist/service/element.history.svelte.d.ts +8 -0
  67. package/dist/service/element.history.svelte.js +36 -0
  68. package/dist/service/element.io.svelte.d.ts +4 -0
  69. package/dist/service/element.io.svelte.js +232 -0
  70. package/dist/service/element.reader.svelte.d.ts +4 -0
  71. package/dist/service/element.reader.svelte.js +51 -0
  72. package/dist/service/element.translate.svelte.d.ts +12 -0
  73. package/dist/service/element.translate.svelte.js +81 -0
  74. package/dist/service/index.d.ts +5 -0
  75. package/dist/service/index.js +5 -0
  76. package/dist/service/types.d.ts +13 -0
  77. package/dist/service/types.js +1 -0
  78. package/dist/settings/base.svelte.d.ts +6 -1
  79. package/dist/settings/base.svelte.js +61 -17
  80. package/dist/settings/components/ColorSettings.svelte +169 -40
  81. package/dist/settings/components/ColorSettings.svelte.d.ts +3 -2
  82. package/dist/settings/components/ListSettings.svelte +4 -5
  83. package/dist/settings/components/NumberSettings.svelte +117 -20
  84. package/dist/settings/components/RepeaterSettings.svelte +145 -0
  85. package/dist/settings/components/RepeaterSettings.svelte.d.ts +14 -0
  86. package/dist/settings/components/SegmentSettings.svelte +85 -0
  87. package/dist/settings/components/SegmentSettings.svelte.d.ts +5 -0
  88. package/dist/settings/components/SelectSettings.svelte +2 -3
  89. package/dist/settings/components/SettingsGroup.svelte +14 -69
  90. package/dist/settings/components/SettingsRenderer.svelte +76 -0
  91. package/dist/settings/components/SettingsRenderer.svelte.d.ts +8 -0
  92. package/dist/settings/components/TextSettings.svelte +2 -3
  93. package/dist/settings/components/TranslatableSettings.svelte +3 -4
  94. package/dist/settings/components/UploadSettings.svelte +2 -3
  95. package/dist/settings/groups.d.ts +23 -7
  96. package/dist/settings/groups.js +48 -24
  97. package/dist/settings/implementation.svelte.js +4 -0
  98. package/dist/settings/index.d.ts +2 -0
  99. package/dist/settings/index.js +2 -0
  100. package/dist/settings/mode.svelte.d.ts +4 -0
  101. package/dist/settings/mode.svelte.js +4 -0
  102. package/dist/settings/repeater.svelte.d.ts +26 -0
  103. package/dist/settings/repeater.svelte.js +70 -0
  104. package/dist/settings/types.d.ts +28 -2
  105. package/package.json +8 -2
  106. package/dist/elements/accordion/accordionElement.svelte +0 -101
  107. package/dist/elements/accordion/accordionElement.svelte.d.ts +0 -7
  108. package/dist/elements/accordion/settings.d.ts +0 -17
  109. package/dist/elements/accordion/settings.js +0 -54
  110. package/dist/elements/badge/badgeElement.svelte +0 -49
  111. package/dist/elements/badge/badgeElement.svelte.d.ts +0 -7
  112. package/dist/elements/badge/settings.d.ts +0 -14
  113. package/dist/elements/badge/settings.js +0 -47
  114. package/dist/elements/ctaCard/ctaCardElement.svelte +0 -132
  115. package/dist/elements/ctaCard/ctaCardElement.svelte.d.ts +0 -7
  116. package/dist/elements/ctaCard/settings.d.ts +0 -22
  117. 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-wrapper"
9
- style="background-color: {settings.backgroundColor}; min-height: {settings.minHeight}px;"
10
- >
11
- {#if settings.desktopImage}
12
- <img src={settings.desktopImage} alt="Banner" class="banner-desktop" />
13
- {/if}
14
- {#if settings.mobileImage}
15
- <img src={settings.mobileImage} alt="Banner mobile" class="banner-mobile" />
16
- {/if}
17
- {#if !settings.desktopImage && !settings.mobileImage}
18
- <div class="banner-placeholder">
19
- <span class="placeholder-icon">&#128444;</span>
20
- <span class="placeholder-text">Upload desktop and/or mobile banner images</span>
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-wrapper {
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-desktop,
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
- @media (max-width: 768px) {
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-placeholder {
109
+ .banner-empty {
54
110
  display: flex;
55
- flex-direction: column;
56
111
  align-items: center;
57
112
  justify-content: center;
58
- gap: 10px;
59
- padding: 48px 24px;
60
- border: 1.5px dashed rgba(255, 255, 255, 0.12);
61
- background: rgba(255, 255, 255, 0.03);
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
- .placeholder-icon {
65
- font-size: 2rem;
66
- opacity: 0.3;
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
- .placeholder-text {
70
- font-size: 0.8rem;
71
- color: rgba(255, 255, 255, 0.3);
72
- text-align: center;
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 { ColorSetting, NumberSetting, UploadSetting, Settings, type InferSettingsMapType } from '../../settings';
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
- backgroundColor: ColorSetting;
6
- minHeight: NumberSetting;
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 { ColorSetting, NumberSetting, UploadSetting, Settings } from '../../settings';
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
- backgroundColor: new ColorSetting({
12
- title: 'Background Color',
13
- defaultValue: '#10202D'
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
- minHeight: new NumberSetting({
16
- title: 'Min Height (px)',
17
- defaultValue: 400,
18
- extra: { min: 100, max: 1000, step: 10 }
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-wrapper" style="margin-top: {settings.marginTop}px;">
12
+ <div class="button-wrap" style="margin-top: {settings.marginTop}px;">
8
13
  <a
9
- href={settings.link}
10
- class="cta-button"
14
+ href={settings.link || undefined}
15
+ class="button-element"
11
16
  style="
12
- background: {settings.backgroundColor};
13
- color: {settings.textColor};
14
- border-radius: {settings.borderRadius}px;
15
- padding: {settings.paddingY}px {settings.paddingX}px;
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-wrapper {
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
- .cta-button {
33
- display: inline-block;
34
- font-weight: 700;
35
- border: none;
36
- cursor: pointer;
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
- transition: opacity 0.2s ease;
44
+ letter-spacing: 0.02em;
45
+ cursor: pointer;
46
+ transition: filter 0.2s ease;
41
47
  }
42
48
 
43
- .cta-button:hover {
44
- opacity: 0.9;
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
- text: TextSetting;
3
+ marginTop: NumberSetting;
4
4
  link: TextSetting;
5
- style: Settings<{
6
- backgroundColor: ColorSetting;
7
- textColor: ColorSetting;
5
+ background: ColorSetting;
6
+ typography: Settings<{
7
+ text: import("../../settings").TranslatableSetting;
8
+ color: ColorSetting;
8
9
  fontSize: NumberSetting;
9
- borderRadius: NumberSetting;
10
+ fontFamily: TextSetting;
11
+ fontWeight: import("../../settings").SelectSetting;
10
12
  }>;
11
- layout: Settings<{
12
- marginTop: NumberSetting;
13
- paddingX: NumberSetting;
14
- paddingY: NumberSetting;
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
- text: new TextSetting({
4
- title: 'Button Text',
5
- defaultValue: 'READY TO BUILD'
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: '/crypto-sportsbook'
10
+ defaultValue: ''
10
11
  }),
11
- style: new Settings('Style', {
12
- backgroundColor: new ColorSetting({
13
- title: 'Background Color',
14
- defaultValue: '#2EA043'
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
- layout: new Settings('Layout', {
32
- marginTop: new NumberSetting({
33
- title: 'Margin Top',
34
- defaultValue: 0
35
- }),
36
- paddingX: new NumberSetting({
37
- title: 'Padding Horizontal',
38
- defaultValue: 46,
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: '#ffffff'
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: 22,
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: 0,
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: 0,
34
+ defaultValue: 16,
34
35
  extra: {
35
36
  min: 0,
36
37
  max: 100