canvasxpress-cli 70.6.0 → 70.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "canvasxpress-cli",
3
- "version": "70.6.0",
3
+ "version": "70.7.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "bin": {
6
6
  "canvasxpress": "bin/canvasxpress"
@@ -188,38 +188,15 @@
188
188
  --cx-color-gray: rgb(128, 128, 128);
189
189
  --cx-color-black: rgb(0, 0, 0);
190
190
  --cx-color-transparent: rgba(0, 0, 0, 0);
191
- /* Greys. DEPRECATED (unused by CanvasXpress; removed in a future version): extra-dark,
192
- dark and medium gray -- use the --cx-color-gray-* scale in 00-tokens-primitive.css */
193
- --cx-color-extra-dark-gray: rgb(34, 34, 34);
194
- --cx-color-dark-gray: rgb(64, 64, 64);
195
- --cx-color-medium-gray: rgb(180, 180, 180);
191
+ /* Greys (extra-dark, dark and medium gray were removed in 70.7: use the --cx-color-gray-*
192
+ scale in 00-tokens-primitive.css) */
196
193
  --cx-color-light-gray: rgb(204, 204, 204);
197
194
  --cx-color-extra-light-gray: rgb(238, 238, 238);
198
- /* Icons. DEPRECATED (never used: icon colours come from dataUIStyle via
199
- changeSVGIconColors; removed in a future version) */
200
- --cx-icon-class-a: #5369ff;
201
- --cx-icon-class-b: #292929;
202
- --cx-icon-class-c: #999999;
203
- --cx-icon-class-r: #ff0000;
204
195
  /* Coding colors: the --cx-ui-code-* roles (light and dark). --cx-code-key / -value / -string /
205
196
  -boolean / -comment are read as override hooks in 03-code.css; -number and -null were never used. */
206
197
  /* Favorite UI colors */
207
198
  --cx-color-ui-background: rgb(255, 255, 255);
208
199
  --cx-color-ui-font: rgb(34, 34, 34);
209
- /* Favorite UI Styles. DEPRECATED (never used: a preset's colours come from
210
- CanvasXpress.styleDef as --cx-ui-* roles; removed in a future version) */
211
- --cx-color-modern: rgb(83, 105, 255);
212
- --cx-color-modern-hover: rgba(83, 105, 255, 0.1) ;
213
- --cx-color-stripped: rgb(230, 230, 230) ;
214
- --cx-color-stripped-hover: rgba(180, 180, 180, 0.3);
215
- --cx-color-old: linear-gradient(rgb(240, 240, 240), rgb(230, 230, 230));
216
- --cx-color-old-hover: rgba(230,230,230,0.1);
217
- --cx-color-bms: rgb(190, 43, 187);
218
- --cx-color-bms-hover: rgba(190, 43, 187, 0.1);
219
- --cx-color-bms2: rgb(89, 84, 84);
220
- --cx-color-bms2-hover: rgba(89, 84, 84, 0.1);
221
- --cx-color-colorful: rgb(106, 27, 154);
222
- --cx-color-colorful-hover: rgba(106, 27, 154, 0.1);
223
200
  /* Font */
224
201
  --cx-x-small-font-size: 11px;
225
202
  --cx-small-font-size: 12px;
@@ -278,6 +255,16 @@
278
255
  border: none;
279
256
  }
280
257
 
258
+ /*
259
+ * Native controls (select, textarea, color input) follow the CHART's UI theme, not the host page:
260
+ * a dark page (e.g. Bootstrap data-bs-theme="dark") sets color-scheme: dark on <html>, which painted
261
+ * the light Customizer's selects dark. Zero specificity and ahead of 01b-theme-dark.css, so a dark
262
+ * or auto chart (or a dark container) still switches them to dark.
263
+ */
264
+ :where([data-cx-ui-scope]) {
265
+ color-scheme: light;
266
+ }
267
+
281
268
  :where([data-cx-ui-scope], [data-cx-ui-scope] *).unselectable,
282
269
  :where([data-cx-ui-scope]) img,
283
270
  :where([data-cx-ui-scope]) svg,
@@ -352,6 +339,17 @@ div.cX-Toolbar-Help {
352
339
  --cx-callout-border-color: var(--cx-color-widgets, var(--cx-ui-accent));
353
340
  }
354
341
 
