@nationaldesignstudio/react 0.6.0 → 0.7.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.
Files changed (106) hide show
  1. package/dist/accordion/index.d.ts +95 -0
  2. package/dist/accordion/index.js +143 -0
  3. package/dist/accordion/index.js.map +1 -0
  4. package/dist/background/index.d.ts +149 -0
  5. package/dist/background/index.js +200 -0
  6. package/dist/background/index.js.map +1 -0
  7. package/dist/banner/index.d.ts +101 -0
  8. package/dist/banner/index.js +81 -0
  9. package/dist/banner/index.js.map +1 -0
  10. package/dist/blurred-video-backdrop/index.d.ts +233 -0
  11. package/dist/blurred-video-backdrop/index.js +266 -0
  12. package/dist/blurred-video-backdrop/index.js.map +1 -0
  13. package/dist/button/index.d.ts +180 -0
  14. package/dist/button/index.js +169 -0
  15. package/dist/button/index.js.map +1 -0
  16. package/dist/button-B2g5fH9b.d.ts +152 -0
  17. package/dist/card/index.d.ts +406 -0
  18. package/dist/card/index.js +219 -0
  19. package/dist/card/index.js.map +1 -0
  20. package/dist/card-grid/index.d.ts +90 -0
  21. package/dist/card-grid/index.js +74 -0
  22. package/dist/card-grid/index.js.map +1 -0
  23. package/dist/component-registry.md +136 -2
  24. package/dist/dev-toolbar/index.d.ts +8 -0
  25. package/dist/dev-toolbar/index.js +206 -0
  26. package/dist/dev-toolbar/index.js.map +1 -0
  27. package/dist/dialog/index.d.ts +268 -0
  28. package/dist/dialog/index.js +288 -0
  29. package/dist/dialog/index.js.map +1 -0
  30. package/dist/faq-section/index.d.ts +47 -0
  31. package/dist/faq-section/index.js +152 -0
  32. package/dist/faq-section/index.js.map +1 -0
  33. package/dist/grid-overlay/index.d.ts +10 -0
  34. package/dist/grid-overlay/index.js +38 -0
  35. package/dist/grid-overlay/index.js.map +1 -0
  36. package/dist/hero/index.d.ts +462 -0
  37. package/dist/hero/index.js +494 -0
  38. package/dist/hero/index.js.map +1 -0
  39. package/dist/hooks/index.d.ts +150 -0
  40. package/dist/hooks/index.js +339 -0
  41. package/dist/hooks/index.js.map +1 -0
  42. package/dist/index.d.ts +46 -5339
  43. package/dist/index.js +157 -4080
  44. package/dist/index.js.map +1 -1
  45. package/dist/input/index.d.ts +404 -0
  46. package/dist/input/index.js +393 -0
  47. package/dist/input/index.js.map +1 -0
  48. package/dist/navbar/index.d.ts +68 -0
  49. package/dist/navbar/index.js +227 -0
  50. package/dist/navbar/index.js.map +1 -0
  51. package/dist/ndstudio-footer/index.d.ts +32 -0
  52. package/dist/ndstudio-footer/index.js +35 -0
  53. package/dist/ndstudio-footer/index.js.map +1 -0
  54. package/dist/pager-control/index.d.ts +173 -0
  55. package/dist/pager-control/index.js +267 -0
  56. package/dist/pager-control/index.js.map +1 -0
  57. package/dist/popover/index.d.ts +200 -0
  58. package/dist/popover/index.js +290 -0
  59. package/dist/popover/index.js.map +1 -0
  60. package/dist/prose/index.d.ts +39 -0
  61. package/dist/prose/index.js +56 -0
  62. package/dist/prose/index.js.map +1 -0
  63. package/dist/quote-block/index.d.ts +156 -0
  64. package/dist/quote-block/index.js +321 -0
  65. package/dist/quote-block/index.js.map +1 -0
  66. package/dist/river/index.d.ts +100 -0
  67. package/dist/river/index.js +107 -0
  68. package/dist/river/index.js.map +1 -0
  69. package/dist/select/index.d.ts +188 -0
  70. package/dist/select/index.js +295 -0
  71. package/dist/select/index.js.map +1 -0
  72. package/dist/theme/index.d.ts +149 -0
  73. package/dist/theme/index.js +211 -0
  74. package/dist/theme/index.js.map +1 -0
  75. package/dist/theme-CzBPUlh_.d.ts +332 -0
  76. package/dist/tooltip/index.d.ts +166 -0
  77. package/dist/tooltip/index.js +200 -0
  78. package/dist/tooltip/index.js.map +1 -0
  79. package/dist/tout/index.d.ts +157 -0
  80. package/dist/tout/index.js +315 -0
  81. package/dist/tout/index.js.map +1 -0
  82. package/dist/two-column-section/index.d.ts +122 -0
  83. package/dist/two-column-section/index.js +121 -0
  84. package/dist/two-column-section/index.js.map +1 -0
  85. package/dist/us-gov-banner/index.d.ts +141 -0
  86. package/dist/us-gov-banner/index.js +74 -0
  87. package/dist/us-gov-banner/index.js.map +1 -0
  88. package/dist/use-captions-AkKlJhov.d.ts +71 -0
  89. package/dist/utils/index.d.ts +7 -0
  90. package/dist/utils/index.js +12 -0
  91. package/dist/utils/index.js.map +1 -0
  92. package/dist/video-dialog/index.d.ts +106 -0
  93. package/dist/video-dialog/index.js +1305 -0
  94. package/dist/video-dialog/index.js.map +1 -0
  95. package/dist/video-player/index.d.ts +115 -0
  96. package/dist/video-player/index.js +879 -0
  97. package/dist/video-player/index.js.map +1 -0
  98. package/dist/video-player-qxf-BURH.d.ts +236 -0
  99. package/dist/video-with-backdrop/index.d.ts +267 -0
  100. package/dist/video-with-backdrop/index.js +1284 -0
  101. package/dist/video-with-backdrop/index.js.map +1 -0
  102. package/package.json +13 -2
  103. package/src/components/organisms/us-gov-banner/us-gov-banner.tsx +5 -27
  104. package/src/theme/hooks.ts +2 -0
  105. package/src/theme/index.ts +2 -0
  106. package/src/theme/theme-provider.tsx +2 -0
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ import { Tooltip as Tooltip$1 } from '@base-ui-components/react/tooltip';
14
14
  import { MediaController, MediaLoadingIndicator, MediaControlBar, MediaPlayButton, MediaMuteButton, MediaVolumeRange, MediaTimeDisplay, MediaTimeRange } from 'media-chrome/react';
15
15
  import { Dialog as Dialog$1 } from '@base-ui-components/react/dialog';
16
16
  import { Slot } from '@radix-ui/react-slot';
17
+ import { colorThemes, surfaceThemes, flatToNested, flatToCSSVars, nestedToCSSVars, isColorValue, isDimensionValue } from '@nds-design-system/tokens';
18
+ export { defineTheme, srgb } from '@nds-design-system/tokens';
17
19
 
18
20
  // src/components/atoms/accordion/accordion.tsx
