@webikon/webentor-core 0.12.0 → 0.14.0
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.
- package/CHANGELOG.md +20 -0
- package/core-js/blocks-components/button.tsx +2 -0
- package/core-js/blocks-filters/_slider-settings.tsx +135 -109
- package/core-js/blocks-filters/responsive-settings/utils.ts +14 -3
- package/package.json +32 -32
- package/public/build/assets/_utils-CxNuNGJl.js +2 -0
- package/public/build/assets/_utils-CxNuNGJl.js.map +1 -0
- package/public/build/assets/coreAppStyles-afJAdduv.css +2 -0
- package/public/build/assets/coreEditorJs--2qt5cZR.js +366 -0
- package/public/build/assets/coreEditorJs-DzCs9qgk.js.map +1 -0
- package/public/build/assets/coreEditorStyles-rGBH8e4z.css +2 -0
- package/public/build/assets/editor.deps-BY0wt7iZ.json +12 -0
- package/public/build/assets/resources/blocks/e-accordion/script-BvRk9kiK.js +0 -0
- package/public/build/assets/resources/blocks/e-accordion/style-DjbT6xUG.css +1 -0
- package/public/build/assets/resources/blocks/e-icon-picker/style-BMdJr12J.css +1 -0
- package/public/build/assets/resources/blocks/e-table/script-DoNj2Eik.js +2 -0
- package/public/build/assets/resources/blocks/e-table/script-DoNj2Eik.js.map +1 -0
- package/public/build/assets/resources/blocks/l-mobile-nav/style-CcmnVnWp.css +1 -0
- package/public/build/assets/resources/blocks/l-nav-menu/style-DFru8yhM.css +1 -0
- package/public/build/assets/resources/blocks/l-section/style-ve0mngOI.css +1 -0
- package/public/build/assets/sliderJs-DLm2vmOQ.js +6 -0
- package/public/build/assets/sliderJs-DLm2vmOQ.js.map +1 -0
- package/public/build/assets/sliderStyles-BSRtSZjK.css +2 -0
- package/public/build/manifest.json +50 -37
- package/resources/blocks/e-gallery/e-gallery.block.tsx +19 -4
- package/resources/blocks/l-mobile-nav/block.json +1 -0
- package/resources/blocks/l-nav-menu/block.json +1 -0
- package/resources/blocks/l-section/block.json +8 -0
- package/resources/blocks/l-section/l-section.block.tsx +131 -7
- package/resources/blocks/l-section/style.css +31 -0
- package/resources/blocks/l-site-logo/block.json +1 -0
- package/public/build/assets/_utils-CzK6Vfiv.js +0 -2
- package/public/build/assets/_utils-CzK6Vfiv.js.map +0 -1
- package/public/build/assets/coreAppStyles-CukxHLz7.css +0 -1
- package/public/build/assets/coreEditorJs-BJHc-PKW.js +0 -366
- package/public/build/assets/coreEditorJs-BJHc-PKW.js.map +0 -1
- package/public/build/assets/coreEditorStyles-I9xzOGSX.css +0 -1
- package/public/build/assets/resources/blocks/e-accordion/script-l0sNRNKZ.js +0 -2
- package/public/build/assets/resources/blocks/e-accordion/script-l0sNRNKZ.js.map +0 -1
- package/public/build/assets/resources/blocks/e-accordion/style-By4NoyzC.css +0 -1
- package/public/build/assets/resources/blocks/e-icon-picker/style-BSib2kGz.css +0 -1
- package/public/build/assets/resources/blocks/e-table/script-C_Z50hjm.js +0 -2
- package/public/build/assets/resources/blocks/e-table/script-C_Z50hjm.js.map +0 -1
- package/public/build/assets/resources/blocks/l-mobile-nav/style-QMBn75AN.css +0 -1
- package/public/build/assets/resources/blocks/l-nav-menu/style-B7Cly27h.css +0 -1
- package/public/build/assets/sliderJs-CyGnrv0Q.js +0 -6
- package/public/build/assets/sliderJs-CyGnrv0Q.js.map +0 -1
- package/public/build/assets/sliderStyles-Wdf994sh.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Webentor Core Changelog
|
|
2
2
|
|
|
3
|
+
## 0.14.0
|
|
4
|
+
|
|
5
|
+
- Make `l-section` background settings extensible, mirroring the button extension pattern.
|
|
6
|
+
- **New overlay feature (first-class)**: enable an overlay with opacity + color from the block's "Background Image Settings" panel. Renders a `.w-section-overlay` element with a `w-section--has-overlay` class on the `<section>`. Color/opacity are piped through the `--w-section-overlay-color` / `--w-section-overlay-opacity` CSS custom properties, so consumers can override the variables or the whole `.w-section-overlay` rule in CSS. Fixes a latent issue where the editor drew a fixed `bg-black opacity-20` overlay that never rendered on the frontend — the preview now reflects the actual setting.
|
|
7
|
+
- **New editor (JS) filters** for injecting custom controls into the background panel: `webentor.core.l-section.bgSettingsBefore` and `webentor.core.l-section.bgSettingsAfter` (signature `(node, props)`; return a React node). Controls store data on the free-form `bgSettings` block attribute via `setAttributes`.
|
|
8
|
+
- **New frontend (PHP) filters**: `webentor/l-section/section_classes` (append classes to the `<section>`, e.g. for variants), `webentor/l-section/overlay` (override the overlay markup), and `webentor/l-section/inner_start` (inject markup at the start of the section). Each receives `($value, $attributes, $block)`.
|
|
9
|
+
- See the docs guide "Extend Section Background" (`docs/src/guides/extend-l-section.md`) for a consumer variant-dropdown example.
|
|
10
|
+
- Fix `l-section` "Hidden" responsive display: because the section splits classes between the `<section>` wrapper and the inner container, a `display:none` value previously landed on the inner container and only hid the content — the background image, overlay, and spacing still rendered. Hide tokens (`hidden` / `{bp}:hidden`) now apply to the `<section>` wrapper so the whole section is hidden; other display values (flex/grid/block) stay on the inner container. The editor preview dims the whole section when hidden.
|
|
11
|
+
- Consolidate all `l-section` z-index into the block's `style.css` (keyed by `.w-section-img`, `.w-section-overlay`, `.w-section--has-overlay .w-section-inner`) instead of scattered `wbtr:z-[*]` utilities in the editor component and Blade view.
|
|
12
|
+
|
|
13
|
+
## 0.13.0
|
|
14
|
+
|
|
15
|
+
- WordPress 7.0 / PHP 8.4 compatibility: resolve block-editor deprecation notices surfaced by the iframed editor and the newer `@wordpress/*` runtime.
|
|
16
|
+
- Add `apiVersion: 3` to `l-nav-menu`, `l-mobile-nav`, and `l-site-logo` blocks (they use `useBlockProps`, which requires API v2+; fixes the "API version 1 / iframe editor" warnings).
|
|
17
|
+
- Enqueue core editor styles on `enqueue_block_assets` (guarded by `is_admin()`) instead of `enqueue_block_editor_assets`, so WordPress routes them into the editor iframe correctly (fixes "added to the iframe incorrectly"). Styles still stay off the public frontend.
|
|
18
|
+
- Refactor the `e-gallery` block toolbar to use `ToolbarButton` (via `MediaUpload`'s render prop) instead of custom components wrapped in `ToolbarItem` (deprecated since 5.6).
|
|
19
|
+
- Update dependencies to latest stable: `@wordpress/*` (block-editor/blocks 15.21, components 35, block-library 9.48, i18n 6.21, icons 14, dependency-extraction 6.48), `@10up/block-components` 1.22.2 (resolves the `getMedia` deprecation), `swiper` 12.2, `alpinejs`/`@alpinejs/collapse` 3.15.12.
|
|
20
|
+
- Update dev tooling, including majors: `stylelint` 17 + `stylelint-config-recommended` 18, `@types/wordpress__block-editor` 15, `prettier-plugin-tailwindcss` 0.8, plus `typescript-eslint` 8.61, `prettier` 3.8, `postcss` 8.5, `tailwindcss` 4.3. (ESLint 10, React 19, Vite 8, TypeScript 6 and lint-staged 17 are intentionally held — incompatible peers / runtime constraints.)
|
|
21
|
+
- **Consumer migration**: the editor-asset enqueue change applies to consumer theme code too (`app/setup.php`), as do the dependency bumps. Run the codemod from your project root: `pnpm dlx @webikon/webentor-codemods run 0.13.0` (dry-run), then `--apply`. See `@webikon/webentor-codemods`.
|
|
22
|
+
|
|
3
23
|
## 0.12.0
|
|
4
24
|
|
|
5
25
|
- **BREAKING**: Remove `init.php` entry point. Bootstrap logic (constant defines, optional vendor autoload, core app file requires) moved into `WebentorCoreServiceProvider`. Acorn auto-discovery handles loading — consumer themes must no longer manually `require_once WEBENTOR_CORE_PHP_PATH . '/init.php'` from `functions.php`.
|
|
@@ -233,6 +233,7 @@ export const WebentorButton = (props: WebentorButtonProps) => {
|
|
|
233
233
|
<hr className="wbtr:mt-2 wbtr:mb-3" />
|
|
234
234
|
|
|
235
235
|
<ToggleControl
|
|
236
|
+
className="wbtr:mb-3!"
|
|
236
237
|
label={__('Show button', 'webentor')}
|
|
237
238
|
checked={
|
|
238
239
|
attributes[attributeName] &&
|
|
@@ -344,6 +345,7 @@ export const WebentorButton = (props: WebentorButtonProps) => {
|
|
|
344
345
|
/>
|
|
345
346
|
|
|
346
347
|
<ToggleControl
|
|
348
|
+
className="wbtr:mb-3!"
|
|
347
349
|
label={__('Open in new tab', 'webentor')}
|
|
348
350
|
checked={
|
|
349
351
|
attributes[attributeName] &&
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InspectorControls } from '@wordpress/block-editor';
|
|
2
2
|
import {
|
|
3
3
|
PanelBody,
|
|
4
|
+
PanelRow,
|
|
4
5
|
TabPanel,
|
|
5
6
|
TextControl,
|
|
6
7
|
ToggleControl,
|
|
@@ -32,25 +33,29 @@ const initSliderSettings = () => {
|
|
|
32
33
|
<InspectorControls>
|
|
33
34
|
<PanelBody title={__('Slider Settings', 'webentor')} initialOpen>
|
|
34
35
|
{/* Not responsive settings */}
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
<PanelRow>
|
|
37
|
+
<ToggleControl
|
|
38
|
+
label={__('Loop Slides', 'webentor')}
|
|
39
|
+
checked={attributes?.slider?.loop ?? true}
|
|
40
|
+
onChange={(checked) =>
|
|
41
|
+
setAttributes(
|
|
42
|
+
setImmutably(attributes, ['slider', 'loop'], checked),
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
/>
|
|
46
|
+
</PanelRow>
|
|
44
47
|
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
<PanelRow>
|
|
49
|
+
<ToggleControl
|
|
50
|
+
label={__('Autoplay', 'webentor')}
|
|
51
|
+
checked={attributes?.slider?.autoplay ?? false}
|
|
52
|
+
onChange={(checked) =>
|
|
53
|
+
setAttributes(
|
|
54
|
+
setImmutably(attributes, ['slider', 'autoplay'], checked),
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
/>
|
|
58
|
+
</PanelRow>
|
|
54
59
|
|
|
55
60
|
{attributes?.slider?.autoplay && (
|
|
56
61
|
<TextControl
|
|
@@ -70,96 +75,112 @@ const initSliderSettings = () => {
|
|
|
70
75
|
)}
|
|
71
76
|
|
|
72
77
|
{attributes?.slider?.autoplay && (
|
|
78
|
+
<PanelRow>
|
|
79
|
+
<ToggleControl
|
|
80
|
+
label={__('Autoplay Control', 'webentor')}
|
|
81
|
+
checked={attributes?.slider?.autoplayControl ?? false}
|
|
82
|
+
help={__(
|
|
83
|
+
'Autoplay Control will show timer and play/pause button.',
|
|
84
|
+
'webentor',
|
|
85
|
+
)}
|
|
86
|
+
onChange={(checked) =>
|
|
87
|
+
setAttributes(
|
|
88
|
+
setImmutably(
|
|
89
|
+
attributes,
|
|
90
|
+
['slider', 'autoplayControl'],
|
|
91
|
+
checked,
|
|
92
|
+
),
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
/>
|
|
96
|
+
</PanelRow>
|
|
97
|
+
)}
|
|
98
|
+
|
|
99
|
+
<PanelRow>
|
|
73
100
|
<ToggleControl
|
|
74
|
-
label={__('
|
|
75
|
-
checked={attributes?.slider?.
|
|
76
|
-
help={__(
|
|
77
|
-
'Autoplay Control will show timer and play/pause button.',
|
|
78
|
-
'webentor',
|
|
79
|
-
)}
|
|
101
|
+
label={__('Show Arrows', 'webentor')}
|
|
102
|
+
checked={attributes?.slider?.showArrows ?? false}
|
|
80
103
|
onChange={(checked) =>
|
|
81
104
|
setAttributes(
|
|
82
105
|
setImmutably(
|
|
83
106
|
attributes,
|
|
84
|
-
['slider', '
|
|
107
|
+
['slider', 'showArrows'],
|
|
85
108
|
checked,
|
|
86
109
|
),
|
|
87
110
|
)
|
|
88
111
|
}
|
|
89
112
|
/>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<ToggleControl
|
|
93
|
-
label={__('Show Arrows', 'webentor')}
|
|
94
|
-
checked={attributes?.slider?.showArrows ?? false}
|
|
95
|
-
onChange={(checked) =>
|
|
96
|
-
setAttributes(
|
|
97
|
-
setImmutably(attributes, ['slider', 'showArrows'], checked),
|
|
98
|
-
)
|
|
99
|
-
}
|
|
100
|
-
/>
|
|
113
|
+
</PanelRow>
|
|
101
114
|
|
|
102
115
|
{attributes?.slider?.showArrows && (
|
|
116
|
+
<PanelRow>
|
|
117
|
+
<ToggleControl
|
|
118
|
+
label={__('Arrows Inside Container', 'webentor')}
|
|
119
|
+
checked={attributes?.slider?.arrowsInsideContainer ?? false}
|
|
120
|
+
onChange={(checked) =>
|
|
121
|
+
setAttributes(
|
|
122
|
+
setImmutably(
|
|
123
|
+
attributes,
|
|
124
|
+
['slider', 'arrowsInsideContainer'],
|
|
125
|
+
checked,
|
|
126
|
+
),
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
/>
|
|
130
|
+
</PanelRow>
|
|
131
|
+
)}
|
|
132
|
+
|
|
133
|
+
<PanelRow>
|
|
103
134
|
<ToggleControl
|
|
104
|
-
label={__('
|
|
105
|
-
checked={attributes?.slider?.
|
|
135
|
+
label={__('Show Pagination', 'webentor')}
|
|
136
|
+
checked={attributes?.slider?.showPagination ?? false}
|
|
106
137
|
onChange={(checked) =>
|
|
107
138
|
setAttributes(
|
|
108
139
|
setImmutably(
|
|
109
140
|
attributes,
|
|
110
|
-
['slider', '
|
|
141
|
+
['slider', 'showPagination'],
|
|
111
142
|
checked,
|
|
112
143
|
),
|
|
113
144
|
)
|
|
114
145
|
}
|
|
115
146
|
/>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
<ToggleControl
|
|
119
|
-
label={__('Show Pagination', 'webentor')}
|
|
120
|
-
checked={attributes?.slider?.showPagination ?? false}
|
|
121
|
-
onChange={(checked) =>
|
|
122
|
-
setAttributes(
|
|
123
|
-
setImmutably(
|
|
124
|
-
attributes,
|
|
125
|
-
['slider', 'showPagination'],
|
|
126
|
-
checked,
|
|
127
|
-
),
|
|
128
|
-
)
|
|
129
|
-
}
|
|
130
|
-
/>
|
|
147
|
+
</PanelRow>
|
|
131
148
|
|
|
132
149
|
{attributes?.slider?.showPagination && (
|
|
150
|
+
<PanelRow>
|
|
151
|
+
<ToggleControl
|
|
152
|
+
label={__('Pagination Inside Container', 'webentor')}
|
|
153
|
+
checked={
|
|
154
|
+
attributes?.slider?.paginationInsideContainer ?? false
|
|
155
|
+
}
|
|
156
|
+
onChange={(checked) =>
|
|
157
|
+
setAttributes(
|
|
158
|
+
setImmutably(
|
|
159
|
+
attributes,
|
|
160
|
+
['slider', 'paginationInsideContainer'],
|
|
161
|
+
checked,
|
|
162
|
+
),
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
/>
|
|
166
|
+
</PanelRow>
|
|
167
|
+
)}
|
|
168
|
+
|
|
169
|
+
<PanelRow>
|
|
133
170
|
<ToggleControl
|
|
134
|
-
label={__('
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
171
|
+
label={__('Dark Mode', 'webentor')}
|
|
172
|
+
help={__(
|
|
173
|
+
'Use Dark Mode when slider background is dark and you need inner elements and text to be in inverted color, e.g. light.',
|
|
174
|
+
'webentor',
|
|
175
|
+
)}
|
|
176
|
+
checked={attributes?.slider?.darkMode ?? false}
|
|
138
177
|
onChange={(checked) =>
|
|
139
178
|
setAttributes(
|
|
140
|
-
setImmutably(
|
|
141
|
-
attributes,
|
|
142
|
-
['slider', 'paginationInsideContainer'],
|
|
143
|
-
checked,
|
|
144
|
-
),
|
|
179
|
+
setImmutably(attributes, ['slider', 'darkMode'], checked),
|
|
145
180
|
)
|
|
146
181
|
}
|
|
147
182
|
/>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
<ToggleControl
|
|
151
|
-
label={__('Dark Mode', 'webentor')}
|
|
152
|
-
help={__(
|
|
153
|
-
'Use Dark Mode when slider background is dark and you need inner elements and text to be in inverted color, e.g. light.',
|
|
154
|
-
'webentor',
|
|
155
|
-
)}
|
|
156
|
-
checked={attributes?.slider?.darkMode ?? false}
|
|
157
|
-
onChange={(checked) =>
|
|
158
|
-
setAttributes(
|
|
159
|
-
setImmutably(attributes, ['slider', 'darkMode'], checked),
|
|
160
|
-
)
|
|
161
|
-
}
|
|
162
|
-
/>
|
|
183
|
+
</PanelRow>
|
|
163
184
|
|
|
164
185
|
<TextControl
|
|
165
186
|
label={__('Slider ID', 'webentor')}
|
|
@@ -193,38 +214,43 @@ const initSliderSettings = () => {
|
|
|
193
214
|
// className="mt-4"
|
|
194
215
|
style={{ marginTop: '16px' }}
|
|
195
216
|
>
|
|
196
|
-
<
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
217
|
+
<PanelRow>
|
|
218
|
+
<ToggleControl
|
|
219
|
+
label={__('Enable Slider', 'webentor')}
|
|
220
|
+
checked={
|
|
221
|
+
attributes?.slider?.enabled?.value?.[tab.name] ?? true
|
|
222
|
+
}
|
|
223
|
+
onChange={(checked) =>
|
|
224
|
+
setAttributes(
|
|
225
|
+
setImmutably(
|
|
226
|
+
attributes,
|
|
227
|
+
['slider', 'enabled', 'value', tab.name],
|
|
228
|
+
checked,
|
|
229
|
+
),
|
|
230
|
+
)
|
|
231
|
+
}
|
|
232
|
+
/>
|
|
233
|
+
</PanelRow>
|
|
211
234
|
|
|
212
|
-
<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
235
|
+
<PanelRow>
|
|
236
|
+
<ToggleControl
|
|
237
|
+
label={__('Centered slides', 'webentor')}
|
|
238
|
+
checked={
|
|
239
|
+
attributes?.slider?.centeredSlides?.value?.[
|
|
240
|
+
tab.name
|
|
241
|
+
] ?? false
|
|
242
|
+
}
|
|
243
|
+
onChange={(checked) =>
|
|
244
|
+
setAttributes(
|
|
245
|
+
setImmutably(
|
|
246
|
+
attributes,
|
|
247
|
+
['slider', 'centeredSlides', 'value', tab.name],
|
|
248
|
+
checked,
|
|
249
|
+
),
|
|
250
|
+
)
|
|
251
|
+
}
|
|
252
|
+
/>
|
|
253
|
+
</PanelRow>
|
|
228
254
|
|
|
229
255
|
<TextControl
|
|
230
256
|
label={__('Slides per view', 'webentor')}
|
|
@@ -253,10 +253,18 @@ export const generateClassNames = (attributes: any): string => {
|
|
|
253
253
|
* Reads value entries from the given attribute keys (e.g. 'layout', 'flexbox',
|
|
254
254
|
* 'grid') and returns the set of class tokens that would be generated.
|
|
255
255
|
* Works directly from the block's attributes — no registry or cross-bundle
|
|
256
|
-
* state needed.
|
|
256
|
+
* state needed. This matters for blocks compiled into a separate bundle from
|
|
257
|
+
* the consumer (e.g. webentor-core's own blocks like l-section), where the
|
|
258
|
+
* SettingsRegistry is not populated and the registry-driven generators
|
|
259
|
+
* (computeClassesByAttribute / generateClassNames) would return nothing.
|
|
257
260
|
*
|
|
258
261
|
* Useful for blocks that need to split classes between elements (e.g. l-section
|
|
259
262
|
* moves layout/flexbox/grid classes from the wrapper to an inner container).
|
|
263
|
+
*
|
|
264
|
+
* A `hidden` display value is mapped to `opacity-30` (visual dim) instead of a
|
|
265
|
+
* real `hidden` class, mirroring generateLayoutClasses: in the editor the block
|
|
266
|
+
* must stay visible/selectable, never `display:none`. Real frontend hiding is
|
|
267
|
+
* produced server-side (PHP), not here.
|
|
260
268
|
*/
|
|
261
269
|
export const collectClassTokensFromAttributes = (
|
|
262
270
|
attributes: Record<string, any>,
|
|
@@ -275,11 +283,14 @@ export const collectClassTokensFromAttributes = (
|
|
|
275
283
|
for (const [bp, value] of Object.entries(propData.value)) {
|
|
276
284
|
if (!value || typeof value !== 'string') continue;
|
|
277
285
|
const prefix = bp === 'basic' ? '' : `${bp}:`;
|
|
278
|
-
tokens.add(`${prefix}${value}`);
|
|
279
286
|
|
|
280
|
-
// Layout 'hidden' maps to 'opacity-30'
|
|
287
|
+
// Layout 'hidden' maps to 'opacity-30' (visual dim) — never emit a real
|
|
288
|
+
// `${bp}:hidden` (display:none) here, which would hide the block in the
|
|
289
|
+
// editor. Mirrors generateLayoutClasses.
|
|
281
290
|
if (value === 'hidden') {
|
|
282
291
|
tokens.add(`${prefix}opacity-30`);
|
|
292
|
+
} else {
|
|
293
|
+
tokens.add(`${prefix}${value}`);
|
|
283
294
|
}
|
|
284
295
|
}
|
|
285
296
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webikon/webentor-core",
|
|
3
3
|
"homepage": "https://webikon.sk",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.0",
|
|
5
5
|
"description": "Core functionality and useful utilities for Webentor Stack",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Webikon s.r.o.",
|
|
@@ -143,51 +143,51 @@
|
|
|
143
143
|
}
|
|
144
144
|
},
|
|
145
145
|
"devDependencies": {
|
|
146
|
-
"@10up/block-components": "^1.
|
|
147
|
-
"@eslint/js": "^9.39.
|
|
148
|
-
"@ianvs/prettier-plugin-sort-imports": "^4.7.
|
|
146
|
+
"@10up/block-components": "^1.22.2",
|
|
147
|
+
"@eslint/js": "^9.39.2",
|
|
148
|
+
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
|
|
149
149
|
"@kucrut/vite-for-wp": "^0.12.0",
|
|
150
|
-
"@roots/vite-plugin": "^
|
|
151
|
-
"@shufo/prettier-plugin-blade": "^1.16.
|
|
152
|
-
"@tailwindcss/postcss": "^4.1
|
|
153
|
-
"@tailwindcss/vite": "^4.1
|
|
154
|
-
"@types/wordpress__block-editor": "^
|
|
155
|
-
"@vitejs/plugin-react": "^
|
|
156
|
-
"@webikon/webentor-configs": "^1.0.
|
|
157
|
-
"@wordpress/block-editor": "^15.
|
|
158
|
-
"@wordpress/block-library": "^9.
|
|
159
|
-
"@wordpress/blocks": "^15.
|
|
160
|
-
"@wordpress/components": "^
|
|
161
|
-
"@wordpress/dependency-extraction-webpack-plugin": "^6.
|
|
162
|
-
"@wordpress/i18n": "^6.
|
|
163
|
-
"@wordpress/icons": "^
|
|
164
|
-
"eslint": "^9.39.
|
|
150
|
+
"@roots/vite-plugin": "^2.2.0",
|
|
151
|
+
"@shufo/prettier-plugin-blade": "^1.16.2",
|
|
152
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
153
|
+
"@tailwindcss/vite": "^4.3.1",
|
|
154
|
+
"@types/wordpress__block-editor": "^15.0.6",
|
|
155
|
+
"@vitejs/plugin-react": "^6.0.0",
|
|
156
|
+
"@webikon/webentor-configs": "^1.0.2",
|
|
157
|
+
"@wordpress/block-editor": "^15.21.1",
|
|
158
|
+
"@wordpress/block-library": "^9.48.1",
|
|
159
|
+
"@wordpress/blocks": "^15.21.1",
|
|
160
|
+
"@wordpress/components": "^35.0.1",
|
|
161
|
+
"@wordpress/dependency-extraction-webpack-plugin": "^6.48.1",
|
|
162
|
+
"@wordpress/i18n": "^6.21.1",
|
|
163
|
+
"@wordpress/icons": "^14.0.1",
|
|
164
|
+
"eslint": "^9.39.2",
|
|
165
165
|
"eslint-config-prettier": "^10.1.8",
|
|
166
|
-
"eslint-plugin-prettier": "^5.5.
|
|
166
|
+
"eslint-plugin-prettier": "^5.5.6",
|
|
167
167
|
"eslint-plugin-react": "^7.37.5",
|
|
168
168
|
"glob": "^13.0.6",
|
|
169
169
|
"husky": "^9.1.7",
|
|
170
|
-
"lint-staged": "^16.
|
|
170
|
+
"lint-staged": "^16.4.0",
|
|
171
171
|
"patch-package": "^8.0.1",
|
|
172
|
-
"postcss": "^8.5.
|
|
172
|
+
"postcss": "^8.5.15",
|
|
173
173
|
"postcss-pxtorem": "^6.1.0",
|
|
174
|
-
"prettier": "^3.
|
|
175
|
-
"prettier-plugin-tailwindcss": "^0.
|
|
174
|
+
"prettier": "^3.8.4",
|
|
175
|
+
"prettier-plugin-tailwindcss": "^0.8.0",
|
|
176
176
|
"react": "^18.3.1",
|
|
177
177
|
"react-dom": "^18.3.1",
|
|
178
178
|
"rollup-plugin-external-globals": "^0.13.0",
|
|
179
|
-
"stylelint": "^
|
|
180
|
-
"stylelint-config-recommended": "^
|
|
181
|
-
"tailwindcss": "^4.1
|
|
179
|
+
"stylelint": "^17.13.0",
|
|
180
|
+
"stylelint-config-recommended": "^18.0.0",
|
|
181
|
+
"tailwindcss": "^4.3.1",
|
|
182
182
|
"typescript": "^5.9.3",
|
|
183
|
-
"typescript-eslint": "^8.
|
|
184
|
-
"vite": "^
|
|
183
|
+
"typescript-eslint": "^8.61.1",
|
|
184
|
+
"vite": "^8.0.0",
|
|
185
185
|
"vite-plugin-external": "^6.2.2"
|
|
186
186
|
},
|
|
187
187
|
"dependencies": {
|
|
188
|
-
"@alpinejs/collapse": "^3.15.
|
|
189
|
-
"alpinejs": "^3.15.
|
|
190
|
-
"swiper": "^12.0
|
|
188
|
+
"@alpinejs/collapse": "^3.15.12",
|
|
189
|
+
"alpinejs": "^3.15.12",
|
|
190
|
+
"swiper": "^12.2.0"
|
|
191
191
|
},
|
|
192
192
|
"lint-staged": {
|
|
193
193
|
"*.{js,ts,tsx}": "npm run lint:js --",
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t,n){t=Array.isArray(t)?[...t]:[t],e=Array.isArray(e)?[...e]:{...e};let r=t.pop(),i=e;for(let e of t){let t=i[e];i=i[e]=Array.isArray(t)?[...t]:{...t}}return i[r]=n,e}var t=(e,t=50)=>{let n=null;return(...r)=>{window.clearTimeout(n),n=window.setTimeout(()=>{e(...r)},t)}};function n(e,t=20){let n=Date.now();return function(...r){n+t-Date.now()<0&&(e(...r),n=Date.now())}}var r=(e,t)=>e.find(e=>e.color===t)?.slug,i=(e,t)=>e.find(e=>e.slug===t)?.color;export{n as a,e as i,i as n,r,t};
|
|
2
|
+
//# sourceMappingURL=_utils-CxNuNGJl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils-CxNuNGJl.js","names":[],"sources":["../../../core-js/_utils.ts"],"sourcesContent":["/**\n * Immutably sets a value inside an object. Like `lodash#set`, but returning a\n * new object. Treats nullish initial values as empty objects. Clones any\n * nested objects. Supports arrays, too.\n *\n * @param {Object} object Object to set a value in.\n * @param {number|string|Array} path Path in the object to modify.\n * @param {*} value New value to set.\n * @return {Object} Cloned object with the new value set.\n */\nexport function setImmutably(\n object: object,\n path: number | string | Array<any>,\n value: any,\n): object {\n // Normalize path\n path = Array.isArray(path) ? [...path] : [path];\n\n // Shallowly clone the base of the object\n object = Array.isArray(object) ? [...object] : { ...object };\n\n const leaf = path.pop();\n\n // Traverse object from root to leaf, shallowly cloning at each level\n let prev = object;\n for (const key of path) {\n const lvl = prev[key];\n prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };\n }\n\n prev[leaf] = value;\n\n return object;\n}\n\n/**\n * Debounce functions for better performance\n * Source: https://www.joshwcomeau.com/snippets/javascript/debounce/\n *\n * @param {Function} fn The function to debounce\n * @param {number} wait The time, in milliseconds, to wait before calling the function\n * @return {Function} The debounced function\n */\nexport const debounce = (callback, wait = 50) => {\n let timeoutId = null;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n\n/**\n * Throttle a function so that it is only called once within a given time interval.\n *\n * @param {Function} fn - The function to throttle\n * @param {Number} wait - The time interval, in milliseconds, to wait between calls to the function\n * @return {Function} - Returns a throttled version of the original function\n */\nexport function throttle(fn, wait = 20) {\n let time = Date.now();\n return function (...args) {\n if (time + wait - Date.now() < 0) {\n fn(...args);\n time = Date.now();\n }\n };\n}\n\n/**\n * Convert a string to camelCase\n *\n * @param {string} text - The string to convert\n * @return {string} The camelCase string\n */\nexport function camelize(text: string) {\n const a = text\n .toLowerCase()\n .replace(/[-_\\s.]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''));\n return a.substring(0, 1).toLowerCase() + a.substring(1);\n}\n\n/**\n * Check if an object is empty\n *\n * @param {Object} obj - The object to check\n * @return {boolean} True if the object is empty, false otherwise\n */\nexport function isEmpty(obj: object) {\n for (const prop in obj) {\n if (Object.hasOwn(obj, prop)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Get color slug by color hex value.\n * Usually we don't want to save hex value from WP color palette, we want to save slug.\n *\n * @param colors - Colors array\n * @param color - Color string\n * @returns Color slug\n */\nexport const getColorSlugByColor = (\n colors: { color: string; slug: string }[],\n color: string,\n) => {\n return colors.find((c: any) => c.color === color)?.slug;\n};\n\n/**\n * Get color by slug.\n * This is the opposite of getColorSlugByColor.\n * We want to use hex value for ColorPallete control, but we saved it as slug.\n *\n * @param colors - Colors array\n * @param slug - Color slug\n * @returns Color string\n */\nexport const getColorBySlug = (colors: any, slug: string) => {\n return colors.find((color: any) => color.slug === slug)?.color;\n};\n"],"mappings":"AAUA,SAAgB,EACd,EACA,EACA,EACQ,CAER,EAAO,MAAM,QAAQ,CAAI,EAAI,CAAC,GAAG,CAAI,EAAI,CAAC,CAAI,EAG9C,EAAS,MAAM,QAAQ,CAAM,EAAI,CAAC,GAAG,CAAM,EAAI,CAAE,GAAG,CAAO,EAE3D,IAAM,EAAO,EAAK,IAAI,EAGlB,EAAO,EACX,IAAK,IAAM,KAAO,EAAM,CACtB,IAAM,EAAM,EAAK,GACjB,EAAO,EAAK,GAAO,MAAM,QAAQ,CAAG,EAAI,CAAC,GAAG,CAAG,EAAI,CAAE,GAAG,CAAI,CAC9D,CAIA,MAFA,GAAK,GAAQ,EAEN,CACT,CAUA,IAAa,GAAY,EAAU,EAAO,KAAO,CAC/C,IAAI,EAAY,KAChB,OAAQ,GAAG,IAAS,CAClB,OAAO,aAAa,CAAS,EAC7B,EAAY,OAAO,eAAiB,CAClC,EAAS,GAAG,CAAI,CAClB,EAAG,CAAI,CACT,CACF,EASA,SAAgB,EAAS,EAAI,EAAO,GAAI,CACtC,IAAI,EAAO,KAAK,IAAI,EACpB,OAAO,SAAU,GAAG,EAAM,CACpB,EAAO,EAAO,KAAK,IAAI,EAAI,IAC7B,EAAG,GAAG,CAAI,EACV,EAAO,KAAK,IAAI,EAEpB,CACF,CAuCA,IAAa,GACX,EACA,IAEO,EAAO,KAAM,GAAW,EAAE,QAAU,CAAK,GAAG,KAYxC,GAAkB,EAAa,IACnC,EAAO,KAAM,GAAe,EAAM,OAAS,CAAI,GAAG"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--wbtr-color-gray-50:oklch(98.5% .002 247.839);--wbtr-color-gray-100:oklch(96.7% .003 264.542);--wbtr-color-gray-200:oklch(92.8% .006 264.531);--wbtr-color-gray-300:oklch(87.2% .01 258.338);--wbtr-color-gray-500:oklch(55.1% .027 264.364);--wbtr-color-gray-700:oklch(37.3% .034 259.733);--wbtr-color-gray-800:oklch(27.8% .033 256.848);--wbtr-color-black:#000;--wbtr-color-white:#fff;--wbtr-spacing:.25rem;--wbtr-font-weight-semibold:600;--wbtr-font-weight-bold:700;--wbtr-ease-in:cubic-bezier(.4, 0, 1, 1);--wbtr-ease-in-out:cubic-bezier(.4, 0, .2, 1);--wbtr-default-transition-duration:.15s;--wbtr-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--wbtr-default-font-family:var(--font-primary);--wbtr-default-mono-font-family:var(--wbtr-font-mono);--wbtr-font-heading:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--wbtr-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--wbtr-leading-125:1.25;--wbtr-leading-150:1.5;--wbtr-text-10:.625rem;--wbtr-text-12:.75rem;--wbtr-text-14:.875rem;--wbtr-text-16:1rem;--wbtr-text-18:1.125rem;--wbtr-text-20:1.25rem;--wbtr-text-24:1.5rem;--wbtr-text-30:1.875rem;--wbtr-text-80:5rem;--wbtr-color-editor-border:#ddd;--wbtr-radius-full:9999px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--wbtr-default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--wbtr-default-font-feature-settings,normal);font-variation-settings:var(--wbtr-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--wbtr-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--wbtr-default-mono-font-feature-settings,normal);font-variation-settings:var(--wbtr-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:1.25rem}::file-selector-button{margin-inline-end:.25rem}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth;font-family:var(--font-primary)}@media screen and (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}a,button,label{transition:color .15s ease-out,background-color .15s ease-out,opacity .15s ease-out,border-color .15s ease-out}svg{transition:fill .15s ease-out,stroke .15s ease-out}}@layer components;@layer utilities{.wbtr\:pointer-events-none{pointer-events:none}.wbtr\:absolute{position:absolute}.wbtr\:relative{position:relative}.wbtr\:inset-0{inset:0}.wbtr\:-top-1{top:calc(var(--wbtr-spacing) * -1)}.wbtr\:top-0{top:0}.wbtr\:top-1\/2{top:50%}.wbtr\:top-\[2px\]{top:2px}.wbtr\:-right-1{right:calc(var(--wbtr-spacing) * -1)}.wbtr\:-right-4{right:calc(var(--wbtr-spacing) * -4)}.wbtr\:right-3{right:calc(var(--wbtr-spacing) * 3)}.wbtr\:right-4{right:calc(var(--wbtr-spacing) * 4)}.wbtr\:bottom-0{bottom:0}.wbtr\:bottom-10{bottom:calc(var(--wbtr-spacing) * 10)}.wbtr\:left-0{left:0}.wbtr\:left-2{left:calc(var(--wbtr-spacing) * 2)}.wbtr\:left-3{left:calc(var(--wbtr-spacing) * 3)}.wbtr\:z-10{z-index:10}.wbtr\:z-50{z-index:50}.wbtr\:z-\[\*\]{z-index:*}.wbtr\:my-2{margin-block:calc(var(--wbtr-spacing) * 2)}.wbtr\:my-20{margin-block:calc(var(--wbtr-spacing) * 20)}.wbtr\:mt-0{margin-top:0}.wbtr\:mt-2{margin-top:calc(var(--wbtr-spacing) * 2)}.wbtr\:mt-4{margin-top:calc(var(--wbtr-spacing) * 4)}.wbtr\:mt-5{margin-top:calc(var(--wbtr-spacing) * 5)}.wbtr\:mt-7{margin-top:calc(var(--wbtr-spacing) * 7)}.wbtr\:mb-0\!{margin-bottom:0!important}.wbtr\:mb-1{margin-bottom:var(--wbtr-spacing)}.wbtr\:mb-2{margin-bottom:calc(var(--wbtr-spacing) * 2)}.wbtr\:mb-2\!{margin-bottom:calc(var(--wbtr-spacing) * 2)!important}.wbtr\:mb-3{margin-bottom:calc(var(--wbtr-spacing) * 3)}.wbtr\:mb-3\!{margin-bottom:calc(var(--wbtr-spacing) * 3)!important}.wbtr\:mb-4{margin-bottom:calc(var(--wbtr-spacing) * 4)}.wbtr\:ml-auto{margin-left:auto}.wbtr\:block{display:block}.wbtr\:flex{display:flex}.wbtr\:hidden{display:none}.wbtr\:inline-block{display:inline-block}.wbtr\:size-10{width:calc(var(--wbtr-spacing) * 10);height:calc(var(--wbtr-spacing) * 10)}.wbtr\:\!h-full{height:100%!important}.wbtr\:h-4{height:calc(var(--wbtr-spacing) * 4)}.wbtr\:h-5{height:calc(var(--wbtr-spacing) * 5)}.wbtr\:h-11{height:calc(var(--wbtr-spacing) * 11)}.wbtr\:h-12{height:calc(var(--wbtr-spacing) * 12)}.wbtr\:h-\[215px\]{height:215px}.wbtr\:h-fit\!{height:fit-content!important}.wbtr\:h-full{height:100%}.wbtr\:\!w-full{width:100%!important}.wbtr\:w-4{width:calc(var(--wbtr-spacing) * 4)}.wbtr\:w-5{width:calc(var(--wbtr-spacing) * 5)}.wbtr\:w-6{width:calc(var(--wbtr-spacing) * 6)}.wbtr\:w-12{width:calc(var(--wbtr-spacing) * 12)}.wbtr\:w-24{width:calc(var(--wbtr-spacing) * 24)}.wbtr\:w-\[320px\]{width:320px}.wbtr\:w-auto{width:auto}.wbtr\:w-fit\!{width:fit-content!important}.wbtr\:w-full{width:100%}.wbtr\:max-w-full{max-width:100%}.wbtr\:min-w-0{min-width:0}.wbtr\:flex-1{flex:1}.wbtr\:grow-1{flex-grow:1}.wbtr\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.wbtr\:translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.wbtr\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.wbtr\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.wbtr\:rotate-90{rotate:90deg}.wbtr\:transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.wbtr\:flex-col{flex-direction:column}.wbtr\:flex-row{flex-direction:row}.wbtr\:flex-wrap{flex-wrap:wrap}.wbtr\:items-center{align-items:center}.wbtr\:items-start{align-items:flex-start}.wbtr\:justify-between{justify-content:space-between}.wbtr\:justify-center{justify-content:center}.wbtr\:justify-start{justify-content:flex-start}.wbtr\:gap-1\.5{gap:calc(var(--wbtr-spacing) * 1.5)}.wbtr\:gap-2{gap:calc(var(--wbtr-spacing) * 2)}.wbtr\:gap-3{gap:calc(var(--wbtr-spacing) * 3)}.wbtr\:gap-4{gap:calc(var(--wbtr-spacing) * 4)}.wbtr\:gap-8{gap:calc(var(--wbtr-spacing) * 8)}.wbtr\:gap-x-4{column-gap:calc(var(--wbtr-spacing) * 4)}.wbtr\:overflow-hidden{overflow:hidden}.wbtr\:rounded-\[inherit\]{border-radius:inherit}.wbtr\:rounded-full{border-radius:var(--wbtr-radius-full)}.wbtr\:border{border-style:var(--tw-border-style);border-width:1px}.wbtr\:border-2{border-style:var(--tw-border-style);border-width:2px}.wbtr\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.wbtr\:border-dashed{--tw-border-style:dashed;border-style:dashed}.wbtr\:border-black{border-color:var(--wbtr-color-black)}.wbtr\:border-editor-border{border-color:var(--wbtr-color-editor-border)}.wbtr\:border-gray-100{border-color:var(--wbtr-color-gray-100)}.wbtr\:border-gray-200{border-color:var(--wbtr-color-gray-200)}.wbtr\:bg-editor-border{background-color:var(--wbtr-color-editor-border)}.wbtr\:bg-gray-50{background-color:var(--wbtr-color-gray-50)}.wbtr\:bg-gray-100{background-color:var(--wbtr-color-gray-100)}.wbtr\:bg-gray-800{background-color:var(--wbtr-color-gray-800)}.wbtr\:bg-white{background-color:var(--wbtr-color-white)}.wbtr\:fill-current{fill:currentColor}.wbtr\:object-cover{object-fit:cover}.wbtr\:p-0\!{padding:0!important}.wbtr\:p-2{padding:calc(var(--wbtr-spacing) * 2)}.wbtr\:p-3{padding:calc(var(--wbtr-spacing) * 3)}.wbtr\:p-4{padding:calc(var(--wbtr-spacing) * 4)}.wbtr\:p-5{padding:calc(var(--wbtr-spacing) * 5)}.wbtr\:p-8{padding:calc(var(--wbtr-spacing) * 8)}.wbtr\:px-2{padding-inline:calc(var(--wbtr-spacing) * 2)}.wbtr\:px-4{padding-inline:calc(var(--wbtr-spacing) * 4)}.wbtr\:py-2\.5{padding-block:calc(var(--wbtr-spacing) * 2.5)}.wbtr\:py-4{padding-block:calc(var(--wbtr-spacing) * 4)}.wbtr\:pt-3{padding-top:calc(var(--wbtr-spacing) * 3)}.wbtr\:pt-4{padding-top:calc(var(--wbtr-spacing) * 4)}.wbtr\:pt-5{padding-top:calc(var(--wbtr-spacing) * 5)}.wbtr\:pr-2{padding-right:calc(var(--wbtr-spacing) * 2)}.wbtr\:pr-12{padding-right:calc(var(--wbtr-spacing) * 12)}.wbtr\:pb-2{padding-bottom:calc(var(--wbtr-spacing) * 2)}.wbtr\:pb-4{padding-bottom:calc(var(--wbtr-spacing) * 4)}.wbtr\:pl-5{padding-left:calc(var(--wbtr-spacing) * 5)}.wbtr\:text-center{text-align:center}.wbtr\:text-left{text-align:left}.wbtr\:align-middle{vertical-align:middle}.wbtr\:font-heading{font-family:var(--wbtr-font-heading)}.wbtr\:text-10{font-size:var(--wbtr-text-10)}.wbtr\:text-12{font-size:var(--wbtr-text-12)}.wbtr\:text-14{font-size:var(--wbtr-text-14)}.wbtr\:text-16{font-size:var(--wbtr-text-16)}.wbtr\:text-18{font-size:var(--wbtr-text-18)}.wbtr\:text-20{font-size:var(--wbtr-text-20)}.wbtr\:text-24{font-size:var(--wbtr-text-24)}.wbtr\:text-30{font-size:var(--wbtr-text-30)}.wbtr\:text-80{font-size:var(--wbtr-text-80)}.wbtr\:text-\[11px\]{font-size:.6875rem}.wbtr\:leading-125{--tw-leading:var(--wbtr-leading-125);line-height:var(--wbtr-leading-125)}.wbtr\:leading-150{--tw-leading:var(--wbtr-leading-150);line-height:var(--wbtr-leading-150)}.wbtr\:font-bold\!{--tw-font-weight:var(--wbtr-font-weight-bold)!important;font-weight:var(--wbtr-font-weight-bold)!important}.wbtr\:font-semibold{--tw-font-weight:var(--wbtr-font-weight-semibold);font-weight:var(--wbtr-font-weight-semibold)}.wbtr\:text-black{color:var(--wbtr-color-black)}.wbtr\:text-current{color:currentColor}.wbtr\:text-gray-200{color:var(--wbtr-color-gray-200)}.wbtr\:text-gray-300{color:var(--wbtr-color-gray-300)}.wbtr\:text-gray-500{color:var(--wbtr-color-gray-500)}.wbtr\:text-gray-700{color:var(--wbtr-color-gray-700)}.wbtr\:text-gray-800{color:var(--wbtr-color-gray-800)}.wbtr\:text-white{color:var(--wbtr-color-white)}.wbtr\:uppercase{text-transform:uppercase}.wbtr\:opacity-0{opacity:0}.wbtr\:opacity-40{opacity:.4}.wbtr\:opacity-50{opacity:.5}.wbtr\:opacity-80{opacity:.8}.wbtr\:opacity-100{opacity:1}.wbtr\:shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.wbtr\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--wbtr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--wbtr-default-transition-duration))}.wbtr\:duration-500{--tw-duration:.5s;transition-duration:.5s}.wbtr\:ease-in{--tw-ease:var(--wbtr-ease-in);transition-timing-function:var(--wbtr-ease-in)}.wbtr\:ease-in-out{--tw-ease:var(--wbtr-ease-in-out);transition-timing-function:var(--wbtr-ease-in-out)}.wbtr\:outline-none{--tw-outline-style:none;outline-style:none}.wbtr\:group-\[\.slider-enabled\]\:flex:is(:where(.wbtr\:group).slider-enabled *){display:flex}@media (hover:hover){.wbtr\:hover\:underline:hover{text-decoration-line:underline}}@media (width>=48rem){.wbtr\:md\:block{display:block}.wbtr\:md\:hidden{display:none}}}.bg-image-underlay{position:relative}.bg-image-underlay:before{background-color:var(--color-gray-900);opacity:.2;content:"";display:block;position:absolute;inset:0}.bg-image-underlay>*{z-index:1}.tabs-navigation ul{margin-left:0;list-style:none}[x-cloak]{display:none!important}[aria-busy=true]{cursor:wait;pointer-events:none;opacity:.7}.loader{border:5px solid var(--color-white);border-bottom-color:var(--color-primary);box-sizing:border-box;border-radius:50%;width:24px;height:24px;animation:1s linear infinite rotation;display:inline-block}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.alignnone{margin:.3125rem 1.25rem 1.25rem 0}.aligncenter,div.aligncenter{margin:.3125rem auto;display:block}.alignright{float:right;margin:.3125rem 0 1.25rem 1.25rem}.alignleft{float:left;margin:.3125rem 1.25rem 1.25rem 0}a img.alignright{float:right;margin:.3125rem 0 1.25rem 1.25rem}a img.alignnone{margin:.3125rem 1.25rem 1.25rem 0}a img.alignleft{float:left;margin:.3125rem 1.25rem 1.25rem 0}a img.aligncenter{margin-left:auto;margin-right:auto;display:block}.wp-caption{text-align:center;background:#fff;border:1px solid #f0f0f0;max-width:96%;padding:.3125rem .1875rem .625rem}.wp-caption.alignnone,.wp-caption.alignleft{margin:.3125rem 1.25rem 1.25rem 0}.wp-caption.alignright{margin:.3125rem 0 1.25rem 1.25rem}.wp-caption img{border:0;width:auto;max-width:98.5%;height:auto;margin:0;padding:0}.wp-caption p.wp-caption-text{margin:0;padding:0 .25rem .3125rem;font-size:.6875rem;line-height:1.0625rem}.screen-reader-text{clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);border:0;width:1px;height:1px;margin:-.0625rem;padding:0;overflow:hidden;word-wrap:normal!important;position:absolute!important}.screen-reader-text:focus{clip-path:none;color:#444;z-index:100000;background-color:#eee;width:auto;height:auto;padding:.9375rem 1.4375rem .875rem;font-size:1em;line-height:normal;text-decoration:none;display:block;top:5px;left:5px;clip:auto!important}:root{--form-field-label-color:#000;--form-field-label-font-size:16px;--form-field-input-border:#000;--form-field-input-background:#fff;--form-field-placeholder-color:#000;--form-field-font-size:16px;--form-confirmation-message-color:green;--form-validation-error-color:red}.gform_wrapper.gform-theme{align-self:center;width:100%}.gform_wrapper.gform-theme .gfield{padding:.25rem 0}.gform_wrapper.gform-theme .gform_fields{row-gap:8px}.gform_wrapper.gform-theme .gform_heading{display:none}.gform_wrapper.gform-theme .gform_validation_errors,.gform_wrapper.gform-theme .gform_submission_error{border:none;outline:none;font-size:1.125rem}.gform_wrapper.gform-theme .gfield_label{color:var(--form-field-label-color);font-size:var(--form-field-label-font-size);margin-bottom:.25rem;font-weight:400}.gform_wrapper.gform-theme input,.gform_wrapper.gform-theme textarea{border:2px solid var(--form-field-input-border);background-color:var(--form-field-input-background);font-size:var(--form-field-font-size);border-radius:0;padding:1rem;line-height:1.5}:is(.gform_wrapper.gform-theme input,.gform_wrapper.gform-theme textarea)::placeholder{color:var(--form-field-placeholder-color)}.gform_wrapper.gform-theme .gform_footer{justify-content:left;margin-top:1.25rem}.gform_wrapper.gform-theme .gform_confirmation_message{color:var(--form-confirmation-message-color)}.gform_wrapper.gform-theme .gfield_required>span,.gform_wrapper.gform-theme .gfield_description.validation_message,.gform_wrapper.gform-theme .gform_submission_error,.gform_wrapper.gform-theme .gform_validation_errors .gform-icon{color:var(--form-validation-error-color)}.gform_wrapper.gform-theme .gform_validation_errors,.gform_wrapper.gform-theme .gform_validation_errors .gform-icon{border-color:var(--form-validation-error-color);background-color:#0000}.gform_wrapper.gform-theme .gfield_visibility_hidden{visibility:hidden;position:absolute;left:-9999px}:root{--wbtr-table-row-border-width:1px;--wbtr-table-row-border-color:#e5e5e5}.table-scroll-shadow.has-scroll{position:relative}.table-scroll-shadow.has-scroll:after{content:"";z-index:1;pointer-events:none;background-image:linear-gradient(270deg, var(--color-white) 0%, #fff0 100%);width:16px;height:100%;position:absolute;top:0;right:0}@media (width>=30rem){.table-scroll-shadow.has-scroll:after{width:24px}}@media (width>=48rem){.table-scroll-shadow.has-scroll:after{width:36px}}@media (width>=64rem){.table-scroll-shadow.has-scroll:after{width:48px}}.table,.wp-block-table{width:100%;display:block;position:relative;overflow-x:auto}:is(.table,.wp-block-table) table{width:100%;font-family:var(--font-primary);text-align:left}:is(.table,.wp-block-table) thead{border-bottom:none}:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{border:none;border-bottom:var(--wbtr-table-row-border-width) solid var(--wbtr-table-row-border-color);max-width:200px;padding-right:1rem}@media (width>=30rem){:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{max-width:400px;padding-right:1.5rem}}@media (width>=48rem){:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{padding-right:2.25rem}}@media (width>=64rem){:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{padding-right:3rem}}:is(.table,.wp-block-table) th{font-size:1rem;font-weight:var(--font-weight-bold);padding-top:1.5rem;padding-bottom:1.5rem}@media (width>=30rem){:is(.table,.wp-block-table) th{font-size:1.125rem}}:is(.table,.wp-block-table) td{padding-top:.75rem;padding-bottom:.75rem}:is(.table,.wp-block-table) table.has-fixed-layout{table-layout:fixed}:is(.table,.wp-block-table) table.has-fixed-layout th,:is(.table,.wp-block-table) table.has-fixed-layout td{white-space:normal}.header.is-sticky{z-index:50;transition:transform .2s ease-in-out;position:fixed;top:0;left:0;right:0}.admin-bar .header.is-sticky{padding-top:2rem}@media screen and (width<=782px){.admin-bar .header.is-sticky{padding-top:2.875rem}}.wp-block-query-pagination{color:var(--color-primary);justify-content:center;font-size:1rem;display:flex;position:relative}.wp-block-query-pagination a:hover{text-decoration:underline}.wp-block-query-pagination .wp-block-query-pagination-previous{position:absolute;left:0}.wp-block-query-pagination .wp-block-query-pagination-next{position:absolute;right:0}.wp-block-query-pagination .page-numbers.current{color:var(--color-primary);font-size:1.125rem}.wp-block-query .wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query .wp-block-query-pagination>.wp-block-query-pagination-previous,.wp-block-query .wp-block-query-pagination>.wp-block-query-pagination-next{margin:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|