PluginProbe
Booking Calendar / 11.6
Booking Calendar v11.6
11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 10.11.2 All 203 releases
booking / includes / _front_end / form-style-presets.php

form-style-presets.php in Booking Calendar 11.6, at includes/_front_end/form-style-presets.php

939 lines 44.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Booking form style presets.
4 *
5 * This file is the shared registry for the global form style model.
6 *
7 * @package Booking Calendar
8 * @since 11.4.0
9 */
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 /**
16 * Get default global form style key.
17 *
18 * @return string
19 */
20 function wpbc_bfb_settings__get_default_form_style() {
21
22 return 'light_bordered';
23 }
24
25 /**
26 * Get default values for the optional global accent overlay.
27 *
28 * The overlay is disabled by default so upgrading does not change the visual
29 * output of an existing booking form.
30 *
31 * @return array
32 */
33 function wpbc_bfb_settings__get_default_form_accent_options() {
34
35 return array(
36 'booking_form_accent_enabled' => 'Off',
37 'booking_form_accent_color' => WPBC_DEFAULT_FORM_ACCENT_COLOR,
38 );
39 }
40
41 /**
42 * Get default values for the global custom form style.
43 *
44 * @return array
45 */
46 function wpbc_bfb_settings__get_default_custom_form_style_options() {
47
48 return array(
49 'booking_form_custom_background_color' => '#ffffff',
50 'booking_form_custom_border_color' => '#cccccc',
51 'booking_form_custom_border_width' => '1px',
52 'booking_form_custom_border_radius' => '2px',
53 'booking_form_custom_padding_vertical' => '10px',
54 'booking_form_custom_padding_horizontal' => '30px',
55 'booking_form_custom_text_color' => '#1d2327',
56 'booking_form_custom_field_background_color' => '#ffffff',
57 'booking_form_custom_field_text_color' => '#3c434a',
58 'booking_form_custom_field_border_color' => '#cccccc',
59 'booking_form_custom_button_background_color' => '#066aab',
60 'booking_form_custom_button_text_color' => '#ffffff',
61 'booking_form_custom_button_border_color' => '#066aab',
62 'booking_form_custom_button_hover_background_color' => '#055589',
63 'booking_form_custom_button_hover_text_color' => '#ffffff',
64 'booking_form_custom_button_hover_border_color' => '#055589',
65 'booking_form_custom_secondary_button_background_color' => '#fdfdfd',
66 'booking_form_custom_secondary_button_text_color' => '#444444',
67 'booking_form_custom_secondary_button_border_color' => '#eeeeee',
68 'booking_form_custom_secondary_button_hover_background_color' => '#fdfdfd',
69 'booking_form_custom_secondary_button_hover_text_color' => '#444444',
70 'booking_form_custom_secondary_button_hover_border_color' => '#4d91cd',
71 'booking_form_custom_button_border_width' => '1px',
72 'booking_form_custom_button_border_radius' => '3px',
73 );
74 }
75
76 /**
77 * Get CSS variable names owned by the global Form Style feature.
78 *
79 * Keep this list synchronized with the preset arrays and live preview cleanup.
80 *
81 * @return array
82 */
83 function wpbc_bfb_settings__get_form_style_css_var_names() {
84
85 return array(
86 '--wpbc-bfb-form-background',
87 '--wpbc-bfb-form-border-color',
88 '--wpbc-bfb-form-border-width',
89 '--wpbc-bfb-form-border-radius',
90 '--wpbc-bfb-form-padding',
91 '--wpbc-bfb-form-box-shadow',
92 '--wpbc_form-label-color',
93 '--wpbc_form-label-sublabel-color',
94 '--wpbc_form-label-error-color',
95 '--wpbc_form-field-background-color',
96 '--wpbc_form-field-menu-color',
97 '--wpbc_form-field-text-color',
98 '--wpbc_form-field-border-color',
99 '--wpbc_form-field-border-color-spare',
100 '--wpbc_form-field-focus-border-color',
101 '--wpbc_form-field-focus-shadow-color',
102 '--wpbc_form-field-disabled-color',
103 '--wpbc_form-choice-checked-border-color',
104 '--wpbc_form-choice-checked-color',
105 '--wpbc_form-choice-focus-color',
106 '--wpbc_form-button-border-radius',
107 '--wpbc_form-button-border-style',
108 '--wpbc_form-button-border-size',
109 '--wpbc_form-button-background-color',
110 '--wpbc_form-button-background-color-alt',
111 '--wpbc_form-button-border-color',
112 '--wpbc_form-button-primary-border-style',
113 '--wpbc_form-button-text-color',
114 '--wpbc_form-button-text-color-alt',
115 '--wpbc_form-button-hover-background-color',
116 '--wpbc_form-button-hover-border-color',
117 '--wpbc_form-button-hover-text-color',
118 '--wpbc_form-button-light-background-color',
119 '--wpbc_form-button-light-border-color',
120 '--wpbc_form-button-light-border-style',
121 '--wpbc_form-button-light-border-size',
122 '--wpbc_form-button-light-text-color',
123 '--wpbc_form-button-light-box-shadow',
124 '--wpbc_form-button-light-hover-background-color',
125 '--wpbc_form-button-light-hover-border-color',
126 '--wpbc_form-button-light-hover-text-color',
127 '--wpbc_form-button-light-hover-box-shadow',
128 '--wpbc-appointment-provider-avatar-background',
129 '--wpbc-appointment-provider-avatar-border-color',
130 '--wpbc-appointment-provider-avatar-text-color',
131 '--wpbc_form-button-primary-hover-border-color',
132 '--wpbc_form-page-break-color',
133 '--wpbc_form-accent-color',
134 '--wpbc_form-accent-hover-color',
135 '--wpbc_form-accent-contrast-color',
136 '--wpbc_timepicker-hover-border-color',
137 '--wpbc_timepicker-selected-bg-color',
138 '--wpbc_timepicker-selected-text-color',
139 '--wpbc_timepicker-selected-border-color',
140 );
141 }
142
143 /**
144 * Get the global form style preset registry.
145 *
146 * Each preset owns its container, text, field, and button tokens so a new
147 * Form Style can be added in one registry.
148 *
149 * @return array
150 */
151 function wpbc_bfb_settings__get_form_style_presets() {
152
153 $default_button_geometry = array(
154 '--wpbc_form-button-border-radius' => '3px',
155 '--wpbc_form-button-border-style' => 'none',
156 '--wpbc_form-button-border-size' => '1px',
157 '--wpbc_form-button-primary-border-style' => 'none',
158 '--wpbc_form-button-light-border-style' => 'solid',
159 '--wpbc_form-button-light-border-size' => '1px',
160 );
161
162 $presets = array(
163 'light_bordered' => array(
164 'title' => __( 'Light bordered', 'booking' ),
165 'theme_class' => '',
166 'container_style' => 'bordered',
167 'custom' => false,
168 'css_vars' => array(
169 '--wpbc-bfb-form-background' => '#ffffff',
170 '--wpbc-bfb-form-border-color' => '#cccccc',
171 '--wpbc-bfb-form-border-width' => '1px',
172 '--wpbc-bfb-form-border-radius' => '2px',
173 '--wpbc-bfb-form-padding' => '10px 30px',
174 '--wpbc-bfb-form-box-shadow' => 'rgba(0, 0, 0, 0.05) 0px 2px 6px 0px',
175 '--wpbc_form-label-color' => 'rgba(0, 0, 0, 0.85)',
176 '--wpbc_form-label-sublabel-color' => 'rgba(0, 0, 0, 0.55)',
177 '--wpbc_form-label-error-color' => '#d63637',
178 '--wpbc_form-field-background-color' => '#ffffff',
179 '--wpbc_form-field-border-color' => 'rgba(0, 0, 0, 0.25)',
180 '--wpbc_form-field-border-color-spare' => 'rgba(0, 0, 0, 0.25)',
181 '--wpbc_form-field-focus-border-color' => '#066aab',
182 '--wpbc_form-field-focus-shadow-color' => '#066aab',
183 '--wpbc_form-field-text-color' => 'rgba(0, 0, 0, 0.7)',
184 '--wpbc_form-field-disabled-color' => 'rgba(0, 0, 0, 0.2)',
185 '--wpbc_form-field-menu-color' => '#ffffff',
186 '--wpbc_form-button-background-color' => '#066aab',
187 '--wpbc_form-button-background-color-alt' => '#066aab',
188 '--wpbc_form-button-border-color' => '#066aab',
189 '--wpbc_form-button-text-color' => '#ffffff',
190 '--wpbc_form-button-text-color-alt' => '#ffffff',
191 '--wpbc_form-choice-checked-border-color' => '#066aab',
192 '--wpbc_form-choice-checked-color' => '#066aab',
193 '--wpbc_form-choice-focus-color' => '#066aab',
194 '--wpbc_form-button-light-background-color' => '#fdfdfd',
195 '--wpbc_form-button-light-border-color' => '#cacacab5',
196 '--wpbc_form-button-light-text-color' => '#444444e0',
197 '--wpbc_form-button-light-box-shadow' => '0 2px 10px 2px #ffffff54',
198 '--wpbc_form-button-light-hover-background-color' => '#fdfdfd',
199 '--wpbc_form-button-light-hover-border-color' => 'rgb(77, 145, 205)',
200 '--wpbc_form-button-light-hover-text-color' => '#444444e0',
201 '--wpbc_form-button-light-hover-box-shadow' => '0 2px 10px 2px #ffffff54',
202 '--wpbc_form-button-primary-hover-border-color' => '#ffffff',
203 '--wpbc_form-page-break-color' => '#066aab',
204 ),
205 ),
206 'light_none' => array(
207 'title' => __( 'Light no border', 'booking' ),
208 'theme_class' => '',
209 'container_style' => 'none',
210 'custom' => false,
211 'css_vars' => array(
212 '--wpbc-bfb-form-background' => 'transparent',
213 '--wpbc-bfb-form-border-color' => 'transparent',
214 '--wpbc-bfb-form-border-width' => '0px',
215 '--wpbc-bfb-form-border-radius' => '0px',
216 '--wpbc-bfb-form-padding' => '0px',
217 '--wpbc-bfb-form-box-shadow' => 'none',
218 '--wpbc_form-label-color' => 'rgba(0, 0, 0, 0.85)',
219 '--wpbc_form-label-sublabel-color' => 'rgba(0, 0, 0, 0.55)',
220 '--wpbc_form-label-error-color' => '#d63637',
221 '--wpbc_form-field-background-color' => '#ffffff',
222 '--wpbc_form-field-border-color' => 'rgba(0, 0, 0, 0.25)',
223 '--wpbc_form-field-border-color-spare' => 'rgba(0, 0, 0, 0.25)',
224 '--wpbc_form-field-focus-border-color' => '#066aab',
225 '--wpbc_form-field-focus-shadow-color' => '#066aab',
226 '--wpbc_form-field-text-color' => 'rgba(0, 0, 0, 0.7)',
227 '--wpbc_form-field-disabled-color' => 'rgba(0, 0, 0, 0.2)',
228 '--wpbc_form-field-menu-color' => '#ffffff',
229 '--wpbc_form-button-background-color' => '#066aab',
230 '--wpbc_form-button-background-color-alt' => '#066aab',
231 '--wpbc_form-button-border-color' => '#066aab',
232 '--wpbc_form-button-text-color' => '#ffffff',
233 '--wpbc_form-button-text-color-alt' => '#ffffff',
234 '--wpbc_form-choice-checked-border-color' => '#066aab',
235 '--wpbc_form-choice-checked-color' => '#066aab',
236 '--wpbc_form-choice-focus-color' => '#066aab',
237 '--wpbc_form-button-light-background-color' => '#fdfdfd',
238 '--wpbc_form-button-light-border-color' => '#cacacab5',
239 '--wpbc_form-button-light-text-color' => '#444444e0',
240 '--wpbc_form-button-light-box-shadow' => '0 2px 10px 2px #ffffff54',
241 '--wpbc_form-button-light-hover-background-color' => '#fdfdfd',
242 '--wpbc_form-button-light-hover-border-color' => 'rgb(77, 145, 205)',
243 '--wpbc_form-button-light-hover-text-color' => '#444444e0',
244 '--wpbc_form-button-light-hover-box-shadow' => '0 2px 10px 2px #ffffff54',
245 '--wpbc_form-button-primary-hover-border-color' => '#ffffff',
246 '--wpbc_form-page-break-color' => '#066aab',
247 ),
248 ),
249 'light_soft' => array(
250 'title' => __( 'Light soft background', 'booking' ),
251 'theme_class' => '',
252 'container_style' => 'soft',
253 'custom' => false,
254 'css_vars' => array(
255 '--wpbc-bfb-form-background' => '#f9f9fa',
256 '--wpbc-bfb-form-border-color' => '#ffffff',
257 '--wpbc-bfb-form-border-width' => '3px',
258 '--wpbc-bfb-form-border-radius' => '8px',
259 '--wpbc-bfb-form-padding' => '20px',
260 '--wpbc-bfb-form-box-shadow' => 'rgba(15, 23, 42, 0.06) 0px 4px 16px 0px',
261 '--wpbc_form-label-color' => 'rgba(0, 0, 0, 0.85)',
262 '--wpbc_form-label-sublabel-color' => 'rgba(0, 0, 0, 0.55)',
263 '--wpbc_form-label-error-color' => '#d63637',
264 '--wpbc_form-field-background-color' => '#ffffff',
265 '--wpbc_form-field-border-color' => 'rgba(0, 0, 0, 0.25)',
266 '--wpbc_form-field-border-color-spare' => 'rgba(0, 0, 0, 0.25)',
267 '--wpbc_form-field-focus-border-color' => '#066aab',
268 '--wpbc_form-field-focus-shadow-color' => '#066aab',
269 '--wpbc_form-field-text-color' => 'rgba(0, 0, 0, 0.7)',
270 '--wpbc_form-field-disabled-color' => 'rgba(0, 0, 0, 0.2)',
271 '--wpbc_form-field-menu-color' => '#ffffff',
272 '--wpbc_form-button-background-color' => '#066aab',
273 '--wpbc_form-button-background-color-alt' => '#066aab',
274 '--wpbc_form-button-border-color' => '#066aab',
275 '--wpbc_form-button-text-color' => '#ffffff',
276 '--wpbc_form-button-text-color-alt' => '#ffffff',
277 '--wpbc_form-choice-checked-border-color' => '#066aab',
278 '--wpbc_form-choice-checked-color' => '#066aab',
279 '--wpbc_form-choice-focus-color' => '#066aab',
280 '--wpbc_form-button-light-background-color' => '#fdfdfd',
281 '--wpbc_form-button-light-border-color' => '#cacacab5',
282 '--wpbc_form-button-light-text-color' => '#444444e0',
283 '--wpbc_form-button-light-box-shadow' => '0 2px 10px 2px #ffffff54',
284 '--wpbc_form-button-light-hover-background-color' => '#fdfdfd',
285 '--wpbc_form-button-light-hover-border-color' => 'rgb(77, 145, 205)',
286 '--wpbc_form-button-light-hover-text-color' => '#444444e0',
287 '--wpbc_form-button-light-hover-box-shadow' => '0 2px 10px 2px #ffffff54',
288 '--wpbc_form-button-primary-hover-border-color' => '#ffffff',
289 '--wpbc_form-page-break-color' => '#066aab',
290 ),
291 ),
292 'dark_bordered' => array(
293 'title' => __( 'Dark bordered', 'booking' ),
294 'theme_class' => 'wpbc_theme_dark_1',
295 'container_style' => 'bordered',
296 'custom' => false,
297 'css_vars' => array(
298 '--wpbc-bfb-form-background' => '#383a3d',
299 '--wpbc-bfb-form-border-color' => '#000000',
300 '--wpbc-bfb-form-border-width' => '1px',
301 '--wpbc-bfb-form-border-radius' => '2px',
302 '--wpbc-bfb-form-padding' => '10px 30px',
303 '--wpbc-bfb-form-box-shadow' => '0 0px 3px #3b3b3b',
304 '--wpbc_form-label-color' => '#f4f6f8',
305 '--wpbc_form-label-sublabel-color' => 'rgba(255, 255, 255, 0.72)',
306 '--wpbc_form-label-error-color' => '#ff8a8a',
307 '--wpbc_form-field-background-color' => '#3f454f',
308 '--wpbc_form-field-border-color' => 'rgba(255, 255, 255, 0.28)',
309 '--wpbc_form-field-border-color-spare' => 'rgba(255, 255, 255, 0.28)',
310 '--wpbc_form-field-focus-border-color' => '#5b8bff',
311 '--wpbc_form-field-focus-shadow-color' => '#5b8bff',
312 '--wpbc_form-field-text-color' => '#f4f6f8',
313 '--wpbc_form-field-disabled-color' => 'rgba(255, 255, 255, 0.35)',
314 '--wpbc_form-field-menu-color' => '#303640',
315 '--wpbc_form-button-background-color' => '#1b1d22',
316 '--wpbc_form-button-background-color-alt' => '#1b1d22',
317 '--wpbc_form-button-border-color' => '#5f5f5f',
318 '--wpbc_form-button-primary-border-style' => 'solid',
319 '--wpbc_form-button-text-color' => '#ffffff',
320 '--wpbc_form-button-text-color-alt' => '#ffffff',
321 '--wpbc_form-button-hover-background-color' => '#1b1d22',
322 '--wpbc_form-button-hover-border-color' => '#5b8bff',
323 '--wpbc_form-button-hover-text-color' => '#ffffff',
324 '--wpbc_form-choice-checked-border-color' => '#5b8bff',
325 '--wpbc_form-choice-checked-color' => '#f4f6f8',
326 '--wpbc_form-choice-focus-color' => '#5b8bff',
327 '--wpbc_form-button-light-background-color' => '#3f454f',
328 '--wpbc_form-button-light-border-color' => '#525252',
329 '--wpbc_form-button-light-text-color' => '#ffffff',
330 '--wpbc_form-button-light-box-shadow' => '0 0 0 #424242',
331 '--wpbc_form-button-light-hover-background-color' => '#3f454f',
332 '--wpbc_form-button-light-hover-border-color' => '#5b8bff',
333 '--wpbc_form-button-light-hover-text-color' => '#ffffff',
334 '--wpbc_form-button-light-hover-box-shadow' => '0 0 0 #424242',
335 '--wpbc-appointment-provider-avatar-background' => '#2C2E2F',
336 '--wpbc-appointment-provider-avatar-border-color' => '#525252',
337 '--wpbc-appointment-provider-avatar-text-color' => '#ffffff',
338 '--wpbc_form-button-primary-hover-border-color' => '#5b8bff',
339 '--wpbc_form-page-break-color' => '#5f9ee7',
340 ),
341 ),
342 'dark_none' => array(
343 'title' => __( 'Dark no border', 'booking' ),
344 'theme_class' => 'wpbc_theme_dark_1',
345 'container_style' => 'none',
346 'custom' => false,
347 'css_vars' => array(
348 '--wpbc-bfb-form-background' => 'transparent',
349 '--wpbc-bfb-form-border-color' => 'transparent',
350 '--wpbc-bfb-form-border-width' => '0px',
351 '--wpbc-bfb-form-border-radius' => '0px',
352 '--wpbc-bfb-form-padding' => '0px',
353 '--wpbc-bfb-form-box-shadow' => 'none',
354 '--wpbc_form-label-color' => '#1d2327',
355 '--wpbc_form-label-sublabel-color' => 'rgba(29, 35, 39, 0.72)',
356 '--wpbc_form-label-error-color' => '#d63637',
357 '--wpbc_form-field-background-color' => '#3f454f',
358 '--wpbc_form-field-border-color' => 'rgba(255, 255, 255, 0.28)',
359 '--wpbc_form-field-border-color-spare' => 'rgba(255, 255, 255, 0.28)',
360 '--wpbc_form-field-focus-border-color' => '#5b8bff',
361 '--wpbc_form-field-focus-shadow-color' => '#5b8bff',
362 '--wpbc_form-field-text-color' => '#f4f6f8',
363 '--wpbc_form-field-disabled-color' => 'rgba(255, 255, 255, 0.35)',
364 '--wpbc_form-field-menu-color' => '#303640',
365 '--wpbc_form-button-background-color' => '#1b1d22',
366 '--wpbc_form-button-background-color-alt' => '#1b1d22',
367 '--wpbc_form-button-border-color' => '#5f5f5f',
368 '--wpbc_form-button-primary-border-style' => 'solid',
369 '--wpbc_form-button-text-color' => '#ffffff',
370 '--wpbc_form-button-text-color-alt' => '#ffffff',
371 '--wpbc_form-button-hover-background-color' => '#1b1d22',
372 '--wpbc_form-button-hover-border-color' => '#5b8bff',
373 '--wpbc_form-button-hover-text-color' => '#ffffff',
374 '--wpbc_form-choice-checked-border-color' => '#5b8bff',
375 '--wpbc_form-choice-checked-color' => '#f4f6f8',
376 '--wpbc_form-choice-focus-color' => '#5b8bff',
377 '--wpbc_form-button-light-background-color' => '#3f454f',
378 '--wpbc_form-button-light-border-color' => '#525252',
379 '--wpbc_form-button-light-text-color' => '#ffffff',
380 '--wpbc_form-button-light-box-shadow' => '0 0 0 #424242',
381 '--wpbc_form-button-light-hover-background-color' => '#3f454f',
382 '--wpbc_form-button-light-hover-border-color' => '#5b8bff',
383 '--wpbc_form-button-light-hover-text-color' => '#ffffff',
384 '--wpbc_form-button-light-hover-box-shadow' => '0 0 0 #424242',
385 '--wpbc-appointment-provider-avatar-background' => '#2C2E2F',
386 '--wpbc-appointment-provider-avatar-border-color' => '#525252',
387 '--wpbc-appointment-provider-avatar-text-color' => '#ffffff',
388 '--wpbc_form-button-primary-hover-border-color' => '#5b8bff',
389 '--wpbc_form-page-break-color' => '#5f9ee7',
390 ),
391 ),
392 'dark_soft' => array(
393 'title' => __( 'Dark soft background', 'booking' ),
394 'theme_class' => 'wpbc_theme_dark_1',
395 'container_style' => 'soft',
396 'custom' => false,
397 'css_vars' => array(
398 '--wpbc-bfb-form-background' => '#1f2937',
399 '--wpbc-bfb-form-border-color' => '#334155',
400 '--wpbc-bfb-form-border-width' => '3px',
401 '--wpbc-bfb-form-border-radius' => '8px',
402 '--wpbc-bfb-form-padding' => '20px',
403 '--wpbc-bfb-form-box-shadow' => 'rgba(0, 0, 0, 0.24) 0px 4px 16px 0px',
404 '--wpbc_form-label-color' => '#f4f6f8',
405 '--wpbc_form-label-sublabel-color' => 'rgba(255, 255, 255, 0.72)',
406 '--wpbc_form-label-error-color' => '#ff8a8a',
407 '--wpbc_form-field-background-color' => '#3f454f',
408 '--wpbc_form-field-border-color' => 'rgba(255, 255, 255, 0.28)',
409 '--wpbc_form-field-border-color-spare' => 'rgba(255, 255, 255, 0.28)',
410 '--wpbc_form-field-focus-border-color' => '#5b8bff',
411 '--wpbc_form-field-focus-shadow-color' => '#5b8bff',
412 '--wpbc_form-field-text-color' => '#f4f6f8',
413 '--wpbc_form-field-disabled-color' => 'rgba(255, 255, 255, 0.35)',
414 '--wpbc_form-field-menu-color' => '#303640',
415 '--wpbc_form-button-background-color' => '#1b1d22',
416 '--wpbc_form-button-background-color-alt' => '#1b1d22',
417 '--wpbc_form-button-border-color' => '#5f5f5f',
418 '--wpbc_form-button-primary-border-style' => 'solid',
419 '--wpbc_form-button-text-color' => '#ffffff',
420 '--wpbc_form-button-text-color-alt' => '#ffffff',
421 '--wpbc_form-button-hover-background-color' => '#1b1d22',
422 '--wpbc_form-button-hover-border-color' => '#5b8bff',
423 '--wpbc_form-button-hover-text-color' => '#ffffff',
424 '--wpbc_form-choice-checked-border-color' => '#5b8bff',
425 '--wpbc_form-choice-checked-color' => '#f4f6f8',
426 '--wpbc_form-choice-focus-color' => '#5b8bff',
427 '--wpbc_form-button-light-background-color' => '#3f454f',
428 '--wpbc_form-button-light-border-color' => '#525252',
429 '--wpbc_form-button-light-text-color' => '#ffffff',
430 '--wpbc_form-button-light-box-shadow' => '0 0 0 #424242',
431 '--wpbc_form-button-light-hover-background-color' => '#3f454f',
432 '--wpbc_form-button-light-hover-border-color' => '#5b8bff',
433 '--wpbc_form-button-light-hover-text-color' => '#ffffff',
434 '--wpbc_form-button-light-hover-box-shadow' => '0 0 0 #424242',
435 '--wpbc-appointment-provider-avatar-background' => '#2C2E2F',
436 '--wpbc-appointment-provider-avatar-border-color' => '#525252',
437 '--wpbc-appointment-provider-avatar-text-color' => '#ffffff',
438 '--wpbc_form-button-primary-hover-border-color' => '#5b8bff',
439 '--wpbc_form-page-break-color' => '#5f9ee7',
440 ),
441 ),
442 'custom' => array(
443 'title' => __( 'Custom', 'booking' ),
444 'theme_class' => '',
445 'container_style' => 'custom',
446 'custom' => true,
447 'css_vars' => array(),
448 ),
449 );
450
451 // Presets must explicitly reset geometry left by a previously selected
452 // Custom style. This also keeps the live Builder canvas equal to a clean
453 // front-end render, where the root defaults are 1px borders and 3px radius.
454 foreach ( $presets as $preset_key => $preset ) {
455 if ( 'custom' === $preset_key || empty( $preset['css_vars'] ) ) {
456 continue;
457 }
458
459 $presets[ $preset_key ]['css_vars'] = array_merge( $default_button_geometry, $preset['css_vars'] );
460 }
461
462 return $presets;
463 }
464
465 /**
466 * Get one form style preset.
467 *
468 * @param string $style Form style key.
469 * @return array
470 */
471 function wpbc_bfb_settings__get_form_style_preset( $style ) {
472
473 $presets = wpbc_bfb_settings__get_form_style_presets();
474 $style = sanitize_key( (string) $style );
475
476 if ( isset( $presets[ $style ] ) ) {
477 return $presets[ $style ];
478 }
479
480 return $presets[ wpbc_bfb_settings__get_default_form_style() ];
481 }
482
483 /**
484 * Sanitize a form style key.
485 *
486 * @param string $style Form style key.
487 * @return string
488 */
489 function wpbc_bfb_settings__sanitize_form_style( $style ) {
490
491 $presets = wpbc_bfb_settings__get_form_style_presets();
492 $style = sanitize_key( (string) $style );
493
494 return isset( $presets[ $style ] ) ? $style : wpbc_bfb_settings__get_default_form_style();
495 }
496
497 /**
498 * Get style titles for radio/select controls.
499 *
500 * @return array
501 */
502 function wpbc_bfb_settings__get_form_style_options() {
503
504 $options = array();
505
506 foreach ( wpbc_bfb_settings__get_form_style_presets() as $style_key => $preset ) {
507 $options[ $style_key ] = isset( $preset['title'] ) ? $preset['title'] : $style_key;
508 }
509
510 return $options;
511 }
512
513 /**
514 * Get the currently selected global form style.
515 *
516 * @return string
517 */
518 function wpbc_bfb_settings__get_current_form_style() {
519
520 $style = function_exists( 'get_bk_option' ) ? get_bk_option( 'booking_form_style' ) : '';
521
522 return wpbc_bfb_settings__sanitize_form_style( $style );
523 }
524
525 /**
526 * Check whether a style key is the Custom style.
527 *
528 * @param string $style Form style key.
529 * @return bool
530 */
531 function wpbc_bfb_settings__is_custom_form_style( $style ) {
532
533 return ( 'custom' === wpbc_bfb_settings__sanitize_form_style( $style ) );
534 }
535
536 /**
537 * Sanitize CSS color values used by global form style options.
538 *
539 * @param string $value Raw value.
540 * @param string $fallback Fallback value.
541 * @return string
542 */
543 function wpbc_bfb_settings__sanitize_form_style_color( $value, $fallback ) {
544
545 $value = trim( (string) $value );
546
547 if ( preg_match( '/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i', $value ) || 'transparent' === $value ) {
548 return $value;
549 }
550
551 return $fallback;
552 }
553
554 /**
555 * Sanitize an opaque hexadecimal accent color.
556 *
557 * Unlike container colors, an accent cannot be transparent because it is
558 * used to calculate hover and readable foreground colors.
559 *
560 * @param string $value Raw value.
561 * @param string $fallback Fallback value.
562 * @return string
563 */
564 function wpbc_bfb_settings__sanitize_form_accent_color( $value, $fallback = WPBC_DEFAULT_FORM_ACCENT_COLOR ) {
565
566 $value = trim( (string) $value );
567
568 return preg_match( '/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i', $value ) ? $value : $fallback;
569 }
570
571 /**
572 * Get sanitized global accent settings.
573 *
574 * @param array $options Optional raw override values.
575 * @return array
576 */
577 function wpbc_bfb_settings__get_form_accent_options( $options = array() ) {
578
579 $defaults = wpbc_bfb_settings__get_default_form_accent_options();
580 $options = is_array( $options ) ? $options : array();
581 $values = array();
582
583 foreach ( $defaults as $key => $fallback ) {
584 if ( array_key_exists( $key, $options ) ) {
585 $values[ $key ] = $options[ $key ];
586 } elseif ( function_exists( 'get_bk_option' ) ) {
587 $values[ $key ] = get_bk_option( $key );
588 } else {
589 $values[ $key ] = $fallback;
590 }
591 }
592
593 return array(
594 'booking_form_accent_enabled' => ( 'On' === (string) $values['booking_form_accent_enabled'] ) ? 'On' : 'Off',
595 'booking_form_accent_color' => wpbc_bfb_settings__sanitize_form_accent_color( $values['booking_form_accent_color'], $defaults['booking_form_accent_color'] ),
596 );
597 }
598
599 /**
600 * Mix a hexadecimal color with black or white.
601 *
602 * @param string $hex Six-digit hexadecimal color.
603 * @param string $mix_hex Six-digit hexadecimal target color.
604 * @param float $percentage Mix amount from 0 through 1.
605 * @return string
606 */
607 function wpbc_bfb_settings__mix_form_style_colors( $hex, $mix_hex, $percentage ) {
608
609 $hex = ltrim( wpbc_bfb_settings__sanitize_form_accent_color( $hex, WPBC_DEFAULT_FORM_ACCENT_COLOR ), '#' );
610 $mix_hex = ltrim( wpbc_bfb_settings__sanitize_form_accent_color( $mix_hex, '#000000' ), '#' );
611 $percentage = max( 0, min( 1, (float) $percentage ) );
612
613 if ( 3 === strlen( $hex ) ) {
614 $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
615 }
616 if ( 3 === strlen( $mix_hex ) ) {
617 $mix_hex = $mix_hex[0] . $mix_hex[0] . $mix_hex[1] . $mix_hex[1] . $mix_hex[2] . $mix_hex[2];
618 }
619
620 $channels = array();
621 for ( $index = 0; $index < 3; $index++ ) {
622 $source = hexdec( substr( $hex, $index * 2, 2 ) );
623 $target = hexdec( substr( $mix_hex, $index * 2, 2 ) );
624 $channels[] = (int) round( $source + ( ( $target - $source ) * $percentage ) );
625 }
626
627 return sprintf( '#%02x%02x%02x', $channels[0], $channels[1], $channels[2] );
628 }
629
630 /**
631 * Calculate relative luminance for a hexadecimal color.
632 *
633 * @param string $hex Hexadecimal color.
634 * @return float
635 */
636 function wpbc_bfb_settings__get_form_style_color_luminance( $hex ) {
637
638 $hex = ltrim( wpbc_bfb_settings__sanitize_form_accent_color( $hex, WPBC_DEFAULT_FORM_ACCENT_COLOR ), '#' );
639 if ( 3 === strlen( $hex ) ) {
640 $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
641 }
642
643 $linear = array();
644 for ( $index = 0; $index < 3; $index++ ) {
645 $channel = hexdec( substr( $hex, $index * 2, 2 ) ) / 255;
646 $linear[] = ( $channel <= 0.03928 ) ? ( $channel / 12.92 ) : pow( ( $channel + 0.055 ) / 1.055, 2.4 );
647 }
648
649 return ( 0.2126 * $linear[0] ) + ( 0.7152 * $linear[1] ) + ( 0.0722 * $linear[2] );
650 }
651
652 /**
653 * Apply the optional accent overlay to resolved Form Style CSS variables.
654 *
655 * @param array $css_vars CSS variables resolved from the selected preset.
656 * @param array $options Optional raw accent settings.
657 * @param bool $preserve_custom_button_colors Keep explicit Custom-style button colors.
658 * @return array
659 */
660 function wpbc_bfb_settings__apply_form_accent_css_vars( $css_vars, $options = array(), $preserve_custom_button_colors = false ) {
661
662 $accent_options = wpbc_bfb_settings__get_form_accent_options( $options );
663 if ( 'On' !== $accent_options['booking_form_accent_enabled'] ) {
664 return $css_vars;
665 }
666
667 $accent = $accent_options['booking_form_accent_color'];
668 $luminance = wpbc_bfb_settings__get_form_style_color_luminance( $accent );
669 $contrast = ( $luminance > 0.18 ) ? '#000000' : '#ffffff';
670 $hover_target = ( '#ffffff' === $contrast ) ? '#000000' : '#ffffff';
671 $hover = wpbc_bfb_settings__mix_form_style_colors( $accent, $hover_target, 0.10 );
672 $hover_contrast = $contrast;
673 $accent_overlay = array(
674 '--wpbc_form-accent-color' => $accent,
675 '--wpbc_form-accent-hover-color' => $hover,
676 '--wpbc_form-accent-contrast-color' => $contrast,
677 '--wpbc_form-field-focus-border-color' => $accent,
678 '--wpbc_form-field-focus-shadow-color' => $accent,
679 '--wpbc_form-choice-checked-border-color' => $accent,
680 '--wpbc_form-choice-checked-color' => $accent,
681 '--wpbc_form-choice-focus-color' => $accent,
682 '--wpbc_form-button-background-color' => $accent,
683 '--wpbc_form-button-background-color-alt' => $accent,
684 '--wpbc_form-button-border-color' => $accent,
685 '--wpbc_form-button-text-color' => $contrast,
686 '--wpbc_form-button-text-color-alt' => $contrast,
687 '--wpbc_form-button-hover-background-color' => $hover,
688 '--wpbc_form-button-hover-border-color' => $hover,
689 '--wpbc_form-button-hover-text-color' => $hover_contrast,
690 '--wpbc_form-button-light-hover-border-color' => $accent,
691 '--wpbc_form-button-primary-hover-border-color' => $hover,
692 '--wpbc_form-page-break-color' => $accent,
693 );
694
695 if ( $preserve_custom_button_colors ) {
696 $custom_button_css_vars = array(
697 '--wpbc_form-button-background-color',
698 '--wpbc_form-button-background-color-alt',
699 '--wpbc_form-button-border-color',
700 '--wpbc_form-button-text-color',
701 '--wpbc_form-button-text-color-alt',
702 '--wpbc_form-button-hover-background-color',
703 '--wpbc_form-button-hover-border-color',
704 '--wpbc_form-button-hover-text-color',
705 '--wpbc_form-button-light-hover-border-color',
706 '--wpbc_form-button-primary-hover-border-color',
707 );
708 foreach ( $custom_button_css_vars as $css_var_name ) {
709 unset( $accent_overlay[ $css_var_name ] );
710 }
711 }
712
713 /**
714 * Filter the CSS variables supplied by the global accent overlay.
715 *
716 * @param array $accent_overlay Accent CSS variables.
717 * @param array $accent_options Sanitized accent settings.
718 * @param array $css_vars Base Form Style CSS variables.
719 * @param bool $preserve_custom_button_colors Whether Custom button controls take precedence.
720 */
721 $accent_overlay = apply_filters( 'wpbc_bfb_form_style_accent_css_vars', $accent_overlay, $accent_options, $css_vars, $preserve_custom_button_colors );
722
723 return array_merge( $css_vars, is_array( $accent_overlay ) ? $accent_overlay : array() );
724 }
725
726 /**
727 * Sanitize CSS length values used by global form style options.
728 *
729 * @param string $value Raw value.
730 * @param string $fallback Fallback value.
731 * @return string
732 */
733 function wpbc_bfb_settings__sanitize_form_style_length( $value, $fallback ) {
734
735 $value = trim( (string) $value );
736
737 if ( preg_match( '/^\d+(?:\.\d+)?(?:px|rem|em|%)$/i', $value ) ) {
738 return $value;
739 }
740
741 return $fallback;
742 }
743
744 /**
745 * Get sanitized global custom form style options.
746 *
747 * @param array $options Optional raw override values.
748 * @return array
749 */
750 function wpbc_bfb_settings__get_custom_form_style_options( $options = array() ) {
751
752 $defaults = wpbc_bfb_settings__get_default_custom_form_style_options();
753 $options = is_array( $options ) ? $options : array();
754 $values = array();
755
756 foreach ( $defaults as $key => $fallback ) {
757 if ( array_key_exists( $key, $options ) ) {
758 $values[ $key ] = $options[ $key ];
759 } elseif ( function_exists( 'get_bk_option' ) ) {
760 $values[ $key ] = get_bk_option( $key );
761 } else {
762 $values[ $key ] = $fallback;
763 }
764 }
765
766 return array(
767 'booking_form_custom_background_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_background_color'], $defaults['booking_form_custom_background_color'] ),
768 'booking_form_custom_border_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_border_color'], $defaults['booking_form_custom_border_color'] ),
769 'booking_form_custom_border_width' => wpbc_bfb_settings__sanitize_form_style_length( $values['booking_form_custom_border_width'], $defaults['booking_form_custom_border_width'] ),
770 'booking_form_custom_border_radius' => wpbc_bfb_settings__sanitize_form_style_length( $values['booking_form_custom_border_radius'], $defaults['booking_form_custom_border_radius'] ),
771 'booking_form_custom_padding_vertical' => wpbc_bfb_settings__sanitize_form_style_length( $values['booking_form_custom_padding_vertical'], $defaults['booking_form_custom_padding_vertical'] ),
772 'booking_form_custom_padding_horizontal' => wpbc_bfb_settings__sanitize_form_style_length( $values['booking_form_custom_padding_horizontal'], $defaults['booking_form_custom_padding_horizontal'] ),
773 'booking_form_custom_text_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_text_color'], $defaults['booking_form_custom_text_color'] ),
774 'booking_form_custom_field_background_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_field_background_color'], $defaults['booking_form_custom_field_background_color'] ),
775 'booking_form_custom_field_text_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_field_text_color'], $defaults['booking_form_custom_field_text_color'] ),
776 'booking_form_custom_field_border_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_field_border_color'], $defaults['booking_form_custom_field_border_color'] ),
777 'booking_form_custom_button_background_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_button_background_color'], $defaults['booking_form_custom_button_background_color'] ),
778 'booking_form_custom_button_text_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_button_text_color'], $defaults['booking_form_custom_button_text_color'] ),
779 'booking_form_custom_button_border_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_button_border_color'], $defaults['booking_form_custom_button_border_color'] ),
780 'booking_form_custom_button_hover_background_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_button_hover_background_color'], $defaults['booking_form_custom_button_hover_background_color'] ),
781 'booking_form_custom_button_hover_text_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_button_hover_text_color'], $defaults['booking_form_custom_button_hover_text_color'] ),
782 'booking_form_custom_button_hover_border_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_button_hover_border_color'], $defaults['booking_form_custom_button_hover_border_color'] ),
783 'booking_form_custom_secondary_button_background_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_secondary_button_background_color'], $defaults['booking_form_custom_secondary_button_background_color'] ),
784 'booking_form_custom_secondary_button_text_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_secondary_button_text_color'], $defaults['booking_form_custom_secondary_button_text_color'] ),
785 'booking_form_custom_secondary_button_border_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_secondary_button_border_color'], $defaults['booking_form_custom_secondary_button_border_color'] ),
786 'booking_form_custom_secondary_button_hover_background_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_secondary_button_hover_background_color'], $defaults['booking_form_custom_secondary_button_hover_background_color'] ),
787 'booking_form_custom_secondary_button_hover_text_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_secondary_button_hover_text_color'], $defaults['booking_form_custom_secondary_button_hover_text_color'] ),
788 'booking_form_custom_secondary_button_hover_border_color' => wpbc_bfb_settings__sanitize_form_style_color( $values['booking_form_custom_secondary_button_hover_border_color'], $defaults['booking_form_custom_secondary_button_hover_border_color'] ),
789 'booking_form_custom_button_border_width' => wpbc_bfb_settings__sanitize_form_style_length( $values['booking_form_custom_button_border_width'], $defaults['booking_form_custom_button_border_width'] ),
790 'booking_form_custom_button_border_radius' => wpbc_bfb_settings__sanitize_form_style_length( $values['booking_form_custom_button_border_radius'], $defaults['booking_form_custom_button_border_radius'] ),
791 );
792 }
793
794 /**
795 * Resolve a global form style into CSS variables.
796 *
797 * @param string $style Form style key.
798 * @param array $custom_options Optional custom style overrides.
799 * @return array
800 */
801 function wpbc_bfb_settings__get_form_style_css_vars( $style = '', $custom_options = array() ) {
802
803 $style = ( '' === (string) $style ) ? wpbc_bfb_settings__get_current_form_style() : wpbc_bfb_settings__sanitize_form_style( $style );
804 $preset = wpbc_bfb_settings__get_form_style_preset( $style );
805
806 if ( empty( $preset['custom'] ) ) {
807 $css_vars = isset( $preset['css_vars'] ) && is_array( $preset['css_vars'] ) ? $preset['css_vars'] : array();
808
809 return wpbc_bfb_settings__apply_form_accent_css_vars( $css_vars, $custom_options );
810 }
811
812 $custom = wpbc_bfb_settings__get_custom_form_style_options( $custom_options );
813
814 $css_vars = array(
815 '--wpbc-bfb-form-background' => $custom['booking_form_custom_background_color'],
816 '--wpbc-bfb-form-border-color' => $custom['booking_form_custom_border_color'],
817 '--wpbc-bfb-form-border-width' => $custom['booking_form_custom_border_width'],
818 '--wpbc-bfb-form-border-radius' => $custom['booking_form_custom_border_radius'],
819 '--wpbc-bfb-form-padding' => $custom['booking_form_custom_padding_vertical'] . ' ' . $custom['booking_form_custom_padding_horizontal'],
820 '--wpbc-bfb-form-box-shadow' => 'rgba(0, 0, 0, 0.05) 0px 2px 6px 0px',
821 '--wpbc_form-label-color' => $custom['booking_form_custom_text_color'],
822 '--wpbc_form-label-sublabel-color' => $custom['booking_form_custom_text_color'],
823 '--wpbc_form-label-error-color' => '#d63637',
824 '--wpbc_form-field-background-color' => $custom['booking_form_custom_field_background_color'],
825 '--wpbc_form-field-menu-color' => $custom['booking_form_custom_field_background_color'],
826 '--wpbc_form-field-text-color' => $custom['booking_form_custom_field_text_color'],
827 '--wpbc_form-field-border-color' => $custom['booking_form_custom_field_border_color'],
828 '--wpbc_form-field-border-color-spare' => $custom['booking_form_custom_field_border_color'],
829 '--wpbc_form-field-focus-border-color' => '#066aab',
830 '--wpbc_form-field-focus-shadow-color' => '#066aab',
831 '--wpbc_form-field-disabled-color' => 'rgba(0, 0, 0, 0.2)',
832 '--wpbc_form-button-border-radius' => $custom['booking_form_custom_button_border_radius'],
833 '--wpbc_form-button-border-style' => 'solid',
834 '--wpbc_form-button-border-size' => $custom['booking_form_custom_button_border_width'],
835 '--wpbc_form-button-background-color' => $custom['booking_form_custom_button_background_color'],
836 '--wpbc_form-button-background-color-alt' => $custom['booking_form_custom_button_background_color'],
837 '--wpbc_form-button-border-color' => $custom['booking_form_custom_button_border_color'],
838 '--wpbc_form-button-text-color' => $custom['booking_form_custom_button_text_color'],
839 '--wpbc_form-button-text-color-alt' => $custom['booking_form_custom_button_text_color'],
840 '--wpbc_form-button-hover-background-color' => $custom['booking_form_custom_button_hover_background_color'],
841 '--wpbc_form-button-hover-border-color' => $custom['booking_form_custom_button_hover_border_color'],
842 '--wpbc_form-button-hover-text-color' => $custom['booking_form_custom_button_hover_text_color'],
843 '--wpbc_form-choice-checked-border-color' => '#066aab',
844 '--wpbc_form-choice-checked-color' => '#066aab',
845 '--wpbc_form-choice-focus-color' => '#066aab',
846 '--wpbc_form-button-light-background-color' => $custom['booking_form_custom_secondary_button_background_color'],
847 '--wpbc_form-button-light-border-color' => $custom['booking_form_custom_secondary_button_border_color'],
848 '--wpbc_form-button-light-border-size' => $custom['booking_form_custom_button_border_width'],
849 '--wpbc_form-button-light-text-color' => $custom['booking_form_custom_secondary_button_text_color'],
850 '--wpbc_form-button-light-box-shadow' => '0 2px 10px 2px #ffffff54',
851 '--wpbc_form-button-light-hover-background-color' => $custom['booking_form_custom_secondary_button_hover_background_color'],
852 '--wpbc_form-button-light-hover-border-color' => $custom['booking_form_custom_secondary_button_hover_border_color'],
853 '--wpbc_form-button-light-hover-text-color' => $custom['booking_form_custom_secondary_button_hover_text_color'],
854 '--wpbc_form-button-light-hover-box-shadow' => '0 2px 10px 2px #ffffff54',
855 '--wpbc_form-button-primary-hover-border-color' => $custom['booking_form_custom_button_hover_border_color'],
856 '--wpbc_form-page-break-color' => '#066aab',
857 );
858
859 return wpbc_bfb_settings__apply_form_accent_css_vars( $css_vars, $custom_options, true );
860 }
861
862 /**
863 * Get form/settings JSON keys that belong to the global Form Style feature.
864 *
865 * These values are stored as global options. They must not be persisted inside
866 * individual Builder form settings_json records.
867 *
868 * @return array
869 */
870 function wpbc_bfb_settings__get_form_json_style_option_keys() {
871
872 return array(
873 // New global Form Style model.
874 'booking_form_style',
875 'booking_form_accent_enabled',
876 'booking_form_accent_color',
877 'booking_form_custom_background_color',
878 'booking_form_custom_border_color',
879 'booking_form_custom_border_width',
880 'booking_form_custom_border_radius',
881 'booking_form_custom_padding_vertical',
882 'booking_form_custom_padding_horizontal',
883 'booking_form_custom_text_color',
884 'booking_form_custom_field_background_color',
885 'booking_form_custom_field_text_color',
886 'booking_form_custom_field_border_color',
887 'booking_form_custom_button_background_color',
888 'booking_form_custom_button_text_color',
889 'booking_form_custom_button_border_color',
890 'booking_form_custom_button_hover_background_color',
891 'booking_form_custom_button_hover_text_color',
892 'booking_form_custom_button_hover_border_color',
893 'booking_form_custom_secondary_button_background_color',
894 'booking_form_custom_secondary_button_text_color',
895 'booking_form_custom_secondary_button_border_color',
896 'booking_form_custom_secondary_button_hover_background_color',
897 'booking_form_custom_secondary_button_hover_text_color',
898 'booking_form_custom_secondary_button_hover_border_color',
899 'booking_form_custom_button_border_width',
900 'booking_form_custom_button_border_radius',
901
902 // Retired per-form appearance model from the unreleased 11.4 work.
903 'booking_form_theme',
904 'booking_form_container_style',
905 'booking_form_background_color',
906 'booking_form_border_color',
907 'booking_form_border_width',
908 'booking_form_border_radius',
909 'booking_form_padding',
910 'booking_form_text_color',
911 'booking_form_field_background_color',
912 'booking_form_field_text_color',
913 'booking_form_field_border_color',
914 );
915 }
916
917 /**
918 * Remove global/retired Form Style keys from a form settings pack.
919 *
920 * @param array $settings Settings pack.
921 * @return array
922 */
923 function wpbc_bfb_settings__strip_form_style_options_from_form_settings( $settings ) {
924
925 if ( ! is_array( $settings ) ) {
926 return array();
927 }
928
929 if ( empty( $settings['options'] ) || ! is_array( $settings['options'] ) ) {
930 return $settings;
931 }
932
933 foreach ( wpbc_bfb_settings__get_form_json_style_option_keys() as $key ) {
934 unset( $settings['options'][ $key ] );
935 }
936
937 return $settings;
938 }
939