@phcdevworks/spectre-tokens 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -137,22 +137,24 @@ var core_default = {
137
137
  textOnPrimary: "#ffffff"
138
138
  },
139
139
  badge: {
140
- primary: {
141
- bg: "#8652ff",
142
- text: "#0f172a"
143
- },
144
- success: {
145
- bg: "#22c55e",
146
- text: "#0f172a"
147
- },
148
- warning: {
149
- bg: "#f59e0b",
150
- text: "#0f172a"
151
- },
152
- danger: {
153
- bg: "#ef4444",
154
- text: "#0f172a"
155
- }
140
+ neutralBg: "#f1f5f9",
141
+ neutralText: "#334155",
142
+ infoBg: "#dbeafe",
143
+ infoText: "#1d4ed8",
144
+ successBg: "#dcfce7",
145
+ successText: "#15803d",
146
+ warningBg: "#fef3c7",
147
+ warningText: "#b45309",
148
+ dangerBg: "#fee2e2",
149
+ dangerText: "#b91c1c"
150
+ },
151
+ iconBox: {
152
+ bg: "#ffffff",
153
+ border: "#e2e8f0",
154
+ iconDefault: "#6c32e6",
155
+ iconSuccess: "#16a34a",
156
+ iconWarning: "#d97706",
157
+ iconDanger: "#dc2626"
156
158
  }
157
159
  },
158
160
  modes: {
@@ -227,37 +229,55 @@ var core_default = {
227
229
  }
228
230
  },
