@developer_tribe/react-builder 1.0.2 → 1.0.4

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 (147) hide show
  1. package/dist/AttributesEditor.d.ts +3 -1
  2. package/dist/RenderPage.d.ts +2 -1
  3. package/dist/android.svg +43 -0
  4. package/dist/apple.svg +16 -0
  5. package/dist/attributes-editor/Field.d.ts +4 -2
  6. package/dist/attributes-editor/SizeField.d.ts +9 -0
  7. package/dist/attributes-editor/SpecialCategorySection.d.ts +2 -1
  8. package/dist/build-components/BackgroundImage/BackgroundImage.d.ts +5 -0
  9. package/dist/build-components/BackgroundImage/BackgroundImageProps.generated.d.ts +45 -0
  10. package/dist/build-components/Button/ButtonProps.generated.d.ts +8 -0
  11. package/dist/build-components/Carousel/CarouselProps.generated.d.ts +8 -0
  12. package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +8 -0
  13. package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +8 -0
  14. package/dist/build-components/CarouselItem/CarouselItemProps.generated.d.ts +8 -0
  15. package/dist/build-components/CarouselProvider/CarouselProviderProps.generated.d.ts +8 -0
  16. package/dist/build-components/Image/ImageProps.generated.d.ts +8 -0
  17. package/dist/build-components/Onboard/OnboardProps.generated.d.ts +8 -0
  18. package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +8 -1
  19. package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +8 -0
  20. package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +9 -3
  21. package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +8 -0
  22. package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +9 -1
  23. package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +8 -0
  24. package/dist/build-components/OnboardProvider/OnboardProviderProps.generated.d.ts +8 -1
  25. package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +8 -0
  26. package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +8 -0
  27. package/dist/build-components/Text/TextProps.generated.d.ts +8 -0
  28. package/dist/build-components/View/ViewProps.generated.d.ts +8 -0
  29. package/dist/build-components/index.d.ts +2 -1
  30. package/dist/build-components/patterns.generated.d.ts +1612 -46
  31. package/dist/components/AttributesEditorPanel.d.ts +3 -4
  32. package/dist/components/Builder.d.ts +2 -1
  33. package/dist/components/BuilderButton.d.ts +9 -0
  34. package/dist/components/JsonTextEditor.d.ts +9 -0
  35. package/dist/index.cjs.js +5 -5
  36. package/dist/index.cjs.js.map +1 -1
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.esm.js +5 -5
  39. package/dist/index.esm.js.map +1 -1
  40. package/dist/modals/ColorModal.d.ts +3 -1
  41. package/dist/pages/ProjectPage.d.ts +3 -3
  42. package/dist/pages/tabs/BuilderPanel.d.ts +8 -0
  43. package/dist/pages/tabs/SideTool.d.ts +8 -0
  44. package/dist/store.d.ts +9 -1
  45. package/dist/styles.css +1 -1
  46. package/dist/types/Project.d.ts +11 -0
  47. package/dist/utils/analyseNode.d.ts +1 -0
  48. package/dist/utils/extractImageStyle.d.ts +2 -1
  49. package/dist/utils/extractTextStyle.d.ts +8 -1
  50. package/dist/utils/extractViewStyle.d.ts +7 -1
  51. package/dist/utils/parseColor.d.ts +7 -0
  52. package/dist/utils/selection.d.ts +7 -0
  53. package/dist/utils/useMergedStyle.d.ts +2 -0
  54. package/package.json +2 -5
  55. package/src/.DS_Store +0 -0
  56. package/src/AttributesEditor.tsx +83 -16
  57. package/src/RenderPage.tsx +86 -4
  58. package/src/attributes-editor/Field.tsx +60 -165
  59. package/src/attributes-editor/SizeField.tsx +184 -0
  60. package/src/attributes-editor/SpecialCategorySection.tsx +12 -4
  61. package/src/build-components/BackgroundImage/BackgroundImage.tsx +77 -0
  62. package/src/build-components/BackgroundImage/BackgroundImageProps.generated.ts +61 -0
  63. package/src/build-components/BackgroundImage/pattern.json +45 -0
  64. package/src/build-components/Button/Button.tsx +29 -4
  65. package/src/build-components/Button/ButtonProps.generated.ts +8 -0
  66. package/src/build-components/Carousel/Carousel.tsx +25 -3
  67. package/src/build-components/Carousel/CarouselProps.generated.ts +8 -0
  68. package/src/build-components/CarouselButtons/CarouselButtons.tsx +19 -4
  69. package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +8 -0
  70. package/src/build-components/CarouselDots/CarouselDots.tsx +13 -4
  71. package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +8 -0
  72. package/src/build-components/CarouselItem/CarouselItem.tsx +20 -4
  73. package/src/build-components/CarouselItem/CarouselItemProps.generated.ts +8 -0
  74. package/src/build-components/CarouselProvider/CarouselProvider.tsx +14 -3
  75. package/src/build-components/CarouselProvider/CarouselProviderProps.generated.ts +8 -0
  76. package/src/build-components/Image/Image.tsx +27 -9
  77. package/src/build-components/Image/ImageProps.generated.ts +8 -0
  78. package/src/build-components/Image/pattern.json +1 -9
  79. package/src/build-components/Onboard/Onboard.tsx +2 -2
  80. package/src/build-components/Onboard/OnboardProps.generated.ts +8 -0
  81. package/src/build-components/OnboardButton/OnboardButton.tsx +11 -7
  82. package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +8 -1
  83. package/src/build-components/OnboardButtons/OnboardButtons.tsx +17 -5
  84. package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +8 -0
  85. package/src/build-components/OnboardDot/OnboardDot.tsx +68 -39
  86. package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +9 -3
  87. package/src/build-components/OnboardDot/pattern.json +3 -19
  88. package/src/build-components/OnboardFooter/OnboardFooter.tsx +37 -14
  89. package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +8 -0
  90. package/src/build-components/OnboardImage/OnboardImage.tsx +28 -6
  91. package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +9 -1
  92. package/src/build-components/OnboardItem/OnboardItem.tsx +15 -14
  93. package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +8 -0
  94. package/src/build-components/OnboardProvider/OnboardProvider.tsx +35 -20
  95. package/src/build-components/OnboardProvider/OnboardProviderProps.generated.ts +8 -1
  96. package/src/build-components/OnboardProvider/pattern.json +0 -8
  97. package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +8 -0
  98. package/src/build-components/OnboardSubtitle/pattern.json +1 -1
  99. package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +8 -0
  100. package/src/build-components/OnboardTitle/pattern.json +1 -1
  101. package/src/build-components/RenderNode.generated.tsx +3 -0
  102. package/src/build-components/Text/Text.tsx +28 -10
  103. package/src/build-components/Text/TextProps.generated.ts +8 -0
  104. package/src/build-components/View/View.tsx +25 -3
  105. package/src/build-components/View/ViewProps.generated.ts +8 -0
  106. package/src/build-components/View/pattern.json +67 -1
  107. package/src/build-components/index.ts +5 -0
  108. package/src/build-components/patterns.generated.ts +1620 -46
  109. package/src/components/AttributesEditorPanel.tsx +13 -6
  110. package/src/components/Builder.tsx +200 -56
  111. package/src/components/BuilderButton.tsx +127 -0
  112. package/src/components/DeviceNavigationBar.tsx +0 -1
  113. package/src/components/EditorHeader.tsx +11 -1
  114. package/src/components/JsonTextEditor.tsx +185 -0
  115. package/src/index.ts +2 -2
  116. package/src/mockOS/components/MockOSRouter.tsx +17 -3
  117. package/src/mockOS/context/MockOSContext.tsx +0 -5
  118. package/src/mockOS/managers/mockPermissionManager.ts +0 -4
  119. package/src/mockOS/managers/navigationManager.ts +1 -6
  120. package/src/modals/ColorModal.tsx +306 -71
  121. package/src/modals/LocalicationModal.tsx +4 -5
  122. package/src/modals/Modal.tsx +8 -1
  123. package/src/pages/ProjectPage.tsx +299 -55
  124. package/src/pages/tabs/{BuilderTab.tsx → BuilderPanel.tsx} +13 -9
  125. package/src/pages/tabs/SideTool.tsx +260 -0
  126. package/src/size-matters/index.ts +6 -0
  127. package/src/store.ts +18 -1
  128. package/src/styles/base/_global.scss +163 -7
  129. package/src/styles/components/_attributes-editor.scss +12 -0
  130. package/src/styles/components/_editor-shell.scss +25 -0
  131. package/src/styles/foundation/_sizes.scss +1 -1
  132. package/src/styles/layout/_builder.scss +66 -10
  133. package/src/styles/modals/_color-modal.scss +59 -1
  134. package/src/styles/utilities/_carousel.scss +9 -8
  135. package/src/types/Project.ts +14 -0
  136. package/src/utils/analyseNode.ts +98 -0
  137. package/src/utils/extractImageStyle.ts +3 -6
  138. package/src/utils/extractTextStyle.ts +19 -82
  139. package/src/utils/extractViewStyle.ts +41 -12
  140. package/src/utils/parseColor.ts +43 -0
  141. package/src/utils/selection.ts +24 -0
  142. package/src/utils/useMergedStyle.ts +16 -0
  143. package/dist/pages/tabs/BuilderTab.d.ts +0 -9
  144. package/dist/pages/tabs/DebugTab.d.ts +0 -7
  145. package/dist/pages/tabs/PreviewTab.d.ts +0 -3
  146. package/src/pages/tabs/DebugTab.tsx +0 -64
  147. package/src/pages/tabs/PreviewTab.tsx +0 -206
