@hortonstudio/main 1.7.13 → 1.7.15

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.
Files changed (29) hide show
  1. package/autoInit/form.js +46 -603
  2. package/autoInit/transition.js +30 -82
  3. package/index.js +9 -25
  4. package/package.json +1 -1
  5. package/utils/css-animations/buttons/main/bgbasic/btn-main-bgbasic.html +10 -0
  6. package/utils/css-animations/buttons/main/bgfill/btn-main-bgfill.html +29 -0
  7. package/utils/css-animations/buttons/navbar/bgbasic/navbar-main-bgbasic.html +17 -0
  8. package/utils/css-animations/buttons/navbar/bgbasic/navbar-menu-bgbasic.html +16 -0
  9. package/utils/css-animations/buttons/navbar/bgfill/navbar-main-bgfill.html +46 -0
  10. package/utils/css-animations/buttons/navbar/bgfill/navbar-menu-bgfill.html +39 -0
  11. package/utils/css-animations/buttons/navbar/color/navbar-announce-color.html +5 -0
  12. package/utils/css-animations/buttons/navbar/color/navbar-main-color.html +7 -0
  13. package/utils/css-animations/buttons/navbar/color/navbar-menu-color.html +7 -0
  14. package/utils/css-animations/buttons/navbar/double-slide/navbar-announce-double-slide.html +40 -0
  15. package/utils/css-animations/buttons/navbar/double-slide/navbar-main-double-slide.html +77 -0
  16. package/utils/css-animations/buttons/navbar/scale/navbar-announce-scale.html +6 -0
  17. package/utils/css-animations/buttons/navbar/scale/navbar-main-scale.html +9 -0
  18. package/utils/css-animations/buttons/navbar/scale/navbar-menu-scale.html +8 -0
  19. package/utils/css-animations/buttons/navbar/underline/navbar-announce-underline.html +32 -0
  20. package/utils/css-animations/buttons/navbar/underline/navbar-main-underline.html +56 -0
  21. package/utils/css-animations/buttons/text/color/text-footer-color.html +5 -0
  22. package/utils/css-animations/buttons/text/color/text-main-color.html +5 -0
  23. package/utils/css-animations/buttons/text/double-slide/text-main-double-slide.html +56 -0
  24. package/utils/css-animations/buttons/text/scale/text-footer-scale.html +6 -0
  25. package/utils/css-animations/buttons/text/scale/text-main-scale.html +6 -0
  26. package/utils/css-animations/buttons/text/underline/text-footer-underline.html +45 -0
  27. package/utils/css-animations/buttons/text/underline/text-main-underline.html +58 -0
  28. package/utils/css-animations/cards/card-clickable.html +11 -0
  29. package/utils/css-animations/defaults.html +69 -0
@@ -2,7 +2,7 @@
2
2
  const API_NAME = "hsmain";
3
3
 
