@deneb-ui/create-template 2.0.37 → 2.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deneb-ui/create-template",
3
- "version": "2.0.37",
3
+ "version": "2.0.39",
4
4
  "description": "Scaffold production-ready DENEB UI storefront templates for Next.js in seconds.",
5
5
  "bin": {
6
6
  "create-deneb-template": "bin/index.js",
@@ -4,7 +4,12 @@
4
4
  "visualEditing": {
5
5
  "contractVersion": 1,
6
6
  "mode": "strict",
7
- "controlOnlyPaths": ["services[*].id"]
7
+ "controlOnlyPaths": [
8
+ "services[*].id",
9
+ "products[*].id",
10
+ "products[*].currency",
11
+ "about.collageImages[*].id"
12
+ ]
8
13
  },
9
14
  "siteDataFile": "src/data/site-data.json",
10
15
  "outputDirectory": "out",
@@ -12,9 +17,22 @@
12
17
  "buildCommand": "npm run build",
13
18
  "basePathEnvVar": "NEXT_PUBLIC_SITE_BASE_PATH",
14
19
  "pages": [
15
- { "id": "home", "label": "Home", "route": "/", "required": true },
16
- { "id": "about_us", "label": "About Us", "route": "/about_us" },
17
- { "id": "services", "label": "Services", "route": "/services" },
20
+ {
21
+ "id": "home",
22
+ "label": "Home",
23
+ "route": "/",
24
+ "required": true
25
+ },
26
+ {
27
+ "id": "about_us",
28
+ "label": "About Us",
29
+ "route": "/about_us"
30
+ },
31
+ {
32
+ "id": "services",
33
+ "label": "Services",
34
+ "route": "/services"
35
+ },
18
36
  {
19
37
  "id": "contact",
20
38
  "label": "Contact",
@@ -59,14 +77,38 @@
59
77
  "type": "object",
60
78
  "label": "Navigation labels",
61
79
  "fields": [
62
- { "key": "home", "type": "text", "label": "Home label" },
63
- { "key": "about_us", "type": "text", "label": "About label" },
64
- { "key": "services", "type": "text", "label": "Services label" },
65
- { "key": "contact", "type": "text", "label": "Contact label" }
80
+ {
81
+ "key": "home",
82
+ "type": "text",
83
+ "label": "Home label"
84
+ },
85
+ {
86
+ "key": "about_us",
87
+ "type": "text",
88
+ "label": "About label"
89
+ },
90
+ {
91
+ "key": "services",
92
+ "type": "text",
93
+ "label": "Services label"
94
+ },
95
+ {
96
+ "key": "contact",
97
+ "type": "text",
98
+ "label": "Contact label"
99
+ }
66
100
  ]
67
101
  },
68
- { "key": "footerHeading", "type": "text", "label": "Footer heading" },
69
- { "key": "copyright", "type": "text", "label": "Copyright" }
102
+ {
103
+ "key": "footerHeading",
104
+ "type": "text",
105
+ "label": "Footer heading"
106
+ },
107
+ {
108
+ "key": "copyright",
109
+ "type": "text",
110
+ "label": "Copyright"
111
+ }
70
112
  ]
71
113
  },
72
114
  {
@@ -76,14 +118,22 @@
76
118
  "type": "object",
77
119
  "label": "Home Page",
78
120
  "fields": [
79
- { "key": "heroEyebrow", "type": "text", "label": "Hero eyebrow" },
121
+ {
122
+ "key": "heroEyebrow",
123
+ "type": "text",
124
+ "label": "Hero eyebrow"
125
+ },
80
126
  {
81
127
  "key": "heroTitle",
82
128
  "type": "text",
83
129
  "label": "Hero title",
84
130
  "required": true
85
131
  },
86
- { "key": "heroSummary", "type": "textarea", "label": "Hero summary" },
132
+ {
133
+ "key": "heroSummary",
134
+ "type": "textarea",
135
+ "label": "Hero summary"
136
+ },
87
137
  {
88
138
  "key": "bannerImageUrl",
89
139
  "type": "image",
@@ -129,7 +179,11 @@
129
179
  "label": "Title",
130
180
  "required": true
131
181
  },
132
- { "key": "body", "type": "textarea", "label": "Description" }
182
+ {
183
+ "key": "body",
184
+ "type": "textarea",
185
+ "label": "Description"
186
+ }
133
187
  ]
134
188
  },
