@rolemodel/optics 2.3.1 → 2.5.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.
Files changed (36) hide show
  1. package/.github/workflows/deploy-to-ghp.yml +2 -2
  2. package/.github/workflows/deploy-to-npm.yml +9 -5
  3. package/.github/workflows/linting.yml +5 -3
  4. package/.github/workflows/publish-storybook.yml +4 -4
  5. package/.prettierignore +3 -0
  6. package/.yarn/install-state.gz +0 -0
  7. package/CHANGELOG.md +1740 -0
  8. package/README.md +16 -0
  9. package/context7.json +4 -0
  10. package/dist/README.md +16 -0
  11. package/dist/css/addons/fonts/lucide_icons.css +6380 -3081
  12. package/dist/css/addons/fonts/phosphor_icons.css +8 -7
  13. package/dist/css/addons/fonts/tabler_icons.css +2 -1
  14. package/dist/css/components/accordion.css +1 -1
  15. package/dist/css/components/icon.css +30 -0
  16. package/dist/css/components/index.css +26 -26
  17. package/dist/css/components/text_pair.css +5 -1
  18. package/dist/css/core/fonts/index.css +2 -2
  19. package/dist/css/core/tokens/index.css +2 -2
  20. package/dist/css/core/utilities.css +157 -10
  21. package/dist/css/optics+feather_icons.css +600 -12
  22. package/dist/css/optics+feather_icons.min.css +1 -1
  23. package/dist/css/optics+lucide_icons.css +6748 -3088
  24. package/dist/css/optics+lucide_icons.min.css +1 -1
  25. package/dist/css/optics+material_outlined_variable.css +370 -12
  26. package/dist/css/optics+material_outlined_variable.min.css +1 -1
  27. package/dist/css/optics+no_icons.css +370 -12
  28. package/dist/css/optics+no_icons.min.css +1 -1
  29. package/dist/css/optics+phosphor_icons.css +381 -19
  30. package/dist/css/optics+phosphor_icons.min.css +1 -1
  31. package/dist/css/optics+tabler_icons.css +373 -13
  32. package/dist/css/optics+tabler_icons.min.css +1 -1
  33. package/dist/css/optics.css +371 -12
  34. package/dist/css/optics.min.css +1 -1
  35. package/dist/package.json +19 -16
  36. package/package.json +19 -16
@@ -7,6 +7,7 @@
7
7
  *::after {
8
8
  box-sizing: border-box;
9
9
  }
10
+
10
11
  /* Remove default margin */
11
12
  body,
12
13
  h1,
@@ -20,31 +21,37 @@ dl,
20
21
  dd {
21
22
  margin: 0;
22
23
  }
24
+
23
25
  /* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
24
26
  ul[role="list"],
25
27
  ol[role="list"] {
26
28
  list-style: none;
27
29
  }
30
+
28
31
  /* Set core root defaults */
29
32
  html:focus-within {
30
33
  scroll-behavior: smooth;
31
34
  }
35
+
32
36
  /* Set core body defaults */
33
37
  body {
34
38
  min-height: 100vh;
35
39
  text-rendering: optimizeSpeed;
36
40
  line-height: 1.5;
37
41
  }
42
+
38
43
  /* A elements that don't have a class get default styles */
39
44
  a:not([class]) {
40
45
  text-decoration-skip-ink: auto;
41
46
  }
47
+
42
48
  /* Make images easier to work with */
43
49
  img,
44
50
  picture {
45
51
  max-width: 100%;
46
52
  display: block;
47
53
  }
54
+
48
55
  /* Inherit fonts for inputs and buttons */
49
56
  input,
50
57
  button,
@@ -52,6 +59,7 @@ textarea,
52
59
  select {
53
60
  font: inherit;
54
61
  }
62
+
55
63
  /* Remove all animations and transitions for people that prefer not to see them */
