@almadar/ui 5.48.0 → 5.49.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.
Files changed (35) hide show
  1. package/dist/avl/index.cjs +4173 -1650
  2. package/dist/avl/index.css +504 -0
  3. package/dist/avl/index.js +3101 -579
  4. package/dist/components/core/templates/index.d.ts +3 -0
  5. package/dist/components/game/atoms/ActionButton.d.ts +4 -1
  6. package/dist/components/game/atoms/ControlButton.d.ts +4 -2
  7. package/dist/components/game/atoms/DamageNumber.d.ts +4 -1
  8. package/dist/components/game/atoms/ScoreDisplay.d.ts +4 -1
  9. package/dist/components/game/atoms/TurnIndicator.d.ts +4 -1
  10. package/dist/components/game/molecules/EnemyPlate.d.ts +4 -1
  11. package/dist/components/game/molecules/StatBadge.d.ts +4 -1
  12. package/dist/components/game/molecules/three/index.cjs +1371 -283
  13. package/dist/components/game/molecules/three/index.js +1372 -284
  14. package/dist/components/game/organisms/GameBoard3D.d.ts +62 -0
  15. package/dist/components/game/organisms/PlatformerBoard.d.ts +51 -0
  16. package/dist/components/game/organisms/RoguelikeBoard.d.ts +59 -0
  17. package/dist/components/game/organisms/TowerDefenseBoard.d.ts +64 -0
  18. package/dist/components/game/organisms/index.d.ts +4 -0
  19. package/dist/components/game/templates/GameCanvas3DBattleTemplate.d.ts +22 -35
  20. package/dist/components/game/templates/GameCanvas3DCastleTemplate.d.ts +23 -23
  21. package/dist/components/game/templates/GameCanvas3DWorldMapTemplate.d.ts +27 -29
  22. package/dist/components/game/templates/PlatformerTemplate.d.ts +26 -0
  23. package/dist/components/game/templates/RoguelikeTemplate.d.ts +23 -0
  24. package/dist/components/game/templates/TowerDefenseTemplate.d.ts +43 -0
  25. package/dist/components/index.cjs +3837 -1467
  26. package/dist/components/index.css +504 -0
  27. package/dist/components/index.js +2908 -546
  28. package/dist/docs/index.css +504 -0
  29. package/dist/providers/index.cjs +3826 -1603
  30. package/dist/providers/index.css +504 -0
  31. package/dist/providers/index.js +2915 -693
  32. package/dist/runtime/index.cjs +4025 -1502
  33. package/dist/runtime/index.css +504 -0
  34. package/dist/runtime/index.js +3068 -546
  35. package/package.json +1 -1
@@ -1160,6 +1160,510 @@ body {
1160
1160
  counter-reset: katexEqnNo mmlEqnNo;
1161
1161
  }
1162
1162
 
