@xsolla/xui-core 0.161.3 → 0.162.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.
package/index.d.mts CHANGED
@@ -2493,172 +2493,575 @@ declare const colors: {
2493
2493
  };
2494
2494
  };
2495
2495
  };
2496
- };
2497
- type ThemeColors = typeof pentagramDark;
2498
-
2499
- declare const spacing: {
2500
- xs: number;
2501
- s: number;
2502
- m: number;
2503
- l: number;
2504
- xl: number;
2505
- };
2506
- declare const radius: {
2507
- button: number;
2508
- card: number;
2509
- contextMenu: number;
2510
- input: number;
2511
- tagSmall: number;
2512
- tagMedium: number;
2513
- tagLarge: number;
2514
- avatarSmall: number;
2515
- avatarLarge: number;
2516
- avatarCircle: number;
2517
- };
2518
- /** Primitive radius scale. Mirrors Figma "Scale / radius/*" variables. */
2519
- declare const radiusScale: {
2520
- readonly "25": 2;
2521
- readonly "50": 4;
2522
- readonly "75": 6;
2523
- readonly "100": 8;
2524
- readonly "150": 12;
2525
- readonly "200": 16;
2526
- readonly "250": 20;
2527
- readonly "300": 24;
2528
- readonly "350": 28;
2529
- readonly "400": 32;
2530
- readonly "999": 999;
2531
- };
2532
- /** Primitive border-width scale. Mirrors Figma "Scale / stroke/*" variables. */
2533
- declare const stroke: {
2534
- readonly "1": 1;
2535
- readonly "2": 2;
2536
- readonly "3": 3;
2537
- };
2538
-
2539
- /**
2540
- * Semantic shape tokens. Mirrors Figma "Theme / Shape" variable collection,
2541
- * Xsolla Default mode. Values alias into the radiusScale and stroke primitives.
2542
- */
2543
- declare const shape: {
2544
- readonly button: {
2545
- readonly xl: {
2546
- readonly borderRadius: 8;
2547
- readonly borderWidth: 1;
2548
- };
2549
- readonly lg: {
2550
- readonly borderRadius: 8;
2551
- readonly borderWidth: 1;
2552
- };
2553
- readonly md: {
2554
- readonly borderRadius: 6;
2555
- readonly borderWidth: 1;
2556
- };
2557
- readonly sm: {
2558
- readonly borderRadius: 4;
2559
- readonly borderWidth: 1;
2560
- };
2561
- readonly xs: {
2562
- readonly borderRadius: 4;
2563
- readonly borderWidth: 1;
2564
- };
2565
- };
2566
- readonly checkbox: {
2567
- readonly xl: {
2568
- readonly borderRadius: 4;
2569
- readonly borderWidth: 1;
2570
- };
2571
- readonly lg: {
2572
- readonly borderRadius: 4;
2573
- readonly borderWidth: 1;
2574
- };
2575
- readonly md: {
2576
- readonly borderRadius: 4;
2577
- readonly borderWidth: 1;
2578
- };
2579
- readonly sm: {
2580
- readonly borderRadius: 4;
2581
- readonly borderWidth: 1;
2582
- };
2583
- };
2584
- readonly input: {
2585
- readonly xl: {
2586
- readonly borderRadius: 8;
2587
- readonly borderWidth: 1;
2588
- };
2589
- readonly lg: {
2590
- readonly borderRadius: 8;
2591
- readonly borderWidth: 1;
2592
- };
2593
- readonly md: {
2594
- readonly borderRadius: 8;
2595
- readonly borderWidth: 1;
2596
- };
2597
- readonly sm: {
2598
- readonly borderRadius: 4;
2599
- readonly borderWidth: 1;
2600
- };
2601
- readonly xs: {
2602
- readonly borderRadius: 4;
2603
- readonly borderWidth: 1;
2604
- };
2605
- };
2606
- readonly segmented: {
2607
- readonly xl: {
2608
- readonly borderRadius: 8;
2609
- readonly borderWidth: 1;
2610
- };
2611
- readonly lg: {
2612
- readonly borderRadius: 8;
2613
- readonly borderWidth: 1;
2614
- };
2615
- readonly md: {
2616
- readonly borderRadius: 8;
2617
- readonly borderWidth: 1;
2618
- };
2619
- readonly sm: {
2620
- readonly borderRadius: 4;
2621
- readonly borderWidth: 1;
2622
- };
2623
- };
2624
- readonly segmentedItem: {
2625
- readonly xl: {
2626
- readonly borderRadius: 4;
2627
- readonly borderWidth: 1;
2628
- };
2629
- readonly lg: {
2630
- readonly borderRadius: 4;
2631
- readonly borderWidth: 1;
2632
- };
2633
- readonly md: {
2634
- readonly borderRadius: 4;
2635
- readonly borderWidth: 1;
2636
- };
2637
- readonly sm: {
2638
- readonly borderRadius: 2;
2639
- readonly borderWidth: 1;
2496
+ blueprints: {
2497
+ background: {
2498
+ primary: string;
2499
+ secondary: string;
2500
+ brand: {
2501
+ primary: string;
2502
+ secondary: string;
2503
+ };
2504
+ brandExtra: {
2505
+ primary: string;
2506
+ secondary: string;
2507
+ };
2508
+ inverse: string;
2509
+ static: {
2510
+ dark: string;
2511
+ light: string;
2512
+ };
2513
+ success: {
2514
+ primary: string;
2515
+ secondary: string;
2516
+ };
2517
+ warning: {
2518
+ primary: string;
2519
+ secondary: string;
2520
+ };
2521
+ alert: {
2522
+ primary: string;
2523
+ secondary: string;
2524
+ };
2525
+ neutral: {
2526
+ primary: string;
2527
+ secondary: string;
2528
+ };
2640
2529
  };
2641
- };
2642
- readonly switch: {
2643
- readonly xl: {
2644
- readonly borderRadius: 4;
2645
- readonly borderWidth: 1;
2530
+ content: {
2531
+ primary: string;
2532
+ secondary: string;
2533
+ tertiary: string;
2534
+ brand: {
2535
+ primary: string;
2536
+ secondary: string;
2537
+ };
2538
+ brandExtra: {
2539
+ primary: string;
2540
+ secondary: string;
2541
+ };
2542
+ inverse: string;
2543
+ static: {
2544
+ light: string;
2545
+ dark: string;
2546
+ };
2547
+ success: {
2548
+ primary: string;
2549
+ secondary: string;
2550
+ };
2551
+ warning: {
2552
+ primary: string;
2553
+ secondary: string;
2554
+ };
2555
+ alert: {
2556
+ primary: string;
2557
+ secondary: string;
2558
+ };
2559
+ neutral: {
2560
+ primary: string;
2561
+ secondary: string;
2562
+ };
2563
+ on: {
2564
+ brand: string;
2565
+ brandExtra: string;
2566
+ success: string;
2567
+ warning: string;
2568
+ alert: string;
2569
+ neutral: string;
2570
+ };
2646
2571
  };
2647
- readonly lg: {
2648
- readonly borderRadius: 4;
2649
- readonly borderWidth: 1;
2572
+ border: {
2573
+ primary: string;
2574
+ secondary: string;
2575
+ brand: string;
2576
+ brandExtra: string;
2577
+ inverse: string;
2578
+ success: string;
2579
+ warning: string;
2580
+ alert: string;
2581
+ neutral: string;
2650
2582
  };
2651
- readonly md: {
2652
- readonly borderRadius: 4;
2653
- readonly borderWidth: 1;
2583
+ overlay: {
2584
+ mono: string;
2585
+ brand: string;
2586
+ brandExtra: string;
2587
+ success: string;
2588
+ warning: string;
2589
+ alert: string;
2590
+ neutral: string;
2591
+ monoHover: string;
2654
2592
  };
2655
- readonly sm: {
2656
- readonly borderRadius: 4;
2657
- readonly borderWidth: 1;
2593
+ layer: {
2594
+ scrim: string;
2595
+ float: string;
2658
2596
  };
2659
- };
2660
- readonly knob: {
2661
- readonly xl: {
2597
+ control: {
2598
+ brand: {
2599
+ primary: {
2600
+ bg: string;
2601
+ bgHover: string;
2602
+ bgPress: string;
2603
+ bgDisable: string;
2604
+ border: string;
2605
+ borderHover: string;
2606
+ borderPress: string;
2607
+ borderDisable: string;
2608
+ };
2609
+ secondary: {
2610
+ bg: string;
2611
+ bgHover: string;
2612
+ bgPress: string;
2613
+ border: string;
2614
+ borderHover: string;
2615
+ borderPress: string;
2616
+ };
2617
+ tertiary: {
2618
+ bg: string;
2619
+ bgHover: string;
2620
+ bgPress: string;
2621
+ border: string;
2622
+ borderHover: string;
2623
+ borderPress: string;
2624
+ };
2625
+ text: {
2626
+ primary: string;
2627
+ secondary: string;
2628
+ tertiary: string;
2629
+ disable: string;
2630
+ ghost: string;
2631
+ };
2632
+ ghost: {
2633
+ bg: string;
2634
+ bgHover: string;
2635
+ bgPress: string;
2636
+ border: string;
2637
+ borderHover: string;
2638
+ borderPress: string;
2639
+ };
2640
+ };
2641
+ mono: {
2642
+ primary: {
2643
+ bg: string;
2644
+ bgHover: string;
2645
+ bgPress: string;
2646
+ border: string;
2647
+ borderHover: string;
2648
+ borderPress: string;
2649
+ };
2650
+ secondary: {
2651
+ bg: string;
2652
+ bgHover: string;
2653
+ bgPress: string;
2654
+ border: string;
2655
+ borderHover: string;
2656
+ borderPress: string;
2657
+ };
2658
+ tertiary: {
2659
+ bg: string;
2660
+ bgHover: string;
2661
+ bgPress: string;
2662
+ border: string;
2663
+ borderHover: string;
2664
+ borderPress: string;
2665
+ };
2666
+ text: {
2667
+ primary: string;
2668
+ secondary: string;
2669
+ tertiary: string;
2670
+ ghost: string;
2671
+ };
2672
+ ghost: {
2673
+ bg: string;
2674
+ bgHover: string;
2675
+ bgPress: string;
2676
+ border: string;
2677
+ borderHover: string;
2678
+ borderPress: string;
2679
+ };
2680
+ };
2681
+ brandExtra: {
2682
+ primary: {
2683
+ bg: string;
2684
+ bgHover: string;
2685
+ bgPress: string;
2686
+ border: string;
2687
+ borderHover: string;
2688
+ borderPress: string;
2689
+ };
2690
+ secondary: {
2691
+ bg: string;
2692
+ bgHover: string;
2693
+ bgPress: string;
2694
+ border: string;
2695
+ borderHover: string;
2696
+ borderPress: string;
2697
+ };
2698
+ tertiary: {
2699
+ bg: string;
2700
+ bgHover: string;
2701
+ bgPress: string;
2702
+ border: string;
2703
+ borderHover: string;
2704
+ borderPress: string;
2705
+ };
2706
+ text: {
2707
+ primary: string;
2708
+ secondary: string;
2709
+ tertiary: string;
2710
+ ghost: string;
2711
+ };
2712
+ ghost: {
2713
+ bg: string;
2714
+ bgHover: string;
2715
+ bgPress: string;
2716
+ border: string;
2717
+ borderHover: string;
2718
+ borderPress: string;
2719
+ };
2720
+ };
2721
+ alert: {
2722
+ bg: string;
2723
+ border: string;
2724
+ primary: {
2725
+ bg: string;
2726
+ bgHover: string;
2727
+ bgPress: string;
2728
+ border: string;
2729
+ borderHover: string;
2730
+ borderPress: string;
2731
+ };
2732
+ secondary: {
2733
+ bg: string;
2734
+ bgHover: string;
2735
+ bgPress: string;
2736
+ border: string;
2737
+ borderHover: string;
2738
+ borderPress: string;
2739
+ };
2740
+ tertiary: {
2741
+ bg: string;
2742
+ bgHover: string;
2743
+ bgPress: string;
2744
+ border: string;
2745
+ borderHover: string;
2746
+ borderPress: string;
2747
+ };
2748
+ text: {
2749
+ primary: string;
2750
+ secondary: string;
2751
+ tertiary: string;
2752
+ ghost: string;
2753
+ };
2754
+ ghost: {
2755
+ bg: string;
2756
+ bgHover: string;
2757
+ bgPress: string;
2758
+ border: string;
2759
+ borderHover: string;
2760
+ borderPress: string;
2761
+ };
2762
+ };
2763
+ input: {
2764
+ bg: string;
2765
+ bgHover: string;
2766
+ bgDisable: string;
2767
+ border: string;
2768
+ borderHover: string;
2769
+ borderDisable: string;
2770
+ text: string;
2771
+ placeholder: string;
2772
+ textDisable: string;
2773
+ };
2774
+ focus: {
2775
+ bg: string;
2776
+ border: string;
2777
+ };
2778
+ check: {
2779
+ bg: string;
2780
+ bgHover: string;
2781
+ bgDisable: string;
2782
+ border: string;
2783
+ borderHover: string;
2784
+ borderDisable: string;
2785
+ icon: string;
2786
+ };
2787
+ faint: {
2788
+ bg: string;
2789
+ bgHover: string;
2790
+ border: string;
2791
+ borderHover: string;
2792
+ };
2793
+ slider: {
2794
+ bg: string;
2795
+ bgHover: string;
2796
+ bgDisable: string;
2797
+ };
2798
+ switch: {
2799
+ bg: string;
2800
+ bgHover: string;
2801
+ bgDisable: string;
2802
+ border: string;
2803
+ borderHover: string;
2804
+ borderDisable: string;
2805
+ };
2806
+ knob: {
2807
+ bg: string;
2808
+ bgHover: string;
2809
+ bgActive: string;
2810
+ bgActiveHover: string;
2811
+ bgInactive: string;
2812
+ bgInactiveHover: string;
2813
+ bgDisable: string;
2814
+ };
2815
+ text: {
2816
+ primary: string;
2817
+ disable: string;
2818
+ };
2819
+ link: {
2820
+ primary: string;
2821
+ primaryHover: string;
2822
+ secondary: string;
2823
+ secondaryHover: string;
2824
+ };
2825
+ segmented: {
2826
+ bg: string;
2827
+ bgHover: string;
2828
+ bgActive: string;
2829
+ border: string;
2830
+ borderHover: string;
2831
+ borderActive: string;
2832
+ text: string;
2833
+ textDisable: string;
2834
+ };
2835
+ tagLabel: {
2836
+ product: {
2837
+ bg: string;
2838
+ text: string;
2839
+ textCompact: string;
2840
+ };
2841
+ rarity: {
2842
+ bg: string;
2843
+ text: string;
2844
+ };
2845
+ name: {
2846
+ bg: string;
2847
+ text: string;
2848
+ };
2849
+ account: {
2850
+ bg: string;
2851
+ text: string;
2852
+ textCompact: string;
2853
+ };
2854
+ id: {
2855
+ bg: string;
2856
+ bgSeries: string;
2857
+ textSeries: string;
2858
+ textNumber: string;
2859
+ textCompact: string;
2860
+ };
2861
+ subentity: {
2862
+ bg: string;
2863
+ text: string;
2864
+ };
2865
+ item: {
2866
+ bg: string;
2867
+ text: string;
2868
+ textCompact: string;
2869
+ };
2870
+ };
2871
+ toast: {
2872
+ bg: string;
2873
+ };
2874
+ toggleButton: {
2875
+ bg: string;
2876
+ bgHover: string;
2877
+ bgActive: string;
2878
+ bgDisable: string;
2879
+ border: string;
2880
+ borderHover: string;
2881
+ borderActive: string;
2882
+ borderDisable: string;
2883
+ text: string;
2884
+ textActive: string;
2885
+ textDisable: string;
2886
+ };
2887
+ appButton: {
2888
+ bg: string;
2889
+ bgHover: string;
2890
+ bgPress: string;
2891
+ border: string;
2892
+ borderHover: string;
2893
+ borderPress: string;
2894
+ text: string;
2895
+ textDisable: string;
2896
+ };
2897
+ };
2898
+ };
2899
+ };
2900
+ type ThemeColors = typeof pentagramDark;
2901
+
2902
+ declare const spacing: {
2903
+ xs: number;
2904
+ s: number;
2905
+ m: number;
2906
+ l: number;
2907
+ xl: number;
2908
+ };
2909
+ declare const radius: {
2910
+ button: number;
2911
+ card: number;
2912
+ contextMenu: number;
2913
+ input: number;
2914
+ tagSmall: number;
2915
+ tagMedium: number;
2916
+ tagLarge: number;
2917
+ avatarSmall: number;
2918
+ avatarLarge: number;
2919
+ avatarCircle: number;
2920
+ };
2921
+ /** Primitive radius scale. Mirrors Figma "Scale / radius/*" variables. */
2922
+ declare const radiusScale: {
2923
+ readonly "25": 2;
2924
+ readonly "50": 4;
2925
+ readonly "75": 6;
2926
+ readonly "100": 8;
2927
+ readonly "150": 12;
2928
+ readonly "200": 16;
2929
+ readonly "250": 20;
2930
+ readonly "300": 24;
2931
+ readonly "350": 28;
2932
+ readonly "400": 32;
2933
+ readonly "999": 999;
2934
+ };
2935
+ /** Primitive border-width scale. Mirrors Figma "Scale / stroke/*" variables. */
2936
+ declare const stroke: {
2937
+ readonly "1": 1;
2938
+ readonly "2": 2;
2939
+ readonly "3": 3;
2940
+ };
2941
+
2942
+ /**
2943
+ * Semantic shape tokens. Mirrors Figma "Theme / Shape" variable collection,
2944
+ * Xsolla Default mode. Values alias into the radiusScale and stroke primitives.
2945
+ */
2946
+ declare const shape: {
2947
+ readonly button: {
2948
+ readonly xl: {
2949
+ readonly borderRadius: 8;
2950
+ readonly borderWidth: 1;
2951
+ };
2952
+ readonly lg: {
2953
+ readonly borderRadius: 8;
2954
+ readonly borderWidth: 1;
2955
+ };
2956
+ readonly md: {
2957
+ readonly borderRadius: 6;
2958
+ readonly borderWidth: 1;
2959
+ };
2960
+ readonly sm: {
2961
+ readonly borderRadius: 4;
2962
+ readonly borderWidth: 1;
2963
+ };
2964
+ readonly xs: {
2965
+ readonly borderRadius: 4;
2966
+ readonly borderWidth: 1;
2967
+ };
2968
+ };
2969
+ readonly checkbox: {
2970
+ readonly xl: {
2971
+ readonly borderRadius: 4;
2972
+ readonly borderWidth: 1;
2973
+ };
2974
+ readonly lg: {
2975
+ readonly borderRadius: 4;
2976
+ readonly borderWidth: 1;
2977
+ };
2978
+ readonly md: {
2979
+ readonly borderRadius: 4;
2980
+ readonly borderWidth: 1;
2981
+ };
2982
+ readonly sm: {
2983
+ readonly borderRadius: 4;
2984
+ readonly borderWidth: 1;
2985
+ };
2986
+ };
2987
+ readonly input: {
2988
+ readonly xl: {
2989
+ readonly borderRadius: 8;
2990
+ readonly borderWidth: 1;
2991
+ };
2992
+ readonly lg: {
2993
+ readonly borderRadius: 8;
2994
+ readonly borderWidth: 1;
2995
+ };
2996
+ readonly md: {
2997
+ readonly borderRadius: 8;
2998
+ readonly borderWidth: 1;
2999
+ };
3000
+ readonly sm: {
3001
+ readonly borderRadius: 4;
3002
+ readonly borderWidth: 1;
3003
+ };
3004
+ readonly xs: {
3005
+ readonly borderRadius: 4;
3006
+ readonly borderWidth: 1;
3007
+ };
3008
+ };
3009
+ readonly segmented: {
3010
+ readonly xl: {
3011
+ readonly borderRadius: 8;
3012
+ readonly borderWidth: 1;
3013
+ };
3014
+ readonly lg: {
3015
+ readonly borderRadius: 8;
3016
+ readonly borderWidth: 1;
3017
+ };
3018
+ readonly md: {
3019
+ readonly borderRadius: 8;
3020
+ readonly borderWidth: 1;
3021
+ };
3022
+ readonly sm: {
3023
+ readonly borderRadius: 4;
3024
+ readonly borderWidth: 1;
3025
+ };
3026
+ };
3027
+ readonly segmentedItem: {
3028
+ readonly xl: {
3029
+ readonly borderRadius: 4;
3030
+ readonly borderWidth: 1;
3031
+ };
3032
+ readonly lg: {
3033
+ readonly borderRadius: 4;
3034
+ readonly borderWidth: 1;
3035
+ };
3036
+ readonly md: {
3037
+ readonly borderRadius: 4;
3038
+ readonly borderWidth: 1;
3039
+ };
3040
+ readonly sm: {
3041
+ readonly borderRadius: 2;
3042
+ readonly borderWidth: 1;
3043
+ };
3044
+ };
3045
+ readonly switch: {
3046
+ readonly xl: {
3047
+ readonly borderRadius: 4;
3048
+ readonly borderWidth: 1;
3049
+ };
3050
+ readonly lg: {
3051
+ readonly borderRadius: 4;
3052
+ readonly borderWidth: 1;
3053
+ };
3054
+ readonly md: {
3055
+ readonly borderRadius: 4;
3056
+ readonly borderWidth: 1;
3057
+ };
3058
+ readonly sm: {
3059
+ readonly borderRadius: 4;
3060
+ readonly borderWidth: 1;
3061
+ };
3062
+ };
3063
+ readonly knob: {
3064
+ readonly xl: {
2662
3065
  readonly borderRadius: 2;
2663
3066
  };
2664
3067
  readonly lg: {
@@ -2791,216 +3194,618 @@ declare const shape: {
2791
3194
  readonly toast: {
2792
3195
  readonly borderRadius: 4;
2793
3196
  };
2794
- readonly toggleButtonGroup: {
2795
- readonly xl: {
2796
- readonly borderRadius: 8;
2797
- readonly borderWidth: 1;
3197
+ readonly toggleButtonGroup: {
3198
+ readonly xl: {
3199
+ readonly borderRadius: 8;
3200
+ readonly borderWidth: 1;
3201
+ };
3202
+ readonly lg: {
3203
+ readonly borderRadius: 8;
3204
+ readonly borderWidth: 1;
3205
+ };
3206
+ readonly md: {
3207
+ readonly borderRadius: 6;
3208
+ readonly borderWidth: 1;
3209
+ };
3210
+ readonly sm: {
3211
+ readonly borderRadius: 4;
3212
+ readonly borderWidth: 1;
3213
+ };
3214
+ readonly xs: {
3215
+ readonly borderRadius: 4;
3216
+ readonly borderWidth: 1;
3217
+ };
3218
+ };
3219
+ readonly tagLabel: {
3220
+ readonly borderRadius: 0;
3221
+ };
3222
+ };
3223
+
3224
+ declare const shadow: {
3225
+ active: string;
3226
+ surface: string;
3227
+ surfaceHover: string;
3228
+ popover: string;
3229
+ modal: string;
3230
+ contextMenu: string;
3231
+ };
3232
+
3233
+ /**
3234
+ * Font family definitions per ProductContext.
3235
+ *
3236
+ * Figma "Font" variable collection defines 3 roles:
3237
+ * - display: heading/display font (Pilat or Pilat Wide)
3238
+ * - compact: body/UI font (Aktiv Grotesk or Montserrat)
3239
+ * - text: paragraph/reading font (same families as compact)
3240
+ *
3241
+ * The `heading` and `body` exports map to these Figma roles:
3242
+ * heading → display
3243
+ * body → compact (also used for text contexts)
3244
+ */
3245
+
3246
+ /** Static fonts object (defaults to B2B for backwards compatibility) */
3247
+ declare const fonts: {
3248
+ heading: string;
3249
+ body: string;
3250
+ /** Paragraph/reading font — same families as body */
3251
+ text: string;
3252
+ /** @deprecated Use `heading` or `body` instead */
3253
+ primary: string;
3254
+ };
3255
+ /** Returns context-aware font families */
3256
+ declare const getFonts: (productContext?: ProductContext) => {
3257
+ heading: string;
3258
+ body: string;
3259
+ /** Paragraph/reading font — same families as body */
3260
+ text: string;
3261
+ /** @deprecated Use `heading` or `body` instead */
3262
+ primary: string;
3263
+ };
3264
+ declare const typography: {
3265
+ button: {
3266
+ fontFamily: string;
3267
+ fontWeight: string;
3268
+ };
3269
+ };
3270
+
3271
+ /**
3272
+ * Responsive breakpoint definitions for the design system.
3273
+ *
3274
+ * Derived from the Figma "Responsive / Typography" variable collection,
3275
+ * which has three modes: Common, Mobile, Desktop.
3276
+ * Common and Desktop share identical values; Mobile scales down.
3277
+ *
3278
+ * Usage (CSS):
3279
+ * @media (max-width: 767px) { ... } // Mobile
3280
+ * @media (min-width: 768px) { ... } // Desktop
3281
+ *
3282
+ * Usage (JS):
3283
+ * import { breakpoints } from '@xsolla/xui-core';
3284
+ * const isMobile = window.innerWidth < breakpoints.desktop;
3285
+ */
3286
+ declare const breakpoints: {
3287
+ /** Mobile: 0 – 767px */
3288
+ readonly mobile: 0;
3289
+ /** Desktop: 768px and above */
3290
+ readonly desktop: 768;
3291
+ };
3292
+ type BreakpointKey = keyof typeof breakpoints;
3293
+ /**
3294
+ * Max-width media query value for targeting mobile devices.
3295
+ * Use in CSS: `@media (max-width: ${MOBILE_MAX_WIDTH}px)`
3296
+ */
3297
+ declare const MOBILE_MAX_WIDTH: number;
3298
+
3299
+ /**
3300
+ * Responsive typography scale tokens sourced from the Figma
3301
+ * "Responsive / Typography" variable collection.
3302
+ *
3303
+ * Three device modes: Common (default), Mobile, Desktop.
3304
+ * Common and Desktop have identical values. Mobile scales down.
3305
+ *
3306
+ * These are the raw building blocks. Semantic tokens in typography.ts
3307
+ * alias into this scale (e.g., B2B heading/h1/font-size → font-size/650).
3308
+ *
3309
+ * On web, these are injected as CSS custom properties (--xui-font-size-*, --xui-lh-*)
3310
+ * with @media overrides for mobile. Components consume a single CSS variable
3311
+ * and scale automatically by viewport.
3312
+ *
3313
+ * @see {@link ../styles/typography-css.ts} for CSS generation
3314
+ * @see {@link ./breakpoints.ts} for breakpoint definitions
3315
+ */
3316
+ interface ResponsiveValue {
3317
+ common: number;
3318
+ mobile: number;
3319
+ desktop: number;
3320
+ }
3321
+ type ScaleStep = "75" | "100" | "125" | "150" | "175" | "200" | "250" | "300" | "350" | "450" | "550" | "650" | "750";
3322
+ declare const SCALE_STEPS: ScaleStep[];
3323
+ /** Font-size scale: 13 steps from 10px to 64px (desktop) */
3324
+ declare const fontSize: Record<ScaleStep, ResponsiveValue>;
3325
+ /** Line-height/display: tight line-heights for headings (roughly 1:1 with font-size) */
3326
+ declare const lineHeightDisplay: Record<ScaleStep, ResponsiveValue>;
3327
+ /** Line-height/compact: moderate line-heights for UI body text */
3328
+ declare const lineHeightCompact: Record<ScaleStep, ResponsiveValue>;
3329
+ /** Line-height/text: generous line-heights for paragraphs and reading text */
3330
+ declare const lineHeightText: Record<ScaleStep, ResponsiveValue>;
3331
+ declare const responsiveTypographyScale: {
3332
+ readonly fontSize: Record<ScaleStep, ResponsiveValue>;
3333
+ readonly lineHeightDisplay: Record<ScaleStep, ResponsiveValue>;
3334
+ readonly lineHeightCompact: Record<ScaleStep, ResponsiveValue>;
3335
+ readonly lineHeightText: Record<ScaleStep, ResponsiveValue>;
3336
+ };
3337
+
3338
+ declare const isWeb: boolean;
3339
+ declare const isNative: boolean;
3340
+ declare const isIOS: boolean;
3341
+ declare const isAndroid: boolean;
3342
+
3343
+ /**
3344
+ * React component that loads the toolkit's font-face declarations.
3345
+ * Drop-in for any framework — works in Next.js, Vite, CRA, etc.
3346
+ *
3347
+ * Renders nothing to the DOM. Injects a single `<style>` tag into `<head>` on mount.
3348
+ */
3349
+ declare const FontLoader: React.FC;
3350
+
3351
+ /**
3352
+ * @font-face CSS for all toolkit fonts, loaded from Xsolla CDN.
3353
+ *
3354
+ * Pilat Wide — B2C heading/display font, registered at weights 400, 600, 700, 800.
3355
+ *
3356
+ * Pilat — B2B heading/display font, registered at weights 300, 400, 600, 700, 800.
3357
+ *
3358
+ * Aktiv Grotesk — body font for all contexts,
3359
+ * mapped from the Sharp Grotesk CDN files (same typeface under a legacy name).
3360
+ * Registered at weights 300, 400, 500, 600, 700.
3361
+ */
3362
+ declare const fontFacesCSS = "\n /* \u2500\u2500 Pilat Wide (B2C headings) \u2500\u2500 */\n\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Medium_/Pilat_Test_Medium.ttf') format('truetype');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Demi_Bold_bee67c470a/Pilat_Test_Demi_Bold_bee67c470a.ttf') format('truetype');\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Bold_b12b40d234/Pilat_Test_Bold_b12b40d234.ttf') format('truetype');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Heavy_2885678ca4/Pilat_Test_Heavy_2885678ca4.otf') format('opentype');\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n }\n\n /* \u2500\u2500 Pilat (B2B headings) \u2500\u2500 */\n\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/55a03110b2400b778d485de2c8d064c0.woff2') format('woff2');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/e968c9cc76e48ff6111c90534549bbf9.woff2') format('woff2');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/ed4fe74e88aaacc6978f06a862e75b08.woff2') format('woff2');\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/7450f429979af7eaa8fa4d4d91cee927.woff2') format('woff2');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/218d647ff7690c1e312f6943e29af375.woff2') format('woff2');\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n }\n\n /* \u2500\u2500 Aktiv Grotesk (body) \u2014 served from Sharp Grotesk CDN files \u2500\u2500 */\n\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Light_c4650750bb/Pilat_Test_Light_c4650750bb.otf') format('opentype');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Book_5cb49cd592/Pilat_Test_Book_5cb49cd592.otf') format('opentype');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Demi_e9bed59107/Pilat_Test_Demi_e9bed59107.otf') format('opentype');\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n";
3363
+
3364
+ declare const TypographyStyleLoader: React.FC;
3365
+
3366
+ /**
3367
+ * Generates the CSS custom properties string for responsive typography.
3368
+ *
3369
+ * Produces two blocks:
3370
+ * 1. :root — Desktop/Common values (the default)
3371
+ * 2. @media (max-width: 767px) :root — Mobile overrides
3372
+ *
3373
+ * CSS variable naming convention (mirrors Figma variable names):
3374
+ * --xui-font-size-{step} → e.g. --xui-font-size-150: 16px
3375
+ * --xui-lh-display-{step} → e.g. --xui-lh-display-150: 16px
3376
+ * --xui-lh-compact-{step} → e.g. --xui-lh-compact-150: 20px
3377
+ * --xui-lh-text-{step} → e.g. --xui-lh-text-150: 22px
3378
+ *
3379
+ * Consumers can use these in CSS or styled-components:
3380
+ * font-size: var(--xui-font-size-350);
3381
+ * line-height: var(--xui-lh-compact-350);
3382
+ *
3383
+ * @see {@link ../tokens/responsive-typography.ts} for raw token data
3384
+ * @see {@link ../tokens/breakpoints.ts} for breakpoint definitions
3385
+ */
3386
+ /**
3387
+ * Returns the full CSS string for responsive typography custom properties.
3388
+ * The result is memoized — safe to call multiple times.
3389
+ */
3390
+ declare function generateTypographyCSS(): string;
3391
+ /**
3392
+ * Returns the CSS variable name for a given font-size scale step.
3393
+ * Useful when the Typography component needs to reference a CSS variable.
3394
+ *
3395
+ * @example cssVar.fontSize("350") → "var(--xui-font-size-350)"
3396
+ */
3397
+ declare const cssVar: {
3398
+ readonly fontSize: (step: string) => string;
3399
+ readonly lhDisplay: (step: string) => string;
3400
+ readonly lhCompact: (step: string) => string;
3401
+ readonly lhText: (step: string) => string;
3402
+ };
3403
+
3404
+ type ThemeMode = "dark" | "light" | "pentagram-dark" | "pentagram-light" | "ltg-dark" | "blueprints";
3405
+ declare const themeConfig: (mode?: ThemeMode, productContext?: ProductContext) => {
3406
+ colors: {
3407
+ background: {
3408
+ primary: string;
3409
+ secondary: string;
3410
+ brand: {
3411
+ primary: string;
3412
+ secondary: string;
3413
+ };
3414
+ brandExtra: {
3415
+ primary: string;
3416
+ secondary: string;
3417
+ };
3418
+ inverse: string;
3419
+ static: {
3420
+ dark: string;
3421
+ light: string;
3422
+ };
3423
+ success: {
3424
+ primary: string;
3425
+ secondary: string;
3426
+ };
3427
+ warning: {
3428
+ primary: string;
3429
+ secondary: string;
3430
+ };
3431
+ alert: {
3432
+ primary: string;
3433
+ secondary: string;
3434
+ };
3435
+ neutral: {
3436
+ primary: string;
3437
+ secondary: string;
3438
+ };
2798
3439
  };
2799
- readonly lg: {
2800
- readonly borderRadius: 8;
2801
- readonly borderWidth: 1;
3440
+ content: {
3441
+ primary: string;
3442
+ secondary: string;
3443
+ tertiary: string;
3444
+ brand: {
3445
+ primary: string;
3446
+ secondary: string;
3447
+ };
3448
+ brandExtra: {
3449
+ primary: string;
3450
+ secondary: string;
3451
+ };
3452
+ inverse: string;
3453
+ static: {
3454
+ light: string;
3455
+ dark: string;
3456
+ };
3457
+ success: {
3458
+ primary: string;
3459
+ secondary: string;
3460
+ };
3461
+ warning: {
3462
+ primary: string;
3463
+ secondary: string;
3464
+ };
3465
+ alert: {
3466
+ primary: string;
3467
+ secondary: string;
3468
+ };
3469
+ neutral: {
3470
+ primary: string;
3471
+ secondary: string;
3472
+ };
3473
+ on: {
3474
+ brand: string;
3475
+ brandExtra: string;
3476
+ success: string;
3477
+ warning: string;
3478
+ alert: string;
3479
+ neutral: string;
3480
+ };
2802
3481
  };
2803
- readonly md: {
2804
- readonly borderRadius: 6;
2805
- readonly borderWidth: 1;
3482
+ border: {
3483
+ primary: string;
3484
+ secondary: string;
3485
+ brand: string;
3486
+ brandExtra: string;
3487
+ inverse: string;
3488
+ success: string;
3489
+ warning: string;
3490
+ alert: string;
3491
+ neutral: string;
3492
+ };
3493
+ overlay: {
3494
+ mono: string;
3495
+ brand: string;
3496
+ brandExtra: string;
3497
+ success: string;
3498
+ warning: string;
3499
+ alert: string;
3500
+ neutral: string;
3501
+ monoHover: string;
2806
3502
  };
2807
- readonly sm: {
2808
- readonly borderRadius: 4;
2809
- readonly borderWidth: 1;
3503
+ layer: {
3504
+ scrim: string;
3505
+ float: string;
2810
3506
  };
2811
- readonly xs: {
2812
- readonly borderRadius: 4;
2813
- readonly borderWidth: 1;
3507
+ control: {
3508
+ brand: {
3509
+ primary: {
3510
+ bg: string;
3511
+ bgHover: string;
3512
+ bgPress: string;
3513
+ bgDisable: string;
3514
+ border: string;
3515
+ borderHover: string;
3516
+ borderPress: string;
3517
+ borderDisable: string;
3518
+ };
3519
+ secondary: {
3520
+ bg: string;
3521
+ bgHover: string;
3522
+ bgPress: string;
3523
+ border: string;
3524
+ borderHover: string;
3525
+ borderPress: string;
3526
+ };
3527
+ tertiary: {
3528
+ bg: string;
3529
+ bgHover: string;
3530
+ bgPress: string;
3531
+ border: string;
3532
+ borderHover: string;
3533
+ borderPress: string;
3534
+ };
3535
+ text: {
3536
+ primary: string;
3537
+ secondary: string;
3538
+ tertiary: string;
3539
+ disable: string;
3540
+ ghost: string;
3541
+ };
3542
+ ghost: {
3543
+ bg: string;
3544
+ bgHover: string;
3545
+ bgPress: string;
3546
+ border: string;
3547
+ borderHover: string;
3548
+ borderPress: string;
3549
+ };
3550
+ };
3551
+ mono: {
3552
+ primary: {
3553
+ bg: string;
3554
+ bgHover: string;
3555
+ bgPress: string;
3556
+ border: string;
3557
+ borderHover: string;
3558
+ borderPress: string;
3559
+ };
3560
+ secondary: {
3561
+ bg: string;
3562
+ bgHover: string;
3563
+ bgPress: string;
3564
+ border: string;
3565
+ borderHover: string;
3566
+ borderPress: string;
3567
+ };
3568
+ tertiary: {
3569
+ bg: string;
3570
+ bgHover: string;
3571
+ bgPress: string;
3572
+ border: string;
3573
+ borderHover: string;
3574
+ borderPress: string;
3575
+ };
3576
+ text: {
3577
+ primary: string;
3578
+ secondary: string;
3579
+ tertiary: string;
3580
+ ghost: string;
3581
+ };
3582
+ ghost: {
3583
+ bg: string;
3584
+ bgHover: string;
3585
+ bgPress: string;
3586
+ border: string;
3587
+ borderHover: string;
3588
+ borderPress: string;
3589
+ };
3590
+ };
3591
+ brandExtra: {
3592
+ primary: {
3593
+ bg: string;
3594
+ bgHover: string;
3595
+ bgPress: string;
3596
+ border: string;
3597
+ borderHover: string;
3598
+ borderPress: string;
3599
+ };
3600
+ secondary: {
3601
+ bg: string;
3602
+ bgHover: string;
3603
+ bgPress: string;
3604
+ border: string;
3605
+ borderHover: string;
3606
+ borderPress: string;
3607
+ };
3608
+ tertiary: {
3609
+ bg: string;
3610
+ bgHover: string;
3611
+ bgPress: string;
3612
+ border: string;
3613
+ borderHover: string;
3614
+ borderPress: string;
3615
+ };
3616
+ text: {
3617
+ primary: string;
3618
+ secondary: string;
3619
+ tertiary: string;
3620
+ ghost: string;
3621
+ };
3622
+ ghost: {
3623
+ bg: string;
3624
+ bgHover: string;
3625
+ bgPress: string;
3626
+ border: string;
3627
+ borderHover: string;
3628
+ borderPress: string;
3629
+ };
3630
+ };
3631
+ alert: {
3632
+ bg: string;
3633
+ border: string;
3634
+ primary: {
3635
+ bg: string;
3636
+ bgHover: string;
3637
+ bgPress: string;
3638
+ border: string;
3639
+ borderHover: string;
3640
+ borderPress: string;
3641
+ };
3642
+ secondary: {
3643
+ bg: string;
3644
+ bgHover: string;
3645
+ bgPress: string;
3646
+ border: string;
3647
+ borderHover: string;
3648
+ borderPress: string;
3649
+ };
3650
+ tertiary: {
3651
+ bg: string;
3652
+ bgHover: string;
3653
+ bgPress: string;
3654
+ border: string;
3655
+ borderHover: string;
3656
+ borderPress: string;
3657
+ };
3658
+ text: {
3659
+ primary: string;
3660
+ secondary: string;
3661
+ tertiary: string;
3662
+ ghost: string;
3663
+ };
3664
+ ghost: {
3665
+ bg: string;
3666
+ bgHover: string;
3667
+ bgPress: string;
3668
+ border: string;
3669
+ borderHover: string;
3670
+ borderPress: string;
3671
+ };
3672
+ };
3673
+ input: {
3674
+ bg: string;
3675
+ bgHover: string;
3676
+ bgDisable: string;
3677
+ border: string;
3678
+ borderHover: string;
3679
+ borderDisable: string;
3680
+ text: string;
3681
+ placeholder: string;
3682
+ textDisable: string;
3683
+ };
3684
+ focus: {
3685
+ bg: string;
3686
+ border: string;
3687
+ };
3688
+ check: {
3689
+ bg: string;
3690
+ bgHover: string;
3691
+ bgDisable: string;
3692
+ border: string;
3693
+ borderHover: string;
3694
+ borderDisable: string;
3695
+ icon: string;
3696
+ };
3697
+ faint: {
3698
+ bg: string;
3699
+ bgHover: string;
3700
+ border: string;
3701
+ borderHover: string;
3702
+ };
3703
+ slider: {
3704
+ bg: string;
3705
+ bgHover: string;
3706
+ bgDisable: string;
3707
+ };
3708
+ switch: {
3709
+ bg: string;
3710
+ bgHover: string;
3711
+ bgDisable: string;
3712
+ border: string;
3713
+ borderHover: string;
3714
+ borderDisable: string;
3715
+ };
3716
+ knob: {
3717
+ bg: string;
3718
+ bgHover: string;
3719
+ bgActive: string;
3720
+ bgActiveHover: string;
3721
+ bgInactive: string;
3722
+ bgInactiveHover: string;
3723
+ bgDisable: string;
3724
+ };
3725
+ text: {
3726
+ primary: string;
3727
+ disable: string;
3728
+ };
3729
+ link: {
3730
+ primary: string;
3731
+ primaryHover: string;
3732
+ secondary: string;
3733
+ secondaryHover: string;
3734
+ };
3735
+ segmented: {
3736
+ bg: string;
3737
+ bgHover: string;
3738
+ bgActive: string;
3739
+ border: string;
3740
+ borderHover: string;
3741
+ borderActive: string;
3742
+ text: string;
3743
+ textDisable: string;
3744
+ };
3745
+ tagLabel: {
3746
+ product: {
3747
+ bg: string;
3748
+ text: string;
3749
+ textCompact: string;
3750
+ };
3751
+ rarity: {
3752
+ bg: string;
3753
+ text: string;
3754
+ };
3755
+ name: {
3756
+ bg: string;
3757
+ text: string;
3758
+ };
3759
+ account: {
3760
+ bg: string;
3761
+ text: string;
3762
+ textCompact: string;
3763
+ };
3764
+ id: {
3765
+ bg: string;
3766
+ bgSeries: string;
3767
+ textSeries: string;
3768
+ textNumber: string;
3769
+ textCompact: string;
3770
+ };
3771
+ subentity: {
3772
+ bg: string;
3773
+ text: string;
3774
+ };
3775
+ item: {
3776
+ bg: string;
3777
+ text: string;
3778
+ textCompact: string;
3779
+ };
3780
+ };
3781
+ toast: {
3782
+ bg: string;
3783
+ };
3784
+ toggleButton: {
3785
+ bg: string;
3786
+ bgHover: string;
3787
+ bgActive: string;
3788
+ bgDisable: string;
3789
+ border: string;
3790
+ borderHover: string;
3791
+ borderActive: string;
3792
+ borderDisable: string;
3793
+ text: string;
3794
+ textActive: string;
3795
+ textDisable: string;
3796
+ };
3797
+ appButton: {
3798
+ bg: string;
3799
+ bgHover: string;
3800
+ bgPress: string;
3801
+ border: string;
3802
+ borderHover: string;
3803
+ borderPress: string;
3804
+ text: string;
3805
+ textDisable: string;
3806
+ };
2814
3807
  };
2815
- };
2816
- readonly tagLabel: {
2817
- readonly borderRadius: 0;
2818
- };
2819
- };
2820
-
2821
- declare const shadow: {
2822
- active: string;
2823
- surface: string;
2824
- surfaceHover: string;
2825
- popover: string;
2826
- modal: string;
2827
- contextMenu: string;
2828
- };
2829
-
2830
- /**
2831
- * Font family definitions per ProductContext.
2832
- *
2833
- * Figma "Font" variable collection defines 3 roles:
2834
- * - display: heading/display font (Pilat or Pilat Wide)
2835
- * - compact: body/UI font (Aktiv Grotesk or Montserrat)
2836
- * - text: paragraph/reading font (same families as compact)
2837
- *
2838
- * The `heading` and `body` exports map to these Figma roles:
2839
- * heading → display
2840
- * body → compact (also used for text contexts)
2841
- */
2842
-
2843
- /** Static fonts object (defaults to B2B for backwards compatibility) */
2844
- declare const fonts: {
2845
- heading: string;
2846
- body: string;
2847
- /** Paragraph/reading font — same families as body */
2848
- text: string;
2849
- /** @deprecated Use `heading` or `body` instead */
2850
- primary: string;
2851
- };
2852
- /** Returns context-aware font families */
2853
- declare const getFonts: (productContext?: ProductContext) => {
2854
- heading: string;
2855
- body: string;
2856
- /** Paragraph/reading font — same families as body */
2857
- text: string;
2858
- /** @deprecated Use `heading` or `body` instead */
2859
- primary: string;
2860
- };
2861
- declare const typography: {
2862
- button: {
2863
- fontFamily: string;
2864
- fontWeight: string;
2865
- };
2866
- };
2867
-
2868
- /**
2869
- * Responsive breakpoint definitions for the design system.
2870
- *
2871
- * Derived from the Figma "Responsive / Typography" variable collection,
2872
- * which has three modes: Common, Mobile, Desktop.
2873
- * Common and Desktop share identical values; Mobile scales down.
2874
- *
2875
- * Usage (CSS):
2876
- * @media (max-width: 767px) { ... } // Mobile
2877
- * @media (min-width: 768px) { ... } // Desktop
2878
- *
2879
- * Usage (JS):
2880
- * import { breakpoints } from '@xsolla/xui-core';
2881
- * const isMobile = window.innerWidth < breakpoints.desktop;
2882
- */
2883
- declare const breakpoints: {
2884
- /** Mobile: 0 – 767px */
2885
- readonly mobile: 0;
2886
- /** Desktop: 768px and above */
2887
- readonly desktop: 768;
2888
- };
2889
- type BreakpointKey = keyof typeof breakpoints;
2890
- /**
2891
- * Max-width media query value for targeting mobile devices.
2892
- * Use in CSS: `@media (max-width: ${MOBILE_MAX_WIDTH}px)`
2893
- */
2894
- declare const MOBILE_MAX_WIDTH: number;
2895
-
2896
- /**
2897
- * Responsive typography scale tokens sourced from the Figma
2898
- * "Responsive / Typography" variable collection.
2899
- *
2900
- * Three device modes: Common (default), Mobile, Desktop.
2901
- * Common and Desktop have identical values. Mobile scales down.
2902
- *
2903
- * These are the raw building blocks. Semantic tokens in typography.ts
2904
- * alias into this scale (e.g., B2B heading/h1/font-size → font-size/650).
2905
- *
2906
- * On web, these are injected as CSS custom properties (--xui-font-size-*, --xui-lh-*)
2907
- * with @media overrides for mobile. Components consume a single CSS variable
2908
- * and scale automatically by viewport.
2909
- *
2910
- * @see {@link ../styles/typography-css.ts} for CSS generation
2911
- * @see {@link ./breakpoints.ts} for breakpoint definitions
2912
- */
2913
- interface ResponsiveValue {
2914
- common: number;
2915
- mobile: number;
2916
- desktop: number;
2917
- }
2918
- type ScaleStep = "75" | "100" | "125" | "150" | "175" | "200" | "250" | "300" | "350" | "450" | "550" | "650" | "750";
2919
- declare const SCALE_STEPS: ScaleStep[];
2920
- /** Font-size scale: 13 steps from 10px to 64px (desktop) */
2921
- declare const fontSize: Record<ScaleStep, ResponsiveValue>;
2922
- /** Line-height/display: tight line-heights for headings (roughly 1:1 with font-size) */
2923
- declare const lineHeightDisplay: Record<ScaleStep, ResponsiveValue>;
2924
- /** Line-height/compact: moderate line-heights for UI body text */
2925
- declare const lineHeightCompact: Record<ScaleStep, ResponsiveValue>;
2926
- /** Line-height/text: generous line-heights for paragraphs and reading text */
2927
- declare const lineHeightText: Record<ScaleStep, ResponsiveValue>;
2928
- declare const responsiveTypographyScale: {
2929
- readonly fontSize: Record<ScaleStep, ResponsiveValue>;
2930
- readonly lineHeightDisplay: Record<ScaleStep, ResponsiveValue>;
2931
- readonly lineHeightCompact: Record<ScaleStep, ResponsiveValue>;
2932
- readonly lineHeightText: Record<ScaleStep, ResponsiveValue>;
2933
- };
2934
-
2935
- declare const isWeb: boolean;
2936
- declare const isNative: boolean;
2937
- declare const isIOS: boolean;
2938
- declare const isAndroid: boolean;
2939
-
2940
- /**
2941
- * React component that loads the toolkit's font-face declarations.
2942
- * Drop-in for any framework — works in Next.js, Vite, CRA, etc.
2943
- *
2944
- * Renders nothing to the DOM. Injects a single `<style>` tag into `<head>` on mount.
2945
- */
2946
- declare const FontLoader: React.FC;
2947
-
2948
- /**
2949
- * @font-face CSS for all toolkit fonts, loaded from Xsolla CDN.
2950
- *
2951
- * Pilat Wide — B2C heading/display font, registered at weights 400, 600, 700, 800.
2952
- *
2953
- * Pilat — B2B heading/display font, registered at weights 300, 400, 600, 700, 800.
2954
- *
2955
- * Aktiv Grotesk — body font for all contexts,
2956
- * mapped from the Sharp Grotesk CDN files (same typeface under a legacy name).
2957
- * Registered at weights 300, 400, 500, 600, 700.
2958
- */
2959
- declare const fontFacesCSS = "\n /* \u2500\u2500 Pilat Wide (B2C headings) \u2500\u2500 */\n\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Medium_/Pilat_Test_Medium.ttf') format('truetype');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Demi_Bold_bee67c470a/Pilat_Test_Demi_Bold_bee67c470a.ttf') format('truetype');\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Bold_b12b40d234/Pilat_Test_Bold_b12b40d234.ttf') format('truetype');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat Wide';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Heavy_2885678ca4/Pilat_Test_Heavy_2885678ca4.otf') format('opentype');\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n }\n\n /* \u2500\u2500 Pilat (B2B headings) \u2500\u2500 */\n\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/55a03110b2400b778d485de2c8d064c0.woff2') format('woff2');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/e968c9cc76e48ff6111c90534549bbf9.woff2') format('woff2');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/ed4fe74e88aaacc6978f06a862e75b08.woff2') format('woff2');\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/7450f429979af7eaa8fa4d4d91cee927.woff2') format('woff2');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Pilat';\n src: url('https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279/218d647ff7690c1e312f6943e29af375.woff2') format('woff2');\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n }\n\n /* \u2500\u2500 Aktiv Grotesk (body) \u2014 served from Sharp Grotesk CDN files \u2500\u2500 */\n\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Light_c4650750bb/Pilat_Test_Light_c4650750bb.otf') format('opentype');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Book_5cb49cd592/Pilat_Test_Book_5cb49cd592.otf') format('opentype');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Demi_e9bed59107/Pilat_Test_Demi_e9bed59107.otf') format('opentype');\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n }\n @font-face {\n font-family: 'Aktiv Grotesk';\n src: url('https://cdn.xsolla.net/strapi-v2-bucket-prod/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n";
2960
-
2961
- declare const TypographyStyleLoader: React.FC;
2962
-
2963
- /**
2964
- * Generates the CSS custom properties string for responsive typography.
2965
- *
2966
- * Produces two blocks:
2967
- * 1. :root — Desktop/Common values (the default)
2968
- * 2. @media (max-width: 767px) :root — Mobile overrides
2969
- *
2970
- * CSS variable naming convention (mirrors Figma variable names):
2971
- * --xui-font-size-{step} → e.g. --xui-font-size-150: 16px
2972
- * --xui-lh-display-{step} → e.g. --xui-lh-display-150: 16px
2973
- * --xui-lh-compact-{step} → e.g. --xui-lh-compact-150: 20px
2974
- * --xui-lh-text-{step} → e.g. --xui-lh-text-150: 22px
2975
- *
2976
- * Consumers can use these in CSS or styled-components:
2977
- * font-size: var(--xui-font-size-350);
2978
- * line-height: var(--xui-lh-compact-350);
2979
- *
2980
- * @see {@link ../tokens/responsive-typography.ts} for raw token data
2981
- * @see {@link ../tokens/breakpoints.ts} for breakpoint definitions
2982
- */
2983
- /**
2984
- * Returns the full CSS string for responsive typography custom properties.
2985
- * The result is memoized — safe to call multiple times.
2986
- */
2987
- declare function generateTypographyCSS(): string;
2988
- /**
2989
- * Returns the CSS variable name for a given font-size scale step.
2990
- * Useful when the Typography component needs to reference a CSS variable.
2991
- *
2992
- * @example cssVar.fontSize("350") → "var(--xui-font-size-350)"
2993
- */
2994
- declare const cssVar: {
2995
- readonly fontSize: (step: string) => string;
2996
- readonly lhDisplay: (step: string) => string;
2997
- readonly lhCompact: (step: string) => string;
2998
- readonly lhText: (step: string) => string;
2999
- };
3000
-
3001
- type ThemeMode = "dark" | "light" | "pentagram-dark" | "pentagram-light" | "ltg-dark";
3002
- declare const themeConfig: (mode?: ThemeMode, productContext?: ProductContext) => {
3003
- colors: {
3808
+ } | {
3004
3809
  background: {
3005
3810
  primary: string;
3006
3811
  secondary: string;
@@ -5812,7 +6617,16 @@ declare const themeConfig: (mode?: ThemeMode, productContext?: ProductContext) =
5812
6617
  lineHeight: number;
5813
6618
  iconSize: number;
5814
6619
  gap: number;
5815
- borderRadius: 6;
6620
+ borderRadius: 6;
6621
+ itemGap: number;
6622
+ } | {
6623
+ height: number;
6624
+ paddingHorizontal: number;
6625
+ fontSize: number;
6626
+ lineHeight: number;
6627
+ iconSize: number;
6628
+ gap: number;
6629
+ borderRadius: 4;
5816
6630
  itemGap: number;
5817
6631
  } | {
5818
6632
  height: number;
@@ -5823,65 +6637,458 @@ declare const themeConfig: (mode?: ThemeMode, productContext?: ProductContext) =
5823
6637
  gap: number;
5824
6638
  borderRadius: 4;
5825
6639
  itemGap: number;
6640
+ };
6641
+ table: {
6642
+ containerRadius: number;
6643
+ containerPaddingVertical: number;
6644
+ containerGap: number;
6645
+ captionFontSize: number;
6646
+ captionLineHeight: number;
6647
+ headerRowHeight: number;
6648
+ headerRowPaddingHorizontal: number;
6649
+ headerCellGap: number;
6650
+ headerCellFontSize: number;
6651
+ headerCellLineHeight: number;
6652
+ rowHeight: number;
6653
+ rowPaddingHorizontal: number;
6654
+ cellGap: number;
6655
+ cellFontSize: number;
6656
+ cellLineHeight: number;
6657
+ paginationGap: number;
6658
+ paginationPaddingHorizontal: number;
6659
+ };
6660
+ };
6661
+ };
6662
+ interface DesignSystemContextType {
6663
+ mode: ThemeMode;
6664
+ setMode: (mode: ThemeMode) => void;
6665
+ productContext: ProductContext;
6666
+ setProductContext: (productContext: ProductContext) => void;
6667
+ theme: ReturnType<typeof themeConfig>;
6668
+ }
6669
+ declare const XUIProvider: React.FC<{
6670
+ children: React.ReactNode;
6671
+ initialMode?: ThemeMode;
6672
+ initialProductContext?: ProductContext;
6673
+ /** Use `initialProductContext` instead. */
6674
+ productContext?: never;
6675
+ /** Load toolkit fonts from the Xsolla CDN. Defaults to true on web, no-ops on native. */
6676
+ loadFonts?: boolean;
6677
+ }>;
6678
+ declare const useDesignSystem: () => DesignSystemContextType;
6679
+ interface ThemeOverrideProps {
6680
+ /** Override the global theme mode for this component */
6681
+ themeMode?: ThemeMode;
6682
+ /** Override the global product context (fonts/typography) for this component */
6683
+ themeProductContext?: ProductContext;
6684
+ }
6685
+ declare const useResolvedTheme: (overrides?: ThemeOverrideProps) => {
6686
+ mode: ThemeMode;
6687
+ productContext: ProductContext;
6688
+ theme: {
6689
+ colors: {
6690
+ background: {
6691
+ primary: string;
6692
+ secondary: string;
6693
+ brand: {
6694
+ primary: string;
6695
+ secondary: string;
6696
+ };
6697
+ brandExtra: {
6698
+ primary: string;
6699
+ secondary: string;
6700
+ };
6701
+ inverse: string;
6702
+ static: {
6703
+ dark: string;
6704
+ light: string;
6705
+ };
6706
+ success: {
6707
+ primary: string;
6708
+ secondary: string;
6709
+ };
6710
+ warning: {
6711
+ primary: string;
6712
+ secondary: string;
6713
+ };
6714
+ alert: {
6715
+ primary: string;
6716
+ secondary: string;
6717
+ };
6718
+ neutral: {
6719
+ primary: string;
6720
+ secondary: string;
6721
+ };
6722
+ };
6723
+ content: {
6724
+ primary: string;
6725
+ secondary: string;
6726
+ tertiary: string;
6727
+ brand: {
6728
+ primary: string;
6729
+ secondary: string;
6730
+ };
6731
+ brandExtra: {
6732
+ primary: string;
6733
+ secondary: string;
6734
+ };
6735
+ inverse: string;
6736
+ static: {
6737
+ light: string;
6738
+ dark: string;
6739
+ };
6740
+ success: {
6741
+ primary: string;
6742
+ secondary: string;
6743
+ };
6744
+ warning: {
6745
+ primary: string;
6746
+ secondary: string;
6747
+ };
6748
+ alert: {
6749
+ primary: string;
6750
+ secondary: string;
6751
+ };
6752
+ neutral: {
6753
+ primary: string;
6754
+ secondary: string;
6755
+ };
6756
+ on: {
6757
+ brand: string;
6758
+ brandExtra: string;
6759
+ success: string;
6760
+ warning: string;
6761
+ alert: string;
6762
+ neutral: string;
6763
+ };
6764
+ };
6765
+ border: {
6766
+ primary: string;
6767
+ secondary: string;
6768
+ brand: string;
6769
+ brandExtra: string;
6770
+ inverse: string;
6771
+ success: string;
6772
+ warning: string;
6773
+ alert: string;
6774
+ neutral: string;
6775
+ };
6776
+ overlay: {
6777
+ mono: string;
6778
+ brand: string;
6779
+ brandExtra: string;
6780
+ success: string;
6781
+ warning: string;
6782
+ alert: string;
6783
+ neutral: string;
6784
+ monoHover: string;
6785
+ };
6786
+ layer: {
6787
+ scrim: string;
6788
+ float: string;
6789
+ };
6790
+ control: {
6791
+ brand: {
6792
+ primary: {
6793
+ bg: string;
6794
+ bgHover: string;
6795
+ bgPress: string;
6796
+ bgDisable: string;
6797
+ border: string;
6798
+ borderHover: string;
6799
+ borderPress: string;
6800
+ borderDisable: string;
6801
+ };
6802
+ secondary: {
6803
+ bg: string;
6804
+ bgHover: string;
6805
+ bgPress: string;
6806
+ border: string;
6807
+ borderHover: string;
6808
+ borderPress: string;
6809
+ };
6810
+ tertiary: {
6811
+ bg: string;
6812
+ bgHover: string;
6813
+ bgPress: string;
6814
+ border: string;
6815
+ borderHover: string;
6816
+ borderPress: string;
6817
+ };
6818
+ text: {
6819
+ primary: string;
6820
+ secondary: string;
6821
+ tertiary: string;
6822
+ disable: string;
6823
+ ghost: string;
6824
+ };
6825
+ ghost: {
6826
+ bg: string;
6827
+ bgHover: string;
6828
+ bgPress: string;
6829
+ border: string;
6830
+ borderHover: string;
6831
+ borderPress: string;
6832
+ };
6833
+ };
6834
+ mono: {
6835
+ primary: {
6836
+ bg: string;
6837
+ bgHover: string;
6838
+ bgPress: string;
6839
+ border: string;
6840
+ borderHover: string;
6841
+ borderPress: string;
6842
+ };
6843
+ secondary: {
6844
+ bg: string;
6845
+ bgHover: string;
6846
+ bgPress: string;
6847
+ border: string;
6848
+ borderHover: string;
6849
+ borderPress: string;
6850
+ };
6851
+ tertiary: {
6852
+ bg: string;
6853
+ bgHover: string;
6854
+ bgPress: string;
6855
+ border: string;
6856
+ borderHover: string;
6857
+ borderPress: string;
6858
+ };
6859
+ text: {
6860
+ primary: string;
6861
+ secondary: string;
6862
+ tertiary: string;
6863
+ ghost: string;
6864
+ };
6865
+ ghost: {
6866
+ bg: string;
6867
+ bgHover: string;
6868
+ bgPress: string;
6869
+ border: string;
6870
+ borderHover: string;
6871
+ borderPress: string;
6872
+ };
6873
+ };
6874
+ brandExtra: {
6875
+ primary: {
6876
+ bg: string;
6877
+ bgHover: string;
6878
+ bgPress: string;
6879
+ border: string;
6880
+ borderHover: string;
6881
+ borderPress: string;
6882
+ };
6883
+ secondary: {
6884
+ bg: string;
6885
+ bgHover: string;
6886
+ bgPress: string;
6887
+ border: string;
6888
+ borderHover: string;
6889
+ borderPress: string;
6890
+ };
6891
+ tertiary: {
6892
+ bg: string;
6893
+ bgHover: string;
6894
+ bgPress: string;
6895
+ border: string;
6896
+ borderHover: string;
6897
+ borderPress: string;
6898
+ };
6899
+ text: {
6900
+ primary: string;
6901
+ secondary: string;
6902
+ tertiary: string;
6903
+ ghost: string;
6904
+ };
6905
+ ghost: {
6906
+ bg: string;
6907
+ bgHover: string;
6908
+ bgPress: string;
6909
+ border: string;
6910
+ borderHover: string;
6911
+ borderPress: string;
6912
+ };
6913
+ };
6914
+ alert: {
6915
+ bg: string;
6916
+ border: string;
6917
+ primary: {
6918
+ bg: string;
6919
+ bgHover: string;
6920
+ bgPress: string;
6921
+ border: string;
6922
+ borderHover: string;
6923
+ borderPress: string;
6924
+ };
6925
+ secondary: {
6926
+ bg: string;
6927
+ bgHover: string;
6928
+ bgPress: string;
6929
+ border: string;
6930
+ borderHover: string;
6931
+ borderPress: string;
6932
+ };
6933
+ tertiary: {
6934
+ bg: string;
6935
+ bgHover: string;
6936
+ bgPress: string;
6937
+ border: string;
6938
+ borderHover: string;
6939
+ borderPress: string;
6940
+ };
6941
+ text: {
6942
+ primary: string;
6943
+ secondary: string;
6944
+ tertiary: string;
6945
+ ghost: string;
6946
+ };
6947
+ ghost: {
6948
+ bg: string;
6949
+ bgHover: string;
6950
+ bgPress: string;
6951
+ border: string;
6952
+ borderHover: string;
6953
+ borderPress: string;
6954
+ };
6955
+ };
6956
+ input: {
6957
+ bg: string;
6958
+ bgHover: string;
6959
+ bgDisable: string;
6960
+ border: string;
6961
+ borderHover: string;
6962
+ borderDisable: string;
6963
+ text: string;
6964
+ placeholder: string;
6965
+ textDisable: string;
6966
+ };
6967
+ focus: {
6968
+ bg: string;
6969
+ border: string;
6970
+ };
6971
+ check: {
6972
+ bg: string;
6973
+ bgHover: string;
6974
+ bgDisable: string;
6975
+ border: string;
6976
+ borderHover: string;
6977
+ borderDisable: string;
6978
+ icon: string;
6979
+ };
6980
+ faint: {
6981
+ bg: string;
6982
+ bgHover: string;
6983
+ border: string;
6984
+ borderHover: string;
6985
+ };
6986
+ slider: {
6987
+ bg: string;
6988
+ bgHover: string;
6989
+ bgDisable: string;
6990
+ };
6991
+ switch: {
6992
+ bg: string;
6993
+ bgHover: string;
6994
+ bgDisable: string;
6995
+ border: string;
6996
+ borderHover: string;
6997
+ borderDisable: string;
6998
+ };
6999
+ knob: {
7000
+ bg: string;
7001
+ bgHover: string;
7002
+ bgActive: string;
7003
+ bgActiveHover: string;
7004
+ bgInactive: string;
7005
+ bgInactiveHover: string;
7006
+ bgDisable: string;
7007
+ };
7008
+ text: {
7009
+ primary: string;
7010
+ disable: string;
7011
+ };
7012
+ link: {
7013
+ primary: string;
7014
+ primaryHover: string;
7015
+ secondary: string;
7016
+ secondaryHover: string;
7017
+ };
7018
+ segmented: {
7019
+ bg: string;
7020
+ bgHover: string;
7021
+ bgActive: string;
7022
+ border: string;
7023
+ borderHover: string;
7024
+ borderActive: string;
7025
+ text: string;
7026
+ textDisable: string;
7027
+ };
7028
+ tagLabel: {
7029
+ product: {
7030
+ bg: string;
7031
+ text: string;
7032
+ textCompact: string;
7033
+ };
7034
+ rarity: {
7035
+ bg: string;
7036
+ text: string;
7037
+ };
7038
+ name: {
7039
+ bg: string;
7040
+ text: string;
7041
+ };
7042
+ account: {
7043
+ bg: string;
7044
+ text: string;
7045
+ textCompact: string;
7046
+ };
7047
+ id: {
7048
+ bg: string;
7049
+ bgSeries: string;
7050
+ textSeries: string;
7051
+ textNumber: string;
7052
+ textCompact: string;
7053
+ };
7054
+ subentity: {
7055
+ bg: string;
7056
+ text: string;
7057
+ };
7058
+ item: {
7059
+ bg: string;
7060
+ text: string;
7061
+ textCompact: string;
7062
+ };
7063
+ };
7064
+ toast: {
7065
+ bg: string;
7066
+ };
7067
+ toggleButton: {
7068
+ bg: string;
7069
+ bgHover: string;
7070
+ bgActive: string;
7071
+ bgDisable: string;
7072
+ border: string;
7073
+ borderHover: string;
7074
+ borderActive: string;
7075
+ borderDisable: string;
7076
+ text: string;
7077
+ textActive: string;
7078
+ textDisable: string;
7079
+ };
7080
+ appButton: {
7081
+ bg: string;
7082
+ bgHover: string;
7083
+ bgPress: string;
7084
+ border: string;
7085
+ borderHover: string;
7086
+ borderPress: string;
7087
+ text: string;
7088
+ textDisable: string;
7089
+ };
7090
+ };
5826
7091
  } | {
5827
- height: number;
5828
- paddingHorizontal: number;
5829
- fontSize: number;
5830
- lineHeight: number;
5831
- iconSize: number;
5832
- gap: number;
5833
- borderRadius: 4;
5834
- itemGap: number;
5835
- };
5836
- table: {
5837
- containerRadius: number;
5838
- containerPaddingVertical: number;
5839
- containerGap: number;
5840
- captionFontSize: number;
5841
- captionLineHeight: number;
5842
- headerRowHeight: number;
5843
- headerRowPaddingHorizontal: number;
5844
- headerCellGap: number;
5845
- headerCellFontSize: number;
5846
- headerCellLineHeight: number;
5847
- rowHeight: number;
5848
- rowPaddingHorizontal: number;
5849
- cellGap: number;
5850
- cellFontSize: number;
5851
- cellLineHeight: number;
5852
- paginationGap: number;
5853
- paginationPaddingHorizontal: number;
5854
- };
5855
- };
5856
- };
5857
- interface DesignSystemContextType {
5858
- mode: ThemeMode;
5859
- setMode: (mode: ThemeMode) => void;
5860
- productContext: ProductContext;
5861
- setProductContext: (productContext: ProductContext) => void;
5862
- theme: ReturnType<typeof themeConfig>;
5863
- }
5864
- declare const XUIProvider: React.FC<{
5865
- children: React.ReactNode;
5866
- initialMode?: ThemeMode;
5867
- initialProductContext?: ProductContext;
5868
- /** Use `initialProductContext` instead. */
5869
- productContext?: never;
5870
- /** Load toolkit fonts from the Xsolla CDN. Defaults to true on web, no-ops on native. */
5871
- loadFonts?: boolean;
5872
- }>;
5873
- declare const useDesignSystem: () => DesignSystemContextType;
5874
- interface ThemeOverrideProps {
5875
- /** Override the global theme mode for this component */
5876
- themeMode?: ThemeMode;
5877
- /** Override the global product context (fonts/typography) for this component */
5878
- themeProductContext?: ProductContext;
5879
- }
5880
- declare const useResolvedTheme: (overrides?: ThemeOverrideProps) => {
5881
- mode: ThemeMode;
5882
- productContext: ProductContext;
5883
- theme: {
5884
- colors: {
5885
7092
  background: {
5886
7093
  primary: string;
5887
7094
  secondary: string;