@vegastack/design-tokens 0.7.79 → 0.8.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/base.css CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  Text entry (FOC-3) — text inputs, textarea, and the bordered field GROUPS that frame one
76
76
  (InputGroup, NumberField, ChipInput, the combobox chips, the panel search row) — takes NO fill
77
- at all: it is excluded below, and its focus cue is a subtle darker border (`border-ring/40`)
77
+ at all: it is excluded below, and its focus cue is a subtle darker border (`border-ring/50`)
78
78
  that eases in over 150ms, written on the component that draws the border (the group, not the
79
79
  control inside it, which has no border and no fill). An invalid field keeps its destructive
80
80
  border in every state; focus never replaces it. The one caret-only surface is a contenteditable
@@ -768,6 +768,68 @@
768
768
  animation: vs-flash var(--duration-slow) var(--motion-ease-standard);
769
769
  }
770
770
 
771
+ /* ---------------------------------------------------------------------------
772
+ * motion-stagger — staggered fade+rise for the children of a container
773
+ * (content replacing a skeleton: rows, cards, a feed).
774
+ *
775
+ * Put it on the PARENT; each direct child plays `vs-enter-up` (the same keyframes
776
+ * and timing as `motion-enter-up`) a step after the one before. The step is a
777
+ * quarter of `--duration-fast` (~37ms), overridable per call-site with
778
+ * `[--vs-stagger-step:60ms]`; children past the twelfth share the twelfth's
779
+ * delay, so a long list never waits more than ~0.4s for its tail. `both` fill
780
+ * keeps a waiting child hidden until its turn. Remount (a changing `key`) to
781
+ * replay. Reduced motion: base.css zeroes the delays as well as the durations,
782
+ * so the content appears at once, in its resting state.
783
+ * ------------------------------------------------------------------------- */
784
+ @utility motion-stagger {
785
+ & > * {
786
+ animation: vs-enter-up var(--duration-fast) var(--motion-ease-standard) both;
787
+ animation-delay: calc(
788
+ var(--vs-stagger-step, var(--duration-fast) / 4) * 11
789
+ );
790
+ }
791
+ & > :first-child {
792
+ animation-delay: 0s;
793
+ }
794
+ & > :nth-child(2) {
795
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 1);
796
+ }
797
+ & > :nth-child(3) {
798
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 2);
799
+ }
800
+ & > :nth-child(4) {
801
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 3);
802
+ }
803
+ & > :nth-child(5) {
804
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 4);
805
+ }
806
+ & > :nth-child(6) {
807
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 5);
808
+ }
809
+ & > :nth-child(7) {
810
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 6);
811
+ }
812
+ & > :nth-child(8) {
813
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 7);
814
+ }
815
+ & > :nth-child(9) {
816
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 8);
817
+ }
818
+ & > :nth-child(10) {
819
+ animation-delay: calc(var(--vs-stagger-step, var(--duration-fast) / 4) * 9);
820
+ }
821
+ & > :nth-child(11) {
822
+ animation-delay: calc(
823
+ var(--vs-stagger-step, var(--duration-fast) / 4) * 10
824
+ );
825
+ }
826
+ & > :nth-child(12) {
827
+ animation-delay: calc(
828
+ var(--vs-stagger-step, var(--duration-fast) / 4) * 11
829
+ );
830
+ }
831
+ }
832
+
771
833
  @keyframes vs-indeterminate {
772
834
  /* Indeterminate progress (audit M-06, 2026-09-07): a 35%-wide segment sweeps the
773
835
  * track and returns. The 0% and 100% stops are IDENTICAL on purpose — the global
@@ -868,3 +930,89 @@
868
930
  .dark [data-brand-artwork="dark"] {
869
931
  display: contents;
870
932
  }
933
+
934
+ /* ---------------------------------------------------------------------------
935
+ * Syntax highlighting — `CodeBlock` and `TextEdit`'s code block.
936
+ *
937
+ * lowlight (highlight.js grammars) marks tokens with `.hljs-*` classes; these
938
+ * map them onto the semantic palette, so code reads in both themes with no
939
+ * theme of its own: plain ink, keywords in `tag-pink-text`, names in
940
+ * `info-text`, strings in `brand-text`, numbers and literals in
941
+ * `tag-orange-text`, attributes and variables in `tag-cyan-text`, types in
942
+ * `tag-lime-text`, comments muted. Only AA text tokens: each clears 4.5:1 on
943
+ * full `muted` (the darkest code ground in light, lightest in dark) in both
944
+ * themes. Every value is a theme-split token, so the dark half follows `.dark`
945
+ * through the cascade.
946
+ * Plain selectors (not utilities), for the same reason as the BrandIcon swap
947
+ * above: a consumer's Tailwind build never scans the component source.
948
+ * ------------------------------------------------------------------------- */
949
+ .hljs {
950
+ color: var(--foreground);
951
+ }
952
+ /* 13px code with relaxed leading — below the ramp's `text-sm`, on purpose, as Notion's code. */
953
+ .hljs,
954
+ .hljs code {
955
+ font-size: 0.8125rem;
956
+ line-height: 1.625;
957
+ }
958
+ .hljs-comment,
959
+ .hljs-quote {
960
+ color: var(--muted-foreground);
961
+ font-style: italic;
962
+ }
963
+ .hljs-keyword,
964
+ .hljs-selector-tag,
965
+ .hljs-doctag,
966
+ .hljs-meta .hljs-keyword,
967
+ .hljs-name {
968
+ color: var(--tag-pink-text);
969
+ }
970
+ .hljs-title,
971
+ .hljs-title.function_,
972
+ .hljs-title.class_,
973
+ .hljs-section,
974
+ .hljs-selector-id,
975
+ .hljs-selector-class {
976
+ color: var(--info-text);
977
+ }
978
+ .hljs-string,
979
+ .hljs-regexp,
980
+ .hljs-char.escape_,
981
+ .hljs-meta .hljs-string {
982
+ color: var(--brand-text);
983
+ }
984
+ .hljs-number,
985
+ .hljs-literal,
986
+ .hljs-symbol,
987
+ .hljs-bullet,
988
+ .hljs-built_in,
989
+ .hljs-link {
990
+ color: var(--tag-orange-text);
991
+ }
992
+ .hljs-attr,
993
+ .hljs-attribute,
994
+ .hljs-property,
995
+ .hljs-variable,
996
+ .hljs-template-variable,
997
+ .hljs-params,
998
+ .hljs-selector-attr,
999
+ .hljs-selector-pseudo {
1000
+ color: var(--tag-cyan-text);
1001
+ }
1002
+ .hljs-type,
1003
+ .hljs-title.class_.inherited__,
1004
+ .hljs-meta {
1005
+ color: var(--tag-lime-text);
1006
+ }
1007
+ .hljs-addition {
1008
+ color: var(--success-text);
1009
+ }
1010
+ .hljs-deletion {
1011
+ color: var(--destructive-text);
1012
+ }
1013
+ .hljs-emphasis {
1014
+ font-style: italic;
1015
+ }
1016
+ .hljs-strong {
1017
+ font-weight: 600;
1018
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vegastack/design-tokens",
3
- "version": "0.7.79",
3
+ "version": "0.8.0",
4
4
  "description": "VegaStack design tokens (DTCG → Tailwind v4 theme + TS)",
5
5
  "license": "MIT",
6
6
  "repository": {