@pathscale/ui 0.0.128 → 0.0.130
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/dist/components/immersive-landing/components/CookieConsent.d.ts +3 -0
- package/dist/components/immersive-landing/components/FirefoxPWABanner.d.ts +9 -0
- package/dist/components/immersive-landing/components/PWAInstallPrompt.d.ts +3 -0
- package/dist/components/immersive-landing/types.d.ts +66 -0
- package/dist/index.js +698 -11
- package/dist/styles/icons/generated-icons.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Component } from "solid-js";
|
|
2
|
+
import { FirefoxPWABannerProps } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* PWAUnsupportedBanner Component
|
|
5
|
+
*
|
|
6
|
+
* Shows a dismissible banner for browsers that don't support native PWA installation
|
|
7
|
+
* (beforeinstallprompt). Currently shows for Firefox desktop with extension recommendation.
|
|
8
|
+
*/
|
|
9
|
+
export declare const FirefoxPWABanner: Component<FirefoxPWABannerProps>;
|
|
@@ -3,6 +3,7 @@ import type { IComponentBaseProps } from "../types";
|
|
|
3
3
|
export interface UseImmersiveLandingOptions {
|
|
4
4
|
pages: readonly string[];
|
|
5
5
|
initialPage?: string;
|
|
6
|
+
currentPage?: Accessor<string>;
|
|
6
7
|
transitionDuration?: number;
|
|
7
8
|
onNavigate?: (fromPage: string, toPage: string) => void;
|
|
8
9
|
onNavigationComplete?: (page: string) => void;
|
|
@@ -37,6 +38,7 @@ export interface ImmersiveLandingContextValue {
|
|
|
37
38
|
export interface ImmersiveLandingProps extends IComponentBaseProps {
|
|
38
39
|
pages: readonly string[];
|
|
39
40
|
initialPage?: string;
|
|
41
|
+
currentPage?: Accessor<string>;
|
|
40
42
|
transitionDuration?: number;
|
|
41
43
|
onNavigate?: (fromPage: string, toPage: string) => void;
|
|
42
44
|
onNavigationComplete?: (page: string) => void;
|
|
@@ -46,6 +48,12 @@ export interface ImmersiveLandingProps extends IComponentBaseProps {
|
|
|
46
48
|
appVersion?: string;
|
|
47
49
|
overlay?: JSX.Element | ((context: ImmersiveLandingContextValue) => JSX.Element);
|
|
48
50
|
children: JSX.Element | ((context: ImmersiveLandingContextValue) => JSX.Element);
|
|
51
|
+
pwaConfig?: PWAInstallPromptProps;
|
|
52
|
+
cookieConfig?: CookieConsentProps;
|
|
53
|
+
firefoxPWAConfig?: FirefoxPWABannerProps;
|
|
54
|
+
showPWAPrompt?: boolean;
|
|
55
|
+
showCookieConsent?: boolean;
|
|
56
|
+
showFirefoxBanner?: boolean;
|
|
49
57
|
}
|
|
50
58
|
export interface ImmersiveLandingPageProps extends IComponentBaseProps {
|
|
51
59
|
id: string;
|
|
@@ -66,3 +74,61 @@ export interface ImmersiveLandingNavigationProps extends IComponentBaseProps {
|
|
|
66
74
|
isFirstPage: boolean;
|
|
67
75
|
isLastPage: boolean;
|
|
68
76
|
}
|
|
77
|
+
export type ConsentType = "all" | "essential" | "custom";
|
|
78
|
+
export interface CookieConsentTexts {
|
|
79
|
+
message?: string;
|
|
80
|
+
acceptAll?: string;
|
|
81
|
+
decline?: string;
|
|
82
|
+
manage?: string;
|
|
83
|
+
manageTitle?: string;
|
|
84
|
+
essential?: string;
|
|
85
|
+
analytics?: string;
|
|
86
|
+
marketing: string;
|
|
87
|
+
cancel?: string;
|
|
88
|
+
save?: string;
|
|
89
|
+
closeLabel?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface CookieConsentStorageKeys {
|
|
92
|
+
consentKey?: string;
|
|
93
|
+
analyticsKey?: string;
|
|
94
|
+
marketingKey?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface CookieConsentProps {
|
|
97
|
+
texts?: CookieConsentTexts;
|
|
98
|
+
storageKeys?: CookieConsentStorageKeys;
|
|
99
|
+
onConsentChange?: (payload: {
|
|
100
|
+
type: ConsentType;
|
|
101
|
+
analytics: boolean;
|
|
102
|
+
marketing: boolean;
|
|
103
|
+
}) => void;
|
|
104
|
+
}
|
|
105
|
+
export type BrowserType = "firefox" | "safari" | "other" | "supported";
|
|
106
|
+
export interface FirefoxPWABannerTexts {
|
|
107
|
+
title?: string;
|
|
108
|
+
description?: string;
|
|
109
|
+
installButton?: string;
|
|
110
|
+
dismissButton?: string;
|
|
111
|
+
closeLabel?: string;
|
|
112
|
+
}
|
|
113
|
+
export interface FirefoxPWABannerProps {
|
|
114
|
+
extensionUrl?: string;
|
|
115
|
+
storageKey?: string;
|
|
116
|
+
texts?: FirefoxPWABannerTexts;
|
|
117
|
+
onInstall?: () => void;
|
|
118
|
+
onDismiss?: () => void;
|
|
119
|
+
}
|
|
120
|
+
export interface PWAInstallPromptTexts {
|
|
121
|
+
title?: string;
|
|
122
|
+
description?: string;
|
|
123
|
+
installButton?: string;
|
|
124
|
+
notNowButton?: string;
|
|
125
|
+
closeLabel?: string;
|
|
126
|
+
}
|
|
127
|
+
export interface PWAInstallPromptProps {
|
|
128
|
+
appName?: string;
|
|
129
|
+
appIcon?: string;
|
|
130
|
+
storageKey?: string;
|
|
131
|
+
texts?: PWAInstallPromptTexts;
|
|
132
|
+
onInstall?: () => void;
|
|
133
|
+
onDismiss?: () => void;
|
|
134
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -9397,7 +9397,7 @@ const DropdownDetails = Object.assign(Details, {
|
|
|
9397
9397
|
Toggle: DropdownToggle_Summary
|
|
9398
9398
|
});
|
|
9399
9399
|
var DropdownItem_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<li role=menuitem>"), DropdownItem_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<a>"), DropdownItem_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<button>");
|
|
9400
|
-
const
|
|
9400
|
+
const DropdownItem_DropdownItem = (props)=>{
|
|
9401
9401
|
const dropdownContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(DropdownContext);
|
|
9402
9402
|
const defaultProps = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.mergeProps)({
|
|
9403
9403
|
closeOnClick: true
|
|
@@ -9439,7 +9439,7 @@ const DropdownItem = (props)=>{
|
|
|
9439
9439
|
return _el$;
|
|
9440
9440
|
})();
|
|
9441
9441
|
};
|
|
9442
|
-
const
|
|
9442
|
+
const DropdownItem = DropdownItem_DropdownItem;
|
|
9443
9443
|
var DropdownMenu_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<ul>");
|
|
9444
9444
|
const DropdownMenu = (props)=>{
|
|
9445
9445
|
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
@@ -9641,7 +9641,7 @@ const dropdown_Dropdown = Object.assign(Dropdown, {
|
|
|
9641
9641
|
Details: DropdownDetails,
|
|
9642
9642
|
Toggle: dropdown_DropdownToggle,
|
|
9643
9643
|
Menu: dropdown_DropdownMenu,
|
|
9644
|
-
Item:
|
|
9644
|
+
Item: DropdownItem
|
|
9645
9645
|
});
|
|
9646
9646
|
const dropdown = dropdown_Dropdown;
|
|
9647
9647
|
var FileInput_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<input>");
|
|
@@ -10623,13 +10623,34 @@ const HeroNamespaces = Object.assign(Hero, {
|
|
|
10623
10623
|
});
|
|
10624
10624
|
const hero_Hero = HeroNamespaces;
|
|
10625
10625
|
function useImmersiveLanding(options) {
|
|
10626
|
-
const { pages, initialPage = pages[0], transitionDuration = 400, onNavigate, onNavigationComplete, enableScrollNavigation = true } = options;
|
|
10627
|
-
const
|
|
10626
|
+
const { pages, initialPage = pages[0], currentPage: controlledPage, transitionDuration = 400, onNavigate, onNavigationComplete, enableScrollNavigation = true } = options;
|
|
10627
|
+
const isControlled = !!controlledPage;
|
|
10628
|
+
const [internalPage, setInternalPage] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(initialPage);
|
|
10628
10629
|
const [isTransitioning, setIsTransitioning] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
10629
10630
|
const [direction, setDirection] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(null);
|
|
10631
|
+
const activePage = isControlled ? controlledPage : internalPage;
|
|
10630
10632
|
const currentIndex = ()=>pages.indexOf(activePage());
|
|
10631
10633
|
const isFirstPage = ()=>0 === currentIndex();
|
|
10632
10634
|
const isLastPage = ()=>currentIndex() === pages.length - 1;
|
|
10635
|
+
if (isControlled) {
|
|
10636
|
+
let prevPage = controlledPage();
|
|
10637
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
10638
|
+
const next = controlledPage();
|
|
10639
|
+
if (next !== prevPage && !isTransitioning()) {
|
|
10640
|
+
const fromIndex = pages.indexOf(prevPage);
|
|
10641
|
+
const toIndex = pages.indexOf(next);
|
|
10642
|
+
if (toIndex >= 0) {
|
|
10643
|
+
setDirection(toIndex > fromIndex ? "next" : "prev");
|
|
10644
|
+
setIsTransitioning(true);
|
|
10645
|
+
setTimeout(()=>{
|
|
10646
|
+
setIsTransitioning(false);
|
|
10647
|
+
setDirection(null);
|
|
10648
|
+
}, transitionDuration);
|
|
10649
|
+
}
|
|
10650
|
+
prevPage = next;
|
|
10651
|
+
}
|
|
10652
|
+
});
|
|
10653
|
+
}
|
|
10633
10654
|
const navigateToInternal = (pageId)=>{
|
|
10634
10655
|
if (isTransitioning() || !pages.includes(pageId)) return;
|
|
10635
10656
|
if (pageId === activePage()) return;
|
|
@@ -10638,7 +10659,7 @@ function useImmersiveLanding(options) {
|
|
|
10638
10659
|
const toIndex = pages.indexOf(pageId);
|
|
10639
10660
|
setDirection(toIndex > fromIndex ? "next" : "prev");
|
|
10640
10661
|
setIsTransitioning(true);
|
|
10641
|
-
|
|
10662
|
+
if (!isControlled) setInternalPage(pageId);
|
|
10642
10663
|
if (onNavigate) onNavigate(fromPage, pageId);
|
|
10643
10664
|
setTimeout(()=>{
|
|
10644
10665
|
setIsTransitioning(false);
|
|
@@ -10940,11 +10961,601 @@ const immersive_landing_ImmersiveLandingNavigation = ImmersiveLandingNavigation;
|
|
|
10940
10961
|
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.delegateEvents)([
|
|
10941
10962
|
"click"
|
|
10942
10963
|
]);
|
|
10964
|
+
var PWAInstallPrompt_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div class="w-14 h-14 flex-shrink-0 rounded-xl bg-base-200 p-2"><img class="w-full h-full">'), PWAInstallPrompt_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<p class="text-sm text-base-content/70">'), PWAInstallPrompt_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div role=dialog aria-modal=false aria-labelledby=pwa-install-title class="fixed bottom-4 left-4 right-4 md:left-auto md:right-4 md:max-w-sm z-51 animate-slide-up">');
|
|
10965
|
+
const DISMISS_DURATION = 604800000;
|
|
10966
|
+
const defaultTexts = {
|
|
10967
|
+
title: "Install App",
|
|
10968
|
+
description: "Add this app to your home screen for a better experience.",
|
|
10969
|
+
installButton: "Install",
|
|
10970
|
+
notNowButton: "Not now",
|
|
10971
|
+
closeLabel: "Close"
|
|
10972
|
+
};
|
|
10973
|
+
const PWAInstallPrompt = (props)=>{
|
|
10974
|
+
const STORAGE_KEY = ()=>props.storageKey ?? "app_pwa_dismissed";
|
|
10975
|
+
const appName = ()=>props.appName ?? "My App";
|
|
10976
|
+
const appIcon = ()=>props.appIcon ?? "/icon-192.png";
|
|
10977
|
+
const texts = ()=>({
|
|
10978
|
+
title: props.texts?.title ?? defaultTexts.title,
|
|
10979
|
+
description: props.texts?.description ?? defaultTexts.description,
|
|
10980
|
+
installButton: props.texts?.installButton ?? defaultTexts.installButton,
|
|
10981
|
+
notNowButton: props.texts?.notNowButton ?? defaultTexts.notNowButton,
|
|
10982
|
+
closeLabel: props.texts?.closeLabel ?? defaultTexts.closeLabel
|
|
10983
|
+
});
|
|
10984
|
+
const [deferredPrompt, setDeferredPrompt] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(null);
|
|
10985
|
+
const [showPrompt, setShowPrompt] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
10986
|
+
const checkDismissalStatus = ()=>{
|
|
10987
|
+
const dismissed = localStorage.getItem(STORAGE_KEY());
|
|
10988
|
+
if (!dismissed) return true;
|
|
10989
|
+
const dismissedTime = Number.parseInt(dismissed, 10);
|
|
10990
|
+
const now = Date.now();
|
|
10991
|
+
if (now - dismissedTime > DISMISS_DURATION) {
|
|
10992
|
+
localStorage.removeItem(STORAGE_KEY());
|
|
10993
|
+
return true;
|
|
10994
|
+
}
|
|
10995
|
+
return false;
|
|
10996
|
+
};
|
|
10997
|
+
const handleBeforeInstallPrompt = (e)=>{
|
|
10998
|
+
e.preventDefault();
|
|
10999
|
+
setDeferredPrompt(e);
|
|
11000
|
+
if (checkDismissalStatus()) setShowPrompt(true);
|
|
11001
|
+
};
|
|
11002
|
+
const handleInstall = async ()=>{
|
|
11003
|
+
const prompt = deferredPrompt();
|
|
11004
|
+
if (!prompt) return;
|
|
11005
|
+
try {
|
|
11006
|
+
prompt.prompt();
|
|
11007
|
+
const result = await prompt.userChoice;
|
|
11008
|
+
if ("accepted" === result.outcome) {
|
|
11009
|
+
setShowPrompt(false);
|
|
11010
|
+
setDeferredPrompt(null);
|
|
11011
|
+
props.onInstall?.();
|
|
11012
|
+
}
|
|
11013
|
+
} catch (error) {
|
|
11014
|
+
console.debug("PWA install prompt failed:", error);
|
|
11015
|
+
}
|
|
11016
|
+
};
|
|
11017
|
+
const handleDismiss = ()=>{
|
|
11018
|
+
setShowPrompt(false);
|
|
11019
|
+
localStorage.setItem(STORAGE_KEY(), Date.now().toString());
|
|
11020
|
+
props.onDismiss?.();
|
|
11021
|
+
};
|
|
11022
|
+
const handleAppInstalled = ()=>{
|
|
11023
|
+
setShowPrompt(false);
|
|
11024
|
+
setDeferredPrompt(null);
|
|
11025
|
+
};
|
|
11026
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onMount)(()=>{
|
|
11027
|
+
window.addEventListener("beforeinstallprompt", handleBeforeInstallPrompt);
|
|
11028
|
+
window.addEventListener("appinstalled", handleAppInstalled);
|
|
11029
|
+
});
|
|
11030
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
11031
|
+
window.removeEventListener("beforeinstallprompt", handleBeforeInstallPrompt);
|
|
11032
|
+
window.removeEventListener("appinstalled", handleAppInstalled);
|
|
11033
|
+
});
|
|
11034
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11035
|
+
get when () {
|
|
11036
|
+
return showPrompt();
|
|
11037
|
+
},
|
|
11038
|
+
get children () {
|
|
11039
|
+
var _el$ = PWAInstallPrompt_tmpl$3();
|
|
11040
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card, {
|
|
11041
|
+
shadow: "lg",
|
|
11042
|
+
background: "base-100",
|
|
11043
|
+
class: "relative border border-base-300",
|
|
11044
|
+
get children () {
|
|
11045
|
+
return [
|
|
11046
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11047
|
+
size: "sm",
|
|
11048
|
+
color: "ghost",
|
|
11049
|
+
shape: "circle",
|
|
11050
|
+
class: "absolute top-2 right-2",
|
|
11051
|
+
onClick: handleDismiss,
|
|
11052
|
+
get ["aria-label"] () {
|
|
11053
|
+
return texts().closeLabel;
|
|
11054
|
+
},
|
|
11055
|
+
children: "X"
|
|
11056
|
+
}),
|
|
11057
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card.Body, {
|
|
11058
|
+
get children () {
|
|
11059
|
+
return [
|
|
11060
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11061
|
+
align: "start",
|
|
11062
|
+
gap: "md",
|
|
11063
|
+
get children () {
|
|
11064
|
+
return [
|
|
11065
|
+
(()=>{
|
|
11066
|
+
var _el$2 = PWAInstallPrompt_tmpl$(), _el$3 = _el$2.firstChild;
|
|
11067
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)((_p$)=>{
|
|
11068
|
+
var _v$ = appIcon(), _v$2 = appName();
|
|
11069
|
+
_v$ !== _p$.e && (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.setAttribute)(_el$3, "src", _p$.e = _v$);
|
|
11070
|
+
_v$2 !== _p$.t && (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.setAttribute)(_el$3, "alt", _p$.t = _v$2);
|
|
11071
|
+
return _p$;
|
|
11072
|
+
}, {
|
|
11073
|
+
e: void 0,
|
|
11074
|
+
t: void 0
|
|
11075
|
+
});
|
|
11076
|
+
return _el$2;
|
|
11077
|
+
})(),
|
|
11078
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11079
|
+
direction: "col",
|
|
11080
|
+
gap: "sm",
|
|
11081
|
+
class: "flex-1 min-w-0 pr-6",
|
|
11082
|
+
get children () {
|
|
11083
|
+
return [
|
|
11084
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card.Title, {
|
|
11085
|
+
id: "pwa-install-title",
|
|
11086
|
+
tag: "h3",
|
|
11087
|
+
class: "text-base",
|
|
11088
|
+
get children () {
|
|
11089
|
+
return texts().title;
|
|
11090
|
+
}
|
|
11091
|
+
}),
|
|
11092
|
+
(()=>{
|
|
11093
|
+
var _el$4 = PWAInstallPrompt_tmpl$2();
|
|
11094
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$4, ()=>texts().description);
|
|
11095
|
+
return _el$4;
|
|
11096
|
+
})()
|
|
11097
|
+
];
|
|
11098
|
+
}
|
|
11099
|
+
})
|
|
11100
|
+
];
|
|
11101
|
+
}
|
|
11102
|
+
}),
|
|
11103
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card.Actions, {
|
|
11104
|
+
class: "mt-4",
|
|
11105
|
+
get children () {
|
|
11106
|
+
return [
|
|
11107
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11108
|
+
color: "primary",
|
|
11109
|
+
class: "flex-1",
|
|
11110
|
+
onClick: handleInstall,
|
|
11111
|
+
get children () {
|
|
11112
|
+
return texts().installButton;
|
|
11113
|
+
}
|
|
11114
|
+
}),
|
|
11115
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11116
|
+
color: "ghost",
|
|
11117
|
+
class: "flex-1",
|
|
11118
|
+
onClick: handleDismiss,
|
|
11119
|
+
get children () {
|
|
11120
|
+
return texts().notNowButton;
|
|
11121
|
+
}
|
|
11122
|
+
})
|
|
11123
|
+
];
|
|
11124
|
+
}
|
|
11125
|
+
})
|
|
11126
|
+
];
|
|
11127
|
+
}
|
|
11128
|
+
})
|
|
11129
|
+
];
|
|
11130
|
+
}
|
|
11131
|
+
}));
|
|
11132
|
+
return _el$;
|
|
11133
|
+
}
|
|
11134
|
+
});
|
|
11135
|
+
};
|
|
11136
|
+
var FirefoxPWABanner_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div class="w-14 h-14 shrink-0 rounded-xl bg-base-200 p-2 flex items-center justify-center">'), FirefoxPWABanner_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<p class="text-sm text-base-content/70">'), FirefoxPWABanner_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div aria-labelledby=pwa-unsupported-title class="fixed bottom-4 left-4 right-4 md:left-auto md:right-4 md:max-w-sm z-51 animate-slide-up">');
|
|
11137
|
+
const FirefoxPWABanner_defaultTexts = {
|
|
11138
|
+
title: "Install App on Firefox",
|
|
11139
|
+
description: "Firefox does not support direct app installation. Install our helper extension to enable PWA support.",
|
|
11140
|
+
installButton: "Install Extension",
|
|
11141
|
+
dismissButton: "Maybe later",
|
|
11142
|
+
closeLabel: "Close"
|
|
11143
|
+
};
|
|
11144
|
+
const detectBrowser = ()=>{
|
|
11145
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
11146
|
+
if ("BeforeInstallPromptEvent" in globalThis) return "supported";
|
|
11147
|
+
if (ua.includes("firefox")) return "firefox";
|
|
11148
|
+
if (ua.includes("safari") && !ua.includes("chrome")) return "safari";
|
|
11149
|
+
return "other";
|
|
11150
|
+
};
|
|
11151
|
+
const isMobile = ()=>/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase());
|
|
11152
|
+
const isPWAInstalled = ()=>globalThis.matchMedia("(display-mode: standalone)").matches;
|
|
11153
|
+
const FirefoxPWABanner = (props)=>{
|
|
11154
|
+
const [showBanner, setShowBanner] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
11155
|
+
const [browser, setBrowser] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)("supported");
|
|
11156
|
+
const STORAGE_KEY = ()=>props.storageKey ?? "app_firefox_pwa_dismissed";
|
|
11157
|
+
const extensionUrl = ()=>props.extensionUrl ?? "https://addons.mozilla.org/";
|
|
11158
|
+
const texts = ()=>({
|
|
11159
|
+
title: props.texts?.title ?? FirefoxPWABanner_defaultTexts.title,
|
|
11160
|
+
description: props.texts?.description ?? FirefoxPWABanner_defaultTexts.description,
|
|
11161
|
+
installButton: props.texts?.installButton ?? FirefoxPWABanner_defaultTexts.installButton,
|
|
11162
|
+
dismissButton: props.texts?.dismissButton ?? FirefoxPWABanner_defaultTexts.dismissButton,
|
|
11163
|
+
closeLabel: props.texts?.closeLabel ?? FirefoxPWABanner_defaultTexts.closeLabel
|
|
11164
|
+
});
|
|
11165
|
+
const checkShouldShow = ()=>{
|
|
11166
|
+
const detectedBrowser = detectBrowser();
|
|
11167
|
+
setBrowser(detectedBrowser);
|
|
11168
|
+
if ("supported" === detectedBrowser) return false;
|
|
11169
|
+
if (isMobile()) return false;
|
|
11170
|
+
if ("firefox" !== detectedBrowser) return false;
|
|
11171
|
+
if (isPWAInstalled()) return false;
|
|
11172
|
+
const dismissed = localStorage.getItem(STORAGE_KEY());
|
|
11173
|
+
if ("true" === dismissed) return false;
|
|
11174
|
+
return true;
|
|
11175
|
+
};
|
|
11176
|
+
const handleDismiss = ()=>{
|
|
11177
|
+
setShowBanner(false);
|
|
11178
|
+
localStorage.setItem(STORAGE_KEY(), "true");
|
|
11179
|
+
props.onDismiss?.();
|
|
11180
|
+
};
|
|
11181
|
+
const handleAction = ()=>{
|
|
11182
|
+
if ("firefox" === browser()) {
|
|
11183
|
+
globalThis.open(extensionUrl(), "_blank", "noopener,noreferrer");
|
|
11184
|
+
props.onInstall?.();
|
|
11185
|
+
}
|
|
11186
|
+
};
|
|
11187
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onMount)(()=>{
|
|
11188
|
+
if (checkShouldShow()) setTimeout(()=>setShowBanner(true), 2000);
|
|
11189
|
+
});
|
|
11190
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11191
|
+
get when () {
|
|
11192
|
+
return showBanner();
|
|
11193
|
+
},
|
|
11194
|
+
get children () {
|
|
11195
|
+
var _el$ = FirefoxPWABanner_tmpl$3();
|
|
11196
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card, {
|
|
11197
|
+
shadow: "lg",
|
|
11198
|
+
background: "base-100",
|
|
11199
|
+
class: "relative border border-base-300",
|
|
11200
|
+
get children () {
|
|
11201
|
+
return [
|
|
11202
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11203
|
+
size: "sm",
|
|
11204
|
+
color: "ghost",
|
|
11205
|
+
shape: "circle",
|
|
11206
|
+
class: "absolute top-2 right-2",
|
|
11207
|
+
onClick: handleDismiss,
|
|
11208
|
+
get ["aria-label"] () {
|
|
11209
|
+
return texts().closeLabel;
|
|
11210
|
+
},
|
|
11211
|
+
get children () {
|
|
11212
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(icon_Icon, {
|
|
11213
|
+
name: "icon-[mdi--close]",
|
|
11214
|
+
width: 16,
|
|
11215
|
+
height: 16
|
|
11216
|
+
});
|
|
11217
|
+
}
|
|
11218
|
+
}),
|
|
11219
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card.Body, {
|
|
11220
|
+
get children () {
|
|
11221
|
+
return [
|
|
11222
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11223
|
+
align: "start",
|
|
11224
|
+
gap: "md",
|
|
11225
|
+
get children () {
|
|
11226
|
+
return [
|
|
11227
|
+
(()=>{
|
|
11228
|
+
var _el$2 = FirefoxPWABanner_tmpl$();
|
|
11229
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11230
|
+
get when () {
|
|
11231
|
+
return "firefox" === browser();
|
|
11232
|
+
},
|
|
11233
|
+
get children () {
|
|
11234
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(icon_Icon, {
|
|
11235
|
+
name: "icon-[mdi--firefox]",
|
|
11236
|
+
width: 40,
|
|
11237
|
+
height: 40,
|
|
11238
|
+
class: "text-orange-500"
|
|
11239
|
+
});
|
|
11240
|
+
}
|
|
11241
|
+
}));
|
|
11242
|
+
return _el$2;
|
|
11243
|
+
})(),
|
|
11244
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11245
|
+
direction: "col",
|
|
11246
|
+
gap: "sm",
|
|
11247
|
+
class: "flex-1 min-w-0 pr-6",
|
|
11248
|
+
get children () {
|
|
11249
|
+
return [
|
|
11250
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card.Title, {
|
|
11251
|
+
id: "pwa-unsupported-title",
|
|
11252
|
+
tag: "h3",
|
|
11253
|
+
class: "text-base",
|
|
11254
|
+
get children () {
|
|
11255
|
+
return texts().title;
|
|
11256
|
+
}
|
|
11257
|
+
}),
|
|
11258
|
+
(()=>{
|
|
11259
|
+
var _el$3 = FirefoxPWABanner_tmpl$2();
|
|
11260
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>texts().description);
|
|
11261
|
+
return _el$3;
|
|
11262
|
+
})()
|
|
11263
|
+
];
|
|
11264
|
+
}
|
|
11265
|
+
})
|
|
11266
|
+
];
|
|
11267
|
+
}
|
|
11268
|
+
}),
|
|
11269
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(card_Card.Actions, {
|
|
11270
|
+
class: "mt-4",
|
|
11271
|
+
get children () {
|
|
11272
|
+
return [
|
|
11273
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11274
|
+
color: "primary",
|
|
11275
|
+
class: "flex-1",
|
|
11276
|
+
onClick: handleAction,
|
|
11277
|
+
get children () {
|
|
11278
|
+
return texts().installButton;
|
|
11279
|
+
}
|
|
11280
|
+
}),
|
|
11281
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11282
|
+
color: "ghost",
|
|
11283
|
+
class: "flex-1",
|
|
11284
|
+
onClick: handleDismiss,
|
|
11285
|
+
get children () {
|
|
11286
|
+
return texts().dismissButton;
|
|
11287
|
+
}
|
|
11288
|
+
})
|
|
11289
|
+
];
|
|
11290
|
+
}
|
|
11291
|
+
})
|
|
11292
|
+
];
|
|
11293
|
+
}
|
|
11294
|
+
})
|
|
11295
|
+
];
|
|
11296
|
+
}
|
|
11297
|
+
}));
|
|
11298
|
+
return _el$;
|
|
11299
|
+
}
|
|
11300
|
+
});
|
|
11301
|
+
};
|
|
11302
|
+
var CookieConsent_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<p id=cookie-consent-message class="text-sm text-base-content flex-1">'), CookieConsent_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<button type=button class="text-sm underline hover:no-underline text-base-content/70 hover:text-base-content transition-colors">'), CookieConsent_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div role=dialog aria-modal=false aria-labelledby=cookie-consent-message><div class="container mx-auto px-4 py-4 max-w-7xl">'), CookieConsent_tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<h2 id=cookie-manage-title class="text-lg font-semibold">'), CookieConsent_tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<label class="flex items-center justify-between p-3 rounded bg-base-200/50 cursor-not-allowed"><span class="text-sm font-medium text-base-content/70"></span><input type=checkbox checked disabled class="toggle toggle-sm toggle-primary">'), _tmpl$6 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<label class="flex items-center justify-between p-3 rounded hover:bg-base-200/50 cursor-pointer transition-colors"><span class="text-sm font-medium"></span><input type=checkbox class="toggle toggle-sm toggle-primary">'), _tmpl$7 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div role=dialog aria-modal=true aria-labelledby=cookie-manage-title class="fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm animate-fade-in"><div class="bg-base-100 rounded-lg shadow-xl w-full max-w-md p-6 animate-scale-in">');
|
|
11303
|
+
const CookieConsent_defaultTexts = {
|
|
11304
|
+
message: "We use cookies to improve your experience. You can accept all cookies or manage your preferences.",
|
|
11305
|
+
acceptAll: "Accept all",
|
|
11306
|
+
decline: "Decline",
|
|
11307
|
+
manage: "Manage",
|
|
11308
|
+
manageTitle: "Manage cookie preferences",
|
|
11309
|
+
essential: "Essential (required)",
|
|
11310
|
+
analytics: "Analytics",
|
|
11311
|
+
marketing: "Marketing",
|
|
11312
|
+
cancel: "Cancel",
|
|
11313
|
+
save: "Save",
|
|
11314
|
+
closeLabel: "Close"
|
|
11315
|
+
};
|
|
11316
|
+
const CookieConsent = (props)=>{
|
|
11317
|
+
const [showBanner, setShowBanner] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
11318
|
+
const [showManage, setShowManage] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
11319
|
+
const [isClosing, setIsClosing] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
11320
|
+
const [analyticsEnabled, setAnalyticsEnabled] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
11321
|
+
const [marketingEnabled, setMarketingEnabled] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
|
|
11322
|
+
const CONSENT_KEY = ()=>props.storageKeys?.consentKey ?? "app_cookie_consent";
|
|
11323
|
+
const ANALYTICS_KEY = ()=>props.storageKeys?.analyticsKey ?? "app_cookie_analytics";
|
|
11324
|
+
const MARKETING_KEY = ()=>props.storageKeys?.marketingKey ?? "app_cookie_marketing";
|
|
11325
|
+
const texts = ()=>({
|
|
11326
|
+
message: props.texts?.message ?? CookieConsent_defaultTexts.message,
|
|
11327
|
+
acceptAll: props.texts?.acceptAll ?? CookieConsent_defaultTexts.acceptAll,
|
|
11328
|
+
decline: props.texts?.decline ?? CookieConsent_defaultTexts.decline,
|
|
11329
|
+
manage: props.texts?.manage ?? CookieConsent_defaultTexts.manage,
|
|
11330
|
+
manageTitle: props.texts?.manageTitle ?? CookieConsent_defaultTexts.manageTitle,
|
|
11331
|
+
essential: props.texts?.essential ?? CookieConsent_defaultTexts.essential,
|
|
11332
|
+
analytics: props.texts?.analytics ?? CookieConsent_defaultTexts.analytics,
|
|
11333
|
+
marketing: props.texts?.marketing ?? CookieConsent_defaultTexts.marketing,
|
|
11334
|
+
cancel: props.texts?.cancel ?? CookieConsent_defaultTexts.cancel,
|
|
11335
|
+
save: props.texts?.save ?? CookieConsent_defaultTexts.save,
|
|
11336
|
+
closeLabel: props.texts?.closeLabel ?? CookieConsent_defaultTexts.closeLabel
|
|
11337
|
+
});
|
|
11338
|
+
const checkConsent = ()=>{
|
|
11339
|
+
const consent = localStorage.getItem(CONSENT_KEY());
|
|
11340
|
+
return !consent;
|
|
11341
|
+
};
|
|
11342
|
+
const saveConsent = (type)=>{
|
|
11343
|
+
localStorage.setItem(CONSENT_KEY(), type);
|
|
11344
|
+
if ("all" === type) {
|
|
11345
|
+
localStorage.setItem(ANALYTICS_KEY(), "true");
|
|
11346
|
+
localStorage.setItem(MARKETING_KEY(), "true");
|
|
11347
|
+
} else if ("essential" === type) {
|
|
11348
|
+
localStorage.setItem(ANALYTICS_KEY(), "false");
|
|
11349
|
+
localStorage.setItem(MARKETING_KEY(), "false");
|
|
11350
|
+
}
|
|
11351
|
+
emitChange(type);
|
|
11352
|
+
};
|
|
11353
|
+
const emitChange = (type)=>{
|
|
11354
|
+
props.onConsentChange?.({
|
|
11355
|
+
type,
|
|
11356
|
+
analytics: "true" === localStorage.getItem(ANALYTICS_KEY()),
|
|
11357
|
+
marketing: "true" === localStorage.getItem(MARKETING_KEY())
|
|
11358
|
+
});
|
|
11359
|
+
};
|
|
11360
|
+
const handleAcceptAll = ()=>{
|
|
11361
|
+
saveConsent("all");
|
|
11362
|
+
closeBanner();
|
|
11363
|
+
};
|
|
11364
|
+
const handleDecline = ()=>{
|
|
11365
|
+
saveConsent("essential");
|
|
11366
|
+
closeBanner();
|
|
11367
|
+
};
|
|
11368
|
+
const handleManageOpen = ()=>{
|
|
11369
|
+
const analytics = "true" === localStorage.getItem(ANALYTICS_KEY());
|
|
11370
|
+
const marketing = "true" === localStorage.getItem(MARKETING_KEY());
|
|
11371
|
+
setAnalyticsEnabled(analytics);
|
|
11372
|
+
setMarketingEnabled(marketing);
|
|
11373
|
+
setShowManage(true);
|
|
11374
|
+
};
|
|
11375
|
+
const handleManageClose = ()=>{
|
|
11376
|
+
setShowManage(false);
|
|
11377
|
+
};
|
|
11378
|
+
const handleManageSave = ()=>{
|
|
11379
|
+
localStorage.setItem(CONSENT_KEY(), "custom");
|
|
11380
|
+
localStorage.setItem(ANALYTICS_KEY(), analyticsEnabled().toString());
|
|
11381
|
+
localStorage.setItem(MARKETING_KEY(), marketingEnabled().toString());
|
|
11382
|
+
setShowManage(false);
|
|
11383
|
+
closeBanner();
|
|
11384
|
+
emitChange("custom");
|
|
11385
|
+
};
|
|
11386
|
+
const closeBanner = ()=>{
|
|
11387
|
+
setIsClosing(true);
|
|
11388
|
+
setTimeout(()=>{
|
|
11389
|
+
setShowBanner(false);
|
|
11390
|
+
setIsClosing(false);
|
|
11391
|
+
}, 300);
|
|
11392
|
+
};
|
|
11393
|
+
const handleKeyDown = (e)=>{
|
|
11394
|
+
if ("Escape" === e.key && showManage()) handleManageClose();
|
|
11395
|
+
};
|
|
11396
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onMount)(()=>{
|
|
11397
|
+
if (checkConsent()) setShowBanner(true);
|
|
11398
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
11399
|
+
});
|
|
11400
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
11401
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
11402
|
+
});
|
|
11403
|
+
return [
|
|
11404
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11405
|
+
get when () {
|
|
11406
|
+
return showBanner();
|
|
11407
|
+
},
|
|
11408
|
+
get children () {
|
|
11409
|
+
var _el$ = CookieConsent_tmpl$3(), _el$2 = _el$.firstChild;
|
|
11410
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11411
|
+
direction: "col",
|
|
11412
|
+
gap: "md",
|
|
11413
|
+
class: "md:flex-row md:items-center md:justify-between",
|
|
11414
|
+
get children () {
|
|
11415
|
+
return [
|
|
11416
|
+
(()=>{
|
|
11417
|
+
var _el$3 = CookieConsent_tmpl$();
|
|
11418
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>texts().message);
|
|
11419
|
+
return _el$3;
|
|
11420
|
+
})(),
|
|
11421
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11422
|
+
gap: "sm",
|
|
11423
|
+
class: "flex-col sm:flex-row sm:items-center shrink-0",
|
|
11424
|
+
get children () {
|
|
11425
|
+
return [
|
|
11426
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11427
|
+
color: "primary",
|
|
11428
|
+
size: "sm",
|
|
11429
|
+
class: "w-full sm:w-auto transition-transform duration-150 hover:scale-[1.02] active:scale-[0.98]",
|
|
11430
|
+
onClick: handleAcceptAll,
|
|
11431
|
+
get children () {
|
|
11432
|
+
return texts().acceptAll;
|
|
11433
|
+
}
|
|
11434
|
+
}),
|
|
11435
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11436
|
+
color: "ghost",
|
|
11437
|
+
size: "sm",
|
|
11438
|
+
class: "w-full sm:w-auto",
|
|
11439
|
+
onClick: handleDecline,
|
|
11440
|
+
get children () {
|
|
11441
|
+
return texts().decline;
|
|
11442
|
+
}
|
|
11443
|
+
}),
|
|
11444
|
+
(()=>{
|
|
11445
|
+
var _el$4 = CookieConsent_tmpl$2();
|
|
11446
|
+
_el$4.$$click = handleManageOpen;
|
|
11447
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$4, ()=>texts().manage);
|
|
11448
|
+
return _el$4;
|
|
11449
|
+
})()
|
|
11450
|
+
];
|
|
11451
|
+
}
|
|
11452
|
+
})
|
|
11453
|
+
];
|
|
11454
|
+
}
|
|
11455
|
+
}));
|
|
11456
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)(()=>(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.className)(_el$, `fixed bottom-0 left-0 right-0 z-52 bg-base-300/95 backdrop-blur border-t border-base-content/10 transition-all duration-300 ${isClosing() ? "translate-y-full opacity-0" : "translate-y-0 opacity-100 animate-slide-up"}`));
|
|
11457
|
+
return _el$;
|
|
11458
|
+
}
|
|
11459
|
+
}),
|
|
11460
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11461
|
+
get when () {
|
|
11462
|
+
return showManage();
|
|
11463
|
+
},
|
|
11464
|
+
get children () {
|
|
11465
|
+
var _el$5 = _tmpl$7(), _el$6 = _el$5.firstChild;
|
|
11466
|
+
_el$5.$$click = handleManageClose;
|
|
11467
|
+
_el$6.$$click = (e)=>e.stopPropagation();
|
|
11468
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$6, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11469
|
+
justify: "between",
|
|
11470
|
+
align: "center",
|
|
11471
|
+
class: "mb-4",
|
|
11472
|
+
get children () {
|
|
11473
|
+
return [
|
|
11474
|
+
(()=>{
|
|
11475
|
+
var _el$7 = CookieConsent_tmpl$4();
|
|
11476
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$7, ()=>texts().manageTitle);
|
|
11477
|
+
return _el$7;
|
|
11478
|
+
})(),
|
|
11479
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11480
|
+
size: "sm",
|
|
11481
|
+
color: "ghost",
|
|
11482
|
+
shape: "circle",
|
|
11483
|
+
onClick: handleManageClose,
|
|
11484
|
+
get ["aria-label"] () {
|
|
11485
|
+
return texts().closeLabel;
|
|
11486
|
+
},
|
|
11487
|
+
children: "X"
|
|
11488
|
+
})
|
|
11489
|
+
];
|
|
11490
|
+
}
|
|
11491
|
+
}), null);
|
|
11492
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$6, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11493
|
+
direction: "col",
|
|
11494
|
+
gap: "md",
|
|
11495
|
+
class: "mb-6",
|
|
11496
|
+
get children () {
|
|
11497
|
+
return [
|
|
11498
|
+
(()=>{
|
|
11499
|
+
var _el$8 = CookieConsent_tmpl$5(), _el$9 = _el$8.firstChild;
|
|
11500
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$9, ()=>texts().essential);
|
|
11501
|
+
return _el$8;
|
|
11502
|
+
})(),
|
|
11503
|
+
(()=>{
|
|
11504
|
+
var _el$0 = _tmpl$6(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling;
|
|
11505
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$1, ()=>texts().analytics);
|
|
11506
|
+
_el$10.addEventListener("change", (e)=>setAnalyticsEnabled(e.currentTarget.checked));
|
|
11507
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)(()=>_el$10.checked = analyticsEnabled());
|
|
11508
|
+
return _el$0;
|
|
11509
|
+
})(),
|
|
11510
|
+
(()=>{
|
|
11511
|
+
var _el$11 = _tmpl$6(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
|
|
11512
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$12, ()=>texts().marketing);
|
|
11513
|
+
_el$13.addEventListener("change", (e)=>setMarketingEnabled(e.currentTarget.checked));
|
|
11514
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)(()=>_el$13.checked = marketingEnabled());
|
|
11515
|
+
return _el$11;
|
|
11516
|
+
})()
|
|
11517
|
+
];
|
|
11518
|
+
}
|
|
11519
|
+
}), null);
|
|
11520
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$6, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(flex_Flex, {
|
|
11521
|
+
gap: "sm",
|
|
11522
|
+
justify: "end",
|
|
11523
|
+
get children () {
|
|
11524
|
+
return [
|
|
11525
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11526
|
+
color: "ghost",
|
|
11527
|
+
size: "sm",
|
|
11528
|
+
onClick: handleManageClose,
|
|
11529
|
+
get children () {
|
|
11530
|
+
return texts().cancel;
|
|
11531
|
+
}
|
|
11532
|
+
}),
|
|
11533
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(button_Button, {
|
|
11534
|
+
color: "primary",
|
|
11535
|
+
size: "sm",
|
|
11536
|
+
class: "transition-transform duration-150 hover:scale-[1.02] active:scale-[0.98]",
|
|
11537
|
+
onClick: handleManageSave,
|
|
11538
|
+
get children () {
|
|
11539
|
+
return texts().save;
|
|
11540
|
+
}
|
|
11541
|
+
})
|
|
11542
|
+
];
|
|
11543
|
+
}
|
|
11544
|
+
}), null);
|
|
11545
|
+
return _el$5;
|
|
11546
|
+
}
|
|
11547
|
+
})
|
|
11548
|
+
];
|
|
11549
|
+
};
|
|
11550
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.delegateEvents)([
|
|
11551
|
+
"click"
|
|
11552
|
+
]);
|
|
10943
11553
|
var ImmersiveLanding_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><div class="relative h-full w-full"><div class="relative z-10 h-full w-full">'), ImmersiveLanding_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div class="absolute bottom-20 right-6"aria-hidden=true><span class="font-mono text-base-content/20 text-[clamp(0.75rem,2vw,1.25rem)] tracking-[0.4em]">v'), ImmersiveLanding_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div class="pointer-events-none fixed inset-0 z-30">');
|
|
10944
11554
|
const ImmersiveLanding = (props)=>{
|
|
10945
11555
|
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
10946
11556
|
"pages",
|
|
10947
11557
|
"initialPage",
|
|
11558
|
+
"currentPage",
|
|
10948
11559
|
"transitionDuration",
|
|
10949
11560
|
"onNavigate",
|
|
10950
11561
|
"onNavigationComplete",
|
|
@@ -10956,11 +11567,18 @@ const ImmersiveLanding = (props)=>{
|
|
|
10956
11567
|
"children",
|
|
10957
11568
|
"class",
|
|
10958
11569
|
"className",
|
|
10959
|
-
"style"
|
|
11570
|
+
"style",
|
|
11571
|
+
"pwaConfig",
|
|
11572
|
+
"cookieConfig",
|
|
11573
|
+
"firefoxPWAConfig",
|
|
11574
|
+
"showPWAPrompt",
|
|
11575
|
+
"showCookieConsent",
|
|
11576
|
+
"showFirefoxBanner"
|
|
10960
11577
|
]);
|
|
10961
11578
|
const navigation = useImmersiveLanding({
|
|
10962
11579
|
pages: local.pages,
|
|
10963
11580
|
initialPage: local.initialPage,
|
|
11581
|
+
currentPage: local.currentPage,
|
|
10964
11582
|
transitionDuration: local.transitionDuration,
|
|
10965
11583
|
onNavigate: local.onNavigate,
|
|
10966
11584
|
onNavigationComplete: local.onNavigationComplete,
|
|
@@ -11059,7 +11677,76 @@ const ImmersiveLanding = (props)=>{
|
|
|
11059
11677
|
get isLastPage () {
|
|
11060
11678
|
return navigation.isLastPage();
|
|
11061
11679
|
}
|
|
11062
|
-
}))
|
|
11680
|
+
})),
|
|
11681
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11682
|
+
get when () {
|
|
11683
|
+
return local.showPWAPrompt;
|
|
11684
|
+
},
|
|
11685
|
+
get children () {
|
|
11686
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(PWAInstallPrompt, {
|
|
11687
|
+
get appName () {
|
|
11688
|
+
return local.pwaConfig?.appName;
|
|
11689
|
+
},
|
|
11690
|
+
get appIcon () {
|
|
11691
|
+
return local.pwaConfig?.appIcon;
|
|
11692
|
+
},
|
|
11693
|
+
get storageKey () {
|
|
11694
|
+
return local.pwaConfig?.storageKey ?? "app_pwa_dismissed";
|
|
11695
|
+
},
|
|
11696
|
+
get texts () {
|
|
11697
|
+
return local.pwaConfig?.texts;
|
|
11698
|
+
},
|
|
11699
|
+
get onInstall () {
|
|
11700
|
+
return local.pwaConfig?.onInstall;
|
|
11701
|
+
},
|
|
11702
|
+
get onDismiss () {
|
|
11703
|
+
return local.pwaConfig?.onDismiss;
|
|
11704
|
+
}
|
|
11705
|
+
});
|
|
11706
|
+
}
|
|
11707
|
+
}),
|
|
11708
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11709
|
+
get when () {
|
|
11710
|
+
return local.showFirefoxBanner;
|
|
11711
|
+
},
|
|
11712
|
+
get children () {
|
|
11713
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(FirefoxPWABanner, {
|
|
11714
|
+
get extensionUrl () {
|
|
11715
|
+
return local.firefoxPWAConfig?.extensionUrl;
|
|
11716
|
+
},
|
|
11717
|
+
get storageKey () {
|
|
11718
|
+
return local.firefoxPWAConfig?.storageKey ?? "app_firefox_pwa_dismissed";
|
|
11719
|
+
},
|
|
11720
|
+
get texts () {
|
|
11721
|
+
return local.firefoxPWAConfig?.texts;
|
|
11722
|
+
},
|
|
11723
|
+
get onInstall () {
|
|
11724
|
+
return local.firefoxPWAConfig?.onInstall;
|
|
11725
|
+
},
|
|
11726
|
+
get onDismiss () {
|
|
11727
|
+
return local.firefoxPWAConfig?.onDismiss;
|
|
11728
|
+
}
|
|
11729
|
+
});
|
|
11730
|
+
}
|
|
11731
|
+
}),
|
|
11732
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
|
|
11733
|
+
get when () {
|
|
11734
|
+
return local.showCookieConsent;
|
|
11735
|
+
},
|
|
11736
|
+
get children () {
|
|
11737
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(CookieConsent, {
|
|
11738
|
+
get storageKeys () {
|
|
11739
|
+
return local.cookieConfig?.storageKeys;
|
|
11740
|
+
},
|
|
11741
|
+
get texts () {
|
|
11742
|
+
return local.cookieConfig?.texts;
|
|
11743
|
+
},
|
|
11744
|
+
get onConsentChange () {
|
|
11745
|
+
return local.cookieConfig?.onConsentChange;
|
|
11746
|
+
}
|
|
11747
|
+
});
|
|
11748
|
+
}
|
|
11749
|
+
})
|
|
11063
11750
|
];
|
|
11064
11751
|
}
|
|
11065
11752
|
});
|
|
@@ -11255,7 +11942,7 @@ const Link = (props)=>{
|
|
|
11255
11942
|
})();
|
|
11256
11943
|
};
|
|
11257
11944
|
const link_Link = Link;
|
|
11258
|
-
var LiveChatPanel_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z">'), LiveChatPanel_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<h3 class="font-semibold text-lg">'), LiveChatPanel_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><div class="flex-shrink-0 bg-primary text-primary-content px-4 py-4 flex items-center justify-between"><button class="hover:bg-primary-focus rounded-lg p-1 transition-colors"><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M6 18L18 6M6 6l12 12"></path></svg></button></div><div class="flex-1 overflow-y-auto px-4 py-4 space-y-4"></div><div class="flex-shrink-0 border-t border-base-300 bg-base-100 p-3">'), LiveChatPanel_tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>"), LiveChatPanel_tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><p class="text-sm leading-relaxed whitespace-pre-wrap break-words">'),
|
|
11945
|
+
var LiveChatPanel_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z">'), LiveChatPanel_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<h3 class="font-semibold text-lg">'), LiveChatPanel_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><div class="flex-shrink-0 bg-primary text-primary-content px-4 py-4 flex items-center justify-between"><button class="hover:bg-primary-focus rounded-lg p-1 transition-colors"><svg xmlns=http://www.w3.org/2000/svg class="w-5 h-5"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M6 18L18 6M6 6l12 12"></path></svg></button></div><div class="flex-1 overflow-y-auto px-4 py-4 space-y-4"></div><div class="flex-shrink-0 border-t border-base-300 bg-base-100 p-3">'), LiveChatPanel_tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>"), LiveChatPanel_tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><p class="text-sm leading-relaxed whitespace-pre-wrap break-words">'), LiveChatPanel_tmpl$6 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<span class="text-xs text-base-content/50 mt-1 px-1">'), LiveChatPanel_tmpl$7 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<span class="w-4 h-4 border-2 border-primary-content/30 border-t-primary-content rounded-full animate-spin inline-block">');
|
|
11259
11946
|
const getMockMessages = ()=>{
|
|
11260
11947
|
const salesMessages = [
|
|
11261
11948
|
{
|
|
@@ -11470,7 +12157,7 @@ const LiveChatPanel_LiveChatPanel = (props)=>{
|
|
|
11470
12157
|
return _el$9;
|
|
11471
12158
|
})(),
|
|
11472
12159
|
(()=>{
|
|
11473
|
-
var _el$1 =
|
|
12160
|
+
var _el$1 = LiveChatPanel_tmpl$6();
|
|
11474
12161
|
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$1, ()=>formatTime(message.timestamp));
|
|
11475
12162
|
return _el$1;
|
|
11476
12163
|
})()
|
|
@@ -11529,7 +12216,7 @@ const LiveChatPanel_LiveChatPanel = (props)=>{
|
|
|
11529
12216
|
return !isSending();
|
|
11530
12217
|
},
|
|
11531
12218
|
get fallback () {
|
|
11532
|
-
return
|
|
12219
|
+
return LiveChatPanel_tmpl$7();
|
|
11533
12220
|
},
|
|
11534
12221
|
get children () {
|
|
11535
12222
|
return local.sendLabel ?? "Send";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.iconify{background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.iconify,.iconify-color{display:inline-block;height:1em;width:1em}.iconify-color{background-repeat:no-repeat;background-size:100% 100%}.icon-[mdi--loading]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8'/%3E%3C/svg%3E")}.icon-[mdi--loading].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi--loading].iconify-color{background-image:var(--svg)}.icon-[mdi--palette]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M17.5 12a1.5 1.5 0 0 1-1.5-1.5A1.5 1.5 0 0 1 17.5 9a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-3-4A1.5 1.5 0 0 1 13 6.5 1.5 1.5 0 0 1 14.5 5 1.5 1.5 0 0 1 16 6.5 1.5 1.5 0 0 1 14.5 8m-5 0A1.5 1.5 0 0 1 8 6.5 1.5 1.5 0 0 1 9.5 5 1.5 1.5 0 0 1 11 6.5 1.5 1.5 0 0 1 9.5 8m-3 4A1.5 1.5 0 0 1 5 10.5 1.5 1.5 0 0 1 6.5 9 1.5 1.5 0 0 1 8 10.5 1.5 1.5 0 0 1 6.5 12M12 3a9 9 0 0 0-9 9 9 9 0 0 0 9 9 1.5 1.5 0 0 0 1.5-1.5c0-.39-.15-.74-.39-1-.23-.27-.38-.62-.38-1a1.5 1.5 0 0 1 1.5-1.5H16a5 5 0 0 0 5-5c0-4.42-4.03-8-9-8'/%3E%3C/svg%3E")}.icon-[mdi--palette].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi--palette].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-down]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m5.84 9.59 5.66 5.66 5.66-5.66-.71-.7-4.95 4.95-4.95-4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-down].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-down].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-left]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M14.41 18.16 8.75 12.5l5.66-5.66.7.71-4.95 4.95 4.95 4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-left].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-left].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-right]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m8.59 18.16 5.66-5.66-5.66-5.66-.7.71 4.95 4.95-4.95 4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-right].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-right].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-up]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m5.84 15.41 5.66-5.66 5.66 5.66-.71.7-4.95-4.95-4.95 4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-up].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-up].iconify-color{background-image:var(--svg)}.icon-[mdi-light--eye]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M11.5 18c4 0 7.46-2.22 9.24-5.5C18.96 9.22 15.5 7 11.5 7s-7.46 2.22-9.24 5.5C4.04 15.78 7.5 18 11.5 18m0-12c4.56 0 8.5 2.65 10.36 6.5C20 16.35 16.06 19 11.5 19S3 16.35 1.14 12.5C3 8.65 6.94 6 11.5 6m0 2C14 8 16 10 16 12.5S14 17 11.5 17 7 15 7 12.5 9 8 11.5 8m0 1A3.5 3.5 0 0 0 8 12.5a3.5 3.5 0 0 0 3.5 3.5 3.5 3.5 0 0 0 3.5-3.5A3.5 3.5 0 0 0 11.5 9'/%3E%3C/svg%3E")}.icon-[mdi-light--eye].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--eye].iconify-color{background-image:var(--svg)}.icon-[mdi-light--eye-off]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M2.54 4.71 3.25 4 20 20.75l-.71.71-3.34-3.35c-1.37.57-2.87.89-4.45.89-4.56 0-8.5-2.65-10.36-6.5.97-2 2.49-3.67 4.36-4.82zM11.5 18c1.29 0 2.53-.23 3.67-.66l-1.12-1.13c-.73.5-1.6.79-2.55.79C9 17 7 15 7 12.5c0-.95.29-1.82.79-2.55L6.24 8.41a10.64 10.64 0 0 0-3.98 4.09C4.04 15.78 7.5 18 11.5 18m9.24-5.5C18.96 9.22 15.5 7 11.5 7c-1.15 0-2.27.19-3.31.53l-.78-.78C8.68 6.26 10.06 6 11.5 6c4.56 0 8.5 2.65 10.36 6.5a11.47 11.47 0 0 1-4.07 4.63l-.72-.73c1.53-.96 2.8-2.3 3.67-3.9M11.5 8C14 8 16 10 16 12.5c0 .82-.22 1.58-.6 2.24l-.74-.74c.22-.46.34-.96.34-1.5A3.5 3.5 0 0 0 11.5 9c-.54 0-1.04.12-1.5.34l-.74-.74c.66-.38 1.42-.6 2.24-.6M8 12.5a3.5 3.5 0 0 0 3.5 3.5c.67 0 1.29-.19 1.82-.5L8.5 10.68c-.31.53-.5 1.15-.5 1.82'/%3E%3C/svg%3E")}.icon-[mdi-light--eye-off].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--eye-off].iconify-color{background-image:var(--svg)}.icon-[mdi-light--unfold-more-horizontal]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m15.74 8.83-.7.71L11.5 6 7.96 9.54l-.7-.71 4.24-4.24zm0 7.34-4.24 4.24-4.24-4.24.7-.71L11.5 19l3.54-3.54z'/%3E%3C/svg%3E")}.icon-[mdi-light--unfold-more-horizontal].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--unfold-more-horizontal].iconify-color{background-image:var(--svg)}
|
|
1
|
+
.iconify{background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.iconify,.iconify-color{display:inline-block;height:1em;width:1em}.iconify-color{background-repeat:no-repeat;background-size:100% 100%}.icon-[mdi--close]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/%3E%3C/svg%3E")}.icon-[mdi--close].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi--close].iconify-color{background-image:var(--svg)}.icon-[mdi--firefox]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M6.85 6.74q.015 0 0 0M21.28 8.6c-.43-1.05-1.32-2.18-2.01-2.54.56 1.11.89 2.22 1.02 3.04v.02c-1.13-2.82-3.05-3.96-4.62-6.44-.08-.12-.17-.25-.24-.38-.04-.07-.07-.14-.11-.21-.06-.13-.12-.26-.15-.4 0-.01-.01-.02-.02-.02h-.03c-2.22 1.3-3.15 3.59-3.38 5.04-.69.04-1.37.21-1.99.51-.12.05-.17.19-.13.31.05.14.21.21.34.15.54-.26 1.14-.41 1.74-.45h.05c.08-.01.17-.01.25-.01.5-.01.97.06 1.44.2l.06.02c.1.02.17.06.25.06.05.04.11.06.16.08l.14.06c.07.03.14.06.2.09.03.02.06.03.09.05.07.04.16.07.2.11.04.02.08.05.12.07.73.45 1.34 1.07 1.75 1.81-.53-.37-1.49-.74-2.41-.58 3.6 1.81 2.63 8-2.36 7.76-.44-.01-.88-.1-1.3-.25-.1-.03-.2-.07-.29-.12-.05-.02-.12-.05-.17-.08-1.23-.63-2.24-1.82-2.38-3.27 0 0 .5-1.73 3.33-1.73.31 0 1.17-.86 1.2-1.1 0-.09-1.74-.78-2.42-1.45-.37-.36-.54-.53-.69-.66-.08-.07-.17-.13-.26-.19a4.63 4.63 0 0 1-.03-2.45C7.6 6.12 6.8 6.86 6.22 7.5c-.4-.5-.37-2.15-.35-2.5-.01 0-.3.16-.33.18-.35.25-.68.53-.98.82-.35.37-.66.74-.94 1.14-.62.91-1.12 1.95-1.34 3.04 0 .01-.1.41-.17.92l-.03.23c-.02.17-.04.32-.08.58v.41c0 5.53 4.5 10.01 10 10.01 4.97 0 9.08-3.59 9.88-8.33.02-.11.03-.24.05-.37.2-1.72-.02-3.52-.65-5.03'/%3E%3C/svg%3E")}.icon-[mdi--firefox].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi--firefox].iconify-color{background-image:var(--svg)}.icon-[mdi--loading]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8'/%3E%3C/svg%3E")}.icon-[mdi--loading].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi--loading].iconify-color{background-image:var(--svg)}.icon-[mdi--palette]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M17.5 12a1.5 1.5 0 0 1-1.5-1.5A1.5 1.5 0 0 1 17.5 9a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1-1.5 1.5m-3-4A1.5 1.5 0 0 1 13 6.5 1.5 1.5 0 0 1 14.5 5 1.5 1.5 0 0 1 16 6.5 1.5 1.5 0 0 1 14.5 8m-5 0A1.5 1.5 0 0 1 8 6.5 1.5 1.5 0 0 1 9.5 5 1.5 1.5 0 0 1 11 6.5 1.5 1.5 0 0 1 9.5 8m-3 4A1.5 1.5 0 0 1 5 10.5 1.5 1.5 0 0 1 6.5 9 1.5 1.5 0 0 1 8 10.5 1.5 1.5 0 0 1 6.5 12M12 3a9 9 0 0 0-9 9 9 9 0 0 0 9 9 1.5 1.5 0 0 0 1.5-1.5c0-.39-.15-.74-.39-1-.23-.27-.38-.62-.38-1a1.5 1.5 0 0 1 1.5-1.5H16a5 5 0 0 0 5-5c0-4.42-4.03-8-9-8'/%3E%3C/svg%3E")}.icon-[mdi--palette].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi--palette].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-down]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m5.84 9.59 5.66 5.66 5.66-5.66-.71-.7-4.95 4.95-4.95-4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-down].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-down].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-left]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M14.41 18.16 8.75 12.5l5.66-5.66.7.71-4.95 4.95 4.95 4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-left].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-left].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-right]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m8.59 18.16 5.66-5.66-5.66-5.66-.7.71 4.95 4.95-4.95 4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-right].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-right].iconify-color{background-image:var(--svg)}.icon-[mdi-light--chevron-up]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m5.84 15.41 5.66-5.66 5.66 5.66-.71.7-4.95-4.95-4.95 4.95z'/%3E%3C/svg%3E")}.icon-[mdi-light--chevron-up].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--chevron-up].iconify-color{background-image:var(--svg)}.icon-[mdi-light--eye]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M11.5 18c4 0 7.46-2.22 9.24-5.5C18.96 9.22 15.5 7 11.5 7s-7.46 2.22-9.24 5.5C4.04 15.78 7.5 18 11.5 18m0-12c4.56 0 8.5 2.65 10.36 6.5C20 16.35 16.06 19 11.5 19S3 16.35 1.14 12.5C3 8.65 6.94 6 11.5 6m0 2C14 8 16 10 16 12.5S14 17 11.5 17 7 15 7 12.5 9 8 11.5 8m0 1A3.5 3.5 0 0 0 8 12.5a3.5 3.5 0 0 0 3.5 3.5 3.5 3.5 0 0 0 3.5-3.5A3.5 3.5 0 0 0 11.5 9'/%3E%3C/svg%3E")}.icon-[mdi-light--eye].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--eye].iconify-color{background-image:var(--svg)}.icon-[mdi-light--eye-off]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M2.54 4.71 3.25 4 20 20.75l-.71.71-3.34-3.35c-1.37.57-2.87.89-4.45.89-4.56 0-8.5-2.65-10.36-6.5.97-2 2.49-3.67 4.36-4.82zM11.5 18c1.29 0 2.53-.23 3.67-.66l-1.12-1.13c-.73.5-1.6.79-2.55.79C9 17 7 15 7 12.5c0-.95.29-1.82.79-2.55L6.24 8.41a10.64 10.64 0 0 0-3.98 4.09C4.04 15.78 7.5 18 11.5 18m9.24-5.5C18.96 9.22 15.5 7 11.5 7c-1.15 0-2.27.19-3.31.53l-.78-.78C8.68 6.26 10.06 6 11.5 6c4.56 0 8.5 2.65 10.36 6.5a11.47 11.47 0 0 1-4.07 4.63l-.72-.73c1.53-.96 2.8-2.3 3.67-3.9M11.5 8C14 8 16 10 16 12.5c0 .82-.22 1.58-.6 2.24l-.74-.74c.22-.46.34-.96.34-1.5A3.5 3.5 0 0 0 11.5 9c-.54 0-1.04.12-1.5.34l-.74-.74c.66-.38 1.42-.6 2.24-.6M8 12.5a3.5 3.5 0 0 0 3.5 3.5c.67 0 1.29-.19 1.82-.5L8.5 10.68c-.31.53-.5 1.15-.5 1.82'/%3E%3C/svg%3E")}.icon-[mdi-light--eye-off].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--eye-off].iconify-color{background-image:var(--svg)}.icon-[mdi-light--unfold-more-horizontal]{--svg:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='m15.74 8.83-.7.71L11.5 6 7.96 9.54l-.7-.71 4.24-4.24zm0 7.34-4.24 4.24-4.24-4.24.7-.71L11.5 19l3.54-3.54z'/%3E%3C/svg%3E")}.icon-[mdi-light--unfold-more-horizontal].iconify{-webkit-mask-image:var(--svg);mask-image:var(--svg)}.icon-[mdi-light--unfold-more-horizontal].iconify-color{background-image:var(--svg)}
|