@pitvox/partner-react 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -1137,3 +1137,294 @@
1137
1137
  text-overflow: ellipsis;
1138
1138
  white-space: nowrap;
1139
1139
  }
1140
+
1141
+ /* ═══════════════════════════════════════════════════════════════════════════
1142
+ Driver Dashboard Components
1143
+ ═══════════════════════════════════════════════════════════════════════════ */
1144
+
1145
+ /* ─── Dashboard layout ─────────────────────────────────────────── */
1146
+
1147
+ .pvx-dash {
1148
+ display: flex;
1149
+ flex-direction: column;
1150
+ gap: 1.5rem;
1151
+ }
1152
+
1153
+ /* ─── Driver profile card ──────────────────────────────────────── */
1154
+
1155
+ .pvx-dash-profile {
1156
+ display: flex;
1157
+ align-items: center;
1158
+ gap: 1rem;
1159
+ padding: 1.25rem 1.5rem;
1160
+ }
1161
+
1162
+ .pvx-dash-profile-avatar {
1163
+ width: 4.5rem;
1164
+ height: 4.5rem;
1165
+ border-radius: 9999px;
1166
+ flex-shrink: 0;
1167
+ object-fit: cover;
1168
+ border: 2px solid var(--pvx-border);
1169
+ }
1170
+
1171
+ .pvx-dash-profile-avatar--placeholder {
1172
+ display: flex;
1173
+ align-items: center;
1174
+ justify-content: center;
1175
+ background: #374151;
1176
+ color: var(--pvx-text-primary);
1177
+ font-size: 1.5rem;
1178
+ font-weight: 700;
1179
+ }
1180
+
1181
+ .pvx-dash-profile-info {
1182
+ display: flex;
1183
+ flex-direction: column;
1184
+ gap: 0.25rem;
1185
+ }
1186
+
1187
+ .pvx-dash-profile-name {
1188
+ font-size: 1.5rem;
1189
+ font-weight: 700;
1190
+ color: var(--pvx-text-primary);
1191
+ margin: 0;
1192
+ }
1193
+
1194
+ .pvx-dash-profile-since {
1195
+ font-size: 0.875rem;
1196
+ color: var(--pvx-text-muted);
1197
+ margin: 0;
1198
+ }
1199
+
1200
+ /* ─── Stats cards ──────────────────────────────────────────────── */
1201
+
1202
+ .pvx-dash-stats {
1203
+ display: grid;
1204
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
1205
+ gap: 0.75rem;
1206
+ }
1207
+
1208
+ .pvx-dash-stat-card {
1209
+ position: relative;
1210
+ display: flex;
1211
+ align-items: flex-start;
1212
+ gap: 0.75rem;
1213
+ padding: 1.25rem 1.5rem;
1214
+ border-radius: var(--pvx-radius);
1215
+ border: 1px solid var(--pvx-border);
1216
+ background: var(--pvx-bg-card);
1217
+ }
1218
+
1219
+ @media (max-width: 639px) {
1220
+ .pvx-dash-stats {
1221
+ grid-template-columns: repeat(2, 1fr);
1222
+ }
1223
+ }
1224
+
1225
+ .pvx-dash-stat-card--has-tooltip {
1226
+ cursor: default;
1227
+ }
1228
+
1229
+ .pvx-dash-stat-icon {
1230
+ width: 1.5rem;
1231
+ height: 1.5rem;
1232
+ flex-shrink: 0;
1233
+ color: var(--pvx-accent);
1234
+ margin-top: 0.25rem;
1235
+ }
1236
+
1237
+ .pvx-dash-stat-content {
1238
+ display: flex;
1239
+ flex-direction: column;
1240
+ gap: 0.125rem;
1241
+ }
1242
+
1243
+ .pvx-dash-stat-card--rating .pvx-dash-stat-icon {
1244
+ color: var(--pvx-rank-bronze);
1245
+ }
1246
+
1247
+ .pvx-dash-stat-value {
1248
+ font-size: 1.75rem;
1249
+ font-weight: 700;
1250
+ color: var(--pvx-text-primary);
1251
+ line-height: 1;
1252
+ }
1253
+
1254
+ .pvx-dash-stat-label {
1255
+ font-size: 0.75rem;
1256
+ font-weight: 500;
1257
+ color: var(--pvx-text-muted);
1258
+ }
1259
+
1260
+ .pvx-dash-stat-sub {
1261
+ font-size: 0.6875rem;
1262
+ color: var(--pvx-text-dimmed);
1263
+ }
1264
+
1265
+ /* ─── Breakdown tooltip (on hover) ─────────────────────────────── */
1266
+
1267
+ .pvx-dash-tooltip {
1268
+ pointer-events: none;
1269
+ position: absolute;
1270
+ left: 0;
1271
+ top: 100%;
1272
+ margin-top: 0.375rem;
1273
+ z-index: 20;
1274
+ min-width: 14rem;
1275
+ padding: 0.5rem 0.75rem;
1276
+ background: #111827;
1277
+ border: 1px solid var(--pvx-border);
1278
+ border-radius: var(--pvx-radius-sm);
1279
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
1280
+ opacity: 0;
1281
+ transition: opacity 150ms;
1282
+ font-size: 0.8125rem;
1283
+ }
1284
+
1285
+ .pvx-dash-stat-card--has-tooltip:hover .pvx-dash-tooltip {
1286
+ opacity: 1;
1287
+ }
1288
+
1289
+ .pvx-dash-tooltip-row {
1290
+ display: flex;
1291
+ justify-content: space-between;
1292
+ gap: 1rem;
1293
+ padding: 0.1875rem 0;
1294
+ }
1295
+
1296
+ .pvx-dash-tooltip-label {
1297
+ color: var(--pvx-text);
1298
+ overflow: hidden;
1299
+ text-overflow: ellipsis;
1300
+ white-space: nowrap;
1301
+ }
1302
+
1303
+ .pvx-dash-tooltip-value {
1304
+ color: var(--pvx-text-muted);
1305
+ font-family: var(--pvx-font-mono);
1306
+ flex-shrink: 0;
1307
+ }
1308
+
1309
+ .pvx-dash-tooltip-more {
1310
+ color: var(--pvx-text-dimmed);
1311
+ font-size: 0.75rem;
1312
+ justify-content: center;
1313
+ padding-top: 0.25rem;
1314
+ }
1315
+
1316
+ /* ─── Records list (compact layout) ───────────────────────────── */
1317
+
1318
+ .pvx-dash-records-icon {
1319
+ display: inline-flex;
1320
+ margin-right: 0.5rem;
1321
+ vertical-align: middle;
1322
+ }
1323
+
1324
+ .pvx-dash-records-icon svg {
1325
+ width: 1.25rem;
1326
+ height: 1.25rem;
1327
+ color: var(--pvx-rank-gold);
1328
+ }
1329
+
1330
+ .pvx-dash-records-count {
1331
+ font-weight: 400;
1332
+ font-size: 0.875rem;
1333
+ color: var(--pvx-text-muted);
1334
+ margin-left: 0.375rem;
1335
+ }
1336
+
1337
+ .pvx-dash-records-list {
1338
+ display: flex;
1339
+ flex-direction: column;
1340
+ }
1341
+
1342
+ .pvx-dash-record-row {
1343
+ display: flex;
1344
+ align-items: center;
1345
+ justify-content: space-between;
1346
+ gap: 1rem;
1347
+ padding: 0.625rem 1rem;
1348
+ }
1349
+
1350
+ .pvx-dash-record-row + .pvx-dash-record-row {
1351
+ border-top: 1px solid rgba(31, 41, 55, 0.5);
1352
+ }
1353
+
1354
+ .pvx-dash-record-info {
1355
+ display: flex;
1356
+ flex-direction: column;
1357
+ gap: 0.125rem;
1358
+ min-width: 0;
1359
+ }
1360
+
1361
+ .pvx-dash-record-track {
1362
+ font-weight: 600;
1363
+ font-size: 0.9375rem;
1364
+ color: var(--pvx-text-primary);
1365
+ white-space: nowrap;
1366
+ overflow: hidden;
1367
+ text-overflow: ellipsis;
1368
+ }
1369
+
1370
+ .pvx-dash-record-car {
1371
+ font-size: 0.8125rem;
1372
+ color: var(--pvx-text-muted);
1373
+ white-space: nowrap;
1374
+ overflow: hidden;
1375
+ text-overflow: ellipsis;
1376
+ }
1377
+
1378
+ .pvx-dash-record-time {
1379
+ display: flex;
1380
+ flex-direction: column;
1381
+ align-items: flex-end;
1382
+ gap: 0.125rem;
1383
+ flex-shrink: 0;
1384
+ }
1385
+
1386
+ .pvx-dash-record-lap {
1387
+ font-family: var(--pvx-font-mono);
1388
+ font-size: 1rem;
1389
+ font-weight: 600;
1390
+ color: var(--pvx-text-primary);
1391
+ }
1392
+
1393
+ .pvx-dash-records-toggle {
1394
+ display: block;
1395
+ width: 100%;
1396
+ padding: 0.625rem 1rem;
1397
+ border: none;
1398
+ border-top: 1px solid var(--pvx-border);
1399
+ background: transparent;
1400
+ color: var(--pvx-accent);
1401
+ font-size: 0.8125rem;
1402
+ font-weight: 500;
1403
+ cursor: pointer;
1404
+ transition: color 150ms;
1405
+ }
1406
+
1407
+ .pvx-dash-records-toggle:hover {
1408
+ color: var(--pvx-accent-hover);
1409
+ }
1410
+
1411
+ /* ─── Game badge ───────────────────────────────────────────────── */
1412
+
1413
+ .pvx-dash-game-badge {
1414
+ display: inline-block;
1415
+ padding: 0.125rem 0.5rem;
1416
+ border-radius: 0.25rem;
1417
+ font-size: 0.6875rem;
1418
+ font-weight: 600;
1419
+ letter-spacing: 0.03em;
1420
+ }
1421
+
1422
+ .pvx-dash-game-badge--evo {
1423
+ background: rgba(99, 102, 241, 0.2);
1424
+ color: #818cf8;
1425
+ }
1426
+
1427
+ .pvx-dash-game-badge--acc {
1428
+ background: rgba(245, 158, 11, 0.2);
1429
+ color: #fbbf24;
1430
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pitvox/partner-react",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "React hooks, components, and drop-in leaderboard + competition experiences for PitVox partner websites",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",