@xsolla/xui-core 0.117.0 → 0.118.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.js CHANGED
@@ -37,6 +37,7 @@ __export(index_exports, {
37
37
  defaultProductContext: () => defaultProductContext,
38
38
  fontFacesCSS: () => fontFacesCSS,
39
39
  fonts: () => fonts,
40
+ getFonts: () => getFonts,
40
41
  getTypographyTokens: () => getTypographyTokens,
41
42
  getTypographyVariant: () => getTypographyVariant,
42
43
  isAndroid: () => isAndroid,
@@ -1887,12 +1888,26 @@ var shadow = {
1887
1888
  };
1888
1889
 
1889
1890
  // src/tokens/fonts.ts
1891
+ var FALLBACK = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
1892
+ var displayFontByContext = {
1893
+ b2b: `"Pilat", "Aktiv Grotesk", "Noto Sans", "Montserrat", ${FALLBACK}`,
1894
+ b2c: `"Pilat Wide", "Aktiv Grotesk", "Noto Sans", "Montserrat", ${FALLBACK}`,
1895
+ paystation: `"Pilat Wide", "Aktiv Grotesk", "Noto Sans", "Montserrat", ${FALLBACK}`,
1896
+ presentation: `"Pilat Wide", "Aktiv Grotesk", "Noto Sans", "Montserrat", ${FALLBACK}`
1897
+ };
1898
+ var bodyFont = `"Aktiv Grotesk", "Noto Sans", "Montserrat", ${FALLBACK}`;
1890
1899
  var fonts = {
1891
- heading: '"Pilat Wide", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
1892
- body: '"Aktiv Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
1900
+ heading: displayFontByContext.b2b,
1901
+ body: bodyFont,
1893
1902
  /** @deprecated Use `heading` or `body` instead */
1894
- primary: '"Aktiv Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'
1903
+ primary: bodyFont
1895
1904
  };
1905
+ var getFonts = (productContext = "b2b") => ({
1906
+ heading: displayFontByContext[productContext],
1907
+ body: bodyFont,
1908
+ /** @deprecated Use `heading` or `body` instead */
1909
+ primary: bodyFont
1910
+ });
1896
1911
  var typography = {
1897
1912
  button: {
1898
1913
  fontFamily: fonts.body,
@@ -2111,34 +2126,73 @@ var isIOS = isNative && typeof global !== "undefined" && global.Platform?.OS ===
2111
2126
  var isAndroid = isNative && typeof global !== "undefined" && global.Platform?.OS === "android";
2112
2127
 
2113
2128
  // src/fonts/fontFaces.ts
2114
- var CDN_BASE = "https://cdn.xsolla.net/strapi-v2-bucket-prod";
2129
+ var CDN_STRAPI = "https://cdn.xsolla.net/strapi-v2-bucket-prod";
2130
+ var CDN_MERCHANT = "https://cdn.xsolla.net/merchant-bucket-prod/files/uploaded/722279";
2115
2131
  var fontFacesCSS = `
2116
- /* \u2500\u2500 Pilat Wide (headings) \u2500\u2500 */
2132
+ /* \u2500\u2500 Pilat Wide (B2C headings) \u2500\u2500 */
2117
2133
 
2118
2134
  @font-face {
2119
2135
  font-family: 'Pilat Wide';
2120
- src: url('${CDN_BASE}/Pilat_Test_Medium_/Pilat_Test_Medium.ttf') format('truetype');
2136
+ src: url('${CDN_STRAPI}/Pilat_Test_Medium_/Pilat_Test_Medium.ttf') format('truetype');
2121
2137
  font-weight: 400;
2122
2138
  font-style: normal;
2123
2139
  font-display: swap;
2124
2140
  }
2125
2141
  @font-face {
2126
2142
  font-family: 'Pilat Wide';
2127
- src: url('${CDN_BASE}/Pilat_Test_Demi_Bold_bee67c470a/Pilat_Test_Demi_Bold_bee67c470a.ttf') format('truetype');
2143
+ src: url('${CDN_STRAPI}/Pilat_Test_Demi_Bold_bee67c470a/Pilat_Test_Demi_Bold_bee67c470a.ttf') format('truetype');
2128
2144
  font-weight: 600;
2129
2145
  font-style: normal;
2130
2146
  font-display: swap;
2131
2147
  }
2132
2148
  @font-face {
2133
2149
  font-family: 'Pilat Wide';
2134
- src: url('${CDN_BASE}/Pilat_Test_Bold_b12b40d234/Pilat_Test_Bold_b12b40d234.ttf') format('truetype');
2150
+ src: url('${CDN_STRAPI}/Pilat_Test_Bold_b12b40d234/Pilat_Test_Bold_b12b40d234.ttf') format('truetype');
2135
2151
  font-weight: 700;
2136
2152
  font-style: normal;
2137
2153
  font-display: swap;
2138
2154
  }
2139
2155
  @font-face {
2140
2156
  font-family: 'Pilat Wide';
2141
- src: url('${CDN_BASE}/Pilat_Test_Heavy_2885678ca4/Pilat_Test_Heavy_2885678ca4.otf') format('opentype');
2157
+ src: url('${CDN_STRAPI}/Pilat_Test_Heavy_2885678ca4/Pilat_Test_Heavy_2885678ca4.otf') format('opentype');
2158
+ font-weight: 800;
2159
+ font-style: normal;
2160
+ font-display: swap;
2161
+ }
2162
+
2163
+ /* \u2500\u2500 Pilat (B2B headings) \u2500\u2500 */
2164
+
2165
+ @font-face {
2166
+ font-family: 'Pilat';
2167
+ src: url('${CDN_MERCHANT}/55a03110b2400b778d485de2c8d064c0.woff2') format('woff2');
2168
+ font-weight: 300;
2169
+ font-style: normal;
2170
+ font-display: swap;
2171
+ }
2172
+ @font-face {
2173
+ font-family: 'Pilat';
2174
+ src: url('${CDN_MERCHANT}/e968c9cc76e48ff6111c90534549bbf9.woff2') format('woff2');
2175
+ font-weight: 400;
2176
+ font-style: normal;
2177
+ font-display: swap;
2178
+ }
2179
+ @font-face {
2180
+ font-family: 'Pilat';
2181
+ src: url('${CDN_MERCHANT}/ed4fe74e88aaacc6978f06a862e75b08.woff2') format('woff2');
2182
+ font-weight: 600;
2183
+ font-style: normal;
2184
+ font-display: swap;
2185
+ }
2186
+ @font-face {
2187
+ font-family: 'Pilat';
2188
+ src: url('${CDN_MERCHANT}/7450f429979af7eaa8fa4d4d91cee927.woff2') format('woff2');
2189
+ font-weight: 700;
2190
+ font-style: normal;
2191
+ font-display: swap;
2192
+ }
2193
+ @font-face {
2194
+ font-family: 'Pilat';
2195
+ src: url('${CDN_MERCHANT}/218d647ff7690c1e312f6943e29af375.woff2') format('woff2');
2142
2196
  font-weight: 800;
2143
2197
  font-style: normal;
2144
2198
  font-display: swap;
@@ -2148,35 +2202,35 @@ var fontFacesCSS = `
2148
2202
 
2149
2203
  @font-face {
2150
2204
  font-family: 'Aktiv Grotesk';
2151
- src: url('${CDN_BASE}/Pilat_Test_Light_c4650750bb/Pilat_Test_Light_c4650750bb.otf') format('opentype');
2205
+ src: url('${CDN_STRAPI}/Pilat_Test_Light_c4650750bb/Pilat_Test_Light_c4650750bb.otf') format('opentype');
2152
2206
  font-weight: 300;
2153
2207
  font-style: normal;
2154
2208
  font-display: swap;
2155
2209
  }
2156
2210
  @font-face {
2157
2211
  font-family: 'Aktiv Grotesk';
2158
- src: url('${CDN_BASE}/Pilat_Test_Book_5cb49cd592/Pilat_Test_Book_5cb49cd592.otf') format('opentype');
2212
+ src: url('${CDN_STRAPI}/Pilat_Test_Book_5cb49cd592/Pilat_Test_Book_5cb49cd592.otf') format('opentype');
2159
2213
  font-weight: 400;
2160
2214
  font-style: normal;
2161
2215
  font-display: swap;
2162
2216
  }
2163
2217
  @font-face {
2164
2218
  font-family: 'Aktiv Grotesk';
2165
- src: url('${CDN_BASE}/Pilat_Test_Demi_e9bed59107/Pilat_Test_Demi_e9bed59107.otf') format('opentype');
2219
+ src: url('${CDN_STRAPI}/Pilat_Test_Demi_e9bed59107/Pilat_Test_Demi_e9bed59107.otf') format('opentype');
2166
2220
  font-weight: 500;
2167
2221
  font-style: normal;
2168
2222
  font-display: swap;
2169
2223
  }
2170
2224
  @font-face {
2171
2225
  font-family: 'Aktiv Grotesk';
2172
- src: url('${CDN_BASE}/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');
2226
+ src: url('${CDN_STRAPI}/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');
2173
2227
  font-weight: 600;
2174
2228
  font-style: normal;
2175
2229
  font-display: swap;
2176
2230
  }
2177
2231
  @font-face {
2178
2232
  font-family: 'Aktiv Grotesk';
2179
- src: url('${CDN_BASE}/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');
2233
+ src: url('${CDN_STRAPI}/Pilat_Test_Bold_195d1b44fa/Pilat_Test_Bold_195d1b44fa.otf') format('opentype');
2180
2234
  font-weight: 700;
2181
2235
  font-style: normal;
2182
2236
  font-display: swap;
@@ -2207,999 +2261,1008 @@ FontLoader.displayName = "FontLoader";
2207
2261
 
2208
2262
  // src/index.tsx
2209
2263
  var import_jsx_runtime = require("react/jsx-runtime");
2210
- var themeConfig = (mode = "dark", productContext = defaultProductContext) => ({
2211
- colors: colors[mode],
2212
- spacing,
2213
- radius,
2214
- shadow,
2215
- fonts,
2216
- typography: {
2217
- primary: fonts.body,
2218
- heading: fonts.heading,
2219
- body: fonts.body
2220
- },
2221
- typographyTokens: getTypographyTokens(productContext),
2222
- productContext,
2223
- sizing: {
2224
- button: (size) => {
2225
- const configs = {
2226
- xl: {
2227
- height: 64,
2228
- padding: 20,
2229
- fontSize: 20,
2230
- sublabelFontSize: 18,
2231
- spinnerSize: 24,
2232
- iconSize: 32,
2233
- iconContainerSize: 64,
2234
- iconPadding: 20,
2235
- loadingPadding: 40,
2236
- borderRadius: 8,
2237
- labelIconSize: 18,
2238
- labelIconGap: 6
2239
- },
2240
- lg: {
2241
- height: 56,
2242
- padding: 20,
2243
- fontSize: 18,
2244
- sublabelFontSize: 16,
2245
- spinnerSize: 24,
2246
- iconSize: 32,
2247
- iconContainerSize: 56,
2248
- iconPadding: 20,
2249
- loadingPadding: 36,
2250
- borderRadius: 8,
2251
- labelIconSize: 16,
2252
- labelIconGap: 6
2253
- },
2254
- md: {
2255
- height: 48,
2256
- padding: 20,
2257
- fontSize: 16,
2258
- sublabelFontSize: 14,
2259
- spinnerSize: 20,
2260
- iconSize: 28,
2261
- iconContainerSize: 48,
2262
- iconPadding: 20,
2263
- loadingPadding: 32,
2264
- borderRadius: 8,
2265
- labelIconSize: 14,
2266
- labelIconGap: 4
2267
- },
2268
- sm: {
2269
- height: 40,
2270
- padding: 20,
2271
- fontSize: 14,
2272
- sublabelFontSize: 12,
2273
- spinnerSize: 16,
2274
- iconSize: 28,
2275
- iconContainerSize: 40,
2276
- iconPadding: 20,
2277
- loadingPadding: 28,
2278
- borderRadius: 4,
2279
- labelIconSize: 12,
2280
- labelIconGap: 4
2281
- },
2282
- xs: {
2283
- height: 32,
2284
- padding: 20,
2285
- fontSize: 12,
2286
- sublabelFontSize: 10,
2287
- spinnerSize: 16,
2288
- iconSize: 24,
2289
- iconContainerSize: 32,
2290
- iconPadding: 20,
2291
- loadingPadding: 28,
2292
- borderRadius: 4,
2293
- labelIconSize: 10,
2294
- labelIconGap: 4
2295
- }
2296
- };
2297
- return configs[size];
2298
- },
2299
- flexButton: (size) => {
2300
- const configs = {
2301
- xl: {
2302
- height: 36,
2303
- padding: 4,
2304
- fontSize: 16,
2305
- spinnerSize: 28,
2306
- iconSize: 20,
2307
- borderRadius: 4
2308
- },
2309
- lg: {
2310
- height: 32,
2311
- padding: 4,
2312
- fontSize: 14,
2313
- spinnerSize: 24,
2314
- iconSize: 18,
2315
- borderRadius: 4
2316
- },
2317
- md: {
2318
- height: 28,
2319
- padding: 2,
2320
- fontSize: 14,
2321
- spinnerSize: 24,
2322
- iconSize: 16,
2323
- borderRadius: 2
2324
- },
2325
- sm: {
2326
- height: 22,
2327
- padding: 2,
2328
- fontSize: 12,
2329
- spinnerSize: 16,
2330
- iconSize: 14,
2331
- borderRadius: 2
2332
- },
2333
- xs: {
2334
- height: 20,
2335
- padding: 2,
2336
- fontSize: 12,
2337
- spinnerSize: 16,
2338
- iconSize: 12,
2339
- borderRadius: 2
2340
- }
2341
- };
2342
- return configs[size];
2343
- },
2344
- checkbox: (size) => {
2345
- const configs = {
2346
- xl: {
2347
- size: 22,
2348
- fontSize: 18,
2349
- descriptionFontSize: 16,
2350
- labelGap: 12,
2351
- textGap: 4,
2352
- borderRadius: 2
2353
- },
2354
- lg: {
2355
- size: 20,
2356
- fontSize: 16,
2357
- descriptionFontSize: 14,
2358
- labelGap: 10,
2359
- textGap: 2,
2360
- borderRadius: 2
2361
- },
2362
- md: {
2363
- size: 18,
2364
- fontSize: 16,
2365
- descriptionFontSize: 14,
2366
- labelGap: 8,
2367
- textGap: 2,
2368
- borderRadius: 2
2369
- },
2370
- sm: {
2371
- size: 16,
2372
- fontSize: 14,
2373
- descriptionFontSize: 12,
2374
- labelGap: 8,
2375
- textGap: 0,
2376
- borderRadius: 2
2377
- }
2378
- };
2379
- return configs[size];
2380
- },
2381
- radio: (size) => {
2382
- const configs = {
2383
- xl: {
2384
- size: 24,
2385
- fontSize: 20,
2386
- lineHeight: 22,
2387
- descriptionFontSize: 18,
2388
- descriptionLineHeight: 20,
2389
- labelGap: 12,
2390
- textGap: 4,
2391
- borderWidth: 2
2392
- },
2393
- lg: {
2394
- size: 20,
2395
- fontSize: 18,
2396
- lineHeight: 20,
2397
- descriptionFontSize: 16,
2398
- descriptionLineHeight: 18,
2399
- labelGap: 10,
2400
- textGap: 2,
2401
- borderWidth: 2
2402
- },
2403
- md: {
2404
- size: 18,
2405
- fontSize: 16,
2406
- lineHeight: 18,
2407
- descriptionFontSize: 14,
2408
- descriptionLineHeight: 16,
2409
- labelGap: 8,
2410
- textGap: 2,
2411
- borderWidth: 1
2412
- },
2413
- sm: {
2414
- size: 16,
2415
- fontSize: 14,
2416
- lineHeight: 16,
2417
- descriptionFontSize: 12,
2418
- descriptionLineHeight: 14,
2419
- labelGap: 8,
2420
- textGap: 0,
2421
- borderWidth: 1
2422
- }
2423
- };
2424
- return configs[size];
2425
- },
2426
- input: (size) => {
2427
- const configs = {
2428
- xl: {
2429
- height: 64,
2430
- paddingVertical: 12,
2431
- paddingHorizontal: 12,
2432
- fontSize: 20,
2433
- iconSize: 18,
2434
- radius: 8,
2435
- borderWidth: 2,
2436
- fieldGap: 8,
2437
- lineHeight: 20
2438
- },
2439
- lg: {
2440
- height: 56,
2441
- paddingVertical: 14,
2442
- paddingHorizontal: 12,
2443
- fontSize: 18,
2444
- iconSize: 18,
2445
- radius: 8,
2446
- borderWidth: 2,
2447
- fieldGap: 6,
2448
- lineHeight: 18
2449
- },
2450
- md: {
2451
- height: 48,
2452
- paddingVertical: 11,
2453
- paddingHorizontal: 12,
2454
- fontSize: 16,
2455
- iconSize: 18,
2456
- radius: 8,
2457
- borderWidth: 1,
2458
- fieldGap: 4,
2459
- lineHeight: 16
2460
- },
2461
- sm: {
2462
- height: 40,
2463
- paddingVertical: 7,
2464
- paddingHorizontal: 10,
2465
- fontSize: 14,
2466
- iconSize: 18,
2467
- radius: 4,
2468
- borderWidth: 1,
2469
- fieldGap: 4,
2470
- lineHeight: 14
2471
- },
2472
- xs: {
2473
- height: 32,
2474
- paddingVertical: 7,
2475
- paddingHorizontal: 10,
2476
- fontSize: 12,
2477
- iconSize: 18,
2478
- radius: 4,
2479
- borderWidth: 1,
2480
- fieldGap: 4,
2481
- lineHeight: 10
2482
- }
2483
- };
2484
- return configs[size];
2485
- },
2486
- inputPin: (size) => {
2487
- const configs = {
2488
- xl: {
2489
- size: 64,
2490
- gap: 10,
2491
- fontSize: 20,
2492
- radius: 8,
2493
- borderWidth: 1,
2494
- fieldGap: 8
2495
- },
2496
- lg: {
2497
- size: 56,
2498
- gap: 8,
2499
- fontSize: 18,
2500
- radius: 8,
2501
- borderWidth: 1,
2502
- fieldGap: 6
2503
- },
2504
- md: {
2505
- size: 48,
2506
- gap: 6,
2507
- fontSize: 16,
2508
- radius: 8,
2509
- borderWidth: 1,
2510
- fieldGap: 4
2511
- },
2512
- sm: {
2513
- size: 40,
2514
- gap: 4,
2515
- fontSize: 14,
2516
- radius: 4,
2517
- borderWidth: 1,
2518
- fieldGap: 4
2519
- },
2520
- xs: {
2521
- size: 32,
2522
- gap: 4,
2523
- fontSize: 12,
2524
- radius: 4,
2525
- borderWidth: 1,
2526
- fieldGap: 4
2527
- }
2528
- };
2529
- return configs[size];
2530
- },
2531
- textarea: (size) => {
2532
- const configs = {
2533
- xl: {
2534
- height: 144,
2535
- padding: spacing.xl,
2536
- fontSize: 20,
2537
- iconSize: 32,
2538
- radius: 8
2539
- },
2540
- lg: {
2541
- height: 128,
2542
- padding: spacing.l,
2543
- fontSize: 18,
2544
- iconSize: 28,
2545
- radius: 8
2546
- },
2547
- md: {
2548
- height: 112,
2549
- padding: spacing.m,
2550
- fontSize: 16,
2551
- iconSize: 24,
2552
- radius: 8
2553
- },
2554
- sm: {
2555
- height: 96,
2556
- padding: spacing.s,
2557
- fontSize: 14,
2558
- iconSize: 20,
2559
- radius: 4
2560
- },
2561
- xs: {
2562
- height: 80,
2563
- padding: spacing.xs,
2564
- fontSize: 12,
2565
- iconSize: 16,
2566
- radius: 4
2567
- }
2568
- };
2569
- return configs[size];
2570
- },
2571
- switch: (size) => {
2572
- const configs = {
2573
- xl: {
2574
- width: 40,
2575
- height: 22,
2576
- knobSize: 18,
2577
- fontSize: 20,
2578
- lineHeight: 22,
2579
- descriptionFontSize: 18,
2580
- descriptionLineHeight: 20,
2581
- labelGap: 12,
2582
- textGap: 4,
2583
- frameBorderRadius: 4,
2584
- knobBorderRadius: 2
2585
- },
2586
- lg: {
2587
- width: 36,
2588
- height: 20,
2589
- knobSize: 16,
2590
- fontSize: 18,
2591
- lineHeight: 20,
2592
- descriptionFontSize: 16,
2593
- descriptionLineHeight: 18,
2594
- labelGap: 10,
2595
- textGap: 2,
2596
- frameBorderRadius: 4,
2597
- knobBorderRadius: 2
2598
- },
2599
- md: {
2600
- width: 32,
2601
- height: 18,
2602
- knobSize: 14,
2603
- fontSize: 16,
2604
- lineHeight: 18,
2605
- descriptionFontSize: 14,
2606
- descriptionLineHeight: 16,
2607
- labelGap: 8,
2608
- textGap: 2,
2609
- frameBorderRadius: 2,
2610
- knobBorderRadius: 2
2611
- },
2612
- sm: {
2613
- width: 28,
2614
- height: 16,
2615
- knobSize: 12,
2616
- fontSize: 14,
2617
- lineHeight: 16,
2618
- descriptionFontSize: 12,
2619
- descriptionLineHeight: 14,
2620
- labelGap: 8,
2621
- textGap: 0,
2622
- frameBorderRadius: 2,
2623
- knobBorderRadius: 2
2624
- }
2625
- };
2626
- return configs[size];
2627
- },
2628
- avatar: (size) => {
2629
- const configs = {
2630
- xl: {
2631
- size: 64,
2632
- fontSize: 24,
2633
- iconSize: 32,
2634
- badgeSize: 20,
2635
- badgeOffsetCircle: { right: -4, top: -4 },
2636
- badgeOffsetSquare: { right: -8, top: -8 },
2637
- borderRadiusSquare: radius.avatarLarge,
2638
- borderRadiusCircle: radius.avatarCircle
2639
- },
2640
- lg: {
2641
- size: 56,
2642
- fontSize: 20,
2643
- iconSize: 28,
2644
- badgeSize: 20,
2645
- badgeOffsetCircle: { right: -4, top: -4 },
2646
- badgeOffsetSquare: { right: -8, top: -8 },
2647
- borderRadiusSquare: radius.avatarLarge,
2648
- borderRadiusCircle: radius.avatarCircle
2649
- },
2650
- md: {
2651
- size: 48,
2652
- fontSize: 18,
2653
- iconSize: 24,
2654
- badgeSize: 20,
2655
- badgeOffsetCircle: { right: -5, top: -5 },
2656
- badgeOffsetSquare: { right: -8, top: -8 },
2657
- borderRadiusSquare: radius.avatarLarge,
2658
- borderRadiusCircle: radius.avatarCircle
2659
- },
2660
- sm: {
2661
- size: 40,
2662
- fontSize: 16,
2663
- iconSize: 20,
2664
- badgeSize: 20,
2665
- badgeOffsetCircle: { right: -6, top: -6 },
2666
- badgeOffsetSquare: { right: -8, top: -8 },
2667
- borderRadiusSquare: radius.avatarLarge,
2668
- borderRadiusCircle: radius.avatarCircle
2669
- },
2670
- xs: {
2671
- size: 32,
2672
- fontSize: 14,
2673
- iconSize: 16,
2674
- badgeSize: 20,
2675
- badgeOffsetCircle: { right: -6, top: -6 },
2676
- badgeOffsetSquare: { right: -8, top: -8 },
2677
- borderRadiusSquare: radius.avatarSmall,
2678
- borderRadiusCircle: radius.avatarCircle
2679
- }
2680
- };
2681
- return configs[size];
2682
- },
2683
- tag: (size) => {
2684
- const configs = {
2685
- xl: {
2686
- height: 48,
2687
- padding: 20,
2688
- fontSize: 20,
2689
- gap: 10,
2690
- iconSize: 24,
2691
- radius: radius.tagLarge
2692
- },
2693
- lg: {
2694
- height: 40,
2695
- padding: 16,
2696
- fontSize: 18,
2697
- gap: 8,
2698
- iconSize: 24,
2699
- radius: radius.tagLarge
2700
- },
2701
- md: {
2702
- height: 32,
2703
- padding: 12,
2704
- fontSize: 16,
2705
- gap: 6,
2706
- iconSize: 16,
2707
- radius: radius.tagSmall
2708
- },
2709
- sm: {
2710
- height: 24,
2711
- padding: 8,
2712
- fontSize: 14,
2713
- gap: 4,
2714
- iconSize: 16,
2715
- radius: radius.tagSmall
2716
- },
2717
- xs: {
2718
- height: 20,
2719
- padding: 6,
2720
- fontSize: 12,
2721
- gap: 4,
2722
- iconSize: 16,
2723
- radius: radius.tagSmall
2724
- }
2725
- };
2726
- return configs[size];
2727
- },
2728
- divider: (size) => {
2729
- const configs = {
2730
- lg: { height: 18, fontSize: 16, lineWeight: 1 },
2731
- md: { height: 16, fontSize: 14, lineWeight: 1 },
2732
- sm: { height: 14, fontSize: 12, lineWeight: 1 }
2733
- };
2734
- return configs[size];
2735
- },
2736
- spinner: (size) => {
2737
- const configs = {
2738
- xl: { size: 96, strokeWidth: 10 },
2739
- lg: { size: 48, strokeWidth: 5 },
2740
- md: { size: 24, strokeWidth: 2 },
2741
- sm: { size: 16, strokeWidth: 2 },
2742
- xs: { size: 8, strokeWidth: 1 }
2743
- };
2744
- return configs[size];
2745
- },
2746
- tabs: (size) => {
2747
- const configs = {
2748
- xl: {
2749
- height: 64,
2750
- fontSize: 20,
2751
- iconSize: 18,
2752
- gap: 6,
2753
- paddingHorizontal: 20
2754
- },
2755
- lg: {
2756
- height: 56,
2757
- fontSize: 18,
2758
- iconSize: 18,
2759
- gap: 6,
2760
- paddingHorizontal: 20
2761
- },
2762
- md: {
2763
- height: 48,
2764
- fontSize: 16,
2765
- iconSize: 18,
2766
- gap: 6,
2767
- paddingHorizontal: 20
2768
- },
2769
- sm: {
2770
- height: 40,
2771
- fontSize: 14,
2772
- iconSize: 18,
2773
- gap: 6,
2774
- paddingHorizontal: 20
2775
- }
2776
- };
2777
- return configs[size];
2778
- },
2779
- segmented: (size) => {
2780
- const configs = {
2781
- xl: {
2782
- height: 64,
2783
- containerPadding: 4,
2784
- containerRadius: 8,
2785
- itemHeight: 56,
2786
- itemPaddingHorizontal: 20,
2787
- itemPaddingVertical: 10,
2788
- itemRadius: 6,
2789
- fontSize: 20,
2790
- lineHeight: 22,
2791
- iconSize: 24,
2792
- gap: 8
2793
- },
2794
- lg: {
2795
- height: 56,
2796
- containerPadding: 4,
2797
- containerRadius: 8,
2798
- itemHeight: 48,
2799
- itemPaddingHorizontal: 20,
2800
- itemPaddingVertical: 10,
2801
- itemRadius: 6,
2802
- fontSize: 18,
2803
- lineHeight: 20,
2804
- iconSize: 24,
2805
- gap: 8
2806
- },
2807
- md: {
2808
- height: 48,
2809
- containerPadding: 4,
2810
- containerRadius: 8,
2811
- itemHeight: 40,
2812
- itemPaddingHorizontal: 16,
2813
- itemPaddingVertical: 8,
2814
- itemRadius: 6,
2815
- fontSize: 16,
2816
- lineHeight: 18,
2817
- iconSize: 24,
2818
- gap: 6
2819
- },
2820
- sm: {
2821
- height: 40,
2822
- containerPadding: 4,
2823
- containerRadius: 4,
2824
- itemHeight: 32,
2825
- itemPaddingHorizontal: 12,
2826
- itemPaddingVertical: 6,
2827
- itemRadius: 2,
2828
- fontSize: 14,
2829
- lineHeight: 16,
2830
- iconSize: 20,
2831
- gap: 4
2832
- }
2833
- };
2834
- return configs[size];
2835
- },
2836
- tabsSegmented: (size) => {
2837
- const configs = {
2838
- xl: {
2839
- height: 64,
2840
- containerPadding: 4,
2841
- containerRadius: 4,
2842
- itemPaddingHorizontal: 16,
2843
- itemPaddingVertical: 18,
2844
- itemRadius: 2,
2845
- fontSize: 20,
2846
- lineHeight: 22,
2847
- iconSize: 24,
2848
- gap: 8
2849
- },
2850
- lg: {
2851
- height: 56,
2852
- containerPadding: 4,
2853
- containerRadius: 4,
2854
- itemPaddingHorizontal: 16,
2855
- itemPaddingVertical: 14,
2856
- itemRadius: 2,
2857
- fontSize: 18,
2858
- lineHeight: 20,
2859
- iconSize: 24,
2860
- gap: 8
2861
- },
2862
- md: {
2863
- height: 48,
2864
- containerPadding: 4,
2865
- containerRadius: 4,
2866
- itemPaddingHorizontal: 12,
2867
- itemPaddingVertical: 11,
2868
- itemRadius: 2,
2869
- fontSize: 16,
2870
- lineHeight: 18,
2871
- iconSize: 24,
2872
- gap: 6
2873
- },
2874
- sm: {
2875
- height: 40,
2876
- containerPadding: 3,
2877
- containerRadius: 2,
2878
- itemPaddingHorizontal: 12,
2879
- itemPaddingVertical: 8,
2880
- itemRadius: 2,
2881
- fontSize: 14,
2882
- lineHeight: 16,
2883
- iconSize: 20,
2884
- gap: 6
2885
- }
2886
- };
2887
- return configs[size];
2888
- },
2889
- checkboxTagGroup: (size) => {
2890
- const configs = {
2891
- xl: {
2892
- height: 64,
2893
- paddingHorizontal: 16,
2894
- paddingVertical: 21,
2895
- fontSize: 20,
2896
- lineHeight: 22,
2897
- gap: 8,
2898
- borderRadius: 4
2899
- },
2900
- lg: {
2901
- height: 56,
2902
- paddingHorizontal: 16,
2903
- paddingVertical: 18,
2904
- fontSize: 18,
2905
- lineHeight: 20,
2906
- gap: 8,
2907
- borderRadius: 4
2908
- },
2909
- md: {
2910
- height: 48,
2911
- paddingHorizontal: 12,
2912
- paddingVertical: 15,
2913
- fontSize: 16,
2914
- lineHeight: 18,
2915
- gap: 8,
2916
- borderRadius: 2
2917
- },
2918
- sm: {
2919
- height: 40,
2264
+ var themeConfig = (mode = "dark", productContext = defaultProductContext) => {
2265
+ const contextFonts = getFonts(productContext);
2266
+ return {
2267
+ colors: colors[mode],
2268
+ spacing,
2269
+ radius,
2270
+ shadow,
2271
+ fonts: contextFonts,
2272
+ typography: {
2273
+ primary: contextFonts.body,
2274
+ heading: contextFonts.heading,
2275
+ body: contextFonts.body
2276
+ },
2277
+ typographyTokens: getTypographyTokens(productContext),
2278
+ productContext,
2279
+ sizing: {
2280
+ button: (size) => {
2281
+ const configs = {
2282
+ xl: {
2283
+ height: 64,
2284
+ padding: 20,
2285
+ fontSize: 20,
2286
+ sublabelFontSize: 18,
2287
+ spinnerSize: 24,
2288
+ iconSize: 32,
2289
+ iconContainerSize: 64,
2290
+ iconPadding: 20,
2291
+ loadingPadding: 40,
2292
+ borderRadius: 8,
2293
+ labelIconSize: 18,
2294
+ labelIconGap: 6
2295
+ },
2296
+ lg: {
2297
+ height: 56,
2298
+ padding: 20,
2299
+ fontSize: 18,
2300
+ sublabelFontSize: 16,
2301
+ spinnerSize: 24,
2302
+ iconSize: 32,
2303
+ iconContainerSize: 56,
2304
+ iconPadding: 20,
2305
+ loadingPadding: 36,
2306
+ borderRadius: 8,
2307
+ labelIconSize: 16,
2308
+ labelIconGap: 6
2309
+ },
2310
+ md: {
2311
+ height: 48,
2312
+ padding: 20,
2313
+ fontSize: 16,
2314
+ sublabelFontSize: 14,
2315
+ spinnerSize: 20,
2316
+ iconSize: 28,
2317
+ iconContainerSize: 48,
2318
+ iconPadding: 20,
2319
+ loadingPadding: 32,
2320
+ borderRadius: 8,
2321
+ labelIconSize: 14,
2322
+ labelIconGap: 4
2323
+ },
2324
+ sm: {
2325
+ height: 40,
2326
+ padding: 20,
2327
+ fontSize: 14,
2328
+ sublabelFontSize: 12,
2329
+ spinnerSize: 16,
2330
+ iconSize: 28,
2331
+ iconContainerSize: 40,
2332
+ iconPadding: 20,
2333
+ loadingPadding: 28,
2334
+ borderRadius: 4,
2335
+ labelIconSize: 12,
2336
+ labelIconGap: 4
2337
+ },
2338
+ xs: {
2339
+ height: 32,
2340
+ padding: 20,
2341
+ fontSize: 12,
2342
+ sublabelFontSize: 10,
2343
+ spinnerSize: 16,
2344
+ iconSize: 24,
2345
+ iconContainerSize: 32,
2346
+ iconPadding: 20,
2347
+ loadingPadding: 28,
2348
+ borderRadius: 4,
2349
+ labelIconSize: 10,
2350
+ labelIconGap: 4
2351
+ }
2352
+ };
2353
+ return configs[size];
2354
+ },
2355
+ flexButton: (size) => {
2356
+ const configs = {
2357
+ xl: {
2358
+ height: 36,
2359
+ padding: 4,
2360
+ fontSize: 16,
2361
+ spinnerSize: 28,
2362
+ iconSize: 20,
2363
+ borderRadius: 4
2364
+ },
2365
+ lg: {
2366
+ height: 32,
2367
+ padding: 4,
2368
+ fontSize: 14,
2369
+ spinnerSize: 24,
2370
+ iconSize: 18,
2371
+ borderRadius: 4
2372
+ },
2373
+ md: {
2374
+ height: 28,
2375
+ padding: 2,
2376
+ fontSize: 14,
2377
+ spinnerSize: 24,
2378
+ iconSize: 16,
2379
+ borderRadius: 2
2380
+ },
2381
+ sm: {
2382
+ height: 22,
2383
+ padding: 2,
2384
+ fontSize: 12,
2385
+ spinnerSize: 16,
2386
+ iconSize: 14,
2387
+ borderRadius: 2
2388
+ },
2389
+ xs: {
2390
+ height: 20,
2391
+ padding: 2,
2392
+ fontSize: 12,
2393
+ spinnerSize: 16,
2394
+ iconSize: 12,
2395
+ borderRadius: 2
2396
+ }
2397
+ };
2398
+ return configs[size];
2399
+ },
2400
+ checkbox: (size) => {
2401
+ const configs = {
2402
+ xl: {
2403
+ size: 22,
2404
+ fontSize: 18,
2405
+ descriptionFontSize: 16,
2406
+ labelGap: 12,
2407
+ textGap: 4,
2408
+ borderRadius: 2
2409
+ },
2410
+ lg: {
2411
+ size: 20,
2412
+ fontSize: 16,
2413
+ descriptionFontSize: 14,
2414
+ labelGap: 10,
2415
+ textGap: 2,
2416
+ borderRadius: 2
2417
+ },
2418
+ md: {
2419
+ size: 18,
2420
+ fontSize: 16,
2421
+ descriptionFontSize: 14,
2422
+ labelGap: 8,
2423
+ textGap: 2,
2424
+ borderRadius: 2
2425
+ },
2426
+ sm: {
2427
+ size: 16,
2428
+ fontSize: 14,
2429
+ descriptionFontSize: 12,
2430
+ labelGap: 8,
2431
+ textGap: 0,
2432
+ borderRadius: 2
2433
+ }
2434
+ };
2435
+ return configs[size];
2436
+ },
2437
+ radio: (size) => {
2438
+ const configs = {
2439
+ xl: {
2440
+ size: 24,
2441
+ fontSize: 20,
2442
+ lineHeight: 22,
2443
+ descriptionFontSize: 18,
2444
+ descriptionLineHeight: 20,
2445
+ labelGap: 12,
2446
+ textGap: 4,
2447
+ borderWidth: 2
2448
+ },
2449
+ lg: {
2450
+ size: 20,
2451
+ fontSize: 18,
2452
+ lineHeight: 20,
2453
+ descriptionFontSize: 16,
2454
+ descriptionLineHeight: 18,
2455
+ labelGap: 10,
2456
+ textGap: 2,
2457
+ borderWidth: 2
2458
+ },
2459
+ md: {
2460
+ size: 18,
2461
+ fontSize: 16,
2462
+ lineHeight: 18,
2463
+ descriptionFontSize: 14,
2464
+ descriptionLineHeight: 16,
2465
+ labelGap: 8,
2466
+ textGap: 2,
2467
+ borderWidth: 1
2468
+ },
2469
+ sm: {
2470
+ size: 16,
2471
+ fontSize: 14,
2472
+ lineHeight: 16,
2473
+ descriptionFontSize: 12,
2474
+ descriptionLineHeight: 14,
2475
+ labelGap: 8,
2476
+ textGap: 0,
2477
+ borderWidth: 1
2478
+ }
2479
+ };
2480
+ return configs[size];
2481
+ },
2482
+ input: (size) => {
2483
+ const configs = {
2484
+ xl: {
2485
+ height: 64,
2486
+ paddingVertical: 12,
2487
+ paddingHorizontal: 12,
2488
+ fontSize: 20,
2489
+ iconSize: 18,
2490
+ radius: 8,
2491
+ borderWidth: 2,
2492
+ fieldGap: 8,
2493
+ lineHeight: 20
2494
+ },
2495
+ lg: {
2496
+ height: 56,
2497
+ paddingVertical: 14,
2498
+ paddingHorizontal: 12,
2499
+ fontSize: 18,
2500
+ iconSize: 18,
2501
+ radius: 8,
2502
+ borderWidth: 2,
2503
+ fieldGap: 6,
2504
+ lineHeight: 18
2505
+ },
2506
+ md: {
2507
+ height: 48,
2508
+ paddingVertical: 11,
2509
+ paddingHorizontal: 12,
2510
+ fontSize: 16,
2511
+ iconSize: 18,
2512
+ radius: 8,
2513
+ borderWidth: 1,
2514
+ fieldGap: 4,
2515
+ lineHeight: 16
2516
+ },
2517
+ sm: {
2518
+ height: 40,
2519
+ paddingVertical: 7,
2520
+ paddingHorizontal: 10,
2521
+ fontSize: 14,
2522
+ iconSize: 18,
2523
+ radius: 4,
2524
+ borderWidth: 1,
2525
+ fieldGap: 4,
2526
+ lineHeight: 14
2527
+ },
2528
+ xs: {
2529
+ height: 32,
2530
+ paddingVertical: 7,
2531
+ paddingHorizontal: 10,
2532
+ fontSize: 12,
2533
+ iconSize: 18,
2534
+ radius: 4,
2535
+ borderWidth: 1,
2536
+ fieldGap: 4,
2537
+ lineHeight: 10
2538
+ }
2539
+ };
2540
+ return configs[size];
2541
+ },
2542
+ inputPin: (size) => {
2543
+ const configs = {
2544
+ xl: {
2545
+ size: 64,
2546
+ gap: 10,
2547
+ fontSize: 20,
2548
+ radius: 8,
2549
+ borderWidth: 1,
2550
+ fieldGap: 8
2551
+ },
2552
+ lg: {
2553
+ size: 56,
2554
+ gap: 8,
2555
+ fontSize: 18,
2556
+ radius: 8,
2557
+ borderWidth: 1,
2558
+ fieldGap: 6
2559
+ },
2560
+ md: {
2561
+ size: 48,
2562
+ gap: 6,
2563
+ fontSize: 16,
2564
+ radius: 8,
2565
+ borderWidth: 1,
2566
+ fieldGap: 4
2567
+ },
2568
+ sm: {
2569
+ size: 40,
2570
+ gap: 4,
2571
+ fontSize: 14,
2572
+ radius: 4,
2573
+ borderWidth: 1,
2574
+ fieldGap: 4
2575
+ },
2576
+ xs: {
2577
+ size: 32,
2578
+ gap: 4,
2579
+ fontSize: 12,
2580
+ radius: 4,
2581
+ borderWidth: 1,
2582
+ fieldGap: 4
2583
+ }
2584
+ };
2585
+ return configs[size];
2586
+ },
2587
+ textarea: (size) => {
2588
+ const configs = {
2589
+ xl: {
2590
+ height: 144,
2591
+ padding: spacing.xl,
2592
+ fontSize: 20,
2593
+ iconSize: 32,
2594
+ radius: 8
2595
+ },
2596
+ lg: {
2597
+ height: 128,
2598
+ padding: spacing.l,
2599
+ fontSize: 18,
2600
+ iconSize: 28,
2601
+ radius: 8
2602
+ },
2603
+ md: {
2604
+ height: 112,
2605
+ padding: spacing.m,
2606
+ fontSize: 16,
2607
+ iconSize: 24,
2608
+ radius: 8
2609
+ },
2610
+ sm: {
2611
+ height: 96,
2612
+ padding: spacing.s,
2613
+ fontSize: 14,
2614
+ iconSize: 20,
2615
+ radius: 4
2616
+ },
2617
+ xs: {
2618
+ height: 80,
2619
+ padding: spacing.xs,
2620
+ fontSize: 12,
2621
+ iconSize: 16,
2622
+ radius: 4
2623
+ }
2624
+ };
2625
+ return configs[size];
2626
+ },
2627
+ switch: (size) => {
2628
+ const configs = {
2629
+ xl: {
2630
+ width: 40,
2631
+ height: 22,
2632
+ knobSize: 18,
2633
+ fontSize: 20,
2634
+ lineHeight: 22,
2635
+ descriptionFontSize: 18,
2636
+ descriptionLineHeight: 20,
2637
+ labelGap: 12,
2638
+ textGap: 4,
2639
+ frameBorderRadius: 4,
2640
+ knobBorderRadius: 2
2641
+ },
2642
+ lg: {
2643
+ width: 36,
2644
+ height: 20,
2645
+ knobSize: 16,
2646
+ fontSize: 18,
2647
+ lineHeight: 20,
2648
+ descriptionFontSize: 16,
2649
+ descriptionLineHeight: 18,
2650
+ labelGap: 10,
2651
+ textGap: 2,
2652
+ frameBorderRadius: 4,
2653
+ knobBorderRadius: 2
2654
+ },
2655
+ md: {
2656
+ width: 32,
2657
+ height: 18,
2658
+ knobSize: 14,
2659
+ fontSize: 16,
2660
+ lineHeight: 18,
2661
+ descriptionFontSize: 14,
2662
+ descriptionLineHeight: 16,
2663
+ labelGap: 8,
2664
+ textGap: 2,
2665
+ frameBorderRadius: 2,
2666
+ knobBorderRadius: 2
2667
+ },
2668
+ sm: {
2669
+ width: 28,
2670
+ height: 16,
2671
+ knobSize: 12,
2672
+ fontSize: 14,
2673
+ lineHeight: 16,
2674
+ descriptionFontSize: 12,
2675
+ descriptionLineHeight: 14,
2676
+ labelGap: 8,
2677
+ textGap: 0,
2678
+ frameBorderRadius: 2,
2679
+ knobBorderRadius: 2
2680
+ }
2681
+ };
2682
+ return configs[size];
2683
+ },
2684
+ avatar: (size) => {
2685
+ const configs = {
2686
+ xl: {
2687
+ size: 64,
2688
+ fontSize: 24,
2689
+ iconSize: 32,
2690
+ badgeSize: 20,
2691
+ badgeOffsetCircle: { right: -4, top: -4 },
2692
+ badgeOffsetSquare: { right: -8, top: -8 },
2693
+ borderRadiusSquare: radius.avatarLarge,
2694
+ borderRadiusCircle: radius.avatarCircle
2695
+ },
2696
+ lg: {
2697
+ size: 56,
2698
+ fontSize: 20,
2699
+ iconSize: 28,
2700
+ badgeSize: 20,
2701
+ badgeOffsetCircle: { right: -4, top: -4 },
2702
+ badgeOffsetSquare: { right: -8, top: -8 },
2703
+ borderRadiusSquare: radius.avatarLarge,
2704
+ borderRadiusCircle: radius.avatarCircle
2705
+ },
2706
+ md: {
2707
+ size: 48,
2708
+ fontSize: 18,
2709
+ iconSize: 24,
2710
+ badgeSize: 20,
2711
+ badgeOffsetCircle: { right: -5, top: -5 },
2712
+ badgeOffsetSquare: { right: -8, top: -8 },
2713
+ borderRadiusSquare: radius.avatarLarge,
2714
+ borderRadiusCircle: radius.avatarCircle
2715
+ },
2716
+ sm: {
2717
+ size: 40,
2718
+ fontSize: 16,
2719
+ iconSize: 20,
2720
+ badgeSize: 20,
2721
+ badgeOffsetCircle: { right: -6, top: -6 },
2722
+ badgeOffsetSquare: { right: -8, top: -8 },
2723
+ borderRadiusSquare: radius.avatarLarge,
2724
+ borderRadiusCircle: radius.avatarCircle
2725
+ },
2726
+ xs: {
2727
+ size: 32,
2728
+ fontSize: 14,
2729
+ iconSize: 16,
2730
+ badgeSize: 20,
2731
+ badgeOffsetCircle: { right: -6, top: -6 },
2732
+ badgeOffsetSquare: { right: -8, top: -8 },
2733
+ borderRadiusSquare: radius.avatarSmall,
2734
+ borderRadiusCircle: radius.avatarCircle
2735
+ }
2736
+ };
2737
+ return configs[size];
2738
+ },
2739
+ tag: (size) => {
2740
+ const configs = {
2741
+ xl: {
2742
+ height: 48,
2743
+ padding: 20,
2744
+ fontSize: 20,
2745
+ gap: 10,
2746
+ iconSize: 24,
2747
+ radius: radius.tagLarge
2748
+ },
2749
+ lg: {
2750
+ height: 40,
2751
+ padding: 16,
2752
+ fontSize: 18,
2753
+ gap: 8,
2754
+ iconSize: 24,
2755
+ radius: radius.tagLarge
2756
+ },
2757
+ md: {
2758
+ height: 32,
2759
+ padding: 12,
2760
+ fontSize: 16,
2761
+ gap: 6,
2762
+ iconSize: 16,
2763
+ radius: radius.tagSmall
2764
+ },
2765
+ sm: {
2766
+ height: 24,
2767
+ padding: 8,
2768
+ fontSize: 14,
2769
+ gap: 4,
2770
+ iconSize: 16,
2771
+ radius: radius.tagSmall
2772
+ },
2773
+ xs: {
2774
+ height: 20,
2775
+ padding: 6,
2776
+ fontSize: 12,
2777
+ gap: 4,
2778
+ iconSize: 16,
2779
+ radius: radius.tagSmall
2780
+ }
2781
+ };
2782
+ return configs[size];
2783
+ },
2784
+ divider: (size) => {
2785
+ const configs = {
2786
+ lg: { height: 18, fontSize: 16, lineWeight: 1 },
2787
+ md: { height: 16, fontSize: 14, lineWeight: 1 },
2788
+ sm: { height: 14, fontSize: 12, lineWeight: 1 }
2789
+ };
2790
+ return configs[size];
2791
+ },
2792
+ spinner: (size) => {
2793
+ const configs = {
2794
+ xl: { size: 96, strokeWidth: 10 },
2795
+ lg: { size: 48, strokeWidth: 5 },
2796
+ md: { size: 24, strokeWidth: 2 },
2797
+ sm: { size: 16, strokeWidth: 2 },
2798
+ xs: { size: 8, strokeWidth: 1 }
2799
+ };
2800
+ return configs[size];
2801
+ },
2802
+ tabs: (size) => {
2803
+ const configs = {
2804
+ xl: {
2805
+ height: 64,
2806
+ fontSize: 20,
2807
+ iconSize: 18,
2808
+ gap: 6,
2809
+ paddingHorizontal: 20
2810
+ },
2811
+ lg: {
2812
+ height: 56,
2813
+ fontSize: 18,
2814
+ iconSize: 18,
2815
+ gap: 6,
2816
+ paddingHorizontal: 20
2817
+ },
2818
+ md: {
2819
+ height: 48,
2820
+ fontSize: 16,
2821
+ iconSize: 18,
2822
+ gap: 6,
2823
+ paddingHorizontal: 20
2824
+ },
2825
+ sm: {
2826
+ height: 40,
2827
+ fontSize: 14,
2828
+ iconSize: 18,
2829
+ gap: 6,
2830
+ paddingHorizontal: 20
2831
+ }
2832
+ };
2833
+ return configs[size];
2834
+ },
2835
+ segmented: (size) => {
2836
+ const configs = {
2837
+ xl: {
2838
+ height: 64,
2839
+ containerPadding: 4,
2840
+ containerRadius: 8,
2841
+ itemHeight: 56,
2842
+ itemPaddingHorizontal: 20,
2843
+ itemPaddingVertical: 10,
2844
+ itemRadius: 6,
2845
+ fontSize: 20,
2846
+ lineHeight: 22,
2847
+ iconSize: 24,
2848
+ gap: 8
2849
+ },
2850
+ lg: {
2851
+ height: 56,
2852
+ containerPadding: 4,
2853
+ containerRadius: 8,
2854
+ itemHeight: 48,
2855
+ itemPaddingHorizontal: 20,
2856
+ itemPaddingVertical: 10,
2857
+ itemRadius: 6,
2858
+ fontSize: 18,
2859
+ lineHeight: 20,
2860
+ iconSize: 24,
2861
+ gap: 8
2862
+ },
2863
+ md: {
2864
+ height: 48,
2865
+ containerPadding: 4,
2866
+ containerRadius: 8,
2867
+ itemHeight: 40,
2868
+ itemPaddingHorizontal: 16,
2869
+ itemPaddingVertical: 8,
2870
+ itemRadius: 6,
2871
+ fontSize: 16,
2872
+ lineHeight: 18,
2873
+ iconSize: 24,
2874
+ gap: 6
2875
+ },
2876
+ sm: {
2877
+ height: 40,
2878
+ containerPadding: 4,
2879
+ containerRadius: 4,
2880
+ itemHeight: 32,
2881
+ itemPaddingHorizontal: 12,
2882
+ itemPaddingVertical: 6,
2883
+ itemRadius: 2,
2884
+ fontSize: 14,
2885
+ lineHeight: 16,
2886
+ iconSize: 20,
2887
+ gap: 4
2888
+ }
2889
+ };
2890
+ return configs[size];
2891
+ },
2892
+ tabsSegmented: (size) => {
2893
+ const configs = {
2894
+ xl: {
2895
+ height: 64,
2896
+ containerPadding: 4,
2897
+ containerRadius: 4,
2898
+ itemPaddingHorizontal: 16,
2899
+ itemPaddingVertical: 18,
2900
+ itemRadius: 2,
2901
+ fontSize: 20,
2902
+ lineHeight: 22,
2903
+ iconSize: 24,
2904
+ gap: 8
2905
+ },
2906
+ lg: {
2907
+ height: 56,
2908
+ containerPadding: 4,
2909
+ containerRadius: 4,
2910
+ itemPaddingHorizontal: 16,
2911
+ itemPaddingVertical: 14,
2912
+ itemRadius: 2,
2913
+ fontSize: 18,
2914
+ lineHeight: 20,
2915
+ iconSize: 24,
2916
+ gap: 8
2917
+ },
2918
+ md: {
2919
+ height: 48,
2920
+ containerPadding: 4,
2921
+ containerRadius: 4,
2922
+ itemPaddingHorizontal: 12,
2923
+ itemPaddingVertical: 11,
2924
+ itemRadius: 2,
2925
+ fontSize: 16,
2926
+ lineHeight: 18,
2927
+ iconSize: 24,
2928
+ gap: 6
2929
+ },
2930
+ sm: {
2931
+ height: 40,
2932
+ containerPadding: 3,
2933
+ containerRadius: 2,
2934
+ itemPaddingHorizontal: 12,
2935
+ itemPaddingVertical: 8,
2936
+ itemRadius: 2,
2937
+ fontSize: 14,
2938
+ lineHeight: 16,
2939
+ iconSize: 20,
2940
+ gap: 6
2941
+ }
2942
+ };
2943
+ return configs[size];
2944
+ },
2945
+ checkboxTagGroup: (size) => {
2946
+ const configs = {
2947
+ xl: {
2948
+ height: 64,
2949
+ paddingHorizontal: 16,
2950
+ paddingVertical: 21,
2951
+ fontSize: 20,
2952
+ lineHeight: 22,
2953
+ gap: 8,
2954
+ borderRadius: 4
2955
+ },
2956
+ lg: {
2957
+ height: 56,
2958
+ paddingHorizontal: 16,
2959
+ paddingVertical: 18,
2960
+ fontSize: 18,
2961
+ lineHeight: 20,
2962
+ gap: 8,
2963
+ borderRadius: 4
2964
+ },
2965
+ md: {
2966
+ height: 48,
2967
+ paddingHorizontal: 12,
2968
+ paddingVertical: 15,
2969
+ fontSize: 16,
2970
+ lineHeight: 18,
2971
+ gap: 8,
2972
+ borderRadius: 2
2973
+ },
2974
+ sm: {
2975
+ height: 40,
2976
+ paddingHorizontal: 12,
2977
+ paddingVertical: 11,
2978
+ fontSize: 14,
2979
+ lineHeight: 16,
2980
+ gap: 4,
2981
+ borderRadius: 2
2982
+ }
2983
+ };
2984
+ return configs[size];
2985
+ },
2986
+ badge: (size) => {
2987
+ const configs = {
2988
+ xl: {
2989
+ size: 20,
2990
+ fontSize: 12,
2991
+ lineHeight: 14,
2992
+ iconSize: 12,
2993
+ padding: 4
2994
+ },
2995
+ lg: {
2996
+ size: 16,
2997
+ fontSize: 10,
2998
+ lineHeight: 10,
2999
+ iconSize: 10,
3000
+ padding: 4
3001
+ },
3002
+ md: {
3003
+ size: 12,
3004
+ fontSize: 10,
3005
+ lineHeight: 10,
3006
+ iconSize: 8,
3007
+ padding: 4
3008
+ },
3009
+ sm: { size: 8, fontSize: 8, lineHeight: 8, iconSize: 6, padding: 0 },
3010
+ xs: { size: 6, fontSize: 6, lineHeight: 6, iconSize: 4, padding: 0 }
3011
+ };
3012
+ return configs[size];
3013
+ },
3014
+ notification: (type) => {
3015
+ const configs = {
3016
+ toast: {
3017
+ width: 400,
3018
+ paddingHorizontal: 20,
3019
+ paddingVertical: 16,
3020
+ gap: 16,
3021
+ titleSize: 18,
3022
+ messageSize: 14,
3023
+ iconSize: 20,
3024
+ iconWrapperSize: 32,
3025
+ radius: radius.card
3026
+ },
3027
+ inline: {
3028
+ width: "100%",
3029
+ paddingHorizontal: 20,
3030
+ paddingVertical: 16,
3031
+ gap: 28,
3032
+ titleSize: 18,
3033
+ messageSize: 14,
3034
+ iconSize: 20,
3035
+ iconWrapperSize: 32,
3036
+ radius: radius.card
3037
+ }
3038
+ };
3039
+ return configs[type];
3040
+ },
3041
+ notificationPanel: () => ({
3042
+ minHeight: 66,
3043
+ iconFrameWidth: 54,
3044
+ iconSize: 24,
3045
+ borderRadius: 8,
3046
+ bodyPaddingHorizontal: 16,
3047
+ bodyPaddingVertical: 12,
3048
+ textGap: 2,
3049
+ contentGap: 24,
3050
+ buttonsGap: 8,
3051
+ closeButtonSize: 32,
3052
+ titleFontSize: 16,
3053
+ titleLineHeight: 20,
3054
+ descriptionFontSize: 14,
3055
+ descriptionLineHeight: 20
3056
+ }),
3057
+ progress: (size) => {
3058
+ const configs = {
3059
+ xl: { height: 10, labelSize: 16, helperSize: 14, gap: 10 },
3060
+ lg: { height: 8, labelSize: 14, helperSize: 12, gap: 8 },
3061
+ md: { height: 6, labelSize: 12, helperSize: 12, gap: 6 },
3062
+ sm: { height: 4, labelSize: 12, helperSize: 12, gap: 4 },
3063
+ xs: { height: 2, labelSize: 10, helperSize: 10, gap: 2 },
3064
+ xxs: { height: 2, labelSize: 10, helperSize: 10, gap: 2 }
3065
+ };
3066
+ return configs[size];
3067
+ },
3068
+ supportingText: (size) => {
3069
+ const configs = {
3070
+ xl: { fontSize: 18, lineHeight: "20px", gap: 6, iconSize: 18 },
3071
+ lg: { fontSize: 16, lineHeight: "18px", gap: 6, iconSize: 18 },
3072
+ md: { fontSize: 14, lineHeight: "16px", gap: 6, iconSize: 18 },
3073
+ sm: { fontSize: 12, lineHeight: "14px", gap: 4, iconSize: 16 },
3074
+ xs: { fontSize: 10, lineHeight: "10px", gap: 4, iconSize: 16 }
3075
+ };
3076
+ return configs[size];
3077
+ },
3078
+ iconWrapper: (size) => {
3079
+ const configs = {
3080
+ xl: { size: 56, iconSize: 32, fontSize: 24 },
3081
+ lg: { size: 48, iconSize: 28, fontSize: 20 },
3082
+ md: { size: 40, iconSize: 24, fontSize: 18 },
3083
+ sm: { size: 32, iconSize: 20, fontSize: 16 },
3084
+ xs: { size: 24, iconSize: 16, fontSize: 14 },
3085
+ xxs: { size: 18, iconSize: 12, fontSize: 12 }
3086
+ };
3087
+ return configs[size];
3088
+ },
3089
+ stepper: (size) => {
3090
+ const configs = {
3091
+ md: {
3092
+ iconSize: 32,
3093
+ titleSize: 16,
3094
+ descSize: 14,
3095
+ gap: 12,
3096
+ currentTitleSize: 20,
3097
+ currentDescSize: 14,
3098
+ currentPadding: 24,
3099
+ tailSize: 5
3100
+ },
3101
+ sm: {
3102
+ iconSize: 24,
3103
+ titleSize: 14,
3104
+ descSize: 12,
3105
+ gap: 8,
3106
+ currentTitleSize: 16,
3107
+ currentDescSize: 12,
3108
+ currentPadding: 20,
3109
+ tailSize: 3
3110
+ }
3111
+ };
3112
+ return configs[size];
3113
+ },
3114
+ contextMenu: (size) => {
3115
+ const configs = {
3116
+ xl: {
3117
+ paddingVertical: 8,
3118
+ itemPaddingHorizontal: 16,
3119
+ itemPaddingVertical: 18,
3120
+ fontSize: 20,
3121
+ lineHeight: 22,
3122
+ descriptionFontSize: 18,
3123
+ iconSize: 18,
3124
+ gap: 12,
3125
+ minWidth: 276,
3126
+ // Search sizing from Figma
3127
+ searchPaddingHorizontal: 16,
3128
+ searchPaddingVertical: 18,
3129
+ searchGap: 18,
3130
+ searchFontSize: 20,
3131
+ searchLineHeight: 22,
3132
+ searchIconSize: 18
3133
+ },
3134
+ lg: {
3135
+ paddingVertical: 8,
3136
+ itemPaddingHorizontal: 14,
3137
+ itemPaddingVertical: 14,
3138
+ fontSize: 18,
3139
+ lineHeight: 20,
3140
+ descriptionFontSize: 16,
3141
+ iconSize: 18,
3142
+ gap: 10,
3143
+ minWidth: 220,
3144
+ // Search sizing from Figma
3145
+ searchPaddingHorizontal: 14,
3146
+ searchPaddingVertical: 14,
3147
+ searchGap: 14,
3148
+ searchFontSize: 18,
3149
+ searchLineHeight: 20,
3150
+ searchIconSize: 18
3151
+ },
3152
+ md: {
3153
+ paddingVertical: 8,
3154
+ itemPaddingHorizontal: 12,
3155
+ itemPaddingVertical: 11,
3156
+ fontSize: 16,
3157
+ lineHeight: 18,
3158
+ descriptionFontSize: 14,
3159
+ iconSize: 18,
3160
+ gap: 8,
3161
+ minWidth: 172,
3162
+ // Search sizing from Figma
3163
+ searchPaddingHorizontal: 12,
3164
+ searchPaddingVertical: 11,
3165
+ searchGap: 10,
3166
+ searchFontSize: 16,
3167
+ searchLineHeight: 18,
3168
+ searchIconSize: 18
3169
+ },
3170
+ sm: {
3171
+ paddingVertical: 8,
3172
+ itemPaddingHorizontal: 10,
3173
+ itemPaddingVertical: 8,
3174
+ fontSize: 14,
3175
+ lineHeight: 16,
3176
+ descriptionFontSize: 12,
3177
+ iconSize: 18,
3178
+ gap: 8,
3179
+ minWidth: 132,
3180
+ // Search sizing from Figma
3181
+ searchPaddingHorizontal: 10,
3182
+ searchPaddingVertical: 7,
3183
+ searchGap: 6,
3184
+ searchFontSize: 14,
3185
+ searchLineHeight: 16,
3186
+ searchIconSize: 18
3187
+ }
3188
+ };
3189
+ return configs[size];
3190
+ },
3191
+ toast: () => {
3192
+ return {
3193
+ minHeight: 64,
2920
3194
  paddingHorizontal: 12,
2921
- paddingVertical: 11,
2922
- fontSize: 14,
2923
- lineHeight: 16,
2924
- gap: 4,
2925
- borderRadius: 2
2926
- }
2927
- };
2928
- return configs[size];
2929
- },
2930
- badge: (size) => {
2931
- const configs = {
2932
- xl: {
2933
- size: 20,
2934
- fontSize: 12,
2935
- lineHeight: 14,
2936
- iconSize: 12,
2937
- padding: 4
2938
- },
2939
- lg: {
2940
- size: 16,
2941
- fontSize: 10,
2942
- lineHeight: 10,
2943
- iconSize: 10,
2944
- padding: 4
2945
- },
2946
- md: { size: 12, fontSize: 10, lineHeight: 10, iconSize: 8, padding: 4 },
2947
- sm: { size: 8, fontSize: 8, lineHeight: 8, iconSize: 6, padding: 0 },
2948
- xs: { size: 6, fontSize: 6, lineHeight: 6, iconSize: 4, padding: 0 }
2949
- };
2950
- return configs[size];
2951
- },
2952
- notification: (type) => {
2953
- const configs = {
2954
- toast: {
2955
- width: 400,
2956
- paddingHorizontal: 20,
2957
- paddingVertical: 16,
2958
- gap: 16,
2959
- titleSize: 18,
2960
- messageSize: 14,
2961
- iconSize: 20,
2962
- iconWrapperSize: 32,
2963
- radius: radius.card
2964
- },
2965
- inline: {
2966
- width: "100%",
2967
- paddingHorizontal: 20,
2968
- paddingVertical: 16,
2969
- gap: 28,
2970
- titleSize: 18,
2971
- messageSize: 14,
2972
- iconSize: 20,
2973
- iconWrapperSize: 32,
2974
- radius: radius.card
2975
- }
2976
- };
2977
- return configs[type];
2978
- },
2979
- notificationPanel: () => ({
2980
- minHeight: 66,
2981
- iconFrameWidth: 54,
2982
- iconSize: 24,
2983
- borderRadius: 8,
2984
- bodyPaddingHorizontal: 16,
2985
- bodyPaddingVertical: 12,
2986
- textGap: 2,
2987
- contentGap: 24,
2988
- buttonsGap: 8,
2989
- closeButtonSize: 32,
2990
- titleFontSize: 16,
2991
- titleLineHeight: 20,
2992
- descriptionFontSize: 14,
2993
- descriptionLineHeight: 20
2994
- }),
2995
- progress: (size) => {
2996
- const configs = {
2997
- xl: { height: 10, labelSize: 16, helperSize: 14, gap: 10 },
2998
- lg: { height: 8, labelSize: 14, helperSize: 12, gap: 8 },
2999
- md: { height: 6, labelSize: 12, helperSize: 12, gap: 6 },
3000
- sm: { height: 4, labelSize: 12, helperSize: 12, gap: 4 },
3001
- xs: { height: 2, labelSize: 10, helperSize: 10, gap: 2 },
3002
- xxs: { height: 2, labelSize: 10, helperSize: 10, gap: 2 }
3003
- };
3004
- return configs[size];
3005
- },
3006
- supportingText: (size) => {
3007
- const configs = {
3008
- xl: { fontSize: 18, lineHeight: "20px", gap: 6, iconSize: 18 },
3009
- lg: { fontSize: 16, lineHeight: "18px", gap: 6, iconSize: 18 },
3010
- md: { fontSize: 14, lineHeight: "16px", gap: 6, iconSize: 18 },
3011
- sm: { fontSize: 12, lineHeight: "14px", gap: 4, iconSize: 16 },
3012
- xs: { fontSize: 10, lineHeight: "10px", gap: 4, iconSize: 16 }
3013
- };
3014
- return configs[size];
3015
- },
3016
- iconWrapper: (size) => {
3017
- const configs = {
3018
- xl: { size: 56, iconSize: 32, fontSize: 24 },
3019
- lg: { size: 48, iconSize: 28, fontSize: 20 },
3020
- md: { size: 40, iconSize: 24, fontSize: 18 },
3021
- sm: { size: 32, iconSize: 20, fontSize: 16 },
3022
- xs: { size: 24, iconSize: 16, fontSize: 14 },
3023
- xxs: { size: 18, iconSize: 12, fontSize: 12 }
3024
- };
3025
- return configs[size];
3026
- },
3027
- stepper: (size) => {
3028
- const configs = {
3029
- md: {
3030
- iconSize: 32,
3031
- titleSize: 16,
3032
- descSize: 14,
3033
- gap: 12,
3034
- currentTitleSize: 20,
3035
- currentDescSize: 14,
3036
- currentPadding: 24,
3037
- tailSize: 5
3038
- },
3039
- sm: {
3040
- iconSize: 24,
3041
- titleSize: 14,
3042
- descSize: 12,
3043
- gap: 8,
3044
- currentTitleSize: 16,
3045
- currentDescSize: 12,
3046
- currentPadding: 20,
3047
- tailSize: 3
3048
- }
3049
- };
3050
- return configs[size];
3051
- },
3052
- contextMenu: (size) => {
3053
- const configs = {
3054
- xl: {
3055
3195
  paddingVertical: 8,
3056
- itemPaddingHorizontal: 16,
3057
- itemPaddingVertical: 18,
3058
- fontSize: 20,
3059
- lineHeight: 22,
3060
- descriptionFontSize: 18,
3061
- iconSize: 18,
3196
+ borderRadius: 4,
3062
3197
  gap: 12,
3063
- minWidth: 276,
3064
- // Search sizing from Figma
3065
- searchPaddingHorizontal: 16,
3066
- searchPaddingVertical: 18,
3067
- searchGap: 18,
3068
- searchFontSize: 20,
3069
- searchLineHeight: 22,
3070
- searchIconSize: 18
3071
- },
3072
- lg: {
3073
- paddingVertical: 8,
3074
- itemPaddingHorizontal: 14,
3075
- itemPaddingVertical: 14,
3076
- fontSize: 18,
3077
- lineHeight: 20,
3078
- descriptionFontSize: 16,
3079
- iconSize: 18,
3080
- gap: 10,
3081
- minWidth: 220,
3082
- // Search sizing from Figma
3083
- searchPaddingHorizontal: 14,
3084
- searchPaddingVertical: 14,
3085
- searchGap: 14,
3086
- searchFontSize: 18,
3087
- searchLineHeight: 20,
3088
- searchIconSize: 18
3089
- },
3090
- md: {
3091
- paddingVertical: 8,
3092
- itemPaddingHorizontal: 12,
3093
- itemPaddingVertical: 11,
3094
- fontSize: 16,
3095
- lineHeight: 18,
3096
- descriptionFontSize: 14,
3097
- iconSize: 18,
3098
- gap: 8,
3099
- minWidth: 172,
3100
- // Search sizing from Figma
3101
- searchPaddingHorizontal: 12,
3102
- searchPaddingVertical: 11,
3103
- searchGap: 10,
3104
- searchFontSize: 16,
3105
- searchLineHeight: 18,
3106
- searchIconSize: 18
3107
- },
3108
- sm: {
3109
- paddingVertical: 8,
3110
- itemPaddingHorizontal: 10,
3111
- itemPaddingVertical: 8,
3112
- fontSize: 14,
3113
- lineHeight: 16,
3114
- descriptionFontSize: 12,
3115
- iconSize: 18,
3116
- gap: 8,
3117
- minWidth: 132,
3118
- // Search sizing from Figma
3119
- searchPaddingHorizontal: 10,
3120
- searchPaddingVertical: 7,
3121
- searchGap: 6,
3122
- searchFontSize: 14,
3123
- searchLineHeight: 16,
3124
- searchIconSize: 18
3125
- }
3126
- };
3127
- return configs[size];
3128
- },
3129
- toast: () => {
3130
- return {
3131
- minHeight: 64,
3132
- paddingHorizontal: 12,
3133
- paddingVertical: 8,
3134
- borderRadius: 4,
3135
- gap: 12,
3136
- iconSize: 24,
3137
- closeButtonSize: 24,
3138
- closeIconSize: 20,
3139
- fontSize: 16,
3140
- lineHeight: 20,
3141
- maxWidth: 400,
3142
- containerPadding: 12,
3143
- groupGap: 4
3144
- };
3145
- },
3146
- toggleButtonGroup: (size) => {
3147
- const configs = {
3148
- xl: {
3149
- height: 64,
3150
- paddingHorizontal: 18,
3151
- fontSize: 20,
3152
- lineHeight: 22,
3153
3198
  iconSize: 24,
3154
- gap: 6,
3155
- borderRadius: 8,
3156
- itemGap: 8
3157
- },
3158
- lg: {
3159
- height: 56,
3160
- paddingHorizontal: 16,
3161
- fontSize: 18,
3162
- lineHeight: 20,
3163
- iconSize: 24,
3164
- gap: 4,
3165
- borderRadius: 8,
3166
- itemGap: 8
3167
- },
3168
- md: {
3169
- height: 48,
3170
- paddingHorizontal: 16,
3199
+ closeButtonSize: 24,
3200
+ closeIconSize: 20,
3171
3201
  fontSize: 16,
3172
- lineHeight: 18,
3173
- iconSize: 24,
3174
- gap: 4,
3175
- borderRadius: 8,
3176
- itemGap: 8
3177
- },
3178
- sm: {
3179
- height: 40,
3180
- paddingHorizontal: 12,
3181
- fontSize: 14,
3182
- lineHeight: 16,
3183
- iconSize: 24,
3184
- gap: 2,
3185
- borderRadius: 4,
3186
- itemGap: 4
3187
- },
3188
- xs: {
3189
- height: 32,
3190
- paddingHorizontal: 12,
3191
- fontSize: 14,
3192
- lineHeight: 16,
3193
- iconSize: 24,
3194
- gap: 2,
3195
- borderRadius: 4,
3196
- itemGap: 4
3197
- }
3198
- };
3199
- return configs[size];
3202
+ lineHeight: 20,
3203
+ maxWidth: 400,
3204
+ containerPadding: 12,
3205
+ groupGap: 4
3206
+ };
3207
+ },
3208
+ toggleButtonGroup: (size) => {
3209
+ const configs = {
3210
+ xl: {
3211
+ height: 64,
3212
+ paddingHorizontal: 18,
3213
+ fontSize: 20,
3214
+ lineHeight: 22,
3215
+ iconSize: 24,
3216
+ gap: 6,
3217
+ borderRadius: 8,
3218
+ itemGap: 8
3219
+ },
3220
+ lg: {
3221
+ height: 56,
3222
+ paddingHorizontal: 16,
3223
+ fontSize: 18,
3224
+ lineHeight: 20,
3225
+ iconSize: 24,
3226
+ gap: 4,
3227
+ borderRadius: 8,
3228
+ itemGap: 8
3229
+ },
3230
+ md: {
3231
+ height: 48,
3232
+ paddingHorizontal: 16,
3233
+ fontSize: 16,
3234
+ lineHeight: 18,
3235
+ iconSize: 24,
3236
+ gap: 4,
3237
+ borderRadius: 8,
3238
+ itemGap: 8
3239
+ },
3240
+ sm: {
3241
+ height: 40,
3242
+ paddingHorizontal: 12,
3243
+ fontSize: 14,
3244
+ lineHeight: 16,
3245
+ iconSize: 24,
3246
+ gap: 2,
3247
+ borderRadius: 4,
3248
+ itemGap: 4
3249
+ },
3250
+ xs: {
3251
+ height: 32,
3252
+ paddingHorizontal: 12,
3253
+ fontSize: 14,
3254
+ lineHeight: 16,
3255
+ iconSize: 24,
3256
+ gap: 2,
3257
+ borderRadius: 4,
3258
+ itemGap: 4
3259
+ }
3260
+ };
3261
+ return configs[size];
3262
+ }
3200
3263
  }
3201
- }
3202
- });
3264
+ };
3265
+ };
3203
3266
  var DesignSystemContext = (0, import_react2.createContext)(
3204
3267
  void 0
3205
3268
  );
@@ -3261,6 +3324,7 @@ var useModalId = () => (0, import_react2.useContext)(ModalIdContext);
3261
3324
  defaultProductContext,
3262
3325
  fontFacesCSS,
3263
3326
  fonts,
3327
+ getFonts,
3264
3328
  getTypographyTokens,
3265
3329
  getTypographyVariant,
3266
3330
  isAndroid,