bootstrap-rn 0.4.1 → 0.4.3

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.
@@ -1,1414 +1,1420 @@
1
- import { Platform } from 'react-native';
2
- import css from '../style/css';
3
- import { calculate } from '../style/math';
4
- import { shadeColor, tintColor, shiftColor, add, subtract } from './functions';
5
- import type { ThemeVariables } from '../types';
6
-
7
- const url =
8
- (val: string) =>
9
- (t: ThemeVariables): string =>
10
- `url("${val.replace(/#{\$(.*?)}/g, (_, key) => t[key])}")`;
11
-
12
- const variables = css`
13
- // Color system
14
-
15
- $white: #fff;
16
- $gray-100: #f8f9fa;
17
- $gray-200: #e9ecef;
18
- $gray-300: #dee2e6;
19
- $gray-400: #ced4da;
20
- $gray-500: #adb5bd;
21
- $gray-600: #6c757d;
22
- $gray-700: #495057;
23
- $gray-800: #343a40;
24
- $gray-900: #212529;
25
- $black: #000;
26
-
27
- $grays: ${(t: ThemeVariables) => ({
28
- 100: t['gray-100'],
29
- 200: t['gray-200'],
30
- 300: t['gray-300'],
31
- 400: t['gray-400'],
32
- 500: t['gray-500'],
33
- 600: t['gray-600'],
34
- 700: t['gray-700'],
35
- 800: t['gray-800'],
36
- 900: t['gray-900'],
37
- })};
38
-
39
- $blue: #0d6efd;
40
- $indigo: #6610f2;
41
- $purple: #6f42c1;
42
- $pink: #d63384;
43
- $red: #dc3545;
44
- $orange: #fd7e14;
45
- $yellow: #ffc107;
46
- $green: #198754;
47
- $teal: #20c997;
48
- $cyan: #0dcaf0;
49
-
50
- $colors: ${(t: ThemeVariables) => ({
51
- blue: t.blue,
52
- indigo: t.indigo,
53
- purple: t.purple,
54
- pink: t.pink,
55
- red: t.red,
56
- orange: t.orange,
57
- yellow: t.yellow,
58
- green: t.green,
59
- teal: t.teal,
60
- cyan: t.cyan,
61
- })};
62
-
63
- $primary: $blue;
64
- $secondary: $gray-600;
65
- $success: $green;
66
- $info: $cyan;
67
- $warning: $yellow;
68
- $danger: $red;
69
- $light: $gray-100;
70
- $dark: $gray-900;
71
-
72
- $theme-colors: ${(t: ThemeVariables) => ({
73
- primary: t.primary,
74
- secondary: t.secondary,
75
- success: t.success,
76
- info: t.info,
77
- warning: t.warning,
78
- danger: t.danger,
79
- light: t.light,
80
- dark: t.dark,
81
- })};
82
-
83
- // The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
84
- // See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
85
- $min-contrast-ratio: 4.5;
86
-
87
- // Customize the light and dark text colors for use in our color contrast function.
88
- $color-contrast-dark: $black;
89
- $color-contrast-light: $white;
90
-
91
- $blue-100: tint-color($blue, 80%);
92
- $blue-200: tint-color($blue, 60%);
93
- $blue-300: tint-color($blue, 40%);
94
- $blue-400: tint-color($blue, 20%);
95
- $blue-500: $blue;
96
- $blue-600: shade-color($blue, 20%);
97
- $blue-700: shade-color($blue, 40%);
98
- $blue-800: shade-color($blue, 60%);
99
- $blue-900: shade-color($blue, 80%);
100
-
101
- $indigo-100: tint-color($indigo, 80%);
102
- $indigo-200: tint-color($indigo, 60%);
103
- $indigo-300: tint-color($indigo, 40%);
104
- $indigo-400: tint-color($indigo, 20%);
105
- $indigo-500: $indigo;
106
- $indigo-600: shade-color($indigo, 20%);
107
- $indigo-700: shade-color($indigo, 40%);
108
- $indigo-800: shade-color($indigo, 60%);
109
- $indigo-900: shade-color($indigo, 80%);
110
-
111
- $purple-100: tint-color($purple, 80%);
112
- $purple-200: tint-color($purple, 60%);
113
- $purple-300: tint-color($purple, 40%);
114
- $purple-400: tint-color($purple, 20%);
115
- $purple-500: $purple;
116
- $purple-600: shade-color($purple, 20%);
117
- $purple-700: shade-color($purple, 40%);
118
- $purple-800: shade-color($purple, 60%);
119
- $purple-900: shade-color($purple, 80%);
120
-
121
- $pink-100: tint-color($pink, 80%);
122
- $pink-200: tint-color($pink, 60%);
123
- $pink-300: tint-color($pink, 40%);
124
- $pink-400: tint-color($pink, 20%);
125
- $pink-500: $pink;
126
- $pink-600: shade-color($pink, 20%);
127
- $pink-700: shade-color($pink, 40%);
128
- $pink-800: shade-color($pink, 60%);
129
- $pink-900: shade-color($pink, 80%);
130
-
131
- $red-100: tint-color($red, 80%);
132
- $red-200: tint-color($red, 60%);
133
- $red-300: tint-color($red, 40%);
134
- $red-400: tint-color($red, 20%);
135
- $red-500: $red;
136
- $red-600: shade-color($red, 20%);
137
- $red-700: shade-color($red, 40%);
138
- $red-800: shade-color($red, 60%);
139
- $red-900: shade-color($red, 80%);
140
-
141
- $orange-100: tint-color($orange, 80%);
142
- $orange-200: tint-color($orange, 60%);
143
- $orange-300: tint-color($orange, 40%);
144
- $orange-400: tint-color($orange, 20%);
145
- $orange-500: $orange;
146
- $orange-600: shade-color($orange, 20%);
147
- $orange-700: shade-color($orange, 40%);
148
- $orange-800: shade-color($orange, 60%);
149
- $orange-900: shade-color($orange, 80%);
150
-
151
- $yellow-100: tint-color($yellow, 80%);
152
- $yellow-200: tint-color($yellow, 60%);
153
- $yellow-300: tint-color($yellow, 40%);
154
- $yellow-400: tint-color($yellow, 20%);
155
- $yellow-500: $yellow;
156
- $yellow-600: shade-color($yellow, 20%);
157
- $yellow-700: shade-color($yellow, 40%);
158
- $yellow-800: shade-color($yellow, 60%);
159
- $yellow-900: shade-color($yellow, 80%);
160
-
161
- $green-100: tint-color($green, 80%);
162
- $green-200: tint-color($green, 60%);
163
- $green-300: tint-color($green, 40%);
164
- $green-400: tint-color($green, 20%);
165
- $green-500: $green;
166
- $green-600: shade-color($green, 20%);
167
- $green-700: shade-color($green, 40%);
168
- $green-800: shade-color($green, 60%);
169
- $green-900: shade-color($green, 80%);
170
-
171
- $teal-100: tint-color($teal, 80%);
172
- $teal-200: tint-color($teal, 60%);
173
- $teal-300: tint-color($teal, 40%);
174
- $teal-400: tint-color($teal, 20%);
175
- $teal-500: $teal;
176
- $teal-600: shade-color($teal, 20%);
177
- $teal-700: shade-color($teal, 40%);
178
- $teal-800: shade-color($teal, 60%);
179
- $teal-900: shade-color($teal, 80%);
180
-
181
- $cyan-100: tint-color($cyan, 80%);
182
- $cyan-200: tint-color($cyan, 60%);
183
- $cyan-300: tint-color($cyan, 40%);
184
- $cyan-400: tint-color($cyan, 20%);
185
- $cyan-500: $cyan;
186
- $cyan-600: shade-color($cyan, 20%);
187
- $cyan-700: shade-color($cyan, 40%);
188
- $cyan-800: shade-color($cyan, 60%);
189
- $cyan-900: shade-color($cyan, 80%);
190
-
191
- $blues: ${(t: ThemeVariables) => ({
192
- 'blue-100': t['blue-100'],
193
- 'blue-200': t['blue-200'],
194
- 'blue-300': t['blue-300'],
195
- 'blue-400': t['blue-400'],
196
- 'blue-500': t['blue-500'],
197
- 'blue-600': t['blue-600'],
198
- 'blue-700': t['blue-700'],
199
- 'blue-800': t['blue-800'],
200
- 'blue-900': t['blue-900'],
201
- })};
202
-
203
- $indigos: ${(t: ThemeVariables) => ({
204
- 'indigo-100': t['indigo-100'],
205
- 'indigo-200': t['indigo-200'],
206
- 'indigo-300': t['indigo-300'],
207
- 'indigo-400': t['indigo-400'],
208
- 'indigo-500': t['indigo-500'],
209
- 'indigo-600': t['indigo-600'],
210
- 'indigo-700': t['indigo-700'],
211
- 'indigo-800': t['indigo-800'],
212
- 'indigo-900': t['indigo-900'],
213
- })};
214
-
215
- $purples: ${(t: ThemeVariables) => ({
216
- 'purple-100': t['purple-100'],
217
- 'purple-200': t['purple-200'],
218
- 'purple-300': t['purple-300'],
219
- 'purple-400': t['purple-400'],
220
- 'purple-500': t['purple-500'],
221
- 'purple-600': t['purple-600'],
222
- 'purple-700': t['purple-700'],
223
- 'purple-800': t['purple-800'],
224
- 'purple-900': t['purple-900'],
225
- })};
226
-
227
- $pinks: ${(t: ThemeVariables) => ({
228
- 'pink-100': t['pink-100'],
229
- 'pink-200': t['pink-200'],
230
- 'pink-300': t['pink-300'],
231
- 'pink-400': t['pink-400'],
232
- 'pink-500': t['pink-500'],
233
- 'pink-600': t['pink-600'],
234
- 'pink-700': t['pink-700'],
235
- 'pink-800': t['pink-800'],
236
- 'pink-900': t['pink-900'],
237
- })};
238
-
239
- $reds: ${(t: ThemeVariables) => ({
240
- 'red-100': t['red-100'],
241
- 'red-200': t['red-200'],
242
- 'red-300': t['red-300'],
243
- 'red-400': t['red-400'],
244
- 'red-500': t['red-500'],
245
- 'red-600': t['red-600'],
246
- 'red-700': t['red-700'],
247
- 'red-800': t['red-800'],
248
- 'red-900': t['red-900'],
249
- })};
250
-
251
- $oranges: ${(t: ThemeVariables) => ({
252
- 'orange-100': t['orange-100'],
253
- 'orange-200': t['orange-200'],
254
- 'orange-300': t['orange-300'],
255
- 'orange-400': t['orange-400'],
256
- 'orange-500': t['orange-500'],
257
- 'orange-600': t['orange-600'],
258
- 'orange-700': t['orange-700'],
259
- 'orange-800': t['orange-800'],
260
- 'orange-900': t['orange-900'],
261
- })};
262
-
263
- $yellows: ${(t: ThemeVariables) => ({
264
- 'yellow-100': t['yellow-100'],
265
- 'yellow-200': t['yellow-200'],
266
- 'yellow-300': t['yellow-300'],
267
- 'yellow-400': t['yellow-400'],
268
- 'yellow-500': t['yellow-500'],
269
- 'yellow-600': t['yellow-600'],
270
- 'yellow-700': t['yellow-700'],
271
- 'yellow-800': t['yellow-800'],
272
- 'yellow-900': t['yellow-900'],
273
- })};
274
-
275
- $greens: ${(t: ThemeVariables) => ({
276
- 'green-100': t['green-100'],
277
- 'green-200': t['green-200'],
278
- 'green-300': t['green-300'],
279
- 'green-400': t['green-400'],
280
- 'green-500': t['green-500'],
281
- 'green-600': t['green-600'],
282
- 'green-700': t['green-700'],
283
- 'green-800': t['green-800'],
284
- 'green-900': t['green-900'],
285
- })};
286
-
287
- $teals: ${(t: ThemeVariables) => ({
288
- 'teal-100': t['teal-100'],
289
- 'teal-200': t['teal-200'],
290
- 'teal-300': t['teal-300'],
291
- 'teal-400': t['teal-400'],
292
- 'teal-500': t['teal-500'],
293
- 'teal-600': t['teal-600'],
294
- 'teal-700': t['teal-700'],
295
- 'teal-800': t['teal-800'],
296
- 'teal-900': t['teal-900'],
297
- })};
298
-
299
- $cyans: ${(t: ThemeVariables) => ({
300
- 'cyan-100': t['cyan-100'],
301
- 'cyan-200': t['cyan-200'],
302
- 'cyan-300': t['cyan-300'],
303
- 'cyan-400': t['cyan-400'],
304
- 'cyan-500': t['cyan-500'],
305
- 'cyan-600': t['cyan-600'],
306
- 'cyan-700': t['cyan-700'],
307
- 'cyan-800': t['cyan-800'],
308
- 'cyan-900': t['cyan-900'],
309
- })};
310
-
311
- // Characters which are escaped by the escape-svg function
312
- // $escaped characters
313
-
314
- // Options
315
- //
316
- // Quickly modify global styling by enabling or disabling optional features.
317
-
318
- // NOTE: Handled by JavaScript.
319
-
320
- // Gradient
321
- //
322
- // The gradient which is added to components if "$enable-gradients" is "true"
323
- // This gradient is also added to elements with ".bg-gradient"
324
- $gradient: linear-gradient(180deg, rgba($white, 0.15), rgba($white, 0));
325
-
326
- // Spacing
327
- //
328
- // Control the default styling of most Bootstrap elements by modifying these
329
- // variables. Mostly focused on spacing.
330
- // You can add more entries to the $spacers map, should you need more variation.
331
-
332
- $spacer: 1rem;
333
- $spacers: ${(t: ThemeVariables) => ({
334
- 0: '0px',
335
- 1: `${t.spacer} * 0.25`,
336
- 2: `${t.spacer} * 0.5`,
337
- 3: t.spacer,
338
- 4: `${t.spacer} * 1.5`,
339
- 5: `${t.spacer} * 3`,
340
- })};
341
-
342
- // Position
343
- //
344
- // Define the edge positioning anchors of the position utilities.
345
-
346
- $position-values: ${() => ({
347
- 0: '0px',
348
- 50: '50%',
349
- 100: '100%',
350
- })};
351
-
352
- // Placeholder
353
-
354
- $placeholder-opacity-max: 0.5;
355
- $placeholder-opacity-min: 0.2;
356
-
357
- // Body
358
- //
359
- // Settings for the "<body>" element.
360
-
361
- $body-bg: $white;
362
- $body-color: $gray-900;
363
- $body-text-align: null;
364
-
365
- // Links
366
- //
367
- // Style anchor elements.
368
-
369
- $link-color: $primary;
370
- $link-decoration: underline;
371
- $link-shade-percentage: 20%;
372
- $link-hover-color: ${shiftColor(
373
- (t: ThemeVariables) => t['link-color'],
374
- (t: ThemeVariables) => t['link-shade-percentage'],
375
- )};
376
- $link-hover-decoration: null;
377
-
378
- $stretched-link-pseudo-element: after;
379
- $stretched-link-z-index: 1;
380
-
381
- // Paragraphs
382
- //
383
- // Style p element.
384
-
385
- $paragraph-margin-bottom: 1rem;
386
-
387
- // Grid breakpoints
388
- //
389
- // Define the minimum dimensions at which your layout will change,
390
- // adapting to different screen sizes, for use in media queries.
391
-
392
- $grid-breakpoints: ${() => ({
393
- xs: 0,
394
- sm: 576,
395
- md: 768,
396
- lg: 992,
397
- xl: 1200,
398
- xxl: 1400,
399
- })};
400
-
401
- // Grid containers
402
- //
403
- // Define the maximum width of ".container" for different screen sizes.
404
-
405
- $container-max-widths: ${() => ({
406
- sm: '540px',
407
- md: '720px',
408
- lg: '960px',
409
- xl: '1140px',
410
- xxl: '1320px',
411
- })};
412
-
413
- // Grid columns
414
- //
415
- // Set the number of columns and specify the width of the gutters.
416
-
417
- // $grid-columns: 12;
418
- $grid-gutter-width: 1.5rem;
419
- // $grid-row-columns: 6;
420
-
421
- // Container padding
422
-
423
- $container-padding-x: $grid-gutter-width * 0.5;
424
-
425
- // Components
426
- //
427
- // Define common padding and border radius sizes and more.
428
-
429
- $border-width: 1px;
430
- $border-widths: ${() => ({
431
- 1: '1px',
432
- 2: '2px',
433
- 3: '3px',
434
- 4: '4px',
435
- 5: '5px',
436
- })};
437
-
438
- $border-color: $gray-300;
439
-
440
- $border-radius: 0.25rem;
441
- $border-radius-sm: 0.2rem;
442
- $border-radius-lg: 0.3rem;
443
- $border-radius-pill: 50rem;
444
-
445
- $box-shadow: 0 0.5rem 1rem rgba($black, 0.15);
446
- $box-shadow-sm: 0 0.125rem 0.25rem rgba($black, 0.075);
447
- $box-shadow-lg: 0 1rem 3rem rgba($black, 0.175);
448
- $box-shadow-inset: inset 0 1px 2px rgba($black, 0.075);
449
-
450
- $component-active-color: $white;
451
- $component-active-bg: $primary;
452
-
453
- $caret-width: 1rem * 0.3; // 0.3em;
454
- $caret-vertical-align: $caret-width * 0.85;
455
- $caret-spacing: $caret-width * 0.85;
456
-
457
- $transition-base: all 0.2s ease-in-out;
458
- $transition-fade: opacity 0.15s linear;
459
- $transition-collapse: height 0.35s ease;
460
- $transition-collapse-width: width 0.35s ease;
461
-
462
- $aspect-ratios: ${() => ({
463
- '1x1': '100%',
464
- '4x3': 'calc(3 / 4 * 100%)',
465
- '16x9': 'calc(9 / 16 * 100%)',
466
- '21x9': 'calc(9 / 21 * 100%)',
467
- })};
468
-
469
- // Typography
470
- //
471
- // Font, line-height, and color for body text, headings, and more.
472
-
473
- $font-family-sans-serif: ${() =>
474
- Platform.select({
475
- native: 'System',
476
- default:
477
- "\"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'\"",
478
- })};
479
- $font-family-monospace: ${() =>
480
- Platform.select({
481
- android: 'monospace',
482
- ios: 'Courier New',
483
- default:
484
- "\"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\"",
485
- })};
486
- $font-family-base: $font-family-sans-serif;
487
- $font-family-code: $font-family-monospace;
488
-
489
- // $font-size-root affects the value of "rem", which is used for as well font sizes, paddings, and margins
490
- // $font-size-base affects the font size of the body text
491
- $font-size-root: null;
492
- $font-size-base: 1rem; // Assumes the browser default, typically "16px"
493
- $font-size-sm: $font-size-base * 0.875;
494
- $font-size-lg: $font-size-base * 1.25;
495
-
496
- $font-weight-lighter: 300; // lighter;
497
- $font-weight-light: 300;
498
- $font-weight-normal: 400;
499
- $font-weight-bold: 700;
500
- $font-weight-bolder: 500; // bolder;
501
-
502
- $font-weight-base: $font-weight-normal;
503
-
504
- $line-height-base: 1.5;
505
- $line-height-sm: 1.25;
506
- $line-height-lg: 2;
507
-
508
- $h1-font-size: $font-size-base * 2.5;
509
- $h2-font-size: $font-size-base * 2;
510
- $h3-font-size: $font-size-base * 1.75;
511
- $h4-font-size: $font-size-base * 1.5;
512
- $h5-font-size: $font-size-base * 1.25;
513
- $h6-font-size: $font-size-base;
514
-
515
- $font-sizes: ${(t: ThemeVariables) => ({
516
- 1: t['h1-font-size'],
517
- 2: t['h2-font-size'],
518
- 3: t['h3-font-size'],
519
- 4: t['h4-font-size'],
520
- 5: t['h5-font-size'],
521
- 6: t['h6-font-size'],
522
- })};
523
-
524
- $headings-margin-bottom: $spacer * 0.5;
525
- $headings-font-family: null;
526
- $headings-font-style: null;
527
- $headings-font-weight: 500;
528
- $headings-line-height: 1.2;
529
- $headings-color: null;
530
-
531
- $display-font-sizes: ${() => ({
532
- 1: '5rem',
533
- 2: '4.5rem',
534
- 3: '4rem',
535
- 4: '3.5rem',
536
- 5: '3rem',
537
- 6: '2.5rem',
538
- })};
539
-
540
- $display-font-weight: 300;
541
- $display-line-height: $headings-line-height;
542
-
543
- $lead-font-size: $font-size-base * 1.25;
544
- $lead-font-weight: 300;
545
-
546
- $small-font-size: $font-size-base * 0.875; // 0.875em;
547
-
548
- $sub-sup-font-size: $font-size-base * 0.75; // 0.75em;
549
-
550
- $text-muted: $gray-600;
551
-
552
- $initialism-font-size: $small-font-size;
553
-
554
- $blockquote-margin-y: $spacer;
555
- $blockquote-font-size: $font-size-base * 1.25;
556
- $blockquote-footer-color: $gray-600;
557
- $blockquote-footer-font-size: $small-font-size;
558
-
559
- $hr-margin-y: $spacer;
560
- $hr-color: inherit;
561
- $hr-bg-color: currentColor;
562
- $hr-border-width: 0;
563
- $hr-height: $border-width;
564
- $hr-opacity: 0.25;
565
-
566
- $legend-margin-bottom: 0.5rem;
567
- $legend-font-size: 1.5rem;
568
- $legend-font-weight: null;
569
-
570
- $mark-padding: $font-size-base * 0.2; // 0.2em;
571
-
572
- $dt-font-weight: $font-weight-bold;
573
-
574
- $nested-kbd-font-weight: $font-weight-bold;
575
-
576
- $list-inline-padding: 0.5rem;
577
-
578
- $mark-bg: #fcf8e3;
579
-
580
- // ...
581
-
582
- // Buttons + Forms
583
- //
584
- // Shared variables that are reassigned to "$input-" and "$btn-" specific variables.
585
-
586
- $input-btn-padding-y: 0.375rem;
587
- $input-btn-padding-x: 0.75rem;
588
- $input-btn-font-family: null;
589
- $input-btn-font-size: $font-size-base;
590
- $input-btn-line-height: $line-height-base;
591
-
592
- $input-btn-focus-width: 0.25rem;
593
- $input-btn-focus-color-opacity: 0.25;
594
- $input-btn-focus-color: rgba(
595
- $component-active-bg,
596
- $input-btn-focus-color-opacity
597
- );
598
- $input-btn-focus-blur: 0;
599
- $input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width
600
- $input-btn-focus-color;
601
-
602
- $input-btn-padding-y-sm: 0.25rem;
603
- $input-btn-padding-x-sm: 0.5rem;
604
- $input-btn-font-size-sm: $font-size-sm;
605
-
606
- $input-btn-padding-y-lg: 0.5rem;
607
- $input-btn-padding-x-lg: 1rem;
608
- $input-btn-font-size-lg: $font-size-lg;
609
-
610
- $input-btn-border-width: $border-width;
611
-
612
- // Buttons
613
- //
614
- // For each of Bootstrap's buttons, define text, background, and border color.
615
-
616
- $btn-padding-y: $input-btn-padding-y;
617
- $btn-padding-x: $input-btn-padding-x;
618
- $btn-font-family: $input-btn-font-family;
619
- $btn-font-size: $input-btn-font-size;
620
- $btn-line-height: $input-btn-line-height;
621
- $btn-white-space: null; // Set to "nowrap" to prevent text wrapping
622
-
623
- $btn-padding-y-sm: $input-btn-padding-y-sm;
624
- $btn-padding-x-sm: $input-btn-padding-x-sm;
625
- $btn-font-size-sm: $input-btn-font-size-sm;
626
-
627
- $btn-padding-y-lg: $input-btn-padding-y-lg;
628
- $btn-padding-x-lg: $input-btn-padding-x-lg;
629
- $btn-font-size-lg: $input-btn-font-size-lg;
630
-
631
- $btn-border-width: $input-btn-border-width;
632
-
633
- $btn-font-weight: $font-weight-normal;
634
- $btn-box-shadow:
635
- inset 0 1px 0 rgba($white, 0.15),
636
- 0 1px 1px rgba($black, 0.075);
637
- $btn-focus-width: $input-btn-focus-width;
638
- $btn-focus-box-shadow: $input-btn-focus-box-shadow;
639
- $btn-disabled-opacity: 0.65;
640
- $btn-active-box-shadow: inset 0 3px 5px rgba($black, 0.125);
641
-
642
- $btn-link-color: $link-color;
643
- $btn-link-hover-color: $link-hover-color;
644
- $btn-link-disabled-color: $gray-600;
645
-
646
- // Allows for customizing button radius independently from global border radius
647
- $btn-border-radius: $border-radius;
648
- $btn-border-radius-sm: $border-radius-sm;
649
- $btn-border-radius-lg: $border-radius-lg;
650
-
651
- $btn-transition:
652
- color 0.15s ease-in-out,
653
- background-color 0.15s ease-in-out,
654
- border-color 0.15s ease-in-out,
655
- box-shadow 0.15s ease-in-out;
656
-
657
- $btn-hover-bg-shade-amount: 15%;
658
- $btn-hover-bg-tint-amount: 15%;
659
- $btn-hover-border-shade-amount: 20%;
660
- $btn-hover-border-tint-amount: 10%;
661
- $btn-active-bg-shade-amount: 20%;
662
- $btn-active-bg-tint-amount: 20%;
663
- $btn-active-border-shade-amount: 25%;
664
- $btn-active-border-tint-amount: 10%;
665
-
666
- // Breadcrumb
667
-
668
- $breadcrumb-font-size: $font-size-base; // null;
669
- $breadcrumb-padding-y: 0;
670
- $breadcrumb-padding-x: 0;
671
- $breadcrumb-item-padding-x: 0.5rem;
672
- $breadcrumb-margin-bottom: 1rem;
673
- $breadcrumb-bg: null;
674
- $breadcrumb-divider-color: $gray-600;
675
- $breadcrumb-active-color: $gray-600;
676
- $breadcrumb-divider: ${() => '/'}; // quote('/');
677
- $breadcrumb-divider-flipped: $breadcrumb-divider;
678
- $breadcrumb-border-radius: null;
679
-
680
- // Forms
681
-
682
- $form-text-margin-top: 0.25rem;
683
- $form-text-font-size: $small-font-size;
684
- $form-text-font-style: null;
685
- $form-text-font-weight: null;
686
- $form-text-color: $text-muted;
687
-
688
- $form-label-margin-bottom: 0.5rem;
689
- $form-label-font-size: $font-size-base; // null;
690
- $form-label-font-style: null;
691
- $form-label-font-weight: null;
692
- $form-label-color: null;
693
-
694
- $input-padding-y: $input-btn-padding-y;
695
- $input-padding-x: $input-btn-padding-x;
696
- $input-font-family: $input-btn-font-family;
697
- $input-font-size: $input-btn-font-size;
698
- $input-font-weight: $font-weight-base;
699
- $input-line-height: $input-btn-line-height;
700
-
701
- $input-padding-y-sm: $input-btn-padding-y-sm;
702
- $input-padding-x-sm: $input-btn-padding-x-sm;
703
- $input-font-size-sm: $input-btn-font-size-sm;
704
-
705
- $input-padding-y-lg: $input-btn-padding-y-lg;
706
- $input-padding-x-lg: $input-btn-padding-x-lg;
707
- $input-font-size-lg: $input-btn-font-size-lg;
708
-
709
- $input-bg: $body-bg;
710
- $input-disabled-bg: $gray-200;
711
- $input-disabled-border-color: null;
712
-
713
- $input-color: $body-color;
714
- $input-border-color: $gray-400;
715
- $input-border-width: $input-btn-border-width;
716
- $input-box-shadow: $box-shadow-inset;
717
-
718
- $input-border-radius: $border-radius;
719
- $input-border-radius-sm: $border-radius-sm;
720
- $input-border-radius-lg: $border-radius-lg;
721
-
722
- $input-focus-bg: $input-bg;
723
- $input-focus-border-color: ${tintColor(
724
- (t: ThemeVariables) => t['component-active-bg'],
725
- 0.5,
726
- )};
727
- $input-focus-color: $input-color;
728
- $input-focus-width: $input-btn-focus-width;
729
- $input-focus-box-shadow: $input-btn-focus-box-shadow;
730
-
731
- $input-placeholder-color: $gray-600;
732
- $input-plaintext-color: $body-color;
733
-
734
- $input-height-border: $input-border-width * 2;
735
-
736
- $input-height-inner: ${add(
737
- (t: ThemeVariables) => calculate(t['input-line-height'], '*', 1),
738
- (t: ThemeVariables) => calculate(t['input-padding-y'], '*', 2),
739
- )};
740
- $input-height-inner-half: ${add(
741
- (t: ThemeVariables) => calculate(t['input-line-height'], '*', 0.5),
742
- (t: ThemeVariables) => t['input-padding-y'],
743
- )};
744
- $input-height-inner-quarter: ${add(
745
- (t: ThemeVariables) => calculate(t['input-line-height'], '*', 0.25),
746
- (t: ThemeVariables) => calculate(t['input-padding-y'], '*', 0.5),
747
- )};
748
-
749
- $input-height: ${add(
750
- (t: ThemeVariables) =>
751
- calculate(t['input-line-height'], '*', t['input-font-size']), // 1em
752
- add(
753
- (t: ThemeVariables) => calculate(t['input-padding-y'], '*', 2),
754
- (t: ThemeVariables) => t['input-height-border'],
755
- ),
756
- )};
757
- $input-height-sm: ${add(
758
- (t: ThemeVariables) =>
759
- calculate(t['input-line-height'], '*', t['input-font-size-sm']), // 1em
760
- add(
761
- (t: ThemeVariables) => calculate(t['input-padding-y-sm'], '*', 2),
762
- (t: ThemeVariables) => t['input-height-border'],
763
- ),
764
- )};
765
- $input-height-lg: ${add(
766
- (t: ThemeVariables) =>
767
- calculate(t['input-line-height'], '*', t['input-font-size-lg']), // 1em
768
- add(
769
- (t: ThemeVariables) => calculate(t['input-padding-y-lg'], '*', 2),
770
- (t: ThemeVariables) => t['input-height-border'],
771
- ),
772
- )};
773
-
774
- $input-transition:
775
- border-color 0.15s ease-in-out,
776
- box-shadow 0.15s ease-in-out;
777
-
778
- $form-color-width: 3rem;
779
-
780
- $form-check-input-width: $font-size-base * 1; // 1em;
781
- $form-check-min-height: $font-size-base * $line-height-base;
782
- $form-check-padding-start: $form-check-input-width + 0.5rem; // 0.5em;
783
- $form-check-margin-bottom: 0.125rem;
784
- $form-check-label-color: null;
785
- $form-check-label-cursor: null;
786
- $form-check-transition: null;
787
-
788
- $form-check-input-active-filter: brightness(90%);
789
-
790
- $form-check-input-bg: $input-bg;
791
- $form-check-input-border: 1px solid rgba($black, 0.25);
792
- $form-check-input-border-radius: $font-size-base * 0.25; // 0.25em;
793
- $form-check-radio-border-radius: $form-check-input-width * 0.5; // 50%;
794
- $form-check-input-focus-border: $input-focus-border-color;
795
- $form-check-input-focus-box-shadow: $input-btn-focus-box-shadow;
796
-
797
- $form-check-input-checked-color: $component-active-color;
798
- $form-check-input-checked-bg-color: $component-active-bg;
799
- $form-check-input-checked-border-color: $form-check-input-checked-bg-color;
800
- $form-check-input-checked-bg-image: ${url(
801
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>",
802
- )};
803
- $form-check-radio-checked-bg-image: ${url(
804
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>",
805
- )};
806
-
807
- $form-check-input-indeterminate-color: $component-active-color;
808
- $form-check-input-indeterminate-bg-color: $component-active-bg;
809
- $form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color;
810
- $form-check-input-indeterminate-bg-image: ${url(
811
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>",
812
- )};
813
-
814
- $form-check-input-disabled-opacity: 0.5;
815
- $form-check-label-disabled-opacity: $form-check-input-disabled-opacity;
816
- $form-check-btn-check-disabled-opacity: $btn-disabled-opacity;
817
-
818
- $form-check-inline-margin-end: 1rem;
819
-
820
- $form-switch-color: rgba($black, 0.25);
821
- $form-switch-width: 2rem;
822
- $form-switch-padding-start: $form-switch-width + 0.5rem;
823
- $form-switch-bg-image: ${url(
824
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>",
825
- )};
826
- $form-switch-border-radius: $form-switch-width;
827
- $form-switch-transition: background-position 0.15s ease-in-out;
828
-
829
- $form-switch-focus-color: $input-focus-border-color;
830
- $form-switch-focus-bg-image: ${url(
831
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>",
832
- )};
833
-
834
- $form-switch-checked-color: $component-active-color;
835
- $form-switch-checked-bg-image: ${url(
836
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>",
837
- )};
838
- $form-switch-checked-bg-position: right center;
839
-
840
- $input-group-addon-padding-y: $input-padding-y;
841
- $input-group-addon-padding-x: $input-padding-x;
842
- $input-group-addon-font-weight: $input-font-weight;
843
- $input-group-addon-color: $input-color;
844
- $input-group-addon-bg: $gray-200;
845
- $input-group-addon-border-color: $input-border-color;
846
-
847
- $form-select-padding-y: $input-padding-y;
848
- $form-select-padding-x: $input-padding-x;
849
- $form-select-font-family: $input-font-family;
850
- $form-select-font-size: $input-font-size;
851
- $form-select-indicator-padding: $form-select-padding-x * 3; // Extra padding for background-image
852
- $form-select-font-weight: $input-font-weight;
853
- $form-select-line-height: $input-line-height;
854
- $form-select-color: $input-color;
855
- $form-select-bg: $input-bg;
856
- $form-select-disabled-color: null;
857
- $form-select-disabled-bg: $gray-200;
858
- $form-select-disabled-border-color: $input-disabled-border-color;
859
- $form-select-bg-position: right $form-select-padding-x center;
860
- $form-select-bg-size: 16px 12px; // In pixels because image dimensions
861
- $form-select-indicator-color: $gray-800;
862
- $form-select-indicator: ${url(
863
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>",
864
- )};
865
-
866
- $form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 +
867
- $form-select-indicator-padding;
868
- $form-select-feedback-icon-position: center right
869
- $form-select-indicator-padding;
870
- $form-select-feedback-icon-size: $input-height-inner-half
871
- $input-height-inner-half;
872
-
873
- $form-select-border-width: $input-border-width;
874
- $form-select-border-color: $input-border-color;
875
- $form-select-border-radius: $input-border-radius;
876
- $form-select-box-shadow: $box-shadow-inset;
877
-
878
- $form-select-focus-border-color: $input-focus-border-color;
879
- $form-select-focus-width: $input-focus-width;
880
- $form-select-focus-box-shadow: 0 0 0 $form-select-focus-width
881
- $input-btn-focus-color;
882
-
883
- $form-select-padding-y-sm: $input-padding-y-sm;
884
- $form-select-padding-x-sm: $input-padding-x-sm;
885
- $form-select-font-size-sm: $input-font-size-sm;
886
- $form-select-border-radius-sm: $input-border-radius-sm;
887
-
888
- $form-select-padding-y-lg: $input-padding-y-lg;
889
- $form-select-padding-x-lg: $input-padding-x-lg;
890
- $form-select-font-size-lg: $input-font-size-lg;
891
- $form-select-border-radius-lg: $input-border-radius-lg;
892
-
893
- $form-select-transition: $input-transition;
894
-
895
- $form-range-track-width: 100%;
896
- $form-range-track-height: 0.5rem;
897
- $form-range-track-cursor: pointer;
898
- $form-range-track-bg: $gray-300;
899
- $form-range-track-border-radius: 1rem;
900
- $form-range-track-box-shadow: $box-shadow-inset;
901
-
902
- $form-range-thumb-width: 1rem;
903
- $form-range-thumb-height: $form-range-thumb-width;
904
- $form-range-thumb-bg: $component-active-bg;
905
- $form-range-thumb-border: 0;
906
- $form-range-thumb-border-radius: 1rem;
907
- $form-range-thumb-box-shadow: 0 0.1rem 0.25rem rgba($black, 0.1);
908
- $form-range-thumb-focus-box-shadow:
909
- 0 0 0 1px $body-bg,
910
- $input-focus-box-shadow;
911
- $form-range-thumb-focus-box-shadow-width: $input-focus-width; // For focus box shadow issue in Edge
912
- $form-range-thumb-active-bg: tint-color($component-active-bg, 70%);
913
- $form-range-thumb-disabled-bg: $gray-500;
914
- $form-range-thumb-transition:
915
- background-color 0.15s ease-in-out,
916
- border-color 0.15s ease-in-out,
917
- box-shadow 0.15s ease-in-out;
918
-
919
- $form-file-button-color: $input-color;
920
- $form-file-button-bg: $input-group-addon-bg;
921
- $form-file-button-hover-bg: shade-color($form-file-button-bg, 5%);
922
-
923
- $form-floating-height: ${add(
924
- '3.5rem',
925
- (t: ThemeVariables) => t['input-height-border'],
926
- )};
927
- $form-floating-line-height: 1.25;
928
- $form-floating-padding-x: $input-padding-x;
929
- $form-floating-padding-y: 1rem;
930
- $form-floating-input-padding-t: 1.625rem;
931
- $form-floating-input-padding-b: 0.625rem;
932
- $form-floating-label-opacity: 0.65;
933
- $form-floating-label-transform: scale(0.85) translateY(-0.5rem)
934
- translateX(0.15rem);
935
- $form-floating-transition:
936
- opacity 0.1s ease-in-out,
937
- transform 0.1s ease-in-out;
938
-
939
- // Form validation
940
-
941
- $form-feedback-margin-top: $form-text-margin-top;
942
- $form-feedback-font-size: $form-text-font-size;
943
- $form-feedback-font-style: $form-text-font-style;
944
- $form-feedback-valid-color: $success;
945
- $form-feedback-invalid-color: $danger;
946
-
947
- $form-feedback-icon-valid-color: $form-feedback-valid-color;
948
- $form-feedback-icon-valid: ${url(
949
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>",
950
- )};
951
- $form-feedback-icon-invalid-color: $form-feedback-invalid-color;
952
- $form-feedback-icon-invalid: ${url(
953
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>",
954
- )};
955
-
956
- $form-validation-states: ${(t: ThemeVariables) => ({
957
- valid: {
958
- color: t['form-feedback-valid-color'],
959
- icon: t['form-feedback-icon-valid'],
960
- },
961
- invalid: {
962
- color: t['form-feedback-invalid-color'],
963
- icon: t['form-feedback-icon-invalid'],
964
- },
965
- })};
966
-
967
- // Z-index master list
968
- //
969
- // Warning: Avoid customizing these values. They're used for a bird's eye view
970
- // of components dependent on the z-axis and are designed to all work together.
971
-
972
- $zindex-dropdown: 1000;
973
- $zindex-sticky: 1020;
974
- $zindex-fixed: 1030;
975
- $zindex-offcanvas-backdrop: 1040;
976
- $zindex-offcanvas: 1045;
977
- $zindex-modal-backdrop: 1050;
978
- $zindex-modal: 1055;
979
- $zindex-popover: 1070;
980
- $zindex-tooltip: 1080;
981
-
982
- // Navs
983
-
984
- $nav-link-padding-y: 0.5rem;
985
- $nav-link-padding-x: 1rem;
986
- $nav-link-font-size: null;
987
- $nav-link-font-weight: null;
988
- $nav-link-color: $link-color;
989
- $nav-link-hover-color: $link-hover-color;
990
- $nav-link-transition:
991
- color 0.15s ease-in-out,
992
- background-color 0.15s ease-in-out,
993
- border-color 0.15s ease-in-out;
994
- $nav-link-disabled-color: $gray-600;
995
-
996
- $nav-tabs-border-color: $gray-300;
997
- $nav-tabs-border-width: $border-width;
998
- $nav-tabs-border-radius: $border-radius;
999
- $nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color;
1000
- $nav-tabs-link-active-color: $gray-700;
1001
- $nav-tabs-link-active-bg: $body-bg;
1002
- $nav-tabs-link-active-border-color: $gray-300 $gray-300
1003
- $nav-tabs-link-active-bg;
1004
-
1005
- $nav-pills-border-radius: $border-radius;
1006
- $nav-pills-link-active-color: $component-active-color;
1007
- $nav-pills-link-active-bg: $component-active-bg;
1008
-
1009
- // Navbar
1010
-
1011
- $navbar-padding-y: $spacer * 0.5;
1012
- $navbar-padding-x: null;
1013
-
1014
- $navbar-nav-link-padding-x: 0.5rem;
1015
-
1016
- $navbar-brand-font-size: $font-size-lg;
1017
-
1018
- $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y *
1019
- 2;
1020
- $navbar-brand-height: $navbar-brand-font-size * $line-height-base;
1021
- $navbar-brand-padding-y-intermediate-result: $nav-link-height -
1022
- $navbar-brand-height;
1023
- $navbar-brand-padding-y: $navbar-brand-padding-y-intermediate-result * 0.5;
1024
- $navbar-brand-margin-end: 1rem;
1025
-
1026
- $navbar-toggler-padding-y: 0.25rem;
1027
- $navbar-toggler-padding-x: 0.75rem;
1028
- $navbar-toggler-font-size: $font-size-lg;
1029
- $navbar-toggler-border-radius: $btn-border-radius;
1030
- $navbar-toggler-focus-width: $btn-focus-width;
1031
- $navbar-toggler-transition: box-shadow 0.15s ease-in-out;
1032
-
1033
- $navbar-dark-color: rgba($white, 0.55);
1034
- $navbar-dark-hover-color: rgba($white, 0.75);
1035
- $navbar-dark-active-color: $white;
1036
- $navbar-dark-disabled-color: rgba($white, 0.25);
1037
- $navbar-dark-toggler-icon-bg: ${url(
1038
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>",
1039
- )};
1040
- $navbar-dark-toggler-border-color: rgba($white, 0.1);
1041
-
1042
- $navbar-light-color: rgba($black, 0.55);
1043
- $navbar-light-hover-color: rgba($black, 0.7);
1044
- $navbar-light-active-color: rgba($black, 0.9);
1045
- $navbar-light-disabled-color: rgba($black, 0.3);
1046
- $navbar-light-toggler-icon-bg: ${url(
1047
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>",
1048
- )};
1049
- $navbar-light-toggler-border-color: rgba($black, 0.1);
1050
-
1051
- $navbar-light-brand-color: $navbar-light-active-color;
1052
- $navbar-light-brand-hover-color: $navbar-light-active-color;
1053
- $navbar-dark-brand-color: $navbar-dark-active-color;
1054
- $navbar-dark-brand-hover-color: $navbar-dark-active-color;
1055
-
1056
- // Dropdowns
1057
- //
1058
- // Dropdown menu container and contents.
1059
-
1060
- $dropdown-min-width: 10rem;
1061
- $dropdown-padding-x: 0;
1062
- $dropdown-padding-y: 0.5rem;
1063
- $dropdown-spacer: 0.125rem;
1064
- $dropdown-font-size: $font-size-base;
1065
- $dropdown-color: $body-color;
1066
- $dropdown-bg: $white;
1067
- $dropdown-border-color: rgba($black, 0.15);
1068
- $dropdown-border-radius: $border-radius;
1069
- $dropdown-border-width: $border-width;
1070
- $dropdown-inner-border-radius: ${subtract(
1071
- (t: ThemeVariables) => t['dropdown-border-radius'],
1072
- (t: ThemeVariables) => t['dropdown-border-width'],
1073
- )};
1074
- $dropdown-divider-bg: $dropdown-border-color;
1075
- $dropdown-divider-margin-y: $spacer * 0.5;
1076
- $dropdown-box-shadow: $box-shadow;
1077
-
1078
- $dropdown-link-color: $gray-900;
1079
-
1080
- $dropdown-link-hover-color: ${shadeColor(
1081
- (t: ThemeVariables) => t['dropdown-link-color'],
1082
- 0.1,
1083
- )};
1084
- $dropdown-link-hover-bg: $gray-200;
1085
-
1086
- $dropdown-link-active-color: $component-active-color;
1087
- $dropdown-link-active-bg: $component-active-bg;
1088
-
1089
- $dropdown-link-disabled-color: $gray-500;
1090
-
1091
- $dropdown-item-padding-y: $spacer * 0.25;
1092
- $dropdown-item-padding-x: $spacer;
1093
-
1094
- $dropdown-header-color: $gray-600;
1095
- $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x;
1096
-
1097
- $dropdown-dark-color: $gray-300;
1098
- $dropdown-dark-bg: $gray-800;
1099
- $dropdown-dark-border-color: $dropdown-border-color;
1100
- $dropdown-dark-divider-bg: $dropdown-divider-bg;
1101
- $dropdown-dark-box-shadow: null;
1102
- $dropdown-dark-link-color: $dropdown-dark-color;
1103
- $dropdown-dark-link-hover-color: $white;
1104
- $dropdown-dark-link-hover-bg: rgba($white, 0.15);
1105
- $dropdown-dark-link-active-color: $dropdown-link-active-color;
1106
- $dropdown-dark-link-active-bg: $dropdown-link-active-bg;
1107
- $dropdown-dark-link-disabled-color: $gray-500;
1108
- $dropdown-dark-header-color: $gray-500;
1109
-
1110
- // ...
1111
-
1112
- // Cards
1113
-
1114
- $card-spacer-y: $spacer;
1115
- $card-spacer-x: $spacer;
1116
- $card-title-spacer-y: $spacer * 0.5;
1117
- $card-border-width: $border-width;
1118
- $card-border-color: rgba($black, 0.125);
1119
- $card-border-radius: $border-radius;
1120
- $card-box-shadow: null;
1121
- $card-inner-border-radius: ${subtract(
1122
- (t: ThemeVariables) => t['card-border-radius'],
1123
- (t: ThemeVariables) => t['card-border-width'],
1124
- )};
1125
- $card-cap-padding-y: $card-spacer-y * 0.5;
1126
- $card-cap-padding-x: $card-spacer-x;
1127
- $card-cap-bg: rgba($black, 0.03);
1128
- $card-cap-color: null;
1129
- $card-height: null;
1130
- $card-color: null;
1131
- $card-bg: $white;
1132
- $card-img-overlay-padding: $spacer;
1133
- $card-group-margin: $grid-gutter-width * 0.5;
1134
-
1135
- // ...
1136
-
1137
- // Tooltips
1138
-
1139
- $tooltip-font-size: $font-size-sm;
1140
- $tooltip-max-width: 200px;
1141
- $tooltip-color: $white;
1142
- $tooltip-bg: $black;
1143
- $tooltip-border-radius: $border-radius;
1144
- $tooltip-opacity: 0.9;
1145
- $tooltip-padding-y: $spacer * 0.25;
1146
- $tooltip-padding-x: $spacer * 0.5;
1147
- $tooltip-margin: 0;
1148
-
1149
- $tooltip-arrow-width: 0.8rem;
1150
- $tooltip-arrow-height: 0.4rem;
1151
- $tooltip-arrow-color: $tooltip-bg;
1152
-
1153
- // Popovers
1154
-
1155
- $popover-font-size: $font-size-sm;
1156
- $popover-bg: $white;
1157
- $popover-max-width: 276px;
1158
- $popover-border-width: $border-width;
1159
- $popover-border-color: rgba($black, 0.2);
1160
- $popover-border-radius: $border-radius-lg;
1161
- $popover-inner-border-radius: ${subtract(
1162
- (t: ThemeVariables) => t['popover-border-radius'],
1163
- (t: ThemeVariables) => t['popover-border-width'],
1164
- )};
1165
- $popover-box-shadow: $box-shadow;
1166
-
1167
- $popover-header-bg: ${shadeColor(
1168
- (t: ThemeVariables) => t['popover-bg'],
1169
- 0.06,
1170
- )};
1171
- $popover-header-color: $headings-color;
1172
- $popover-header-padding-y: 0.5rem;
1173
- $popover-header-padding-x: $spacer;
1174
-
1175
- $popover-body-color: $body-color;
1176
- $popover-body-padding-y: $spacer;
1177
- $popover-body-padding-x: $spacer;
1178
-
1179
- $popover-arrow-width: 1rem;
1180
- $popover-arrow-height: 0.5rem;
1181
- $popover-arrow-color: $popover-bg;
1182
-
1183
- $popover-arrow-outer-color: $popover-border-color;
1184
-
1185
- // Toasts
1186
-
1187
- $toast-max-width: 350px;
1188
- $toast-padding-x: 0.75rem;
1189
- $toast-padding-y: 0.5rem;
1190
- $toast-font-size: 0.875rem;
1191
- $toast-color: null;
1192
- $toast-background-color: rgba($white, 0.85);
1193
- $toast-border-width: 1px;
1194
- $toast-border-color: rgba($black, 0.1);
1195
- $toast-border-radius: $border-radius;
1196
- $toast-box-shadow: $box-shadow;
1197
- $toast-spacing: $container-padding-x;
1198
-
1199
- $toast-header-color: $gray-600;
1200
- $toast-header-background-color: rgba($white, 0.85);
1201
- $toast-header-border-color: rgba($black, 0.05);
1202
-
1203
- // Badges
1204
-
1205
- $badge-font-size: $font-size-base * 0.75; // 0.75em;
1206
- $badge-font-weight: $font-weight-bold;
1207
- $badge-color: $white;
1208
- $badge-padding-y: $badge-font-size * 0.35; // 0.35em;
1209
- $badge-padding-x: $badge-font-size * 0.65; // 0.65em;
1210
- $badge-border-radius: $border-radius;
1211
-
1212
- // Modals
1213
-
1214
- $modal-inner-padding: $spacer;
1215
-
1216
- $modal-footer-margin-between: 0.5rem;
1217
-
1218
- $modal-dialog-margin: 0.5rem;
1219
- $modal-dialog-margin-y-sm-up: 1.75rem;
1220
-
1221
- $modal-title-line-height: $line-height-base;
1222
-
1223
- $modal-content-color: null;
1224
- $modal-content-bg: $white;
1225
- $modal-content-border-color: rgba($black, 0.65); // rgba($black, 0.2);
1226
- $modal-content-border-width: $border-width;
1227
- $modal-content-border-radius: $border-radius-lg;
1228
- $modal-content-inner-border-radius: ${subtract(
1229
- (t: ThemeVariables) => t['modal-content-border-radius'],
1230
- (t: ThemeVariables) => t['modal-content-border-width'],
1231
- )};
1232
- $modal-content-box-shadow-xs: $box-shadow-sm;
1233
- $modal-content-box-shadow-sm-up: $box-shadow;
1234
-
1235
- $modal-backdrop-bg: $black;
1236
- $modal-backdrop-opacity: 0.5;
1237
- $modal-header-border-color: $border-color;
1238
- $modal-footer-border-color: $modal-header-border-color;
1239
- $modal-header-border-width: $modal-content-border-width;
1240
- $modal-footer-border-width: $modal-header-border-width;
1241
- $modal-header-padding-y: $modal-inner-padding;
1242
- $modal-header-padding-x: $modal-inner-padding;
1243
- $modal-header-padding: $modal-header-padding-y $modal-header-padding-x; // Keep this for backwards compatibility
1244
-
1245
- $modal-sm: 300px;
1246
- $modal-md: 500px;
1247
- $modal-lg: 800px;
1248
- $modal-xl: 1140px;
1249
-
1250
- $modal-fade-transform: translate(0, -50px);
1251
- $modal-show-transform: none;
1252
- $modal-transition: transform 0.3s ease-out;
1253
- $modal-scale-transform: scale(1.02);
1254
-
1255
- // ...
1256
-
1257
- // Alerts
1258
- //
1259
- // Define alert colors, border radius, and padding.
1260
-
1261
- $alert-padding-y: $spacer;
1262
- $alert-padding-x: $spacer;
1263
- $alert-margin-bottom: 1rem;
1264
- $alert-border-radius: $border-radius;
1265
- $alert-link-font-weight: $font-weight-bold;
1266
- $alert-border-width: $border-width;
1267
- $alert-bg-scale: -80%;
1268
- $alert-border-scale: -70%;
1269
- $alert-color-scale: 40%;
1270
- $alert-dismissible-padding-r: $alert-padding-x * 3; // 3x covers width of x plus default padding on either side
1271
-
1272
- // Pagination
1273
-
1274
- $pagination-padding-y: 0.375rem;
1275
- $pagination-padding-x: 0.75rem;
1276
- $pagination-padding-y-sm: 0.25rem;
1277
- $pagination-padding-x-sm: 0.5rem;
1278
- $pagination-padding-y-lg: 0.75rem;
1279
- $pagination-padding-x-lg: 1.5rem;
1280
-
1281
- $pagination-color: $link-color;
1282
- $pagination-bg: $white;
1283
- $pagination-border-width: $border-width;
1284
- $pagination-border-radius: $border-radius;
1285
- $pagination-margin-start: -$pagination-border-width;
1286
- $pagination-border-color: $gray-300;
1287
-
1288
- $pagination-focus-color: $link-hover-color;
1289
- $pagination-focus-bg: $gray-200;
1290
- $pagination-focus-box-shadow: $input-btn-focus-box-shadow;
1291
- $pagination-focus-outline: 0;
1292
-
1293
- $pagination-hover-color: $link-hover-color;
1294
- $pagination-hover-bg: $gray-200;
1295
- $pagination-hover-border-color: $gray-300;
1296
-
1297
- $pagination-active-color: $component-active-color;
1298
- $pagination-active-bg: $component-active-bg;
1299
- $pagination-active-border-color: $pagination-active-bg;
1300
-
1301
- $pagination-disabled-color: $gray-600;
1302
- $pagination-disabled-bg: $white;
1303
- $pagination-disabled-border-color: $gray-300;
1304
-
1305
- $pagination-transition:
1306
- color 0.15s ease-in-out,
1307
- background-color 0.15s ease-in-out,
1308
- border-color 0.15s ease-in-out,
1309
- box-shadow 0.15s ease-in-out;
1310
-
1311
- $pagination-border-radius-sm: $border-radius-sm;
1312
- $pagination-border-radius-lg: $border-radius-lg;
1313
-
1314
- // Progress bars
1315
-
1316
- $progress-height: 1rem;
1317
- $progress-font-size: $font-size-base * 0.75;
1318
- $progress-bg: $gray-200;
1319
- $progress-border-radius: $border-radius;
1320
- $progress-box-shadow: $box-shadow-inset;
1321
- $progress-bar-color: $white;
1322
- $progress-bar-bg: $primary;
1323
- $progress-bar-animation-timing: 1s linear infinite;
1324
- $progress-bar-transition: width 0.6s ease;
1325
-
1326
- // List group
1327
-
1328
- $list-group-color: $gray-900;
1329
- $list-group-bg: $white;
1330
- $list-group-border-color: rgba($black, 0.125);
1331
- $list-group-border-width: $border-width;
1332
- $list-group-border-radius: $border-radius;
1333
-
1334
- $list-group-item-padding-y: $spacer * 0.5;
1335
- $list-group-item-padding-x: $spacer;
1336
- $list-group-item-bg-scale: -80%;
1337
- $list-group-item-color-scale: 40%;
1338
-
1339
- $list-group-hover-bg: $gray-100;
1340
- $list-group-active-color: $component-active-color;
1341
- $list-group-active-bg: $component-active-bg;
1342
- $list-group-active-border-color: $list-group-active-bg;
1343
-
1344
- $list-group-disabled-color: $gray-600;
1345
- $list-group-disabled-bg: $list-group-bg;
1346
-
1347
- $list-group-action-color: $gray-700;
1348
- $list-group-action-hover-color: $list-group-action-color;
1349
-
1350
- $list-group-action-active-color: $body-color;
1351
- $list-group-action-active-bg: $gray-200;
1352
-
1353
- // ...
1354
-
1355
- // Spinners
1356
-
1357
- $spinner-width: 2rem;
1358
- $spinner-height: $spinner-width;
1359
- $spinner-vertical-align: $font-size-base * -0.125; // -.125em;
1360
- $spinner-border-width: $font-size-base * 0.25; // .25em;
1361
- $spinner-animation-speed: 0.75s;
1362
-
1363
- $spinner-width-sm: 1rem;
1364
- $spinner-height-sm: $spinner-width-sm;
1365
- $spinner-border-width-sm: $font-size-base * 0.2; // .2em;
1366
-
1367
- // Close
1368
-
1369
- $btn-close-width: $font-size-base * 1; // 1em;
1370
- $btn-close-height: $btn-close-width;
1371
- $btn-close-padding-x: $font-size-base * 0.25; // .25em;
1372
- $btn-close-padding-y: $btn-close-padding-x;
1373
- $btn-close-color: $black;
1374
- $btn-close-bg: ${url(
1375
- "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>",
1376
- )};
1377
- $btn-close-focus-shadow: $input-btn-focus-box-shadow;
1378
- $btn-close-opacity: 0.5;
1379
- $btn-close-hover-opacity: 0.75;
1380
- $btn-close-focus-opacity: 1;
1381
- $btn-close-disabled-opacity: 0.25;
1382
- // $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
1383
-
1384
- // Offcanvas
1385
-
1386
- $offcanvas-padding-y: $modal-inner-padding;
1387
- $offcanvas-padding-x: $modal-inner-padding;
1388
- $offcanvas-horizontal-width: 400px;
1389
- $offcanvas-vertical-height: 200px; // 30vh;
1390
- $offcanvas-transition-duration: 0.3s;
1391
- $offcanvas-border-color: $modal-content-border-color;
1392
- $offcanvas-border-width: $modal-content-border-width;
1393
- $offcanvas-title-line-height: $modal-title-line-height;
1394
- $offcanvas-bg-color: $modal-content-bg;
1395
- $offcanvas-color: $modal-content-color;
1396
- $offcanvas-box-shadow: $modal-content-box-shadow-xs;
1397
- $offcanvas-backdrop-bg: $modal-backdrop-bg;
1398
- $offcanvas-backdrop-opacity: $modal-backdrop-opacity;
1399
-
1400
- // Code
1401
-
1402
- $code-font-size: $small-font-size;
1403
- $code-color: $pink;
1404
-
1405
- $kbd-padding-y: 0.2rem;
1406
- $kbd-padding-x: 0.4rem;
1407
- $kbd-font-size: $code-font-size;
1408
- $kbd-color: $white;
1409
- $kbd-bg: $gray-900;
1410
-
1411
- $pre-color: null;
1412
- `;
1413
-
1414
- export default variables;
1
+ import { Platform } from 'react-native';
2
+ import css from '../style/css';
3
+ import { calculate } from '../style/math';
4
+ import { shadeColor, tintColor, shiftColor, add, subtract } from './functions';
5
+ import type { ThemeVariables } from '../types';
6
+
7
+ const url =
8
+ (val: string) =>
9
+ (t: ThemeVariables): string =>
10
+ `url("${val.replace(/#{\$(.*?)}/g, (_, key) => t[key])}")`;
11
+
12
+ const variables = css`
13
+ // Color system
14
+
15
+ $white: #fff;
16
+ $gray-100: #f8f9fa;
17
+ $gray-200: #e9ecef;
18
+ $gray-300: #dee2e6;
19
+ $gray-400: #ced4da;
20
+ $gray-500: #adb5bd;
21
+ $gray-600: #6c757d;
22
+ $gray-700: #495057;
23
+ $gray-800: #343a40;
24
+ $gray-900: #212529;
25
+ $black: #000;
26
+
27
+ $grays: ${(t: ThemeVariables) => ({
28
+ 100: t['gray-100'],
29
+ 200: t['gray-200'],
30
+ 300: t['gray-300'],
31
+ 400: t['gray-400'],
32
+ 500: t['gray-500'],
33
+ 600: t['gray-600'],
34
+ 700: t['gray-700'],
35
+ 800: t['gray-800'],
36
+ 900: t['gray-900'],
37
+ })};
38
+
39
+ $blue: #0d6efd;
40
+ $indigo: #6610f2;
41
+ $purple: #6f42c1;
42
+ $pink: #d63384;
43
+ $red: #dc3545;
44
+ $orange: #fd7e14;
45
+ $yellow: #ffc107;
46
+ $green: #198754;
47
+ $teal: #20c997;
48
+ $cyan: #0dcaf0;
49
+
50
+ $colors: ${(t: ThemeVariables) => ({
51
+ blue: t.blue,
52
+ indigo: t.indigo,
53
+ purple: t.purple,
54
+ pink: t.pink,
55
+ red: t.red,
56
+ orange: t.orange,
57
+ yellow: t.yellow,
58
+ green: t.green,
59
+ teal: t.teal,
60
+ cyan: t.cyan,
61
+ })};
62
+
63
+ $primary: $blue;
64
+ $secondary: $gray-600;
65
+ $success: $green;
66
+ $info: $cyan;
67
+ $warning: $yellow;
68
+ $danger: $red;
69
+ $light: $gray-100;
70
+ $dark: $gray-900;
71
+
72
+ $theme-colors: ${(t: ThemeVariables) => ({
73
+ primary: t.primary,
74
+ secondary: t.secondary,
75
+ success: t.success,
76
+ info: t.info,
77
+ warning: t.warning,
78
+ danger: t.danger,
79
+ light: t.light,
80
+ dark: t.dark,
81
+ })};
82
+
83
+ // The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
84
+ // See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
85
+ $min-contrast-ratio: 4.5;
86
+
87
+ // Customize the light and dark text colors for use in our color contrast function.
88
+ $color-contrast-dark: $black;
89
+ $color-contrast-light: $white;
90
+
91
+ $blue-100: ${tintColor((t: ThemeVariables) => t.blue, 0.8)};
92
+ $blue-200: ${tintColor((t: ThemeVariables) => t.blue, 0.6)};
93
+ $blue-300: ${tintColor((t: ThemeVariables) => t.blue, 0.4)};
94
+ $blue-400: ${tintColor((t: ThemeVariables) => t.blue, 0.2)};
95
+ $blue-500: $blue;
96
+ $blue-600: ${shadeColor((t: ThemeVariables) => t.blue, 0.2)};
97
+ $blue-700: ${shadeColor((t: ThemeVariables) => t.blue, 0.4)};
98
+ $blue-800: ${shadeColor((t: ThemeVariables) => t.blue, 0.6)};
99
+ $blue-900: ${shadeColor((t: ThemeVariables) => t.blue, 0.8)};
100
+
101
+ $indigo-100: ${tintColor((t: ThemeVariables) => t.indigo, 0.8)};
102
+ $indigo-200: ${tintColor((t: ThemeVariables) => t.indigo, 0.6)};
103
+ $indigo-300: ${tintColor((t: ThemeVariables) => t.indigo, 0.4)};
104
+ $indigo-400: ${tintColor((t: ThemeVariables) => t.indigo, 0.2)};
105
+ $indigo-500: $indigo;
106
+ $indigo-600: ${shadeColor((t: ThemeVariables) => t.indigo, 0.2)};
107
+ $indigo-700: ${shadeColor((t: ThemeVariables) => t.indigo, 0.4)};
108
+ $indigo-800: ${shadeColor((t: ThemeVariables) => t.indigo, 0.6)};
109
+ $indigo-900: ${shadeColor((t: ThemeVariables) => t.indigo, 0.8)};
110
+
111
+ $purple-100: ${tintColor((t: ThemeVariables) => t.purple, 0.8)};
112
+ $purple-200: ${tintColor((t: ThemeVariables) => t.purple, 0.6)};
113
+ $purple-300: ${tintColor((t: ThemeVariables) => t.purple, 0.4)};
114
+ $purple-400: ${tintColor((t: ThemeVariables) => t.purple, 0.2)};
115
+ $purple-500: $purple;
116
+ $purple-600: ${shadeColor((t: ThemeVariables) => t.purple, 0.2)};
117
+ $purple-700: ${shadeColor((t: ThemeVariables) => t.purple, 0.4)};
118
+ $purple-800: ${shadeColor((t: ThemeVariables) => t.purple, 0.6)};
119
+ $purple-900: ${shadeColor((t: ThemeVariables) => t.purple, 0.8)};
120
+
121
+ $pink-100: ${tintColor((t: ThemeVariables) => t.pink, 0.8)};
122
+ $pink-200: ${tintColor((t: ThemeVariables) => t.pink, 0.6)};
123
+ $pink-300: ${tintColor((t: ThemeVariables) => t.pink, 0.4)};
124
+ $pink-400: ${tintColor((t: ThemeVariables) => t.pink, 0.2)};
125
+ $pink-500: $pink;
126
+ $pink-600: ${shadeColor((t: ThemeVariables) => t.pink, 0.2)};
127
+ $pink-700: ${shadeColor((t: ThemeVariables) => t.pink, 0.4)};
128
+ $pink-800: ${shadeColor((t: ThemeVariables) => t.pink, 0.6)};
129
+ $pink-900: ${shadeColor((t: ThemeVariables) => t.pink, 0.8)};
130
+
131
+ $red-100: ${tintColor((t: ThemeVariables) => t.red, 0.8)};
132
+ $red-200: ${tintColor((t: ThemeVariables) => t.red, 0.6)};
133
+ $red-300: ${tintColor((t: ThemeVariables) => t.red, 0.4)};
134
+ $red-400: ${tintColor((t: ThemeVariables) => t.red, 0.2)};
135
+ $red-500: $red;
136
+ $red-600: ${shadeColor((t: ThemeVariables) => t.red, 0.2)};
137
+ $red-700: ${shadeColor((t: ThemeVariables) => t.red, 0.4)};
138
+ $red-800: ${shadeColor((t: ThemeVariables) => t.red, 0.6)};
139
+ $red-900: ${shadeColor((t: ThemeVariables) => t.red, 0.8)};
140
+
141
+ $orange-100: ${tintColor((t: ThemeVariables) => t.orange, 0.8)};
142
+ $orange-200: ${tintColor((t: ThemeVariables) => t.orange, 0.6)};
143
+ $orange-300: ${tintColor((t: ThemeVariables) => t.orange, 0.4)};
144
+ $orange-400: ${tintColor((t: ThemeVariables) => t.orange, 0.2)};
145
+ $orange-500: $orange;
146
+ $orange-600: ${shadeColor((t: ThemeVariables) => t.orange, 0.2)};
147
+ $orange-700: ${shadeColor((t: ThemeVariables) => t.orange, 0.4)};
148
+ $orange-800: ${shadeColor((t: ThemeVariables) => t.orange, 0.6)};
149
+ $orange-900: ${shadeColor((t: ThemeVariables) => t.orange, 0.8)};
150
+
151
+ $yellow-100: ${tintColor((t: ThemeVariables) => t.yellow, 0.8)};
152
+ $yellow-200: ${tintColor((t: ThemeVariables) => t.yellow, 0.6)};
153
+ $yellow-300: ${tintColor((t: ThemeVariables) => t.yellow, 0.4)};
154
+ $yellow-400: ${tintColor((t: ThemeVariables) => t.yellow, 0.2)};
155
+ $yellow-500: $yellow;
156
+ $yellow-600: ${shadeColor((t: ThemeVariables) => t.yellow, 0.2)};
157
+ $yellow-700: ${shadeColor((t: ThemeVariables) => t.yellow, 0.4)};
158
+ $yellow-800: ${shadeColor((t: ThemeVariables) => t.yellow, 0.6)};
159
+ $yellow-900: ${shadeColor((t: ThemeVariables) => t.yellow, 0.8)};
160
+
161
+ $green-100: ${tintColor((t: ThemeVariables) => t.green, 0.8)};
162
+ $green-200: ${tintColor((t: ThemeVariables) => t.green, 0.6)};
163
+ $green-300: ${tintColor((t: ThemeVariables) => t.green, 0.4)};
164
+ $green-400: ${tintColor((t: ThemeVariables) => t.green, 0.2)};
165
+ $green-500: $green;
166
+ $green-600: ${shadeColor((t: ThemeVariables) => t.green, 0.2)};
167
+ $green-700: ${shadeColor((t: ThemeVariables) => t.green, 0.4)};
168
+ $green-800: ${shadeColor((t: ThemeVariables) => t.green, 0.6)};
169
+ $green-900: ${shadeColor((t: ThemeVariables) => t.green, 0.8)};
170
+
171
+ $teal-100: ${tintColor((t: ThemeVariables) => t.teal, 0.8)};
172
+ $teal-200: ${tintColor((t: ThemeVariables) => t.teal, 0.6)};
173
+ $teal-300: ${tintColor((t: ThemeVariables) => t.teal, 0.4)};
174
+ $teal-400: ${tintColor((t: ThemeVariables) => t.teal, 0.2)};
175
+ $teal-500: $teal;
176
+ $teal-600: ${shadeColor((t: ThemeVariables) => t.teal, 0.2)};
177
+ $teal-700: ${shadeColor((t: ThemeVariables) => t.teal, 0.4)};
178
+ $teal-800: ${shadeColor((t: ThemeVariables) => t.teal, 0.6)};
179
+ $teal-900: ${shadeColor((t: ThemeVariables) => t.teal, 0.8)};
180
+
181
+ $cyan-100: ${tintColor((t: ThemeVariables) => t.cyan, 0.8)};
182
+ $cyan-200: ${tintColor((t: ThemeVariables) => t.cyan, 0.6)};
183
+ $cyan-300: ${tintColor((t: ThemeVariables) => t.cyan, 0.4)};
184
+ $cyan-400: ${tintColor((t: ThemeVariables) => t.cyan, 0.2)};
185
+ $cyan-500: $cyan;
186
+ $cyan-600: ${shadeColor((t: ThemeVariables) => t.cyan, 0.2)};
187
+ $cyan-700: ${shadeColor((t: ThemeVariables) => t.cyan, 0.4)};
188
+ $cyan-800: ${shadeColor((t: ThemeVariables) => t.cyan, 0.6)};
189
+ $cyan-900: ${shadeColor((t: ThemeVariables) => t.cyan, 0.8)};
190
+
191
+ $blues: ${(t: ThemeVariables) => ({
192
+ 'blue-100': t['blue-100'],
193
+ 'blue-200': t['blue-200'],
194
+ 'blue-300': t['blue-300'],
195
+ 'blue-400': t['blue-400'],
196
+ 'blue-500': t['blue-500'],
197
+ 'blue-600': t['blue-600'],
198
+ 'blue-700': t['blue-700'],
199
+ 'blue-800': t['blue-800'],
200
+ 'blue-900': t['blue-900'],
201
+ })};
202
+
203
+ $indigos: ${(t: ThemeVariables) => ({
204
+ 'indigo-100': t['indigo-100'],
205
+ 'indigo-200': t['indigo-200'],
206
+ 'indigo-300': t['indigo-300'],
207
+ 'indigo-400': t['indigo-400'],
208
+ 'indigo-500': t['indigo-500'],
209
+ 'indigo-600': t['indigo-600'],
210
+ 'indigo-700': t['indigo-700'],
211
+ 'indigo-800': t['indigo-800'],
212
+ 'indigo-900': t['indigo-900'],
213
+ })};
214
+
215
+ $purples: ${(t: ThemeVariables) => ({
216
+ 'purple-100': t['purple-100'],
217
+ 'purple-200': t['purple-200'],
218
+ 'purple-300': t['purple-300'],
219
+ 'purple-400': t['purple-400'],
220
+ 'purple-500': t['purple-500'],
221
+ 'purple-600': t['purple-600'],
222
+ 'purple-700': t['purple-700'],
223
+ 'purple-800': t['purple-800'],
224
+ 'purple-900': t['purple-900'],
225
+ })};
226
+
227
+ $pinks: ${(t: ThemeVariables) => ({
228
+ 'pink-100': t['pink-100'],
229
+ 'pink-200': t['pink-200'],
230
+ 'pink-300': t['pink-300'],
231
+ 'pink-400': t['pink-400'],
232
+ 'pink-500': t['pink-500'],
233
+ 'pink-600': t['pink-600'],
234
+ 'pink-700': t['pink-700'],
235
+ 'pink-800': t['pink-800'],
236
+ 'pink-900': t['pink-900'],
237
+ })};
238
+
239
+ $reds: ${(t: ThemeVariables) => ({
240
+ 'red-100': t['red-100'],
241
+ 'red-200': t['red-200'],
242
+ 'red-300': t['red-300'],
243
+ 'red-400': t['red-400'],
244
+ 'red-500': t['red-500'],
245
+ 'red-600': t['red-600'],
246
+ 'red-700': t['red-700'],
247
+ 'red-800': t['red-800'],
248
+ 'red-900': t['red-900'],
249
+ })};
250
+
251
+ $oranges: ${(t: ThemeVariables) => ({
252
+ 'orange-100': t['orange-100'],
253
+ 'orange-200': t['orange-200'],
254
+ 'orange-300': t['orange-300'],
255
+ 'orange-400': t['orange-400'],
256
+ 'orange-500': t['orange-500'],
257
+ 'orange-600': t['orange-600'],
258
+ 'orange-700': t['orange-700'],
259
+ 'orange-800': t['orange-800'],
260
+ 'orange-900': t['orange-900'],
261
+ })};
262
+
263
+ $yellows: ${(t: ThemeVariables) => ({
264
+ 'yellow-100': t['yellow-100'],
265
+ 'yellow-200': t['yellow-200'],
266
+ 'yellow-300': t['yellow-300'],
267
+ 'yellow-400': t['yellow-400'],
268
+ 'yellow-500': t['yellow-500'],
269
+ 'yellow-600': t['yellow-600'],
270
+ 'yellow-700': t['yellow-700'],
271
+ 'yellow-800': t['yellow-800'],
272
+ 'yellow-900': t['yellow-900'],
273
+ })};
274
+
275
+ $greens: ${(t: ThemeVariables) => ({
276
+ 'green-100': t['green-100'],
277
+ 'green-200': t['green-200'],
278
+ 'green-300': t['green-300'],
279
+ 'green-400': t['green-400'],
280
+ 'green-500': t['green-500'],
281
+ 'green-600': t['green-600'],
282
+ 'green-700': t['green-700'],
283
+ 'green-800': t['green-800'],
284
+ 'green-900': t['green-900'],
285
+ })};
286
+
287
+ $teals: ${(t: ThemeVariables) => ({
288
+ 'teal-100': t['teal-100'],
289
+ 'teal-200': t['teal-200'],
290
+ 'teal-300': t['teal-300'],
291
+ 'teal-400': t['teal-400'],
292
+ 'teal-500': t['teal-500'],
293
+ 'teal-600': t['teal-600'],
294
+ 'teal-700': t['teal-700'],
295
+ 'teal-800': t['teal-800'],
296
+ 'teal-900': t['teal-900'],
297
+ })};
298
+
299
+ $cyans: ${(t: ThemeVariables) => ({
300
+ 'cyan-100': t['cyan-100'],
301
+ 'cyan-200': t['cyan-200'],
302
+ 'cyan-300': t['cyan-300'],
303
+ 'cyan-400': t['cyan-400'],
304
+ 'cyan-500': t['cyan-500'],
305
+ 'cyan-600': t['cyan-600'],
306
+ 'cyan-700': t['cyan-700'],
307
+ 'cyan-800': t['cyan-800'],
308
+ 'cyan-900': t['cyan-900'],
309
+ })};
310
+
311
+ // Characters which are escaped by the escape-svg function
312
+ // $escaped characters
313
+
314
+ // Options
315
+ //
316
+ // Quickly modify global styling by enabling or disabling optional features.
317
+
318
+ // NOTE: Handled by JavaScript.
319
+
320
+ // Gradient
321
+ //
322
+ // The gradient which is added to components if "$enable-gradients" is "true"
323
+ // This gradient is also added to elements with ".bg-gradient"
324
+ $gradient: linear-gradient(180deg, rgba($white, 0.15), rgba($white, 0));
325
+
326
+ // Spacing
327
+ //
328
+ // Control the default styling of most Bootstrap elements by modifying these
329
+ // variables. Mostly focused on spacing.
330
+ // You can add more entries to the $spacers map, should you need more variation.
331
+
332
+ $spacer: 1rem;
333
+ $spacers: ${(t: ThemeVariables) => ({
334
+ 0: '0px',
335
+ 1: `${t.spacer} * 0.25`,
336
+ 2: `${t.spacer} * 0.5`,
337
+ 3: t.spacer,
338
+ 4: `${t.spacer} * 1.5`,
339
+ 5: `${t.spacer} * 3`,
340
+ })};
341
+
342
+ // Position
343
+ //
344
+ // Define the edge positioning anchors of the position utilities.
345
+
346
+ $position-values: ${() => ({
347
+ 0: '0px',
348
+ 50: '50%',
349
+ 100: '100%',
350
+ })};
351
+
352
+ // Placeholder
353
+
354
+ $placeholder-opacity-max: 0.5;
355
+ $placeholder-opacity-min: 0.2;
356
+
357
+ // Body
358
+ //
359
+ // Settings for the "<body>" element.
360
+
361
+ $body-bg: $white;
362
+ $body-color: $gray-900;
363
+ $body-text-align: null;
364
+
365
+ // Links
366
+ //
367
+ // Style anchor elements.
368
+
369
+ $link-color: $primary;
370
+ $link-decoration: underline;
371
+ $link-shade-percentage: 20%;
372
+ $link-hover-color: ${shiftColor(
373
+ (t: ThemeVariables) => t['link-color'],
374
+ (t: ThemeVariables) => t['link-shade-percentage'],
375
+ )};
376
+ $link-hover-decoration: null;
377
+
378
+ $stretched-link-pseudo-element: after;
379
+ $stretched-link-z-index: 1;
380
+
381
+ // Paragraphs
382
+ //
383
+ // Style p element.
384
+
385
+ $paragraph-margin-bottom: 1rem;
386
+
387
+ // Grid breakpoints
388
+ //
389
+ // Define the minimum dimensions at which your layout will change,
390
+ // adapting to different screen sizes, for use in media queries.
391
+
392
+ $grid-breakpoints: ${() => ({
393
+ xs: 0,
394
+ sm: 576,
395
+ md: 768,
396
+ lg: 992,
397
+ xl: 1200,
398
+ xxl: 1400,
399
+ })};
400
+
401
+ // Grid containers
402
+ //
403
+ // Define the maximum width of ".container" for different screen sizes.
404
+
405
+ $container-max-widths: ${() => ({
406
+ sm: '540px',
407
+ md: '720px',
408
+ lg: '960px',
409
+ xl: '1140px',
410
+ xxl: '1320px',
411
+ })};
412
+
413
+ // Grid columns
414
+ //
415
+ // Set the number of columns and specify the width of the gutters.
416
+
417
+ // $grid-columns: 12;
418
+ $grid-gutter-width: 1.5rem;
419
+ // $grid-row-columns: 6;
420
+
421
+ // Container padding
422
+
423
+ $container-padding-x: $grid-gutter-width * 0.5;
424
+
425
+ // Components
426
+ //
427
+ // Define common padding and border radius sizes and more.
428
+
429
+ $border-width: 1px;
430
+ $border-widths: ${() => ({
431
+ 1: '1px',
432
+ 2: '2px',
433
+ 3: '3px',
434
+ 4: '4px',
435
+ 5: '5px',
436
+ })};
437
+
438
+ $border-color: $gray-300;
439
+
440
+ $border-radius: 0.25rem;
441
+ $border-radius-sm: 0.2rem;
442
+ $border-radius-lg: 0.3rem;
443
+ $border-radius-pill: 50rem;
444
+
445
+ $box-shadow: 0 0.5rem 1rem rgba($black, 0.15);
446
+ $box-shadow-sm: 0 0.125rem 0.25rem rgba($black, 0.075);
447
+ $box-shadow-lg: 0 1rem 3rem rgba($black, 0.175);
448
+ $box-shadow-inset: inset 0 1px 2px rgba($black, 0.075);
449
+
450
+ $component-active-color: $white;
451
+ $component-active-bg: $primary;
452
+
453
+ $caret-width: 1rem * 0.3; // 0.3em;
454
+ $caret-vertical-align: $caret-width * 0.85;
455
+ $caret-spacing: $caret-width * 0.85;
456
+
457
+ $transition-base: all 0.2s ease-in-out;
458
+ $transition-fade: opacity 0.15s linear;
459
+ $transition-collapse: height 0.35s ease;
460
+ $transition-collapse-width: width 0.35s ease;
461
+
462
+ $aspect-ratios: ${() => ({
463
+ '1x1': '100%',
464
+ '4x3': 'calc(3 / 4 * 100%)',
465
+ '16x9': 'calc(9 / 16 * 100%)',
466
+ '21x9': 'calc(9 / 21 * 100%)',
467
+ })};
468
+
469
+ // Typography
470
+ //
471
+ // Font, line-height, and color for body text, headings, and more.
472
+
473
+ $font-family-sans-serif: ${() =>
474
+ Platform.select({
475
+ native: 'System',
476
+ default:
477
+ "\"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'\"",
478
+ })};
479
+ $font-family-monospace: ${() =>
480
+ Platform.select({
481
+ android: 'monospace',
482
+ ios: 'Courier New',
483
+ default:
484
+ "\"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\"",
485
+ })};
486
+ $font-family-base: $font-family-sans-serif;
487
+ $font-family-code: $font-family-monospace;
488
+
489
+ // $font-size-root affects the value of "rem", which is used for as well font sizes, paddings, and margins
490
+ // $font-size-base affects the font size of the body text
491
+ $font-size-root: null;
492
+ $font-size-base: 1rem; // Assumes the browser default, typically "16px"
493
+ $font-size-sm: $font-size-base * 0.875;
494
+ $font-size-lg: $font-size-base * 1.25;
495
+
496
+ $font-weight-lighter: 300; // lighter;
497
+ $font-weight-light: 300;
498
+ $font-weight-normal: 400;
499
+ $font-weight-bold: 700;
500
+ $font-weight-bolder: 500; // bolder;
501
+
502
+ $font-weight-base: $font-weight-normal;
503
+
504
+ $line-height-base: 1.5;
505
+ $line-height-sm: 1.25;
506
+ $line-height-lg: 2;
507
+
508
+ $h1-font-size: $font-size-base * 2.5;
509
+ $h2-font-size: $font-size-base * 2;
510
+ $h3-font-size: $font-size-base * 1.75;
511
+ $h4-font-size: $font-size-base * 1.5;
512
+ $h5-font-size: $font-size-base * 1.25;
513
+ $h6-font-size: $font-size-base;
514
+
515
+ $font-sizes: ${(t: ThemeVariables) => ({
516
+ 1: t['h1-font-size'],
517
+ 2: t['h2-font-size'],
518
+ 3: t['h3-font-size'],
519
+ 4: t['h4-font-size'],
520
+ 5: t['h5-font-size'],
521
+ 6: t['h6-font-size'],
522
+ })};
523
+
524
+ $headings-margin-bottom: $spacer * 0.5;
525
+ $headings-font-family: null;
526
+ $headings-font-style: null;
527
+ $headings-font-weight: 500;
528
+ $headings-line-height: 1.2;
529
+ $headings-color: null;
530
+
531
+ $display-font-sizes: ${() => ({
532
+ 1: '5rem',
533
+ 2: '4.5rem',
534
+ 3: '4rem',
535
+ 4: '3.5rem',
536
+ 5: '3rem',
537
+ 6: '2.5rem',
538
+ })};
539
+
540
+ $display-font-weight: 300;
541
+ $display-line-height: $headings-line-height;
542
+
543
+ $lead-font-size: $font-size-base * 1.25;
544
+ $lead-font-weight: 300;
545
+
546
+ $small-font-size: $font-size-base * 0.875; // 0.875em;
547
+
548
+ $sub-sup-font-size: $font-size-base * 0.75; // 0.75em;
549
+
550
+ $text-muted: $gray-600;
551
+
552
+ $initialism-font-size: $small-font-size;
553
+
554
+ $blockquote-margin-y: $spacer;
555
+ $blockquote-font-size: $font-size-base * 1.25;
556
+ $blockquote-footer-color: $gray-600;
557
+ $blockquote-footer-font-size: $small-font-size;
558
+
559
+ $hr-margin-y: $spacer;
560
+ $hr-color: inherit;
561
+ $hr-bg-color: currentColor;
562
+ $hr-border-width: 0;
563
+ $hr-height: $border-width;
564
+ $hr-opacity: 0.25;
565
+
566
+ $legend-margin-bottom: 0.5rem;
567
+ $legend-font-size: 1.5rem;
568
+ $legend-font-weight: null;
569
+
570
+ $mark-padding: $font-size-base * 0.2; // 0.2em;
571
+
572
+ $dt-font-weight: $font-weight-bold;
573
+
574
+ $nested-kbd-font-weight: $font-weight-bold;
575
+
576
+ $list-inline-padding: 0.5rem;
577
+
578
+ $mark-bg: #fcf8e3;
579
+
580
+ // ...
581
+
582
+ // Buttons + Forms
583
+ //
584
+ // Shared variables that are reassigned to "$input-" and "$btn-" specific variables.
585
+
586
+ $input-btn-padding-y: 0.375rem;
587
+ $input-btn-padding-x: 0.75rem;
588
+ $input-btn-font-family: null;
589
+ $input-btn-font-size: $font-size-base;
590
+ $input-btn-line-height: $line-height-base;
591
+
592
+ $input-btn-focus-width: 0.25rem;
593
+ $input-btn-focus-color-opacity: 0.25;
594
+ $input-btn-focus-color: rgba(
595
+ $component-active-bg,
596
+ $input-btn-focus-color-opacity
597
+ );
598
+ $input-btn-focus-blur: 0;
599
+ $input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width
600
+ $input-btn-focus-color;
601
+
602
+ $input-btn-padding-y-sm: 0.25rem;
603
+ $input-btn-padding-x-sm: 0.5rem;
604
+ $input-btn-font-size-sm: $font-size-sm;
605
+
606
+ $input-btn-padding-y-lg: 0.5rem;
607
+ $input-btn-padding-x-lg: 1rem;
608
+ $input-btn-font-size-lg: $font-size-lg;
609
+
610
+ $input-btn-border-width: $border-width;
611
+
612
+ // Buttons
613
+ //
614
+ // For each of Bootstrap's buttons, define text, background, and border color.
615
+
616
+ $btn-padding-y: $input-btn-padding-y;
617
+ $btn-padding-x: $input-btn-padding-x;
618
+ $btn-font-family: $input-btn-font-family;
619
+ $btn-font-size: $input-btn-font-size;
620
+ $btn-line-height: $input-btn-line-height;
621
+ $btn-white-space: null; // Set to "nowrap" to prevent text wrapping
622
+
623
+ $btn-padding-y-sm: $input-btn-padding-y-sm;
624
+ $btn-padding-x-sm: $input-btn-padding-x-sm;
625
+ $btn-font-size-sm: $input-btn-font-size-sm;
626
+
627
+ $btn-padding-y-lg: $input-btn-padding-y-lg;
628
+ $btn-padding-x-lg: $input-btn-padding-x-lg;
629
+ $btn-font-size-lg: $input-btn-font-size-lg;
630
+
631
+ $btn-border-width: $input-btn-border-width;
632
+
633
+ $btn-font-weight: $font-weight-normal;
634
+ $btn-box-shadow:
635
+ inset 0 1px 0 rgba($white, 0.15),
636
+ 0 1px 1px rgba($black, 0.075);
637
+ $btn-focus-width: $input-btn-focus-width;
638
+ $btn-focus-box-shadow: $input-btn-focus-box-shadow;
639
+ $btn-disabled-opacity: 0.65;
640
+ $btn-active-box-shadow: inset 0 3px 5px rgba($black, 0.125);
641
+
642
+ $btn-link-color: $link-color;
643
+ $btn-link-hover-color: $link-hover-color;
644
+ $btn-link-disabled-color: $gray-600;
645
+
646
+ // Allows for customizing button radius independently from global border radius
647
+ $btn-border-radius: $border-radius;
648
+ $btn-border-radius-sm: $border-radius-sm;
649
+ $btn-border-radius-lg: $border-radius-lg;
650
+
651
+ $btn-transition:
652
+ color 0.15s ease-in-out,
653
+ background-color 0.15s ease-in-out,
654
+ border-color 0.15s ease-in-out,
655
+ box-shadow 0.15s ease-in-out;
656
+
657
+ $btn-hover-bg-shade-amount: 15%;
658
+ $btn-hover-bg-tint-amount: 15%;
659
+ $btn-hover-border-shade-amount: 20%;
660
+ $btn-hover-border-tint-amount: 10%;
661
+ $btn-active-bg-shade-amount: 20%;
662
+ $btn-active-bg-tint-amount: 20%;
663
+ $btn-active-border-shade-amount: 25%;
664
+ $btn-active-border-tint-amount: 10%;
665
+
666
+ // Breadcrumb
667
+
668
+ $breadcrumb-font-size: $font-size-base; // null;
669
+ $breadcrumb-padding-y: 0;
670
+ $breadcrumb-padding-x: 0;
671
+ $breadcrumb-item-padding-x: 0.5rem;
672
+ $breadcrumb-margin-bottom: 1rem;
673
+ $breadcrumb-bg: null;
674
+ $breadcrumb-divider-color: $gray-600;
675
+ $breadcrumb-active-color: $gray-600;
676
+ $breadcrumb-divider: ${() => '/'}; // quote('/');
677
+ $breadcrumb-divider-flipped: $breadcrumb-divider;
678
+ $breadcrumb-border-radius: null;
679
+
680
+ // Forms
681
+
682
+ $form-text-margin-top: 0.25rem;
683
+ $form-text-font-size: $small-font-size;
684
+ $form-text-font-style: null;
685
+ $form-text-font-weight: null;
686
+ $form-text-color: $text-muted;
687
+
688
+ $form-label-margin-bottom: 0.5rem;
689
+ $form-label-font-size: $font-size-base; // null;
690
+ $form-label-font-style: null;
691
+ $form-label-font-weight: null;
692
+ $form-label-color: null;
693
+
694
+ $input-padding-y: $input-btn-padding-y;
695
+ $input-padding-x: $input-btn-padding-x;
696
+ $input-font-family: $input-btn-font-family;
697
+ $input-font-size: $input-btn-font-size;
698
+ $input-font-weight: $font-weight-base;
699
+ $input-line-height: $input-btn-line-height;
700
+
701
+ $input-padding-y-sm: $input-btn-padding-y-sm;
702
+ $input-padding-x-sm: $input-btn-padding-x-sm;
703
+ $input-font-size-sm: $input-btn-font-size-sm;
704
+
705
+ $input-padding-y-lg: $input-btn-padding-y-lg;
706
+ $input-padding-x-lg: $input-btn-padding-x-lg;
707
+ $input-font-size-lg: $input-btn-font-size-lg;
708
+
709
+ $input-bg: $body-bg;
710
+ $input-disabled-bg: $gray-200;
711
+ $input-disabled-border-color: null;
712
+
713
+ $input-color: $body-color;
714
+ $input-border-color: $gray-400;
715
+ $input-border-width: $input-btn-border-width;
716
+ $input-box-shadow: $box-shadow-inset;
717
+
718
+ $input-border-radius: $border-radius;
719
+ $input-border-radius-sm: $border-radius-sm;
720
+ $input-border-radius-lg: $border-radius-lg;
721
+
722
+ $input-focus-bg: $input-bg;
723
+ $input-focus-border-color: ${tintColor(
724
+ (t: ThemeVariables) => t['component-active-bg'],
725
+ 0.5,
726
+ )};
727
+ $input-focus-color: $input-color;
728
+ $input-focus-width: $input-btn-focus-width;
729
+ $input-focus-box-shadow: $input-btn-focus-box-shadow;
730
+
731
+ $input-placeholder-color: $gray-600;
732
+ $input-plaintext-color: $body-color;
733
+
734
+ $input-height-border: $input-border-width * 2;
735
+
736
+ $input-height-inner: ${add(
737
+ (t: ThemeVariables) => calculate(t['input-line-height'], '*', 1),
738
+ (t: ThemeVariables) => calculate(t['input-padding-y'], '*', 2),
739
+ )};
740
+ $input-height-inner-half: ${add(
741
+ (t: ThemeVariables) => calculate(t['input-line-height'], '*', 0.5),
742
+ (t: ThemeVariables) => t['input-padding-y'],
743
+ )};
744
+ $input-height-inner-quarter: ${add(
745
+ (t: ThemeVariables) => calculate(t['input-line-height'], '*', 0.25),
746
+ (t: ThemeVariables) => calculate(t['input-padding-y'], '*', 0.5),
747
+ )};
748
+
749
+ $input-height: ${add(
750
+ (t: ThemeVariables) =>
751
+ calculate(t['input-line-height'], '*', t['input-font-size']), // 1em
752
+ add(
753
+ (t: ThemeVariables) => calculate(t['input-padding-y'], '*', 2),
754
+ (t: ThemeVariables) => t['input-height-border'],
755
+ ),
756
+ )};
757
+ $input-height-sm: ${add(
758
+ (t: ThemeVariables) =>
759
+ calculate(t['input-line-height'], '*', t['input-font-size-sm']), // 1em
760
+ add(
761
+ (t: ThemeVariables) => calculate(t['input-padding-y-sm'], '*', 2),
762
+ (t: ThemeVariables) => t['input-height-border'],
763
+ ),
764
+ )};
765
+ $input-height-lg: ${add(
766
+ (t: ThemeVariables) =>
767
+ calculate(t['input-line-height'], '*', t['input-font-size-lg']), // 1em
768
+ add(
769
+ (t: ThemeVariables) => calculate(t['input-padding-y-lg'], '*', 2),
770
+ (t: ThemeVariables) => t['input-height-border'],
771
+ ),
772
+ )};
773
+
774
+ $input-transition:
775
+ border-color 0.15s ease-in-out,
776
+ box-shadow 0.15s ease-in-out;
777
+
778
+ $form-color-width: 3rem;
779
+
780
+ $form-check-input-width: $font-size-base * 1; // 1em;
781
+ $form-check-min-height: $font-size-base * $line-height-base;
782
+ $form-check-padding-start: $form-check-input-width + 0.5rem; // 0.5em;
783
+ $form-check-margin-bottom: 0.125rem;
784
+ $form-check-label-color: null;
785
+ $form-check-label-cursor: null;
786
+ $form-check-transition: null;
787
+
788
+ $form-check-input-active-filter: brightness(90%);
789
+
790
+ $form-check-input-bg: $input-bg;
791
+ $form-check-input-border: 1px solid rgba($black, 0.25);
792
+ $form-check-input-border-radius: $font-size-base * 0.25; // 0.25em;
793
+ $form-check-radio-border-radius: $form-check-input-width * 0.5; // 50%;
794
+ $form-check-input-focus-border: $input-focus-border-color;
795
+ $form-check-input-focus-box-shadow: $input-btn-focus-box-shadow;
796
+
797
+ $form-check-input-checked-color: $component-active-color;
798
+ $form-check-input-checked-bg-color: $component-active-bg;
799
+ $form-check-input-checked-border-color: $form-check-input-checked-bg-color;
800
+ $form-check-input-checked-bg-image: ${url(
801
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>",
802
+ )};
803
+ $form-check-radio-checked-bg-image: ${url(
804
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>",
805
+ )};
806
+
807
+ $form-check-input-indeterminate-color: $component-active-color;
808
+ $form-check-input-indeterminate-bg-color: $component-active-bg;
809
+ $form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color;
810
+ $form-check-input-indeterminate-bg-image: ${url(
811
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>",
812
+ )};
813
+
814
+ $form-check-input-disabled-opacity: 0.5;
815
+ $form-check-label-disabled-opacity: $form-check-input-disabled-opacity;
816
+ $form-check-btn-check-disabled-opacity: $btn-disabled-opacity;
817
+
818
+ $form-check-inline-margin-end: 1rem;
819
+
820
+ $form-switch-color: rgba($black, 0.25);
821
+ $form-switch-width: 2rem;
822
+ $form-switch-padding-start: $form-switch-width + 0.5rem;
823
+ $form-switch-bg-image: ${url(
824
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>",
825
+ )};
826
+ $form-switch-border-radius: $form-switch-width;
827
+ $form-switch-transition: background-position 0.15s ease-in-out;
828
+
829
+ $form-switch-focus-color: $input-focus-border-color;
830
+ $form-switch-focus-bg-image: ${url(
831
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>",
832
+ )};
833
+
834
+ $form-switch-checked-color: $component-active-color;
835
+ $form-switch-checked-bg-image: ${url(
836
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>",
837
+ )};
838
+ $form-switch-checked-bg-position: right center;
839
+
840
+ $input-group-addon-padding-y: $input-padding-y;
841
+ $input-group-addon-padding-x: $input-padding-x;
842
+ $input-group-addon-font-weight: $input-font-weight;
843
+ $input-group-addon-color: $input-color;
844
+ $input-group-addon-bg: $gray-200;
845
+ $input-group-addon-border-color: $input-border-color;
846
+
847
+ $form-select-padding-y: $input-padding-y;
848
+ $form-select-padding-x: $input-padding-x;
849
+ $form-select-font-family: $input-font-family;
850
+ $form-select-font-size: $input-font-size;
851
+ $form-select-indicator-padding: $form-select-padding-x * 3; // Extra padding for background-image
852
+ $form-select-font-weight: $input-font-weight;
853
+ $form-select-line-height: $input-line-height;
854
+ $form-select-color: $input-color;
855
+ $form-select-bg: $input-bg;
856
+ $form-select-disabled-color: null;
857
+ $form-select-disabled-bg: $gray-200;
858
+ $form-select-disabled-border-color: $input-disabled-border-color;
859
+ $form-select-bg-position: right $form-select-padding-x center;
860
+ $form-select-bg-size: 16px 12px; // In pixels because image dimensions
861
+ $form-select-indicator-color: $gray-800;
862
+ $form-select-indicator: ${url(
863
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>",
864
+ )};
865
+
866
+ $form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 +
867
+ $form-select-indicator-padding;
868
+ $form-select-feedback-icon-position: center right
869
+ $form-select-indicator-padding;
870
+ $form-select-feedback-icon-size: $input-height-inner-half
871
+ $input-height-inner-half;
872
+
873
+ $form-select-border-width: $input-border-width;
874
+ $form-select-border-color: $input-border-color;
875
+ $form-select-border-radius: $input-border-radius;
876
+ $form-select-box-shadow: $box-shadow-inset;
877
+
878
+ $form-select-focus-border-color: $input-focus-border-color;
879
+ $form-select-focus-width: $input-focus-width;
880
+ $form-select-focus-box-shadow: 0 0 0 $form-select-focus-width
881
+ $input-btn-focus-color;
882
+
883
+ $form-select-padding-y-sm: $input-padding-y-sm;
884
+ $form-select-padding-x-sm: $input-padding-x-sm;
885
+ $form-select-font-size-sm: $input-font-size-sm;
886
+ $form-select-border-radius-sm: $input-border-radius-sm;
887
+
888
+ $form-select-padding-y-lg: $input-padding-y-lg;
889
+ $form-select-padding-x-lg: $input-padding-x-lg;
890
+ $form-select-font-size-lg: $input-font-size-lg;
891
+ $form-select-border-radius-lg: $input-border-radius-lg;
892
+
893
+ $form-select-transition: $input-transition;
894
+
895
+ $form-range-track-width: 100%;
896
+ $form-range-track-height: 0.5rem;
897
+ $form-range-track-cursor: pointer;
898
+ $form-range-track-bg: $gray-300;
899
+ $form-range-track-border-radius: 1rem;
900
+ $form-range-track-box-shadow: $box-shadow-inset;
901
+
902
+ $form-range-thumb-width: 1rem;
903
+ $form-range-thumb-height: $form-range-thumb-width;
904
+ $form-range-thumb-bg: $component-active-bg;
905
+ $form-range-thumb-border: 0;
906
+ $form-range-thumb-border-radius: 1rem;
907
+ $form-range-thumb-box-shadow: 0 0.1rem 0.25rem rgba($black, 0.1);
908
+ $form-range-thumb-focus-box-shadow:
909
+ 0 0 0 1px $body-bg,
910
+ $input-focus-box-shadow;
911
+ $form-range-thumb-focus-box-shadow-width: $input-focus-width; // For focus box shadow issue in Edge
912
+ $form-range-thumb-active-bg: ${tintColor(
913
+ (t: ThemeVariables) => t['component-active-bg'],
914
+ 0.7,
915
+ )};
916
+ $form-range-thumb-disabled-bg: $gray-500;
917
+ $form-range-thumb-transition:
918
+ background-color 0.15s ease-in-out,
919
+ border-color 0.15s ease-in-out,
920
+ box-shadow 0.15s ease-in-out;
921
+
922
+ $form-file-button-color: $input-color;
923
+ $form-file-button-bg: $input-group-addon-bg;
924
+ $form-file-button-hover-bg: ${shadeColor(
925
+ (t: ThemeVariables) => t['form-file-button-bg'],
926
+ 0.05,
927
+ )};
928
+
929
+ $form-floating-height: ${add(
930
+ '3.5rem',
931
+ (t: ThemeVariables) => t['input-height-border'],
932
+ )};
933
+ $form-floating-line-height: 1.25;
934
+ $form-floating-padding-x: $input-padding-x;
935
+ $form-floating-padding-y: 1rem;
936
+ $form-floating-input-padding-t: 1.625rem;
937
+ $form-floating-input-padding-b: 0.625rem;
938
+ $form-floating-label-opacity: 0.65;
939
+ $form-floating-label-transform: scale(0.85) translateY(-0.5rem)
940
+ translateX(0.15rem);
941
+ $form-floating-transition:
942
+ opacity 0.1s ease-in-out,
943
+ transform 0.1s ease-in-out;
944
+
945
+ // Form validation
946
+
947
+ $form-feedback-margin-top: $form-text-margin-top;
948
+ $form-feedback-font-size: $form-text-font-size;
949
+ $form-feedback-font-style: $form-text-font-style;
950
+ $form-feedback-valid-color: $success;
951
+ $form-feedback-invalid-color: $danger;
952
+
953
+ $form-feedback-icon-valid-color: $form-feedback-valid-color;
954
+ $form-feedback-icon-valid: ${url(
955
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>",
956
+ )};
957
+ $form-feedback-icon-invalid-color: $form-feedback-invalid-color;
958
+ $form-feedback-icon-invalid: ${url(
959
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>",
960
+ )};
961
+
962
+ $form-validation-states: ${(t: ThemeVariables) => ({
963
+ valid: {
964
+ color: t['form-feedback-valid-color'],
965
+ icon: t['form-feedback-icon-valid'],
966
+ },
967
+ invalid: {
968
+ color: t['form-feedback-invalid-color'],
969
+ icon: t['form-feedback-icon-invalid'],
970
+ },
971
+ })};
972
+
973
+ // Z-index master list
974
+ //
975
+ // Warning: Avoid customizing these values. They're used for a bird's eye view
976
+ // of components dependent on the z-axis and are designed to all work together.
977
+
978
+ $zindex-dropdown: 1000;
979
+ $zindex-sticky: 1020;
980
+ $zindex-fixed: 1030;
981
+ $zindex-offcanvas-backdrop: 1040;
982
+ $zindex-offcanvas: 1045;
983
+ $zindex-modal-backdrop: 1050;
984
+ $zindex-modal: 1055;
985
+ $zindex-popover: 1070;
986
+ $zindex-tooltip: 1080;
987
+
988
+ // Navs
989
+
990
+ $nav-link-padding-y: 0.5rem;
991
+ $nav-link-padding-x: 1rem;
992
+ $nav-link-font-size: null;
993
+ $nav-link-font-weight: null;
994
+ $nav-link-color: $link-color;
995
+ $nav-link-hover-color: $link-hover-color;
996
+ $nav-link-transition:
997
+ color 0.15s ease-in-out,
998
+ background-color 0.15s ease-in-out,
999
+ border-color 0.15s ease-in-out;
1000
+ $nav-link-disabled-color: $gray-600;
1001
+
1002
+ $nav-tabs-border-color: $gray-300;
1003
+ $nav-tabs-border-width: $border-width;
1004
+ $nav-tabs-border-radius: $border-radius;
1005
+ $nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color;
1006
+ $nav-tabs-link-active-color: $gray-700;
1007
+ $nav-tabs-link-active-bg: $body-bg;
1008
+ $nav-tabs-link-active-border-color: $gray-300 $gray-300
1009
+ $nav-tabs-link-active-bg;
1010
+
1011
+ $nav-pills-border-radius: $border-radius;
1012
+ $nav-pills-link-active-color: $component-active-color;
1013
+ $nav-pills-link-active-bg: $component-active-bg;
1014
+
1015
+ // Navbar
1016
+
1017
+ $navbar-padding-y: $spacer * 0.5;
1018
+ $navbar-padding-x: null;
1019
+
1020
+ $navbar-nav-link-padding-x: 0.5rem;
1021
+
1022
+ $navbar-brand-font-size: $font-size-lg;
1023
+
1024
+ $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y *
1025
+ 2;
1026
+ $navbar-brand-height: $navbar-brand-font-size * $line-height-base;
1027
+ $navbar-brand-padding-y-intermediate-result: $nav-link-height -
1028
+ $navbar-brand-height;
1029
+ $navbar-brand-padding-y: $navbar-brand-padding-y-intermediate-result * 0.5;
1030
+ $navbar-brand-margin-end: 1rem;
1031
+
1032
+ $navbar-toggler-padding-y: 0.25rem;
1033
+ $navbar-toggler-padding-x: 0.75rem;
1034
+ $navbar-toggler-font-size: $font-size-lg;
1035
+ $navbar-toggler-border-radius: $btn-border-radius;
1036
+ $navbar-toggler-focus-width: $btn-focus-width;
1037
+ $navbar-toggler-transition: box-shadow 0.15s ease-in-out;
1038
+
1039
+ $navbar-dark-color: rgba($white, 0.55);
1040
+ $navbar-dark-hover-color: rgba($white, 0.75);
1041
+ $navbar-dark-active-color: $white;
1042
+ $navbar-dark-disabled-color: rgba($white, 0.25);
1043
+ $navbar-dark-toggler-icon-bg: ${url(
1044
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>",
1045
+ )};
1046
+ $navbar-dark-toggler-border-color: rgba($white, 0.1);
1047
+
1048
+ $navbar-light-color: rgba($black, 0.55);
1049
+ $navbar-light-hover-color: rgba($black, 0.7);
1050
+ $navbar-light-active-color: rgba($black, 0.9);
1051
+ $navbar-light-disabled-color: rgba($black, 0.3);
1052
+ $navbar-light-toggler-icon-bg: ${url(
1053
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>",
1054
+ )};
1055
+ $navbar-light-toggler-border-color: rgba($black, 0.1);
1056
+
1057
+ $navbar-light-brand-color: $navbar-light-active-color;
1058
+ $navbar-light-brand-hover-color: $navbar-light-active-color;
1059
+ $navbar-dark-brand-color: $navbar-dark-active-color;
1060
+ $navbar-dark-brand-hover-color: $navbar-dark-active-color;
1061
+
1062
+ // Dropdowns
1063
+ //
1064
+ // Dropdown menu container and contents.
1065
+
1066
+ $dropdown-min-width: 10rem;
1067
+ $dropdown-padding-x: 0;
1068
+ $dropdown-padding-y: 0.5rem;
1069
+ $dropdown-spacer: 0.125rem;
1070
+ $dropdown-font-size: $font-size-base;
1071
+ $dropdown-color: $body-color;
1072
+ $dropdown-bg: $white;
1073
+ $dropdown-border-color: rgba($black, 0.15);
1074
+ $dropdown-border-radius: $border-radius;
1075
+ $dropdown-border-width: $border-width;
1076
+ $dropdown-inner-border-radius: ${subtract(
1077
+ (t: ThemeVariables) => t['dropdown-border-radius'],
1078
+ (t: ThemeVariables) => t['dropdown-border-width'],
1079
+ )};
1080
+ $dropdown-divider-bg: $dropdown-border-color;
1081
+ $dropdown-divider-margin-y: $spacer * 0.5;
1082
+ $dropdown-box-shadow: $box-shadow;
1083
+
1084
+ $dropdown-link-color: $gray-900;
1085
+
1086
+ $dropdown-link-hover-color: ${shadeColor(
1087
+ (t: ThemeVariables) => t['dropdown-link-color'],
1088
+ 0.1,
1089
+ )};
1090
+ $dropdown-link-hover-bg: $gray-200;
1091
+
1092
+ $dropdown-link-active-color: $component-active-color;
1093
+ $dropdown-link-active-bg: $component-active-bg;
1094
+
1095
+ $dropdown-link-disabled-color: $gray-500;
1096
+
1097
+ $dropdown-item-padding-y: $spacer * 0.25;
1098
+ $dropdown-item-padding-x: $spacer;
1099
+
1100
+ $dropdown-header-color: $gray-600;
1101
+ $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x;
1102
+
1103
+ $dropdown-dark-color: $gray-300;
1104
+ $dropdown-dark-bg: $gray-800;
1105
+ $dropdown-dark-border-color: $dropdown-border-color;
1106
+ $dropdown-dark-divider-bg: $dropdown-divider-bg;
1107
+ $dropdown-dark-box-shadow: null;
1108
+ $dropdown-dark-link-color: $dropdown-dark-color;
1109
+ $dropdown-dark-link-hover-color: $white;
1110
+ $dropdown-dark-link-hover-bg: rgba($white, 0.15);
1111
+ $dropdown-dark-link-active-color: $dropdown-link-active-color;
1112
+ $dropdown-dark-link-active-bg: $dropdown-link-active-bg;
1113
+ $dropdown-dark-link-disabled-color: $gray-500;
1114
+ $dropdown-dark-header-color: $gray-500;
1115
+
1116
+ // ...
1117
+
1118
+ // Cards
1119
+
1120
+ $card-spacer-y: $spacer;
1121
+ $card-spacer-x: $spacer;
1122
+ $card-title-spacer-y: $spacer * 0.5;
1123
+ $card-border-width: $border-width;
1124
+ $card-border-color: rgba($black, 0.125);
1125
+ $card-border-radius: $border-radius;
1126
+ $card-box-shadow: null;
1127
+ $card-inner-border-radius: ${subtract(
1128
+ (t: ThemeVariables) => t['card-border-radius'],
1129
+ (t: ThemeVariables) => t['card-border-width'],
1130
+ )};
1131
+ $card-cap-padding-y: $card-spacer-y * 0.5;
1132
+ $card-cap-padding-x: $card-spacer-x;
1133
+ $card-cap-bg: rgba($black, 0.03);
1134
+ $card-cap-color: null;
1135
+ $card-height: null;
1136
+ $card-color: null;
1137
+ $card-bg: $white;
1138
+ $card-img-overlay-padding: $spacer;
1139
+ $card-group-margin: $grid-gutter-width * 0.5;
1140
+
1141
+ // ...
1142
+
1143
+ // Tooltips
1144
+
1145
+ $tooltip-font-size: $font-size-sm;
1146
+ $tooltip-max-width: 200px;
1147
+ $tooltip-color: $white;
1148
+ $tooltip-bg: $black;
1149
+ $tooltip-border-radius: $border-radius;
1150
+ $tooltip-opacity: 0.9;
1151
+ $tooltip-padding-y: $spacer * 0.25;
1152
+ $tooltip-padding-x: $spacer * 0.5;
1153
+ $tooltip-margin: 0;
1154
+
1155
+ $tooltip-arrow-width: 0.8rem;
1156
+ $tooltip-arrow-height: 0.4rem;
1157
+ $tooltip-arrow-color: $tooltip-bg;
1158
+
1159
+ // Popovers
1160
+
1161
+ $popover-font-size: $font-size-sm;
1162
+ $popover-bg: $white;
1163
+ $popover-max-width: 276px;
1164
+ $popover-border-width: $border-width;
1165
+ $popover-border-color: rgba($black, 0.2);
1166
+ $popover-border-radius: $border-radius-lg;
1167
+ $popover-inner-border-radius: ${subtract(
1168
+ (t: ThemeVariables) => t['popover-border-radius'],
1169
+ (t: ThemeVariables) => t['popover-border-width'],
1170
+ )};
1171
+ $popover-box-shadow: $box-shadow;
1172
+
1173
+ $popover-header-bg: ${shadeColor(
1174
+ (t: ThemeVariables) => t['popover-bg'],
1175
+ 0.06,
1176
+ )};
1177
+ $popover-header-color: $headings-color;
1178
+ $popover-header-padding-y: 0.5rem;
1179
+ $popover-header-padding-x: $spacer;
1180
+
1181
+ $popover-body-color: $body-color;
1182
+ $popover-body-padding-y: $spacer;
1183
+ $popover-body-padding-x: $spacer;
1184
+
1185
+ $popover-arrow-width: 1rem;
1186
+ $popover-arrow-height: 0.5rem;
1187
+ $popover-arrow-color: $popover-bg;
1188
+
1189
+ $popover-arrow-outer-color: $popover-border-color;
1190
+
1191
+ // Toasts
1192
+
1193
+ $toast-max-width: 350px;
1194
+ $toast-padding-x: 0.75rem;
1195
+ $toast-padding-y: 0.5rem;
1196
+ $toast-font-size: 0.875rem;
1197
+ $toast-color: null;
1198
+ $toast-background-color: rgba($white, 0.85);
1199
+ $toast-border-width: 1px;
1200
+ $toast-border-color: rgba($black, 0.1);
1201
+ $toast-border-radius: $border-radius;
1202
+ $toast-box-shadow: $box-shadow;
1203
+ $toast-spacing: $container-padding-x;
1204
+
1205
+ $toast-header-color: $gray-600;
1206
+ $toast-header-background-color: rgba($white, 0.85);
1207
+ $toast-header-border-color: rgba($black, 0.05);
1208
+
1209
+ // Badges
1210
+
1211
+ $badge-font-size: $font-size-base * 0.75; // 0.75em;
1212
+ $badge-font-weight: $font-weight-bold;
1213
+ $badge-color: $white;
1214
+ $badge-padding-y: $badge-font-size * 0.35; // 0.35em;
1215
+ $badge-padding-x: $badge-font-size * 0.65; // 0.65em;
1216
+ $badge-border-radius: $border-radius;
1217
+
1218
+ // Modals
1219
+
1220
+ $modal-inner-padding: $spacer;
1221
+
1222
+ $modal-footer-margin-between: 0.5rem;
1223
+
1224
+ $modal-dialog-margin: 0.5rem;
1225
+ $modal-dialog-margin-y-sm-up: 1.75rem;
1226
+
1227
+ $modal-title-line-height: $line-height-base;
1228
+
1229
+ $modal-content-color: null;
1230
+ $modal-content-bg: $white;
1231
+ $modal-content-border-color: rgba($black, 0.65); // rgba($black, 0.2);
1232
+ $modal-content-border-width: $border-width;
1233
+ $modal-content-border-radius: $border-radius-lg;
1234
+ $modal-content-inner-border-radius: ${subtract(
1235
+ (t: ThemeVariables) => t['modal-content-border-radius'],
1236
+ (t: ThemeVariables) => t['modal-content-border-width'],
1237
+ )};
1238
+ $modal-content-box-shadow-xs: $box-shadow-sm;
1239
+ $modal-content-box-shadow-sm-up: $box-shadow;
1240
+
1241
+ $modal-backdrop-bg: $black;
1242
+ $modal-backdrop-opacity: 0.5;
1243
+ $modal-header-border-color: $border-color;
1244
+ $modal-footer-border-color: $modal-header-border-color;
1245
+ $modal-header-border-width: $modal-content-border-width;
1246
+ $modal-footer-border-width: $modal-header-border-width;
1247
+ $modal-header-padding-y: $modal-inner-padding;
1248
+ $modal-header-padding-x: $modal-inner-padding;
1249
+ $modal-header-padding: $modal-header-padding-y $modal-header-padding-x; // Keep this for backwards compatibility
1250
+
1251
+ $modal-sm: 300px;
1252
+ $modal-md: 500px;
1253
+ $modal-lg: 800px;
1254
+ $modal-xl: 1140px;
1255
+
1256
+ $modal-fade-transform: translate(0, -50px);
1257
+ $modal-show-transform: none;
1258
+ $modal-transition: transform 0.3s ease-out;
1259
+ $modal-scale-transform: scale(1.02);
1260
+
1261
+ // ...
1262
+
1263
+ // Alerts
1264
+ //
1265
+ // Define alert colors, border radius, and padding.
1266
+
1267
+ $alert-padding-y: $spacer;
1268
+ $alert-padding-x: $spacer;
1269
+ $alert-margin-bottom: 1rem;
1270
+ $alert-border-radius: $border-radius;
1271
+ $alert-link-font-weight: $font-weight-bold;
1272
+ $alert-border-width: $border-width;
1273
+ $alert-bg-scale: -80%;
1274
+ $alert-border-scale: -70%;
1275
+ $alert-color-scale: 40%;
1276
+ $alert-dismissible-padding-r: $alert-padding-x * 3; // 3x covers width of x plus default padding on either side
1277
+
1278
+ // Pagination
1279
+
1280
+ $pagination-padding-y: 0.375rem;
1281
+ $pagination-padding-x: 0.75rem;
1282
+ $pagination-padding-y-sm: 0.25rem;
1283
+ $pagination-padding-x-sm: 0.5rem;
1284
+ $pagination-padding-y-lg: 0.75rem;
1285
+ $pagination-padding-x-lg: 1.5rem;
1286
+
1287
+ $pagination-color: $link-color;
1288
+ $pagination-bg: $white;
1289
+ $pagination-border-width: $border-width;
1290
+ $pagination-border-radius: $border-radius;
1291
+ $pagination-margin-start: -$pagination-border-width;
1292
+ $pagination-border-color: $gray-300;
1293
+
1294
+ $pagination-focus-color: $link-hover-color;
1295
+ $pagination-focus-bg: $gray-200;
1296
+ $pagination-focus-box-shadow: $input-btn-focus-box-shadow;
1297
+ $pagination-focus-outline: 0;
1298
+
1299
+ $pagination-hover-color: $link-hover-color;
1300
+ $pagination-hover-bg: $gray-200;
1301
+ $pagination-hover-border-color: $gray-300;
1302
+
1303
+ $pagination-active-color: $component-active-color;
1304
+ $pagination-active-bg: $component-active-bg;
1305
+ $pagination-active-border-color: $pagination-active-bg;
1306
+
1307
+ $pagination-disabled-color: $gray-600;
1308
+ $pagination-disabled-bg: $white;
1309
+ $pagination-disabled-border-color: $gray-300;
1310
+
1311
+ $pagination-transition:
1312
+ color 0.15s ease-in-out,
1313
+ background-color 0.15s ease-in-out,
1314
+ border-color 0.15s ease-in-out,
1315
+ box-shadow 0.15s ease-in-out;
1316
+
1317
+ $pagination-border-radius-sm: $border-radius-sm;
1318
+ $pagination-border-radius-lg: $border-radius-lg;
1319
+
1320
+ // Progress bars
1321
+
1322
+ $progress-height: 1rem;
1323
+ $progress-font-size: $font-size-base * 0.75;
1324
+ $progress-bg: $gray-200;
1325
+ $progress-border-radius: $border-radius;
1326
+ $progress-box-shadow: $box-shadow-inset;
1327
+ $progress-bar-color: $white;
1328
+ $progress-bar-bg: $primary;
1329
+ $progress-bar-animation-timing: 1s linear infinite;
1330
+ $progress-bar-transition: width 0.6s ease;
1331
+
1332
+ // List group
1333
+
1334
+ $list-group-color: $gray-900;
1335
+ $list-group-bg: $white;
1336
+ $list-group-border-color: rgba($black, 0.125);
1337
+ $list-group-border-width: $border-width;
1338
+ $list-group-border-radius: $border-radius;
1339
+
1340
+ $list-group-item-padding-y: $spacer * 0.5;
1341
+ $list-group-item-padding-x: $spacer;
1342
+ $list-group-item-bg-scale: -80%;
1343
+ $list-group-item-color-scale: 40%;
1344
+
1345
+ $list-group-hover-bg: $gray-100;
1346
+ $list-group-active-color: $component-active-color;
1347
+ $list-group-active-bg: $component-active-bg;
1348
+ $list-group-active-border-color: $list-group-active-bg;
1349
+
1350
+ $list-group-disabled-color: $gray-600;
1351
+ $list-group-disabled-bg: $list-group-bg;
1352
+
1353
+ $list-group-action-color: $gray-700;
1354
+ $list-group-action-hover-color: $list-group-action-color;
1355
+
1356
+ $list-group-action-active-color: $body-color;
1357
+ $list-group-action-active-bg: $gray-200;
1358
+
1359
+ // ...
1360
+
1361
+ // Spinners
1362
+
1363
+ $spinner-width: 2rem;
1364
+ $spinner-height: $spinner-width;
1365
+ $spinner-vertical-align: $font-size-base * -0.125; // -.125em;
1366
+ $spinner-border-width: $font-size-base * 0.25; // .25em;
1367
+ $spinner-animation-speed: 0.75s;
1368
+
1369
+ $spinner-width-sm: 1rem;
1370
+ $spinner-height-sm: $spinner-width-sm;
1371
+ $spinner-border-width-sm: $font-size-base * 0.2; // .2em;
1372
+
1373
+ // Close
1374
+
1375
+ $btn-close-width: $font-size-base * 1; // 1em;
1376
+ $btn-close-height: $btn-close-width;
1377
+ $btn-close-padding-x: $font-size-base * 0.25; // .25em;
1378
+ $btn-close-padding-y: $btn-close-padding-x;
1379
+ $btn-close-color: $black;
1380
+ $btn-close-bg: ${url(
1381
+ "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>",
1382
+ )};
1383
+ $btn-close-focus-shadow: $input-btn-focus-box-shadow;
1384
+ $btn-close-opacity: 0.5;
1385
+ $btn-close-hover-opacity: 0.75;
1386
+ $btn-close-focus-opacity: 1;
1387
+ $btn-close-disabled-opacity: 0.25;
1388
+ // $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
1389
+
1390
+ // Offcanvas
1391
+
1392
+ $offcanvas-padding-y: $modal-inner-padding;
1393
+ $offcanvas-padding-x: $modal-inner-padding;
1394
+ $offcanvas-horizontal-width: 400px;
1395
+ $offcanvas-vertical-height: 200px; // 30vh;
1396
+ $offcanvas-transition-duration: 0.3s;
1397
+ $offcanvas-border-color: $modal-content-border-color;
1398
+ $offcanvas-border-width: $modal-content-border-width;
1399
+ $offcanvas-title-line-height: $modal-title-line-height;
1400
+ $offcanvas-bg-color: $modal-content-bg;
1401
+ $offcanvas-color: $modal-content-color;
1402
+ $offcanvas-box-shadow: $modal-content-box-shadow-xs;
1403
+ $offcanvas-backdrop-bg: $modal-backdrop-bg;
1404
+ $offcanvas-backdrop-opacity: $modal-backdrop-opacity;
1405
+
1406
+ // Code
1407
+
1408
+ $code-font-size: $small-font-size;
1409
+ $code-color: $pink;
1410
+
1411
+ $kbd-padding-y: 0.2rem;
1412
+ $kbd-padding-x: 0.4rem;
1413
+ $kbd-font-size: $code-font-size;
1414
+ $kbd-color: $white;
1415
+ $kbd-bg: $gray-900;
1416
+
1417
+ $pre-color: null;
1418
+ `;
1419
+
1420
+ export default variables;