1163
+ /* components/game/molecules/three/components/Canvas3DLoadingState.css */
1164
+ .canvas-3d-loading {
1165
+ position: absolute;
1166
+ inset: 0;
1167
+ display: flex;
1168
+ align-items: center;
1169
+ justify-content: center;
1170
+ background:
1171
+ linear-gradient(
1172
+ 135deg,
1173
+ #1a1a2e 0%,
1174
+ #16213e 50%,
1175
+ #0f3460 100%);
1176
+ overflow: hidden;
1177
+ z-index: 100;
1178
+ }
1179
+ .canvas-3d-loading__content {
1180
+ position: relative;
1181
+ z-index: 2;
1182
+ display: flex;
1183
+ flex-direction: column;
1184
+ align-items: center;
1185
+ gap: 20px;
1186
+ padding: 40px;
1187
+ background: rgba(255, 255, 255, 0.05);
1188
+ backdrop-filter: blur(10px);
1189
+ border-radius: 16px;
1190
+ border: 1px solid rgba(255, 255, 255, 0.1);
1191
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
1192
+ }
1193
+ .canvas-3d-loading__spinner {
1194
+ position: relative;
1195
+ width: 80px;
1196
+ height: 80px;
1197
+ }
1198
+ .spinner__ring {
1199
+ position: absolute;
1200
+ inset: 0;
1201
+ border: 4px solid transparent;
1202
+ border-top-color: #4488ff;
1203
+ border-radius: 50%;
1204
+ animation: spin 1s linear infinite;
1205
+ }
1206
+ .spinner__ring--secondary {
1207
+ inset: 10px;
1208
+ border-top-color: #ff6b6b;
1209
+ animation-duration: 1.5s;
1210
+ animation-direction: reverse;
1211
+ }
1212
+ @keyframes spin {
1213
+ from {
1214
+ transform: rotate(0deg);
1215
+ }
1216
+ to {
1217
+ transform: rotate(360deg);
1218
+ }
1219
+ }
1220
+ .canvas-3d-loading__message {
1221
+ font-size: 20px;
1222
+ font-weight: 600;
1223
+ color: #ffffff;
1224
+ text-align: center;
1225
+ letter-spacing: 0.5px;
1226
+ }
1227
+ .canvas-3d-loading__details {
1228
+ font-size: 14px;
1229
+ color: rgba(255, 255, 255, 0.6);
1230
+ text-align: center;
1231
+ font-family: monospace;
1232
+ max-width: 300px;
1233
+ overflow: hidden;
1234
+ text-overflow: ellipsis;
1235
+ white-space: nowrap;
1236
+ }
1237
+ .canvas-3d-loading__progress {
1238
+ width: 100%;
1239
+ max-width: 280px;
1240
+ display: flex;
1241
+ flex-direction: column;
1242
+ gap: 8px;
1243
+ }
1244
+ .progress__bar {
1245
+ height: 6px;
1246
+ background: rgba(255, 255, 255, 0.1);
1247
+ border-radius: 3px;
1248
+ overflow: hidden;
1249
+ }
1250
+ .progress__fill {
1251
+ height: 100%;
1252
+ background:
1253
+ linear-gradient(
1254
+ 90deg,
1255
+ #4488ff,
1256
+ #ff6b6b);
1257
+ border-radius: 3px;
1258
+ transition: width 0.3s ease;
1259
+ }
1260
+ .progress__text {
1261
+ display: flex;
1262
+ justify-content: space-between;
1263
+ font-size: 12px;
1264
+ color: rgba(255, 255, 255, 0.7);
1265
+ }
1266
+ .progress__percentage {
1267
+ font-weight: 600;
1268
+ color: #4488ff;
1269
+ }
1270
+ .progress__count {
1271
+ font-family: monospace;
1272
+ }
1273
+ .canvas-3d-loading__background {
1274
+ position: absolute;
1275
+ inset: 0;
1276
+ z-index: 1;
1277
+ opacity: 0.3;
1278
+ }
1279
+ .bg__grid {
1280
+ position: absolute;
1281
+ inset: -50%;
1282
+ background-image:
1283
+ linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
1284
+ linear-gradient(
1285
+ 90deg,
1286
+ rgba(255, 255, 255, 0.03) 1px,
1287
+ transparent 1px);
1288
+ background-size: 50px 50px;
1289
+ animation: gridMove 20s linear infinite;
1290
+ }
1291
+ @keyframes gridMove {
1292
+ 0% {
1293
+ transform: perspective(500px) rotateX(60deg) translateY(0);
1294
+ }
1295
+ 100% {
1296
+ transform: perspective(500px) rotateX(60deg) translateY(50px);
1297
+ }
1298
+ }
1299
+ @media (max-width: 480px) {
1300
+ .canvas-3d-loading__content {
1301
+ padding: 30px 20px;
1302
+ margin: 20px;
1303
+ }
1304
+ .canvas-3d-loading__spinner {
1305
+ width: 60px;
1306
+ height: 60px;
1307
+ }
1308
+ .canvas-3d-loading__message {
1309
+ font-size: 16px;
1310
+ }
1311
+ .canvas-3d-loading__details {
1312
+ font-size: 12px;
1313
+ }
1314
+ }
1315
+
1316
+ /* components/game/molecules/three/components/Canvas3DErrorBoundary.css */
1317
+ .canvas-3d-error {
1318
+ position: absolute;
1319
+ inset: 0;
1320
+ display: flex;
1321
+ align-items: center;
1322
+ justify-content: center;
1323
+ background:
1324
+ linear-gradient(
1325
+ 135deg,
1326
+ #2e1a1a 0%,
1327
+ #3e1616 50%,
1328
+ #4a1a1a 100%);
1329
+ padding: 20px;
1330
+ z-index: 100;
1331
+ }
1332
+ .canvas-3d-error__content {
1333
+ max-width: 600px;
1334
+ width: 100%;
1335
+ padding: 40px;
1336
+ background: rgba(0, 0, 0, 0.4);
1337
+ backdrop-filter: blur(10px);
1338
+ border-radius: 16px;
1339
+ border: 1px solid rgba(255, 100, 100, 0.2);
1340
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
1341
+ text-align: center;
1342
+ }
1343
+ .canvas-3d-error__icon {
1344
+ font-size: 64px;
1345
+ margin-bottom: 20px;
1346
+ animation: shake 0.5s ease-in-out;
1347
+ }
1348
+ @keyframes shake {
1349
+ 0%, 100% {
1350
+ transform: translateX(0);
1351
+ }
1352
+ 25% {
1353
+ transform: translateX(-10px);
1354
+ }
1355
+ 75% {
1356
+ transform: translateX(10px);
1357
+ }
1358
+ }
1359
+ .canvas-3d-error__title {
1360
+ font-size: 28px;
1361
+ font-weight: 700;
1362
+ color: #ff6b6b;
1363
+ margin: 0 0 16px;
1364
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
1365
+ }
1366
+ .canvas-3d-error__message {
1367
+ font-size: 16px;
1368
+ color: rgba(255, 255, 255, 0.8);
1369
+ margin: 0 0 24px;
1370
+ line-height: 1.5;
1371
+ }
1372
+ .canvas-3d-error__details {
1373
+ margin: 24px 0;
1374
+ text-align: start;
1375
+ background: rgba(0, 0, 0, 0.3);
1376
+ border-radius: 8px;
1377
+ overflow: hidden;
1378
+ }
1379
+ .canvas-3d-error__details summary {
1380
+ padding: 12px 16px;
1381
+ cursor: pointer;
1382
+ color: #ff9999;
1383
+ font-weight: 600;
1384
+ -webkit-user-select: none;
1385
+ -moz-user-select: none;
1386
+ user-select: none;
1387
+ transition: background 0.2s ease;
1388
+ }
1389
+ .canvas-3d-error__details summary:hover {
1390
+ background: rgba(255, 100, 100, 0.1);
1391
+ }
1392
+ .error__stack,
1393
+ .error__component-stack {
1394
+ padding: 16px;
1395
+ margin: 0;
1396
+ font-family:
1397
+ "Fira Code",
1398
+ "Monaco",
1399
+ "Consolas",
1400
+ monospace;
1401
+ font-size: 12px;
1402
+ line-height: 1.6;
1403
+ color: #ffaaaa;
1404
+ background: rgba(0, 0, 0, 0.5);
1405
+ overflow-x: auto;
1406
+ white-space: pre-wrap;
1407
+ word-break: break-all;
1408
+ }
1409
+ .error__component-stack {
1410
+ border-top: 1px solid rgba(255, 100, 100, 0.2);
1411
+ color: #ff8888;
1412
+ }
1413
+ .canvas-3d-error__actions {
1414
+ display: flex;
1415
+ gap: 12px;
1416
+ justify-content: center;
1417
+ margin-top: 24px;
1418
+ flex-wrap: wrap;
1419
+ }
1420
+ .error__button {
1421
+ padding: 12px 24px;
1422
+ font-size: 14px;
1423
+ font-weight: 600;
1424
+ border-radius: 8px;
1425
+ border: none;
1426
+ cursor: pointer;
1427
+ transition: all 0.2s ease;
1428
+ }
1429
+ .error__button--primary {
1430
+ background:
1431
+ linear-gradient(
1432
+ 135deg,
1433
+ #ff6b6b,
1434
+ #ff4444);
1435
+ color: white;
1436
+ }
1437
+ .error__button--primary:hover {
1438
+ background:
1439
+ linear-gradient(
1440
+ 135deg,
1441
+ #ff8888,
1442
+ #ff6666);
1443
+ transform: translateY(-2px);
1444
+ box-shadow: 0 4px 12px rgba(255, 107, 107, 0.4);
1445
+ }
1446
+ .error__button--secondary {
1447
+ background: rgba(255, 255, 255, 0.1);
1448
+ color: rgba(255, 255, 255, 0.9);
1449
+ border: 1px solid rgba(255, 255, 255, 0.2);
1450
+ }
1451
+ .error__button--secondary:hover {
1452
+ background: rgba(255, 255, 255, 0.15);
1453
+ transform: translateY(-2px);
1454
+ }
1455
+ .error__button:active {
1456
+ transform: translateY(0);
1457
+ }
1458
+ @media (max-width: 480px) {
1459
+ .canvas-3d-error__content {
1460
+ padding: 30px 20px;
1461
+ }
1462
+ .canvas-3d-error__icon {
1463
+ font-size: 48px;
1464
+ }
1465
+ .canvas-3d-error__title {
1466
+ font-size: 22px;
1467
+ }
1468
+ .canvas-3d-error__message {
1469
+ font-size: 14px;
1470
+ }
1471
+ .canvas-3d-error__actions {
1472
+ flex-direction: column;
1473
+ }
1474
+ .error__button {
1475
+ width: 100%;
1476
+ }
1477
+ }
1478
+
1479
+ /* components/game/molecules/GameCanvas3D.css */
1480
+ .game-canvas-3d {
1481
+ background: #1a1a2e;
1482
+ border-radius: 8px;
1483
+ }
1484
+ .game-canvas-3d canvas {
1485
+ display: block;
1486
+ width: 100%;
1487
+ height: 100%;
1488
+ }
1489
+ .game-canvas-3d--loading {
1490
+ display: flex;
1491
+ align-items: center;
1492
+ justify-content: center;
1493
+ background:
1494
+ linear-gradient(
1495
+ 135deg,
1496
+ #1a1a2e 0%,
1497
+ #16213e 100%);
1498
+ }
1499
+ .game-canvas-3d__loading {
1500
+ padding: 20px 40px;
1501
+ background: rgba(255, 255, 255, 0.1);
1502
+ border-radius: 8px;
1503
+ color: #ffffff;
1504
+ font-size: 16px;
1505
+ animation: pulse 1.5s ease-in-out infinite;
1506
+ }
1507
+ .game-canvas-3d--error {
1508
+ display: flex;
1509
+ align-items: center;
1510
+ justify-content: center;
1511
+ background:
1512
+ linear-gradient(
1513
+ 135deg,
1514
+ #2e1a1a 0%,
1515
+ #3e1616 100%);
1516
+ }
1517
+ .game-canvas-3d__error {
1518
+ padding: 20px 40px;
1519
+ background: rgba(255, 0, 0, 0.2);
1520
+ border: 1px solid rgba(255, 0, 0, 0.3);
1521
+ border-radius: 8px;
1522
+ color: #ff6b6b;
1523
+ font-size: 14px;
1524
+ }
1525
+ .game-canvas-3d__coordinates {
1526
+ position: absolute;
1527
+ bottom: 20px;
1528
+ left: 20px;
1529
+ padding: 8px 16px;
1530
+ background: rgba(0, 0, 0, 0.7);
1531
+ border-radius: 4px;
1532
+ color: #ffffff;
1533
+ font-family: monospace;
1534
+ font-size: 12px;
1535
+ pointer-events: none;
1536
+ z-index: 10;
1537
+ }
1538
+ .game-canvas-3d__tile-info {
1539
+ position: absolute;
1540
+ top: 20px;
1541
+ left: 20px;
1542
+ padding: 12px 16px;
1543
+ background: rgba(0, 0, 0, 0.8);
1544
+ border-radius: 6px;
1545
+ color: #ffffff;
1546
+ pointer-events: none;
1547
+ z-index: 10;
1548
+ min-width: 120px;
1549
+ }
1550
+ .tile-info__type {
1551
+ font-weight: 600;
1552
+ font-size: 14px;
1553
+ text-transform: capitalize;
1554
+ margin-bottom: 4px;
1555
+ }
1556
+ .tile-info__terrain {
1557
+ font-size: 12px;
1558
+ color: #aaaaaa;
1559
+ }
1560
+ @keyframes pulse {
1561
+ 0%, 100% {
1562
+ opacity: 1;
1563
+ }
1564
+ 50% {
1565
+ opacity: 0.5;
1566
+ }
1567
+ }
1568
+ .game-canvas-3d[data-camera-mode=isometric]::before {
1569
+ content: "Isometric";
1570
+ position: absolute;
1571
+ top: 20px;
1572
+ right: 20px;
1573
+ padding: 6px 12px;
1574
+ background: rgba(0, 0, 0, 0.6);
1575
+ border-radius: 4px;
1576
+ color: #ffffff;
1577
+ font-size: 11px;
1578
+ text-transform: uppercase;
1579
+ letter-spacing: 1px;
1580
+ pointer-events: none;
1581
+ }
1582
+ .game-canvas-3d[data-camera-mode=perspective]::before {
1583
+ content: "Perspective";
1584
+ position: absolute;
1585
+ top: 20px;
1586
+ right: 20px;
1587
+ padding: 6px 12px;
1588
+ background: rgba(0, 0, 0, 0.6);
1589
+ border-radius: 4px;
1590
+ color: #ffffff;
1591
+ font-size: 11px;
1592
+ text-transform: uppercase;
1593
+ letter-spacing: 1px;
1594
+ pointer-events: none;
1595
+ }
1596
+ .game-canvas-3d[data-camera-mode=top-down]::before {
1597
+ content: "Top Down";
1598
+ position: absolute;
1599
+ top: 20px;
1600
+ right: 20px;
1601
+ padding: 6px 12px;
1602
+ background: rgba(0, 0, 0, 0.6);
1603
+ border-radius: 4px;
1604
+ color: #ffffff;
1605
+ font-size: 11px;
1606
+ text-transform: uppercase;
1607
+ letter-spacing: 1px;
1608
+ pointer-events: none;
1609
+ }
1610
+ .game-canvas-3d[data-overlay=hidden] .game-canvas-3d__coordinates,
1611
+ .game-canvas-3d[data-overlay=hidden] .game-canvas-3d__tile-info,
1612
+ .game-canvas-3d[data-overlay=hidden]::before {
1613
+ display: none;
1614
+ }
1615
+ .game-canvas-3d[data-orientation=rotated] {
1616
+ }
1617
+ .game-canvas-3d canvas {
1618
+ cursor: crosshair;
1619
+ }
1620
+ .game-canvas-3d canvas:active {
1621
+ cursor: grabbing;
1622
+ }
1623
+ @media (max-width: 768px) {
1624
+ .game-canvas-3d__coordinates,
1625
+ .game-canvas-3d__tile-info {
1626
+ font-size: 10px;
1627
+ padding: 6px 10px;
1628
+ }
1629
+ .game-canvas-3d::before {
1630
+ font-size: 9px;
1631
+ padding: 4px 8px;
1632
+ }
1633
+ }
1634
+ .game-canvas-3d:focus {
1635
+ outline: 2px solid #4488ff;
1636
+ outline-offset: 2px;
1637
+ }
1638
+ .game-canvas-3d canvas {
1639
+ transition: opacity 0.3s ease;
1640
+ }
1641
+ .game-canvas-3d__context-menu {
1642
+ position: absolute;
1643
+ background: rgba(0, 0, 0, 0.9);
1644
+ border: 1px solid rgba(255, 255, 255, 0.1);
1645
+ border-radius: 6px;
1646
+ padding: 8px 0;
1647
+ min-width: 150px;
1648
+ z-index: 100;
1649
+ }
1650
+ .game-canvas-3d__context-menu-item {
1651
+ padding: 8px 16px;
1652
+ color: #ffffff;
1653
+ cursor: pointer;
1654
+ font-size: 13px;
1655
+ transition: background 0.15s ease;
1656
+ }
1657
+ .game-canvas-3d__context-menu-item:hover {
1658
+ background: rgba(255, 255, 255, 0.1);
1659
+ }
1660
+ .game-canvas-3d__context-menu-item--danger {
1661
+ color: #ff6b6b;
1662
+ }
1663
+ .game-canvas-3d__context-menu-item--danger:hover {
1664
+ background: rgba(255, 0, 0, 0.2);
1665
+ }
1666
+
1163
1667
  /* components/core/organisms/debug/RuntimeDebugger.css */
1164
1668
  .runtime-debugger {
1165
1669
  font-family: