buner 0.0.2 → 1.0.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.
Files changed (175) hide show
  1. package/.env +15 -0
  2. package/.env.development +6 -0
  3. package/.env.eshn +5 -0
  4. package/README.md +141 -5
  5. package/bin/buner.js +566 -0
  6. package/cli/README.md +1 -0
  7. package/cli/buner.ts +234 -0
  8. package/cli/cli.ts +125 -0
  9. package/cli/create-app.ts +59 -0
  10. package/cli/helpers/copy.ts +62 -0
  11. package/cli/helpers/format-files.ts +189 -0
  12. package/cli/helpers/git.ts +77 -0
  13. package/cli/helpers/install.ts +26 -0
  14. package/cli/helpers/is-folder-empty.ts +40 -0
  15. package/cli/helpers/is-writeable.ts +14 -0
  16. package/cli/helpers/make-dir.ts +7 -0
  17. package/cli/helpers/validate-pkg.ts +17 -0
  18. package/cli/install-template.ts +77 -0
  19. package/eslint.config.mjs +187 -0
  20. package/index.html +44 -0
  21. package/integration.ts +179 -0
  22. package/migrate-scss.ts +42 -0
  23. package/package.json +135 -7
  24. package/prerender.ts +229 -0
  25. package/public/.nojekyll +1 -0
  26. package/public/400.html +1 -0
  27. package/public/401.html +21 -0
  28. package/public/403.html +252 -0
  29. package/public/404.css +51 -0
  30. package/public/404.html +29 -0
  31. package/public/__images__/awww.jpeg +0 -0
  32. package/public/__images__/bat-body.png +0 -0
  33. package/public/__images__/bat-wing.png +0 -0
  34. package/public/__images__/haunted-house-background.png +0 -0
  35. package/public/__images__/haunted-house-foreground.png +0 -0
  36. package/public/assets/fonts/crimson-text/CrimsonText-Bold.ttf +0 -0
  37. package/public/assets/fonts/crimson-text/CrimsonText-BoldItalic.ttf +0 -0
  38. package/public/assets/fonts/crimson-text/CrimsonText-Italic.ttf +0 -0
  39. package/public/assets/fonts/crimson-text/CrimsonText-Regular.ttf +0 -0
  40. package/public/assets/fonts/crimson-text/CrimsonText-SemiBold.ttf +0 -0
  41. package/public/assets/fonts/crimson-text/CrimsonText-SemiBoldItalic.ttf +0 -0
  42. package/public/assets/fonts/crimson-text/CrimsonText.woff2 +0 -0
  43. package/public/assets/fonts/crimson-text/OFL.txt +93 -0
  44. package/public/assets/fonts/work-sans/OFL.txt +93 -0
  45. package/public/assets/fonts/work-sans/README.txt +81 -0
  46. package/public/assets/fonts/work-sans/WorkSans-Italic-VariableFont_wght.ttf +0 -0
  47. package/public/assets/fonts/work-sans/WorkSans-VariableFont_wght.ttf +0 -0
  48. package/public/assets/fonts/work-sans/WorkSans.woff2 +0 -0
  49. package/public/assets/fonts/work-sans/static/WorkSans-Black.ttf +0 -0
  50. package/public/assets/fonts/work-sans/static/WorkSans-BlackItalic.ttf +0 -0
  51. package/public/assets/fonts/work-sans/static/WorkSans-Bold.ttf +0 -0
  52. package/public/assets/fonts/work-sans/static/WorkSans-BoldItalic.ttf +0 -0
  53. package/public/assets/fonts/work-sans/static/WorkSans-ExtraBold.ttf +0 -0
  54. package/public/assets/fonts/work-sans/static/WorkSans-ExtraBoldItalic.ttf +0 -0
  55. package/public/assets/fonts/work-sans/static/WorkSans-ExtraLight.ttf +0 -0
  56. package/public/assets/fonts/work-sans/static/WorkSans-ExtraLightItalic.ttf +0 -0
  57. package/public/assets/fonts/work-sans/static/WorkSans-Italic.ttf +0 -0
  58. package/public/assets/fonts/work-sans/static/WorkSans-Light.ttf +0 -0
  59. package/public/assets/fonts/work-sans/static/WorkSans-LightItalic.ttf +0 -0
  60. package/public/assets/fonts/work-sans/static/WorkSans-Medium.ttf +0 -0
  61. package/public/assets/fonts/work-sans/static/WorkSans-MediumItalic.ttf +0 -0
  62. package/public/assets/fonts/work-sans/static/WorkSans-Regular.ttf +0 -0
  63. package/public/assets/fonts/work-sans/static/WorkSans-SemiBold.ttf +0 -0
  64. package/public/assets/fonts/work-sans/static/WorkSans-SemiBoldItalic.ttf +0 -0
  65. package/public/assets/fonts/work-sans/static/WorkSans-Thin.ttf +0 -0
  66. package/public/assets/fonts/work-sans/static/WorkSans-ThinItalic.ttf +0 -0
  67. package/public/assets/images/icons.svg +67 -0
  68. package/public/assets/images/logo.svg +14 -0
  69. package/public/assets/images/root.svg +49 -0
  70. package/public/assets/vendors/axios@0.24.0/axios.js +2275 -0
  71. package/public/assets/vendors/axios@0.24.0/axios.map +1 -0
  72. package/public/assets/vendors/axios@0.24.0/axios.min.js +2 -0
  73. package/public/assets/vendors/axios@0.24.0/axios.min.map +1 -0
  74. package/public/favicon.ico +0 -0
  75. package/public/favicon.svg +3 -0
  76. package/public/icon-128.png +0 -0
  77. package/public/icon-16.png +0 -0
  78. package/public/icon-192.png +0 -0
  79. package/public/icon-48.png +0 -0
  80. package/public/icon-512.png +0 -0
  81. package/public/json/avatar.json +42 -0
  82. package/public/manifest.webmanifest +29 -0
  83. package/public/mockServiceWorker.js +349 -0
  84. package/public/pl-states.svg +4 -0
  85. package/public/samples/01.svg +1 -0
  86. package/public/samples/Airbnb.svg +3 -0
  87. package/public/samples/Facebook.svg +3 -0
  88. package/public/samples/Google.svg +8 -0
  89. package/public/samples/Microsoft.svg +7 -0
  90. package/public/samples/Spotify.svg +3 -0
  91. package/public/samples/alexandra-stolz.svg +35 -0
  92. package/public/samples/browserconfig.xml +9 -0
  93. package/public/samples/cliff-curtis.jpg +0 -0
  94. package/public/samples/emilia-clarke.jpg +0 -0
  95. package/public/samples/favicon.ico +0 -0
  96. package/public/samples/icons/android-chrome-192x192.png +0 -0
  97. package/public/samples/icons/apple-touch-icon.png +0 -0
  98. package/public/samples/icons/favicon-144x144.png +0 -0
  99. package/public/samples/icons/favicon-150x150.png +0 -0
  100. package/public/samples/icons/favicon-16x16.png +0 -0
  101. package/public/samples/icons/favicon-32x32.png +0 -0
  102. package/public/samples/icons/favicon-48x48.png +0 -0
  103. package/public/samples/icons/favicon-70x70.png +0 -0
  104. package/public/samples/icons/favicon.ico +0 -0
  105. package/public/samples/image-1.svg +166 -0
  106. package/public/samples/image-2.svg +110 -0
  107. package/public/samples/image-3.svg +113 -0
  108. package/public/samples/janet-bray.svg +36 -0
  109. package/public/samples/kate-winslet.jpg +0 -0
  110. package/public/samples/manifest.json +19 -0
  111. package/public/samples/michelle-yeoh.jpg +0 -0
  112. package/public/samples/peg-legge.svg +37 -0
  113. package/public/samples/richard-guerra.svg +42 -0
  114. package/public/samples/rose-leslie.jpg +0 -0
  115. package/public/samples/sample-1.svg +365 -0
  116. package/public/samples/sample-2.svg +129 -0
  117. package/public/samples/sample-3.svg +93 -0
  118. package/public/samples/sample-4.svg +168 -0
  119. package/public/samples/sample-5.svg +155 -0
  120. package/public/samples/sample-6.svg +445 -0
  121. package/public/samples/sample-7.svg +404 -0
  122. package/public/samples/sample-8.png +0 -0
  123. package/public/staticwebapp.config.json +138 -0
  124. package/scripts.ts +56 -0
  125. package/server.ts +29 -0
  126. package/states.ts +63 -0
  127. package/styles.ts +232 -0
  128. package/tsconfig.json +71 -25
  129. package/types.d.ts +54 -0
  130. package/vite.config.ts +3 -0
  131. package/xpack/alias.ts +21 -0
  132. package/xpack/config.ts +59 -0
  133. package/xpack/create-server.ts +68 -0
  134. package/xpack/create-vite-dev-server.ts +33 -0
  135. package/xpack/deploy/deploy-inte.ts +3 -0
  136. package/xpack/filename.ts +43 -0
  137. package/xpack/hooks/build-start.ts +17 -0
  138. package/xpack/hooks/close-bundle.ts +19 -0
  139. package/xpack/hooks/handle-hot-update.ts +22 -0
  140. package/xpack/hooks/options.ts +55 -0
  141. package/xpack/hooks/resolve-dynamic-import.ts +18 -0
  142. package/xpack/hooks/transform-index-html.ts +18 -0
  143. package/xpack/hooks/transform.ts +72 -0
  144. package/xpack/hooks/write-bundle.ts +16 -0
  145. package/xpack/manual-chunk.ts +56 -0
  146. package/xpack/paths.ts +30 -0
  147. package/xpack/renderer.ts +141 -0
  148. package/xpack/root/active-item-options.tsx +98 -0
  149. package/xpack/root/frame-controls.tsx +139 -0
  150. package/xpack/root/index.tsx +107 -0
  151. package/xpack/root/rendered-item.tsx +25 -0
  152. package/xpack/root/root-context.ts +22 -0
  153. package/xpack/root/root-nav.tsx +162 -0
  154. package/xpack/root/state-animation-html.tsx +18 -0
  155. package/xpack/root/template.tsx +23 -0
  156. package/xpack/root/use-click-outside.ts +37 -0
  157. package/xpack/scripts/color-mode.entry.ts +28 -0
  158. package/xpack/scripts/mock-api.entry.ts +11 -0
  159. package/xpack/scripts/pl-states.entry.ts +321 -0
  160. package/xpack/scripts/root.entry.ts +135 -0
  161. package/xpack/scripts/theme-critical.entry.ts +20 -0
  162. package/xpack/states.schema.json +61 -0
  163. package/xpack/styles/_border.scss +22 -0
  164. package/xpack/styles/_breakpoint.scss +117 -0
  165. package/xpack/styles/_form.scss +23 -0
  166. package/xpack/styles/_px2rem.scss +5 -0
  167. package/xpack/styles/_reset.scss +134 -0
  168. package/xpack/styles/_state-toggle.scss +121 -0
  169. package/xpack/styles/_theme.scss +68 -0
  170. package/xpack/styles/_top-panel.scss +87 -0
  171. package/xpack/styles/_xpack-root.scss +322 -0
  172. package/xpack/styles/pl-states.scss +308 -0
  173. package/xpack/styles/root.scss +129 -0
  174. package/.github/workflows/deploy.yaml +0 -32
  175. package/index.ts +0 -1
