@rolemodel/optics 2.3.1 → 2.4.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.
@@ -2213,6 +2213,11 @@ small {
2213
2213
  flex-grow: 1;
2214
2214
  }
2215
2215
  /* Gap Properties */
2216
+ .gap-none {
2217
+ gap: 0;
2218
+
2219
+ --op-gap: 0;
2220
+ }
2216
2221
  .gap-xxs {
2217
2222
  gap: var(--op-space-2x-small);
2218
2223
 
@@ -2461,28 +2466,168 @@ small {
2461
2466
  .op-stack {
2462
2467
  display: flex;
2463
2468
  flex-direction: column;
2464
- }
2465
- :where(.op-stack) {
2466
- gap: var(--op-space-medium);
2469
+ margin-block: 0;
2470
+ margin-inline: 0;
2471
+
2472
+ /* zero specificity. Lets utilities override */
2473
+ :where(&) {
2474
+ gap: var(--op-space-medium);
2475
+ }
2467
2476
  }
2468
2477
  /* Equivalent to .flex.flex-wrap.items-center.gap-md */
2469
2478
  .op-cluster {
2470
2479
  display: flex;
2471
2480
  flex-wrap: wrap;
2472
- }
2473
- :where(.op-cluster) {
2474
- align-items: center;
2475
- gap: var(--op-space-medium);
2481
+ margin-block: 0;
2482
+ margin-inline: 0;
2483
+
2484
+ /* zero specificity. Lets utilities override */
2485
+ :where(&) {
2486
+ align-items: center;
2487
+ gap: var(--op-space-medium);
2488
+ }
2476
2489
  }
2477
2490
  /* Equivalent to .flex.flex-wrap.items-center.justify-between.gap-md */
2478
2491
  .op-split {
2479
2492
  display: flex;
2480
2493
  flex-wrap: wrap;
2481
2494
  justify-content: space-between;
2495
+ margin-block: 0;
2496
+ margin-inline: 0;
2497
+
2498
+ /* zero specificity. Lets utilities override */
2499
+ :where(&) {
2500
+ align-items: center;
2501
+ gap: var(--op-space-medium);
2502
+ }
2482
2503
  }
2483
- :where(.op-split) {
2484
- align-items: center;
2485
- gap: var(--op-space-medium);
2504
+ /*
2505
+ side by side layout with a small area and a large area
2506
+ similar to .flex with a .flex-grow-1 within it, but with a more semantic name and wrap handling.
2507
+
2508
+ |[] [ ]|
2509
+ |[ ] []| with end
2510
+ */
2511
+ .op-flank {
2512
+ display: flex;
2513
+ margin-block: 0;
2514
+ margin-inline: 0;
2515
+
2516
+ /* zero specificity. Lets utilities override */
2517
+ :where(&) {
2518
+ flex-wrap: wrap;
2519
+ align-items: center;
2520
+ gap: var(--op-space-medium);
2521
+ }
2522
+
2523
+ /* Small area */
2524
+ &:not(.op-flank--end) > :first-child,
2525
+ &.op-flank--end > :last-child {
2526
+ flex-basis: auto;
2527
+ flex-grow: 1;
2528
+ }
2529
+
2530
+ /* Large area */
2531
+ &:not(.op-flank--end) > :last-child,
2532
+ &.op-flank--end > :first-child {
2533
+ flex-basis: 0;
2534
+ flex-grow: 999;
2535
+ }
2536
+ }
2537
+ /* Grid Layout */
2538
+ .op-grid {
2539
+ --_op-grid-min-column-size: var(--op-space-4x-large);
2540
+ --_op-grid-max-column-size: 0px;
2541
+
2542
+ display: grid;
2543
+ grid-template-columns: repeat(
2544
+ auto-fit,
2545
+ minmax(max(var(--_op-grid-min-column-size), var(--_op-grid-max-column-size)), 1fr)
2546
+ );
2547
+ margin-block: 0;
2548
+ margin-inline: 0;
2549
+
2550
+ /* zero specificity. Lets utilities override */
2551
+ :where(&) {
2552
+ gap: var(--op-space-medium);
2553
+ }
2554
+
2555
+ &.op-grid--2-column {
2556
+ --_op-grid-max-column-size: calc(100% / 3);
2557
+ }
2558
+
2559
+ &.op-grid--3-column {
2560
+ --_op-grid-max-column-size: calc(100% / 4);
2561
+ }
2562
+
2563
+ &.op-grid--4-column {
2564
+ --_op-grid-max-column-size: calc(100% / 5);
2565
+ }
2566
+
2567
+ &.op-grid--5-column {
2568
+ --_op-grid-max-column-size: calc(100% / 6);
2569
+ }
2570
+
2571
+ &.op-grid--6-column {
2572
+ --_op-grid-max-column-size: calc(100% / 7);
2573
+ }
2574
+ }
2575
+ /* Frame */
2576
+ @property --_op-frame-inline-size {
2577
+ inherits: true;
2578
+ initial-value: 100%;
2579
+ syntax: '<length> | <percentage>';
2580
+ }
2581
+ .op-frame {
2582
+ display: flex;
2583
+ overflow: hidden;
2584
+ border-radius: inherit;
2585
+ aspect-ratio: 1 / 1;
2586
+ margin-block: 0;
2587
+ margin-inline: 0;
2588
+ max-inline-size: var(--_op-frame-inline-size);
2589
+
2590
+ :where(&) {
2591
+ align-items: center;
2592
+ justify-content: center;
2593
+ }
2594
+
2595
+ > img,
2596
+ > video {
2597
+ block-size: 100%;
2598
+ inline-size: 100%;
2599
+ object-fit: cover;
2600
+ }
2601
+
2602
+ /* aspect ratio */
2603
+
2604
+ &.op-frame--square {
2605
+ aspect-ratio: 1 / 1;
2606
+ }
2607
+
2608
+ &.op-frame--landscape {
2609
+ aspect-ratio: 16 / 9;
2610
+ }
2611
+
2612
+ &.op-frame--portrait {
2613
+ aspect-ratio: 9 / 16;
2614
+ }
2615
+
2616
+ &.op-frame--4-3 {
2617
+ aspect-ratio: 4 / 3;
2618
+ }
2619
+
2620
+ &.op-frame--3-4 {
2621
+ aspect-ratio: 3 / 4;
2622
+ }
2623
+
2624
+ &.op-frame--3-2 {
2625
+ aspect-ratio: 3 / 2;
2626
+ }
2627
+
2628
+ &.op-frame--2-3 {
2629
+ aspect-ratio: 2 / 3;
2630
+ }
2486
2631
  }
2487
2632
  /* Components */
2488
2633
  .accordion {
@@ -2530,7 +2675,7 @@ small {
2530
2675
  }
2531
2676
 
2532
2677
  &[open] {
2533
- summary .accordion__marker {
2678
+ > summary .accordion__marker {
2534
2679
  rotate: 0.25turn;
2535
2680
  }
2536
2681
 
@@ -5080,7 +5225,11 @@ dialog.modal {
5080
5225
 
5081
5226
  display: flex;
5082
5227
  flex-direction: column;
5083
- gap: var(--op-space-x-small);
5228
+
5229
+ /* zero specificity. Lets utilities override */
5230
+ :where(&) {
5231
+ gap: var(--op-space-x-small);
5232
+ }
5084
5233
 
5085
5234
  &.text-pair--inline {
5086
5235
  flex-direction: row;