@rolemodel/optics 2.1.2 → 2.1.4

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 (44) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/.yarn/releases/yarn-4.8.1.cjs +935 -0
  3. package/.yarnrc.yml +1 -1
  4. package/README.md +1 -1
  5. package/dist/README.md +1 -1
  6. package/dist/css/components/accordion.css +66 -0
  7. package/dist/css/components/alert.css +171 -0
  8. package/dist/css/components/avatar.css +95 -0
  9. package/dist/css/components/badge.css +73 -0
  10. package/dist/css/components/breadcrumbs.css +37 -0
  11. package/dist/css/components/button.css +273 -0
  12. package/dist/css/components/button_group.css +47 -0
  13. package/dist/css/components/card.css +70 -0
  14. package/dist/css/components/confirm-dialog.css +80 -0
  15. package/dist/css/components/divider.css +55 -0
  16. package/dist/css/components/form.css +360 -0
  17. package/dist/css/components/icon.css +121 -0
  18. package/dist/css/components/index.css +24 -0
  19. package/dist/css/components/modal.css +149 -0
  20. package/dist/css/components/navbar.css +60 -0
  21. package/dist/css/components/pagination.css +24 -0
  22. package/dist/css/components/side_panel.css +90 -0
  23. package/dist/css/components/sidebar.css +138 -0
  24. package/dist/css/components/spinner.css +52 -0
  25. package/dist/css/components/switch.css +107 -0
  26. package/dist/css/components/tab.css +76 -0
  27. package/dist/css/components/table.css +133 -0
  28. package/dist/css/components/tag.css +168 -0
  29. package/dist/css/components/text_pair.css +55 -0
  30. package/dist/css/components/tooltip.css +134 -0
  31. package/dist/css/core/base.css +95 -0
  32. package/dist/css/core/fonts/icon_fonts.css +8 -0
  33. package/dist/css/core/fonts/index.css +8 -0
  34. package/dist/css/core/fonts/text_fonts.css +16 -0
  35. package/dist/css/core/layout.css +43 -0
  36. package/dist/css/core/tokens/base_tokens.css +338 -0
  37. package/dist/css/core/tokens/index.css +2 -0
  38. package/dist/css/core/tokens/scale_color_tokens.css +1498 -0
  39. package/dist/css/core/utilities.css +429 -0
  40. package/dist/css/optics.css +10 -2
  41. package/dist/css/optics.min.css +1 -1
  42. package/dist/package.json +3 -3
  43. package/package.json +3 -3
  44. package/.yarn/releases/yarn-4.2.2.cjs +0 -894
