@rolemodel/optics 1.10.0 → 1.12.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,139 @@
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-mso-optical-sizing: 40;
64
+ --op-mso-weight: var(--op-font-weight-bold);
65
+
66
+ font-size: var(--op-font-large);
67
+ }
68
+ }
69
+
70
+ &.sidebar__content--start {
71
+ justify-content: start;
72
+ }
73
+
74
+ &.sidebar__content--center {
75
+ justify-content: center;
76
+ }
77
+
78
+ &.sidebar__content--end {
79
+ justify-content: end;
80
+ }
81
+ }
82
+
83
+ /* Modifiers */
84
+ &.sidebar--padded {
85
+ padding-block: var(--_op-sidebar-spacing);
86
+ }
87
+
88
+ /* Drawer Modifier */
89
+ &.sidebar--drawer {
90
+ /* Private API */
91
+ --__op-sidebar-width: var(--_op-sidebar-drawer-width);
92
+ --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
93
+ }
94
+
95
+ /* Compact Modifier */
96
+ &.sidebar--compact {
97
+ /* Private API (component option defaults) */
98
+ --__op-sidebar-width: var(--_op-sidebar-compact-width);
99
+ --__op-sidebar-brand-width: var(--_op-sidebar-compact-brand-width);
100
+
101
+ /* Elements */
102
+ .sidebar__content {
103
+ > * {
104
+ /* Need to get icon-with-label behavior */
105
+ flex-direction: column;
106
+ padding: var(--op-space-small);
107
+ gap: var(--op-space-3x-small);
108
+ }
109
+ }
110
+ }
111
+
112
+ &.sidebar--rail {
113
+ /* Private API (component option defaults) */
114
+ --__op-sidebar-width: var(--_op-sidebar-rail-width);
115
+ --__op-sidebar-brand-width: var(--_op-sidebar-rail-brand-width);
116
+
117
+ /* Elements */
118
+ .sidebar__content {
119
+ align-items: center;
120
+
121
+ > * {
122
+ /* Need to get icon behavior */
123
+ width: var(--__op-btn-height);
124
+ min-width: var(--__op-btn-height);
125
+ justify-content: center;
126
+ padding: 0;
127
+ font-size: 0;
128
+ gap: 0;
129
+ }
130
+ }
131
+ }
132
+
133
+ /* Primary */
134
+ .sidebar--primary {
135
+ --_op-sidebar-background-color: var(--op-color-primary-plus-six);
136
+ --_op-sidebar-text-color: var(--op-color-primary-on-plus-six);
137
+ --_op-sidebar-border-color: var(--op-color-primary-plus-four);
138
+ }
139
+ }
@@ -0,0 +1,63 @@
1
+ /* 16Six Sidebar Example */
2
+
3
+ .icon--rotated-135 {
4
+ rotate: 135deg;
5
+ }
6
+
7
+ .icon--rotated-90 {
8
+ rotate: 90deg;
9
+ }
10
+
11
+ .sidebar {
12
+ .sidebar__brand {
13
+ justify-content: center;
14
+
15
+ .sidebar__brand-label {
16
+ display: none;
17
+ }
18
+ }
19
+
20
+ &.sidebar--16six {
21
+ --_op-sidebar-background-color: hsl(256deg 66% 15%);
22
+ --_op-sidebar-text-color: hsl(26deg 100% 95%);
23
+ --_op-sidebar-border-color: hsl(26deg 100% 95%);
24
+ --_op-sidebar-rail-width: 6.4rem;
25
+ --_op-sidebar-drawer-width: 22.4rem;
26
+ --_op-sidebar-drawer-brand-width: calc(var(--op-space-3x-large) + (2 * var(--op-space-medium)));
27
+ --_op-sidebar-brand-spacing: var(--op-space-medium) var(--op-space-x-small);
28
+ --_op-sidebar-content-item-spacing: var(--op-space-x-small);
29
+ --_op-sidebar-spacing: 0 0 var(--op-space-x-small);
30
+
31
+ .sidebar__brand {
32
+ display: flex;
33
+ margin: 0;
34
+ color: inherit;
35
+ gap: var(--op-space-medium);
36
+ text-decoration: none;
37
+
38
+ svg {
39
+ width: var(--op-space-3x-large);
40
+ height: var(--op-space-3x-large);
41
+ }
42
+
43
+ .sidebar__brand-label {
44
+ display: flex;
45
+ flex-direction: column;
46
+ font-size: var(--op-font-small);
47
+ }
48
+ }
49
+
50
+ .btn {
51
+ &.btn--no-border {
52
+ background-color: transparent;
53
+ box-shadow: none;
54
+ color: var(--_op-sidebar-text-color);
55
+
56
+ &.btn--active,
57
+ &:hover {
58
+ background-color: hsl(256deg 23% 32%);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,40 @@
1
+ /* Domains Sidebar Example */
2
+ .sidebar {
3
+ &.sidebar--domains {
4
+ --_op-sidebar-drawer-width: 28rem;
5
+ --_op-sidebar-content-spacing: 0;
6
+ --_op-sidebar-content-item-spacing: 0;
7
+
8
+ box-shadow: none;
9
+
10
+ .btn {
11
+ border-radius: 0;
12
+
13
+ &.btn--no-border {
14
+ box-shadow: none;
15
+
16
+ &.btn--active {
17
+ background-color: var(--op-color-primary-plus-five);
18
+ color: var(--op-color-primary-on-plus-five);
19
+ }
20
+
21
+ &:hover:not(.btn--active) {
22
+ background-color: var(--op-color-neutral-plus-six);
23
+ box-shadow: none;
24
+ color: var(--op-color-neutral-on-plus-six);
25
+ }
26
+ }
27
+
28
+ &.btn--pill-right {
29
+ border-radius: 0 var(--op-radius-pill) var(--op-radius-pill) 0;
30
+ }
31
+ }
32
+
33
+ .sidebar__footer {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: var(--op-space-small);
37
+ padding-inline-start: var(--op-space-large);
38
+ }
39
+ }
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolemodel/optics",
3
- "version": "1.10.0",
3
+ "version": "1.12.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,184 +0,0 @@
1
- @mixin sidebar-rail-global {
2
- // Private API
3
- --__op-sidebar-width: var(--_op-sidebar-rail-width);
4
- --__op-sidebar-brand-width: var(--_op-sidebar-rail-brand-width);
5
-
6
- // Elements
7
- .sidebar__content {
8
- align-items: center;
9
-
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;
18
- }
19
- }
20
- }
21
-
22
- @mixin sidebar-drawer-global {
23
- // Private API
24
- --__op-sidebar-width: var(--_op-sidebar-drawer-width);
25
- --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
26
- }
27
-
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);
32
-
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);
40
- }
41
- }
42
- }
43
-
44
- %sidebar-global {
45
- // Public API
46
- // Normal
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);
50
-
51
- // Width
52
- --_op-sidebar-rail-width: calc(22 * var(--op-size-unit)); // 88px
53
- --_op-sidebar-compact-width: calc(42 * var(--op-size-unit)); // 168px
54
- --_op-sidebar-drawer-width: calc(54 * var(--op-size-unit)); // 216px
55
- --_op-sidebar-rail-brand-width: calc(19 * var(--op-size-unit)); // 76px
56
- --_op-sidebar-compact-brand-width: calc(24 * var(--op-size-unit)); // 96px
57
- --_op-sidebar-drawer-brand-width: calc(24 * var(--op-size-unit)); // 96px
58
-
59
- // Spacing
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);
64
-
65
- // Animation
66
- --_op-sidebar-transition: var(--op-transition-sidebar);
67
-
68
- // Private API
69
- --__op-sidebar-width: var(--_op-sidebar-drawer-width);
70
- --__op-sidebar-brand-width: var(--_op-sidebar-drawer-brand-width);
71
-
72
- z-index: var(--op-z-index-sidebar);
73
- display: flex;
74
- width: var(--__op-sidebar-width);
75
- min-width: var(--__op-sidebar-width);
76
- flex-direction: column;
77
- background-color: var(--_op-sidebar-background-color);
78
- box-shadow: var(--op-border-right) var(--_op-sidebar-border-color);
79
- color: var(--_op-sidebar-text-color);
80
- overflow-y: auto;
81
- transition: var(--_op-sidebar-transition);
82
-
83
- // Elements
84
- .sidebar__brand {
85
- height: var(--__op-sidebar-brand-width);
86
- padding: var(--_op-sidebar-brand-spacing);
87
- margin: 0 auto;
88
-
89
- img {
90
- height: 100%;
91
- }
92
- }
93
-
94
- .sidebar__content {
95
- display: flex;
96
- flex-direction: column;
97
- flex-grow: 1;
98
- padding: 0 var(--_op-sidebar-content-spacing);
99
- gap: var(--_op-sidebar-content-item-spacing);
100
-
101
- > * {
102
- justify-content: flex-start;
103
-
104
- .material-symbols-outlined {
105
- /* stylelint-disable scss/at-extend-no-missing-placeholder */
106
- @extend .icon--large;
107
- @extend .icon--weight-bold;
108
- /* stylelint-enable scss/at-extend-no-missing-placeholder */
109
- }
110
- }
111
-
112
- &.sidebar__content--start {
113
- justify-content: start;
114
- }
115
-
116
- &.sidebar__content--center {
117
- justify-content: center;
118
- }
119
-
120
- &.sidebar__content--end {
121
- justify-content: end;
122
- }
123
- }
124
-
125
- // Modifiers
126
- &.sidebar--padded {
127
- padding: var(--_op-sidebar-spacing) 0;
128
- }
129
-
130
- // Drawer Modifier
131
- &.sidebar--drawer:not(.sidebar--responsive) {
132
- @include sidebar-drawer-global;
133
- }
134
-
135
- &.sidebar--drawer.sidebar--responsive {
136
- // --op-breakpoint-medium
137
- @media (width > 1024px) {
138
- @include sidebar-drawer-global;
139
- }
140
-
141
- // --op-breakpoint-medium
142
- @media (width <= 1024px) {
143
- @include sidebar-rail-global;
144
- }
145
- }
146
-
147
- // Compact Modifier
148
- &.sidebar--compact:not(.sidebar--responsive) {
149
- @include sidebar-compact-global;
150
- }
151
-
152
- &.sidebar--compact.sidebar--responsive {
153
- // --op-breakpoint-medium
154
- @media (width > 1024px) {
155
- @include sidebar-compact-global;
156
- }
157
-
158
- // --op-breakpoint-medium
159
- @media (width <= 1024px) {
160
- @include sidebar-rail-global;
161
- }
162
- }
163
-
164
- &.sidebar--rail {
165
- @include sidebar-rail-global;
166
- }
167
-
168
- &.sidebar--compact {
169
- @include sidebar-compact-global;
170
- }
171
- }
172
-
173
- .sidebar {
174
- @extend %sidebar-global;
175
- }
176
-
177
- // Primary
178
- .sidebar-primary {
179
- @extend %sidebar-global;
180
-
181
- --_op-sidebar-background-color: var(--op-color-primary-plus-six);
182
- --_op-sidebar-text-color: var(--op-color-primary-on-plus-six);
183
- --_op-sidebar-border-color: var(--op-color-primary-plus-four);
184
- }
@@ -1,68 +0,0 @@
1
- // 16Six Sidebar Example
2
- .icon--rotated-135 {
3
- rotate: 135deg;
4
- }
5
-
6
- .icon--rotated-90 {
7
- rotate: 90deg;
8
- }
9
-
10
- @mixin sidebar-rail-global {
11
- .sidebar__brand {
12
- justify-content: center;
13
-
14
- .sidebar__brand-label {
15
- display: none;
16
- }
17
- }
18
- }
19
-
20
- .sidebar-16six {
21
- @extend %sidebar-global;
22
-
23
- --_op-sidebar-background-color: hsl(256deg 66% 15%);
24
- --_op-sidebar-text-color: hsl(26deg 100% 95%);
25
- --_op-sidebar-border-color: hsl(26deg 100% 95%);
26
- --_op-sidebar-rail-width: 6.4rem;
27
- --_op-sidebar-drawer-width: 22.4rem;
28
- --_op-sidebar-drawer-brand-width: calc(var(--op-space-3x-large) + (2 * var(--op-space-medium)));
29
- --_op-sidebar-brand-spacing: var(--op-space-medium) var(--op-space-x-small);
30
- --_op-sidebar-content-item-spacing: var(--op-space-x-small);
31
- --_op-sidebar-spacing: 0 0 var(--op-space-x-small);
32
-
33
- .sidebar__brand {
34
- display: flex;
35
- margin: 0;
36
- color: inherit;
37
- gap: var(--op-space-medium);
38
- text-decoration: none;
39
-
40
- svg {
41
- width: var(--op-space-3x-large);
42
- height: var(--op-space-3x-large);
43
- }
44
-
45
- .sidebar__brand-label {
46
- display: flex;
47
- flex-direction: column;
48
- font-size: var(--op-font-small);
49
- }
50
- }
51
-
52
- .btn {
53
- &.btn--no-border {
54
- background-color: transparent;
55
- box-shadow: none;
56
- color: var(--_op-sidebar-text-color);
57
-
58
- &.btn--active,
59
- &:hover {
60
- background-color: hsl(256deg 23% 32%);
61
- }
62
- }
63
- }
64
-
65
- &.sidebar--rail {
66
- @include sidebar-rail-global;
67
- }
68
- }
@@ -1,40 +0,0 @@
1
- // Domains Sidebar Example
2
- %btn-global {
3
- &.btn--pill-right {
4
- border-radius: 0 var(--op-radius-pill) var(--op-radius-pill) 0;
5
- }
6
- }
7
-
8
- .sidebar-domains {
9
- @extend %sidebar-global;
10
-
11
- --_op-sidebar-drawer-width: 28rem;
12
- --_op-sidebar-content-spacing: 0;
13
- --_op-sidebar-content-item-spacing: 0;
14
-
15
- box-shadow: none;
16
-
17
- .btn {
18
- &.btn--no-border {
19
- box-shadow: none;
20
-
21
- &.btn--active {
22
- background-color: var(--op-color-primary-plus-five);
23
- color: var(--op-color-primary-on-plus-five);
24
- }
25
-
26
- &:hover:not(.btn--active) {
27
- background-color: var(--op-color-neutral-plus-six);
28
- box-shadow: none;
29
- color: var(--op-color-neutral-on-plus-six);
30
- }
31
- }
32
- }
33
-
34
- .sidebar__footer {
35
- display: flex;
36
- align-items: center;
37
- padding-left: var(--op-space-large);
38
- gap: var(--op-space-small);
39
- }
40
- }