Skip to content

Commit 5a192c9

Browse files
authored
Fix: Pattern Card Spacing Variables and Sticky Menu Scroll Offset (#818)
* Remove hardcoded css values from patterns * Create default spacing variables for fallback when a theme doesn't use them * Update changelog * Add small padding to the scroll * Fix scroll position calculation and focus behavior in sticky menu * Keep json comment in sync with css, update changelog * Remove unnecessary attribute
1 parent a468fbd commit 5a192c9

File tree

11 files changed

+66
-29
lines changed

11 files changed

+66
-29
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<?php return array('dependencies' => array(), 'version' => 'cf51a72123735683e0ba');
1+
<?php return array('dependencies' => array(), 'version' => 'c8f455b8491acabcf94e');

build/blocks/sticky-menu/view.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/style-rtl.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/style.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#### Build & Pattern Infrastructure
88

99
- **Pattern Registration Infrastructure** - Established directory structure and registration system for tour operator patterns with proper categorization and template support - PR[#803](https://github.com/lightspeedwp/tour-operator/pull/803), Issue [#795](https://github.com/lightspeedwp/tour-operator/issues/795)
10+
- **Spacing Variables with Theme Inheritance** - Added CSS spacing variables (`--wp--preset--spacing--10` through `--wp--preset--spacing--80`) with zero-specificity fallbacks using `:where()` selector to ensure theme values take precedence while providing consistent rem-based fallback values for patterns and templates when theme doesn't define them PR [#818](https://github.com/lightspeedwp/tour-operator/pull/818)
1011

1112
#### Patterns
1213

patterns/accommodation-card.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
<div class="wp-block-group center-vertically" style="min-height:3.75rem"><!-- wp:post-title {"textAlign":"center","level":3,"isLink":true,"style":{"elements":{"link":{":hover":{"color":{"text":"var:preset|color|primary-700"}}}}},"fontSize":"large"} /--></div>
3737
<!-- /wp:group -->
3838
39-
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Accommodation Information', 'tour-operator' ) . '"},"className":"lsx-accommodation-info","style":{"spacing":{"padding":{"left":"var:preset|spacing|20","right":"var:preset|spacing|20","top":"0.63rem","bottom":"0.63rem"},"blockGap":"0"},"border":{"top":{"width":"1px"},"bottom":{"width":"1px"}}},"fontSize":"medium","layout":{"type":"default"},"ariaLabel":"' . esc_attr__( 'Accommodation details', 'tour-operator' ) . '"} -->
40-
<div aria-label="' . esc_attr__( 'Accommodation details', 'tour-operator' ) . '" class="wp-block-group lsx-accommodation-info has-medium-font-size" style="border-top-width:1px;border-bottom-width:1px;padding-top:0.63rem;padding-right:var(--wp--preset--spacing--20);padding-bottom:0.63rem;padding-left:var(--wp--preset--spacing--20)"><!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Price Row', 'tour-operator' ) . '"},"className":"lsx-price-wrapper","style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
41-
<div class="wp-block-group lsx-price-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"0.3125rem"},"layout":{"selfStretch":"fixed","flexSize":"6rem"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
39+
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Accommodation Information', 'tour-operator' ) . '"},"className":"lsx-accommodation-info","style":{"spacing":{"padding":{"left":"var:preset|spacing|20","right":"var:preset|spacing|20","top":"var:preset|spacing|20","bottom":"var:preset|spacing|20"},"blockGap":"0"},"border":{"top":{"width":"1px"},"bottom":{"width":"1px"}}},"fontSize":"medium","layout":{"type":"default"},"ariaLabel":"' . esc_attr__( 'Accommodation details', 'tour-operator' ) . '"} -->
40+
<div aria-label="' . esc_attr__( 'Accommodation details', 'tour-operator' ) . '" class="wp-block-group lsx-accommodation-info has-medium-font-size" style="border-top-width:1px;border-bottom-width:1px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Price Row', 'tour-operator' ) . '"},"className":"lsx-price-wrapper","style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
41+
<div class="wp-block-group lsx-price-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"var:preset|spacing|10"},"layout":{"selfStretch":"fixed"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
4242
<div class="wp-block-group lsx-info-label"><!-- wp:lsx-tour-operator/icons {"iconName":"priceIcon"} /-->
4343
44-
<!-- wp:paragraph {"style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"}}}} -->
45-
<p style="padding-top:0.125rem;padding-bottom:0.125rem">' . esc_html__( 'From:', 'tour-operator' ) . '</p>
44+
<!-- wp:paragraph -->
45+
<p>' . esc_html__( 'From:', 'tour-operator' ) . '</p>
4646
<!-- /wp:paragraph --></div>
4747
<!-- /wp:group -->
4848
@@ -51,26 +51,26 @@
5151
<!-- /wp:paragraph --></div>
5252
<!-- /wp:group -->
5353
54-
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Type Row', 'tour-operator' ) . '"},"className":"lsx-accommodation-type-wrapper","style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
55-
<div class="wp-block-group lsx-accommodation-type-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"0.3125rem"},"layout":{"selfStretch":"fixed","flexSize":"6rem"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
54+
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Type Row', 'tour-operator' ) . '"},"className":"lsx-accommodation-type-wrapper","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
55+
<div class="wp-block-group lsx-accommodation-type-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"var:preset|spacing|10"},"layout":{"selfStretch":"fixed"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
5656
<div class="wp-block-group lsx-info-label"><!-- wp:lsx-tour-operator/icons {"iconType":"solid","iconName":"accommodationTypeIcon"} /-->
5757
58-
<!-- wp:paragraph {"style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"}}}} -->
59-
<p style="padding-top:0.125rem;padding-bottom:0.125rem">' . esc_html__( 'Type:', 'tour-operator' ) . '</p>
58+
<!-- wp:paragraph -->
59+
<p>' . esc_html__( 'Type:', 'tour-operator' ) . '</p>
6060
<!-- /wp:paragraph --></div>
6161
<!-- /wp:group -->
6262
6363
<!-- wp:group {"className":"lsx-info-value","style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"},"blockGap":"0"}},"layout":{"type":"default"}} -->
64-
<div class="wp-block-group lsx-info-value" style="padding-top:0.125rem;padding-bottom:0.125rem"><!-- wp:post-terms {"term":"accommodation-type","className":"is-style-default","style":{"elements":{"link":{":hover":{"color":{"text":"var:preset|color|primary-700"}}}}},"fontSize":"medium"} /--></div>
64+
<div class="wp-block-group lsx-info-value"><!-- wp:post-terms {"term":"accommodation-type","className":"is-style-default","style":{"elements":{"link":{":hover":{"color":{"text":"var:preset|color|primary-700"}}}}},"fontSize":"medium"} /--></div>
6565
<!-- /wp:group --></div>
6666
<!-- /wp:group -->
6767
68-
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Rooms Row', 'tour-operator' ) . '"},"className":"lsx-number-of-rooms-wrapper","style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
69-
<div class="wp-block-group lsx-number-of-rooms-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"0.3125rem"},"layout":{"selfStretch":"fixed","flexSize":"6rem"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
68+
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Rooms Row', 'tour-operator' ) . '"},"className":"lsx-number-of-rooms-wrapper","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
69+
<div class="wp-block-group lsx-number-of-rooms-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
7070
<div class="wp-block-group lsx-info-label"><!-- wp:lsx-tour-operator/icons {"iconType":"solid","iconName":"roomBasisIcon"} /-->
7171
72-
<!-- wp:paragraph {"style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"}}}} -->
73-
<p style="padding-top:0.125rem;padding-bottom:0.125rem">' . esc_html__( 'Rooms:', 'tour-operator' ) . '</p>
72+
<!-- wp:paragraph -->
73+
<p>' . esc_html__( 'Rooms:', 'tour-operator' ) . '</p>
7474
<!-- /wp:paragraph --></div>
7575
<!-- /wp:group -->
7676