@@ -0,0 +1,322 @@
1
+ @use 'border' as *;
2
+ @use 'breakpoint' as *;
3
+ @use 'form' as *;
4
+ @use 'px2rem' as *;
5
+ @use 'theme' as *;
6
+
7
+ .xpack-o-root {
8
+ @include border-right;
9
+ height: min-content;
10
+ display: flex;
11
+ flex-direction: row;
12
+ gap: px2rem(1px);
13
+ background-color: $body-bg;
14
+ position: sticky;
15
+ top: 0;
16
+ left: 0;
17
+ z-index: 100;
18
+ overflow: hidden;
19
+ line-height: 1.5;
20
+ padding: px2rem(10px);
21
+ font-size: px2rem(14px);
22
+ align-items: center;
23
+
24
+ @include lg {
25
+ flex-direction: column;
26
+ height: 100vh;
27
+ --navbar-max-width: 100%;
28
+ position: relative;
29
+ width: 100%;
30
+ box-shadow: unset;
31
+ padding: 0;
32
+ align-items: stretch;
33
+ }
34
+
35
+ &__title {
36
+ display: flex;
37
+ align-items: center;
38
+
39
+ @include lg {
40
+ display: none;
41
+ }
42
+ }
43
+
44
+ &__button-close,
45
+ &__button-setting {
46
+ width: px2rem(35px);
47
+ height: px2rem(35px);
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ border: none;
52
+ color: $body-color;
53
+
54
+ svg.xpack-o-root__control-svg {
55
+ height: px2rem(35px);
56
+ width: px2rem(35px);
57
+ }
58
+
59
+ &:hover {
60
+ color: $link-hover-color;
61
+ }
62
+
63
+ @include lg {
64
+ display: none;
65
+ }
66
+ }
67
+
68
+ &__button-setting {
69
+ padding: px2rem(2px);
70
+ }
71
+
72
+ &__nav-items {
73
+ flex-grow: 1;
74
+ position: fixed;
75
+ top: px2rem(50px);
76
+ left: 0;
77
+ height: calc(100vh - px2rem(275px));
78
+ max-width: var(--navbar-max-width);
79
+ transform: translateX(-100%);
80
+ background-color: $body-bg;
81
+ border-bottom: px2rem(1px) solid $border-color;
82
+
83
+ &.show {
84
+ display: block;
85
+ box-shadow: 0 px2rem(2px) px2rem(4px) #a6a6a6;
86
+ transform: translateX(0);
87
+ }
88
+
89
+ @include lg {
90
+ position: relative;
91
+ top: 0;
92
+ display: block;
93
+ padding-bottom: px2rem(8px);
94
+ transform: translateX(0);
95
+ }
96
+ }
97
+
98
+ &__items {
99
+ padding: px2rem(8px) 0 px2rem(32px);
100
+ height: calc(100% - px2rem(42px));
101
+ overflow-y: auto;
102
+ overflow-x: hidden;
103
+ scrollbar-width: thin;
104
+ scrollbar-color: transparent transparent;
105
+
106
+ &::-webkit-scrollbar {
107
+ width: px2rem(5px);
108
+ height: px2rem(5px);
109
+ }
110
+
111
+ &::-webkit-scrollbar-track {
112
+ background: transparent;
113
+ }
114
+
115
+ &::-webkit-scrollbar-track-piece {
116
+ background-color: transparent;
117
+ }
118
+
119
+ &::-webkit-scrollbar-thumb {
120
+ background: transparent;
121
+ }
122
+
123
+ &:hover,
124
+ &:focus-visible {
125
+ scrollbar-width: thin;
126
+ scrollbar-color: $scrollbar-thumb-hover-bg $body-bg;
127
+
128
+ &::-webkit-scrollbar-thumb {
129
+ background: $scrollbar-thumb-bg;
130
+ }
131
+ }
132
+
133
+ &::-webkit-scrollbar-thumb:hover {
134
+ background: $scrollbar-thumb-hover-bg;
135
+ }
136
+
137
+ &::-webkit-scrollbar-corner {
138
+ background-color: transparent;
139
+ }
140
+ }
141
+
142
+ &__search {
143
+ padding: px2rem(8px) px2rem(16px);
144
+ border-bottom: px2rem(1px) solid $border-color;
145
+
146
+ input {
147
+ @include input;
148
+ width: 100%;
149
+ padding: px2rem(8px);
150
+ font-size: px2rem(16px);
151
+ }
152
+ }
153
+
154
+ &__nav-message {
155
+ padding: px2rem(8px) px2rem(14px);
156
+ font-weight: 700;
157
+ }
158
+
159
+ &__search-matches {
160
+ border-bottom: px2rem(1px) solid $border-color;
161
+
162
+ > * {
163
+ font-weight: 700;
164
+ }
165
+ }
166
+
167
+ &__search-not-matches {
168
+ &.blur {
169
+ opacity: 0.5;
170
+ }
171
+ }
172
+
173
+ &__nav-item {
174
+ padding: px2rem(4px) px2rem(8px) px2rem(4px) px2rem(16px);
175
+ display: block;
176
+ color: $body-color;
177
+ background-color: transparent;
178
+ border: none;
179
+ font-size: px2rem(14px);
180
+ font-family: Arial, Helvetica, sans-serif;
181
+ line-height: 1.5;
182
+ cursor: pointer;
183
+
184
+ &--active {
185
+ color: $link-hover-color;
186
+ background-color: rgba($body-color-rgb, 0.2);
187
+ }
188
+
189
+ &:hover {
190
+ color: $link-hover-color;
191
+ }
192
+
193
+ &.panel-position {
194
+ display: none;
195
+
196
+ @include lg {
197
+ display: flex;
198
+ }
199
+ }
200
+
201
+ &--last {
202
+ margin-bottom: px2rem(20px);
203
+ }
204
+ }
205
+
206
+ &__nav-item-collection {
207
+ padding: px2rem(4px) px2rem(8px) px2rem(4px) px2rem(16px);
208
+ & > summary {
209
+ color: #9453d5;
210
+ cursor: pointer;
211
+ font-weight: bold;
212
+ display: flex;
213
+ align-items: center;
214
+ user-select: none;
215
+
216
+ @include dark {
217
+ color: #40e0d0;
218
+ }
219
+
220
+ &::marker {
221
+ content: none;
222
+ }
223
+
224
+ &::after {
225
+ text-shadow: 0 0 #9453d5;
226
+ content: '\2795';
227
+ margin-left: auto;
228
+ flex-shrink: 0;
229
+ font-weight: normal;
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ color: rgba($color: #000000, $alpha: 0);
234
+ font-size: px2rem(10px);
235
+
236
+ @include dark {
237
+ text-shadow: 0 0 #40e0d0;
238
+ }
239
+ }
240
+ }
241
+
242
+ &[open] {
243
+ & > summary {
244
+ &::after {
245
+ content: '\2796';
246
+ }
247
+ }
248
+ }
249
+ }
250
+
251
+ &__nav-item-seperator {
252
+ @include border-top;
253
+ margin: px2rem(16px) 0 px2rem(8px);
254
+ }
255
+
256
+ &__frame-control {
257
+ display: block;
258
+ max-width: var(--navbar-max-width);
259
+ margin-left: auto;
260
+
261
+ @include lg {
262
+ margin-left: unset;
263
+ }
264
+ }
265
+
266
+ &__active-item-options {
267
+ display: block;
268
+ max-width: var(--navbar-max-width);
269
+ background-color: $body-bg;
270
+ position: fixed;
271
+ top: px2rem(50px);
272
+ right: 0;
273
+ padding: px2rem(20px) 0 px2rem(8px);
274
+ transform: translateX(100%);
275
+
276
+ &.show {
277
+ display: block;
278
+ box-shadow: 0 px2rem(2px) px2rem(4px) #a6a6a6;
279
+ transform: translateX(0);
280
+ }
281
+
282
+ @include lg {
283
+ display: block;
284
+ position: relative;
285
+ transform: translateX(0);
286
+ top: 0;
287
+ }
288
+ }
289
+
290
+ &__actual-width {
291
+ margin-top: px2rem(8px);
292
+ margin-right: px2rem(10px);
293
+ text-align: center;
294
+ font-size: px2rem(14px);
295
+ }
296
+
297
+ &__controls {
298
+ margin-top: px2rem(10px);
299
+ text-align: center;
300
+ display: none;
301
+
302
+ @include lg {
303
+ display: block;
304
+ }
305
+ }
306
+
307
+ &__control-button {
308
+ border: none;
309
+ background-color: transparent;
310
+ color: $body-color;
311
+ cursor: pointer;
312
+
313
+ &:hover {
314
+ color: $link-hover-color;
315
+ }
316
+ }
317
+
318
+ &__control-svg {
319
+ width: px2rem(18px);
320
+ height: px2rem(18px);
321
+ }
322
+ }
@@ -0,0 +1,308 @@
1
+ @use 'border' as *;
2
+ @use 'breakpoint' as *;
3
+ @use 'px2rem' as *;
4
+
5
+ $-bold: 700;
6
+
7
+ $-button-border: #aaa093;
8
+ $-button-bg: #d2dde4;
9
+ $-button-bg-hover: #f8c276;
10
+
11
+ $-bar-bg: #015174;
12
+ $-bar-fg: #fff;
13
+
14
+ $-group-bg: #fff;
15
+ $-group-bg-hover: #f8c276;
16
+ $-group-fg: #434342;
17
+
18
+ $-black: #000;
19
+ $-white: #fff;
20
+
21
+ $-label-bg: #fff;
22
+ $-label-bg-hover: #f8c276;
23
+ $-label-fg: #434342;
24
+
25
+ $-sand: #d4ccc7;
26
+ $-lava: #434342;
27
+ $-black: #000;
28
+ $-beam: #f8c276;
29
+ $-wave-50: #d2dde4;
30
+
31
+ .pl-state {
32
+ line-height: 1.4;
33
+ position: absolute;
34
+ top: px2rem(8px);
35
+ right: px2rem(8px);
36
+ display: block;
37
+ height: auto;
38
+ max-height: none;
39
+ width: auto;
40
+ max-width: none;
41
+
42
+ &__button {
43
+ padding: 0;
44
+ cursor: pointer;
45
+ border: px2rem(1px) solid $-button-border;
46
+ width: px2rem(40px);
47
+ height: px2rem(40px);
48
+ border-radius: 50%;
49
+ background-color: $-button-bg;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ opacity: 0.5;
54
+ animation-name: activeStateButton;
55
+ animation-duration: 2s;
56
+ animation-timing-function: linear;
57
+ animation-iteration-count: infinite;
58
+ animation-play-state: paused;
59
+
60
+ &.active,
61
+ &:hover {
62
+ opacity: 1;
63
+ }
64
+
65
+ &:hover {
66
+ background-color: $-button-bg-hover;
67
+ }
68
+
69
+ &.active {
70
+ animation-play-state: running;
71
+ }
72
+ }
73
+
74
+ @keyframes activeStateButton {
75
+ 0% {
76
+ background-color: $-white;
77
+ transform: rotate(0deg);
78
+ box-shadow: 0px 0px px2rem(16px) px2rem(8px) rgba($-black, 0.15);
79
+ }
80
+ 40% {
81
+ background-color: $-beam;
82
+ box-shadow: 0px 0px px2rem(16px) px2rem(8px) rgba($-white, 0.8);
83
+ box-shadow: none;
84
+ }
85
+ 60% {
86
+ background-color: $-beam;
87
+ box-shadow: 0px 0px px2rem(16px) px2rem(8px) rgba($-white, 0.8);
88
+ box-shadow: none;
89
+ }
90
+ 100% {
91
+ background-color: $-white;
92
+ transform: rotate(360deg);
93
+ box-shadow: 0px 0px px2rem(16px) px2rem(8px) rgba($-black, 0.15);
94
+ }
95
+ }
96
+
97
+ &--top-left {
98
+ left: px2rem(8px);
99
+ right: auto;
100
+ }
101
+
102
+ &--top-center {
103
+ left: 50%;
104
+ right: auto;
105
+
106
+ & > * {
107
+ position: relative;
108
+ left: -50%;
109
+ }
110
+ }
111
+
112
+ &--top-right {
113
+ left: auto;
114
+ right: px2rem(8px);
115
+ }
116
+
117
+ &--bottom-left {
118
+ left: px2rem(8px);
119
+ right: auto;
120
+ top: auto;
121
+ bottom: px2rem(8px);
122
+ }
123
+
124
+ &--bottom-right {
125
+ left: auto;
126
+ right: px2rem(8px);
127
+ top: auto;
128
+ bottom: px2rem(8px);
129
+ }
130
+ }
131
+
132
+ .pl-state-bar {
133
+ position: fixed;
134
+ z-index: 9999999;
135
+ top: 0;
136
+ left: 0;
137
+ width: 100%;
138
+ background-color: $-bar-bg;
139
+ color: $-bar-fg;
140
+ display: none;
141
+ transition: opacity 0.5s ease-in-out;
142
+ opacity: 0;
143
+ box-shadow: 0px 0px px2rem(16px) px2rem(8px) rgba($-black, 0.2);
144
+ max-height: 100%;
145
+
146
+ @include md {
147
+ grid-template-columns: 1fr auto;
148
+ }
149
+
150
+ &.expand {
151
+ opacity: 1;
152
+ display: grid;
153
+ }
154
+
155
+ &__content {
156
+ padding: px2rem(4px) px2rem(8px) px2rem(16px) px2rem(8px);
157
+ display: grid;
158
+ grid-template-columns: 1fr 1fr;
159
+ flex-wrap: wrap;
160
+ justify-content: center;
161
+ gap: px2rem(10px);
162
+ grid-gap: px2rem(10px);
163
+
164
+ @include md {
165
+ gap: px2rem(20px);
166
+ grid-gap: px2rem(20px);
167
+ display: flex;
168
+ }
169
+
170
+ .pl-state-bar__buttons {
171
+ display: flex;
172
+
173
+ @include md {
174
+ display: none;
175
+ }
176
+ }
177
+ }
178
+
179
+ &__group {
180
+ align-self: flex-end;
181
+ position: relative;
182
+ font-size: px2rem(13px);
183
+ line-height: 1.2;
184
+ }
185
+
186
+ &__select {
187
+ width: 100%;
188
+ }
189
+
190
+ &__checkbox-group {
191
+ display: none;
192
+ position: absolute;
193
+ top: calc(100% + 1px);
194
+ left: 0;
195
+ background-color: $-sand;
196
+ width: px2rem(160px);
197
+ min-width: 100%;
198
+ border: 1px solid rgb(118, 118, 118);
199
+ gap: px2rem(1px);
200
+ grid-gap: px2rem(1px);
201
+ z-index: 10;
202
+ box-shadow: 0px 0px px2rem(16px) px2rem(8px) rgba($-black, 0.2);
203
+
204
+ &.expand {
205
+ display: grid;
206
+ }
207
+ }
208
+
209
+ &__input {
210
+ display: none;
211
+
212
+ &:checked + label.pl-state-bar__label {
213
+ background-color: $-wave-50;
214
+
215
+ > span {
216
+ &::before {
217
+ content: '✓';
218
+ display: block;
219
+ position: absolute;
220
+ left: -(px2rem(15px));
221
+ font-weight: $-bold;
222
+ }
223
+ }
224
+ }
225
+ }
226
+
227
+ &__label {
228
+ font-size: px2rem(13.33px);
229
+ padding: px2rem(8px) px2rem(8px) px2rem(8px) px2rem(20px);
230
+ display: block;
231
+ cursor: pointer;
232
+ background-color: $-label-bg;
233
+ color: $-label-fg;
234
+ line-height: 1.4;
235
+
236
+ &:hover {
237
+ background-color: $-label-bg-hover;
238
+ }
239
+
240
+ > span {
241
+ position: relative;
242
+ }
243
+ }
244
+
245
+ &__buttons {
246
+ justify-self: flex-end;
247
+ align-self: flex-start;
248
+ align-items: center;
249
+ display: none;
250
+
251
+ @include md {
252
+ margin-right: px2rem(16px);
253
+ display: flex;
254
+ grid-column: 2 / 2;
255
+ }
256
+ }
257
+
258
+ &__close-button {
259
+ position: relative;
260
+ width: px2rem(32px);
261
+ height: px2rem(32px);
262
+ opacity: 0.7;
263
+ cursor: pointer;
264
+ background-color: transparent;
265
+
266
+ &:hover {
267
+ opacity: 1;
268
+ }
269
+
270
+ &:before,
271
+ &:after {
272
+ position: absolute;
273
+ left: px2rem(15px);
274
+ content: ' ';
275
+ height: px2rem(33px);
276
+ width: px2rem(2px);
277
+ background-color: $-white;
278
+ }
279
+
280
+ &:before {
281
+ transform: rotate(45deg);
282
+ }
283
+ &:after {
284
+ transform: rotate(-45deg);
285
+ }
286
+ }
287
+
288
+ &__group-header {
289
+ position: relative;
290
+ cursor: pointer;
291
+ background-color: $-group-bg;
292
+ font-size: px2rem(13.33px);
293
+ color: $-group-fg;
294
+ padding: px2rem(4px) px2rem(25px) px2rem(4px) px2rem(5px);
295
+ border: 1px solid rgb(118, 118, 118);
296
+ min-width: px2rem(60px);
297
+ line-height: 1;
298
+
299
+ background-image: url('data:image/svg+xml,%3Csvg%20width%3D%2213%22%20height%3D%227%22%20viewBox%3D%220%200%2013%207%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22m12.12%201.413-1.109-1.3L6.59%204.208%202.07.148.89%201.377%206.523%206.6z%22%20fill%3D%22#{encodecolor($-lava)}%22%20fill-rule%3D%22evenodd%22%2F%3E%0A%3C%2Fsvg%3E');
300
+ background-size: px2rem(11px) px2rem(11px);
301
+ background-repeat: no-repeat;
302
+ background-position: right px2rem(5px) center;
303
+
304
+ &:hover {
305
+ background-color: $-group-bg-hover;
306
+ }
307
+ }
308
+ }