jekyll-theme-conference 4.0.0 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -4
- data/_includes/get_program_config.html +5 -1
- data/_includes/get_start_times.html +12 -0
- data/_layouts/program.html +74 -30
- data/_sass/bootstrap/scss/_accordion.scss +153 -0
- data/_sass/bootstrap/scss/_alert.scss +68 -0
- data/_sass/bootstrap/scss/_badge.scss +38 -0
- data/_sass/bootstrap/scss/_breadcrumb.scss +40 -0
- data/_sass/bootstrap/scss/_button-group.scss +147 -0
- data/_sass/bootstrap/scss/_buttons.scss +216 -0
- data/_sass/bootstrap/scss/_card.scss +238 -0
- data/_sass/bootstrap/scss/_carousel.scss +226 -0
- data/_sass/bootstrap/scss/_close.scss +66 -0
- data/_sass/bootstrap/scss/_containers.scss +41 -0
- data/_sass/bootstrap/scss/_dropdown.scss +250 -0
- data/_sass/bootstrap/scss/_forms.scss +9 -0
- data/_sass/bootstrap/scss/_functions.scss +302 -0
- data/_sass/bootstrap/scss/_grid.scss +39 -0
- data/_sass/bootstrap/scss/_helpers.scss +12 -0
- data/_sass/bootstrap/scss/_images.scss +42 -0
- data/_sass/bootstrap/scss/_list-group.scss +199 -0
- data/_sass/bootstrap/scss/_maps.scss +174 -0
- data/_sass/bootstrap/scss/_mixins.scss +42 -0
- data/_sass/bootstrap/scss/_modal.scss +240 -0
- data/_sass/bootstrap/scss/_nav.scss +197 -0
- data/_sass/bootstrap/scss/_navbar.scss +289 -0
- data/_sass/bootstrap/scss/_offcanvas.scss +147 -0
- data/_sass/bootstrap/scss/_pagination.scss +109 -0
- data/_sass/bootstrap/scss/_placeholders.scss +51 -0
- data/_sass/bootstrap/scss/_popover.scss +196 -0
- data/_sass/bootstrap/scss/_progress.scss +68 -0
- data/_sass/bootstrap/scss/_reboot.scss +617 -0
- data/_sass/bootstrap/scss/_root.scss +187 -0
- data/_sass/bootstrap/scss/_spinners.scss +86 -0
- data/_sass/bootstrap/scss/_tables.scss +171 -0
- data/_sass/bootstrap/scss/_toasts.scss +73 -0
- data/_sass/bootstrap/scss/_tooltip.scss +119 -0
- data/_sass/bootstrap/scss/_transitions.scss +27 -0
- data/_sass/bootstrap/scss/_type.scss +106 -0
- data/_sass/bootstrap/scss/_utilities.scss +806 -0
- data/_sass/bootstrap/scss/_variables-dark.scss +102 -0
- data/_sass/bootstrap/scss/_variables.scss +1753 -0
- data/_sass/bootstrap/scss/bootstrap-grid.scss +62 -0
- data/_sass/bootstrap/scss/bootstrap-reboot.scss +10 -0
- data/_sass/bootstrap/scss/bootstrap-utilities.scss +19 -0
- data/_sass/bootstrap/scss/bootstrap.scss +52 -0
- data/_sass/bootstrap/scss/forms/_floating-labels.scss +97 -0
- data/_sass/bootstrap/scss/forms/_form-check.scss +189 -0
- data/_sass/bootstrap/scss/forms/_form-control.scss +214 -0
- data/_sass/bootstrap/scss/forms/_form-range.scss +91 -0
- data/_sass/bootstrap/scss/forms/_form-select.scss +80 -0
- data/_sass/bootstrap/scss/forms/_form-text.scss +11 -0
- data/_sass/bootstrap/scss/forms/_input-group.scss +132 -0
- data/_sass/bootstrap/scss/forms/_labels.scss +36 -0
- data/_sass/bootstrap/scss/forms/_validation.scss +12 -0
- data/_sass/bootstrap/scss/helpers/_clearfix.scss +3 -0
- data/_sass/bootstrap/scss/helpers/_color-bg.scss +7 -0
- data/_sass/bootstrap/scss/helpers/_colored-links.scss +30 -0
- data/_sass/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- data/_sass/bootstrap/scss/helpers/_icon-link.scss +25 -0
- data/_sass/bootstrap/scss/helpers/_position.scss +36 -0
- data/_sass/bootstrap/scss/helpers/_ratio.scss +26 -0
- data/_sass/bootstrap/scss/helpers/_stacks.scss +15 -0
- data/_sass/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- data/_sass/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- data/_sass/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- data/_sass/bootstrap/scss/helpers/_vr.scss +8 -0
- data/_sass/bootstrap/scss/mixins/_alert.scss +18 -0
- data/_sass/bootstrap/scss/mixins/_backdrop.scss +14 -0
- data/_sass/bootstrap/scss/mixins/_banner.scss +7 -0
- data/_sass/bootstrap/scss/mixins/_border-radius.scss +78 -0
- data/_sass/bootstrap/scss/mixins/_box-shadow.scss +24 -0
- data/_sass/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- data/_sass/bootstrap/scss/mixins/_buttons.scss +70 -0
- data/_sass/bootstrap/scss/mixins/_caret.scss +69 -0
- data/_sass/bootstrap/scss/mixins/_clearfix.scss +9 -0
- data/_sass/bootstrap/scss/mixins/_color-mode.scss +21 -0
- data/_sass/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- data/_sass/bootstrap/scss/mixins/_container.scss +11 -0
- data/_sass/bootstrap/scss/mixins/_deprecate.scss +10 -0
- data/_sass/bootstrap/scss/mixins/_forms.scss +163 -0
- data/_sass/bootstrap/scss/mixins/_gradients.scss +47 -0
- data/_sass/bootstrap/scss/mixins/_grid.scss +151 -0
- data/_sass/bootstrap/scss/mixins/_image.scss +16 -0
- data/_sass/bootstrap/scss/mixins/_list-group.scss +26 -0
- data/_sass/bootstrap/scss/mixins/_lists.scss +7 -0
- data/_sass/bootstrap/scss/mixins/_pagination.scss +10 -0
- data/_sass/bootstrap/scss/mixins/_reset-text.scss +17 -0
- data/_sass/bootstrap/scss/mixins/_resize.scss +6 -0
- data/_sass/bootstrap/scss/mixins/_table-variants.scss +24 -0
- data/_sass/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- data/_sass/bootstrap/scss/mixins/_transition.scss +26 -0
- data/_sass/bootstrap/scss/mixins/_utilities.scss +97 -0
- data/_sass/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- data/_sass/bootstrap/scss/utilities/_api.scss +47 -0
- data/_sass/bootstrap/scss/vendor/_rfs.scss +348 -0
- data/_sass/bootstrap-icons/font/bootstrap-icons.css +2106 -0
- data/_sass/bootstrap-icons/font/bootstrap-icons.min.css +5 -0
- data/_sass/bootstrap-icons/font/bootstrap-icons.scss +2118 -0
- data/_sass/bootstrap.scss +45 -0
- data/_sass/conference.scss +19 -0
- data/_sass/leaflet/dist/leaflet.css +661 -0
- data/_sass/leaflet-easybutton/src/easy-button.css +56 -0
- data/_sass/leaflet.locatecontrol/dist/L.Control.Locate.css +61 -0
- data/_sass/theme.scss +217 -0
- data/assets/css/conference-only.bundle.css +1 -1
- data/assets/css/conference.bundle.css +1 -1
- data/assets/js/leaflet.bundle.js +3 -3
- metadata +104 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb6885a7dd29e4d0448899ed9ceb3697e4c662bf8d5d7526111b75cd74701686
|
|
4
|
+
data.tar.gz: 619841748b22d87bcc3f9e93d5ddc193fed314f8a52abd27853f1e1d7c4ce3a1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 87ed50dda511d8308a865682c62b91ab77050139543d39efdc4ff8958d698f9112be253d4a68c005e169215432baa1a8ef65075832ffa56a3408da5370aa5d3a
|
|
7
|
+
data.tar.gz: 492c12d703bcf061bee43117efcf04a197cc396349c77195c673191b670a4f5555975ef7352315d2c3f11f552d6b536c4f07a35c5b9c0d5178608f968786e98e
|
data/README.md
CHANGED
|
@@ -127,15 +127,15 @@ To install:
|
|
|
127
127
|
bundle
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@
|
|
130
|
+
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v4.0.1"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
|
131
131
|
|
|
132
132
|
```yaml
|
|
133
|
-
remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@
|
|
133
|
+
remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v4.0.2"
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
5. Continue with the [_Setup_](#setup) section below to customize the theme and add content for your conference.
|
|
137
137
|
|
|
138
|
-
To update the theme, change the version tag in the `remote_theme` value (e.g., `@
|
|
138
|
+
To update the theme, change the version tag in the `remote_theme` value (e.g., `@v4.0.0` to `@v4.1.0`).
|
|
139
139
|
|
|
140
140
|
|
|
141
141
|
## Setup
|
|
@@ -706,8 +706,10 @@ window.conference.awaitReady().then(async () => {
|
|
|
706
706
|
Program settings are configured directly in the Front Matter of the program page (the page with `layout: program`). The program page's Front Matter supports the following properties:
|
|
707
707
|
|
|
708
708
|
- `title`: The title shown on the program page (defaults to "Program")
|
|
709
|
-
- `time_steps`: The time interval in minutes for each row in the schedule grid (default: `15`)
|
|
709
|
+
- `time_steps`: The time interval in minutes for each row in the schedule grid or `start` to show only the intervals that correspond to a talk start time (default: `15`)
|
|
710
710
|
- `show_alltimes`: Show time labels for all intervals, not just full hours (default: `false`)
|
|
711
|
+
- `show_first_hour`: Always show hour in time label of first row (default: `false`)
|
|
712
|
+
- `hide_legend`: Hide track legends at the bottom of program table (default: `false`)
|
|
711
713
|
|
|
712
714
|
```yaml
|
|
713
715
|
---
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
{%- if program_page -%}
|
|
13
13
|
{%- assign program_url = program_page.url -%}
|
|
14
14
|
{%- if program_page.time_steps -%}
|
|
15
|
-
{%-
|
|
15
|
+
{%- if program_page.time_steps == "start" -%}
|
|
16
|
+
{%- assign program_time_steps = 1 -%}
|
|
17
|
+
{%- else -%}
|
|
18
|
+
{%- assign program_time_steps = program_page.time_steps -%}
|
|
19
|
+
{%- endif -%}
|
|
16
20
|
{%- endif -%}
|
|
17
21
|
{%- endif -%}
|
|
18
22
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{%- assign selected_day = site.data.program.days | where: "date", d.date | first -%}
|
|
2
|
+
{%- assign start_times = "" | split: "," -%}
|
|
3
|
+
|
|
4
|
+
{%- if selected_day -%}
|
|
5
|
+
{%- for room in selected_day.rooms -%}
|
|
6
|
+
{%- for talk in room.talks -%}
|
|
7
|
+
{%- unless start_times contains talk.time_start -%}
|
|
8
|
+
{%- assign start_times = start_times | push: talk.time_start -%}
|
|
9
|
+
{%- endunless -%}
|
|
10
|
+
{%- endfor -%}
|
|
11
|
+
{%- endfor -%}
|
|
12
|
+
{%- endif -%}
|
data/_layouts/program.html
CHANGED
|
@@ -64,32 +64,55 @@
|
|
|
64
64
|
{%- assign day_end_hour = day_end_day | minus: day_start_day | times: 24 | plus: day_end_hour -%}
|
|
65
65
|
{%- endif -%}
|
|
66
66
|
|
|
67
|
-
{%-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
{%- assign
|
|
72
|
-
|
|
73
|
-
{%-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
67
|
+
{%- unless page.time_steps == "start" -%}
|
|
68
|
+
{%- assign time_steps = page.time_steps | default: 15 -%}
|
|
69
|
+
|
|
70
|
+
{%- assign day_duration_min = day_end_hour | minus: day_start_hour | times: 60 | minus: day_start_min | plus: day_end_min -%}
|
|
71
|
+
{%- assign nbr_steps = day_duration_min | divided_by: time_steps -%}
|
|
72
|
+
{%- else -%}
|
|
73
|
+
{%- assign time_steps = 1 -%}
|
|
74
|
+
{%- include get_start_times.html -%}
|
|
75
|
+
{%- assign nbr_steps = start_times.size %}
|
|
76
|
+
{%- endunless -%}
|
|
77
|
+
|
|
78
|
+
{%- for step_idx in (1..nbr_steps) -%}
|
|
79
|
+
|
|
80
|
+
{%- unless page.time_steps == "start" -%}
|
|
81
|
+
{%- assign current_hour = step_idx | minus: 1 | times: time_steps | plus: day_start_min | divided_by: 60 | floor | plus: day_start_hour | modulo: 24 -%}
|
|
82
|
+
{%- assign current_min = step_idx | minus: 1 | times: time_steps | plus: day_start_min | modulo: 60 -%}
|
|
80
83
|
{%- else -%}
|
|
81
|
-
{
|
|
82
|
-
|
|
84
|
+
{% assign start_time_idx = step_idx | minus: 1 %}
|
|
85
|
+
{% assign current_time = start_times[start_time_idx] %}
|
|
86
|
+
|
|
87
|
+
{% assign current_hour = current_time | split: ":" | first | plus: 0 %}
|
|
88
|
+
{% assign current_min = current_time | split: ":" | last | plus: 0 %}
|
|
89
|
+
{%- endunless -%}
|
|
83
90
|
|
|
84
91
|
<tr class="h-100">
|
|
85
92
|
|
|
86
|
-
{%- if current_min == 0 -%}
|
|
93
|
+
{%- if current_min == 0 or page.time_steps == "start" -%}
|
|
87
94
|
<th scope="row" class="program-time text-end">
|
|
88
|
-
{
|
|
95
|
+
{%- if current_min < 10 -%}
|
|
96
|
+
{{- current_hour | append: ':0' | append: current_min -}}
|
|
97
|
+
{%- else -%}
|
|
98
|
+
{{- current_hour | append: ':' | append: current_min -}}
|
|
99
|
+
{%- endif -%}
|
|
89
100
|
</th>
|
|
90
101
|
{%- elsif page.show_alltimes -%}
|
|
91
102
|
<th scope="row" class="program-time text-end text-muted fw-normal">
|
|
92
|
-
|
|
103
|
+
{%- if page.show_first_hour and step_idx == 1 -%}
|
|
104
|
+
{%- if current_min < 10 -%}
|
|
105
|
+
{{- current_hour | append: ':0' | append: current_min -}}
|
|
106
|
+
{%- else -%}
|
|
107
|
+
{{- current_hour | append: ':' | append: current_min -}}
|
|
108
|
+
{%- endif -%}
|
|
109
|
+
{%- else -%}
|
|
110
|
+
{%- if current_min < 10 -%}
|
|
111
|
+
{{- ':0' | append: current_min -}}
|
|
112
|
+
{%- else -%}
|
|
113
|
+
{{- ':' | append: current_min -}}
|
|
114
|
+
{%- endif -%}
|
|
115
|
+
{%- endif -%}
|
|
93
116
|
</th>
|
|
94
117
|
{%- else -%}
|
|
95
118
|
<th scope="row"></th>
|
|
@@ -105,24 +128,26 @@
|
|
|
105
128
|
|
|
106
129
|
{%- include get_talk_time.html -%}
|
|
107
130
|
|
|
108
|
-
{%- assign d_start_hour =
|
|
131
|
+
{%- assign d_start_hour = current_hour | minus: talk_start_hour -%}
|
|
109
132
|
{%- assign d_start_min = current_min | minus: talk_start_min -%}
|
|
110
|
-
{%- assign d_end_hour =
|
|
133
|
+
{%- assign d_end_hour = current_hour | minus: talk_end_hour -%}
|
|
111
134
|
{%- assign d_end_min = current_min | minus: talk_end_min -%}
|
|
112
135
|
|
|
113
|
-
{%-
|
|
114
|
-
|
|
115
|
-
|
|
136
|
+
{%- if talk_start_hour > talk_end_hour -%}
|
|
137
|
+
{%- if current_hour >= talk_start_hour -%}
|
|
138
|
+
{%- assign d_end_hour = current_hour | minus: 24 | minus: talk_end_hour -%}
|
|
139
|
+
{%- else -%}
|
|
140
|
+
{%- assign d_start_hour = current_hour | plus: 24 | minus: talk_start_hour -%}
|
|
141
|
+
{%- endif -%}
|
|
116
142
|
{%- endif -%}
|
|
117
|
-
|
|
143
|
+
|
|
144
|
+
{%- assign has_started = false -%}
|
|
145
|
+
{%- if d_start_hour > 0 or d_start_hour == 0 and d_start_min >= 0 -%}
|
|
118
146
|
{%- assign has_started = true -%}
|
|
119
147
|
{%- endif -%}
|
|
120
148
|
|
|
121
149
|
{%- assign has_ended = false -%}
|
|
122
|
-
{%- if d_end_hour == 0 and d_end_min >= 0 -%}
|
|
123
|
-
{%- assign has_ended = true -%}
|
|
124
|
-
{%- endif -%}
|
|
125
|
-
{%- if d_end_hour > 0 -%}
|
|
150
|
+
{%- if d_end_hour > 0 or d_end_hour == 0 and d_end_min >= 0 -%}
|
|
126
151
|
{%- assign has_ended = true -%}
|
|
127
152
|
{%- endif -%}
|
|
128
153
|
|
|
@@ -132,7 +157,24 @@
|
|
|
132
157
|
|
|
133
158
|
{%- if d_start_hour == 0 and d_start_min == 0 -%}
|
|
134
159
|
|
|
135
|
-
{%-
|
|
160
|
+
{%- unless page.time_steps == "start" -%}
|
|
161
|
+
{%- assign talk_nbr_steps = talk_duration_min | divided_by: time_steps -%}
|
|
162
|
+
{%- else -%}
|
|
163
|
+
{%- assign talk_nbr_steps = 0 -%}
|
|
164
|
+
{%- for start_time in start_times -%}
|
|
165
|
+
{%- assign start_hour = start_time | split: ":" | first | plus: 0 -%}
|
|
166
|
+
{%- assign start_min = start_time | split: ":" | last | plus: 0 -%}
|
|
167
|
+
{%- assign d_start_hour = start_hour | minus: talk_start_hour -%}
|
|
168
|
+
{%- if talk_start_hour > talk_end_hour and start_hour < talk_start_hour -%}
|
|
169
|
+
{%- assign d_start_hour = d_start_hour | plus: 24 -%}
|
|
170
|
+
{%- endif -%}
|
|
171
|
+
{%- assign start_ts = d_start_hour | times: 60 | plus: start_min | minus: talk_start_min -%}
|
|
172
|
+
{%- if start_ts >= 0 and start_ts < talk_duration_min -%}
|
|
173
|
+
{%- assign talk_nbr_steps = talk_nbr_steps | plus: 1 -%}
|
|
174
|
+
{%- endif -%}
|
|
175
|
+
{%- endfor -%}
|
|
176
|
+
{%- endunless -%}
|
|
177
|
+
|
|
136
178
|
{%- include get_track_properties.html -%}
|
|
137
179
|
<td rowspan="{{ talk_nbr_steps }}" class="program-talk p-0 h-100">
|
|
138
180
|
<div class="h-100 p-2 bg-{{ track_color }}-subtle text-{{ track_color }}-emphasis border-4 border-start border-{{ track_color }}-subtle shadow-sm overflow-hidden">
|
|
@@ -181,12 +223,14 @@
|
|
|
181
223
|
{%- endif -%}
|
|
182
224
|
|
|
183
225
|
{%- if site.conference.talks.tracks %}
|
|
184
|
-
|
|
226
|
+
{%- unless page.hide_legend -%}
|
|
227
|
+
<h5 class="mt-4">{{ site.data.lang[site.conference.lang].program.legend | default: "Caption" }}</h5>
|
|
185
228
|
{%- for track_prop in site.conference.talks.tracks %}
|
|
186
229
|
<div class="d-block d-sm-inline-block m-1 p-1 ps-2 pe-2 bg-{{ track_prop.color | default: 'light' }}-subtle text-{{ track_prop.color | default: 'light' }}-emphasis border-start border-4 border-{{ track_prop.color | default: 'light' }}-subtle fw-normal">
|
|
187
230
|
{{- track_prop.name -}}
|
|
188
231
|
</div>
|
|
189
232
|
{%- endfor -%}
|
|
233
|
+
{%- endunless -%}
|
|
190
234
|
{%- endif -%}
|
|
191
235
|
|
|
192
236
|
{% include footer.html %}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Base styles
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
.accordion {
|
|
6
|
+
// scss-docs-start accordion-css-vars
|
|
7
|
+
--#{$prefix}accordion-color: #{$accordion-color};
|
|
8
|
+
--#{$prefix}accordion-bg: #{$accordion-bg};
|
|
9
|
+
--#{$prefix}accordion-transition: #{$accordion-transition};
|
|
10
|
+
--#{$prefix}accordion-border-color: #{$accordion-border-color};
|
|
11
|
+
--#{$prefix}accordion-border-width: #{$accordion-border-width};
|
|
12
|
+
--#{$prefix}accordion-border-radius: #{$accordion-border-radius};
|
|
13
|
+
--#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
|
|
14
|
+
--#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
|
|
15
|
+
--#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
|
|
16
|
+
--#{$prefix}accordion-btn-color: #{$accordion-button-color};
|
|
17
|
+
--#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
|
|
18
|
+
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
|
|
19
|
+
--#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
|
|
20
|
+
--#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
|
|
21
|
+
--#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
|
|
22
|
+
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
|
|
23
|
+
--#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
|
|
24
|
+
--#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
|
|
25
|
+
--#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
|
|
26
|
+
--#{$prefix}accordion-active-color: #{$accordion-button-active-color};
|
|
27
|
+
--#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};
|
|
28
|
+
// scss-docs-end accordion-css-vars
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.accordion-button {
|
|
32
|
+
position: relative;
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
width: 100%;
|
|
36
|
+
padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x);
|
|
37
|
+
@include font-size($font-size-base);
|
|
38
|
+
color: var(--#{$prefix}accordion-btn-color);
|
|
39
|
+
text-align: left; // Reset button style
|
|
40
|
+
background-color: var(--#{$prefix}accordion-btn-bg);
|
|
41
|
+
border: 0;
|
|
42
|
+
@include border-radius(0);
|
|
43
|
+
overflow-anchor: none;
|
|
44
|
+
@include transition(var(--#{$prefix}accordion-transition));
|
|
45
|
+
|
|
46
|
+
&:not(.collapsed) {
|
|
47
|
+
color: var(--#{$prefix}accordion-active-color);
|
|
48
|
+
background-color: var(--#{$prefix}accordion-active-bg);
|
|
49
|
+
box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
|
|
50
|
+
|
|
51
|
+
&::after {
|
|
52
|
+
background-image: var(--#{$prefix}accordion-btn-active-icon);
|
|
53
|
+
transform: var(--#{$prefix}accordion-btn-icon-transform);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Accordion icon
|
|
58
|
+
&::after {
|
|
59
|
+
flex-shrink: 0;
|
|
60
|
+
width: var(--#{$prefix}accordion-btn-icon-width);
|
|
61
|
+
height: var(--#{$prefix}accordion-btn-icon-width);
|
|
62
|
+
margin-left: auto;
|
|
63
|
+
content: "";
|
|
64
|
+
background-image: var(--#{$prefix}accordion-btn-icon);
|
|
65
|
+
background-repeat: no-repeat;
|
|
66
|
+
background-size: var(--#{$prefix}accordion-btn-icon-width);
|
|
67
|
+
@include transition(var(--#{$prefix}accordion-btn-icon-transition));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&:hover {
|
|
71
|
+
z-index: 2;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&:focus {
|
|
75
|
+
z-index: 3;
|
|
76
|
+
outline: 0;
|
|
77
|
+
box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.accordion-header {
|
|
82
|
+
margin-bottom: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.accordion-item {
|
|
86
|
+
color: var(--#{$prefix}accordion-color);
|
|
87
|
+
background-color: var(--#{$prefix}accordion-bg);
|
|
88
|
+
border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color);
|
|
89
|
+
|
|
90
|
+
&:first-of-type {
|
|
91
|
+
@include border-top-radius(var(--#{$prefix}accordion-border-radius));
|
|
92
|
+
|
|
93
|
+
> .accordion-header .accordion-button {
|
|
94
|
+
@include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&:not(:first-of-type) {
|
|
99
|
+
border-top: 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Only set a border-radius on the last item if the accordion is collapsed
|
|
103
|
+
&:last-of-type {
|
|
104
|
+
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
|
105
|
+
|
|
106
|
+
> .accordion-header .accordion-button {
|
|
107
|
+
&.collapsed {
|
|
108
|
+
@include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
> .accordion-collapse {
|
|
113
|
+
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.accordion-body {
|
|
119
|
+
padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
// Flush accordion items
|
|
124
|
+
//
|
|
125
|
+
// Remove borders and border-radius to keep accordion items edge-to-edge.
|
|
126
|
+
|
|
127
|
+
.accordion-flush {
|
|
128
|
+
> .accordion-item {
|
|
129
|
+
border-right: 0;
|
|
130
|
+
border-left: 0;
|
|
131
|
+
@include border-radius(0);
|
|
132
|
+
|
|
133
|
+
&:first-child { border-top: 0; }
|
|
134
|
+
&:last-child { border-bottom: 0; }
|
|
135
|
+
|
|
136
|
+
// stylelint-disable selector-max-class
|
|
137
|
+
> .accordion-collapse,
|
|
138
|
+
> .accordion-header .accordion-button,
|
|
139
|
+
> .accordion-header .accordion-button.collapsed {
|
|
140
|
+
@include border-radius(0);
|
|
141
|
+
}
|
|
142
|
+
// stylelint-enable selector-max-class
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@if $enable-dark-mode {
|
|
147
|
+
@include color-mode(dark) {
|
|
148
|
+
.accordion-button::after {
|
|
149
|
+
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)};
|
|
150
|
+
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Base styles
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
.alert {
|
|
6
|
+
// scss-docs-start alert-css-vars
|
|
7
|
+
--#{$prefix}alert-bg: transparent;
|
|
8
|
+
--#{$prefix}alert-padding-x: #{$alert-padding-x};
|
|
9
|
+
--#{$prefix}alert-padding-y: #{$alert-padding-y};
|
|
10
|
+
--#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
|
|
11
|
+
--#{$prefix}alert-color: inherit;
|
|
12
|
+
--#{$prefix}alert-border-color: transparent;
|
|
13
|
+
--#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
|
|
14
|
+
--#{$prefix}alert-border-radius: #{$alert-border-radius};
|
|
15
|
+
--#{$prefix}alert-link-color: inherit;
|
|
16
|
+
// scss-docs-end alert-css-vars
|
|
17
|
+
|
|
18
|
+
position: relative;
|
|
19
|
+
padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
|
|
20
|
+
margin-bottom: var(--#{$prefix}alert-margin-bottom);
|
|
21
|
+
color: var(--#{$prefix}alert-color);
|
|
22
|
+
background-color: var(--#{$prefix}alert-bg);
|
|
23
|
+
border: var(--#{$prefix}alert-border);
|
|
24
|
+
@include border-radius(var(--#{$prefix}alert-border-radius));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Headings for larger alerts
|
|
28
|
+
.alert-heading {
|
|
29
|
+
// Specified to prevent conflicts of changing $headings-color
|
|
30
|
+
color: inherit;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Provide class for links that match alerts
|
|
34
|
+
.alert-link {
|
|
35
|
+
font-weight: $alert-link-font-weight;
|
|
36
|
+
color: var(--#{$prefix}alert-link-color);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
// Dismissible alerts
|
|
41
|
+
//
|
|
42
|
+
// Expand the right padding and account for the close button's positioning.
|
|
43
|
+
|
|
44
|
+
.alert-dismissible {
|
|
45
|
+
padding-right: $alert-dismissible-padding-r;
|
|
46
|
+
|
|
47
|
+
// Adjust close link position
|
|
48
|
+
.btn-close {
|
|
49
|
+
position: absolute;
|
|
50
|
+
top: 0;
|
|
51
|
+
right: 0;
|
|
52
|
+
z-index: $stretched-link-z-index + 1;
|
|
53
|
+
padding: $alert-padding-y * 1.25 $alert-padding-x;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
// scss-docs-start alert-modifiers
|
|
59
|
+
// Generate contextual modifier classes for colorizing the alert
|
|
60
|
+
@each $state in map-keys($theme-colors) {
|
|
61
|
+
.alert-#{$state} {
|
|
62
|
+
--#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
|
|
63
|
+
--#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
|
64
|
+
--#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
|
|
65
|
+
--#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// scss-docs-end alert-modifiers
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Base class
|
|
2
|
+
//
|
|
3
|
+
// Requires one of the contextual, color modifier classes for `color` and
|
|
4
|
+
// `background-color`.
|
|
5
|
+
|
|
6
|
+
.badge {
|
|
7
|
+
// scss-docs-start badge-css-vars
|
|
8
|
+
--#{$prefix}badge-padding-x: #{$badge-padding-x};
|
|
9
|
+
--#{$prefix}badge-padding-y: #{$badge-padding-y};
|
|
10
|
+
@include rfs($badge-font-size, --#{$prefix}badge-font-size);
|
|
11
|
+
--#{$prefix}badge-font-weight: #{$badge-font-weight};
|
|
12
|
+
--#{$prefix}badge-color: #{$badge-color};
|
|
13
|
+
--#{$prefix}badge-border-radius: #{$badge-border-radius};
|
|
14
|
+
// scss-docs-end badge-css-vars
|
|
15
|
+
|
|
16
|
+
display: inline-block;
|
|
17
|
+
padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
|
|
18
|
+
@include font-size(var(--#{$prefix}badge-font-size));
|
|
19
|
+
font-weight: var(--#{$prefix}badge-font-weight);
|
|
20
|
+
line-height: 1;
|
|
21
|
+
color: var(--#{$prefix}badge-color);
|
|
22
|
+
text-align: center;
|
|
23
|
+
white-space: nowrap;
|
|
24
|
+
vertical-align: baseline;
|
|
25
|
+
@include border-radius(var(--#{$prefix}badge-border-radius));
|
|
26
|
+
@include gradient-bg();
|
|
27
|
+
|
|
28
|
+
// Empty badges collapse automatically
|
|
29
|
+
&:empty {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Quick fix for badges in buttons
|
|
35
|
+
.btn .badge {
|
|
36
|
+
position: relative;
|
|
37
|
+
top: -1px;
|
|
38
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.breadcrumb {
|
|
2
|
+
// scss-docs-start breadcrumb-css-vars
|
|
3
|
+
--#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
|
|
4
|
+
--#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
|
|
5
|
+
--#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
|
|
6
|
+
@include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
|
|
7
|
+
--#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
|
|
8
|
+
--#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
|
|
9
|
+
--#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
|
|
10
|
+
--#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
|
|
11
|
+
--#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
|
|
12
|
+
// scss-docs-end breadcrumb-css-vars
|
|
13
|
+
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-wrap: wrap;
|
|
16
|
+
padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x);
|
|
17
|
+
margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom);
|
|
18
|
+
@include font-size(var(--#{$prefix}breadcrumb-font-size));
|
|
19
|
+
list-style: none;
|
|
20
|
+
background-color: var(--#{$prefix}breadcrumb-bg);
|
|
21
|
+
@include border-radius(var(--#{$prefix}breadcrumb-border-radius));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.breadcrumb-item {
|
|
25
|
+
// The separator between breadcrumbs (by default, a forward-slash: "/")
|
|
26
|
+
+ .breadcrumb-item {
|
|
27
|
+
padding-left: var(--#{$prefix}breadcrumb-item-padding-x);
|
|
28
|
+
|
|
29
|
+
&::before {
|
|
30
|
+
float: left; // Suppress inline spacings and underlining of the separator
|
|
31
|
+
padding-right: var(--#{$prefix}breadcrumb-item-padding-x);
|
|
32
|
+
color: var(--#{$prefix}breadcrumb-divider-color);
|
|
33
|
+
content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&.active {
|
|
38
|
+
color: var(--#{$prefix}breadcrumb-item-active-color);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Make the div behave like a button
|
|
2
|
+
.btn-group,
|
|
3
|
+
.btn-group-vertical {
|
|
4
|
+
position: relative;
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
vertical-align: middle; // match .btn alignment given font-size hack above
|
|
7
|
+
|
|
8
|
+
> .btn {
|
|
9
|
+
position: relative;
|
|
10
|
+
flex: 1 1 auto;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Bring the hover, focused, and "active" buttons to the front to overlay
|
|
14
|
+
// the borders properly
|
|
15
|
+
> .btn-check:checked + .btn,
|
|
16
|
+
> .btn-check:focus + .btn,
|
|
17
|
+
> .btn:hover,
|
|
18
|
+
> .btn:focus,
|
|
19
|
+
> .btn:active,
|
|
20
|
+
> .btn.active {
|
|
21
|
+
z-index: 1;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Optional: Group multiple button groups together for a toolbar
|
|
26
|
+
.btn-toolbar {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
justify-content: flex-start;
|
|
30
|
+
|
|
31
|
+
.input-group {
|
|
32
|
+
width: auto;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.btn-group {
|
|
37
|
+
@include border-radius($btn-border-radius);
|
|
38
|
+
|
|
39
|
+
// Prevent double borders when buttons are next to each other
|
|
40
|
+
> :not(.btn-check:first-child) + .btn,
|
|
41
|
+
> .btn-group:not(:first-child) {
|
|
42
|
+
margin-left: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Reset rounded corners
|
|
46
|
+
> .btn:not(:last-child):not(.dropdown-toggle),
|
|
47
|
+
> .btn.dropdown-toggle-split:first-child,
|
|
48
|
+
> .btn-group:not(:last-child) > .btn {
|
|
49
|
+
@include border-end-radius(0);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// The left radius should be 0 if the button is:
|
|
53
|
+
// - the "third or more" child
|
|
54
|
+
// - the second child and the previous element isn't `.btn-check` (making it the first child visually)
|
|
55
|
+
// - part of a btn-group which isn't the first child
|
|
56
|
+
> .btn:nth-child(n + 3),
|
|
57
|
+
> :not(.btn-check) + .btn,
|
|
58
|
+
> .btn-group:not(:first-child) > .btn {
|
|
59
|
+
@include border-start-radius(0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Sizing
|
|
64
|
+
//
|
|
65
|
+
// Remix the default button sizing classes into new ones for easier manipulation.
|
|
66
|
+
|
|
67
|
+
.btn-group-sm > .btn { @extend .btn-sm; }
|
|
68
|
+
.btn-group-lg > .btn { @extend .btn-lg; }
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
//
|
|
72
|
+
// Split button dropdowns
|
|
73
|
+
//
|
|
74
|
+
|
|
75
|
+
.dropdown-toggle-split {
|
|
76
|
+
padding-right: $btn-padding-x * .75;
|
|
77
|
+
padding-left: $btn-padding-x * .75;
|
|
78
|
+
|
|
79
|
+
&::after,
|
|
80
|
+
.dropup &::after,
|
|
81
|
+
.dropend &::after {
|
|
82
|
+
margin-left: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.dropstart &::before {
|
|
86
|
+
margin-right: 0;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.btn-sm + .dropdown-toggle-split {
|
|
91
|
+
padding-right: $btn-padding-x-sm * .75;
|
|
92
|
+
padding-left: $btn-padding-x-sm * .75;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.btn-lg + .dropdown-toggle-split {
|
|
96
|
+
padding-right: $btn-padding-x-lg * .75;
|
|
97
|
+
padding-left: $btn-padding-x-lg * .75;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
// The clickable button for toggling the menu
|
|
102
|
+
// Set the same inset shadow as the :active state
|
|
103
|
+
.btn-group.show .dropdown-toggle {
|
|
104
|
+
@include box-shadow($btn-active-box-shadow);
|
|
105
|
+
|
|
106
|
+
// Show no shadow for `.btn-link` since it has no other button styles.
|
|
107
|
+
&.btn-link {
|
|
108
|
+
@include box-shadow(none);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
//
|
|
114
|
+
// Vertical button groups
|
|
115
|
+
//
|
|
116
|
+
|
|
117
|
+
.btn-group-vertical {
|
|
118
|
+
flex-direction: column;
|
|
119
|
+
align-items: flex-start;
|
|
120
|
+
justify-content: center;
|
|
121
|
+
|
|
122
|
+
> .btn,
|
|
123
|
+
> .btn-group {
|
|
124
|
+
width: 100%;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
> .btn:not(:first-child),
|
|
128
|
+
> .btn-group:not(:first-child) {
|
|
129
|
+
margin-top: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Reset rounded corners
|
|
133
|
+
> .btn:not(:last-child):not(.dropdown-toggle),
|
|
134
|
+
> .btn-group:not(:last-child) > .btn {
|
|
135
|
+
@include border-bottom-radius(0);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// The top radius should be 0 if the button is:
|
|
139
|
+
// - the "third or more" child
|
|
140
|
+
// - the second child and the previous element isn't `.btn-check` (making it the first child visually)
|
|
141
|
+
// - part of a btn-group which isn't the first child
|
|
142
|
+
> .btn:nth-child(n + 3),
|
|
143
|
+
> :not(.btn-check) + .btn,
|
|
144
|
+
> .btn-group:not(:first-child) > .btn {
|
|
145
|
+
@include border-top-radius(0);
|
|
146
|
+
}
|
|
147
|
+
}
|