@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.
@@ -1,14 +1,15 @@
1
1
  /*
2
2
  See all icons at: https://phosphoricons.com/
3
- Current version: 2.1.1
3
+ See Changelog at: https://github.com/phosphor-icons/web/releases
4
+ Current version: 2.1.2
4
5
  */
5
6
 
6
- @import 'https://unpkg.com/@phosphor-icons/web@2.1.1/src/regular/style.css';
7
- @import 'https://unpkg.com/@phosphor-icons/web@2.1.1/src/thin/style.css';
8
- @import 'https://unpkg.com/@phosphor-icons/web@2.1.1/src/light/style.css';
9
- @import 'https://unpkg.com/@phosphor-icons/web@2.1.1/src/bold/style.css';
10
- @import 'https://unpkg.com/@phosphor-icons/web@2.1.1/src/fill/style.css';
11
- @import 'https://unpkg.com/@phosphor-icons/web@2.1.1/src/duotone/style.css';
7
+ @import 'https://unpkg.com/@phosphor-icons/web@2.1.2/src/regular/style.css';
8
+ @import 'https://unpkg.com/@phosphor-icons/web@2.1.2/src/thin/style.css';
9
+ @import 'https://unpkg.com/@phosphor-icons/web@2.1.2/src/light/style.css';
10
+ @import 'https://unpkg.com/@phosphor-icons/web@2.1.2/src/bold/style.css';
11
+ @import 'https://unpkg.com/@phosphor-icons/web@2.1.2/src/fill/style.css';
12
+ @import 'https://unpkg.com/@phosphor-icons/web@2.1.2/src/duotone/style.css';
12
13
 
13
14
  /* Note: the important tag is how Phosphor sets up the fonts which is why we replicate them here */
14
15
 
@@ -1,6 +1,7 @@
1
1
  /*
2
2
  See all icons at: https://tabler.io/icons
3
- Current version: 3.30.0
3
+ See Changelog at: https://tabler.io/changelog
4
+ Current version: 3.44.0
4
5
  */
5
6
 
6
7
  @import 'https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3.30.0/dist/tabler-icons.min.css';
@@ -43,7 +43,7 @@
43
43
  }
44
44
 
