@strata-ds/core 2.1.0 → 2.1.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.
Files changed (44) hide show
  1. package/README.md +541 -438
  2. package/dist/components/DynamicComponentDebug.d.ts +0 -1
  3. package/dist/components/DynamicComponents.d.ts +0 -1
  4. package/dist/components/StrataErrorBoundary.d.ts +37 -0
  5. package/dist/components/card-ui/Card.d.ts +0 -1
  6. package/dist/components/card-ui/DefaultCard.d.ts +0 -1
  7. package/dist/components/index.d.ts +1 -1
  8. package/dist/data/index.d.ts +0 -1
  9. package/dist/data/mock.types.d.ts +2 -1
  10. package/dist/hook/useCardData.d.ts +0 -1
  11. package/dist/hook/useComponent.d.ts +0 -1
  12. package/dist/hook/useComponents.d.ts +0 -1
  13. package/dist/hook/useDynamicComponents.d.ts +0 -1
  14. package/dist/index.d.ts +414 -1
  15. package/dist/index.esm.js +298 -70
  16. package/dist/index.js +301 -68
  17. package/dist/providers/StrataProvider.d.ts +5 -1
  18. package/dist/providers/index.d.ts +0 -1
  19. package/dist/registry/ComponentFactory.d.ts +0 -1
  20. package/dist/registry/ComponentRegistry.d.ts +0 -1
  21. package/dist/types/card-types.d.ts +0 -1
  22. package/dist/utils/normalize-component.d.ts +14 -0
  23. package/package.json +74 -74
  24. package/dist/components/DynamicComponentDebug.d.ts.map +0 -1
  25. package/dist/components/DynamicComponents.d.ts.map +0 -1
  26. package/dist/components/card-ui/Card.d.ts.map +0 -1
  27. package/dist/components/card-ui/DefaultCard.d.ts.map +0 -1
  28. package/dist/components/index.d.ts.map +0 -1
  29. package/dist/data/index.d.ts.map +0 -1
  30. package/dist/data/mock.types.d.ts.map +0 -1
  31. package/dist/hook/useCardData.d.ts.map +0 -1
  32. package/dist/hook/useComponent.d.ts.map +0 -1
  33. package/dist/hook/useComponents.d.ts.map +0 -1
  34. package/dist/hook/useDesignSystemSync.d.ts +0 -1
  35. package/dist/hook/useDesignSystemSync.d.ts.map +0 -1
  36. package/dist/hook/useDynamicComponents.d.ts.map +0 -1
  37. package/dist/index.d.ts.map +0 -1
  38. package/dist/index.esm.js.map +0 -1
  39. package/dist/index.js.map +0 -1
  40. package/dist/providers/StrataProvider.d.ts.map +0 -1
  41. package/dist/providers/index.d.ts.map +0 -1
  42. package/dist/registry/ComponentFactory.d.ts.map +0 -1
  43. package/dist/registry/ComponentRegistry.d.ts.map +0 -1
  44. package/dist/types/card-types.d.ts.map +0 -1
@@ -1,3 +1,2 @@
1
1
  import React from 'react';
2
2
  export declare const StrataDebug: React.FC;
3
- //# sourceMappingURL=DynamicComponentDebug.d.ts.map
@@ -9,4 +9,3 @@ export declare const AutoForm: React.FC<{
9
9
  children?: React.ReactNode;
10
10
  [key: string]: any;
11
11
  }>;
