@kolkrabbi/kol-framework 0.3.3 → 0.3.5

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.
@@ -59,6 +59,20 @@
59
59
  --kol-color-teal-400: #387E7F;
60
60
  --kol-color-teal-500: #275A5B;
61
61
 
62
+ /* Green — muted natural green (chart categorical hue; not a core identity anchor). ★ 300. */
63
+ --kol-color-green-100: #A8CBA0;
64
+ --kol-color-green-200: #7FB073;
65
+ --kol-color-green-300: #4C9A5F; /* anchor */
66
+ --kol-color-green-400: #37733F;
67
+ --kol-color-green-500: #285229;
68
+
69
+ /* Purple — muted violet (chart categorical hue; not a core identity anchor). ★ 300. */
70
+ --kol-color-purple-100: #B9A8D6;
71
+ --kol-color-purple-200: #9179B8;
72
+ --kol-color-purple-300: #6B4E9E; /* anchor */
73
+ --kol-color-purple-400: #4E3873;
74
+ --kol-color-purple-500: #38285A;
75
+
62
76
  /* Cream — utility neutral, project-flavored. */
63
77
  --kol-color-cream-100: #FAF7F0;
64
78
  --kol-color-cream-200: #F5F0E6;
@@ -97,6 +111,34 @@
97
111
  --kol-accent-on-secondary: var(--kol-color-cream-100); /* ink on accent-secondary */
98
112
  }
99
113
 
114
+ /* =============================================================================
115
+ * CHART PALETTE + SEMANTIC ALIASES (consumed by kol-components-{chess,dashboards})
116
+ *
117
+ * The dashboards/chess chart classes reference a categorical `--kol-palette-*`
118
+ * scale plus a display-font + danger token. These map onto the ramps above
119
+ * (chart-legible mid-stops, not the identity anchors where those run too dark /
120
+ * light) and the theme's semantic tokens. Kept here so one edit rebrands the
121
+ * chart palette with the rest of the identity. Before this block these tokens
122
+ * resolved to nothing, collapsing every chart series onto --kol-accent-primary.
123
+ * ============================================================================= */
124
+
125
+ :root {
126
+ --kol-palette-blue: var(--kol-color-blue-200);
127
+ --kol-palette-green: var(--kol-color-green-300);
128
+ --kol-palette-yellow: var(--kol-color-yellow-300);
129
+ --kol-palette-red: var(--kol-color-red-200);
130
+ --kol-palette-orange: var(--kol-color-orange-300);
131
+ --kol-palette-purple: var(--kol-color-purple-300);
132
+ --kol-palette-teal: var(--kol-color-teal-300);
133
+
134
+ /* Display heading font for the chess/dashboards specimen chrome. */
135
+ --kol-font-family-heading: var(--kol-font-family-sans-narrow);
136
+
137
+ /* Danger status (chess analysis results / time-class dots). */
138
+ --kol-status-danger: var(--ui-error);
139
+ --kol-status-danger-muted: color-mix(in srgb, var(--ui-error) 55%, transparent);
140
+ }
141
+
100
142
  /* =============================================================================
101
143
  * TAILWIND CONTRACT — palette + accent exposures
102
144
  *
@@ -142,6 +184,18 @@
142
184
  --color-kol-teal-400: var(--kol-color-teal-400);
143
185
  --color-kol-teal-500: var(--kol-color-teal-500);
144
186
 
187
+ --color-kol-green-100: var(--kol-color-green-100);
188
+ --color-kol-green-200: var(--kol-color-green-200);
189
+ --color-kol-green-300: var(--kol-color-green-300);
190
+ --color-kol-green-400: var(--kol-color-green-400);
191
+ --color-kol-green-500: var(--kol-color-green-500);
192
+
193
+ --color-kol-purple-100: var(--kol-color-purple-100);
194
+ --color-kol-purple-200: var(--kol-color-purple-200);
195
+ --color-kol-purple-300: var(--kol-color-purple-300);
196
+ --color-kol-purple-400: var(--kol-color-purple-400);
197
+ --color-kol-purple-500: var(--kol-color-purple-500);
198
+
145
199
  /* Cream — utility neutral. */
146
200
  --color-kol-cream-100: var(--kol-color-cream-100);
147
201
  --color-kol-cream-200: var(--kol-color-cream-200);
package/kol-framework.css CHANGED
@@ -233,28 +233,7 @@ code, pre {
233
233
  .kol-asset-grid-4col { grid-template-columns: 1fr; }
234
234
  }
235
235
 
