@castlabs/ui 4.18.2

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 (140) hide show
  1. package/README.md +94 -0
  2. package/dist/assets/castlabs-logo.svg +2 -0
  3. package/dist/assets/cookie.svg +1 -0
  4. package/dist/castlabs-ui-editor.common.js +23189 -0
  5. package/dist/castlabs-ui-editor.common.js.map +1 -0
  6. package/dist/castlabs-ui-editor.css +1 -0
  7. package/dist/castlabs-ui-editor.umd.js +23208 -0
  8. package/dist/castlabs-ui-editor.umd.js.map +1 -0
  9. package/dist/castlabs-ui-editor.umd.min.js +10 -0
  10. package/dist/castlabs-ui-editor.umd.min.js.map +1 -0
  11. package/dist/castlabs-ui.common.js +6828 -0
  12. package/dist/castlabs-ui.common.js.map +1 -0
  13. package/dist/castlabs-ui.core.js +1031 -0
  14. package/dist/castlabs-ui.css +12 -0
  15. package/dist/castlabs-ui.module.d.ts +83 -0
  16. package/dist/castlabs-ui.module.js +1031 -0
  17. package/dist/castlabs-ui.umd.js +6847 -0
  18. package/dist/castlabs-ui.umd.js.map +1 -0
  19. package/dist/castlabs-ui.umd.min.js +8 -0
  20. package/dist/castlabs-ui.umd.min.js.map +1 -0
  21. package/dist/demo.html +1 -0
  22. package/dist/favicon/192.png +0 -0
  23. package/dist/favicon/512.png +0 -0
  24. package/dist/favicon/apple-touch-icon.png +0 -0
  25. package/dist/favicon/favicon-unread.svg +75 -0
  26. package/dist/favicon/favicon.ico +0 -0
  27. package/dist/favicon/favicon.svg +43 -0
  28. package/dist/favicon/manifest.webmanifest +6 -0
  29. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCCwR26eg.f31394d2.woff2 +0 -0
  30. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCFwR26eg.00073a59.woff2 +0 -0
  31. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCGwR0.faa92a75.woff2 +0 -0
  32. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCIwR26eg.f8e38fba.woff2 +0 -0
  33. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCJwR26eg.f1d5cd16.woff2 +0 -0
  34. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCKwR26eg.ebbe259f.woff2 +0 -0
  35. package/dist/fonts/BngRUXNETWXI6LwhGYvaxZikqbCLwR26eg.e3d460d0.woff2 +0 -0
  36. package/dist/fonts/fa-brands-400.18993be8.woff2 +0 -0
  37. package/dist/fonts/fa-regular-400.e45bb696.woff2 +0 -0
  38. package/dist/fonts/fa-solid-900.16e3d2f0.woff2 +0 -0
  39. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0Udc1UAw.6de93dc1.woff2 +0 -0
  40. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0Wdc1UAw.55c9461f.woff2 +0 -0
  41. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0Xdc1UAw.111f8c99.woff2 +0 -0
  42. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0Zdc0.92257a03.woff2 +0 -0
  43. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0adc1UAw.1844ded3.woff2 +0 -0
  44. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0bdc1UAw.719267ea.woff2 +0 -0
  45. package/dist/fonts/mem6YaGs126MiZpBA-UFUK0ddc1UAw.037dea2d.woff2 +0 -0
  46. package/dist/fonts/mem8YaGs126MiZpBA-UFUZ0bbck.6869bd80.woff2 +0 -0
  47. package/dist/fonts/mem8YaGs126MiZpBA-UFV50bbck.05a41692.woff2 +0 -0
  48. package/dist/fonts/mem8YaGs126MiZpBA-UFVZ0b.38ffdf27.woff2 +0 -0
  49. package/dist/fonts/mem8YaGs126MiZpBA-UFVp0bbck.f12c0c2c.woff2 +0 -0
  50. package/dist/fonts/mem8YaGs126MiZpBA-UFW50bbck.03f14837.woff2 +0 -0
  51. package/dist/fonts/mem8YaGs126MiZpBA-UFWJ0bbck.abcca84a.woff2 +0 -0
  52. package/dist/fonts/mem8YaGs126MiZpBA-UFWp0bbck.4d1e267c.woff2 +0 -0
  53. package/package.json +71 -0
  54. package/plugins/uid/index.js +16 -0
  55. package/plugins/uid/index.ts +16 -0
  56. package/src/assets/castlabs-logo.svg +2 -0
  57. package/src/assets/cookie.svg +1 -0
  58. package/src/components/ClAlert/style.scss +117 -0
  59. package/src/components/ClBadge/style.scss +122 -0
  60. package/src/components/ClButton/style.scss +338 -0
  61. package/src/components/ClCard/style.scss +61 -0
  62. package/src/components/ClCard/style.variables.scss +179 -0
  63. package/src/components/ClDropdown/style.scss +272 -0
  64. package/src/components/ClDropzone/style.scss +21 -0
  65. package/src/components/ClFooter/style.scss +119 -0
  66. package/src/components/ClIcon/style.scss +58 -0
  67. package/src/components/ClIconotron/style.scss +86 -0
  68. package/src/components/ClList/style.scss +93 -0
  69. package/src/components/ClList/style.variables.scss +133 -0
  70. package/src/components/ClListGroup/style.scss +9 -0
  71. package/src/components/ClPagination/style.scss +123 -0
  72. package/src/components/ClProgress/style.scss +49 -0
  73. package/src/components/ClScrollbar/style.scss +14 -0
  74. package/src/components/ClSpinner/style.scss +26 -0
  75. package/src/components/ClTabs/style.scss +90 -0
  76. package/src/components/ClToggle/style.scss +97 -0
  77. package/src/components/ClTooltip/style.scss +46 -0
  78. package/src/components/ClWizard/style.scss +173 -0
  79. package/src/components/form/ClField/style.scss +45 -0
  80. package/src/components/form/ClFieldCheck/style.scss +99 -0
  81. package/src/components/form/ClFieldFile/style.scss +71 -0
  82. package/src/components/form/ClFieldGroup/style.scss +73 -0
  83. package/src/components/form/ClFieldInput/style.scss +118 -0
  84. package/src/components/form/ClFieldSelect/style.scss +39 -0
  85. package/src/components/form/ClFieldSet/style.scss +16 -0
  86. package/src/components/form/ClForm/style.scss +87 -0
  87. package/src/components/modal/ClModal/style.scss +138 -0
  88. package/src/components/navigation/ClNavSide/ClNavDrawer/style.scss +444 -0
  89. package/src/components/navigation/ClNavSide/ClNavSideMenu/style.scss +51 -0
  90. package/src/components/navigation/ClNavSide/style.scss +81 -0
  91. package/src/components/navigation/ClNavTop/style.scss +305 -0
  92. package/src/components/section/ClSectionHeadline/style.scss +49 -0
  93. package/src/components/section/ClSectionMainSide/style.scss +60 -0
  94. package/src/components/table/ClTable/style.scss +23 -0
  95. package/src/components/table/ClTable/style.variables.scss +155 -0
  96. package/src/components/table/ClTableCel/Actions/style.scss +11 -0
  97. package/src/components/table/ClTableCel/Audit/style.scss +26 -0
  98. package/src/components/table/ClTableCel/Boolean/style.scss +12 -0
  99. package/src/components/table/ClTableCel/Checkbox/style.scss +18 -0
  100. package/src/components/table/ClTableCel/Code/style.scss +13 -0
  101. package/src/components/table/ClTableCel/Currency/style.scss +9 -0
  102. package/src/components/table/ClTableCel/Date/style.scss +12 -0
  103. package/src/components/table/ClTableCel/ID/style.scss +16 -0
  104. package/src/components/table/ClTableCel/Links/style.scss +44 -0
  105. package/src/components/table/ClTableCel/style.scss +7 -0
  106. package/src/components/table/ClTableCel/style.variables.scss +25 -0
  107. package/src/components/table/ClTableFootChecked/style.scss +2 -0
  108. package/src/components/table/ClTableHead/style.scss +36 -0
  109. package/src/components/text/ClCopy/style.scss +42 -0
  110. package/src/components/text/ClHashtag/style.scss +31 -0
  111. package/src/components/text/ClLinkExternal/style.scss +147 -0
  112. package/src/components/text/ClOrg/style.scss +40 -0
  113. package/src/components/text/ClPlan/style.scss +35 -0
  114. package/src/components/text/ClRole/style.scss +39 -0
  115. package/src/components/widget/ClBackCancelOk/style.scss +3 -0
  116. package/src/components/widget/ClCookieBanner/style.scss +40 -0
  117. package/src/components/widget/ClPage/style.scss +11 -0
  118. package/src/fonts/FontAwesome5/FontAwesome5.scss +6121 -0
  119. package/src/fonts/NotoSansMono/NotoSansMono.scss +82 -0
  120. package/src/fonts/OpenSansVariable/OpenSansVariable.scss +183 -0
  121. package/src/styles/_global.scss +70 -0
  122. package/src/styles/abstracts/color.scss +127 -0
  123. package/src/styles/abstracts/layer.scss +10 -0
  124. package/src/styles/abstracts/spacing.scss +35 -0
  125. package/src/styles/abstracts/tools.scss +117 -0
  126. package/src/styles/assets/logo.scss +22 -0
  127. package/src/styles/components/button.variables.scss +18 -0
  128. package/src/styles/components/form.variables.scss +51 -0
  129. package/src/styles/layout/animation.scss +39 -0
  130. package/src/styles/layout/grid.scss +144 -0
  131. package/src/styles/layout/grid.variables.scss +50 -0
  132. package/src/styles/layout/section.scss +90 -0
  133. package/src/styles/layout/spacing.scss +295 -0
  134. package/src/styles/layout/typography.scss +321 -0
  135. package/src/styles/layout/typography.variables.scss +363 -0
  136. package/src/styles/ui.scss +98 -0
  137. package/src/styles/vendors/bootstrap.scss +28 -0
  138. package/src/styles/vendors/castlabs.scss +17 -0
  139. package/types/castlabs-ui.module.d.ts +83 -0
  140. package/types/index.d.ts +140 -0
