@kolkrabbi/kol-theme 0.96.0 → 0.98.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.
@@ -672,7 +672,13 @@
672
672
  }
673
673
 
674
674
  .slider-black {
675
- --kol-slider-track: var(--kol-fg-64);
675
+ /* A FALLBACK, NOT A DECLARATION (SliderTrackVariableNotForwarded, kol-mirror
676
+ * 2026-08-30). This was `--kol-slider-track: var(--kol-fg-64)` set ON the
677
+ * element, and an element's own declaration beats anything it would inherit —
678
+ * so the override the component's docstring promised was unreachable from any
679
+ * ancestor. Consumers were reaching into `.slider-black` by specificity from
680
+ * their own stylesheets to get a track colour. `.kol-slider-dual-playhead`
681
+ * below had it right from the start; this now matches it. */
676
682
  -webkit-appearance: none;
677
683
  appearance: none;
678
684
  background: transparent;
@@ -686,13 +692,13 @@
686
692
  }
687
693
 
688
694
  .slider-black::-webkit-slider-runnable-track {
689
- background: var(--kol-slider-track);
695
+ background: var(--kol-slider-track, var(--kol-fg-64));
690
696
  height: 2px;
691
697
  border-radius: 0;
692
698
  }
693
699
 
694
700
  .slider-black::-moz-range-track {
695
- background: var(--kol-slider-track);
701
+ background: var(--kol-slider-track, var(--kol-fg-64));
696
702
  height: 2px;
697
703
  border-radius: 0;
698
704
  }
@@ -717,6 +723,97 @@
717
723
  border: none;
718
724
  }
719
725
 
726
+ /* ── Dual-thumb range (SliderDualThumbAndPlayhead, kol-mirror 2026-08-30) ────
727
+ * Two native ranges stacked on ONE track — the only way two thumbs share a
728
+ * rail. The INPUT takes `pointer-events: none` so the dead space between the
729
+ * thumbs does not swallow a track click, and each THUMB takes it back; without
730
+ * that pair the upper input covers the lower one entirely.
731
+ *
732
+ * The two must be tellable apart at a glance — you have to know which end you
733
+ * grabbed. In-mark is hollow (surface fill, ink ring), out-mark is solid, which
734
+ * is the treatment mirror's local copy proved over months.
735
+ *
736
+ * The playhead colour is a TOKEN. Mirror hardcoded `#2dd4bf`, which is the
737
+ * defect this move exists to end: a literal cannot follow a theme or a
738
+ * consumer's brand. `--kol-slider-playhead` defaults to the accent and is
739
+ * overridable per instance. */
740
+ .kol-slider-dual {
741
+ position: relative;
742
+ width: 100%;
743
+ height: 20px;
744
+ }
745
+
746
+ .kol-slider-dual-rail {
747
+ position: absolute;
748
+ left: 0;
749
+ right: 0;
750
+ top: 9px;
751
+ height: 2px;
752
+ background: var(--kol-slider-track, var(--kol-surface-on-primary));
753
+ }
754
+
755
+ .kol-slider-dual-playhead {
756
+ position: absolute;
757
+ top: 0;
758
+ width: 3px;
759
+ height: 20px;
760
+ margin-left: -1.5px;
761
+ border-radius: 1px;
762
+ background: var(--kol-slider-playhead, var(--kol-accent-primary));
763
+ z-index: 4;
764
+ cursor: grab;
765
+ }
766
+ .kol-slider-dual-playhead:active { cursor: grabbing; }
767
+
768
+ .kol-slider-range {
769
+ position: absolute;
770
+ inset: 0;
771
+ width: 100%;
772
+ -webkit-appearance: none;
773
+ appearance: none;
774
+ background: transparent;
775
+ pointer-events: none;
776
+ }
777
+ .kol-slider-range::-webkit-slider-runnable-track { background: transparent; height: 2px; }
778
+ .kol-slider-range::-moz-range-track { background: transparent; height: 2px; }
779
+
780
+ .kol-slider-range::-webkit-slider-thumb {
781
+ -webkit-appearance: none;
782
+ appearance: none;
783
+ pointer-events: auto;
784
+ height: 12px;
785
+ width: 12px;
786
+ border-radius: 50%;
787
+ margin-top: -5px;
788
+ cursor: pointer;
789
+ }
790
+ .kol-slider-range::-moz-range-thumb {
791
+ appearance: none;
792
+ pointer-events: auto;
793
+ height: 12px;
794
+ width: 12px;
795
+ border-radius: 50%;
796
+ cursor: pointer;
797
+ }
798
+
799
+ /* in = hollow, out = solid */
800
+ .kol-slider-range--in::-webkit-slider-thumb {
801
+ background: var(--kol-surface-primary);
802
+ border: 1.5px solid var(--kol-surface-on-primary);
803
+ }
804
+ .kol-slider-range--in::-moz-range-thumb {
805
+ background: var(--kol-surface-primary);
806
+ border: 1.5px solid var(--kol-surface-on-primary);
807
+ }
808
+ .kol-slider-range--out::-webkit-slider-thumb {
809
+ background: var(--kol-surface-on-primary);
810
+ border: none;
811
+ }
812
+ .kol-slider-range--out::-moz-range-thumb {
813
+ background: var(--kol-surface-on-primary);
814
+ border: none;
815
+ }
816
+
720
817
 
721
818
  /* ═══════════════════════════════════════════════════════════════
722
819
  * Sidenav primitives — promoted from kol-framework.css 2026-04-30.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.96.0",
3
+ "version": "0.98.0",
4
4
  "description": "KOL (Kolkrabbi) design-system tokens + base CSS — brand-neutral. The canonical token/cascade layer every other KOL package and consumer builds on.",
5
5
  "license": "MIT",
6
6
  "type": "module",