@papu1337/builder 0.0.3

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 (81) hide show
  1. package/README.md +65 -0
  2. package/dist/elements/auth/authElement.svelte +115 -0
  3. package/dist/elements/auth/authElement.svelte.d.ts +7 -0
  4. package/dist/elements/auth/settings.d.ts +25 -0
  5. package/dist/elements/auth/settings.js +63 -0
  6. package/dist/elements/badge/badgeElement.svelte +48 -0
  7. package/dist/elements/badge/badgeElement.svelte.d.ts +7 -0
  8. package/dist/elements/badge/settings.d.ts +13 -0
  9. package/dist/elements/badge/settings.js +57 -0
  10. package/dist/elements/banner/bannerElement.svelte +46 -0
  11. package/dist/elements/banner/bannerElement.svelte.d.ts +7 -0
  12. package/dist/elements/banner/settings.d.ts +6 -0
  13. package/dist/elements/banner/settings.js +15 -0
  14. package/dist/elements/button/buttonElement.svelte +42 -0
  15. package/dist/elements/button/buttonElement.svelte.d.ts +7 -0
  16. package/dist/elements/button/settings.d.ts +16 -0
  17. package/dist/elements/button/settings.js +43 -0
  18. package/dist/elements/cards/cardsElement.svelte +136 -0
  19. package/dist/elements/cards/cardsElement.svelte.d.ts +7 -0
  20. package/dist/elements/cards/settings.d.ts +14 -0
  21. package/dist/elements/cards/settings.js +52 -0
  22. package/dist/elements/divider/dividerElement.svelte +34 -0
  23. package/dist/elements/divider/dividerElement.svelte.d.ts +7 -0
  24. package/dist/elements/divider/settings.d.ts +7 -0
  25. package/dist/elements/divider/settings.js +15 -0
  26. package/dist/elements/globalSettings.d.ts +8 -0
  27. package/dist/elements/globalSettings.js +39 -0
  28. package/dist/elements/products/productsElement.svelte +283 -0
  29. package/dist/elements/products/productsElement.svelte.d.ts +7 -0
  30. package/dist/elements/products/settings.d.ts +16 -0
  31. package/dist/elements/products/settings.js +56 -0
  32. package/dist/elements/terms/settings.d.ts +11 -0
  33. package/dist/elements/terms/settings.js +39 -0
  34. package/dist/elements/terms/termsElement.svelte +124 -0
  35. package/dist/elements/terms/termsElement.svelte.d.ts +7 -0
  36. package/dist/elements/text/settings.d.ts +11 -0
  37. package/dist/elements/text/settings.js +12 -0
  38. package/dist/elements/text/textElement.svelte +33 -0
  39. package/dist/elements/text/textElement.svelte.d.ts +7 -0
  40. package/dist/index.d.ts +3 -0
  41. package/dist/index.js +3 -0
  42. package/dist/renderer/BuilderRenderer.svelte +38 -0
  43. package/dist/renderer/BuilderRenderer.svelte.d.ts +4 -0
  44. package/dist/renderer/index.d.ts +4 -0
  45. package/dist/renderer/index.js +3 -0
  46. package/dist/renderer/registry.d.ts +4 -0
  47. package/dist/renderer/registry.js +20 -0
  48. package/dist/renderer/renderer.vanilla.es.js +2835 -0
  49. package/dist/renderer/renderer.vanilla.umd.js +31 -0
  50. package/dist/renderer/resolve.d.ts +1 -0
  51. package/dist/renderer/resolve.js +30 -0
  52. package/dist/renderer/types.d.ts +19 -0
  53. package/dist/renderer/types.js +1 -0
  54. package/dist/renderer/vanilla.svelte.d.ts +2 -0
  55. package/dist/renderer/vanilla.svelte.js +28 -0
  56. package/dist/settings/base.svelte.d.ts +30 -0
  57. package/dist/settings/base.svelte.js +91 -0
  58. package/dist/settings/components/ColorSettings.svelte +141 -0
  59. package/dist/settings/components/ColorSettings.svelte.d.ts +4 -0
  60. package/dist/settings/components/ListSettings.svelte +167 -0
  61. package/dist/settings/components/ListSettings.svelte.d.ts +14 -0
  62. package/dist/settings/components/NumberSettings.svelte +67 -0
  63. package/dist/settings/components/NumberSettings.svelte.d.ts +5 -0
  64. package/dist/settings/components/SelectSettings.svelte +64 -0
  65. package/dist/settings/components/SelectSettings.svelte.d.ts +5 -0
  66. package/dist/settings/components/SettingsGroup.svelte +94 -0
  67. package/dist/settings/components/SettingsGroup.svelte.d.ts +9 -0
  68. package/dist/settings/components/TextSettings.svelte +8 -0
  69. package/dist/settings/components/TextSettings.svelte.d.ts +4 -0
  70. package/dist/settings/components/TranslatableSettings.svelte +208 -0
  71. package/dist/settings/components/TranslatableSettings.svelte.d.ts +8 -0
  72. package/dist/settings/components/UploadSettings.svelte +185 -0
  73. package/dist/settings/components/UploadSettings.svelte.d.ts +4 -0
  74. package/dist/settings/groups.d.ts +14 -0
  75. package/dist/settings/groups.js +35 -0
  76. package/dist/settings/implementation.svelte.js +41 -0
  77. package/dist/settings/index.d.ts +4 -0
  78. package/dist/settings/index.js +4 -0
  79. package/dist/settings/types.d.ts +51 -0
  80. package/dist/settings/types.js +1 -0
  81. package/package.json +86 -0
