@rolemodel/optics 0.3.1 → 0.4.1

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 (37) hide show
  1. package/.babelrc.json +14 -0
  2. package/.github/pull_request_template.md +1 -0
  3. package/.github/workflows/publish-storybook.yml +1 -1
  4. package/.prettierignore +2 -0
  5. package/README.md +10 -14
  6. package/dist/css/optics.css +961 -446
  7. package/dist/css/optics.css.map +1 -1
  8. package/dist/scss/addons/tom-select.scss +1 -4
  9. package/dist/scss/components/alert.scss +56 -38
  10. package/dist/scss/components/avatar.scss +96 -0
  11. package/dist/scss/components/badge.scss +8 -3
  12. package/dist/scss/components/button.scss +168 -97
  13. package/dist/scss/components/button_group.scss +23 -5
  14. package/dist/scss/components/confirm-dialog.scss +88 -0
  15. package/dist/scss/components/divider.scss +59 -0
  16. package/dist/scss/components/form.scss +180 -49
  17. package/dist/scss/components/index.scss +6 -1
  18. package/dist/scss/components/modal.scss +156 -0
  19. package/dist/scss/components/pagination.scss +28 -0
  20. package/dist/scss/components/sidebar.scss +83 -159
  21. package/dist/scss/components/table.scss +22 -17
  22. package/dist/scss/components/tooltip.scss +136 -0
  23. package/dist/scss/core/tokens/base_tokens.scss +10 -5
  24. package/dist/scss/recipes/16six-sidebar.scss +32 -61
  25. package/dist/scss/recipes/domains-sidebar.scss +24 -44
  26. package/dist/tokens/tokens.json +9 -8
  27. package/package.json +30 -24
  28. package/.storybook/ModeSwitcher.jsx +0 -98
  29. package/.storybook/documentation.scss +0 -93
  30. package/.storybook/main.js +0 -11
  31. package/.storybook/manager.js +0 -22
  32. package/.storybook/preview.js +0 -12
  33. package/.storybook/rolemodelTheme.js +0 -10
  34. package/dist/scss/addons/rails-modal-and-panel/index.scss +0 -2
  35. package/dist/scss/addons/rails-modal-and-panel/modal.scss +0 -111
  36. package/dist/scss/components/flash.scss +0 -58
  37. /package/dist/scss/addons/{rails-modal-and-panel/panel.scss → panel.scss} +0 -0