135
189
  {
@@ -140,9 +194,27 @@
140
194
  "minItems": 0,
141
195
  "maxItems": 12,
142
196
  "fields": [
143
- { "key": "buttonLabel", "type": "text", "label": "Button Label" },
144
- { "key": "buttonUrl", "type": "url", "label": "Button Url" }
197
+ {
198
+ "key": "buttonLabel",
199
+ "type": "text",
200
+ "label": "Button Label"
201
+ },
202
+ {
203
+ "key": "buttonUrl",
204
+ "type": "url",
205
+ "label": "Button Url"
206
+ }
145
207
  ]
208
+ },
209
+ {
210
+ "key": "productsHeading",
211
+ "type": "text",
212
+ "label": "Featured Products Heading"
213
+ },
214
+ {
215
+ "key": "productsSummary",
216
+ "type": "textarea",
217
+ "label": "Featured Products Summary"
146
218
  }
147
219
  ]
148
220
  },
@@ -159,7 +231,11 @@
159
231
  "label": "Heading",
160
232
  "required": true
161
233
  },
162
- { "key": "body", "type": "textarea", "label": "About text" },
234
+ {
235
+ "key": "body",
236
+ "type": "textarea",
237
+ "label": "About text"
238
+ },
163
239
  {
164
240
  "key": "imageUrl",
165
241
  "type": "image",
@@ -167,10 +243,26 @@
167
243
  "recommendedWidth": 1200,
168
244
  "recommendedHeight": 900
169
245
  },
170
- { "key": "collageHeading", "type": "text", "label": "Collage Heading" },
171
- { "key": "collageDescription", "type": "textarea", "label": "Collage Description" },
172
- { "key": "historyHeading", "type": "text", "label": "History Heading" },
173
- { "key": "history", "type": "textarea", "label": "History" },
246
+ {
247
+ "key": "collageHeading",
248
+ "type": "text",
249
+ "label": "Collage Heading"
250
+ },
251
+ {
252
+ "key": "collageDescription",
253
+ "type": "textarea",
254
+ "label": "Collage Description"
255
+ },
256
+ {
257
+ "key": "historyHeading",
258
+ "type": "text",
259
+ "label": "History Heading"
260
+ },
261
+ {
262
+ "key": "history",
263
+ "type": "textarea",
264
+ "label": "History"
265
+ },
174
266
  {
175
267
  "key": "collageImages",
176
268
  "type": "list",
@@ -179,8 +271,16 @@
179
271
  "minItems": 0,
180
272
  "maxItems": 12,
181
273
  "fields": [
182
- { "key": "image", "type": "image", "label": "Image" },
183
- { "key": "caption", "type": "text", "label": "Caption" }
274
+ {
275
+ "key": "image",
276
+ "type": "image",
277
+ "label": "Image"
278
+ },
279
+ {
280
+ "key": "caption",
281
+ "type": "text",
282
+ "label": "Caption"
283
+ }
184
284
  ]
185
285
  }
186
286
  ]
@@ -198,7 +298,11 @@
198
298
  "label": "Heading",
199
299
  "required": true
200
300
  },
201
- { "key": "intro", "type": "textarea", "label": "Introduction" }
301
+ {
302
+ "key": "intro",
303
+ "type": "textarea",
304
+ "label": "Introduction"
305
+ }
202
306
  ]
203
307
  },
204
308
  {
@@ -210,9 +314,22 @@
210
314
  "minItems": 0,
211
315
  "maxItems": 12,
212
316
  "fields": [
213
- { "key": "id", "type": "text", "label": "System ID" },
214
- { "key": "name", "type": "text", "label": "Name", "required": true },
215
- { "key": "description", "type": "textarea", "label": "Description" },
317
+ {
318
+ "key": "id",
319
+ "type": "text",
320
+ "label": "System ID"
321
+ },
322
+ {
323
+ "key": "name",
324
+ "type": "text",
325
+ "label": "Name",
326
+ "required": true
327
+ },
328
+ {
329
+ "key": "description",
330
+ "type": "textarea",
331
+ "label": "Description"
332
+ },
216
333
  {
217
334
  "key": "imageUrl",
218
335
  "type": "image",
@@ -224,7 +341,10 @@
224
341
  "key": "features",
225
342
  "type": "list",
226
343
  "label": "Included features",
227
- "itemField": { "type": "text", "label": "Feature" }
344
+ "itemField": {
345
+ "type": "text",
346
+ "label": "Feature"
347
+ }
228
348
  }
229
349
  ]
230
350
  },