342
+ /*
343
+ * "colorful" per-item accents in the dark theme (per-style dark accents plan, P3): setItemAccent
344
+ * writes each item's palette pair and its dark counterpart inline and marks the item; a dark
345
+ * subtree swaps the pair, so every rule reading --cx-item-accent follows. !important is the only
346
+ * thing that beats the inline pair.
347
+ */
348
+ [data-cx-ui-theme="dark"] [data-cx-item-accent] {
349
+ --cx-item-accent: var(--cx-item-dark-accent) !important;
350
+ --cx-item-accent-bg: var(--cx-item-dark-accent-bg) !important;
351
+ }
352
+
355
353
  /* GEN:legacy-defaults -- generated from tools/ui-consistency/presets-runtime.json (the default
356
354
  dataUIStyle, modern) by gen-token-css.mjs; do not edit. Outside any chart only: each chart
357
355
  writes its own preset on its cX-DOM root. */
@@ -377,6 +375,15 @@ div.cX-Toolbar-Help {
377
375
  * Spec: docs/architecture/widgets/ui-design-tokens.md
378
376
  */
379
377
 
378
+ /* The default dark accents, read by setUIColors as the contrast targets for each chart's own
379
+ dark accent (--cx-ui-dark-accent*, tokens.json darkAccent). */
380
+ :root {
381
+ --cx-ui-dark-ref-surface: var(--cx-color-gray-900);
382
+ --cx-ui-dark-ref-accent: var(--cx-color-indigo-400);
383
+ --cx-ui-dark-ref-accent-strong: var(--cx-color-indigo-300);
384
+ --cx-ui-dark-ref-accent-tint: var(--cx-color-indigo-dark-a20);
385
+ }
386
+
380
387
  /* A light container re-establishes the light roles for its own chrome, e.g. a light dashboard
381
388
  on a page that is dark. (A chart root keeps its preset: its inline roles win here.) */
382
389
  :where([data-cx-ui-theme="light"]) {
@@ -498,14 +505,14 @@ div.cX-Toolbar-Help {
498
505
  --cx-ui-border: var(--cx-color-gray-700) !important;
499
506
  --cx-ui-border-subtle: var(--cx-color-gray-800) !important;
500
507
  --cx-ui-divider: var(--cx-color-gray-800) !important;
501
- --cx-ui-border-accent: var(--cx-color-indigo-400) !important;
502
- --cx-ui-accent: var(--cx-color-indigo-400) !important;
503
- --cx-ui-accent-strong: var(--cx-color-indigo-300) !important;
504
- --cx-ui-accent-hover: var(--cx-color-indigo-400) !important;
505
- --cx-ui-accent-tint: var(--cx-color-indigo-dark-a20) !important;
506
- --cx-ui-accent-tint-subtle: var(--cx-color-indigo-dark-a20) !important;
508
+ --cx-ui-border-accent: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
509
+ --cx-ui-accent: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
510
+ --cx-ui-accent-strong: var(--cx-ui-dark-accent-strong, var(--cx-color-indigo-300)) !important;
511
+ --cx-ui-accent-hover: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
512
+ --cx-ui-accent-tint: var(--cx-ui-dark-accent-tint, var(--cx-color-indigo-dark-a20)) !important;
513
+ --cx-ui-accent-tint-subtle: var(--cx-ui-dark-accent-tint, var(--cx-color-indigo-dark-a20)) !important;
507
514
  --cx-ui-on-accent: var(--cx-color-gray-950) !important;
508
- --cx-ui-focus: var(--cx-color-indigo-300) !important;
515
+ --cx-ui-focus: var(--cx-ui-dark-accent-strong, var(--cx-color-indigo-300)) !important;
509
516
  --cx-ui-info: var(--cx-color-blue-400) !important;
510
517
  --cx-ui-info-strong: var(--cx-color-blue-300) !important;
511
518
  --cx-ui-info-tint: var(--cx-color-blue-a15) !important;
@@ -521,8 +528,8 @@ div.cX-Toolbar-Help {
521
528
  --cx-ui-scrollbar-track-alt: var(--cx-color-gray-850) !important;
522
529
  --cx-ui-scrollbar-thumb: var(--cx-color-gray-700) !important;
523
530
  --cx-ui-scrollbar-thumb-hover: var(--cx-color-gray-500) !important;
524
- --cx-ui-control-on: var(--cx-color-indigo-400) !important;
525
- --cx-ui-active-cell: var(--cx-color-indigo-400) !important;
531
+ --cx-ui-control-on: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
532
+ --cx-ui-active-cell: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
526
533
  --cx-ui-code-key: #ff7b72 !important;
527
534
  --cx-ui-code-value: #79c0ff !important;
528
535
  --cx-ui-code-string: #ffa657 !important;
@@ -549,14 +556,14 @@ div.cX-Toolbar-Help {
549
556
  --cx-ui-border: var(--cx-color-gray-700) !important;
550
557
  --cx-ui-border-subtle: var(--cx-color-gray-800) !important;
551
558
  --cx-ui-divider: var(--cx-color-gray-800) !important;
552
- --cx-ui-border-accent: var(--cx-color-indigo-400) !important;
553
- --cx-ui-accent: var(--cx-color-indigo-400) !important;
554
- --cx-ui-accent-strong: var(--cx-color-indigo-300) !important;
555
- --cx-ui-accent-hover: var(--cx-color-indigo-400) !important;
556
- --cx-ui-accent-tint: var(--cx-color-indigo-dark-a20) !important;
557
- --cx-ui-accent-tint-subtle: var(--cx-color-indigo-dark-a20) !important;
559
+ --cx-ui-border-accent: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
560
+ --cx-ui-accent: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
561
+ --cx-ui-accent-strong: var(--cx-ui-dark-accent-strong, var(--cx-color-indigo-300)) !important;
562
+ --cx-ui-accent-hover: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
563
+ --cx-ui-accent-tint: var(--cx-ui-dark-accent-tint, var(--cx-color-indigo-dark-a20)) !important;
564
+ --cx-ui-accent-tint-subtle: var(--cx-ui-dark-accent-tint, var(--cx-color-indigo-dark-a20)) !important;
558
565
  --cx-ui-on-accent: var(--cx-color-gray-950) !important;
559
- --cx-ui-focus: var(--cx-color-indigo-300) !important;
566
+ --cx-ui-focus: var(--cx-ui-dark-accent-strong, var(--cx-color-indigo-300)) !important;
560
567
  --cx-ui-info: var(--cx-color-blue-400) !important;
561
568
  --cx-ui-info-strong: var(--cx-color-blue-300) !important;
562
569
  --cx-ui-info-tint: var(--cx-color-blue-a15) !important;
@@ -572,8 +579,8 @@ div.cX-Toolbar-Help {
572
579
  --cx-ui-scrollbar-track-alt: var(--cx-color-gray-850) !important;
573
580
  --cx-ui-scrollbar-thumb: var(--cx-color-gray-700) !important;
574
581
  --cx-ui-scrollbar-thumb-hover: var(--cx-color-gray-500) !important;
575
- --cx-ui-control-on: var(--cx-color-indigo-400) !important;
576
- --cx-ui-active-cell: var(--cx-color-indigo-400) !important;
582
+ --cx-ui-control-on: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
583
+ --cx-ui-active-cell: var(--cx-ui-dark-accent, var(--cx-color-indigo-400)) !important;
577
584
  --cx-ui-code-key: #ff7b72 !important;
578
585
  --cx-ui-code-value: #79c0ff !important;
579
586
  --cx-ui-code-string: #ffa657 !important;
@@ -687,6 +694,16 @@ svg.cX-code {
687
694
  }
688
695
  }
689
696
 
697
+ /* Dark theme: the loader and its spinner take the chart's dark accent (the light theme keeps the
698
+ literals above; per-style dark accents plan, P3) */
699
+ [data-cx-ui-theme="dark"] .cX-Loader {
700
+ color: var(--cx-ui-accent);
701
+ }
702
+
703
+ [data-cx-ui-theme="dark"] .cX-Loader-Spinner {
704
+ border-top-color: var(--cx-ui-accent);
705
+ }
706
+
690
707
  /*
691
708
  * Dark theme (P7): the icon colour classes carry light literals (icons.js, and the dataUIStyle's
692
709
  * via changeSVGIconColors, written into each icon's <style>), so a dark subtree re-points the UI
@@ -747,6 +764,48 @@ svg.cX-code {
747
764
  fill: var(--cx-ui-surface);
748
765
  }
749
766
 
767
+ /*
768
+ * Glyph icons (letters, #, +/-: font size/style buttons, Columns, spinners) use text classes that
769
+ * set only a font, so <text> falls back to its default black fill and vanishes on a dark surface.
770
+ * Give them the text role. cxtbw100 is deliberately white and is left alone.
771
+ */
772
+ [data-cx-ui-theme="dark"] .cxtb100,
773
+ [data-cx-ui-theme="dark"] .cxtn10,
774
+ [data-cx-ui-theme="dark"] .cxtn20,
775
+ [data-cx-ui-theme="dark"] .cxtn30,
776
+ [data-cx-ui-theme="dark"] .cxtn40,
777
+ [data-cx-ui-theme="dark"] .cxtn50,
778
+ [data-cx-ui-theme="dark"] .cxtn60,
779
+ [data-cx-ui-theme="dark"] .cxtn70,
780
+ [data-cx-ui-theme="dark"] .cxtn80,
781
+ [data-cx-ui-theme="dark"] .cxtn90,
782
+ [data-cx-ui-theme="dark"] .cxtn100,
783
+ [data-cx-ui-theme="dark"] .cxtn120,
784
+ [data-cx-ui-theme="dark"] .cxtn140,
785
+ [data-cx-ui-theme="dark"] .cxtn160,
786
+ [data-cx-ui-theme="dark"] .cxtn180,
787
+ [data-cx-ui-theme="dark"] .cxti85,
788
+ [data-cx-ui-theme="dark"] .cxti100,
789
+ [data-cx-ui-theme="dark"] .cxts60,
790
+ [data-cx-ui-theme="dark"] .cxts70,
791
+ [data-cx-ui-theme="dark"] .cxts80,
792
+ [data-cx-ui-theme="dark"] .cxts90,
793
+ [data-cx-ui-theme="dark"] .cxts100,
794
+ [data-cx-ui-theme="dark"] .cxts150,
795
+ [data-cx-ui-theme="dark"] .cxts200 {
796
+ fill: var(--cx-ui-text);
797
+ }
798
+
799
+ /* The muted #999 grey (e.g. the margin grid) is too dim on a dark surface: use the muted text role. */
800
+ [data-cx-ui-theme="dark"] .cxc {
801
+ stroke: var(--cx-ui-text-muted);
802
+ }
803
+
804
+ [data-cx-ui-theme="dark"] .cxcc {
805
+ stroke: var(--cx-ui-text-muted);
806
+ fill: var(--cx-ui-text-muted);
807
+ }
808
+
750
809
  @media (prefers-color-scheme: dark) {
751
810
  [data-cx-ui-theme="auto"] .cxa,
752
811
  [data-cx-ui-theme="auto"] .cxa1,
@@ -800,6 +859,42 @@ svg.cX-code {
800
859
  stroke: var(--cx-ui-text);
801
860
  fill: var(--cx-ui-surface);
802
861
  }
862
+
863
+ [data-cx-ui-theme="auto"] .cxtb100,
864
+ [data-cx-ui-theme="auto"] .cxtn10,
865
+ [data-cx-ui-theme="auto"] .cxtn20,
866
+ [data-cx-ui-theme="auto"] .cxtn30,
867
+ [data-cx-ui-theme="auto"] .cxtn40,
868
+ [data-cx-ui-theme="auto"] .cxtn50,
869
+ [data-cx-ui-theme="auto"] .cxtn60,
870
+ [data-cx-ui-theme="auto"] .cxtn70,
871
+ [data-cx-ui-theme="auto"] .cxtn80,
872
+ [data-cx-ui-theme="auto"] .cxtn90,
873
+ [data-cx-ui-theme="auto"] .cxtn100,
874
+ [data-cx-ui-theme="auto"] .cxtn120,
875
+ [data-cx-ui-theme="auto"] .cxtn140,
876
+ [data-cx-ui-theme="auto"] .cxtn160,
877
+ [data-cx-ui-theme="auto"] .cxtn180,
878
+ [data-cx-ui-theme="auto"] .cxti85,
879
+ [data-cx-ui-theme="auto"] .cxti100,
880
+ [data-cx-ui-theme="auto"] .cxts60,
881
+ [data-cx-ui-theme="auto"] .cxts70,
882
+ [data-cx-ui-theme="auto"] .cxts80,
883
+ [data-cx-ui-theme="auto"] .cxts90,
884
+ [data-cx-ui-theme="auto"] .cxts100,
885
+ [data-cx-ui-theme="auto"] .cxts150,
886
+ [data-cx-ui-theme="auto"] .cxts200 {
887
+ fill: var(--cx-ui-text);
888
+ }
889
+
890
+ [data-cx-ui-theme="auto"] .cxc {
891
+ stroke: var(--cx-ui-text-muted);
892
+ }
893
+
894
+ [data-cx-ui-theme="auto"] .cxcc {
895
+ stroke: var(--cx-ui-text-muted);
896
+ fill: var(--cx-ui-text-muted);
897
+ }
803
898
  }
804
899
  /* @category: widget */
805
900
  /*****************
@@ -1621,6 +1716,10 @@ textarea.cX-Chat-Code-Output {
1621
1716
  cursor: default;
1622
1717
  }
1623
1718
 
1719
+ /* Dark theme: the left toolbar links take the chart's dark accent text (the light theme keeps the browser link colour; per-style dark accents plan, P3) */
1720
+ [data-cx-ui-theme="dark"] [id$="-cX-ChatInterfaceLeftToolbar"] > a {
1721
+ color: var(--cx-ui-accent-strong);
1722
+ }
1624
1723
  /* @category: shared */
1625
1724
 
1626
1725
  /*
@@ -2568,7 +2667,6 @@ input[type="search"].cX-DataFilter-Search::-webkit-search-cancel-button {
2568
2667
  .cX-Customizer-CardAccent .cX-Customizer-RightItem:hover,
2569
2668
  .cX-Customizer-CardAccent .cX-Customizer-RightItemLauncher:hover,
2570
2669
  .cX-Customizer-CardAccent .cX-Customizer-RightItemLauncherNB:hover,
2571
- .cX-Customizer-CardAccent .cX-Customizer-RightItemSelect > select:hover,
2572
2670
  .cX-Customizer-CardAccent .cX-Customizer-RightItemTextArea > svg:hover,
2573
2671
  .cX-Customizer-CardAccent .cX-Customizer-RightItemTextArea > textarea:hover,
2574
2672
  .cX-Customizer-CardAccent .cX-Customizer-ContainerRaw > svg:hover,
@@ -2584,6 +2682,10 @@ input[type="search"].cX-DataFilter-Search::-webkit-search-cancel-button {
2584
2682
  background: var(--cx-item-accent-bg) !important;
2585
2683
  background-color: var(--cx-item-accent-bg) !important;
2586
2684
  }
2685
+ /* Selects take only the colour: the background shorthand above would also wipe their chevron. */
2686
+ .cX-Customizer-CardAccent .cX-Customizer-RightItemSelect > select:hover {
2687
+ background-color: var(--cx-item-accent-bg);
2688
+ }
2587
2689
  /* Range sliders inside an accented card follow the card's colour (thumb + fill),
2588
2690
  * not the global purple. -webkit- and -moz- pseudo-elements must stay in separate
2589
2691
  * rules or the whole rule is dropped. */
@@ -2856,6 +2958,19 @@ input[type="search"].cX-DataFilter-Search::-webkit-search-cancel-button {
2856
2958
  height: 26px !important;
2857
2959
  }
2858
2960
 
2961
+ /*
2962
+ * Integer spinner (-, value, +): push the buttons outward into the empty outer columns for more
2963
+ * separation from the value box. A transform leaves the box (and its fixed-width input) untouched,
2964
+ * and moves the click target with the icon.
2965
+ */
2966
+ .cX-Customizer-RightItemInt .cX-Customizer-RightItemCol2 {
2967
+ transform: translateX(-6px);
2968
+ }
2969
+
2970
+ .cX-Customizer-RightItemInt .cX-Customizer-RightItemCol5 {
2971
+ transform: translateX(6px);
2972
+ }
2973
+
2859
2974
  .cX-Customizer-RightItemColMid {
2860
2975
  grid-area: 1 / 3 / 2 / 5;
2861
2976
  display: flex;
@@ -2878,6 +2993,38 @@ input[type="search"].cX-DataFilter-Search::-webkit-search-cancel-button {
2878
2993
  line-height: normal;
2879
2994
  }
2880
2995
 
2996
+ /*
2997
+ * Select boxes draw their own chevron instead of the native arrow: the browser pins that against
2998
+ * the right border and padding cannot move it. Two thin diagonals in currentColor form the V, so it
2999
+ * follows the text colour in light and dark themes. padding-left keeps the value where the native
3000
+ * control put it; padding-right keeps long values clear of the chevron.
3001
+ */
3002
+ .cX-Customizer-RightItemSelect > select {
3003
+ -webkit-appearance: none;
3004
+ -moz-appearance: none;
3005
+ appearance: none;
3006
+ padding-left: 4px;
3007
+ padding-right: 20px;
3008
+ background-image:
3009
+ linear-gradient(45deg, transparent 40%, currentColor 40%, currentColor 60%, transparent 60%),
3010
+ linear-gradient(-45deg, transparent 40%, currentColor 40%, currentColor 60%, transparent 60%);
3011
+ background-position:
3012
+ calc(100% - 13px) 50%,
3013
+ calc(100% - 8px) 50%;
3014
+ background-size: 5px 5px, 5px 5px;
3015
+ background-repeat: no-repeat;
3016
+ }
3017
+
3018
+ /* High-contrast (forced colours) mode drops background images: fall back to the native arrow. */
3019
+ @media (forced-colors: active) {
3020
+ .cX-Customizer-RightItemSelect > select {
3021
+ -webkit-appearance: auto;
3022
+ -moz-appearance: auto;
3023
+ appearance: auto;
3024
+ background-image: none;
3025
+ }
3026
+ }
3027
+
2881
3028
  .cX-Customizer-RightItemTextArea>svg:hover,
2882
3029
  .cX-Customizer-RightItemTextArea>textarea:hover,
2883
3030
  .cX-Customizer-ContainerRaw>svg:hover,
@@ -3169,7 +3316,10 @@ input.cX-Customizer-Search:not([type="color"]) {
3169
3316
  .cX-Customizer-RightPanel .cX-Customizer-String,
3170
3317
  .cX-Customizer-RightPanel .cX-Customizer-Unique,
3171
3318
  .cX-Customizer-RightPanel .cX-Customizer-Wrangling {
3172
- border-color: var(--cx-datatable-banner-border-color, var(--cx-ui-chrome-border)) !important;
3319
+ /* The solid accent border every widget frame shares (DataTable, DataFilter cards). This used the
3320
+ light chrome border, so in stripped/old/bms/colorful/ngs360 the Customizer cards were fainter
3321
+ than the DataFilter cards next to them. */
3322
+ border-color: var(--cx-datatable-border-color, var(--cx-ui-border-accent)) !important;
3173
3323
  border-radius: var(--cx-border-radius) !important;
3174
3324
  }
3175
3325
 
@@ -3556,6 +3706,11 @@ div.CanvasXpressDragLayout {
3556
3706
  word-break: break-word;
3557
3707
  }
3558
3708
 
3709
+ /* Dark theme: the header links (e.g. Title / Text) are plain <a>, drawn in the browser's dark link
3710
+ colour; they take the chart's dark accent text instead (the light theme keeps the browser link colour; per-style dark accents plan, P3) */
3711
+ [data-cx-ui-theme="dark"] .cX-Customizer-RightItemHeaderBottom > a {
3712
+ color: var(--cx-ui-accent-strong);
3713
+ }
3559
3714
  /* @category: widget */
3560
3715
  /***********
3561
3716
  * Tooltip *
@@ -4607,9 +4762,11 @@ tr.cX-DataTable-DOE {
4607
4762
  background-color: var(--cx-background-widgets-color, var(--cx-ui-surface));
4608
4763
  }
4609
4764
 
4765
+ /* Outer frame: the solid accent border shared by every widget frame (DataFilter cards,
4766
+ * Customizer cards); the light chrome border is kept for the table's internal dividers. */
4610
4767
  .cX-DataTable {
4611
4768
  background-color: transparent;
4612
- border: 1px var(--cx-border-style) var(--cx-datatable-banner-border-color, var(--cx-ui-chrome-border));
4769
+ border: 1px var(--cx-border-style) var(--cx-datatable-border-color, var(--cx-ui-border-accent));
4613
4770
  border-radius: var(--cx-border-radius);
4614
4771
  clear: both;
4615
4772
  color: var(--cx-font-color, var(--cx-ui-text));
@@ -4635,7 +4792,7 @@ tr.cX-DataTable-DOE {
4635
4792
 
4636
4793
  input.cX-DataTable-Search {
4637
4794
  background-color: var(--cx-datatable-background-color, var(--cx-ui-surface));
4638
- border: 1px var(--cx-border-style) var(--cx-datatable-banner-border-color, var(--cx-ui-chrome-border));
4795
+ border: 1px var(--cx-border-style) var(--cx-datatable-border-color, var(--cx-ui-border-accent));
4639
4796
  border-radius: var(--cx-border-radius);
4640
4797
  color: var(--cx-datatable-banner-text-color, var(--cx-ui-on-chrome));
4641
4798
  margin-right: 10px;
@@ -4887,7 +5044,7 @@ table.cX-DataTable,
4887
5044
  }
4888
5045
 
4889
5046
  /* "colorful" style: the selected row is highlighted in amber so it stands out
4890
- * from the purple header/hover and the light-purple striping. */
5047
+ * from the blue header/hover and the light-blue striping. */
4891
5048
  .cX-DataTable-Colorful .cX-DataTable-Row-Active {
4892
5049
  background-color: rgba(242, 169, 0, 0.22) !important;
4893
5050
  }
@@ -5151,6 +5308,10 @@ td.cX-DataTable-Cell > .cX-DataTable-Cell-Number:hover {
5151
5308
  width: 120px;
5152
5309
  }
5153
5310
 
5311
+ /* Dark theme: the column menu link takes the chart's dark accent text (the light theme keeps the browser link colour; per-style dark accents plan, P3) */
5312
+ [data-cx-ui-theme="dark"] .cX-DataTable-Cell-Header-Menu {
5313
+ color: var(--cx-ui-accent-strong);
5314
+ }
5154
5315
  /* @category: widget */
5155
5316
  /***************/
5156
5317
  /* Data Filter */
@@ -5233,12 +5394,15 @@ td.cX-DataTable-Cell > .cX-DataTable-Cell-Number:hover {
5233
5394
  font-size: var(--cx-datafilter-font-size, var(--cx-font-size));
5234
5395
  }
5235
5396
 
5397
+ /* Sits on the chrome-coloured bar, so it takes the text colour readable on it: white on modern's
5398
+ * accent bar, dark on the white/grey bars, light in the dark UI theme. */
5236
5399
  .cX-DataFilter-Toolbar-Text {
5237
5400
  flex: 1;
5238
5401
  top: 0px;
5239
5402
  left: 0px;
5240
5403
  padding-left: 8px;
5241
5404
  font-size: var(--cx-font-size);
5405
+ color: var(--cx-ui-on-chrome);
5242
5406
  }
5243
5407
 
5244
5408
  svg.cX-DataFilter-Toolbar-Image,
@@ -5247,9 +5411,11 @@ svg.cX-DataFilter-Toolbar-ImageNB {
5247
5411
  cursor: pointer;
5248
5412
  }
5249
5413
 
5414
+ /* Left of the icon row: takes the free space, the icons stay right, long counts ellipsize */
5250
5415
  .cX-DataFilter-Summary {
5251
- width: 100%;
5252
- padding: 2px 8px 4px 8px;
5416
+ flex: 1 1 auto;
5417
+ min-width: 0;
5418
+ padding: 0 4px;
5253
5419
  line-height: 1.2;
5254
5420
  white-space: nowrap;
5255
5421
  overflow: hidden;
@@ -6170,6 +6336,13 @@ span.cX-Menu-Item-Text {
6170
6336
  opacity: 1;
6171
6337
  }
6172
6338
 
6339
+ /* Dark theme: the chart's dark accent, with the dark text that reads on it (the light theme keeps
6340
+ the literal above; per-style dark accents plan, P3) */
6341
+ [data-cx-ui-theme="dark"] .cX-Resize-Indicator {
6342
+ background: var(--cx-ui-accent);
6343
+ color: var(--cx-ui-on-accent);
6344
+ }
6345
+
6173
6346
  /* 8-POINT RESIZER STYLES */
6174
6347
  .cX-Resizer {
6175
6348
  position: absolute;
@@ -6406,6 +6579,7 @@ body.has-fullscreen {
6406
6579
  border-radius: 10px;
6407
6580
  padding: 8px;
6408
6581
  background: var(--cx-ui-surface);
6582
+ color: var(--cx-font-color, var(--cx-ui-text));
6409
6583
  opacity: 0;
6410
6584
  z-index: var(--cx-z-toolbar-edge);
6411
6585
  transition: all var(--cx-transition-speed) ease;