@rolemodel/optics 1.3.0 → 1.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.
@@ -0,0 +1,168 @@
1
+ .tag {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ padding: var(--op-space-2x-small);
6
+ border-radius: var(--op-radius-pill);
7
+ background-color: var(--op-color-neutral-plus-four);
8
+ color: var(--op-color-neutral-on-plus-four);
9
+ font-size: var(--op-font-x-small);
10
+ font-weight: var(--op-font-weight-bold);
11
+ letter-spacing: var(--op-letter-spacing-label);
12
+ line-height: var(--op-line-height-dense);
13
+ user-select: none;
14
+ white-space: nowrap;
15
+
16
+ /* Elements */
17
+
18
+ .tag__label {
19
+ padding-inline: var(--op-space-2x-small);
20
+ }
21
+
22
+ .btn--icon {
23
+ --__op-btn-height: var(--op-font-medium);
24
+
25
+ /* Hover State */
26
+ &:hover {
27
+ background-color: var(--op-color-neutral-minus-three);
28
+ box-shadow: none;
29
+ color: var(--op-color-neutral-on-minus-three);
30
+ }
31
+
32
+ /* Focus State */
33
+ &:focus-visible {
34
+ background-color: var(--op-color-neutral-base);
35
+ box-shadow: var(--op-input-focus-neutral);
36
+ color: var(--op-color-neutral-on-base);
37
+ }
38
+ }
39
+
40
+ /* Modifiers */
41
+
42
+ &.tag--read-only {
43
+ /* This is here for consistency */
44
+ }
45
+
46
+ &.tag--primary {
47
+ background-color: var(--op-color-primary-base);
48
+ color: var(--op-color-primary-on-base);
49
+
50
+ .btn--icon {
51
+ color: var(--op-color-primary-on-base);
52
+
53
+ /* Hover State */
54
+ &:hover {
55
+ background-color: var(--op-color-primary-minus-three);
56
+ box-shadow: none;
57
+ color: var(--op-color-primary-on-minus-three);
58
+ }
59
+
60
+ /* Focus State */
61
+ &:focus-visible {
62
+ background-color: var(--op-color-primary-base);
63
+ box-shadow: var(--op-input-focus-primary);
64
+ color: var(--op-color-primary-on-base);
65
+ }
66
+ }
67
+ }
68
+
69
+ &.tag--danger {
70
+ background-color: var(--op-color-alerts-danger-base);
71
+ color: var(--op-color-alerts-danger-on-base);
72
+
73
+ /* stylelint-disable no-descending-specificity */
74
+ .btn--icon {
75
+ color: var(--op-color-alerts-danger-on-base);
76
+
77
+ /* Hover State */
78
+ &:hover {
79
+ background-color: var(--op-color-alerts-danger-minus-three);
80
+ box-shadow: none;
81
+ color: var(--op-color-alerts-danger-on-minus-three);
82
+ }
83
+
84
+ /* Focus State */
85
+ &:focus-visible {
86
+ background-color: var(--op-color-alerts-danger-base);
87
+ box-shadow: var(--op-input-focus-danger);
88
+ color: var(--op-color-alerts-danger-on-base);
89
+ }
90
+ }
91
+ /* stylelint-enable no-descending-specificity */
92
+ }
93
+
94
+ &.tag--warning {
95
+ background-color: var(--op-color-alerts-warning-base);
96
+ color: var(--op-color-alerts-warning-on-base);
97
+
98
+ /* stylelint-disable no-descending-specificity */
99
+ .btn--icon {
100
+ color: var(--op-color-alerts-warning-on-base);
101
+
102
+ /* Hover State */
103
+ &:hover {
104
+ background-color: var(--op-color-alerts-warning-minus-three);
105
+ box-shadow: none;
106
+ color: var(--op-color-alerts-warning-on-minus-three);
107
+ }
108
+
109
+ /* Focus State */
110
+ &:focus-visible {
111
+ background-color: var(--op-color-alerts-warning-base);
112
+ box-shadow: var(--op-input-focus-warning);
113
+ color: var(--op-color-alerts-warning-on-base);
114
+ }
115
+ }
116
+ /* stylelint-enable no-descending-specificity */
117
+ }
118
+
119
+ &.tag--info {
120
+ background-color: var(--op-color-alerts-info-base);
121
+ color: var(--op-color-alerts-info-on-base);
122
+
123
+ /* stylelint-disable no-descending-specificity */
124
+ .btn--icon {
125
+ color: var(--op-color-alerts-info-on-base);
126
+
127
+ /* Hover State */
128
+ &:hover {
129
+ background-color: var(--op-color-alerts-info-minus-three);
130
+ box-shadow: none;
131
+ color: var(--op-color-alerts-info-on-minus-three);
132
+ }
133
+
134
+ /* Focus State */
135
+ &:focus-visible {
136
+ background-color: var(--op-color-alerts-info-base);
137
+ box-shadow: var(--op-input-focus-info);
138
+ color: var(--op-color-alerts-info-on-base);
139
+ }
140
+ }
141
+ /* stylelint-enable no-descending-specificity */
142
+ }
143
+
144
+ &.tag--notice {
145
+ background-color: var(--op-color-alerts-notice-base);
146
+ color: var(--op-color-alerts-notice-on-base);
147
+
148
+ /* stylelint-disable no-descending-specificity */
149
+ .btn--icon {
150
+ color: var(--op-color-alerts-notice-on-base);
151
+
152
+ /* Hover State */
153
+ &:hover {
154
+ background-color: var(--op-color-alerts-notice-minus-three);
155
+ box-shadow: none;
156
+ color: var(--op-color-alerts-notice-on-minus-three);
157
+ }
158
+
159
+ /* Focus State */
160
+ &:focus-visible {
161
+ background-color: var(--op-color-alerts-notice-base);
162
+ box-shadow: var(--op-input-focus-notice);
163
+ color: var(--op-color-alerts-notice-on-base);
164
+ }
165
+ }
166
+ /* stylelint-enable no-descending-specificity */
167
+ }
168
+ }
@@ -1,10 +1,10 @@
1
- %text-pair-global {
2
- // Public API (allowed to be overridden)
1
+ .text-pair {
2
+ /* Public API (customizable component options) */
3
3
  --_op-text-pair-font-size-small: var(--op-font-small);
4
4
  --_op-text-pair-font-size-medium: var(--op-font-medium);
5
5
  --_op-text-pair-font-size-large: var(--op-font-large);
6
6
 
7
- // Private API (don't touch these)
7
+ /* Private API (component option defaults) */
8
8
  --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-medium);
9
9
  --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-small);
