well-petal 0.0.72 → 0.0.73

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 (2) hide show
  1. package/dist/petal.js +37 -7
  2. package/package.json +1 -1
package/dist/petal.js CHANGED
@@ -30,6 +30,16 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
30
30
 
31
31
  /***/ }),
32
32
 
33
+ /***/ "./node_modules/css-loader/dist/cjs.js!./src/modules/nav/nav.css":
34
+ /*!***********************************************************************!*\
35
+ !*** ./node_modules/css-loader/dist/cjs.js!./src/modules/nav/nav.css ***!
36
+ \***********************************************************************/
37
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
38
+
39
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* Navigation Height Calculation */\n\n/* Set position based on petal-position attribute */\n[petal-el=\"banner\"][petal-position=\"sticky\"],\n[petal-el=\"secondary-nav\"][petal-position=\"sticky\"],\n[petal-el=\"nav\"][petal-position=\"sticky\"] {\n position: sticky !important;\n}\n\n[petal-el=\"banner\"][petal-position=\"static\"],\n[petal-el=\"secondary-nav\"][petal-position=\"static\"],\n[petal-el=\"nav\"][petal-position=\"static\"] {\n position: static !important;\n top: 0 !important;\n}\n\n[petal-el=\"banner\"][petal-position=\"relative\"],\n[petal-el=\"secondary-nav\"][petal-position=\"relative\"],\n[petal-el=\"nav\"][petal-position=\"relative\"] {\n position: relative !important;\n top: 0 !important;\n}\n\n/* Initialize individual height variables */\n:root {\n --nav--banner-contribution: 0px;\n --nav--secondary-nav-contribution: 0px;\n --nav--nav-contribution: 0px;\n}\n\n/* Banner height contribution - set on :root using :has() */\n/* Visible + Sticky */\n:root:has([petal-el=\"banner\"]:not(.w-condition-invisible):not(.petal-hide-banner)[petal-position=\"sticky\"]) {\n --nav--banner-contribution: var(--nav--nav-banner-height, 0px);\n}\n\n/* Visible + Static or Hidden - contributes 0px */\n:root:has([petal-el=\"banner\"][petal-position=\"static\"]),\n:root:has([petal-el=\"banner\"].w-condition-invisible),\n:root:has([petal-el=\"banner\"].petal-hide-banner) {\n --nav--banner-contribution: 0px;\n}\n\n/* Secondary Nav height contribution - set on :root using :has() */\n/* Visible + Sticky */\n:root:has([petal-el=\"secondary-nav\"]:not(.w-condition-invisible)[petal-position=\"sticky\"]) {\n --nav--secondary-nav-contribution: var(--nav--nav-secondary-height, 0px);\n}\n\n/* Visible + Static or Hidden - contributes 0px */\n:root:has([petal-el=\"secondary-nav\"][petal-position=\"static\"]),\n:root:has([petal-el=\"secondary-nav\"].w-condition-invisible) {\n --nav--secondary-nav-contribution: 0px;\n}\n\n/* Nav height contribution - set on :root using :has() */\n/* Sticky */\n:root:has([petal-el=\"nav\"][petal-position=\"sticky\"]) {\n --nav--nav-contribution: var(--nav--nav-height, 0px);\n}\n\n/* Static - contributes 0px */\n:root:has([petal-el=\"nav\"][petal-position=\"static\"]) {\n --nav--nav-contribution: 0px;\n}\n\n/* Calculate total nav height */\n:root {\n --nav--nav-secondary-offset: var(--nav--banner-contribution);\n --nav--nav-offset: calc(var(--nav--banner-contribution) + var(--nav--secondary-nav-contribution));\n --nav--nav-height-total: calc(var(--nav--banner-contribution) + var(--nav--secondary-nav-contribution) + var(--nav--nav-contribution));\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://petal/./src/modules/nav/nav.css?./node_modules/css-loader/dist/cjs.js");
40
+
41
+ /***/ }),
42
+
33
43
  /***/ "./node_modules/css-loader/dist/cjs.js!./src/petal.css":
34
44
  /*!*************************************************************!*\
35
45
  !*** ./node_modules/css-loader/dist/cjs.js!./src/petal.css ***!
@@ -166,7 +176,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
166
176
  \*******************************/
167
177
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
168
178
 
169
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ animateCloseSlideDown: () => (/* binding */ animateCloseSlideDown),\n/* harmony export */ animateCloseSlideLeft: () => (/* binding */ animateCloseSlideLeft),\n/* harmony export */ animateCloseSlideRight: () => (/* binding */ animateCloseSlideRight),\n/* harmony export */ animateCloseSlideUp: () => (/* binding */ animateCloseSlideUp),\n/* harmony export */ animateDropdownCloseSlideDown: () => (/* binding */ animateDropdownCloseSlideDown),\n/* harmony export */ animateDropdownCloseSlideLeft: () => (/* binding */ animateDropdownCloseSlideLeft),\n/* harmony export */ animateDropdownCloseSlideRight: () => (/* binding */ animateDropdownCloseSlideRight),\n/* harmony export */ animateDropdownCloseSlideUp: () => (/* binding */ animateDropdownCloseSlideUp),\n/* harmony export */ animateDropdownOpenSlideDown: () => (/* binding */ animateDropdownOpenSlideDown),\n/* harmony export */ animateDropdownOpenSlideLeft: () => (/* binding */ animateDropdownOpenSlideLeft),\n/* harmony export */ animateDropdownOpenSlideRight: () => (/* binding */ animateDropdownOpenSlideRight),\n/* harmony export */ animateDropdownOpenSlideUp: () => (/* binding */ animateDropdownOpenSlideUp),\n/* harmony export */ animateMaskClosed: () => (/* binding */ animateMaskClosed),\n/* harmony export */ animateMaskOpen: () => (/* binding */ animateMaskOpen),\n/* harmony export */ animateOpenSlideDown: () => (/* binding */ animateOpenSlideDown),\n/* harmony export */ animateOpenSlideLeft: () => (/* binding */ animateOpenSlideLeft),\n/* harmony export */ animateOpenSlideRight: () => (/* binding */ animateOpenSlideRight),\n/* harmony export */ animateOpenSlideUp: () => (/* binding */ animateOpenSlideUp),\n/* harmony export */ animateScaleDown: () => (/* binding */ animateScaleDown),\n/* harmony export */ animateScaleUp: () => (/* binding */ animateScaleUp)\n/* harmony export */ });\nfunction animateScaleUp() {\n return {\n from: { scale: 0, opacity: 0 },\n to: { scale: 1, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateScaleDown() {\n return {\n from: { scale: 1, opacity: 0 },\n to: { scale: 0, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateOpenSlideUp() {\n return {\n from: { y: \"100%\", x: \"0%\", opacity: 0 }, // From bottom\n to: { y: \"0%\", x: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To top\n };\n}\nfunction animateOpenSlideDown() {\n return {\n from: { y: \"-100%\", x: \"0%\", opacity: 0 }, // From top\n to: { y: \"0%\", x: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To bottom\n };\n}\nfunction animateOpenSlideRight() {\n return {\n from: { x: \"-100%\", y: \"0%\", opacity: 0 }, // From left\n to: { x: \"0%\", y: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To center\n };\n}\nfunction animateOpenSlideLeft() {\n return {\n from: { x: \"100%\", y: \"0%\", opacity: 0 }, // From right\n to: { x: \"0%\", y: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To center\n };\n}\nfunction animateCloseSlideUp() {\n return {\n from: { y: \"0%\", x: \"0%\", opacity: 1 }, // From bottom\n to: { y: \"-100%\", x: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To top\n };\n}\nfunction animateCloseSlideDown() {\n return {\n from: { y: \"0%\", x: \"0%\", opacity: 1 }, // From top\n to: { y: \"100%\", x: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To bottom\n };\n}\nfunction animateCloseSlideRight() {\n return {\n from: { x: \"0%\", y: \"0%\", opacity: 1 }, // From left\n to: { x: \"100%\", y: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To center\n };\n}\nfunction animateCloseSlideLeft() {\n return {\n from: { x: \"0%\", y: \"0%\", opacity: 1 }, // From right\n to: { x: \"-100%\", y: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To center\n };\n}\n// Mask animations\nfunction animateMaskOpen(opacity) {\n return {\n from: { opacity: 0 },\n to: { opacity: opacity, duration: 0.5 },\n };\n}\nfunction animateMaskClosed(opacity) {\n return {\n from: { opacity: opacity },\n to: { opacity: 0, duration: 0.5 },\n };\n}\n// Dropdown animations (subtle movements for dropdown menus)\nfunction animateDropdownOpenSlideDown(offset = 25) {\n return {\n from: { x: 0, y: typeof offset === 'number' ? -offset : `-${offset}`, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power2.out\" },\n };\n}\nfunction animateDropdownCloseSlideDown(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: 0, y: typeof offset === 'number' ? -offset : `-${offset}`, opacity: 0, ease: \"power2.in\" },\n };\n}\nfunction animateDropdownOpenSlideUp(offset = 25) {\n return {\n from: { x: 0, y: offset, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power2.out\" },\n };\n}\nfunction animateDropdownCloseSlideUp(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: 0, y: offset, opacity: 0, ease: \"power2.in\" },\n };\n}\nfunction animateDropdownOpenSlideLeft(offset = 25) {\n return {\n from: { x: offset, y: 0, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power2.in\" },\n };\n}\nfunction animateDropdownCloseSlideLeft(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: offset, y: 0, opacity: 0, ease: \"power2.in\" },\n };\n}\nfunction animateDropdownOpenSlideRight(offset = 25) {\n return {\n from: { x: typeof offset === 'number' ? -offset : `-${offset}`, y: 0, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power2.in\" },\n };\n}\nfunction animateDropdownCloseSlideRight(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: typeof offset === 'number' ? -offset : `-${offset}`, y: 0, opacity: 0, ease: \"power2.in\" },\n };\n}\n\n\n//# sourceURL=webpack://petal/./src/lib/animations.ts?");
179
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ animateCloseSlideDown: () => (/* binding */ animateCloseSlideDown),\n/* harmony export */ animateCloseSlideLeft: () => (/* binding */ animateCloseSlideLeft),\n/* harmony export */ animateCloseSlideRight: () => (/* binding */ animateCloseSlideRight),\n/* harmony export */ animateCloseSlideUp: () => (/* binding */ animateCloseSlideUp),\n/* harmony export */ animateDropdownCloseSlideDown: () => (/* binding */ animateDropdownCloseSlideDown),\n/* harmony export */ animateDropdownCloseSlideLeft: () => (/* binding */ animateDropdownCloseSlideLeft),\n/* harmony export */ animateDropdownCloseSlideRight: () => (/* binding */ animateDropdownCloseSlideRight),\n/* harmony export */ animateDropdownCloseSlideUp: () => (/* binding */ animateDropdownCloseSlideUp),\n/* harmony export */ animateDropdownOpenSlideDown: () => (/* binding */ animateDropdownOpenSlideDown),\n/* harmony export */ animateDropdownOpenSlideLeft: () => (/* binding */ animateDropdownOpenSlideLeft),\n/* harmony export */ animateDropdownOpenSlideRight: () => (/* binding */ animateDropdownOpenSlideRight),\n/* harmony export */ animateDropdownOpenSlideUp: () => (/* binding */ animateDropdownOpenSlideUp),\n/* harmony export */ animateMaskClosed: () => (/* binding */ animateMaskClosed),\n/* harmony export */ animateMaskOpen: () => (/* binding */ animateMaskOpen),\n/* harmony export */ animateOpenSlideDown: () => (/* binding */ animateOpenSlideDown),\n/* harmony export */ animateOpenSlideLeft: () => (/* binding */ animateOpenSlideLeft),\n/* harmony export */ animateOpenSlideRight: () => (/* binding */ animateOpenSlideRight),\n/* harmony export */ animateOpenSlideUp: () => (/* binding */ animateOpenSlideUp),\n/* harmony export */ animateScaleDown: () => (/* binding */ animateScaleDown),\n/* harmony export */ animateScaleUp: () => (/* binding */ animateScaleUp)\n/* harmony export */ });\nfunction animateScaleUp() {\n return {\n from: { scale: 0, opacity: 0 },\n to: { scale: 1, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateScaleDown() {\n return {\n from: { scale: 1, opacity: 0 },\n to: { scale: 0, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateOpenSlideUp() {\n return {\n from: { y: \"100%\", x: \"0%\", opacity: 0 }, // From bottom\n to: { y: \"0%\", x: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To top\n };\n}\nfunction animateOpenSlideDown() {\n return {\n from: { y: \"-100%\", x: \"0%\", opacity: 0 }, // From top\n to: { y: \"0%\", x: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To bottom\n };\n}\nfunction animateOpenSlideRight() {\n return {\n from: { x: \"-100%\", y: \"0%\", opacity: 0 }, // From left\n to: { x: \"0%\", y: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To center\n };\n}\nfunction animateOpenSlideLeft() {\n return {\n from: { x: \"100%\", y: \"0%\", opacity: 0 }, // From right\n to: { x: \"0%\", y: \"0%\", opacity: 1, ease: \"power1.inOut\" }, // To center\n };\n}\nfunction animateCloseSlideUp() {\n return {\n from: { y: \"0%\", x: \"0%\", opacity: 1 }, // From bottom\n to: { y: \"-100%\", x: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To top\n };\n}\nfunction animateCloseSlideDown() {\n return {\n from: { y: \"0%\", x: \"0%\", opacity: 1 }, // From top\n to: { y: \"100%\", x: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To bottom\n };\n}\nfunction animateCloseSlideRight() {\n return {\n from: { x: \"0%\", y: \"0%\", opacity: 1 }, // From left\n to: { x: \"100%\", y: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To center\n };\n}\nfunction animateCloseSlideLeft() {\n return {\n from: { x: \"0%\", y: \"0%\", opacity: 1 }, // From right\n to: { x: \"-100%\", y: \"0%\", opacity: 0, ease: \"power1.inOut\" }, // To center\n };\n}\n// Mask animations\nfunction animateMaskOpen(opacity) {\n return {\n from: { opacity: 0 },\n to: { opacity: opacity, duration: 0.5 },\n };\n}\nfunction animateMaskClosed(opacity) {\n return {\n from: { opacity: opacity },\n to: { opacity: 0, duration: 0.5 },\n };\n}\n// Dropdown animations (subtle movements for dropdown menus)\nfunction animateDropdownOpenSlideDown(offset = 25) {\n return {\n from: { x: 0, y: typeof offset === \"number\" ? -offset : `-${offset}`, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownCloseSlideDown(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: 0, y: typeof offset === \"number\" ? -offset : `-${offset}`, opacity: 0, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownOpenSlideUp(offset = 25) {\n return {\n from: { x: 0, y: offset, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownCloseSlideUp(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: 0, y: offset, opacity: 0, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownOpenSlideLeft(offset = 25) {\n return {\n from: { x: offset, y: 0, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownCloseSlideLeft(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: offset, y: 0, opacity: 0, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownOpenSlideRight(offset = 25) {\n return {\n from: { x: typeof offset === \"number\" ? -offset : `-${offset}`, y: 0, opacity: 0 },\n to: { x: 0, y: 0, opacity: 1, ease: \"power1.inOut\" },\n };\n}\nfunction animateDropdownCloseSlideRight(offset = 25) {\n return {\n from: { x: 0, y: 0, opacity: 1 },\n to: { x: typeof offset === \"number\" ? -offset : `-${offset}`, y: 0, opacity: 0, ease: \"power1.inOut\" },\n };\n}\n\n\n//# sourceURL=webpack://petal/./src/lib/animations.ts?");
170
180
 
171
181
  /***/ }),
172
182
 
@@ -230,6 +240,26 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
230
240
 
231
241
  /***/ }),
232
242
 
243
+ /***/ "./src/modules/banner/banner-config.ts":
244
+ /*!*********************************************!*\
245
+ !*** ./src/modules/banner/banner-config.ts ***!
246
+ \*********************************************/
247
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
248
+
249
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ logConfig: () => (/* binding */ logConfig),\n/* harmony export */ parseBannerConfig: () => (/* binding */ parseBannerConfig)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n\nfunction parseBannerConfig(banner) {\n const allowClose = banner.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_ALLOW_CLOSE) !== \"false\";\n const sessionTTLMinutes = parseFloat(banner.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_SESSION_TTL) || \"30\");\n return {\n allowClose,\n sessionTTLMinutes,\n };\n}\nfunction logConfig(config) {\n console.log(\"Banner - Configuration:\", {\n allowClose: config.allowClose,\n sessionTTLMinutes: config.sessionTTLMinutes,\n });\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/banner/banner-config.ts?");
250
+
251
+ /***/ }),
252
+
253
+ /***/ "./src/modules/banner/banner.ts":
254
+ /*!**************************************!*\
255
+ !*** ./src/modules/banner/banner.ts ***!
256
+ \**************************************/
257
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
258
+
259
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeBanner: () => (/* binding */ initializeBanner)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/* harmony import */ var _lib_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/helpers */ \"./src/lib/helpers.ts\");\n/* harmony import */ var _lib_memory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/memory */ \"./src/lib/memory.ts\");\n/* harmony import */ var _banner_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./banner-config */ \"./src/modules/banner/banner-config.ts\");\n\n\n\n\nfunction initializeBanner() {\n const banners = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.getAllPetalElementsOfType)(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_BANNER);\n console.log(`🌸 Detected ${banners.length} banner(s)`);\n banners.forEach((banner) => {\n const name = banner.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME);\n if (!name) {\n console.warn(\"Banner element is missing a name attribute. Each banner must have a unique name to function properly.\");\n return;\n }\n // ELEMENTS\n const closeButtons = banner.querySelectorAll(`[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}=\"${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_BANNER_CLOSE}\"]`);\n console.log(` - Banner \"${name}\" - Found ${closeButtons.length} close button(s)`, closeButtons);\n // Get the banner config\n const config = (0,_banner_config__WEBPACK_IMPORTED_MODULE_3__.parseBannerConfig)(banner);\n console.log(config);\n // If banner doesn't allow close, hide close buttons and clear any stored memory\n if (!config.allowClose) {\n console.log(` - Closing disabled for this banner`);\n closeButtons.forEach((closeButton) => {\n closeButton.style.display = \"none\";\n });\n (0,_lib_memory__WEBPACK_IMPORTED_MODULE_2__.clearClosedState)(\"banner\", name);\n }\n // If allowClose is true, check if banner was previously closed and set up event listeners on close buttons\n if (config.allowClose) {\n console.log(` - Closing enabled for this banner with session TTL of ${config.sessionTTLMinutes} minutes`);\n // Check if banner was closed and session is still valid (only if allowClose is true)\n if ((0,_lib_memory__WEBPACK_IMPORTED_MODULE_2__.checkClosedState)(\"banner\", name, config.sessionTTLMinutes)) {\n // If closed and session valid, hide the banner\n banner.classList.add(\"petal-hide-banner\");\n }\n // Set up the close button\n closeButtons.forEach((closeButton) => {\n closeButton.addEventListener(\"click\", () => {\n // Hide the banner\n banner.classList.add(\"petal-hide-banner\");\n // Store closed state in sessionStorage with timestamp\n (0,_lib_memory__WEBPACK_IMPORTED_MODULE_2__.storeClosedState)(\"banner\", name);\n });\n });\n }\n });\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/banner/banner.ts?");
260
+
261
+ /***/ }),
262
+
233
263
  /***/ "./src/modules/dropdown/dropdown-animator.ts":
234
264
  /*!***************************************************!*\
235
265
  !*** ./src/modules/dropdown/dropdown-animator.ts ***!
@@ -280,13 +310,13 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
280
310
 
281
311
  /***/ }),
282
312
 
283
- /***/ "./src/modules/nav/banner.ts":
284
- /*!***********************************!*\
285
- !*** ./src/modules/nav/banner.ts ***!
286
- \***********************************/
313
+ /***/ "./src/modules/nav/nav.css":
314
+ /*!*********************************!*\
315
+ !*** ./src/modules/nav/nav.css ***!
316
+ \*********************************/
287
317
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
288
318
 
289
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeBanner: () => (/* binding */ initializeBanner)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/* harmony import */ var _lib_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/helpers */ \"./src/lib/helpers.ts\");\n/* harmony import */ var _lib_memory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/memory */ \"./src/lib/memory.ts\");\n\n\n\nfunction initializeBanner() {\n const banners = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.getAllPetalElementsOfType)(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_BANNER);\n console.log(`🌸 Detected ${banners.length} banner(s)`);\n banners.forEach((banner) => {\n const name = banner.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME);\n // Check if this banner is allowed to be closed\n const allowClose = banner.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_ALLOW_CLOSE) !== \"false\";\n console.log(allowClose);\n const closeButtons = banner.querySelectorAll(`[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}=\"${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_BANNER_CLOSE}\"]`);\n // Get session TTL in minutes (default: 30 minutes)\n const sessionTTLMinutes = parseFloat(banner.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_SESSION_TTL) || \"30\");\n if (!name)\n return;\n console.log(` → Banner: \"${name}\"`);\n // If banner doesn't allow close, hide close buttons and clear any stored memory\n if (!allowClose) {\n console.log(` - Closing disabled for this banner`);\n closeButtons.forEach((closeButton) => {\n closeButton.style.display = \"none\";\n });\n (0,_lib_memory__WEBPACK_IMPORTED_MODULE_2__.clearClosedState)(\"banner\", name);\n }\n // Check if banner was closed and session is still valid (only if allowClose is true)\n if (allowClose && (0,_lib_memory__WEBPACK_IMPORTED_MODULE_2__.checkClosedState)(\"banner\", name, sessionTTLMinutes)) {\n // If closed and session valid, hide the banner\n banner.classList.add(\"petal-hide-banner\");\n }\n // Add click event listeners to close buttons (only if allowClose is true)\n if (allowClose) {\n closeButtons.forEach((closeButton) => {\n closeButton.addEventListener(\"click\", () => {\n // Hide the banner\n banner.classList.add(\"petal-hide-banner\");\n // Store closed state in sessionStorage with timestamp\n (0,_lib_memory__WEBPACK_IMPORTED_MODULE_2__.storeClosedState)(\"banner\", name);\n });\n });\n }\n });\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/nav/banner.ts?");
319
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_nav_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./nav.css */ \"./node_modules/css-loader/dist/cjs.js!./src/modules/nav/nav.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_nav_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_nav_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_nav_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_nav_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://petal/./src/modules/nav/nav.css?");
290
320
 