4
4
  export async function init() {
5
-
5
+
6
6
  // Wait for Webflow to be ready before initializing transitions
7
7
  window[API_NAME].afterWebflowReady(() => {
8
8
  setTimeout(() => {
@@ -14,104 +14,52 @@ export async function init() {
14
14
  }
15
15
 
16
16
  function initTransitions() {
17
- const transitionTrigger = document.querySelector(".transition-trigger");
18
- const transitionElement = document.querySelector(".transition");
19
-
20
- // Page Load - Trigger entrance animation with optional delay
21
- if (transitionTrigger) {
22
- // Check if entrance transition should be skipped
23
- const skipEntrance = sessionStorage.getItem('skip-entrance-transition');
24
- if (skipEntrance) {
25
- sessionStorage.removeItem('skip-entrance-transition');
26
- // Keep transition element hidden when skipping animation
27
- if (transitionElement) {
28
- transitionElement.style.display = "none";
29
- }
30
- return; // Skip entrance animation
31
- }
32
-
33
- // Check if this is the first page load of the session
34
- const isFirstLoad = !sessionStorage.getItem('transition-loaded');
35
- const delayAttr = transitionElement?.getAttribute('data-hs-delay');
36
- const delaySeconds = delayAttr ? parseFloat(delayAttr) : 0;
37
-
38
-
39
- const triggerAnimation = () => {
40
- Webflow.push(function () {
41
- transitionTrigger.click();
42
- });
43
- };
44
-
45
- if (isFirstLoad && delaySeconds > 0) {
46
- setTimeout(triggerAnimation, delaySeconds * 1000);
47
- sessionStorage.setItem('transition-loaded', 'true');
48
- } else {
49
- triggerAnimation();
50
- if (isFirstLoad) {
51
- sessionStorage.setItem('transition-loaded', 'true');
52
- }
53
- }
54
- }
17
+ const transitionTrigger = document.querySelector('[data-hs-transition="trigger"]');
18
+ const transitionElement = document.querySelector('[data-hs-transition="element"]');
55
19
 
56
- // Monitor for transition completion
57
- function waitForTransitionComplete(callback) {
58
- if (!transitionElement) return;
59
-
60
- const checkComplete = () => {
61
- if (transitionElement.classList.contains('transition-done')) {
62
- callback();
63
- } else {
64
- setTimeout(checkComplete, 50);
65
- }
66
- };
67
- checkComplete();
68
- }
20
+ if (!transitionTrigger || !transitionElement) return;
69
21
 
70
- // Helper function to check if element or any ancestor has data-hs-transition="prevent"
71
- function hasTransitionPrevented(element) {
72
- let current = element;
73
- while (current && current !== document) {
74
- if (current.getAttribute && current.getAttribute('data-hs-transition') === 'prevent') {
75
- return true;
76
- }
77
- current = current.parentElement;
78
- }
79
- return false;
22
+ // Get exit time from data attribute (in seconds)
23
+ const exitTimeAttr = transitionElement.getAttribute('data-hs-exit-time');
24
+ const exitTime = exitTimeAttr ? parseFloat(exitTimeAttr) * 1000 : 0;
25
+
26
+ // Page Load - Trigger entrance animation
27
+ // Check if this is the first page load of the session
28
+ const isFirstLoad = !sessionStorage.getItem('transition-loaded');
29
+
30
+ const triggerAnimation = () => {
31
+ Webflow.push(function () {
32
+ transitionTrigger.click();
33
+ });
34
+ };
35
+
36
+ triggerAnimation();
37
+ if (isFirstLoad) {
38
+ sessionStorage.setItem('transition-loaded', 'true');
80
39
  }
81
40
 
82
41
  // On Link Click
83
42
  document.addEventListener("click", function (e) {
84
43
  const link = e.target.closest("a");
85
-
44
+
86
45
  if (
87
46
  link &&
88
47
  link.hostname === window.location.hostname &&
89
48
  link.getAttribute("href") &&
90
49
  link.getAttribute("href").indexOf("#") === -1 &&
91
- link.getAttribute("target") !== "_blank" &&
92
- transitionTrigger
50
+ link.getAttribute("target") !== "_blank"
93
51
  ) {
94
- // Check if transitions are prevented
95
- const transitionPrevented = hasTransitionPrevented(link);
96
-
97
- if (transitionPrevented) {
98
- // Set flag to prevent entrance animation on next page
99
- sessionStorage.setItem('skip-entrance-transition', 'true');
100
- // Navigate normally without exit animation
101
- return;
102
- }
103
-
104
52
  e.preventDefault();
105
-
53
+
106
54
  let transitionURL = link.getAttribute("href");
107
-
55
+
108
56
  // Trigger exit animation
109
57
  transitionTrigger.click();
110
-
111
- // Wait for animation to complete before navigating
112
- waitForTransitionComplete(() => {
58
+
59
+ // Wait for exit time, then navigate
60
+ setTimeout(() => {
113
61
  window.location = transitionURL;
114
- });
62
+ }, exitTime);
115
63
  }
116
64
  });
117
65
 
@@ -128,4 +76,4 @@ function initTransitions() {
128
76
  transitionElement.style.display = "none";
129
77
  }
130
78
  });
131
- }
79
+ }
package/index.js CHANGED
@@ -1,4 +1,3 @@
1
- // Version:1.7.13
2
1
  const API_NAME = "hsmain";
3
2
 
4
3
  const initializeHsMain = async () => {
@@ -30,12 +29,6 @@ const initializeHsMain = async () => {
30
29
 
31
30
  const allDataAttributes = { ...animationModules, ...utilityModules };
32
31
 
33
- const waitForWebflow = async () =>
34
- new Promise((resolve) => {
35
- if (!window.Webflow) window.Webflow = [];
36
- window.Webflow.push(resolve);
37
- });
38
-
39
32
  const moduleMap = {
40
33
  transition: () => import("./autoInit/transition.js"),
41
34
  "data-hs-util-ba": () => import("./utils/before-after.js"),
@@ -254,42 +247,33 @@ const initializeHsMain = async () => {
254
247
  });
255
248
  });
256
249
 
257
- const waitForIx2 = async () => {
250
+ const waitForIx3 = async () => {
258
251
  const startTime = Date.now();
259
252
  const timeout = 2000; // 2 second timeout
260
253
 
261
254
  return new Promise((resolve) => {
262
- const checkIx2 = () => {
255
+ const checkIx3 = () => {
263
256
  const htmlElement = document.documentElement;
264
- const hasIx2 = htmlElement.classList.contains('w-mod-ix3');
257
+ const hasIx3 = htmlElement.classList.contains('w-mod-ix3');
265
258
 
266
- if (hasIx2) {
259
+ if (hasIx3) {
267
260
  resolve(true);
268
261
  } else if (Date.now() - startTime >= timeout) {
269
- console.warn('[hsmain] IX2 (w-mod-ix3) not detected after 2s timeout. Proceeding anyway, but Webflow interactions may not be fully loaded.');
262
+ console.warn('[hsmain] IX3 (w-mod-ix3) not detected after 2s timeout. Proceeding anyway, but Webflow interactions may not be fully loaded.');
270
263
  resolve(false);
271
264
  } else {
272
- setTimeout(checkIx2, 50);
265
+ setTimeout(checkIx3, 50);
273
266
  }
274
267
  };
275
- checkIx2();
268
+ checkIx3();
276
269
  });
277
270
  };
278
271
 
279
272
  const finalize = async () => {
280
273
  processModules();
281
- await waitForWebflow();
282
-
283
- // Small delay to ensure all scripts are fully initialized
284
- await new Promise(resolve => setTimeout(resolve, 10));
285
-
286
- // Force Webflow to reinitialize (not redraw) - rescans DOM and rebinds interactions
287
- if (window.Webflow && typeof window.Webflow.ready === 'function') {
288
- window.Webflow.ready();
289
- }
290
274
 
291
- // Wait for IX2 to be ready before firing callbacks
292
- await waitForIx2();
275
+ // Wait for IX3 to be ready before firing callbacks
276
+ await waitForIx3();
293
277
 
294
278
  window[API_NAME].loaded = true;
295
279
  readyCallbacks.forEach((callback) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hortonstudio/main",
3
- "version": "1.7.13",
3
+ "version": "1.7.15",
4
4
  "description": "Animation and utility library for client websites",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -0,0 +1,10 @@
1
+ <style>
2
+ .btn_main_wrap{
3
+ transition:background 300ms ease,color 150ms ease
4
+ }
5
+
6
+ .btn_main_wrap:hover{
7
+ background:var(--_button-style---background-hover);
8
+ color:var(--_button-style---text-hover)
9
+ }
10
+ </style>
@@ -0,0 +1,29 @@
1
+ <style>
2
+ .btn_main_wrap{
3
+ position:relative;
4
+ transition:color 150ms ease
5
+ }
6
+
7
+ .btn_main_wrap::before{
8
+ content:'';
9
+ position:absolute;
10
+ bottom:0;
11
+ left:0;
12
+ width:0;
13
+ height:0;
14
+ background:var(--_button-style---background-hover);
15
+ border-radius:50%;
16
+ transform:translate(-50%,50%);
17
+ transition:width 0.5s ease,height 0.5s ease;
18
+ z-index:0
19
+ }
20
+
21
+ .btn_main_wrap:hover{
22
+ color:var(--_button-style---text-hover)
23
+ }
24
+
25
+ .btn_main_wrap:hover::before{
26
+ width:300%;
27
+ height:300%
28
+ }
29
+ </style>
@@ -0,0 +1,17 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link,
3
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link{
4
+ transition:background 300ms ease,color 150ms ease;
5
+ border-radius:var(--radius--main)
6
+ }
7
+
8
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover,
9
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover{
10
+ background:var(--_theme---border)
11
+ }
12
+
13
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link{
14
+ background:var(--_button-style---background);
15
+ color:var(--_button-style---text)
16
+ }
17
+ </style>
@@ -0,0 +1,16 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link{
3
+ transition:background 300ms ease,color 150ms ease;
4
+ border-radius:var(--radius--main)
5
+ }
6
+
7
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link:hover{
8
+ background:var(--_theme---border)
9
+ }
10
+
11
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link,
12
+ [data-hs-nav="menu-dropdown"].is-active > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link{
13
+ background:var(--_button-style---background);
14
+ color:var(--_button-style---text)
15
+ }
16
+ </style>
@@ -0,0 +1,46 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link{
3
+ border-radius:var(--radius--main);
4
+ overflow:hidden;
5
+ position:relative;
6
+ transition:color 250ms ease
7
+ }
8
+
9
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link{
10
+ border-radius:var(--radius--small);
11
+ overflow:hidden;
12
+ position:relative;
13
+ transition:color 250ms ease
14
+ }
15
+
16
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link::before,
17
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link::before{
18
+ content:'';
19
+ position:absolute;
20
+ bottom:0;
21
+ left:0;
22
+ width:0;
23
+ height:0;
24
+ background:var(--_theme---border);
25
+ border-radius:50%;
26
+ transform:translate(-50%,50%);
27
+ transition:width 0.5s ease,height 0.5s ease;
28
+ z-index:0
29
+ }
30
+
31
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover::before,
32
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover::before{
33
+ width:300%;
34
+ height:300%
35
+ }
36
+
37
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link::before{
38
+ background:var(--_button-style---background);
39
+ width:300%;
40
+ height:300%
41
+ }
42
+
43
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link{
44
+ color:var(--_button-style---text)
45
+ }
46
+ </style>
@@ -0,0 +1,39 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link{
3
+ border-radius:var(--radius--main);
4
+ overflow:hidden;
5
+ position:relative;
6
+ transition:color 250ms ease
7
+ }
8
+
9
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link::before{
10
+ content:'';
11
+ position:absolute;
12
+ bottom:0;
13
+ left:0;
14
+ width:0;
15
+ height:0;
16
+ background:var(--_theme---border);
17
+ border-radius:50%;
18
+ transform:translate(-50%,50%);
19
+ transition:width 0.5s ease,height 0.5s ease;
20
+ z-index:0
21
+ }
22
+
23
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link:hover::before{
24
+ width:300%;
25
+ height:300%
26
+ }
27
+
28
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link::before,
29
+ [data-hs-nav="menu-dropdown"].is-active > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link::before{
30
+ background:var(--_button-style---background);
31
+ width:300%;
32
+ height:300%
33
+ }
34
+
35
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link,
36
+ [data-hs-nav="menu-dropdown"].is-active > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link{
37
+ color:var(--_button-style---text)
38
+ }
39
+ </style>
@@ -0,0 +1,5 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover{
3
+ color:var(--swatch--brand-1-500)
4
+ }
5
+ </style>
@@ -0,0 +1,7 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover,
3
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover,
4
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link{
5
+ color:var(--swatch--brand-1-500)
6
+ }
7
+ </style>
@@ -0,0 +1,7 @@
1
+ <style>
2
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link:hover,
3
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link,
4
+ [data-hs-nav="menu-dropdown"].is-active > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link{
5
+ color:var(--swatch--brand-1-500)
6
+ }
7
+ </style>
@@ -0,0 +1,40 @@
1
+ <style>
2
+ /* ===== DOUBLE SLIDE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_text.is-placeholder,
4
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_darrow.is-placeholder,
5
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_arrow.is-placeholder,
6
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_icon.is-placeholder{
7
+ display:block
8
+ }
9
+
10
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_text.is-placeholder,
11
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_icon.is-placeholder{
12
+ transform:translateY(200%)
13
+ }
14
+
15
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_darrow.is-placeholder,
16
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_arrow.is-placeholder{
17
+ transform:translateY(200%) translateX(-200%)
18
+ }
19
+
20
+ /* Hover States */
21
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_text.is-main,
22
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_icon.is-main{
23
+ transform:translateY(-200%)
24
+ }
25
+
26
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_text.is-placeholder,
27
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_icon.is-placeholder{
28
+ transform:translateY(0%)
29
+ }
30
+
31
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-main,
32
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-main{
33
+ transform:translateY(-200%) translateX(200%)
34
+ }
35
+
36
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-placeholder,
37
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-placeholder{
38
+ transform:translateY(0%) translateX(0%)
39
+ }
40
+ </style>
@@ -0,0 +1,77 @@
1
+ <style>
2
+ /* ===== DOUBLE SLIDE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_text.is-placeholder,
4
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_text.is-placeholder,
5
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_darrow.is-placeholder,
6
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_darrow.is-placeholder,
7
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_arrow.is-placeholder,
8
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_arrow.is-placeholder,
9
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_icon.is-placeholder,
10
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_icon.is-placeholder{
11
+ display:block
12
+ }
13
+
14
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_text.is-placeholder,
15
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_text.is-placeholder,
16
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_icon.is-placeholder,
17
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_icon.is-placeholder{
18
+ transform:translateY(200%)
19
+ }
20
+
21
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_darrow.is-placeholder,
22
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_darrow.is-placeholder,
23
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_arrow.is-placeholder,
24
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_arrow.is-placeholder{
25
+ transform:translateY(200%) translateX(-200%)
26
+ }
27
+
28
+ /* Hover States */
29
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_text.is-main,
30
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_text.is-main,
31
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_icon.is-main,
32
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_icon.is-main{
33
+ transform:translateY(-200%)
34
+ }
35
+
36
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_text.is-placeholder,
37
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_text.is-placeholder,
38
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_icon.is-placeholder,
39
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_icon.is-placeholder{
40
+ transform:translateY(0%)
41
+ }
42
+
43
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-main,
44
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-main,
45
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-main,
46
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-main{
47
+ transform:translateY(-200%) translateX(200%)
48
+ }
49
+
50
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-placeholder,
51
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-placeholder,
52
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-placeholder,
53
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-placeholder{
54
+ transform:translateY(0%) translateX(0%)
55
+ }
56
+
57
+ /* Active States */
58
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_text.is-main,
59
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_icon.is-main{
60
+ transform:translateY(-200%)
61
+ }
62
+
63
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_text.is-placeholder,
64
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_icon.is-placeholder{
65
+ transform:translateY(0%)
66
+ }
67
+
68
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_darrow.is-main,
69
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_arrow.is-main{
70
+ transform:translateY(-200%) translateX(200%)
71
+ }
72
+
73
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_darrow.is-placeholder,
74
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_arrow.is-placeholder{
75
+ transform:translateY(0%) translateX(0%)
76
+ }
77
+ </style>
@@ -0,0 +1,6 @@
1
+ <style>
2
+ /* ===== SCALE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_content{
4
+ transform:scale3d(1.075,1.075,1)
5
+ }
6
+ </style>
@@ -0,0 +1,9 @@
1
+ <style>
2
+ /* ===== SCALE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_content,
4
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_content,
5
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_content,
6
+ [data-hs-nav="menu-dropdown"].is-active > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_content{
7
+ transform:scale3d(1.075,1.075,1)
8
+ }
9
+ </style>
@@ -0,0 +1,8 @@
1
+ <style>
2
+ /* ===== SCALE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_link:hover .navbar_btn_1_content,
4
+ [data-hs-nav="dropdown"].is-active > .navbar_dropdown_wrap > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_content,
5
+ [data-hs-nav="menu-dropdown"].is-active > .navbar_btn_1_wrap[data-wf--navbar-btn-1--variant="menu"] .navbar_btn_1_content{
6
+ transform:scale3d(1.075,1.075,1)
7
+ }
8
+ </style>
@@ -0,0 +1,32 @@
1
+ <style>
2
+ /* ===== UNDERLINE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_line_wrap{
4
+ display:block
5
+ }
6
+
7
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_line.is-main{
8
+ transform:translateX(-110%)
9
+ }
10
+
11
+ /* Line Hover States */
12
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_line.is-main{
13
+ transform:translateX(0%)
14
+ }
15
+
16
+ /* ===== UNDERLINE ANIMATION EXTRAS ===== */
17
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_arrow.is-placeholder{
18
+ display:block
19
+ }
20
+
21
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_arrow.is-placeholder{
22
+ transform:translateY(200%) translateX(-200%)
23
+ }
24
+
25
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-main{
26
+ transform:translateY(-200%) translateX(200%)
27
+ }
28
+
29
+ [data-wf--navbar-btn-1--variant="announce"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-placeholder{
30
+ transform:translateY(0%) translateX(0%)
31
+ }
32
+ </style>
@@ -0,0 +1,56 @@
1
+ <style>
2
+ /* ===== UNDERLINE ANIMATION ===== */
3
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_line_wrap,
4
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_line_wrap{
5
+ display:block
6
+ }
7
+
8
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_line.is-main,
9
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_line.is-main{
10
+ transform:translateX(-110%)
11
+ }
12
+
13
+ /* Line Hover States */
14
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_line.is-main,
15
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_line.is-main{
16
+ transform:translateX(0%)
17
+ }
18
+
19
+ /* ===== UNDERLINE ANIMATION EXTRAS ===== */
20
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_darrow.is-placeholder,
21
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_darrow.is-placeholder,
22
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_arrow.is-placeholder,
23
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_arrow.is-placeholder{
24
+ display:block
25
+ }
26
+
27
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_darrow.is-placeholder,
28
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_darrow.is-placeholder{
29
+ transform:translateX(-200%)
30
+ }
31
+
32
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_arrow.is-placeholder,
33
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_arrow.is-placeholder{
34
+ transform:translateY(200%) translateX(-200%)
35
+ }
36
+
37
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-main,
38
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-main{
39
+ transform:translateX(200%)
40
+ }
41
+
42
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-placeholder,
43
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_darrow.is-placeholder{
44
+ transform:translateX(0%)
45
+ }
46
+
47
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-main,
48
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-main{
49
+ transform:translateY(-200%) translateX(200%)
50
+ }
51
+
52
+ [data-wf--navbar-btn-1--variant="navbar"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-placeholder,
53
+ [data-wf--navbar-btn-1--variant="dropdown"] .navbar_btn_1_link:hover .navbar_btn_1_arrow.is-placeholder{
54
+ transform:translateY(0%) translateX(0%)
55
+ }
56
+ </style>
@@ -0,0 +1,5 @@
1
+ <style>
2
+ [data-wf--btn-text--variant="footer"] .btn_text_contain:hover{
3
+ color:var(--swatch--brand-1-500)
4
+ }
5
+ </style>
@@ -0,0 +1,5 @@
1
+ <style>
2
+ [data-wf--btn-text--variant="main"] .btn_text_contain:hover{
3
+ color:var(--swatch--brand-1-500)
4
+ }
5
+ </style>