patterns/tour-card.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
<div class="wp-block-group center-vertically" style="min-height:3.75rem"><!-- wp:post-title {"textAlign":"center","level":3,"isLink":true,"style":{"elements":{"link":{":hover":{"color":{"text":"var:preset|color|primary-700"}}}}},"fontSize":"large"} /--></div>
3737
<!-- /wp:group -->
3838
39-
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Tour Information', 'tour-operator' ) . '"},"className":"lsx-tour-info","style":{"spacing":{"padding":{"left":"var:preset|spacing|20","right":"var:preset|spacing|20","top":"0.63rem","bottom":"0.63rem"},"blockGap":"0"},"border":{"top":{"width":"1px"},"bottom":{"width":"1px"}}},"fontSize":"medium","layout":{"type":"default"},"ariaLabel":"' . esc_attr__( 'Tour details', 'tour-operator' ) . '"} -->
40-
<div aria-label="' . esc_attr__( 'Tour details', 'tour-operator' ) . '" class="wp-block-group lsx-tour-info has-medium-font-size" style="border-top-width:1px;border-bottom-width:1px;padding-top:0.63rem;padding-right:var(--wp--preset--spacing--20);padding-bottom:0.63rem;padding-left:var(--wp--preset--spacing--20)"><!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Price Row', 'tour-operator' ) . '"},"className":"lsx-price-wrapper","style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
41-
<div class="wp-block-group lsx-price-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"0.3125rem"},"layout":{"selfStretch":"fixed","flexSize":"6.25rem"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
39+
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Tour Information', 'tour-operator' ) . '"},"className":"lsx-tour-info","style":{"spacing":{"padding":{"left":"var:preset|spacing|20","right":"var:preset|spacing|20","top":"var:preset|spacing|20","bottom":"var:preset|spacing|20"},"blockGap":"0"},"border":{"top":{"width":"1px"},"bottom":{"width":"1px"}}},"fontSize":"medium","layout":{"type":"default"},"ariaLabel":"' . esc_attr__( 'Tour details', 'tour-operator' ) . '"} -->
40+
<div aria-label="' . esc_attr__( 'Tour details', 'tour-operator' ) . '" class="wp-block-group lsx-tour-info has-medium-font-size" style="border-top-width:1px;border-bottom-width:1px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Price Row', 'tour-operator' ) . '"},"className":"lsx-price-wrapper","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
41+
<div class="wp-block-group lsx-price-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
4242
<div class="wp-block-group lsx-info-label"><!-- wp:lsx-tour-operator/icons {"iconName":"priceIcon"} /-->
4343
4444
<!-- wp:paragraph {"style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"}}}} -->
@@ -51,16 +51,16 @@
5151
<!-- /wp:paragraph --></div>
5252
<!-- /wp:group -->
5353
54-
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Duration Row', 'tour-operator' ) . '"},"className":"lsx-duration-wrapper","style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
55-
<div class="wp-block-group lsx-duration-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"0.3125rem"},"layout":{"selfStretch":"fixed","flexSize":"6.25rem"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
54+
<!-- wp:group {"metadata":{"name":"' . esc_attr__( 'Duration Row', 'tour-operator' ) . '"},"className":"lsx-duration-wrapper","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
55+
<div class="wp-block-group lsx-duration-wrapper"><!-- wp:group {"className":"lsx-info-label","style":{"spacing":{"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap","verticalAlignment":"center"}} -->
5656
<div class="wp-block-group lsx-info-label"><!-- wp:lsx-tour-operator/icons {"iconName":"durationIcon"} /-->
5757
5858
<!-- wp:paragraph {"style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"}}}} -->
5959
<p style="padding-top:0.125rem;padding-bottom:0.125rem">' . esc_html__( 'Duration:', 'tour-operator' ) . '</p>
6060
<!-- /wp:paragraph --></div>
6161
<!-- /wp:group -->
6262
63-
<!-- wp:group {"className":"lsx-info-value","style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"},"blockGap":"0.25rem"}},"layout":{"type":"flex","flexWrap":"nowrap"}} -->
63+
<!-- wp:group {"className":"lsx-info-value","style":{"spacing":{"padding":{"top":"0.125rem","bottom":"0.125rem"},"blockGap":"var:preset|spacing|10"}},"layout":{"type":"flex","flexWrap":"nowrap"}} -->
6464
<div class="wp-block-group lsx-info-value" style="padding-top:0.125rem;padding-bottom:0.125rem"><!-- wp:paragraph {"metadata":{"bindings":{"content":{"source":"lsx/post-meta","args":{"key":"duration"}},"__default":{"source":"core/pattern-overrides"}},"name":"' . esc_attr__( 'Duration', 'tour-operator' ) . '"}} -->
6565
<p></p>
6666
<!-- /wp:paragraph -->