@@ -0,0 +1,87 @@
1
+ ////
2
+ /// @group components
3
+ /// @access public
4
+ ////
5
+
6
+ // This file defines castlabs' <form>s & labels (both titles and info/error texts).
7
+
8
+ .cl-form {
9
+ // --- basic form layout -----------------------------------------------------
10
+
11
+ // &.container,
12
+ .container {
13
+ @extend %container-spacing-small;
14
+ }
15
+
16
+ .container + * {
17
+ margin-top: 0; // container already add bottom spacing
18
+ }
19
+
20
+ .row > [class^='col-'] {
21
+ margin-top: 0;
22
+ }
23
+
24
+ > :first-child {
25
+ margin-top: 0;
26
+ }
27
+
28
+ // --- input labels ----------------------------------------------------------
29
+
30
+ label {
31
+ display: inline-block;
32
+ }
33
+
34
+ .form-label {
35
+ @extend %p-form-label;
36
+
37
+ .required {
38
+ color: $color-attention;
39
+ font-weight: 800;
40
+ margin-left: $spacing-micro;
41
+ }
42
+
43
+ + * {
44
+ margin-top: $spacing-micro;
45
+ }
46
+ }
47
+
48
+ // --- info/error text below the input fields --------------------------------
49
+
50
+ $form-info-indent: 1.25em;
51
+
52
+ .valid-feedback,
53
+ .invalid-feedback {
54
+ @extend %p-small;
55
+
56
+ margin-left: $form-info-indent;
57
+ margin-top: $spacing-micro;
58
+
59
+ &::before {
60
+ color: $color-ci-silver;
61
+ content: '\f05a';
62
+ display: inline-block;
63
+ font-family: 'Font Awesome 5 Free';
64
+ font-weight: 900;
65
+ margin-left: -$form-info-indent;
66
+ width: $form-info-indent;
67
+ }
68
+ }
69
+
70
+ .invalid-feedback {
71
+ color: $color-ci-blue;
72
+ display: none;
73
+
74
+ &::before {
75
+ color: $color-ci-blue;
76
+ content: '\f057';
77
+ }
78
+ }
79
+
80
+ .valid-feedback.valid-feedback-none {
81
+ min-height: 1.5em; // line-height of %p-small
82
+
83
+ &::before {
84
+ display: none;
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,138 @@
1
+ ////
2
+ /// @group components
3
+ /// @access public
4
+ ////
5
+
6
+ // This file adds & customizes bootstrap's modals.
7
+
8
+ .modal {
9
+ @include spacing-before(0);
10
+
11
+ & {
12
+ background-color: $color-black-50a;
13
+ display: none;
14
+ height: 100vh;
15
+ left: 0;
16
+ padding: 2rem 0;
17
+ position: fixed;
18
+ top: 0;
19
+ width: 100%;
20
+ z-index: $layer-z-modal;
21
+ }
22
+
23
+ &.shown {
24
+ display: inherit;
25
+ }
26
+
27
+ &-embed {
28
+ // show the modal directly in the content w/o background fade
29
+ background-color: transparent;
30
+ display: block;
31
+ height: 100%;
32
+ position: inherit;
33
+ width: 100%;
34
+ }
35
+
36
+ &-dialog {
37
+ display: flex;
38
+ flex-direction: column;
39
+ height: 100%;
40
+ justify-content: space-around;
41
+ margin: 0 auto;
42
+ max-width: 720px;
43
+ width: 100%;
44
+ }
45
+
46
+ &.cl-modal-wide .modal-dialog {
47
+ @include media-breakpoint-up(lg) {
48
+ max-width: calc(100% - $spacing-small * 2);
49
+ width: 960px; // 944px;
50
+ }
51
+
52
+ @include media-breakpoint-up(xl) {
53
+ max-width: calc(100% - $spacing-small * 2);
54
+ width: 1140px;
55
+ }
56
+
57
+ @include media-breakpoint-up(xxl) {
58
+ max-width: calc(100% - $spacing-small * 2);
59
+ width: 1320px;
60
+ }
61
+ }
62
+
63
+ &-content {
64
+ border-radius: $border-radius;
65
+ box-shadow: 0 0 4rem $color-black-50a;
66
+ display: flex;
67
+ flex-direction: column;
68
+ justify-content: space-between;
69
+ max-height: calc(100vh - 4rem);
70
+ }
71
+
72
+ &-header {
73
+ @extend %h3;
74
+
75
+ align-items: center;
76
+ background-color: $color-ci-blue;
77
+ border-top-left-radius: $border-radius;
78
+ border-top-right-radius: $border-radius;
79
+ color: $color-ci-white;
80
+ display: flex;
81
+ justify-content: space-between;
82
+ padding: $spacing-small * 0.75 $spacing-medium;
83
+
84
+ h1,
85
+ .cl-h1,
86
+ h2,
87
+ .cl-h2,
88
+ h3,
89
+ .cl-h3 {
90
+ color: inherit;
91
+ }
92
+
93
+ .modal-help {
94
+ @include typography-links(rgba($color-ci-white, 0.5), $color-ci-white, 0);
95
+
96
+ & {
97
+ font-size: 1.5em;
98
+ }
99
+ }
100
+ }
101
+
102
+ &-body {
103
+ @include spacing-before(0);
104
+
105
+ & {
106
+ background-color: $color-ci-haze;
107
+ overflow-y: auto;
108
+ padding: $spacing-small $spacing-medium;
109
+ }
110
+
111
+ > *:first-child {
112
+ margin-top: 0;
113
+ }
114
+ }
115
+
116
+ &-footer {
117
+ @include spacing-before(0);
118
+
119
+ & {
120
+ background-color: $color-ci-haze;
121
+ border-bottom-left-radius: $border-radius;
122
+ border-bottom-right-radius: $border-radius;
123
+ flex-direction: row;
124
+ justify-content: space-between;
125
+ padding: $spacing-small $spacing-medium $spacing-medium;
126
+ text-align: center;
127
+ }
128
+
129
+ @include media-breakpoint-up(sm) {
130
+ // buttons below each other on phones
131
+ display: flex;
132
+ }
133
+
134
+ .cl-spacing-box {
135
+ margin-top: 0;
136
+ }
137
+ }
138
+ }
@@ -0,0 +1,444 @@
1
+ ////
2
+ /// @group components
3
+ /// @access public
4
+ ////
5
+
6
+ // This file defines how the stuff inside the sidenav drawer looks like.
7
+
8
+ $sidenav-background: $color-ci-dim;
9
+ $sidenav-color-text: $color-ci-dusk;
10
+ $sidenav-color-background: $color-ci-haze;
11
+
12
+ @mixin cl-nav-fadeout($color) {
13
+ overflow: hidden;
14
+ position: relative;
15
+ white-space: nowrap;
16
+
17
+ &::after {
18
+ // fade-out gradient
19
+ background-image: linear-gradient(to right, transparent, $color);
20
+ content: '';
21
+ display: block;
22
+ height: 100%;
23
+ position: absolute;
24
+ right: 0;
25
+ top: 0;
26
+ width: 1rem;
27
+ }
28
+ }
29
+
30
+ .cl-nav-side {
31
+ // --- drawer ----------------------------------------------------------------
32
+
33
+ .cl-nav-drawer {
34
+ background-color: $sidenav-color-background;
35
+ color: $sidenav-color-text;
36
+ }
37
+
38
+ // --- meta/common -----------------------------------------------------------
39
+
40
+ .cl-label {
41
+ @extend %p-tiny;
42
+ @extend %cl-grid-flex-centered;
43
+
44
+ height: 2.5rem;
45
+ margin-top: 0;
46
+ padding: 0 $spacing-small;
47
+ position: relative;
48
+
49
+ label {
50
+ margin-top: $spacing-small;
51
+ }
52
+
53
+ .btn {
54
+ position: absolute;
55
+ right: $spacing-small;
56
+ top: 0.9rem;
57
+ }
58
+ }
59
+
60
+ .cl-nav-user {
61
+ // ------------------------------------------------------------
62
+ @extend %p-nav;
63
+
64
+ $background: $color-ci-dusk;
65
+ $foreground: $color-ci-white;
66
+
67
+ align-items: center;
68
+ background-color: $background;
69
+ border-bottom: 0;
70
+ color: $foreground;
71
+ display: flex;
72
+ flex-direction: row;
73
+ justify-content: space-between;
74
+ min-height: $header-nav-height;
75
+ padding: 0 $spacing-small;
76
+
77
+ a {
78
+ @include typography-links($foreground, $foreground, 0);
79
+ @include color-focus-outline($foreground);
80
+
81
+ & {
82
+ padding-bottom: 0;
83
+ }
84
+
85
+ &:first-of-type {
86
+ // the username
87
+ @include cl-nav-fadeout($background);
88
+
89
+ & {
90
+ margin-right: $spacing-micro;
91
+ margin-top: -0.25em;
92
+ width: 100%;
93
+ }
94
+
95
+ &::before {
96
+ // user icon
97
+ @include cl-fontawesome('\f2bd');
98
+
99
+ & {
100
+ color: $color-ci-haze;
101
+ font-size: px(22);
102
+ line-height: 1.25;
103
+ margin-right: $spacing-tiny;
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ .cl-nav-icon {
110
+ flex-shrink: 0;
111
+ font-size: px(22);
112
+ }
113
+ }
114
+
115
+ div.cl-nav-organization,
116
+ a.cl-nav-organization,
117
+ details.cl-nav-organization {
118
+ #{'--element-fg-color'}: $color-ci-white;
119
+ #{'--element-bg-color'}: $color-ci-dim;
120
+ background-color: var(--element-bg-color);
121
+ color: var(--element-fg-color);
122
+ display: block;
123
+ overflow: hidden;
124
+ text-decoration: none;
125
+
126
+ label {
127
+ @extend %p-tiny;
128
+
129
+ color: var(--element-fg-color);
130
+ }
131
+
132
+ .cl-nav-organization-name {
133
+ display: flex;
134
+ flex-direction: column;
135
+ justify-content: space-around;
136
+ min-height: 42px;
137
+ overflow: hidden;
138
+ white-space: nowrap;
139
+
140
+ p {
141
+ font-size: px(16);
142
+ font-weight: 600;
143
+ letter-spacing: 0.03125em;
144
+ margin-left: $spacing-medium + $spacing-micro;
145
+ margin-top: 0;
146
+
147
+ &:first-of-type {
148
+ position: relative;
149
+
150
+ &::before {
151
+ // globe icon
152
+ @include cl-fontawesome('\f0ac');
153
+
154
+ & {
155
+ display: block;
156
+ font-size: 22px;
157
+ left: calc(-24px - $spacing-micro);
158
+ position: absolute;
159
+ }
160
+ }
161
+ }
162
+
163
+ + p {
164
+ // parent org
165
+ @extend %p-small;
166
+
167
+ color: $color-ci-silver;
168
+ letter-spacing: 0;
169
+ line-height: 1.4; // avoids cutoff g/y
170
+ margin-top: -2px; // avoids cutoff g/y
171
+ }
172
+ }
173
+ }
174
+ }
175
+
176
+ details.cl-nav-organization summary,
177
+ div.cl-nav-organization,
178
+ a.cl-nav-organization {
179
+ height: $header-headline-height;
180
+ padding: 0 $spacing-small;
181
+ position: relative;
182
+
183
+ &::after {
184
+ @include cl-fontawesome('\f078'); // chevron-down
185
+
186
+ & {
187
+ align-items: center;
188
+ background-color: var(--element-bg-color);
189
+ box-shadow: -8px 0 4px var(--element-bg-color);
190
+ color: $color-ci-silver;
191
+ display: flex;
192
+ height: calc(100% - 4px);
193
+ justify-content: flex-start;
194
+ position: absolute;
195
+ right: 4px;
196
+ top: 2px;
197
+ width: calc($spacing-small * 2 - 2px);
198
+ }
199
+ }
200
+
201
+ &.active {
202
+ &::after {
203
+ content: '\f054'; // chevron-right
204
+ }
205
+ }
206
+ }
207
+
208
+ a.cl-nav-organization {
209
+ @include color-focus-outline($color-ci-white);
210
+ }
211
+
212
+ details.cl-nav-organization {
213
+ summary {
214
+ @include color-focus-outline(var(--element-fg-color));
215
+ }
216
+
217
+ &[open] {
218
+ padding-bottom: $spacing-tiny;
219
+
220
+ summary {
221
+ border-bottom: 2px solid $color-white-25a;
222
+ margin-bottom: $spacing-tiny;
223
+ }
224
+
225
+ summary::after {
226
+ content: '\f077'; // chevron-up
227
+ }
228
+ }
229
+
230
+ .cl-nav-item,
231
+ .cl-dropdown-item {
232
+ @include color-focus-outline(var(--element-fg-color));
233
+
234
+ & {
235
+ background-color: var(--element-bg-color);
236
+ color: var(--element-fg-color);
237
+ line-height: 1;
238
+ padding: $spacing-small;
239
+ }
240
+
241
+ &.active {
242
+ #{'--element-fg-color'}: $color-ci-dim;
243
+ #{'--element-bg-color'}: $color-ci-haze;
244
+
245
+ &::after {
246
+ // we use a block item, not a border, so content does not jump
247
+ background-color: $color-ci-silver;
248
+ content: '';
249
+ display: block;
250
+ height: 100%;
251
+ position: absolute;
252
+ right: 0;
253
+ top: 0;
254
+ width: $bar-ui-width;
255
+ }
256
+ }
257
+
258
+ &:hover:not(.active) {
259
+ background-color: $color-ci-dusk;
260
+ }
261
+ }
262
+
263
+ > summary::marker,
264
+ > summary::-webkit-details-marker {
265
+ content: '';
266
+ display: none;
267
+ }
268
+ }
269
+
270
+ .cl-nav-site {
271
+ // --- red site/product switcher ------------------------------
272
+ @extend %p-nav;
273
+
274
+ $background: $color-ci-red;
275
+ $foreground: $color-ci-white;
276
+
277
+ @include color-focus-outline($foreground);
278
+
279
+ & {
280
+ background-color: $background;
281
+ color: $foreground;
282
+ margin-bottom: $spacing-small;
283
+ margin-top: 0;
284
+ }
285
+
286
+ .dropdown-toggle {
287
+ border: 0;
288
+ color: $foreground;
289
+ font-size: px(18);
290
+ height: 4rem;
291
+ text-align: start;
292
+ width: 100%;
293
+
294
+ &:focus {
295
+ box-shadow: none;
296
+ }
297
+ }
298
+
299
+ .dropdown-menu {
300
+ background-color: $color-ci-red;
301
+ border: 0;
302
+ border-radius: 0;
303
+ box-shadow: 0 4px 0 $color-black-25a; // downward
304
+ width: 100%;
305
+ }
306
+
307
+ li {
308
+ display: flex;
309
+ flex-direction: column;
310
+ height: 4rem;
311
+ justify-content: center;
312
+ overflow: hidden;
313
+ }
314
+
315
+ .dropdown-item {
316
+ @extend %p-nav;
317
+
318
+ @include typography-links($color-ci-white, $color-ci-red, 0);
319
+
320
+ & {
321
+ padding: 0.75em $spacing-small;
322
+ white-space: nowrap;
323
+ }
324
+ }
325
+ }
326
+
327
+ .cl-nav-label {
328
+ // -----------------------------------------------------------
329
+ @extend %p-label;
330
+
331
+ color: inherit !important; // sass-lint:disable-line no-important
332
+ margin-bottom: $spacing-tiny;
333
+ margin-left: $spacing-small;
334
+ }
335
+
336
+ .cl-nav-item {
337
+ // ------------------------------------------------------------
338
+ @extend %p-nav;
339
+
340
+ @include typography-links($sidenav-color-text, $sidenav-color-text, 0);
341
+ @include color-focus-outline($sidenav-color-text);
342
+
343
+ & {
344
+ display: inline-block;
345
+ line-height: 1.5em;
346
+ padding: $spacing-tiny 0 $spacing-tiny $spacing-small;
347
+ width: 100%;
348
+ }
349
+
350
+ .cl-nav-item-info {
351
+ @extend %p-small;
352
+
353
+ color: $color-ci-dim;
354
+ }
355
+
356
+ &:hover:not(.active) {
357
+ background-color: $color-ci-white;
358
+ }
359
+
360
+ &.active {
361
+ @include typography-links($color-ci-night, $color-ci-night, 0);
362
+
363
+ & {
364
+ background-color: $color-ci-white;
365
+ color: $color-ci-red;
366
+ display: inline-block;
367
+ padding: $spacing-tiny 0 $spacing-tiny $spacing-small;
368
+ position: relative;
369
+ }
370
+
371
+ &::after {
372
+ // we use a block item, not a border, so content does not jump
373
+ background-color: $color-ci-silver;
374
+ content: '';
375
+ display: block;
376
+ height: 100%;
377
+ position: absolute;
378
+ right: 0;
379
+ top: 0;
380
+ width: $bar-ui-width;
381
+ }
382
+ }
383
+
384
+ .btn {
385
+ position: absolute;
386
+ right: $spacing-small;
387
+ top: 1.25em;
388
+ }
389
+ }
390
+
391
+ .cl-dropdown-dim,
392
+ .cl-dropdown-dark {
393
+ .active {
394
+ background-color: $color-ci-haze;
395
+ color: $color-ci-dim;
396
+
397
+ &::after {
398
+ // we use a block item, not a border, so content does not jump
399
+ background-color: $color-ci-silver;
400
+ content: '';
401
+ display: block;
402
+ height: 100%;
403
+ position: absolute;
404
+ right: 0;
405
+ top: 0;
406
+ width: $bar-ui-width;
407
+ }
408
+ }
409
+ }
410
+
411
+ .cl-dropdown + .cl-nav-item {
412
+ margin-top: $spacing-small;
413
+ }
414
+
415
+ .cl-nav-separator {
416
+ // -------------------------------------------------------
417
+ background-color: $color-ci-smoke;
418
+ border: 0;
419
+ height: px(2);
420
+ margin: $spacing-small 0;
421
+ opacity: 1;
422
+
423
+ &:not([size]) {
424
+ height: px(2);
425
+ }
426
+ }
427
+ }
428
+
429
+ .cl-nav-item-locked {
430
+ &:hover {
431
+ cursor: not-allowed;
432
+ }
433
+
434
+ span::after {
435
+ @include cl-fontawesome('\f023');
436
+
437
+ & {
438
+ margin-left: $spacing-tiny;
439
+ opacity: 0.5;
440
+ pointer-events: none;
441
+ top: inherit;
442
+ }
443
+ }
444
+ }
@@ -0,0 +1,51 @@
1
+ ////
2
+ /// @group components
3
+ /// @access public
4
+ ////
5
+
6
+ .cl-nav-side {
7
+ // --- menu items ------------------------------------------------------------
8
+
9
+ &-menu {
10
+ // border-top: 1px solid $sidenav-color-dim;
11
+ padding: $spacing-tiny 0;
12
+ }
13
+
14
+ &-label {
15
+ @extend %p-tiny;
16
+
17
+ padding: $spacing-small;
18
+
19
+ &[data-bs-toggle] {
20
+ // small triangles for section labels
21
+ cursor: pointer;
22
+
23
+ &::after {
24
+ content: '\f0d7';
25
+ display: inline-block;
26
+ font-family: 'Font Awesome 5 Free';
27
+ font-weight: 900;
28
+ margin-left: $spacing-micro;
29
+ }
30
+
31
+ &.collapsed::after {
32
+ content: '\f0da';
33
+ }
34
+ }
35
+ }
36
+
37
+ ul {
38
+ list-style: none;
39
+ margin: 0;
40
+ padding: 0 0 $spacing-tiny;
41
+
42
+ li {
43
+ margin: 0;
44
+ padding: 0;
45
+
46
+ p {
47
+ margin: $spacing-tiny;
48
+ }
49
+ }
50
+ }
51
+ }