@swishapp/sdk 0.131.0 → 0.132.0

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.
@@ -169,25 +169,36 @@ export declare const ListsSectionSchema: v.ObjectSchema<{
169
169
  readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
170
170
  readonly options: v.OptionalSchema<v.ObjectSchema<{
171
171
  readonly displayType: v.OptionalSchema<v.PicklistSchema<["list", "slider"], undefined>, "slider">;
172
- readonly listDetailPage: v.OptionalSchema<v.ObjectSchema<{
173
- readonly desktopColumns: v.OptionalSchema<v.NumberSchema<undefined>, 4>;
174
- readonly showBuyButton: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
175
- readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
176
- readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
177
- }, undefined>, {
178
- readonly desktopColumns: 4;
179
- readonly showBuyButton: true;
180
- readonly showVariantOptionNames: false;
181
- readonly enableVariantChange: true;
182
- }>;
183
172
  }, undefined>, {
184
173
  readonly displayType: "slider";
185
- readonly listDetailPage: {
186
- readonly desktopColumns: 4;
187
- readonly showBuyButton: true;
188
- readonly showVariantOptionNames: false;
189
- readonly enableVariantChange: true;
190
- };
174
+ }>;
175
+ }, undefined>;
176
+ export declare const ListDetailPageSectionSchema: v.ObjectSchema<{
177
+ readonly type: v.LiteralSchema<"list-items-grid", undefined>;
178
+ readonly hidden: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
179
+ readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
180
+ readonly options: v.OptionalSchema<v.ObjectSchema<{
181
+ readonly desktopColumns: v.OptionalSchema<v.NumberSchema<undefined>, 4>;
182
+ readonly showBuyButton: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
183
+ readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
184
+ readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
185
+ }, undefined>, {
186
+ readonly desktopColumns: 4;
187
+ readonly showBuyButton: true;
188
+ readonly showVariantOptionNames: false;
189
+ readonly enableVariantChange: true;
190
+ }>;
191
+ }, undefined>;
192
+ export declare const ListDetailSectionSchema: v.ObjectSchema<{
193
+ readonly type: v.LiteralSchema<"list-items-grid", undefined>;
194
+ readonly hidden: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
195
+ readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
196
+ readonly options: v.OptionalSchema<v.ObjectSchema<{
197
+ readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
198
+ readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
199
+ }, undefined>, {
200
+ readonly showVariantOptionNames: false;
201
+ readonly enableVariantChange: false;
191
202
  }>;
192
203
  }, undefined>;