src/blocks/sticky-menu/view.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ lsx_to.scroll_to_section = function (section_id) {
6262

6363
// Use getBoundingClientRect for accurate position relative to viewport
6464
const rect = section.getBoundingClientRect();
65-
const top = window.pageYOffset + rect.top - offset;
65+
const top = window.pageYOffset + rect.top - offset + 5;
6666

6767
// Check user's motion preference
6868
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
@@ -88,8 +88,8 @@ lsx_to.scroll_to_section = function (section_id) {
8888
section.setAttribute('tabindex', '-1');
8989
}
9090

91-
// Focus the section
92-
section.focus();
91+
// Focus the section without scrolling (preventScroll prevents interference)
92+
section.focus({ preventScroll: true });
9393

9494
// Remove temporary tabindex if we added it
9595
if (!originalTabIndex) {

src/css/_slider.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,11 @@
243243

244244
.slick-arrow {
245245
&.slick-prev {
246-
left: -4rem;
246+
left: -2rem;
247247
}
248248

249249
&.slick-next {
250-
right: -4rem;
250+
right: -2rem;
251251
}
252252
}
253253

src/css/_variables.scss

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Tour Operator CSS Variables
3+
*
4+
* Spacing variables that inherit from WordPress theme presets with fallback values.
5+
* These values ensure consistent spacing throughout patterns and templates.
6+
*
7+
* @package LightSpeed_Tour_Operator
8+
*/
9+
10+
/**
11+
* Spacing Scale Fallbacks
12+
* These use :where() for zero specificity, allowing theme values to always take precedence.
13+
* If the theme doesn't define these variables, these fallback values will be used.
14+
* Base: 1rem = 16px (default browser setting)
15+
*
16+
* Scale ratios:
17+
* - 10: 0.125rem (2px) - Extra small
18+
* - 20: 0.5rem (8px) - Small
19+
* - 30: 1rem (16px) - Medium
20+
* - 40: 2rem (32px) - Large
21+
* - 50: 3rem (48px) - Extra large
22+
* - 60: 4rem (64px) - 2X large
23+
* - 70: 5rem (80px) - 3X large
24+
* - 80: 6rem (96px) - 4X large
25+
*/
26+
:where(:root) {
27+
--wp--preset--spacing--10: 0.125rem;
28+
--wp--preset--spacing--20: 0.5rem;
29+
--wp--preset--spacing--30: 1rem;
30+
--wp--preset--spacing--40: 2rem;
31+
--wp--preset--spacing--50: 3rem;
32+
--wp--preset--spacing--60: 4rem;
33+
--wp--preset--spacing--70: 5rem;
34+
--wp--preset--spacing--80: 6rem;
35+
}

0 commit comments

Comments
 (0)