45
45
  &[open] {
46
- summary .accordion__marker {
46
+ > summary .accordion__marker {
47
47
  rotate: 0.25turn;
48
48
  }
49
49
 
@@ -1,26 +1,26 @@
1
- @import 'accordion';
2
- @import 'alert';
3
- @import 'avatar';
4
- @import 'badge';
5
- @import 'breadcrumbs';
6
- @import 'button';
7
- @import 'button_group';
8
- @import 'card';
9
- @import 'confirm-dialog';
10
- @import 'content-header';
11
- @import 'divider';
12
- @import 'form';
13
- @import 'icon';
14
- @import 'modal';
15
- @import 'navbar';
16
- @import 'pagination';
17
- @import 'segmented-control';
18
- @import 'sidebar';
19
- @import 'side_panel';
20
- @import 'spinner';
21
- @import 'switch';
22
- @import 'tab';
23
- @import 'table';
24
- @import 'tag';
25
- @import 'text_pair';
26
- @import 'tooltip';
1
+ @import 'accordion.css';
2
+ @import 'alert.css';
3
+ @import 'avatar.css';
4
+ @import 'badge.css';
5
+ @import 'breadcrumbs.css';
6
+ @import 'button.css';
7
+ @import 'button_group.css';
8
+ @import 'card.css';
9
+ @import 'confirm-dialog.css';
10
+ @import 'content-header.css';
11
+ @import 'divider.css';
12
+ @import 'form.css';
13
+ @import 'icon.css';
14
+ @import 'modal.css';
15
+ @import 'navbar.css';
16
+ @import 'pagination.css';
17
+ @import 'segmented-control.css';
18
+ @import 'sidebar.css';
19
+ @import 'side_panel.css';
20
+ @import 'spinner.css';
21
+ @import 'switch.css';
22
+ @import 'tab.css';
23
+ @import 'table.css';
24
+ @import 'tag.css';
25
+ @import 'text_pair.css';
26
+ @import 'tooltip.css';
@@ -10,7 +10,11 @@
10
10
 
11
11
  display: flex;
12
12
  flex-direction: column;
13
- gap: var(--op-space-x-small);
13
+
14
+ /* zero specificity. Lets utilities override */
15
+ :where(&) {
16
+ gap: var(--op-space-x-small);
17
+ }
14
18
 
15
19
  &.text-pair--inline {
16
20
  flex-direction: row;
@@ -4,5 +4,5 @@
4
4
  https://developers.google.com/fonts/docs/material_symbols#variable_font_with_google_fonts
5
5
  */
6
6
 
7
- @import 'text_fonts';
8
- @import 'icon_fonts';
7
+ @import 'text_fonts.css';
8
+ @import 'icon_fonts.css';
@@ -1,2 +1,2 @@
1
- @import 'base_tokens';
2
- @import 'scale_color_tokens';
1
+ @import 'base_tokens.css';
2
+ @import 'scale_color_tokens.css';
@@ -94,6 +94,12 @@
94
94
  }
95
95
 
96
96
  /* Gap Properties */
97
+ .gap-none {
98
+ gap: 0;
99
+
100
+ --op-gap: 0;
101
+ }
102
+
97
103
  .gap-xxs {
98
104
  gap: var(--op-space-2x-small);
99
105
 
@@ -424,21 +430,27 @@
424
430
  .op-stack {
425
431
  display: flex;
426
432
  flex-direction: column;
427
- }
433
+ margin-block: 0;
434
+ margin-inline: 0;
428
435
 
429
- :where(.op-stack) {
430
- gap: var(--op-space-medium);
436
+ /* zero specificity. Lets utilities override */
437
+ :where(&) {
438
+ gap: var(--op-space-medium);
439
+ }
431
440
  }
432
441
 
433
442
  /* Equivalent to .flex.flex-wrap.items-center.gap-md */
434
443
  .op-cluster {
435
444
  display: flex;
436
445
  flex-wrap: wrap;
437
- }
446
+ margin-block: 0;
447
+ margin-inline: 0;
438
448
 
439
- :where(.op-cluster) {
440
- align-items: center;
441
- gap: var(--op-space-medium);
449
+ /* zero specificity. Lets utilities override */
450
+ :where(&) {
451
+ align-items: center;
452
+ gap: var(--op-space-medium);
453
+ }
442
454
  }
443
455
 
444
456
  /* Equivalent to .flex.flex-wrap.items-center.justify-between.gap-md */
@@ -446,9 +458,144 @@
446
458
  display: flex;
447
459
  flex-wrap: wrap;
448
460
  justify-content: space-between;
461
+ margin-block: 0;
462
+ margin-inline: 0;
463
+
464
+ /* zero specificity. Lets utilities override */
465
+ :where(&) {
466
+ align-items: center;
467
+ gap: var(--op-space-medium);
468
+ }
449
469
  }
450
470
 
451
- :where(.op-split) {
452
- align-items: center;
453
- gap: var(--op-space-medium);
471
+ /*
472
+ side by side layout with a small area and a large area
473
+ similar to .flex with a .flex-grow-1 within it, but with a more semantic name and wrap handling.
474
+
475
+ |[] [ ]|
476
+ |[ ] []| with end
477
+ */
478
+ .op-flank {
479
+ display: flex;
480
+ margin-block: 0;
481
+ margin-inline: 0;
482
+
483
+ /* zero specificity. Lets utilities override */
484
+ :where(&) {
485
+ flex-wrap: wrap;
486
+ align-items: center;
487
+ gap: var(--op-space-medium);
488
+ }
489
+
490
+ /* Small area */
491
+ &:not(.op-flank--end) > :first-child,
492
+ &.op-flank--end > :last-child {
493
+ flex-basis: auto;
494
+ flex-grow: 1;
495
+ }
496
+
497
+ /* Large area */
498
+ &:not(.op-flank--end) > :last-child,
499
+ &.op-flank--end > :first-child {
500
+ flex-basis: 0;
501
+ flex-grow: 999;
502
+ }
503
+ }
504
+
505
+ /* Grid Layout */
506
+ .op-grid {
507
+ --_op-grid-min-column-size: var(--op-space-4x-large);
508
+ --_op-grid-max-column-size: 0px;
509
+
510
+ display: grid;
511
+ grid-template-columns: repeat(
512
+ auto-fit,
513
+ minmax(max(var(--_op-grid-min-column-size), var(--_op-grid-max-column-size)), 1fr)
514
+ );
515
+ margin-block: 0;
516
+ margin-inline: 0;
517
+
518
+ /* zero specificity. Lets utilities override */
519
+ :where(&) {
520
+ gap: var(--op-space-medium);
521
+ }
522
+
523
+ &.op-grid--2-column {
524
+ --_op-grid-max-column-size: calc(100% / 3);
525
+ }
526
+
527
+ &.op-grid--3-column {
528
+ --_op-grid-max-column-size: calc(100% / 4);
529
+ }
530
+
531
+ &.op-grid--4-column {
532
+ --_op-grid-max-column-size: calc(100% / 5);
533
+ }
534
+
535
+ &.op-grid--5-column {
536
+ --_op-grid-max-column-size: calc(100% / 6);
537
+ }
538
+
539
+ &.op-grid--6-column {
540
+ --_op-grid-max-column-size: calc(100% / 7);
541
+ }
542
+ }
543
+
544
+ /* Frame */
545
+ @property --_op-frame-inline-size {
546
+ inherits: true;
547
+ initial-value: 100%;
548
+ syntax: '<length> | <percentage>';
549
+ }
550
+
551
+ .op-frame {
552
+ display: flex;
553
+ overflow: hidden;
554
+ border-radius: inherit;
555
+ aspect-ratio: 1 / 1;
556
+ margin-block: 0;
557
+ margin-inline: 0;
558
+ max-inline-size: var(--_op-frame-inline-size);
559
+
560
+ :where(&) {
561
+ align-items: center;
562
+ justify-content: center;
563
+ }
564
+
565
+ > img,
566
+ > video {
567
+ block-size: 100%;
568
+ inline-size: 100%;
569
+ object-fit: cover;
570
+ }
571
+
572
+ /* aspect ratio */
573
+
574
+ &.op-frame--square {
575
+ aspect-ratio: 1 / 1;
576
+ }
577
+
578
+ &.op-frame--landscape {
579
+ aspect-ratio: 16 / 9;
580
+ }
581
+
582
+ &.op-frame--portrait {
583
+ aspect-ratio: 9 / 16;
584
+ }
585
+
586
+ &.op-frame--4-3 {
587
+ aspect-ratio: 4 / 3;
588
+ }
589
+
590
+ &.op-frame--3-4 {
591
+ aspect-ratio: 3 / 4;
592
+ }
593
+
594
+ &.op-frame--3-2 {
595
+ aspect-ratio: 3 / 2;
596
+ }
597
+
598
+ &.op-frame--2-3 {
599
+ aspect-ratio: 2 / 3;
600
+ }
454
601
  }
@@ -2922,6 +2922,11 @@ small {
2922
2922
  flex-grow: 1;
2923
2923
  }
2924
2924
  /* Gap Properties */
2925
+ .gap-none {
2926
+ gap: 0;
2927
+
2928
+ --op-gap: 0;
2929
+ }
2925
2930
  .gap-xxs {
2926
2931
  gap: var(--op-space-2x-small);
2927
2932
 
@@ -3170,28 +3175,168 @@ small {
3170
3175
  .op-stack {
3171
3176
  display: flex;
3172
3177
  flex-direction: column;
3173
- }
3174
- :where(.op-stack) {
3175
- gap: var(--op-space-medium);
3178
+ margin-block: 0;
3179
+ margin-inline: 0;
3180
+
3181
+ /* zero specificity. Lets utilities override */
3182
+ :where(&) {
3183
+ gap: var(--op-space-medium);
3184
+ }
3176
3185
  }
3177
3186
  /* Equivalent to .flex.flex-wrap.items-center.gap-md */
3178
3187
  .op-cluster {
3179
3188
  display: flex;
3180
3189
  flex-wrap: wrap;
3181
- }
3182
- :where(.op-cluster) {
3183
- align-items: center;
3184
- gap: var(--op-space-medium);
3190
+ margin-block: 0;
3191
+ margin-inline: 0;
3192
+
3193
+ /* zero specificity. Lets utilities override */
3194
+ :where(&) {
3195
+ align-items: center;
3196
+ gap: var(--op-space-medium);
3197
+ }
3185
3198
  }
3186
3199
  /* Equivalent to .flex.flex-wrap.items-center.justify-between.gap-md */
3187
3200
  .op-split {
3188
3201
  display: flex;
3189
3202
  flex-wrap: wrap;
3190
3203
  justify-content: space-between;
3204
+ margin-block: 0;
3205
+ margin-inline: 0;
3206
+
3207
+ /* zero specificity. Lets utilities override */
3208
+ :where(&) {
3209
+ align-items: center;
3210
+ gap: var(--op-space-medium);
3211
+ }
3191
3212
  }
3192
- :where(.op-split) {
3193
- align-items: center;
3194
- gap: var(--op-space-medium);
3213
+ /*
3214
+ side by side layout with a small area and a large area
3215
+ similar to .flex with a .flex-grow-1 within it, but with a more semantic name and wrap handling.
3216
+
3217
+ |[] [ ]|
3218
+ |[ ] []| with end
3219
+ */
3220
+ .op-flank {
3221
+ display: flex;
3222
+ margin-block: 0;
3223
+ margin-inline: 0;
3224
+
3225
+ /* zero specificity. Lets utilities override */
3226
+ :where(&) {
3227
+ flex-wrap: wrap;
3228
+ align-items: center;
3229
+ gap: var(--op-space-medium);
3230
+ }
3231
+
3232
+ /* Small area */
3233
+ &:not(.op-flank--end) > :first-child,
3234
+ &.op-flank--end > :last-child {
3235
+ flex-basis: auto;
3236
+ flex-grow: 1;
3237
+ }
3238
+
3239
+ /* Large area */
3240
+ &:not(.op-flank--end) > :last-child,
3241
+ &.op-flank--end > :first-child {
3242
+ flex-basis: 0;
3243
+ flex-grow: 999;
3244
+ }
3245
+ }
3246
+ /* Grid Layout */
3247
+ .op-grid {
3248
+ --_op-grid-min-column-size: var(--op-space-4x-large);
3249
+ --_op-grid-max-column-size: 0px;
3250
+
3251
+ display: grid;
3252
+ grid-template-columns: repeat(
3253
+ auto-fit,
3254
+ minmax(max(var(--_op-grid-min-column-size), var(--_op-grid-max-column-size)), 1fr)
3255
+ );
3256
+ margin-block: 0;
3257
+ margin-inline: 0;
3258
+
3259
+ /* zero specificity. Lets utilities override */
3260
+ :where(&) {
3261
+ gap: var(--op-space-medium);
3262
+ }
3263
+
3264
+ &.op-grid--2-column {
3265
+ --_op-grid-max-column-size: calc(100% / 3);
3266
+ }
3267
+
3268
+ &.op-grid--3-column {
3269
+ --_op-grid-max-column-size: calc(100% / 4);
3270
+ }
3271
+
3272
+ &.op-grid--4-column {
3273
+ --_op-grid-max-column-size: calc(100% / 5);
3274
+ }
3275
+
3276
+ &.op-grid--5-column {
3277
+ --_op-grid-max-column-size: calc(100% / 6);
3278
+ }
3279
+
3280
+ &.op-grid--6-column {
3281
+ --_op-grid-max-column-size: calc(100% / 7);
3282
+ }
3283
+ }
3284
+ /* Frame */
3285
+ @property --_op-frame-inline-size {
3286
+ inherits: true;
3287
+ initial-value: 100%;
3288
+ syntax: '<length> | <percentage>';
3289
+ }
3290
+ .op-frame {
3291
+ display: flex;
3292
+ overflow: hidden;
3293
+ border-radius: inherit;
3294
+ aspect-ratio: 1 / 1;
3295
+ margin-block: 0;
3296
+ margin-inline: 0;
3297
+ max-inline-size: var(--_op-frame-inline-size);
3298
+
3299
+ :where(&) {
3300
+ align-items: center;
3301
+ justify-content: center;
3302
+ }
3303
+
3304
+ > img,
3305
+ > video {
3306
+ block-size: 100%;
3307
+ inline-size: 100%;
3308
+ object-fit: cover;
3309
+ }
3310
+
3311
+ /* aspect ratio */
3312
+
3313
+ &.op-frame--square {
3314
+ aspect-ratio: 1 / 1;
3315
+ }
3316
+
3317
+ &.op-frame--landscape {
3318
+ aspect-ratio: 16 / 9;
3319
+ }
3320
+
3321
+ &.op-frame--portrait {
3322
+ aspect-ratio: 9 / 16;
3323
+ }
3324
+
3325
+ &.op-frame--4-3 {
3326
+ aspect-ratio: 4 / 3;
3327
+ }
3328
+
3329
+ &.op-frame--3-4 {
3330
+ aspect-ratio: 3 / 4;
3331
+ }
3332
+
3333
+ &.op-frame--3-2 {
3334
+ aspect-ratio: 3 / 2;
3335
+ }
3336
+
3337
+ &.op-frame--2-3 {
3338
+ aspect-ratio: 2 / 3;
3339
+ }
3195
3340
  }
3196
3341
  /* Components */
3197
3342
  .accordion {
@@ -3239,7 +3384,7 @@ small {
3239
3384
  }
3240
3385
 
3241
3386
  &[open] {
3242
- summary .accordion__marker {
3387
+ > summary .accordion__marker {
3243
3388
  rotate: 0.25turn;
3244
3389
  }
3245
3390
 
@@ -5789,7 +5934,11 @@ dialog.modal {
5789
5934
 
5790
5935
  display: flex;
5791
5936
  flex-direction: column;
5792
- gap: var(--op-space-x-small);
5937
+
5938
+ /* zero specificity. Lets utilities override */
5939
+ :where(&) {
5940
+ gap: var(--op-space-x-small);
5941
+ }
5793
5942
 
5794
5943
  &.text-pair--inline {
5795
5944
  flex-direction: row;