10
10
 
@@ -53,7 +53,3 @@
53
53
  }
54
54
  }
55
55
  }
56
-
57
- .text-pair {
58
- @extend %text-pair-global;
59
- }
@@ -1,8 +1,8 @@
1
- // Inspired by https://blog.logrocket.com/creating-beautiful-tooltips-with-only-css/
1
+ /* Inspired by https://blog.logrocket.com/creating-beautiful-tooltips-with-only-css/ */
2
2
 
3
- %tooltip-global {
4
- // Public API
5
- --_op-tooltip-max-width: calc(50 * var(--op-size-unit)); // 200px
3
+ [data-tooltip-text] {
4
+ /* Public API (customizable component options) */
5
+ --_op-tooltip-max-width: calc(50 * var(--op-size-unit)); /* 200px */
6
6
  --_op-tooltip-padding: var(--op-space-x-small) var(--op-space-medium);
7
7
  --_op-tooltip-background-color: var(--op-color-neutral-minus-max);
8
8
  --_op-tooltip-text-color: var(--op-color-neutral-on-minus-max);
@@ -31,7 +31,7 @@
31
31
  background-color: var(--_op-tooltip-background-color);
32
32
  color: var(--_op-tooltip-text-color);
33
33
  content: attr(data-tooltip-text);
34
- font-family: var(--op-font-family); // Makes tooltips on icons work
34
+ font-family: var(--op-font-family); /* Makes tooltips on icons work */
35
35
  font-size: var(--_op-tooltip-tooltip-font-size);
36
36
  overflow-wrap: break-word;
37
37
  pointer-events: none;
@@ -59,80 +59,76 @@
59
59
  &:not([data-tooltip-position]) {
60
60
  &::before,
61
61
  &::after {
62
- left: 50%;
62
+ inset-inline-start: 50%;
63
63
  transform: translateX(-50%);
64
64
  }
65
65
 
66
66
  &::before {
67
- bottom: 100%;
68
- margin-bottom: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
67
+ inset-block-end: 100%;
68
+ margin-block-end: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
69
69
  }
70
70
 
71
71
  &::after {
72
- bottom: 100%;
73
72
  border-color: var(--_op-tooltip-background-color) transparent transparent transparent;
74
- margin-bottom: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
73
+ inset-block-end: 100%;
74
+ margin-block-end: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
75
75
  }
76
76
  }
77
77
 
78
78
  &[data-tooltip-position='left'] {
79
79
  &::before,
80
80
  &::after {
81
- top: 50%;
81
+ inset-block-start: 50%;
82
82
  transform: translateY(-50%);
83
83
  }
84
84
 
85
85
  &::before {
86
- right: 100%;
87
- margin-right: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
86
+ inset-inline-end: 100%;
87
+ margin-inline-end: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
88
88
  }
89
89
 
90
90
  &::after {
91
- right: 100%;
92
91
  border-color: transparent transparent transparent var(--_op-tooltip-background-color);
93
- margin-right: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
92
+ inset-inline-end: 100%;
93
+ margin-inline-end: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
94
94
  }
95
95
  }
96
96
 
97
97
  &[data-tooltip-position='bottom'] {
98
98
  &::before,
99
99
  &::after {
100
- left: 50%;
100
+ inset-inline-start: 50%;
101
101
  transform: translateX(-50%);
102
102
  }
103
103
 
104
104
  &::before {
105
- top: 100%;
106
- margin-top: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
105
+ inset-block-start: 100%;
106
+ margin-block-start: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
107
107
  }
108
108
 
109
109
  &::after {
110
- top: 100%;
111
110
  border-color: transparent transparent var(--_op-tooltip-background-color) transparent;
112
- margin-top: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
111
+ inset-block-start: 100%;
112
+ margin-block-start: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
113
113
  }
114
114
  }
115
115
 
116
116
  &[data-tooltip-position='right'] {
117
117
  &::before,
118
118
  &::after {
119
- top: 50%;
119
+ inset-block-start: 50%;
120
120
  transform: translateY(-50%);
121
121
  }
122
122
 
123
123
  &::before {
124
- left: 100%;
125
- margin-left: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
124
+ inset-inline-start: 100%;
125
+ margin-inline-start: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
126
126
  }
127
127
 
128
128
  &::after {
129
- left: 100%;
130
129
  border-color: transparent var(--_op-tooltip-background-color) transparent transparent;
131
- margin-left: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
130
+ inset-inline-start: 100%;
131
+ margin-inline-start: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
132
132
  }
133
133
  }
134
134
  }
135
-
136
- [data-tooltip-text] {
137
- @extend %tooltip-global;
138
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolemodel/optics",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "packageManager": "yarn@4.2.2",
5
5
  "description": "Optics is an scss package that provides base styles and components that can be integrated and customized in a variety of projects.",
6
6
  "main": "dist/scss/optics.scss",
@@ -1,85 +0,0 @@
1
- @mixin badge-notification {
2
- position: absolute;
3
- top: 0;
4
- box-shadow: 0 0 0 var(--op-border-width-large) var(--op-color-neutral-plus-max);
5
- pointer-events: none;
6
- }
7
-
8
- %badge-global {
9
- display: inline-flex;
10
- align-items: center;
11
- justify-content: center;
12
- padding: var(--op-space-2x-small) var(--op-space-x-small);
13
- border-radius: var(--op-radius-medium);
14
- background-color: var(--op-color-neutral-base);
15
- color: var(--op-color-neutral-on-base);
16
- cursor: inherit;
17
- font-size: var(--op-font-x-small);
18
- font-weight: var(--op-font-weight-bold);
19
- gap: var(--op-space-x-small);
20
- letter-spacing: var(--op-letter-spacing-label);
21
- line-height: var(--op-line-height-dense);
22
- user-select: none;
23
- white-space: nowrap;
24
-
25
- .material-symbols-outlined {
26
- font-size: var(--op-font-small);
27
- }
28
-
29
- &.badge--pill {
30
- border-radius: var(--op-radius-pill);
31
- }
32
-
33
- &.badge--notification-right {
34
- @include badge-notification;
35
-
36
- right: 0;
37
- transform: translateY(-50%) translateX(50%);
38
- }
39
-
40
- &.badge--notification-left {
41
- @include badge-notification;
42
-
43
- left: 0;
44
- transform: translateY(-50%) translateX(-50%);
45
- }
46
- }
47
-
48
- .badge {
49
- @extend %badge-global;
50
- }
51
-
52
- .badge-primary {
53
- @extend %badge-global;
54
-
55
- background-color: var(--op-color-primary-base);
56
- color: var(--op-color-primary-on-base);
57
- }
58
-
59
- .badge-warning {
60
- @extend %badge-global;
61
-
62
- background-color: var(--op-color-alerts-warning-base);
63
- color: var(--op-color-alerts-warning-on-base);
64
- }
65
-
66
- .badge-danger {
67
- @extend %badge-global;
68
-
69
- background-color: var(--op-color-alerts-danger-base);
70
- color: var(--op-color-alerts-danger-on-base);
71
- }
72
-
73
- .badge-info {
74
- @extend %badge-global;
75
-
76
- background-color: var(--op-color-alerts-info-base);
77
- color: var(--op-color-alerts-info-on-base);
78
- }
79
-
80
- .badge-notice {
81
- @extend %badge-global;
82
-
83
- background-color: var(--op-color-alerts-notice-base);
84
- color: var(--op-color-alerts-notice-on-base);
85
- }
@@ -1,174 +0,0 @@
1
- %tag-global {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: center;
5
- padding: var(--op-space-2x-small);
6
- border-radius: var(--op-radius-pill);
7
- background-color: var(--op-color-neutral-plus-four);
8
- color: var(--op-color-neutral-on-plus-four);
9
- font-size: var(--op-font-x-small);
10
- font-weight: var(--op-font-weight-bold);
11
- letter-spacing: var(--op-letter-spacing-label);
12
- line-height: var(--op-line-height-dense);
13
- user-select: none;
14
- white-space: nowrap;
15
-
16
- .tag__label {
17
- padding-inline: var(--op-space-2x-small);
18
- }
19
-
20
- .btn--icon {
21
- --__op-btn-height: var(--op-font-medium);
22
-
23
- // Hover State
24
- &:hover {
25
- background-color: var(--op-color-neutral-minus-three);
26
- box-shadow: none;
27
- color: var(--op-color-neutral-on-minus-three);
28
- }
29
-
30
- // Focus State
31
- &:focus-visible {
32
- background-color: var(--op-color-neutral-base);
33
- box-shadow: var(--op-input-focus-neutral);
34
- color: var(--op-color-neutral-on-base);
35
- }
36
- }
37
- }
38
-
39
- .tag-readonly {
40
- @extend %tag-global;
41
- }
42
-
43
- .tag-primary {
44
- @extend %tag-global;
45
-
46
- background-color: var(--op-color-primary-base);
47
- color: var(--op-color-primary-on-base);
48
-
49
- .btn--icon {
50
- color: var(--op-color-primary-on-base);
51
-
52
- // Hover State
53
- &:hover {
54
- background-color: var(--op-color-primary-minus-three);
55
- box-shadow: none;
56
- color: var(--op-color-primary-on-minus-three);
57
- }
58
-
59
- // Focus State
60
- &:focus-visible {
61
- background-color: var(--op-color-primary-base);
62
- box-shadow: var(--op-input-focus-primary);
63
- color: var(--op-color-primary-on-base);
64
- }
65
- }
66
- }
67
-
68
- .tag-danger {
69
- @extend %tag-global;
70
-
71
- background-color: var(--op-color-alerts-danger-base);
72
- color: var(--op-color-alerts-danger-on-base);
73
-
74
- /* stylelint-disable no-descending-specificity */
75
- .btn--icon {
76
- color: var(--op-color-alerts-danger-on-base);
77
-
78
- // Hover State
79
- &:hover {
80
- background-color: var(--op-color-alerts-danger-minus-three);
81
- box-shadow: none;
82
- color: var(--op-color-alerts-danger-on-minus-three);
83
- }
84
-
85
- // Focus State
86
- &:focus-visible {
87
- background-color: var(--op-color-alerts-danger-base);
88
- box-shadow: var(--op-input-focus-danger);
89
- color: var(--op-color-alerts-danger-on-base);
90
- }
91
- }
92
- /* stylelint-enable no-descending-specificity */
93
- }
94
-
95
- .tag-warning {
96
- @extend %tag-global;
97
-
98
- background-color: var(--op-color-alerts-warning-base);
99
- color: var(--op-color-alerts-warning-on-base);
100
-
101
- /* stylelint-disable no-descending-specificity */
102
- .btn--icon {
103
- color: var(--op-color-alerts-warning-on-base);
104
-
105
- // Hover State
106
- &:hover {
107
- background-color: var(--op-color-alerts-warning-minus-three);
108
- box-shadow: none;
109
- color: var(--op-color-alerts-warning-on-minus-three);
110
- }
111
-
112
- // Focus State
113
- &:focus-visible {
114
- background-color: var(--op-color-alerts-warning-base);
115
- box-shadow: var(--op-input-focus-warning);
116
- color: var(--op-color-alerts-warning-on-base);
117
- }
118
- }
119
- /* stylelint-enable no-descending-specificity */
120
- }
121
-
122
- .tag-info {
123
- @extend %tag-global;
124
-
125
- background-color: var(--op-color-alerts-info-base);
126
- color: var(--op-color-alerts-info-on-base);
127
-
128
- /* stylelint-disable no-descending-specificity */
129
- .btn--icon {
130
- color: var(--op-color-alerts-info-on-base);
131
-
132
- // Hover State
133
- &:hover {
134
- background-color: var(--op-color-alerts-info-minus-three);
135
- box-shadow: none;
136
- color: var(--op-color-alerts-info-on-minus-three);
137
- }
138
-
139
- // Focus State
140
- &:focus-visible {
141
- background-color: var(--op-color-alerts-info-base);
142
- box-shadow: var(--op-input-focus-info);
143
- color: var(--op-color-alerts-info-on-base);
144
- }
145
- }
146
- /* stylelint-enable no-descending-specificity */
147
- }
148
-
149
- .tag-notice {
150
- @extend %tag-global;
151
-
152
- background-color: var(--op-color-alerts-notice-base);
153
- color: var(--op-color-alerts-notice-on-base);
154
-
155
- /* stylelint-disable no-descending-specificity */
156
- .btn--icon {
157
- color: var(--op-color-alerts-notice-on-base);
158
-
159
- // Hover State
160
- &:hover {
161
- background-color: var(--op-color-alerts-notice-minus-three);
162
- box-shadow: none;
163
- color: var(--op-color-alerts-notice-on-minus-three);
164
- }
165
-
166
- // Focus State
167
- &:focus-visible {
168
- background-color: var(--op-color-alerts-notice-base);
169
- box-shadow: var(--op-input-focus-notice);
170
- color: var(--op-color-alerts-notice-on-base);
171
- }
172
- }
173
- /* stylelint-enable no-descending-specificity */
174
- }