pandorga 1.3.6 → 1.3.8
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/DESIGN.md +14 -5
- data/_includes/content-runtime/43-blocks.html +104 -16
- data/_includes/content-runtime/90-bootstrap.html +1 -0
- data/_includes/home/band-listing.html +1 -1
- data/_layouts/home.html +28 -23
- data/assets/css/base.css +2 -0
- data/assets/css/ledger/home.css +229 -165
- data/lib/pandorga/commands/new.rb +1 -1
- data/lib/pandorga/version.rb +1 -1
- data/scripts/test/render-parity/blocks/project-inventory-row-icon.json +29 -0
- data/scripts/test/render-parity/blocks/project-inventory-row.json +46 -0
- data/scripts/test/render-parity/blocks/project-specimen-glyph.json +32 -0
- data/scripts/test/render-parity/blocks/project-specimen-initial-badge.json +31 -0
- data/scripts/test/render-parity/blocks/project-specimen-initial.json +32 -0
- data/scripts/test/render-parity/blocks/project-specimen.json +69 -0
- data/scripts/test/render-parity/run-absent-field-checks.mjs +40 -0
- data/scripts/test/test-ledger-blocks.rb +32 -0
- data/scripts/validate.sh +1 -0
- data/templates/portfolio/README.md +36 -0
- metadata +8 -1
data/assets/css/ledger/home.css
CHANGED
|
@@ -943,10 +943,14 @@ html[data-theme="light"] .home-hero-plate {
|
|
|
943
943
|
}
|
|
944
944
|
}
|
|
945
945
|
|
|
946
|
-
/* ── Engineering artifacts: specimen
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
946
|
+
/* ── Engineering artifacts: specimen bench ──
|
|
947
|
+
A specimen card beside a filing rack of project cards. The specimen keeps a
|
|
948
|
+
min-height floor so short projects still fill the bench, and grows with its
|
|
949
|
+
tagline and wrapping tag chips — the same chip wrap the projects index uses.
|
|
950
|
+
Every plate is 16:9, the ratio the thumbnails are drawn at, with the title
|
|
951
|
+
below it. From 900px the specimen is half the band and the rack a narrower
|
|
952
|
+
column beside it, the rest left blank. Below 900px the rack is an icon strip
|
|
953
|
+
above the specimen, one column per project. */
|
|
950
954
|
.home-projects-bench {
|
|
951
955
|
--home-specimen-height: 32rem;
|
|
952
956
|
--home-icon-btn-size: 2.75rem;
|
|
@@ -957,55 +961,132 @@ html[data-theme="light"] .home-hero-plate {
|
|
|
957
961
|
gap: var(--space-md);
|
|
958
962
|
}
|
|
959
963
|
|
|
964
|
+
.home-project-inventory {
|
|
965
|
+
order: -1;
|
|
966
|
+
}
|
|
967
|
+
|
|
960
968
|
.home-project-specimen {
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
flex-direction: column;
|
|
964
|
-
gap: var(--space-md);
|
|
965
|
-
padding: var(--space-md);
|
|
966
|
-
padding-bottom: var(--space-lg);
|
|
967
|
-
max-width: none;
|
|
968
|
-
width: 100%;
|
|
969
|
-
height: var(--home-specimen-height);
|
|
969
|
+
min-height: var(--home-specimen-height);
|
|
970
|
+
height: auto;
|
|
970
971
|
overflow: hidden;
|
|
971
|
-
|
|
972
|
-
|
|
972
|
+
gap: var(--space-sm);
|
|
973
|
+
padding: var(--space-md);
|
|
973
974
|
box-sizing: border-box;
|
|
974
975
|
}
|
|
975
976
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
977
|
+
/* The triad top rule (`.ledger-card--edge-primary`), restated at a weight
|
|
978
|
+
that beats the light-paper hairline reset on `.ledger-system-card`. */
|
|
979
|
+
:root .home-projects-bench .home-project-specimen,
|
|
980
|
+
:root .home-projects-bench .home-project-specimen:hover {
|
|
981
|
+
border-top: 2px solid var(--color-primary);
|
|
980
982
|
}
|
|
981
983
|
|
|
982
|
-
.home-project-specimen
|
|
983
|
-
|
|
984
|
+
.home-band--contrast .home-project-specimen {
|
|
985
|
+
background: var(--color-surface-card-contrast);
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
.home-band--contrast .home-project-specimen:hover {
|
|
989
|
+
background: var(--color-surface-high-contrast);
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.home-specimen-strip,
|
|
993
|
+
.home-project-inventory-code {
|
|
994
|
+
display: flex;
|
|
984
995
|
flex: 0 0 auto;
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
996
|
+
align-items: center;
|
|
997
|
+
justify-content: space-between;
|
|
998
|
+
gap: var(--space-sm);
|
|
999
|
+
min-width: 0;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
/* Same chrome voice as `.projects-page .ledger-meta` (label face), stepped
|
|
1003
|
+
up to `--type-label-lg` on the specimen so the strip above the plate
|
|
1004
|
+
matches the featured scale instead of body-meta. The rack keeps the
|
|
1005
|
+
plain label step. */
|
|
1006
|
+
.home-specimen-strip .ledger-meta,
|
|
1007
|
+
.home-project-inventory-code .ledger-meta {
|
|
1008
|
+
min-width: 0;
|
|
1009
|
+
flex-wrap: nowrap;
|
|
990
1010
|
overflow: hidden;
|
|
1011
|
+
white-space: nowrap;
|
|
1012
|
+
font-family: var(--font-label);
|
|
1013
|
+
font-size: var(--type-label);
|
|
1014
|
+
letter-spacing: 0.03em;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
.home-specimen-strip .ledger-meta {
|
|
1018
|
+
font-size: var(--type-label-lg);
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
.home-specimen-folio,
|
|
1022
|
+
.home-project-inventory-index {
|
|
1023
|
+
color: var(--color-primary);
|
|
1024
|
+
font-size: inherit;
|
|
991
1025
|
}
|
|
992
1026
|
|
|
993
|
-
.home-
|
|
994
|
-
.home-project-
|
|
1027
|
+
.home-specimen-strip>.ledger-status,
|
|
1028
|
+
.home-project-inventory-code>.ledger-status {
|
|
1029
|
+
flex: 0 0 auto;
|
|
1030
|
+
font-family: var(--font-label);
|
|
1031
|
+
font-size: var(--type-label);
|
|
1032
|
+
letter-spacing: 0.06em;
|
|
1033
|
+
text-transform: uppercase;
|
|
1034
|
+
line-height: 1.4;
|
|
1035
|
+
padding: 0.1rem 0.45rem;
|
|
1036
|
+
background: color-mix(in srgb, var(--color-secondary) 14%, transparent);
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
.home-specimen-strip>.ledger-status {
|
|
1040
|
+
font-size: var(--type-label-lg);
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
/* The figure holds the plate and, always below it, the title. The badge
|
|
1044
|
+
shares the poster's grid cell; when the image fails, renderPosterMedia
|
|
1045
|
+
removes it and the badge hides with it. */
|
|
1046
|
+
.home-specimen-figure {
|
|
1047
|
+
flex: 0 0 auto;
|
|
1048
|
+
display: grid;
|
|
1049
|
+
gap: var(--space-md);
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
.home-specimen-figure>.ledger-poster,
|
|
1053
|
+
.home-specimen-figure>.projects-plate {
|
|
1054
|
+
grid-area: 1 / 1;
|
|
995
1055
|
width: 100%;
|
|
996
|
-
|
|
997
|
-
|
|
1056
|
+
aspect-ratio: 16 / 9;
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
.home-specimen-figure>.projects-plate {
|
|
1060
|
+
position: relative;
|
|
1061
|
+
display: flex;
|
|
1062
|
+
align-items: center;
|
|
1063
|
+
justify-content: center;
|
|
1064
|
+
background: var(--color-surface-high);
|
|
1065
|
+
color: var(--color-primary);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
.home-specimen-figure .projects-plate-glyph {
|
|
1069
|
+
font-size: 3rem;
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
.home-specimen-figure .is-initial {
|
|
1073
|
+
font-family: var(--font-content-title);
|
|
1074
|
+
font-weight: var(--weight-title);
|
|
1075
|
+
line-height: 1;
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
.home-specimen-figure:has(> .ledger-poster)>.home-specimen-badge.is-initial {
|
|
1079
|
+
font-size: var(--type-subtitle);
|
|
998
1080
|
}
|
|
999
1081
|
|
|
1000
1082
|
/* Glyph plates have no .ledger-poster::after — mirror the image corners. */
|
|
1001
|
-
.home-
|
|
1083
|
+
.home-specimen-figure>.projects-plate::after {
|
|
1002
1084
|
content: "";
|
|
1003
1085
|
--frame-corner-size: 0.7rem;
|
|
1004
1086
|
--frame-corner-thickness: 1px;
|
|
1005
1087
|
position: absolute;
|
|
1006
1088
|
inset: 0.3rem;
|
|
1007
1089
|
pointer-events: none;
|
|
1008
|
-
z-index: 2;
|
|
1009
1090
|
background:
|
|
1010
1091
|
linear-gradient(var(--color-primary), var(--color-primary)) top left / var(--frame-corner-size) var(--frame-corner-thickness) no-repeat,
|
|
1011
1092
|
linear-gradient(var(--color-primary), var(--color-primary)) top left / var(--frame-corner-thickness) var(--frame-corner-size) no-repeat,
|
|
@@ -1017,82 +1098,106 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1017
1098
|
linear-gradient(var(--color-primary), var(--color-primary)) bottom right / var(--frame-corner-thickness) var(--frame-corner-size) no-repeat;
|
|
1018
1099
|
}
|
|
1019
1100
|
|
|
1020
|
-
.home-
|
|
1021
|
-
display:
|
|
1101
|
+
.home-specimen-figure>.home-specimen-badge {
|
|
1102
|
+
display: none;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
.home-specimen-figure:has(> .ledger-poster)>.home-specimen-badge {
|
|
1106
|
+
grid-area: 1 / 1;
|
|
1107
|
+
justify-self: end;
|
|
1108
|
+
align-self: start;
|
|
1109
|
+
z-index: 3;
|
|
1110
|
+
display: inline-flex;
|
|
1022
1111
|
align-items: center;
|
|
1023
1112
|
justify-content: center;
|
|
1024
|
-
|
|
1113
|
+
width: 2.25rem;
|
|
1114
|
+
height: 2.25rem;
|
|
1115
|
+
margin: var(--space-sm);
|
|
1116
|
+
font-size: 1.25rem;
|
|
1117
|
+
background: var(--color-surface-card);
|
|
1025
1118
|
color: var(--color-primary);
|
|
1026
1119
|
}
|
|
1027
1120
|
|
|
1028
|
-
.home-project-specimen .
|
|
1029
|
-
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
.home-project-specimen .ledger-meta {
|
|
1033
|
-
display: none;
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
.home-project-specimen .ledger-card-title,
|
|
1037
|
-
.home-project-specimen .ledger-card-title a {
|
|
1038
|
-
flex: 0 0 auto;
|
|
1039
|
-
font-family: var(--font-content-title);
|
|
1121
|
+
.home-project-specimen .home-specimen-title {
|
|
1122
|
+
margin: 0;
|
|
1040
1123
|
font-size: var(--type-card-lg);
|
|
1041
|
-
font-weight: var(--weight-title);
|
|
1042
|
-
font-synthesis: none;
|
|
1043
1124
|
line-height: 1.2;
|
|
1044
|
-
color: var(--color-on-surface);
|
|
1045
|
-
min-height: calc(1.2em * 1);
|
|
1046
|
-
margin: var(--space-sm) 0 0;
|
|
1047
1125
|
overflow: hidden;
|
|
1048
1126
|
text-overflow: ellipsis;
|
|
1049
1127
|
white-space: nowrap;
|
|
1050
1128
|
}
|
|
1051
1129
|
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1130
|
+
/* Full tagline, same as `.ledger-system-card` on the projects index — no
|
|
1131
|
+
clamp and no flex-shrink that would crop mid-sentence. The chip row wraps
|
|
1132
|
+
whole pills to the next line (never mid-label); spare height still parks
|
|
1133
|
+
them and the foot on the floor. */
|
|
1057
1134
|
.home-project-specimen .ledger-card-copy {
|
|
1058
1135
|
flex: 0 0 auto;
|
|
1059
|
-
font-family: var(--font-body);
|
|
1060
1136
|
font-size: var(--type-body);
|
|
1061
|
-
font-weight: var(--weight-body);
|
|
1062
1137
|
line-height: var(--leading-body);
|
|
1063
1138
|
color: var(--color-on-surface-variant);
|
|
1064
|
-
display: -webkit-box;
|
|
1065
|
-
-webkit-box-orient: vertical;
|
|
1066
|
-
-webkit-line-clamp: 3;
|
|
1067
|
-
line-clamp: 3;
|
|
1068
|
-
overflow: hidden;
|
|
1069
|
-
min-height: calc(var(--type-body) * var(--leading-body) * 3);
|
|
1070
|
-
margin: 0;
|
|
1071
1139
|
}
|
|
1072
1140
|
|
|
1073
1141
|
.home-project-specimen .ledger-chip-row {
|
|
1074
|
-
|
|
1142
|
+
flex: 0 0 auto;
|
|
1075
1143
|
flex-wrap: wrap;
|
|
1076
1144
|
gap: var(--space-xs);
|
|
1077
|
-
margin: 0;
|
|
1145
|
+
margin: auto 0 0;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
.home-specimen-foot {
|
|
1149
|
+
flex: 0 0 auto;
|
|
1150
|
+
flex-wrap: wrap;
|
|
1151
|
+
gap: var(--space-md);
|
|
1078
1152
|
margin-top: auto;
|
|
1153
|
+
padding-top: var(--space-md);
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
.home-project-specimen .ledger-chip-row~.home-specimen-foot {
|
|
1157
|
+
margin-top: var(--space-xs);
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.home-specimen-foot .ledger-card-links {
|
|
1161
|
+
position: relative;
|
|
1162
|
+
z-index: 1;
|
|
1163
|
+
min-width: 0;
|
|
1164
|
+
display: flex;
|
|
1165
|
+
align-items: center;
|
|
1166
|
+
flex-wrap: wrap;
|
|
1167
|
+
gap: var(--space-sm) var(--space-lg);
|
|
1168
|
+
padding-top: 0;
|
|
1169
|
+
border-top: 0;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
.home-specimen-open {
|
|
1173
|
+
margin-left: auto;
|
|
1079
1174
|
flex: 0 0 auto;
|
|
1080
|
-
max-height: none;
|
|
1081
|
-
overflow: visible;
|
|
1082
1175
|
}
|
|
1083
1176
|
|
|
1084
|
-
.home-project-specimen .
|
|
1085
|
-
|
|
1177
|
+
.home-project-specimen:hover .home-specimen-open {
|
|
1178
|
+
color: var(--color-on-primary, var(--color-surface));
|
|
1179
|
+
border-color: var(--color-link-hover);
|
|
1180
|
+
background: var(--color-primary);
|
|
1086
1181
|
}
|
|
1087
1182
|
|
|
1088
|
-
|
|
1183
|
+
.home-project-specimen:hover .home-specimen-open .ledger-cta-arrow {
|
|
1184
|
+
transform: translateX(4px);
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1188
|
+
.home-project-specimen:hover .home-specimen-open .ledger-cta-arrow {
|
|
1189
|
+
transform: none;
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/* Mobile: one equal column per project (the script sets the count, up to
|
|
1194
|
+
six), so the strip spans the band; fixed button height. */
|
|
1089
1195
|
.home-project-inventory {
|
|
1090
1196
|
display: grid;
|
|
1091
1197
|
grid-template-columns: repeat(var(--home-project-icon-count, 6), minmax(0, 1fr));
|
|
1092
1198
|
gap: var(--space-xs);
|
|
1093
1199
|
min-width: 0;
|
|
1094
1200
|
min-height: 0;
|
|
1095
|
-
height: auto !important;
|
|
1096
1201
|
overflow: visible;
|
|
1097
1202
|
background: transparent;
|
|
1098
1203
|
border: 0;
|
|
@@ -1104,22 +1209,16 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1104
1209
|
display: flex;
|
|
1105
1210
|
align-items: center;
|
|
1106
1211
|
justify-content: center;
|
|
1107
|
-
flex: none;
|
|
1108
|
-
width: auto;
|
|
1109
1212
|
min-width: 0;
|
|
1110
1213
|
height: var(--home-icon-btn-size);
|
|
1111
|
-
aspect-ratio: auto;
|
|
1112
|
-
gap: 0;
|
|
1113
1214
|
padding: 0;
|
|
1114
1215
|
border: 1px solid var(--border-gentle-divider);
|
|
1115
1216
|
background: var(--color-panel-contrast);
|
|
1116
1217
|
cursor: pointer;
|
|
1117
|
-
box-shadow: none;
|
|
1118
1218
|
transition: background-color var(--motion-duration-fast) var(--motion-ease-default),
|
|
1119
1219
|
border-color var(--motion-duration-fast) var(--motion-ease-default);
|
|
1120
1220
|
}
|
|
1121
1221
|
|
|
1122
|
-
.home-project-inventory-index,
|
|
1123
1222
|
.home-project-inventory-media,
|
|
1124
1223
|
.home-project-inventory-body {
|
|
1125
1224
|
display: none;
|
|
@@ -1129,9 +1228,6 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1129
1228
|
display: inline-flex;
|
|
1130
1229
|
align-items: center;
|
|
1131
1230
|
justify-content: center;
|
|
1132
|
-
width: auto;
|
|
1133
|
-
height: auto;
|
|
1134
|
-
margin: 0;
|
|
1135
1231
|
font-size: 1.25rem;
|
|
1136
1232
|
line-height: 1;
|
|
1137
1233
|
color: var(--color-on-surface-variant);
|
|
@@ -1154,7 +1250,6 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1154
1250
|
outline: 1px solid var(--color-primary);
|
|
1155
1251
|
outline-offset: -1px;
|
|
1156
1252
|
background: var(--color-surface-high);
|
|
1157
|
-
box-shadow: none;
|
|
1158
1253
|
}
|
|
1159
1254
|
|
|
1160
1255
|
.home-project-inventory-row.is-selected .home-project-inventory-glyph,
|
|
@@ -1169,93 +1264,68 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1169
1264
|
background: var(--color-surface-high-contrast);
|
|
1170
1265
|
}
|
|
1171
1266
|
|
|
1172
|
-
.home-project-inventory-row .ledger-meta {
|
|
1173
|
-
display: none;
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
1267
|
@media (min-width: 900px) {
|
|
1268
|
+
|
|
1269
|
+
/* The rack panel stretches to the specimen's content height. */
|
|
1177
1270
|
.home-projects-bench {
|
|
1178
1271
|
--home-specimen-height: 36rem;
|
|
1179
1272
|
display: grid;
|
|
1180
|
-
grid-template-columns: minmax(0,
|
|
1181
|
-
gap: var(--space-xl);
|
|
1273
|
+
grid-template-columns: minmax(0, 50%) minmax(18rem, 34%);
|
|
1274
|
+
column-gap: var(--space-xl);
|
|
1182
1275
|
align-items: stretch;
|
|
1183
1276
|
}
|
|
1184
1277
|
|
|
1185
|
-
.home-project-specimen {
|
|
1186
|
-
height: var(--home-specimen-height);
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1189
|
-
/* Panel container over the tiled band — not bare rows on the grid. */
|
|
1190
1278
|
.home-project-inventory {
|
|
1279
|
+
order: 0;
|
|
1191
1280
|
display: flex;
|
|
1192
1281
|
flex-direction: column;
|
|
1193
|
-
|
|
1282
|
+
gap: var(--space-sm);
|
|
1283
|
+
min-height: 0;
|
|
1194
1284
|
overflow: hidden;
|
|
1195
|
-
|
|
1196
|
-
padding: 0;
|
|
1285
|
+
padding: var(--space-md);
|
|
1197
1286
|
background: var(--color-panel-contrast);
|
|
1198
|
-
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
.home-project-specimen .home-specimen-title {
|
|
1290
|
+
font-size: var(--type-title);
|
|
1199
1291
|
}
|
|
1200
1292
|
|
|
1201
1293
|
.home-project-inventory-row {
|
|
1202
|
-
display: flex;
|
|
1203
|
-
flex-direction: row;
|
|
1204
|
-
align-items: center;
|
|
1205
|
-
justify-content: flex-start;
|
|
1206
1294
|
flex: 1 1 0;
|
|
1207
|
-
|
|
1295
|
+
justify-content: flex-start;
|
|
1296
|
+
gap: var(--space-md);
|
|
1208
1297
|
height: auto;
|
|
1209
1298
|
min-height: 0;
|
|
1210
|
-
aspect-ratio: auto;
|
|
1211
|
-
gap: var(--space-md);
|
|
1212
1299
|
padding: var(--space-sm) var(--space-md);
|
|
1213
|
-
border:
|
|
1214
|
-
|
|
1215
|
-
background: transparent;
|
|
1300
|
+
border: 1px solid var(--border-gentle-divider);
|
|
1301
|
+
background: var(--color-surface-card);
|
|
1216
1302
|
outline: none;
|
|
1217
1303
|
}
|
|
1218
1304
|
|
|
1219
|
-
.home-project-inventory-row
|
|
1220
|
-
|
|
1305
|
+
.home-band--contrast .home-project-inventory-row {
|
|
1306
|
+
background: var(--color-surface-card-contrast);
|
|
1221
1307
|
}
|
|
1222
1308
|
|
|
1223
|
-
.home-project-inventory-row.is-selected
|
|
1309
|
+
.home-project-inventory-row.is-selected,
|
|
1310
|
+
.home-band--contrast .home-project-inventory-row.is-selected {
|
|
1224
1311
|
background: var(--color-surface-high);
|
|
1225
|
-
border-color:
|
|
1312
|
+
border-color: var(--border-gentle-divider);
|
|
1226
1313
|
outline: none;
|
|
1227
1314
|
box-shadow: inset 3px 0 0 var(--color-primary);
|
|
1228
1315
|
}
|
|
1229
1316
|
|
|
1230
|
-
.home-project-inventory-index {
|
|
1231
|
-
display: block;
|
|
1232
|
-
flex: 0 0 1.75rem;
|
|
1233
|
-
font-family: var(--font-mono);
|
|
1234
|
-
font-size: var(--type-caption);
|
|
1235
|
-
letter-spacing: 0.04em;
|
|
1236
|
-
color: var(--color-on-surface-variant);
|
|
1237
|
-
line-height: 1;
|
|
1238
|
-
text-align: right;
|
|
1239
|
-
}
|
|
1240
|
-
|
|
1241
|
-
.home-project-inventory-row.is-selected .home-project-inventory-index,
|
|
1242
|
-
.home-project-inventory-row:hover .home-project-inventory-index,
|
|
1243
|
-
.home-project-inventory-row:focus-visible .home-project-inventory-index {
|
|
1244
|
-
color: var(--color-primary);
|
|
1245
|
-
}
|
|
1246
|
-
|
|
1247
1317
|
.home-project-inventory-media {
|
|
1248
1318
|
display: block;
|
|
1249
1319
|
flex: 0 0 auto;
|
|
1250
1320
|
width: 5.5rem;
|
|
1251
|
-
align-self: center;
|
|
1252
|
-
height: auto;
|
|
1253
|
-
min-width: 0;
|
|
1254
|
-
min-height: 0;
|
|
1255
1321
|
aspect-ratio: 16 / 9;
|
|
1256
1322
|
overflow: hidden;
|
|
1257
1323
|
background: var(--color-surface-high);
|
|
1258
|
-
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
.home-project-inventory-row.is-selected .home-project-inventory-media {
|
|
1327
|
+
outline: 1px solid var(--color-primary);
|
|
1328
|
+
outline-offset: 2px;
|
|
1259
1329
|
}
|
|
1260
1330
|
|
|
1261
1331
|
.home-project-inventory-media .ledger-poster,
|
|
@@ -1263,7 +1333,6 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1263
1333
|
width: 100%;
|
|
1264
1334
|
height: 100%;
|
|
1265
1335
|
aspect-ratio: auto;
|
|
1266
|
-
border: 0;
|
|
1267
1336
|
overflow: hidden;
|
|
1268
1337
|
background: var(--color-surface-high);
|
|
1269
1338
|
}
|
|
@@ -1272,13 +1341,6 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1272
1341
|
display: none;
|
|
1273
1342
|
}
|
|
1274
1343
|
|
|
1275
|
-
.home-project-inventory-media .ledger-poster img {
|
|
1276
|
-
width: 100%;
|
|
1277
|
-
height: 100%;
|
|
1278
|
-
object-fit: cover;
|
|
1279
|
-
display: block;
|
|
1280
|
-
}
|
|
1281
|
-
|
|
1282
1344
|
.home-project-inventory-mark {
|
|
1283
1345
|
display: flex;
|
|
1284
1346
|
align-items: center;
|
|
@@ -1286,6 +1348,10 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1286
1348
|
color: var(--color-primary);
|
|
1287
1349
|
}
|
|
1288
1350
|
|
|
1351
|
+
.home-project-inventory-mark .material-symbols-outlined {
|
|
1352
|
+
font-size: 1.5rem;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1289
1355
|
.home-project-inventory-mark--initial {
|
|
1290
1356
|
font-family: var(--font-content-title);
|
|
1291
1357
|
font-size: var(--type-card);
|
|
@@ -1294,33 +1360,23 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1294
1360
|
color: var(--color-on-surface);
|
|
1295
1361
|
}
|
|
1296
1362
|
|
|
1297
|
-
.home-project-inventory-mark .material-symbols-outlined {
|
|
1298
|
-
font-size: 1.25rem;
|
|
1299
|
-
}
|
|
1300
|
-
|
|
1301
1363
|
.home-project-inventory-body {
|
|
1302
1364
|
display: flex;
|
|
1303
1365
|
flex-direction: column;
|
|
1304
1366
|
justify-content: center;
|
|
1305
|
-
gap: 0;
|
|
1367
|
+
gap: 0.1rem;
|
|
1306
1368
|
flex: 1 1 0;
|
|
1307
1369
|
min-width: 0;
|
|
1308
|
-
padding: 0;
|
|
1309
1370
|
}
|
|
1310
1371
|
|
|
1311
1372
|
.home-project-inventory-title {
|
|
1312
1373
|
margin: 0;
|
|
1313
|
-
font-
|
|
1314
|
-
font-size: var(--type-card);
|
|
1315
|
-
font-weight: var(--weight-title);
|
|
1316
|
-
font-synthesis: none;
|
|
1374
|
+
font-size: var(--type-label-lg);
|
|
1317
1375
|
line-height: 1.25;
|
|
1318
1376
|
color: var(--color-on-surface);
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
color: inherit;
|
|
1323
|
-
text-decoration: none;
|
|
1377
|
+
overflow: hidden;
|
|
1378
|
+
text-overflow: ellipsis;
|
|
1379
|
+
white-space: nowrap;
|
|
1324
1380
|
}
|
|
1325
1381
|
|
|
1326
1382
|
.home-project-inventory-row:hover .home-project-inventory-title,
|
|
@@ -1329,15 +1385,23 @@ html[data-theme="light"] .home-project-specimen,
|
|
|
1329
1385
|
color: var(--color-primary);
|
|
1330
1386
|
}
|
|
1331
1387
|
|
|
1332
|
-
.home-project-inventory-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1388
|
+
.home-project-inventory-copy {
|
|
1389
|
+
margin: 0;
|
|
1390
|
+
font-size: var(--type-meta);
|
|
1391
|
+
font-weight: var(--weight-body);
|
|
1392
|
+
line-height: 1.4;
|
|
1393
|
+
color: var(--color-on-surface-variant);
|
|
1394
|
+
overflow: hidden;
|
|
1395
|
+
text-overflow: ellipsis;
|
|
1396
|
+
white-space: nowrap;
|
|
1338
1397
|
}
|
|
1339
|
-
}
|
|
1340
1398
|
|
|
1399
|
+
/* Two classes: the glyph also carries .material-symbols-outlined, whose
|
|
1400
|
+
font stylesheet loads after this one and sets display. */
|
|
1401
|
+
.home-project-inventory-row .home-project-inventory-glyph {
|
|
1402
|
+
display: none;
|
|
1403
|
+
}
|
|
1404
|
+
}
|
|
1341
1405
|
|
|
1342
1406
|
@media (min-width: 768px) {}
|
|
1343
1407
|
|
|
@@ -24,7 +24,7 @@ module Pandorga
|
|
|
24
24
|
|
|
25
25
|
gem "pandorga", "~> 1.3"
|
|
26
26
|
# Local checkout: gem "pandorga", path: "../pandorga"
|
|
27
|
-
# GitHub tag: gem "pandorga", github: "alexandrelheinen/pandorga", tag: "v1.3.
|
|
27
|
+
# GitHub tag: gem "pandorga", github: "alexandrelheinen/pandorga", tag: "v1.3.8"
|
|
28
28
|
gem "csv"
|
|
29
29
|
gem "base64"
|
|
30
30
|
RUBY
|
data/lib/pandorga/version.rb
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "project-inventory-row/icon mark without a thumbnail (PLT-AC-15)",
|
|
3
|
+
"block": "renderProjectInventoryRow",
|
|
4
|
+
"args": [
|
|
5
|
+
{
|
|
6
|
+
"slug": "bossa",
|
|
7
|
+
"front_matter": {
|
|
8
|
+
"project": "Bossa",
|
|
9
|
+
"icon": "music_note"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"selectable": true,
|
|
14
|
+
"selected": true
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"selectors": [
|
|
18
|
+
"div.home-project-inventory-mark",
|
|
19
|
+
"h3.home-project-inventory-title"
|
|
20
|
+
],
|
|
21
|
+
"forbidden": [
|
|
22
|
+
"ledger-poster",
|
|
23
|
+
"home-project-inventory-mark--initial"
|
|
24
|
+
],
|
|
25
|
+
"contains": [
|
|
26
|
+
"aria-pressed=\"true\"",
|
|
27
|
+
"is-selected"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "project-inventory-row/rack card (PLT-AC-15)",
|
|
3
|
+
"block": "renderProjectInventoryRow",
|
|
4
|
+
"args": [
|
|
5
|
+
{
|
|
6
|
+
"slug": "arco",
|
|
7
|
+
"front_matter": {
|
|
8
|
+
"project": "ARCO",
|
|
9
|
+
"thumbnail": "/media/projects/arco.png",
|
|
10
|
+
"icon": "route",
|
|
11
|
+
"label": "Simulation",
|
|
12
|
+
"status": "Ongoing",
|
|
13
|
+
"tagline": "A city-scale race replayed from telemetry."
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"selectable": true,
|
|
18
|
+
"selected": false,
|
|
19
|
+
"index": 2
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"selectors": [
|
|
23
|
+
"article.home-project-inventory-row",
|
|
24
|
+
"div.home-project-inventory-media",
|
|
25
|
+
"div.ledger-poster",
|
|
26
|
+
"div.home-project-inventory-code",
|
|
27
|
+
"span.home-project-inventory-index",
|
|
28
|
+
"span.ledger-status",
|
|
29
|
+
"h3.home-project-inventory-title",
|
|
30
|
+
"p.home-project-inventory-copy",
|
|
31
|
+
"span.home-project-inventory-glyph"
|
|
32
|
+
],
|
|
33
|
+
"forbidden": [
|
|
34
|
+
"ledger-card-stretch"
|
|
35
|
+
],
|
|
36
|
+
"contains": [
|
|
37
|
+
">02<",
|
|
38
|
+
">Simulation<",
|
|
39
|
+
">Ongoing<",
|
|
40
|
+
">ARCO<",
|
|
41
|
+
">A city-scale race replayed from telemetry.<",
|
|
42
|
+
">route<",
|
|
43
|
+
"aria-pressed=\"false\"",
|
|
44
|
+
"data-slug=\"arco\""
|
|
45
|
+
]
|
|
46
|
+
}
|