@pathscale/ui 0.0.129 → 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.
@@ -0,0 +1,3 @@
1
+ import { type Component } from "solid-js";
2
+ import { CookieConsentProps } from "../types";
3
+ export declare const CookieConsent: Component<CookieConsentProps>;
@@ -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>;
@@ -0,0 +1,3 @@
1
+ import { type Component } from "solid-js";
2
+ import { PWAInstallPromptProps } from "../types";
3
+ export declare const PWAInstallPrompt: Component<PWAInstallPromptProps>;
@@ -48,6 +48,12 @@ export interface ImmersiveLandingProps extends IComponentBaseProps {
48
48
  appVersion?: string;
49
49
  overlay?: JSX.Element | ((context: ImmersiveLandingContextValue) => JSX.Element);
50
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;
51
57
  }
52
58
  export interface ImmersiveLandingPageProps extends IComponentBaseProps {
53
59
  id: string;
@@ -68,3 +74,61 @@ export interface ImmersiveLandingNavigationProps extends IComponentBaseProps {
68
74
  isFirstPage: boolean;
69
75
  isLastPage: boolean;
70
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 DropdownItem = (props)=>{
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 dropdown_DropdownItem = DropdownItem;
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: dropdown_DropdownItem
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>");
@@ -10961,6 +10961,595 @@ const immersive_landing_ImmersiveLandingNavigation = ImmersiveLandingNavigation;
10961
10961
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.delegateEvents)([
10962
10962
  "click"
10963
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
+ ]);
10964
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">');
10965
11554
  const ImmersiveLanding = (props)=>{
10966
11555
  const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
@@ -10978,7 +11567,13 @@ const ImmersiveLanding = (props)=>{
10978
11567
  "children",
10979
11568
  "class",
10980
11569
  "className",
10981
- "style"
11570
+ "style",
11571
+ "pwaConfig",
11572
+ "cookieConfig",
11573
+ "firefoxPWAConfig",
11574
+ "showPWAPrompt",
11575
+ "showCookieConsent",
11576
+ "showFirefoxBanner"
10982
11577
  ]);
10983
11578
  const navigation = useImmersiveLanding({
10984
11579
  pages: local.pages,
@@ -11082,7 +11677,76 @@ const ImmersiveLanding = (props)=>{
11082
11677
  get isLastPage () {
11083
11678
  return navigation.isLastPage();
11084
11679
  }
11085
- }))
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
+ })
11086
11750
  ];
11087
11751
  }
11088
11752
  });
@@ -11278,7 +11942,7 @@ const Link = (props)=>{
11278
11942
  })();
11279
11943
  };
11280
11944
  const link_Link = Link;
11281
- 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">'), _tmpl$6 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<span class="text-xs text-base-content/50 mt-1 px-1">'), _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">');
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">');
11282
11946
  const getMockMessages = ()=>{
11283
11947
  const salesMessages = [
11284
11948
  {
@@ -11493,7 +12157,7 @@ const LiveChatPanel_LiveChatPanel = (props)=>{
11493
12157
  return _el$9;
11494
12158
  })(),
11495
12159
  (()=>{
11496
- var _el$1 = _tmpl$6();
12160
+ var _el$1 = LiveChatPanel_tmpl$6();
11497
12161
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$1, ()=>formatTime(message.timestamp));
11498
12162
  return _el$1;
11499
12163
  })()
@@ -11552,7 +12216,7 @@ const LiveChatPanel_LiveChatPanel = (props)=>{
11552
12216
  return !isSending();
11553
12217
  },
11554
12218
  get fallback () {
11555
- return _tmpl$7();
12219
+ return LiveChatPanel_tmpl$7();
11556
12220
  },
11557
12221
  get children () {
11558
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)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathscale/ui",
3
- "version": "0.0.129",
3
+ "version": "0.0.130",
4
4
  "author": "pathscale",
5
5
  "repository": {
6
6
  "type": "git",