@mobielnl/elements 0.10.0 → 0.10.2
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/README.md +45 -183
- package/dist/elements.css +1 -1
- package/dist/elements.js +1 -1
- package/dist/elements.umd.cjs +133 -55
- package/dist/{index-Bf0gZOvJ.js → index-BwGcY0tR.js} +1 -1
- package/dist/{index-CY36KeHQ.js → index-PbdVGqGK.js} +2135 -2026
- package/dist/index.d.ts +164 -46
- package/package.json +11 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import { ElementType } from 'react';
|
|
1
2
|
import { JSX } from 'react/jsx-runtime';
|
|
2
|
-
import { PopoverContentClassNames } from '../../../lib/hooks/usePopoverProps';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
|
-
import
|
|
5
|
-
import * as z_2 from 'zod';
|
|
4
|
+
import * as z from 'zod';
|
|
6
5
|
|
|
7
6
|
/** Union type of all action events */
|
|
8
|
-
declare type ActionEvent = FiltersChangedEvent | SortChangedEvent | ProfileChangedEvent | DealSelectedEvent | DetailsViewedEvent;
|
|
7
|
+
export declare type ActionEvent = FiltersChangedEvent | SortChangedEvent | ProfileChangedEvent | DealSelectedEvent | DetailsViewedEvent;
|
|
9
8
|
|
|
10
9
|
declare type ActiveFilterChipsClassNames = {
|
|
11
10
|
/** The container of the filter chips */
|
|
@@ -14,6 +13,16 @@ declare type ActiveFilterChipsClassNames = {
|
|
|
14
13
|
filterChip?: FilterChipClassNames;
|
|
15
14
|
};
|
|
16
15
|
|
|
16
|
+
export declare type Address = z.infer<typeof addressSchema>;
|
|
17
|
+
|
|
18
|
+
declare const addressSchema: z.ZodObject<{
|
|
19
|
+
postcode: z.ZodString;
|
|
20
|
+
number: z.ZodString;
|
|
21
|
+
numberAddon: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
|
|
22
|
+
street: z.ZodString;
|
|
23
|
+
city: z.ZodString;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
|
|
17
26
|
declare type AverageSectionClassNames = {
|
|
18
27
|
/** Container for the average per month section */
|
|
19
28
|
container?: string;
|
|
@@ -67,6 +76,11 @@ declare type AverageSectionClassNames = {
|
|
|
67
76
|
};
|
|
68
77
|
};
|
|
69
78
|
|
|
79
|
+
export declare type Block = {
|
|
80
|
+
scope: string;
|
|
81
|
+
amount: number;
|
|
82
|
+
};
|
|
83
|
+
|
|
70
84
|
declare type ChannelsClassNames = {
|
|
71
85
|
/** The base slot of the channels section, it is the container of the channels section */
|
|
72
86
|
base?: string;
|
|
@@ -231,7 +245,7 @@ declare type CreditInfoClassNames_2 = {
|
|
|
231
245
|
};
|
|
232
246
|
|
|
233
247
|
/** Event fired when a deal/proposition is selected (clicked) */
|
|
234
|
-
declare type DealSelectedEvent = {
|
|
248
|
+
export declare type DealSelectedEvent = {
|
|
235
249
|
type: 'deal_selected';
|
|
236
250
|
/** The full proposition data */
|
|
237
251
|
proposition: ProductCardPropositionFragment;
|
|
@@ -265,7 +279,7 @@ declare type DetailsModalClassNames = {
|
|
|
265
279
|
declare type DetailsModalTab = 'general' | 'conditions' | 'channels' | 'costs';
|
|
266
280
|
|
|
267
281
|
/** Event fired when proposition details are viewed */
|
|
268
|
-
declare type DetailsViewedEvent = {
|
|
282
|
+
export declare type DetailsViewedEvent = {
|
|
269
283
|
type: 'details_viewed';
|
|
270
284
|
/** The full proposition data */
|
|
271
285
|
proposition: ProductCardPropositionFragment;
|
|
@@ -423,8 +437,13 @@ declare type FilterChipClassNames = {
|
|
|
423
437
|
closeButton?: string;
|
|
424
438
|
};
|
|
425
439
|
|
|
440
|
+
/**
|
|
441
|
+
* Configuration for a single filter option
|
|
442
|
+
*/
|
|
443
|
+
export declare type FilterOption = NonNullable<PageByPathQuery['page']>['pageFilters'][number];
|
|
444
|
+
|
|
426
445
|
/** Event fired when filter values change */
|
|
427
|
-
declare type FiltersChangedEvent = {
|
|
446
|
+
export declare type FiltersChangedEvent = {
|
|
428
447
|
type: 'filters_changed';
|
|
429
448
|
/** The filter that was changed */
|
|
430
449
|
filter: {
|
|
@@ -462,7 +481,7 @@ declare type FiltersClassNames = {
|
|
|
462
481
|
/**
|
|
463
482
|
* Represents an active filter value selected by the user
|
|
464
483
|
*/
|
|
465
|
-
declare type FilterValue = {
|
|
484
|
+
export declare type FilterValue = {
|
|
466
485
|
/** Identifier slug matching the corresponding `FilterOption.slug` */
|
|
467
486
|
slug: string;
|
|
468
487
|
/** The selected value(s) - type depends on filter type:
|
|
@@ -475,6 +494,15 @@ declare type FilterValue = {
|
|
|
475
494
|
value: string | string[];
|
|
476
495
|
};
|
|
477
496
|
|
|
497
|
+
export declare type FixedBlock = {
|
|
498
|
+
scope: string;
|
|
499
|
+
provider: {
|
|
500
|
+
name: string;
|
|
501
|
+
imageUrl: string;
|
|
502
|
+
rank: number;
|
|
503
|
+
};
|
|
504
|
+
};
|
|
505
|
+
|
|
478
506
|
declare type GeneralClassNames = {
|
|
479
507
|
/** The base slot of the general section, it is the container of the general section */
|
|
480
508
|
base?: string;
|
|
@@ -499,9 +527,9 @@ declare type ListBoxClassNames = {
|
|
|
499
527
|
selectedIcon?: string;
|
|
500
528
|
};
|
|
501
529
|
|
|
502
|
-
declare type Locale = 'nl' | 'en' | string;
|
|
530
|
+
export declare type Locale = 'nl' | 'en' | string;
|
|
503
531
|
|
|
504
|
-
declare type LocalizedTranslations = {
|
|
532
|
+
export declare type LocalizedTranslations = {
|
|
505
533
|
/** Can be partial as undefined values fallback to default 'nl' translations */
|
|
506
534
|
nl: PartialTranslations;
|
|
507
535
|
} | {
|
|
@@ -559,7 +587,8 @@ declare type ModalClassNames = {
|
|
|
559
587
|
wrapper?: string;
|
|
560
588
|
/** The main slot of the modal content */
|
|
561
589
|
base?: string;
|
|
562
|
-
/** The header of the modal, it is displayed at the top of the modal
|
|
590
|
+
/** The header of the modal, it is displayed at the top of the modal
|
|
591
|
+
* @example "Filters" */
|
|
563
592
|
header?: string;
|
|
564
593
|
/** The body of the modal, it is displayed in the middle of the modal */
|
|
565
594
|
body?: string;
|
|
@@ -567,6 +596,9 @@ declare type ModalClassNames = {
|
|
|
567
596
|
footer?: string;
|
|
568
597
|
/** The close button (X) of the modal in top-right corner */
|
|
569
598
|
closeButton?: string;
|
|
599
|
+
/** The primary button of the modal, it is displayed at the bottom of the modal
|
|
600
|
+
* @example "Toon resultaten" */
|
|
601
|
+
primaryButton?: string;
|
|
570
602
|
};
|
|
571
603
|
|
|
572
604
|
declare type ModalClassNames_2 = {
|
|
@@ -576,8 +608,7 @@ declare type ModalClassNames_2 = {
|
|
|
576
608
|
wrapper?: string;
|
|
577
609
|
/** The main slot of the modal content */
|
|
578
610
|
base?: string;
|
|
579
|
-
/** The header of the modal, it is displayed at the top of the modal
|
|
580
|
-
* @example "Filters" */
|
|
611
|
+
/** The header of the modal, it is displayed at the top of the modal */
|
|
581
612
|
header?: string;
|
|
582
613
|
/** The body of the modal, it is displayed in the middle of the modal */
|
|
583
614
|
body?: string;
|
|
@@ -585,9 +616,6 @@ declare type ModalClassNames_2 = {
|
|
|
585
616
|
footer?: string;
|
|
586
617
|
/** The close button (X) of the modal in top-right corner */
|
|
587
618
|
closeButton?: string;
|
|
588
|
-
/** The primary button of the modal, it is displayed at the bottom of the modal
|
|
589
|
-
* @example "Toon resultaten" */
|
|
590
|
-
primaryButton?: string;
|
|
591
619
|
};
|
|
592
620
|
|
|
593
621
|
declare type ModalClassNames_3 = {
|
|
@@ -741,10 +769,56 @@ declare type NumberPreservationModalClassNames = {
|
|
|
741
769
|
submitButton?: string;
|
|
742
770
|
};
|
|
743
771
|
|
|
744
|
-
declare type
|
|
772
|
+
declare type PageByPathQuery = {
|
|
773
|
+
__typename?: 'RootQueryType';
|
|
774
|
+
page?: {
|
|
775
|
+
__typename?: 'Page';
|
|
776
|
+
productCategory: string;
|
|
777
|
+
filter: string;
|
|
778
|
+
filterDefaults: string;
|
|
779
|
+
pageFilters: Array<{
|
|
780
|
+
__typename?: 'PageFilter';
|
|
781
|
+
id: string;
|
|
782
|
+
name: string;
|
|
783
|
+
shortName: string;
|
|
784
|
+
slug: string;
|
|
785
|
+
column: string;
|
|
786
|
+
type: string;
|
|
787
|
+
valueType: string;
|
|
788
|
+
dynamic: boolean;
|
|
789
|
+
min?: number | null;
|
|
790
|
+
max?: number | null;
|
|
791
|
+
rank: number;
|
|
792
|
+
operator: string;
|
|
793
|
+
url?: string | null;
|
|
794
|
+
formatType: string;
|
|
795
|
+
showCounts: boolean;
|
|
796
|
+
options: Array<{
|
|
797
|
+
__typename?: 'PageFilterOption';
|
|
798
|
+
name: string;
|
|
799
|
+
descriptiveName: string;
|
|
800
|
+
value: string;
|
|
801
|
+
}>;
|
|
802
|
+
aliases: Array<{
|
|
803
|
+
__typename?: 'PageFilterAlias';
|
|
804
|
+
name: string;
|
|
805
|
+
value: string;
|
|
806
|
+
}>;
|
|
807
|
+
}>;
|
|
808
|
+
} | null;
|
|
809
|
+
};
|
|
810
|
+
|
|
811
|
+
export declare type PartialTranslations = Partial<{
|
|
745
812
|
[key in keyof Translations]: Partial<Translations[key]>;
|
|
746
813
|
}>;
|
|
747
814
|
|
|
815
|
+
declare type PopoverContentClassNames = {
|
|
816
|
+
base?: string;
|
|
817
|
+
trigger?: string;
|
|
818
|
+
backdrop?: string;
|
|
819
|
+
content?: string;
|
|
820
|
+
};
|
|
821
|
+
|
|
748
822
|
declare type PostcodeCheckLoadingClassNames = {
|
|
749
823
|
/** Base wrapper */
|
|
750
824
|
base?: string;
|
|
@@ -760,9 +834,9 @@ declare type PostcodeCheckLoadingClassNames = {
|
|
|
760
834
|
addressText?: string;
|
|
761
835
|
};
|
|
762
836
|
|
|
763
|
-
|
|
837
|
+
declare type PostcodeCheckModalClassNames = {
|
|
764
838
|
/** Modal dialog class styling slots - see type `ModalClassNames` */
|
|
765
|
-
modal?:
|
|
839
|
+
modal?: ModalClassNames_2;
|
|
766
840
|
/** Header section containing icon and title */
|
|
767
841
|
header?: {
|
|
768
842
|
/** Container wrapping the header content */
|
|
@@ -1096,16 +1170,24 @@ export declare function ProductResults({ classNames, initialSelectedFilters, ini
|
|
|
1096
1170
|
export declare type ProductResultsClassNames = {
|
|
1097
1171
|
/** Wrapper container for the entire product results */
|
|
1098
1172
|
base?: string;
|
|
1173
|
+
/** Wrapper container for the header section above the results
|
|
1174
|
+
* - Wraps on mobile+tablet the `filterButton` and `sortSelect`
|
|
1175
|
+
* - Wraps on desktop the `activeFilterChips` and `sortSelect` */
|
|
1176
|
+
headerWrapper?: string;
|
|
1099
1177
|
/** Active filters component class styling slots - see type `ActiveFilterChipsClassNames` */
|
|
1100
1178
|
activeFilterChips?: ActiveFilterChipsClassNames;
|
|
1101
1179
|
/** SortSelect component class styling slots - see type `SortSelectClassNames` */
|
|
1102
1180
|
sortSelect?: SortSelectClassNames;
|
|
1181
|
+
/** Profile buttons component class styling slots - see type `SelectorClassNames` */
|
|
1182
|
+
profileButton?: SelectorClassNames;
|
|
1183
|
+
/** Phone selector button component class styling slots - see type `SelectorClassNames` */
|
|
1184
|
+
phoneSelectorButton?: SelectorClassNames;
|
|
1103
1185
|
/** Filters component class styling slots (both filters in sidebar and in modal) - see type `FiltersClassNames` */
|
|
1104
1186
|
filters?: FiltersClassNames;
|
|
1105
1187
|
/** Filter button (only on mobile & tablet screens) */
|
|
1106
1188
|
filterButton?: string;
|
|
1107
1189
|
/** Filter modal class styling slots - see type `ModalClassNames` */
|
|
1108
|
-
filterModal?:
|
|
1190
|
+
filterModal?: ModalClassNames;
|
|
1109
1191
|
/** Postcode check modal class styling slots - see type `PostcodeCheckModalClassNames` */
|
|
1110
1192
|
postcodeCheckModal?: PostcodeCheckModalClassNames;
|
|
1111
1193
|
/** CombiDeal modal class styling slots - see type `CombiDealModalClassNames` */
|
|
@@ -1210,37 +1292,37 @@ declare enum ProductVersionStatusEnum {
|
|
|
1210
1292
|
Unavailable = "UNAVAILABLE"
|
|
1211
1293
|
}
|
|
1212
1294
|
|
|
1213
|
-
declare type Profile = z.infer<typeof profileSchema>;
|
|
1295
|
+
export declare type Profile = z.infer<typeof profileSchema>;
|
|
1214
1296
|
|
|
1215
1297
|
/** Event fired when user profile changes */
|
|
1216
|
-
declare type ProfileChangedEvent = {
|
|
1298
|
+
export declare type ProfileChangedEvent = {
|
|
1217
1299
|
type: 'profile_changed';
|
|
1218
1300
|
from: Partial<Profile>;
|
|
1219
1301
|
to: Partial<Profile>;
|
|
1220
1302
|
};
|
|
1221
1303
|
|
|
1222
|
-
declare const profileSchema:
|
|
1223
|
-
keepCurrentMsisdn:
|
|
1224
|
-
currentMsisdn:
|
|
1225
|
-
currentSubscriptionType:
|
|
1304
|
+
declare const profileSchema: z.ZodObject<{
|
|
1305
|
+
keepCurrentMsisdn: z.ZodOptional<z.ZodBoolean>;
|
|
1306
|
+
currentMsisdn: z.ZodOptional<z.ZodString>;
|
|
1307
|
+
currentSubscriptionType: z.ZodOptional<z.ZodEnum<{
|
|
1226
1308
|
subscription: "subscription";
|
|
1227
1309
|
prepaid: "prepaid";
|
|
1228
1310
|
}>>;
|
|
1229
|
-
currentProviderSlug:
|
|
1230
|
-
currentFixedProviderScope:
|
|
1231
|
-
currentMobileProviders:
|
|
1232
|
-
scope:
|
|
1233
|
-
value:
|
|
1234
|
-
},
|
|
1235
|
-
customerSegment:
|
|
1236
|
-
address:
|
|
1237
|
-
postcode:
|
|
1238
|
-
number:
|
|
1239
|
-
numberAddon:
|
|
1240
|
-
street:
|
|
1241
|
-
city:
|
|
1242
|
-
},
|
|
1243
|
-
},
|
|
1311
|
+
currentProviderSlug: z.ZodOptional<z.ZodString>;
|
|
1312
|
+
currentFixedProviderScope: z.ZodOptional<z.ZodString>;
|
|
1313
|
+
currentMobileProviders: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
1314
|
+
scope: z.ZodString;
|
|
1315
|
+
value: z.ZodString;
|
|
1316
|
+
}, z.core.$strip>>>;
|
|
1317
|
+
customerSegment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1318
|
+
address: z.ZodOptional<z.ZodObject<{
|
|
1319
|
+
postcode: z.ZodString;
|
|
1320
|
+
number: z.ZodString;
|
|
1321
|
+
numberAddon: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
|
|
1322
|
+
street: z.ZodString;
|
|
1323
|
+
city: z.ZodString;
|
|
1324
|
+
}, z.core.$strip>>;
|
|
1325
|
+
}, z.core.$strip>;
|
|
1244
1326
|
|
|
1245
1327
|
/**
|
|
1246
1328
|
* ClassNames for styling the `PromotionList` component within `PropositionCard`
|
|
@@ -1374,16 +1456,16 @@ declare type PropositionHeaderClassNames = {
|
|
|
1374
1456
|
};
|
|
1375
1457
|
};
|
|
1376
1458
|
|
|
1377
|
-
declare type PropositionLabel = {
|
|
1459
|
+
export declare type PropositionLabel = {
|
|
1378
1460
|
type: PropositionLabelType;
|
|
1379
1461
|
displayName: string;
|
|
1380
1462
|
rank: number;
|
|
1381
1463
|
color: PropositionLabelColor;
|
|
1382
1464
|
};
|
|
1383
1465
|
|
|
1384
|
-
declare type PropositionLabelColor = 'primary' | 'secondary' | 'default' | 'success' | 'warning' | 'danger';
|
|
1466
|
+
export declare type PropositionLabelColor = 'primary' | 'secondary' | 'default' | 'success' | 'warning' | 'danger';
|
|
1385
1467
|
|
|
1386
|
-
declare type PropositionLabelType = 'isRetention' | 'isCheapestPhone' | 'isBudget' | 'isBudgetFiber' | 'isCombi' | 'isFastestInternet' | 'isBudgetOwnNetwork' | 'isBudgetNetwork';
|
|
1468
|
+
export declare type PropositionLabelType = 'isRetention' | 'isCheapestPhone' | 'isBudget' | 'isBudgetFiber' | 'isCombi' | 'isFastestInternet' | 'isBudgetOwnNetwork' | 'isBudgetNetwork';
|
|
1387
1469
|
|
|
1388
1470
|
declare type PropositionOverviewClassNames = {
|
|
1389
1471
|
/** The base container of the proposition overview */
|
|
@@ -1398,6 +1480,13 @@ declare type PropositionOverviewClassNames = {
|
|
|
1398
1480
|
creditInfo?: CreditInfoClassNames_2;
|
|
1399
1481
|
};
|
|
1400
1482
|
|
|
1483
|
+
export declare type ProviderOption = {
|
|
1484
|
+
slug: string;
|
|
1485
|
+
name: string;
|
|
1486
|
+
imageUrl: string | undefined;
|
|
1487
|
+
Icon?: ElementType;
|
|
1488
|
+
};
|
|
1489
|
+
|
|
1401
1490
|
/**
|
|
1402
1491
|
* ClassNames for styling different parts of the `RadioFilter` component
|
|
1403
1492
|
*/
|
|
@@ -1534,6 +1623,35 @@ declare type SelectFilterClassNames = {
|
|
|
1534
1623
|
collapseLink?: string;
|
|
1535
1624
|
};
|
|
1536
1625
|
|
|
1626
|
+
/**
|
|
1627
|
+
* ClassNames for styling different parts of the `Selector` component
|
|
1628
|
+
*/
|
|
1629
|
+
declare type SelectorClassNames = {
|
|
1630
|
+
/** Title text styling */
|
|
1631
|
+
title?: string;
|
|
1632
|
+
/** Description text styling */
|
|
1633
|
+
description?: string;
|
|
1634
|
+
/** Main button wrapper */
|
|
1635
|
+
button?: string;
|
|
1636
|
+
/** Icon component styling - chevron/edit icon */
|
|
1637
|
+
icon?: string;
|
|
1638
|
+
/** Badge component (visible when not selected) */
|
|
1639
|
+
badge?: string;
|
|
1640
|
+
/** Avatar component displaying the image or icon */
|
|
1641
|
+
avatar?: {
|
|
1642
|
+
/** Base wrapper styling for the avatar container */
|
|
1643
|
+
base?: string;
|
|
1644
|
+
/** Image element styling */
|
|
1645
|
+
img?: string;
|
|
1646
|
+
/** Name text styling (when displaying initials) */
|
|
1647
|
+
name?: string;
|
|
1648
|
+
/** Icon wrapper styling */
|
|
1649
|
+
icon?: string;
|
|
1650
|
+
/** Fallback content styling (when no image is available) */
|
|
1651
|
+
fallback?: string;
|
|
1652
|
+
};
|
|
1653
|
+
};
|
|
1654
|
+
|
|
1537
1655
|
/**
|
|
1538
1656
|
* ClassNames for styling different parts of the `RangeFilter`, `MinFilter` and `MaxFilter` component
|
|
1539
1657
|
*/
|
|
@@ -1568,7 +1686,7 @@ declare type SliderFilterClassNames = {
|
|
|
1568
1686
|
};
|
|
1569
1687
|
|
|
1570
1688
|
/** Event fired when sort option changes */
|
|
1571
|
-
declare type SortChangedEvent = {
|
|
1689
|
+
export declare type SortChangedEvent = {
|
|
1572
1690
|
type: 'sort_changed';
|
|
1573
1691
|
from: string | undefined;
|
|
1574
1692
|
to: string;
|
|
@@ -1649,7 +1767,7 @@ declare type TermsClassNames = {
|
|
|
1649
1767
|
base?: string;
|
|
1650
1768
|
} & SectionClassNames;
|
|
1651
1769
|
|
|
1652
|
-
declare type Translations = {
|
|
1770
|
+
export declare type Translations = {
|
|
1653
1771
|
common: {
|
|
1654
1772
|
yes: string;
|
|
1655
1773
|
no: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mobielnl/elements",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Mobiel.nl Elements - React component library for partner websites",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
"@types/react": "^19.1.10",
|
|
85
85
|
"@types/react-dom": "^19.1.7",
|
|
86
86
|
"@vitejs/plugin-react-swc": "^4.0.0",
|
|
87
|
+
"chromatic": "^13.3.5",
|
|
87
88
|
"cross-env": "^7.0.3",
|
|
88
89
|
"globals": "^16.3.0",
|
|
89
90
|
"graphql": "^16.11.0",
|
|
@@ -91,6 +92,8 @@
|
|
|
91
92
|
"i18next": "^25.7.3",
|
|
92
93
|
"js-cookie": "^3.0.5",
|
|
93
94
|
"lodash": "^4.17.21",
|
|
95
|
+
"msw": "^2.12.7",
|
|
96
|
+
"msw-storybook-addon": "^2.0.6",
|
|
94
97
|
"postcss-prefix-selector": "^2.1.1",
|
|
95
98
|
"react": "^19.2.1",
|
|
96
99
|
"react-dom": "^19.2.1",
|
|
@@ -106,6 +109,11 @@
|
|
|
106
109
|
"vitest": "^3.2.4",
|
|
107
110
|
"zod": "^4.1.12"
|
|
108
111
|
},
|
|
112
|
+
"msw": {
|
|
113
|
+
"workerDirectory": [
|
|
114
|
+
"public"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
109
117
|
"scripts": {
|
|
110
118
|
"predev": "pnpm install && pnpm generate:graph",
|
|
111
119
|
"dev": "storybook dev -p 6006",
|
|
@@ -121,6 +129,7 @@
|
|
|
121
129
|
"generate:graph": "DOTENV_CONFIG_PATH=\".env\" graphql-codegen --require dotenv/config --config codegen.yml",
|
|
122
130
|
"format": "biome format --write",
|
|
123
131
|
"lint": "biome lint --write",
|
|
124
|
-
"check": "biome check --write"
|
|
132
|
+
"check": "biome check --write",
|
|
133
|
+
"chromatic": "npx chromatic --build-script-name storybook:build"
|
|
125
134
|
}
|
|
126
135
|
}
|