291
321
  /***/ }),
292
322
 
@@ -316,7 +346,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
316
346
  \**********************/
317
347
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
318
348
 
319
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_popup_popup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/popup/popup */ \"./src/modules/popup/popup.ts\");\n/* harmony import */ var _modules_nav_banner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/nav/banner */ \"./src/modules/nav/banner.ts\");\n/* harmony import */ var _modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/dropdown/dropdown */ \"./src/modules/dropdown/dropdown.ts\");\n/* harmony import */ var _petal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./petal.css */ \"./src/petal.css\");\n/* harmony import */ var _modules_dropdown_dropdown_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/dropdown/dropdown.css */ \"./src/modules/dropdown/dropdown.css\");\n\n\n\n\n\nconsole.log(`🌸 Hello from Wellflow Petal v${\"0.0.72\"}`);\n(0,_modules_popup_popup__WEBPACK_IMPORTED_MODULE_0__.initializeAllPopups)();\n(0,_modules_popup_popup__WEBPACK_IMPORTED_MODULE_0__.initializePopupTriggers)();\n(0,_modules_nav_banner__WEBPACK_IMPORTED_MODULE_1__.initializeBanner)();\n(0,_modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__.initializeDropdowns)();\n\n\n//# sourceURL=webpack://petal/./src/petal.ts?");
349
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_popup_popup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/popup/popup */ \"./src/modules/popup/popup.ts\");\n/* harmony import */ var _modules_banner_banner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/banner/banner */ \"./src/modules/banner/banner.ts\");\n/* harmony import */ var _modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/dropdown/dropdown */ \"./src/modules/dropdown/dropdown.ts\");\n/* harmony import */ var _petal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./petal.css */ \"./src/petal.css\");\n/* harmony import */ var _modules_dropdown_dropdown_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/dropdown/dropdown.css */ \"./src/modules/dropdown/dropdown.css\");\n/* harmony import */ var _modules_nav_nav_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/nav/nav.css */ \"./src/modules/nav/nav.css\");\n\n\n\n\n\n\nconsole.log(`🌸 Hello from Wellflow Petal v${\"0.0.73\"}`);\n(0,_modules_popup_popup__WEBPACK_IMPORTED_MODULE_0__.initializeAllPopups)();\n(0,_modules_popup_popup__WEBPACK_IMPORTED_MODULE_0__.initializePopupTriggers)();\n(0,_modules_banner_banner__WEBPACK_IMPORTED_MODULE_1__.initializeBanner)();\n(0,_modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__.initializeDropdowns)();\n\n\n//# sourceURL=webpack://petal/./src/petal.ts?");
320
350
 
321
351
  /***/ }),
322
352
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "well-petal",
3
- "version": "0.0.72",
3
+ "version": "0.0.73",
4
4
  "description": "Webflow Popups powered by attributes",
5
5
  "main": "dist/petal.js",
6
6
  "files": [