@validation-os/dashboard 0.6.2 → 0.7.1

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
@@ -2047,3 +2047,321 @@ textarea.vos-input {
2047
2047
  border-color: var(--vos-accent);
2048
2048
  color: var(--vos-accent-text);
2049
2049
  }
2050
+ /* ── Per-belief journey: the rail + story (OPS-1330) ─────────────────────── */
2051
+ .vos-jny {
2052
+ padding: 16px 18px;
2053
+ margin-bottom: 16px;
2054
+ }
2055
+ .vos-jny-head {
2056
+ display: flex;
2057
+ align-items: flex-start;
2058
+ gap: 12px;
2059
+ margin-bottom: 14px;
2060
+ }
2061
+ .vos-jny-head > div:first-child {
2062
+ flex: 1;
2063
+ min-width: 0;
2064
+ }
2065
+ .vos-jny-eyebrow {
2066
+ font-size: 11px;
2067
+ letter-spacing: 0.08em;
2068
+ text-transform: uppercase;
2069
+ color: var(--vos-muted);
2070
+ }
2071
+ .vos-jny-at {
2072
+ margin: 2px 0 0;
2073
+ font-size: 14px;
2074
+ color: var(--vos-text);
2075
+ }
2076
+
2077
+ /* The resting rail — read-only status, no step-in. */
2078
+ .vos-jny-rail {
2079
+ display: flex;
2080
+ align-items: flex-start;
2081
+ gap: 6px;
2082
+ }
2083
+ .vos-jny-arrow {
2084
+ color: var(--vos-border-strong);
2085
+ font-size: 12px;
2086
+ padding-top: 22px;
2087
+ }
2088
+ .vos-jny-stop {
2089
+ flex: 1;
2090
+ min-width: 0;
2091
+ opacity: 0.55;
2092
+ }
2093
+ .vos-jny-stop-at,
2094
+ .vos-jny-stop-done {
2095
+ opacity: 1;
2096
+ }
2097
+ .vos-jny-stopname {
2098
+ display: flex;
2099
+ align-items: center;
2100
+ gap: 5px;
2101
+ font-size: 12px;
2102
+ font-weight: 600;
2103
+ color: var(--vos-text);
2104
+ margin-bottom: 5px;
2105
+ }
2106
+ .vos-jny-stopn {
2107
+ display: inline-flex;
2108
+ align-items: center;
2109
+ justify-content: center;
2110
+ width: 15px;
2111
+ height: 15px;
2112
+ border-radius: 50%;
2113
+ background: var(--vos-surface-2);
2114
+ color: var(--vos-muted);
2115
+ font-size: 9px;
2116
+ }
2117
+ .vos-jny-stop-at .vos-jny-stopn {
2118
+ background: var(--vos-accent);
2119
+ color: var(--vos-on-accent, #fff);
2120
+ }
2121
+ .vos-jny-stop-done .vos-jny-stopn {
2122
+ background: var(--vos-good);
2123
+ color: var(--vos-on-accent, #fff);
2124
+ }
2125
+ .vos-jny-track {
2126
+ height: 18px;
2127
+ border-radius: 4px;
2128
+ background: var(--vos-surface-2);
2129
+ position: relative;
2130
+ overflow: hidden;
2131
+ }
2132
+ .vos-jny-track i {
2133
+ position: absolute;
2134
+ top: 0;
2135
+ bottom: 0;
2136
+ left: 0;
2137
+ border-radius: 4px;
2138
+ }
2139
+ .vos-jny-fill {
2140
+ background: var(--vos-accent);
2141
+ }
2142
+ .vos-jny-known {
2143
+ background: linear-gradient(
2144
+ 90deg,
2145
+ var(--vos-crit-weak),
2146
+ var(--vos-surface-2) 50%,
2147
+ var(--vos-good-weak)
2148
+ );
2149
+ }
2150
+ .vos-jny-mid {
2151
+ position: absolute;
2152
+ left: 50%;
2153
+ top: 2px;
2154
+ bottom: 2px;
2155
+ width: 1px;
2156
+ background: var(--vos-border-strong);
2157
+ }
2158
+ .vos-jny-pos {
2159
+ left: 50%;
2160
+ background: var(--vos-good);
2161
+ border-radius: 0 4px 4px 0;
2162
+ }
2163
+ .vos-jny-neg {
2164
+ right: 50%;
2165
+ left: auto !important;
2166
+ background: var(--vos-crit);
2167
+ border-radius: 4px 0 0 4px;
2168
+ }
2169
+ .vos-jny-cap {
2170
+ margin-top: 4px;
2171
+ font-size: 11px;
2172
+ color: var(--vos-text-2);
2173
+ }
2174
+ .vos-jny-flag {
2175
+ color: var(--vos-crit);
2176
+ font-weight: 600;
2177
+ }
2178
+ .vos-jny-why {
2179
+ margin-top: 12px;
2180
+ }
2181
+
2182
+ /* The story — the dated event log the rail expands into. */
2183
+ .vos-jny-story {
2184
+ margin-top: 12px;
2185
+ }
2186
+ .vos-jny-events {
2187
+ list-style: none;
2188
+ margin: 0;
2189
+ padding: 0;
2190
+ }
2191
+ .vos-jny-ev {
2192
+ display: flex;
2193
+ align-items: center;
2194
+ gap: 9px;
2195
+ padding: 6px 0;
2196
+ border-bottom: 1px solid var(--vos-border);
2197
+ font-size: 13px;
2198
+ }
2199
+ .vos-jny-ev:last-child {
2200
+ border-bottom: 0;
2201
+ }
2202
+ .vos-jny-ev-now {
2203
+ font-weight: 600;
2204
+ }
2205
+ .vos-jny-dot {
2206
+ width: 8px;
2207
+ height: 8px;
2208
+ border-radius: 50%;
2209
+ flex: none;
2210
+ }
2211
+ .vos-jny-dot-good {
2212
+ background: var(--vos-good);
2213
+ }
2214
+ .vos-jny-dot-warn {
2215
+ background: var(--vos-warn);
2216
+ }
2217
+ .vos-jny-dot-crit {
2218
+ background: var(--vos-crit);
2219
+ }
2220
+ .vos-jny-dot-accent {
2221
+ background: var(--vos-accent);
2222
+ }
2223
+ .vos-jny-dot-neutral {
2224
+ background: var(--vos-border-strong);
2225
+ }
2226
+ .vos-jny-date {
2227
+ font-variant-numeric: tabular-nums;
2228
+ color: var(--vos-muted);
2229
+ font-size: 12px;
2230
+ flex: none;
2231
+ min-width: 84px;
2232
+ }
2233
+ .vos-jny-label {
2234
+ flex: 1;
2235
+ min-width: 0;
2236
+ color: var(--vos-text);
2237
+ }
2238
+ .vos-jny-conf {
2239
+ flex: none;
2240
+ }
2241
+ .vos-jny-act {
2242
+ flex: none;
2243
+ }
2244
+
2245
+ /* The card the story ends in — the ranked next move for this belief. */
2246
+ .vos-jny-card {
2247
+ margin-top: 14px;
2248
+ padding: 12px 14px;
2249
+ border: 1px solid var(--vos-border);
2250
+ border-radius: 8px;
2251
+ background: var(--vos-surface-2);
2252
+ display: flex;
2253
+ flex-direction: column;
2254
+ align-items: flex-start;
2255
+ gap: 8px;
2256
+ }
2257
+ .vos-jny-card-kill {
2258
+ border-color: var(--vos-crit);
2259
+ }
2260
+ .vos-jny-card-done {
2261
+ opacity: 0.85;
2262
+ }
2263
+ .vos-jny-card-eyebrow {
2264
+ font-size: 11px;
2265
+ letter-spacing: 0.08em;
2266
+ text-transform: uppercase;
2267
+ color: var(--vos-muted);
2268
+ }
2269
+ .vos-jny-card-kill .vos-jny-card-eyebrow {
2270
+ color: var(--vos-crit);
2271
+ }
2272
+ .vos-jny-card-reason {
2273
+ margin: 0;
2274
+ font-size: 13px;
2275
+ color: var(--vos-text);
2276
+ }
2277
+
2278
+ /* ── Cross-surface cold start (OPS-1331) ────────────────────────────────── */
2279
+ /* The shared first-run onboarding line — one tone across the two top-level
2280
+ * surfaces (next + pipeline). Neutral text on a faint accent wash, so it
2281
+ * reads as an invitation, not a status. */
2282
+ .vos-firstrun {
2283
+ text-align: center;
2284
+ font-size: 13px;
2285
+ color: var(--vos-accent-text);
2286
+ background: var(--vos-accent-weak);
2287
+ border: 1px solid var(--vos-accent);
2288
+ border-radius: var(--vos-radius);
2289
+ padding: 10px 16px;
2290
+ margin-bottom: 16px;
2291
+ }
2292
+
2293
+ /* The cold-start surfaces share a neutral, centred treatment — no tone (these
2294
+ * are invitations, not status), no dashed border (that reads "broken"). */
2295
+ .vos-cold {
2296
+ text-align: center;
2297
+ }
2298
+
2299
+ /* ── Front-door cold hero (replaces the empty ranked list) ──────────────── */
2300
+ .vos-cold-next {
2301
+ display: flex;
2302
+ flex-direction: column;
2303
+ align-items: center;
2304
+ gap: 14px;
2305
+ padding: 34px 28px;
2306
+ }
2307
+ .vos-cold-eyebrow {
2308
+ font-size: 11px;
2309
+ text-transform: uppercase;
2310
+ letter-spacing: 0.08em;
2311
+ color: var(--vos-faint);
2312
+ font-weight: 700;
2313
+ }
2314
+ .vos-cold-headline {
2315
+ margin: 0;
2316
+ font-size: 22px;
2317
+ font-weight: 700;
2318
+ line-height: 1.3;
2319
+ letter-spacing: -0.01em;
2320
+ color: var(--vos-text);
2321
+ max-width: 30ch;
2322
+ }
2323
+ .vos-cold-body {
2324
+ margin: 0;
2325
+ font-size: 14px;
2326
+ line-height: 1.6;
2327
+ color: var(--vos-muted);
2328
+ max-width: 52ch;
2329
+ }
2330
+
2331
+ /* ── Pipeline cold board ────────────────────────────────────────────────── */
2332
+ .vos-cold-pipe-hero .vos-pipe-big {
2333
+ color: var(--vos-muted);
2334
+ }
2335
+ .vos-cold-pipe-board {
2336
+ padding-bottom: 24px;
2337
+ }
2338
+ .vos-cold-pipe-body {
2339
+ display: flex;
2340
+ flex-direction: column;
2341
+ align-items: center;
2342
+ gap: 14px;
2343
+ padding: 28px 20px;
2344
+ }
2345
+ .vos-cold-pipe-body p {
2346
+ margin: 0;
2347
+ font-size: 14px;
2348
+ line-height: 1.6;
2349
+ color: var(--vos-muted);
2350
+ max-width: 50ch;
2351
+ }
2352
+
2353
+ /* ── Journey no-history cold state ──────────────────────────────────────── */
2354
+ .vos-jny-cold {
2355
+ margin-bottom: 14px;
2356
+ padding: 12px 14px;
2357
+ border: 1px solid var(--vos-border);
2358
+ border-radius: 8px;
2359
+ background: var(--vos-accent-weak);
2360
+ display: flex;
2361
+ flex-direction: column;
2362
+ align-items: flex-start;
2363
+ gap: 6px;
2364
+ }
2365
+ .vos-jny-cold .vos-jny-card-eyebrow {
2366
+ color: var(--vos-accent-text);
2367
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@validation-os/dashboard",
3
- "version": "0.6.2",
3
+ "version": "0.7.1",
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.6.2"
25
+ "@validation-os/core": "0.7.1"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": ">=18",