236
- /* ───── Mood tile (image + overlay logomark) ─────
237
- Wrappers inlined in MoodTile.jsx. CSS retains descendant img positioning
238
- (cover-crop the photo) + overlay logo sizing. */
239
-
240
- .kol-mood-tile-frame img {
241
- position: absolute;
242
- inset: 0;
243
- width: 100%;
244
- height: 100%;
245
- object-fit: cover;
246
- }
247
-
248
- .kol-mood-tile-overlay .kol-brand-logo {
249
- width: 32%;
250
- max-width: 180px;
251
- display: inline-flex;
252
- }
253
-
254
- .kol-mood-tile-overlay svg {
255
- width: 100%;
256
- height: auto;
257
- }
236
+ /* .kol-mood-tile-* relocated to kol-theme/kol-components-styleguide.css 2026-07-10 */
258
237
 
259
238
  /* ───── Swatch / Ramp (color specimens) ───── */
260
239
 
@@ -684,324 +663,7 @@ code, pre {
684
663
  /* ───── Foundations · typography specimens ─────
685
664
  Wrappers fully inlined in TypographySections.jsx. */
686
665
 
687
- /* ───── Combo Lab layout primitives — shared structure classes ───── */
688
-
689
- .kol-combo-frame {
690
- border-radius: 4px;
691
- overflow: hidden;
692
- transition: background-color 400ms ease, border-color 400ms ease;
693
- }
694
-
695
- .kol-combo-slab {
696
- padding: 16px;
697
- display: flex;
698
- flex-direction: column;
699
- justify-content: space-between;
700
- min-height: 0;
701
- transition: background-color 400ms ease, color 400ms ease;
702
- }
703
-
704
- .kol-combo-slab--end { justify-content: flex-end; }
705
- .kol-combo-slab--between { justify-content: space-between; }
706
-
707
- .kol-combo-label {
708
- font-family: 'Right Grotesk Compact', sans-serif;
709
- font-size: 12px;
710
- font-weight: 500;
711
- line-height: 100%;
712
- letter-spacing: 0.08em;
713
- text-transform: uppercase;
714
- }
715
-
716
- .kol-combo-number {
717
- font-family: 'Right Grotesk', sans-serif;
718
- font-size: 16px;
719
- font-weight: 700;
720
- line-height: 100%;
721
- letter-spacing: 0.02em;
722
- }
723
-
724
- .kol-combo-stage--fill {
725
- height: 100%;
726
- min-height: 360px;
727
- width: 100%;
728
- }
729
-
730
- .kol-combo-logo {
731
- display: inline-flex;
732
- color: currentColor;
733
- }
734
-
735
- /* 60 / 30 / 10 */
736
- .kol-combo-stage--ratio { display: flex; }
737
- .kol-combo-stage--ratio > :nth-child(1) { flex: 1; }
738
- .kol-combo-stage--ratio > :nth-child(2) { flex: 3; }
739
- .kol-combo-stage--ratio > :nth-child(3) { flex: 6; }
740
-
741
- /* Tower */
742
- .kol-combo-stage--tower {
743
- display: flex;
744
- flex-direction: column;
745
- height: 100%;
746
- width: 100%;
747
- }
748
- .kol-combo-stage--tower > * { flex: 1; }
749
-
750
- /* Quad split */
751
- .kol-combo-stage--quad { display: flex; }
752
- .kol-combo-stage--quad > * { flex: 1; }
753
-
754
- .kol-combo-quad-col {
755
- display: flex;
756
- flex-direction: column;
757
- }
758
- .kol-combo-quad-col > * { flex: 1; }
759
-
760
- /* Card row */
761
- .kol-combo-stage--card-row {
762
- display: grid;
763
- grid-template-columns: repeat(4, 1fr);
764
- gap: 16px;
765
- height: 100%;
766
- min-height: 360px;
767
- width: 100%;
768
- }
769
-
770
- .kol-combo-card {
771
- flex: 1;
772
- min-height: 240px;
773
- padding: 20px;
774
- display: flex;
775
- flex-direction: column;
776
- transition: background-color 400ms ease, color 400ms ease;
777
- }
778
-
779
- .kol-combo-card--end { justify-content: flex-end; }
780
- .kol-combo-card--between { justify-content: space-between; }
781
-
782
- /* Stripe row */
783
- .kol-combo-stage--stripe-row {
784
- display: flex;
785
- flex-direction: column;
786
- gap: 16px;
787
- height: 100%;
788
- min-height: 360px;
789
- width: 100%;
790
- }
791
-
792
- .kol-combo-stripe-row {
793
- display: flex;
794
- flex: 1;
795
- align-items: stretch;
796
- width: 100%;
797
- }
798
-
799
- .kol-combo-stripe-bar {
800
- display: flex;
801
- flex: 1;
802
- position: relative;
803
- width: 100%;
804
- height: 100%;
805
- border-radius: 4px;
806
- overflow: hidden;
807
- }
808
-
809
- .kol-combo-stripe-seg { transition: background-color 400ms ease; }
810
- .kol-combo-stripe-seg--6 { flex: 6; }
811
- .kol-combo-stripe-seg--3 { flex: 3; }
812
- .kol-combo-stripe-seg--1 { flex: 1; }
813
-
814
- .kol-combo-stripe-group { display: flex; }
815
- .kol-combo-stripe-group--3 { flex: 3; }
816
- .kol-combo-stripe-group--1 { flex: 1; }
817
-
818
- .kol-combo-stripe-neutral {
819
- border-top: 1px solid var(--stripe-rule, transparent);
820
- border-bottom: 1px solid var(--stripe-rule, transparent);
821
- }
822
-
823
- .kol-combo-stripe-accent-border {
824
- border: 1.73px solid var(--stripe-accent, transparent);
825
- }
826
-
827
- .kol-combo-stripe-method {
828
- position: absolute;
829
- top: 12px;
830
- left: 12px;
831
- font-family: 'Right Grotesk Compact', sans-serif;
832
- font-size: 12px;
833
- font-weight: 500;
834
- letter-spacing: 0.08em;
835
- line-height: 100%;
836
- text-transform: uppercase;
837
- color: white;
838
- pointer-events: none;
839
- }
840
-
841
- /* Applied card */
842
- .kol-combo-stage--applied {
843
- display: flex;
844
- height: 100%;
845
- min-height: 360px;
846
- width: 100%;
847
- }
848
-
849
- .kol-combo-applied-plate {
850
- flex: 2;
851
- padding: 32px;
852
- display: flex;
853
- flex-direction: column;
854
- justify-content: space-between;
855
- transition: background-color 400ms ease, color 400ms ease;
856
- }
857
-
858
- .kol-combo-applied-col {
859
- flex: 1;
860
- display: flex;
861
- flex-direction: column;
862
- }
863
-
864
- .kol-combo-applied-surface { flex: 3; }
865
- .kol-combo-applied-band--lg { flex: 2; }
866
- .kol-combo-applied-band--sm { flex: 1; }
867
- .kol-combo-applied-band { transition: background-color 400ms ease; }
868
-
869
- .kol-combo-applied-accent-strip {
870
- display: flex;
871
- gap: 8px;
872
- }
873
-
874
- .kol-combo-applied-accent-chip {
875
- width: 20px;
876
- height: 20px;
877
- border-radius: 2px;
878
- transition: background-color 400ms ease;
879
- }
880
-
881
- /* ───── Foundations · combo lab ───── */
882
-
883
- .kol-combo-lab {
884
- display: flex;
885
- flex-direction: column;
886
- flex: 1;
887
- padding: 24px;
888
- border: 1px solid var(--kol-fg-08);
889
- border-radius: 4px;
890
- background: var(--kol-fg-02);
891
- }
892
-
893
- .kol-combo-controls { margin-bottom: 24px; }
894
-
895
- .kol-combo-stage-wrap {
896
- flex: 1;
897
- margin-bottom: 24px;
898
- padding: 32px;
899
- background: var(--kol-fg-02);
900
- border-radius: 4px;
901
- min-height: 440px;
902
- display: flex;
903
- align-items: stretch;
904
- justify-content: center;
905
- }
906
-
907
- .kol-combo-stage-anim {
908
- width: 100%;
909
- height: 100%;
910
- animation: kol-combo-fade 260ms ease;
911
- display: flex;
912
- align-items: stretch;
913
- }
914
-
915
- .kol-combo-stage-anim > * { width: 100%; height: 100%; }
916
-
917
- /* In fullbleed mode, let the lab fill the section */
918
- .kol-page--fullbleed .kol-combo-lab { flex: 1; }
919
- .kol-page--fullbleed .kol-combo-stage-wrap { min-height: 520px; }
920
-
921
- @keyframes kol-combo-fade {
922
- from { opacity: 0.2; transform: translateY(6px); }
923
- to { opacity: 1; transform: none; }
924
- }
925
-
926
- .kol-combo-readout {
927
- display: grid;
928
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
929
- gap: 8px 32px;
930
- padding-top: 16px;
931
- border-top: 1px solid var(--kol-fg-08);
932
- }
933
-
934
- /* Combo Lab — control rows (Layout / Palette / Logo selectors) */
935
- .kol-combo-row {
936
- display: flex;
937
- align-items: center;
938
- gap: 16px;
939
- flex-wrap: wrap;
940
- margin-bottom: 12px;
941
- }
942
-
943
- .kol-combo-row-label { min-width: 72px; }
944
-
945
- .kol-combo-row-controls {
946
- display: flex;
947
- flex-wrap: wrap;
948
- gap: 6px;
949
- }
950
-
951
- .kol-combo-footer {
952
- display: flex;
953
- align-items: center;
954
- gap: 16px;
955
- margin-top: 8px;
956
- }
957
-
958
- .kol-combo-footer-desc { flex: 1; }
959
-
960
- .kol-combo-randomize {
961
- padding: 8px 16px;
962
- background: transparent;
963
- color: var(--kol-fg-80);
964
- border: 1px solid var(--kol-fg-16);
965
- border-radius: 4px;
966
- font-family: var(--kol-font-family-mono, monospace);
967
- font-weight: 600;
968
- cursor: pointer;
969
- transition: color 150ms ease, border-color 150ms ease, background 150ms ease;
970
- }
971
-
972
- .kol-combo-randomize:hover {
973
- color: var(--kol-surface-on-primary);
974
- border-color: var(--kol-fg-48);
975
- background: var(--kol-fg-04);
976
- }
977
-
978
- /* Combo Lab — live palette readout rows */
979
- .kol-combo-swatch-row {
980
- display: flex;
981
- align-items: center;
982
- gap: 12px;
983
- padding: 6px 0;
984
- }
985
-
986
- .kol-combo-swatch-chip {
987
- width: 24px;
988
- height: 24px;
989
- flex-shrink: 0;
990
- border-radius: 3px;
991
- transition: background 400ms ease;
992
- }
993
-
994
- .kol-combo-swatch-label {
995
- min-width: 88px;
996
- font-weight: 600;
997
- }
998
-
999
- .kol-combo-swatch-hex {
1000
- font-family: var(--kol-font-family-mono, monospace);
1001
- text-transform: uppercase;
1002
- }
1003
-
1004
- .kol-combo-summary { margin-top: 16px; }
666
+ /* .kol-combo-* (+ @keyframes kol-combo-fade) relocated to kol-theme/kol-components-styleguide.css 2026-07-10 */
1005
667
 
1006
668
  /* ═════════════════════════════════════════════════════════════════════
1007
669
  SpectrumGrid — matrix color-token grid (9 ramps × 10 stops)
@@ -1113,28 +775,7 @@ code, pre {
1113
775
  }
1114
776
 
1115
777
 
1116
- /* ═════════════════════════════════════════════════════════════════════
1117
- Color Anatomy — token composition samples
1118
-
1119
- Wrappers inlined in ColorAnatomy.jsx; figure margin via Preflight.
1120
- CSS retains the descendant typography for figcaption + inline <code>.
1121
- ═════════════════════════════════════════════════════════════════════ */
1122
-
1123
- .kol-anatomy-sample figcaption {
1124
- margin-top: 12px;
1125
- font-size: 12px;
1126
- color: var(--kol-fg-48);
1127
- font-style: italic;
1128
- }
1129
-
1130
- .kol-anatomy-sample code {
1131
- font-family: var(--kol-font-family-mono, monospace);
1132
- font-size: 11px;
1133
- background: color-mix(in srgb, currentColor 18%, transparent);
1134
- padding: 1px 4px;
1135
- border-radius: 3px;
1136
- opacity: 1;
1137
- }
778
+ /* .kol-anatomy-sample-* relocated to kol-theme/kol-components-styleguide.css 2026-07-10 */
1138
779
 
1139
780
 
1140
781
  /* ═════════════════════════════════════════════════════════════════════
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-framework",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "KOL app shell — sidenav, layout, theme toggle, footer, heroes + brand color layer. SideNav takes nav data as props so the tree stays app-local.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  "app-shell"
28
28
  ],
29
29
  "dependencies": {
30
- "@kolkrabbi/kol-component": "0.8.0",
30
+ "@kolkrabbi/kol-component": "0.9.0",
31
31
  "@kolkrabbi/kol-icons": "0.5.0"
32
32
  },
33
33
  "peerDependencies": {