@govnepal/css 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/civic-calm.css +386 -1
- package/package.json +1 -1
package/dist/civic-calm.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Civic Calm — @govnepal/css
|
|
3
3
|
* The framework-agnostic visual layer. Semantic HTML plus .gov-* classes; no JavaScript.
|
|
4
|
-
* Built against design-guidelines 0.2.0-dev (
|
|
4
|
+
* Built against design-guidelines 0.2.0-dev (417ba0b6).
|
|
5
5
|
*
|
|
6
6
|
* This stylesheet holds ALL of Civic Calm's visual decisions. @govnepal/ui adds only behavior
|
|
7
7
|
* (ARIA, keyboard, focus management) on top of these classes — so a plain-HTML site or a CMS
|
|
@@ -802,6 +802,80 @@ a:visited,
|
|
|
802
802
|
color: var(--gov-color-text-placeholder);
|
|
803
803
|
}
|
|
804
804
|
|
|
805
|
+
/* Toggle switch, textarea, character count (components/toggle.md, textarea.md, character-count.md). */
|
|
806
|
+
|
|
807
|
+
/* Toggle — on/off with immediate effect; the ON state is interactive, therefore blue (§5.2), and
|
|
808
|
+
* the state is shown by more than colour (position + label/word), never colour alone (§4.1). */
|
|
809
|
+
.gov-toggle {
|
|
810
|
+
display: inline-flex;
|
|
811
|
+
align-items: center;
|
|
812
|
+
gap: var(--gov-space-3);
|
|
813
|
+
cursor: pointer;
|
|
814
|
+
min-block-size: var(--gov-target-min-size);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
.gov-toggle__track {
|
|
818
|
+
position: relative;
|
|
819
|
+
inline-size: 44px;
|
|
820
|
+
block-size: 24px;
|
|
821
|
+
flex-shrink: 0;
|
|
822
|
+
border-radius: var(--gov-radius-full);
|
|
823
|
+
background: var(--gov-color-control-track);
|
|
824
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-input);
|
|
825
|
+
transition: background-color var(--gov-motion-duration-fast) var(--gov-motion-easing-standard);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
.gov-toggle__handle {
|
|
829
|
+
position: absolute;
|
|
830
|
+
inset-block-start: 1px;
|
|
831
|
+
inset-inline-start: 1px;
|
|
832
|
+
inline-size: 18px;
|
|
833
|
+
block-size: 18px;
|
|
834
|
+
border-radius: var(--gov-radius-full);
|
|
835
|
+
background: var(--gov-color-control-handle);
|
|
836
|
+
transition: transform var(--gov-motion-duration-fast) var(--gov-motion-easing-standard);
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.gov-toggle[aria-checked="true"] .gov-toggle__track {
|
|
840
|
+
background: var(--gov-color-control-indicator);
|
|
841
|
+
border-color: var(--gov-color-control-indicator);
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
.gov-toggle[aria-checked="true"] .gov-toggle__handle {
|
|
845
|
+
transform: translateX(20px);
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
/* Textarea — multi-line free text; shares the input border/error treatment. */
|
|
849
|
+
.gov-textarea {
|
|
850
|
+
inline-size: 100%;
|
|
851
|
+
min-block-size: calc(var(--gov-type-body-line-height) * 3);
|
|
852
|
+
padding: var(--gov-space-3);
|
|
853
|
+
background: var(--gov-color-background-surface);
|
|
854
|
+
color: var(--gov-color-text-primary);
|
|
855
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-input);
|
|
856
|
+
border-radius: var(--gov-radius-sm);
|
|
857
|
+
resize: vertical;
|
|
858
|
+
font-family: var(--gov-font-family-ui);
|
|
859
|
+
font-size: var(--gov-type-body-font-size);
|
|
860
|
+
line-height: var(--gov-type-body-line-height);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
.gov-textarea[aria-invalid="true"] {
|
|
864
|
+
border-color: var(--gov-color-status-error-border);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
/* Character count — a polite remaining-characters message below a limited field. */
|
|
868
|
+
.gov-character-count {
|
|
869
|
+
color: var(--gov-color-text-secondary);
|
|
870
|
+
font-size: var(--gov-type-small-font-size);
|
|
871
|
+
line-height: var(--gov-type-small-line-height);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
.gov-character-count--over {
|
|
875
|
+
color: var(--gov-color-status-error-text);
|
|
876
|
+
font-weight: var(--gov-font-weight-medium);
|
|
877
|
+
}
|
|
878
|
+
|
|
805
879
|
/* Details (components/details.md) and warning text (components/warning-text.md).
|
|
806
880
|
*
|
|
807
881
|
* Details is native <details>/<summary> — the platform's own disclosure semantics, so a screen
|
|
@@ -1072,6 +1146,201 @@ a:visited,
|
|
|
1072
1146
|
color: var(--gov-color-status-error-text);
|
|
1073
1147
|
}
|
|
1074
1148
|
|
|
1149
|
+
/* Card (components/card.md) — group everything about one subject into one bounded, opaque surface.
|
|
1150
|
+
* Low shadow, per Civic Calm's restraint (§2.1); surfaces are always fully opaque (§5.2). */
|
|
1151
|
+
.gov-card {
|
|
1152
|
+
background: var(--gov-color-background-surface);
|
|
1153
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1154
|
+
border-radius: var(--gov-radius-lg);
|
|
1155
|
+
padding: var(--gov-space-6);
|
|
1156
|
+
box-shadow: var(--gov-elevation-1);
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
.gov-card > * + * {
|
|
1160
|
+
margin-block-start: var(--gov-space-3);
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
/* The interactive variant makes the WHOLE card one link/target — never nest independent links
|
|
1164
|
+
* inside it (a nested-interactive failure). */
|
|
1165
|
+
.gov-card--interactive {
|
|
1166
|
+
display: block;
|
|
1167
|
+
color: inherit;
|
|
1168
|
+
text-decoration: none;
|
|
1169
|
+
cursor: pointer;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
.gov-card--interactive:hover {
|
|
1173
|
+
border-color: var(--gov-color-border-strong);
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
/* Icon button (components/icon-button.md) — an icon-only action with a required accessible name.
|
|
1177
|
+
* 44x44 minimum hit area even though the icon is smaller; never a primary action (§5.4). */
|
|
1178
|
+
.gov-icon-button {
|
|
1179
|
+
display: inline-flex;
|
|
1180
|
+
align-items: center;
|
|
1181
|
+
justify-content: center;
|
|
1182
|
+
min-inline-size: var(--gov-target-min-size);
|
|
1183
|
+
min-block-size: var(--gov-target-min-size);
|
|
1184
|
+
padding: var(--gov-space-2);
|
|
1185
|
+
border: 0;
|
|
1186
|
+
border-radius: var(--gov-radius-sm);
|
|
1187
|
+
background: transparent;
|
|
1188
|
+
color: var(--gov-color-text-primary);
|
|
1189
|
+
cursor: pointer;
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
.gov-icon-button:hover {
|
|
1193
|
+
background: var(--gov-color-interactive-hover-surface);
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
.gov-icon-button:active {
|
|
1197
|
+
background: var(--gov-color-interactive-pressed-surface);
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
.gov-icon-button[disabled],
|
|
1201
|
+
.gov-icon-button[aria-disabled="true"] {
|
|
1202
|
+
color: var(--gov-color-text-disabled);
|
|
1203
|
+
cursor: not-allowed;
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
.gov-icon-button__icon {
|
|
1207
|
+
inline-size: var(--gov-icon-size-md);
|
|
1208
|
+
block-size: var(--gov-icon-size-md);
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
[data-density="kiosk-counter"] .gov-icon-button {
|
|
1212
|
+
min-inline-size: var(--gov-target-recommended-size);
|
|
1213
|
+
min-block-size: var(--gov-target-recommended-size);
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
/* Modal, confirmation dialog, and toast (components/modal.md, confirmation-dialog.md, toast.md).
|
|
1217
|
+
* Overlays sit above content; surfaces stay fully opaque even over the scrim (§5.2). */
|
|
1218
|
+
|
|
1219
|
+
.gov-modal__scrim {
|
|
1220
|
+
position: fixed;
|
|
1221
|
+
inset: 0;
|
|
1222
|
+
z-index: var(--gov-z-overlay);
|
|
1223
|
+
background: var(--gov-color-overlay-scrim);
|
|
1224
|
+
display: flex;
|
|
1225
|
+
align-items: center;
|
|
1226
|
+
justify-content: center;
|
|
1227
|
+
padding: var(--gov-space-4);
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
.gov-modal {
|
|
1231
|
+
position: relative;
|
|
1232
|
+
z-index: var(--gov-z-modal);
|
|
1233
|
+
inline-size: 100%;
|
|
1234
|
+
max-inline-size: 32rem;
|
|
1235
|
+
max-block-size: calc(100vh - var(--gov-space-8));
|
|
1236
|
+
overflow: auto;
|
|
1237
|
+
background: var(--gov-color-background-surface);
|
|
1238
|
+
border-radius: var(--gov-radius-lg);
|
|
1239
|
+
padding: var(--gov-space-6);
|
|
1240
|
+
box-shadow: var(--gov-elevation-3);
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
.gov-modal__title {
|
|
1244
|
+
font-size: var(--gov-type-h3-font-size);
|
|
1245
|
+
line-height: var(--gov-type-h3-line-height);
|
|
1246
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1247
|
+
margin-block-end: var(--gov-space-3);
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
.gov-modal__actions {
|
|
1251
|
+
display: flex;
|
|
1252
|
+
flex-wrap: wrap;
|
|
1253
|
+
gap: var(--gov-space-3);
|
|
1254
|
+
margin-block-start: var(--gov-space-6);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
/* Toast — a small floating confirmation that auto-dismisses. Success/info only, never errors. */
|
|
1258
|
+
.gov-toast-region {
|
|
1259
|
+
position: fixed;
|
|
1260
|
+
inset-block-end: var(--gov-space-6);
|
|
1261
|
+
inset-inline: 0;
|
|
1262
|
+
z-index: var(--gov-z-toast);
|
|
1263
|
+
display: flex;
|
|
1264
|
+
flex-direction: column;
|
|
1265
|
+
align-items: center;
|
|
1266
|
+
gap: var(--gov-space-2);
|
|
1267
|
+
pointer-events: none;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
.gov-toast {
|
|
1271
|
+
display: inline-flex;
|
|
1272
|
+
align-items: center;
|
|
1273
|
+
gap: var(--gov-space-2);
|
|
1274
|
+
padding: var(--gov-space-3) var(--gov-space-4);
|
|
1275
|
+
border-radius: var(--gov-radius-md);
|
|
1276
|
+
box-shadow: var(--gov-elevation-2);
|
|
1277
|
+
pointer-events: auto;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
.gov-toast--success {
|
|
1281
|
+
background: var(--gov-color-status-success-background);
|
|
1282
|
+
color: var(--gov-color-status-success-text);
|
|
1283
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-status-success-border);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.gov-toast--info {
|
|
1287
|
+
background: var(--gov-color-status-info-background);
|
|
1288
|
+
color: var(--gov-color-status-info-text);
|
|
1289
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-status-info-border);
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
/* Tag and summary list (components/tag.md, summary-list.md). */
|
|
1293
|
+
|
|
1294
|
+
/* Tag — a neutral categorical label, NEVER a status colour (that belongs to badge). */
|
|
1295
|
+
.gov-tag {
|
|
1296
|
+
display: inline-flex;
|
|
1297
|
+
align-items: center;
|
|
1298
|
+
gap: var(--gov-space-1);
|
|
1299
|
+
padding-inline: var(--gov-space-2);
|
|
1300
|
+
padding-block: var(--gov-space-1);
|
|
1301
|
+
border-radius: var(--gov-radius-full);
|
|
1302
|
+
background: var(--gov-color-background-secondary);
|
|
1303
|
+
color: var(--gov-color-text-secondary);
|
|
1304
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1305
|
+
font-size: var(--gov-type-small-font-size);
|
|
1306
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1307
|
+
white-space: nowrap;
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
/* Summary list — review-your-answers rows (key / value / change). */
|
|
1311
|
+
.gov-summary-list {
|
|
1312
|
+
margin: 0;
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1315
|
+
.gov-summary-list__row {
|
|
1316
|
+
display: grid;
|
|
1317
|
+
gap: var(--gov-space-2) var(--gov-space-4);
|
|
1318
|
+
grid-template-columns: 1fr;
|
|
1319
|
+
padding-block: var(--gov-space-3);
|
|
1320
|
+
border-block-end: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1321
|
+
break-inside: avoid;
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
@media (min-width: 640px) {
|
|
1325
|
+
.gov-summary-list__row {
|
|
1326
|
+
grid-template-columns: 1fr 2fr auto;
|
|
1327
|
+
align-items: baseline;
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
.gov-summary-list__key {
|
|
1332
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1333
|
+
margin: 0;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
.gov-summary-list__value {
|
|
1337
|
+
margin: 0;
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
.gov-summary-list__action {
|
|
1341
|
+
justify-self: start;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1075
1344
|
/* Phase banner (components/phase-banner.md), stepper (components/stepper.md), and language
|
|
1076
1345
|
* switcher (components/language-switcher.md) — the standalone navigation pieces. */
|
|
1077
1346
|
|
|
@@ -1186,6 +1455,122 @@ a:visited,
|
|
|
1186
1455
|
color: var(--gov-color-text-secondary);
|
|
1187
1456
|
}
|
|
1188
1457
|
|
|
1458
|
+
/* Breadcrumb, tabs, pagination, footer (components/breadcrumb.md, tabs.md, pagination.md, footer.md). */
|
|
1459
|
+
|
|
1460
|
+
/* Breadcrumb — hierarchy links, current page as plain text. */
|
|
1461
|
+
.gov-breadcrumb {
|
|
1462
|
+
display: flex;
|
|
1463
|
+
flex-wrap: wrap;
|
|
1464
|
+
align-items: center;
|
|
1465
|
+
gap: var(--gov-space-2);
|
|
1466
|
+
list-style: none;
|
|
1467
|
+
padding: 0;
|
|
1468
|
+
color: var(--gov-color-text-secondary);
|
|
1469
|
+
font-size: var(--gov-type-small-font-size);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
.gov-breadcrumb__sep {
|
|
1473
|
+
color: var(--gov-color-text-secondary);
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
.gov-breadcrumb [aria-current="page"] {
|
|
1477
|
+
color: var(--gov-color-text-primary);
|
|
1478
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
/* Tabs — the selected tab marked by weight + underline, never colour alone. */
|
|
1482
|
+
.gov-tabs__list {
|
|
1483
|
+
display: flex;
|
|
1484
|
+
flex-wrap: wrap;
|
|
1485
|
+
gap: var(--gov-space-2);
|
|
1486
|
+
border-block-end: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
.gov-tabs__tab {
|
|
1490
|
+
min-block-size: var(--gov-target-min-size);
|
|
1491
|
+
padding: var(--gov-space-3) var(--gov-space-4);
|
|
1492
|
+
border: 0;
|
|
1493
|
+
background: transparent;
|
|
1494
|
+
color: var(--gov-color-text-secondary);
|
|
1495
|
+
cursor: pointer;
|
|
1496
|
+
border-block-end: var(--gov-border-width-md) solid transparent;
|
|
1497
|
+
margin-block-end: calc(-1 * var(--gov-border-width-sm));
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
.gov-tabs__tab[aria-selected="true"] {
|
|
1501
|
+
color: var(--gov-color-text-primary);
|
|
1502
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1503
|
+
border-block-end-color: var(--gov-color-interactive-selected-indicator);
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1506
|
+
.gov-tabs__panel {
|
|
1507
|
+
padding-block-start: var(--gov-space-4);
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
/* Pagination — numbered links, current marked by more than colour. */
|
|
1511
|
+
.gov-pagination {
|
|
1512
|
+
display: flex;
|
|
1513
|
+
flex-wrap: wrap;
|
|
1514
|
+
align-items: center;
|
|
1515
|
+
gap: var(--gov-space-2);
|
|
1516
|
+
list-style: none;
|
|
1517
|
+
padding: 0;
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
.gov-pagination__link {
|
|
1521
|
+
display: inline-flex;
|
|
1522
|
+
align-items: center;
|
|
1523
|
+
justify-content: center;
|
|
1524
|
+
min-inline-size: var(--gov-target-min-size);
|
|
1525
|
+
min-block-size: var(--gov-target-min-size);
|
|
1526
|
+
padding-inline: var(--gov-space-2);
|
|
1527
|
+
border-radius: var(--gov-radius-sm);
|
|
1528
|
+
text-decoration: none;
|
|
1529
|
+
color: var(--gov-color-link-default);
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
.gov-pagination__link[aria-current="page"] {
|
|
1533
|
+
background: var(--gov-color-interactive-selected-background);
|
|
1534
|
+
color: var(--gov-color-text-primary);
|
|
1535
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1538
|
+
.gov-pagination__link[aria-disabled="true"] {
|
|
1539
|
+
color: var(--gov-color-text-disabled);
|
|
1540
|
+
pointer-events: none;
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
/* Footer — a two-column trust band, single column on mobile. */
|
|
1544
|
+
.gov-footer {
|
|
1545
|
+
background: var(--gov-color-background-secondary);
|
|
1546
|
+
border-block-start: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1547
|
+
padding-block: var(--gov-space-8);
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
.gov-footer__grid {
|
|
1551
|
+
display: grid;
|
|
1552
|
+
gap: var(--gov-space-8);
|
|
1553
|
+
grid-template-columns: 1fr;
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1556
|
+
@media (min-width: 768px) {
|
|
1557
|
+
.gov-footer__grid {
|
|
1558
|
+
grid-template-columns: 2fr 1fr;
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
.gov-footer__links {
|
|
1563
|
+
list-style: none;
|
|
1564
|
+
padding: 0;
|
|
1565
|
+
display: flex;
|
|
1566
|
+
flex-direction: column;
|
|
1567
|
+
gap: var(--gov-space-2);
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
.gov-footer__office-en {
|
|
1571
|
+
color: var(--gov-color-text-secondary);
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1189
1574
|
/* National identity marks — the emblem and flag (identity/emblem, identity/flag).
|
|
1190
1575
|
*
|
|
1191
1576
|
* Base sizing only. Both are <img> of verified masters; neither is boxed, recoloured, or given a
|