@@ -241,14 +361,103 @@
241
361
  "label": "Heading",
242
362
  "required": true
243
363
  },
244
- { "key": "intro", "type": "textarea", "label": "Introduction" },
245
- { "key": "phone", "type": "tel", "label": "Phone" },
246
- { "key": "email", "type": "email", "label": "Email" },
247
- { "key": "address", "type": "textarea", "label": "Address" },
248
- { "key": "directionsLabel", "type": "text", "label": "Directions Label" },
249
- { "key": "directionsUrl", "type": "url", "label": "Directions Url" },
250
- { "key": "formTitle", "type": "text", "label": "Form heading" },
251
- { "key": "submitLabel", "type": "text", "label": "Submit button" }
364
+ {
365
+ "key": "intro",
366
+ "type": "textarea",
367
+ "label": "Introduction"
368
+ },
369
+ {
370
+ "key": "phone",
371
+ "type": "tel",
372
+ "label": "Phone"
373
+ },
374
+ {
375
+ "key": "email",
376
+ "type": "email",
377
+ "label": "Email"
378
+ },
379
+ {
380
+ "key": "address",
381
+ "type": "textarea",
382
+ "label": "Address"
383
+ },
384
+ {
385
+ "key": "directionsLabel",
386
+ "type": "text",
387
+ "label": "Directions Label"
388
+ },
389
+ {
390
+ "key": "directionsUrl",
391
+ "type": "url",
392
+ "label": "Directions Url"
393
+ },
394
+ {
395
+ "key": "formTitle",
396
+ "type": "text",
397
+ "label": "Form heading"
398
+ },
399
+ {
400
+ "key": "submitLabel",
401
+ "type": "text",
402
+ "label": "Submit button"
403
+ }
404
+ ]
405
+ },
406
+ {
407
+ "id": "products",
408
+ "path": "products",
409
+ "type": "list",
410
+ "label": "Products",
411
+ "minItems": 0,
412
+ "maxItems": 24,
413
+ "fields": [
414
+ {
415
+ "key": "id",
416
+ "type": "text",
417
+ "label": "Product ID"
418
+ },
419
+ {
420
+ "key": "title",
421
+ "type": "text",
422
+ "label": "Title",
423
+ "required": true
424
+ },
425
+ {
426
+ "key": "description",
427
+ "type": "textarea",
428
+ "label": "Description"
429
+ },
430
+ {
431
+ "key": "price",
432
+ "type": "number",
433
+ "label": "Price",
434
+ "required": true
435
+ },
436
+ {
437
+ "key": "compareAtPrice",
438
+ "type": "number",
439
+ "label": "Compare Price"
440
+ },
441
+ {
442
+ "key": "currency",
443
+ "type": "text",
444
+ "label": "Currency"
445
+ },
446
+ {
447
+ "key": "category",
448
+ "type": "text",
449
+ "label": "Category"
450
+ },
451
+ {
452
+ "key": "imageUrl",
453
+ "type": "image",
454
+ "label": "Product Image"
455
+ },
456
+ {
457
+ "key": "badge",
458
+ "type": "text",
459
+ "label": "Badge"
460
+ }
252
461
  ]
253
462
  }
254
463
  ]
@@ -18,7 +18,7 @@
18
18
  "next": "15.5.23",
19
19
  "react": "19.2.8",
20
20
  "react-dom": "19.2.8",
21
- "@deneb-ui/ui": "^2.0.37"
21
+ "@deneb-ui/ui": "^2.0.39"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@eslint/eslintrc": "3.3.6",
@@ -28,7 +28,7 @@
28
28
  "eslint": "9.39.5",
29
29
  "eslint-config-next": "15.5.23",
30
30
  "typescript": "5.8.3",
31
- "@deneb-ui/cli": "^2.0.37",
31
+ "@deneb-ui/cli": "^2.0.39",
32
32
  "tailwindcss": "^3.4.17",
33
33
  "postcss": "8.5.26",
34
34
  "autoprefixer": "^10.4.20"
@@ -5,12 +5,14 @@ import {
5
5
  contentObject,
6
6
  contentText,
7
7
  useSiteData,
8
+ useProducts,
8
9
  } from '@/lib/siteDataContext';
9
10
  import { pageRoute, withBasePath } from '@/lib/utils';
10
11
  import {
11
12
  EditableText,
12
13
  EditableList,
13
14
  EditableCard,
15
+ EditableProductCard,
14
16
  ListActionCta,
15
17
  } from '@deneb-ui/ui';
16
18
 
@@ -24,6 +26,7 @@ export default function HomePage() {
24
26
  const content = contentObject(siteData.content);
25
27
  const home = contentObject(content.home);
26
28
  const features = contentList(home.features);
29
+ const products = useProducts();
27
30
  const demoCta = contentObject(
28
31
  (contentList(home.demoPreOrderCta)[0] as Record<string, unknown> | undefined) ?? {}
29
32
  );
@@ -1,49 +1,43 @@
1
1
  'use client';
2
2
 
3
- import { contentList, contentObject, contentText, useSiteData } from '@/lib/siteDataContext';
4
- import { withBasePath } from '@/lib/utils';
3
+ import { contentObject, contentText, useServices, useSiteData } from '@/lib/siteDataContext';
4
+ import { EditableServiceCard, EditableText } from '@deneb-ui/ui';
5
5
 
6
6
  export default function ServicesPage() {
7
7
  const siteData = useSiteData();
8
8
  const content = contentObject(siteData.content);
9
9
  const page = contentObject(content.servicesPage);
10
- const services = contentList(content.services);
10
+ const services = useServices();
11
11
 
12
12
  return (
13
13
  <div data-preview-page-key="services">
14
14
  <section className="page-section page-heading" data-design-section="services-heading">
15
- <h1 data-preview-field-path="servicesPage.heading">{contentText(page.heading)}</h1>
16
- <p data-preview-field-path="servicesPage.intro">{contentText(page.intro)}</p>
15
+ <EditableText
16
+ as="h1"
17
+ variant="h1"
18
+ size="4xl"
19
+ weight="bold"
20
+ color="heading"
21
+ data-preview-field-path="servicesPage.heading"
22
+ defaultValue={contentText(page.heading)}
23
+ />
24
+ <EditableText
25
+ as="p"
26
+ variant="lead"
27
+ color="muted"
28
+ data-preview-field-path="servicesPage.intro"
29
+ defaultValue={contentText(page.intro)}
30
+ />
17
31
  </section>
18
32
  <section className="page-section alt" data-design-section="services-list">
19
33
  <div className="card-grid" data-preview-list-path="services">
20
- {services.map((rawService, index) => {
21
- const service = contentObject(rawService);
22
- const features = contentList(service.features);
23
- return (
24
- <article className="card" key={contentText(service.id) || index} data-preview-item-path={`services[${index}]`}>
25
- <img
26
- className="card-image"
27
- src={withBasePath(contentText(service.imageUrl) || '/placeholder.svg')}
28
- alt=""
29
- data-preview-field-path={`services[${index}].imageUrl`}
30
- />
31
- <h2 data-preview-field-path={`services[${index}].name`}>{contentText(service.name)}</h2>
32
- <p data-preview-field-path={`services[${index}].description`}>{contentText(service.description)}</p>
33
- <ul data-preview-list-path={`services[${index}].features`}>
34
- {features.map((feature, featureIndex) => (
35
- <li
36
- key={featureIndex}
37
- data-preview-item-path={`services[${index}].features[${featureIndex}]`}
38
- data-preview-field-path={`services[${index}].features[${featureIndex}]`}
39
- >
40
- {contentText(feature)}
41
- </li>
42
- ))}
43
- </ul>
44
- </article>
45
- );
46
- })}
34
+ {services.map((service, index) => (
35
+ <EditableServiceCard
36
+ key={contentText(service.id) || index}
37
+ itemPath={`services[${index}]`}
38
+ service={service}
39
+ />
40
+ ))}
47
41
  </div>
48
42
  </section>
49
43
  </div>
@@ -1,5 +1,10 @@
1
1
  {
2
- "project": { "id": "starter-demo", "title": "Fivora Starter Demo", "status": "APPROVED" },
2
+ "project": {
3
+ "id": "starter-demo",
4
+ "slug": "starter-demo",
5
+ "title": "Fivora Starter Demo",
6
+ "status": "APPROVED"
7
+ },
3
8
  "merchant": {
4
9
  "businessName": "Fivora Store",
5
10
  "description": "A modern high-converting digital storefront built on the Fivora platform."
@@ -9,7 +14,12 @@
9
14
  "name": "Fivora Starter",
10
15
  "engine": "NEXT_STATIC_EXPORT",
11
16
  "structure": {
12
- "pages": ["home", "about_us", "services", "contact"],
17
+ "pages": [
18
+ "home",
19
+ "about_us",
20
+ "services",
21
+ "contact"
22
+ ],
13
23
  "theme": {
14
24
  "primaryColor": "#016a7e",
15
25
  "secondaryColor": "#0a1931",
@@ -25,7 +35,12 @@
25
35
  }
26
36
  },
27
37
  "requirements": {
28
- "requiredPages": ["home", "about_us", "services", "contact"],
38
+ "requiredPages": [
39
+ "home",
40
+ "about_us",
41
+ "services",
42
+ "contact"
43
+ ],
29
44
  "requiredFeatures": []
30
45
  },
31
46
  "content": {
@@ -60,11 +75,27 @@
60
75
  "introBody": "Every editable value comes directly from Fivora site data with auto-balancing layouts, responsive typography, and strict contract validation out of the box.",
61
76
  "featuresHeading": "Why build with the Fivora Authoring Kit?",
62
77
  "features": [
63
- { "title": "Auto-Balancing Layouts", "body": "Cards, grids, and containers automatically balance and fill space seamlessly across all screen sizes." },
64
- { "title": "Strict Visual Editing", "body": "Direct bindings enable merchants to click, edit, and preview changes without breaking template styles." },
65
- { "title": "1-Click Clean Packaging", "body": "Built-in zip command strips heavy caches, node_modules, and git files so uploads pass instantly." }
78
+ {
79
+ "title": "Auto-Balancing Layouts",
80
+ "body": "Cards, grids, and containers automatically balance and fill space seamlessly across all screen sizes."
81
+ },
82
+ {
83
+ "title": "Strict Visual Editing",
84
+ "body": "Direct bindings enable merchants to click, edit, and preview changes without breaking template styles."
85
+ },
86
+ {
87
+ "title": "1-Click Clean Packaging",
88
+ "body": "Built-in zip command strips heavy caches, node_modules, and git files so uploads pass instantly."
89
+ }
90
+ ],
91
+ "demoPreOrderCta": [
92
+ {
93
+ "buttonLabel": "Book a Demo",
94
+ "buttonUrl": "https://wa.me/94771234567"
95
+ }
66
96
  ],
67
- "demoPreOrderCta": [{ "buttonLabel": "Book a Demo", "buttonUrl": "https://wa.me/94771234567" }]
97
+ "productsHeading": "Featured Store Products",
98
+ "productsSummary": "Live inventory and pricing updated in real time from your Fivora Shop Owner panel."
68
99
  },
69
100
  "about": {
70
101
  "heading": "Built for the next generation of online storefronts",
@@ -75,9 +106,21 @@
75
106
  "historyHeading": "Where we started",
76
107
  "history": "We began as a small team helping local businesses move online. Today our templates power visual editing labs, strict Fivora contracts, and one-click packaging for developers worldwide.",
77
108
  "collageImages": [
78
- { "id": "studio", "image": "/placeholder.svg", "caption": "Design studio" },
79
- { "id": "build", "image": "/placeholder.svg", "caption": "Build & test" },
80
- { "id": "ship", "image": "/placeholder.svg", "caption": "Ship to Fivora" }
109
+ {
110
+ "id": "studio",
111
+ "image": "/placeholder.svg",
112
+ "caption": "Design studio"
113
+ },
114
+ {
115
+ "id": "build",
116
+ "image": "/placeholder.svg",
117
+ "caption": "Build & test"
118
+ },
119
+ {
120
+ "id": "ship",
121
+ "image": "/placeholder.svg",
122
+ "caption": "Ship to Fivora"
123
+ }
81
124
  ]
82
125
  },
83
126
  "servicesPage": {
@@ -90,14 +133,22 @@
90
133
  "name": "Visual Editing Lab",
91
134
  "description": "Simulate how merchants customize your template in real time with the built-in local development lab.",
92
135
  "imageUrl": "/placeholder.svg",
93
- "features": ["Zero-server static preview", "Field focus bridge", "Instant feedback"]
136
+ "features": [
137
+ "Zero-server static preview",
138
+ "Field focus bridge",
139
+ "Instant feedback"
140
+ ]
94
141
  },
95
142
  {
96
143
  "id": "clean-packaging",
97
144
  "name": "Automated Packager",
98
145
  "description": "Automatically produce clean, upload-ready ZIP archives excluding junk and cache files.",
99
146
  "imageUrl": "/placeholder.svg",
100
- "features": ["Excludes node_modules", "Excludes .next and .git", "100% preflight compliant"]
147
+ "features": [
148
+ "Excludes node_modules",
149
+ "Excludes .next and .git",
150
+ "100% preflight compliant"
151
+ ]
101
152
  }
102
153
  ],
103
154
  "contact": {
@@ -112,8 +163,60 @@
112
163
  "submitLabel": "Send Message",
113
164
  "directMessageText": "Send us a direct message",
114
165
  "whatsapp": "+94 77 123 4567"
115
- }
166
+ },
167
+ "products": [
168
+ {
169
+ "id": "prod-1",
170
+ "title": "Minimalist Ceramic Cup",
171
+ "description": "Handcrafted matte ceramic cup for your daily espresso or pour-over brew.",
172
+ "price": 3200,
173
+ "compareAtPrice": 4000,
174
+ "currency": "LKR",
175
+ "imageUrl": "/placeholder.svg",
176
+ "category": "Ceramics",
177
+ "badge": "Bestseller",
178
+ "isAvailable": true
179
+ },
180
+ {
181
+ "id": "prod-2",
182
+ "title": "Artisan Linen Apron",
183
+ "description": "Durable pure washed linen apron with deep front utility pockets.",
184
+ "price": 5400,
185
+ "compareAtPrice": 6200,
186
+ "currency": "LKR",
187
+ "imageUrl": "/placeholder.svg",
188
+ "category": "Kitchen",
189
+ "badge": "New",
190
+ "isAvailable": true
191
+ },
192
+ {
193
+ "id": "prod-3",
194
+ "title": "Botanical Room Spray",
195
+ "description": "Natural essential oil room mist infused with wild lavender and cedarwood.",
196
+ "price": 2800,
197
+ "compareAtPrice": null,
198
+ "currency": "LKR",
199
+ "imageUrl": "/placeholder.svg",
200
+ "category": "Aromatherapy",
201
+ "badge": null,
202
+ "isAvailable": true
203
+ }
204
+ ]
116
205
  },
117
206
  "media": {},
118
- "seo": null
207
+ "seo": null,
208
+ "siteInstance": {
209
+ "id": "starter-demo-instance",
210
+ "slug": "starter-demo",
211
+ "domain": "starter-demo.fivora.site",
212
+ "subdomain": "starter-demo",
213
+ "customDomain": null,
214
+ "liveUrl": "https://starter-demo.fivora.site"
215
+ },
216
+ "api": {
217
+ "baseUrl": "https://api.fivora.site",
218
+ "catalogUrl": "https://api.fivora.site/site-catalog/starter-demo/live-data",
219
+ "contactUrl": "https://api.fivora.site/site-contact",
220
+ "analyticsUrl": "https://api.fivora.site/site-analytics/page-view"
221
+ }
119
222
  }
@@ -3,6 +3,10 @@
3
3
  export {
4
4
  SiteDataProvider,
5
5
  useSiteData,
6
+ useProducts,
7
+ useServices,
8
+ useSiteCatalog,
9
+ useSiteApi,
6
10
  contentText,
7
11
  contentObject,
8
12
  contentList,
@@ -15,4 +19,12 @@ export {
15
19
  PREVIEW_FIELD_ATTRIBUTE,
16
20
  } from '@deneb-ui/ui';
17
21
 
18
- export type { SiteData, SiteDataProviderProps } from '@deneb-ui/ui';
22
+ export type {
23
+ SiteData,
24
+ SiteDataProviderProps,
25
+ SiteDataApiConfig,
26
+ SiteDataProject,
27
+ SiteInstanceData,
28
+ ProductItem,
29
+ ServiceItem,
30
+ } from '@deneb-ui/ui';