@validation-os/dashboard 0.14.1 → 0.15.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/styles.css CHANGED
@@ -2867,3 +2867,185 @@ button.vos-verdict-title {
2867
2867
  gap: 10px;
2868
2868
  padding: 20px 22px;
2869
2869
  }
2870
+
2871
+ /* ── DEV-5879 redesign: unified nav, pipeline board, evidence-first details ── */
2872
+
2873
+ /* Segmented toggle (Grid / View all) */
2874
+ .vos-seg { display: inline-flex; gap: 0; border: 1px solid var(--vos-border); border-radius: var(--vos-radius); overflow: hidden; }
2875
+ .vos-seg-btn { padding: 6px 14px; background: transparent; border: none; color: var(--vos-muted); font: inherit; cursor: pointer; border-right: 1px solid var(--vos-border); }
2876
+ .vos-seg-btn:last-child { border-right: none; }
2877
+ .vos-seg-btn.is-active { background: var(--vos-accent-weak); color: var(--vos-accent-text); }
2878
+
2879
+ /* Stage grid cell button (clean count, 1 for single) */
2880
+ .vos-stage-grid-cell { padding: 2px; }
2881
+ .vos-stage-grid-btn { width: 100%; min-height: 56px; border: none; border-radius: 6px; cursor: pointer; font-size: 16px; font-weight: 600; color: var(--vos-text); transition: background 0.15s; }
2882
+ .vos-stage-grid-btn:hover:not(:disabled) { filter: brightness(1.1); }
2883
+ .vos-stage-grid-btn:disabled { cursor: default; }
2884
+ .vos-heat-0 { background: var(--vos-surface); opacity: 0.4; color: var(--vos-muted); }
2885
+ .vos-heat-1 { background: color-mix(in srgb, var(--vos-accent) 18%, var(--vos-surface)); }
2886
+ .vos-heat-2 { background: color-mix(in srgb, var(--vos-accent) 32%, var(--vos-surface)); }
2887
+ .vos-heat-3 { background: color-mix(in srgb, var(--vos-accent) 48%, var(--vos-surface)); }
2888
+ .vos-heat-4 { background: color-mix(in srgb, var(--vos-accent) 65%, var(--vos-surface)); }
2889
+
2890
+ /* Pipeline board hero (board variant — compact) */
2891
+ .vos-pipe-hero-board { padding: 20px 24px; margin-bottom: 16px; }
2892
+
2893
+ /* 2-segment meter track (Framed + Known — drops Planned/Tested) */
2894
+ .vos-pipe-row-2seg { grid-template-columns: 4px 1fr 180px 90px !important; }
2895
+ .vos-pipe-prog-2seg { padding: 12px 0; }
2896
+ .vos-meter2 { display: flex; flex-direction: column; gap: 2px; }
2897
+ .vos-meter2-track { height: 16px; border-radius: 4px; background: var(--vos-surface-2); overflow: hidden; display: flex; }
2898
+ .vos-meter2-seg { flex: 1; position: relative; border-right: 1px solid var(--vos-border); overflow: hidden; }
2899
+ .vos-meter2-seg:last-child { border-right: none; }
2900
+ .vos-meter2-fill-accent { position: absolute; inset: 0; background: var(--vos-accent); opacity: 0.5; }
2901
+ .vos-meter2-fill-good { position: absolute; inset: 0; background: var(--vos-good); opacity: 0.6; }
2902
+ .vos-meter2-fill-warn { position: absolute; inset: 0; background: var(--vos-warn); opacity: 0.6; }
2903
+ .vos-meter2-fill-crit { position: absolute; inset: 0; background: var(--vos-crit); opacity: 0.6; }
2904
+ .vos-meter2-caps { display: flex; }
2905
+ .vos-meter2-cap { flex: 1; font-size: 8px; text-align: center; color: var(--vos-muted); }
2906
+
2907
+ /* Pipeline id + statement (compact row) */
2908
+ .vos-pipe-id { font-size: 9px; color: var(--vos-muted); display: block; }
2909
+ .vos-pipe-bmeta { display: flex; gap: 10px; font-size: 10px; color: var(--vos-muted); margin-top: 3px; }
2910
+
2911
+ /* Accent next-move button */
2912
+ .vos-btn-accent { background: var(--vos-accent); color: var(--vos-bg); border: none; font-weight: 600; }
2913
+ .vos-btn-accent:hover { filter: brightness(1.1); }
2914
+
2915
+ /* Recommended experiments section */
2916
+ .vos-pipe-recs { margin-top: 20px; padding: 16px; }
2917
+ .vos-pipe-recs-head { font-size: 11px; color: var(--vos-muted); text-transform: uppercase; letter-spacing: 0.4px; margin-bottom: 12px; }
2918
+ .vos-pipe-recs-list { display: flex; flex-direction: column; gap: 8px; }
2919
+ .vos-pipe-rec { padding: 14px; border: 1px solid var(--vos-border); border-radius: 10px; background: var(--vos-surface); }
2920
+ .vos-pipe-rec-head { display: flex; gap: 8px; align-items: baseline; margin-bottom: 8px; }
2921
+ .vos-pipe-rec-type { font-size: 9px; padding: 1px 6px; border-radius: 4px; background: var(--vos-accent-weak); color: var(--vos-accent-text); }
2922
+ .vos-pipe-rec-title { flex: 1; font-size: 13px; color: var(--vos-text); font-weight: 500; }
2923
+ .vos-pipe-rec-chips { display: flex; gap: 6px; margin-bottom: 8px; flex-wrap: wrap; }
2924
+ .vos-pipe-rec-chip { font-size: 9px; padding: 2px 8px; border-radius: 4px; background: var(--vos-surface-2); border: 1px solid var(--vos-border); color: var(--vos-text); cursor: pointer; }
2925
+ .vos-pipe-rec-chip:hover { border-color: var(--vos-accent); }
2926
+ .vos-pipe-rec-rationale { font-size: 11px; color: var(--vos-muted); line-height: 1.5; margin-bottom: 6px; }
2927
+ .vos-pipe-rec-bar { font-size: 10px; color: var(--vos-muted); padding: 4px 8px; background: var(--vos-surface-2); border-radius: 4px; border-left: 3px solid var(--vos-good); }
2928
+ .vos-pipe-rec-bar strong { color: var(--vos-good); }
2929
+
2930
+ /* Breadcrumb */
2931
+ .vos-crumb { display: flex; gap: 6px; font-size: 11px; margin-bottom: 12px; color: var(--vos-muted); }
2932
+ .vos-crumb-item { display: flex; gap: 6px; align-items: center; }
2933
+ .vos-crumb-sep { color: var(--vos-border); }
2934
+ .vos-crumb-link { background: none; border: none; cursor: pointer; color: var(--vos-muted); padding: 0; font: inherit; }
2935
+ .vos-crumb-link:hover { color: var(--vos-accent); }
2936
+ .vos-crumb-current { color: var(--vos-text); font-weight: 600; }
2937
+
2938
+ /* List surfaces (experiments / readings) */
2939
+ .vos-list-card { display: flex; flex-direction: column; gap: 4px; padding: 8px; }
2940
+ .vos-list-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--vos-surface-2); border: 1px solid var(--vos-border); border-radius: 6px; cursor: pointer; text-align: left; width: 100%; color: var(--vos-text); font: inherit; }
2941
+ .vos-list-row:hover { border-color: var(--vos-accent); }
2942
+ .vos-list-row-date { font-size: 9px; color: var(--vos-muted); min-width: 80px; }
2943
+ .vos-list-row-title { flex: 1; font-size: 12px; font-weight: 500; }
2944
+ .vos-list-row-meta { font-size: 10px; color: var(--vos-muted); }
2945
+
2946
+ /* Detail head (id + tags) */
2947
+ .vos-detail-head { display: flex; gap: 8px; align-items: baseline; margin-bottom: 8px; }
2948
+ .vos-detail-id { font-size: 11px; color: var(--vos-muted); }
2949
+ .vos-detail-tag { font-size: 9px; color: var(--vos-muted); padding: 1px 6px; border: 1px solid var(--vos-border); border-radius: 4px; }
2950
+ .vos-detail-title { font-size: 16px; color: var(--vos-text); font-weight: 600; margin-bottom: 16px; }
2951
+
2952
+ /* Next-move panel (accent-bordered, prominent) */
2953
+ .vos-next-move { padding: 14px; margin-bottom: 16px; border-left: 3px solid var(--vos-accent); }
2954
+ .vos-next-move-label { font-size: 10px; color: var(--vos-muted); text-transform: uppercase; letter-spacing: 0.4px; margin-bottom: 4px; }
2955
+ .vos-next-move-text { font-size: 14px; color: var(--vos-accent-text); font-weight: 500; }
2956
+
2957
+ /* Score cards (4 in a row) */
2958
+ .vos-score-cards { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
2959
+ .vos-score-card { flex: 1; min-width: 100px; padding: 12px; text-align: center; background: var(--vos-surface); border: 1px solid var(--vos-border); border-radius: 10px; }
2960
+ .vos-score-value { font-size: 22px; font-weight: 700; color: var(--vos-text); }
2961
+ .vos-score-label { font-size: 10px; color: var(--vos-muted); }
2962
+
2963
+ /* Detail sections */
2964
+ .vos-detail-section { padding: 14px; margin-bottom: 16px; }
2965
+ .vos-detail-section-label { font-size: 11px; color: var(--vos-muted); text-transform: uppercase; letter-spacing: 0.4px; margin-bottom: 8px; }
2966
+
2967
+ /* Evidence composition (per-rung bars) */
2968
+ .vos-comp-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
2969
+ .vos-comp-rung { width: 90px; font-size: 10px; color: var(--vos-text); }
2970
+ .vos-comp-rung.is-empty { color: var(--vos-muted); }
2971
+ .vos-comp-bar { flex: 1; height: 10px; background: var(--vos-surface-2); border-radius: 5px; overflow: hidden; }
2972
+ .vos-comp-fill { display: block; height: 100%; background: var(--vos-accent); border-radius: 5px; }
2973
+ .vos-comp-val { width: 60px; text-align: right; font-size: 10px; color: var(--vos-muted); }
2974
+ .vos-comp-count { width: 40px; font-size: 9px; color: var(--vos-muted); }
2975
+
2976
+ /* Relations */
2977
+ .vos-rel-group { margin-bottom: 10px; }
2978
+ .vos-rel-kind { font-size: 10px; font-weight: 600; margin-bottom: 4px; }
2979
+ .vos-rel-kind-depends { color: var(--vos-accent-text); }
2980
+ .vos-rel-kind-enables { color: var(--vos-good); }
2981
+ .vos-rel-kind-contradicts { color: var(--vos-crit); }
2982
+ .vos-rel-type { margin-bottom: 4px; }
2983
+ .vos-rel-type-label { font-size: 9px; color: var(--vos-muted); margin-bottom: 2px; }
2984
+ .vos-rel-row { display: flex; gap: 6px; align-items: center; text-align: left; background: var(--vos-surface-2); border: 1px solid var(--vos-border); border-radius: 4px; padding: 4px 8px; cursor: pointer; width: 100%; margin-bottom: 2px; font-size: 11px; color: var(--vos-text); }
2985
+ .vos-rel-row:disabled { cursor: default; }
2986
+ .vos-rel-row:not(:disabled):hover { border-color: var(--vos-accent); }
2987
+ .vos-rel-id { font-size: 9px; color: var(--vos-muted); }
2988
+ .vos-rel-title { flex: 1; }
2989
+ .vos-rel-tag { font-size: 8px; color: var(--vos-muted); padding: 1px 4px; border: 1px solid var(--vos-border); border-radius: 3px; }
2990
+
2991
+ /* Linked rows (experiments + readings on assumption detail) */
2992
+ .vos-linked-row { display: flex; gap: 8px; align-items: center; text-align: left; background: var(--vos-surface-2); border: 1px solid var(--vos-border); border-radius: 6px; padding: 10px; cursor: pointer; width: 100%; margin-bottom: 6px; font: inherit; color: var(--vos-text); }
2993
+ .vos-linked-row:hover { border-color: var(--vos-accent); }
2994
+ .vos-linked-gauge { font-size: 16px; font-weight: 700; min-width: 32px; text-align: center; }
2995
+ .vos-linked-title { flex: 1; font-size: 12px; }
2996
+ .vos-linked-bar { font-size: 9px; color: var(--vos-muted); }
2997
+ .vos-linked-bar strong { color: var(--vos-good); }
2998
+
2999
+ /* Reading head + excerpt */
3000
+ .vos-reading-head { display: flex; gap: 8px; align-items: baseline; margin-bottom: 4px; }
3001
+ .vos-reading-date { font-size: 9px; color: var(--vos-muted); }
3002
+ .vos-reading-title { flex: 1; font-size: 12px; font-weight: 500; }
3003
+ .vos-reading-source { font-size: 9px; color: var(--vos-muted); }
3004
+ .vos-reading-excerpt { padding: 4px 8px; border-left: 3px solid var(--vos-border); background: var(--vos-surface); border-radius: 0 4px 4px 0; font-style: italic; font-size: 11px; color: var(--vos-text); margin: 4px 0; }
3005
+ .vos-verdict-border-good { border-left-color: var(--vos-good); }
3006
+ .vos-verdict-border-crit { border-left-color: var(--vos-crit); }
3007
+ .vos-verdict-border-neutral { border-left-color: var(--vos-border); }
3008
+ .vos-rung-tag { font-size: 8px; color: var(--vos-muted); padding: 1px 5px; background: var(--vos-surface-2); border-radius: 3px; }
3009
+ .vos-link { color: var(--vos-accent-text); cursor: pointer; background: none; border: none; font: inherit; padding: 0; }
3010
+
3011
+ /* Experiment detail: confidence gauge + coverage */
3012
+ .vos-exp-head { display: flex; gap: 16px; margin-bottom: 16px; padding: 12px; }
3013
+ .vos-exp-gauge { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 100px; }
3014
+ .vos-gauge-num { font-size: 32px; font-weight: 700; color: var(--vos-text); }
3015
+ .vos-gauge-label { font-size: 9px; color: var(--vos-muted); text-align: center; }
3016
+ .vos-exp-coverage { flex: 1; }
3017
+ .vos-coverage-label { font-size: 11px; color: var(--vos-muted); margin-bottom: 6px; }
3018
+ .vos-coverage-bar { height: 10px; background: var(--vos-surface-2); border-radius: 5px; overflow: hidden; display: flex; }
3019
+ .vos-coverage-good { background: var(--vos-good); height: 100%; }
3020
+ .vos-coverage-crit { background: var(--vos-crit); height: 100%; }
3021
+ .vos-coverage-warn { background: var(--vos-warn); height: 100%; opacity: 0.5; }
3022
+ .vos-coverage-empty { background: var(--vos-surface); height: 100%; }
3023
+ .vos-coverage-legend { display: flex; gap: 10px; font-size: 9px; color: var(--vos-muted); margin-top: 4px; }
3024
+ .vos-dot-good, .vos-dot-crit, .vos-dot-warn, .vos-dot-empty { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; }
3025
+ .vos-dot-good { background: var(--vos-good); }
3026
+ .vos-dot-crit { background: var(--vos-crit); }
3027
+ .vos-dot-warn { background: var(--vos-warn); }
3028
+ .vos-dot-empty { background: var(--vos-surface-2); border: 1px solid var(--vos-border); }
3029
+
3030
+ /* Reading card (in experiment detail) */
3031
+ .vos-reading-card { padding: 12px; margin-bottom: 8px; background: var(--vos-surface-2); border-radius: 8px; border: 1px solid var(--vos-border); }
3032
+ .vos-reading-quotes { margin: 4px 0; display: flex; flex-direction: column; gap: 4px; }
3033
+ .vos-reading-quote { padding: 4px 8px; border-left: 3px solid var(--vos-border); background: var(--vos-surface); border-radius: 0 4px 4px 0; font-style: italic; font-size: 11px; color: var(--vos-text); }
3034
+ .vos-reading-quote-id { font-style: normal; font-size: 9px; color: var(--vos-muted); }
3035
+ .vos-reading-beliefs-label { font-size: 10px; color: var(--vos-muted); margin-bottom: 4px; }
3036
+
3037
+ /* Belief card (per-belief verdict) */
3038
+ .vos-belief-card { padding: 8px; margin-bottom: 4px; background: var(--vos-surface); border-radius: 6px; border: 1px solid var(--vos-border); }
3039
+ .vos-belief-head { display: flex; gap: 6px; align-items: baseline; margin-bottom: 4px; }
3040
+ .vos-belief-id { background: none; border: none; cursor: pointer; font-size: 10px; color: var(--vos-accent-text); padding: 0; font-family: var(--vos-mono); }
3041
+ .vos-belief-id:hover { text-decoration: underline; }
3042
+ .vos-belief-title { flex: 1; font-size: 11px; color: var(--vos-text); }
3043
+ .vos-belief-bar { font-size: 9px; color: var(--vos-muted); margin-top: 4px; padding-left: 8px; border-left: 2px solid var(--vos-border); }
3044
+ .vos-belief-bar-label { font-size: 8px; color: var(--vos-muted); text-transform: uppercase; letter-spacing: 0.3px; margin-bottom: 2px; }
3045
+ .vos-belief-bar strong { color: var(--vos-good); }
3046
+ .vos-belief-why { font-size: 10px; color: var(--vos-muted); margin-top: 4px; }
3047
+ .vos-belief-excerpt { padding: 6px 10px; border-left: 3px solid var(--vos-border); background: var(--vos-surface); border-radius: 0 4px 4px 0; margin: 4px 0 6px; font-style: italic; font-size: 12px; color: var(--vos-text); }
3048
+
3049
+ /* Unstarted bars section */
3050
+ .vos-unstarted { border-style: dashed; }
3051
+ .vos-unstarted-bar { padding: 8px; margin-bottom: 4px; background: var(--vos-surface-2); border-radius: 6px; border: 1px dashed var(--vos-border); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@validation-os/dashboard",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "description": "React dashboard components + hooks for validation-os, consuming the DataProvider seam.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,7 +22,7 @@
22
22
  "access": "public"
23
23
  },
24
24
  "dependencies": {
25
- "@validation-os/core": "0.14.1"
25
+ "@validation-os/core": "0.15.0"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": ">=18",