@duongthiu/onex-core 0.1.0 → 0.1.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 (190) hide show
  1. package/README.md +44 -65
  2. package/THEME_API.md +36 -33
  3. package/dist/api.js +14 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/api.mjs +5 -0
  6. package/dist/api.mjs.map +1 -0
  7. package/dist/auth.js +23 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/auth.mjs +6 -0
  10. package/dist/auth.mjs.map +1 -0
  11. package/dist/blog.js +22 -0
  12. package/dist/blog.js.map +1 -0
  13. package/dist/blog.mjs +5 -0
  14. package/dist/blog.mjs.map +1 -0
  15. package/dist/cart.js +27 -0
  16. package/dist/cart.js.map +1 -0
  17. package/dist/cart.mjs +6 -0
  18. package/dist/cart.mjs.map +1 -0
  19. package/dist/chunk-2CSWHI3L.js +210 -0
  20. package/dist/chunk-2CSWHI3L.js.map +1 -0
  21. package/dist/chunk-2FGHIDUV.js +99 -0
  22. package/dist/chunk-2FGHIDUV.js.map +1 -0
  23. package/dist/chunk-2NMEKWO5.js +40 -0
  24. package/dist/chunk-2NMEKWO5.js.map +1 -0
  25. package/dist/chunk-43BVHGDT.mjs +131 -0
  26. package/dist/chunk-43BVHGDT.mjs.map +1 -0
  27. package/dist/chunk-4JVQJI3I.mjs +290 -0
  28. package/dist/chunk-4JVQJI3I.mjs.map +1 -0
  29. package/dist/chunk-5N2EKK5O.js +9550 -0
  30. package/dist/chunk-5N2EKK5O.js.map +1 -0
  31. package/dist/chunk-5T6NDVSN.js +76 -0
  32. package/dist/chunk-5T6NDVSN.js.map +1 -0
  33. package/dist/chunk-73AINNCI.mjs +201 -0
  34. package/dist/chunk-73AINNCI.mjs.map +1 -0
  35. package/dist/chunk-AIXBDAVP.mjs +61 -0
  36. package/dist/chunk-AIXBDAVP.mjs.map +1 -0
  37. package/dist/chunk-ALYN5HAC.js +210 -0
  38. package/dist/chunk-ALYN5HAC.js.map +1 -0
  39. package/dist/chunk-AREMJR3Q.js +36 -0
  40. package/dist/chunk-AREMJR3Q.js.map +1 -0
  41. package/dist/chunk-DXAI6XOI.mjs +33 -0
  42. package/dist/chunk-DXAI6XOI.mjs.map +1 -0
  43. package/dist/chunk-F5TFNWFJ.mjs +257 -0
  44. package/dist/chunk-F5TFNWFJ.mjs.map +1 -0
  45. package/dist/chunk-FQ7FWUZN.js +265 -0
  46. package/dist/chunk-FQ7FWUZN.js.map +1 -0
  47. package/dist/{chunk-3SZX6LHT.js → chunk-J27VGXJH.js} +2 -24
  48. package/dist/chunk-J27VGXJH.js.map +1 -0
  49. package/dist/chunk-JZ46LLTZ.js +121 -0
  50. package/dist/chunk-JZ46LLTZ.js.map +1 -0
  51. package/dist/chunk-K24UHN6G.mjs +76 -0
  52. package/dist/chunk-K24UHN6G.mjs.map +1 -0
  53. package/dist/chunk-KCQGGU5R.mjs +344 -0
  54. package/dist/chunk-KCQGGU5R.mjs.map +1 -0
  55. package/dist/chunk-MT22NYKT.mjs +117 -0
  56. package/dist/chunk-MT22NYKT.mjs.map +1 -0
  57. package/dist/chunk-NDD472IZ.js +85 -0
  58. package/dist/chunk-NDD472IZ.js.map +1 -0
  59. package/dist/chunk-NHOIGGYU.mjs +833 -0
  60. package/dist/chunk-NHOIGGYU.mjs.map +1 -0
  61. package/dist/chunk-O3XR7TW3.mjs +12 -0
  62. package/dist/chunk-O3XR7TW3.mjs.map +1 -0
  63. package/dist/chunk-OAPYSC2X.mjs +206 -0
  64. package/dist/chunk-OAPYSC2X.mjs.map +1 -0
  65. package/dist/{chunk-XE4EOKS4.mjs → chunk-ONJREDYY.mjs} +3 -23
  66. package/dist/chunk-ONJREDYY.mjs.map +1 -0
  67. package/dist/chunk-OVT2LUAM.js +197 -0
  68. package/dist/chunk-OVT2LUAM.js.map +1 -0
  69. package/dist/chunk-OWNGNGKL.js +331 -0
  70. package/dist/chunk-OWNGNGKL.js.map +1 -0
  71. package/dist/chunk-P7SXNZSV.js +298 -0
  72. package/dist/chunk-P7SXNZSV.js.map +1 -0
  73. package/dist/chunk-PFJOL3HI.mjs +71 -0
  74. package/dist/chunk-PFJOL3HI.mjs.map +1 -0
  75. package/dist/chunk-PPULMWJ6.js +295 -0
  76. package/dist/chunk-PPULMWJ6.js.map +1 -0
  77. package/dist/chunk-RGIVKACG.js +359 -0
  78. package/dist/chunk-RGIVKACG.js.map +1 -0
  79. package/dist/chunk-RPP5K2LP.js +870 -0
  80. package/dist/chunk-RPP5K2LP.js.map +1 -0
  81. package/dist/{chunk-7EON6Q4L.mjs → chunk-RUCHWUD7.mjs} +7651 -6370
  82. package/dist/chunk-RUCHWUD7.mjs.map +1 -0
  83. package/dist/chunk-SEVUIX4H.js +137 -0
  84. package/dist/chunk-SEVUIX4H.js.map +1 -0
  85. package/dist/chunk-SK2FSHFM.mjs +208 -0
  86. package/dist/chunk-SK2FSHFM.mjs.map +1 -0
  87. package/dist/chunk-T6EJ2GAV.mjs +294 -0
  88. package/dist/chunk-T6EJ2GAV.mjs.map +1 -0
  89. package/dist/chunk-ULBDOFZI.mjs +302 -0
  90. package/dist/chunk-ULBDOFZI.mjs.map +1 -0
  91. package/dist/chunk-V3JIELNV.js +241 -0
  92. package/dist/chunk-V3JIELNV.js.map +1 -0
  93. package/dist/chunk-V5E2KWMA.mjs +238 -0
  94. package/dist/chunk-V5E2KWMA.mjs.map +1 -0
  95. package/dist/chunk-VJA3ER6A.js +14 -0
  96. package/dist/chunk-VJA3ER6A.js.map +1 -0
  97. package/dist/chunk-VLI7ULX5.js +66 -0
  98. package/dist/chunk-VLI7ULX5.js.map +1 -0
  99. package/dist/chunk-WFGS5OFH.mjs +189 -0
  100. package/dist/chunk-WFGS5OFH.mjs.map +1 -0
  101. package/dist/chunk-WVC5GP24.mjs +96 -0
  102. package/dist/chunk-WVC5GP24.mjs.map +1 -0
  103. package/dist/chunk-YOSPWY5K.mjs +36 -0
  104. package/dist/chunk-YOSPWY5K.mjs.map +1 -0
  105. package/dist/chunk-ZFFXXLX7.js +205 -0
  106. package/dist/chunk-ZFFXXLX7.js.map +1 -0
  107. package/dist/client.js +512 -249
  108. package/dist/client.mjs +21 -2
  109. package/dist/components.js +393 -0
  110. package/dist/components.js.map +1 -0
  111. package/dist/components.mjs +8 -0
  112. package/dist/components.mjs.map +1 -0
  113. package/dist/config.js +17 -0
  114. package/dist/config.js.map +1 -0
  115. package/dist/config.mjs +4 -0
  116. package/dist/config.mjs.map +1 -0
  117. package/dist/contact.js +22 -0
  118. package/dist/contact.js.map +1 -0
  119. package/dist/contact.mjs +5 -0
  120. package/dist/contact.mjs.map +1 -0
  121. package/dist/contexts.js +51 -0
  122. package/dist/contexts.js.map +1 -0
  123. package/dist/contexts.mjs +6 -0
  124. package/dist/contexts.mjs.map +1 -0
  125. package/dist/finance.js +26 -0
  126. package/dist/finance.js.map +1 -0
  127. package/dist/finance.mjs +5 -0
  128. package/dist/finance.mjs.map +1 -0
  129. package/dist/icons.js +15 -0
  130. package/dist/icons.js.map +1 -0
  131. package/dist/icons.mjs +4 -0
  132. package/dist/icons.mjs.map +1 -0
  133. package/dist/index.js +512 -249
  134. package/dist/index.js.map +1 -1
  135. package/dist/index.mjs +21 -2
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/internal.js +1437 -0
  138. package/dist/internal.js.map +1 -0
  139. package/dist/internal.mjs +1404 -0
  140. package/dist/internal.mjs.map +1 -0
  141. package/dist/motion.js +51 -0
  142. package/dist/motion.js.map +1 -0
  143. package/dist/motion.mjs +38 -0
  144. package/dist/motion.mjs.map +1 -0
  145. package/dist/orders.js +22 -0
  146. package/dist/orders.js.map +1 -0
  147. package/dist/orders.mjs +5 -0
  148. package/dist/orders.mjs.map +1 -0
  149. package/dist/products.js +27 -0
  150. package/dist/products.js.map +1 -0
  151. package/dist/products.mjs +6 -0
  152. package/dist/products.mjs.map +1 -0
  153. package/dist/registry.js +44 -0
  154. package/dist/registry.js.map +1 -0
  155. package/dist/registry.mjs +7 -0
  156. package/dist/registry.mjs.map +1 -0
  157. package/dist/renderers.js +51 -0
  158. package/dist/renderers.js.map +1 -0
  159. package/dist/renderers.mjs +6 -0
  160. package/dist/renderers.mjs.map +1 -0
  161. package/dist/server.js +11 -189
  162. package/dist/server.js.map +1 -1
  163. package/dist/server.mjs +3 -186
  164. package/dist/server.mjs.map +1 -1
  165. package/dist/types.js +37 -0
  166. package/dist/types.js.map +1 -0
  167. package/dist/types.mjs +4 -0
  168. package/dist/types.mjs.map +1 -0
  169. package/dist/utils.js +160 -0
  170. package/dist/utils.js.map +1 -0
  171. package/dist/utils.mjs +7 -0
  172. package/dist/utils.mjs.map +1 -0
  173. package/dist/wrappers.js +104 -0
  174. package/dist/wrappers.js.map +1 -0
  175. package/dist/wrappers.mjs +96 -0
  176. package/dist/wrappers.mjs.map +1 -0
  177. package/package.json +112 -9
  178. package/dist/api-vuL1Eg5L.d.mts +0 -2961
  179. package/dist/api-vuL1Eg5L.d.ts +0 -2961
  180. package/dist/chunk-3SZX6LHT.js.map +0 -1
  181. package/dist/chunk-7EON6Q4L.mjs.map +0 -1
  182. package/dist/chunk-WDY773GJ.js +0 -8308
  183. package/dist/chunk-WDY773GJ.js.map +0 -1
  184. package/dist/chunk-XE4EOKS4.mjs.map +0 -1
  185. package/dist/client.d.mts +0 -1461
  186. package/dist/client.d.ts +0 -1461
  187. package/dist/index.d.mts +0 -125
  188. package/dist/index.d.ts +0 -125
  189. package/dist/server.d.mts +0 -70
  190. package/dist/server.d.ts +0 -70