@@ -1,36 +1,20 @@
1
1
  @mixin sidebar-rail-global {
2
2
  // Private API
3
3
  --__op-sidebar-width: var(--_op-sidebar-rail-width);
4
+ --__op-sidebar-brand-width: var(--_op-sidebar-rail-brand-width);
4
5
 
5
6
  // Elements
6
7
  .sidebar__content {
7
- gap: var(--_op-sidebar-link-spacing);
8
- }
9
-
10
- .sidebar__section-title,
11
- .sidebar__section-divider {
12
- display: none;
13
- }
14
-
15
- .sidebar__item {
16
- flex-direction: column;
17
- gap: var(--op-space-2x-small);
18
-
19
- .sidebar__item-icon {
20
- padding: var(--op-space-2x-small) var(--op-space-medium);
21
- transition: var(--_op-sidebar-transition);
22
- }
23
-
24
- &:hover .sidebar__item-icon {
25
- background-color: var(--_op-sidebar-icon-background-hover-color);
26
- }
27
-
28
- &.active .sidebar__item-icon {
29
- background-color: var(--_op-sidebar-icon-background-active-color);
30
- }
8
+ align-items: center;
31
9
 
32
- .sidebar__item-label {
33
- font-size: var(--op-font-x-small);
10
+ > * {
11
+ // Can't use extend but need to get icon behavior
12
+ width: var(--__op-btn-height);
13
+ min-width: var(--__op-btn-height);
14
+ justify-content: center;
15
+ padding: 0;
16
+ font-size: 0;
17
+ gap: 0;
34
18
  }
35
19
  }
36
20
  }
@@ -38,51 +22,21 @@
38
22
  @mixin sidebar-drawer-global {
39
23
  // Private API
40
24
  --__op-sidebar-width: var(--_op-sidebar-drawer-width);
25
+ --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
26
+ }
41
27
 
42
- .sidebar__content {
43
- padding: 0 var(--_op-sidebar-spacing);
44
- }
45
-
46
- .sidebar__section-title {
47
- overflow: hidden;
48
- height: var(--op-input-height-large);
49
- padding: var(--op-space-small) var(--op-space-medium);
50
- color: var(--_op-sidebar-text-color);
51
- font-size: var(--op-font-small);
52
- font-weight: var(--op-font-weight-bold);
53
- text-overflow: ellipsis;
54
- white-space: nowrap;
55
- }
56
-
57
- .sidebar__section-divider {
58
- border-bottom: var(--op-border-width) solid var(--_op-sidebar-text-color);
59
- margin: 0 var(--_op-sidebar-spacing);
60
- }
61
-
62
- .sidebar__item {
63
- height: var(--op-input-height-large);
64
- flex-direction: row;
65
- padding: var(--op-space-x-small) var(--op-space-medium);
66
- border-radius: var(--op-radius-pill);
67
- gap: var(--_op-sidebar-link-spacing);
68
-
69
- &:hover,
70
- &.active {
71
- transition: var(--_op-sidebar-transition);
72
- }
73
-
74
- &:hover {
75
- background-color: var(--_op-sidebar-icon-background-hover-color);
76
- color: var(--_op-sidebar-icon-text-hover-color);
77
-
78
- .sidebar__item-icon {
79
- color: var(--_op-sidebar-icon-text-hover-color);
80
- }
81
- }
28
+ @mixin sidebar-compact-global {
29
+ // Private API
30
+ --__op-sidebar-width: var(--_op-sidebar-compact-width);
31
+ --__op-sidebar-brand-width: var(--_op-sidebar-compact-brand-width);
82
32
 
83
- &.active {
84
- background-color: var(--_op-sidebar-icon-background-active-color);
85
- color: var(--_op-sidebar-icon-text-active-color);
33
+ // Elements
34
+ .sidebar__content {
35
+ > * {
36
+ // Can't use extend but need to get icon-with-label behavior
37
+ flex-direction: column;
38
+ padding: var(--op-space-small);
39
+ gap: var(--op-space-3x-small);
86
40
  }
87
41
  }
88
42
  }
@@ -90,51 +44,69 @@
90
44
  %sidebar-global {
91
45
  // Public API
92
46
  // Normal
93
- --_op-sidebar-background-color: var(--op-color-neutral-plus-seven);
94
- --_op-sidebar-text-color: var(--op-color-neutral-on-plus-seven);
95
-
96
- // Active
97
- --_op-sidebar-icon-background-active-color: var(--op-color-neutral-plus-three);
98
- --_op-sidebar-icon-text-active-color: var(--op-color-neutral-on-plus-three);
99
-
100
- // Hover
101
- --_op-sidebar-icon-background-hover-color: var(--op-color-neutral-plus-four);
102
- --_op-sidebar-icon-text-hover-color: var(--op-color-neutral-on-plus-four);
47
+ --_op-sidebar-background-color: var(--op-color-neutral-plus-eight);
48
+ --_op-sidebar-text-color: var(--op-color-neutral-on-plus-eight);
49
+ --_op-sidebar-border-color: var(--op-color-neutral-plus-four);
103
50
 
104
51
  // Width
105
52
  --_op-sidebar-rail-width: 8.8rem;
106
- --_op-sidebar-drawer-width: 25rem;
53
+ --_op-sidebar-compact-width: 16.9rem;
54
+ --_op-sidebar-drawer-width: 21.6rem;
55
+ --_op-sidebar-rail-brand-width: 7.728rem;
56
+ --_op-sidebar-compact-brand-width: 9.8rem;
57
+ --_op-sidebar-drawer-brand-width: 9.8rem;
107
58
 
108
59
  // Spacing
109
- --_op-sidebar-spacing: var(--op-space-medium);
110
- --_op-sidebar-link-spacing: var(--op-space-large);
60
+ --_op-sidebar-spacing: calc(var(--op-space-2x-large) + var(--op-space-2x-small));
61
+ --_op-sidebar-brand-spacing: var(--op-space-medium);
62
+ --_op-sidebar-content-spacing: var(--op-space-x-small);
63
+ --_op-sidebar-content-item-spacing: var(--op-space-2x-small);
111
64
 
112
65
  // Animation
113
66
  --_op-sidebar-transition: var(--op-transition-sidebar);
114
67
 
115
68
  // Private API
116
69
  --__op-sidebar-width: var(--_op-sidebar-drawer-width);
70
+ --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
117
71
 
118
72
  display: flex;
119
73
  width: var(--__op-sidebar-width);
74
+ min-width: var(--__op-sidebar-width);
120
75
  flex-direction: column;
121
- padding: var(--_op-sidebar-spacing) 0;
122
76
  background-color: var(--_op-sidebar-background-color);
77
+ box-shadow: var(--op-border-right) var(--_op-sidebar-border-color);
123
78
  color: var(--_op-sidebar-text-color);
124
- gap: var(--_op-sidebar-spacing);
125
79
  overflow-y: auto;
126
80
  transition: var(--_op-sidebar-transition);
127
81
 
128
82
  // Elements
129
83
  .sidebar__brand {
130
- display: block;
131
- padding: 0 var(--_op-sidebar-spacing);
84
+ height: var(--__op-sidebar-brand-width);
85
+ padding: var(--_op-sidebar-brand-spacing);
86
+ margin: 0 auto;
87
+
88
+ img {
89
+ height: 100%;
90
+ }
132
91
  }
133
92
 
134
93
  .sidebar__content {
135
94
  display: flex;
136
95
  flex-direction: column;
137
96
  flex-grow: 1;
97
+ padding: 0 var(--_op-sidebar-content-spacing);
98
+ gap: var(--_op-sidebar-content-item-spacing);
99
+
100
+ > * {
101
+ justify-content: flex-start;
102
+
103
+ .material-symbols-outlined {
104
+ /* stylelint-disable scss/at-extend-no-missing-placeholder */
105
+ @extend .icon--large;
106
+ @extend .icon--weight-bold;
107
+ /* stylelint-enable scss/at-extend-no-missing-placeholder */
108
+ }
109
+ }
138
110
 
139
111
  &.sidebar__content--start {
140
112
  justify-content: start;
@@ -149,61 +121,34 @@
149
121
  }
150
122
  }
151
123
 
152
- .sidebar__item {
153
- display: flex;
154
- align-items: center;
155
- color: var(--_op-sidebar-text-color);
156
- cursor: pointer;
157
- text-align: center;
158
- text-decoration: none;
159
-
160
- &:visited {
161
- color: var(--_op-sidebar-text-color);
162
- }
163
-
164
- &:hover,
165
- &.active {
166
- .sidebar__item-icon {
167
- --op-mso-weight: var(--op-font-weight-bold);
168
- }
169
- }
170
-
171
- &:hover .sidebar__item-icon {
172
- color: var(--_op-sidebar-text-color);
173
- }
174
-
175
- .sidebar__item-icon {
176
- /* stylelint-disable scss/at-extend-no-missing-placeholder */
177
- @extend .icon--x-large;
178
- /* stylelint-enable scss/at-extend-no-missing-placeholder */
124
+ // Modifiers
125
+ &.sidebar--padded {
126
+ padding: var(--_op-sidebar-spacing) 0;
127
+ }
179
128
 
180
- --op-mso-weight: var(--op-font-weight-medium);
129
+ // Drawer Modifier
130
+ &.sidebar--drawer:not(.sidebar--responsive) {
131
+ @include sidebar-drawer-global;
132
+ }
181
133
 
182
- display: flex;
183
- align-items: center;
184
- justify-content: center;
185
- border-radius: var(--op-radius-pill);
134
+ &.sidebar--drawer.sidebar--responsive {
135
+ @media (width > $breakpoint-medium) {
136
+ @include sidebar-drawer-global;
186
137
  }
187
138
 
188
- .sidebar__item-label {
189
- overflow: hidden;
190
- max-width: 90%;
191
- font-weight: var(--op-font-weight-medium);
192
- letter-spacing: var(--op-letter-spacing-navigation);
193
- line-height: var(--op-line-height-dense);
194
- text-overflow: ellipsis;
195
- white-space: nowrap;
139
+ @media (width <= $breakpoint-medium) {
140
+ @include sidebar-rail-global;
196
141
  }
197
142
  }
198
143
 
199
- // Modifiers
200
- &.sidebar--drawer:not(.sidebar--responsive) {
201
- @include sidebar-drawer-global;
144
+ // Compact Modifier
145
+ &.sidebar--compact:not(.sidebar--responsive) {
146
+ @include sidebar-compact-global;
202
147
  }
203
148
 
204
- &.sidebar--drawer.sidebar--responsive {
149
+ &.sidebar--compact.sidebar--responsive {
205
150
  @media (width > $breakpoint-medium) {
206
- @include sidebar-drawer-global;
151
+ @include sidebar-compact-global;
207
152
  }
208
153
 
209
154
  @media (width <= $breakpoint-medium) {
@@ -214,6 +159,10 @@
214
159
  &.sidebar--rail {
215
160
  @include sidebar-rail-global;
216
161
  }
162
+
163
+ &.sidebar--compact {
164
+ @include sidebar-compact-global;
165
+ }
217
166
  }
218
167
 
219
168
  .sidebar {
@@ -224,32 +173,7 @@
224
173
  .sidebar-primary {
225
174
  @extend %sidebar-global;
226
175
 
227
- // Normal
228
- --_op-sidebar-background-color: var(--op-color-primary-plus-seven);
229
- --_op-sidebar-text-color: var(--op-color-primary-on-plus-seven);
230
-
231
- // Active
232
- --_op-sidebar-icon-background-active-color: var(--op-color-primary-plus-three);
233
- --_op-sidebar-icon-text-active-color: var(--op-color-primary-on-plus-three);
234
-
235
- // Hover
236
- --_op-sidebar-icon-background-hover-color: var(--op-color-primary-plus-four);
237
- --_op-sidebar-icon-text-hover-color: var(--op-color-primary-on-plus-four);
238
- }
239
-
240
- // Subtle Primary
241
- .sidebar-subtle-primary {
242
- @extend %sidebar-global;
243
-
244
- // Normal
245
- --_op-sidebar-background-color: var(--op-color-primary-plus-max);
246
- --_op-sidebar-text-color: var(--op-color-primary-on-plus-max);
247
-
248
- // Active
249
- --_op-sidebar-icon-background-active-color: var(--op-color-primary-plus-three);
250
- --_op-sidebar-icon-text-active-color: var(--op-color-primary-on-plus-three);
251
-
252
- // Hover
253
- --_op-sidebar-icon-background-hover-color: var(--op-color-primary-plus-four);
254
- --_op-sidebar-icon-text-hover-color: var(--op-color-primary-on-plus-four);
176
+ --_op-sidebar-background-color: var(--op-color-primary-plus-six);
177
+ --_op-sidebar-text-color: var(--op-color-primary-on-plus-six);
178
+ --_op-sidebar-border-color: var(--op-color-primary-plus-four);
255
179
  }
@@ -1,15 +1,13 @@
1
- // TODO: When we get a pagination component, add it to the table styles and docs for within a table footer
2
-
3
1
  %table-global {
4
2
  // Public API
5
- // Cells (for padding, the appropriate variable is used when using the density modifiers)
6
- --_op-table-cell-padding-default: var(--op-space-small) var(--op-space-x-small);
7
- --_op-table-cell-padding-comfortable: var(--op-space-medium) var(--op-space-small);
8
- --_op-table-cell-padding-compact: var(--op-space-x-small) var(--op-space-2x-small);
3
+ // Cells (for height, the appropriate variable is used when using the density modifiers)
4
+ --_op-table-cell-height-default: calc(var(--op-space-scale-unit) * 4.4);
5
+ --_op-table-cell-height-comfortable: calc(var(--op-space-scale-unit) * 6.4);
6
+ --_op-table-cell-height-compact: calc(var(--op-space-scale-unit) * 3.4);
9
7
 
10
8
  // Private API
11
9
  // These allow for overriding specific padding versions easier.
12
- --__op-table-cell-padding: var(--_op-table-cell-padding-default);
10
+ --__op-table-cell-height: var(--_op-table-cell-height-default);
13
11
 
14
12
  width: 100%;
15
13
  border-radius: var(--op-radius-medium);
@@ -19,25 +17,32 @@
19
17
  table-layout: auto;
20
18
 
21
19
  thead {
22
- background-color: var(--op-color-neutral-plus-four);
23
- color: var(--op-color-neutral-on-plus-four);
20
+ background-color: var(--op-color-neutral-plus-eight);
21
+ box-shadow: inset var(--op-border-top) var(--op-border-color);
22
+ color: var(--op-color-neutral-on-plus-eight);
23
+
24
+ // This Currently does not work in Firefox since it does not support :has yet, but fails gracefully.
25
+ &:has(th input[type='checkbox']:checked) {
26
+ background-color: var(--op-color-primary-plus-seven);
27
+ color: var(--op-color-primary-on-plus-seven);
28
+ }
24
29
  }
25
30
 
26
31
  th {
27
- font-weight: var(--op-font-weight-normal);
32
+ font-weight: var(--op-font-weight-semi-bold);
28
33
  text-align: left;
29
- text-transform: uppercase;
30
34
  }
31
35
 
32
36
  tbody,
33
37
  tfoot {
34
- background-color: var(--op-color-background);
35
- color: var(--op-color-on-background);
38
+ background-color: var(--op-color-neutral-plus-max);
39
+ color: var(--op-color-neutral-on-plus-max);
36
40
  }
37
41
 
38
42
  th,
39
43
  td {
40
- padding: var(--__op-table-cell-padding);
44
+ height: var(--__op-table-cell-height);
45
+ padding: var(--op-space-2x-small) var(--op-space-small);
41
46
  font-size: var(--op-font-small);
42
47
  }
43
48
 
@@ -60,15 +65,15 @@
60
65
 
61
66
  // Table Density Modifiers
62
67
  &.table--default-density {
63
- --__op-table-cell-padding: var(--_op-table-cell-padding-default);
68
+ --__op-table-cell-height: var(--_op-table-cell-height-default);
64
69
  }
65
70
 
66
71
  &.table--comfortable-density {
67
- --__op-table-cell-padding: var(--_op-table-cell-padding-comfortable);
72
+ --__op-table-cell-height: var(--_op-table-cell-height-comfortable);
68
73
  }
69
74
 
70
75
  &.table--compact-density {
71
- --__op-table-cell-padding: var(--_op-table-cell-padding-compact);
76
+ --__op-table-cell-height: var(--_op-table-cell-height-compact);
72
77
  }
73
78
 
74
79
  // Striped Modifiers
@@ -0,0 +1,136 @@
1
+ %tooltip-global {
2
+ // Public API
3
+ --_op-tooltip-max-width: calc(5 * var(--op-space-3x-large));
4
+ --_op-tooltip-padding: var(--op-space-x-small) var(--op-space-medium);
5
+ --_op-tooltip-background-color: var(--op-color-neutral-minus-max);
6
+ --_op-tooltip-text-color: var(--op-color-neutral-on-minus-max);
7
+ --_op-tooltip-arrow-size: calc(var(--op-space-small) / 2);
8
+ --_op-tooltip-tooltip-offset: var(--op-space-x-small);
9
+ --_op-tooltip-tooltip-radius: var(--op-radius-medium);
10
+ --_op-tooltip-tooltip-font-size: var(--op-font-small);
11
+
12
+ position: relative;
13
+
14
+ &::before,
15
+ &::after {
16
+ opacity: 0;
17
+ transition: var(--op-transition-tooltip);
18
+ visibility: hidden;
19
+ }
20
+
21
+ &::before {
22
+ position: absolute;
23
+ z-index: var(--op-z-index-tooltip);
24
+ display: block;
25
+ width: max-content;
26
+ max-width: var(--_op-tooltip-max-width);
27
+ padding: var(--_op-tooltip-padding);
28
+ border-radius: var(--_op-tooltip-tooltip-radius);
29
+ background-color: var(--_op-tooltip-background-color);
30
+ color: var(--_op-tooltip-text-color);
31
+ content: attr(data-tooltip-text);
32
+ font-family: var(--op-font-family); // Makes tooltips on icons work
33
+ font-size: var(--_op-tooltip-tooltip-font-size);
34
+ overflow-wrap: break-word;
35
+ pointer-events: none;
36
+ text-align: center;
37
+ white-space: normal;
38
+ }
39
+
40
+ &::after {
41
+ position: absolute;
42
+ z-index: var(--op-z-index-tooltip);
43
+ border: var(--_op-tooltip-arrow-size) solid var(--_op-tooltip-background-color);
44
+ content: '';
45
+ pointer-events: none;
46
+ }
47
+
48
+ &:hover {
49
+ &::before,
50
+ &::after {
51
+ opacity: 1;
52
+ visibility: visible;
53
+ }
54
+ }
55
+
56
+ &[data-tooltip-position='top'],
57
+ &:not([data-tooltip-position]) {
58
+ &::before,
59
+ &::after {
60
+ left: 50%;
61
+ transform: translateX(-50%);
62
+ }
63
+
64
+ &::before {
65
+ bottom: 100%;
66
+ margin-bottom: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
67
+ }
68
+
69
+ &::after {
70
+ bottom: 100%;
71
+ border-color: var(--_op-tooltip-background-color) transparent transparent transparent;
72
+ margin-bottom: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
73
+ }
74
+ }
75
+
76
+ &[data-tooltip-position='left'] {
77
+ &::before,
78
+ &::after {
79
+ top: 50%;
80
+ transform: translateY(-50%);
81
+ }
82
+
83
+ &::before {
84
+ right: 100%;
85
+ margin-right: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
86
+ }
87
+
88
+ &::after {
89
+ right: 100%;
90
+ border-color: transparent transparent transparent var(--_op-tooltip-background-color);
91
+ margin-right: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
92
+ }
93
+ }
94
+
95
+ &[data-tooltip-position='bottom'] {
96
+ &::before,
97
+ &::after {
98
+ left: 50%;
99
+ transform: translateX(-50%);
100
+ }
101
+
102
+ &::before {
103
+ top: 100%;
104
+ margin-top: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
105
+ }
106
+
107
+ &::after {
108
+ top: 100%;
109
+ border-color: transparent transparent var(--_op-tooltip-background-color) transparent;
110
+ margin-top: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
111
+ }
112
+ }
113
+
114
+ &[data-tooltip-position='right'] {
115
+ &::before,
116
+ &::after {
117
+ top: 50%;
118
+ transform: translateY(-50%);
119
+ }
120
+
121
+ &::before {
122
+ left: 100%;
123
+ margin-left: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
124
+ }
125
+
126
+ &::after {
127
+ left: 100%;
128
+ border-color: transparent var(--_op-tooltip-background-color) transparent transparent;
129
+ margin-left: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
130
+ }
131
+ }
132
+ }
133
+
134
+ [data-tooltip-text] {
135
+ @extend %tooltip-global;
136
+ }
@@ -194,8 +194,8 @@
194
194
  /**
195
195
  * @tokens Encoded Images
196
196
  */
197
- --op-form-dropdown-arrow-width: 1rem; // No way to string interpolate
198
- --op-form-dropdown-arrow: url("data:image/svg+xml,%3Csvg viewBox='0 0 10 7' version='1.1' xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cg transform='matrix(0.983953,0,0,1.00934,-9.22679,-3.65885)'%3E%3Cpath fill='%23d1d1d1' d='M9.37727 3.625l5.08154 6.93523L19.54036 3.625'/%3E%3C/g%3E%3C/svg%3E%0A");
197
+ --op-encoded-images-dropdown-arrow-width: var(--op-space-scale-unit); // No way to string interpolate
198
+ --op-encoded-images-dropdown-arrow: url("data:image/svg+xml,%3Csvg viewBox='0 0 10 7' version='1.1' xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cg transform='matrix(0.983953,0,0,1.00934,-9.22679,-3.65885)'%3E%3Cpath fill='%23d1d1d1' d='M9.37727 3.625l5.08154 6.93523L19.54036 3.625'/%3E%3C/g%3E%3C/svg%3E%0A");
199
199
  }
200
200
 
201
201
  @mixin fonts {
@@ -268,9 +268,14 @@
268
268
  * @tokens Input Focus
269
269
  * @presenter Shadow
270
270
  */
271
- --op-input-outer-focus: 0 0 0 var(--op-border-width-large) var(--op-color-primary-plus-four);
272
- --op-input-inner-focus: inset var(--op-border-all) var(--op-color-primary-minus-three);
273
- --op-input-focus: var(--op-input-inner-focus), var(--op-input-outer-focus);
271
+ --op-input-inner-focus: inset 0 0 0 var(--op-border-width-large);
272
+ --op-input-outer-focus: 0 0 0 var(--op-border-width-x-large);
273
+ --op-input-focus-primary: var(--op-input-inner-focus) var(--op-color-primary-plus-two),
274
+ var(--op-input-outer-focus) var(--op-color-primary-plus-five);
275
+ --op-input-focus-danger: var(--op-input-inner-focus) var(--op-color-alerts-danger-plus-two),
276
+ var(--op-input-outer-focus) var(--op-color-alerts-danger-plus-five);
277
+ --op-input-focus-warning: var(--op-input-inner-focus) var(--op-color-alerts-warning-plus-two),
278
+ var(--op-input-outer-focus) var(--op-color-alerts-warning-plus-five);
274
279
  }
275
280
 
276
281
  // We use SCSS variables outside the root since support for custom properties / css variables