@@ -0,0 +1,24 @@
1
+ .pagination {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 0;
5
+
6
+ /* Showing Dropdown */
7
+ .form-group {
8
+ align-items: center;
9
+
10
+ .form-label {
11
+ grid-column: 1;
12
+ }
13
+
14
+ .form-control {
15
+ grid-column: 2;
16
+ }
17
+ }
18
+
19
+ /* ... Gap */
20
+ .pagination__divider {
21
+ height: 100%;
22
+ padding-inline: var(--op-space-x-small);
23
+ }
24
+ }
@@ -0,0 +1,90 @@
1
+ .side-panel {
2
+ /* Public API (customizable component options) */
3
+ --_op-side-panel-width: calc(54 * var(--op-size-unit)); /* 216px */
4
+ --_op-side-panel-header-padding: var(--op-space-medium);
5
+ --_op-side-panel-body-padding: var(--op-space-medium);
6
+ --_op-side-panel-footer-padding: var(--op-space-medium);
7
+ --_op-side-panel-section-padding: var(--op-space-medium);
8
+
9
+ display: flex;
10
+ width: var(--_op-side-panel-width);
11
+ min-width: var(--_op-side-panel-width);
12
+ height: 100vh;
13
+ max-height: 100%;
14
+ flex-direction: column;
15
+ background-color: var(--op-color-background);
16
+ color: var(--op-color-on-background);
17
+
18
+ /* Modifiers */
19
+ &.side-panel--border-left {
20
+ box-shadow: var(--op-border-left) var(--op-color-border);
21
+ }
22
+
23
+ &.side-panel--border-right {
24
+ box-shadow: var(--op-border-right) var(--op-color-border);
25
+ }
26
+
27
+ &.side-panel--border-left.side-panel--border-right {
28
+ box-shadow: var(--op-border-x);
29
+ }
30
+
31
+ /* Elements */
32
+ .side-panel__header {
33
+ &.side-panel__header--padded {
34
+ padding: var(--_op-side-panel-header-padding);
35
+ }
36
+
37
+ &.side-panel__header--padded-x {
38
+ padding-inline: var(--_op-side-panel-header-padding);
39
+ }
40
+
41
+ &.side-panel__header--padded-y {
42
+ padding-block: var(--_op-side-panel-header-padding);
43
+ }
44
+ }
45
+
46
+ .side-panel__body {
47
+ flex: 1;
48
+ overflow-y: auto;
49
+
50
+ &.side-panel__body--padded {
51
+ padding: var(--_op-side-panel-body-padding);
52
+ }
53
+
54
+ &.side-panel__body--padded-x {
55
+ padding-inline: var(--_op-side-panel-body-padding);
56
+ }
57
+
58
+ &.side-panel__body--padded-y {
59
+ padding-block: var(--_op-side-panel-body-padding);
60
+ }
61
+ }
62
+
63
+ .side-panel__footer {
64
+ &.side-panel__footer--padded {
65
+ padding: var(--_op-side-panel-footer-padding);
66
+ }
67
+
68
+ &.side-panel__footer--padded-x {
69
+ padding-inline: var(--_op-side-panel-footer-padding);
70
+ }
71
+
72
+ &.side-panel__footer--padded-y {
73
+ padding-block: var(--_op-side-panel-footer-padding);
74
+ }
75
+ }
76
+
77
+ .side-panel__section {
78
+ &.side-panel__section--padded {
79
+ padding: var(--_op-side-panel-section-padding);
80
+ }
81
+
82
+ &.side-panel__section--padded-x {
83
+ padding-inline: var(--_op-side-panel-section-padding);
84
+ }
85
+
86
+ &.side-panel__section--padded-y {
87
+ padding-block: var(--_op-side-panel-section-padding);
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,138 @@
1
+ .sidebar {
2
+ /* Public API (customizable component options) */
3
+
4
+ /* Normal */
5
+ --_op-sidebar-background-color: var(--op-color-neutral-plus-eight);
6
+ --_op-sidebar-text-color: var(--op-color-neutral-on-plus-eight);
7
+ --_op-sidebar-border-color: var(--op-color-neutral-plus-four);
8
+
9
+ /* Width */
10
+ --_op-sidebar-rail-width: calc(22 * var(--op-size-unit)); /* 88px */
11
+ --_op-sidebar-compact-width: calc(42 * var(--op-size-unit)); /* 168px */
12
+ --_op-sidebar-drawer-width: calc(54 * var(--op-size-unit)); /* 216px */
13
+ --_op-sidebar-rail-brand-width: calc(19 * var(--op-size-unit)); /* 76px */
14
+ --_op-sidebar-compact-brand-width: calc(24 * var(--op-size-unit)); /* 96px */
15
+ --_op-sidebar-drawer-brand-width: calc(24 * var(--op-size-unit)); /* 96px */
16
+
17
+ /* Spacing */
18
+ --_op-sidebar-spacing: calc(var(--op-space-2x-large) + var(--op-space-2x-small));
19
+ --_op-sidebar-brand-spacing: var(--op-space-medium);
20
+ --_op-sidebar-content-spacing: var(--op-space-x-small);
21
+ --_op-sidebar-content-item-spacing: var(--op-space-2x-small);
22
+
23
+ /* Animation */
24
+ --_op-sidebar-transition: var(--op-transition-sidebar);
25
+
26
+ /* Private API (component option defaults) */
27
+ --__op-sidebar-width: var(--_op-sidebar-drawer-width);
28
+ --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
29
+
30
+ z-index: var(--op-z-index-sidebar);
31
+ display: flex;
32
+ width: var(--__op-sidebar-width);
33
+ min-width: var(--__op-sidebar-width);
34
+ flex-direction: column;
35
+ background-color: var(--_op-sidebar-background-color);
36
+ box-shadow: var(--op-border-right) var(--_op-sidebar-border-color);
37
+ color: var(--_op-sidebar-text-color);
38
+ overflow-y: auto;
39
+ transition: var(--_op-sidebar-transition);
40
+
41
+ /* Elements */
42
+ .sidebar__brand {
43
+ height: var(--__op-sidebar-brand-width);
44
+ padding: var(--_op-sidebar-brand-spacing);
45
+ margin-inline: auto;
46
+
47
+ img {
48
+ height: 100%;
49
+ }
50
+ }
51
+
52
+ .sidebar__content {
53
+ display: flex;
54
+ flex-direction: column;
55
+ flex-grow: 1;
56
+ gap: var(--_op-sidebar-content-item-spacing);
57
+ padding-inline: var(--_op-sidebar-content-spacing);
58
+
59
+ > * {
60
+ justify-content: flex-start;
61
+
62
+ .material-symbols-outlined {
63
+ --__op-icon-font-size: var(--_op-icon-font-size-large);
64
+ --__op-icon-optical-size: var(--_op-icon-optical-size-large);
65
+ --__op-icon-weight: var(--_op-icon-weight-bold);
66
+ }
67
+ }
68
+
69
+ &.sidebar__content--start {
70
+ justify-content: start;
71
+ }
72
+
73
+ &.sidebar__content--center {
74
+ justify-content: center;
75
+ }
76
+
77
+ &.sidebar__content--end {
78
+ justify-content: end;
79
+ }
80
+ }
81
+
82
+ /* Modifiers */
83
+ &.sidebar--padded {
84
+ padding-block: var(--_op-sidebar-spacing);
85
+ }
86
+
87
+ /* Drawer Modifier */
88
+ &.sidebar--drawer {
89
+ /* Private API */
90
+ --__op-sidebar-width: var(--_op-sidebar-drawer-width);
91
+ --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
92
+ }
93
+
94
+ /* Compact Modifier */
95
+ &.sidebar--compact {
96
+ /* Private API (component option defaults) */
97
+ --__op-sidebar-width: var(--_op-sidebar-compact-width);
98
+ --__op-sidebar-brand-width: var(--_op-sidebar-compact-brand-width);
99
+
100
+ /* Elements */
101
+ .sidebar__content {
102
+ > * {
103
+ /* Need to get icon-with-label behavior */
104
+ flex-direction: column;
105
+ padding: var(--op-space-small);
106
+ gap: var(--op-space-3x-small);
107
+ }
108
+ }
109
+ }
110
+
111
+ &.sidebar--rail {
112
+ /* Private API (component option defaults) */
113
+ --__op-sidebar-width: var(--_op-sidebar-rail-width);
114
+ --__op-sidebar-brand-width: var(--_op-sidebar-rail-brand-width);
115
+
116
+ /* Elements */
117
+ .sidebar__content {
118
+ align-items: center;
119
+
120
+ > * {
121
+ /* Need to get icon behavior */
122
+ width: var(--__op-btn-height);
123
+ min-width: var(--__op-btn-height);
124
+ justify-content: center;
125
+ padding: 0;
126
+ font-size: 0;
127
+ gap: 0;
128
+ }
129
+ }
130
+ }
131
+
132
+ /* Primary */
133
+ &.sidebar--primary {
134
+ --_op-sidebar-background-color: var(--op-color-primary-plus-six);
135
+ --_op-sidebar-text-color: var(--op-color-primary-on-plus-six);
136
+ --_op-sidebar-border-color: var(--op-color-primary-plus-four);
137
+ }
138
+ }
@@ -0,0 +1,52 @@
1
+ .spinner {
2
+ /* Public API (customizable component options) */
3
+ --_op-spinner-indicator-color: var(--op-color-primary-base);
4
+ --_op-spinner-track-color: var(--op-color-neutral-plus-four);
5
+ --_op-spinner-track-width-x-small: var(--op-border-width);
6
+ --_op-spinner-track-width-small: var(--op-border-width-large);
7
+ --_op-spinner-track-width-medium: calc(var(--op-border-width-large) + var(--op-border-width));
8
+ --_op-spinner-track-width-large: var(--op-border-width-x-large);
9
+ --_op-spinner-diameter-x-small: calc(6 * var(--op-size-unit)); /* 24px */
10
+ --_op-spinner-diameter-small: calc(10 * var(--op-size-unit)); /* 40px */
11
+ --_op-spinner-diameter-medium: calc(15 * var(--op-size-unit)); /* 60px */
12
+ --_op-spinner-diameter-large: calc(20 * var(--op-size-unit)); /* 80px */
13
+ --_op-spinner-animation-duration: 0.8s;
14
+ --_op-spinner-animation-timing-function: linear;
15
+
16
+ /* Private API (component option defaults) */
17
+ --__op-spinner-diameter: var(--_op-spinner-diameter-large);
18
+ --__op-spinner-track-width: var(--_op-spinner-track-width-large);
19
+
20
+ width: var(--__op-spinner-diameter);
21
+ height: var(--__op-spinner-diameter);
22
+ border: var(--__op-spinner-track-width) solid var(--_op-spinner-track-color);
23
+ border-radius: var(--__op-spinner-diameter);
24
+ border-top-color: var(--_op-spinner-indicator-color);
25
+ animation: spinner var(--_op-spinner-animation-duration) var(--_op-spinner-animation-timing-function) infinite;
26
+
27
+ &.spinner--x-small {
28
+ --__op-spinner-diameter: var(--_op-spinner-diameter-x-small);
29
+ --__op-spinner-track-width: var(--_op-spinner-track-width-x-small);
30
+ }
31
+
32
+ &.spinner--small {
33
+ --__op-spinner-diameter: var(--_op-spinner-diameter-small);
34
+ --__op-spinner-track-width: var(--_op-spinner-track-width-small);
35
+ }
36
+
37
+ &.spinner--medium {
38
+ --__op-spinner-diameter: var(--_op-spinner-diameter-medium);
39
+ --__op-spinner-track-width: var(--_op-spinner-track-width-medium);
40
+ }
41
+
42
+ &.spinner--large {
43
+ --__op-spinner-diameter: var(--_op-spinner-diameter-large);
44
+ --__op-spinner-track-width: var(--_op-spinner-track-width-large);
45
+ }
46
+ }
47
+
48
+ @keyframes spinner {
49
+ to {
50
+ transform: rotate(360deg);
51
+ }
52
+ }
@@ -0,0 +1,107 @@
1
+ .switch {
2
+ /* Public API (allowed to be overridden) */
3
+ --_op-switch-height-small: calc(4 * var(--op-size-unit)); /* 16px */
4
+ --_op-switch-height-large: calc(6 * var(--op-size-unit)); /* 24px */
5
+ --_op-switch-width-small: calc(7 * var(--op-size-unit)); /* 28px */
6
+ --_op-switch-width-large: calc(11 * var(--op-size-unit)); /* 44px */
7
+ --_op-switch-opacity-disabled: var(--op-opacity-disabled);
8
+ --_op-switch-switch-padding: var(--op-space-2x-small);
9
+
10
+ /* Private API (don't touch these) */
11
+ --__op-switch-width: var(--_op-switch-width-large);
12
+ --__op-switch-height: var(--_op-switch-height-large);
13
+ --__op-switch-switch-size: calc(var(--__op-switch-height) - var(--_op-switch-switch-padding));
14
+ --__op-switch-half-switch-padding: calc(var(--_op-switch-switch-padding) / 2);
15
+
16
+ position: relative;
17
+ display: flex;
18
+ align-items: center;
19
+
20
+ label {
21
+ position: relative;
22
+ display: block;
23
+ width: var(--__op-switch-width);
24
+ height: var(--__op-switch-height);
25
+ border-radius: var(--op-radius-pill);
26
+ background: var(--op-color-neutral-base);
27
+ box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-three);
28
+ text-indent: -9999px; /* Normally text would not be put in the label, but this hides it in case you do put text in the label */
29
+
30
+ &::after {
31
+ position: absolute;
32
+ width: var(--__op-switch-switch-size);
33
+ height: var(--__op-switch-switch-size);
34
+ border-radius: var(--op-radius-circle);
35
+ background-color: var(--op-color-neutral-plus-eight);
36
+ content: '';
37
+ inset-block-start: var(--__op-switch-half-switch-padding);
38
+ inset-inline-start: var(--__op-switch-half-switch-padding);
39
+ transition: var(--op-transition-input);
40
+ }
41
+ }
42
+
43
+ /* Prevent labels after the toggle being full width */
44
+ & + label {
45
+ width: fit-content;
46
+ }
47
+
48
+ input {
49
+ width: 0;
50
+ height: 0;
51
+ margin-inline-end: calc(-1 * var(--op-space-x-small));
52
+
53
+ &:disabled {
54
+ visibility: hidden;
55
+ }
56
+
57
+ &:disabled + label {
58
+ cursor: not-allowed;
59
+ opacity: var(--_op-switch-opacity-disabled);
60
+ }
61
+
62
+ &:checked + label {
63
+ background-color: var(--op-color-primary-base);
64
+ box-shadow: none;
65
+
66
+ &::after {
67
+ left: calc(100% - var(--__op-switch-half-switch-padding));
68
+ transform: translateX(-100%);
69
+ }
70
+ }
71
+
72
+ &:hover + label {
73
+ &::after {
74
+ background-color: var(--op-color-primary-plus-five);
75
+ }
76
+ }
77
+
78
+ &:focus-visible + label {
79
+ box-shadow:
80
+ 0 0 0 var(--op-border-width-large) var(--op-color-primary-plus-six),
81
+ inset var(--op-border-all) var(--op-color-primary-minus-three);
82
+
83
+ &::after {
84
+ background-color: var(--op-color-neutral-plus-five);
85
+ box-shadow: var(--op-border-all) var(--op-color-primary-minus-three);
86
+ }
87
+ }
88
+
89
+ &:focus-visible:checked + label {
90
+ &::after {
91
+ background-color: var(--op-color-primary-plus-six);
92
+ box-shadow: var(--op-border-all) var(--op-color-primary-minus-two);
93
+ }
94
+ }
95
+ }
96
+
97
+ /* Size Modifiers */
98
+ &.switch--small {
99
+ --__op-switch-width: var(--_op-switch-width-small);
100
+ --__op-switch-height: var(--_op-switch-height-small);
101
+ }
102
+
103
+ &.switch--large {
104
+ --__op-switch-width: var(--_op-switch-width-large);
105
+ --__op-switch-height: var(--_op-switch-height-large);
106
+ }
107
+ }
@@ -0,0 +1,76 @@
1
+ .tab-group {
2
+ display: flex;
3
+ align-items: center;
4
+ }
5
+
6
+ .tab {
7
+ /* Public API */
8
+ --_op-tab-font-small: var(--op-font-x-small);
9
+ --_op-tab-font-large: var(--op-font-small);
10
+ --_op-tab-padding-small: calc(var(--op-space-2x-small) + var(--op-space-3x-small)) var(--op-space-medium);
11
+ --_op-tab-padding-large: var(--op-space-x-small) var(--op-space-medium) var(--op-space-small) var(--op-space-medium);
12
+ --_op-tab-indicator-width-small: var(--op-border-width-large);
13
+ --_op-tab-indicator-width-large: var(--op-border-width-x-large);
14
+ --_op-tab-disabled-opacity: var(--op-opacity-disabled);
15
+
16
+ /* Private API */
17
+ --__op-tab-font-size: var(--_op-tab-font-large);
18
+ --__op-tab-padding: var(--_op-tab-padding-large);
19
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
20
+ --__op-tab-indicator: inset 0 calc(-1 * var(--__op-tab-indicator-width)) 0 0;
21
+
22
+ padding: var(--__op-tab-padding);
23
+ background-color: var(--op-color-background);
24
+ color: var(--op-color-on-background);
25
+ font-size: var(--__op-tab-font-size);
26
+ text-decoration: none;
27
+
28
+ &.tab--active {
29
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-plus-one);
30
+ }
31
+
32
+ /* Focus State */
33
+ &:focus,
34
+ &:focus-within,
35
+ &:focus-visible {
36
+ outline: none;
37
+ }
38
+
39
+ /* Hover State */
40
+ &:hover {
41
+ background-color: var(--op-color-primary-plus-seven);
42
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-base);
43
+ color: var(--op-color-primary-on-plus-seven);
44
+ }
45
+
46
+ /* Focus State */
47
+ &:focus-visible:not(.tab--disabled) {
48
+ z-index: 1;
49
+ box-shadow: var(--op-input-focus-primary);
50
+
51
+ &.tab--active {
52
+ box-shadow:
53
+ var(--__op-tab-indicator) var(--op-color-primary-plus-one),
54
+ var(--op-input-focus-primary);
55
+ }
56
+ }
57
+
58
+ /* Disabled State */
59
+ &.tab--disabled {
60
+ opacity: var(--_op-tab-disabled-opacity);
61
+ pointer-events: none;
62
+ }
63
+
64
+ /* Size Modifiers */
65
+ &.tab--small {
66
+ --__op-tab-padding: var(--_op-tab-padding-small);
67
+ --__op-tab-font-size: var(--_op-tab-font-small);
68
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-small);
69
+ }
70
+
71
+ &.tab--large {
72
+ --__op-tab-padding: var(--_op-tab-padding-large);
73
+ --__op-tab-font-size: var(--_op-tab-font-large);
74
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
75
+ }
76
+ }
@@ -0,0 +1,133 @@
1
+ .table {
2
+ /* Public API */
3
+
4
+ /* Cells (for height, the appropriate variable is used when using the density modifiers) */
5
+ --_op-table-cell-height-default: calc(11 * var(--op-size-unit)); /* 44px */
6
+ --_op-table-cell-height-comfortable: calc(16 * var(--op-size-unit)); /* 64px */
7
+ --_op-table-cell-height-compact: calc(8 * var(--op-size-unit)); /* 32px */
8
+
9
+ /* Private API */
10
+
11
+ /* These allow for overriding specific padding versions easier. */
12
+ --__op-table-cell-height: var(--_op-table-cell-height-default);
13
+
14
+ width: 100%;
15
+ border-radius: var(--op-radius-medium);
16
+ border-collapse: collapse;
17
+ box-shadow: var(--op-border-all) var(--op-color-border);
18
+ contain: paint;
19
+ table-layout: auto;
20
+
21
+ /* Elements */
22
+
23
+ thead {
24
+ background-color: var(--op-color-neutral-plus-eight);
25
+ box-shadow: inset var(--op-border-top) var(--op-color-border);
26
+ color: var(--op-color-neutral-on-plus-eight);
27
+
28
+ &:has(th input[type='checkbox']:checked) {
29
+ background-color: var(--op-color-primary-plus-seven);
30
+ color: var(--op-color-primary-on-plus-seven);
31
+ }
32
+ }
33
+
34
+ th {
35
+ font-weight: var(--op-font-weight-semi-bold);
36
+ text-align: left;
37
+ }
38
+
39
+ tbody,
40
+ tfoot {
41
+ background-color: var(--op-color-neutral-plus-max);
42
+ color: var(--op-color-neutral-on-plus-max);
43
+ }
44
+
45
+ th,
46
+ td {
47
+ height: var(--__op-table-cell-height);
48
+ font-size: var(--op-font-small);
49
+ padding-block: var(--op-space-2x-small);
50
+ padding-inline: var(--op-space-small);
51
+ }
52
+
53
+ tfoot tr {
54
+ box-shadow: var(--op-border-top) var(--op-color-border);
55
+ }
56
+
57
+ tr:not(:last-child) {
58
+ box-shadow: inset var(--op-border-top) var(--op-color-border);
59
+ }
60
+
61
+ /* Modifiers */
62
+
63
+ /* stylelint-disable no-descending-specificity */
64
+ &.table--primary {
65
+ thead {
66
+ background-color: var(--op-color-primary-plus-seven);
67
+ color: var(--op-color-primary-on-plus-seven);
68
+ }
69
+ }
70
+
71
+ &.table--danger {
72
+ thead {
73
+ background-color: var(--op-color-alerts-danger-plus-seven);
74
+ color: var(--op-color-alerts-danger-on-plus-seven);
75
+ }
76
+ }
77
+ /* stylelint-enable no-descending-specificity */
78
+
79
+ &.table--container {
80
+ overflow-y: auto;
81
+ }
82
+
83
+ /* Layout Modifiers */
84
+ &.table--auto-layout {
85
+ table-layout: auto;
86
+ }
87
+
88
+ &.table--fixed-layout {
89
+ table-layout: fixed;
90
+ }
91
+
92
+ /* Table Density Modifiers */
93
+ &.table--default-density {
94
+ --__op-table-cell-height: var(--_op-table-cell-height-default);
95
+ }
96
+
97
+ &.table--comfortable-density {
98
+ --__op-table-cell-height: var(--_op-table-cell-height-comfortable);
99
+ }
100
+
101
+ &.table--compact-density {
102
+ --__op-table-cell-height: var(--_op-table-cell-height-compact);
103
+ }
104
+
105
+ /* Striped Modifiers */
106
+ &.table--even-striped {
107
+ tbody tr:nth-child(even) {
108
+ background-color: var(--op-color-neutral-plus-seven);
109
+ color: var(--op-color-neutral-on-plus-seven);
110
+ }
111
+ }
112
+
113
+ &.table--odd-striped {
114
+ tbody tr:nth-child(odd) {
115
+ background-color: var(--op-color-neutral-plus-seven);
116
+ color: var(--op-color-neutral-on-plus-seven);
117
+ }
118
+ }
119
+
120
+ /* Sticky Header Row Modifier */
121
+ /* stylelint-disable no-descending-specificity */
122
+ &.table--sticky-header thead {
123
+ position: sticky;
124
+ inset-block-start: 0;
125
+ }
126
+ /* stylelint-enable no-descending-specificity */
127
+
128
+ /* Sticky Footer Row Modifier */
129
+ &.table--sticky-footer tfoot {
130
+ position: sticky;
131
+ inset-block-end: 0;
132
+ }
133
+ }