12
- //# sourceMappingURL=DynamicComponents.d.ts.map
@@ -0,0 +1,37 @@
1
+ import React from "react";
2
+ interface StrataErrorBoundaryProps {
3
+ children: React.ReactNode;
4
+ /**
5
+ * Optional fallback UI to render when an error is caught.
6
+ * If not provided, a minimal error message is shown.
7
+ */
8
+ fallback?: React.ReactNode | ((error: Error) => React.ReactNode);
9
+ /**
10
+ * Optional callback invoked when an error is caught, useful for
11
+ * logging to an external error-reporting service.
12
+ */
13
+ onError?: (error: Error, info: React.ErrorInfo) => void;
14
+ }
15
+ interface StrataErrorBoundaryState {
16
+ hasError: boolean;
17
+ error: Error | null;
18
+ }
19
+ /**
20
+ * `StrataErrorBoundary` wraps sections of your app that render synced
21
+ * Strata components. When a component throws during render, this boundary
22
+ * catches the error so the rest of the page stays functional.
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * <StrataErrorBoundary fallback={<p>Component failed to load.</p>}>
27
+ * <MyStrataComponent />
28
+ * </StrataErrorBoundary>
29
+ * ```
30
+ */
31
+ export declare class StrataErrorBoundary extends React.Component<StrataErrorBoundaryProps, StrataErrorBoundaryState> {
32
+ constructor(props: StrataErrorBoundaryProps);
33
+ static getDerivedStateFromError(error: Error): StrataErrorBoundaryState;
34
+ componentDidCatch(error: Error, info: React.ErrorInfo): void;
35
+ render(): React.ReactNode;
36
+ }
37
+ export {};
@@ -37,4 +37,3 @@ declare const Card: {
37
37
  TotalAmount: ({ children, fontSize, fontWeight, color, ...props }: any) => import("react/jsx-runtime").JSX.Element | null;
38
38
  };
39
39
  export default Card;
40
- //# sourceMappingURL=Card.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import React from 'react';
2
2
  export declare const DefaultCard: React.FC;
3
- //# sourceMappingURL=DefaultCard.d.ts.map
@@ -1,4 +1,4 @@
1
1
  export { DefaultCard } from './card-ui/DefaultCard';
2
2
  export { default as Card } from './card-ui/Card';
3
3
  export { StrataDebug } from './DynamicComponentDebug';
4
- //# sourceMappingURL=index.d.ts.map
4
+ export { StrataErrorBoundary } from './StrataErrorBoundary';
@@ -1,2 +1 @@
1
1
  export * from "./mock.types";
2
- //# sourceMappingURL=index.d.ts.map
@@ -41,6 +41,8 @@ export interface ComponentNode {
41
41
  variant?: string;
42
42
  variants?: Record<string, ComponentVariant>;
43
43
  states?: Record<string, Record<string, ComponentProperty>>;
44
+ /** Backend nodes[] format — normalised at runtime by normalizeComponentNode() */
45
+ nodes?: any[];
44
46
  }