@@ -0,0 +1,265 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ // src/types/animation.ts
5
+ var animationFieldDefinitions = [
6
+ {
7
+ id: "animationType",
8
+ type: "select",
9
+ label: "Animation Type",
10
+ default: "fadeInUp",
11
+ options: [
12
+ { label: "None", value: "none" },
13
+ { label: "Fade In", value: "fadeIn" },
14
+ { label: "Fade In Up", value: "fadeInUp" },
15
+ { label: "Fade In Down", value: "fadeInDown" },
16
+ { label: "Fade In Left", value: "fadeInLeft" },
17
+ { label: "Fade In Right", value: "fadeInRight" },
18
+ { label: "Slide In Up", value: "slideInUp" },
19
+ { label: "Slide In Down", value: "slideInDown" },
20
+ { label: "Slide In Left", value: "slideInLeft" },
21
+ { label: "Slide In Right", value: "slideInRight" },
22
+ { label: "Scale In", value: "scaleIn" },
23
+ { label: "Scale In Up", value: "scaleInUp" },
24
+ { label: "Rotate", value: "rotate" },
25
+ { label: "Rotate In", value: "rotateIn" },
26
+ { label: "Bounce", value: "bounce" },
27
+ { label: "Pulse", value: "pulse" },
28
+ { label: "Shake", value: "shake" },
29
+ { label: "Flip", value: "flip" }
30
+ ]
31
+ },
32
+ {
33
+ id: "animationDuration",
34
+ type: "number",
35
+ label: "Duration (seconds)",
36
+ default: 0.6,
37
+ min: 0,
38
+ max: 5,
39
+ step: 0.1,
40
+ unit: "s"
41
+ },
42
+ {
43
+ id: "animationDelay",
44
+ type: "number",
45
+ label: "Delay (seconds)",
46
+ default: 0,
47
+ min: 0,
48
+ max: 3,
49
+ step: 0.1,
50
+ unit: "s"
51
+ },
52
+ {
53
+ id: "animationEasing",
54
+ type: "select",
55
+ label: "Easing",
56
+ default: "easeOut",
57
+ options: [
58
+ { label: "Linear", value: "linear" },
59
+ { label: "Ease In", value: "easeIn" },
60
+ { label: "Ease Out", value: "easeOut" },
61
+ { label: "Ease In Out", value: "easeInOut" },
62
+ { label: "Ease In Back", value: "easeInBack" },
63
+ { label: "Ease Out Back", value: "easeOutBack" },
64
+ { label: "Ease In Out Back", value: "easeInOutBack" },
65
+ { label: "Ease In Elastic", value: "easeInElastic" },
66
+ { label: "Ease Out Elastic", value: "easeOutElastic" },
67
+ { label: "Ease In Out Elastic", value: "easeInOutElastic" }
68
+ ]
69
+ },
70
+ {
71
+ id: "animationTrigger",
72
+ type: "select",
73
+ label: "Trigger",
74
+ default: "onScroll",
75
+ options: [
76
+ { label: "On Page Load", value: "onLoad" },
77
+ { label: "On Scroll (Enter Viewport)", value: "onScroll" },
78
+ { label: "On Hover", value: "onHover" },
79
+ { label: "On Click", value: "onClick" }
80
+ ]
81
+ },
82
+ {
83
+ id: "animationInfinite",
84
+ type: "checkbox",
85
+ label: "Repeat Infinitely",
86
+ default: false
87
+ },
88
+ {
89
+ id: "animationIterations",
90
+ type: "number",
91
+ label: "Iterations",
92
+ info: "Number of times to repeat (if not infinite)",
93
+ default: 1,
94
+ min: 1,
95
+ max: 10
96
+ },
97
+ {
98
+ id: "animationStagger",
99
+ type: "checkbox",
100
+ label: "Stagger Children",
101
+ info: "Animate child elements with delay",
102
+ default: false
103
+ },
104
+ {
105
+ id: "animationStaggerDelay",
106
+ type: "number",
107
+ label: "Stagger Delay (seconds)",
108
+ default: 0.1,
109
+ min: 0,
110
+ max: 1,
111
+ step: 0.05,
112
+ unit: "s"
113
+ }
114
+ ];
115
+ var defaultAnimationSettings = {
116
+ type: "fadeInUp",
117
+ duration: 0.6,
118
+ delay: 0,
119
+ easing: "easeOut",
120
+ trigger: "onScroll",
121
+ infinite: false,
122
+ iterations: 1,
123
+ stagger: false,
124
+ staggerDelay: 0.1
125
+ };
126
+
127
+ // src/types/fields.ts
128
+ var FIELD_TYPES = {
129
+ // Basic Inputs
130
+ TEXT: "text",
131
+ TEXTAREA: "textarea",
132
+ NUMBER: "number",
133
+ CHECKBOX: "checkbox",
134
+ BOOLEAN: "boolean",
135
+ SELECT: "select",
136
+ RADIO: "radio",
137
+ // Advanced Inputs
138
+ RANGE: "range",
139
+ URL: "url",
140
+ RICHTEXT: "richtext",
141
+ // Color & Style
142
+ COLOR: "color",
143
+ COLOR_BACKGROUND: "color_background",
144
+ // Media
145
+ IMAGE: "image",
146
+ IMAGE_PICKER: "image_picker",
147
+ VIDEO: "video",
148
+ VIDEO_URL: "video_url",
149
+ FONT: "font",
150
+ FONT_PICKER: "font_picker",
151
+ // Text Variants
152
+ INLINE_RICHTEXT: "inline_richtext",
153
+ TEXT_ALIGNMENT: "text_alignment",
154
+ // Code Editors
155
+ HTML: "html",
156
+ // Complex Types
157
+ ARRAY: "array",
158
+ REPEATER: "repeater",
159
+ // Content Types
160
+ COLLECTION: "collection",
161
+ PRODUCT: "product",
162
+ BLOG: "blog",
163
+ ARTICLE: "article",
164
+ PAGE: "page"
165
+ };
166
+
167
+ // src/types/section.ts
168
+ var SECTION_CATEGORIES = {
169
+ HEADER: "header",
170
+ HERO: "hero",
171
+ CONTENT: "content",
172
+ FEATURES: "features",
173
+ TESTIMONIALS: "testimonials",
174
+ CTA: "cta",
175
+ GALLERY: "gallery",
176
+ PRICING: "pricing",
177
+ FAQ: "faq",
178
+ TEAM: "team",
179
+ CONTACT: "contact",
180
+ FOOTER: "footer"
181
+ };
182
+
183
+ // src/types/component.ts
184
+ var COMPONENT_CATEGORIES = {
185
+ TEXT: "text",
186
+ MEDIA: "media",
187
+ INTERACTIVE: "interactive",
188
+ FORM: "form",
189
+ LAYOUT: "layout",
190
+ ADVANCED: "advanced"
191
+ };
192
+ var COMPONENT_TYPES = {
193
+ // Form
194
+ INPUT: "input",
195
+ TEXTAREA: "textarea",
196
+ SELECT: "select",
197
+ CHECKBOX: "checkbox",
198
+ // Text
199
+ HEADING: "heading",
200
+ PARAGRAPH: "paragraph",
201
+ QUOTE: "quote",
202
+ BADGE: "badge",
203
+ COMPANY_INFO: "company-info",
204
+ // Media
205
+ IMAGE: "image",
206
+ VIDEO: "video",
207
+ ICON: "icon",
208
+ GALLERY: "gallery",
209
+ // Interactive
210
+ BUTTON: "button",
211
+ LINK: "link",
212
+ RATING: "rating",
213
+ SOCIAL_LINKS: "social-links",
214
+ HOTLINE_CONTACTS: "hotline-contacts",
215
+ // Layout
216
+ GRID: "grid",
217
+ COLUMNS: "columns",
218
+ CARD: "card",
219
+ CONTAINER: "container",
220
+ DIVIDER: "divider",
221
+ SPACER: "spacer",
222
+ MAP: "map",
223
+ // Advanced
224
+ PROGRESS: "progress",
225
+ ALERT: "alert",
226
+ CODE: "code",
227
+ TIMER: "timer",
228
+ ACCORDION: "accordion",
229
+ TABS: "tabs",
230
+ TABLE: "table",
231
+ LIST: "list",
232
+ // Blocks
233
+ FEATURE_CARD: "feature-card",
234
+ PRODUCT_CARD: "product-card",
235
+ BLOG_CARD: "blog-card"
236
+ };
237
+
238
+ // src/types/editor.ts
239
+ var DEFAULT_INSPECTOR_CONFIG = {
240
+ strategy: {
241
+ priority: ["component", "block", "section"],
242
+ stopAtFirstMatch: true,
243
+ maxDepth: 50
244
+ },
245
+ showElementOutlines: true,
246
+ showTooltips: true,
247
+ outlineColors: {
248
+ component: "#14b8a6",
249
+ // Teal - component instances
250
+ block: "#f59e0b",
251
+ // Orange - block instances
252
+ section: "#3b82f6"
253
+ // Blue - section instances
254
+ }
255
+ };
256
+
257
+ exports.COMPONENT_CATEGORIES = COMPONENT_CATEGORIES;
258
+ exports.COMPONENT_TYPES = COMPONENT_TYPES;
259
+ exports.DEFAULT_INSPECTOR_CONFIG = DEFAULT_INSPECTOR_CONFIG;
260
+ exports.FIELD_TYPES = FIELD_TYPES;
261
+ exports.SECTION_CATEGORIES = SECTION_CATEGORIES;
262
+ exports.animationFieldDefinitions = animationFieldDefinitions;
263
+ exports.defaultAnimationSettings = defaultAnimationSettings;
264
+ //# sourceMappingURL=chunk-FQ7FWUZN.js.map
265
+ //# sourceMappingURL=chunk-FQ7FWUZN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/animation.ts","../src/types/fields.ts","../src/types/section.ts","../src/types/component.ts","../src/types/editor.ts"],"names":[],"mappings":"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","file":"chunk-FQ7FWUZN.js","sourcesContent":["/**\n * Animation Type Definitions\n * Defines animation settings for components\n */\n\nimport type { FieldDefinition } from \"./fields\";\n\n/**\n * Animation Types\n */\nexport type AnimationType =\n | \"fadeIn\"\n | \"fadeInUp\"\n | \"fadeInDown\"\n | \"fadeInLeft\"\n | \"fadeInRight\"\n | \"slideInUp\"\n | \"slideInDown\"\n | \"slideInLeft\"\n | \"slideInRight\"\n | \"scaleIn\"\n | \"scaleInUp\"\n | \"rotate\"\n | \"rotateIn\"\n | \"bounce\"\n | \"pulse\"\n | \"shake\"\n | \"flip\"\n | \"none\";\n\n/**\n * Animation Easing Functions\n */\nexport type AnimationEasing =\n | \"linear\"\n | \"easeIn\"\n | \"easeOut\"\n | \"easeInOut\"\n | \"easeInBack\"\n | \"easeOutBack\"\n | \"easeInOutBack\"\n | \"easeInElastic\"\n | \"easeOutElastic\"\n | \"easeInOutElastic\";\n\n/**\n * Animation Trigger\n */\nexport type AnimationTrigger =\n | \"onLoad\" // Animate when page loads\n | \"onScroll\" // Animate when element enters viewport\n | \"onHover\" // Animate on hover\n | \"onClick\"; // Animate on click\n\n/**\n * Animation Settings\n */\nexport interface AnimationSettings {\n /** Animation type */\n type: AnimationType;\n\n /** Duration in seconds */\n duration: number;\n\n /** Delay in seconds */\n delay: number;\n\n /** Easing function */\n easing: AnimationEasing;\n\n /** When to trigger the animation */\n trigger?: AnimationTrigger;\n\n /** Repeat infinitely */\n infinite?: boolean;\n\n /** Number of iterations (if not infinite) */\n iterations?: number;\n\n /** Stagger animation for child elements */\n stagger?: boolean;\n\n /** Stagger delay between children (seconds) */\n staggerDelay?: number;\n}\n\n/**\n * Animation Field Definitions\n * Use these in component schemas to add animation settings\n */\nexport const animationFieldDefinitions: FieldDefinition[] = [\n {\n id: \"animationType\",\n type: \"select\",\n label: \"Animation Type\",\n default: \"fadeInUp\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Fade In\", value: \"fadeIn\" },\n { label: \"Fade In Up\", value: \"fadeInUp\" },\n { label: \"Fade In Down\", value: \"fadeInDown\" },\n { label: \"Fade In Left\", value: \"fadeInLeft\" },\n { label: \"Fade In Right\", value: \"fadeInRight\" },\n { label: \"Slide In Up\", value: \"slideInUp\" },\n { label: \"Slide In Down\", value: \"slideInDown\" },\n { label: \"Slide In Left\", value: \"slideInLeft\" },\n { label: \"Slide In Right\", value: \"slideInRight\" },\n { label: \"Scale In\", value: \"scaleIn\" },\n { label: \"Scale In Up\", value: \"scaleInUp\" },\n { label: \"Rotate\", value: \"rotate\" },\n { label: \"Rotate In\", value: \"rotateIn\" },\n { label: \"Bounce\", value: \"bounce\" },\n { label: \"Pulse\", value: \"pulse\" },\n { label: \"Shake\", value: \"shake\" },\n { label: \"Flip\", value: \"flip\" },\n ],\n },\n {\n id: \"animationDuration\",\n type: \"number\",\n label: \"Duration (seconds)\",\n default: 0.6,\n min: 0,\n max: 5,\n step: 0.1,\n unit: \"s\",\n },\n {\n id: \"animationDelay\",\n type: \"number\",\n label: \"Delay (seconds)\",\n default: 0,\n min: 0,\n max: 3,\n step: 0.1,\n unit: \"s\",\n },\n {\n id: \"animationEasing\",\n type: \"select\",\n label: \"Easing\",\n default: \"easeOut\",\n options: [\n { label: \"Linear\", value: \"linear\" },\n { label: \"Ease In\", value: \"easeIn\" },\n { label: \"Ease Out\", value: \"easeOut\" },\n { label: \"Ease In Out\", value: \"easeInOut\" },\n { label: \"Ease In Back\", value: \"easeInBack\" },\n { label: \"Ease Out Back\", value: \"easeOutBack\" },\n { label: \"Ease In Out Back\", value: \"easeInOutBack\" },\n { label: \"Ease In Elastic\", value: \"easeInElastic\" },\n { label: \"Ease Out Elastic\", value: \"easeOutElastic\" },\n { label: \"Ease In Out Elastic\", value: \"easeInOutElastic\" },\n ],\n },\n {\n id: \"animationTrigger\",\n type: \"select\",\n label: \"Trigger\",\n default: \"onScroll\",\n options: [\n { label: \"On Page Load\", value: \"onLoad\" },\n { label: \"On Scroll (Enter Viewport)\", value: \"onScroll\" },\n { label: \"On Hover\", value: \"onHover\" },\n { label: \"On Click\", value: \"onClick\" },\n ],\n },\n {\n id: \"animationInfinite\",\n type: \"checkbox\",\n label: \"Repeat Infinitely\",\n default: false,\n },\n {\n id: \"animationIterations\",\n type: \"number\",\n label: \"Iterations\",\n info: \"Number of times to repeat (if not infinite)\",\n default: 1,\n min: 1,\n max: 10,\n },\n {\n id: \"animationStagger\",\n type: \"checkbox\",\n label: \"Stagger Children\",\n info: \"Animate child elements with delay\",\n default: false,\n },\n {\n id: \"animationStaggerDelay\",\n type: \"number\",\n label: \"Stagger Delay (seconds)\",\n default: 0.1,\n min: 0,\n max: 1,\n step: 0.05,\n unit: \"s\",\n },\n];\n\n/**\n * Default animation settings\n */\nexport const defaultAnimationSettings: AnimationSettings = {\n type: \"fadeInUp\",\n duration: 0.6,\n delay: 0,\n easing: \"easeOut\",\n trigger: \"onScroll\",\n infinite: false,\n iterations: 1,\n stagger: false,\n staggerDelay: 0.1,\n};\n","/**\n * Field Definition Types\n * Used for defining customizable settings in sections, blocks, and themes\n */\n\nimport type { WebsiteSettings } from \"./website-settings\";\n\n/**\n * Field types - all available field types for component settings\n */\nexport const FIELD_TYPES = {\n // Basic Inputs\n TEXT: \"text\",\n TEXTAREA: \"textarea\",\n NUMBER: \"number\",\n CHECKBOX: \"checkbox\",\n BOOLEAN: \"boolean\",\n SELECT: \"select\",\n RADIO: \"radio\",\n\n // Advanced Inputs\n RANGE: \"range\",\n URL: \"url\",\n RICHTEXT: \"richtext\",\n\n // Color & Style\n COLOR: \"color\",\n COLOR_BACKGROUND: \"color_background\",\n\n // Media\n IMAGE: \"image\",\n IMAGE_PICKER: \"image_picker\",\n VIDEO: \"video\",\n VIDEO_URL: \"video_url\",\n FONT: \"font\",\n FONT_PICKER: \"font_picker\",\n\n // Text Variants\n INLINE_RICHTEXT: \"inline_richtext\",\n TEXT_ALIGNMENT: \"text_alignment\",\n\n // Code Editors\n HTML: \"html\",\n\n // Complex Types\n ARRAY: \"array\",\n REPEATER: \"repeater\",\n\n // Content Types\n COLLECTION: \"collection\",\n PRODUCT: \"product\",\n BLOG: \"blog\",\n ARTICLE: \"article\",\n PAGE: \"page\",\n} as const;\n\nexport type FieldType = (typeof FIELD_TYPES)[keyof typeof FIELD_TYPES];\n\nexport interface BaseFieldDefinition {\n /** Unique identifier for the field */\n id: string;\n\n /** Field type */\n type: FieldType;\n\n /** Display label */\n label: string;\n\n /** Help text or description */\n info?: string;\n\n /** Whether the field is required */\n required?: boolean;\n\n /** Placeholder text */\n placeholder?: string;\n}\n\nexport interface TextFieldDefinition extends BaseFieldDefinition {\n type: \"text\";\n default?: string;\n maxLength?: number;\n}\n\nexport interface TextareaFieldDefinition extends BaseFieldDefinition {\n type: \"textarea\";\n default?: string;\n maxLength?: number;\n rows?: number;\n}\n\nexport interface NumberFieldDefinition extends BaseFieldDefinition {\n type: \"number\";\n default?: number;\n min?: number;\n max?: number;\n step?: number;\n unit?: string;\n}\n\nexport interface RangeFieldDefinition extends BaseFieldDefinition {\n type: \"range\";\n default?: number;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n}\n\nexport interface ColorFieldDefinition extends BaseFieldDefinition {\n type: \"color\";\n default?: string;\n}\n\nexport interface ImageFieldDefinition extends BaseFieldDefinition {\n type: \"image\";\n default?: string;\n accept?: string[];\n}\n\nexport interface SelectFieldDefinition extends BaseFieldDefinition {\n type: \"select\";\n default?: string;\n options: Array<{\n label: string;\n value: string;\n }>;\n}\n\nexport interface CheckboxFieldDefinition extends BaseFieldDefinition {\n type: \"checkbox\";\n default?: boolean;\n}\n\nexport interface BooleanFieldDefinition extends BaseFieldDefinition {\n type: \"boolean\";\n default?: boolean;\n}\n\nexport interface RadioFieldDefinition extends BaseFieldDefinition {\n type: \"radio\";\n default?: string;\n options: Array<{\n label: string;\n value: string;\n }>;\n}\n\nexport interface UrlFieldDefinition extends BaseFieldDefinition {\n type: \"url\";\n default?: string;\n}\n\nexport interface RichTextFieldDefinition extends BaseFieldDefinition {\n type: \"richtext\";\n default?: string;\n}\n\nexport interface VideoFieldDefinition extends BaseFieldDefinition {\n type: \"video\";\n default?: string;\n accept?: string[];\n}\n\nexport interface FontFieldDefinition extends BaseFieldDefinition {\n type: \"font\";\n default?: string;\n}\n\nexport interface ArrayFieldDefinition extends BaseFieldDefinition {\n type: \"array\";\n default?: unknown[];\n itemSchema?: Record<string, unknown>;\n}\n\nexport interface CollectionFieldDefinition extends BaseFieldDefinition {\n type: \"collection\";\n default?: string;\n}\n\nexport interface ProductFieldDefinition extends BaseFieldDefinition {\n type: \"product\";\n default?: string;\n}\n\nexport interface BlogFieldDefinition extends BaseFieldDefinition {\n type: \"blog\";\n default?: string;\n}\n\nexport interface ArticleFieldDefinition extends BaseFieldDefinition {\n type: \"article\";\n default?: string;\n}\n\nexport interface PageFieldDefinition extends BaseFieldDefinition {\n type: \"page\";\n default?: string;\n}\n\nexport interface RepeaterFieldDefinition extends BaseFieldDefinition {\n type: \"repeater\";\n default?: unknown[];\n itemFields?: FieldDefinition[];\n}\n\nexport interface TextAlignmentFieldDefinition extends BaseFieldDefinition {\n type: \"text_alignment\";\n default?: \"left\" | \"center\" | \"right\";\n}\n\nexport interface InlineRichTextFieldDefinition extends BaseFieldDefinition {\n type: \"inline_richtext\";\n default?: string;\n maxLength?: number;\n}\n\nexport interface VideoUrlFieldDefinition extends BaseFieldDefinition {\n type: \"video_url\";\n default?: string;\n accept?: (\"youtube\" | \"vimeo\")[];\n}\n\nexport interface HtmlFieldDefinition extends BaseFieldDefinition {\n type: \"html\";\n default?: string;\n}\n\nexport interface ColorBackgroundFieldDefinition extends BaseFieldDefinition {\n type: \"color_background\";\n default?: string;\n supportsGradient?: boolean;\n}\n\nexport interface FontPickerFieldDefinition extends BaseFieldDefinition {\n type: \"font_picker\";\n default?: string;\n}\n\nexport interface ImagePickerFieldDefinition extends BaseFieldDefinition {\n type: \"image_picker\";\n default?: string;\n accept?: string[];\n}\n\n/**\n * Union type of all field definitions\n */\nexport type FieldDefinition =\n | TextFieldDefinition\n | TextareaFieldDefinition\n | NumberFieldDefinition\n | RangeFieldDefinition\n | ColorFieldDefinition\n | ImageFieldDefinition\n | SelectFieldDefinition\n | CheckboxFieldDefinition\n | BooleanFieldDefinition\n | RadioFieldDefinition\n | UrlFieldDefinition\n | RichTextFieldDefinition\n | VideoFieldDefinition\n | FontFieldDefinition\n | ArrayFieldDefinition\n | RepeaterFieldDefinition\n | CollectionFieldDefinition\n | ProductFieldDefinition\n | BlogFieldDefinition\n | ArticleFieldDefinition\n | PageFieldDefinition\n | TextAlignmentFieldDefinition\n | InlineRichTextFieldDefinition\n | VideoUrlFieldDefinition\n | HtmlFieldDefinition\n | ColorBackgroundFieldDefinition\n | FontPickerFieldDefinition\n | ImagePickerFieldDefinition;\n\n/**\n * Setting Value Types\n */\nexport type SettingValue =\n | string\n | number\n | boolean\n | string[]\n | unknown[]\n | undefined;\n\n/**\n * Settings object - maps field IDs to their values\n * Extended with WebsiteSettings for dynamic website configuration\n */\nexport interface Settings extends WebsiteSettings {\n [key: string]: SettingValue | unknown;\n}\n","/**\n * Section Type Definitions\n * Sections are the main building blocks of pages\n */\n\nimport type { FieldDefinition, Settings } from \"./fields\";\nimport type { BlockDefinition, BlockInstance } from \"./block\";\nimport type { BaseEntity } from \"./base\";\n\n/**\n * Template Definition - A variant layout for a section type\n */\nexport interface TemplateDefinition {\n /** Unique template identifier (e.g., \"default\", \"minimal\", \"split\") */\n id: string;\n\n /** Display name */\n name: string;\n\n /** Description of this template variant */\n description?: string;\n\n /** Preview image URL */\n preview?: string;\n\n /** Template-specific settings (overrides section settings) */\n settings?: FieldDefinition[];\n\n /** Default settings for this template */\n defaults?: Settings;\n\n /** Whether this is the default template */\n isDefault?: boolean;\n}\n\n/**\n * Section Schema - Blueprint for a section type\n */\nexport interface SectionSchema {\n /** Unique section type identifier (e.g., \"hero\", \"features\") */\n type: string;\n\n /** Display name */\n name: string;\n\n /** Description */\n description?: string;\n\n /** Category for organization (e.g., \"headers\", \"content\", \"footers\") */\n category: string;\n\n /** Icon identifier for UI */\n icon?: string;\n\n /** Available templates for this section */\n templates: TemplateDefinition[];\n\n /** Base settings (applied to all templates) */\n settings: FieldDefinition[];\n\n /** Default settings values */\n defaults: Settings;\n\n /** Block types that can be added to this section */\n blocks?: BlockDefinition[];\n\n /** Maximum number of blocks allowed */\n maxBlocks?: number;\n\n /** Whether blocks are sortable */\n sortableBlocks?: boolean;\n\n /** Whether this section is a global section (e.g., header, footer) */\n global?: boolean;\n\n /** Tags for searching/filtering */\n tags?: string[];\n\n /** Whether this section can be disabled */\n disableable?: boolean;\n}\n\n/**\n * Component Instance - Individual UI element with own settings\n * Simplified version for sections - uses single settings object\n * For detailed component instances, see ComponentInstance in component.ts\n */\nexport interface SectionComponentInstance extends BaseEntity {\n /** Component type (e.g., \"heading\", \"button\", \"image\") */\n type: string;\n\n /** Component settings values (legacy - prefer content/style split) */\n settings?: Settings;\n\n /** Content settings (text, url, image src, etc.) */\n content?: Settings;\n\n /** Style settings */\n style?: Settings;\n\n /** Style mode - basic uses presets, advanced uses custom values */\n styleMode?: \"basic\" | \"advanced\";\n\n /** Display order in the section */\n order: number;\n\n /** Whether the component is enabled/visible */\n enabled?: boolean;\n}\n\n/**\n * Section Instance - Actual section data in a page\n */\nexport interface SectionInstance extends BaseEntity {\n /** Section type reference */\n type: string;\n\n /** Selected template ID */\n template: string;\n\n /** Custom name for this instance */\n name?: string;\n\n /** Current settings values */\n settings: Settings;\n\n /** Component instances in this section (individual UI elements) */\n components?: SectionComponentInstance[];\n\n /** Block instances in this section */\n blocks?: BlockInstance[];\n\n /** Display order on the page */\n order: number;\n\n /** Whether the section is enabled/visible */\n enabled?: boolean;\n}\n\n/**\n * Section Registration - Runtime registration info\n */\nexport interface SectionRegistration<TProps = SectionComponentProps> {\n /** Section schema */\n schema: SectionSchema;\n\n /** Base component (may be overridden by template) */\n component: React.ComponentType<TProps>;\n\n /** Template-specific components */\n templateComponents: Map<string, React.ComponentType<SectionComponentProps>>;\n\n /** Registration timestamp */\n registeredAt: Date;\n\n /** Category */\n category: string;\n\n /** Tags for searching */\n tags: string[];\n\n /** Lazy load function */\n lazyLoad?: () => Promise<React.ComponentType<TProps>>;\n}\n\n/**\n * Props passed to section components\n */\nexport interface SectionComponentProps {\n /** Section instance data */\n section: SectionInstance;\n\n /** Section schema */\n schema: SectionSchema;\n\n /** Selected template definition */\n template: TemplateDefinition;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Optional data for sections (e.g., API data in view mode) */\n data?: Record<string, unknown>;\n\n /** Callback when settings change */\n onSettingsChange?: (settings: Settings) => void;\n\n /** Callback when component is added */\n onComponentAdd?: (componentType: string) => void;\n\n /** Callback when component is updated */\n onComponentUpdate?: (\n componentId: string,\n updates: Partial<SectionComponentInstance>\n ) => void;\n\n /** Callback when component is removed */\n onComponentRemove?: (componentId: string) => void;\n\n /** Callback when components are reordered */\n onComponentsReorder?: (componentIds: string[]) => void;\n\n /** Callback when block is added */\n onBlockAdd?: (blockType: string) => void;\n\n /** Callback when block is updated */\n onBlockUpdate?: (blockId: string, settings: Settings) => void;\n\n /** Callback when block is removed */\n onBlockRemove?: (blockId: string) => void;\n\n /** Callback when blocks are reordered */\n onBlocksReorder?: (blockIds: string[]) => void;\n\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Section category definitions\n */\nexport const SECTION_CATEGORIES = {\n HEADER: \"header\",\n HERO: \"hero\",\n CONTENT: \"content\",\n FEATURES: \"features\",\n TESTIMONIALS: \"testimonials\",\n CTA: \"cta\",\n GALLERY: \"gallery\",\n PRICING: \"pricing\",\n FAQ: \"faq\",\n TEAM: \"team\",\n CONTACT: \"contact\",\n FOOTER: \"footer\",\n} as const;\n\nexport type SectionCategory =\n (typeof SECTION_CATEGORIES)[keyof typeof SECTION_CATEGORIES];\n","/**\n * Component Type Definitions\n * Types for the component registry system\n */\n\nimport type { FieldDefinition, Settings, SettingValue } from \"./fields\";\nimport type { BaseEntity } from \"./base\";\n\n/**\n * Responsive breakpoints\n */\nexport type Breakpoint = \"mobile\" | \"tablet\" | \"desktop\";\n\n/**\n * Style Settings\n * Supports basic and advanced CSS properties\n */\nexport interface StyleSettings {\n // Layout & Spacing (Basic)\n margin?: string;\n marginTop?: string;\n marginRight?: string;\n marginBottom?: string;\n marginLeft?: string;\n padding?: string;\n paddingTop?: string;\n paddingRight?: string;\n paddingBottom?: string;\n paddingLeft?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n minWidth?: string;\n minHeight?: string;\n\n // Colors (Basic)\n backgroundColor?: string;\n color?: string;\n borderColor?: string;\n\n // Typography (Basic)\n fontSize?: string;\n fontWeight?: string;\n lineHeight?: string;\n textAlign?: \"left\" | \"center\" | \"right\" | \"justify\";\n letterSpacing?: string;\n textTransform?: string;\n\n // Borders (Basic)\n borderWidth?: string;\n borderRadius?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\" | \"none\";\n\n // Advanced CSS (only visible in advanced mode)\n display?: string;\n flexDirection?: string;\n justifyContent?: string;\n alignItems?: string;\n gap?: string;\n gridTemplateColumns?: string;\n gridTemplateRows?: string;\n position?: string;\n top?: string;\n right?: string;\n bottom?: string;\n left?: string;\n zIndex?: string;\n opacity?: string;\n transform?: string;\n transition?: string;\n boxShadow?: string;\n cursor?: string;\n overflow?: string;\n objectFit?: string;\n aspectRatio?: string;\n\n // Custom CSS classes\n customClasses?: string;\n\n // Allow any other CSS properties\n [key: string]: SettingValue;\n}\n\n/**\n * Responsive style settings\n */\nexport interface ResponsiveStyles {\n mobile?: Partial<StyleSettings>;\n tablet?: Partial<StyleSettings>;\n desktop?: Partial<StyleSettings>;\n}\n\n/**\n * Component Definition - Blueprint for a component type\n */\nexport interface ComponentDefinition {\n /** Unique type identifier (e.g., 'heading', 'button') */\n type: ComponentType;\n\n /** Display name */\n name: string;\n\n /** Description */\n description?: string;\n\n /** Icon identifier */\n icon?: string;\n\n /** Category (text, media, interactive, layout) */\n category: ComponentCategory;\n\n /** Content settings (text, url, etc.) */\n contentSettings: FieldDefinition[];\n\n /** Style settings - Basic styles shown by default */\n basicStyleSettings: FieldDefinition[];\n\n /** Advanced style settings - Shown when user toggles advanced mode */\n advancedStyleSettings: FieldDefinition[];\n\n /** Default content values */\n contentDefaults: Settings;\n\n /** Default style values */\n styleDefaults: StyleSettings;\n\n /** Whether this component supports responsive styles */\n supportsResponsive: boolean;\n\n /** Tags for search */\n tags?: string[];\n}\n\n/**\n * Component Instance - Actual component in a section\n */\nexport interface ComponentInstance extends BaseEntity {\n /** Component type reference */\n type: ComponentType;\n\n /** Content settings (text, url, image src, etc.) */\n content: Settings;\n\n /** Style settings */\n style: StyleSettings;\n\n /** Style mode - basic uses presets, advanced uses custom values */\n styleMode?: \"basic\" | \"advanced\";\n\n /** Responsive style overrides */\n responsiveStyle?: ResponsiveStyles;\n\n /** Display order */\n order: number;\n\n /** Whether enabled */\n enabled?: boolean;\n}\n\n/**\n * Component Registration - Runtime info\n */\nexport interface ComponentRegistration {\n /** Component definition */\n definition: ComponentDefinition;\n\n /** React component */\n component: React.ComponentType<ComponentProps>;\n\n /** Registration timestamp */\n registeredAt: Date;\n\n /** Category */\n category: ComponentCategory;\n\n /** Tags */\n tags: string[];\n}\n\n/**\n * Props passed to component React components\n */\nexport interface ComponentProps {\n /** Component instance data */\n component: ComponentInstance;\n\n /** Component definition */\n definition: ComponentDefinition;\n\n /** Section ID (for component detection) */\n sectionId?: string;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Additional data (e.g., website settings) */\n data?: Record<string, unknown>;\n\n /** Callback when content changes */\n onContentChange?: (content: Settings) => void;\n\n /** Callback when style changes */\n onStyleChange?: (style: StyleSettings, breakpoint?: Breakpoint) => void;\n\n /** Callback when component should be removed */\n onRemove?: () => void;\n\n /** Additional classes */\n className?: string;\n\n /** Children for container components */\n children?: React.ReactNode;\n}\n\n/**\n * Component categories\n */\nexport const COMPONENT_CATEGORIES = {\n TEXT: \"text\",\n MEDIA: \"media\",\n INTERACTIVE: \"interactive\",\n FORM: \"form\",\n LAYOUT: \"layout\",\n ADVANCED: \"advanced\",\n} as const;\n\nexport type ComponentCategory =\n (typeof COMPONENT_CATEGORIES)[keyof typeof COMPONENT_CATEGORIES];\n\n/**\n * Component types - all available component types\n */\nexport const COMPONENT_TYPES = {\n // Form\n INPUT: \"input\",\n TEXTAREA: \"textarea\",\n SELECT: \"select\",\n CHECKBOX: \"checkbox\",\n\n // Text\n HEADING: \"heading\",\n PARAGRAPH: \"paragraph\",\n QUOTE: \"quote\",\n BADGE: \"badge\",\n COMPANY_INFO: \"company-info\",\n\n // Media\n IMAGE: \"image\",\n VIDEO: \"video\",\n ICON: \"icon\",\n GALLERY: \"gallery\",\n\n // Interactive\n BUTTON: \"button\",\n LINK: \"link\",\n RATING: \"rating\",\n SOCIAL_LINKS: \"social-links\",\n HOTLINE_CONTACTS: \"hotline-contacts\",\n\n // Layout\n GRID: \"grid\",\n COLUMNS: \"columns\",\n CARD: \"card\",\n CONTAINER: \"container\",\n DIVIDER: \"divider\",\n SPACER: \"spacer\",\n MAP: \"map\",\n\n // Advanced\n PROGRESS: \"progress\",\n ALERT: \"alert\",\n CODE: \"code\",\n TIMER: \"timer\",\n ACCORDION: \"accordion\",\n TABS: \"tabs\",\n TABLE: \"table\",\n LIST: \"list\",\n\n // Blocks\n FEATURE_CARD: \"feature-card\",\n PRODUCT_CARD: \"product-card\",\n BLOG_CARD: \"blog-card\",\n} as const;\n\nexport type ComponentType =\n (typeof COMPONENT_TYPES)[keyof typeof COMPONENT_TYPES];\n\n/**\n * Apply scope - when changing component settings\n */\nexport type ApplyScope = \"instance\" | \"all\";\n\n/**\n * Apply scope dialog result\n */\nexport interface ApplyScopeResult {\n scope: ApplyScope;\n componentType: ComponentType;\n}\n","/**\n * Editor Type Definitions\n * Types for the visual editor and customization interface\n */\n\nimport type { SectionInstance } from \"./section\";\nimport type { BlockInstance } from \"./block\";\nimport type { Settings, FieldDefinition, SettingValue } from \"./fields\";\nimport type { ThemeLayoutConfig } from \"./page\";\n\n/**\n * JSON-serializable value type\n */\nexport type JSONValue =\n | string\n | number\n | boolean\n | null\n | JSONObject\n | JSONArray;\nexport interface JSONObject {\n [key: string]: JSONValue;\n}\nexport type JSONArray = JSONValue[];\n\n/**\n * Element Type Enumeration\n * Visual DOM element types that can be edited inline\n * (Different from FieldType which defines settings panel inputs)\n */\nexport type ElementType =\n | \"text\" // h1, h2, h3, h4, h5, h6, p, span\n | \"button\" // button, a with button styling\n | \"image\" // img tags\n | \"link\" // a tags\n | \"video\" // video, iframe (YouTube, Vimeo)\n | \"icon\" // svg icons, icon components\n | \"form\" // input, textarea, select\n | \"richtext\" // contentEditable divs\n | \"chart\" // extensible for future types\n | \"map\"\n | \"countdown\";\n\n/**\n * Element Metadata\n * Information about a selected editable element\n */\nexport interface ElementMetadata {\n /** Component instance ID (if element is a component instance) */\n componentId?: string;\n\n /** Field ID from section/component schema */\n fieldId: string;\n\n /** Human-readable field label */\n fieldLabel: string;\n\n /** Type of visual element */\n elementType: ElementType;\n\n /** Parent section ID */\n sectionId: string;\n\n /** Parent block ID (if element is inside a block) */\n blockId?: string;\n\n /** Whether to show inline popover editor */\n isInline: boolean;\n\n /** Element's bounding rectangle */\n bounds: DOMRect;\n\n /** Current field value */\n currentValue: SettingValue;\n}\n\n/**\n * Detection Priority\n * Defines the order in which elements are detected\n */\nexport type DetectionPriority = \"component\" | \"block\" | \"section\";\n\n/**\n * Detection Strategy\n * Controls how the inspector overlay detects selectable items\n */\nexport interface DetectionStrategy {\n /** Priority order for detection (element → component → block → section) */\n priority: DetectionPriority[];\n\n /** Whether to stop at first match or continue traversing */\n stopAtFirstMatch: boolean;\n\n /** Maximum depth to traverse up the DOM tree */\n maxDepth?: number;\n}\n\n/**\n * Detection Result\n * Result of DOM traversal detection\n */\nexport type DetectionResult =\n | {\n type: \"component\";\n sectionId: string;\n componentId: string;\n componentType: string;\n element: HTMLElement;\n }\n | {\n type: \"block\";\n sectionId: string;\n blockId: string;\n element: HTMLElement;\n }\n | { type: \"section\"; sectionId: string; element: HTMLElement }\n | { type: \"none\" };\n\n/**\n * Inline Editor State\n */\nexport interface InlineEditorState {\n /** Whether inline editor is visible */\n visible: boolean;\n\n /** Position for popover */\n position: { top: number; left: number };\n\n /** Type of element being edited */\n elementType: ElementType;\n\n /** Current value */\n currentValue: SettingValue;\n\n /** Field definition from schema */\n fieldDefinition?: FieldDefinition;\n}\n\n/**\n * Props for inline editor components\n */\nexport interface InlineEditorProps {\n /** Selected element info */\n selectedElement: SelectedElement;\n\n /** Current field value */\n currentValue: SettingValue;\n\n /** Field definition from schema */\n fieldDefinition: FieldDefinition;\n\n /** Update callback */\n onUpdate: (value: SettingValue) => void;\n\n /** Close callback */\n onClose: () => void;\n\n /** Popover position */\n position?: { top: number; left: number };\n}\n\n/**\n * Inspector Configuration\n */\nexport interface InspectorConfig {\n /** Detection strategy (element-first by default) */\n strategy: DetectionStrategy;\n\n /** Whether to show element outlines on hover */\n showElementOutlines: boolean;\n\n /** Whether to show element tooltips */\n showTooltips: boolean;\n\n /** Outline color for different types */\n outlineColors: {\n component: string;\n block: string;\n section: string;\n };\n}\n\n/**\n * Default Inspector Configuration\n * Detection priority: component → block → section\n */\nexport const DEFAULT_INSPECTOR_CONFIG: InspectorConfig = {\n strategy: {\n priority: [\"component\", \"block\", \"section\"],\n stopAtFirstMatch: true,\n maxDepth: 50,\n },\n showElementOutlines: true,\n showTooltips: true,\n outlineColors: {\n component: \"#14b8a6\", // Teal - component instances\n block: \"#f59e0b\", // Orange - block instances\n section: \"#3b82f6\", // Blue - section instances\n },\n};\n\n/**\n * Editor Mode\n */\nexport type EditorMode = \"view\" | \"edit\" | \"preview\";\n\n/**\n * Icon Sidebar View\n * Determines which panel is shown in the left sidebar\n */\nexport type IconSidebarView = \"sections\" | \"page-seo\" | \"theme-settings\";\n\n/**\n * Selected Element Type\n */\nexport type SelectedElementType = \"section\" | \"block\" | \"component\" | \"none\";\n\n/**\n * Selected Element Info\n */\nexport interface SelectedElement {\n /** Type of selected element */\n type: SelectedElementType;\n\n /** Element ID */\n id: string;\n\n /** Section ID (for section, component, block, and element selections) */\n sectionId: string;\n\n /** Component ID (only for component selections) */\n componentId?: string;\n\n /** Component type (only for component selections) */\n componentType?: string;\n\n /** Block ID (only for block selections) */\n blockId?: string;\n\n /** Block type (only for block selections) */\n blockType?: string;\n\n /** DOM element reference */\n element?: HTMLElement;\n\n /** Bounding rect for overlay positioning */\n rect?: DOMRect;\n}\n\n/**\n * Editor State\n */\nexport interface EditorState {\n /** Current editor mode */\n mode: EditorMode;\n\n /** Currently selected element */\n selected: SelectedElement | null;\n\n /** Whether the settings panel is open */\n settingsPanelOpen: boolean;\n\n /** Whether the sections panel is open */\n sectionsPanelOpen: boolean;\n\n /** Current page being edited */\n pageId: string | null;\n\n /** Whether there are unsaved changes */\n hasUnsavedChanges: boolean;\n\n /** Undo/redo stack depth */\n historyIndex: number;\n\n /** Total history entries */\n historyLength: number;\n\n /** Current icon sidebar view (sections or theme settings) */\n iconSidebarView: IconSidebarView;\n\n /** Current theme configuration */\n themeConfig: ThemeLayoutConfig | null;\n\n /** Left panel width (for persistence) */\n leftPanelWidth: number;\n\n /** Current company ID */\n companyId: string;\n\n /** Current theme ID */\n themeId: string;\n\n /** Available section schemas for the current theme */\n themeSchemas: import(\"./section\").SectionSchema[];\n\n /** Page SEO configuration */\n pageSeo: import(\"./page\").PageSEO | null;\n}\n\n/**\n * Editor Actions\n */\nexport interface EditorActions {\n /** Set editor mode */\n setMode: (mode: EditorMode) => void;\n\n /** Select an element */\n selectElement: (element: SelectedElement | null) => void;\n\n /** Toggle settings panel */\n toggleSettingsPanel: (open?: boolean) => void;\n\n /** Toggle sections panel */\n toggleSectionsPanel: (open?: boolean) => void;\n\n /** Update section settings */\n updateSectionSettings: (sectionId: string, settings: Settings) => void;\n\n /** Update component settings */\n updateComponentSettings: (\n sectionId: string,\n componentId: string,\n updates: Partial<{\n content: Settings;\n style: Settings;\n }>\n ) => void;\n\n /** Update block settings */\n updateBlockSettings: (\n sectionId: string,\n blockId: string,\n settings: Settings\n ) => void;\n\n /** Add section to page */\n addSection: (sectionType: string, templateId: string, order?: number) => void;\n\n /** Remove section from page */\n removeSection: (sectionId: string) => void;\n\n /** Reorder sections */\n reorderSections: (sectionIds: string[]) => void;\n\n /** Add component to section */\n addComponent: (sectionId: string, componentType: string) => void;\n\n /** Remove component from section */\n removeComponent: (sectionId: string, componentId: string) => void;\n\n /** Reorder components in section */\n reorderComponents: (sectionId: string, componentIds: string[]) => void;\n\n /** Add block to section */\n addBlock: (sectionId: string, blockType: string) => void;\n\n /** Remove block from section */\n removeBlock: (sectionId: string, blockId: string) => void;\n\n /** Reorder blocks in section */\n reorderBlocks: (sectionId: string, blockIds: string[]) => void;\n\n /** Duplicate section */\n duplicateSection: (sectionId: string) => void;\n\n /** Toggle section visibility */\n toggleSectionVisibility: (sectionId: string) => void;\n\n /** Change section template */\n changeSectionTemplate: (sectionId: string, templateId: string) => void;\n\n /** Replace all sections (used when switching page templates) */\n replaceAllSections: (newSections: SectionInstance[]) => void;\n\n /** Save changes */\n save: () => Promise<void>;\n\n /** Discard changes */\n discard: () => void;\n\n /** Undo last action */\n undo: () => void;\n\n /** Redo last undone action */\n redo: () => void;\n\n /** Check if can undo */\n canUndo: () => boolean;\n\n /** Check if can redo */\n canRedo: () => boolean;\n\n /** Set icon sidebar view */\n setIconSidebarView: (view: IconSidebarView) => void;\n\n /** Load theme configuration */\n loadThemeConfig: (themeId: string) => Promise<void>;\n\n /** Update theme global settings */\n updateThemeGlobalSettings: (settings: Record<string, unknown>) => void;\n\n /** Update theme metadata */\n updateThemeMetadata: (metadata: Partial<ThemeLayoutConfig>) => void;\n\n /** Save theme configuration */\n saveThemeConfig: () => Promise<void>;\n\n /** Add header section to theme */\n addHeaderSection: (sectionType: string, templateId: string) => void;\n\n /** Remove header section from theme */\n removeHeaderSection: (index: number) => void;\n\n /** Update header section in theme */\n updateHeaderSection: (\n index: number,\n updates: Record<string, unknown>\n ) => void;\n\n /** Add footer section to theme */\n addFooterSection: (sectionType: string, templateId: string) => void;\n\n /** Remove footer section from theme */\n removeFooterSection: (index: number) => void;\n\n /** Update footer section in theme */\n updateFooterSection: (\n index: number,\n updates: Record<string, unknown>\n ) => void;\n\n /** Set left panel width */\n setLeftPanelWidth: (width: number) => void;\n\n /** Update page SEO */\n updatePageSeo: (seo: Partial<import(\"./page\").PageSEO>) => void;\n}\n\n/**\n * Editor Context Value\n */\nexport interface EditorContextValue {\n /** Current state */\n state: EditorState;\n\n /** Available actions */\n actions: EditorActions;\n\n /** Current page sections */\n sections: SectionInstance[];\n}\n\n/**\n * Inspector Overlay State\n */\nexport interface InspectorOverlayState {\n /** Hovered element info */\n hovered: SelectedElement | null;\n\n /** Whether to show overlay */\n visible: boolean;\n}\n\n/**\n * Change History Entry\n */\nexport interface HistoryEntry {\n /** Unique entry ID */\n id: string;\n\n /** Action type */\n action: string;\n\n /** Previous state snapshot */\n before: JSONValue;\n\n /** New state snapshot */\n after: JSONValue;\n\n /** Timestamp */\n timestamp: Date;\n\n /** User-friendly description */\n description: string;\n}\n\n/**\n * Drag and Drop Context\n */\nexport interface DragDropContext {\n /** Item being dragged */\n draggedItem: {\n type: \"section\" | \"component\" | \"block\";\n id: string;\n data:\n | SectionInstance\n | import(\"./section\").SectionComponentInstance\n | BlockInstance;\n } | null;\n\n /** Drop target info */\n dropTarget: {\n type: \"section\" | \"component\" | \"block\";\n id: string;\n position: \"before\" | \"after\" | \"inside\";\n } | null;\n\n /** Start dragging */\n startDrag: (item: DragDropContext[\"draggedItem\"]) => void;\n\n /** Update drop target */\n updateDropTarget: (target: DragDropContext[\"dropTarget\"]) => void;\n\n /** End dragging */\n endDrag: () => void;\n}\n\n/**\n * Keyboard Shortcuts\n */\nexport interface KeyboardShortcut {\n /** Shortcut key combination */\n keys: string[];\n\n /** Action to perform */\n action: () => void;\n\n /** Description */\n description: string;\n\n /** Whether enabled */\n enabled?: boolean;\n}\n"]}
@@ -1,26 +1,6 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var __defProp = Object.defineProperty;
5
- var __defProps = Object.defineProperties;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
- var __spreadValues = (a, b) => {
12
- for (var prop in b || (b = {}))
13
- if (__hasOwnProp.call(b, prop))
14
- __defNormalProp(a, prop, b[prop]);
15
- if (__getOwnPropSymbols)
16
- for (var prop of __getOwnPropSymbols(b)) {
17
- if (__propIsEnum.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- }
20
- return a;
21
- };
22
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
-
24
4
  // src/registry/section-registry.ts
25
5
  function createSectionRegistry(config = {}) {
26
6
  const { debug = false, allowOverride = false, maxSections = 100 } = config;
@@ -236,9 +216,7 @@ var sectionRegistry = createSectionRegistry({
236
216
  allowOverride: process.env.NODE_ENV === "development"
237
217
  });
238
218
 
239
- exports.__spreadProps = __spreadProps;
240
- exports.__spreadValues = __spreadValues;
241
219
  exports.createSectionRegistry = createSectionRegistry;
242
220
  exports.sectionRegistry = sectionRegistry;
243
- //# sourceMappingURL=chunk-3SZX6LHT.js.map
244
- //# sourceMappingURL=chunk-3SZX6LHT.js.map
221
+ //# sourceMappingURL=chunk-J27VGXJH.js.map
222
+ //# sourceMappingURL=chunk-J27VGXJH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/registry/section-registry.ts"],"names":["_a","_b"],"mappings":"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","file":"chunk-J27VGXJH.js","sourcesContent":["/**\n * Section Registry Implementation\n * Hierarchical registry with multi-template support\n */\n\nimport type {\n SectionRegistry,\n RegistryConfig,\n RegistryEvent,\n RegistryEventType,\n RegistryEventHandler,\n SectionRegisteredPayload,\n SectionUnregisteredPayload,\n} from \"../types/registry\";\nimport type {\n SectionSchema,\n SectionRegistration,\n TemplateDefinition,\n SectionComponentProps,\n} from \"../types/section\";\nimport React from \"react\";\n\n/**\n * Create a new section registry instance\n */\nexport function createSectionRegistry(\n config: RegistryConfig = {}\n): SectionRegistry {\n const { debug = false, allowOverride = false, maxSections = 100 } = config;\n\n // Main registries\n const sections = new Map<string, SectionRegistration>();\n const templates = new Map<string, Map<string, TemplateDefinition>>();\n const templateComponents = new Map<\n string,\n Map<string, React.ComponentType<SectionComponentProps>>\n >();\n const categories = new Map<string, Set<string>>();\n const tags = new Map<string, Set<string>>();\n\n // Lazy load cache\n const loadedComponents = new Map<\n string,\n React.ComponentType<SectionComponentProps>\n >();\n\n // Event listeners\n const eventListeners = new Map<\n RegistryEventType,\n Set<RegistryEventHandler>\n >();\n\n /**\n * Emit an event\n */\n function emit<TPayload>(type: RegistryEventType, payload: TPayload): void {\n const event: RegistryEvent<TPayload> = {\n type,\n payload,\n timestamp: new Date(),\n };\n\n const listeners = eventListeners.get(type);\n if (listeners) {\n // Cast handler to accept any payload type\n listeners.forEach((handler) =>\n (handler as (event: RegistryEvent<TPayload>) => void)(event)\n );\n }\n\n if (debug) {\n }\n }\n\n /**\n * Register a section type\n */\n function register<T>(\n sectionType: string,\n schema: SectionSchema,\n component: React.ComponentType<T> | (() => Promise<React.ComponentType<T>>),\n options?: {\n templates?: Array<{\n definition: TemplateDefinition;\n component: React.ComponentType<SectionComponentProps>;\n }>;\n category?: string;\n tags?: string[];\n }\n ): void {\n // Validate\n if (!sectionType) {\n throw new Error(\"Section type is required\");\n }\n\n if (sections.has(sectionType) && !allowOverride) {\n throw new Error(`Section \"${sectionType}\" is already registered`);\n }\n\n if (sections.size >= maxSections) {\n throw new Error(`Maximum number of sections (${maxSections}) reached`);\n }\n\n // Prepare templates\n const templateMap = new Map<string, TemplateDefinition>();\n const componentMap = new Map<\n string,\n React.ComponentType<SectionComponentProps>\n >();\n\n // Register schema templates\n schema.templates.forEach((templateDef: TemplateDefinition) => {\n templateMap.set(templateDef.id, templateDef);\n });\n\n // Register custom template components\n if (options?.templates) {\n options.templates.forEach(\n ({ definition, component: templateComponent }) => {\n templateMap.set(definition.id, definition);\n componentMap.set(definition.id, templateComponent);\n }\n );\n }\n\n // Create registration\n const registration: SectionRegistration<T> = {\n schema,\n component: component as React.ComponentType<T>,\n templateComponents: componentMap,\n registeredAt: new Date(),\n category: options?.category || schema.category,\n tags: options?.tags || schema.tags || [],\n lazyLoad:\n typeof component === \"function\" && component.length === 0\n ? (component as () => Promise<React.ComponentType<T>>)\n : undefined,\n };\n\n // Store registration\n sections.set(sectionType, registration as SectionRegistration);\n templates.set(sectionType, templateMap);\n templateComponents.set(sectionType, componentMap);\n\n // Index by category\n const category = registration.category;\n if (!categories.has(category)) {\n categories.set(category, new Set());\n }\n categories.get(category)!.add(sectionType);\n\n // Index by tags\n registration.tags.forEach((tag: string) => {\n if (!tags.has(tag)) {\n tags.set(tag, new Set());\n }\n tags.get(tag)!.add(sectionType);\n });\n\n // Emit event\n emit<SectionRegisteredPayload>(\"section:registered\", {\n type: sectionType,\n schema,\n templates: Array.from(templateMap.values()),\n });\n\n if (debug) {\n }\n }\n\n /**\n * Get just the schema without loading the component (server-safe)\n */\n function getSchema(sectionType: string): SectionSchema | undefined {\n const registration = sections.get(sectionType);\n return registration?.schema;\n }\n\n /**\n * Get a section registration (with lazy loading support)\n */\n async function get<T>(\n sectionType: string\n ): Promise<SectionRegistration<T> | undefined> {\n const registration = sections.get(sectionType) as\n | SectionRegistration<T>\n | undefined;\n\n if (!registration) {\n return undefined;\n }\n\n // Handle lazy loading\n if (registration.lazyLoad && !loadedComponents.has(sectionType)) {\n try {\n const loadedComponent = await registration.lazyLoad();\n loadedComponents.set(\n sectionType,\n loadedComponent as React.ComponentType<SectionComponentProps>\n );\n registration.component = loadedComponent;\n\n if (debug) {\n }\n } catch (error) {\n console.error(\n `[SectionRegistry] Failed to lazy load ${sectionType}:`,\n error\n );\n throw error;\n }\n }\n\n return registration;\n }\n\n /**\n * Get a template definition\n */\n function getTemplate(\n sectionType: string,\n templateId: string\n ): TemplateDefinition | undefined {\n return templates.get(sectionType)?.get(templateId);\n }\n\n /**\n * Get a template component\n */\n function getTemplateComponent(\n sectionType: string,\n templateId: string\n ): React.ComponentType<SectionComponentProps> | undefined {\n return templateComponents.get(sectionType)?.get(templateId);\n }\n\n /**\n * Check if a section is registered\n */\n function has(sectionType: string): boolean {\n return sections.has(sectionType);\n }\n\n /**\n * Unregister a section\n */\n function unregister(sectionType: string): boolean {\n const registration = sections.get(sectionType);\n\n if (!registration) {\n return false;\n }\n\n // Remove from maps\n sections.delete(sectionType);\n templates.delete(sectionType);\n templateComponents.delete(sectionType);\n loadedComponents.delete(sectionType);\n\n // Remove from category index\n const category = registration.category;\n categories.get(category)?.delete(sectionType);\n if (categories.get(category)?.size === 0) {\n categories.delete(category);\n }\n\n // Remove from tags index\n registration.tags.forEach((tag) => {\n tags.get(tag)?.delete(sectionType);\n if (tags.get(tag)?.size === 0) {\n tags.delete(tag);\n }\n });\n\n // Emit event\n emit<SectionUnregisteredPayload>(\"section:unregistered\", {\n type: sectionType,\n });\n\n if (debug) {\n }\n\n return true;\n }\n\n /**\n * Get all registrations\n */\n function getAll(): Map<string, SectionRegistration> {\n return new Map(sections);\n }\n\n /**\n * Get sections by category\n */\n function getByCategory(category: string): SectionRegistration[] {\n const sectionTypes = categories.get(category);\n if (!sectionTypes) {\n return [];\n }\n\n const result: SectionRegistration[] = [];\n sectionTypes.forEach((type) => {\n const registration = sections.get(type);\n if (registration) {\n result.push(registration);\n }\n });\n\n return result;\n }\n\n /**\n * Get sections by tags\n */\n function getByTags(searchTags: string[]): SectionRegistration[] {\n const matchingSections = new Set<string>();\n\n searchTags.forEach((tag: string) => {\n const sectionTypes = tags.get(tag);\n if (sectionTypes) {\n sectionTypes.forEach((type) => matchingSections.add(type));\n }\n });\n\n const result: SectionRegistration[] = [];\n matchingSections.forEach((type) => {\n const registration = sections.get(type);\n if (registration) {\n result.push(registration);\n }\n });\n\n return result;\n }\n\n /**\n * Add event listener\n */\n function on<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n if (!eventListeners.has(eventType)) {\n eventListeners.set(eventType, new Set());\n }\n eventListeners.get(eventType)!.add(handler as RegistryEventHandler);\n }\n\n /**\n * Remove event listener\n */\n function off<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n eventListeners.get(eventType)?.delete(handler as RegistryEventHandler);\n }\n\n /**\n * Clear all registrations\n */\n function clear(): void {\n sections.clear();\n templates.clear();\n templateComponents.clear();\n loadedComponents.clear();\n categories.clear();\n tags.clear();\n\n if (debug) {\n }\n }\n\n return {\n register,\n get,\n getSchema,\n getTemplate,\n getTemplateComponent,\n has,\n unregister,\n getAll,\n getByCategory,\n getByTags,\n on,\n off,\n clear,\n };\n}\n\n/**\n * Global section registry instance\n */\nexport const sectionRegistry = createSectionRegistry({\n debug: process.env.NODE_ENV === \"development\",\n allowOverride: process.env.NODE_ENV === \"development\",\n});\n"]}
@@ -0,0 +1,121 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunk2NMEKWO5_js = require('./chunk-2NMEKWO5.js');
5
+ var zustand = require('zustand');
6
+
7
+ var contactService = null;
8
+ var useContact = zustand.create((set) => ({
9
+ // Initial state
10
+ contactInfo: null,
11
+ formFields: null,
12
+ isLoading: false,
13
+ isSubmitting: false,
14
+ error: null,
15
+ submitSuccess: false,
16
+ /**
17
+ * Submit contact form
18
+ */
19
+ submitContactForm: async (payload) => {
20
+ if (!contactService) {
21
+ throw new Error(
22
+ "Contact service not initialized. Call initializeOnex() first."
23
+ );
24
+ }
25
+ set({ isSubmitting: true, error: null, submitSuccess: false });
26
+ try {
27
+ const response = await contactService.submitContactForm(payload);
28
+ set({ isSubmitting: false, submitSuccess: true });
29
+ return response;
30
+ } catch (error) {
31
+ set({ error: error.message, isSubmitting: false });
32
+ throw error;
33
+ }
34
+ },
35
+ /**
36
+ * Fetch contact information
37
+ */
38
+ fetchContactInfo: async () => {
39
+ if (!contactService) {
40
+ throw new Error(
41
+ "Contact service not initialized. Call initializeOnex() first."
42
+ );
43
+ }
44
+ set({ isLoading: true, error: null });
45
+ try {
46
+ const contactInfo = await contactService.getContactInfo();
47
+ set({ contactInfo, isLoading: false });
48
+ } catch (error) {
49
+ set({ error: error.message, isLoading: false });
50
+ }
51
+ },
52
+ /**
53
+ * Fetch form fields configuration
54
+ */
55
+ fetchFormFields: async () => {
56
+ if (!contactService) {
57
+ throw new Error(
58
+ "Contact service not initialized. Call initializeOnex() first."
59
+ );
60
+ }
61
+ set({ isLoading: true, error: null });
62
+ try {
63
+ const formFields = await contactService.getFormFields();
64
+ set({ formFields, isLoading: false });
65
+ } catch (error) {
66
+ set({ error: error.message, isLoading: false });
67
+ }
68
+ },
69
+ /**
70
+ * Clear error
71
+ */
72
+ clearError: () => {
73
+ set({ error: null });
74
+ },
75
+ /**
76
+ * Clear submit success flag
77
+ */
78
+ clearSubmitSuccess: () => {
79
+ set({ submitSuccess: false });
80
+ }
81
+ }));
82
+ function initializeContactService(service) {
83
+ contactService = service;
84
+ }
85
+
86
+ // src/features/contact/contact-service.ts
87
+ var ContactService = class {
88
+ constructor(api, companyId) {
89
+ this.api = api;
90
+ this.companyId = companyId;
91
+ }
92
+ /**
93
+ * Submit contact form
94
+ */
95
+ async submitContactForm(payload) {
96
+ const endpoint = `/contact/public/${this.companyId}/submit`;
97
+ return await this.api.post(endpoint, chunk2NMEKWO5_js.__spreadProps(chunk2NMEKWO5_js.__spreadValues({}, payload), {
98
+ source: "website_contact_form"
99
+ }));
100
+ }
101
+ /**
102
+ * Get contact information
103
+ */
104
+ async getContactInfo() {
105
+ const endpoint = `/contact/public/${this.companyId}/info`;
106
+ return await this.api.get(endpoint);
107
+ }
108
+ /**
109
+ * Get contact form fields configuration
110
+ */
111
+ async getFormFields() {
112
+ const endpoint = `/contact/public/${this.companyId}/form-fields`;
113
+ return await this.api.get(endpoint);
114
+ }
115
+ };
116
+
117
+ exports.ContactService = ContactService;
118
+ exports.initializeContactService = initializeContactService;
119
+ exports.useContact = useContact;
120
+ //# sourceMappingURL=chunk-JZ46LLTZ.js.map
121
+ //# sourceMappingURL=chunk-JZ46LLTZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/features/contact/use-contact.ts","../src/features/contact/contact-service.ts"],"names":["create","__spreadProps"],"mappings":"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","file":"chunk-JZ46LLTZ.js","sourcesContent":["/**\n * Contact Hook\n * Zustand store for contact operations\n */\n\nimport { create } from \"zustand\";\nimport { ContactService } from \"./contact-service\";\nimport type {\n ContactSubmitPayload,\n ContactSubmitResponse,\n ContactInfo,\n ContactFormField,\n} from \"./types\";\n\ninterface ContactState {\n // State\n contactInfo: ContactInfo | null;\n formFields: ContactFormField[] | null;\n isLoading: boolean;\n isSubmitting: boolean;\n error: string | null;\n submitSuccess: boolean;\n\n // Actions\n submitContactForm: (\n payload: ContactSubmitPayload\n ) => Promise<ContactSubmitResponse>;\n fetchContactInfo: () => Promise<void>;\n fetchFormFields: () => Promise<void>;\n clearError: () => void;\n clearSubmitSuccess: () => void;\n}\n\nlet contactService: ContactService | null = null;\n\nexport const useContact = create<ContactState>((set) => ({\n // Initial state\n contactInfo: null,\n formFields: null,\n isLoading: false,\n isSubmitting: false,\n error: null,\n submitSuccess: false,\n\n /**\n * Submit contact form\n */\n submitContactForm: async (payload) => {\n if (!contactService) {\n throw new Error(\n \"Contact service not initialized. Call initializeOnex() first.\"\n );\n }\n\n set({ isSubmitting: true, error: null, submitSuccess: false });\n try {\n const response = await contactService.submitContactForm(payload);\n set({ isSubmitting: false, submitSuccess: true });\n return response;\n } catch (error) {\n set({ error: (error as Error).message, isSubmitting: false });\n throw error;\n }\n },\n\n /**\n * Fetch contact information\n */\n fetchContactInfo: async () => {\n if (!contactService) {\n throw new Error(\n \"Contact service not initialized. Call initializeOnex() first.\"\n );\n }\n\n set({ isLoading: true, error: null });\n try {\n const contactInfo = await contactService.getContactInfo();\n set({ contactInfo, isLoading: false });\n } catch (error) {\n set({ error: (error as Error).message, isLoading: false });\n }\n },\n\n /**\n * Fetch form fields configuration\n */\n fetchFormFields: async () => {\n if (!contactService) {\n throw new Error(\n \"Contact service not initialized. Call initializeOnex() first.\"\n );\n }\n\n set({ isLoading: true, error: null });\n try {\n const formFields = await contactService.getFormFields();\n set({ formFields, isLoading: false });\n } catch (error) {\n set({ error: (error as Error).message, isLoading: false });\n }\n },\n\n /**\n * Clear error\n */\n clearError: () => {\n set({ error: null });\n },\n\n /**\n * Clear submit success flag\n */\n clearSubmitSuccess: () => {\n set({ submitSuccess: false });\n },\n}));\n\n/**\n * Initialize contact service\n * @internal Called by initializeOnex()\n */\nexport function initializeContactService(service: ContactService): void {\n contactService = service;\n}\n","/**\n * Contact Service\n * Handles contact form submissions and contact info\n */\n\nimport { ApiClient } from \"../../api/client\";\nimport type {\n ContactSubmitPayload,\n ContactSubmitResponse,\n ContactInfo,\n ContactFormField,\n} from \"./types\";\n\nexport class ContactService {\n constructor(\n private api: ApiClient,\n private companyId: string\n ) {}\n\n /**\n * Submit contact form\n */\n async submitContactForm(\n payload: ContactSubmitPayload\n ): Promise<ContactSubmitResponse> {\n const endpoint = `/contact/public/${this.companyId}/submit`;\n return await this.api.post<ContactSubmitResponse>(endpoint, {\n ...payload,\n source: \"website_contact_form\",\n });\n }\n\n /**\n * Get contact information\n */\n async getContactInfo(): Promise<ContactInfo> {\n const endpoint = `/contact/public/${this.companyId}/info`;\n return await this.api.get<ContactInfo>(endpoint);\n }\n\n /**\n * Get contact form fields configuration\n */\n async getFormFields(): Promise<ContactFormField[]> {\n const endpoint = `/contact/public/${this.companyId}/form-fields`;\n return await this.api.get<ContactFormField[]>(endpoint);\n }\n}\n"]}