@barodoc/theme-docs 6.0.0 → 6.1.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.
@@ -1048,203 +1048,1071 @@
1048
1048
  }
1049
1049
 
1050
1050
  /* ==========================================================================
1051
- API Playground
1051
+ API Endpoint Header
1052
1052
  ========================================================================== */
1053
1053
 
1054
- .bd-playground {
1055
- border: 1px solid var(--bd-border);
1054
+ .bd-api-endpoint {
1055
+ margin-top: 2.5rem;
1056
+ margin-bottom: 1rem;
1057
+ scroll-margin-top: 5rem;
1058
+ }
1059
+
1060
+ .bd-api-endpoint:first-child {
1061
+ margin-top: 1.5rem;
1062
+ }
1063
+
1064
+ .bd-api-endpoint-anchor {
1065
+ display: block;
1066
+ text-decoration: none;
1067
+ color: inherit;
1068
+ padding: 0.875rem 1rem;
1056
1069
  border-radius: 0.5rem;
1057
- overflow: hidden;
1058
- margin: 1.5rem 0;
1059
- font-size: 0.875rem;
1070
+ border: 1px solid var(--bd-border);
1071
+ background: var(--bd-bg-subtle);
1072
+ transition: border-color 200ms, box-shadow 200ms;
1060
1073
  }
1061
1074
 
1062
- .bd-playground-header {
1075
+ .bd-api-endpoint-anchor:hover {
1076
+ border-color: var(--color-primary-300);
1077
+ box-shadow: 0 0 0 1px var(--color-primary-200);
1078
+ }
1079
+
1080
+ .dark .bd-api-endpoint-anchor:hover {
1081
+ border-color: var(--color-primary-700);
1082
+ box-shadow: 0 0 0 1px var(--color-primary-800);
1083
+ }
1084
+
1085
+ .bd-api-endpoint-header {
1063
1086
  display: flex;
1064
1087
  align-items: center;
1065
- gap: 0.5rem;
1066
- padding: 0.75rem 1rem;
1067
- background-color: var(--bd-bg-subtle);
1068
- border-bottom: 1px solid var(--bd-border);
1088
+ gap: 0.625rem;
1069
1089
  }
1070
1090
 
1071
- .bd-playground-method {
1072
- padding: 0.125rem 0.5rem;
1073
- border-radius: 0.25rem;
1091
+ .bd-api-endpoint-method {
1092
+ display: inline-flex;
1093
+ align-items: center;
1094
+ justify-content: center;
1095
+ min-width: 4rem;
1096
+ padding: 0.25rem 0.625rem;
1097
+ border-radius: 0.375rem;
1074
1098
  font-size: 0.75rem;
1075
- font-weight: 700;
1076
- letter-spacing: 0.025em;
1099
+ font-weight: 800;
1100
+ letter-spacing: 0.05em;
1101
+ text-transform: uppercase;
1077
1102
  flex-shrink: 0;
1078
1103
  }
1079
1104
 
1080
- .bd-playground-url {
1081
- flex: 1;
1105
+ .bd-api-endpoint-path {
1106
+ font-size: 0.9375rem;
1107
+ font-weight: 600;
1108
+ font-family: ui-monospace, monospace;
1109
+ color: var(--bd-text);
1110
+ word-break: break-all;
1111
+ }
1112
+
1113
+ .bd-api-endpoint-summary {
1114
+ margin: 0.375rem 0 0 0;
1082
1115
  font-size: 0.8125rem;
1083
- color: var(--bd-text-secondary);
1084
- overflow: hidden;
1085
- text-overflow: ellipsis;
1086
- white-space: nowrap;
1116
+ color: var(--bd-text-muted);
1117
+ line-height: 1.4;
1087
1118
  }
1088
1119
 
1089
- .bd-playground-send {
1090
- padding: 0.375rem 0.875rem;
1091
- border-radius: 0.375rem;
1092
- background-color: var(--color-primary-600);
1093
- color: #fff;
1120
+ /* Method color badges (shared by endpoint + playground) */
1121
+ .bd-method-get { background-color: #dcfce7; color: #166534; }
1122
+ .bd-method-post { background-color: #dbeafe; color: #1e40af; }
1123
+ .bd-method-put { background-color: #fef3c7; color: #92400e; }
1124
+ .bd-method-patch { background-color: #ffedd5; color: #9a3412; }
1125
+ .bd-method-delete { background-color: #fee2e2; color: #991b1b; }
1126
+
1127
+ .dark .bd-method-get { background-color: #052e16; color: #86efac; }
1128
+ .dark .bd-method-post { background-color: #172554; color: #93c5fd; }
1129
+ .dark .bd-method-put { background-color: #451a03; color: #fcd34d; }
1130
+ .dark .bd-method-patch { background-color: #431407; color: #fdba74; }
1131
+ .dark .bd-method-delete { background-color: #450a0a; color: #fca5a5; }
1132
+
1133
+ /* ==========================================================================
1134
+ API Overview Banner
1135
+ ========================================================================== */
1136
+
1137
+ .bd-api-overview {
1138
+ display: flex;
1139
+ flex-wrap: wrap;
1140
+ gap: 1.5rem;
1141
+ padding: 0.875rem 1rem;
1142
+ margin-bottom: 1.5rem;
1143
+ border-radius: 0.5rem;
1144
+ border: 1px solid var(--bd-border);
1145
+ background: var(--bd-bg-subtle);
1094
1146
  font-size: 0.8125rem;
1095
- font-weight: 500;
1096
- border: none;
1097
- cursor: pointer;
1098
- flex-shrink: 0;
1099
- transition: background-color 150ms ease;
1100
1147
  }
1101
1148
 
1102
- .bd-playground-send:hover {
1103
- background-color: var(--color-primary-700);
1149
+ .bd-api-overview-item {
1150
+ display: flex;
1151
+ align-items: center;
1152
+ gap: 0.5rem;
1104
1153
  }
1105
1154
 
1106
- .bd-playground-send:disabled {
1107
- opacity: 0.6;
1108
- cursor: not-allowed;
1155
+ .bd-api-overview-label {
1156
+ font-weight: 500;
1157
+ color: var(--bd-text-muted);
1109
1158
  }
1110
1159
 
1111
- .dark .bd-playground-send {
1112
- background-color: var(--color-primary-500);
1160
+ .bd-api-overview-value {
1161
+ padding: 0.125rem 0.5rem;
1162
+ border-radius: 0.25rem;
1163
+ font-size: 0.75rem;
1164
+ background: var(--bd-bg);
1165
+ border: 1px solid var(--bd-border);
1166
+ color: var(--bd-text);
1113
1167
  }
1114
1168
 
1115
- .dark .bd-playground-send:hover {
1116
- background-color: var(--color-primary-400);
1169
+ /* ==========================================================================
1170
+ API Endpoint TOC (Table of Contents)
1171
+ ========================================================================== */
1172
+
1173
+ .bd-api-toc {
1174
+ margin-bottom: 1.5rem;
1175
+ border: 1px solid var(--bd-border);
1176
+ border-radius: 0.5rem;
1177
+ overflow: hidden;
1117
1178
  }
1118
1179
 
1119
- .bd-playground-params {
1120
- padding: 0.75rem 1rem;
1180
+ .bd-api-toc-title {
1181
+ padding: 0.5rem 0.875rem;
1182
+ font-size: 0.6875rem;
1183
+ font-weight: 600;
1184
+ text-transform: uppercase;
1185
+ letter-spacing: 0.05em;
1186
+ color: var(--bd-text-muted);
1187
+ background: var(--bd-bg-subtle);
1188
+ border-bottom: 1px solid var(--bd-border);
1189
+ }
1190
+
1191
+ .bd-api-toc-list {
1121
1192
  display: flex;
1122
1193
  flex-direction: column;
1123
- gap: 0.5rem;
1194
+ }
1195
+
1196
+ .bd-api-toc-item {
1197
+ display: flex;
1198
+ align-items: center;
1199
+ gap: 0.625rem;
1200
+ padding: 0.5rem 0.875rem;
1124
1201
  border-bottom: 1px solid var(--bd-border);
1202
+ font-size: 0.8125rem;
1203
+ color: var(--bd-text);
1204
+ text-decoration: none;
1205
+ transition: background 120ms ease;
1125
1206
  }
1126
1207
 
1127
- .bd-playground-param {
1128
- display: grid;
1129
- grid-template-columns: 8rem 1fr;
1130
- gap: 0.5rem;
1208
+ .bd-api-toc-item:last-child {
1209
+ border-bottom: none;
1210
+ }
1211
+
1212
+ .bd-api-toc-item:hover {
1213
+ background: var(--bd-bg-subtle);
1214
+ text-decoration: none;
1215
+ }
1216
+
1217
+ .bd-api-toc-method {
1218
+ display: inline-flex;
1131
1219
  align-items: center;
1220
+ justify-content: center;
1221
+ min-width: 3.25rem;
1222
+ padding: 0.125rem 0.375rem;
1223
+ border-radius: 0.25rem;
1224
+ font-size: 0.625rem;
1225
+ font-weight: 800;
1226
+ letter-spacing: 0.05em;
1227
+ flex-shrink: 0;
1228
+ text-align: center;
1132
1229
  }
1133
1230
 
1134
- .bd-playground-label {
1231
+ .bd-api-toc-path {
1232
+ font-family: ui-monospace, monospace;
1135
1233
  font-size: 0.8125rem;
1136
1234
  font-weight: 500;
1137
1235
  color: var(--bd-text);
1138
- display: flex;
1139
- align-items: center;
1140
- gap: 0.375rem;
1236
+ flex-shrink: 0;
1141
1237
  }
1142
1238
 
1143
- .bd-playground-param-meta {
1144
- font-size: 0.6875rem;
1239
+ .bd-api-toc-summary {
1145
1240
  color: var(--bd-text-muted);
1146
- font-weight: 400;
1241
+ font-size: 0.75rem;
1242
+ white-space: nowrap;
1243
+ overflow: hidden;
1244
+ text-overflow: ellipsis;
1147
1245
  }
1148
1246
 
1149
- .bd-playground-required {
1150
- color: var(--bd-error, #ef4444);
1151
- font-weight: 600;
1152
- }
1247
+ /* ==========================================================================
1248
+ API Documentation Sections
1249
+ ========================================================================== */
1153
1250
 
1154
- .bd-playground-input {
1155
- width: 100%;
1156
- padding: 0.375rem 0.5rem;
1157
- border-radius: 0.25rem;
1158
- border: 1px solid var(--bd-border);
1159
- background-color: var(--bd-bg);
1160
- color: var(--bd-text);
1161
- font-size: 0.8125rem;
1162
- font-family: ui-monospace, monospace;
1163
- outline: none;
1251
+ .bd-api-section {
1252
+ margin: 1rem 0;
1164
1253
  }
1165
1254
 
1166
- .bd-playground-input:focus {
1167
- border-color: var(--color-primary-400);
1168
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary-400) 20%, transparent);
1255
+ .bd-api-section h4 {
1256
+ font-size: 0.8125rem;
1257
+ font-weight: 600;
1258
+ text-transform: uppercase;
1259
+ letter-spacing: 0.05em;
1260
+ color: var(--bd-text-muted);
1261
+ margin-bottom: 0.625rem;
1262
+ border: none;
1263
+ padding-bottom: 0;
1169
1264
  }
1170
1265
 
1171
- .bd-playground-body-section {
1172
- padding: 0.75rem 1rem;
1173
- border-bottom: 1px solid var(--bd-border);
1266
+ .bd-api-content-type {
1267
+ font-size: 0.75rem;
1268
+ color: var(--bd-text-muted);
1174
1269
  }
1175
1270
 
1176
- .bd-playground-textarea {
1177
- width: 100%;
1178
- margin-top: 0.375rem;
1179
- padding: 0.5rem;
1180
- border-radius: 0.25rem;
1271
+ .bd-api-param-list {
1181
1272
  border: 1px solid var(--bd-border);
1182
- background-color: var(--bd-bg);
1183
- color: var(--bd-text);
1273
+ border-radius: 0.5rem;
1274
+ overflow: hidden;
1184
1275
  font-size: 0.8125rem;
1185
- font-family: ui-monospace, monospace;
1186
- resize: vertical;
1187
- outline: none;
1188
1276
  }
1189
1277
 
1190
- .bd-playground-textarea:focus {
1191
- border-color: var(--color-primary-400);
1278
+ .bd-api-param-item {
1279
+ padding: 0.625rem 0.875rem;
1280
+ border-bottom: 1px solid var(--bd-border);
1192
1281
  }
1193
1282
 
1194
- .bd-playground-response {
1195
- background-color: var(--bd-bg-subtle);
1283
+ .bd-api-param-item:last-child {
1284
+ border-bottom: none;
1196
1285
  }
1197
1286
 
1198
- .bd-playground-response-header {
1287
+ .bd-api-param-name {
1199
1288
  display: flex;
1200
1289
  align-items: center;
1201
- justify-content: space-between;
1202
- padding: 0.5rem 1rem;
1203
- border-bottom: 1px solid var(--bd-border);
1290
+ gap: 0.5rem;
1291
+ flex-wrap: wrap;
1204
1292
  }
1205
1293
 
1206
- .bd-playground-status {
1207
- font-weight: 600;
1294
+ .bd-api-param-name code {
1208
1295
  font-size: 0.8125rem;
1296
+ font-weight: 600;
1297
+ color: var(--bd-text);
1209
1298
  }
1210
1299
 
1211
- .bd-status-ok {
1212
- color: #16a34a;
1300
+ .bd-param-required {
1301
+ font-size: 0.6875rem;
1302
+ font-weight: 600;
1303
+ color: #dc2626;
1304
+ text-transform: uppercase;
1305
+ letter-spacing: 0.025em;
1213
1306
  }
1214
1307
 
1215
- .dark .bd-status-ok {
1216
- color: #4ade80;
1308
+ .dark .bd-param-required {
1309
+ color: #f87171;
1217
1310
  }
1218
1311
 
1219
- .bd-status-err {
1220
- color: #dc2626;
1312
+ .bd-param-optional {
1313
+ font-size: 0.6875rem;
1314
+ color: var(--bd-text-muted);
1315
+ text-transform: uppercase;
1316
+ letter-spacing: 0.025em;
1221
1317
  }
1222
1318
 
1223
- .dark .bd-status-err {
1224
- color: #f87171;
1319
+ .bd-api-param-type {
1320
+ font-size: 0.6875rem;
1321
+ font-family: ui-monospace, monospace;
1322
+ color: var(--color-primary-600);
1323
+ padding: 0.0625rem 0.375rem;
1324
+ background: color-mix(in srgb, var(--color-primary-600) 8%, transparent);
1325
+ border-radius: 0.25rem;
1225
1326
  }
1226
1327
 
1227
- .bd-playground-time {
1328
+ .dark .bd-api-param-type {
1329
+ color: var(--color-primary-400);
1330
+ background: color-mix(in srgb, var(--color-primary-400) 12%, transparent);
1331
+ }
1332
+
1333
+ .bd-api-param-desc {
1334
+ margin-top: 0.25rem;
1335
+ font-size: 0.8125rem;
1336
+ color: var(--bd-text-secondary);
1337
+ line-height: 1.5;
1338
+ }
1339
+
1340
+ .bd-api-param-enum {
1341
+ margin-top: 0.25rem;
1228
1342
  font-size: 0.75rem;
1229
1343
  color: var(--bd-text-muted);
1230
1344
  }
1231
1345
 
1232
- .bd-playground-pre {
1233
- margin: 0;
1234
- padding: 1rem;
1235
- overflow-x: auto;
1346
+ .bd-api-param-enum code {
1347
+ padding: 0 0.25rem;
1348
+ font-size: 0.6875rem;
1349
+ background: var(--bd-bg-subtle);
1350
+ border-radius: 0.125rem;
1351
+ }
1352
+
1353
+ /* Responses */
1354
+ .bd-api-responses {
1355
+ border: 1px solid var(--bd-border);
1356
+ border-radius: 0.5rem;
1357
+ overflow: hidden;
1358
+ }
1359
+
1360
+ .bd-api-response-item {
1361
+ display: flex;
1362
+ align-items: center;
1363
+ gap: 0.625rem;
1364
+ padding: 0.5rem 0.875rem;
1365
+ border-bottom: 1px solid var(--bd-border);
1236
1366
  font-size: 0.8125rem;
1237
- line-height: 1.6;
1238
- max-height: 20rem;
1239
1367
  }
1240
1368
 
1241
- .bd-playground-pre code {
1369
+ .bd-api-response-item:last-child {
1370
+ border-bottom: none;
1371
+ }
1372
+
1373
+ .bd-api-status-badge {
1374
+ display: inline-flex;
1375
+ align-items: center;
1376
+ justify-content: center;
1377
+ min-width: 2.5rem;
1378
+ padding: 0.125rem 0.375rem;
1379
+ border-radius: 0.25rem;
1380
+ font-size: 0.75rem;
1381
+ font-weight: 700;
1242
1382
  font-family: ui-monospace, monospace;
1243
- color: var(--bd-text);
1244
1383
  }
1245
1384
 
1385
+ .bd-status-2xx { background-color: #dcfce7; color: #166534; }
1386
+ .bd-status-3xx { background-color: #dbeafe; color: #1e40af; }
1387
+ .bd-status-4xx { background-color: #fef3c7; color: #92400e; }
1388
+ .bd-status-5xx { background-color: #fee2e2; color: #991b1b; }
1389
+ .dark .bd-status-2xx { background-color: #052e16; color: #86efac; }
1390
+ .dark .bd-status-3xx { background-color: #172554; color: #93c5fd; }
1391
+ .dark .bd-status-4xx { background-color: #451a03; color: #fcd34d; }
1392
+ .dark .bd-status-5xx { background-color: #450a0a; color: #fca5a5; }
1393
+
1394
+ .bd-api-response-desc {
1395
+ color: var(--bd-text-secondary);
1396
+ }
1397
+
1398
+ /* Example details */
1399
+ .bd-api-example-details {
1400
+ margin: 0.5rem 0.875rem 0.5rem;
1401
+ font-size: 0.8125rem;
1402
+ }
1403
+
1404
+ .bd-api-example-details summary {
1405
+ cursor: pointer;
1406
+ font-weight: 500;
1407
+ color: var(--bd-text-muted);
1408
+ font-size: 0.8125rem;
1409
+ padding: 0.25rem 0;
1410
+ user-select: none;
1411
+ }
1412
+
1413
+ .bd-api-example-details summary:hover {
1414
+ color: var(--bd-text);
1415
+ }
1416
+
1417
+ .bd-api-example-details pre {
1418
+ margin-top: 0.375rem;
1419
+ font-size: 0.75rem;
1420
+ }
1421
+
1422
+ /* Divider between endpoints */
1423
+ .bd-api-divider {
1424
+ margin: 2rem 0 0;
1425
+ border: none;
1426
+ border-top: 1px solid var(--bd-border);
1427
+ }
1428
+
1429
+ /* ==========================================================================
1430
+ API Playground
1431
+ ========================================================================== */
1432
+
1433
+ .bd-playground {
1434
+ border: 1px solid var(--bd-border);
1435
+ border-radius: 0.625rem;
1436
+ overflow: hidden;
1437
+ margin: 1.25rem 0;
1438
+ font-size: 0.875rem;
1439
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.06), 0 1px 2px -1px rgba(0, 0, 0, 0.06);
1440
+ background: var(--bd-bg);
1441
+ }
1442
+
1443
+ .dark .bd-playground {
1444
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 2px -1px rgba(0, 0, 0, 0.2);
1445
+ }
1446
+
1447
+ .bd-playground-header {
1448
+ display: flex;
1449
+ align-items: center;
1450
+ gap: 0.625rem;
1451
+ padding: 0.625rem 0.875rem;
1452
+ background-color: var(--bd-bg-subtle);
1453
+ border-bottom: 1px solid var(--bd-border);
1454
+ }
1455
+
1456
+ .bd-playground-method {
1457
+ display: inline-flex;
1458
+ align-items: center;
1459
+ justify-content: center;
1460
+ min-width: 3.25rem;
1461
+ padding: 0.1875rem 0.5rem;
1462
+ border-radius: 0.3125rem;
1463
+ font-size: 0.6875rem;
1464
+ font-weight: 800;
1465
+ letter-spacing: 0.05em;
1466
+ flex-shrink: 0;
1467
+ }
1468
+
1469
+ .bd-playground-url {
1470
+ flex: 1;
1471
+ font-size: 0.8125rem;
1472
+ color: var(--bd-text-secondary);
1473
+ overflow: hidden;
1474
+ text-overflow: ellipsis;
1475
+ white-space: nowrap;
1476
+ }
1477
+
1478
+ .bd-playground-send {
1479
+ display: inline-flex;
1480
+ align-items: center;
1481
+ gap: 0.375rem;
1482
+ padding: 0.4375rem 1rem;
1483
+ border-radius: 0.375rem;
1484
+ background-color: var(--color-primary-600);
1485
+ color: #fff;
1486
+ font-size: 0.8125rem;
1487
+ font-weight: 600;
1488
+ border: none;
1489
+ cursor: pointer;
1490
+ flex-shrink: 0;
1491
+ transition: background-color 150ms ease, transform 100ms ease;
1492
+ }
1493
+
1494
+ .bd-playground-send:hover {
1495
+ background-color: var(--color-primary-700);
1496
+ }
1497
+
1498
+ .bd-playground-send:active {
1499
+ transform: scale(0.97);
1500
+ }
1501
+
1502
+ .bd-playground-send:disabled {
1503
+ opacity: 0.6;
1504
+ cursor: not-allowed;
1505
+ transform: none;
1506
+ }
1507
+
1508
+ .dark .bd-playground-send {
1509
+ background-color: var(--color-primary-500);
1510
+ }
1511
+
1512
+ .dark .bd-playground-send:hover {
1513
+ background-color: var(--color-primary-400);
1514
+ }
1515
+
1516
+ .bd-pg-spinner {
1517
+ animation: bd-spin 1s linear infinite;
1518
+ }
1519
+
1520
+ @keyframes bd-spin {
1521
+ from { transform: rotate(0deg); }
1522
+ to { transform: rotate(360deg); }
1523
+ }
1524
+
1525
+ /* Auth bar */
1526
+ .bd-pg-auth-bar {
1527
+ padding: 0 0.875rem;
1528
+ border-bottom: 1px solid var(--bd-border);
1529
+ }
1530
+
1531
+ .bd-pg-auth-toggle {
1532
+ display: inline-flex;
1533
+ align-items: center;
1534
+ gap: 0.375rem;
1535
+ padding: 0.5rem 0;
1536
+ font-size: 0.75rem;
1537
+ font-weight: 500;
1538
+ color: var(--bd-text-muted);
1539
+ background: none;
1540
+ border: none;
1541
+ cursor: pointer;
1542
+ transition: color 150ms;
1543
+ }
1544
+
1545
+ .bd-pg-auth-toggle:hover {
1546
+ color: var(--bd-text);
1547
+ }
1548
+
1549
+ .bd-pg-auth-panel {
1550
+ padding: 0.625rem 0.875rem;
1551
+ border-bottom: 1px solid var(--bd-border);
1552
+ background: var(--bd-bg-subtle);
1553
+ display: flex;
1554
+ flex-direction: column;
1555
+ gap: 0.5rem;
1556
+ }
1557
+
1558
+ .bd-pg-auth-type {
1559
+ display: flex;
1560
+ gap: 0.25rem;
1561
+ margin-bottom: 0.25rem;
1562
+ }
1563
+
1564
+ .bd-pg-auth-type-btn {
1565
+ padding: 0.25rem 0.625rem;
1566
+ border-radius: 0.25rem;
1567
+ font-size: 0.6875rem;
1568
+ font-weight: 500;
1569
+ border: 1px solid var(--bd-border);
1570
+ background: var(--bd-bg);
1571
+ color: var(--bd-text-muted);
1572
+ cursor: pointer;
1573
+ transition: all 150ms;
1574
+ }
1575
+
1576
+ .bd-pg-auth-type-btn.active {
1577
+ background-color: var(--color-primary-600);
1578
+ border-color: var(--color-primary-600);
1579
+ color: #fff;
1580
+ }
1581
+
1582
+ .dark .bd-pg-auth-type-btn.active {
1583
+ background-color: var(--color-primary-500);
1584
+ border-color: var(--color-primary-500);
1585
+ }
1586
+
1587
+ /* Parameters */
1588
+ .bd-playground-params {
1589
+ padding: 0.625rem 0.875rem;
1590
+ display: flex;
1591
+ flex-direction: column;
1592
+ gap: 0.5rem;
1593
+ border-bottom: 1px solid var(--bd-border);
1594
+ }
1595
+
1596
+ .bd-playground-param {
1597
+ display: grid;
1598
+ grid-template-columns: 9rem 1fr;
1599
+ gap: 0.5rem;
1600
+ align-items: center;
1601
+ }
1602
+
1603
+ .bd-playground-label {
1604
+ font-size: 0.8125rem;
1605
+ font-weight: 500;
1606
+ color: var(--bd-text);
1607
+ display: flex;
1608
+ align-items: center;
1609
+ gap: 0.375rem;
1610
+ }
1611
+
1612
+ .bd-pg-param-name {
1613
+ font-family: ui-monospace, monospace;
1614
+ font-size: 0.8125rem;
1615
+ }
1616
+
1617
+ .bd-playground-param-meta {
1618
+ font-size: 0.625rem;
1619
+ color: var(--bd-text-muted);
1620
+ font-weight: 400;
1621
+ text-transform: uppercase;
1622
+ letter-spacing: 0.025em;
1623
+ }
1624
+
1625
+ .bd-playground-required {
1626
+ color: var(--bd-error, #ef4444);
1627
+ font-weight: 600;
1628
+ }
1629
+
1630
+ .bd-playground-input {
1631
+ width: 100%;
1632
+ padding: 0.375rem 0.625rem;
1633
+ border-radius: 0.3125rem;
1634
+ border: 1px solid var(--bd-border);
1635
+ background-color: var(--bd-bg);
1636
+ color: var(--bd-text);
1637
+ font-size: 0.8125rem;
1638
+ font-family: ui-monospace, monospace;
1639
+ outline: none;
1640
+ transition: border-color 150ms, box-shadow 150ms;
1641
+ }
1642
+
1643
+ .bd-playground-input:focus {
1644
+ border-color: var(--color-primary-400);
1645
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary-400) 20%, transparent);
1646
+ }
1647
+
1648
+ /* Body */
1649
+ .bd-playground-body-section {
1650
+ padding: 0.625rem 0.875rem;
1651
+ border-bottom: 1px solid var(--bd-border);
1652
+ }
1653
+
1654
+ .bd-playground-textarea {
1655
+ width: 100%;
1656
+ margin-top: 0.375rem;
1657
+ padding: 0.5rem 0.625rem;
1658
+ border-radius: 0.3125rem;
1659
+ border: 1px solid var(--bd-border);
1660
+ background-color: var(--bd-bg);
1661
+ color: var(--bd-text);
1662
+ font-size: 0.8125rem;
1663
+ font-family: ui-monospace, monospace;
1664
+ resize: vertical;
1665
+ outline: none;
1666
+ transition: border-color 150ms;
1667
+ }
1668
+
1669
+ .bd-playground-textarea:focus {
1670
+ border-color: var(--color-primary-400);
1671
+ }
1672
+
1673
+ /* Code snippets section */
1674
+ .bd-pg-code-section {
1675
+ border-bottom: 1px solid var(--bd-border);
1676
+ }
1677
+
1678
+ .bd-pg-code-tabs {
1679
+ display: flex;
1680
+ align-items: center;
1681
+ gap: 0;
1682
+ padding: 0 0.875rem;
1683
+ background: var(--bd-bg-subtle);
1684
+ border-bottom: 1px solid var(--bd-border);
1685
+ }
1686
+
1687
+ .bd-pg-code-tab {
1688
+ padding: 0.5rem 0.75rem;
1689
+ font-size: 0.6875rem;
1690
+ font-weight: 500;
1691
+ color: var(--bd-text-muted);
1692
+ background: none;
1693
+ border: none;
1694
+ border-bottom: 2px solid transparent;
1695
+ cursor: pointer;
1696
+ transition: color 150ms, border-color 150ms;
1697
+ }
1698
+
1699
+ .bd-pg-code-tab:hover {
1700
+ color: var(--bd-text);
1701
+ }
1702
+
1703
+ .bd-pg-code-tab.active {
1704
+ color: var(--bd-text);
1705
+ border-bottom-color: var(--color-primary-500);
1706
+ }
1707
+
1708
+ .bd-pg-code-pre {
1709
+ margin: 0;
1710
+ padding: 0.875rem;
1711
+ overflow-x: auto;
1712
+ font-size: 0.75rem;
1713
+ line-height: 1.6;
1714
+ max-height: 12rem;
1715
+ background: var(--bd-bg);
1716
+ color: var(--bd-text-secondary);
1717
+ }
1718
+
1719
+ .bd-pg-code-pre code {
1720
+ font-family: ui-monospace, monospace;
1721
+ white-space: pre;
1722
+ color: inherit;
1723
+ }
1724
+
1725
+ /* Copy button */
1726
+ .bd-pg-copy {
1727
+ display: inline-flex;
1728
+ align-items: center;
1729
+ justify-content: center;
1730
+ margin-left: auto;
1731
+ padding: 0.375rem;
1732
+ background: none;
1733
+ border: none;
1734
+ color: var(--bd-text-muted);
1735
+ cursor: pointer;
1736
+ border-radius: 0.25rem;
1737
+ transition: color 150ms, background 150ms;
1738
+ }
1739
+
1740
+ .bd-pg-copy:hover {
1741
+ color: var(--bd-text);
1742
+ background: var(--bd-bg-subtle);
1743
+ }
1744
+
1745
+ /* Response section */
1746
+ .bd-playground-response {
1747
+ background: var(--bd-bg-subtle);
1748
+ }
1749
+
1750
+ .bd-playground-response-header {
1751
+ display: flex;
1752
+ align-items: center;
1753
+ justify-content: space-between;
1754
+ padding: 0.5rem 0.875rem;
1755
+ border-bottom: 1px solid var(--bd-border);
1756
+ flex-wrap: wrap;
1757
+ gap: 0.5rem;
1758
+ }
1759
+
1760
+ .bd-pg-response-meta {
1761
+ display: flex;
1762
+ align-items: center;
1763
+ gap: 0.5rem;
1764
+ }
1765
+
1766
+ .bd-playground-status {
1767
+ font-weight: 700;
1768
+ font-size: 0.8125rem;
1769
+ font-family: ui-monospace, monospace;
1770
+ padding: 0.0625rem 0.375rem;
1771
+ border-radius: 0.25rem;
1772
+ }
1773
+
1774
+ .bd-status-ok {
1775
+ background-color: #dcfce7;
1776
+ color: #166534;
1777
+ }
1778
+
1779
+ .dark .bd-status-ok {
1780
+ background-color: #052e16;
1781
+ color: #86efac;
1782
+ }
1783
+
1784
+ .bd-status-warn {
1785
+ background-color: #fef3c7;
1786
+ color: #92400e;
1787
+ }
1788
+
1789
+ .dark .bd-status-warn {
1790
+ background-color: #451a03;
1791
+ color: #fcd34d;
1792
+ }
1793
+
1794
+ .bd-status-err {
1795
+ background-color: #fee2e2;
1796
+ color: #991b1b;
1797
+ }
1798
+
1799
+ .dark .bd-status-err {
1800
+ background-color: #450a0a;
1801
+ color: #fca5a5;
1802
+ }
1803
+
1804
+ .bd-pg-status-text {
1805
+ font-size: 0.75rem;
1806
+ color: var(--bd-text-muted);
1807
+ }
1808
+
1809
+ .bd-playground-time {
1810
+ font-size: 0.6875rem;
1811
+ color: var(--bd-text-muted);
1812
+ font-family: ui-monospace, monospace;
1813
+ padding: 0.0625rem 0.375rem;
1814
+ border-radius: 0.25rem;
1815
+ background: var(--bd-bg);
1816
+ border: 1px solid var(--bd-border);
1817
+ }
1818
+
1819
+ /* Response tabs */
1820
+ .bd-pg-response-tabs {
1821
+ display: flex;
1822
+ gap: 0;
1823
+ }
1824
+
1825
+ .bd-pg-resp-tab {
1826
+ display: inline-flex;
1827
+ align-items: center;
1828
+ gap: 0.25rem;
1829
+ padding: 0.3125rem 0.625rem;
1830
+ font-size: 0.6875rem;
1831
+ font-weight: 500;
1832
+ color: var(--bd-text-muted);
1833
+ background: none;
1834
+ border: 1px solid var(--bd-border);
1835
+ border-radius: 0.25rem;
1836
+ cursor: pointer;
1837
+ transition: all 150ms;
1838
+ }
1839
+
1840
+ .bd-pg-resp-tab:first-child {
1841
+ border-radius: 0.25rem 0 0 0.25rem;
1842
+ }
1843
+
1844
+ .bd-pg-resp-tab:last-child {
1845
+ border-radius: 0 0.25rem 0.25rem 0;
1846
+ border-left: none;
1847
+ }
1848
+
1849
+ .bd-pg-resp-tab.active {
1850
+ background: var(--bd-bg);
1851
+ color: var(--bd-text);
1852
+ font-weight: 600;
1853
+ }
1854
+
1855
+ .bd-pg-badge {
1856
+ font-size: 0.5625rem;
1857
+ padding: 0 0.25rem;
1858
+ border-radius: 0.625rem;
1859
+ background: var(--bd-border);
1860
+ color: var(--bd-text-muted);
1861
+ font-weight: 600;
1862
+ min-width: 1rem;
1863
+ text-align: center;
1864
+ }
1865
+
1866
+ /* Response body with copy */
1867
+ .bd-pg-response-body {
1868
+ position: relative;
1869
+ }
1870
+
1871
+ .bd-pg-response-body > .bd-pg-copy {
1872
+ position: absolute;
1873
+ top: 0.5rem;
1874
+ right: 0.5rem;
1875
+ z-index: 2;
1876
+ color: var(--bd-text-muted);
1877
+ }
1878
+
1879
+ .bd-pg-response-body > .bd-pg-copy:hover {
1880
+ color: var(--bd-text);
1881
+ background: var(--bd-bg-subtle);
1882
+ }
1883
+
1884
+ .bd-playground-pre {
1885
+ margin: 0;
1886
+ padding: 0.875rem;
1887
+ overflow: auto;
1888
+ font-size: 0.75rem;
1889
+ line-height: 1.65;
1890
+ max-height: 24rem;
1891
+ background: var(--bd-bg);
1892
+ }
1893
+
1894
+ .bd-playground-pre code {
1895
+ font-family: ui-monospace, monospace;
1896
+ color: var(--bd-text-secondary);
1897
+ }
1898
+
1899
+ /* JSON syntax highlighting */
1900
+ .bd-json-key { color: #7c3aed; }
1901
+ .bd-json-str { color: #059669; }
1902
+ .bd-json-num { color: #2563eb; }
1903
+ .bd-json-bool { color: #d97706; }
1904
+
1905
+ .dark .bd-json-key { color: #c4b5fd; }
1906
+ .dark .bd-json-str { color: #86efac; }
1907
+ .dark .bd-json-num { color: #93c5fd; }
1908
+ .dark .bd-json-bool { color: #fdba74; }
1909
+
1910
+ /* Headers table */
1911
+ .bd-pg-headers-table {
1912
+ padding: 0;
1913
+ overflow-x: auto;
1914
+ }
1915
+
1916
+ .bd-pg-headers-table table {
1917
+ width: 100%;
1918
+ font-size: 0.75rem;
1919
+ border-collapse: collapse;
1920
+ }
1921
+
1922
+ .bd-pg-headers-table th {
1923
+ text-align: left;
1924
+ padding: 0.5rem 0.875rem;
1925
+ font-weight: 600;
1926
+ color: var(--bd-text-muted);
1927
+ font-size: 0.6875rem;
1928
+ text-transform: uppercase;
1929
+ letter-spacing: 0.05em;
1930
+ border-bottom: 1px solid var(--bd-border);
1931
+ background: var(--bd-bg-subtle);
1932
+ }
1933
+
1934
+ .bd-pg-headers-table td {
1935
+ padding: 0.375rem 0.875rem;
1936
+ border-bottom: 1px solid var(--bd-border);
1937
+ color: var(--bd-text-secondary);
1938
+ word-break: break-all;
1939
+ }
1940
+
1941
+ .bd-pg-headers-table td code {
1942
+ font-size: 0.75rem;
1943
+ font-weight: 500;
1944
+ color: var(--bd-text);
1945
+ }
1946
+
1947
+ .bd-pg-headers-table tr:last-child td {
1948
+ border-bottom: none;
1949
+ }
1950
+
1951
+ /* Select dropdown for enum params */
1952
+ .bd-playground-select {
1953
+ appearance: none;
1954
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
1955
+ background-repeat: no-repeat;
1956
+ background-position: right 0.5rem center;
1957
+ padding-right: 1.75rem;
1958
+ cursor: pointer;
1959
+ }
1960
+
1961
+ /* Body JSON validation error */
1962
+ .bd-playground-textarea-error {
1963
+ border-color: #ef4444 !important;
1964
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.15) !important;
1965
+ }
1966
+
1967
+ .bd-pg-body-error {
1968
+ display: flex;
1969
+ align-items: center;
1970
+ gap: 0.375rem;
1971
+ margin-top: 0.375rem;
1972
+ font-size: 0.75rem;
1973
+ color: #ef4444;
1974
+ }
1975
+
1976
+ .dark .bd-pg-body-error {
1977
+ color: #f87171;
1978
+ }
1979
+
1980
+ /* Response size badge */
1981
+ .bd-playground-size {
1982
+ font-size: 0.6875rem;
1983
+ color: var(--bd-text-muted);
1984
+ font-family: ui-monospace, monospace;
1985
+ padding: 0.0625rem 0.375rem;
1986
+ border-radius: 0.25rem;
1987
+ background: var(--bd-bg);
1988
+ border: 1px solid var(--bd-border);
1989
+ }
1990
+
1991
+ /* History section */
1992
+ .bd-pg-history-section {
1993
+ border-top: 1px solid var(--bd-border);
1994
+ }
1995
+
1996
+ .bd-pg-history-toggle {
1997
+ display: flex;
1998
+ align-items: center;
1999
+ gap: 0.5rem;
2000
+ width: 100%;
2001
+ padding: 0.5rem 0.875rem;
2002
+ background: none;
2003
+ border: none;
2004
+ color: var(--bd-text-muted);
2005
+ font-size: 0.75rem;
2006
+ font-weight: 500;
2007
+ cursor: pointer;
2008
+ transition: color 150ms;
2009
+ }
2010
+
2011
+ .bd-pg-history-toggle:hover {
2012
+ color: var(--bd-text);
2013
+ }
2014
+
2015
+ .bd-pg-history-list {
2016
+ display: flex;
2017
+ flex-direction: column;
2018
+ }
2019
+
2020
+ .bd-pg-history-item {
2021
+ display: flex;
2022
+ align-items: center;
2023
+ gap: 0.5rem;
2024
+ width: 100%;
2025
+ padding: 0.4375rem 0.875rem;
2026
+ border: none;
2027
+ border-top: 1px solid var(--bd-border);
2028
+ background: none;
2029
+ cursor: pointer;
2030
+ font-size: 0.75rem;
2031
+ color: var(--bd-text-secondary);
2032
+ text-align: left;
2033
+ transition: background 120ms;
2034
+ }
2035
+
2036
+ .bd-pg-history-item:hover {
2037
+ background: var(--bd-bg-subtle);
2038
+ }
2039
+
2040
+ .bd-pg-history-item.active {
2041
+ background: color-mix(in srgb, var(--color-primary-500) 8%, transparent);
2042
+ }
2043
+
2044
+ .bd-pg-history-method {
2045
+ display: inline-flex;
2046
+ align-items: center;
2047
+ justify-content: center;
2048
+ min-width: 2.75rem;
2049
+ padding: 0.0625rem 0.25rem;
2050
+ border-radius: 0.1875rem;
2051
+ font-size: 0.5625rem;
2052
+ font-weight: 800;
2053
+ letter-spacing: 0.05em;
2054
+ flex-shrink: 0;
2055
+ }
2056
+
2057
+ .bd-pg-history-url {
2058
+ flex: 1;
2059
+ overflow: hidden;
2060
+ text-overflow: ellipsis;
2061
+ white-space: nowrap;
2062
+ font-family: ui-monospace, monospace;
2063
+ font-size: 0.6875rem;
2064
+ color: var(--bd-text-secondary);
2065
+ }
2066
+
2067
+ .bd-pg-history-status {
2068
+ font-weight: 700;
2069
+ font-size: 0.6875rem;
2070
+ font-family: ui-monospace, monospace;
2071
+ padding: 0 0.25rem;
2072
+ border-radius: 0.1875rem;
2073
+ }
2074
+
2075
+ .bd-pg-history-time {
2076
+ font-size: 0.625rem;
2077
+ color: var(--bd-text-muted);
2078
+ font-family: ui-monospace, monospace;
2079
+ flex-shrink: 0;
2080
+ }
2081
+
2082
+ /* History banner when viewing a past entry */
2083
+ .bd-pg-history-banner {
2084
+ display: flex;
2085
+ align-items: center;
2086
+ justify-content: space-between;
2087
+ padding: 0.375rem 0.875rem;
2088
+ font-size: 0.75rem;
2089
+ color: var(--color-primary-600);
2090
+ background: color-mix(in srgb, var(--color-primary-500) 6%, transparent);
2091
+ border-bottom: 1px solid var(--bd-border);
2092
+ }
2093
+
2094
+ .dark .bd-pg-history-banner {
2095
+ color: var(--color-primary-400);
2096
+ }
2097
+
2098
+ .bd-pg-history-dismiss {
2099
+ background: none;
2100
+ border: none;
2101
+ font-size: 0.6875rem;
2102
+ font-weight: 500;
2103
+ color: var(--color-primary-600);
2104
+ cursor: pointer;
2105
+ text-decoration: underline;
2106
+ text-underline-offset: 2px;
2107
+ }
2108
+
2109
+ .dark .bd-pg-history-dismiss {
2110
+ color: var(--color-primary-400);
2111
+ }
2112
+
2113
+ /* Error */
1246
2114
  .bd-playground-error {
1247
- padding: 0.75rem 1rem;
2115
+ padding: 0.75rem 0.875rem;
1248
2116
  color: #dc2626;
1249
2117
  font-size: 0.8125rem;
1250
2118
  }