45
47
  export interface DesignSystemData {
46
48
  metadata?: {
@@ -67,4 +69,3 @@ export interface CustomDesignSystemData {
67
69
  variables: Record<string, DesignToken>;
68
70
  components: Record<string, ComponentNode>;
69
71
  }
70
- //# sourceMappingURL=mock.types.d.ts.map
@@ -368,4 +368,3 @@ export declare const useAvailableComponents: () => {
368
368
  allComponents: string[];
369
369
  };
370
370
  export {};
371
- //# sourceMappingURL=useCardData.d.ts.map
@@ -1,4 +1,3 @@
1
1
  export declare const useComponent: (componentName: string) => (import("react").ComponentType<import("../registry/ComponentFactory").DynamicComponentProps> & {
2
2
  [subComponentName: string]: import("react").ComponentType<import("../registry/ComponentFactory").DynamicComponentProps>;
3
3
  }) | null;
4
- //# sourceMappingURL=useComponent.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare const useComponents: () => import("../registry/ComponentRegistry").ComponentRegistry;
2
- //# sourceMappingURL=useComponents.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import { ComponentRegistry } from '../registry/ComponentRegistry';
2
2
  export declare const useDynamicComponents: () => ComponentRegistry;
3
- //# sourceMappingURL=useDynamicComponents.d.ts.map
package/dist/index.d.ts CHANGED
@@ -45,6 +45,8 @@ interface ComponentNode {
45
45
  variant?: string;
46
46
  variants?: Record<string, ComponentVariant>;
47
47
  states?: Record<string, Record<string, ComponentProperty>>;
48
+ /** Backend nodes[] format — normalised at runtime by normalizeComponentNode() */
49
+ nodes?: any[];
48
50
  }
49
51
  interface DesignSystemData {
50
52
  metadata?: {
@@ -126,6 +128,11 @@ interface StrataProviderProps {
126
128
  source: string;
127
129
  }) => void;
128
130
  onSyncSuccess?: (data: DesignSystemData) => void;
131
+ /**
132
+ * Callback invoked immediately before each sync request is sent.
133
+ * Use this to show a loading indicator or log sync lifecycle events.
134
+ */
135
+ onSyncStart?: () => void;
129
136
  }
130
137
  declare const StrataProvider: React__default.FC<StrataProviderProps>;
131
138
 
@@ -171,6 +178,42 @@ declare const Card: {
171
178
 
172
179
  declare const StrataDebug: React__default.FC;
173
180
 
181
+ interface StrataErrorBoundaryProps {
182
+ children: React__default.ReactNode;
183
+ /**
184
+ * Optional fallback UI to render when an error is caught.
185
+ * If not provided, a minimal error message is shown.
186
+ */
187
+ fallback?: React__default.ReactNode | ((error: Error) => React__default.ReactNode);
188
+ /**
189
+ * Optional callback invoked when an error is caught, useful for
190
+ * logging to an external error-reporting service.
191
+ */
192
+ onError?: (error: Error, info: React__default.ErrorInfo) => void;
193
+ }
194
+ interface StrataErrorBoundaryState {
195
+ hasError: boolean;
196
+ error: Error | null;
197
+ }
198
+ /**
199
+ * `StrataErrorBoundary` wraps sections of your app that render synced
200
+ * Strata components. When a component throws during render, this boundary
201
+ * catches the error so the rest of the page stays functional.
202
+ *
203
+ * @example
204
+ * ```tsx
205
+ * <StrataErrorBoundary fallback={<p>Component failed to load.</p>}>
206
+ * <MyStrataComponent />
207
+ * </StrataErrorBoundary>
208
+ * ```
209
+ */
210
+ declare class StrataErrorBoundary extends React__default.Component<StrataErrorBoundaryProps, StrataErrorBoundaryState> {
211
+ constructor(props: StrataErrorBoundaryProps);
212
+ static getDerivedStateFromError(error: Error): StrataErrorBoundaryState;
213
+ componentDidCatch(error: Error, info: React__default.ErrorInfo): void;
214
+ render(): React__default.ReactNode;
215
+ }
216
+
174
217
  interface CardProps {
175
218
  children?: React__default.ReactNode;
176
219
  width?: string;
@@ -436,5 +479,375 @@ declare const AutoForm: React__default.FC<{
436
479
  [key: string]: any;
437
480
  }>;
438
481
 
439
- export { AutoForm, Card, DefaultCard, DynamicComponent, StrataComponentFactory, StrataDebug, StrataProvider, strataRegistry, useComponent, useComponents, useDynamicComponents, useStrata };
482
+ interface UseComponentDataOptions {
483
+ componentName?: string;
484
+ fallbackToDefault?: boolean;
485
+ }
486
+ declare const useComponentData: (options?: UseComponentDataOptions) => {
487
+ data: {
488
+ card: {
489
+ width: string;
490
+ maxWidth: string;
491
+ backgroundColor: string;
492
+ fontFamily: string;
493
+ };
494
+ container: {
495
+ width: string;
496
+ maxWidth: string;
497
+ backgroundColor: string;
498
+ borderRadius: string;
499
+ boxShadow: string;
500
+ overflow: string;
501
+ };
502
+ header: {
503
+ padding: string;
504
+ borderBottom: string;
505
+ borderColor: string;
506
+ };
507
+ headerContent: {
508
+ display: string;
509
+ justifyContent: string;
510
+ alignItems: string;
511
+ };
512
+ headerTitle: {
513
+ text: string;
514
+ fontSize: string;
515
+ fontWeight: string;
516
+ color: string;
517
+ };
518
+ headerTimer: {
519
+ text: string;
520
+ fontSize: string;
521
+ fontFamily: string;
522
+ color: string;
523
+ };
524
+ body: {
525
+ padding: string;
526
+ };
527
+ bodyDriver: {
528
+ backgroundColor: string;
529
+ borderRadius: string;
530
+ padding: string;
531
+ display: string;
532
+ alignItems: string;
533
+ gap: string;
534
+ };
535
+ bodyImage: {
536
+ src: string;
537
+ alt: string;
538
+ width: string;
539
+ height: string;
540
+ borderRadius: string;
541
+ objectFit: string;
542
+ };
543
+ bodyInfo: {
544
+ flexGrow: string;
545
+ };
546
+ bodyName: {
547
+ text: string;
548
+ fontWeight: string;
549
+ color: string;
550
+ };
551
+ bodySpan: {
552
+ text: string;
553
+ fontSize: string;
554
+ color: string;
555
+ };
556
+ bodyActions: {
557
+ gap: string;
558
+ };
559
+ route: {
560
+ paddingX: string;
561
+ paddingBottom: string;
562
+ };
563
+ routeContainer: {
564
+ gap: string;
565
+ };
566
+ payment: {
567
+ paddingX: string;
568
+ paddingBottom: string;
569
+ };
570
+ paymentContainer: {
571
+ backgroundColor: string;
572
+ borderRadius: string;
573
+ padding: string;
574
+ };
575
+ cardNumber: {
576
+ text: string;
577
+ color: string;
578
+ fontWeight: string;
579
+ fontSize: string;
580
+ };
581
+ cardType: {
582
+ text: string;
583
+ fontSize: string;
584
+ color: string;
585
+ };
586
+ totalSection: {
587
+ paddingX: string;
588
+ paddingY: string;
589
+ };
590
+ totalLabel: {
591
+ text: string;
592
+ color: string;
593
+ fontWeight: string;
594
+ };
595
+ totalAmount: {
596
+ text: string;
597
+ fontSize: string;
598
+ fontWeight: string;
599
+ color: string;
600
+ };
601
+ } | null;
602
+ hasData: boolean;
603
+ componentName: string;
604
+ syncVersion: number;
605
+ };
606
+ declare const useCardData: () => {
607
+ data: {
608
+ card: {
609
+ width: string;
610
+ maxWidth: string;
611
+ backgroundColor: string;
612
+ fontFamily: string;
613
+ };
614
+ container: {
615
+ width: string;
616
+ maxWidth: string;
617
+ backgroundColor: string;
618
+ borderRadius: string;
619
+ boxShadow: string;
620
+ overflow: string;
621
+ };
622
+ header: {
623
+ padding: string;
624
+ borderBottom: string;
625
+ borderColor: string;
626
+ };
627
+ headerContent: {
628
+ display: string;
629
+ justifyContent: string;
630
+ alignItems: string;
631
+ };
632
+ headerTitle: {
633
+ text: string;
634
+ fontSize: string;
635
+ fontWeight: string;
636
+ color: string;
637
+ };
638
+ headerTimer: {
639
+ text: string;
640
+ fontSize: string;
641
+ fontFamily: string;
642
+ color: string;
643
+ };
644
+ body: {
645
+ padding: string;
646
+ };
647
+ bodyDriver: {
648
+ backgroundColor: string;
649
+ borderRadius: string;
650
+ padding: string;
651
+ display: string;
652
+ alignItems: string;
653
+ gap: string;
654
+ };
655
+ bodyImage: {
656
+ src: string;
657
+ alt: string;
658
+ width: string;
659
+ height: string;
660
+ borderRadius: string;
661
+ objectFit: string;
662
+ };
663
+ bodyInfo: {
664
+ flexGrow: string;
665
+ };
666
+ bodyName: {
667
+ text: string;
668
+ fontWeight: string;
669
+ color: string;
670
+ };
671
+ bodySpan: {
672
+ text: string;
673
+ fontSize: string;
674
+ color: string;
675
+ };
676
+ bodyActions: {
677
+ gap: string;
678
+ };
679
+ route: {
680
+ paddingX: string;
681
+ paddingBottom: string;
682
+ };
683
+ routeContainer: {
684
+ gap: string;
685
+ };
686
+ payment: {
687
+ paddingX: string;
688
+ paddingBottom: string;
689
+ };
690
+ paymentContainer: {
691
+ backgroundColor: string;
692
+ borderRadius: string;
693
+ padding: string;
694
+ };
695
+ cardNumber: {
696
+ text: string;
697
+ color: string;
698
+ fontWeight: string;
699
+ fontSize: string;
700
+ };
701
+ cardType: {
702
+ text: string;
703
+ fontSize: string;
704
+ color: string;
705
+ };
706
+ totalSection: {
707
+ paddingX: string;
708
+ paddingY: string;
709
+ };
710
+ totalLabel: {
711
+ text: string;
712
+ color: string;
713
+ fontWeight: string;
714
+ };
715
+ totalAmount: {
716
+ text: string;
717
+ fontSize: string;
718
+ fontWeight: string;
719
+ color: string;
720
+ };
721
+ } | null;
722
+ hasData: boolean;
723
+ componentName: string;
724
+ syncVersion: number;
725
+ };
726
+ declare const useCustomComponent: (componentName: string) => {
727
+ data: {
728
+ card: {
729
+ width: string;
730
+ maxWidth: string;
731
+ backgroundColor: string;
732
+ fontFamily: string;
733
+ };
734
+ container: {
735
+ width: string;
736
+ maxWidth: string;
737
+ backgroundColor: string;
738
+ borderRadius: string;
739
+ boxShadow: string;
740
+ overflow: string;
741
+ };
742
+ header: {
743
+ padding: string;
744
+ borderBottom: string;
745
+ borderColor: string;
746
+ };
747
+ headerContent: {
748
+ display: string;
749
+ justifyContent: string;
750
+ alignItems: string;
751
+ };
752
+ headerTitle: {
753
+ text: string;
754
+ fontSize: string;
755
+ fontWeight: string;
756
+ color: string;
757
+ };
758
+ headerTimer: {
759
+ text: string;
760
+ fontSize: string;
761
+ fontFamily: string;
762
+ color: string;
763
+ };
764
+ body: {
765
+ padding: string;
766
+ };
767
+ bodyDriver: {
768
+ backgroundColor: string;
769
+ borderRadius: string;
770
+ padding: string;
771
+ display: string;
772
+ alignItems: string;
773
+ gap: string;
774
+ };
775
+ bodyImage: {
776
+ src: string;
777
+ alt: string;
778
+ width: string;
779
+ height: string;
780
+ borderRadius: string;
781
+ objectFit: string;
782
+ };
783
+ bodyInfo: {
784
+ flexGrow: string;
785
+ };
786
+ bodyName: {
787
+ text: string;
788
+ fontWeight: string;
789
+ color: string;
790
+ };
791
+ bodySpan: {
792
+ text: string;
793
+ fontSize: string;
794
+ color: string;
795
+ };
796
+ bodyActions: {
797
+ gap: string;
798
+ };
799
+ route: {
800
+ paddingX: string;
801
+ paddingBottom: string;
802
+ };
803
+ routeContainer: {
804
+ gap: string;
805
+ };
806
+ payment: {
807
+ paddingX: string;
808
+ paddingBottom: string;
809
+ };
810
+ paymentContainer: {
811
+ backgroundColor: string;
812
+ borderRadius: string;
813
+ padding: string;
814
+ };
815
+ cardNumber: {
816
+ text: string;
817
+ color: string;
818
+ fontWeight: string;
819
+ fontSize: string;
820
+ };
821
+ cardType: {
822
+ text: string;
823
+ fontSize: string;
824
+ color: string;
825
+ };
826
+ totalSection: {
827
+ paddingX: string;
828
+ paddingY: string;
829
+ };
830
+ totalLabel: {
831
+ text: string;
832
+ color: string;
833
+ fontWeight: string;
834
+ };
835
+ totalAmount: {
836
+ text: string;
837
+ fontSize: string;
838
+ fontWeight: string;
839
+ color: string;
840
+ };
841
+ } | null;
842
+ hasData: boolean;
843
+ componentName: string;
844
+ syncVersion: number;
845
+ };
846
+ declare const useAvailableComponents: () => {
847
+ baseComponents: string[];
848
+ customComponents: string[];
849
+ allComponents: string[];
850
+ };
851
+
852
+ export { AutoForm, Card, DefaultCard, DynamicComponent, StrataComponentFactory, StrataDebug, StrataErrorBoundary, StrataProvider, strataRegistry, useAvailableComponents, useCardData, useComponent, useComponentData, useComponents, useCustomComponent, useDynamicComponents, useStrata };
440
853
  export type { CardComponent, CardProps, ComponentNode, ComponentProperty, ComponentVariant, CustomDesignSystemData, DesignSystemData, DesignToken, FilterType, LinkedElement, SelectedItem, SelectedType, TokenType };