229
231
  badge: {
230
- primary: {
231
- bg: {
232
- value: "#8652ff"
233
- },
234
- text: {
235
- value: "#0f172a"
236
- }
232
+ neutralBg: {
233
+ value: "#f1f5f9"
234
+ },
235
+ neutralText: {
236
+ value: "#334155"
237
+ },
238
+ infoBg: {
239
+ value: "#dbeafe"
240
+ },
241
+ infoText: {
242
+ value: "#1d4ed8"
243
+ },
244
+ successBg: {
245
+ value: "#dcfce7"
246
+ },
247
+ successText: {
248
+ value: "#15803d"
237
249
  },
238
- success: {
239
- bg: {
240
- value: "#22c55e"
241
- },
242
- text: {
243
- value: "#0f172a"
244
- }
250
+ warningBg: {
251
+ value: "#fef3c7"
245
252
  },
246
- warning: {
247
- bg: {
248
- value: "#f59e0b"
249
- },
250
- text: {
251
- value: "#0f172a"
252
- }
253
+ warningText: {
254
+ value: "#b45309"
253
255
  },
254
- danger: {
255
- bg: {
256
- value: "#ef4444"
257
- },
258
- text: {
259
- value: "#0f172a"
260
- }
256
+ dangerBg: {
257
+ value: "#fee2e2"
258
+ },
259
+ dangerText: {
260
+ value: "#b91c1c"
261
+ }
262
+ },
263
+ iconBox: {
264
+ bg: {
265
+ value: "#ffffff"
266
+ },
267
+ border: {
268
+ value: "#e2e8f0"
269
+ },
270
+ iconDefault: {
271
+ value: "#6c32e6"
272
+ },
273
+ iconSuccess: {
274
+ value: "#16a34a"
275
+ },
276
+ iconWarning: {
277
+ value: "#d97706"
278
+ },
279
+ iconDanger: {
280
+ value: "#dc2626"
261
281
  }
262
282
  }
263
283
  }
@@ -333,37 +353,55 @@ var core_default = {
333
353
  }
334
354
  },
335
355
  badge: {
336
- primary: {
337
- bg: {
338
- value: "#8652ff"
339
- },
340
- text: {
341
- value: "#f1f5f9"
342
- }
356
+ neutralBg: {
357
+ value: "#334155"
358
+ },
359
+ neutralText: {
360
+ value: "#f1f5f9"
361
+ },
362
+ infoBg: {
363
+ value: "#1e40af"
343
364
  },
344
- success: {
345
- bg: {
346
- value: "#22c55e"
347
- },
348
- text: {
349
- value: "#f1f5f9"
350
- }
365
+ infoText: {
366
+ value: "#dbeafe"
351
367
  },
352
- warning: {
353
- bg: {
354
- value: "#f59e0b"
355
- },
356
- text: {
357
- value: "#f1f5f9"
358
- }
368
+ successBg: {
369
+ value: "#166534"
359
370
  },
360
- danger: {
361
- bg: {
362
- value: "#ef4444"
363
- },
364
- text: {
365
- value: "#f1f5f9"
366
- }
371
+ successText: {
372
+ value: "#dcfce7"
373
+ },
374
+ warningBg: {
375
+ value: "#92400e"
376
+ },
377
+ warningText: {
378
+ value: "#fef3c7"
379
+ },
380
+ dangerBg: {
381
+ value: "#991b1b"
382
+ },
383
+ dangerText: {
384
+ value: "#fee2e2"
385
+ }
386
+ },
387
+ iconBox: {
388
+ bg: {
389
+ value: "#1e293b"
390
+ },
391
+ border: {
392
+ value: "#334155"
393
+ },
394
+ iconDefault: {
395
+ value: "#a37aff"
396
+ },
397
+ iconSuccess: {
398
+ value: "#4ade80"
399
+ },
400
+ iconWarning: {
401
+ value: "#fbbf24"
402
+ },
403
+ iconDanger: {
404
+ value: "#f87171"
367
405
  }
368
406
  }
369
407
  }
@@ -460,17 +498,49 @@ var core_default = {
460
498
  text: "#94a3b8"
461
499
  }
462
500
  },
463
- spacing: {
464
- none: "0rem",
465
- "3xs": "0.125rem",
466
- "2xs": "0.25rem",
467
- xs: "0.5rem",
468
- sm: "0.75rem",
469
- md: "1rem",
470
- lg: "1.5rem",
471
- xl: "2rem",
472
- "2xl": "3rem",
473
- "3xl": "4rem"
501
+ layout: {
502
+ section: {
503
+ padding: {
504
+ sm: "1.5rem",
505
+ md: "2rem",
506
+ lg: "3rem"
507
+ },
508
+ gap: {
509
+ sm: "1rem",
510
+ md: "1.5rem",
511
+ lg: "2rem"
512
+ }
513
+ },
514
+ stack: {
515
+ gap: {
516
+ sm: "0.5rem",
517
+ md: "0.75rem",
518
+ lg: "1rem"
519
+ }
520
+ },
521
+ container: {
522
+ paddingInline: {
523
+ sm: "1rem",
524
+ md: "1.5rem",
525
+ lg: "2rem"
526
+ }
527
+ }
528
+ },
529
+ space: {
530
+ "0": "0rem",
531
+ "4": "0.25rem",
532
+ "8": "0.5rem",
533
+ "12": "0.75rem",
534
+ "16": "1rem",
535
+ "20": "1.25rem",
536
+ "24": "1.5rem",
537
+ "32": "2rem",
538
+ "40": "2.5rem",
539
+ "48": "3rem",
540
+ "56": "3.5rem",
541
+ "64": "4rem",
542
+ "80": "5rem",
543
+ "96": "6rem"
474
544
  },
475
545
  radii: {
476
546
  none: "0",
@@ -652,11 +722,31 @@ var toVariableName = (prefix, ...parts) => {
652
722
  const filtered = parts.filter(Boolean).map(formatKey);
653
723
  return `--${prefix}-${filtered.join("-")}`;
654
724
  };
725
+ var BADGE_VARIANTS = [
726
+ { variant: "neutral", bgKey: "neutralBg", textKey: "neutralText" },
727
+ { variant: "info", bgKey: "infoBg", textKey: "infoText" },
728
+ { variant: "success", bgKey: "successBg", textKey: "successText" },
729
+ { variant: "warning", bgKey: "warningBg", textKey: "warningText" },
730
+ { variant: "danger", bgKey: "dangerBg", textKey: "dangerText" }
731
+ ];
732
+ var ICON_BOX_FIELDS = [
733
+ { name: "bg", tokenKey: "bg" },
734
+ { name: "border", tokenKey: "border" },
735
+ { name: "icon-default", tokenKey: "iconDefault" },
736
+ { name: "icon-success", tokenKey: "iconSuccess" },
737
+ { name: "icon-warning", tokenKey: "iconWarning" },
738
+ { name: "icon-danger", tokenKey: "iconDanger" }
739
+ ];
655
740
  var createCssVariableMap = (tokens2, options = {}) => {
656
741
  const prefix = options.prefix ?? DEFAULT_PREFIX;
657
742
  const map = {};
658
743
  const baseTokens = tokens2;
659
744
  const assign = (name, value) => {
745
+ const resolved = resolveSemanticValue(value);
746
+ if (resolved !== void 0) {
747
+ map[name] = resolved;
748
+ return;
749
+ }
660
750
  if (value === void 0) return;
661
751
  map[name] = String(value);
662
752
  };
@@ -665,9 +755,34 @@ var createCssVariableMap = (tokens2, options = {}) => {
665
755
  assign(toVariableName(prefix, "color", group, step), value);
666
756
  });
667
757
  });
668
- Object.entries(baseTokens.spacing).forEach(([key, value]) => {
669
- assign(toVariableName(prefix, "space", key), value);
670
- });
758
+ if (baseTokens.space) {
759
+ Object.entries(baseTokens.space).forEach(([key, value]) => {
760
+ assign(toVariableName(prefix, "space", key), value);
761
+ });
762
+ }
763
+ if (baseTokens.layout) {
764
+ const { section, stack, container } = baseTokens.layout;
765
+ if (section?.padding) {
766
+ Object.entries(section.padding).forEach(([key, value]) => {
767
+ assign(toVariableName(prefix, "layout", "section", "padding", key), value);
768
+ });
769
+ }
770
+ if (section?.gap) {
771
+ Object.entries(section.gap).forEach(([key, value]) => {
772
+ assign(toVariableName(prefix, "layout", "section", "gap", key), value);
773
+ });
774
+ }
775
+ if (stack?.gap) {
776
+ Object.entries(stack.gap).forEach(([key, value]) => {
777
+ assign(toVariableName(prefix, "layout", "stack", "gap", key), value);
778
+ });
779
+ }
780
+ if (container?.paddingInline) {
781
+ Object.entries(container.paddingInline).forEach(([key, value]) => {
782
+ assign(toVariableName(prefix, "layout", "container", "padding-inline", key), value);
783
+ });
784
+ }
785
+ }
671
786
  Object.entries(baseTokens.radii).forEach(([key, value]) => {
672
787
  assign(toVariableName(prefix, "radius", key), value);
673
788
  });
@@ -699,14 +814,16 @@ var createCssVariableMap = (tokens2, options = {}) => {
699
814
  assign(toVariableName(prefix, "text", "on", "surface", "meta"), tokens2.text.onSurface.meta);
700
815
  const badge = tokens2.component?.badge;
701
816
  if (badge) {
702
- assign(toVariableName(prefix, "badge", "primary", "bg"), badge.primary.bg);
703
- assign(toVariableName(prefix, "badge", "primary", "text"), badge.primary.text);
704
- assign(toVariableName(prefix, "badge", "success", "bg"), badge.success.bg);
705
- assign(toVariableName(prefix, "badge", "success", "text"), badge.success.text);
706
- assign(toVariableName(prefix, "badge", "warning", "bg"), badge.warning.bg);
707
- assign(toVariableName(prefix, "badge", "warning", "text"), badge.warning.text);
708
- assign(toVariableName(prefix, "badge", "danger", "bg"), badge.danger.bg);
709
- assign(toVariableName(prefix, "badge", "danger", "text"), badge.danger.text);
817
+ BADGE_VARIANTS.forEach(({ variant, bgKey, textKey }) => {
818
+ assign(toVariableName(prefix, "badge", variant, "bg"), badge[bgKey]);
819
+ assign(toVariableName(prefix, "badge", variant, "text"), badge[textKey]);
820
+ });
821
+ }
822
+ const iconBox = tokens2.component?.iconBox;
823
+ if (iconBox) {
824
+ ICON_BOX_FIELDS.forEach(({ name, tokenKey }) => {
825
+ assign(toVariableName(prefix, "icon-box", name), iconBox[tokenKey]);
826
+ });
710
827
  }
711
828
  Object.entries(baseTokens.shadows).forEach(([key, value]) => {
712
829
  assign(toVariableName(prefix, "shadow", key), value);
@@ -793,38 +910,22 @@ var generateCssVariables = (tokens2, options = {}) => {
793
910
  addBase(toVariableName(prefix, "component", "input", "placeholder"), pickSemantic(getPath(defaultMode, ["component", "input", "placeholder"]), getPath(componentAliases, ["input", "placeholder"])));
794
911
  addBase(toVariableName(prefix, "button", "text", "default"), pickSemantic(getPath(defaultMode, ["component", "button", "textDefault"]), getPath(componentAliases, ["button", "textDefault"])));
795
912
  addBase(toVariableName(prefix, "button", "text", "on", "primary"), pickSemantic(getPath(defaultMode, ["component", "button", "textOnPrimary"]), getPath(componentAliases, ["button", "textOnPrimary"])));
796
- addBase(
797
- toVariableName(prefix, "badge", "primary", "bg"),
798
- pickSemantic(getPath(defaultMode, ["component", "badge", "primary", "bg"]), getPath(componentAliases, ["badge", "primary", "bg"]))
799
- );
800
- addBase(
801
- toVariableName(prefix, "badge", "primary", "text"),
802
- pickSemantic(getPath(defaultMode, ["component", "badge", "primary", "text"]), getPath(componentAliases, ["badge", "primary", "text"]))
803
- );
804
- addBase(
805
- toVariableName(prefix, "badge", "success", "bg"),
806
- pickSemantic(getPath(defaultMode, ["component", "badge", "success", "bg"]), getPath(componentAliases, ["badge", "success", "bg"]))
807
- );
808
- addBase(
809
- toVariableName(prefix, "badge", "success", "text"),
810
- pickSemantic(getPath(defaultMode, ["component", "badge", "success", "text"]), getPath(componentAliases, ["badge", "success", "text"]))
811
- );
812
- addBase(
813
- toVariableName(prefix, "badge", "warning", "bg"),
814
- pickSemantic(getPath(defaultMode, ["component", "badge", "warning", "bg"]), getPath(componentAliases, ["badge", "warning", "bg"]))
815
- );
816
- addBase(
817
- toVariableName(prefix, "badge", "warning", "text"),
818
- pickSemantic(getPath(defaultMode, ["component", "badge", "warning", "text"]), getPath(componentAliases, ["badge", "warning", "text"]))
819
- );
820
- addBase(
821
- toVariableName(prefix, "badge", "danger", "bg"),
822
- pickSemantic(getPath(defaultMode, ["component", "badge", "danger", "bg"]), getPath(componentAliases, ["badge", "danger", "bg"]))
823
- );
824
- addBase(
825
- toVariableName(prefix, "badge", "danger", "text"),
826
- pickSemantic(getPath(defaultMode, ["component", "badge", "danger", "text"]), getPath(componentAliases, ["badge", "danger", "text"]))
827
- );
913
+ BADGE_VARIANTS.forEach(({ variant, bgKey, textKey }) => {
914
+ addBase(
915
+ toVariableName(prefix, "badge", variant, "bg"),
916
+ pickSemantic(getPath(defaultMode, ["component", "badge", bgKey]), getPath(componentAliases, ["badge", bgKey]))
917
+ );
918
+ addBase(
919
+ toVariableName(prefix, "badge", variant, "text"),
920
+ pickSemantic(getPath(defaultMode, ["component", "badge", textKey]), getPath(componentAliases, ["badge", textKey]))
921
+ );
922
+ });
923
+ ICON_BOX_FIELDS.forEach(({ name, tokenKey }) => {
924
+ addBase(
925
+ toVariableName(prefix, "icon-box", name),
926
+ pickSemantic(getPath(defaultMode, ["component", "iconBox", tokenKey]), getPath(componentAliases, ["iconBox", tokenKey]))
927
+ );
928
+ });
828
929
  const rootLines = [...baseLines, ...mapLines];
829
930
  const darkLines = [];
830
931
  const addDark = (name, value) => {
@@ -942,70 +1043,34 @@ var generateCssVariables = (tokens2, options = {}) => {
942
1043
  getPath(componentAliases, ["button", "textOnPrimary"])
943
1044
  )
944
1045
  );
945
- addDark(
946
- toVariableName(prefix, "badge", "primary", "bg"),
947
- pickSemantic(
948
- getPath(darkMode, ["component", "badge", "primary", "bg"]),
949
- getPath(defaultMode, ["component", "badge", "primary", "bg"]),
950
- getPath(componentAliases, ["badge", "primary", "bg"])
951
- )
952
- );
953
- addDark(
954
- toVariableName(prefix, "badge", "primary", "text"),
955
- pickSemantic(
956
- getPath(darkMode, ["component", "badge", "primary", "text"]),
957
- getPath(defaultMode, ["component", "badge", "primary", "text"]),
958
- getPath(componentAliases, ["badge", "primary", "text"])
959
- )
960
- );
961
- addDark(
962
- toVariableName(prefix, "badge", "success", "bg"),
963
- pickSemantic(
964
- getPath(darkMode, ["component", "badge", "success", "bg"]),
965
- getPath(defaultMode, ["component", "badge", "success", "bg"]),
966
- getPath(componentAliases, ["badge", "success", "bg"])
967
- )
968
- );
969
- addDark(
970
- toVariableName(prefix, "badge", "success", "text"),
971
- pickSemantic(
972
- getPath(darkMode, ["component", "badge", "success", "text"]),
973
- getPath(defaultMode, ["component", "badge", "success", "text"]),
974
- getPath(componentAliases, ["badge", "success", "text"])
975
- )
976
- );
977
- addDark(
978
- toVariableName(prefix, "badge", "warning", "bg"),
979
- pickSemantic(
980
- getPath(darkMode, ["component", "badge", "warning", "bg"]),
981
- getPath(defaultMode, ["component", "badge", "warning", "bg"]),
982
- getPath(componentAliases, ["badge", "warning", "bg"])
983
- )
984
- );
985
- addDark(
986
- toVariableName(prefix, "badge", "warning", "text"),
987
- pickSemantic(
988
- getPath(darkMode, ["component", "badge", "warning", "text"]),
989
- getPath(defaultMode, ["component", "badge", "warning", "text"]),
990
- getPath(componentAliases, ["badge", "warning", "text"])
991
- )
992
- );
993
- addDark(
994
- toVariableName(prefix, "badge", "danger", "bg"),
995
- pickSemantic(
996
- getPath(darkMode, ["component", "badge", "danger", "bg"]),
997
- getPath(defaultMode, ["component", "badge", "danger", "bg"]),
998
- getPath(componentAliases, ["badge", "danger", "bg"])
999
- )
1000
- );
1001
- addDark(
1002
- toVariableName(prefix, "badge", "danger", "text"),
1003
- pickSemantic(
1004
- getPath(darkMode, ["component", "badge", "danger", "text"]),
1005
- getPath(defaultMode, ["component", "badge", "danger", "text"]),
1006
- getPath(componentAliases, ["badge", "danger", "text"])
1007
- )
1008
- );
1046
+ BADGE_VARIANTS.forEach(({ variant, bgKey, textKey }) => {
1047
+ addDark(
1048
+ toVariableName(prefix, "badge", variant, "bg"),
1049
+ pickSemantic(
1050
+ getPath(darkMode, ["component", "badge", bgKey]),
1051
+ getPath(defaultMode, ["component", "badge", bgKey]),
1052
+ getPath(componentAliases, ["badge", bgKey])
1053
+ )
1054
+ );
1055
+ addDark(
1056
+ toVariableName(prefix, "badge", variant, "text"),
1057
+ pickSemantic(
1058
+ getPath(darkMode, ["component", "badge", textKey]),
1059
+ getPath(defaultMode, ["component", "badge", textKey]),
1060
+ getPath(componentAliases, ["badge", textKey])
1061
+ )
1062
+ );
1063
+ });
1064
+ ICON_BOX_FIELDS.forEach(({ name, tokenKey }) => {
1065
+ addDark(
1066
+ toVariableName(prefix, "icon-box", name),
1067
+ pickSemantic(
1068
+ getPath(darkMode, ["component", "iconBox", tokenKey]),
1069
+ getPath(defaultMode, ["component", "iconBox", tokenKey]),
1070
+ getPath(componentAliases, ["iconBox", tokenKey])
1071
+ )
1072
+ );
1073
+ });
1009
1074
  const rootBlock = `${selector} {
1010
1075
  ${rootLines.join("\n")}
1011
1076
  }`;
@@ -1042,7 +1107,7 @@ var createTailwindTheme = (source = tokens) => {
1042
1107
  }, {});
1043
1108
  return {
1044
1109
  colors,
1045
- spacing: { ...source.spacing },
1110
+ spacing: { ...source.space ?? {} },
1046
1111
  borderRadius: { ...source.radii },
1047
1112
  fontFamily,
1048
1113
  fontSize,