@novu/js 3.0.0-canary.2 → 3.0.1

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkWFFKLN6Q_js = require('../chunk-WFFKLN6Q.js');
3
+ var chunkBD5JCEYL_js = require('../chunk-BD5JCEYL.js');
4
4
  var chunkERC62PGI_js = require('../chunk-ERC62PGI.js');
5
5
  var chunk7B52C2XE_js = require('../chunk-7B52C2XE.js');
6
6
  var web = require('solid-js/web');
@@ -256,7 +256,8 @@ var defaultVariables = {
256
256
  colorNeutral: "#525252",
257
257
  colorShadow: "rgb(0,0,0)",
258
258
  fontSize: "1rem",
259
- borderRadius: "0.375rem"
259
+ borderRadius: "0.375rem",
260
+ colorStripes: "#FF9A68"
260
261
  };
261
262
 
262
263
  // src/ui/helpers/constants.ts
@@ -542,6 +543,7 @@ var parseVariables = (variables, id) => {
542
543
  generateDefaultColor({ color: variables.colorCounterForeground, key: "color-counter-foreground", id }),
543
544
  generateDefaultColor({ color: variables.colorShadow, key: "color-shadow", id }),
544
545
  generateDefaultColor({ color: variables.colorRing, key: "color-ring", id }),
546
+ generateDefaultColor({ color: variables.colorStripes, key: "color-stripes", id }),
545
547
  ...generateAlphaShadeRulesFromColor({ color: variables.colorBackground, key: "color-background-alpha", id }),
546
548
  ...generateAlphaShadeRulesFromColor({ color: variables.colorForeground, key: "color-foreground-alpha", id }),
547
549
  ...generateSolidShadeRulesFromColor({ color: variables.colorPrimary, key: "color-primary", id }),
@@ -801,14 +803,15 @@ var useWebSocketEvent = ({
801
803
  eventHandler: onMessage
802
804
  }) => {
803
805
  const novu = useNovu();
804
- const { postMessage } = useBrowserTabsChannel({ channelName: `nv.${webSocketEvent}`, onMessage });
806
+ const channelName = `nv_ws_connection:a=${novu.applicationIdentifier}:s=${novu.subscriberId}`;
807
+ const { postMessage } = useBrowserTabsChannel({ channelName, onMessage });
805
808
  const updateReadCount = (data) => {
806
809
  onMessage(data);
807
810
  postMessage(data);
808
811
  };
809
812
  solidJs.onMount(() => {
810
813
  let cleanup;
811
- const resolveLock = requestLock(`nv.${webSocketEvent}`, () => {
814
+ const resolveLock = requestLock(channelName, () => {
812
815
  cleanup = novu.on(webSocketEvent, updateReadCount);
813
816
  });
814
817
  solidJs.onCleanup(() => {
@@ -843,6 +846,7 @@ var InboxProvider = (props) => {
843
846
  tags: props.tabs.length > 0 ? getTagsFromTab(props.tabs[0]) : []
844
847
  }));
845
848
  const [hideBranding, setHideBranding] = solidJs.createSignal(false);
849
+ const [isDevelopmentMode, setIsDevelopmentMode] = solidJs.createSignal(false);
846
850
  const [preferencesFilter, setPreferencesFilter] = solidJs.createSignal(props.preferencesFilter);
847
851
  const setNewStatus = (newStatus) => {
848
852
  setStatus(newStatus);
@@ -898,6 +902,7 @@ var InboxProvider = (props) => {
898
902
  return;
899
903
  }
900
904
  setHideBranding(data.removeNovuBranding);
905
+ setIsDevelopmentMode(data.isDevelopmentMode);
901
906
  }
902
907
  });
903
908
  return web.createComponent(InboxContext.Provider, {
@@ -914,7 +919,8 @@ var InboxProvider = (props) => {
914
919
  setIsOpened,
915
920
  navigate,
916
921
  hideBranding,
917
- preferencesFilter
922
+ preferencesFilter,
923
+ isDevelopmentMode
918
924
  },
919
925
  get children() {
920
926
  return props.children;
@@ -930,7 +936,7 @@ var useInboxContext = () => {
930
936
  };
931
937
  var NovuContext = solidJs.createContext(void 0);
932
938
  function NovuProvider(props) {
933
- const novu = solidJs.createMemo(() => props.novu || new chunkWFFKLN6Q_js.Novu(props.options));
939
+ const novu = solidJs.createMemo(() => props.novu || new chunkBD5JCEYL_js.Novu(props.options));
934
940
  return web.createComponent(NovuContext.Provider, {
935
941
  get value() {
936
942
  return novu();
@@ -1435,21 +1441,61 @@ function isBrowser() {
1435
1441
  }
1436
1442
 
1437
1443
  // src/ui/components/elements/Footer.tsx
1438
- var _tmpl$21 = /* @__PURE__ */ web.template(`<div class="nt-flex nt-shrink-0 nt-justify-center nt-items-center nt-gap-1 nt-mt-auto nt-py-3 nt-text-foreground-alpha-400"><a target=_blank class="nt-w-full nt-flex nt-items-center nt-gap-1 nt-justify-center"><span class=nt-text-xs>Inbox by</span><span class=nt-text-xs>Novu`);
1444
+ var _tmpl$21 = /* @__PURE__ */ web.template(`<span class="nt-z-10 nt-text-xs nt-text-stripes">Development mode`);
1445
+ var _tmpl$22 = /* @__PURE__ */ web.template(`<span class="nt-z-10 nt-text-xs">\u2022`);
1446
+ var _tmpl$32 = /* @__PURE__ */ web.template(`<a target=_blank class="nt-z-10 nt-flex nt-items-center nt-gap-1 nt-justify-center"><span class=nt-text-xs>Inbox by</span><span class=nt-text-xs>Novu`);
1447
+ var _tmpl$42 = /* @__PURE__ */ web.template(`<div>`);
1448
+ var stripes = `before:nt-content-[""] before:nt-absolute before:nt-inset-0 before:-nt-right-[calc(0+var(--stripes-size))] before:[mask-image:linear-gradient(transparent_0%,black)] before:nt-bg-dev-stripes-gradient before:nt-bg-[length:var(--stripes-size)_var(--stripes-size)] before:nt-animate-stripes before:hover:[animation-play-state:running]`;
1449
+ var commonAfter = 'after:nt-content-[""] after:nt-absolute after:nt-inset-0 after:-nt-top-12';
1450
+ var devModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-stripes)_l_c_h_/_0.07)_55%,transparent),linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
1451
+ var prodModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
1439
1452
  var Footer = () => {
1440
1453
  const {
1441
- hideBranding
1454
+ hideBranding,
1455
+ isDevelopmentMode
1442
1456
  } = useInboxContext();
1443
1457
  return web.createComponent(solidJs.Show, {
1444
1458
  get when() {
1445
- return !hideBranding();
1459
+ return !hideBranding() || isDevelopmentMode();
1446
1460
  },
1447
1461
  get children() {
1448
- var _el$ = _tmpl$21(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
1449
- web.insert(_el$2, web.createComponent(Novu2, {
1450
- "class": "nt-size-4"
1451
- }), _el$4);
1452
- web.effect(() => web.setAttribute(_el$2, "href", `https://go.novu.co/powered?ref=${getCurrentDomain()}`));
1462
+ var _el$ = _tmpl$42();
1463
+ _el$.style.setProperty("--stripes-size", "15px");
1464
+ web.insert(_el$, web.createComponent(solidJs.Show, {
1465
+ get when() {
1466
+ return isDevelopmentMode();
1467
+ },
1468
+ get children() {
1469
+ return _tmpl$21();
1470
+ }
1471
+ }), null);
1472
+ web.insert(_el$, web.createComponent(solidJs.Show, {
1473
+ get when() {
1474
+ return web.memo(() => !!isDevelopmentMode())() && !hideBranding();
1475
+ },
1476
+ get children() {
1477
+ return _tmpl$22();
1478
+ }
1479
+ }), null);
1480
+ web.insert(_el$, web.createComponent(solidJs.Show, {
1481
+ get when() {
1482
+ return !hideBranding();
1483
+ },
1484
+ get children() {
1485
+ var _el$4 = _tmpl$32(), _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling;
1486
+ web.insert(_el$4, web.createComponent(Novu2, {
1487
+ "class": "nt-size-2.5"
1488
+ }), _el$6);
1489
+ web.effect(() => web.setAttribute(_el$4, "href", `https://go.novu.co/powered?ref=${getCurrentDomain()}`));
1490
+ return _el$4;
1491
+ }
1492
+ }), null);
1493
+ web.effect(() => web.className(_el$, cn(`nt-relative nt-flex nt-shrink-0 nt-justify-center nt-items-center nt-gap-1 nt-mt-auto nt-py-3 nt-text-foreground-alpha-400`, {
1494
+ [stripes]: isDevelopmentMode(),
1495
+ [devModeGradient]: isDevelopmentMode(),
1496
+ "nt-bg-[oklch(from_var(--nv-color-stripes)_l_c_h_/_0.1)]": isDevelopmentMode(),
1497
+ [prodModeGradient]: !isDevelopmentMode()
1498
+ })));
1453
1499
  return _el$;
1454
1500
  }
1455
1501
  });
@@ -1460,7 +1506,7 @@ function getCurrentDomain() {
1460
1506
  }
1461
1507
  return "";
1462
1508
  }
1463
- var _tmpl$22 = /* @__PURE__ */ web.template(`<button>`);
1509
+ var _tmpl$23 = /* @__PURE__ */ web.template(`<button>`);
1464
1510
  var buttonVariants = classVarianceAuthority.cva(cn('nt-inline-flex nt-gap-4 nt-items-center nt-justify-center nt-whitespace-nowrap nt-text-sm nt-font-medium nt-transition-colors disabled:nt-pointer-events-none disabled:nt-opacity-50 after:nt-absolute after:nt-content-[""] before:nt-content-[""] before:nt-absolute [&_svg]:nt-pointer-events-none [&_svg]:nt-shrink-0', `focus-visible:nt-outline-none focus-visible:nt-ring-2 focus-visible:nt-rounded-md focus-visible:nt-ring-ring focus-visible:nt-ring-offset-2`), {
1465
1511
  variants: {
1466
1512
  variant: {
@@ -1487,7 +1533,7 @@ var Button = (props) => {
1487
1533
  const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
1488
1534
  const style = useStyle();
1489
1535
  return (() => {
1490
- var _el$ = _tmpl$22();
1536
+ var _el$ = _tmpl$23();
1491
1537
  web.spread(_el$, web.mergeProps({
1492
1538
  get ["data-variant"]() {
1493
1539
  return props.variant;
@@ -1505,7 +1551,7 @@ var Button = (props) => {
1505
1551
  return _el$;
1506
1552
  })();
1507
1553
  };
1508
- var _tmpl$23 = /* @__PURE__ */ web.template(`<button>`);
1554
+ var _tmpl$24 = /* @__PURE__ */ web.template(`<button>`);
1509
1555
  var PopoverClose = (props) => {
1510
1556
  const {
1511
1557
  onClose
@@ -1526,14 +1572,14 @@ var PopoverClose = (props) => {
1526
1572
  }, rest));
1527
1573
  }
1528
1574
  return (() => {
1529
- var _el$ = _tmpl$23();
1575
+ var _el$ = _tmpl$24();
1530
1576
  _el$.$$click = handleClick;
1531
1577
  web.spread(_el$, rest, false, false);
1532
1578
  return _el$;
1533
1579
  })();
1534
1580
  };
1535
1581
  web.delegateEvents(["click"]);
1536
- var _tmpl$24 = /* @__PURE__ */ web.template(`<div>`);
1582
+ var _tmpl$25 = /* @__PURE__ */ web.template(`<div>`);
1537
1583
  var Root = (props) => {
1538
1584
  const [_, rest] = solidJs.splitProps(props, ["class"]);
1539
1585
  const {
@@ -1549,7 +1595,7 @@ var Root = (props) => {
1549
1595
  },
1550
1596
  children: new Comment(" Powered by Novu - https://novu.co ")
1551
1597
  }), (() => {
1552
- var _el$ = _tmpl$24();
1598
+ var _el$ = _tmpl$25();
1553
1599
  web.spread(_el$, web.mergeProps({
1554
1600
  get id() {
1555
1601
  return `novu-root-${id()}`;
@@ -1622,7 +1668,7 @@ function usePopover() {
1622
1668
  }
1623
1669
 
1624
1670
  // src/ui/components/primitives/Popover/PopoverContent.tsx
1625
- var _tmpl$25 = /* @__PURE__ */ web.template(`<div>`);
1671
+ var _tmpl$26 = /* @__PURE__ */ web.template(`<div>`);
1626
1672
  var popoverContentVariants = () => cn("nt-w-[400px] nt-h-[600px] nt-rounded-xl nt-bg-background", "nt-shadow-popover nt-animate-in nt-slide-in-from-top-2 nt-fade-in nt-z-10 nt-cursor-default nt-flex nt-flex-col nt-overflow-hidden nt-border nt-border-border");
1627
1673
  var PopoverContentBody = (props) => {
1628
1674
  const {
@@ -1645,7 +1691,7 @@ var PopoverContentBody = (props) => {
1645
1691
  });
1646
1692
  });
1647
1693
  return (() => {
1648
- var _el$ = _tmpl$25();
1694
+ var _el$ = _tmpl$26();
1649
1695
  web.use(setFloating, _el$);
1650
1696
  web.spread(_el$, web.mergeProps({
1651
1697
  get ["class"]() {
@@ -1725,7 +1771,7 @@ var PopoverContent = (props) => {
1725
1771
  }
1726
1772
  });
1727
1773
  };
1728
- var _tmpl$26 = /* @__PURE__ */ web.template(`<button>`);
1774
+ var _tmpl$27 = /* @__PURE__ */ web.template(`<button>`);
1729
1775
  var PopoverTrigger = (props) => {
1730
1776
  const {
1731
1777
  setReference,
@@ -1749,7 +1795,7 @@ var PopoverTrigger = (props) => {
1749
1795
  }, rest));
1750
1796
  }
1751
1797
  return (() => {
1752
- var _el$ = _tmpl$26();
1798
+ var _el$ = _tmpl$27();
1753
1799
  _el$.$$click = handleClick;
1754
1800
  web.use(setReference, _el$);
1755
1801
  web.spread(_el$, web.mergeProps({
@@ -1913,7 +1959,7 @@ var useKeyboardNavigation = ({
1913
1959
  };
1914
1960
 
1915
1961
  // src/ui/components/primitives/Tabs/TabsRoot.tsx
1916
- var _tmpl$27 = /* @__PURE__ */ web.template(`<div>`);
1962
+ var _tmpl$28 = /* @__PURE__ */ web.template(`<div>`);
1917
1963
  var TabsContext = solidJs.createContext(void 0);
1918
1964
  var useTabsContext = () => {
1919
1965
  const context = solidJs.useContext(TabsContext);
@@ -1952,7 +1998,7 @@ var TabsRoot = (props) => {
1952
1998
  setVisibleTabs
1953
1999
  },
1954
2000
  get children() {
1955
- var _el$ = _tmpl$27();
2001
+ var _el$ = _tmpl$28();
1956
2002
  web.use(setTabsContainer, _el$);
1957
2003
  web.spread(_el$, web.mergeProps({
1958
2004
  get ["class"]() {
@@ -1966,7 +2012,7 @@ var TabsRoot = (props) => {
1966
2012
  };
1967
2013
 
1968
2014
  // src/ui/components/primitives/Tabs/TabsContent.tsx
1969
- var _tmpl$28 = /* @__PURE__ */ web.template(`<div role=tabpanel>`);
2015
+ var _tmpl$29 = /* @__PURE__ */ web.template(`<div role=tabpanel>`);
1970
2016
  var TabsContent = (props) => {
1971
2017
  const [local, rest] = solidJs.splitProps(props, ["value", "class", "appearanceKey", "children"]);
1972
2018
  const style = useStyle();
@@ -1978,7 +2024,7 @@ var TabsContent = (props) => {
1978
2024
  return activeTab() === local.value;
1979
2025
  },
1980
2026
  get children() {
1981
- var _el$ = _tmpl$28();
2027
+ var _el$ = _tmpl$29();
1982
2028
  web.spread(_el$, web.mergeProps({
1983
2029
  get ["class"]() {
1984
2030
  return web.memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tabsContent", activeTab() === local.value ? "nt-block" : "nt-hidden");
@@ -1998,14 +2044,14 @@ var TabsContent = (props) => {
1998
2044
  }
1999
2045
  });
2000
2046
  };
2001
- var _tmpl$29 = /* @__PURE__ */ web.template(`<div role=tablist>`);
2047
+ var _tmpl$30 = /* @__PURE__ */ web.template(`<div role=tablist>`);
2002
2048
  var _tmpl$210 = /* @__PURE__ */ web.template(`<div class="nt-relative nt-z-[-1]">`);
2003
2049
  var tabsListVariants = () => "nt-flex nt-gap-6";
2004
2050
  var TabsList = (props) => {
2005
2051
  const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "ref", "children"]);
2006
2052
  const style = useStyle();
2007
2053
  return [(() => {
2008
- var _el$ = _tmpl$29();
2054
+ var _el$ = _tmpl$30();
2009
2055
  var _ref$ = local.ref;
2010
2056
  typeof _ref$ === "function" ? web.use(_ref$, _el$) : local.ref = _el$;
2011
2057
  web.spread(_el$, web.mergeProps({
@@ -2084,7 +2130,7 @@ var inboxFilterLocalizationKeys = {
2084
2130
  unread: "inbox.filters.labels.unread",
2085
2131
  archived: "inbox.filters.labels.archived"
2086
2132
  };
2087
- var _tmpl$30 = /* @__PURE__ */ web.template(`<span><span></span><span>`);
2133
+ var _tmpl$31 = /* @__PURE__ */ web.template(`<span><span></span><span>`);
2088
2134
  var cases = [{
2089
2135
  status: "unreadRead" /* UNREAD_READ */,
2090
2136
  icon: UnreadRead
@@ -2128,7 +2174,7 @@ var StatusItem = (props) => {
2128
2174
  },
2129
2175
  get children() {
2130
2176
  return [(() => {
2131
- var _el$ = _tmpl$30(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
2177
+ var _el$ = _tmpl$31(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
2132
2178
  web.insert(_el$2, () => props.icon());
2133
2179
  web.insert(_el$3, () => t(props.localizationKey));
2134
2180
  web.effect((_p$) => {
@@ -2162,7 +2208,7 @@ var StatusItem = (props) => {
2162
2208
  };
2163
2209
 
2164
2210
  // src/ui/components/elements/InboxStatus/InboxStatusDropdown.tsx
2165
- var _tmpl$31 = /* @__PURE__ */ web.template(`<span>`);
2211
+ var _tmpl$33 = /* @__PURE__ */ web.template(`<span>`);
2166
2212
  var StatusDropdown = () => {
2167
2213
  const style = useStyle();
2168
2214
  const {
@@ -2187,7 +2233,7 @@ var StatusDropdown = () => {
2187
2233
  }, triggerProps, {
2188
2234
  get children() {
2189
2235
  return [(() => {
2190
- var _el$ = _tmpl$31();
2236
+ var _el$ = _tmpl$33();
2191
2237
  web.insert(_el$, () => t(inboxFilterLocalizationKeys[status()]));
2192
2238
  web.effect((_p$) => {
2193
2239
  var _v$ = inboxFilterLocalizationKeys[status()], _v$2 = style("inboxStatus__title", "nt-text-base");
@@ -2265,7 +2311,7 @@ var useNotificationsInfiniteScroll = (props) => {
2265
2311
  );
2266
2312
  solidJs.onMount(() => {
2267
2313
  const listener = ({ data: data2 }) => {
2268
- if (!data2 || !chunkWFFKLN6Q_js.isSameFilter(filter, data2.filter)) {
2314
+ if (!data2 || !chunkBD5JCEYL_js.isSameFilter(filter, data2.filter)) {
2269
2315
  return;
2270
2316
  }
2271
2317
  mutate({ data: data2.notifications, hasMore: data2.hasMore });
@@ -2275,7 +2321,7 @@ var useNotificationsInfiniteScroll = (props) => {
2275
2321
  });
2276
2322
  solidJs.createEffect(() => chunk7B52C2XE_js.__async(void 0, null, function* () {
2277
2323
  const newFilter = chunk7B52C2XE_js.__spreadValues({}, props.options());
2278
- if (chunkWFFKLN6Q_js.isSameFilter(filter, newFilter)) {
2324
+ if (chunkBD5JCEYL_js.isSameFilter(filter, newFilter)) {
2279
2325
  return;
2280
2326
  }
2281
2327
  novu.notifications.clearCache();
@@ -2332,7 +2378,7 @@ var useReadAll = (props) => {
2332
2378
  };
2333
2379
 
2334
2380
  // src/ui/components/elements/Header/MoreActionsOptions.tsx
2335
- var _tmpl$32 = /* @__PURE__ */ web.template(`<span>`);
2381
+ var _tmpl$34 = /* @__PURE__ */ web.template(`<span>`);
2336
2382
  var MoreActionsOptions = () => {
2337
2383
  const {
2338
2384
  filter
@@ -2380,12 +2426,12 @@ var ActionsItem = (props) => {
2380
2426
  },
2381
2427
  get children() {
2382
2428
  return [(() => {
2383
- var _el$ = _tmpl$32();
2429
+ var _el$ = _tmpl$34();
2384
2430
  web.insert(_el$, () => props.icon());
2385
2431
  web.effect(() => web.className(_el$, style("moreActions__dropdownItemLeft__icon", "nt-size-4")));
2386
2432
  return _el$;
2387
2433
  })(), (() => {
2388
- var _el$2 = _tmpl$32();
2434
+ var _el$2 = _tmpl$34();
2389
2435
  web.insert(_el$2, () => t(props.localizationKey));
2390
2436
  web.effect((_p$) => {
2391
2437
  var _v$ = props.localizationKey, _v$2 = style("moreActions__dropdownItemLabel", "nt-leading-none");
@@ -2444,11 +2490,11 @@ var MoreActionsDropdown = () => {
2444
2490
  };
2445
2491
 
2446
2492
  // src/ui/components/elements/Header/ActionsContainer.tsx
2447
- var _tmpl$33 = /* @__PURE__ */ web.template(`<div>`);
2493
+ var _tmpl$35 = /* @__PURE__ */ web.template(`<div>`);
2448
2494
  var ActionsContainer = (props) => {
2449
2495
  const style = useStyle();
2450
2496
  return (() => {
2451
- var _el$ = _tmpl$33();
2497
+ var _el$ = _tmpl$35();
2452
2498
  web.insert(_el$, web.createComponent(MoreActionsDropdown, {}), null);
2453
2499
  web.insert(_el$, web.createComponent(solidJs.Show, {
2454
2500
  get when() {
@@ -2476,11 +2522,11 @@ var ActionsContainer = (props) => {
2476
2522
  };
2477
2523
 
2478
2524
  // src/ui/components/elements/Header/Header.tsx
2479
- var _tmpl$34 = /* @__PURE__ */ web.template(`<div>`);
2525
+ var _tmpl$36 = /* @__PURE__ */ web.template(`<div>`);
2480
2526
  var Header = (props) => {
2481
2527
  const style = useStyle();
2482
2528
  return (() => {
2483
- var _el$ = _tmpl$34();
2529
+ var _el$ = _tmpl$36();
2484
2530
  web.insert(_el$, web.createComponent(StatusDropdown, {}), null);
2485
2531
  web.insert(_el$, web.createComponent(ActionsContainer, {
2486
2532
  get showPreferences() {
@@ -2491,7 +2537,7 @@ var Header = (props) => {
2491
2537
  return _el$;
2492
2538
  })();
2493
2539
  };
2494
- var _tmpl$35 = /* @__PURE__ */ web.template(`<div>`);
2540
+ var _tmpl$37 = /* @__PURE__ */ web.template(`<div>`);
2495
2541
  var Collapsible = (props) => {
2496
2542
  const style = useStyle();
2497
2543
  let contentRef;
@@ -2500,7 +2546,7 @@ var Collapsible = (props) => {
2500
2546
  requestAnimationFrame(() => setEnableTransition(true));
2501
2547
  });
2502
2548
  return (() => {
2503
- var _el$ = _tmpl$35();
2549
+ var _el$ = _tmpl$37();
2504
2550
  var _ref$ = contentRef;
2505
2551
  typeof _ref$ === "function" ? web.use(_ref$, _el$) : contentRef = _el$;
2506
2552
  web.spread(_el$, web.mergeProps({
@@ -2519,11 +2565,11 @@ var Collapsible = (props) => {
2519
2565
  return _el$;
2520
2566
  })();
2521
2567
  };
2522
- var _tmpl$36 = /* @__PURE__ */ web.template(`<label><input type=checkbox class="nt-peer nt-sr-only"><div>`);
2568
+ var _tmpl$38 = /* @__PURE__ */ web.template(`<label><input type=checkbox class="nt-peer nt-sr-only"><div>`);
2523
2569
  var Switch = (props) => {
2524
2570
  const style = useStyle();
2525
2571
  return (() => {
2526
- var _el$ = _tmpl$36(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
2572
+ var _el$ = _tmpl$38(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
2527
2573
  _el$2.addEventListener("change", (e) => {
2528
2574
  props.onChange(e.target.checked);
2529
2575
  });
@@ -2544,7 +2590,7 @@ var Switch = (props) => {
2544
2590
  };
2545
2591
 
2546
2592
  // src/ui/components/elements/Preferences/ChannelRow.tsx
2547
- var _tmpl$37 = /* @__PURE__ */ web.template(`<div><div><div></div><span></span></div><div>`);
2593
+ var _tmpl$39 = /* @__PURE__ */ web.template(`<div><div><div></div><span></span></div><div>`);
2548
2594
  var ChannelRow = (props) => {
2549
2595
  const style = useStyle();
2550
2596
  const updatePreference = (enabled) => chunk7B52C2XE_js.__async(void 0, null, function* () {
@@ -2558,7 +2604,7 @@ var ChannelRow = (props) => {
2558
2604
  yield updatePreference(checked);
2559
2605
  });
2560
2606
  return (() => {
2561
- var _el$ = _tmpl$37(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling;
2607
+ var _el$ = _tmpl$39(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling;
2562
2608
  web.insert(_el$3, web.createComponent(ChannelIcon, {
2563
2609
  appearanceKey: "channel__icon",
2564
2610
  get channel() {
@@ -2644,12 +2690,12 @@ var getLabel = (channel) => {
2644
2690
  return "";
2645
2691
  }
2646
2692
  };
2647
- var _tmpl$38 = /* @__PURE__ */ web.template(`<div>`);
2693
+ var _tmpl$40 = /* @__PURE__ */ web.template(`<div>`);
2648
2694
  var _tmpl$211 = /* @__PURE__ */ web.template(`<div><div></div><div>`);
2649
2695
  var SkeletonText = (props) => {
2650
2696
  const style = useStyle();
2651
2697
  return (() => {
2652
- var _el$ = _tmpl$38();
2698
+ var _el$ = _tmpl$40();
2653
2699
  web.effect(() => web.className(_el$, style(props.appearanceKey, cn("nt-w-full nt-h-3 nt-rounded nt-bg-gradient-to-r nt-from-foreground-alpha-50 nt-to-transparent", props.class))));
2654
2700
  return _el$;
2655
2701
  })();
@@ -2657,7 +2703,7 @@ var SkeletonText = (props) => {
2657
2703
  var SkeletonAvatar = (props) => {
2658
2704
  const style = useStyle();
2659
2705
  return (() => {
2660
- var _el$2 = _tmpl$38();
2706
+ var _el$2 = _tmpl$40();
2661
2707
  web.effect(() => web.className(_el$2, style(props.appearanceKey, cn("nt-size-8 nt-rounded-lg nt-bg-gradient-to-r nt-from-foreground-alpha-50 nt-to-transparent", props.class))));
2662
2708
  return _el$2;
2663
2709
  })();
@@ -2682,7 +2728,7 @@ var SkeletonSwitch = (props) => {
2682
2728
  };
2683
2729
 
2684
2730
  // src/ui/components/elements/Preferences/PreferencesListSkeleton.tsx
2685
- var _tmpl$39 = /* @__PURE__ */ web.template(`<div>`);
2731
+ var _tmpl$41 = /* @__PURE__ */ web.template(`<div>`);
2686
2732
  var channelIcons = [InApp, Email, Sms, Push, Chat];
2687
2733
  var PreferencesListSkeleton = (props) => {
2688
2734
  const style = useStyle();
@@ -2690,7 +2736,7 @@ var PreferencesListSkeleton = (props) => {
2690
2736
  t
2691
2737
  } = useLocalization();
2692
2738
  return (() => {
2693
- var _el$ = _tmpl$39();
2739
+ var _el$ = _tmpl$41();
2694
2740
  web.insert(_el$, web.createComponent(Motion.div, {
2695
2741
  get animate() {
2696
2742
  return {
@@ -2732,7 +2778,7 @@ var PreferencesListSkeleton = (props) => {
2732
2778
  return style("preferencesList__skeletonIcon", "nt-size-8 nt-p-2 nt-rounded-lg nt-bg-neutral-alpha-100");
2733
2779
  }
2734
2780
  }), (() => {
2735
- var _el$3 = _tmpl$39();
2781
+ var _el$3 = _tmpl$41();
2736
2782
  web.insert(_el$3, web.createComponent(SkeletonText, {
2737
2783
  appearanceKey: "notificationList__skeletonText",
2738
2784
  "class": "nt-h-2 nt-w-1/3 nt-bg-neutral-alpha-50 nt-rounded"
@@ -2750,7 +2796,7 @@ var PreferencesListSkeleton = (props) => {
2750
2796
  }
2751
2797
  });
2752
2798
  })), (() => {
2753
- var _el$2 = _tmpl$39();
2799
+ var _el$2 = _tmpl$41();
2754
2800
  web.effect(() => web.className(_el$2, style("notificationListEmptyNoticeOverlay", "nt-absolute nt-size-full nt-z-10 nt-inset-0 nt-bg-gradient-to-b nt-from-transparent nt-to-background")));
2755
2801
  return _el$2;
2756
2802
  })()];
@@ -2795,7 +2841,7 @@ var PreferencesListSkeleton = (props) => {
2795
2841
  };
2796
2842
 
2797
2843
  // src/ui/components/elements/Preferences/Preferences.tsx
2798
- var _tmpl$40 = /* @__PURE__ */ web.template(`<div>`);
2844
+ var _tmpl$43 = /* @__PURE__ */ web.template(`<div>`);
2799
2845
  var _tmpl$212 = /* @__PURE__ */ web.template(`<span>`);
2800
2846
  var _tmpl$310 = /* @__PURE__ */ web.template(`<div><div><div><div></div></div><span>`);
2801
2847
  var Preferences = () => {
@@ -2844,7 +2890,7 @@ var Preferences = () => {
2844
2890
  });
2845
2891
  });
2846
2892
  return (() => {
2847
- var _el$ = _tmpl$40();
2893
+ var _el$ = _tmpl$43();
2848
2894
  web.insert(_el$, web.createComponent(PreferencesRow, {
2849
2895
  localizationKey: "preferences.global",
2850
2896
  get channels() {
@@ -2923,7 +2969,7 @@ var WorkflowDescription = (props) => {
2923
2969
  return channels.map((c, index) => [c, web.memo(() => index < channels.length - 1 && ", ")]);
2924
2970
  };
2925
2971
  return (() => {
2926
- var _el$3 = _tmpl$40();
2972
+ var _el$3 = _tmpl$43();
2927
2973
  web.insert(_el$3, channelNames);
2928
2974
  web.effect(() => web.className(_el$3, style(props.appearanceKey, cn("nt-text-sm nt-text-foreground-alpha-600 nt-text-start", props.class))));
2929
2975
  return _el$3;
@@ -2972,7 +3018,7 @@ var PreferencesRow = (props) => {
2972
3018
  return isOpenChannels();
2973
3019
  },
2974
3020
  get children() {
2975
- var _el$9 = _tmpl$40();
3021
+ var _el$9 = _tmpl$43();
2976
3022
  web.insert(_el$9, web.createComponent(solidJs.For, {
2977
3023
  get each() {
2978
3024
  return channels();
@@ -3022,14 +3068,14 @@ var PreferencesRow = (props) => {
3022
3068
  });
3023
3069
  };
3024
3070
  web.delegateEvents(["click"]);
3025
- var _tmpl$41 = /* @__PURE__ */ web.template(`<div><div data-localization=preferences.title>`);
3071
+ var _tmpl$44 = /* @__PURE__ */ web.template(`<div><div data-localization=preferences.title>`);
3026
3072
  var PreferencesHeader = (props) => {
3027
3073
  const style = useStyle();
3028
3074
  const {
3029
3075
  t
3030
3076
  } = useLocalization();
3031
3077
  return (() => {
3032
- var _el$ = _tmpl$41(), _el$2 = _el$.firstChild;
3078
+ var _el$ = _tmpl$44(), _el$2 = _el$.firstChild;
3033
3079
  web.insert(_el$, web.createComponent(solidJs.Show, {
3034
3080
  get when() {
3035
3081
  return props.navigateToNotifications;
@@ -3093,20 +3139,20 @@ var useTabsDropdown = ({ tabs }) => {
3093
3139
  });
3094
3140
  return { dropdownTabs, setTabsList, visibleTabs };
3095
3141
  };
3096
- var _tmpl$42 = /* @__PURE__ */ web.template(`<svg viewBox="0 0 20 20"fill=none xmlns=http://www.w3.org/2000/svg><path d="M10.0001 10.879L13.7126 7.1665L14.7731 8.227L10.0001 13L5.22705 8.227L6.28755 7.1665L10.0001 10.879Z"fill=currentColor>`);
3142
+ var _tmpl$45 = /* @__PURE__ */ web.template(`<svg viewBox="0 0 20 20"fill=none xmlns=http://www.w3.org/2000/svg><path d="M10.0001 10.879L13.7126 7.1665L14.7731 8.227L10.0001 13L5.22705 8.227L6.28755 7.1665L10.0001 10.879Z"fill=currentColor>`);
3097
3143
  var ArrowDown = (props) => {
3098
3144
  return (() => {
3099
- var _el$ = _tmpl$42();
3145
+ var _el$ = _tmpl$45();
3100
3146
  web.spread(_el$, props, true, true);
3101
3147
  return _el$;
3102
3148
  })();
3103
3149
  };
3104
- var _tmpl$43 = /* @__PURE__ */ web.template(`<strong>`);
3150
+ var _tmpl$46 = /* @__PURE__ */ web.template(`<strong>`);
3105
3151
  var _tmpl$213 = /* @__PURE__ */ web.template(`<p>`);
3106
3152
  var Bold = (props) => {
3107
3153
  const style = useStyle();
3108
3154
  return (() => {
3109
- var _el$ = _tmpl$43();
3155
+ var _el$ = _tmpl$46();
3110
3156
  web.insert(_el$, () => props.children);
3111
3157
  web.effect(() => web.className(_el$, style(props.appearanceKey || "strong", "nt-font-semibold")));
3112
3158
  return _el$;
@@ -3197,7 +3243,7 @@ function useTooltip() {
3197
3243
  }
3198
3244
 
3199
3245
  // src/ui/components/primitives/Tooltip/TooltipContent.tsx
3200
- var _tmpl$44 = /* @__PURE__ */ web.template(`<div>`);
3246
+ var _tmpl$47 = /* @__PURE__ */ web.template(`<div>`);
3201
3247
  var tooltipContentVariants = () => "nt-bg-foreground nt-p-2 nt-shadow-tooltip nt-rounded-lg nt-text-background nt-text-xs";
3202
3248
  var TooltipContentBody = (props) => {
3203
3249
  const {
@@ -3220,7 +3266,7 @@ var TooltipContentBody = (props) => {
3220
3266
  });
3221
3267
  });
3222
3268
  return (() => {
3223
- var _el$ = _tmpl$44();
3269
+ var _el$ = _tmpl$47();
3224
3270
  web.use(setFloating, _el$);
3225
3271
  web.spread(_el$, web.mergeProps({
3226
3272
  get ["class"]() {
@@ -3259,7 +3305,7 @@ var TooltipContent = (props) => {
3259
3305
  }
3260
3306
  });
3261
3307
  };
3262
- var _tmpl$45 = /* @__PURE__ */ web.template(`<button>`);
3308
+ var _tmpl$48 = /* @__PURE__ */ web.template(`<button>`);
3263
3309
  var TooltipTrigger = (props) => {
3264
3310
  const {
3265
3311
  setReference,
@@ -3282,7 +3328,7 @@ var TooltipTrigger = (props) => {
3282
3328
  }, rest));
3283
3329
  }
3284
3330
  return (() => {
3285
- var _el$ = _tmpl$45();
3331
+ var _el$ = _tmpl$48();
3286
3332
  _el$.addEventListener("mouseleave", () => {
3287
3333
  setOpen(false);
3288
3334
  });
@@ -3314,10 +3360,10 @@ var Tooltip = {
3314
3360
  };
3315
3361
 
3316
3362
  // src/ui/components/Notification/DefaultNotification.tsx
3317
- var _tmpl$46 = /* @__PURE__ */ web.template(`<img>`);
3363
+ var _tmpl$49 = /* @__PURE__ */ web.template(`<img>`);
3318
3364
  var _tmpl$214 = /* @__PURE__ */ web.template(`<div>`);
3319
3365
  var _tmpl$311 = /* @__PURE__ */ web.template(`<span>`);
3320
- var _tmpl$47 = /* @__PURE__ */ web.template(`<a><div><div></div><div></div><p>`);
3366
+ var _tmpl$410 = /* @__PURE__ */ web.template(`<a><div><div></div><div></div><p>`);
3321
3367
  var DefaultNotification = (props) => {
3322
3368
  const style = useStyle();
3323
3369
  const {
@@ -3366,7 +3412,7 @@ var DefaultNotification = (props) => {
3366
3412
  }
3367
3413
  });
3368
3414
  return (() => {
3369
- var _el$ = _tmpl$47(), _el$3 = _el$.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$7 = _el$5.nextSibling;
3415
+ var _el$ = _tmpl$410(), _el$3 = _el$.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$7 = _el$5.nextSibling;
3370
3416
  _el$.$$click = handleNotificationClick;
3371
3417
  web.insert(_el$, web.createComponent(solidJs.Show, {
3372
3418
  get when() {
@@ -3380,7 +3426,7 @@ var DefaultNotification = (props) => {
3380
3426
  })();
3381
3427
  },
3382
3428
  get children() {
3383
- var _el$2 = _tmpl$46();
3429
+ var _el$2 = _tmpl$49();
3384
3430
  web.effect((_p$) => {
3385
3431
  var _v$ = style("notificationImage", "nt-size-8 nt-rounded-lg nt-object-cover nt-aspect-square"), _v$2 = props.notification.avatar;
3386
3432
  _v$ !== _p$.e && web.className(_el$2, _p$.e = _v$);
@@ -3704,14 +3750,14 @@ var NewMessagesCta = (props) => {
3704
3750
  }
3705
3751
  });
3706
3752
  };
3707
- var _tmpl$48 = /* @__PURE__ */ web.template(`<div>`);
3753
+ var _tmpl$50 = /* @__PURE__ */ web.template(`<div>`);
3708
3754
  var NotificationListSkeleton = (props) => {
3709
3755
  const style = useStyle();
3710
3756
  const {
3711
3757
  t
3712
3758
  } = useLocalization();
3713
3759
  return (() => {
3714
- var _el$ = _tmpl$48();
3760
+ var _el$ = _tmpl$50();
3715
3761
  web.insert(_el$, web.createComponent(Motion.div, {
3716
3762
  get animate() {
3717
3763
  return {
@@ -3750,7 +3796,7 @@ var NotificationListSkeleton = (props) => {
3750
3796
  appearanceKey: "notificationList__skeletonAvatar",
3751
3797
  "class": "nt-w-8 nt-h-8 nt-rounded-full nt-bg-neutral-alpha-100"
3752
3798
  }), (() => {
3753
- var _el$3 = _tmpl$48();
3799
+ var _el$3 = _tmpl$50();
3754
3800
  web.insert(_el$3, web.createComponent(SkeletonText, {
3755
3801
  appearanceKey: "notificationList__skeletonText",
3756
3802
  "class": "nt-h-2 nt-w-1/3 nt-bg-neutral-alpha-50 nt-rounded"
@@ -3764,7 +3810,7 @@ var NotificationListSkeleton = (props) => {
3764
3810
  })()];
3765
3811
  }
3766
3812
  }))), (() => {
3767
- var _el$2 = _tmpl$48();
3813
+ var _el$2 = _tmpl$50();
3768
3814
  web.effect(() => web.className(_el$2, style("notificationListEmptyNoticeOverlay", "nt-absolute nt-size-full nt-z-10 nt-inset-0 nt-bg-gradient-to-b nt-from-transparent nt-to-background")));
3769
3815
  return _el$2;
3770
3816
  })()];
@@ -3809,7 +3855,7 @@ var NotificationListSkeleton = (props) => {
3809
3855
  };
3810
3856
 
3811
3857
  // src/ui/components/Notification/NotificationList.tsx
3812
- var _tmpl$49 = /* @__PURE__ */ web.template(`<div>`);
3858
+ var _tmpl$51 = /* @__PURE__ */ web.template(`<div>`);
3813
3859
  var _tmpl$215 = /* @__PURE__ */ web.template(`<div><div>`);
3814
3860
  var NotificationList = (props) => {
3815
3861
  var _a, _b;
@@ -3910,7 +3956,7 @@ var NotificationList = (props) => {
3910
3956
  return !end();
3911
3957
  },
3912
3958
  get children() {
3913
- var _el$3 = _tmpl$49();
3959
+ var _el$3 = _tmpl$51();
3914
3960
  web.use(setEl, _el$3);
3915
3961
  web.insert(_el$3, web.createComponent(NotificationListSkeleton, {
3916
3962
  loading: true
@@ -3932,13 +3978,13 @@ var NotificationList = (props) => {
3932
3978
  return _el$;
3933
3979
  })();
3934
3980
  };
3935
- var _tmpl$50 = /* @__PURE__ */ web.template(`<span>`);
3981
+ var _tmpl$52 = /* @__PURE__ */ web.template(`<span>`);
3936
3982
  var getDisplayCount = (count) => count >= 100 ? "99+" : count;
3937
3983
  var InboxTabUnreadNotificationsCount = (props) => {
3938
3984
  const style = useStyle();
3939
3985
  const displayCount = solidJs.createMemo(() => getDisplayCount(props.count));
3940
3986
  return (() => {
3941
- var _el$ = _tmpl$50();
3987
+ var _el$ = _tmpl$52();
3942
3988
  web.insert(_el$, displayCount);
3943
3989
  web.effect(() => web.className(_el$, style("notificationsTabsTriggerCount", "nt-rounded-full nt-bg-counter nt-px-[6px] nt-text-counter-foreground nt-text-sm")));
3944
3990
  return _el$;
@@ -3963,7 +4009,7 @@ var InboxTab = (props) => {
3963
4009
  },
3964
4010
  get children() {
3965
4011
  return [(() => {
3966
- var _el$2 = _tmpl$50();
4012
+ var _el$2 = _tmpl$52();
3967
4013
  web.insert(_el$2, () => props.label);
3968
4014
  web.effect(() => web.className(_el$2, style("notificationsTabsTriggerLabel", "nt-text-sm nt-font-medium")));
3969
4015
  return _el$2;
@@ -4001,7 +4047,7 @@ var InboxDropdownTab = (props) => {
4001
4047
  },
4002
4048
  get children() {
4003
4049
  return [(() => {
4004
- var _el$3 = _tmpl$50();
4050
+ var _el$3 = _tmpl$52();
4005
4051
  web.insert(_el$3, () => props.label);
4006
4052
  web.effect(() => web.className(_el$3, style("moreTabs__dropdownItemLabel", "nt-mr-auto")));
4007
4053
  return _el$3;
@@ -4182,7 +4228,7 @@ var InboxTabs = (props) => {
4182
4228
  };
4183
4229
 
4184
4230
  // src/ui/components/Inbox.tsx
4185
- var _tmpl$51 = /* @__PURE__ */ web.template(`<div>`);
4231
+ var _tmpl$53 = /* @__PURE__ */ web.template(`<div>`);
4186
4232
  var InboxPage = /* @__PURE__ */ function(InboxPage2) {
4187
4233
  InboxPage2["Notifications"] = "notifications";
4188
4234
  InboxPage2["Preferences"] = "preferences";
@@ -4204,7 +4250,7 @@ var InboxContent = (props) => {
4204
4250
  };
4205
4251
  });
4206
4252
  return (() => {
4207
- var _el$ = _tmpl$51();
4253
+ var _el$ = _tmpl$53();
4208
4254
  web.insert(_el$, web.createComponent(solidJs.Switch, {
4209
4255
  get children() {
4210
4256
  return [web.createComponent(solidJs.Match, {
@@ -4531,7 +4577,7 @@ var Renderer = (props) => {
4531
4577
  }
4532
4578
  });
4533
4579
  };
4534
- var version = "3.0.0-canary.2";
4580
+ var version = "3.0.1";
4535
4581
  var cssHref = `https://cdn.jsdelivr.net/npm/@novu/js@${version}/dist/index.css`;
4536
4582
  var _dispose, _rootElement, _mountedElements, _setMountedElements, _appearance, _setAppearance, _localization, _setLocalization, _options, _setOptions, _tabs, _setTabs, _routerPush, _setRouterPush, _preferencesFilter, _setPreferencesFilter, _predefinedNovu, _NovuUI_instances, mountComponentRenderer_fn, updateComponentProps_fn;
4537
4583
  var NovuUI = class {