@@ -1,64 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { JsonEditor } from 'json-edit-react';
3
- import { Modal } from '../../modals';
4
- import { Node } from '../..';
5
- import { useLogRender } from '../../utils/useLogRender';
6
-
7
- type DebugTabProps = {
8
- data: Node;
9
- setData: (data: Node) => void;
10
- };
11
-
12
- export function DebugTab({ data, setData }: DebugTabProps) {
13
- useLogRender('DebugTab');
14
- const [isOpen, setIsOpen] = useState(false);
15
- return (
16
- <>
17
- <button
18
- type="button"
19
- className="editor-button debug-button"
20
- title="Inspect raw JSON data"
21
- onClick={() => setIsOpen(true)}
22
- >
23
- Debug JSON
24
- </button>
25
- {isOpen ? (
26
- <Modal
27
- onClose={() => setIsOpen(false)}
28
- ariaLabelledBy="debug-json-editor-title"
29
- className="modal--large modal--scrollable"
30
- contentClassName="localication-modal__content"
31
- >
32
- <div className="modal__header localication-modal__header">
33
- <div className="localication-modal__header-main">
34
- <h3 id="debug-json-editor-title" className="modal__title">
35
- Debug data
36
- </h3>
37
- <p className="localication-modal__description">
38
- Inspect and edit the current node tree using the JSON editor.
39
- </p>
40
- </div>
41
- <button
42
- type="button"
43
- className="editor-button"
44
- onClick={() => setIsOpen(false)}
45
- >
46
- Close
47
- </button>
48
- </div>
49
- <div className="localication-modal__body">
50
- <div className="localication-modal__editor">
51
- <JsonEditor
52
- rootName="debug"
53
- data={data as any}
54
- setData={setData as any}
55
- className="localication-modal__json-editor"
56
- maxWidth={'100%'}
57
- />
58
- </div>
59
- </div>
60
- </Modal>
61
- ) : null}
62
- </>
63
- );
64
- }
@@ -1,206 +0,0 @@
1
- import React, { useCallback, useState } from 'react';
2
- import { Localication } from '../..';
3
- import { useLogRender } from '../../utils/useLogRender';
4
- import { useRenderStore } from '../../store';
5
- import { LocalicationModal } from '../../modals/LocalicationModal';
6
- import { Checkbox } from '../../components/Checkbox';
7
-
8
- type PreviewTabProps = {};
9
-
10
- export function PreviewTab({}: PreviewTabProps) {
11
- useLogRender('PreviewTab');
12
- const { appConfig, setAppConfig } = useRenderStore((s) => ({
13
- appConfig: s.appConfig,
14
- setAppConfig: s.setAppConfig,
15
- }));
16
- const [isLocalicationModalOpen, setIsLocalicationModalOpen] = useState(false);
17
-
18
- const handleLocalicationChange = useCallback(
19
- (data: Localication) => {
20
- setAppConfig({
21
- ...appConfig,
22
- localication: data,
23
- });
24
- },
25
- [appConfig, setAppConfig],
26
- );
27
-
28
- return (
29
- <div
30
- role="tabpanel"
31
- className="editor-panel editor-panel--active"
32
- aria-hidden={false}
33
- >
34
- <div style={{ padding: 12 }}>
35
- <div
36
- style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }}
37
- >
38
- <div>Default Language</div>
39
- <select
40
- value={appConfig.defaultLanguage ?? 'en'}
41
- onChange={(e) => {
42
- setAppConfig({
43
- ...appConfig,
44
- defaultLanguage: e.target.value,
45
- });
46
- }}
47
- >
48
- {Object.keys(appConfig.localication ?? {}).map((language) => (
49
- <option key={language} value={language}>
50
- {language}
51
- </option>
52
- ))}
53
- </select>
54
- </div>
55
- <div
56
- style={{
57
- display: 'grid',
58
- gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',
59
- gap: 12,
60
- marginTop: 8,
61
- }}
62
- >
63
- <div>Light Background Color</div>
64
- <input
65
- type="color"
66
- value={appConfig.screenStyle?.light.backgroundColor ?? '#FDFDFD'}
67
- onChange={(e) => {
68
- const next = {
69
- ...appConfig.screenStyle,
70
- light: {
71
- ...(appConfig.screenStyle?.light ?? {
72
- color: '#161827',
73
- }),
74
- backgroundColor: e.target.value,
75
- },
76
- };
77
-
78
- setAppConfig({
79
- ...appConfig,
80
- screenStyle: next,
81
- });
82
- }}
83
- className="input input--color"
84
- />
85
- <div>Light Color</div>
86
- <input
87
- type="color"
88
- value={appConfig.screenStyle?.light.color ?? '#161827'}
89
- onChange={(e) => {
90
- const next = {
91
- ...appConfig.screenStyle,
92
- light: {
93
- ...(appConfig.screenStyle?.light ?? {
94
- backgroundColor: '#FDFDFD',
95
- }),
96
- color: e.target.value,
97
- },
98
- };
99
-
100
- setAppConfig({
101
- ...appConfig,
102
- screenStyle: next,
103
- });
104
- }}
105
- className="input input--color"
106
- />
107
- <div>Dark Background Color</div>
108
- <input
109
- type="color"
110
- value={appConfig.screenStyle?.dark.backgroundColor ?? '#12131A'}
111
- onChange={(e) => {
112
- const next = {
113
- ...appConfig.screenStyle,
114
- dark: {
115
- ...(appConfig.screenStyle?.dark ?? {
116
- color: '#E9EBF9',
117
- }),
118
- backgroundColor: e.target.value,
119
- },
120
- };
121
-
122
- setAppConfig({
123
- ...appConfig,
124
- screenStyle: next,
125
- });
126
- }}
127
- className="input input--color"
128
- />
129
- <div>Dark Color</div>
130
- <input
131
- type="color"
132
- value={appConfig.screenStyle?.dark.color ?? '#E9EBF9'}
133
- onChange={(e) => {
134
- const next = {
135
- ...appConfig.screenStyle,
136
- dark: {
137
- ...(appConfig.screenStyle?.dark ?? {
138
- backgroundColor: '#12131A',
139
- }),
140
- color: e.target.value,
141
- },
142
- };
143
- setAppConfig({
144
- ...appConfig,
145
- screenStyle: next,
146
- });
147
- }}
148
- className="input input--color"
149
- />
150
- </div>
151
- <div style={{ marginTop: 8 }}>
152
- <Checkbox
153
- label="Dark Mode"
154
- checked={appConfig.theme === 'dark'}
155
- onChange={(checked) => {
156
- const nextTheme = checked ? 'dark' : 'light';
157
- setAppConfig({
158
- ...appConfig,
159
- theme: nextTheme,
160
- });
161
- }}
162
- />
163
- </div>
164
- <div style={{ marginTop: 8 }}>
165
- <Checkbox
166
- label="Is RTL"
167
- checked={appConfig.isRtl ?? false}
168
- onChange={(checked) => {
169
- setAppConfig({
170
- ...appConfig,
171
- isRtl: checked,
172
- });
173
- }}
174
- />
175
- </div>
176
- <div
177
- style={{
178
- marginTop: 16,
179
- display: 'flex',
180
- flexDirection: 'column',
181
- gap: 8,
182
- }}
183
- >
184
- <div style={{ fontWeight: 600 }}>Localization</div>
185
- <p style={{ margin: 0, fontSize: 13, color: '#4b5563' }}>
186
- Manage translations for each language configured in your preview.
187
- </p>
188
- <button
189
- type="button"
190
- className="editor-button"
191
- onClick={() => setIsLocalicationModalOpen(true)}
192
- >
193
- Open localization editor
194
- </button>
195
- </div>
196
- </div>
197
- {isLocalicationModalOpen ? (
198
- <LocalicationModal
199
- data={appConfig.localication ?? {}}
200
- onChange={handleLocalicationChange}
201
- onClose={() => setIsLocalicationModalOpen(false)}
202
- />
203
- ) : null}
204
- </div>
205
- );
206
- }