56
64
  @media (prefers-reduced-motion: reduce) {
57
65
  html:focus-within {
@@ -66,6 +74,7 @@ select {
66
74
  scroll-behavior: auto !important;
67
75
  }
68
76
  }
77
+
69
78
  /* Fonts */
70
79
  /*
71
80
  Noto Sans supports:
@@ -73,12 +82,14 @@ Noto Sans supports:
73
82
  font-stretch: {anything between 62.5% and 100%}
74
83
  font-style: {normal or italic}
75
84
  */
85
+
76
86
  /*
77
87
  Noto Serif supports:
78
88
  font-weight: {anything between 100 and 900}
79
89
  font-stretch: {anything between 62.5% and 100%}
80
90
  font-style: {normal or italic}
81
91
  */
92
+
82
93
  /* Noto Sans and Noto Serif */
83
94
  /*
84
95
  See all icons at: https://feathericons.com/
@@ -87,6 +98,7 @@ Noto Sans supports:
87
98
  The CDN provided selectors did not use a prefix to avoid naming conflicts
88
99
  Current version: 4.29.0
89
100
  */
101
+
90
102
  /* Feather Icons */
91
103
  @font-face {
92
104
  font-family: 'feather';
@@ -98,6 +110,7 @@ Noto Sans supports:
98
110
  /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
99
111
  url('https://at.alicdn.com/t/font_o5hd5vvqpoqiwwmi.svg?t=1501828829848#feather') format('svg'); /* iOS 4.1- */
100
112
  }
113
+
101
114
  .fi {
102
115
  font-family: 'feather' !important;
103
116
  font-size: var(--__op-icon-font-size);
@@ -105,690 +118,919 @@ Noto Sans supports:
105
118
  -moz-osx-font-smoothing: grayscale;
106
119
  font-style: normal;
107
120
  }
121
+
108
122
  .fi-alert-octagon:before {
109
123
  content: '\e81b';
110
124
  }
125
+
111
126
  .fi-alert-circle:before {
112
127
  content: '\e81c';
113
128
  }
129
+
114
130
  .fi-activity:before {
115
131
  content: '\e81d';
116
132
  }
133
+
117
134
  .fi-alert-triangle:before {
118
135
  content: '\e81e';
119
136
  }
137
+
120
138
  .fi-align-center:before {
121
139
  content: '\e81f';
122
140
  }
141
+
123
142
  .fi-airplay:before {
124
143
  content: '\e820';
125
144
  }
145
+
126
146
  .fi-align-justify:before {
127
147
  content: '\e821';
128
148
  }
149
+
129
150
  .fi-align-left:before {
130
151
  content: '\e822';
131
152
  }
153
+
132
154
  .fi-align-right:before {
133
155
  content: '\e823';
134
156
  }
157
+
135
158
  .fi-arrow-down-left:before {
136
159
  content: '\e824';
137
160
  }
161
+
138
162
  .fi-arrow-down-right:before {
139
163
  content: '\e825';
140
164
  }
165
+
141
166
  .fi-anchor:before {
142
167
  content: '\e826';
143
168
  }
169
+
144
170
  .fi-aperture:before {
145
171
  content: '\e827';
146
172
  }
173
+
147
174
  .fi-arrow-left:before {
148
175
  content: '\e828';
149
176
  }
177
+
150
178
  .fi-arrow-right:before {
151
179
  content: '\e829';
152
180
  }
181
+
153
182
  .fi-arrow-down:before {
154
183
  content: '\e82a';
155
184
  }
185
+
156
186
  .fi-arrow-up-left:before {
157
187
  content: '\e82b';
158
188
  }
189
+
159
190
  .fi-arrow-up-right:before {
160
191
  content: '\e82c';
161
192
  }
193
+
162
194
  .fi-arrow-up:before {
163
195
  content: '\e82d';
164
196
  }
197
+
165
198
  .fi-award:before {
166
199
  content: '\e82e';
167
200
  }
201
+
168
202
  .fi-bar-chart:before {
169
203
  content: '\e82f';
170
204
  }
205
+
171
206
  .fi-at-sign:before {
172
207
  content: '\e830';
173
208
  }
209
+
174
210
  .fi-bar-chart-:before {
175
211
  content: '\e831';
176
212
  }
213
+
177
214
  .fi-battery-charging:before {
178
215
  content: '\e832';
179
216
  }
217
+
180
218
  .fi-bell-off:before {
181
219
  content: '\e833';
182
220
  }
221
+
183
222
  .fi-battery:before {
184
223
  content: '\e834';
185
224
  }
225
+
186
226
  .fi-bluetooth:before {
187
227
  content: '\e835';
188
228
  }
229
+
189
230
  .fi-bell:before {
190
231
  content: '\e836';
191
232
  }
233
+
192
234
  .fi-book:before {
193
235
  content: '\e837';
194
236
  }
237
+
195
238
  .fi-briefcase:before {
196
239
  content: '\e838';
197
240
  }
241
+
198
242
  .fi-camera-off:before {
199
243
  content: '\e839';
200
244
  }
245
+
201
246
  .fi-calendar:before {
202
247
  content: '\e83a';
203
248
  }
249
+
204
250
  .fi-bookmark:before {
205
251
  content: '\e83b';
206
252
  }
253
+
207
254
  .fi-box:before {
208
255
  content: '\e83c';
209
256
  }
257
+
210
258
  .fi-camera:before {
211
259
  content: '\e83d';
212
260
  }
261
+
213
262
  .fi-check-circle:before {
214
263
  content: '\e83e';
215
264
  }
265
+
216
266
  .fi-check:before {
217
267
  content: '\e83f';
218
268
  }
269
+
219
270
  .fi-check-square:before {
220
271
  content: '\e840';
221
272
  }
273
+
222
274
  .fi-cast:before {
223
275
  content: '\e841';
224
276
  }
277
+
225
278
  .fi-chevron-down:before {
226
279
  content: '\e842';
227
280
  }
281
+
228
282
  .fi-chevron-left:before {
229
283
  content: '\e843';
230
284
  }
285
+
231
286
  .fi-chevron-right:before {
232
287
  content: '\e844';
233
288
  }
289
+
234
290
  .fi-chevron-up:before {
235
291
  content: '\e845';
236
292
  }
293
+
237
294
  .fi-chevrons-down:before {
238
295
  content: '\e846';
239
296
  }
297
+
240
298
  .fi-chevrons-right:before {
241
299
  content: '\e847';
242
300
  }
301
+
243
302
  .fi-chevrons-up:before {
244
303
  content: '\e848';
245
304
  }
305
+
246
306
  .fi-chevrons-left:before {
247
307
  content: '\e849';
248
308
  }
309
+
249
310
  .fi-circle:before {
250
311
  content: '\e84a';
251
312
  }
313
+
252
314
  .fi-clipboard:before {
253
315
  content: '\e84b';
254
316
  }
317
+
255
318
  .fi-chrome:before {
256
319
  content: '\e84c';
257
320
  }
321
+
258
322
  .fi-clock:before {
259
323
  content: '\e84d';
260
324
  }
325
+
261
326
  .fi-cloud-lightning:before {
262
327
  content: '\e84e';
263
328
  }
329
+
264
330
  .fi-cloud-drizzle:before {
265
331
  content: '\e84f';
266
332
  }
333
+
267
334
  .fi-cloud-rain:before {
268
335
  content: '\e850';
269
336
  }
337
+
270
338
  .fi-cloud-off:before {
271
339
  content: '\e851';
272
340
  }
341
+
273
342
  .fi-codepen:before {
274
343
  content: '\e852';
275
344
  }
345
+
276
346
  .fi-cloud-snow:before {
277
347
  content: '\e853';
278
348
  }
349
+
279
350
  .fi-compass:before {
280
351
  content: '\e854';
281
352
  }
353
+
282
354
  .fi-copy:before {
283
355
  content: '\e855';
284
356
  }
357
+
285
358
  .fi-corner-down-right:before {
286
359
  content: '\e856';
287
360
  }
361
+
288
362
  .fi-corner-down-left:before {
289
363
  content: '\e857';
290
364
  }
365
+
291
366
  .fi-corner-left-down:before {
292
367
  content: '\e858';
293
368
  }
369
+
294
370
  .fi-corner-left-up:before {
295
371
  content: '\e859';
296
372
  }
373
+
297
374
  .fi-corner-up-left:before {
298
375
  content: '\e85a';
299
376
  }
377
+
300
378
  .fi-corner-up-right:before {
301
379
  content: '\e85b';
302
380
  }
381
+
303
382
  .fi-corner-right-down:before {
304
383
  content: '\e85c';
305
384
  }
385
+
306
386
  .fi-corner-right-up:before {
307
387
  content: '\e85d';
308
388
  }
389
+
309
390
  .fi-cpu:before {
310
391
  content: '\e85e';
311
392
  }
393
+
312
394
  .fi-credit-card:before {
313
395
  content: '\e85f';
314
396
  }
397
+
315
398
  .fi-crosshair:before {
316
399
  content: '\e860';
317
400
  }
401
+
318
402
  .fi-disc:before {
319
403
  content: '\e861';
320
404
  }
405
+
321
406
  .fi-delete:before {
322
407
  content: '\e862';
323
408
  }
409
+
324
410
  .fi-download-cloud:before {
325
411
  content: '\e863';
326
412
  }
413
+
327
414
  .fi-download:before {
328
415
  content: '\e864';
329
416
  }
417
+
330
418
  .fi-droplet:before {
331
419
  content: '\e865';
332
420
  }
421
+
333
422
  .fi-edit-:before {
334
423
  content: '\e866';
335
424
  }
425
+
336
426
  .fi-edit:before {
337
427
  content: '\e867';
338
428
  }
429
+
339
430
  .fi-edit-1:before {
340
431
  content: '\e868';
341
432
  }
433
+
342
434
  .fi-external-link:before {
343
435
  content: '\e869';
344
436
  }
437
+
345
438
  .fi-eye:before {
346
439
  content: '\e86a';
347
440
  }
441
+
348
442
  .fi-feather:before {
349
443
  content: '\e86b';
350
444
  }
445
+
351
446
  .fi-facebook:before {
352
447
  content: '\e86c';
353
448
  }
449
+
354
450
  .fi-file-minus:before {
355
451
  content: '\e86d';
356
452
  }
453
+
357
454
  .fi-eye-off:before {
358
455
  content: '\e86e';
359
456
  }
457
+
360
458
  .fi-fast-forward:before {
361
459
  content: '\e86f';
362
460
  }
461
+
363
462
  .fi-file-text:before {
364
463
  content: '\e870';
365
464
  }
465
+
366
466
  .fi-film:before {
367
467
  content: '\e871';
368
468
  }
469
+
369
470
  .fi-file:before {
370
471
  content: '\e872';
371
472
  }
473
+
372
474
  .fi-file-plus:before {
373
475
  content: '\e873';
374
476
  }
477
+
375
478
  .fi-folder:before {
376
479
  content: '\e874';
377
480
  }
481
+
378
482
  .fi-filter:before {
379
483
  content: '\e875';
380
484
  }
485
+
381
486
  .fi-flag:before {
382
487
  content: '\e876';
383
488
  }
489
+
384
490
  .fi-globe:before {
385
491
  content: '\e877';
386
492
  }
493
+
387
494
  .fi-grid:before {
388
495
  content: '\e878';
389
496
  }
497
+
390
498
  .fi-heart:before {
391
499
  content: '\e879';
392
500
  }
501
+
393
502
  .fi-home:before {
394
503
  content: '\e87a';
395
504
  }
505
+
396
506
  .fi-github:before {
397
507
  content: '\e87b';
398
508
  }
509
+
399
510
  .fi-image:before {
400
511
  content: '\e87c';
401
512
  }
513
+
402
514
  .fi-inbox:before {
403
515
  content: '\e87d';
404
516
  }
517
+
405
518
  .fi-layers:before {
406
519
  content: '\e87e';
407
520
  }
521
+
408
522
  .fi-info:before {
409
523
  content: '\e87f';
410
524
  }
525
+
411
526
  .fi-instagram:before {
412
527
  content: '\e880';
413
528
  }
529
+
414
530
  .fi-layout:before {
415
531
  content: '\e881';
416
532
  }
533
+
417
534
  .fi-link-:before {
418
535
  content: '\e882';
419
536
  }
537
+
420
538
  .fi-life-buoy:before {
421
539
  content: '\e883';
422
540
  }
541
+
423
542
  .fi-link:before {
424
543
  content: '\e884';
425
544
  }
545
+
426
546
  .fi-log-in:before {
427
547
  content: '\e885';
428
548
  }
549
+
429
550
  .fi-list:before {
430
551
  content: '\e886';
431
552
  }
553
+
432
554
  .fi-lock:before {
433
555
  content: '\e887';
434
556
  }
557
+
435
558
  .fi-log-out:before {
436
559
  content: '\e888';
437
560
  }
561
+
438
562
  .fi-loader:before {
439
563
  content: '\e889';
440
564
  }
565
+
441
566
  .fi-mail:before {
442
567
  content: '\e88a';
443
568
  }
569
+
444
570
  .fi-maximize-:before {
445
571
  content: '\e88b';
446
572
  }
573
+
447
574
  .fi-map:before {
448
575
  content: '\e88c';
449
576
  }
577
+
450
578
  .fi-maximize:before {
451
579
  content: '\e88d';
452
580
  }
581
+
453
582
  .fi-map-pin:before {
454
583
  content: '\e88e';
455
584
  }
585
+
456
586
  .fi-menu:before {
457
587
  content: '\e88f';
458
588
  }
589
+
459
590
  .fi-message-circle:before {
460
591
  content: '\e890';
461
592
  }
593
+
462
594
  .fi-message-square:before {
463
595
  content: '\e891';
464
596
  }
597
+
465
598
  .fi-minimize-:before {
466
599
  content: '\e892';
467
600
  }
601
+
468
602
  .fi-mic-off:before {
469
603
  content: '\e893';
470
604
  }
605
+
471
606
  .fi-minus-circle:before {
472
607
  content: '\e894';
473
608
  }
609
+
474
610
  .fi-mic:before {
475
611
  content: '\e895';
476
612
  }
613
+
477
614
  .fi-minus-square:before {
478
615
  content: '\e896';
479
616
  }
617
+
480
618
  .fi-minus:before {
481
619
  content: '\e897';
482
620
  }
621
+
483
622
  .fi-moon:before {
484
623
  content: '\e898';
485
624
  }
625
+
486
626
  .fi-monitor:before {
487
627
  content: '\e899';
488
628
  }
629
+
489
630
  .fi-more-vertical:before {
490
631
  content: '\e89a';
491
632
  }
633
+
492
634
  .fi-more-horizontal:before {
493
635
  content: '\e89b';
494
636
  }
637
+
495
638
  .fi-move:before {
496
639
  content: '\e89c';
497
640
  }
641
+
498
642
  .fi-music:before {
499
643
  content: '\e89d';
500
644
  }
645
+
501
646
  .fi-navigation-:before {
502
647
  content: '\e89e';
503
648
  }
649
+
504
650
  .fi-navigation:before {
505
651
  content: '\e89f';
506
652
  }
653
+
507
654
  .fi-octagon:before {
508
655
  content: '\e8a0';
509
656
  }
657
+
510
658
  .fi-package:before {
511
659
  content: '\e8a1';
512
660
  }
661
+
513
662
  .fi-pause-circle:before {
514
663
  content: '\e8a2';
515
664
  }
665
+
516
666
  .fi-pause:before {
517
667
  content: '\e8a3';
518
668
  }
669
+
519
670
  .fi-percent:before {
520
671
  content: '\e8a4';
521
672
  }
673
+
522
674
  .fi-phone-call:before {
523
675
  content: '\e8a5';
524
676
  }
677
+
525
678
  .fi-phone-forwarded:before {
526
679
  content: '\e8a6';
527
680
  }
681
+
528
682
  .fi-phone-missed:before {
529
683
  content: '\e8a7';
530
684
  }
685
+
531
686
  .fi-phone-off:before {
532
687
  content: '\e8a8';
533
688
  }
689
+
534
690
  .fi-phone-incoming:before {
535
691
  content: '\e8a9';
536
692
  }
693
+
537
694
  .fi-phone:before {
538
695
  content: '\e8aa';
539
696
  }
697
+
540
698
  .fi-phone-outgoing:before {
541
699
  content: '\e8ab';
542
700
  }
701
+
543
702
  .fi-pie-chart:before {
544
703
  content: '\e8ac';
545
704
  }
705
+
546
706
  .fi-play-circle:before {
547
707
  content: '\e8ad';
548
708
  }
709
+
549
710
  .fi-play:before {
550
711
  content: '\e8ae';
551
712
  }
713
+
552
714
  .fi-plus-square:before {
553
715
  content: '\e8af';
554
716
  }
717
+
555
718
  .fi-plus-circle:before {
556
719
  content: '\e8b0';
557
720
  }
721
+
558
722
  .fi-plus:before {
559
723
  content: '\e8b1';
560
724
  }
725
+
561
726
  .fi-pocket:before {
562
727
  content: '\e8b2';
563
728
  }
729
+
564
730
  .fi-printer:before {
565
731
  content: '\e8b3';
566
732
  }
733
+
567
734
  .fi-power:before {
568
735
  content: '\e8b4';
569
736
  }
737
+
570
738
  .fi-radio:before {
571
739
  content: '\e8b5';
572
740
  }
741
+
573
742
  .fi-repeat:before {
574
743
  content: '\e8b6';
575
744
  }
745
+
576
746
  .fi-refresh-ccw:before {
577
747
  content: '\e8b7';
578
748
  }
749
+
579
750
  .fi-rewind:before {
580
751
  content: '\e8b8';
581
752
  }
753
+
582
754
  .fi-rotate-ccw:before {
583
755
  content: '\e8b9';
584
756
  }
757
+
585
758
  .fi-refresh-cw:before {
586
759
  content: '\e8ba';
587
760
  }
761
+
588
762
  .fi-rotate-cw:before {
589
763
  content: '\e8bb';
590
764
  }
765
+
591
766
  .fi-save:before {
592
767
  content: '\e8bc';
593
768
  }
769
+
594
770
  .fi-search:before {
595
771
  content: '\e8bd';
596
772
  }
773
+
597
774
  .fi-server:before {
598
775
  content: '\e8be';
599
776
  }
777
+
600
778
  .fi-scissors:before {
601
779
  content: '\e8bf';
602
780
  }
781
+
603
782
  .fi-share-:before {
604
783
  content: '\e8c0';
605
784
  }
785
+
606
786
  .fi-share:before {
607
787
  content: '\e8c1';
608
788
  }
789
+
609
790
  .fi-shield:before {
610
791
  content: '\e8c2';
611
792
  }
793
+
612
794
  .fi-settings:before {
613
795
  content: '\e8c3';
614
796
  }
797
+
615
798
  .fi-skip-back:before {
616
799
  content: '\e8c4';
617
800
  }
801
+
618
802
  .fi-shuffle:before {
619
803
  content: '\e8c5';
620
804
  }
805
+
621
806
  .fi-sidebar:before {
622
807
  content: '\e8c6';
623
808
  }
809
+
624
810
  .fi-skip-forward:before {
625
811
  content: '\e8c7';
626
812
  }
813
+
627
814
  .fi-slack:before {
628
815
  content: '\e8c8';
629
816
  }
817
+
630
818
  .fi-slash:before {
631
819
  content: '\e8c9';
632
820
  }
821
+
633
822
  .fi-smartphone:before {
634
823
  content: '\e8ca';
635
824
  }
825
+
636
826
  .fi-square:before {
637
827
  content: '\e8cb';
638
828
  }
829
+
639
830
  .fi-speaker:before {
640
831
  content: '\e8cc';
641
832
  }
833
+
642
834
  .fi-star:before {
643
835
  content: '\e8cd';
644
836
  }
837
+
645
838
  .fi-stop-circle:before {
646
839
  content: '\e8ce';
647
840
  }
841
+
648
842
  .fi-sun:before {
649
843
  content: '\e8cf';
650
844
  }
845
+
651
846
  .fi-sunrise:before {
652
847
  content: '\e8d0';
653
848
  }
849
+
654
850
  .fi-tablet:before {
655
851
  content: '\e8d1';
656
852
  }
853
+
657
854
  .fi-tag:before {
658
855
  content: '\e8d2';
659
856
  }
857
+
660
858
  .fi-sunset:before {
661
859
  content: '\e8d3';
662
860
  }
861
+
663
862
  .fi-target:before {
664
863
  content: '\e8d4';
665
864
  }
865
+
666
866
  .fi-thermometer:before {
667
867
  content: '\e8d5';
668
868
  }
869
+
669
870
  .fi-thumbs-up:before {
670
871
  content: '\e8d6';
671
872
  }
873
+
672
874
  .fi-thumbs-down:before {
673
875
  content: '\e8d7';
674
876
  }
877
+
675
878
  .fi-toggle-left:before {
676
879
  content: '\e8d8';
677
880
  }
881
+
678
882
  .fi-toggle-right:before {
679
883
  content: '\e8d9';
680
884
  }
885
+
681
886
  .fi-trash-:before {
682
887
  content: '\e8da';
683
888
  }
889
+
684
890
  .fi-trash:before {
685
891
  content: '\e8db';
686
892
  }
893
+
687
894
  .fi-trending-up:before {
688
895
  content: '\e8dc';
689
896
  }
897
+
690
898
  .fi-trending-down:before {
691
899
  content: '\e8dd';
692
900
  }
901
+
693
902
  .fi-triangle:before {
694
903
  content: '\e8de';
695
904
  }
905
+
696
906
  .fi-type:before {
697
907
  content: '\e8df';
698
908
  }
909
+
699
910
  .fi-twitter:before {
700
911
  content: '\e8e0';
701
912
  }
913
+
702
914
  .fi-upload:before {
703
915
  content: '\e8e1';
704
916
  }
917
+
705
918
  .fi-umbrella:before {
706
919
  content: '\e8e2';
707
920
  }
921
+
708
922
  .fi-upload-cloud:before {
709
923
  content: '\e8e3';
710
924
  }
925
+
711
926
  .fi-unlock:before {
712
927
  content: '\e8e4';
713
928
  }
929
+
714
930
  .fi-user-check:before {
715
931
  content: '\e8e5';
716
932
  }
933
+
717
934
  .fi-user-minus:before {
718
935
  content: '\e8e6';
719
936
  }
937
+
720
938
  .fi-user-plus:before {
721
939
  content: '\e8e7';
722
940
  }
941
+
723
942
  .fi-user-x:before {
724
943
  content: '\e8e8';
725
944
  }
945
+
726
946
  .fi-user:before {
727
947
  content: '\e8e9';
728
948
  }
949
+
729
950
  .fi-users:before {
730
951
  content: '\e8ea';
731
952
  }
953
+
732
954
  .fi-video-off:before {
733
955
  content: '\e8eb';
734
956
  }
957
+
735
958
  .fi-video:before {
736
959
  content: '\e8ec';
737
960
  }
961
+
738
962
  .fi-voicemail:before {
739
963
  content: '\e8ed';
740
964
  }
965
+
741
966
  .fi-volume-x:before {
742
967
  content: '\e8ee';
743
968
  }
969
+
744
970
  .fi-volume-:before {
745
971
  content: '\e8ef';
746
972
  }
973
+
747
974
  .fi-volume-1:before {
748
975
  content: '\e8f0';
749
976
  }
977
+
750
978
  .fi-volume:before {
751
979
  content: '\e8f1';
752
980
  }
981
+
753
982
  .fi-watch:before {
754
983
  content: '\e8f2';
755
984
  }
985
+
756
986
  .fi-wifi:before {
757
987
  content: '\e8f3';
758
988
  }
989
+
759
990
  .fi-x-square:before {
760
991
  content: '\e8f4';
761
992
  }
993
+
762
994
  .fi-wind:before {
763
995
  content: '\e8f5';
764
996
  }
997
+
765
998
  .fi-x:before {
766
999
  content: '\e8f6';
767
1000
  }
1001
+
768
1002
  .fi-x-circle:before {
769
1003
  content: '\e8f7';
770
1004
  }
1005
+
771
1006
  .fi-zap:before {
772
1007
  content: '\e8f8';
773
1008
  }
1009
+
774
1010
  .fi-zoom-in:before {
775
1011
  content: '\e8f9';
776
1012
  }
1013
+
777
1014
  .fi-zoom-out:before {
778
1015
  content: '\e8fa';
779
1016
  }
1017
+
780
1018
  .fi-command:before {
781
1019
  content: '\e8fb';
782
1020
  }
1021
+
783
1022
  .fi-cloud:before {
784
1023
  content: '\e8fc';
785
1024
  }
1025
+
786
1026
  .fi-hash:before {
787
1027
  content: '\e8fd';
788
1028
  }
1029
+
789
1030
  .fi-headphones:before {
790
1031
  content: '\e8fe';
791
1032
  }
1033
+
792
1034
  /* Tokens */
793
1035
  :root {
794
1036
  /* Color HSLs
@@ -1109,6 +1351,7 @@ Noto Sans supports:
1109
1351
  var(--op-input-inner-focus) var(--op-color-alerts-notice-plus-two),
1110
1352
  var(--op-input-outer-focus) var(--op-color-alerts-notice-plus-five);
1111
1353
  }
1354
+
1112
1355
  /* Animations */
1113
1356
  @keyframes rm-slide-in-out-flash {
1114
1357
  /*
@@ -2588,10 +2831,12 @@ Noto Sans supports:
2588
2831
  --op-color-on-background: var(--op-color-neutral-on-plus-eight);
2589
2832
  --op-color-on-background-alt: var(--op-color-neutral-on-plus-eight-alt);
2590
2833
  }
2834
+
2591
2835
  /* Force Light Mode */
2592
2836
  :root[data-theme-mode='light'] {
2593
2837
  color-scheme: only light;
2594
2838
  }
2839
+
2595
2840
  /* Force Dark Mode */
2596
2841
  :root[data-theme-mode='dark'] {
2597
2842
  color-scheme: only dark;
@@ -2611,6 +2856,7 @@ Noto Sans supports:
2611
2856
  */
2612
2857
  --op-encoded-images-dropdown-arrow: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDEyIDkiIGZpbGw9IiNmZmYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik02IDguMzc1MDFMMCAyLjM3NTAxTDEuNCAwLjk3NTAwNkw2IDUuNTc1MDFMMTAuNiAwLjk3NTAwNkwxMiAyLjM3NTAxTDYgOC4zNzUwMVoiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==');
2613
2858
  }
2859
+
2614
2860
  @media (prefers-color-scheme: dark) {
2615
2861
  :root:not([data-theme-mode='light']) {
2616
2862
  /**
@@ -2629,13 +2875,16 @@ Noto Sans supports:
2629
2875
  --op-encoded-images-dropdown-arrow: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDEyIDkiIGZpbGw9IiNmZmYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik02IDguMzc1MDFMMCAyLjM3NTAxTDEuNCAwLjk3NTAwNkw2IDUuNTc1MDFMMTAuNiAwLjk3NTAwNkwxMiAyLjM3NTAxTDYgOC4zNzUwMVoiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==');
2630
2876
  }
2631
2877
  }
2878
+
2632
2879
  /* Base styles and utilities */
2633
2880
  /* After a reset, introduce base element styles specific to this system */
2881
+
2634
2882
  html {
2635
2883
  overflow: hidden; /* Needed to prevent flash messages and panels from causing overflow */
2636
2884
  font-family: var(--op-font-family);
2637
2885
  font-size: 62.5%; /* 1rem = 10px */
2638
2886
  }
2887
+
2639
2888
  body {
2640
2889
  overflow: auto;
2641
2890
  background: var(--op-color-background);
@@ -2643,14 +2892,17 @@ body {
2643
2892
  color: var(--op-color-on-background);
2644
2893
  font-size: var(--op-font-medium);
2645
2894
  }
2895
+
2646
2896
  button {
2647
2897
  background: none;
2648
2898
  cursor: pointer;
2649
2899
  }
2900
+
2650
2901
  button,
2651
2902
  input[type='submit'] {
2652
2903
  border: 0;
2653
2904
  }
2905
+
2654
2906
  label {
2655
2907
  display: inline-block;
2656
2908
 
@@ -2658,9 +2910,11 @@ label {
2658
2910
  cursor: pointer;
2659
2911
  }
2660
2912
  }
2913
+
2661
2914
  a {
2662
2915
  color: var(--op-color-primary-original);
2663
2916
  }
2917
+
2664
2918
  blockquote,
2665
2919
  dl,
2666
2920
  dd,
@@ -2674,6 +2928,7 @@ figure,
2674
2928
  pre {
2675
2929
  margin: 0;
2676
2930
  }
2931
+
2677
2932
  h1,
2678
2933
  h2,
2679
2934
  h3,
@@ -2683,28 +2938,36 @@ h6 {
2683
2938
  font-weight: var(--op-font-weight-normal);
2684
2939
  margin-block: 0 var(--op-space-small);
2685
2940
  }
2941
+
2686
2942
  h1 {
2687
2943
  font-size: var(--op-font-3x-large);
2688
2944
  }
2945
+
2689
2946
  h2 {
2690
2947
  font-size: var(--op-font-2x-large);
2691
2948
  }
2949
+
2692
2950
  h3 {
2693
2951
  font-size: var(--op-font-large);
2694
2952
  }
2953
+
2695
2954
  h4 {
2696
2955
  font-size: var(--op-font-medium);
2697
2956
  }
2957
+
2698
2958
  h5 {
2699
2959
  font-size: var(--op-font-small);
2700
2960
  }
2961
+
2701
2962
  h6 {
2702
2963
  font-size: var(--op-font-x-small);
2703
2964
  }
2965
+
2704
2966
  p {
2705
2967
  font-size: var(--op-font-medium);
2706
2968
  margin-block-end: var(--op-space-small);
2707
2969
  }
2970
+
2708
2971
  small {
2709
2972
  font-size: var(--op-font-small);
2710
2973
  }
@@ -2714,11 +2977,13 @@ small {
2714
2977
  grid-template-columns: auto 1fr auto;
2715
2978
  inline-size: 100%;
2716
2979
  }
2980
+
2717
2981
  .app-body {
2718
2982
  display: flex;
2719
2983
  overflow: auto;
2720
2984
  flex-direction: column;
2721
2985
  }
2986
+
2722
2987
  .app__header {
2723
2988
  position: sticky;
2724
2989
  z-index: var(--op-z-index-header);
@@ -2726,6 +2991,7 @@ small {
2726
2991
  flex-shrink: 0;
2727
2992
  inset-block-start: 0;
2728
2993
  }
2994
+
2729
2995
  .app__content {
2730
2996
  flex-grow: 1;
2731
2997
  padding: 0 var(--op-space-large);
@@ -2733,12 +2999,14 @@ small {
2733
2999
  inline-size: 100%;
2734
3000
  max-inline-size: var(--op-breakpoint-medium);
2735
3001
  }
3002
+
2736
3003
  .app__content-no-margin {
2737
3004
  flex-grow: 1;
2738
3005
  padding: 0 var(--op-space-large);
2739
3006
  inline-size: 100%;
2740
3007
  overflow-y: auto;
2741
3008
  }
3009
+
2742
3010
  .app__footer {
2743
3011
  position: sticky;
2744
3012
  z-index: var(--op-z-index-footer);
@@ -2746,6 +3014,7 @@ small {
2746
3014
  flex-shrink: 0;
2747
3015
  inset-block-end: 0;
2748
3016
  }
3017
+
2749
3018
  /*
2750
3019
  <html lang='en'>
2751
3020
  <head>...</head>
@@ -2760,6 +3029,7 @@ small {
2760
3029
  </body>
2761
3030
  </html>
2762
3031
  */
3032
+
2763
3033
  :root:has(.op-page) {
2764
3034
  /* Reset existing Optics layout */
2765
3035
  overflow: unset;
@@ -2777,6 +3047,7 @@ small {
2777
3047
  min-block-size: 100%;
2778
3048
  }
2779
3049
  }
3050
+
2780
3051
  .op-page {
2781
3052
  display: grid;
2782
3053
  grid-template-areas: 'sidebar-left main sidebar-right';
@@ -2851,6 +3122,7 @@ small {
2851
3122
  }
2852
3123
  }
2853
3124
  /* Container Properties */
3125
+
2854
3126
  .container {
2855
3127
  inline-size: 100%;
2856
3128
  margin-block: 0;
@@ -2859,299 +3131,408 @@ small {
2859
3131
  padding-block: 0;
2860
3132
  padding-inline: var(--op-space-large);
2861
3133
  }
3134
+
2862
3135
  .container--sm {
2863
3136
  max-inline-size: var(--op-breakpoint-small);
2864
3137
  }
3138
+
2865
3139
  .container--md-padding {
2866
3140
  padding: 0 var(--op-space-medium);
2867
3141
  }
3142
+
2868
3143
  .container--sm-padding {
2869
3144
  padding: 0 var(--op-space-small);
2870
3145
  }
3146
+
2871
3147
  .container--xs {
2872
3148
  max-inline-size: var(--op-breakpoint-x-small);
2873
3149
  }
3150
+
2874
3151
  /* Width Properties */
3152
+
2875
3153
  .full-width {
2876
3154
  inline-size: 100%;
2877
3155
  }
3156
+
2878
3157
  .half-width {
2879
3158
  inline-size: 50%;
2880
3159
  }
3160
+
2881
3161
  .four-fifths-width {
2882
3162
  inline-size: calc(100% * 4 / 5);
2883
3163
  }
3164
+
2884
3165
  .three-fifths-width {
2885
3166
  inline-size: calc(100% * 3 / 5);
2886
3167
  }
3168
+
2887
3169
  .two-fifths-width {
2888
3170
  inline-size: calc(100% * 2 / 5);
2889
3171
  }
3172
+
2890
3173
  .one-fifth-width {
2891
3174
  inline-size: calc(100% * 1 / 5);
2892
3175
  }
3176
+
2893
3177
  .three-quarters-width {
2894
3178
  inline-size: calc(100% * 3 / 4);
2895
3179
  }
3180
+
2896
3181
  .one-quarter-width {
2897
3182
  inline-size: calc(100% * 1 / 4);
2898
3183
  }
3184
+
2899
3185
  .two-thirds-width {
2900
3186
  inline-size: calc(100% * 2 / 3);
2901
3187
  }
3188
+
2902
3189
  .one-third-width {
2903
3190
  inline-size: calc(100% * 1 / 3);
2904
3191
  }
3192
+
2905
3193
  /* Flex Properties */
3194
+
2906
3195
  .flex {
2907
3196
  display: flex;
2908
3197
  }
3198
+
2909
3199
  .flex-col {
2910
3200
  flex-direction: column;
2911
3201
  }
3202
+
2912
3203
  .flex-row {
2913
3204
  flex-direction: row;
2914
3205
  }
3206
+
2915
3207
  .flex-wrap {
2916
3208
  flex-wrap: wrap;
2917
3209
  }
3210
+
2918
3211
  .flex-no-wrap {
2919
3212
  flex-wrap: nowrap;
2920
3213
  }
3214
+
2921
3215
  .flex-grow-1 {
2922
3216
  flex-grow: 1;
2923
3217
  }
3218
+
2924
3219
  /* Gap Properties */
3220
+ .gap-none {
3221
+ gap: 0;
3222
+
3223
+ --op-gap: 0;
3224
+ }
3225
+
2925
3226
  .gap-xxs {
2926
3227
  gap: var(--op-space-2x-small);
2927
3228
 
2928
3229
  --op-gap: var(--op-space-2x-small);
2929
3230
  }
3231
+
2930
3232
  .gap-xs {
2931
3233
  gap: var(--op-space-x-small);
2932
3234
 
2933
3235
  --op-gap: var(--op-space-x-small);
2934
3236
  }
3237
+
2935
3238
  .gap-sm {
2936
3239
  gap: var(--op-space-small);
2937
3240
 
2938
3241
  --op-gap: var(--op-space-small);
2939
3242
  }
3243
+
2940
3244
  .gap-md {
2941
3245
  gap: var(--op-space-medium);
2942
3246
 
2943
3247
  --op-gap: var(--op-space-medium);
2944
3248
  }
3249
+
2945
3250
  .gap-lg {
2946
3251
  gap: var(--op-space-large);
2947
3252
 
2948
3253
  --op-gap: var(--op-space-large);
2949
3254
  }
3255
+
2950
3256
  .gap-xl {
2951
3257
  gap: var(--op-space-x-large);
2952
3258
 
2953
3259
  --op-gap: var(--op-space-x-large);
2954
3260
  }
3261
+
2955
3262
  /* Justify Content */
3263
+
2956
3264
  .justify-start {
2957
3265
  justify-content: flex-start;
2958
3266
  }
3267
+
2959
3268
  .justify-center {
2960
3269
  justify-content: center;
2961
3270
  }
3271
+
2962
3272
  .justify-end {
2963
3273
  justify-content: flex-end;
2964
3274
  }
3275
+
2965
3276
  .justify-between {
2966
3277
  justify-content: space-between;
2967
3278
  }
3279
+
2968
3280
  .justify-around {
2969
3281
  justify-content: space-around;
2970
3282
  }
3283
+
2971
3284
  /* Align Items */
3285
+
2972
3286
  .items-stretch {
2973
3287
  align-items: stretch;
2974
3288
  }
3289
+
2975
3290
  .items-start {
2976
3291
  align-items: flex-start;
2977
3292
  }
3293
+
2978
3294
  .items-center {
2979
3295
  align-items: center;
2980
3296
  }
3297
+
2981
3298
  .items-end {
2982
3299
  align-items: flex-end;
2983
3300
  }
3301
+
2984
3302
  .items-baseline {
2985
3303
  align-items: baseline;
2986
3304
  }
3305
+
2987
3306
  /* Align Self */
3307
+
2988
3308
  .self-auto {
2989
3309
  align-self: auto;
2990
3310
  }
3311
+
2991
3312
  .self-start {
2992
3313
  align-self: flex-start;
2993
3314
  }
3315
+
2994
3316
  .self-center {
2995
3317
  align-self: center;
2996
3318
  }
3319
+
2997
3320
  .self-end {
2998
3321
  align-self: flex-end;
2999
3322
  }
3323
+
3000
3324
  .self-stretch {
3001
3325
  align-self: stretch;
3002
3326
  }
3327
+
3003
3328
  .self-baseline {
3004
3329
  align-self: baseline;
3005
3330
  }
3331
+
3006
3332
  /* Text Alignment */
3333
+
3007
3334
  .text-left {
3008
3335
  text-align: start;
3009
3336
  }
3337
+
3010
3338
  .text-center {
3011
3339
  text-align: center;
3012
3340
  }
3341
+
3013
3342
  .text-right {
3014
3343
  text-align: end;
3015
3344
  }
3345
+
3016
3346
  .text-justify {
3017
3347
  text-align: justify;
3018
3348
  }
3349
+
3019
3350
  /* Box Margin */
3351
+
3020
3352
  .margin-xl {
3021
3353
  margin: var(--op-space-x-large);
3022
3354
  }
3355
+
3023
3356
  .margin-lg {
3024
3357
  margin: var(--op-space-large);
3025
3358
  }
3359
+
3026
3360
  .margin-md {
3027
3361
  margin: var(--op-space-medium);
3028
3362
  }
3363
+
3029
3364
  .margin-sm {
3030
3365
  margin: var(--op-space-small);
3031
3366
  }
3367
+
3032
3368
  .margin-xs {
3033
3369
  margin: var(--op-space-x-small);
3034
3370
  }
3371
+
3035
3372
  .margin-none {
3036
3373
  margin: 0;
3037
3374
  }
3375
+
3038
3376
  .margin-auto {
3039
3377
  margin: auto;
3040
3378
  }
3379
+
3041
3380
  /* Vertical Margin */
3381
+
3042
3382
  .margin-y-xl {
3043
3383
  margin-block: var(--op-space-x-large);
3044
3384
  }
3385
+
3045
3386
  .margin-y-lg {
3046
3387
  margin-block: var(--op-space-large);
3047
3388
  }
3389
+
3048
3390
  .margin-y-md {
3049
3391
  margin-block: var(--op-space-medium);
3050
3392
  }
3393
+
3051
3394
  .margin-y-sm {
3052
3395
  margin-block: var(--op-space-small);
3053
3396
  }
3397
+
3054
3398
  .margin-y-xs {
3055
3399
  margin-block: var(--op-space-x-small);
3056
3400
  }
3401
+
3057
3402
  .margin-y-none {
3058
3403
  margin-block: 0;
3059
3404
  }
3405
+
3060
3406
  /* Horizontal Margin */
3407
+
3061
3408
  .margin-x-xl {
3062
3409
  margin-inline: var(--op-space-x-large);
3063
3410
  }
3411
+
3064
3412
  .margin-x-lg {
3065
3413
  margin-inline: var(--op-space-large);
3066
3414
  }
3415
+
3067
3416
  .margin-x-md {
3068
3417
  margin-inline: var(--op-space-medium);
3069
3418
  }
3419
+
3070
3420
  .margin-x-sm {
3071
3421
  margin-inline: var(--op-space-small);
3072
3422
  }
3423
+
3073
3424
  .margin-x-xs {
3074
3425
  margin-inline: var(--op-space-x-small);
3075
3426
  }
3427
+
3076
3428
  .margin-x-none {
3077
3429
  margin-inline: 0;
3078
3430
  }
3431
+
3079
3432
  /* Top Margin */
3433
+
3080
3434
  .margin-top-xl {
3081
3435
  margin-block-start: var(--op-space-x-large);
3082
3436
  }
3437
+
3083
3438
  .margin-top-lg {
3084
3439
  margin-block-start: var(--op-space-large);
3085
3440
  }
3441
+
3086
3442
  .margin-top-md {
3087
3443
  margin-block-start: var(--op-space-medium);
3088
3444
  }
3445
+
3089
3446
  .margin-top-sm {
3090
3447
  margin-block-start: var(--op-space-small);
3091
3448
  }
3449
+
3092
3450
  .margin-top-xs {
3093
3451
  margin-block-start: var(--op-space-x-small);
3094
3452
  }
3453
+
3095
3454
  .margin-top-none {
3096
3455
  margin-block-start: 0;
3097
3456
  }
3457
+
3098
3458
  /* Bottom Margin */
3459
+
3099
3460
  .margin-bottom-xl {
3100
3461
  margin-block-end: var(--op-space-x-large);
3101
3462
  }
3463
+
3102
3464
  .margin-bottom-lg {
3103
3465
  margin-block-end: var(--op-space-large);
3104
3466
  }
3467
+
3105
3468
  .margin-bottom-md {
3106
3469
  margin-block-end: var(--op-space-medium);
3107
3470
  }
3471
+
3108
3472
  .margin-bottom-sm {
3109
3473
  margin-block-end: var(--op-space-small);
3110
3474
  }
3475
+
3111
3476
  .margin-bottom-xs {
3112
3477
  margin-block-end: var(--op-space-x-small);
3113
3478
  }
3479
+
3114
3480
  .margin-bottom-none {
3115
3481
  margin-block-end: 0;
3116
3482
  }
3483
+
3117
3484
  /* Right Margin */
3485
+
3118
3486
  .margin-right-xl {
3119
3487
  margin-inline-end: var(--op-space-x-large);
3120
3488
  }
3489
+
3121
3490
  .margin-right-lg {
3122
3491
  margin-inline-end: var(--op-space-large);
3123
3492
  }
3493
+
3124
3494
  .margin-right-md {
3125
3495
  margin-inline-end: var(--op-space-medium);
3126
3496
  }
3497
+
3127
3498
  .margin-right-sm {
3128
3499
  margin-inline-end: var(--op-space-small);
3129
3500
  }
3501
+
3130
3502
  .margin-right-xs {
3131
3503
  margin-inline-end: var(--op-space-x-small);
3132
3504
  }
3505
+
3133
3506
  .margin-right-none {
3134
3507
  margin-inline-start: 0;
3135
3508
  }
3509
+
3136
3510
  /* Left Margin */
3511
+
3137
3512
  .margin-left-xl {
3138
3513
  margin-inline-start: var(--op-space-x-large);
3139
3514
  }
3515
+
3140
3516
  .margin-left-lg {
3141
3517
  margin-inline-start: var(--op-space-large);
3142
3518
  }
3519
+
3143
3520
  .margin-left-md {
3144
3521
  margin-inline-start: var(--op-space-medium);
3145
3522
  }
3523
+
3146
3524
  .margin-left-sm {
3147
3525
  margin-inline-start: var(--op-space-small);
3148
3526
  }
3527
+
3149
3528
  .margin-left-xs {
3150
3529
  margin-inline-start: var(--op-space-x-small);
3151
3530
  }
3531
+
3152
3532
  .margin-left-none {
3153
3533
  margin-inline-start: 0;
3154
3534
  }
3535
+
3155
3536
  /*
3156
3537
  Accessibility
3157
3538
  Use the following class to hide accessibility text that is needed for screen readers but needs to be hidden from regular users.
@@ -3165,34 +3546,183 @@ small {
3165
3546
  clip: rect(1px, 1px, 1px, 1px);
3166
3547
  inline-size: 1px;
3167
3548
  }
3549
+
3168
3550
  /* Advanced Layout Utilities */
3551
+
3169
3552
  /* Equivalent to .flex.flex-col.gap-md */
3170
3553
  .op-stack {
3171
3554
  display: flex;
3172
3555
  flex-direction: column;
3556
+ margin-block: 0;
3557
+ margin-inline: 0;
3558
+
3559
+ /* zero specificity. Lets utilities override */
3560
+ :where(&) {
3561
+ gap: var(--op-space-medium);
3562
+ }
3173
3563
  }
3174
- :where(.op-stack) {
3175
- gap: var(--op-space-medium);
3176
- }
3564
+
3177
3565
  /* Equivalent to .flex.flex-wrap.items-center.gap-md */
3178
3566
  .op-cluster {
3179
3567
  display: flex;
3180
3568
  flex-wrap: wrap;
3569
+ margin-block: 0;
3570
+ margin-inline: 0;
3571
+
3572
+ /* zero specificity. Lets utilities override */
3573
+ :where(&) {
3574
+ align-items: center;
3575
+ gap: var(--op-space-medium);
3576
+ }
3181
3577
  }
3182
- :where(.op-cluster) {
3183
- align-items: center;
3184
- gap: var(--op-space-medium);
3185
- }
3578
+
3186
3579
  /* Equivalent to .flex.flex-wrap.items-center.justify-between.gap-md */
3187
3580
  .op-split {
3188
3581
  display: flex;
3189
3582
  flex-wrap: wrap;
3190
3583
  justify-content: space-between;
3584
+ margin-block: 0;
3585
+ margin-inline: 0;
3586
+
3587
+ /* zero specificity. Lets utilities override */
3588
+ :where(&) {
3589
+ align-items: center;
3590
+ gap: var(--op-space-medium);
3591
+ }
3191
3592
  }
3192
- :where(.op-split) {
3193
- align-items: center;
3194
- gap: var(--op-space-medium);
3593
+
3594
+ /*
3595
+ side by side layout with a small area and a large area
3596
+ similar to .flex with a .flex-grow-1 within it, but with a more semantic name and wrap handling.
3597
+
3598
+ |[] [ ]|
3599
+ |[ ] []| with end
3600
+ */
3601
+ .op-flank {
3602
+ display: flex;
3603
+ margin-block: 0;
3604
+ margin-inline: 0;
3605
+
3606
+ /* zero specificity. Lets utilities override */
3607
+ :where(&) {
3608
+ flex-wrap: wrap;
3609
+ align-items: center;
3610
+ gap: var(--op-space-medium);
3611
+ }
3612
+
3613
+ /* Small area */
3614
+ &:not(.op-flank--end) > :first-child,
3615
+ &.op-flank--end > :last-child {
3616
+ flex-basis: auto;
3617
+ flex-grow: 1;
3618
+ }
3619
+
3620
+ /* Large area */
3621
+ &:not(.op-flank--end) > :last-child,
3622
+ &.op-flank--end > :first-child {
3623
+ flex-basis: 0;
3624
+ flex-grow: 999;
3625
+ }
3626
+ }
3627
+
3628
+ /* Grid Layout */
3629
+ .op-grid {
3630
+ --_op-grid-min-column-size: var(--op-space-4x-large);
3631
+ --_op-grid-max-column-size: 0px;
3632
+
3633
+ display: grid;
3634
+ grid-template-columns: repeat(
3635
+ auto-fit,
3636
+ minmax(max(var(--_op-grid-min-column-size), var(--_op-grid-max-column-size)), 1fr)
3637
+ );
3638
+ margin-block: 0;
3639
+ margin-inline: 0;
3640
+
3641
+ /* zero specificity. Lets utilities override */
3642
+ :where(&) {
3643
+ gap: var(--op-space-medium);
3644
+ }
3645
+
3646
+ &.op-grid--2-column {
3647
+ --_op-grid-max-column-size: calc(100% / 3);
3648
+ }
3649
+
3650
+ &.op-grid--3-column {
3651
+ --_op-grid-max-column-size: calc(100% / 4);
3652
+ }
3653
+
3654
+ &.op-grid--4-column {
3655
+ --_op-grid-max-column-size: calc(100% / 5);
3656
+ }
3657
+
3658
+ &.op-grid--5-column {
3659
+ --_op-grid-max-column-size: calc(100% / 6);
3660
+ }
3661
+
3662
+ &.op-grid--6-column {
3663
+ --_op-grid-max-column-size: calc(100% / 7);
3664
+ }
3665
+ }
3666
+
3667
+ /* Frame */
3668
+ @property --_op-frame-inline-size {
3669
+ inherits: true;
3670
+ initial-value: 100%;
3671
+ syntax: '<length> | <percentage>';
3195
3672
  }
3673
+
3674
+ .op-frame {
3675
+ display: flex;
3676
+ overflow: hidden;
3677
+ border-radius: inherit;
3678
+ aspect-ratio: 1 / 1;
3679
+ margin-block: 0;
3680
+ margin-inline: 0;
3681
+ max-inline-size: var(--_op-frame-inline-size);
3682
+
3683
+ :where(&) {
3684
+ align-items: center;
3685
+ justify-content: center;
3686
+ }
3687
+
3688
+ > img,
3689
+ > video {
3690
+ block-size: 100%;
3691
+ inline-size: 100%;
3692
+ object-fit: cover;
3693
+ }
3694
+
3695
+ /* aspect ratio */
3696
+
3697
+ &.op-frame--square {
3698
+ aspect-ratio: 1 / 1;
3699
+ }
3700
+
3701
+ &.op-frame--landscape {
3702
+ aspect-ratio: 16 / 9;
3703
+ }
3704
+
3705
+ &.op-frame--portrait {
3706
+ aspect-ratio: 9 / 16;
3707
+ }
3708
+
3709
+ &.op-frame--4-3 {
3710
+ aspect-ratio: 4 / 3;
3711
+ }
3712
+
3713
+ &.op-frame--3-4 {
3714
+ aspect-ratio: 3 / 4;
3715
+ }
3716
+
3717
+ &.op-frame--3-2 {
3718
+ aspect-ratio: 3 / 2;
3719
+ }
3720
+
3721
+ &.op-frame--2-3 {
3722
+ aspect-ratio: 2 / 3;
3723
+ }
3724
+ }
3725
+
3196
3726
  /* Components */
3197
3727
  .accordion {
3198
3728
  /* Public API (customizable component options) */
@@ -3239,7 +3769,7 @@ small {
3239
3769
  }
3240
3770
 
3241
3771
  &[open] {
3242
- summary .accordion__marker {
3772
+ > summary .accordion__marker {
3243
3773
  rotate: 0.25turn;
3244
3774
  }
3245
3775
 
@@ -3951,6 +4481,7 @@ small {
3951
4481
  }
3952
4482
  }
3953
4483
  }
4484
+
3954
4485
  .btn-group-toolbar {
3955
4486
  display: flex;
3956
4487
  flex-wrap: wrap;
@@ -4064,6 +4595,7 @@ small {
4064
4595
  }
4065
4596
  }
4066
4597
  }
4598
+
4067
4599
  /* stylelint-disable no-descending-specificity */
4068
4600
  .confirm-dialog {
4069
4601
  /* Public API (customizable component options) */
@@ -4251,6 +4783,7 @@ small {
4251
4783
  /* stylelint-enable selector-no-vendor-prefix */
4252
4784
  }
4253
4785
  }
4786
+
4254
4787
  /* Radio or Checkbox Form Control */
4255
4788
  .form-control:is([type='radio'], [type='checkbox']) {
4256
4789
  /* Public API (customizable component options) */
@@ -4269,6 +4802,7 @@ small {
4269
4802
  align-self: center;
4270
4803
  }
4271
4804
  }
4805
+
4272
4806
  /* Any Form Control that is not a radio or checkbox */
4273
4807
  .form-control:not([type='radio'], [type='checkbox']) {
4274
4808
  /* Public API (customizable component options) */
@@ -4331,6 +4865,7 @@ small {
4331
4865
  }
4332
4866
  }
4333
4867
  }
4868
+
4334
4869
  /* Color Form Control */
4335
4870
  .form-control[type='color'] {
4336
4871
  padding: var(--op-space-2x-small);
@@ -4345,6 +4880,7 @@ small {
4345
4880
  border-radius: var(--op-radius-medium);
4346
4881
  }
4347
4882
  }
4883
+
4348
4884
  /* File Form Control */
4349
4885
  .form-control[type='file'] {
4350
4886
  padding-block: 0;
@@ -4380,6 +4916,7 @@ small {
4380
4916
  --__op-btn-height: calc(var(--__op-btn-base-height) - var(--op-space-x-small));
4381
4917
  }
4382
4918
  }
4919
+
4383
4920
  select.form-control:not([multiple], [type='radio'], [type='checkbox']) {
4384
4921
  appearance: none;
4385
4922
  background-image: var(--op-encoded-images-dropdown-arrow);
@@ -4391,14 +4928,17 @@ select.form-control:not([multiple], [type='radio'], [type='checkbox']) {
4391
4928
  cursor: pointer;
4392
4929
  padding-inline-end: var(--op-space-3x-large);
4393
4930
  }
4931
+
4394
4932
  select.form-control[multiple] {
4395
4933
  min-block-size: calc(2 * var(--__op-form-control-height));
4396
4934
  }
4935
+
4397
4936
  textarea.form-control:not([type='radio'], [type='checkbox']) {
4398
4937
  block-size: calc(2 * var(--__op-form-control-height));
4399
4938
  max-inline-size: 100%;
4400
4939
  min-block-size: var(--__op-form-control-height);
4401
4940
  }
4941
+
4402
4942
  .form-label {
4403
4943
  color: var(--op-color-on-background);
4404
4944
  font-size: var(--op-font-x-small);
@@ -4406,16 +4946,19 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4406
4946
  letter-spacing: var(--op-letter-spacing-label);
4407
4947
  line-height: var(--op-line-height-base);
4408
4948
  }
4949
+
4409
4950
  .form-error {
4410
4951
  color: var(--op-color-alerts-danger-base);
4411
4952
  font-size: var(--op-font-x-small);
4412
4953
  inline-size: fit-content;
4413
4954
  }
4955
+
4414
4956
  .form-hint {
4415
4957
  display: block;
4416
4958
  font-size: var(--op-font-small);
4417
4959
  font-style: italic;
4418
4960
  }
4961
+
4419
4962
  .form-error-summary {
4420
4963
  padding: var(--op-space-large);
4421
4964
  border-radius: var(--op-radius-large);
@@ -4432,6 +4975,7 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4432
4975
  margin-block-end: 0;
4433
4976
  }
4434
4977
  }
4978
+
4435
4979
  .form-group {
4436
4980
  display: grid;
4437
4981
  align-content: baseline;
@@ -4462,6 +5006,7 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4462
5006
  }
4463
5007
  }
4464
5008
  }
5009
+
4465
5010
  .form-group--inline {
4466
5011
  align-items: center;
4467
5012
 
@@ -4483,6 +5028,7 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4483
5028
  }
4484
5029
  /* stylelint-enable no-descending-specificity */
4485
5030
  }
5031
+
4486
5032
  .form-group--error {
4487
5033
  /* stylelint-disable no-descending-specificity */
4488
5034
  .form-control {
@@ -4572,6 +5118,13 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4572
5118
  --_op-icon-optical-size-large: 40;
4573
5119
  --_op-icon-optical-size-x-large: 48;
4574
5120
 
5121
+ /* SVG (.icon--svg) */
5122
+ --_op-icon-stroke-width-light: 1;
5123
+ --_op-icon-stroke-width-normal: 1.5;
5124
+ --_op-icon-stroke-width-semi-bold: 2;
5125
+ --_op-icon-stroke-width-bold: 2.5;
5126
+ --_op-icon-svg-opacity-low-emphasis: 0.6;
5127
+
4575
5128
  /* Private API (component option defaults) */
4576
5129
  --__op-icon-weight: var(--_op-icon-weight-normal);
4577
5130
  --__op-icon-fill: var(--_op-icon-fill-outlined);
@@ -4599,18 +5152,22 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4599
5152
  /* Weight Modifiers */
4600
5153
  &.icon--weight-light {
4601
5154
  --__op-icon-weight: var(--_op-icon-weight-light);
5155
+ --__op-icon-stroke-width: var(--_op-icon-stroke-width-light);
4602
5156
  }
4603
5157
 
4604
5158
  &.icon--weight-normal {
4605
5159
  --__op-icon-weight: var(--_op-icon-weight-normal);
5160
+ --__op-icon-stroke-width: var(--_op-icon-stroke-width-normal);
4606
5161
  }
4607
5162
 
4608
5163
  &.icon--weight-semi-bold {
4609
5164
  --__op-icon-weight: var(--_op-icon-weight-semi-bold);
5165
+ --__op-icon-stroke-width: var(--_op-icon-stroke-width-semi-bold);
4610
5166
  }
4611
5167
 
4612
5168
  &.icon--weight-bold {
4613
5169
  --__op-icon-weight: var(--_op-icon-weight-bold);
5170
+ --__op-icon-stroke-width: var(--_op-icon-stroke-width-bold);
4614
5171
  }
4615
5172
 
4616
5173
  /* Emphasis */
@@ -4646,7 +5203,27 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4646
5203
  --__op-icon-font-size: var(--_op-icon-font-size-x-large);
4647
5204
  --__op-icon-optical-size: var(--_op-icon-optical-size-x-large);
4648
5205
  }
5206
+
5207
+ /* SVG Modifier: an inline SVG instead of a font glyph, e.g. `icon icon--svg icon--large` */
5208
+ &.icon--svg {
5209
+ svg {
5210
+ display: block;
5211
+ block-size: 100%;
5212
+ inline-size: 100%;
5213
+ }
5214
+
5215
+ /* A rule on the <svg> root cannot beat a stroke-width attribute on a child, so target the attribute.
5216
+ With no weight modifier the set keeps the widths it was drawn with. */
5217
+ &:is(.icon--weight-light, .icon--weight-normal, .icon--weight-semi-bold, .icon--weight-bold) svg [stroke-width] {
5218
+ stroke-width: var(--__op-icon-stroke-width);
5219
+ }
5220
+
5221
+ &.icon--low-emphasis {
5222
+ opacity: var(--_op-icon-svg-opacity-low-emphasis);
5223
+ }
5224
+ }
4649
5225
  }
5226
+
4650
5227
  /* Material Icons class provided by the Google Fonts CDN */
4651
5228
  .material-symbols-outlined {
4652
5229
  font-variation-settings:
@@ -4656,6 +5233,7 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4656
5233
  'opsz' var(--__op-icon-optical-size);
4657
5234
  font-weight: unset;
4658
5235
  }
5236
+
4659
5237
  /* Custom SVG Icons app specific */
4660
5238
  .custom-icons {
4661
5239
  svg {
@@ -4705,6 +5283,7 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4705
5283
  }
4706
5284
  }
4707
5285
  }
5286
+
4708
5287
  .modal {
4709
5288
  /* Public API (customizable component options) */
4710
5289
  --_op-modal-width: calc(141 * var(--op-size-unit)); /* 564px */
@@ -4750,6 +5329,7 @@ textarea.form-control:not([type='radio'], [type='checkbox']) {
4750
5329
  gap: var(--op-space-small);
4751
5330
  }
4752
5331
  }
5332
+
4753
5333
  dialog.modal {
4754
5334
  padding: 0;
4755
5335
  border: none;
@@ -4782,6 +5362,7 @@ dialog.modal {
4782
5362
  }
4783
5363
  }
4784
5364
  }
5365
+
4785
5366
  @starting-style {
4786
5367
  dialog.modal[open] {
4787
5368
  transform: scale(0.7);
@@ -5289,6 +5870,7 @@ dialog.modal {
5289
5870
  --__op-spinner-track-width: var(--_op-spinner-track-width-large);
5290
5871
  }
5291
5872
  }
5873
+
5292
5874
  @keyframes spinner {
5293
5875
  to {
5294
5876
  transform: rotate(360deg);
@@ -5405,6 +5987,7 @@ dialog.modal {
5405
5987
  display: flex;
5406
5988
  align-items: center;
5407
5989
  }
5990
+
5408
5991
  .tab {
5409
5992
  /* Public API */
5410
5993
  --_op-tab-font-small: var(--op-font-x-small);
@@ -5789,7 +6372,11 @@ dialog.modal {
5789
6372
 
5790
6373
  display: flex;
5791
6374
  flex-direction: column;
5792
- gap: var(--op-space-x-small);
6375
+
6376
+ /* zero specificity. Lets utilities override */
6377
+ :where(&) {
6378
+ gap: var(--op-space-x-small);
6379
+ }
5793
6380
 
5794
6381
  &.text-pair--inline {
5795
6382
  flex-direction: row;
@@ -5833,6 +6420,7 @@ dialog.modal {
5833
6420
  }
5834
6421
  }
5835
6422
  /* Inspired by https://blog.logrocket.com/creating-beautiful-tooltips-with-only-css/ */
6423
+
5836
6424
  [data-tooltip-text] {
5837
6425
  /* Public API (customizable component options) */
5838
6426
  --_op-tooltip-max-width: calc(50 * var(--op-size-unit)); /* 200px */