|
316 | 316 | margin-top: 40px; |
317 | 317 | } |
318 | 318 |
|
| 319 | +/* Meta Panel - Collapsible Pro Design 2025 */ |
319 | 320 | .meta-panel { |
320 | 321 | margin-top: 22px; |
321 | 322 | margin-bottom: 20px; |
322 | | - padding: 14px 16px; |
323 | 323 | background: var(--surface-1); |
324 | 324 | border: 1px solid var(--border-subtle); |
325 | 325 | border-radius: var(--radius-lg); |
| 326 | + overflow: hidden; |
| 327 | + transition: all var(--transition-base); |
| 328 | +} |
| 329 | +
|
| 330 | +.meta-panel:hover { |
| 331 | + border-color: var(--border-default); |
| 332 | +} |
| 333 | +
|
| 334 | +.meta-header { |
| 335 | + display: flex; |
| 336 | + align-items: center; |
| 337 | + justify-content: space-between; |
| 338 | + padding: 14px 16px; |
| 339 | + cursor: pointer; |
| 340 | + user-select: none; |
| 341 | + transition: background var(--transition-fast); |
| 342 | +} |
| 343 | +
|
| 344 | +.meta-header:hover { |
| 345 | + background: var(--surface-2); |
| 346 | +} |
| 347 | +
|
| 348 | +.meta-header-left { |
| 349 | + display: flex; |
| 350 | + align-items: center; |
| 351 | + gap: 12px; |
| 352 | +} |
| 353 | +
|
| 354 | +.meta-toggle { |
| 355 | + width: 18px; |
| 356 | + height: 18px; |
| 357 | + display: flex; |
| 358 | + align-items: center; |
| 359 | + justify-content: center; |
| 360 | + transition: transform var(--transition-base); |
| 361 | + color: var(--text-tertiary); |
| 362 | + flex-shrink: 0; |
| 363 | +} |
| 364 | +
|
| 365 | +.meta-toggle.collapsed { |
| 366 | + transform: rotate(-90deg); |
326 | 367 | } |
327 | 368 |
|
328 | 369 | .meta-title { |
329 | 370 | font-size: var(--text-sm); |
330 | 371 | font-weight: 700; |
331 | 372 | color: var(--text-primary); |
332 | | - margin-bottom: 10px; |
| 373 | + margin: 0; |
| 374 | +} |
| 375 | +
|
| 376 | +.meta-badge { |
| 377 | + font-size: 11px; |
| 378 | + font-weight: 500; |
| 379 | + color: var(--text-tertiary); |
| 380 | + background: var(--surface-2); |
| 381 | + padding: 2px 8px; |
| 382 | + border-radius: var(--radius-sm); |
| 383 | + border: 1px solid var(--border-subtle); |
| 384 | +} |
| 385 | +
|
| 386 | +.meta-content { |
| 387 | + overflow: hidden; |
| 388 | + transition: max-height var(--transition-slow), opacity var(--transition-base); |
| 389 | + max-height: 2000px; |
| 390 | + opacity: 1; |
| 391 | +} |
| 392 | +
|
| 393 | +.meta-content.collapsed { |
| 394 | + max-height: 0; |
| 395 | + opacity: 0; |
| 396 | +} |
| 397 | +
|
| 398 | +.meta-body { |
| 399 | + padding: 14px 16px 16px; |
| 400 | + border-top: 1px solid var(--border-subtle); |
333 | 401 | } |
334 | 402 |
|
335 | 403 | .meta-grid { |
336 | 404 | margin: 0; |
337 | 405 | display: grid; |
338 | | - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); |
339 | | - gap: 8px 16px; |
| 406 | + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); |
| 407 | + gap: 12px; |
| 408 | + row-gap: 10px; |
340 | 409 | } |
341 | 410 |
|
342 | 411 | .meta-row { |
343 | | - display: grid; |
344 | | - grid-template-columns: 160px 1fr; |
345 | | - gap: 8px; |
| 412 | + display: flex; |
| 413 | + flex-direction: column; |
| 414 | + gap: 6px; |
| 415 | + padding: 10px 12px; |
| 416 | + background: var(--surface-0); |
| 417 | + border: 1px solid var(--border-subtle); |
| 418 | + border-radius: var(--radius); |
| 419 | + transition: all var(--transition-fast); |
346 | 420 | margin: 0; |
347 | 421 | min-width: 0; |
348 | 422 | } |
349 | 423 |
|
| 424 | +.meta-row:hover { |
| 425 | + background: var(--surface-2); |
| 426 | + border-color: var(--border-default); |
| 427 | +} |
| 428 | +
|
| 429 | +.meta-row-wide { |
| 430 | + grid-column: 1 / -1; |
| 431 | +} |
| 432 | +
|
350 | 433 | .meta-row dt { |
351 | 434 | color: var(--text-muted); |
352 | 435 | font-size: var(--text-xs); |
353 | 436 | font-weight: 600; |
354 | 437 | text-transform: uppercase; |
355 | 438 | letter-spacing: 0.02em; |
| 439 | + display: flex; |
| 440 | + align-items: center; |
| 441 | + gap: 6px; |
356 | 442 | } |
357 | 443 |
|
358 | 444 | .meta-row dd { |
359 | 445 | margin: 0; |
360 | | - color: var(--text-secondary); |
| 446 | + color: var(--text-primary); |
361 | 447 | font-family: var(--font-mono); |
362 | 448 | font-size: var(--text-xs); |
363 | | - word-break: normal; |
364 | | - overflow-wrap: anywhere; |
| 449 | + line-height: 1.4; |
| 450 | + position: relative; |
| 451 | + overflow: hidden; |
365 | 452 | } |
366 | 453 |
|
367 | | -.meta-row-wide { |
368 | | - grid-column: 1 / -1; |
| 454 | +/* Path truncation with hover tooltip */ |
| 455 | +.meta-path { |
| 456 | + display: block; |
| 457 | + white-space: nowrap; |
| 458 | + overflow: hidden; |
| 459 | + text-overflow: ellipsis; |
| 460 | + max-width: 100%; |
| 461 | + cursor: help; |
| 462 | + position: relative; |
| 463 | + padding: 2px 0; |
| 464 | +} |
| 465 | +
|
| 466 | +.meta-path:hover { |
| 467 | + color: var(--accent-primary); |
| 468 | +} |
| 469 | +
|
| 470 | +.meta-path-tooltip { |
| 471 | + position: absolute; |
| 472 | + left: 0; |
| 473 | + bottom: calc(100% + 8px); |
| 474 | + background: var(--surface-3); |
| 475 | + color: var(--text-primary); |
| 476 | + padding: 8px 12px; |
| 477 | + border-radius: var(--radius); |
| 478 | + font-size: var(--text-xs); |
| 479 | + white-space: normal; |
| 480 | + word-break: break-all; |
| 481 | + border: 1px solid var(--border-default); |
| 482 | + box-shadow: var(--elevation-3); |
| 483 | + opacity: 0; |
| 484 | + pointer-events: none; |
| 485 | + transition: opacity var(--transition-fast); |
| 486 | + z-index: 1000; |
| 487 | + max-width: 600px; |
| 488 | + min-width: 200px; |
| 489 | +} |
| 490 | +
|
| 491 | +.meta-path:hover .meta-path-tooltip { |
| 492 | + opacity: 1; |
| 493 | +} |
| 494 | +
|
| 495 | +/* Boolean value badges */ |
| 496 | +.meta-bool { |
| 497 | + display: inline-flex; |
| 498 | + align-items: center; |
| 499 | + padding: 3px 8px; |
| 500 | + border-radius: var(--radius-sm); |
| 501 | + font-size: 11px; |
| 502 | + font-weight: 500; |
| 503 | + font-family: var(--font-sans); |
| 504 | +} |
| 505 | +
|
| 506 | +.meta-bool-true { |
| 507 | + background: var(--success-subtle); |
| 508 | + color: var(--success); |
| 509 | + border: 1px solid rgba(16, 185, 129, 0.3); |
| 510 | +} |
| 511 | +
|
| 512 | +.meta-bool-false { |
| 513 | + background: var(--surface-2); |
| 514 | + color: var(--text-muted); |
| 515 | + border: 1px solid var(--border-default); |
| 516 | +} |
| 517 | +
|
| 518 | +.meta-bool-na { |
| 519 | + background: var(--surface-2); |
| 520 | + color: var(--text-tertiary); |
| 521 | + border: 1px solid var(--border-subtle); |
| 522 | + font-style: italic; |
369 | 523 | } |
370 | 524 |
|
371 | 525 | .section-head { |
|
2251 | 2405 | if (state.chartVisible) renderComplexityChart(); |
2252 | 2406 | }); |
2253 | 2407 |
|
| 2408 | + // ========== Meta Panel Toggle ========== |
| 2409 | + function initMetaPanel() { |
| 2410 | + const header = $$('.meta-header'); |
| 2411 | + const toggle = $$('.meta-toggle'); |
| 2412 | + const content = $$('.meta-content'); |
| 2413 | +
|
| 2414 | + if (!header || !toggle || !content) return; |
| 2415 | +
|
| 2416 | + // Start collapsed by default to save space |
| 2417 | + const startCollapsed = true; |
| 2418 | + if (startCollapsed) { |
| 2419 | + toggle.classList.add('collapsed'); |
| 2420 | + content.classList.add('collapsed'); |
| 2421 | + } |
| 2422 | +
|
| 2423 | + header.addEventListener('click', (e) => { |
| 2424 | + const isCollapsed = toggle.classList.contains('collapsed'); |
| 2425 | +
|
| 2426 | + if (isCollapsed) { |
| 2427 | + toggle.classList.remove('collapsed'); |
| 2428 | + content.classList.remove('collapsed'); |
| 2429 | + } else { |
| 2430 | + toggle.classList.add('collapsed'); |
| 2431 | + content.classList.add('collapsed'); |
| 2432 | + } |
| 2433 | + }); |
| 2434 | + } |
| 2435 | +
|
2254 | 2436 | // ========== Initialize ========== |
2255 | 2437 | initTheme(); |
2256 | 2438 | initCommandPalette(); |
| 2439 | + initMetaPanel(); |
2257 | 2440 | initSection('functions'); |
2258 | 2441 | initSection('blocks'); |
2259 | 2442 | initSection('segments'); |
|
0 commit comments