@@ -0,0 +1,11 @@
1
+ import { ColorSetting, NumberSetting, TextSetting, ListSetting, Settings, type InferSettingsMapType } from '../../settings';
2
+ export declare const termsSettings: Settings<{
3
+ marginTop: NumberSetting;
4
+ title: TextSetting;
5
+ sections: ListSetting;
6
+ backgroundColor: ColorSetting;
7
+ borderColor: ColorSetting;
8
+ textColor: ColorSetting;
9
+ arrowBackground: ColorSetting;
10
+ }>;
11
+ export type TermsSettingsMap = InferSettingsMapType<typeof termsSettings>;
@@ -0,0 +1,39 @@
1
+ import { ColorSetting, NumberSetting, TextSetting, ListSetting, Settings } from '../../settings';
2
+ export const termsSettings = new Settings('Terms', {
3
+ marginTop: new NumberSetting({
4
+ title: 'Margin Top',
5
+ defaultValue: 0
6
+ }),
7
+ title: new TextSetting({
8
+ title: 'Title',
9
+ defaultValue: 'Terms & Conditions'
10
+ }),
11
+ sections: new ListSetting({
12
+ title: 'Sections',
13
+ defaultValue: [
14
+ { title: 'About the Promotion', content: 'Enter promotion details here.' },
15
+ { title: 'Bonus Game Rules and Prizes', content: 'Enter bonus game rules here.' }
16
+ ],
17
+ extra: {
18
+ addButtonText: '+ Add Section',
19
+ titlePlaceholder: 'Section title',
20
+ contentPlaceholder: 'Section content'
21
+ }
22
+ }),
23
+ backgroundColor: new ColorSetting({
24
+ title: 'Background Color',
25
+ defaultValue: '#162D3F'
26
+ }),
27
+ borderColor: new ColorSetting({
28
+ title: 'Border Color',
29
+ defaultValue: 'rgba(177,202,223,0.1)'
30
+ }),
31
+ textColor: new ColorSetting({
32
+ title: 'Text Color',
33
+ defaultValue: '#ffffff'
34
+ }),
35
+ arrowBackground: new ColorSetting({
36
+ title: 'Arrow Background',
37
+ defaultValue: '#33475b'
38
+ })
39
+ });
@@ -0,0 +1,124 @@
1
+ <script lang="ts">
2
+ import type { TermsSettingsMap } from './settings';
3
+
4
+ let { settings }: { settings: TermsSettingsMap } = $props();
5
+
6
+ let expandedSet = $state<Set<number>>(new Set());
7
+
8
+ function toggle(index: number) {
9
+ if (expandedSet.has(index)) {
10
+ expandedSet.delete(index);
11
+ } else {
12
+ expandedSet.add(index);
13
+ }
14
+ expandedSet = new Set(expandedSet);
15
+ }
16
+ </script>
17
+
18
+ <div class="terms-wrapper" style="margin-top: {settings.marginTop}px;">
19
+ <div
20
+ class="terms-container"
21
+ style="background-color: {settings.backgroundColor}; border: 1px solid {settings.borderColor};"
22
+ >
23
+ <div class="terms-main-header" style="color: {settings.textColor};">
24
+ <span class="terms-main-title">{settings.title}</span>
25
+ </div>
26
+
27
+ {#each settings.sections as section, i}
28
+ <div class="terms-section" style="border-color: {settings.borderColor};">
29
+ <button class="terms-header" onclick={() => toggle(i)} style="color: {settings.textColor};">
30
+ <span class="terms-title">{section.title}</span>
31
+ <div
32
+ class="terms-arrow"
33
+ class:rotated={expandedSet.has(i)}
34
+ style="background: {settings.arrowBackground};"
35
+ >
36
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
37
+ <path d="M8 11L3 5.5h10L8 11z" fill="currentColor" />
38
+ </svg>
39
+ </div>
40
+ </button>
41
+ {#if expandedSet.has(i)}
42
+ <div class="terms-content" style="color: {settings.textColor};">
43
+ <p>{section.content}</p>
44
+ </div>
45
+ {/if}
46
+ </div>
47
+ {/each}
48
+ </div>
49
+ </div>
50
+
51
+ <style>
52
+ .terms-wrapper {
53
+ max-width: 750px;
54
+ width: 100%;
55
+ margin: 0 auto;
56
+ }
57
+
58
+ .terms-container {
59
+ border-radius: 8px;
60
+ overflow: hidden;
61
+ }
62
+
63
+ .terms-main-header {
64
+ padding: 18px 20px;
65
+ border-bottom: 1px solid rgba(177, 202, 223, 0.1);
66
+ }
67
+
68
+ .terms-main-title {
69
+ font-size: 1.15rem;
70
+ font-weight: 600;
71
+ }
72
+
73
+ .terms-section {
74
+ border-top: 1px solid;
75
+ }
76
+
77
+ .terms-section:first-of-type {
78
+ border-top: none;
79
+ }
80
+
81
+ .terms-header {
82
+ display: flex;
83
+ width: 100%;
84
+ align-items: center;
85
+ justify-content: space-between;
86
+ padding: 16px 20px;
87
+ background: none;
88
+ border: none;
89
+ cursor: pointer;
90
+ }
91
+
92
+ .terms-title {
93
+ font-size: 1rem;
94
+ font-weight: 500;
95
+ text-align: start;
96
+ }
97
+
98
+ .terms-arrow {
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ width: 30px;
103
+ height: 30px;
104
+ border-radius: 50%;
105
+ padding: 4px;
106
+ transition: transform 0.2s ease;
107
+ flex-shrink: 0;
108
+ }
109
+
110
+ .terms-arrow.rotated {
111
+ transform: rotate(180deg);
112
+ }
113
+
114
+ .terms-content {
115
+ padding: 0 20px 20px;
116
+ font-size: 0.875rem;
117
+ line-height: 1.6;
118
+ opacity: 0.8;
119
+ }
120
+
121
+ .terms-content p {
122
+ margin: 0;
123
+ }
124
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { TermsSettingsMap } from './settings';
2
+ type $$ComponentProps = {
3
+ settings: TermsSettingsMap;
4
+ };
5
+ declare const TermsElement: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type TermsElement = ReturnType<typeof TermsElement>;
7
+ export default TermsElement;
@@ -0,0 +1,11 @@
1
+ import { TranslatableSetting, Settings, type InferSettingsMapType } from '../../settings';
2
+ export declare const textSettings: Settings<{
3
+ text: TranslatableSetting;
4
+ typography: Settings<{
5
+ color: import("../../settings").ColorSetting;
6
+ fontSize: import("../../settings").NumberSetting;
7
+ fontFamily: import("../../settings").TextSetting;
8
+ fontWeight: import("../../settings").SelectSetting;
9
+ }>;
10
+ }>;
11
+ export type TextSettingsMap = InferSettingsMapType<typeof textSettings>;
@@ -0,0 +1,12 @@
1
+ import { TranslatableSetting, Settings, createTypographySettings } from '../../settings';
2
+ export const textSettings = new Settings('Text', {
3
+ text: new TranslatableSetting({
4
+ title: 'Text',
5
+ defaultValue: { en: 'Enter your text here' }
6
+ }),
7
+ typography: new Settings('Typography', {
8
+ ...createTypographySettings({
9
+ fontFamily: 'Arial'
10
+ })
11
+ })
12
+ });
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import type { TextSettingsMap } from './settings';
3
+
4
+ let { settings }: { settings: TextSettingsMap } = $props();
5
+ </script>
6
+
7
+ <div class="text-wrapper">
8
+ <p
9
+ class="text-element"
10
+ style="
11
+ font-size: {settings.fontSize}px;
12
+ font-weight: {settings.fontWeight};
13
+ line-height: {settings.lineHeight};
14
+ letter-spacing: {settings.letterSpacing}px;
15
+ "
16
+ >
17
+ {settings.text}
18
+ </p>
19
+ </div>
20
+
21
+ <style>
22
+ .text-wrapper {
23
+ width: 100%;
24
+ margin-left: auto;
25
+ margin-right: auto;
26
+ }
27
+
28
+ .text-element {
29
+ margin: 0;
30
+ word-wrap: break-word;
31
+ white-space: pre-wrap;
32
+ }
33
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { TextSettingsMap } from './settings';
2
+ type $$ComponentProps = {
3
+ settings: TextSettingsMap;
4
+ };
5
+ declare const TextElement: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type TextElement = ReturnType<typeof TextElement>;
7
+ export default TextElement;
@@ -0,0 +1,3 @@
1
+ export * from './settings/base.svelte';
2
+ export * from './settings/implementation.svelte';
3
+ export * from './settings/types';
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './settings/base.svelte';
2
+ export * from './settings/implementation.svelte';
3
+ export * from './settings/types';
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import type { RendererProps } from './types.js';
3
+ import { componentRegistry } from './registry.js';
4
+ import { resolveSettings } from './resolve.js';
5
+
6
+ let { data, locale = 'en', containerClass = '', containerStyle = '' }: RendererProps = $props();
7
+
8
+ const globalStyle = $derived(() => {
9
+ const g = data.global;
10
+ return [
11
+ `background: ${g.background ?? '#ffffff'}`,
12
+ `padding-top: ${g.paddingTop ?? 0}px`,
13
+ `padding-bottom: ${g.paddingBottom ?? 0}px`,
14
+ `padding-left: ${g.paddingLeft ?? 0}px`,
15
+ `padding-right: ${g.paddingRight ?? 0}px`,
16
+ containerStyle
17
+ ]
18
+ .filter(Boolean)
19
+ .join('; ');
20
+ });
21
+
22
+ const resolvedComponents = $derived(
23
+ data.components
24
+ .map((entry) => ({
25
+ component: componentRegistry[entry.name],
26
+ settings: resolveSettings(entry.settings, locale),
27
+ name: entry.name
28
+ }))
29
+ .filter((c) => c.component !== undefined)
30
+ );
31
+ </script>
32
+
33
+ <div class={containerClass} style={globalStyle()}>
34
+ {#each resolvedComponents as { component, settings, name } (name + JSON.stringify(settings))}
35
+ {@const Component = component}
36
+ <Component {settings} />
37
+ {/each}
38
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { RendererProps } from './types.js';
2
+ declare const BuilderRenderer: import("svelte").Component<RendererProps, {}, "">;
3
+ type BuilderRenderer = ReturnType<typeof BuilderRenderer>;
4
+ export default BuilderRenderer;
@@ -0,0 +1,4 @@
1
+ export { default as BuilderRenderer } from './BuilderRenderer.svelte';
2
+ export { resolveSettings } from './resolve.js';
3
+ export { componentRegistry } from './registry.js';
4
+ export type { RendererProps, VanillaRendererInstance, ExportedState, ExportedEntry } from './types.js';
@@ -0,0 +1,3 @@
1
+ export { default as BuilderRenderer } from './BuilderRenderer.svelte';
2
+ export { resolveSettings } from './resolve.js';
3
+ export { componentRegistry } from './registry.js';
@@ -0,0 +1,4 @@
1
+ import type { Component } from 'svelte';
2
+ type AnyComponent = Component<any>;
3
+ export declare const componentRegistry: Record<string, AnyComponent>;
4
+ export {};
@@ -0,0 +1,20 @@
1
+ import TextElement from '../elements/text/textElement.svelte';
2
+ import ButtonElement from '../elements/button/buttonElement.svelte';
3
+ import AuthElement from '../elements/auth/authElement.svelte';
4
+ import BannerElement from '../elements/banner/bannerElement.svelte';
5
+ import BadgeElement from '../elements/badge/badgeElement.svelte';
6
+ import CardsElement from '../elements/cards/cardsElement.svelte';
7
+ import DividerElement from '../elements/divider/dividerElement.svelte';
8
+ import TermsElement from '../elements/terms/termsElement.svelte';
9
+ import ProductsElement from '../elements/products/productsElement.svelte';
10
+ export const componentRegistry = {
11
+ text: TextElement,
12
+ button: ButtonElement,
13
+ auth: AuthElement,
14
+ banner: BannerElement,
15
+ badge: BadgeElement,
16
+ cards: CardsElement,
17
+ divider: DividerElement,
18
+ terms: TermsElement,
19
+ products: ProductsElement
20
+ };