@dumiflex/wp-kit 0.4.0 → 0.6.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/CHANGELOG.md +47 -0
- package/README.md +5 -0
- package/package.json +4 -3
- package/src/Avatar.vue +1 -1
- package/src/Banner.vue +4 -4
- package/src/Button.vue +73 -44
- package/src/Checkbox.vue +201 -63
- package/src/Chip.vue +5 -2
- package/src/CodeBlock.vue +33 -6
- package/src/ColorField.vue +60 -6
- package/src/Combobox.vue +10 -14
- package/src/ConfirmModal.vue +12 -22
- package/src/ContextMenu.vue +11 -30
- package/src/CopyButton.vue +1 -1
- package/src/DataTable.vue +3 -4
- package/src/DatePicker.vue +1 -1
- package/src/Disclosure.vue +2 -1
- package/src/Drawer.vue +2 -2
- package/src/DropZone.vue +2 -2
- package/src/HsvPicker.vue +2 -2
- package/src/IconPicker.vue +1 -1
- package/src/ImageGrid.vue +17 -15
- package/src/Lightbox.vue +6 -3
- package/src/LoadingMark.vue +93 -51
- package/src/Modal.vue +109 -44
- package/src/ModalShell.vue +26 -5
- package/src/Pagination.vue +4 -4
- package/src/Popover.vue +68 -12
- package/src/RadioGroup.vue +5 -4
- package/src/SearchInput.vue +1 -1
- package/src/Select.vue +53 -158
- package/src/Skeleton.vue +21 -5
- package/src/Slider.vue +166 -55
- package/src/SortableList.vue +1 -1
- package/src/TagInput.vue +1 -1
- package/src/Timeline.vue +2 -2
- package/src/WorkingLine.vue +320 -0
- package/src/WpIconButton.vue +3 -2
- package/src/WpImageZoom.vue +7 -7
- package/src/WpSegmented.vue +3 -1
- package/src/WpSwitch.vue +1 -1
- package/src/WpTabs.vue +1 -1
- package/src/_modal-motion.css +1 -1
- package/src/button.css +8 -6
- package/src/floating.ts +5 -0
- package/src/highlight.ts +199 -0
- package/src/hsv.ts +1 -1
- package/src/loading-mark-motion.ts +249 -0
- package/src/menu.css +51 -0
- package/src/motion.css +73 -0
- package/src/slider-math.ts +45 -1
- package/src/theme/looks.css +6 -19
- package/src/theme/tokens.css +12 -1108
- package/src/tokens.ts +8 -3
- package/src/tooltip.css +8 -5
- package/src/useDialogFocus.ts +11 -2
- package/src/CloseButton.vue +0 -69
- package/src/ColorPicker.vue +0 -201
- package/src/ConfirmDialog.vue +0 -165
- package/src/RangeSlider.vue +0 -183
- package/src/Toggle.vue +0 -36
- package/src/WpButton.vue +0 -75
- package/src/WpCheck.vue +0 -104
- package/src/_skeleton.css +0 -50
package/src/theme/tokens.css
CHANGED
|
@@ -548,17 +548,7 @@ input, textarea, select { font: inherit; }
|
|
|
548
548
|
/* Active-row gradient strip lives in AppSidebar.vue scoped CSS (presence selector). */
|
|
549
549
|
.wp-nav__icon { width: 16px; flex: 0 0 16px; display: grid; place-items: center; color: inherit; }
|
|
550
550
|
.wp-nav__label { flex: 1; white-space: nowrap; }
|
|
551
|
-
|
|
552
|
-
font-size: 9.5px;
|
|
553
|
-
letter-spacing: 0.04em;
|
|
554
|
-
text-transform: uppercase;
|
|
555
|
-
padding: 1.5px 6px;
|
|
556
|
-
border-radius: var(--wp-radius-cap, 999px);
|
|
557
|
-
background: var(--wp-bg-3);
|
|
558
|
-
color: var(--wp-text-dim);
|
|
559
|
-
border: 1px solid var(--wp-border);
|
|
560
|
-
font-weight: 600;
|
|
561
|
-
}
|
|
551
|
+
|
|
562
552
|
.wp-nav__ext { color: var(--wp-text-dim); width: 12px; }
|
|
563
553
|
|
|
564
554
|
/* ---------- Content area ---------- */
|
|
@@ -827,7 +817,7 @@ input, textarea, select { font: inherit; }
|
|
|
827
817
|
user-select: none;
|
|
828
818
|
}
|
|
829
819
|
.wp-input-group__icon { padding-left: 10px; }
|
|
830
|
-
.wp-input-group__icon .pi { font-size:
|
|
820
|
+
.wp-input-group__icon .pi { font-size: 14px; line-height: 1; }
|
|
831
821
|
.wp-input-group__affix { font-family: var(--wp-font-mono); font-size: 12.5px; }
|
|
832
822
|
.wp-input-group__affix--prefix { padding-left: 10px; }
|
|
833
823
|
.wp-input-group__affix--suffix { padding-right: 10px; }
|
|
@@ -903,7 +893,6 @@ input, textarea, select { font: inherit; }
|
|
|
903
893
|
.wp-chip__close:hover { opacity: 1; background: none; }
|
|
904
894
|
.wp-chip__close:focus-visible { outline: 2px solid var(--wp-accent-500); outline-offset: 1px; border-radius: min(2px, var(--wp-radius-cap, 999px)); opacity: 1; }
|
|
905
895
|
|
|
906
|
-
|
|
907
896
|
/* ---------- DataTable ---------- */
|
|
908
897
|
.wp-table-wrap {
|
|
909
898
|
background: var(--wp-bg-1);
|
|
@@ -995,27 +984,6 @@ input, textarea, select { font: inherit; }
|
|
|
995
984
|
|
|
996
985
|
.wp-row-skel:hover td { background: transparent; }
|
|
997
986
|
.wp-row-skel td { vertical-align: middle; }
|
|
998
|
-
.wp-skel-bar {
|
|
999
|
-
display: block;
|
|
1000
|
-
height: 10px;
|
|
1001
|
-
border-radius: min(5px, var(--wp-radius-cap, 999px));
|
|
1002
|
-
background: linear-gradient(
|
|
1003
|
-
90deg,
|
|
1004
|
-
var(--wp-bg-3) 0%,
|
|
1005
|
-
var(--wp-bg-4) 50%,
|
|
1006
|
-
var(--wp-bg-3) 100%
|
|
1007
|
-
);
|
|
1008
|
-
background-size: 200% 100%;
|
|
1009
|
-
animation: wp-skel-pulse 1.4s ease-in-out infinite;
|
|
1010
|
-
opacity: 0.55;
|
|
1011
|
-
}
|
|
1012
|
-
@keyframes wp-skel-pulse {
|
|
1013
|
-
0% { background-position: 100% 50%; }
|
|
1014
|
-
100% { background-position: -100% 50%; }
|
|
1015
|
-
}
|
|
1016
|
-
@media (prefers-reduced-motion: reduce) {
|
|
1017
|
-
.wp-skel-bar { animation: none; }
|
|
1018
|
-
}
|
|
1019
987
|
.wp-table .wp-row-expand {
|
|
1020
988
|
background: var(--wp-bg-2);
|
|
1021
989
|
padding: 12px 16px 14px 56px;
|
|
@@ -1031,25 +999,9 @@ input, textarea, select { font: inherit; }
|
|
|
1031
999
|
}
|
|
1032
1000
|
|
|
1033
1001
|
/* ---------- List-row chrome (used by all 6 list screens) ---------- */
|
|
1034
|
-
|
|
1035
|
-
font-size: 10px;
|
|
1036
|
-
padding: 2px 8px;
|
|
1037
|
-
background: var(--wp-bg-3);
|
|
1038
|
-
color: var(--wp-text-muted);
|
|
1039
|
-
border-radius: var(--wp-radius-cap, 999px);
|
|
1040
|
-
letter-spacing: 0.02em;
|
|
1041
|
-
transition: background-color 0.12s ease, border-color 0.12s ease, color 0.12s ease;
|
|
1042
|
-
}
|
|
1043
|
-
.wp-tag-chip:hover { background: var(--wp-bg-4); color: var(--wp-text); }
|
|
1002
|
+
|
|
1044
1003
|
/* Active state defined globally so scoped view files can use color-mix and this
|
|
1045
1004
|
serves as the rgba fallback when color-mix is unsupported (old Chromium). */
|
|
1046
|
-
.wp-tag-chip[data-active="true"] {
|
|
1047
|
-
background: rgba(99, 102, 241, 0.22);
|
|
1048
|
-
background: color-mix(in oklab, var(--wp-accent-500) 22%, transparent);
|
|
1049
|
-
border-color: rgba(99, 102, 241, 0.45);
|
|
1050
|
-
border-color: color-mix(in oklab, var(--wp-accent-500) 45%, transparent);
|
|
1051
|
-
color: var(--wp-accent-text);
|
|
1052
|
-
}
|
|
1053
1005
|
|
|
1054
1006
|
.wp-id {
|
|
1055
1007
|
font-family: var(--wp-font-mono);
|
|
@@ -1060,11 +1012,6 @@ input, textarea, select { font: inherit; }
|
|
|
1060
1012
|
}
|
|
1061
1013
|
.wp-id:hover { color: var(--wp-text-muted); }
|
|
1062
1014
|
|
|
1063
|
-
.wp-fav-toggle {
|
|
1064
|
-
display: flex; align-items: center; gap: 8px;
|
|
1065
|
-
font-size: 13px; color: var(--wp-text); cursor: pointer;
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
1015
|
.wp-row-name {
|
|
1069
1016
|
display: flex; flex-direction: column; gap: 1px;
|
|
1070
1017
|
}
|
|
@@ -1147,40 +1094,6 @@ input, textarea, select { font: inherit; }
|
|
|
1147
1094
|
border-color: color-mix(in oklab, var(--wp-kind-derivation) 32%, transparent);
|
|
1148
1095
|
}
|
|
1149
1096
|
|
|
1150
|
-
/* Syntax-color tint for filter-panel toggle chips. Lets the
|
|
1151
|
-
* Wildcards filter pills (Uses nested refs / Has inline / Referenced
|
|
1152
|
-
* by others) match the colored pills in the body's Syntax column —
|
|
1153
|
-
* users learn one color set for both surfaces. Same hue tokens as
|
|
1154
|
-
* `.wp-syntax-pill--*` above; tint depth tuned for the chip shape
|
|
1155
|
-
* (border-only at rest, full fill when active). */
|
|
1156
|
-
.wp-chip--toggle.wp-chip--syntax-ref {
|
|
1157
|
-
border-color: color-mix(in oklab, var(--wp-kind-ref) 35%, transparent);
|
|
1158
|
-
color: var(--wp-kind-ref);
|
|
1159
|
-
}
|
|
1160
|
-
.wp-chip--toggle.wp-chip--syntax-ref[data-active] {
|
|
1161
|
-
background: color-mix(in oklab, var(--wp-kind-ref) 22%, transparent);
|
|
1162
|
-
border-color: color-mix(in oklab, var(--wp-kind-ref) 45%, transparent);
|
|
1163
|
-
color: var(--wp-kind-ref);
|
|
1164
|
-
}
|
|
1165
|
-
.wp-chip--toggle.wp-chip--syntax-in {
|
|
1166
|
-
border-color: color-mix(in oklab, var(--wp-accent-500) 35%, transparent);
|
|
1167
|
-
color: var(--wp-accent-text);
|
|
1168
|
-
}
|
|
1169
|
-
.wp-chip--toggle.wp-chip--syntax-in[data-active] {
|
|
1170
|
-
background: color-mix(in oklab, var(--wp-accent-500) 22%, transparent);
|
|
1171
|
-
border-color: color-mix(in oklab, var(--wp-accent-500) 45%, transparent);
|
|
1172
|
-
color: var(--wp-accent-text);
|
|
1173
|
-
}
|
|
1174
|
-
.wp-chip--toggle.wp-chip--syntax-dp {
|
|
1175
|
-
border-color: color-mix(in oklab, var(--wp-kind-derivation) 35%, transparent);
|
|
1176
|
-
color: var(--wp-kind-derivation);
|
|
1177
|
-
}
|
|
1178
|
-
.wp-chip--toggle.wp-chip--syntax-dp[data-active] {
|
|
1179
|
-
background: color-mix(in oklab, var(--wp-kind-derivation) 22%, transparent);
|
|
1180
|
-
border-color: color-mix(in oklab, var(--wp-kind-derivation) 45%, transparent);
|
|
1181
|
-
color: var(--wp-kind-derivation);
|
|
1182
|
-
}
|
|
1183
|
-
|
|
1184
1097
|
/* Light-mode pill overrides — token cascade handles color; adjust tint depth for near-white surface */
|
|
1185
1098
|
.wp-theme-light .wp-syntax-pill--ref {
|
|
1186
1099
|
/* --wp-kind-ref → fuchsia-800 (#86198f) in light; --wp-kind-ref-bg → 13% tint */
|
|
@@ -1200,9 +1113,7 @@ input, textarea, select { font: inherit; }
|
|
|
1200
1113
|
border-color: color-mix(in oklab, var(--wp-kind-derivation) 45%, transparent);
|
|
1201
1114
|
}
|
|
1202
1115
|
|
|
1203
|
-
/* ── Light-mode overrides:
|
|
1204
|
-
/* Danger button hover: white text fails on light tint; swap to dark-red label */
|
|
1205
|
-
|
|
1116
|
+
/* ── Light-mode overrides: chips ── */
|
|
1206
1117
|
/* Tone chips: swap light text for dark text, slightly stronger tint.
|
|
1207
1118
|
* Colors route through status tokens which flip to -700/-800 shades in light mode. */
|
|
1208
1119
|
.wp-theme-light .wp-chip--accent {
|
|
@@ -1214,69 +1125,6 @@ input, textarea, select { font: inherit; }
|
|
|
1214
1125
|
.wp-theme-light .wp-chip--warn { color: var(--wp-warn); background: color-mix(in oklab, var(--wp-warn) 14%, transparent); border-color: color-mix(in oklab, var(--wp-warn) 42%, transparent); }
|
|
1215
1126
|
.wp-theme-light .wp-chip--danger { color: var(--wp-danger); background: color-mix(in oklab, var(--wp-danger) 14%, transparent); border-color: color-mix(in oklab, var(--wp-danger) 42%, transparent); }
|
|
1216
1127
|
.wp-theme-light .wp-chip--info { color: var(--wp-info); background: color-mix(in oklab, var(--wp-info) 14%, transparent); border-color: color-mix(in oklab, var(--wp-info) 42%, transparent); }
|
|
1217
|
-
/* Tag chip active: color auto-adapts (--wp-accent-text → dark purple in light mode) */
|
|
1218
|
-
.wp-theme-light .wp-tag-chip[data-active="true"] {
|
|
1219
|
-
background: rgba(99, 102, 241, 0.16);
|
|
1220
|
-
border-color: rgba(99, 102, 241, 0.42);
|
|
1221
|
-
}
|
|
1222
|
-
/* Missing wildcard ref link: --wp-danger flips to red-700 in light */
|
|
1223
|
-
.wp-theme-light .wp-syntax-link--missing,
|
|
1224
|
-
.wp-theme-light .wp-syntax-link--missing:hover {
|
|
1225
|
-
color: var(--wp-danger);
|
|
1226
|
-
border-color: color-mix(in oklab, var(--wp-danger) 42%, transparent);
|
|
1227
|
-
background: color-mix(in oklab, var(--wp-danger) 12%, transparent);
|
|
1228
|
-
}
|
|
1229
|
-
|
|
1230
|
-
/* Reference graph block inside row-expand */
|
|
1231
|
-
.wp-syntax-graph {
|
|
1232
|
-
margin-top: 12px;
|
|
1233
|
-
padding-top: 10px;
|
|
1234
|
-
border-top: 1px dashed var(--wp-border);
|
|
1235
|
-
display: flex;
|
|
1236
|
-
flex-direction: column;
|
|
1237
|
-
gap: 6px;
|
|
1238
|
-
font-size: 12px;
|
|
1239
|
-
}
|
|
1240
|
-
.wp-syntax-graph__row {
|
|
1241
|
-
display: flex;
|
|
1242
|
-
flex-wrap: wrap;
|
|
1243
|
-
align-items: center;
|
|
1244
|
-
gap: 6px;
|
|
1245
|
-
}
|
|
1246
|
-
.wp-syntax-graph__row .pi { font-size: 11px; opacity: 0.7; }
|
|
1247
|
-
.wp-syntax-link {
|
|
1248
|
-
appearance: none;
|
|
1249
|
-
background: var(--wp-bg-3);
|
|
1250
|
-
border: 1px solid var(--wp-border);
|
|
1251
|
-
color: var(--wp-text-dim);
|
|
1252
|
-
font: inherit;
|
|
1253
|
-
padding: 1px 8px;
|
|
1254
|
-
border-radius: var(--wp-radius-cap, 999px);
|
|
1255
|
-
cursor: pointer;
|
|
1256
|
-
transition: color 120ms, background 120ms, border-color 120ms;
|
|
1257
|
-
}
|
|
1258
|
-
.wp-syntax-link:hover {
|
|
1259
|
-
color: var(--wp-accent-text);
|
|
1260
|
-
border-color: rgba(99, 102, 241, 0.45);
|
|
1261
|
-
border-color: color-mix(in oklab, var(--wp-accent-500) 45%, transparent);
|
|
1262
|
-
background: rgba(99, 102, 241, 0.12);
|
|
1263
|
-
background: color-mix(in oklab, var(--wp-accent-500) 12%, var(--wp-bg-3));
|
|
1264
|
-
}
|
|
1265
|
-
.wp-syntax-link--missing {
|
|
1266
|
-
/* audit-exempt: red-400 (#f87171) is lighter than --wp-danger for dark-bg legibility;
|
|
1267
|
-
* light-mode override above uses var(--wp-danger) which flips to red-700. */
|
|
1268
|
-
color: #f87171;
|
|
1269
|
-
border-color: color-mix(in oklab, #f87171 38%, transparent);
|
|
1270
|
-
background: color-mix(in oklab, #f87171 14%, transparent);
|
|
1271
|
-
font-family: var(--wp-font-mono);
|
|
1272
|
-
cursor: default;
|
|
1273
|
-
}
|
|
1274
|
-
.wp-syntax-link--missing:hover {
|
|
1275
|
-
color: #f87171; /* audit-exempt: see above */
|
|
1276
|
-
border-color: color-mix(in oklab, #f87171 38%, transparent);
|
|
1277
|
-
background: color-mix(in oklab, #f87171 14%, transparent);
|
|
1278
|
-
}
|
|
1279
|
-
|
|
1280
1128
|
.wp-id {
|
|
1281
1129
|
font-family: var(--wp-font-mono);
|
|
1282
1130
|
font-size: 10.5px;
|
|
@@ -1285,11 +1133,7 @@ input, textarea, select { font: inherit; }
|
|
|
1285
1133
|
}
|
|
1286
1134
|
|
|
1287
1135
|
/* ---------- Toolbar ---------- */
|
|
1288
|
-
|
|
1289
|
-
display: flex; align-items: center; gap: 8px;
|
|
1290
|
-
flex-wrap: wrap;
|
|
1291
|
-
}
|
|
1292
|
-
.wp-toolbar__search { flex: 1; min-width: 220px; max-width: 320px; }
|
|
1136
|
+
|
|
1293
1137
|
.wp-toolbar__count { font-size: 11.5px; color: var(--wp-text-dim); margin-left: auto; }
|
|
1294
1138
|
|
|
1295
1139
|
/* ---------- Pagination ---------- */
|
|
@@ -1316,119 +1160,6 @@ input, textarea, select { font: inherit; }
|
|
|
1316
1160
|
text-align: center;
|
|
1317
1161
|
}
|
|
1318
1162
|
|
|
1319
|
-
/* ---------- Rule card (Derivation editor) ---------- */
|
|
1320
|
-
.wp-rule {
|
|
1321
|
-
background: var(--wp-bg-2);
|
|
1322
|
-
border: 1px solid var(--wp-border);
|
|
1323
|
-
border-radius: var(--wp-radius-md);
|
|
1324
|
-
padding: 10px 12px;
|
|
1325
|
-
display: flex; flex-direction: column; gap: 8px;
|
|
1326
|
-
}
|
|
1327
|
-
.wp-rule__head {
|
|
1328
|
-
display: flex; align-items: center; gap: 8px;
|
|
1329
|
-
}
|
|
1330
|
-
.wp-rule__num {
|
|
1331
|
-
font-family: var(--wp-font-mono);
|
|
1332
|
-
font-size: 10.5px;
|
|
1333
|
-
font-weight: 600;
|
|
1334
|
-
letter-spacing: 0.05em;
|
|
1335
|
-
padding: 2px 8px;
|
|
1336
|
-
border-radius: min(4px, var(--wp-radius-cap, 999px));
|
|
1337
|
-
background: color-mix(in oklab, var(--wp-accent-500) 18%, transparent);
|
|
1338
|
-
color: var(--wp-accent-text);
|
|
1339
|
-
}
|
|
1340
|
-
.wp-rule__index { font-size: 11px; color: var(--wp-text-dim); font-variant-numeric: tabular-nums; }
|
|
1341
|
-
.wp-rule__row {
|
|
1342
|
-
display: grid;
|
|
1343
|
-
grid-template-columns: 64px 1fr;
|
|
1344
|
-
gap: 10px;
|
|
1345
|
-
align-items: center;
|
|
1346
|
-
}
|
|
1347
|
-
.wp-rule__label {
|
|
1348
|
-
font-size: 11.5px;
|
|
1349
|
-
color: var(--wp-text-muted);
|
|
1350
|
-
text-transform: uppercase;
|
|
1351
|
-
letter-spacing: 0.04em;
|
|
1352
|
-
font-weight: 500;
|
|
1353
|
-
}
|
|
1354
|
-
.wp-rule__cond {
|
|
1355
|
-
display: flex;
|
|
1356
|
-
flex-wrap: wrap;
|
|
1357
|
-
gap: 8px;
|
|
1358
|
-
align-items: center;
|
|
1359
|
-
}
|
|
1360
|
-
.wp-rule--else {
|
|
1361
|
-
margin-top: 12px;
|
|
1362
|
-
border-style: dashed;
|
|
1363
|
-
background: transparent;
|
|
1364
|
-
}
|
|
1365
|
-
.wp-rule--else[data-active="true"] {
|
|
1366
|
-
background: var(--wp-bg-2);
|
|
1367
|
-
border-style: solid;
|
|
1368
|
-
}
|
|
1369
|
-
.wp-rule--else .wp-rule__num {
|
|
1370
|
-
background: color-mix(in oklab, var(--wp-warn) 18%, transparent);
|
|
1371
|
-
color: var(--wp-warn);
|
|
1372
|
-
}
|
|
1373
|
-
|
|
1374
|
-
/* Group rule (independent rule with its own IF/ELIF/ELSE branches) */
|
|
1375
|
-
.wp-rule--group {
|
|
1376
|
-
border: 1px solid var(--wp-border-strong);
|
|
1377
|
-
background: var(--wp-bg-1);
|
|
1378
|
-
padding: 12px;
|
|
1379
|
-
}
|
|
1380
|
-
.wp-rule--group .wp-rule__num {
|
|
1381
|
-
background: color-mix(in oklab, var(--wp-accent-500) 24%, transparent);
|
|
1382
|
-
}
|
|
1383
|
-
.wp-rule__branches {
|
|
1384
|
-
display: flex;
|
|
1385
|
-
flex-direction: column;
|
|
1386
|
-
gap: 8px;
|
|
1387
|
-
margin-top: 4px;
|
|
1388
|
-
padding-left: 10px;
|
|
1389
|
-
border-left: 2px solid color-mix(in oklab, var(--wp-accent-500) 30%, transparent);
|
|
1390
|
-
}
|
|
1391
|
-
.wp-branch {
|
|
1392
|
-
background: var(--wp-bg-2);
|
|
1393
|
-
border: 1px solid var(--wp-border);
|
|
1394
|
-
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
1395
|
-
padding: 10px 12px;
|
|
1396
|
-
display: flex; flex-direction: column; gap: 8px;
|
|
1397
|
-
}
|
|
1398
|
-
.wp-branch__head {
|
|
1399
|
-
display: flex; align-items: center; gap: 8px;
|
|
1400
|
-
}
|
|
1401
|
-
.wp-branch__tag {
|
|
1402
|
-
font-family: var(--wp-font-mono);
|
|
1403
|
-
font-size: 10px;
|
|
1404
|
-
font-weight: 700;
|
|
1405
|
-
letter-spacing: 0.06em;
|
|
1406
|
-
padding: 2px 7px;
|
|
1407
|
-
border-radius: min(4px, var(--wp-radius-cap, 999px));
|
|
1408
|
-
text-transform: uppercase;
|
|
1409
|
-
}
|
|
1410
|
-
.wp-branch__tag[data-kind="if"] {
|
|
1411
|
-
background: color-mix(in oklab, var(--wp-accent-500) 22%, transparent);
|
|
1412
|
-
color: var(--wp-accent-text);
|
|
1413
|
-
}
|
|
1414
|
-
.wp-branch__tag[data-kind="elif"] {
|
|
1415
|
-
background: color-mix(in oklab, var(--wp-info, #60a5fa) 22%, transparent);
|
|
1416
|
-
color: var(--wp-info, #60a5fa);
|
|
1417
|
-
}
|
|
1418
|
-
.wp-branch__tag[data-kind="else"] {
|
|
1419
|
-
background: color-mix(in oklab, var(--wp-warn) 22%, transparent);
|
|
1420
|
-
color: var(--wp-warn);
|
|
1421
|
-
}
|
|
1422
|
-
.wp-branch--else {
|
|
1423
|
-
border-style: dashed;
|
|
1424
|
-
}
|
|
1425
|
-
.wp-rule__addbar {
|
|
1426
|
-
display: flex;
|
|
1427
|
-
gap: 6px;
|
|
1428
|
-
margin-top: 8px;
|
|
1429
|
-
padding-left: 12px;
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
1163
|
/* ---------- Hero ----------
|
|
1433
1164
|
* A page header with the logo or an icon. Plain surface: Orbit has no
|
|
1434
1165
|
* decorative gradients. */
|
|
@@ -1502,29 +1233,6 @@ input, textarea, select { font: inherit; }
|
|
|
1502
1233
|
.wp-list__row:hover { background: var(--wp-bg-3); }
|
|
1503
1234
|
.wp-list__row + .wp-list__row { border-top: 1px solid var(--wp-border); border-radius: 0; }
|
|
1504
1235
|
|
|
1505
|
-
/* ---------- Empty state ---------- */
|
|
1506
|
-
.wp-empty {
|
|
1507
|
-
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
1508
|
-
text-align: center;
|
|
1509
|
-
padding: 48px 24px;
|
|
1510
|
-
color: var(--wp-text-muted);
|
|
1511
|
-
gap: 10px;
|
|
1512
|
-
}
|
|
1513
|
-
.wp-empty__icon {
|
|
1514
|
-
width: 56px; height: 56px;
|
|
1515
|
-
border-radius: min(14px, var(--wp-radius-cap, 999px));
|
|
1516
|
-
background: var(--wp-bg-2);
|
|
1517
|
-
border: 1px solid var(--wp-border);
|
|
1518
|
-
display: grid; place-items: center;
|
|
1519
|
-
color: var(--wp-text-dim);
|
|
1520
|
-
font-size: 22px;
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
/* `.wp-empty--card` (full-width dashed empty state) lived alongside the
|
|
1524
|
-
community sub-screens. It moved to the feat/community-tab branch with
|
|
1525
|
-
them; main has no remaining consumer. Re-introduce here when another
|
|
1526
|
-
surface needs it. */
|
|
1527
|
-
|
|
1528
1236
|
/* Compact dashed-card empty placeholder used inside editor cards
|
|
1529
1237
|
(DerivationEditor rules list, ConstraintEditor matrix/exceptions,
|
|
1530
1238
|
PipelineSteps step list). Single-line muted text in a softly-bordered box. */
|
|
@@ -1564,6 +1272,11 @@ input, textarea, select { font: inherit; }
|
|
|
1564
1272
|
* every list page that imports Button.vue can wear the modifier
|
|
1565
1273
|
* class without crossing :deep() boundaries. */
|
|
1566
1274
|
.wp-refresh-btn--spin .pi-refresh {
|
|
1275
|
+
/* The arrow's circle is not the middle of its em box: PrimeIcons draws it
|
|
1276
|
+
* centred at (512, 360) on a 1024 grid whose box runs 960 → -64, so its
|
|
1277
|
+
* centre sits 58.56% down. Turning on the box centre made it wobble. */
|
|
1278
|
+
line-height: 1;
|
|
1279
|
+
transform-origin: 50% 58.56%;
|
|
1567
1280
|
animation: wp-refresh-spin 0.9s linear infinite;
|
|
1568
1281
|
}
|
|
1569
1282
|
@keyframes wp-refresh-spin {
|
|
@@ -1592,145 +1305,6 @@ input, textarea, select { font: inherit; }
|
|
|
1592
1305
|
display: contents;
|
|
1593
1306
|
}
|
|
1594
1307
|
|
|
1595
|
-
/* ---------- Toggle ----------
|
|
1596
|
-
Toggle.vue wraps the shared WpSwitch; its look lives in
|
|
1597
|
-
kit/WpSwitch.vue (one sheet for canvas + manager). */
|
|
1598
|
-
|
|
1599
|
-
/* ---------- Checkbox ----------
|
|
1600
|
-
Canonical geometry matches the wildcard pool's per-option box
|
|
1601
|
-
(`.opt__check` in OptionRow.vue: 14px, 1.5px soft border, 3px radius, sunk
|
|
1602
|
-
into `--wp-bg`). This is THE checkbox look for the whole app; the only
|
|
1603
|
-
opt-outs are the custom toggle BUTTONS (internal flag, seed-lock).
|
|
1604
|
-
|
|
1605
|
-
Markup-agnostic on purpose: works for both the shared ui/Checkbox.vue
|
|
1606
|
-
`<button data-checked>` and bare `<span role="checkbox" aria-checked>`
|
|
1607
|
-
used inline in the size-sensitive embed tree (which avoids importing the
|
|
1608
|
-
component to stay within the bundle budget). On-state fill stays at
|
|
1609
|
-
accent-600 for the white-tick contrast audit. */
|
|
1610
|
-
.wp-check {
|
|
1611
|
-
width: 14px; height: 14px;
|
|
1612
|
-
/* A visible edge on the empty box: the hairline border tokens vanished on
|
|
1613
|
-
* a dark row, so nobody saw that list rows can be selected. */
|
|
1614
|
-
border: 1.5px solid color-mix(in srgb, var(--wp-text-dim) 70%, transparent);
|
|
1615
|
-
border-radius: min(3px, var(--wp-radius-cap, 999px));
|
|
1616
|
-
background: var(--wp-bg);
|
|
1617
|
-
display: inline-flex; align-items: center; justify-content: center;
|
|
1618
|
-
padding: 0; margin: 0;
|
|
1619
|
-
cursor: pointer;
|
|
1620
|
-
flex-shrink: 0;
|
|
1621
|
-
color: transparent;
|
|
1622
|
-
transition: background .12s, border-color .12s, color .12s;
|
|
1623
|
-
line-height: 0;
|
|
1624
|
-
}
|
|
1625
|
-
.wp-check[data-checked="true"],
|
|
1626
|
-
.wp-check[aria-checked="true"] {
|
|
1627
|
-
background: var(--wp-accent-600);
|
|
1628
|
-
border-color: var(--wp-accent-500);
|
|
1629
|
-
color: #fff; /* audit-exempt: white checkmark on accent-600 background ≥4.5:1 both themes */
|
|
1630
|
-
}
|
|
1631
|
-
/* Indeterminate (tri-state) — must look visually distinct from an empty box.
|
|
1632
|
-
The base .wp-check sets color: transparent, so the dash SVG (stroke="currentColor")
|
|
1633
|
-
would be invisible without flipping color here. Mirrors the checked-state fill so
|
|
1634
|
-
a section-checkbox with a partial selection is unmistakably "some, not none, not all".
|
|
1635
|
-
Visibility contract: see src/manager/components/ui/Checkbox.vue (indeterminate prop)
|
|
1636
|
-
and src/manager/__tests__/ui/Checkbox.test.ts (data-indeterminate assertions). */
|
|
1637
|
-
.wp-check[data-indeterminate="true"] {
|
|
1638
|
-
background: var(--wp-accent-600);
|
|
1639
|
-
border-color: var(--wp-accent-500);
|
|
1640
|
-
color: #fff; /* audit-exempt: white dash on accent-600 background ≥4.5:1 both themes */
|
|
1641
|
-
}
|
|
1642
|
-
.wp-check svg { width: 9px; height: 9px; display: block; pointer-events: none; }
|
|
1643
|
-
.wp-check:not(:disabled, [aria-disabled="true"], [data-checked="true"], [aria-checked="true"], [data-indeterminate="true"]):hover {
|
|
1644
|
-
border-color: var(--wp-accent-500);
|
|
1645
|
-
}
|
|
1646
|
-
/* Disabled: grey, not dim purple, so a ticked disabled box no longer reads
|
|
1647
|
-
* as a live one in dark mode. */
|
|
1648
|
-
.wp-check:disabled,
|
|
1649
|
-
.wp-check[aria-disabled="true"] {
|
|
1650
|
-
cursor: not-allowed;
|
|
1651
|
-
background: var(--wp-bg-3);
|
|
1652
|
-
border-color: var(--wp-border);
|
|
1653
|
-
opacity: 0.6;
|
|
1654
|
-
}
|
|
1655
|
-
.wp-check:disabled[data-checked="true"],
|
|
1656
|
-
.wp-check:disabled[data-indeterminate="true"],
|
|
1657
|
-
.wp-check[aria-disabled="true"][aria-checked="true"] {
|
|
1658
|
-
background: var(--wp-text-dim);
|
|
1659
|
-
border-color: var(--wp-text-dim);
|
|
1660
|
-
color: var(--wp-bg-1);
|
|
1661
|
-
}
|
|
1662
|
-
.wp-checkbox.is-disabled { cursor: not-allowed; }
|
|
1663
|
-
.wp-checkbox.is-disabled .wp-checkbox__label { opacity: 0.5; }
|
|
1664
|
-
.wp-check:focus-visible { outline: none; box-shadow: var(--wp-focus-ring); }
|
|
1665
|
-
|
|
1666
|
-
/* Inline checkbox wrapper (label + box) — min-height fills canonical hit-target. */
|
|
1667
|
-
.wp-checkbox {
|
|
1668
|
-
display: inline-flex; align-items: center; gap: 8px;
|
|
1669
|
-
min-height: var(--wp-input-h);
|
|
1670
|
-
cursor: pointer;
|
|
1671
|
-
user-select: none;
|
|
1672
|
-
font-size: 12.5px;
|
|
1673
|
-
color: var(--wp-text);
|
|
1674
|
-
}
|
|
1675
|
-
/* Box-only checkbox inside a row or a <label> that already gives the hit
|
|
1676
|
-
target (AI result lists, file lists): no 32px min-height, so it sits on
|
|
1677
|
-
the row's text line. */
|
|
1678
|
-
.wp-checkbox--inline { min-height: 0; flex: none; }
|
|
1679
|
-
/* Field checkbox (`<Checkbox field>`): an input-height box in a form grid.
|
|
1680
|
-
The label fills the box so a click anywhere toggles once (the label
|
|
1681
|
-
toggles, the box toggles, nothing else does). */
|
|
1682
|
-
.wp-checkbox--field {
|
|
1683
|
-
display: flex;
|
|
1684
|
-
width: 100%;
|
|
1685
|
-
height: var(--wp-input-h);
|
|
1686
|
-
gap: 0;
|
|
1687
|
-
background: var(--wp-bg-2);
|
|
1688
|
-
border: 1px solid var(--wp-border);
|
|
1689
|
-
border-radius: var(--wp-radius-sm);
|
|
1690
|
-
transition: border-color .12s;
|
|
1691
|
-
}
|
|
1692
|
-
.wp-checkbox--field:hover { border-color: var(--wp-border-strong); }
|
|
1693
|
-
.wp-checkbox--field:focus-within { border-color: var(--wp-accent-500); }
|
|
1694
|
-
.wp-checkbox--field .wp-check { margin-left: 10px; }
|
|
1695
|
-
.wp-checkbox--field .wp-checkbox__label {
|
|
1696
|
-
flex: 1;
|
|
1697
|
-
align-self: stretch;
|
|
1698
|
-
display: flex;
|
|
1699
|
-
align-items: center;
|
|
1700
|
-
padding: 0 10px 0 8px;
|
|
1701
|
-
white-space: nowrap;
|
|
1702
|
-
overflow: hidden;
|
|
1703
|
-
text-overflow: ellipsis;
|
|
1704
|
-
}
|
|
1705
|
-
|
|
1706
|
-
/* ---------- Radio ----------
|
|
1707
|
-
Native <input type="radio" class="wp-radio"> drawn to match .wp-check:
|
|
1708
|
-
same 14px box, soft border and accent-600 fill, round. Stays a real
|
|
1709
|
-
radio so name-grouping, arrow keys and v-model keep working. */
|
|
1710
|
-
.wp-radio {
|
|
1711
|
-
appearance: none; -webkit-appearance: none;
|
|
1712
|
-
width: 14px; height: 14px; margin: 0; flex-shrink: 0;
|
|
1713
|
-
border: 1.5px solid var(--wp-border-strong);
|
|
1714
|
-
border-radius: 50%; /* round: a radio is round in every look */
|
|
1715
|
-
background: var(--wp-bg);
|
|
1716
|
-
display: inline-grid; place-items: center;
|
|
1717
|
-
cursor: pointer;
|
|
1718
|
-
transition: background .12s, border-color .12s;
|
|
1719
|
-
}
|
|
1720
|
-
.wp-radio::before {
|
|
1721
|
-
content: ""; width: 6px; height: 6px; border-radius: 50%; /* round: radio dot */
|
|
1722
|
-
background: #fff; /* audit-exempt: white dot on accent-600 fill ≥4.5:1 both themes */
|
|
1723
|
-
transform: scale(0); transition: transform .12s;
|
|
1724
|
-
}
|
|
1725
|
-
.wp-radio:checked { background: var(--wp-accent-600); border-color: var(--wp-accent-500); }
|
|
1726
|
-
.wp-radio:checked::before { transform: scale(1); }
|
|
1727
|
-
.wp-radio:disabled { opacity: 0.6; cursor: not-allowed; background: var(--wp-bg-3); border-color: var(--wp-border); }
|
|
1728
|
-
.wp-radio:disabled:checked { background: var(--wp-text-dim); border-color: var(--wp-text-dim); }
|
|
1729
|
-
.wp-radio:disabled:checked::before { background: var(--wp-bg-1); }
|
|
1730
|
-
label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim); }
|
|
1731
|
-
.wp-radio:focus-visible { outline: none; box-shadow: var(--wp-focus-ring); }
|
|
1732
|
-
.wp-checkbox__label { color: var(--wp-text); }
|
|
1733
|
-
|
|
1734
1308
|
/* ---------- Star (favorite) ---------- */
|
|
1735
1309
|
.wp-star { color: var(--wp-text-dim); cursor: pointer; transition: color .12s, transform .1s; background: none; border: none; padding: 4px; line-height: 0; }
|
|
1736
1310
|
.wp-star:hover { color: var(--wp-warn); }
|
|
@@ -1738,19 +1312,6 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
1738
1312
|
|
|
1739
1313
|
/* ---------- Tabs ---------- */
|
|
1740
1314
|
.wp-tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--wp-border); }
|
|
1741
|
-
.wp-tab {
|
|
1742
|
-
padding: 8px 12px;
|
|
1743
|
-
background: none; border: none;
|
|
1744
|
-
color: var(--wp-text-muted);
|
|
1745
|
-
font-size: 12.5px;
|
|
1746
|
-
cursor: pointer;
|
|
1747
|
-
border-bottom: 2px solid transparent;
|
|
1748
|
-
margin-bottom: -1px;
|
|
1749
|
-
display: inline-flex; align-items: center; gap: 6px;
|
|
1750
|
-
font-weight: 500;
|
|
1751
|
-
}
|
|
1752
|
-
.wp-tab:hover { color: var(--wp-text); }
|
|
1753
|
-
.wp-tab[data-active="true"] { color: var(--wp-text); border-bottom-color: var(--wp-accent-400); }
|
|
1754
1315
|
|
|
1755
1316
|
/* ---------- Code-ish snippet display ---------- */
|
|
1756
1317
|
.wp-snippet {
|
|
@@ -1785,116 +1346,9 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
1785
1346
|
.wp-mono { font-family: var(--wp-font-mono); }
|
|
1786
1347
|
.wp-muted { color: var(--wp-text-muted); }
|
|
1787
1348
|
.wp-dim { color: var(--wp-text-dim); }
|
|
1788
|
-
.wp-divider { height: 1px; background: var(--wp-border); margin: 4px 0; }
|
|
1789
|
-
|
|
1790
|
-
/* ---------- Token autocomplete popup ---------- */
|
|
1791
|
-
.wp-autocomplete {
|
|
1792
|
-
position: absolute;
|
|
1793
|
-
top: calc(100% + 4px);
|
|
1794
|
-
left: 0; right: 0;
|
|
1795
|
-
z-index: 50;
|
|
1796
|
-
background: var(--wp-bg-2);
|
|
1797
|
-
border: 1px solid var(--wp-border-strong);
|
|
1798
|
-
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
1799
|
-
box-shadow: var(--wp-shadow-md);
|
|
1800
|
-
overflow: hidden;
|
|
1801
|
-
max-height: 280px;
|
|
1802
|
-
display: flex; flex-direction: column;
|
|
1803
|
-
animation: wp-fade-in .1s ease-out;
|
|
1804
|
-
}
|
|
1805
|
-
.wp-autocomplete[data-flip] {
|
|
1806
|
-
top: auto;
|
|
1807
|
-
bottom: calc(100% + 4px);
|
|
1808
|
-
}
|
|
1809
|
-
.wp-autocomplete__head {
|
|
1810
|
-
display: flex; align-items: center;
|
|
1811
|
-
padding: 6px 10px;
|
|
1812
|
-
font-size: 11px;
|
|
1813
|
-
border-bottom: 1px solid var(--wp-border);
|
|
1814
|
-
background: var(--wp-bg-3);
|
|
1815
|
-
color: var(--wp-text-dim);
|
|
1816
|
-
}
|
|
1817
|
-
.wp-autocomplete__item {
|
|
1818
|
-
display: flex; align-items: center; gap: 12px;
|
|
1819
|
-
padding: 7px 10px;
|
|
1820
|
-
background: transparent;
|
|
1821
|
-
border: none;
|
|
1822
|
-
text-align: left;
|
|
1823
|
-
cursor: pointer;
|
|
1824
|
-
color: var(--wp-text);
|
|
1825
|
-
font-size: 12.5px;
|
|
1826
|
-
font-family: var(--wp-font-mono);
|
|
1827
|
-
}
|
|
1828
|
-
.wp-autocomplete__item[data-active="true"] {
|
|
1829
|
-
background: color-mix(in oklab, var(--wp-accent-600) 22%, transparent);
|
|
1830
|
-
}
|
|
1831
|
-
.wp-autocomplete__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1832
|
-
.wp-autocomplete__hint { font-size: 11px; color: var(--wp-text-dim); font-family: var(--wp-font); }
|
|
1833
1349
|
|
|
1834
|
-
/*
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
/* Menu teleported to <body>; position/top/left provided via inline style from JS. */
|
|
1838
|
-
.wp-select__menu {
|
|
1839
|
-
background: var(--wp-bg-3);
|
|
1840
|
-
border: 1px solid var(--wp-border-strong);
|
|
1841
|
-
border-radius: min(7px, var(--wp-radius-cap, 999px));
|
|
1842
|
-
box-shadow: var(--wp-shadow-md);
|
|
1843
|
-
z-index: 9999;
|
|
1844
|
-
padding: 4px;
|
|
1845
|
-
max-height: 240px;
|
|
1846
|
-
overflow: auto;
|
|
1847
|
-
list-style: none;
|
|
1848
|
-
margin: 0;
|
|
1849
|
-
}
|
|
1850
|
-
.wp-select__option {
|
|
1851
|
-
display: flex; align-items: center; gap: 6px;
|
|
1852
|
-
padding: 6px 8px;
|
|
1853
|
-
border-radius: min(6px, var(--wp-radius-cap, 999px));
|
|
1854
|
-
color: var(--wp-text-muted);
|
|
1855
|
-
cursor: pointer;
|
|
1856
|
-
font-size: 12.5px;
|
|
1857
|
-
user-select: none;
|
|
1858
|
-
}
|
|
1859
|
-
.wp-select__option:hover {
|
|
1860
|
-
background: var(--wp-bg-4);
|
|
1861
|
-
color: var(--wp-text);
|
|
1862
|
-
}
|
|
1863
|
-
.wp-select__option[data-active="true"] {
|
|
1864
|
-
background: rgba(99, 102, 241, 0.20);
|
|
1865
|
-
background: color-mix(in oklab, var(--wp-accent-500) 20%, transparent);
|
|
1866
|
-
color: var(--wp-text);
|
|
1867
|
-
}
|
|
1868
|
-
.wp-select__option[data-selected="true"] {
|
|
1869
|
-
background: rgba(99, 102, 241, 0.18);
|
|
1870
|
-
background: color-mix(in oklab, var(--wp-accent-500) 18%, transparent);
|
|
1871
|
-
color: var(--wp-text);
|
|
1872
|
-
}
|
|
1873
|
-
/* Dot + label wrapper inside trigger button */
|
|
1874
|
-
.wp-select__label-wrap {
|
|
1875
|
-
display: flex; align-items: center; gap: 6px;
|
|
1876
|
-
flex: 1; min-width: 0; overflow: hidden;
|
|
1877
|
-
}
|
|
1878
|
-
/* Color dot — rendered in both trigger and option list */
|
|
1879
|
-
.wp-select__dot {
|
|
1880
|
-
width: 8px; height: 8px;
|
|
1881
|
-
border-radius: 50%; /* round: colour dot */
|
|
1882
|
-
flex-shrink: 0;
|
|
1883
|
-
display: inline-block;
|
|
1884
|
-
}
|
|
1885
|
-
/* Label text inside trigger — must be a flex item (not inline) for ellipsis to work */
|
|
1886
|
-
.wp-select__label-text,
|
|
1887
|
-
.wp-select__placeholder {
|
|
1888
|
-
flex: 1; min-width: 0;
|
|
1889
|
-
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
1890
|
-
}
|
|
1891
|
-
/* Option label text — no truncation; menu grows to fit widest option */
|
|
1892
|
-
.wp-select__option-label {
|
|
1893
|
-
flex: 1;
|
|
1894
|
-
white-space: nowrap;
|
|
1895
|
-
}
|
|
1896
|
-
.wp-select__placeholder { color: var(--wp-text-dim); }
|
|
1897
|
-
.wp-select__chevron { color: var(--wp-text-dim); font-size: 11px; margin-left: 6px; flex-shrink: 0; }
|
|
1350
|
+
/* The custom select (trigger, list, options) styles itself: Select.vue, with
|
|
1351
|
+
* the shared menu look from menu.css. */
|
|
1898
1352
|
|
|
1899
1353
|
/* ---------- Color picker (categories) ---------- */
|
|
1900
1354
|
.wp-color-picker {
|
|
@@ -1931,103 +1385,6 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
1931
1385
|
box-shadow: 0 0 0 2px var(--wp-bg-1), 0 0 0 4px var(--wp-accent-500);
|
|
1932
1386
|
}
|
|
1933
1387
|
|
|
1934
|
-
/* ---------- Constraint rule matrix ---------- */
|
|
1935
|
-
.wp-matrix {
|
|
1936
|
-
border-collapse: separate; border-spacing: 4px;
|
|
1937
|
-
font-size: 12px;
|
|
1938
|
-
}
|
|
1939
|
-
.wp-matrix__corner {
|
|
1940
|
-
padding: 0 8px; text-align: left;
|
|
1941
|
-
color: var(--wp-text-dim);
|
|
1942
|
-
font-weight: 500; font-size: 10.5px;
|
|
1943
|
-
text-transform: uppercase; letter-spacing: .05em;
|
|
1944
|
-
display: flex; flex-direction: column; gap: 2px;
|
|
1945
|
-
}
|
|
1946
|
-
.wp-matrix__col-h {
|
|
1947
|
-
padding: 0 8px; color: var(--wp-text-muted);
|
|
1948
|
-
font-weight: 500; white-space: nowrap;
|
|
1949
|
-
}
|
|
1950
|
-
.wp-matrix__row-h {
|
|
1951
|
-
padding: 0 8px; color: var(--wp-text-muted);
|
|
1952
|
-
white-space: nowrap; text-align: left;
|
|
1953
|
-
}
|
|
1954
|
-
.wp-matrix-cell {
|
|
1955
|
-
display: inline-flex; align-items: center; justify-content: center; gap: 3px;
|
|
1956
|
-
min-width: 56px; height: 30px; padding: 0 8px;
|
|
1957
|
-
border-radius: min(6px, var(--wp-radius-cap, 999px)); cursor: pointer;
|
|
1958
|
-
border: 1px solid var(--wp-border);
|
|
1959
|
-
font-family: var(--wp-font);
|
|
1960
|
-
transition: background .12s, border-color .12s, transform .04s;
|
|
1961
|
-
}
|
|
1962
|
-
.wp-matrix-cell:hover { transform: translateY(-1px); }
|
|
1963
|
-
.wp-matrix-cell[data-mode="allow"] { min-width: 36px; padding: 0 6px; }
|
|
1964
|
-
.wp-matrix-cell[data-mode="exclude"] { min-width: 36px; padding: 0 6px; }
|
|
1965
|
-
.wp-matrix-cell__icon { font-size: 14px; font-weight: 600; line-height: 1; }
|
|
1966
|
-
.wp-matrix-cell__factor {
|
|
1967
|
-
font-family: var(--wp-font-mono);
|
|
1968
|
-
font-size: 10.5px; font-weight: 500;
|
|
1969
|
-
opacity: 0.85;
|
|
1970
|
-
}
|
|
1971
|
-
.wp-matrix-cell__tune {
|
|
1972
|
-
position: absolute; top: -6px; right: -6px;
|
|
1973
|
-
width: 18px; height: 18px;
|
|
1974
|
-
border-radius: min(50%, var(--wp-radius-cap, 999px));
|
|
1975
|
-
display: grid; place-items: center;
|
|
1976
|
-
background: var(--wp-bg-1);
|
|
1977
|
-
border: 1px solid var(--wp-border-strong);
|
|
1978
|
-
color: var(--wp-text-muted);
|
|
1979
|
-
cursor: pointer; padding: 0;
|
|
1980
|
-
font-size: 9px;
|
|
1981
|
-
box-shadow: var(--wp-shadow-sm);
|
|
1982
|
-
transition: color .12s, border-color .12s, background .12s;
|
|
1983
|
-
}
|
|
1984
|
-
.wp-matrix-cell__tune:hover {
|
|
1985
|
-
color: var(--wp-accent-text);
|
|
1986
|
-
border-color: var(--wp-accent-500);
|
|
1987
|
-
background: var(--wp-bg-2);
|
|
1988
|
-
}
|
|
1989
|
-
|
|
1990
|
-
/* ---------- Tune popover (matrix factor fine-tune) ---------- */
|
|
1991
|
-
.wp-tune-pop {
|
|
1992
|
-
z-index: 200;
|
|
1993
|
-
background: var(--wp-bg-1);
|
|
1994
|
-
border: 1px solid var(--wp-border-strong);
|
|
1995
|
-
border-radius: min(10px, var(--wp-radius-cap, 999px));
|
|
1996
|
-
padding: 10px 12px;
|
|
1997
|
-
box-shadow: var(--wp-shadow-md, 0 12px 28px rgba(0,0,0,.35));
|
|
1998
|
-
display: flex; flex-direction: column; gap: 8px;
|
|
1999
|
-
}
|
|
2000
|
-
.wp-matrix-cell-wrap {
|
|
2001
|
-
position: relative;
|
|
2002
|
-
display: inline-block;
|
|
2003
|
-
}
|
|
2004
|
-
.wp-tune-pop__head {
|
|
2005
|
-
display: flex; justify-content: space-between; align-items: center;
|
|
2006
|
-
}
|
|
2007
|
-
.wp-tune-pop__row {
|
|
2008
|
-
display: grid; grid-template-columns: 80px 1fr; gap: 8px; align-items: center;
|
|
2009
|
-
}
|
|
2010
|
-
.wp-tune-pop__presets {
|
|
2011
|
-
display: flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end;
|
|
2012
|
-
}
|
|
2013
|
-
.wp-chip-btn {
|
|
2014
|
-
padding: 3px 7px;
|
|
2015
|
-
border-radius: var(--wp-radius-cap, 999px);
|
|
2016
|
-
border: 1px solid var(--wp-border);
|
|
2017
|
-
background: var(--wp-bg-2);
|
|
2018
|
-
color: var(--wp-text-muted);
|
|
2019
|
-
font-size: 10.5px;
|
|
2020
|
-
font-family: var(--wp-font-mono);
|
|
2021
|
-
cursor: pointer;
|
|
2022
|
-
transition: background .12s, color .12s, border-color .12s;
|
|
2023
|
-
}
|
|
2024
|
-
.wp-chip-btn:hover { background: var(--wp-bg-3); color: var(--wp-text); }
|
|
2025
|
-
.wp-chip-btn[data-active="true"] {
|
|
2026
|
-
background: color-mix(in oklab, var(--wp-accent-500) 18%, transparent);
|
|
2027
|
-
color: var(--wp-accent-text-strong);
|
|
2028
|
-
border-color: color-mix(in oklab, var(--wp-accent-500) 40%, transparent);
|
|
2029
|
-
}
|
|
2030
|
-
|
|
2031
1388
|
/* native range styled to match */
|
|
2032
1389
|
.wp-range {
|
|
2033
1390
|
width: 100%;
|
|
@@ -2199,364 +1556,6 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
2199
1556
|
font-size: 12px;
|
|
2200
1557
|
}
|
|
2201
1558
|
|
|
2202
|
-
/* Token properties popover (for $var chips) */
|
|
2203
|
-
.wp-tokenprops {
|
|
2204
|
-
position: fixed;
|
|
2205
|
-
z-index: 200;
|
|
2206
|
-
width: 320px;
|
|
2207
|
-
background: var(--wp-bg-1);
|
|
2208
|
-
border: 1px solid var(--wp-border-strong);
|
|
2209
|
-
border-radius: min(10px, var(--wp-radius-cap, 999px));
|
|
2210
|
-
box-shadow: var(--wp-shadow-md, 0 12px 28px rgba(0,0,0,.4));
|
|
2211
|
-
padding: 12px;
|
|
2212
|
-
display: flex;
|
|
2213
|
-
flex-direction: column;
|
|
2214
|
-
gap: 10px;
|
|
2215
|
-
}
|
|
2216
|
-
.wp-tokenprops__head {
|
|
2217
|
-
display: flex; align-items: center; gap: 6px;
|
|
2218
|
-
padding-bottom: 8px;
|
|
2219
|
-
border-bottom: 1px solid var(--wp-border);
|
|
2220
|
-
}
|
|
2221
|
-
.wp-tokenprops__name {
|
|
2222
|
-
font-family: var(--wp-font-mono);
|
|
2223
|
-
font-size: 13px;
|
|
2224
|
-
color: var(--wp-accent-text);
|
|
2225
|
-
font-weight: 500;
|
|
2226
|
-
}
|
|
2227
|
-
.wp-tokenprops__type {
|
|
2228
|
-
margin-left: auto;
|
|
2229
|
-
font-size: 10.5px;
|
|
2230
|
-
color: var(--wp-text-dim);
|
|
2231
|
-
text-transform: uppercase;
|
|
2232
|
-
letter-spacing: 0.5px;
|
|
2233
|
-
}
|
|
2234
|
-
.wp-tokenprops__row {
|
|
2235
|
-
display: grid;
|
|
2236
|
-
grid-template-columns: 86px 1fr;
|
|
2237
|
-
gap: 8px;
|
|
2238
|
-
align-items: center;
|
|
2239
|
-
}
|
|
2240
|
-
.wp-tokenprops__label {
|
|
2241
|
-
font-size: 11.5px;
|
|
2242
|
-
color: var(--wp-text-muted);
|
|
2243
|
-
}
|
|
2244
|
-
.wp-tokenprops__output {
|
|
2245
|
-
font-family: var(--wp-font-mono);
|
|
2246
|
-
font-size: 11.5px;
|
|
2247
|
-
background: var(--wp-bg-2);
|
|
2248
|
-
border: 1px solid var(--wp-border);
|
|
2249
|
-
border-radius: min(6px, var(--wp-radius-cap, 999px));
|
|
2250
|
-
padding: 6px 8px;
|
|
2251
|
-
color: var(--wp-text);
|
|
2252
|
-
word-break: break-all;
|
|
2253
|
-
line-height: 1.5;
|
|
2254
|
-
}
|
|
2255
|
-
.wp-tokenprops__legend {
|
|
2256
|
-
font-size: 10.5px;
|
|
2257
|
-
color: var(--wp-text-dim);
|
|
2258
|
-
display: flex;
|
|
2259
|
-
align-items: center;
|
|
2260
|
-
gap: 4px;
|
|
2261
|
-
}
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
/* ===================== PIPELINES ===================== */
|
|
2265
|
-
|
|
2266
|
-
/* Stack of step rows in the pipeline editor */
|
|
2267
|
-
.wp-pl-stack {
|
|
2268
|
-
display: flex;
|
|
2269
|
-
flex-direction: column;
|
|
2270
|
-
gap: 6px;
|
|
2271
|
-
}
|
|
2272
|
-
|
|
2273
|
-
/* `.wp-pl-empty` removed: PipelineSteps now uses the canonical
|
|
2274
|
-
`.wp-empty-card` class for its empty placeholder. */
|
|
2275
|
-
|
|
2276
|
-
/* ---------- Step row ---------- */
|
|
2277
|
-
.wp-pl-row {
|
|
2278
|
-
display: grid;
|
|
2279
|
-
grid-template-columns: 22px 22px 32px 1fr auto;
|
|
2280
|
-
align-items: center;
|
|
2281
|
-
gap: 10px;
|
|
2282
|
-
padding: 8px 10px;
|
|
2283
|
-
background: var(--wp-bg2);
|
|
2284
|
-
border: 1px solid var(--wp-border);
|
|
2285
|
-
border-left: 3px solid var(--step-color, var(--wp-accent-500));
|
|
2286
|
-
border-radius: var(--wp-radius-md);
|
|
2287
|
-
transition: border-color 120ms ease, background 120ms ease, transform 120ms ease, opacity 120ms ease;
|
|
2288
|
-
}
|
|
2289
|
-
.wp-pl-row:hover {
|
|
2290
|
-
border-color: var(--wp-border-strong);
|
|
2291
|
-
background: var(--wp-bg3);
|
|
2292
|
-
}
|
|
2293
|
-
.wp-pl-row[data-drag-over] {
|
|
2294
|
-
border-top-color: var(--wp-accent-500);
|
|
2295
|
-
box-shadow: 0 -2px 0 var(--wp-accent-500);
|
|
2296
|
-
}
|
|
2297
|
-
.wp-pl-row[data-disabled] { opacity: 0.5; }
|
|
2298
|
-
.wp-pl-row[data-disabled] .wp-pl-row__name select { text-decoration: line-through; }
|
|
2299
|
-
|
|
2300
|
-
/* drag handle */
|
|
2301
|
-
.wp-pl-row__handle {
|
|
2302
|
-
display: flex; align-items: center; justify-content: center;
|
|
2303
|
-
width: 22px; height: 22px;
|
|
2304
|
-
color: var(--wp-text-dim);
|
|
2305
|
-
cursor: grab;
|
|
2306
|
-
border-radius: min(4px, var(--wp-radius-cap, 999px));
|
|
2307
|
-
user-select: none;
|
|
2308
|
-
}
|
|
2309
|
-
.wp-pl-row__handle:hover { color: var(--wp-text); background: var(--wp-bg-hover); }
|
|
2310
|
-
.wp-pl-row__handle:active { cursor: grabbing; }
|
|
2311
|
-
|
|
2312
|
-
/* enable/disable toggle */
|
|
2313
|
-
.wp-pl-row__toggle {
|
|
2314
|
-
width: 22px; height: 22px;
|
|
2315
|
-
display: flex; align-items: center; justify-content: center;
|
|
2316
|
-
border: 1px solid var(--wp-border);
|
|
2317
|
-
background: var(--wp-bg);
|
|
2318
|
-
border-radius: min(4px, var(--wp-radius-cap, 999px));
|
|
2319
|
-
color: var(--wp-text-muted);
|
|
2320
|
-
cursor: pointer;
|
|
2321
|
-
padding: 0;
|
|
2322
|
-
transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
|
|
2323
|
-
}
|
|
2324
|
-
.wp-pl-row__toggle:hover { background: var(--wp-bg-hover); color: var(--wp-text); border-color: var(--wp-border-strong); }
|
|
2325
|
-
|
|
2326
|
-
/* kind icon (color tinted by --step-color) */
|
|
2327
|
-
.wp-pl-row__icon {
|
|
2328
|
-
width: 32px; height: 32px;
|
|
2329
|
-
border-radius: var(--wp-radius-sm);
|
|
2330
|
-
display: flex; align-items: center; justify-content: center;
|
|
2331
|
-
background: color-mix(in oklab, var(--step-color, var(--wp-accent-500)) 16%, var(--wp-bg3));
|
|
2332
|
-
color: var(--step-color, var(--wp-accent-300));
|
|
2333
|
-
flex-shrink: 0;
|
|
2334
|
-
}
|
|
2335
|
-
|
|
2336
|
-
/* main column */
|
|
2337
|
-
.wp-pl-row__main {
|
|
2338
|
-
min-width: 0;
|
|
2339
|
-
display: flex;
|
|
2340
|
-
flex-direction: column;
|
|
2341
|
-
gap: 2px;
|
|
2342
|
-
}
|
|
2343
|
-
.wp-pl-row__top {
|
|
2344
|
-
display: flex; align-items: center; gap: 8px;
|
|
2345
|
-
font-size: 11px;
|
|
2346
|
-
text-transform: uppercase;
|
|
2347
|
-
letter-spacing: 0.04em;
|
|
2348
|
-
color: var(--wp-text-muted);
|
|
2349
|
-
font-weight: 500;
|
|
2350
|
-
}
|
|
2351
|
-
.wp-pl-row__kind { color: var(--step-color, var(--wp-text-muted)); }
|
|
2352
|
-
.wp-pl-row__index {
|
|
2353
|
-
margin-left: auto;
|
|
2354
|
-
font-family: var(--wp-font-mono);
|
|
2355
|
-
font-size: 10.5px;
|
|
2356
|
-
letter-spacing: 0;
|
|
2357
|
-
padding: 1px 5px;
|
|
2358
|
-
border-radius: min(3px, var(--wp-radius-cap, 999px));
|
|
2359
|
-
background: var(--wp-bg);
|
|
2360
|
-
border: 1px solid var(--wp-border);
|
|
2361
|
-
color: var(--wp-text-dim);
|
|
2362
|
-
}
|
|
2363
|
-
.wp-pl-row__name {
|
|
2364
|
-
display: flex;
|
|
2365
|
-
align-items: center;
|
|
2366
|
-
min-width: 0;
|
|
2367
|
-
}
|
|
2368
|
-
.wp-pl-row__sub {
|
|
2369
|
-
font-size: 11.5px;
|
|
2370
|
-
color: var(--wp-text-muted);
|
|
2371
|
-
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
2372
|
-
}
|
|
2373
|
-
|
|
2374
|
-
/* `.wp-pl-row__refselect` styles intentionally removed.
|
|
2375
|
-
Earlier the pipeline ref-select was a native <select> styled here
|
|
2376
|
-
to look like inline text. We now route through the shared `Select`
|
|
2377
|
-
component (see `components/ui/Select.vue`), which already brings
|
|
2378
|
-
its own height (`--wp-input-h-sm`, 24px at Comfortable) + chevron + focus ring.
|
|
2379
|
-
The leftover `height: 26px; overflow: hidden` rule was clipping the
|
|
2380
|
-
new trigger by ~2px at the bottom, which read as a "cut" border on
|
|
2381
|
-
the pipeline row. The scoped block in PipelineSteps.vue keeps the
|
|
2382
|
-
only two rules still needed (`flex: 1; min-width: 0`). */
|
|
2383
|
-
|
|
2384
|
-
/* row actions */
|
|
2385
|
-
.wp-pl-row__actions {
|
|
2386
|
-
display: flex;
|
|
2387
|
-
align-items: center;
|
|
2388
|
-
gap: 2px;
|
|
2389
|
-
}
|
|
2390
|
-
.wp-pl-row__act {
|
|
2391
|
-
width: 26px; height: 26px;
|
|
2392
|
-
display: flex; align-items: center; justify-content: center;
|
|
2393
|
-
background: transparent;
|
|
2394
|
-
border: 1px solid transparent;
|
|
2395
|
-
border-radius: min(4px, var(--wp-radius-cap, 999px));
|
|
2396
|
-
color: var(--wp-text-muted);
|
|
2397
|
-
cursor: pointer;
|
|
2398
|
-
font-size: 12px;
|
|
2399
|
-
padding: 0;
|
|
2400
|
-
transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
|
|
2401
|
-
}
|
|
2402
|
-
.wp-pl-row__act:hover {
|
|
2403
|
-
background: var(--wp-bg-hover);
|
|
2404
|
-
color: var(--wp-text);
|
|
2405
|
-
border-color: var(--wp-border);
|
|
2406
|
-
}
|
|
2407
|
-
.wp-pl-row__act--danger:hover {
|
|
2408
|
-
background: color-mix(in oklab, var(--wp-danger) 16%, transparent);
|
|
2409
|
-
color: var(--wp-danger-text);
|
|
2410
|
-
border-color: color-mix(in oklab, var(--wp-danger) 30%, transparent);
|
|
2411
|
-
}
|
|
2412
|
-
|
|
2413
|
-
/* add-step button */
|
|
2414
|
-
.wp-pl-add {
|
|
2415
|
-
display: flex;
|
|
2416
|
-
align-items: center;
|
|
2417
|
-
justify-content: center;
|
|
2418
|
-
gap: 8px;
|
|
2419
|
-
padding: 12px;
|
|
2420
|
-
width: 100%;
|
|
2421
|
-
border: 1px dashed var(--wp-border-strong);
|
|
2422
|
-
border-radius: var(--wp-radius-md);
|
|
2423
|
-
background: transparent;
|
|
2424
|
-
color: var(--wp-text-muted);
|
|
2425
|
-
font-size: 12.5px;
|
|
2426
|
-
font-weight: 500;
|
|
2427
|
-
text-transform: uppercase;
|
|
2428
|
-
letter-spacing: 0.06em;
|
|
2429
|
-
cursor: pointer;
|
|
2430
|
-
margin-top: 4px;
|
|
2431
|
-
transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
|
|
2432
|
-
}
|
|
2433
|
-
.wp-pl-add:hover {
|
|
2434
|
-
border-style: solid;
|
|
2435
|
-
border-color: var(--wp-accent-500);
|
|
2436
|
-
color: var(--wp-accent-text);
|
|
2437
|
-
background: color-mix(in oklab, var(--wp-accent-500) 7%, transparent);
|
|
2438
|
-
}
|
|
2439
|
-
.wp-pl-add .pi { font-size: 11px; }
|
|
2440
|
-
|
|
2441
|
-
/* ---------- Module picker tabs ---------- */
|
|
2442
|
-
.wp-pl-tab {
|
|
2443
|
-
display: inline-flex;
|
|
2444
|
-
align-items: center;
|
|
2445
|
-
gap: 6px;
|
|
2446
|
-
padding: 6px 10px;
|
|
2447
|
-
background: var(--wp-bg2);
|
|
2448
|
-
border: 1px solid var(--wp-border);
|
|
2449
|
-
border-radius: var(--wp-radius-sm);
|
|
2450
|
-
color: var(--wp-text-muted);
|
|
2451
|
-
font-size: 12px;
|
|
2452
|
-
font-weight: 500;
|
|
2453
|
-
cursor: pointer;
|
|
2454
|
-
transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
|
|
2455
|
-
}
|
|
2456
|
-
.wp-pl-tab:hover {
|
|
2457
|
-
background: var(--wp-bg3);
|
|
2458
|
-
color: var(--wp-text);
|
|
2459
|
-
border-color: var(--wp-border-strong);
|
|
2460
|
-
}
|
|
2461
|
-
.wp-pl-tab[data-active] {
|
|
2462
|
-
background: color-mix(in oklab, var(--tab-color, var(--wp-accent-500)) 14%, var(--wp-bg2));
|
|
2463
|
-
border-color: color-mix(in oklab, var(--tab-color, var(--wp-accent-500)) 50%, transparent);
|
|
2464
|
-
color: var(--tab-color, var(--wp-accent-text));
|
|
2465
|
-
}
|
|
2466
|
-
.wp-pl-tab__count {
|
|
2467
|
-
font-family: var(--wp-font-mono);
|
|
2468
|
-
font-size: 10.5px;
|
|
2469
|
-
padding: 0 5px;
|
|
2470
|
-
border-radius: var(--wp-radius-cap, 999px);
|
|
2471
|
-
background: var(--wp-bg);
|
|
2472
|
-
border: 1px solid var(--wp-border);
|
|
2473
|
-
color: var(--wp-text-dim);
|
|
2474
|
-
min-width: 18px;
|
|
2475
|
-
text-align: center;
|
|
2476
|
-
}
|
|
2477
|
-
|
|
2478
|
-
/* picker rows */
|
|
2479
|
-
.wp-pl-pickrow {
|
|
2480
|
-
display: flex;
|
|
2481
|
-
align-items: center;
|
|
2482
|
-
gap: 10px;
|
|
2483
|
-
padding: 9px 12px;
|
|
2484
|
-
background: var(--wp-bg2);
|
|
2485
|
-
border: none;
|
|
2486
|
-
cursor: pointer;
|
|
2487
|
-
text-align: left;
|
|
2488
|
-
width: 100%;
|
|
2489
|
-
font-size: 13px;
|
|
2490
|
-
color: var(--wp-text);
|
|
2491
|
-
transition: background 120ms ease;
|
|
2492
|
-
}
|
|
2493
|
-
.wp-pl-pickrow:hover {
|
|
2494
|
-
background: var(--wp-bg3);
|
|
2495
|
-
}
|
|
2496
|
-
.wp-pl-pickrow__icon {
|
|
2497
|
-
width: 28px; height: 28px;
|
|
2498
|
-
border-radius: var(--wp-radius-sm);
|
|
2499
|
-
display: flex; align-items: center; justify-content: center;
|
|
2500
|
-
flex-shrink: 0;
|
|
2501
|
-
}
|
|
2502
|
-
|
|
2503
|
-
/* ---------- Resolution preview flow ---------- */
|
|
2504
|
-
.wp-pl-flow {
|
|
2505
|
-
display: flex;
|
|
2506
|
-
flex-direction: column;
|
|
2507
|
-
gap: 4px;
|
|
2508
|
-
}
|
|
2509
|
-
.wp-pl-flow__step {
|
|
2510
|
-
display: flex;
|
|
2511
|
-
flex-direction: column;
|
|
2512
|
-
gap: 4px;
|
|
2513
|
-
padding: 10px 12px;
|
|
2514
|
-
background: var(--wp-bg);
|
|
2515
|
-
border: 1px solid var(--wp-border);
|
|
2516
|
-
border-left: 3px solid var(--step-color, var(--wp-accent-500));
|
|
2517
|
-
border-radius: var(--wp-radius-md);
|
|
2518
|
-
position: relative;
|
|
2519
|
-
}
|
|
2520
|
-
.wp-pl-flow__step + .wp-pl-flow__step::before {
|
|
2521
|
-
content: "";
|
|
2522
|
-
position: absolute;
|
|
2523
|
-
top: -5px;
|
|
2524
|
-
left: 18px;
|
|
2525
|
-
width: 1px;
|
|
2526
|
-
height: 6px;
|
|
2527
|
-
background: var(--wp-border-strong);
|
|
2528
|
-
}
|
|
2529
|
-
.wp-pl-flow__head {
|
|
2530
|
-
display: flex; align-items: center; gap: 8px;
|
|
2531
|
-
color: var(--wp-text);
|
|
2532
|
-
}
|
|
2533
|
-
.wp-pl-flow__idx {
|
|
2534
|
-
font-family: var(--wp-font-mono);
|
|
2535
|
-
font-size: 10.5px;
|
|
2536
|
-
padding: 1px 5px;
|
|
2537
|
-
border-radius: min(3px, var(--wp-radius-cap, 999px));
|
|
2538
|
-
background: var(--wp-bg2);
|
|
2539
|
-
border: 1px solid var(--wp-border);
|
|
2540
|
-
color: var(--wp-text-dim);
|
|
2541
|
-
}
|
|
2542
|
-
.wp-pl-flow__adds {
|
|
2543
|
-
display: flex;
|
|
2544
|
-
flex-direction: column;
|
|
2545
|
-
gap: 2px;
|
|
2546
|
-
padding-left: 30px;
|
|
2547
|
-
}
|
|
2548
|
-
.wp-pl-flow__binding {
|
|
2549
|
-
display: flex;
|
|
2550
|
-
align-items: baseline;
|
|
2551
|
-
gap: 6px;
|
|
2552
|
-
font-size: 12px;
|
|
2553
|
-
line-height: 1.4;
|
|
2554
|
-
}
|
|
2555
|
-
.wp-pl-flow__binding > span:last-child {
|
|
2556
|
-
color: var(--wp-text);
|
|
2557
|
-
word-break: break-word;
|
|
2558
|
-
}
|
|
2559
|
-
|
|
2560
1559
|
/* ---------- Modal (simple, used by picker) ---------- */
|
|
2561
1560
|
.wp-modal__backdrop,
|
|
2562
1561
|
.wp-modal-backdrop {
|
|
@@ -2618,7 +1617,6 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
2618
1617
|
background: var(--wp-bg);
|
|
2619
1618
|
}
|
|
2620
1619
|
|
|
2621
|
-
|
|
2622
1620
|
/* ---------- Picker modal sizing & layout ---------- */
|
|
2623
1621
|
.wp-modal--picker {
|
|
2624
1622
|
width: 560px;
|
|
@@ -2628,91 +1626,6 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
2628
1626
|
flex-direction: column;
|
|
2629
1627
|
}
|
|
2630
1628
|
|
|
2631
|
-
.wp-pl-picker__body {
|
|
2632
|
-
display: flex;
|
|
2633
|
-
flex-direction: column;
|
|
2634
|
-
gap: 10px;
|
|
2635
|
-
min-height: 0;
|
|
2636
|
-
}
|
|
2637
|
-
|
|
2638
|
-
/* tabs row — wraps on narrow widths instead of forcing horizontal scroll */
|
|
2639
|
-
.wp-pl-picker__tabs {
|
|
2640
|
-
display: flex;
|
|
2641
|
-
flex-wrap: wrap;
|
|
2642
|
-
gap: 4px;
|
|
2643
|
-
}
|
|
2644
|
-
.wp-pl-tab {
|
|
2645
|
-
flex: 0 1 auto;
|
|
2646
|
-
min-width: 0;
|
|
2647
|
-
}
|
|
2648
|
-
.wp-pl-tab__label {
|
|
2649
|
-
white-space: nowrap;
|
|
2650
|
-
overflow: hidden;
|
|
2651
|
-
text-overflow: ellipsis;
|
|
2652
|
-
min-width: 0;
|
|
2653
|
-
}
|
|
2654
|
-
|
|
2655
|
-
/* picker list */
|
|
2656
|
-
.wp-pl-picker__list {
|
|
2657
|
-
overflow-y: auto;
|
|
2658
|
-
overflow-x: hidden;
|
|
2659
|
-
border: 1px solid var(--wp-border);
|
|
2660
|
-
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
2661
|
-
background: var(--wp-bg);
|
|
2662
|
-
flex: 1;
|
|
2663
|
-
min-height: 200px;
|
|
2664
|
-
display: flex;
|
|
2665
|
-
flex-direction: column;
|
|
2666
|
-
}
|
|
2667
|
-
.wp-pl-pickrow {
|
|
2668
|
-
display: flex;
|
|
2669
|
-
align-items: center;
|
|
2670
|
-
gap: 10px;
|
|
2671
|
-
padding: 9px 12px;
|
|
2672
|
-
background: var(--wp-bg2);
|
|
2673
|
-
border: none;
|
|
2674
|
-
border-bottom: 1px solid var(--wp-border);
|
|
2675
|
-
cursor: pointer;
|
|
2676
|
-
text-align: left;
|
|
2677
|
-
width: 100%;
|
|
2678
|
-
font-size: 13px;
|
|
2679
|
-
color: var(--wp-text);
|
|
2680
|
-
transition: background 120ms ease;
|
|
2681
|
-
min-width: 0;
|
|
2682
|
-
}
|
|
2683
|
-
.wp-pl-pickrow:last-child { border-bottom: none; }
|
|
2684
|
-
.wp-pl-pickrow:hover { background: var(--wp-bg3); }
|
|
2685
|
-
.wp-pl-pickrow__icon {
|
|
2686
|
-
width: 28px; height: 28px;
|
|
2687
|
-
border-radius: var(--wp-radius-sm);
|
|
2688
|
-
display: flex; align-items: center; justify-content: center;
|
|
2689
|
-
flex-shrink: 0;
|
|
2690
|
-
}
|
|
2691
|
-
.wp-pl-pickrow__main {
|
|
2692
|
-
flex: 1;
|
|
2693
|
-
min-width: 0;
|
|
2694
|
-
display: flex;
|
|
2695
|
-
flex-direction: column;
|
|
2696
|
-
gap: 1px;
|
|
2697
|
-
overflow: hidden;
|
|
2698
|
-
}
|
|
2699
|
-
.wp-pl-pickrow__name {
|
|
2700
|
-
font-weight: 500;
|
|
2701
|
-
font-size: 13px;
|
|
2702
|
-
color: var(--wp-text);
|
|
2703
|
-
white-space: nowrap;
|
|
2704
|
-
overflow: hidden;
|
|
2705
|
-
text-overflow: ellipsis;
|
|
2706
|
-
}
|
|
2707
|
-
.wp-pl-pickrow__id {
|
|
2708
|
-
font-size: 11px;
|
|
2709
|
-
font-family: var(--wp-font-mono);
|
|
2710
|
-
color: var(--wp-text-muted);
|
|
2711
|
-
white-space: nowrap;
|
|
2712
|
-
overflow: hidden;
|
|
2713
|
-
text-overflow: ellipsis;
|
|
2714
|
-
}
|
|
2715
|
-
|
|
2716
1629
|
/* shrink modal padding on narrow viewports */
|
|
2717
1630
|
@media (max-width: 640px) {
|
|
2718
1631
|
.wp-modal-backdrop { padding: 12px; }
|
|
@@ -2722,15 +1635,6 @@ label:has(> .wp-radio:disabled) { cursor: not-allowed; color: var(--wp-text-dim)
|
|
|
2722
1635
|
}
|
|
2723
1636
|
}
|
|
2724
1637
|
|
|
2725
|
-
|
|
2726
|
-
/* In picker modal, give the search bar a bit more breathing room. */
|
|
2727
|
-
.wp-pl-picker__body .wp-input-group {
|
|
2728
|
-
flex-shrink: 0;
|
|
2729
|
-
height: 38px;
|
|
2730
|
-
min-height: 38px;
|
|
2731
|
-
}
|
|
2732
|
-
.wp-pl-picker__body .wp-pl-picker__tabs { flex-shrink: 0; }
|
|
2733
|
-
|
|
2734
1638
|
/* ---------- Module-kind palette (icon + bg pairs) ----------
|
|
2735
1639
|
Source: docs/design-handoff/wildcard-pipeline/project/data.jsx KIND_META.
|
|
2736
1640
|
Dark-theme values (bright, high-chroma) — all pass WCAG AA on dark surfaces.
|