193
204
  export declare const OrdersSectionSchema: v.ObjectSchema<{
@@ -276,10 +287,6 @@ export declare const NotificationsSectionSchema: v.ObjectSchema<{
276
287
  readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
277
288
  readonly options: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, {}>;
278
289
  }, undefined>;
279
- export declare const FullpageListDetailSchema: v.ObjectSchema<{
280
- readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
281
- readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
282
- }, undefined>;
283
290
  export declare const DrawerViewSchema: v.ObjectSchema<{
284
291
  readonly sections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"type", [v.ObjectSchema<{
285
292
  readonly type: v.LiteralSchema<"drawer-header", undefined>;
@@ -602,30 +609,49 @@ export declare const ListsViewSchema: v.ObjectSchema<{
602
609
  readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
603
610
  readonly options: v.OptionalSchema<v.ObjectSchema<{
604
611
  readonly displayType: v.OptionalSchema<v.PicklistSchema<["list", "slider"], undefined>, "slider">;
605
- readonly listDetailPage: v.OptionalSchema<v.ObjectSchema<{
606
- readonly desktopColumns: v.OptionalSchema<v.NumberSchema<undefined>, 4>;
607
- readonly showBuyButton: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
608
- readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
609
- readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
610
- }, undefined>, {
611
- readonly desktopColumns: 4;
612
- readonly showBuyButton: true;
613
- readonly showVariantOptionNames: false;
614
- readonly enableVariantChange: true;
615
- }>;
616
612
  }, undefined>, {
617
613
  readonly displayType: "slider";
618
- readonly listDetailPage: {
619
- readonly desktopColumns: 4;
620
- readonly showBuyButton: true;
621
- readonly showVariantOptionNames: false;
622
- readonly enableVariantChange: true;
623
- };
624
614
  }>;
625
615
  }, undefined>, undefined>, readonly [{
626
616
  readonly type: "lists-grid";
627
617
  }]>;
628
618
  }, undefined>;
619
+ export declare const ListDetailPageViewSchema: v.ObjectSchema<{
620
+ readonly sections: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
621
+ readonly type: v.LiteralSchema<"list-items-grid", undefined>;
622
+ readonly hidden: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
623
+ readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
624
+ readonly options: v.OptionalSchema<v.ObjectSchema<{
625
+ readonly desktopColumns: v.OptionalSchema<v.NumberSchema<undefined>, 4>;
626
+ readonly showBuyButton: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
627
+ readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
628
+ readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
629
+ }, undefined>, {
630
+ readonly desktopColumns: 4;
631
+ readonly showBuyButton: true;
632
+ readonly showVariantOptionNames: false;
633
+ readonly enableVariantChange: true;
634
+ }>;
635
+ }, undefined>, undefined>, readonly [{
636
+ readonly type: "list-items-grid";
637
+ }]>;
638
+ }, undefined>;
639
+ export declare const ListDetailViewSchema: v.ObjectSchema<{
640
+ readonly sections: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
641
+ readonly type: v.LiteralSchema<"list-items-grid", undefined>;
642
+ readonly hidden: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
643
+ readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
644
+ readonly options: v.OptionalSchema<v.ObjectSchema<{
645
+ readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
646
+ readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
647
+ }, undefined>, {
648
+ readonly showVariantOptionNames: false;
649
+ readonly enableVariantChange: false;
650
+ }>;
651
+ }, undefined>, undefined>, readonly [{
652
+ readonly type: "list-items-grid";
653
+ }]>;
654
+ }, undefined>;
629
655
  export declare const OrdersViewSchema: v.ObjectSchema<{
630
656
  readonly sections: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
631
657
  readonly type: v.LiteralSchema<"orders-list", undefined>;
@@ -761,14 +787,6 @@ export declare const UiSchema: v.ObjectSchema<{
761
787
  }, undefined>, {
762
788
  readonly baseTint: true;
763
789
  }>;
764
- readonly fullpage: v.OptionalSchema<v.ObjectSchema<{
765
- readonly listDetail: v.OptionalSchema<v.ObjectSchema<{
766
- readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
767
- readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
768
- }, undefined>, {}>;
769
- }, undefined>, {
770
- readonly listDetail: {};
771
- }>;
772
790
  readonly drawer: v.OptionalSchema<v.ObjectSchema<{
773
791
  readonly sections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"type", [v.ObjectSchema<{
774
792
  readonly type: v.LiteralSchema<"drawer-header", undefined>;
@@ -1091,30 +1109,49 @@ export declare const UiSchema: v.ObjectSchema<{
1091
1109
  readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
1092
1110
  readonly options: v.OptionalSchema<v.ObjectSchema<{
1093
1111
  readonly displayType: v.OptionalSchema<v.PicklistSchema<["list", "slider"], undefined>, "slider">;
1094
- readonly listDetailPage: v.OptionalSchema<v.ObjectSchema<{
1095
- readonly desktopColumns: v.OptionalSchema<v.NumberSchema<undefined>, 4>;
1096
- readonly showBuyButton: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
1097
- readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
1098
- readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
1099
- }, undefined>, {
1100
- readonly desktopColumns: 4;
1101
- readonly showBuyButton: true;
1102
- readonly showVariantOptionNames: false;
1103
- readonly enableVariantChange: true;
1104
- }>;
1105
1112
  }, undefined>, {
1106
1113
  readonly displayType: "slider";
1107
- readonly listDetailPage: {
1108
- readonly desktopColumns: 4;
1109
- readonly showBuyButton: true;
1110
- readonly showVariantOptionNames: false;
1111
- readonly enableVariantChange: true;
1112
- };
1113
1114
  }>;
1114
1115
  }, undefined>, undefined>, readonly [{
1115
1116
  readonly type: "lists-grid";
1116
1117
  }]>;
1117
1118
  }, undefined>, {}>;
1119
+ readonly listDetail: v.OptionalSchema<v.ObjectSchema<{
1120
+ readonly sections: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1121
+ readonly type: v.LiteralSchema<"list-items-grid", undefined>;
1122
+ readonly hidden: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
1123
+ readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
1124
+ readonly options: v.OptionalSchema<v.ObjectSchema<{
1125
+ readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
1126
+ readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
1127
+ }, undefined>, {
1128
+ readonly showVariantOptionNames: false;
1129
+ readonly enableVariantChange: false;
1130
+ }>;
1131
+ }, undefined>, undefined>, readonly [{
1132
+ readonly type: "list-items-grid";
1133
+ }]>;
1134
+ }, undefined>, {}>;
1135
+ readonly listDetailPage: v.OptionalSchema<v.ObjectSchema<{
1136
+ readonly sections: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1137
+ readonly type: v.LiteralSchema<"list-items-grid", undefined>;
1138
+ readonly hidden: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
1139
+ readonly design: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, {}>;
1140
+ readonly options: v.OptionalSchema<v.ObjectSchema<{
1141
+ readonly desktopColumns: v.OptionalSchema<v.NumberSchema<undefined>, 4>;
1142
+ readonly showBuyButton: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
1143
+ readonly showVariantOptionNames: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
1144
+ readonly enableVariantChange: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
1145
+ }, undefined>, {
1146
+ readonly desktopColumns: 4;
1147
+ readonly showBuyButton: true;
1148
+ readonly showVariantOptionNames: false;
1149
+ readonly enableVariantChange: true;
1150
+ }>;
1151
+ }, undefined>, undefined>, readonly [{
1152
+ readonly type: "list-items-grid";
1153
+ }]>;
1154
+ }, undefined>, {}>;
1118
1155
  readonly orders: v.OptionalSchema<v.ObjectSchema<{
1119
1156
  readonly sections: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1120
1157
  readonly type: v.LiteralSchema<"orders-list", undefined>;
@@ -1238,10 +1275,13 @@ export type DrawerSectionParsed = v.InferOutput<typeof DrawerSectionSchema>;
1238
1275
  export type HomeSectionParsed = v.InferOutput<typeof HomeSectionSchema>;
1239
1276
  export type SavesSectionParsed = v.InferOutput<typeof SavesSectionSchema>;
1240
1277
  export type ListsSectionParsed = v.InferOutput<typeof ListsSectionSchema>;
1278
+ export type ListDetailSectionParsed = v.InferOutput<typeof ListDetailSectionSchema>;
1279
+ export type ListDetailPageSectionParsed = v.InferOutput<typeof ListDetailPageSectionSchema>;
1241
1280
  export type OrdersSectionParsed = v.InferOutput<typeof OrdersSectionSchema>;
1242
1281
  export type OrderDetailSectionParsed = v.InferOutput<typeof OrderDetailSectionSchema>;
1243
1282
  export type ProductDetailSectionParsed = v.InferOutput<typeof ProductDetailSectionSchema>;
1244
1283
  export type ProfileSectionParsed = v.InferOutput<typeof ProfileSectionSchema>;
1245
1284
  export type NotificationsSectionParsed = v.InferOutput<typeof NotificationsSectionSchema>;
1285
+ export type ListDetailViewParsed = v.InferOutput<typeof ListDetailViewSchema>;
1286
+ export type ListDetailPageViewParsed = v.InferOutput<typeof ListDetailPageViewSchema>;
1246
1287
  export type UiOptionsParsed = v.InferOutput<typeof UiSchema>;
1247
- export type FullpageListDetailParsed = v.InferOutput<typeof FullpageListDetailSchema>;
@@ -2,7 +2,7 @@ import type { LanguageCode as I18nLanguageCode } from "@swishapp/i18n";
2
2
  import type { PlacementSpec } from "../dom/create-placement";
3
3
  import { IntentOptions } from "../intents/intents";
4
4
  import { StorefrontApiOptions } from "../swish";
5
- import type { AuthOptions, DrawerSectionInput, FullpageListDetailOptions, HomeSectionInput, ListsSectionInput, MetafieldOptions, NotificationsSectionInput, OrderDetailSectionInput, OrdersSectionInput, ProductDetailSectionInput, ProfileSectionInput, SavesSectionInput, StorefrontContext, SwishOptions, TransformOptions, UiDesignOptions } from "./types";
5
+ import type { AuthOptions, DrawerSectionInput, HomeSectionInput, ListDetailPageSectionInput, ListDetailSectionInput, ListsSectionInput, MetafieldOptions, NotificationsSectionInput, OrderDetailSectionInput, OrdersSectionInput, ProductDetailSectionInput, ProfileSectionInput, SavesSectionInput, StorefrontContext, SwishOptions, TransformOptions, UiDesignOptions } from "./types";
6
6
  export type SwishOptionsInput = {
7
7
  storefront: StorefrontApiOptions;
8
8
  context: StorefrontContext;
@@ -22,9 +22,6 @@ interface UiOptions {
22
22
  images?: {
23
23
  baseTint?: boolean;
24
24
  };
25
- fullpage?: {
26
- listDetail?: Partial<FullpageListDetailOptions>;
27
- };
28
25
  drawer?: {
29
26
  sections?: DrawerSectionInput[];
30
27
  };
@@ -37,6 +34,12 @@ interface UiOptions {
37
34
  lists?: {
38
35
  sections?: ListsSectionInput[];
39
36
  };
37
+ listDetail?: {
38
+ sections?: ListDetailSectionInput[];
39
+ };
40
+ listDetailPage?: {
41
+ sections?: ListDetailPageSectionInput[];
42
+ };
40
43
  orders?: {
41
44
  sections?: OrdersSectionInput[];
42
45
  };
@@ -4,7 +4,7 @@ import { IntentOptions } from "../intents/intents";
4
4
  import { CountryCode, LanguageCode } from "../storefront-api/types/storefront.types";
5
5
  import { Intent, StorefrontApiOptions } from "../swish";
6
6
  import type { Product, ProductVariant } from "../types";
7
- import type { DrawerSectionParsed, FullpageListDetailParsed, HomeSectionParsed, ListsSectionParsed, NotificationsSectionParsed, OrderDetailSectionParsed, OrdersSectionParsed, ProductDetailSectionParsed, ProfileSectionParsed, SavesSectionParsed, UiOptionsParsed } from "./schemas";
7
+ import type { DrawerSectionParsed, HomeSectionParsed, ListDetailPageSectionParsed, ListDetailSectionParsed, ListsSectionParsed, NotificationsSectionParsed, OrderDetailSectionParsed, OrdersSectionParsed, ProductDetailSectionParsed, ProfileSectionParsed, SavesSectionParsed, UiOptionsParsed } from "./schemas";
8
8
  export interface SwishOptions {
9
9
  auth: AuthOptions;
10
10
  storefront: StorefrontApiOptions;
@@ -50,17 +50,24 @@ export type Badge = {
50
50
  style?: Record<string, string | number>;
51
51
  };
52
52
  export interface TransformOptions {
53
- badges?: (args: {
53
+ productTitle?: (args: {
54
+ product: Product;
55
+ }) => string;
56
+ productDescription?: (args: {
57
+ product: Product;
58
+ }) => string;
59
+ productBadges?: (args: {
54
60
  product: Product;
55
61
  variant?: ProductVariant;
56
62
  defaultBadges: string[];
57
63
  }) => (string | Badge)[];
58
- title?: (args: {
64
+ productPrice?: (args: {
59
65
  product: Product;
60
- }) => string;
61
- description?: (args: {
66
+ variant?: ProductVariant;
67
+ }) => string | false | undefined;
68
+ addToCartButton?: (args: {
62
69
  product: Product;
63
- }) => string;
70
+ }) => boolean;
64
71
  variantTitle?: (args: {
65
72
  variant: ProductVariant;
66
73
  }) => string;
@@ -68,9 +75,6 @@ export interface TransformOptions {
68
75
  option: NonNullable<Product>["options"][number];
69
76
  optionValues: NonNullable<Product>["options"][number]["optionValues"];
70
77
  }) => NonNullable<Product>["options"][number]["optionValues"];
71
- addToCartButton?: (args: {
72
- product: Product;
73
- }) => boolean;
74
78
  }
75
79
  export type TransformOptionsResolved = Required<TransformOptions>;
76
80
  export type UiOptions = UiOptionsParsed;
@@ -181,12 +185,13 @@ export type DrawerSection = DrawerSectionParsed;
181
185
  export type HomeSection = HomeSectionParsed;
182
186
  export type SavesSection = SavesSectionParsed;
183
187
  export type ListsSection = ListsSectionParsed;
188
+ export type ListDetailSection = ListDetailSectionParsed;
189
+ export type ListDetailPageSection = ListDetailPageSectionParsed;
184
190
  export type OrdersSection = OrdersSectionParsed;
185
191
  export type OrderDetailSection = OrderDetailSectionParsed;
186
192
  export type ProductDetailSection = ProductDetailSectionParsed;
187
193
  export type ProfileSection = ProfileSectionParsed;
188
194
  export type NotificationsSection = NotificationsSectionParsed;
189
- export type FullpageListDetailOptions = FullpageListDetailParsed;
190
195
  export interface DrawerLogoInput {
191
196
  url?: string;
192
197
  altText?: string;
@@ -248,16 +253,23 @@ export type SavesSectionInput = (ViewSection<"lists-section"> & {
248
253
  showVariantOptionNames?: boolean;
249
254
  };
250
255
  });
251
- export interface ListDetailPageInput {
252
- desktopColumns?: number;
253
- showBuyButton?: boolean;
254
- showVariantOptionNames?: boolean;
255
- enableVariantChange?: boolean;
256
- }
257
256
  export type ListsSectionInput = ViewSection<"lists-grid"> & {
258
257
  options?: {
259
258
  displayType?: "list" | "slider";
260
- listDetailPage?: ListDetailPageInput;
259
+ };
260
+ };
261
+ export type ListDetailPageSectionInput = ViewSection<"list-items-grid"> & {
262
+ options?: {
263
+ desktopColumns?: number;
264
+ showBuyButton?: boolean;
265
+ showVariantOptionNames?: boolean;
266
+ enableVariantChange?: boolean;
267
+ };
268
+ };
269
+ export type ListDetailSectionInput = ViewSection<"list-items-grid"> & {
270
+ options?: {
271
+ showVariantOptionNames?: boolean;
272
+ enableVariantChange?: boolean;
261
273
  };
262
274
  };
263
275
  export type OrdersSectionInput = ViewSection<"orders-list">;
@@ -300,6 +312,12 @@ export interface SavesViewOptions {
300
312
  export interface ListsViewOptions {
301
313
  sections: ListsSection[];
302
314
  }
315
+ export interface ListDetailViewOptions {
316
+ sections: ListDetailSection[];
317
+ }
318
+ export interface ListDetailPageViewOptions {
319
+ sections: ListDetailPageSection[];
320
+ }
303
321
  export interface OrdersViewOptions {
304
322
  sections: OrdersSection[];
305
323
  }
@@ -320,6 +338,8 @@ export type ViewSectionMap = {
320
338
  home: HomeSection;
321
339
  saves: SavesSection;
322
340
  lists: ListsSection;
341
+ listDetail: ListDetailSection;
342
+ listDetailPage: ListDetailPageSection;
323
343
  orders: OrdersSection;
324
344
  orderDetail: OrderDetailSection;
325
345
  productDetail: ProductDetailSection;