UNPKG

15.2 kBSCSSView Raw
1@import 'functions';
2
3// Layout
4$grid-size: px-to-rem(8px);
5$gl-spacing-scale-1: 0.25 * $grid-size;
6$gl-spacing-scale-2: 0.5 * $grid-size;
7$gl-spacing-scale-3: $grid-size;
8$gl-spacing-scale-4: 1.5 * $grid-size;
9$gl-spacing-scale-5: 2 * $grid-size;
10$gl-spacing-scale-6: 3 * $grid-size;
11$gl-spacing-scale-7: 4 * $grid-size;
12$gl-spacing-scale-8: 5 * $grid-size;
13$gl-spacing-scale-9: 6 * $grid-size;
14$gl-spacing-scale-10: 7 * $grid-size;
15$gl-spacing-scale-11: 8 * $grid-size;
16$gl-spacing-scale-11-5: 9 * $grid-size;
17$gl-spacing-scale-12: 10 * $grid-size;
18$gl-spacing-scale-13: 12 * $grid-size;
19$gl-spacing-scale-15: 15 * $grid-size;
20$gl-spacing-scale-20: 20 * $grid-size;
21
22// Responsive breakpoints
23
24$breakpoint-sm: 576px;
25$breakpoint-md: 768px;
26$breakpoint-lg: 992px;
27$breakpoint-xl: 1200px;
28
29$breakpoints: (
30 xs: 0,
31 sm: $breakpoint-sm,
32 md: $breakpoint-md,
33 lg: $breakpoint-lg,
34 xl: $breakpoint-xl,
35);
36
37// Max widths
38$limited-layout-width: 990px !default;
39
40// Color schema
41$black: #000 !default;
42$black-normal: #333 !default;
43
44$white: #fff !default;
45$white-normal: #f0f0f0 !default;
46$white-dark: #eaeaea !default;
47$white-transparent: rgba(255, 255, 255, 0.8) !default;
48$transparent-rgba: rgba($white, 0);
49
50$green-50: #ecf4ee !default;
51$green-100: #c3e6cd !default;
52$green-200: #91d4a8 !default;
53$green-300: #52b87a !default;
54$green-400: #2da160 !default;
55$green-500: #108548 !default;
56$green-600: #217645 !default;
57$green-700: #24663b !default;
58$green-800: #0d532a !default;
59$green-900: #0a4020 !default;
60$green-950: #072b15 !default;
61
62$blue-50: #e9f3fc !default;
63$blue-100: #cbe2f9 !default;
64$blue-200: #9dc7f1 !default;
65$blue-300: #63a6e9 !default;
66$blue-400: #428fdc !default;
67$blue-500: #1f75cb !default;
68$blue-600: #1068bf !default;
69$blue-700: #0b5cad !default;
70$blue-800: #064787 !default;
71$blue-900: #033464 !default;
72$blue-950: #002850 !default;
73
74$orange-50: #fdf1dd !default;
75$orange-100: #f5d9a8 !default;
76$orange-200: #e9be74 !default;
77$orange-300: #d99530 !default;
78$orange-400: #c17d10 !default;
79$orange-500: #ab6100 !default;
80$orange-600: #9e5400 !default;
81$orange-700: #8f4700 !default;
82$orange-800: #703800 !default;
83$orange-900: #5c2900 !default;
84$orange-950: #421f00 !default;
85
86$red-50: #fcf1ef !default;
87$red-100: #fdd4cd !default;
88$red-200: #fcb5aa !default;
89$red-300: #f57f6c !default;
90$red-400: #ec5941 !default;
91$red-500: #dd2b0e !default;
92$red-600: #c91c00 !default;
93$red-700: #ae1800 !default;
94$red-800: #8d1300 !default;
95$red-900: #660e00 !default;
96$red-950: #4d0a00 !default;
97
98$purple-50: #f4f0ff !default;
99$purple-100: #e1d8f9 !default;
100$purple-200: #cbbbf2 !default;
101$purple-300: #ac93e6 !default;
102$purple-400: #9475db !default;
103$purple-500: #7b58cf !default;
104$purple-600: #694cc0 !default;
105$purple-700: #5943b6 !default;
106$purple-800: #453894 !default;
107$purple-900: #2f2a6b !default;
108$purple-950: #232150 !default;
109
110/*
111Neutral palette mapping
112
113Old variables are mapped to new variables by approximating the closest variable, erring on the side of shifting darker (with the exception of old 400). There is currently nothing mapped to 600 and 800, which makes them a good use case for subtle nuance in the UI.
114
115
116Before After (reflected below)
117-------------------------------------
11850 10
119100 50
120200 100
121300 200
122400 200
123500 300
124600 400
125700 500*
126800 700
127900 900
128950 950
129
130* Passes 4.5:1 contrast ratio on $gray-10
131*/
132
133$gray-10: #fafafa !default;
134$gray-50: #f0f0f0 !default;
135$gray-100: #dbdbdb !default;
136$gray-200: #bfbfbf !default;
137$gray-300: #999 !default;
138$gray-400: #868686 !default;
139$gray-500: #666 !default;
140$gray-600: #5e5e5e !default;
141$gray-700: #525252 !default;
142$gray-800: #404040 !default;
143$gray-900: #303030 !default;
144$gray-950: #1f1f1f !default;
145
146// GitLab themes
147
148$gl-themes: 'indigo', 'blue', 'light-blue', 'green', 'red', 'light-red';
149
150// The indigo light and indigo dark use $theme-indigo variables.
151$theme-indigo-50: #f1f1ff !default;
152$theme-indigo-100: #dbdbf8 !default;
153$theme-indigo-200: #c7c7f2 !default;
154$theme-indigo-300: #a2a2e6 !default;
155$theme-indigo-400: #8181d7 !default;
156$theme-indigo-500: #6666c4 !default;
157$theme-indigo-600: #5252b5 !default;
158$theme-indigo-700: #41419f !default;
159$theme-indigo-800: #303083 !default;
160$theme-indigo-900: #222261 !default;
161$theme-indigo-950: #14143d !default;
162
163$theme-blue-50: #cdd8e3 !default;
164$theme-blue-100: #b9cadc !default;
165$theme-blue-200: #a6bdd5 !default;
166$theme-blue-300: #81a5c9 !default;
167$theme-blue-400: #628eb9 !default;
168$theme-blue-500: #4977a5 !default;
169$theme-blue-600: #346596 !default;
170$theme-blue-700: #235180 !default;
171$theme-blue-800: #153c63 !default;
172$theme-blue-900: #0b2640 !default;
173$theme-blue-950: #04101c !default;
174
175$theme-light-blue-50: #dde6ee !default;
176$theme-light-blue-100: #c1d4e6 !default;
177$theme-light-blue-200: #a0bedc !default;
178$theme-light-blue-300: #74a3d3 !default;
179$theme-light-blue-400: #4f8bc7 !default;
180$theme-light-blue-500: #3476b9 !default;
181$theme-light-blue-600: #2268ae !default;
182$theme-light-blue-700: #145aa1 !default;
183$theme-light-blue-800: #0e4d8d !default;
184$theme-light-blue-900: #0c4277 !default;
185$theme-light-blue-950: #0a3764 !default;
186
187// The green light and green dark use $theme-green variables.
188$theme-green-50: #dde9de !default;
189$theme-green-100: #b1d6b5 !default;
190$theme-green-200: #8cc497 !default;
191$theme-green-300: #69af7d !default;
192$theme-green-400: #499767 !default;
193$theme-green-500: #308258 !default;
194$theme-green-600: #25744c !default;
195$theme-green-700: #1b653f !default;
196$theme-green-800: #155635 !default;
197$theme-green-900: #0e4328 !default;
198$theme-green-950: #052e19 !default;
199
200$theme-red-50: #f4e9e7 !default;
201$theme-red-100: #ecd3d0 !default;
202$theme-red-200: #e3bab5 !default;
203$theme-red-300: #d59086 !default;
204$theme-red-400: #c66e60 !default;
205$theme-red-500: #ad4a3b !default;
206$theme-red-600: #a13322 !default;
207$theme-red-700: #8f2110 !default;
208$theme-red-800: #761405 !default;
209$theme-red-900: #580d02 !default;
210$theme-red-950: #380700 !default;
211
212$theme-light-red-50: #faf2f1 !default;
213$theme-light-red-100: #f6d9d5 !default;
214$theme-light-red-200: #ebada2 !default;
215$theme-light-red-300: #e07f6f !default;
216$theme-light-red-400: #d36250 !default;
217$theme-light-red-500: #c24b38 !default;
218$theme-light-red-600: #b53a26 !default;
219$theme-light-red-700: #a02e1c !default;
220$theme-light-red-800: #8b2212 !default;
221$theme-light-red-900: #751709 !default;
222$theme-light-red-950: #5c1105 !default;
223
224// Data visualization color palette
225
226$data-viz-green-50: #ddfab7;
227$data-viz-green-100: #c9f097;
228$data-viz-green-200: #b0de73;
229$data-viz-green-300: #94c25e;
230$data-viz-green-400: #83ab4a;
231$data-viz-green-500: #608b2f;
232$data-viz-green-600: #487900;
233$data-viz-green-700: #366800;
234$data-viz-green-800: #275600;
235$data-viz-green-900: #1a4500;
236$data-viz-green-950: #0f3300;
237
238$data-viz-aqua-50: #b8fff2;
239$data-viz-aqua-100: #93fae7;
240$data-viz-aqua-200: #5eebdf;
241$data-viz-aqua-300: #25d2d2;
242$data-viz-aqua-400: #0bb6c6;
243$data-viz-aqua-500: #0094b6;
244$data-viz-aqua-600: #0080a1;
245$data-viz-aqua-700: #006887;
246$data-viz-aqua-800: #004d67;
247$data-viz-aqua-900: #003f57;
248$data-viz-aqua-950: #00293d;
249
250$data-viz-blue-50: #e9ebff;
251$data-viz-blue-100: #d4dcfa;
252$data-viz-blue-200: #b7c6ff;
253$data-viz-blue-300: #97acff;
254$data-viz-blue-400: #748eff;
255$data-viz-blue-500: #5772ff;
256$data-viz-blue-600: #445cf2;
257$data-viz-blue-700: #3547de;
258$data-viz-blue-800: #232fcf;
259$data-viz-blue-900: #1e23a8;
260$data-viz-blue-950: #11118a;
261
262$data-viz-magenta-50: #ffe3eb;
263$data-viz-magenta-100: #ffc9d9;
264$data-viz-magenta-200: #fcacc5;
265$data-viz-magenta-300: #ff85af;
266$data-viz-magenta-400: #f2639a;
267$data-viz-magenta-500: #d84280;
268$data-viz-magenta-600: #c52c6b;
269$data-viz-magenta-700: #b31756;
270$data-viz-magenta-800: #950943;
271$data-viz-magenta-900: #7a0033;
272$data-viz-magenta-950: #570028;
273
274$data-viz-orange-50: #fae8d1;
275$data-viz-orange-100: #f7d8b5;
276$data-viz-orange-200: #f3c291;
277$data-viz-orange-300: #eb9a5c;
278$data-viz-orange-400: #e17223;
279$data-viz-orange-500: #d14e00;
280$data-viz-orange-600: #b24800;
281$data-viz-orange-700: #944100;
282$data-viz-orange-800: #6f3500;
283$data-viz-orange-900: #5c2b00;
284$data-viz-orange-950: #421e00;
285
286$darken-normal-factor: 7%;
287$darken-dark-factor: 10%;
288$darken-border-factor: 5%;
289$darken-border-dashed-factor: 25%;
290
291$t-gray-a-02: rgba($black, 0.02);
292$t-gray-a-04: rgba($black, 0.04);
293$t-gray-a-06: rgba($black, 0.06);
294$t-gray-a-08: rgba(#000, 0.08);
295$t-gray-a-24: rgba(#000, 0.24);
296
297// Text
298$gl-text-color: $gray-900 !default;
299$gl-text-color-secondary: $gray-500 !default;
300
301$gl-font-weight-light: 300;
302$gl-font-weight-normal: 400;
303$gl-font-weight-bold: 600;
304
305$gl-font-weights: (
306 'normal': $gl-font-weight-normal,
307 'bold': $gl-font-weight-bold,
308);
309
310// Line height
311$gl-line-height-16: px-to-rem(16px);
312$gl-line-height-20: px-to-rem(20px);
313$gl-line-height-24: px-to-rem(24px);
314$gl-line-height-28: px-to-rem(28px);
315$gl-line-height-32: px-to-rem(32px);
316$gl-line-height-36: px-to-rem(36px);
317$gl-line-height-44: px-to-rem(44px);
318$gl-line-height-52: px-to-rem(52px);
319
320// UI typescale
321
322// default (min-width: 0)
323$gl-font-size: px-to-rem(14px);
324$gl-font-size-sm: px-to-rem(12px);
325$gl-font-size-lg: px-to-rem(16px);
326
327$gl-font-size-h-display: px-to-rem(28px);
328$gl-font-size-h1: px-to-rem(23px);
329$gl-font-size-h2: px-to-rem(19px);
330
331// breakpoint (min-width: 768px)
332$gl-font-size-h-display-md: px-to-rem(31px);
333$gl-font-size-h1-md: px-to-rem(25px);
334$gl-font-size-h2-md: px-to-rem(20px);
335
336// breakpoint (min-width: 1200px)
337$gl-font-size-h-display-xl: px-to-rem(45px);
338$gl-font-size-h1-xl: px-to-rem(32px);
339$gl-font-size-h2-xl: px-to-rem(23px);
340
341// Markdown typescale
342
343// default (min-width: 0)
344$gl-font-size-markdown: px-to-rem(16px);
345$gl-font-size-markdown-sm: px-to-rem(14px);
346
347$gl-font-size-markdown-h1: px-to-rem(28px);
348$gl-font-size-markdown-h2: px-to-rem(23px);
349$gl-font-size-markdown-h3: px-to-rem(19px);
350
351// breakpoint (min-width: 768px)
352$gl-font-size-markdown-h1-md: px-to-rem(31px);
353$gl-font-size-markdown-h2-md: px-to-rem(25px);
354$gl-font-size-markdown-h3-md: px-to-rem(20px);
355
356// breakpoint (min-width: 1200px)
357$gl-font-size-markdown-h1-xl: px-to-rem(45px);
358$gl-font-size-markdown-h2-xl: px-to-rem(32px);
359$gl-font-size-markdown-h3-xl: px-to-rem(23px);
360
361// Compact markdown typescale
362
363// default (min-width: 0)
364$gl-font-size-compact-markdown-h1: px-to-rem(19px);
365
366// media-md: min-width: 768px
367$gl-font-size-compact-markdown-h1-md: px-to-rem(20px);
368
369// media xl (min-width: 1200px)
370$gl-font-size-compact-markdown-h1-xl: px-to-rem(23px);
371
372// Monoscape
373// These font sizes apply for all content-types, media-breakpoints, and element-types.
374$gl-font-size-monospace: px-to-rem(13px);
375$gl-font-size-monospace-lg: px-to-rem(15px);
376$gl-font-size-monospace-sm: px-to-rem(11px);
377
378// Fonts
379$gl-monospace-font: 'Menlo', 'DejaVu Sans Mono', 'Liberation Mono', 'Consolas', 'Ubuntu Mono',
380 'Courier New', 'andale mono', 'lucida console', monospace;
381$gl-regular-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Noto Sans', Ubuntu,
382 Cantarell, 'Helvetica Neue', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
383 'Noto Color Emoji';
384
385$gl-fonts: (
386 'monospace': $gl-monospace-font,
387 'regular': $gl-regular-font,
388);
389
390// use px for borders rather than rem
391// we don't want borders to scale with font size
392// 1px can end up being rounded to 0 after
393// conversion to/from rem
394$gl-border-size-1: 1px;
395$gl-border-size-2: 2px;
396$gl-border-size-3: 3px;
397$gl-border-size-4: 4px;
398$gl-border-size-5: 5px;
399$gl-border-size-8: 8px;
400
401// border roundness
402$gl-border-radius-small: $gl-spacing-scale-1;
403$gl-border-radius-base: $gl-spacing-scale-2;
404$gl-border-radius-large: $gl-spacing-scale-3;
405$gl-border-radius-6: $gl-spacing-scale-6;
406$gl-border-radius-7: $gl-spacing-scale-7;
407$gl-border-radius-full: 50%;
408
409// transition parameters
410$gl-transition-duration-slow: 0.4s;
411$gl-transition-duration-medium: 0.2s;
412
413// Focus ring
414$focus-ring: 0 0 0 $gl-border-size-1 rgba($white, 0.4),
415 0 0 0 $gl-border-size-4 rgba($blue-500, 0.48);
416$focus-ring-inset: inset 0 0 0 $gl-border-size-3 rgba($blue-500, 0.48),
417 inset 0 0 0 $gl-border-size-4 rgba($white, 0.4);
418
419// Toasts
420$toast-max-width: px-to-rem(586px);
421$toast-padding-right: px-to-rem(42px);
422$toast-background-color: #303030;
423
424// Chart tooltip
425$chart-tooltip-max-width: px-to-rem(512px);
426
427$gl-icon-chevron-left: 'data:image/svg+xml;utf8,<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path fill-rule="evenodd" d="M5.293 7.293a1 1 0 0 0 0 1.414l3 3a1 1 0 0 0 1.414-1.414L7.414 8l2.293-2.293a1 1 0 0 0-1.414-1.414l-3 3z"/></svg>';
428$gl-icon-chevron-right: 'data:image/svg+xml;utf8,<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path fill-rule="evenodd" d="M10.707 7.293a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414L8.586 8 6.293 5.707a1 1 0 0 1 1.414-1.414l3 3z"/></svg>';
429$gl-icon-chevron-down: 'data:image/svg+xml;utf8,<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path fill-rule="evenodd" d="M7.293 10.707a1 1 0 0 0 1.414 0l3-3a1 1 0 0 0-1.414-1.414L8 8.586 5.707 6.293a1 1 0 0 0-1.414 1.414l3 3z"/></svg>';
430
431// Icons
432$default-icon-size: px-to-rem(16px);
433$gl-icon-sizes: 8 12 14 16 24 32 48 72;
434
435// Dropdowns
436$gl-dropdown-width: px-to-rem(240px);
437$gl-dropdown-width-narrow: px-to-rem(160px);
438$gl-dropdown-width-wide: px-to-rem(400px);
439$gl-max-dropdown-max-height: px-to-rem(312px);
440
441// Broadcast messages
442$gl-broadcast-message-text-max-width: px-to-rem(934px);
443
444// Modal Widths
445$gl-modal-small-width: px-to-rem(512px);
446$gl-modal-medium-width: px-to-rem(768px);
447$gl-modal-large-width: px-to-rem(990px);
448
449// Modal bootstrap variables
450$modal-header-border-color: $gray-200;
451$modal-footer-border-color: $gray-200;
452$modal-title-line-height: $gl-line-height-20;
453$modal-backdrop: #000;
454$modal-backdrop-opacity: 0.64;
455
456// Bootstrap overrides
457// these should ideally be moved further up in the file to the compoent-relevant sections
458// but they can wait here for now
459$body-color: $gl-text-color !default;
460
461$secondary: $gray-50;
462$success: $green-500;
463$info: $blue-500;
464$warning: $orange-500;
465$danger: $red-500;
466
467$font-weight-bold: $gl-font-weight-bold;
468
469$font-family-sans-serif: $gl-regular-font;
470$font-family-monospace: $gl-monospace-font;
471
472$h1-font-size: $gl-font-size * 2.5;
473$h2-font-size: $gl-font-size * 2;
474$h3-font-size: $gl-font-size * 1.75;
475$h4-font-size: $gl-font-size * 1.5;
476$h5-font-size: $gl-font-size * 1.25;
477$h6-font-size: $gl-font-size;
478
479$spacer: $grid-size;
480$spacers: (
481 1: $gl-spacing-scale-2,
482 2: $gl-spacing-scale-3,
483 3: $gl-spacing-scale-5,
484 4: $gl-spacing-scale-6,
485 5: $gl-spacing-scale-7,
486 6: $gl-spacing-scale-8,
487 7: $gl-spacing-scale-9,
488 8: $gl-spacing-scale-10,
489 9: $gl-spacing-scale-11,
490);
491
492$table-accent-bg: $gray-50;
493$card-border-color: $gray-100;
494$card-cap-bg: $gray-10 !default;
495
496// Form input sizes
497$gl-form-input-sizes: (
498 xs: $grid-size * 10,
499 sm: $grid-size * 20,
500 md: $grid-size * 30,
501 lg: $grid-size * 40,
502 xl: $grid-size * 70,
503);
504
505$popover-bg: $white !default;
506$popover-arrow-width: 0.5rem;
507$popover-arrow-height: 0.25rem;
508$popover-arrow-color: $popover-bg;
509$popover-arrow-outer-color: $gray-100;
510
511$tooltip-opacity: 1;