19
21
  function cn(...inputs) {
@@ -1259,7 +1261,7 @@ var PagerControl = React14.forwardRef(
1259
1261
  variant,
1260
1262
  count,
1261
1263
  activeIndex: controlledIndex,
1262
- duration: duration2 = 5e3,
1264
+ duration = 5e3,
1263
1265
  autoPlay = true,
1264
1266
  onChange,
1265
1267
  pauseOnHover = true,
@@ -1320,7 +1322,7 @@ var PagerControl = React14.forwardRef(
1320
1322
  [isControlled, onChange]
1321
1323
  );
1322
1324
  React14.useEffect(() => {
1323
- if (!autoPlay || duration2 <= 0 || isPaused) {
1325
+ if (!autoPlay || duration <= 0 || isPaused) {
1324
1326
  if (animationFrameRef.current) {
1325
1327
  cancelAnimationFrame(animationFrameRef.current);
1326
1328
  animationFrameRef.current = null;
@@ -1329,10 +1331,10 @@ var PagerControl = React14.forwardRef(
1329
1331
  }
1330
1332
  const animate = (timestamp) => {
1331
1333
  if (startTimeRef.current === null) {
1332
- startTimeRef.current = timestamp - pausedProgressRef.current / 100 * duration2;
1334
+ startTimeRef.current = timestamp - pausedProgressRef.current / 100 * duration;
1333
1335
  }
1334
1336
  const elapsed = timestamp - startTimeRef.current;
1335
- const newProgress = Math.min(elapsed / duration2 * 100, 100);
1337
+ const newProgress = Math.min(elapsed / duration * 100, 100);
1336
1338
  setProgress(newProgress);
1337
1339
  if (newProgress >= 100) {
1338
1340
  goToNext();
@@ -1349,7 +1351,7 @@ var PagerControl = React14.forwardRef(
1349
1351
  cancelAnimationFrame(animationFrameRef.current);
1350
1352
  }
1351
1353
  };
1352
- }, [autoPlay, duration2, isPaused, goToNext]);
1354
+ }, [autoPlay, duration, isPaused, goToNext]);
1353
1355
  const handleMouseEnter = React14.useCallback(() => {
1354
1356
  if (pauseOnHover) {
1355
1357
  pausedProgressRef.current = progress;
@@ -1442,7 +1444,7 @@ var PagerControl = React14.forwardRef(
1442
1444
  getProgressFillClass()
1443
1445
  ),
1444
1446
  style: {
1445
- width: autoPlay && duration2 > 0 ? `${progress}%` : "100%"
1447
+ width: autoPlay && duration > 0 ? `${progress}%` : "100%"
1446
1448
  }
1447
1449
  }
1448
1450
  )
@@ -4242,15 +4244,14 @@ var USGovBanner = React14.forwardRef(
4242
4244
  ...props
4243
4245
  }, ref) => {
4244
4246
  const styles = usGovBannerVariants({ variant });
4245
- const isInverted = variant === "inverted";
4246
4247
  return /* @__PURE__ */ jsx("div", { ref, className: styles.root({ class: className }), ...props, children: /* @__PURE__ */ jsxs("div", { className: styles.content(), children: [
4247
- flagIcon ?? (isInverted ? /* @__PURE__ */ jsx(WhiteUSFlag, {}) : /* @__PURE__ */ jsx(DefaultUSFlag, {})),
4248
+ flagIcon ?? /* @__PURE__ */ jsx(MonoUSFlag, {}),
4248
4249
  /* @__PURE__ */ jsx("p", { className: styles.text(), children: text })
4249
4250
  ] }) });
4250
4251
  }
4251
4252
  );
4252
4253
  USGovBanner.displayName = "USGovBanner";
4253
- function DefaultUSFlag() {
4254
+ function MonoUSFlag() {
4254
4255
  return /* @__PURE__ */ jsxs(
4255
4256
  "svg",
4256
4257
  {
@@ -4261,41 +4262,16 @@ function DefaultUSFlag() {
4261
4262
  xmlns: "http://www.w3.org/2000/svg",
4262
4263
  "aria-hidden": "true",
4263
4264
  children: [
4264
- /* @__PURE__ */ jsx("path", { d: "M0 0H16V12H0V0Z", fill: "#212121", fillOpacity: "0.1" }),
4265
+ /* @__PURE__ */ jsx("path", { d: "M0 0H16V12H0V0Z", fill: "currentColor", fillOpacity: "0.1" }),
4265
4266
  /* @__PURE__ */ jsx(
4266
4267
  "path",
4267
4268
  {
4268
4269
  d: "M0 0H16V0.923077H0V0ZM0 1.84615H16V2.76923H0V1.84615ZM0 3.69231H16V4.61538H0V3.69231ZM0 5.53846H16V6.46154H0V5.53846ZM0 7.38462H16V8.30769H0V7.38462ZM0 9.23077H16V10.1538H0V9.23077ZM0 11.0769H16V12H0V11.0769Z",
4269
- fill: "#BF0A30",
4270
+ fill: "currentColor",
4270
4271
  fillOpacity: "0.8"
4271
4272
  }
4272
4273
  ),
4273
- /* @__PURE__ */ jsx("path", { d: "M0 0H8V6.46154H0V0Z", fill: "#002868", fillOpacity: "0.8" })
4274
- ]
4275
- }
4276
- );
4277
- }
4278
- function WhiteUSFlag() {
4279
- return /* @__PURE__ */ jsxs(
4280
- "svg",
4281
- {
4282
- width: "16",
4283
- height: "12",
4284
- viewBox: "0 0 16 12",
4285
- fill: "none",
4286
- xmlns: "http://www.w3.org/2000/svg",
4287
- "aria-hidden": "true",
4288
- children: [
4289
- /* @__PURE__ */ jsx("path", { d: "M0 0H16V12H0V0Z", fill: "white", fillOpacity: "0.1" }),
4290
- /* @__PURE__ */ jsx(
4291
- "path",
4292
- {
4293
- d: "M0 0H16V0.923077H0V0ZM0 1.84615H16V2.76923H0V1.84615ZM0 3.69231H16V4.61538H0V3.69231ZM0 5.53846H16V6.46154H0V5.53846ZM0 7.38462H16V8.30769H0V7.38462ZM0 9.23077H16V10.1538H0V9.23077ZM0 11.0769H16V12H0V11.0769Z",
4294
- fill: "white",
4295
- fillOpacity: "0.8"
4296
- }
4297
- ),
4298
- /* @__PURE__ */ jsx("path", { d: "M0 0H8V6.46154H0V0Z", fill: "white", fillOpacity: "0.6" })
4274
+ /* @__PURE__ */ jsx("path", { d: "M0 0H8V6.46154H0V0Z", fill: "currentColor", fillOpacity: "0.6" })
4299
4275
  ]
4300
4276
  }
4301
4277
  );
@@ -5248,4069 +5224,170 @@ function useEventListener(eventName, handler, element, options) {
5248
5224
  };
5249
5225
  }, [eventName, element, options]);
5250
5226
  }
5251
-
5252
- // ../tokens/dist/collections/types.js
5253
- function isColorValue(value) {
5254
- if (typeof value !== "object" || value === null)
5255
- return false;
5256
- const obj = value;
5257
- return "colorSpace" in obj && "components" in obj && Array.isArray(obj.components) && obj.components.length === 3;
5258
- }
5259
- function isDimensionValue(value) {
5260
- if (typeof value !== "object" || value === null)
5261
- return false;
5262
- const obj = value;
5263
- return "value" in obj && "unit" in obj && typeof obj.value === "number";
5227
+ var ThemeContext = createContext(null);
5228
+ function colorToCSS(color) {
5229
+ const [r, g, b] = color.components;
5230
+ if (color.alpha < 1) {
5231
+ return `color(srgb ${r} ${g} ${b} / ${color.alpha})`;
5232
+ }
5233
+ return `color(srgb ${r} ${g} ${b})`;
5264
5234
  }
5265
-
5266
- // ../tokens/dist/merge.js
5267
- function mergeTokenTrees(...trees) {
5268
- const result = {};
5269
- for (const tree of trees) {
5270
- deepMerge(result, tree);
5235
+ function tokenValueToCSS(value) {
5236
+ if (isColorValue(value)) {
5237
+ return colorToCSS(value);
5271
5238
  }
5272
- return result;
5239
+ if (isDimensionValue(value)) {
5240
+ return `${value.value}${value.unit}`;
5241
+ }
5242
+ if (typeof value === "string") {
5243
+ return value;
5244
+ }
5245
+ if (typeof value === "number") {
5246
+ return String(value);
5247
+ }
5248
+ return String(value);
5273
5249
  }
5274
- function deepMerge(target, source) {
5275
- for (const [key, value] of Object.entries(source)) {
5276
- if (key in target) {
5277
- const targetValue = target[key];
5278
- if (isPlainObject(targetValue) && isPlainObject(value)) {
5279
- deepMerge(targetValue, value);
5250
+ function processColorTokens(colorObj, path = []) {
5251
+ const result = {};
5252
+ for (const [key, value] of Object.entries(colorObj)) {
5253
+ if (key.startsWith("$")) continue;
5254
+ const currentPath = [...path, key];
5255
+ if (typeof value === "object" && value !== null) {
5256
+ const record = value;
5257
+ if ("$value" in record) {
5258
+ const varName = `color-${currentPath.join("-")}`;
5259
+ const tokenValue = record.$value;
5260
+ if (typeof tokenValue === "string" && tokenValue.startsWith("{")) {
5261
+ let refPath = tokenValue.slice(1, -1).replace(/\./g, "-");
5262
+ refPath = refPath.replace(/^primitive-/, "");
5263
+ refPath = refPath.replace(/^semantic-color-/, "color-");
5264
+ result[varName] = `var(--${refPath})`;
5265
+ } else {
5266
+ result[varName] = tokenValueToCSS(tokenValue);
5267
+ }
5280
5268
  } else {
5281
- target[key] = value;
5269
+ Object.assign(result, processColorTokens(record, currentPath));
5282
5270
  }
5283
- } else {
5284
- target[key] = value;
5285
5271
  }
5286
5272
  }
5273
+ return result;
5287
5274
  }
5288
- function isPlainObject(value) {
5289
- return typeof value === "object" && value !== null && !Array.isArray(value) && Object.prototype.toString.call(value) === "[object Object]";
5290
- }
5291
-
5292
- // ../tokens/dist/semantic/color/base.js
5293
- var baseColorTokens = {
5294
- semantic: {
5295
- color: {
5296
- $extensions: {
5297
- "nds.theme": {
5298
- category: "color",
5299
- name: "base"
5300
- },
5301
- "nds.figmaSync": {
5302
- collectionKey: "92aacd2e50c6b60494d54a525fd64c6727d58905",
5303
- collectionName: "Color",
5304
- modeMapping: { modeName: "Default" }
5305
- }
5306
- },
5307
- // Background tokens (color-bg-*)
5308
- bg: {
5309
- page: { $type: "color", $value: "{primitive.color.gray.50}" },
5310
- section: { $type: "color", $value: "{primitive.color.gray.100}" },
5311
- "section-secondary": {
5312
- $type: "color",
5313
- $value: "{primitive.color.gray.200}"
5314
- },
5315
- "section-tertiary": {
5316
- $type: "color",
5317
- $value: "{primitive.color.gray.1000}"
5318
- },
5319
- muted: { $type: "color", $value: "{primitive.color.white}" }
5320
- },
5321
- // Card token (color-card-*)
5322
- card: {
5323
- background: { $type: "color", $value: "{primitive.color.white}" }
5324
- },
5325
- // Text tokens (color-text-*)
5326
- text: {
5327
- primary: { $type: "color", $value: "{primitive.color.gray.1100}" },
5328
- secondary: { $type: "color", $value: "{primitive.color.gray.800}" },
5329
- muted: { $type: "color", $value: "{primitive.color.gray.600}" },
5330
- inverted: { $type: "color", $value: "{primitive.color.gray.100}" },
5331
- link: { $type: "color", $value: "{primitive.color.gray.1100}" },
5332
- "link-hover": { $type: "color", $value: "{primitive.color.gray.700}" }
5333
- },
5334
- // Accent tokens (color-accent-*)
5335
- accent: {
5336
- brand: { $type: "color", $value: "{primitive.color.indigo.v400}" },
5337
- "brand-soft": { $type: "color", $value: "{primitive.color.ember.100}" }
5338
- },
5339
- // Border tokens (color-border-*)
5340
- border: {
5341
- subtle: { $type: "color", $value: "{primitive.color.alpha-black.10}" },
5342
- strong: { $type: "color", $value: "{primitive.color.alpha-black.20}" },
5343
- focus: {
5344
- $type: "color",
5345
- $value: "{primitive.color.alpha-black.40}"
5346
- },
5347
- divider: {
5348
- $type: "color",
5349
- $value: "{primitive.color.alpha-black.10}"
5350
- }
5351
- },
5352
- // Button tokens (color-button-*)
5353
- // Matches Figma Button component variants
5354
- button: {
5355
- // Primary button (blue filled) - Figma: #4186de
5356
- primary: {
5357
- bg: { $type: "color", $value: "{primitive.color.blue.500}" },
5358
- "bg-hover": { $type: "color", $value: "{primitive.color.blue.600}" },
5359
- "bg-active": { $type: "color", $value: "{primitive.color.blue.700}" },
5360
- text: { $type: "color", $value: "{primitive.color.white}" }
5361
- },
5362
- // Default button (dark filled) - Figma: #141414
5363
- default: {
5364
- bg: { $type: "color", $value: "{primitive.color.gray.1200}" },
5365
- "bg-hover": { $type: "color", $value: "{primitive.color.gray.1100}" },
5366
- "bg-active": {
5367
- $type: "color",
5368
- $value: "{primitive.color.gray.1000}"
5369
- },
5370
- text: { $type: "color", $value: "{primitive.color.gray.50}" }
5371
- },
5372
- // Secondary button (light gray filled) - Figma: #f5f5f5
5373
- secondary: {
5374
- bg: { $type: "color", $value: "{primitive.color.gray.100}" },
5375
- "bg-hover": { $type: "color", $value: "{primitive.color.gray.200}" },
5376
- "bg-active": { $type: "color", $value: "{primitive.color.gray.300}" },
5377
- text: { $type: "color", $value: "{primitive.color.gray.1200}" },
5378
- border: {
5379
- $type: "color",
5380
- $value: "{primitive.color.alpha-black.10}"
5381
- }
5382
- },
5383
- // Destructive button (red filled) - Figma: #e53935
5384
- destructive: {
5385
- bg: { $type: "color", $value: "{primitive.color.red.500}" },
5386
- "bg-hover": { $type: "color", $value: "{primitive.color.red.600}" },
5387
- "bg-active": { $type: "color", $value: "{primitive.color.red.700}" },
5388
- text: { $type: "color", $value: "{primitive.color.white}" }
5389
- },
5390
- // Outline button (bordered, transparent)
5391
- outline: {
5392
- bg: { $type: "color", $value: "transparent" },
5393
- "bg-hover": {
5394
- $type: "color",
5395
- $value: "{primitive.color.alpha-black.5}"
5396
- },
5397
- "bg-active": {
5398
- $type: "color",
5399
- $value: "{primitive.color.alpha-black.10}"
5400
- },
5401
- text: { $type: "color", $value: "{primitive.color.gray.1200}" },
5402
- border: { $type: "color", $value: "{primitive.color.gray.300}" },
5403
- "border-hover": {
5404
- $type: "color",
5405
- $value: "{primitive.color.gray.400}"
5406
- }
5407
- },
5408
- // Ghost button (transparent, subtle hover)
5409
- ghost: {
5410
- bg: { $type: "color", $value: "transparent" },
5411
- "bg-hover": {
5412
- $type: "color",
5413
- $value: "{primitive.color.alpha-black.5}"
5414
- },
5415
- "bg-active": {
5416
- $type: "color",
5417
- $value: "{primitive.color.alpha-black.10}"
5418
- },
5419
- text: { $type: "color", $value: "{primitive.color.gray.1200}" }
5420
- },
5421
- // Link button (text only, underline on hover)
5422
- link: {
5423
- bg: { $type: "color", $value: "transparent" },
5424
- "bg-hover": { $type: "color", $value: "transparent" },
5425
- "bg-active": { $type: "color", $value: "transparent" },
5426
- text: { $type: "color", $value: "{primitive.color.gray.1200}" },
5427
- "text-hover": {
5428
- $type: "color",
5429
- $value: "{primitive.color.gray.700}"
5430
- }
5431
- }
5432
- },
5433
- // Tooltip tokens (color-tooltip-*)
5434
- // Inverted color scheme for tooltip overlays
5435
- tooltip: {
5436
- bg: { $type: "color", $value: "{primitive.color.gray.1000}" },
5437
- text: { $type: "color", $value: "{semantic.color.text.inverted}" }
5438
- },
5439
- // Overlay tokens (color-overlay-*)
5440
- // Shared by popover, modal, dropdown, menu (light background, spacious)
5441
- overlay: {
5442
- background: {
5443
- $type: "color",
5444
- $value: "{semantic.color.card.background}",
5445
- $description: "Overlay background color (light)"
5446
- },
5447
- border: {
5448
- $type: "color",
5449
- $value: "{semantic.color.border.subtle}",
5450
- $description: "Overlay border color"
5451
- },
5452
- text: {
5453
- $type: "color",
5454
- $value: "{semantic.color.text.primary}",
5455
- $description: "Overlay primary text color"
5456
- },
5457
- "text-muted": {
5458
- $type: "color",
5459
- $value: "{semantic.color.text.muted}",
5460
- $description: "Overlay muted text color"
5461
- }
5462
- },
5463
- // UI tokens (color-ui-*)
5464
- ui: {
5465
- "button-primary-bg": {
5466
- $type: "color",
5467
- $value: "{primitive.color.indigo.v400}"
5468
- },
5469
- "control-background": {
5470
- $type: "color",
5471
- $value: "{primitive.color.white}"
5472
- },
5473
- "control-background-hover": {
5474
- $type: "color",
5475
- $value: "{primitive.color.gray.100}"
5476
- },
5477
- "control-background-disabled": {
5478
- $type: "color",
5479
- $value: "{primitive.color.gray.200}"
5480
- },
5481
- "color-focus": {
5482
- $type: "color",
5483
- $value: "{primitive.color.alpha-black.10}"
5484
- },
5485
- "color-border": {
5486
- $type: "color",
5487
- $value: "{primitive.color.alpha-black.10}"
5488
- },
5489
- "color-border-active": {
5490
- $type: "color",
5491
- $value: "{primitive.color.brown.1000}"
5492
- },
5493
- "error-color": { $type: "color", $value: "{primitive.color.red.300}" },
5494
- "accent-base": {
5495
- $type: "color",
5496
- $value: "{primitive.color.indigo.v300}"
5497
- },
5498
- "accent-base-2": {
5499
- $type: "color",
5500
- $value: "{primitive.color.blue.v200}"
5501
- },
5502
- "accent-base-3": {
5503
- $type: "color",
5504
- $value: "{primitive.color.indigo.v300}"
5505
- },
5506
- // Menu/dropdown item tokens
5507
- "menu-item-bg": {
5508
- $type: "color",
5509
- $value: "{primitive.color.white}"
5510
- },
5511
- "menu-item-bg-hover": {
5512
- $type: "color",
5513
- $value: "{primitive.color.indigo.25}"
5514
- },
5515
- "menu-item-bg-selected": {
5516
- $type: "color",
5517
- $value: "{primitive.color.indigo.35}"
5518
- },
5519
- "menu-item-text": {
5520
- $type: "color",
5521
- $value: "{primitive.color.gray.1000}"
5522
- },
5523
- "menu-item-text-selected": {
5524
- $type: "color",
5525
- $value: "{primitive.color.blue.v250}"
5275
+ function processSurfaceTokens(surfaceObj, path = []) {
5276
+ const result = {};
5277
+ for (const [key, value] of Object.entries(surfaceObj)) {
5278
+ if (key.startsWith("$")) continue;
5279
+ const currentPath = [...path, key];
5280
+ if (typeof value === "object" && value !== null) {
5281
+ const record = value;
5282
+ if ("$value" in record) {
5283
+ const tokenValue = record.$value;
5284
+ let varName;
5285
+ let cssValue;
5286
+ if (currentPath[currentPath.length - 1] === "radius") {
5287
+ const componentName = currentPath[0];
5288
+ varName = `radius-surface-${componentName}`;
5289
+ } else if (currentPath[currentPath.length - 1] === "stroke") {
5290
+ const componentName = currentPath[0];
5291
+ varName = `surface-${componentName}-stroke`;
5292
+ } else {
5293
+ varName = `surface-${currentPath.join("-")}`;
5526
5294
  }
5527
- },
5528
- // Video Player tokens (color-video-player-*)
5529
- // Used for fullscreen video modal, controls, and captions
5530
- "video-player": {
5531
- "controls-bg": {
5532
- $type: "color",
5533
- $value: "{primitive.color.alpha-black.40}",
5534
- $description: "Video controls bar background (glassmorphic)"
5535
- },
5536
- "controls-text": {
5537
- $type: "color",
5538
- $value: "{primitive.color.white}",
5539
- $description: "Video controls text and icons"
5540
- },
5541
- "controls-hover": {
5542
- $type: "color",
5543
- $value: "{primitive.color.alpha-white.20}",
5544
- $description: "Video controls hover state"
5545
- },
5546
- "button-bg": {
5547
- $type: "color",
5548
- $value: "{primitive.color.alpha-white.10}",
5549
- $description: "Control button background (visible on dark video)"
5550
- },
5551
- "button-bg-hover": {
5552
- $type: "color",
5553
- $value: "{primitive.color.alpha-white.20}",
5554
- $description: "Control button hover background"
5555
- },
5556
- "button-bg-active": {
5557
- $type: "color",
5558
- $value: "{primitive.color.alpha-white.30}",
5559
- $description: "Control button active/pressed background"
5560
- },
5561
- "caption-bg": {
5562
- $type: "color",
5563
- $value: "{primitive.color.alpha-black.70}",
5564
- $description: "Caption background overlay"
5565
- },
5566
- "caption-text": {
5567
- $type: "color",
5568
- $value: "{primitive.color.white}",
5569
- $description: "Caption text color"
5570
- },
5571
- "backdrop-overlay": {
5572
- $type: "color",
5573
- $value: "{primitive.color.alpha-black.90}",
5574
- $description: "Modal backdrop overlay"
5575
- },
5576
- "progress-bg": {
5577
- $type: "color",
5578
- $value: "{primitive.color.alpha-white.30}",
5579
- $description: "Progress bar track background"
5580
- },
5581
- "progress-fill": {
5582
- $type: "color",
5583
- $value: "{primitive.color.white}",
5584
- $description: "Progress bar fill color"
5585
- },
5586
- "tooltip-bg": {
5587
- $type: "color",
5588
- $value: "{primitive.color.alpha-black.90}",
5589
- $description: "Video tooltip background"
5295
+ if (typeof tokenValue === "string" && tokenValue.startsWith("{")) {
5296
+ let refPath = tokenValue.slice(1, -1).replace(/\./g, "-");
5297
+ refPath = refPath.replace(/^primitive-/, "");
5298
+ refPath = refPath.replace(/^radii-/, "radius-");
5299
+ cssValue = `var(--${refPath})`;
5300
+ } else {
5301
+ cssValue = tokenValueToCSS(tokenValue);
5590
5302
  }
5303
+ result[varName] = cssValue;
5304
+ } else {
5305
+ Object.assign(result, processSurfaceTokens(record, currentPath));
5591
5306
  }
5592
5307
  }
5593
5308
  }
5594
- };
5595
-
5596
- // ../design-tokens-format/dist/definitions/tokenTypes.js
5597
- var colorTypeName = "color";
5598
- var dimensionTypeName = "dimension";
5599
- var fontFamilyTypeName = "fontFamily";
5600
- var fontWeightTypeName = "fontWeight";
5601
- var durationTypeName = "duration";
5602
- var cubicBezierTypeName = "cubicBezier";
5603
- var numberTypeName = "number";
5604
- var strokeStyleTypeName = "strokeStyle";
5605
- var borderTypeName = "border";
5606
- var transitionTypeName = "transition";
5607
- var shadowTypeName = "shadow";
5608
- var gradientTypeName = "gradient";
5609
- var typographyTypeName = "typography";
5610
- var tokenTypeNames = [
5611
- colorTypeName,
5612
- dimensionTypeName,
5613
- fontFamilyTypeName,
5614
- fontWeightTypeName,
5615
- durationTypeName,
5616
- cubicBezierTypeName,
5617
- numberTypeName,
5618
- strokeStyleTypeName,
5619
- borderTypeName,
5620
- transitionTypeName,
5621
- shadowTypeName,
5622
- gradientTypeName,
5623
- typographyTypeName
5624
- ];
5625
- tokenTypeNames.reduce((acc, t) => {
5626
- acc[t] = t;
5627
- return acc;
5628
- }, {});
5629
-
5630
- // ../design-tokens-format/dist/utils/colorConversions.js
5631
- function hexToRgb(hex) {
5632
- const cleanHex = hex.replace(/^#/, "");
5633
- let r;
5634
- let g;
5635
- let b;
5636
- if (cleanHex.length === 3) {
5637
- const c0 = cleanHex[0] ?? "0";
5638
- const c1 = cleanHex[1] ?? "0";
5639
- const c2 = cleanHex[2] ?? "0";
5640
- r = Number.parseInt(c0 + c0, 16);
5641
- g = Number.parseInt(c1 + c1, 16);
5642
- b = Number.parseInt(c2 + c2, 16);
5643
- } else if (cleanHex.length === 6 || cleanHex.length === 8) {
5644
- r = Number.parseInt(cleanHex.slice(0, 2), 16);
5645
- g = Number.parseInt(cleanHex.slice(2, 4), 16);
5646
- b = Number.parseInt(cleanHex.slice(4, 6), 16);
5647
- } else {
5648
- throw new Error(`Invalid hex color format: ${hex}`);
5649
- }
5650
- return {
5651
- r: r / 255,
5652
- g: g / 255,
5653
- b: b / 255
5654
- };
5655
- }
5656
- function hexToComponents(hex) {
5657
- const { r, g, b } = hexToRgb(hex);
5658
- return [
5659
- Math.round(r * 1e4) / 1e4,
5660
- Math.round(g * 1e4) / 1e4,
5661
- Math.round(b * 1e4) / 1e4
5662
- ];
5663
- }
5664
-
5665
- // ../tokens/dist/utils.js
5666
- function dimension(value, unit = "px") {
5667
- return {
5668
- $type: "dimension",
5669
- $value: { value, unit }
5670
- };
5309
+ return result;
5671
5310
  }
5672
- function fontFamily(value) {
5673
- return {
5674
- $type: "fontFamily",
5675
- $value: Array.isArray(value) ? value : [value]
5676
- };
5311
+ function mergeTokenModules(base, override) {
5312
+ const result = JSON.parse(JSON.stringify(base));
5313
+ deepMerge(result, override);
5314
+ return result;
5677
5315
  }
5678
- function fontWeight(value) {
5679
- return {
5680
- $type: "fontWeight",
5681
- $value: value
5682
- };
5316
+ function deepMerge(target, source) {
5317
+ for (const [key, value] of Object.entries(source)) {
5318
+ if (typeof value === "object" && value !== null && !Array.isArray(value) && typeof target[key] === "object" && target[key] !== null) {
5319
+ deepMerge(
5320
+ target[key],
5321
+ value
5322
+ );
5323
+ } else {
5324
+ target[key] = value;
5325
+ }
5326
+ }
5683
5327
  }
5684
- function srgb(hex, alpha = 1) {
5685
- return {
5686
- $type: "color",
5687
- $value: {
5688
- colorSpace: "srgb",
5689
- components: hexToComponents(hex),
5690
- alpha,
5691
- hex
5328
+ function ThemeProvider({
5329
+ color = "base",
5330
+ surface = "base",
5331
+ customTheme,
5332
+ children,
5333
+ className,
5334
+ applyStyles = true
5335
+ }) {
5336
+ const { tokens, cssVars } = useMemo(() => {
5337
+ const flatTokens = {};
5338
+ const baseColorModule = colorThemes.base;
5339
+ const effectiveColor = customTheme ? customTheme.extends : color;
5340
+ const colorModule = colorThemes[effectiveColor] ?? colorThemes.base;
5341
+ const mergedColor = effectiveColor === "base" ? baseColorModule : mergeTokenModules(baseColorModule, colorModule);
5342
+ const colorTokens = mergedColor?.semantic?.color ?? mergedColor;
5343
+ Object.assign(flatTokens, processColorTokens(colorTokens));
5344
+ const baseSurfaceModule = surfaceThemes.base;
5345
+ const surfaceModule = surfaceThemes[surface];
5346
+ const mergedSurface = surface === "base" ? baseSurfaceModule : mergeTokenModules(baseSurfaceModule, surfaceModule);
5347
+ const surfaceTokens = mergedSurface?.semantic?.surface ?? mergedSurface;
5348
+ Object.assign(flatTokens, processSurfaceTokens(surfaceTokens));
5349
+ const nestedTokens = flatToNested(flatTokens);
5350
+ let cssVariables = flatToCSSVars(flatTokens);
5351
+ if (customTheme) {
5352
+ cssVariables = {
5353
+ ...cssVariables,
5354
+ ...Object.fromEntries(
5355
+ Object.entries(customTheme.cssVars).map(([key, value]) => [
5356
+ key.startsWith("--") ? key : `--${key}`,
5357
+ value
5358
+ ])
5359
+ )
5360
+ };
5692
5361
  }
5362
+ return { tokens: nestedTokens, cssVars: cssVariables };
5363
+ }, [color, surface, customTheme]);
5364
+ const contextValue = {
5365
+ cssVars,
5366
+ tokens,
5367
+ colorTheme: customTheme ? customTheme.extends : color,
5368
+ surfaceTheme: surface
5693
5369
  };
5370
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue, children: applyStyles ? /* @__PURE__ */ jsx("div", { style: cssVars, className, children }) : children });
5694
5371
  }
5695
- function duration(value, unit = "ms") {
5696
- return {
5697
- $type: "duration",
5698
- $value: { value, unit }
5699
- };
5372
+
5373
+ // src/theme/hooks.ts
5374
+ function useTheme() {
5375
+ const context = useContext(ThemeContext);
5376
+ if (!context) {
5377
+ throw new Error("useTheme must be used within a ThemeProvider");
5378
+ }
5379
+ return context;
5700
5380
  }
5701
- function cubicBezier(x1, y1, x2, y2) {
5702
- return {
5703
- $type: "cubicBezier",
5704
- $value: [x1, y1, x2, y2]
5705
- };
5381
+ function useThemeTokens() {
5382
+ const { tokens } = useTheme();
5383
+ return tokens;
5706
5384
  }
5707
- function shadow(layers) {
5708
- return {
5709
- $type: "shadow",
5710
- $value: layers.map((l) => ({
5711
- color: l.color.startsWith("{") ? l.color : {
5712
- colorSpace: "srgb",
5713
- components: hexToComponents(l.color),
5714
- alpha: l.alpha ?? 1
5715
- },
5716
- offsetX: { value: l.offsetX, unit: "px" },
5717
- offsetY: { value: l.offsetY, unit: "px" },
5718
- blur: { value: l.blur, unit: "px" },
5719
- spread: { value: l.spread, unit: "px" },
5720
- ...l.inset ? { inset: true } : {}
5721
- }))
5722
- };
5385
+ function useCSSVars() {
5386
+ const { cssVars } = useTheme();
5387
+ return cssVars;
5723
5388
  }
5724
-
5725
- // ../tokens/dist/semantic/color/bop.js
5726
- var bopColorTokens = {
5727
- semantic: {
5728
- color: {
5729
- $extensions: {
5730
- "nds.theme": {
5731
- category: "color",
5732
- name: "bop",
5733
- extends: "base"
5734
- }
5735
- },
5736
- bg: {
5737
- page: srgb("#FEFDF9"),
5738
- section: srgb("#F5F4EF"),
5739
- muted: srgb("#FEFDF9")
5740
- },
5741
- card: {
5742
- background: srgb("#8A6F42")
5743
- },
5744
- text: {
5745
- primary: srgb("#111326"),
5746
- secondary: srgb("#111326"),
5747
- muted: srgb("#A68B5E"),
5748
- inverted: srgb("#FEFDF9")
5749
- },
5750
- accent: {
5751
- brand: srgb("#A68B5E"),
5752
- "brand-soft": srgb("#C4A870")
5753
- },
5754
- border: {
5755
- subtle: srgb("#26284B", 0.1),
5756
- strong: srgb("#26284B", 0.2),
5757
- divider: srgb("#26284B", 0.1)
5758
- },
5759
- button: {
5760
- "primary-bg-hover": srgb("#26284B")
5761
- },
5762
- ui: {
5763
- "button-primary-bg": srgb("#111326")
5764
- }
5765
- }
5766
- }
5767
- };
5768
-
5769
- // ../tokens/dist/semantic/color/civic.js
5770
- var civicColorTokens = {
5771
- semantic: {
5772
- color: {
5773
- $extensions: {
5774
- "nds.theme": {
5775
- category: "color",
5776
- name: "civic",
5777
- extends: "base"
5778
- },
5779
- "nds.figmaSync": {
5780
- collectionKey: "29f4d62156d027717b2f2a80e95002ed749bdd38",
5781
- collectionName: "Civic",
5782
- extendsCollectionKey: "92aacd2e50c6b60494d54a525fd64c6727d58905",
5783
- modeMapping: { modeName: "Default" }
5784
- }
5785
- },
5786
- bg: {
5787
- page: { $type: "color", $value: "{primitive.color.white}" }
5788
- },
5789
- accent: {
5790
- brand: { $type: "color", $value: "{primitive.color.red.900}" }
5791
- },
5792
- button: {
5793
- primary: {
5794
- bg: { $type: "color", $value: "{primitive.color.red.900}" },
5795
- "bg-hover": { $type: "color", $value: "{primitive.color.red.800}" }
5796
- },
5797
- "primary-outline": {
5798
- text: { $type: "color", $value: "{primitive.color.red.900}" },
5799
- "text-hover": { $type: "color", $value: "{primitive.color.red.800}" },
5800
- border: { $type: "color", $value: "{primitive.color.red.900}" },
5801
- "border-hover": {
5802
- $type: "color",
5803
- $value: "{primitive.color.red.800}"
5804
- }
5805
- }
5806
- },
5807
- ui: {
5808
- "button-primary-bg": {
5809
- $type: "color",
5810
- $value: "{primitive.color.red.900}"
5811
- }
5812
- }
5813
- }
5814
- }
5815
- };
5816
-
5817
- // ../tokens/dist/semantic/color/dark.js
5818
- var darkColorTokens = {
5819
- semantic: {
5820
- color: {
5821
- $extensions: {
5822
- "nds.theme": {
5823
- category: "color",
5824
- name: "dark",
5825
- extends: "base"
5826
- },
5827
- "nds.figmaSync": {
5828
- collectionKey: "92aacd2e50c6b60494d54a525fd64c6727d58905",
5829
- collectionName: "Color",
5830
- modeMapping: { modeName: "Dark Mode" }
5831
- }
5832
- },
5833
- // Background tokens
5834
- bg: {
5835
- page: { $type: "color", $value: "{primitive.color.gray.1100}" },
5836
- section: { $type: "color", $value: "{primitive.color.gray.1000}" },
5837
- "section-secondary": {
5838
- $type: "color",
5839
- $value: "{primitive.color.gray.900}"
5840
- },
5841
- "section-tertiary": {
5842
- $type: "color",
5843
- $value: "{primitive.color.gray.100}"
5844
- },
5845
- muted: { $type: "color", $value: "{primitive.color.gray.900}" }
5846
- },
5847
- // Card token
5848
- card: {
5849
- background: { $type: "color", $value: "{primitive.color.gray.800}" }
5850
- },
5851
- // Text tokens
5852
- text: {
5853
- primary: { $type: "color", $value: "{primitive.color.gray.200}" },
5854
- secondary: { $type: "color", $value: "{primitive.color.gray.400}" },
5855
- muted: { $type: "color", $value: "{primitive.color.gray.500}" },
5856
- inverted: { $type: "color", $value: "{primitive.color.gray.1100}" },
5857
- link: { $type: "color", $value: "{primitive.color.gray.200}" },
5858
- "link-hover": { $type: "color", $value: "{primitive.color.gray.400}" }
5859
- },
5860
- // Border tokens
5861
- border: {
5862
- subtle: { $type: "color", $value: "{primitive.color.alpha-white.20}" },
5863
- strong: { $type: "color", $value: "{primitive.color.alpha-white.30}" },
5864
- focus: {
5865
- $type: "color",
5866
- $value: "{semantic.color.accent.brand}"
5867
- },
5868
- divider: {
5869
- $type: "color",
5870
- $value: "{primitive.color.alpha-white.20}"
5871
- }
5872
- },
5873
- button: {
5874
- primary: {
5875
- bg: { $type: "color", $value: "{primitive.color.gray.200}" },
5876
- "bg-hover": { $type: "color", $value: "{primitive.color.gray.400}" },
5877
- text: { $type: "color", $value: "{primitive.color.gray.1100}" },
5878
- "text-hover": {
5879
- $type: "color",
5880
- $value: "{primitive.color.gray.1100}"
5881
- }
5882
- },
5883
- "primary-outline": {
5884
- bg: { $type: "color", $value: "{primitive.color.alpha-white.5}" },
5885
- "bg-hover": {
5886
- $type: "color",
5887
- $value: "{primitive.color.alpha-white.10}"
5888
- },
5889
- text: { $type: "color", $value: "{primitive.color.gray.200}" },
5890
- "text-hover": { $type: "color", $value: "{primitive.color.white}" },
5891
- border: { $type: "color", $value: "{primitive.color.gray.200}" },
5892
- "border-hover": { $type: "color", $value: "{primitive.color.white}" }
5893
- },
5894
- secondary: {
5895
- bg: { $type: "color", $value: "{primitive.color.gray.800}" },
5896
- "bg-hover": { $type: "color", $value: "{primitive.color.gray.700}" },
5897
- text: { $type: "color", $value: "{primitive.color.gray.200}" },
5898
- "text-hover": { $type: "color", $value: "{primitive.color.white}" }
5899
- },
5900
- ghost: {
5901
- bg: { $type: "color", $value: "{primitive.color.alpha-white.5}" },
5902
- "bg-hover": {
5903
- $type: "color",
5904
- $value: "{primitive.color.alpha-white.10}"
5905
- },
5906
- text: { $type: "color", $value: "{primitive.color.gray.300}" },
5907
- "text-hover": {
5908
- $type: "color",
5909
- $value: "{primitive.color.gray.100}"
5910
- }
5911
- }
5912
- },
5913
- // UI tokens
5914
- ui: {
5915
- "button-primary-bg": {
5916
- $type: "color",
5917
- $value: "{primitive.color.gray.200}"
5918
- },
5919
- "control-background": {
5920
- $type: "color",
5921
- $value: "{primitive.color.gray.900}"
5922
- },
5923
- "control-background-hover": {
5924
- $type: "color",
5925
- $value: "{primitive.color.gray.800}"
5926
- },
5927
- "control-background-disabled": {
5928
- $type: "color",
5929
- $value: "{primitive.color.gray.1000}"
5930
- },
5931
- "color-focus": {
5932
- $type: "color",
5933
- $value: "{primitive.color.alpha-white.20}"
5934
- },
5935
- "color-border": {
5936
- $type: "color",
5937
- $value: "{primitive.color.alpha-white.30}"
5938
- },
5939
- "color-border-active": {
5940
- $type: "color",
5941
- $value: "{primitive.color.white}"
5942
- },
5943
- "error-color": { $type: "color", $value: "{primitive.color.red.200}" },
5944
- "accent-base": {
5945
- $type: "color",
5946
- $value: "{primitive.color.indigo.300}"
5947
- },
5948
- "accent-base-2": {
5949
- $type: "color",
5950
- $value: "{primitive.color.indigo.300}"
5951
- },
5952
- "accent-base-3": {
5953
- $type: "color",
5954
- $value: "{primitive.color.indigo.300}"
5955
- }
5956
- }
5957
- }
5958
- }
5959
- };
5960
-
5961
- // ../tokens/dist/semantic/color/darktech.js
5962
- var darktechColorTokens = {
5963
- semantic: {
5964
- color: {
5965
- $extensions: {
5966
- "nds.theme": {
5967
- category: "color",
5968
- name: "darktech",
5969
- extends: "base"
5970
- }
5971
- },
5972
- // Dark backgrounds
5973
- bg: {
5974
- page: {
5975
- $type: "color",
5976
- $value: "{primitive.color.gray.1100}"
5977
- },
5978
- section: {
5979
- $type: "color",
5980
- $value: "{primitive.color.gray.1000}"
5981
- },
5982
- "section-secondary": {
5983
- $type: "color",
5984
- $value: "{primitive.color.gray.900}"
5985
- },
5986
- "section-tertiary": {
5987
- $type: "color",
5988
- $value: "{primitive.color.gray.1200}"
5989
- },
5990
- muted: {
5991
- $type: "color",
5992
- $value: "{primitive.color.gray.1000}"
5993
- }
5994
- },
5995
- card: {
5996
- background: {
5997
- $type: "color",
5998
- $value: "{primitive.color.gray.1000}"
5999
- }
6000
- },
6001
- // Light text for dark backgrounds
6002
- text: {
6003
- primary: {
6004
- $type: "color",
6005
- $value: "{primitive.color.gray.200}"
6006
- },
6007
- secondary: {
6008
- $type: "color",
6009
- $value: "{primitive.color.gray.400}"
6010
- },
6011
- muted: {
6012
- $type: "color",
6013
- $value: "{primitive.color.gray.500}"
6014
- },
6015
- inverted: {
6016
- $type: "color",
6017
- $value: "{primitive.color.gray.1100}"
6018
- },
6019
- link: {
6020
- $type: "color",
6021
- $value: "{primitive.color.cyan.v300}"
6022
- },
6023
- "link-hover": {
6024
- $type: "color",
6025
- $value: "{primitive.color.cyan.v200}"
6026
- }
6027
- },
6028
- // Cyan/tech accent colors
6029
- accent: {
6030
- brand: {
6031
- $type: "color",
6032
- $value: "{primitive.color.cyan.v300}"
6033
- },
6034
- "brand-soft": {
6035
- $type: "color",
6036
- $value: "{primitive.color.teal.900}"
6037
- }
6038
- },
6039
- // Borders for dark mode
6040
- border: {
6041
- subtle: {
6042
- $type: "color",
6043
- $value: "{primitive.color.alpha-white.10}"
6044
- },
6045
- strong: {
6046
- $type: "color",
6047
- $value: "{primitive.color.alpha-white.20}"
6048
- },
6049
- focus: {
6050
- $type: "color",
6051
- $value: "{semantic.color.accent.brand}"
6052
- },
6053
- divider: {
6054
- $type: "color",
6055
- $value: "{primitive.color.alpha-white.10}"
6056
- }
6057
- },
6058
- // Button colors for dark mode
6059
- button: {
6060
- "primary-bg-hover": {
6061
- $type: "color",
6062
- $value: "{primitive.color.cyan.600}"
6063
- },
6064
- "secondary-bg": {
6065
- $type: "color",
6066
- $value: "{primitive.color.gray.900}"
6067
- },
6068
- "secondary-bg-hover": {
6069
- $type: "color",
6070
- $value: "{primitive.color.gray.800}"
6071
- }
6072
- },
6073
- // UI colors for dark mode
6074
- ui: {
6075
- "button-primary-bg": {
6076
- $type: "color",
6077
- $value: "{primitive.color.cyan.v300}"
6078
- },
6079
- "control-background": {
6080
- $type: "color",
6081
- $value: "{primitive.color.gray.900}"
6082
- },
6083
- "control-background-hover": {
6084
- $type: "color",
6085
- $value: "{primitive.color.gray.800}"
6086
- },
6087
- "control-background-disabled": {
6088
- $type: "color",
6089
- $value: "{primitive.color.gray.1000}"
6090
- },
6091
- "color-focus": {
6092
- $type: "color",
6093
- $value: "{primitive.color.alpha-white.10}"
6094
- },
6095
- "color-border": {
6096
- $type: "color",
6097
- $value: "{primitive.color.alpha-white.20}"
6098
- },
6099
- "color-border-active": {
6100
- $type: "color",
6101
- $value: "{primitive.color.cyan.v300}"
6102
- }
6103
- }
6104
- }
6105
- }
6106
- };
6107
-
6108
- // ../tokens/dist/semantic/color/institution.js
6109
- var institutionColorTokens = {
6110
- semantic: {
6111
- color: {
6112
- $extensions: {
6113
- "nds.theme": {
6114
- category: "color",
6115
- name: "institution",
6116
- extends: "base"
6117
- },
6118
- "nds.figmaSync": {
6119
- collectionKey: "307b920325965d277d6cbfe0c1573b413f86baf4",
6120
- collectionName: "Institution",
6121
- extendsCollectionKey: "92aacd2e50c6b60494d54a525fd64c6727d58905",
6122
- modeMapping: { modeName: "Default" }
6123
- }
6124
- },
6125
- bg: {
6126
- page: { $type: "color", $value: "{primitive.color.brown.50}" }
6127
- },
6128
- card: {
6129
- background: { $type: "color", $value: "{primitive.color.white}" }
6130
- },
6131
- text: {
6132
- primary: { $type: "color", $value: "{primitive.color.gray.1000}" },
6133
- secondary: { $type: "color", $value: "{primitive.color.brown.600}" }
6134
- },
6135
- accent: {
6136
- brand: { $type: "color", $value: "{primitive.color.green.v400}" }
6137
- },
6138
- button: {
6139
- primary: {
6140
- bg: { $type: "color", $value: "{primitive.color.green.v400}" },
6141
- "bg-hover": {
6142
- $type: "color",
6143
- $value: "{primitive.color.green.v300}"
6144
- }
6145
- },
6146
- "primary-outline": {
6147
- text: { $type: "color", $value: "{primitive.color.green.v400}" },
6148
- "text-hover": {
6149
- $type: "color",
6150
- $value: "{primitive.color.green.v300}"
6151
- },
6152
- border: { $type: "color", $value: "{primitive.color.green.v400}" },
6153
- "border-hover": {
6154
- $type: "color",
6155
- $value: "{primitive.color.green.v300}"
6156
- }
6157
- },
6158
- secondary: {
6159
- bg: { $type: "color", $value: "{primitive.color.brown.50}" },
6160
- "bg-hover": { $type: "color", $value: "{primitive.color.white}" }
6161
- }
6162
- },
6163
- ui: {
6164
- "button-primary-bg": {
6165
- $type: "color",
6166
- $value: "{primitive.color.brown.600}"
6167
- }
6168
- }
6169
- }
6170
- }
6171
- };
6172
-
6173
- // ../tokens/dist/semantic/color/oceana.js
6174
- var oceanaColorTokens = {
6175
- semantic: {
6176
- color: {
6177
- $extensions: {
6178
- "nds.theme": {
6179
- category: "color",
6180
- name: "oceana",
6181
- extends: "base"
6182
- },
6183
- "nds.figmaSync": {
6184
- collectionKey: "79e46a4d616f3e2d07556a58f4253ed909bca3b7",
6185
- collectionName: "Oceana",
6186
- extendsCollectionKey: "92aacd2e50c6b60494d54a525fd64c6727d58905",
6187
- modeMapping: { modeName: "Default" }
6188
- }
6189
- },
6190
- // Cool blue-tinted backgrounds
6191
- bg: {
6192
- page: {
6193
- $type: "color",
6194
- $value: "{primitive.color.ice.50}"
6195
- },
6196
- section: {
6197
- $type: "color",
6198
- $value: "{primitive.color.ice.100}"
6199
- },
6200
- "section-secondary": {
6201
- $type: "color",
6202
- $value: "{primitive.color.ice.200}"
6203
- },
6204
- "section-tertiary": {
6205
- $type: "color",
6206
- $value: "{primitive.color.blue.900}"
6207
- },
6208
- muted: {
6209
- $type: "color",
6210
- $value: "{primitive.color.white}"
6211
- }
6212
- },
6213
- card: {
6214
- background: {
6215
- $type: "color",
6216
- $value: "{primitive.color.white}"
6217
- }
6218
- },
6219
- // Text colors with cool tint
6220
- text: {
6221
- primary: {
6222
- $type: "color",
6223
- $value: "{primitive.color.steel.1100}"
6224
- },
6225
- secondary: {
6226
- $type: "color",
6227
- $value: "{primitive.color.steel.700}"
6228
- },
6229
- muted: {
6230
- $type: "color",
6231
- $value: "{primitive.color.steel.500}"
6232
- },
6233
- inverted: {
6234
- $type: "color",
6235
- $value: "{primitive.color.ice.50}"
6236
- },
6237
- link: {
6238
- $type: "color",
6239
- $value: "{primitive.color.blue.600}"
6240
- },
6241
- "link-hover": {
6242
- $type: "color",
6243
- $value: "{primitive.color.blue.800}"
6244
- }
6245
- },
6246
- // Ocean blue accents
6247
- accent: {
6248
- brand: {
6249
- $type: "color",
6250
- $value: "{primitive.color.blue.600}"
6251
- },
6252
- "brand-soft": {
6253
- $type: "color",
6254
- $value: "{primitive.color.cyan.50}"
6255
- }
6256
- },
6257
- // Borders
6258
- border: {
6259
- subtle: {
6260
- $type: "color",
6261
- $value: "{primitive.color.alpha-black.10}"
6262
- },
6263
- strong: {
6264
- $type: "color",
6265
- $value: "{primitive.color.alpha-black.20}"
6266
- },
6267
- focus: {
6268
- $type: "color",
6269
- $value: "{semantic.color.accent.brand}"
6270
- },
6271
- divider: {
6272
- $type: "color",
6273
- $value: "{primitive.color.alpha-black.10}"
6274
- }
6275
- },
6276
- // Button colors
6277
- button: {
6278
- "primary-bg-hover": {
6279
- $type: "color",
6280
- $value: "{primitive.color.blue.800}"
6281
- },
6282
- "secondary-bg": {
6283
- $type: "color",
6284
- $value: "{primitive.color.white}"
6285
- },
6286
- "secondary-bg-hover": {
6287
- $type: "color",
6288
- $value: "{primitive.color.ice.100}"
6289
- }
6290
- },
6291
- // UI colors
6292
- ui: {
6293
- "button-primary-bg": {
6294
- $type: "color",
6295
- $value: "{primitive.color.blue.600}"
6296
- },
6297
- "control-background": {
6298
- $type: "color",
6299
- $value: "{primitive.color.white}"
6300
- },
6301
- "control-background-hover": {
6302
- $type: "color",
6303
- $value: "{primitive.color.ice.100}"
6304
- },
6305
- "control-background-disabled": {
6306
- $type: "color",
6307
- $value: "{primitive.color.ice.200}"
6308
- },
6309
- "color-focus": {
6310
- $type: "color",
6311
- $value: "{primitive.color.alpha-black.10}"
6312
- },
6313
- "color-border": {
6314
- $type: "color",
6315
- $value: "{primitive.color.alpha-black.20}"
6316
- },
6317
- "color-border-active": {
6318
- $type: "color",
6319
- $value: "{primitive.color.blue.600}"
6320
- }
6321
- }
6322
- }
6323
- }
6324
- };
6325
-
6326
- // ../tokens/dist/semantic/color/recreation.js
6327
- var recreationColorTokens = {
6328
- semantic: {
6329
- color: {
6330
- $extensions: {
6331
- "nds.theme": {
6332
- category: "color",
6333
- name: "recreation",
6334
- extends: "base"
6335
- },
6336
- "nds.figmaSync": {
6337
- collectionKey: "cf9e75990b12bf4551bf2b165ec51e5ce594fecf",
6338
- collectionName: "Recreation",
6339
- extendsCollectionKey: "92aacd2e50c6b60494d54a525fd64c6727d58905",
6340
- modeMapping: { modeName: "Default" }
6341
- }
6342
- },
6343
- // Warm beige backgrounds
6344
- bg: {
6345
- page: {
6346
- $type: "color",
6347
- $value: "{primitive.color.brown.50}"
6348
- },
6349
- section: {
6350
- $type: "color",
6351
- $value: "{primitive.color.brown.100}"
6352
- },
6353
- "section-secondary": {
6354
- $type: "color",
6355
- $value: "{primitive.color.brown.200}"
6356
- },
6357
- "section-tertiary": {
6358
- $type: "color",
6359
- $value: "{primitive.color.brown.900}"
6360
- },
6361
- muted: {
6362
- $type: "color",
6363
- $value: "{primitive.color.white}"
6364
- }
6365
- },
6366
- card: {
6367
- background: {
6368
- $type: "color",
6369
- $value: "{primitive.color.white}"
6370
- }
6371
- },
6372
- // Text colors with warm tint
6373
- text: {
6374
- primary: {
6375
- $type: "color",
6376
- $value: "{primitive.color.brown.1100}"
6377
- },
6378
- secondary: {
6379
- $type: "color",
6380
- $value: "{primitive.color.brown.700}"
6381
- },
6382
- muted: {
6383
- $type: "color",
6384
- $value: "{primitive.color.brown.500}"
6385
- },
6386
- inverted: {
6387
- $type: "color",
6388
- $value: "{primitive.color.brown.50}"
6389
- },
6390
- link: {
6391
- $type: "color",
6392
- $value: "{primitive.color.brown.600}"
6393
- },
6394
- "link-hover": {
6395
- $type: "color",
6396
- $value: "{primitive.color.brown.800}"
6397
- }
6398
- },
6399
- // Earthy brown accents
6400
- accent: {
6401
- brand: {
6402
- $type: "color",
6403
- $value: "{primitive.color.brown.600}"
6404
- },
6405
- "brand-soft": {
6406
- $type: "color",
6407
- $value: "{primitive.color.brown.100}"
6408
- }
6409
- },
6410
- // Borders
6411
- border: {
6412
- subtle: {
6413
- $type: "color",
6414
- $value: "{primitive.color.alpha-black.10}"
6415
- },
6416
- strong: {
6417
- $type: "color",
6418
- $value: "{primitive.color.alpha-black.20}"
6419
- },
6420
- focus: {
6421
- $type: "color",
6422
- $value: "{semantic.color.accent.brand}"
6423
- },
6424
- divider: {
6425
- $type: "color",
6426
- $value: "{primitive.color.alpha-black.10}"
6427
- }
6428
- },
6429
- // Button colors
6430
- button: {
6431
- "primary-bg-hover": {
6432
- $type: "color",
6433
- $value: "{primitive.color.brown.700}"
6434
- },
6435
- "secondary-bg": {
6436
- $type: "color",
6437
- $value: "{primitive.color.white}"
6438
- },
6439
- "secondary-bg-hover": {
6440
- $type: "color",
6441
- $value: "{primitive.color.brown.100}"
6442
- }
6443
- },
6444
- // UI colors
6445
- ui: {
6446
- "button-primary-bg": {
6447
- $type: "color",
6448
- $value: "{primitive.color.brown.600}"
6449
- },
6450
- "control-background": {
6451
- $type: "color",
6452
- $value: "{primitive.color.white}"
6453
- },
6454
- "control-background-hover": {
6455
- $type: "color",
6456
- $value: "{primitive.color.brown.100}"
6457
- },
6458
- "control-background-disabled": {
6459
- $type: "color",
6460
- $value: "{primitive.color.brown.200}"
6461
- },
6462
- "color-focus": {
6463
- $type: "color",
6464
- $value: "{primitive.color.alpha-black.10}"
6465
- },
6466
- "color-border": {
6467
- $type: "color",
6468
- $value: "{primitive.color.alpha-black.20}"
6469
- },
6470
- "color-border-active": {
6471
- $type: "color",
6472
- $value: "{primitive.color.brown.600}"
6473
- }
6474
- }
6475
- }
6476
- }
6477
- };
6478
-
6479
- // ../tokens/dist/semantic/surface/base.js
6480
- var baseSurfaceTokens = {
6481
- semantic: {
6482
- surface: {
6483
- $extensions: {
6484
- "nds.theme": {
6485
- category: "surface",
6486
- name: "base"
6487
- },
6488
- "nds.figmaSync": {
6489
- collectionKey: "4f6dd00a848af32a4163fde4d543eb933824813e",
6490
- collectionName: "Surface",
6491
- modeMapping: { modeName: "Mode 1" }
6492
- }
6493
- },
6494
- /**
6495
- * UI Radius Tokens
6496
- *
6497
- * Base radius values for UI components. Individual components (button, card, input)
6498
- * extend from these values, allowing theme variants to override once and affect all.
6499
- */
6500
- ui: {
6501
- radius: {
6502
- small: {
6503
- $type: "dimension",
6504
- $value: "{primitive.radii.4}",
6505
- $description: "Small UI radius (4px) - tight corners"
6506
- },
6507
- medium: {
6508
- $type: "dimension",
6509
- $value: "{primitive.radii.6}",
6510
- $description: "Medium UI radius (6px) - default corners"
6511
- },
6512
- large: {
6513
- $type: "dimension",
6514
- $value: "{primitive.radii.8}",
6515
- $description: "Large UI radius (8px) - rounded corners"
6516
- }
6517
- }
6518
- },
6519
- card: {
6520
- radius: {
6521
- $type: "dimension",
6522
- $value: "{semantic.surface.ui.radius.medium}",
6523
- $description: "Card border radius - extends from ui.radius.medium"
6524
- },
6525
- stroke: { $type: "dimension", $value: "{primitive.spacing.1}" }
6526
- },
6527
- button: {
6528
- radius: {
6529
- small: {
6530
- $type: "dimension",
6531
- $value: "{semantic.surface.ui.radius.small}",
6532
- $description: "Button radius for small size"
6533
- },
6534
- medium: {
6535
- $type: "dimension",
6536
- $value: "{semantic.surface.ui.radius.medium}",
6537
- $description: "Button radius for medium size"
6538
- },
6539
- large: {
6540
- $type: "dimension",
6541
- $value: "{semantic.surface.ui.radius.large}",
6542
- $description: "Button radius for large size"
6543
- }
6544
- },
6545
- stroke: { $type: "dimension", $value: "{primitive.spacing.1}" }
6546
- },
6547
- tooltip: {
6548
- radius: {
6549
- $type: "dimension",
6550
- $value: "{semantic.surface.ui.radius.small}",
6551
- $description: "Tooltip border radius - uses small UI radius for tight corners"
6552
- }
6553
- },
6554
- /**
6555
- * Overlay Surface Tokens
6556
- *
6557
- * Surface properties for floating UI components (popover, modal, dropdown, menu).
6558
- */
6559
- overlay: {
6560
- radius: {
6561
- $type: "dimension",
6562
- $value: "{semantic.surface.ui.radius.large}",
6563
- $description: "Overlay border radius - uses large UI radius (8px)"
6564
- }
6565
- }
6566
- }
6567
- }
6568
- };
6569
-
6570
- // ../tokens/dist/semantic/surface/framed.js
6571
- var framedSurfaceTokens = {
6572
- semantic: {
6573
- surface: {
6574
- $extensions: {
6575
- "nds.theme": {
6576
- category: "surface",
6577
- name: "framed",
6578
- extends: "base"
6579
- },
6580
- "nds.figmaSync": {
6581
- collectionKey: "8d2f720d2f15a79f6caf1c9e1332295eae600152",
6582
- collectionName: "Framed",
6583
- extendsCollectionKey: "4f6dd00a848af32a4163fde4d543eb933824813e",
6584
- modeMapping: { modeName: "Mode 1" }
6585
- }
6586
- },
6587
- /**
6588
- * Framed UI Radius - no radius (0px) for crisp, framed appearance
6589
- */
6590
- ui: {
6591
- radius: {
6592
- small: { $type: "dimension", $value: "{primitive.radii.0}" },
6593
- medium: { $type: "dimension", $value: "{primitive.radii.0}" },
6594
- large: { $type: "dimension", $value: "{primitive.radii.0}" }
6595
- }
6596
- },
6597
- card: {
6598
- stroke: { $type: "dimension", $value: "{primitive.spacing.2}" }
6599
- },
6600
- button: {
6601
- stroke: { $type: "dimension", $value: "{primitive.spacing.1}" }
6602
- }
6603
- }
6604
- }
6605
- };
6606
-
6607
- // ../tokens/dist/semantic/surface/sharp.js
6608
- var sharpSurfaceTokens = {
6609
- semantic: {
6610
- surface: {
6611
- $extensions: {
6612
- "nds.theme": {
6613
- category: "surface",
6614
- name: "sharp",
6615
- extends: "base"
6616
- },
6617
- "nds.figmaSync": {
6618
- collectionKey: "89b2727e714b609da1a6da3fb39a02fece2c5c87",
6619
- collectionName: "Sharp",
6620
- extendsCollectionKey: "4f6dd00a848af32a4163fde4d543eb933824813e",
6621
- modeMapping: { modeName: "Mode 1" }
6622
- }
6623
- },
6624
- /**
6625
- * Sharp UI Radius - minimal corners (2px)
6626
- */
6627
- ui: {
6628
- radius: {
6629
- small: { $type: "dimension", $value: "{primitive.radii.2}" },
6630
- medium: { $type: "dimension", $value: "{primitive.radii.2}" },
6631
- large: { $type: "dimension", $value: "{primitive.radii.2}" }
6632
- }
6633
- },
6634
- card: {
6635
- stroke: { $type: "dimension", $value: "{primitive.spacing.1}" }
6636
- },
6637
- button: {
6638
- stroke: { $type: "dimension", $value: "{primitive.spacing.1}" }
6639
- }
6640
- }
6641
- }
6642
- };
6643
-
6644
- // ../tokens/dist/semantic/surface/soft.js
6645
- var softSurfaceTokens = {
6646
- semantic: {
6647
- surface: {
6648
- $extensions: {
6649
- "nds.theme": {
6650
- category: "surface",
6651
- name: "soft",
6652
- extends: "base"
6653
- },
6654
- "nds.figmaSync": {
6655
- collectionKey: "e8c7bcd55a82a80373e500114ab1c648eaee98e0",
6656
- collectionName: "Soft",
6657
- extendsCollectionKey: "4f6dd00a848af32a4163fde4d543eb933824813e",
6658
- modeMapping: { modeName: "Mode 1" }
6659
- }
6660
- },
6661
- /**
6662
- * Soft UI Radius - all corners are heavily rounded (20px)
6663
- */
6664
- ui: {
6665
- radius: {
6666
- small: { $type: "dimension", $value: "{primitive.radii.20}" },
6667
- medium: { $type: "dimension", $value: "{primitive.radii.20}" },
6668
- large: { $type: "dimension", $value: "{primitive.radii.20}" }
6669
- }
6670
- },
6671
- card: {
6672
- stroke: { $type: "dimension", $value: "{primitive.spacing.0}" }
6673
- },
6674
- button: {
6675
- stroke: { $type: "dimension", $value: "{primitive.spacing.1}" }
6676
- }
6677
- }
6678
- }
6679
- };
6680
-
6681
- // ../tokens/dist/semantic/typography/base.js
6682
- var baseTypographyTokens = {
6683
- semantic: {
6684
- typography: {
6685
- $extensions: {
6686
- "nds.theme": {
6687
- category: "typography",
6688
- name: "base"
6689
- },
6690
- "nds.figmaSync": {
6691
- collectionKey: "96f5387fdb03cd6bbd3a7de7ead150f46afac330",
6692
- collectionName: "Typography",
6693
- modeMapping: { modeName: "Value" }
6694
- }
6695
- },
6696
- // =====================================================================
6697
- // HEADING GROUP
6698
- // Shared font properties for all headings
6699
- // =====================================================================
6700
- heading: {
6701
- font: {
6702
- $type: "fontFamily",
6703
- $value: "{primitive.font-family.inter-tight}",
6704
- $description: "Headline font family - shared across all headings"
6705
- },
6706
- weight: {
6707
- $type: "fontWeight",
6708
- $value: "{primitive.font-weight.semibold}",
6709
- $description: "Headline weight (600) - shared across all headings"
6710
- }
6711
- },
6712
- // H1 Display (XL) - Large hero typography
6713
- h1: {
6714
- display: {
6715
- $extensions: {
6716
- "nds.utility": {
6717
- name: "typography-h1-display",
6718
- responsive: true,
6719
- inherit: {
6720
- fontFamily: "heading.font",
6721
- fontWeight: "heading.weight"
6722
- }
6723
- }
6724
- },
6725
- lg: {
6726
- size: {
6727
- $type: "dimension",
6728
- $value: "{primitive.font-size.128}",
6729
- $description: "H1 display font size (lg breakpoint)"
6730
- },
6731
- "line-height": {
6732
- $type: "dimension",
6733
- $value: "{primitive.line-height.128}",
6734
- $description: "H1 display line height (lg breakpoint)"
6735
- },
6736
- tracking: {
6737
- $type: "dimension",
6738
- $value: "{primitive.letter-spacing.128}",
6739
- $description: "H1 display letter spacing (lg breakpoint)"
6740
- }
6741
- },
6742
- md: {
6743
- size: {
6744
- $type: "dimension",
6745
- $value: "{primitive.font-size.96}"
6746
- },
6747
- "line-height": {
6748
- $type: "dimension",
6749
- $value: "{primitive.line-height.96}"
6750
- },
6751
- tracking: {
6752
- $type: "dimension",
6753
- $value: "{primitive.letter-spacing.96}"
6754
- }
6755
- },
6756
- sm: {
6757
- size: {
6758
- $type: "dimension",
6759
- $value: "{primitive.font-size.64}"
6760
- },
6761
- "line-height": {
6762
- $type: "dimension",
6763
- $value: "{primitive.line-height.64}"
6764
- },
6765
- tracking: {
6766
- $type: "dimension",
6767
- $value: "{primitive.letter-spacing.64}"
6768
- }
6769
- }
6770
- },
6771
- // Regular H1 - flattened breakpoint structure
6772
- $extensions: {
6773
- "nds.utility": {
6774
- name: "typography-h1",
6775
- responsive: true,
6776
- inherit: {
6777
- fontFamily: "heading.font",
6778
- fontWeight: "heading.weight"
6779
- }
6780
- }
6781
- },
6782
- lg: {
6783
- size: {
6784
- $type: "dimension",
6785
- $value: "{primitive.font-size.96}",
6786
- $description: "H1 font size (lg breakpoint)"
6787
- },
6788
- "line-height": {
6789
- $type: "dimension",
6790
- $value: "{primitive.line-height.96}",
6791
- $description: "H1 line height (lg breakpoint)"
6792
- },
6793
- tracking: {
6794
- $type: "dimension",
6795
- $value: "{primitive.letter-spacing.96}",
6796
- $description: "H1 letter spacing (lg breakpoint)"
6797
- }
6798
- },
6799
- md: {
6800
- size: {
6801
- $type: "dimension",
6802
- $value: "{primitive.font-size.72}"
6803
- },
6804
- "line-height": {
6805
- $type: "dimension",
6806
- $value: "{primitive.line-height.72}"
6807
- },
6808
- tracking: {
6809
- $type: "dimension",
6810
- $value: "{primitive.letter-spacing.72}"
6811
- }
6812
- },
6813
- sm: {
6814
- size: {
6815
- $type: "dimension",
6816
- $value: "{primitive.font-size.48}"
6817
- },
6818
- "line-height": {
6819
- $type: "dimension",
6820
- $value: "{primitive.line-height.48}"
6821
- },
6822
- tracking: {
6823
- $type: "dimension",
6824
- $value: "{primitive.letter-spacing.48}"
6825
- }
6826
- }
6827
- },
6828
- // H2
6829
- h2: {
6830
- $extensions: {
6831
- "nds.utility": {
6832
- name: "typography-h2",
6833
- responsive: true,
6834
- inherit: {
6835
- fontFamily: "heading.font",
6836
- fontWeight: "heading.weight"
6837
- }
6838
- }
6839
- },
6840
- lg: {
6841
- size: {
6842
- $type: "dimension",
6843
- $value: "{primitive.font-size.72}",
6844
- $description: "H2 font size (lg breakpoint)"
6845
- },
6846
- "line-height": {
6847
- $type: "dimension",
6848
- $value: "{primitive.line-height.72}",
6849
- $description: "H2 line height (lg breakpoint)"
6850
- },
6851
- tracking: {
6852
- $type: "dimension",
6853
- $value: "{primitive.letter-spacing.72}",
6854
- $description: "H2 letter spacing (lg breakpoint)"
6855
- }
6856
- },
6857
- md: {
6858
- size: {
6859
- $type: "dimension",
6860
- $value: "{primitive.font-size.64}"
6861
- },
6862
- "line-height": {
6863
- $type: "dimension",
6864
- $value: "{primitive.line-height.64}"
6865
- },
6866
- tracking: {
6867
- $type: "dimension",
6868
- $value: "{primitive.letter-spacing.64}"
6869
- }
6870
- },
6871
- sm: {
6872
- size: {
6873
- $type: "dimension",
6874
- $value: "{primitive.font-size.48}"
6875
- },
6876
- "line-height": {
6877
- $type: "dimension",
6878
- $value: "{primitive.line-height.48}"
6879
- },
6880
- tracking: {
6881
- $type: "dimension",
6882
- $value: "{primitive.letter-spacing.48}"
6883
- }
6884
- }
6885
- },
6886
- // H3
6887
- h3: {
6888
- $extensions: {
6889
- "nds.utility": {
6890
- name: "typography-h3",
6891
- responsive: true,
6892
- inherit: {
6893
- fontFamily: "heading.font",
6894
- fontWeight: "heading.weight"
6895
- }
6896
- }
6897
- },
6898
- lg: {
6899
- size: {
6900
- $type: "dimension",
6901
- $value: "{primitive.font-size.64}",
6902
- $description: "H3 font size (lg breakpoint)"
6903
- },
6904
- "line-height": {
6905
- $type: "dimension",
6906
- $value: "{primitive.line-height.64}",
6907
- $description: "H3 line height (lg breakpoint)"
6908
- },
6909
- tracking: {
6910
- $type: "dimension",
6911
- $value: "{primitive.letter-spacing.64}",
6912
- $description: "H3 letter spacing (lg breakpoint)"
6913
- }
6914
- },
6915
- md: {
6916
- size: {
6917
- $type: "dimension",
6918
- $value: "{primitive.font-size.48}"
6919
- },
6920
- "line-height": {
6921
- $type: "dimension",
6922
- $value: "{primitive.line-height.48}"
6923
- },
6924
- tracking: {
6925
- $type: "dimension",
6926
- $value: "{primitive.letter-spacing.48}"
6927
- }
6928
- },
6929
- sm: {
6930
- size: {
6931
- $type: "dimension",
6932
- $value: "{primitive.font-size.32}"
6933
- },
6934
- "line-height": {
6935
- $type: "dimension",
6936
- $value: "{primitive.line-height.32}"
6937
- },
6938
- tracking: {
6939
- $type: "dimension",
6940
- $value: "{primitive.letter-spacing.32}"
6941
- }
6942
- }
6943
- },
6944
- // H4
6945
- h4: {
6946
- $extensions: {
6947
- "nds.utility": {
6948
- name: "typography-h4",
6949
- responsive: true,
6950
- inherit: {
6951
- fontFamily: "heading.font",
6952
- fontWeight: "heading.weight"
6953
- }
6954
- }
6955
- },
6956
- lg: {
6957
- size: {
6958
- $type: "dimension",
6959
- $value: "{primitive.font-size.48}",
6960
- $description: "H4 font size (lg breakpoint)"
6961
- },
6962
- "line-height": {
6963
- $type: "dimension",
6964
- $value: "{primitive.line-height.48}",
6965
- $description: "H4 line height (lg breakpoint)"
6966
- },
6967
- tracking: {
6968
- $type: "dimension",
6969
- $value: "{primitive.letter-spacing.48}",
6970
- $description: "H4 letter spacing (lg breakpoint)"
6971
- }
6972
- },
6973
- md: {
6974
- size: {
6975
- $type: "dimension",
6976
- $value: "{primitive.font-size.32}"
6977
- },
6978
- "line-height": {
6979
- $type: "dimension",
6980
- $value: "{primitive.line-height.32}"
6981
- },
6982
- tracking: {
6983
- $type: "dimension",
6984
- $value: "{primitive.letter-spacing.32}"
6985
- }
6986
- },
6987
- sm: {
6988
- size: {
6989
- $type: "dimension",
6990
- $value: "{primitive.font-size.24}"
6991
- },
6992
- "line-height": {
6993
- $type: "dimension",
6994
- $value: "{primitive.line-height.24}"
6995
- },
6996
- tracking: {
6997
- $type: "dimension",
6998
- $value: "{primitive.letter-spacing.24}"
6999
- }
7000
- }
7001
- },
7002
- // H5
7003
- h5: {
7004
- $extensions: {
7005
- "nds.utility": {
7006
- name: "typography-h5",
7007
- responsive: true,
7008
- inherit: {
7009
- fontFamily: "heading.font",
7010
- fontWeight: "heading.weight"
7011
- }
7012
- }
7013
- },
7014
- lg: {
7015
- size: {
7016
- $type: "dimension",
7017
- $value: "{primitive.font-size.32}",
7018
- $description: "H5 font size (lg breakpoint)"
7019
- },
7020
- "line-height": {
7021
- $type: "dimension",
7022
- $value: "{primitive.line-height.32}",
7023
- $description: "H5 line height (lg breakpoint)"
7024
- },
7025
- tracking: {
7026
- $type: "dimension",
7027
- $value: "{primitive.letter-spacing.32}",
7028
- $description: "H5 letter spacing (lg breakpoint)"
7029
- }
7030
- },
7031
- md: {
7032
- size: {
7033
- $type: "dimension",
7034
- $value: "{primitive.font-size.24}"
7035
- },
7036
- "line-height": {
7037
- $type: "dimension",
7038
- $value: "{primitive.line-height.24}"
7039
- },
7040
- tracking: {
7041
- $type: "dimension",
7042
- $value: "{primitive.letter-spacing.24}"
7043
- }
7044
- },
7045
- sm: {
7046
- size: {
7047
- $type: "dimension",
7048
- $value: "{primitive.font-size.21}"
7049
- },
7050
- "line-height": {
7051
- $type: "dimension",
7052
- $value: "{primitive.line-height.21}"
7053
- },
7054
- tracking: {
7055
- $type: "dimension",
7056
- $value: "{primitive.letter-spacing.21}"
7057
- }
7058
- }
7059
- },
7060
- // =====================================================================
7061
- // TEXT GROUP
7062
- // Body text, overline, and caption
7063
- // =====================================================================
7064
- body: {
7065
- font: {
7066
- $type: "fontFamily",
7067
- $value: "{primitive.font-family.inter}",
7068
- $description: "Body font family"
7069
- },
7070
- weight: {
7071
- $type: "fontWeight",
7072
- $value: "{primitive.font-weight.regular}",
7073
- $description: "Body font weight"
7074
- },
7075
- // Body Large - responsive typography
7076
- lg: {
7077
- $extensions: {
7078
- "nds.utility": {
7079
- name: "typography-body-lg",
7080
- responsive: true,
7081
- inherit: {
7082
- fontFamily: "body.font",
7083
- fontWeight: "body.weight"
7084
- }
7085
- }
7086
- },
7087
- lg: {
7088
- size: {
7089
- $type: "dimension",
7090
- $value: "{primitive.font-size.21}",
7091
- $description: "Body lg font size (lg breakpoint)"
7092
- },
7093
- "line-height": {
7094
- $type: "dimension",
7095
- $value: "{primitive.line-height.21}",
7096
- $description: "Body lg line height (lg breakpoint)"
7097
- },
7098
- tracking: {
7099
- $type: "dimension",
7100
- $value: "{primitive.letter-spacing.21}",
7101
- $description: "Body lg letter spacing (lg breakpoint)"
7102
- }
7103
- },
7104
- md: {
7105
- size: {
7106
- $type: "dimension",
7107
- $value: "{primitive.font-size.18}"
7108
- },
7109
- "line-height": {
7110
- $type: "dimension",
7111
- $value: "{primitive.line-height.18}"
7112
- },
7113
- tracking: {
7114
- $type: "dimension",
7115
- $value: "{primitive.letter-spacing.18}"
7116
- }
7117
- },
7118
- sm: {
7119
- size: {
7120
- $type: "dimension",
7121
- $value: "{primitive.font-size.16}"
7122
- },
7123
- "line-height": {
7124
- $type: "dimension",
7125
- $value: "{primitive.line-height.16}"
7126
- },
7127
- tracking: {
7128
- $type: "dimension",
7129
- $value: "{primitive.letter-spacing.16}"
7130
- }
7131
- }
7132
- },
7133
- // Body Medium - responsive typography
7134
- md: {
7135
- $extensions: {
7136
- "nds.utility": {
7137
- name: "typography-body-md",
7138
- responsive: true,
7139
- inherit: {
7140
- fontFamily: "body.font",
7141
- fontWeight: "body.weight"
7142
- }
7143
- }
7144
- },
7145
- lg: {
7146
- size: {
7147
- $type: "dimension",
7148
- $value: "{primitive.font-size.18}",
7149
- $description: "Body md font size (lg breakpoint)"
7150
- },
7151
- "line-height": {
7152
- $type: "dimension",
7153
- $value: "{primitive.line-height.18}",
7154
- $description: "Body md line height (lg breakpoint)"
7155
- },
7156
- tracking: {
7157
- $type: "dimension",
7158
- $value: "{primitive.letter-spacing.18}",
7159
- $description: "Body md letter spacing (lg breakpoint)"
7160
- }
7161
- },
7162
- md: {
7163
- size: {
7164
- $type: "dimension",
7165
- $value: "{primitive.font-size.16}"
7166
- },
7167
- "line-height": {
7168
- $type: "dimension",
7169
- $value: "{primitive.line-height.16}"
7170
- },
7171
- tracking: {
7172
- $type: "dimension",
7173
- $value: "{primitive.letter-spacing.16}"
7174
- }
7175
- },
7176
- sm: {
7177
- size: {
7178
- $type: "dimension",
7179
- $value: "{primitive.font-size.14}"
7180
- },
7181
- "line-height": {
7182
- $type: "dimension",
7183
- $value: "{primitive.line-height.14}"
7184
- },
7185
- tracking: {
7186
- $type: "dimension",
7187
- $value: "{primitive.letter-spacing.14}"
7188
- }
7189
- }
7190
- },
7191
- // Body Small - responsive typography
7192
- sm: {
7193
- $extensions: {
7194
- "nds.utility": {
7195
- name: "typography-body-sm",
7196
- responsive: true,
7197
- inherit: {
7198
- fontFamily: "body.font",
7199
- fontWeight: "body.weight"
7200
- }
7201
- }
7202
- },
7203
- lg: {
7204
- size: {
7205
- $type: "dimension",
7206
- $value: "{primitive.font-size.14}",
7207
- $description: "Body sm font size (lg breakpoint)"
7208
- },
7209
- "line-height": {
7210
- $type: "dimension",
7211
- $value: "{primitive.line-height.14}",
7212
- $description: "Body sm line height (lg breakpoint)"
7213
- },
7214
- tracking: {
7215
- $type: "dimension",
7216
- $value: "{primitive.letter-spacing.14}",
7217
- $description: "Body sm letter spacing (lg breakpoint)"
7218
- }
7219
- },
7220
- md: {
7221
- size: {
7222
- $type: "dimension",
7223
- $value: "{primitive.font-size.14}"
7224
- },
7225
- "line-height": {
7226
- $type: "dimension",
7227
- $value: "{primitive.line-height.14}"
7228
- },
7229
- tracking: {
7230
- $type: "dimension",
7231
- $value: "{primitive.letter-spacing.14}"
7232
- }
7233
- },
7234
- sm: {
7235
- size: {
7236
- $type: "dimension",
7237
- $value: "{primitive.font-size.12}"
7238
- },
7239
- "line-height": {
7240
- $type: "dimension",
7241
- $value: "{primitive.line-height.12}"
7242
- },
7243
- tracking: {
7244
- $type: "dimension",
7245
- $value: "{primitive.letter-spacing.12}"
7246
- }
7247
- }
7248
- }
7249
- },
7250
- // Overline - Small caps/label text
7251
- overline: {
7252
- $extensions: {
7253
- "nds.utility": {
7254
- name: "typography-overline",
7255
- inherit: {
7256
- fontFamily: "body.font"
7257
- }
7258
- }
7259
- },
7260
- size: {
7261
- $type: "dimension",
7262
- $value: "{primitive.font-size.14}",
7263
- $description: "Overline font size"
7264
- },
7265
- "line-height": {
7266
- $type: "dimension",
7267
- $value: "{primitive.line-height.24}",
7268
- $description: "Overline line height"
7269
- },
7270
- tracking: {
7271
- $type: "dimension",
7272
- $value: "{primitive.letter-spacing.14}",
7273
- $description: "Overline letter spacing"
7274
- }
7275
- },
7276
- // Caption - Small supplementary text
7277
- caption: {
7278
- $extensions: {
7279
- "nds.utility": {
7280
- name: "typography-caption",
7281
- inherit: {
7282
- fontFamily: "body.font"
7283
- }
7284
- }
7285
- },
7286
- size: {
7287
- $type: "dimension",
7288
- $value: "{primitive.font-size.11}",
7289
- $description: "Caption font size"
7290
- },
7291
- "line-height": {
7292
- $type: "dimension",
7293
- $value: "{primitive.line-height.11}",
7294
- $description: "Caption line height"
7295
- },
7296
- tracking: {
7297
- $type: "dimension",
7298
- $value: "{primitive.letter-spacing.11}",
7299
- $description: "Caption letter spacing"
7300
- }
7301
- },
7302
- // =====================================================================
7303
- // UI GROUP
7304
- // Button, link, and interactive element typography
7305
- // =====================================================================
7306
- ui: {
7307
- button: {
7308
- font: {
7309
- $type: "fontFamily",
7310
- $value: "{primitive.font-family.inter}",
7311
- $description: "Button font family"
7312
- },
7313
- weight: {
7314
- $type: "fontWeight",
7315
- $value: "{primitive.font-weight.medium}",
7316
- $description: "Button font weight"
7317
- },
7318
- lg: {
7319
- $extensions: {
7320
- "nds.utility": {
7321
- name: "typography-ui-button-lg",
7322
- inherit: {
7323
- fontFamily: "ui.button.font",
7324
- fontWeight: "ui.button.weight"
7325
- }
7326
- }
7327
- },
7328
- size: {
7329
- $type: "dimension",
7330
- $value: "{primitive.font-size.18}",
7331
- $description: "lg button font size"
7332
- },
7333
- "line-height": {
7334
- $type: "dimension",
7335
- $value: "{primitive.line-height.18}",
7336
- $description: "lg button line height"
7337
- },
7338
- tracking: {
7339
- $type: "dimension",
7340
- $value: "{primitive.letter-spacing.button}",
7341
- $description: "lg button letter spacing"
7342
- }
7343
- },
7344
- md: {
7345
- $extensions: {
7346
- "nds.utility": {
7347
- name: "typography-ui-button-md",
7348
- inherit: {
7349
- fontFamily: "ui.button.font",
7350
- fontWeight: "ui.button.weight"
7351
- }
7352
- }
7353
- },
7354
- size: {
7355
- $type: "dimension",
7356
- $value: "{primitive.font-size.16}",
7357
- $description: "md button font size"
7358
- },
7359
- "line-height": {
7360
- $type: "dimension",
7361
- $value: "{primitive.line-height.16}",
7362
- $description: "md button line height"
7363
- },
7364
- tracking: {
7365
- $type: "dimension",
7366
- $value: "{primitive.letter-spacing.button}",
7367
- $description: "md button letter spacing"
7368
- }
7369
- },
7370
- sm: {
7371
- $extensions: {
7372
- "nds.utility": {
7373
- name: "typography-ui-button-sm",
7374
- inherit: {
7375
- fontFamily: "ui.button.font",
7376
- fontWeight: "ui.button.weight"
7377
- }
7378
- }
7379
- },
7380
- size: {
7381
- $type: "dimension",
7382
- $value: "{primitive.font-size.14}",
7383
- $description: "sm button font size"
7384
- },
7385
- "line-height": {
7386
- $type: "dimension",
7387
- $value: "{primitive.line-height.14}",
7388
- $description: "sm button line height"
7389
- },
7390
- tracking: {
7391
- $type: "dimension",
7392
- $value: "{primitive.letter-spacing.button}",
7393
- $description: "sm button letter spacing"
7394
- }
7395
- }
7396
- },
7397
- link: {
7398
- weight: {
7399
- $type: "fontWeight",
7400
- $value: "{primitive.font-weight.medium}",
7401
- $description: "Link font weight"
7402
- }
7403
- },
7404
- label: {
7405
- $extensions: {
7406
- "nds.utility": {
7407
- name: "typography-ui-label",
7408
- inherit: {
7409
- fontFamily: "ui.label.font",
7410
- fontWeight: "ui.label.weight"
7411
- }
7412
- }
7413
- },
7414
- font: {
7415
- $type: "fontFamily",
7416
- $value: "{primitive.font-family.inter}",
7417
- $description: "Label font family"
7418
- },
7419
- weight: {
7420
- $type: "fontWeight",
7421
- $value: "{primitive.font-weight.medium}",
7422
- $description: "Label font weight"
7423
- },
7424
- size: {
7425
- $type: "dimension",
7426
- $value: "{primitive.font-size.14}",
7427
- $description: "Label font size"
7428
- },
7429
- "line-height": {
7430
- $type: "dimension",
7431
- $value: "{primitive.line-height.14}",
7432
- $description: "Label line height"
7433
- }
7434
- },
7435
- // Text - General UI text ramp for buttons, captions, and other UI elements
7436
- text: {
7437
- font: {
7438
- $type: "fontFamily",
7439
- $value: "{primitive.font-family.inter}",
7440
- $description: "UI text font family"
7441
- },
7442
- weight: {
7443
- $type: "fontWeight",
7444
- $value: "{primitive.font-weight.medium}",
7445
- $description: "UI text font weight"
7446
- },
7447
- xs: {
7448
- $extensions: {
7449
- "nds.utility": {
7450
- name: "typography-ui-text-xs",
7451
- inherit: {
7452
- fontFamily: "ui.text.font",
7453
- fontWeight: "ui.text.weight"
7454
- }
7455
- }
7456
- },
7457
- size: {
7458
- $type: "dimension",
7459
- $value: "{primitive.font-size.12}",
7460
- $description: "Extra small UI text font size (12px) - for small buttons, captions"
7461
- },
7462
- "line-height": {
7463
- $type: "dimension",
7464
- $value: "{primitive.line-height.12}",
7465
- $description: "Extra small UI text line height (16px)"
7466
- }
7467
- },
7468
- sm: {
7469
- $extensions: {
7470
- "nds.utility": {
7471
- name: "typography-ui-text-sm",
7472
- inherit: {
7473
- fontFamily: "ui.text.font",
7474
- fontWeight: "ui.text.weight"
7475
- }
7476
- }
7477
- },
7478
- size: {
7479
- $type: "dimension",
7480
- $value: "{primitive.font-size.14}",
7481
- $description: "Small UI text font size (14px) - for default buttons"
7482
- },
7483
- "line-height": {
7484
- $type: "dimension",
7485
- $value: "{primitive.line-height.14}",
7486
- $description: "Small UI text line height (20px)"
7487
- }
7488
- },
7489
- md: {
7490
- $extensions: {
7491
- "nds.utility": {
7492
- name: "typography-ui-text-md",
7493
- inherit: {
7494
- fontFamily: "ui.text.font",
7495
- fontWeight: "ui.text.weight"
7496
- }
7497
- }
7498
- },
7499
- size: {
7500
- $type: "dimension",
7501
- $value: "{primitive.font-size.16}",
7502
- $description: "Medium UI text font size (16px) - for large buttons"
7503
- },
7504
- "line-height": {
7505
- $type: "dimension",
7506
- $value: "{primitive.line-height.16}",
7507
- $description: "Medium UI text line height (24px)"
7508
- }
7509
- },
7510
- lg: {
7511
- $extensions: {
7512
- "nds.utility": {
7513
- name: "typography-ui-text-lg",
7514
- inherit: {
7515
- fontFamily: "ui.text.font",
7516
- fontWeight: "ui.text.weight"
7517
- }
7518
- }
7519
- },
7520
- size: {
7521
- $type: "dimension",
7522
- $value: "{primitive.font-size.18}",
7523
- $description: "Large UI text font size (18px) - optional larger size"
7524
- },
7525
- "line-height": {
7526
- $type: "dimension",
7527
- $value: "{primitive.line-height.28}",
7528
- $description: "Large UI text line height (28px)"
7529
- }
7530
- }
7531
- }
7532
- }
7533
- }
7534
- }
7535
- };
7536
-
7537
- // ../tokens/dist/semantic/spatial/base.js
7538
- var baseSpatialTokens = {
7539
- semantic: {
7540
- spatial: {
7541
- $extensions: {
7542
- "nds.theme": {
7543
- category: "spatial",
7544
- name: "base"
7545
- },
7546
- "nds.figmaSync": {
7547
- collectionKey: "145a1dde6a2edbd03b4e1fe9bbc9269e90bfe5f1",
7548
- collectionName: "Spatial",
7549
- modeMapping: { modeName: "Default" }
7550
- }
7551
- },
7552
- grid: {
7553
- $extensions: {
7554
- "nds.grid": {
7555
- generateUtilities: true
7556
- }
7557
- },
7558
- large: {
7559
- $extensions: {
7560
- "nds.breakpoint": {
7561
- name: "lg",
7562
- minWidth: "{primitive.breakpoint.lg}",
7563
- description: "Desktop (1440px+)"
7564
- }
7565
- },
7566
- margin: {
7567
- $type: "dimension",
7568
- $value: "{primitive.spacing.72}",
7569
- $description: "Outer margin for large breakpoint grid"
7570
- },
7571
- gutter: {
7572
- $type: "dimension",
7573
- $value: "{primitive.spacing.24}",
7574
- $description: "Gap between columns for large breakpoint"
7575
- },
7576
- columns: {
7577
- $type: "number",
7578
- $value: 24,
7579
- $description: "Number of columns for large breakpoint"
7580
- }
7581
- },
7582
- medium: {
7583
- $extensions: {
7584
- "nds.breakpoint": {
7585
- name: "md",
7586
- minWidth: "{primitive.breakpoint.md}",
7587
- description: "Tablet (768px - 1439px)"
7588
- }
7589
- },
7590
- margin: {
7591
- $type: "dimension",
7592
- $value: "{primitive.spacing.56}",
7593
- $description: "Outer margin for medium breakpoint grid"
7594
- },
7595
- gutter: {
7596
- $type: "dimension",
7597
- $value: "{primitive.spacing.20}",
7598
- $description: "Gap between columns for medium breakpoint"
7599
- },
7600
- columns: {
7601
- $type: "number",
7602
- $value: 12,
7603
- $description: "Number of columns for medium breakpoint"
7604
- }
7605
- },
7606
- small: {
7607
- $extensions: {
7608
- "nds.breakpoint": {
7609
- name: "sm",
7610
- minWidth: "{primitive.breakpoint.sm}",
7611
- description: "Mobile (< 768px)"
7612
- }
7613
- },
7614
- margin: {
7615
- $type: "dimension",
7616
- $value: "{primitive.spacing.24}",
7617
- $description: "Outer margin for small breakpoint grid"
7618
- },
7619
- gutter: {
7620
- $type: "dimension",
7621
- $value: "{primitive.spacing.12}",
7622
- $description: "Gap between columns for small breakpoint"
7623
- },
7624
- columns: {
7625
- $type: "number",
7626
- $value: 4,
7627
- $description: "Number of columns for small breakpoint"
7628
- }
7629
- }
7630
- },
7631
- section: {
7632
- large: {
7633
- gap: {
7634
- $type: "dimension",
7635
- $value: "{primitive.spacing.64}",
7636
- $description: "Gap between elements in large sections"
7637
- },
7638
- padding: {
7639
- $type: "dimension",
7640
- $value: "{primitive.spacing.128}",
7641
- $description: "Vertical padding for large sections"
7642
- }
7643
- },
7644
- medium: {
7645
- gap: {
7646
- $type: "dimension",
7647
- $value: "{primitive.spacing.56}",
7648
- $description: "Gap between elements in medium sections"
7649
- },
7650
- padding: {
7651
- $type: "dimension",
7652
- $value: "{primitive.spacing.96}",
7653
- $description: "Vertical padding for medium sections"
7654
- }
7655
- },
7656
- small: {
7657
- gap: {
7658
- $type: "dimension",
7659
- $value: "{primitive.spacing.32}",
7660
- $description: "Gap between elements in small sections"
7661
- },
7662
- padding: {
7663
- $type: "dimension",
7664
- $value: "{primitive.spacing.64}",
7665
- $description: "Vertical padding for small sections"
7666
- }
7667
- }
7668
- },
7669
- card: {
7670
- large: {
7671
- gap: {
7672
- $type: "dimension",
7673
- $value: "{primitive.spacing.10}",
7674
- $description: "Internal gap for large cards"
7675
- },
7676
- padding: {
7677
- $type: "dimension",
7678
- $value: "{primitive.spacing.24}",
7679
- $description: "Internal padding for large cards"
7680
- }
7681
- },
7682
- small: {
7683
- gap: {
7684
- $type: "dimension",
7685
- $value: "{primitive.spacing.12}",
7686
- $description: "Internal gap for small cards"
7687
- },
7688
- padding: {
7689
- $type: "dimension",
7690
- $value: "{primitive.spacing.16}",
7691
- $description: "Internal padding for small cards"
7692
- }
7693
- }
7694
- },
7695
- /**
7696
- * UI Control Tokens
7697
- *
7698
- * Spacing for form controls and UI elements.
7699
- */
7700
- ui: {
7701
- control: {
7702
- "vertical-padding": {
7703
- $type: "dimension",
7704
- $value: "{primitive.spacing.10}",
7705
- $description: "Vertical padding for form controls"
7706
- },
7707
- "horizontal-padding": {
7708
- $type: "dimension",
7709
- $value: "{primitive.spacing.16}",
7710
- $description: "Horizontal padding for form controls"
7711
- },
7712
- gap: {
7713
- $type: "dimension",
7714
- $value: "{primitive.spacing.8}",
7715
- $description: "Gap between control elements"
7716
- },
7717
- height: {
7718
- small: {
7719
- $type: "dimension",
7720
- $value: "{primitive.spacing.36}",
7721
- $description: "Height for small form controls"
7722
- },
7723
- medium: {
7724
- $type: "dimension",
7725
- $value: "{primitive.spacing.48}",
7726
- $description: "Height for medium form controls"
7727
- },
7728
- large: {
7729
- $type: "dimension",
7730
- $value: "{primitive.spacing.56}",
7731
- $description: "Height for large form controls"
7732
- }
7733
- },
7734
- "padding-x": {
7735
- small: {
7736
- $type: "dimension",
7737
- $value: "{primitive.spacing.12}",
7738
- $description: "Horizontal padding for small form controls"
7739
- },
7740
- medium: {
7741
- $type: "dimension",
7742
- $value: "{primitive.spacing.16}",
7743
- $description: "Horizontal padding for medium form controls"
7744
- },
7745
- large: {
7746
- $type: "dimension",
7747
- $value: "{primitive.spacing.20}",
7748
- $description: "Horizontal padding for large form controls"
7749
- }
7750
- },
7751
- "padding-y": {
7752
- small: {
7753
- $type: "dimension",
7754
- $value: "{primitive.spacing.8}",
7755
- $description: "Vertical padding for small form controls"
7756
- },
7757
- medium: {
7758
- $type: "dimension",
7759
- $value: "{primitive.spacing.10}",
7760
- $description: "Vertical padding for medium form controls"
7761
- },
7762
- large: {
7763
- $type: "dimension",
7764
- $value: "{primitive.spacing.12}",
7765
- $description: "Vertical padding for large form controls"
7766
- }
7767
- }
7768
- },
7769
- button: {
7770
- gap: {
7771
- "icon-text": {
7772
- $type: "dimension",
7773
- $value: "{primitive.spacing.6}",
7774
- $description: "Gap between button icon and text"
7775
- },
7776
- "button-group": {
7777
- $type: "dimension",
7778
- $value: "{primitive.spacing.12}",
7779
- $description: "Gap between buttons in a group"
7780
- }
7781
- },
7782
- // Figma Button sizes: sm=32px, default=36px, lg=40px
7783
- height: {
7784
- small: {
7785
- $type: "dimension",
7786
- $value: "{primitive.spacing.32}",
7787
- $description: "Height for small buttons (32px)"
7788
- },
7789
- medium: {
7790
- $type: "dimension",
7791
- $value: "{primitive.spacing.36}",
7792
- $description: "Height for medium/default buttons (36px)"
7793
- },
7794
- large: {
7795
- $type: "dimension",
7796
- $value: "{primitive.spacing.40}",
7797
- $description: "Height for large buttons (40px)"
7798
- }
7799
- },
7800
- "padding-x": {
7801
- small: {
7802
- $type: "dimension",
7803
- $value: "{primitive.spacing.12}",
7804
- $description: "Horizontal padding for small buttons (12px)"
7805
- },
7806
- medium: {
7807
- $type: "dimension",
7808
- $value: "{primitive.spacing.16}",
7809
- $description: "Horizontal padding for medium buttons (16px)"
7810
- },
7811
- large: {
7812
- $type: "dimension",
7813
- $value: "{primitive.spacing.24}",
7814
- $description: "Horizontal padding for large buttons (24px)"
7815
- }
7816
- },
7817
- "padding-y": {
7818
- small: {
7819
- $type: "dimension",
7820
- $value: "{primitive.spacing.8}",
7821
- $description: "Vertical padding for small buttons (8px)"
7822
- },
7823
- medium: {
7824
- $type: "dimension",
7825
- $value: "{primitive.spacing.8}",
7826
- $description: "Vertical padding for medium buttons (8px)"
7827
- },
7828
- large: {
7829
- $type: "dimension",
7830
- $value: "{primitive.spacing.10}",
7831
- $description: "Vertical padding for large buttons (10px)"
7832
- }
7833
- }
7834
- },
7835
- input: {
7836
- height: {
7837
- small: {
7838
- $type: "dimension",
7839
- $value: "{semantic.spatial.ui.control.height.small}",
7840
- $description: "Height for small input controls"
7841
- },
7842
- medium: {
7843
- $type: "dimension",
7844
- $value: "{semantic.spatial.ui.control.height.medium}",
7845
- $description: "Height for medium input controls"
7846
- },
7847
- large: {
7848
- $type: "dimension",
7849
- $value: "{semantic.spatial.ui.control.height.large}",
7850
- $description: "Height for large input controls"
7851
- }
7852
- },
7853
- "padding-x": {
7854
- small: {
7855
- $type: "dimension",
7856
- $value: "{semantic.spatial.ui.control.padding-x.small}",
7857
- $description: "Horizontal padding for small input controls"
7858
- },
7859
- medium: {
7860
- $type: "dimension",
7861
- $value: "{semantic.spatial.ui.control.padding-x.medium}",
7862
- $description: "Horizontal padding for medium input controls"
7863
- },
7864
- large: {
7865
- $type: "dimension",
7866
- $value: "{semantic.spatial.ui.control.padding-x.large}",
7867
- $description: "Horizontal padding for large input controls"
7868
- }
7869
- },
7870
- "padding-y": {
7871
- small: {
7872
- $type: "dimension",
7873
- $value: "{semantic.spatial.ui.control.padding-y.small}",
7874
- $description: "Vertical padding for small input controls"
7875
- },
7876
- medium: {
7877
- $type: "dimension",
7878
- $value: "{semantic.spatial.ui.control.padding-y.medium}",
7879
- $description: "Vertical padding for medium input controls"
7880
- },
7881
- large: {
7882
- $type: "dimension",
7883
- $value: "{semantic.spatial.ui.control.padding-y.large}",
7884
- $description: "Vertical padding for large input controls"
7885
- }
7886
- }
7887
- },
7888
- "input-group": {
7889
- height: {
7890
- small: {
7891
- $type: "dimension",
7892
- $value: "{semantic.spatial.ui.input.height.small}",
7893
- $description: "Height for small input groups"
7894
- },
7895
- medium: {
7896
- $type: "dimension",
7897
- $value: "{semantic.spatial.ui.input.height.medium}",
7898
- $description: "Height for medium input groups"
7899
- },
7900
- large: {
7901
- $type: "dimension",
7902
- $value: "{semantic.spatial.ui.input.height.large}",
7903
- $description: "Height for large input groups"
7904
- }
7905
- },
7906
- "padding-x": {
7907
- small: {
7908
- $type: "dimension",
7909
- $value: "{semantic.spatial.ui.input.padding-x.small}",
7910
- $description: "Horizontal padding for small input groups"
7911
- },
7912
- medium: {
7913
- $type: "dimension",
7914
- $value: "{semantic.spatial.ui.input.padding-x.medium}",
7915
- $description: "Horizontal padding for medium input groups"
7916
- },
7917
- large: {
7918
- $type: "dimension",
7919
- $value: "{semantic.spatial.ui.input.padding-x.large}",
7920
- $description: "Horizontal padding for large input groups"
7921
- }
7922
- },
7923
- "padding-y": {
7924
- small: {
7925
- $type: "dimension",
7926
- $value: "{semantic.spatial.ui.input.padding-y.small}",
7927
- $description: "Vertical padding for small input groups"
7928
- },
7929
- medium: {
7930
- $type: "dimension",
7931
- $value: "{semantic.spatial.ui.input.padding-y.medium}",
7932
- $description: "Vertical padding for medium input groups"
7933
- },
7934
- large: {
7935
- $type: "dimension",
7936
- $value: "{semantic.spatial.ui.input.padding-y.large}",
7937
- $description: "Vertical padding for large input groups"
7938
- }
7939
- },
7940
- gap: {
7941
- block: {
7942
- $type: "dimension",
7943
- $value: "{semantic.spatial.ui.control.gap}",
7944
- $description: "Gap between block addon and input in input group"
7945
- }
7946
- }
7947
- }
7948
- },
7949
- /**
7950
- * Component Spacing Tokens
7951
- *
7952
- * Spacing for specific components (padding, gap).
7953
- */
7954
- component: {
7955
- card: {
7956
- padding: {
7957
- small: {
7958
- $type: "dimension",
7959
- $value: "{primitive.spacing.24}",
7960
- $description: "Padding for small cards"
7961
- },
7962
- medium: {
7963
- $type: "dimension",
7964
- $value: "{primitive.spacing.32}",
7965
- $description: "Padding for medium cards"
7966
- },
7967
- large: {
7968
- $type: "dimension",
7969
- $value: "{primitive.spacing.40}",
7970
- $description: "Padding for large cards"
7971
- }
7972
- },
7973
- gap: {
7974
- $type: "dimension",
7975
- $value: "{primitive.spacing.24}",
7976
- $description: "Internal gap for cards"
7977
- }
7978
- },
7979
- feature: {
7980
- padding: {
7981
- small: {
7982
- $type: "dimension",
7983
- $value: "{primitive.spacing.32}",
7984
- $description: "Padding for small features"
7985
- },
7986
- medium: {
7987
- $type: "dimension",
7988
- $value: "{primitive.spacing.40}",
7989
- $description: "Padding for medium features"
7990
- },
7991
- large: {
7992
- $type: "dimension",
7993
- $value: "{primitive.spacing.48}",
7994
- $description: "Padding for large features"
7995
- }
7996
- },
7997
- gap: {
7998
- $type: "dimension",
7999
- $value: "{primitive.spacing.24}",
8000
- $description: "Gap between icon and content in features"
8001
- }
8002
- },
8003
- testimonial: {
8004
- padding: {
8005
- $type: "dimension",
8006
- $value: "{primitive.spacing.40}",
8007
- $description: "Padding for testimonials"
8008
- },
8009
- gap: {
8010
- $type: "dimension",
8011
- $value: "{primitive.spacing.24}",
8012
- $description: "Gap between quote and attribution"
8013
- }
8014
- },
8015
- form: {
8016
- gap: {
8017
- "field-field": {
8018
- $type: "dimension",
8019
- $value: "{primitive.spacing.20}",
8020
- $description: "Gap between form fields"
8021
- },
8022
- "label-field": {
8023
- $type: "dimension",
8024
- $value: "{primitive.spacing.8}",
8025
- $description: "Gap between label and field"
8026
- },
8027
- "field-button": {
8028
- $type: "dimension",
8029
- $value: "{primitive.spacing.24}",
8030
- $description: "Gap between field and submit button"
8031
- }
8032
- }
8033
- },
8034
- accordion: {
8035
- "padding-y": {
8036
- $type: "dimension",
8037
- $value: "{primitive.spacing.28}",
8038
- $description: "Vertical padding for accordion items"
8039
- }
8040
- },
8041
- tooltip: {
8042
- "padding-x": {
8043
- $type: "dimension",
8044
- $value: "{primitive.spacing.10}",
8045
- $description: "Horizontal padding for tooltip content"
8046
- },
8047
- "padding-y": {
8048
- $type: "dimension",
8049
- $value: "{primitive.spacing.6}",
8050
- $description: "Vertical padding for tooltip content"
8051
- }
8052
- },
8053
- /**
8054
- * Overlay Spacing Tokens
8055
- *
8056
- * Spacing for floating UI components (popover, modal, dropdown, menu).
8057
- */
8058
- overlay: {
8059
- padding: {
8060
- $type: "dimension",
8061
- $value: "{primitive.spacing.16}",
8062
- $description: "Padding for overlay containers (16px)"
8063
- },
8064
- gap: {
8065
- $type: "dimension",
8066
- $value: "{primitive.spacing.16}",
8067
- $description: "Gap between overlay content elements (16px)"
8068
- }
8069
- },
8070
- navbar: {
8071
- "padding-x": {
8072
- mobile: {
8073
- $type: "dimension",
8074
- $value: "{primitive.spacing.20}",
8075
- $description: "Horizontal padding for mobile navbar"
8076
- },
8077
- tablet: {
8078
- $type: "dimension",
8079
- $value: "{primitive.spacing.32}",
8080
- $description: "Horizontal padding for tablet navbar"
8081
- },
8082
- desktop: {
8083
- $type: "dimension",
8084
- $value: "{primitive.spacing.32}",
8085
- $description: "Horizontal padding for desktop navbar"
8086
- }
8087
- },
8088
- "padding-y": {
8089
- mobile: {
8090
- $type: "dimension",
8091
- $value: "{primitive.spacing.8}",
8092
- $description: "Vertical padding for mobile navbar"
8093
- },
8094
- tablet: {
8095
- $type: "dimension",
8096
- $value: "{primitive.spacing.16}",
8097
- $description: "Vertical padding for tablet navbar"
8098
- },
8099
- desktop: {
8100
- $type: "dimension",
8101
- $value: "{primitive.spacing.24}",
8102
- $description: "Vertical padding for desktop navbar"
8103
- }
8104
- },
8105
- gap: {
8106
- links: {
8107
- $type: "dimension",
8108
- $value: "{primitive.spacing.40}",
8109
- $description: "Gap between navbar links"
8110
- },
8111
- actions: {
8112
- $type: "dimension",
8113
- $value: "{primitive.spacing.8}",
8114
- $description: "Gap between navbar actions"
8115
- },
8116
- "mobile-menu": {
8117
- $type: "dimension",
8118
- $value: "{primitive.spacing.8}",
8119
- $description: "Gap in mobile menu items"
8120
- }
8121
- }
8122
- },
8123
- /**
8124
- * Video Player Spacing Tokens
8125
- *
8126
- * Spacing for video player controls, captions, and overlays.
8127
- */
8128
- "video-player": {
8129
- controls: {
8130
- height: {
8131
- $type: "dimension",
8132
- $value: "{primitive.spacing.48}",
8133
- $description: "Height of video player controls bar"
8134
- },
8135
- padding: {
8136
- $type: "dimension",
8137
- $value: "{primitive.spacing.16}",
8138
- $description: "Padding inside controls bar"
8139
- },
8140
- gap: {
8141
- $type: "dimension",
8142
- $value: "{primitive.spacing.12}",
8143
- $description: "Gap between control buttons"
8144
- }
8145
- },
8146
- caption: {
8147
- "padding-x": {
8148
- $type: "dimension",
8149
- $value: "{primitive.spacing.16}",
8150
- $description: "Horizontal padding for caption text"
8151
- },
8152
- "padding-y": {
8153
- $type: "dimension",
8154
- $value: "{primitive.spacing.8}",
8155
- $description: "Vertical padding for caption text"
8156
- },
8157
- "offset-bottom": {
8158
- $type: "dimension",
8159
- $value: "{primitive.spacing.64}",
8160
- $description: "Distance from bottom of video to caption"
8161
- }
8162
- },
8163
- "close-button": {
8164
- size: {
8165
- $type: "dimension",
8166
- $value: "{primitive.spacing.40}",
8167
- $description: "Size of close button"
8168
- },
8169
- offset: {
8170
- $type: "dimension",
8171
- $value: "{primitive.spacing.16}",
8172
- $description: "Offset from top-right corner"
8173
- }
8174
- }
8175
- }
8176
- },
8177
- /**
8178
- * Prose Tokens
8179
- *
8180
- * Spacing for prose/content blocks.
8181
- */
8182
- prose: {
8183
- "heading-gap": {
8184
- $type: "dimension",
8185
- $value: "{primitive.spacing.36}",
8186
- $description: "Gap before headings in prose"
8187
- },
8188
- "block-gap": {
8189
- $type: "dimension",
8190
- $value: "{primitive.spacing.96}",
8191
- $description: "Gap between prose blocks"
8192
- }
8193
- },
8194
- /**
8195
- * Content Layout Tokens
8196
- *
8197
- * Responsive content width patterns for the 12-column grid.
8198
- * Generates utilities: grid-content-narrow, grid-content-medium, grid-content-wide
8199
- */
8200
- layout: {
8201
- narrow: {
8202
- $description: "Narrow centered content (reading/mission statements)",
8203
- large: {
8204
- span: { $type: "number", $value: 8 },
8205
- start: { $type: "number", $value: 3 }
8206
- },
8207
- medium: {
8208
- span: { $type: "number", $value: 8 },
8209
- start: { $type: "number", $value: 3 }
8210
- }
8211
- },
8212
- medium: {
8213
- $description: "Medium centered content (forms/general)",
8214
- large: {
8215
- span: { $type: "number", $value: 8 },
8216
- start: { $type: "number", $value: 3 }
8217
- },
8218
- medium: {
8219
- span: { $type: "number", $value: 10 },
8220
- start: { $type: "number", $value: 2 }
8221
- }
8222
- },
8223
- wide: {
8224
- $description: "Wide content (dashboards/tables)",
8225
- large: {
8226
- span: { $type: "number", $value: 10 },
8227
- start: { $type: "number", $value: 2 }
8228
- },
8229
- medium: {
8230
- span: { $type: "number", $value: 12 },
8231
- start: { $type: "number", $value: 1 }
8232
- }
8233
- }
8234
- }
8235
- }
8236
- }
8237
- };
8238
-
8239
- // ../tokens/dist/theme-registry.js
8240
- var colorThemes = {
8241
- base: baseColorTokens,
8242
- bop: bopColorTokens,
8243
- civic: civicColorTokens,
8244
- dark: darkColorTokens,
8245
- darktech: darktechColorTokens,
8246
- institution: institutionColorTokens,
8247
- oceana: oceanaColorTokens,
8248
- recreation: recreationColorTokens
8249
- };
8250
- var surfaceThemes = {
8251
- base: baseSurfaceTokens,
8252
- sharp: sharpSurfaceTokens,
8253
- framed: framedSurfaceTokens,
8254
- soft: softSurfaceTokens
8255
- };
8256
-
8257
- // ../tokens/dist/themes/resolver.js
8258
- function flatToNested(flatTokens) {
8259
- const nested = {};
8260
- for (const [key, value] of Object.entries(flatTokens)) {
8261
- const parts = key.split("-");
8262
- let current = nested;
8263
- for (let i = 0; i < parts.length - 1; i++) {
8264
- const part = parts[i];
8265
- if (!part)
8266
- continue;
8267
- if (!(part in current)) {
8268
- current[part] = {};
8269
- }
8270
- const next = current[part];
8271
- if (typeof next === "string") {
8272
- console.warn(`Token naming conflict at ${parts.slice(0, i + 1).join("-")}`);
8273
- break;
8274
- }
8275
- if (next === void 0) {
8276
- current[part] = {};
8277
- current = current[part];
8278
- } else {
8279
- current = next;
8280
- }
8281
- }
8282
- const lastPart = parts[parts.length - 1];
8283
- if (lastPart && typeof current === "object") {
8284
- current[lastPart] = value;
8285
- }
8286
- }
8287
- return nested;
8288
- }
8289
- function flatToCSSVars(flatTokens) {
8290
- const result = {};
8291
- for (const [key, value] of Object.entries(flatTokens)) {
8292
- result[`--${key}`] = value;
8293
- }
8294
- return result;
8295
- }
8296
- function nestedToCSSVars(nested, prefix = "") {
8297
- const result = {};
8298
- function traverse(obj, currentPrefix) {
8299
- for (const [key, value] of Object.entries(obj)) {
8300
- const newPrefix = currentPrefix ? `${currentPrefix}-${key}` : key;
8301
- if (typeof value === "string") {
8302
- result[`--${newPrefix}`] = value;
8303
- } else {
8304
- traverse(value, newPrefix);
8305
- }
8306
- }
8307
- }
8308
- traverse(nested, prefix);
8309
- return result;
8310
- }
8311
-
8312
- // ../tokens/dist/primitives/animation.js
8313
- var primitiveAnimation = {
8314
- primitive: {
8315
- duration: {
8316
- $extensions: {
8317
- "nds.figmaSync": {
8318
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8319
- collectionName: "Primitives",
8320
- modeMapping: { modeName: "Value" }
8321
- }
8322
- },
8323
- $type: "duration",
8324
- $description: "Animation duration values",
8325
- /**
8326
- * Instant - for immediate feedback (e.g., button press)
8327
- */
8328
- "0": duration(0),
8329
- /**
8330
- * Extra fast - for micro-interactions (e.g., hover states)
8331
- */
8332
- "75": duration(75),
8333
- /**
8334
- * Fast - for quick transitions (e.g., fade in/out, color changes)
8335
- */
8336
- "150": duration(150),
8337
- /**
8338
- * Normal - for standard UI transitions (e.g., menu open, modal appear)
8339
- */
8340
- "200": duration(200),
8341
- /**
8342
- * Medium - for moderate animations (e.g., accordion expand)
8343
- */
8344
- "300": duration(300),
8345
- /**
8346
- * Slow - for deliberate animations (e.g., page transitions)
8347
- */
8348
- "500": duration(500),
8349
- /**
8350
- * Extra slow - for dramatic effect (e.g., hero animations)
8351
- */
8352
- "700": duration(700),
8353
- /**
8354
- * Very slow - for long-running animations (e.g., progress indicators)
8355
- */
8356
- "1000": duration(1e3)
8357
- },
8358
- easing: {
8359
- $extensions: {
8360
- "nds.figmaSync": {
8361
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8362
- collectionName: "Primitives",
8363
- modeMapping: { modeName: "Value" },
8364
- skip: true
8365
- }
8366
- },
8367
- $type: "cubicBezier",
8368
- $description: "Easing curves for animations",
8369
- /**
8370
- * Linear - constant speed, no acceleration
8371
- */
8372
- linear: cubicBezier(0, 0, 1, 1),
8373
- /**
8374
- * Ease - subtle acceleration and deceleration (CSS default)
8375
- */
8376
- ease: cubicBezier(0.25, 0.1, 0.25, 1),
8377
- /**
8378
- * Ease In - starts slow, accelerates
8379
- * Use for elements exiting the screen
8380
- */
8381
- "ease-in": cubicBezier(0.42, 0, 1, 1),
8382
- /**
8383
- * Ease Out - starts fast, decelerates
8384
- * Use for elements entering the screen
8385
- */
8386
- "ease-out": cubicBezier(0, 0, 0.58, 1),
8387
- /**
8388
- * Ease In Out - slow start and end
8389
- * Use for elements that stay on screen
8390
- */
8391
- "ease-in-out": cubicBezier(0.42, 0, 0.58, 1),
8392
- /**
8393
- * Emphasized - dramatic ease out with overshoot feel
8394
- * Based on Material Design's emphasized easing
8395
- */
8396
- emphasized: cubicBezier(0.2, 0, 0, 1),
8397
- /**
8398
- * Smooth - Apple-style smooth easing
8399
- * Great for accordion, height transitions
8400
- */
8401
- smooth: cubicBezier(0.23, 1, 0.32, 1),
8402
- /**
8403
- * Bounce - slight overshoot at the end
8404
- * Use sparingly for playful interactions
8405
- */
8406
- bounce: cubicBezier(0.34, 1.56, 0.64, 1),
8407
- /**
8408
- * Snappy - quick response, smooth finish
8409
- * Good for hover states and quick feedback
8410
- */
8411
- snappy: cubicBezier(0.4, 0, 0.2, 1)
8412
- }
8413
- }
8414
- };
8415
-
8416
- // ../tokens/dist/primitives/breakpoints.js
8417
- var primitiveBreakpoints = {
8418
- primitive: {
8419
- breakpoint: {
8420
- $extensions: {
8421
- "nds.figmaSync": {
8422
- collectionKey: "",
8423
- // Not used - skip is true
8424
- skip: true
8425
- // Breakpoints are not synced to Figma
8426
- }
8427
- },
8428
- $type: "dimension",
8429
- sm: {
8430
- ...dimension(320),
8431
- $extensions: { "nds.maxWidthAlias": "mobile" }
8432
- },
8433
- md: {
8434
- ...dimension(768),
8435
- $extensions: { "nds.maxWidthAlias": "tablet" }
8436
- },
8437
- lg: {
8438
- ...dimension(1440),
8439
- $extensions: { "nds.maxWidthAlias": "desktop" }
8440
- }
8441
- }
8442
- }
8443
- };
8444
-
8445
- // ../tokens/dist/primitives/colors.js
8446
- var primitiveColors = {
8447
- primitive: {
8448
- color: {
8449
- $extensions: {
8450
- "nds.figmaSync": {
8451
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8452
- collectionName: "Primitives",
8453
- modeMapping: { modeName: "Value" }
8454
- }
8455
- },
8456
- $type: "color",
8457
- gray: {
8458
- "50": srgb("#FAFAFA"),
8459
- "100": srgb("#F5F5F5"),
8460
- "200": srgb("#EEEEEE"),
8461
- "300": srgb("#E0E0E0"),
8462
- "400": srgb("#BDBDBD"),
8463
- "500": srgb("#9E9E9E"),
8464
- "600": srgb("#757575"),
8465
- "700": srgb("#616161"),
8466
- "800": srgb("#424242"),
8467
- "900": srgb("#212121"),
8468
- "1000": srgb("#1A1A1A"),
8469
- "1100": srgb("#141414"),
8470
- "1200": srgb("#0A0A0A")
8471
- },
8472
- brown: {
8473
- "50": srgb("#EEEBE9"),
8474
- "100": srgb("#D5CCC9"),
8475
- "200": srgb("#B9ABA5"),
8476
- "300": srgb("#9D8980"),
8477
- "400": srgb("#886F65"),
8478
- "500": srgb("#74564A"),
8479
- "600": srgb("#684D43"),
8480
- "700": srgb("#594139"),
8481
- "800": srgb("#4A352F"),
8482
- "900": srgb("#3B2824"),
8483
- "1000": srgb("#2F201D"),
8484
- "1100": srgb("#1C1312"),
8485
- "1200": srgb("#18100E")
8486
- },
8487
- steel: {
8488
- "50": srgb("#EDEFF1"),
8489
- "100": srgb("#D1D8DC"),
8490
- "200": srgb("#B3BEC4"),
8491
- "300": srgb("#94A3AD"),
8492
- "400": srgb("#7D8F9B"),
8493
- "500": srgb("#667C89"),
8494
- "600": srgb("#596D79"),
8495
- "700": srgb("#495963"),
8496
- "800": srgb("#3A474E"),
8497
- "900": srgb("#283237"),
8498
- "1000": srgb("#222B2F"),
8499
- "1100": srgb("#181E21"),
8500
- "1200": srgb("#101416")
8501
- },
8502
- red: {
8503
- "50": srgb("#FFEBEE"),
8504
- "100": srgb("#FFCDD2"),
8505
- "200": srgb("#EF9A9A"),
8506
- "300": srgb("#E57373"),
8507
- "400": srgb("#EF5350"),
8508
- "500": srgb("#F44336"),
8509
- "600": srgb("#E53935"),
8510
- "700": srgb("#D32F2F"),
8511
- "800": srgb("#C62828"),
8512
- "900": srgb("#B71C1C"),
8513
- v100: srgb("#FF8A80"),
8514
- v200: srgb("#FF5252"),
8515
- v300: srgb("#FF1744"),
8516
- v400: srgb("#D50000")
8517
- },
8518
- pink: {
8519
- "50": srgb("#F8E5EC"),
8520
- "100": srgb("#EFBECF"),
8521
- "200": srgb("#E694B0"),
8522
- "300": srgb("#DF6B92"),
8523
- "400": srgb("#DA4F7A"),
8524
- "500": srgb("#D63864"),
8525
- "600": srgb("#C63361"),
8526
- "700": srgb("#B22D5B"),
8527
- "800": srgb("#9F2757"),
8528
- "900": srgb("#7D1D4E"),
8529
- v100: srgb("#EF87AA"),
8530
- v200: srgb("#EB5181"),
8531
- v300: srgb("#E1305A"),
8532
- v400: srgb("#B52B62")
8533
- },
8534
- purple: {
8535
- "50": srgb("#F1E5F4"),
8536
- "100": srgb("#DBBFE4"),
8537
- "200": srgb("#C596D4"),
8538
- "300": srgb("#AF6CC3"),
8539
- "400": srgb("#9F4DB6"),
8540
- "500": srgb("#9031AA"),
8541
- "600": srgb("#832DA4"),
8542
- "700": srgb("#71279C"),
8543
- "800": srgb("#612294"),
8544
- "900": srgb("#441886"),
8545
- v100: srgb("#DC86F5"),
8546
- v200: srgb("#CF4EF3"),
8547
- v300: srgb("#C32AF0"),
8548
- v400: srgb("#9B20F6")
8549
- },
8550
- iris: {
8551
- "50": srgb("#ECE7F5"),
8552
- "100": srgb("#CFC4E6"),
8553
- "200": srgb("#AF9ED7"),
8554
- "300": srgb("#9076C7"),
8555
- "400": srgb("#7859BC"),
8556
- "500": srgb("#613DB0"),
8557
- "600": srgb("#5837AB"),
8558
- "700": srgb("#4C2FA2"),
8559
- "800": srgb("#40299A"),
8560
- "900": srgb("#2D1D8C"),
8561
- v100: srgb("#DC86F5"),
8562
- v200: srgb("#CF4EF3"),
8563
- v300: srgb("#C32AF0"),
8564
- v400: srgb("#9B20F6")
8565
- },
8566
- indigo: {
8567
- "25": srgb("#F5F7FF"),
8568
- // very light tint - menu hover
8569
- "35": srgb("#EDF2FF"),
8570
- // light tint - menu selected
8571
- "50": srgb("#E8EAF5"),
8572
- "100": srgb("#C6CAE6"),
8573
- "200": srgb("#A0A8D6"),
8574
- "300": srgb("#7B86C6"),
8575
- "400": srgb("#5F6BBA"),
8576
- "500": srgb("#4251AF"),
8577
- "600": srgb("#3C49A5"),
8578
- "700": srgb("#333F99"),
8579
- "800": srgb("#2A358E"),
8580
- "900": srgb("#1B2379"),
8581
- v100: srgb("#8F9EF8"),
8582
- v200: srgb("#586DF5"),
8583
- v300: srgb("#425AF5"),
8584
- v400: srgb("#364FF4")
8585
- },
8586
- blue: {
8587
- "50": srgb("#E6F2FC"),
8588
- "100": srgb("#C2DDF8"),
8589
- "200": srgb("#9CC8F5"),
8590
- "300": srgb("#77B3F0"),
8591
- "400": srgb("#5DA3EF"),
8592
- "500": srgb("#4894EC"),
8593
- "600": srgb("#4186DE"),
8594
- "700": srgb("#3874CB"),
8595
- "800": srgb("#2F64BA"),
8596
- "900": srgb("#1F469B"),
8597
- v100: srgb("#8CB0F9"),
8598
- v200: srgb("#5589F7"),
8599
- v250: srgb("#3B85FF"),
8600
- // menu selected text
8601
- v300: srgb("#4078F6"),
8602
- v400: srgb("#3761F6")
8603
- },
8604
- ice: {
8605
- "50": srgb("#E5F4FD"),
8606
- "100": srgb("#BDE4F9"),
8607
- "200": srgb("#94D2F6"),
8608
- "300": srgb("#6FC1F2"),
8609
- "400": srgb("#59B4F0"),
8610
- "500": srgb("#4BA7EE"),
8611
- "600": srgb("#4499DF"),
8612
- "700": srgb("#3B86CB"),
8613
- "800": srgb("#3275B8"),
8614
- "900": srgb("#235696"),
8615
- v100: srgb("#8CB0F9"),
8616
- v200: srgb("#5589F7"),
8617
- v300: srgb("#4078F6"),
8618
- v400: srgb("#3761F6")
8619
- },
8620
- cyan: {
8621
- "50": srgb("#E4F6F9"),
8622
- "100": srgb("#BEE9F1"),
8623
- "200": srgb("#96DCE8"),
8624
- "300": srgb("#73CDDE"),
8625
- "400": srgb("#5FC3D7"),
8626
- "500": srgb("#54B9D1"),
8627
- "600": srgb("#4CA9BE"),
8628
- "700": srgb("#4295A5"),
8629
- "800": srgb("#38818D"),
8630
- "900": srgb("#275F63"),
8631
- v100: srgb("#A3FCFE"),
8632
- v200: srgb("#77FBFD"),
8633
- v300: srgb("#68E2FB"),
8634
- v400: srgb("#52B5D0")
8635
- },
8636
- teal: {
8637
- "50": srgb("#E3F1F1"),
8638
- "100": srgb("#BBDEDB"),
8639
- "200": srgb("#91C9C4"),
8640
- "300": srgb("#6AB4AC"),
8641
- "400": srgb("#51A49A"),
8642
- "500": srgb("#429488"),
8643
- "600": srgb("#3B877B"),
8644
- "700": srgb("#34776B"),
8645
- "800": srgb("#2C675C"),
8646
- "900": srgb("#1E4C40"),
8647
- v100: srgb("#BBFDEC"),
8648
- v200: srgb("#91FCDC"),
8649
- v300: srgb("#6DE6B9"),
8650
- v400: srgb("#55BCA6")
8651
- },
8652
- green: {
8653
- "50": srgb("#EAF5EA"),
8654
- "100": srgb("#CEE5CB"),
8655
- "200": srgb("#AFD5AB"),
8656
- "300": srgb("#91C58A"),
8657
- "400": srgb("#7BB972"),
8658
- "500": srgb("#67AD5B"),
8659
- "600": srgb("#5D9E52"),
8660
- "700": srgb("#508C46"),
8661
- "800": srgb("#457B3B"),
8662
- "900": srgb("#2F5D28"),
8663
- v100: srgb("#C6F4CD"),
8664
- v200: srgb("#8EEDB3"),
8665
- v300: srgb("#69E282"),
8666
- v400: srgb("#5AC561")
8667
- },
8668
- sage: {
8669
- "50": srgb("#F2F8EA"),
8670
- "100": srgb("#DFECCB"),
8671
- "200": srgb("#CAE0AB"),
8672
- "300": srgb("#B6D48A"),
8673
- "400": srgb("#A6CB72"),
8674
- "500": srgb("#97C15C"),
8675
- "600": srgb("#88B153"),
8676
- "700": srgb("#749E47"),
8677
- "800": srgb("#618A3D"),
8678
- "900": srgb("#416829"),
8679
- v100: srgb("#D6FD9D"),
8680
- v200: srgb("#C3FD73"),
8681
- v300: srgb("#9BFC4E"),
8682
- v400: srgb("#85DA47")
8683
- },
8684
- lime: {
8685
- "50": srgb("#F9FBE9"),
8686
- "100": srgb("#F1F4C8"),
8687
- "200": srgb("#E8EEA5"),
8688
- "300": srgb("#DEE784"),
8689
- "400": srgb("#D7E06D"),
8690
- "500": srgb("#D0DB59"),
8691
- "600": srgb("#C2CA51"),
8692
- "700": srgb("#B0B447"),
8693
- "800": srgb("#9E9D3D"),
8694
- "900": srgb("#80772C"),
8695
- v100: srgb("#F6FF92"),
8696
- v200: srgb("#F1FE67"),
8697
- v300: srgb("#D2FD51"),
8698
- v400: srgb("#BBE849")
8699
- },
8700
- yellow: {
8701
- "50": srgb("#FFFDE9"),
8702
- "100": srgb("#FEF9CA"),
8703
- "200": srgb("#FDF5A8"),
8704
- "300": srgb("#FDF188"),
8705
- "400": srgb("#FCEE72"),
8706
- "500": srgb("#FCEC60"),
8707
- "600": srgb("#F7D959"),
8708
- "700": srgb("#F2C24F"),
8709
- "800": srgb("#EDAB46"),
8710
- "900": srgb("#E68537"),
8711
- v100: srgb("#FFFF9C"),
8712
- v200: srgb("#FFFF54"),
8713
- v300: srgb("#FCEB4E"),
8714
- v400: srgb("#F9D749")
8715
- },
8716
- amber: {
8717
- "50": srgb("#FEF8E3"),
8718
- "100": srgb("#FCEDBA"),
8719
- "200": srgb("#FAE18F"),
8720
- "300": srgb("#F8D667"),
8721
- "400": srgb("#F7CC50"),
8722
- "500": srgb("#F6C344"),
8723
- "600": srgb("#F4B63F"),
8724
- "700": srgb("#F2A43A"),
8725
- "800": srgb("#F09436"),
8726
- "900": srgb("#EE782F"),
8727
- v100: srgb("#FBE68D"),
8728
- v200: srgb("#F9D85E"),
8729
- v300: srgb("#F6C644"),
8730
- v400: srgb("#F3AF3D")
8731
- },
8732
- orange: {
8733
- "50": srgb("#FDF3E2"),
8734
- "100": srgb("#FAE1B8"),
8735
- "200": srgb("#F7CE8B"),
8736
- "300": srgb("#F4BA61"),
8737
- "400": srgb("#F3AB47"),
8738
- "500": srgb("#F19D38"),
8739
- "600": srgb("#EC9135"),
8740
- "700": srgb("#E68231"),
8741
- "800": srgb("#DF742C"),
8742
- "900": srgb("#D55B26"),
8743
- v100: srgb("#F8D38B"),
8744
- v200: srgb("#F3AF56"),
8745
- v300: srgb("#F09637"),
8746
- v400: srgb("#EE762F")
8747
- },
8748
- ember: {
8749
- "50": srgb("#F8EAE7"),
8750
- "100": srgb("#F7CEBF"),
8751
- "200": srgb("#F3AF96"),
8752
- "300": srgb("#F0906D"),
8753
- "400": srgb("#EE7850"),
8754
- "500": srgb("#EC6337"),
8755
- "600": srgb("#E25D33"),
8756
- "700": srgb("#D5562E"),
8757
- "800": srgb("#C84E29"),
8758
- "900": srgb("#B04121"),
8759
- v100: srgb("#F2A286"),
8760
- v200: srgb("#EE774D"),
8761
- v300: srgb("#EB4F27"),
8762
- v400: srgb("#CB3E20")
8763
- },
8764
- "alpha-black": {
8765
- "5": srgb("#000000", 0.05),
8766
- "10": srgb("#000000", 0.1),
8767
- "20": srgb("#000000", 0.2),
8768
- "30": srgb("#000000", 0.3),
8769
- "40": srgb("#000000", 0.4),
8770
- "50": srgb("#000000", 0.5),
8771
- "60": srgb("#000000", 0.6),
8772
- "70": srgb("#000000", 0.7),
8773
- "80": srgb("#000000", 0.8),
8774
- "90": srgb("#000000", 0.9),
8775
- "95": srgb("#000000", 0.95)
8776
- },
8777
- "alpha-white": {
8778
- "5": srgb("#FFFFFF", 0.05),
8779
- "10": srgb("#FFFFFF", 0.1),
8780
- "20": srgb("#FFFFFF", 0.2),
8781
- "30": srgb("#FFFFFF", 0.3),
8782
- "40": srgb("#FFFFFF", 0.4),
8783
- "50": srgb("#FFFFFF", 0.5),
8784
- "60": srgb("#FFFFFF", 0.6),
8785
- "70": srgb("#FFFFFF", 0.7),
8786
- "80": srgb("#FFFFFF", 0.8),
8787
- "90": srgb("#FFFFFF", 0.9),
8788
- "95": srgb("#FFFFFF", 0.95)
8789
- },
8790
- white: srgb("#FFFFFF"),
8791
- black: srgb("#000000")
8792
- }
8793
- }
8794
- };
8795
-
8796
- // ../tokens/dist/primitives/opacity.js
8797
- var primitiveOpacity = {
8798
- primitive: {
8799
- opacity: {
8800
- $extensions: {
8801
- "nds.figmaSync": {
8802
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8803
- collectionName: "Primitives",
8804
- modeMapping: { modeName: "Value" }
8805
- }
8806
- },
8807
- "0": { $type: "number", $value: 0 },
8808
- "25": { $type: "number", $value: 0.25 },
8809
- "50": { $type: "number", $value: 0.5 },
8810
- "75": { $type: "number", $value: 0.75 },
8811
- "100": { $type: "number", $value: 1 }
8812
- }
8813
- }
8814
- };
8815
-
8816
- // ../tokens/dist/primitives/radii.js
8817
- var primitiveRadii = {
8818
- primitive: {
8819
- radii: {
8820
- $extensions: {
8821
- "nds.figmaSync": {
8822
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8823
- collectionName: "Primitives",
8824
- modeMapping: { modeName: "Value" }
8825
- }
8826
- },
8827
- $type: "dimension",
8828
- "0": dimension(0),
8829
- "2": dimension(2),
8830
- "4": dimension(4),
8831
- "6": dimension(6),
8832
- "8": dimension(8),
8833
- "10": dimension(10),
8834
- "12": dimension(12),
8835
- "14": dimension(14),
8836
- "16": dimension(16),
8837
- "18": dimension(18),
8838
- "20": dimension(20),
8839
- "22": dimension(22),
8840
- "24": dimension(24),
8841
- "26": dimension(26),
8842
- "28": dimension(28),
8843
- "30": dimension(30),
8844
- "32": dimension(32),
8845
- "34": dimension(34)
8846
- }
8847
- }
8848
- };
8849
-
8850
- // ../tokens/dist/primitives/shadow.js
8851
- var primitiveShadow = {
8852
- primitive: {
8853
- shadow: {
8854
- $extensions: {
8855
- "nds.figmaSync": {
8856
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8857
- // Primitives collection
8858
- collectionName: "Primitives",
8859
- skip: true
8860
- // Shadows are managed as Effect Styles in Figma, not variables
8861
- }
8862
- },
8863
- sm: shadow([
8864
- {
8865
- offsetX: 0,
8866
- offsetY: 1,
8867
- blur: 2,
8868
- spread: 0,
8869
- color: "#000000",
8870
- alpha: 0.05
8871
- }
8872
- ]),
8873
- md: shadow([
8874
- {
8875
- offsetX: 0,
8876
- offsetY: 4,
8877
- blur: 6,
8878
- spread: -1,
8879
- color: "#000000",
8880
- alpha: 0.1
8881
- },
8882
- {
8883
- offsetX: 0,
8884
- offsetY: 2,
8885
- blur: 4,
8886
- spread: -2,
8887
- color: "#000000",
8888
- alpha: 0.1
8889
- }
8890
- ]),
8891
- lg: shadow([
8892
- {
8893
- offsetX: 0,
8894
- offsetY: 10,
8895
- blur: 15,
8896
- spread: -3,
8897
- color: "#000000",
8898
- alpha: 0.1
8899
- },
8900
- {
8901
- offsetX: 0,
8902
- offsetY: 4,
8903
- blur: 6,
8904
- spread: -4,
8905
- color: "#000000",
8906
- alpha: 0.1
8907
- }
8908
- ])
8909
- }
8910
- }
8911
- };
8912
-
8913
- // ../tokens/dist/primitives/spacing.js
8914
- var primitiveSpacing = {
8915
- primitive: {
8916
- spacing: {
8917
- $extensions: {
8918
- "nds.figmaSync": {
8919
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8920
- collectionName: "Primitives",
8921
- modeMapping: { modeName: "Value" }
8922
- }
8923
- },
8924
- $type: "dimension",
8925
- "0": dimension(0),
8926
- "1": dimension(1),
8927
- "2": dimension(2),
8928
- "4": dimension(4),
8929
- "6": dimension(6),
8930
- "8": dimension(8),
8931
- "10": dimension(10),
8932
- "11": dimension(11),
8933
- "12": dimension(12),
8934
- "16": dimension(16),
8935
- "20": dimension(20),
8936
- "24": dimension(24),
8937
- "28": dimension(28),
8938
- "32": dimension(32),
8939
- "36": dimension(36),
8940
- "40": dimension(40),
8941
- "48": dimension(48),
8942
- "56": dimension(56),
8943
- "64": dimension(64),
8944
- "72": dimension(72),
8945
- "80": dimension(80),
8946
- "96": dimension(96),
8947
- "112": dimension(112),
8948
- "128": dimension(128),
8949
- "144": dimension(144),
8950
- "160": dimension(160),
8951
- "176": dimension(176),
8952
- "192": dimension(192),
8953
- "208": dimension(208),
8954
- "224": dimension(224),
8955
- "240": dimension(240),
8956
- "256": dimension(256),
8957
- "288": dimension(288),
8958
- "320": dimension(320),
8959
- "352": dimension(352),
8960
- "384": dimension(384),
8961
- "400": dimension(400)
8962
- }
8963
- }
8964
- };
8965
-
8966
- // ../tokens/dist/primitives/typography.js
8967
- var primitiveTypography = {
8968
- primitive: {
8969
- "font-size": {
8970
- $extensions: {
8971
- "nds.figmaSync": {
8972
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
8973
- collectionName: "Primitives",
8974
- modeMapping: { modeName: "Value" }
8975
- }
8976
- },
8977
- $type: "dimension",
8978
- "9": dimension(9),
8979
- "11": dimension(11),
8980
- "12": dimension(12),
8981
- "14": dimension(14),
8982
- "16": dimension(16),
8983
- "18": dimension(18),
8984
- "21": dimension(21),
8985
- "24": dimension(24),
8986
- "28": dimension(28),
8987
- "32": dimension(32),
8988
- "36": dimension(36),
8989
- "42": dimension(42),
8990
- "48": dimension(48),
8991
- "56": dimension(56),
8992
- "64": dimension(64),
8993
- "72": dimension(72),
8994
- "84": dimension(84),
8995
- "88": dimension(88),
8996
- "96": dimension(96),
8997
- "112": dimension(112),
8998
- "128": dimension(128),
8999
- "148": dimension(148),
9000
- "168": dimension(168),
9001
- "192": dimension(192),
9002
- "224": dimension(224),
9003
- "256": dimension(256),
9004
- "280": dimension(280)
9005
- },
9006
- "line-height": {
9007
- $extensions: {
9008
- "nds.figmaSync": {
9009
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
9010
- collectionName: "Primitives",
9011
- modeMapping: { modeName: "Value" }
9012
- }
9013
- },
9014
- $type: "dimension",
9015
- "9": dimension(11),
9016
- "11": dimension(13),
9017
- "12": dimension(16),
9018
- "14": dimension(20),
9019
- "16": dimension(24),
9020
- "18": dimension(27),
9021
- "21": dimension(29),
9022
- "22": dimension(22),
9023
- "24": dimension(24),
9024
- "28": dimension(28),
9025
- "31": dimension(31),
9026
- "32": dimension(32),
9027
- "36": dimension(36),
9028
- "38": dimension(38),
9029
- "42": dimension(46),
9030
- "43": dimension(43),
9031
- "46": dimension(46),
9032
- "48": dimension(53),
9033
- "53": dimension(53),
9034
- "56": dimension(62),
9035
- "62": dimension(62),
9036
- "64": dimension(64),
9037
- "72": dimension(72),
9038
- "84": dimension(84),
9039
- "88": dimension(88),
9040
- "96": dimension(96),
9041
- "112": dimension(106),
9042
- "128": dimension(122),
9043
- "148": dimension(141),
9044
- "168": dimension(151),
9045
- "192": dimension(173),
9046
- "224": dimension(202),
9047
- "256": dimension(218),
9048
- "280": dimension(238)
9049
- },
9050
- "letter-spacing": {
9051
- $extensions: {
9052
- "nds.figmaSync": {
9053
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
9054
- collectionName: "Primitives",
9055
- modeMapping: { modeName: "Value" }
9056
- }
9057
- },
9058
- $type: "dimension",
9059
- "9": dimension(0.18),
9060
- "11": dimension(0.17),
9061
- "12": dimension(0.12),
9062
- "14": dimension(0.07),
9063
- "16": dimension(0),
9064
- "18": dimension(0),
9065
- "21": dimension(0),
9066
- "24": dimension(0),
9067
- "28": dimension(-0.14),
9068
- "32": dimension(-0.16),
9069
- "36": dimension(-0.36),
9070
- "42": dimension(-0.42),
9071
- "48": dimension(-0.72),
9072
- "56": dimension(-1.12),
9073
- "64": dimension(-1.28),
9074
- "72": dimension(-1.8),
9075
- "84": dimension(-2.1),
9076
- "88": dimension(-2.64),
9077
- "96": dimension(-2.88),
9078
- "112": dimension(-3.92),
9079
- "128": dimension(-5.12),
9080
- "148": dimension(-6.66),
9081
- "168": dimension(-7.56),
9082
- "192": dimension(-9.6),
9083
- "224": dimension(-11.2),
9084
- "256": dimension(-14.08),
9085
- "280": dimension(-15.4),
9086
- button: dimension(0.5)
9087
- },
9088
- "font-family": {
9089
- $extensions: {
9090
- "nds.figmaSync": {
9091
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
9092
- collectionName: "Primitives",
9093
- modeMapping: { modeName: "Value" }
9094
- }
9095
- },
9096
- $type: "fontFamily",
9097
- // Primitive font stacks
9098
- "pp-neue-montreal": fontFamily(["PP Neue Montreal", "sans-serif"]),
9099
- gloock: fontFamily(["Gloock", "serif"]),
9100
- cormorant: fontFamily(["Cormorant", "serif"]),
9101
- inter: fontFamily(["Inter", "sans-serif"]),
9102
- "inter-tight": fontFamily(["Inter Tight", "sans-serif"]),
9103
- "instrument-serif": fontFamily(["Instrument Serif", "serif"]),
9104
- // Semantic aliases
9105
- sans: fontFamily(["PP Neue Montreal", "sans-serif"]),
9106
- serif: fontFamily(["Gloock", "serif"]),
9107
- "serif-alt": fontFamily(["Cormorant", "serif"])
9108
- },
9109
- "font-weight": {
9110
- $extensions: {
9111
- "nds.figmaSync": {
9112
- collectionKey: "b8954b6c8ba9f47552aea2920a0ee36c5f000e64",
9113
- collectionName: "Primitives",
9114
- modeMapping: { modeName: "Value" }
9115
- }
9116
- },
9117
- $type: "fontWeight",
9118
- regular: fontWeight(400),
9119
- medium: fontWeight(500),
9120
- semibold: fontWeight(600)
9121
- }
9122
- }
9123
- };
9124
-
9125
- // ../tokens/dist/types.js
9126
- function toJSONTokenTree(module) {
9127
- return module;
9128
- }
9129
-
9130
- // ../tokens/dist/tokens.js
9131
- mergeTokenTrees(
9132
- // Primitives
9133
- toJSONTokenTree(primitiveColors),
9134
- toJSONTokenTree(primitiveTypography),
9135
- toJSONTokenTree(primitiveSpacing),
9136
- toJSONTokenTree(primitiveRadii),
9137
- toJSONTokenTree(primitiveBreakpoints),
9138
- toJSONTokenTree(primitiveAnimation),
9139
- toJSONTokenTree(primitiveOpacity),
9140
- toJSONTokenTree(primitiveShadow),
9141
- // Typography base (property-based tokens)
9142
- toJSONTokenTree(baseTypographyTokens),
9143
- // Base semantic tokens (default theme)
9144
- toJSONTokenTree(baseColorTokens),
9145
- toJSONTokenTree(baseSurfaceTokens),
9146
- toJSONTokenTree(baseSpatialTokens)
9147
- );
9148
- var ThemeContext = createContext(null);
9149
- function colorToCSS(color) {
9150
- const [r, g, b] = color.components;
9151
- if (color.alpha < 1) {
9152
- return `color(srgb ${r} ${g} ${b} / ${color.alpha})`;
9153
- }
9154
- return `color(srgb ${r} ${g} ${b})`;
9155
- }
9156
- function tokenValueToCSS(value) {
9157
- if (isColorValue(value)) {
9158
- return colorToCSS(value);
9159
- }
9160
- if (isDimensionValue(value)) {
9161
- return `${value.value}${value.unit}`;
9162
- }
9163
- if (typeof value === "string") {
9164
- return value;
9165
- }
9166
- if (typeof value === "number") {
9167
- return String(value);
9168
- }
9169
- return String(value);
9170
- }
9171
- function processColorTokens(colorObj, path = []) {
9172
- const result = {};
9173
- for (const [key, value] of Object.entries(colorObj)) {
9174
- if (key.startsWith("$")) continue;
9175
- const currentPath = [...path, key];
9176
- if (typeof value === "object" && value !== null) {
9177
- const record = value;
9178
- if ("$value" in record) {
9179
- const varName = `color-${currentPath.join("-")}`;
9180
- const tokenValue = record.$value;
9181
- if (typeof tokenValue === "string" && tokenValue.startsWith("{")) {
9182
- let refPath = tokenValue.slice(1, -1).replace(/\./g, "-");
9183
- refPath = refPath.replace(/^primitive-/, "");
9184
- refPath = refPath.replace(/^semantic-color-/, "color-");
9185
- result[varName] = `var(--${refPath})`;
9186
- } else {
9187
- result[varName] = tokenValueToCSS(tokenValue);
9188
- }
9189
- } else {
9190
- Object.assign(result, processColorTokens(record, currentPath));
9191
- }
9192
- }
9193
- }
9194
- return result;
9195
- }
9196
- function processSurfaceTokens(surfaceObj, path = []) {
9197
- const result = {};
9198
- for (const [key, value] of Object.entries(surfaceObj)) {
9199
- if (key.startsWith("$")) continue;
9200
- const currentPath = [...path, key];
9201
- if (typeof value === "object" && value !== null) {
9202
- const record = value;
9203
- if ("$value" in record) {
9204
- const tokenValue = record.$value;
9205
- let varName;
9206
- let cssValue;
9207
- if (currentPath[currentPath.length - 1] === "radius") {
9208
- const componentName = currentPath[0];
9209
- varName = `radius-surface-${componentName}`;
9210
- } else if (currentPath[currentPath.length - 1] === "stroke") {
9211
- const componentName = currentPath[0];
9212
- varName = `surface-${componentName}-stroke`;
9213
- } else {
9214
- varName = `surface-${currentPath.join("-")}`;
9215
- }
9216
- if (typeof tokenValue === "string" && tokenValue.startsWith("{")) {
9217
- let refPath = tokenValue.slice(1, -1).replace(/\./g, "-");
9218
- refPath = refPath.replace(/^primitive-/, "");
9219
- refPath = refPath.replace(/^radii-/, "radius-");
9220
- cssValue = `var(--${refPath})`;
9221
- } else {
9222
- cssValue = tokenValueToCSS(tokenValue);
9223
- }
9224
- result[varName] = cssValue;
9225
- } else {
9226
- Object.assign(result, processSurfaceTokens(record, currentPath));
9227
- }
9228
- }
9229
- }
9230
- return result;
9231
- }
9232
- function mergeTokenModules(base, override) {
9233
- const result = JSON.parse(JSON.stringify(base));
9234
- deepMerge2(result, override);
9235
- return result;
9236
- }
9237
- function deepMerge2(target, source) {
9238
- for (const [key, value] of Object.entries(source)) {
9239
- if (typeof value === "object" && value !== null && !Array.isArray(value) && typeof target[key] === "object" && target[key] !== null) {
9240
- deepMerge2(
9241
- target[key],
9242
- value
9243
- );
9244
- } else {
9245
- target[key] = value;
9246
- }
9247
- }
9248
- }
9249
- function ThemeProvider({
9250
- color = "base",
9251
- surface = "base",
9252
- customTheme,
9253
- children,
9254
- className,
9255
- applyStyles = true
9256
- }) {
9257
- const { tokens: tokens2, cssVars } = useMemo(() => {
9258
- const flatTokens = {};
9259
- const baseColorModule = colorThemes.base;
9260
- const effectiveColor = customTheme ? customTheme.extends : color;
9261
- const colorModule = colorThemes[effectiveColor] ?? colorThemes.base;
9262
- const mergedColor = effectiveColor === "base" ? baseColorModule : mergeTokenModules(baseColorModule, colorModule);
9263
- const colorTokens = mergedColor?.semantic?.color ?? mergedColor;
9264
- Object.assign(flatTokens, processColorTokens(colorTokens));
9265
- const baseSurfaceModule = surfaceThemes.base;
9266
- const surfaceModule = surfaceThemes[surface];
9267
- const mergedSurface = surface === "base" ? baseSurfaceModule : mergeTokenModules(baseSurfaceModule, surfaceModule);
9268
- const surfaceTokens = mergedSurface?.semantic?.surface ?? mergedSurface;
9269
- Object.assign(flatTokens, processSurfaceTokens(surfaceTokens));
9270
- const nestedTokens = flatToNested(flatTokens);
9271
- let cssVariables = flatToCSSVars(flatTokens);
9272
- if (customTheme) {
9273
- cssVariables = {
9274
- ...cssVariables,
9275
- ...Object.fromEntries(
9276
- Object.entries(customTheme.cssVars).map(([key, value]) => [
9277
- key.startsWith("--") ? key : `--${key}`,
9278
- value
9279
- ])
9280
- )
9281
- };
9282
- }
9283
- return { tokens: nestedTokens, cssVars: cssVariables };
9284
- }, [color, surface, customTheme]);
9285
- const contextValue = {
9286
- cssVars,
9287
- tokens: tokens2,
9288
- colorTheme: customTheme ? customTheme.extends : color,
9289
- surfaceTheme: surface
9290
- };
9291
- return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: contextValue, children: applyStyles ? /* @__PURE__ */ jsx("div", { style: cssVars, className, children }) : children });
9292
- }
9293
-
9294
- // src/theme/hooks.ts
9295
- function useTheme() {
9296
- const context = useContext(ThemeContext);
9297
- if (!context) {
9298
- throw new Error("useTheme must be used within a ThemeProvider");
9299
- }
9300
- return context;
9301
- }
9302
- function useThemeTokens() {
9303
- const { tokens: tokens2 } = useTheme();
9304
- return tokens2;
9305
- }
9306
- function useCSSVars() {
9307
- const { cssVars } = useTheme();
9308
- return cssVars;
9309
- }
9310
-
9311
- // src/theme/utils.ts
9312
- function toCSSVars(tokens2) {
9313
- return nestedToCSSVars(tokens2);
5389
+ function toCSSVars(tokens) {
5390
+ return nestedToCSSVars(tokens);
9314
5391
  }
9315
5392
  function applyTheme(element, cssVars) {
9316
5393
  for (const [name, value] of Object.entries(cssVars)) {
@@ -9322,9 +5399,9 @@ function removeTheme(element, cssVars) {
9322
5399
  element.style.removeProperty(name);
9323
5400
  }
9324
5401
  }
9325
- function getToken(tokens2, path) {
5402
+ function getToken(tokens, path) {
9326
5403
  const parts = path.split(".");
9327
- let current = tokens2;
5404
+ let current = tokens;
9328
5405
  for (const part of parts) {
9329
5406
  if (typeof current === "string") return void 0;
9330
5407
  current = current[part];