@novu/js 3.5.0-rc.2 → 3.5.0

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 chunkOGEM74YA_js = require('../chunk-OGEM74YA.js');
3
+ var chunk5P6SPWNU_js = require('../chunk-5P6SPWNU.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');
@@ -8,17 +8,17 @@ var solidJs = require('solid-js');
8
8
  var store = require('solid-js/store');
9
9
  var clsx = require('clsx');
10
10
  var tailwindMerge = require('tailwind-merge');
11
- var classVarianceAuthority = require('class-variance-authority');
12
11
  var dom = require('@floating-ui/dom');
13
12
  var solidFloatingUi = require('solid-floating-ui');
14
13
  var solidMotionone = require('solid-motionone');
14
+ var classVarianceAuthority = require('class-variance-authority');
15
15
 
16
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
 
18
18
  var clsx__default = /*#__PURE__*/_interopDefault(clsx);
19
19
 
20
- // _i7vk0q10f:/Users/dimagrossman/projects/novu/packages/js/src/ui/index.directcss
21
- var ui_default = `.novu{scrollbar-color:var(--nv-color-secondary-foreground-alpha-300) #0000;:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{border:0 solid #e5e7eb;box-sizing:border-box}:where(html,:host){line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;tab-size:4;-webkit-tap-highlight-color:transparent}:where(body){line-height:inherit;margin:0}:where(hr){border-top-width:1px;color:inherit;height:0}:where(abbr:where([title])){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(a){color:inherit;text-decoration:inherit}:where(b,strong){font-weight:bolder}:where(code,kbd,samp,pre){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}:where(small){font-size:80%}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:initial}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(table){border-collapse:collapse;border-color:inherit;text-indent:0}:where(button,input,optgroup,select,textarea){color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}:where(button,select){text-transform:none}:where(button,input:where([type=button]),input:where([type=reset]),input:where([type=submit])){-webkit-appearance:button;background-color:initial;background-image:none}:where(:-moz-focusring){outline:auto}:where(:-moz-ui-invalid){box-shadow:none}:where(progress){vertical-align:initial}:where(*)::-webkit-inner-spin-button,:where(*)::-webkit-outer-spin-button{height:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(*)::-webkit-search-decoration{-webkit-appearance:none}:where(*)::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre){margin:0}:where(fieldset){margin:0;padding:0}:where(legend){padding:0}:where(ol,ul,menu){list-style:none;margin:0;padding:0}:where(dialog){padding:0}:where(textarea){resize:vertical}:where(input)::placeholder,:where(textarea)::placeholder{color:#9ca3af;opacity:1}:where(button,[role=button]){cursor:pointer}:where(:disabled){cursor:default}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block;vertical-align:middle}:where(img,video){height:auto;max-width:100%}:where([hidden]){display:none}:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:where(*) ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-scrollbar{height:.5rem;width:.5rem}::-webkit-scrollbar-thumb{background-clip:"padding-box";background-color:var(--nv-color-secondary-foreground-alpha-300);border-radius:.25rem}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background-color:initial}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}}.nt-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.\\!nt-pointer-events-auto{pointer-events:auto!important}.nt-invisible{visibility:hidden}.nt-absolute{position:absolute}.nt-relative{position:relative}.nt-inset-0{inset:0}.nt-inset-2{inset:.5rem}.nt-left-0\\.5{left:.125rem}.nt-right-0{right:0}.nt-right-3{right:.75rem}.nt-top-0{top:0}.nt-top-0\\.5{top:.125rem}.nt-top-3{top:.75rem}.nt-z-10{z-index:10}.nt-z-\\[-1\\]{z-index:-1}.nt-mx-auto{margin-left:auto;margin-right:auto}.nt-mb-2{margin-bottom:.5rem}.nt-mb-4{margin-bottom:1rem}.nt-mb-\\[0\\.625rem\\]{margin-bottom:.625rem}.nt-ml-2{margin-left:.5rem}.nt-ml-auto{margin-left:auto}.nt-mr-2{margin-right:.5rem}.nt-mr-auto{margin-right:auto}.nt-mt-1{margin-top:.25rem}.nt-mt-auto{margin-top:auto}.nt-block{display:block}.nt-flex{display:flex}.nt-inline-flex{display:inline-flex}.nt-grid{display:grid}.nt-hidden{display:none}.nt-aspect-square{aspect-ratio:1/1}.nt-size-1\\.5{height:.375rem;width:.375rem}.nt-size-2{height:.5rem;width:.5rem}.nt-size-2\\.5{height:.625rem;width:.625rem}.nt-size-3{height:.75rem;width:.75rem}.nt-size-3\\.5{height:.875rem;width:.875rem}.nt-size-4{height:1rem;width:1rem}.nt-size-5{height:1.25rem;width:1.25rem}.nt-size-8{height:2rem;width:2rem}.nt-size-fit{height:fit-content;width:fit-content}.nt-size-full{height:100%;width:100%}.nt-h-2{height:.5rem}.nt-h-3{height:.75rem}.nt-h-4{height:1rem}.nt-h-5{height:1.25rem}.nt-h-7{height:1.75rem}.nt-h-8{height:2rem}.nt-h-9{height:2.25rem}.nt-h-\\[600px\\]{height:600px}.nt-h-fit{height:fit-content}.nt-h-full{height:100%}.nt-min-h-0{min-height:0}.nt-w-1\\/3{width:33.333333%}.nt-w-2\\/3{width:66.666667%}.nt-w-5{width:1.25rem}.nt-w-7{width:1.75rem}.nt-w-8{width:2rem}.nt-w-\\[260px\\]{width:260px}.nt-w-\\[400px\\]{width:400px}.nt-w-\\[60px\\]{width:60px}.nt-w-\\[calc\\(2ch\\+2rem\\)\\]{width:calc(2ch + 2rem)}.nt-w-fit{width:fit-content}.nt-w-full{width:100%}.nt-w-max{width:max-content}.nt-min-w-52{min-width:13rem}.nt-flex-1{flex:1 1 0%}.nt-shrink-0{flex-shrink:0}.nt-translate-x-1\\/2{--tw-translate-x:50%}.nt-transform,.nt-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nt-cursor-default{cursor:default}.nt-cursor-not-allowed{cursor:not-allowed}.nt-cursor-pointer{cursor:pointer}.nt-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.nt-flex-row{flex-direction:row}.nt-flex-col{flex-direction:column}.nt-flex-wrap{flex-wrap:wrap}.nt-flex-nowrap{flex-wrap:nowrap}.nt-items-start{align-items:flex-start}.nt-items-center{align-items:center}.nt-justify-end{justify-content:flex-end}.nt-justify-center{justify-content:center}.nt-justify-between{justify-content:space-between}.nt-gap-0\\.5{gap:.125rem}.nt-gap-1{gap:.25rem}.nt-gap-1\\.5{gap:.375rem}.nt-gap-2{gap:.5rem}.nt-gap-3{gap:.75rem}.nt-gap-4{gap:1rem}.nt-gap-6{gap:1.5rem}.nt-gap-8{gap:2rem}.nt-self-stretch{align-self:stretch}.nt-overflow-auto{overflow:auto}.nt-overflow-hidden{overflow:hidden}.nt-overflow-y-auto{overflow-y:auto}.nt-truncate{overflow:hidden;text-overflow:ellipsis}.nt-truncate,.nt-whitespace-nowrap{white-space:nowrap}.nt-whitespace-pre-wrap{white-space:pre-wrap}.nt-rounded{border-radius:var(--nv-radius-base)}.nt-rounded-full{border-radius:var(--nv-radius-full)}.nt-rounded-lg{border-radius:var(--nv-radius-lg)}.nt-rounded-md{border-radius:var(--nv-radius-md)}.nt-rounded-sm{border-radius:var(--nv-radius-sm)}.nt-rounded-xl{border-radius:var(--nv-radius-xl)}.nt-border{border-width:1px}.nt-border-b{border-bottom-width:1px}.nt-border-t{border-top-width:1px}.nt-border-background{border-color:var(--nv-color-background)}.nt-border-border{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.nt-border-neutral-alpha-100{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-alpha-200{border-color:var(--nv-color-neutral-alpha-200)}.nt-border-neutral-alpha-400{border-color:var(--nv-color-neutral-alpha-400)}.nt-border-neutral-alpha-50{border-color:var(--nv-color-neutral-alpha-50)}.nt-border-t-neutral-alpha-200{border-top-color:var(--nv-color-neutral-alpha-200)}.nt-bg-\\[oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.1\\)\\]{background-color:oklch(from var(--nv-color-stripes) l c h/.1)}.nt-bg-background{background-color:var(--nv-color-background)}.nt-bg-counter{background-color:var(--nv-color-counter)}.nt-bg-foreground{background-color:var(--nv-color-foreground)}.nt-bg-neutral-alpha-100{background-color:var(--nv-color-neutral-alpha-100)}.nt-bg-neutral-alpha-25{background-color:var(--nv-color-neutral-alpha-25)}.nt-bg-neutral-alpha-300{background-color:var(--nv-color-neutral-alpha-300)}.nt-bg-neutral-alpha-50{background-color:var(--nv-color-neutral-alpha-50)}.nt-bg-primary{background-color:var(--nv-color-primary)}.nt-bg-primary-alpha-300{background-color:var(--nv-color-primary-alpha-300)}.nt-bg-primary-alpha-400{background-color:var(--nv-color-primary-alpha-400)}.nt-bg-secondary{background-color:var(--nv-color-secondary)}.nt-bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.nt-bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.nt-from-foreground-alpha-50{--tw-gradient-from:var(--nv-color-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-primary-foreground-alpha-200{--tw-gradient-from:var(--nv-color-primary-foreground-alpha-200) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-20\\%{--tw-gradient-from-position:20%}.nt-to-background{--tw-gradient-to:var(--nv-color-background) var(--tw-gradient-to-position)}.nt-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.nt-object-cover{object-fit:cover}.nt-p-0{padding:0}.nt-p-0\\.5{padding:.125rem}.nt-p-1{padding:.25rem}.nt-p-2{padding:.5rem}.nt-p-2\\.5{padding:.625rem}.nt-p-3{padding:.75rem}.nt-p-4{padding:1rem}.nt-px-1{padding-left:.25rem;padding-right:.25rem}.nt-px-2{padding-left:.5rem;padding-right:.5rem}.nt-px-3{padding-left:.75rem;padding-right:.75rem}.nt-px-4{padding-left:1rem;padding-right:1rem}.nt-px-8{padding-left:2rem;padding-right:2rem}.nt-px-\\[6px\\]{padding-left:6px;padding-right:6px}.nt-py-1{padding-bottom:.25rem;padding-top:.25rem}.nt-py-2{padding-bottom:.5rem;padding-top:.5rem}.nt-py-3{padding-bottom:.75rem;padding-top:.75rem}.nt-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.nt-py-4{padding-bottom:1rem;padding-top:1rem}.nt-py-px{padding-bottom:1px;padding-top:1px}.nt-pb-2{padding-bottom:.5rem}.nt-pb-\\[0\\.625rem\\]{padding-bottom:.625rem}.nt-pr-0{padding-right:0}.nt-pt-2\\.5{padding-top:.625rem}.nt-text-center{text-align:center}.nt-text-start{text-align:start}.nt-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.nt-text-\\[0\\.8rem\\]{font-size:.8rem}.nt-text-base{font-size:var(--nv-font-size-base);line-height:var(--nv-line-height-base)}.nt-text-sm{font-size:var(--nv-font-size-sm);line-height:var(--nv-line-height-sm)}.nt-text-xl{font-size:var(--nv-font-size-xl);line-height:var(--nv-line-height-xl)}.nt-text-xs{font-size:var(--nv-font-size-xs);line-height:var(--nv-line-height-xs)}.nt-font-medium{font-weight:500}.nt-font-normal{font-weight:400}.nt-font-semibold{font-weight:600}.nt-leading-none{line-height:1}.nt-text-background{color:var(--nv-color-background)}.nt-text-counter-foreground{color:var(--nv-color-counter-foreground)}.nt-text-foreground{color:var(--nv-color-foreground)}.nt-text-foreground-alpha-300{color:var(--nv-color-foreground-alpha-300)}.nt-text-foreground-alpha-400{color:var(--nv-color-foreground-alpha-400)}.nt-text-foreground-alpha-600{color:var(--nv-color-foreground-alpha-600)}.nt-text-foreground-alpha-700{color:var(--nv-color-foreground-alpha-700)}.nt-text-primary-foreground{color:var(--nv-color-primary-foreground)}.nt-text-secondary-foreground{color:var(--nv-color-secondary-foreground)}.nt-text-stripes{color:var(--nv-color-stripes)}.nt-opacity-0{opacity:0}.nt-opacity-20{opacity:.2}.nt-opacity-50{opacity:.5}.nt-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-primary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-primary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-secondary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-secondary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\]{--tw-shadow:0px 1px 2px 0px #0a0d1408;--tw-shadow-colored:0px 1px 2px 0px var(--tw-shadow-color)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\],.nt-shadow-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-dropdown{--tw-shadow:0px 12px 16px -4px oklch(from var(--nv-color-shadow) l c h/0.08),0px 4px 6px -2px oklch(from var(--nv-color-shadow) l c h/0.03);--tw-shadow-colored:0px 12px 16px -4px var(--tw-shadow-color),0px 4px 6px -2px var(--tw-shadow-color)}.nt-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.nt-shadow-lg,.nt-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.nt-shadow-popover{--tw-shadow:0px 8px 26px 0px oklch(from var(--nv-color-shadow) l c h/0.08),0px 2px 6px 0px oklch(from var(--nv-color-shadow) l c h/0.12);--tw-shadow-colored:0px 8px 26px 0px var(--tw-shadow-color),0px 2px 6px 0px var(--tw-shadow-color)}.nt-shadow-popover,.nt-shadow-tooltip{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-tooltip{--tw-shadow:0 5px 20px 0 oklch(from var(--nv-color-shadow) l c h/0.08);--tw-shadow-colored:0 5px 20px 0 var(--tw-shadow-color)}.nt-outline-none{outline:2px solid #0000;outline-offset:2px}.nt-backdrop-blur-lg{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.nt-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-duration-100{transition-duration:.1s}.nt-duration-200{transition-duration:.2s}.nt-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.nt-animate-in{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.nt-fade-in{--tw-enter-opacity:0}.nt-slide-in-from-top-2{--tw-enter-translate-y:-0.5rem}.nt-duration-100{animation-duration:.1s}.nt-duration-200{animation-duration:.2s}.nt-ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.\\[interpolate-size\\:allow-keywords\\]{interpolate-size:allow-keywords}.\\[scrollbar-gutter\\:stable\\]{scrollbar-gutter:stable}.\\[word-break\\:break-word\\]{word-break:break-word}.before\\:nt-absolute:before{content:var(--tw-content);position:absolute}.before\\:nt-inset-0:before{content:var(--tw-content);inset:0}.before\\:-nt-right-\\[calc\\(0\\+var\\(--stripes-size\\)\\)\\]:before{content:var(--tw-content);right:calc(var(--stripes-size)*-1)}@keyframes nt-stripes{0%{content:var(--tw-content);transform:translateX(0)}to{content:var(--tw-content);transform:translateX(calc(var(--stripes-size)*-1))}}.before\\:nt-animate-stripes:before{animation:nt-stripes 1s linear infinite paused;content:var(--tw-content)}.before\\:nt-rounded-lg:before{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.before\\:nt-rounded-md:before{border-radius:var(--nv-radius-md);content:var(--tw-content)}.before\\:nt-rounded-xl:before{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.before\\:nt-border:before{border-width:1px;content:var(--tw-content)}.before\\:nt-border-primary-foreground-alpha-100:before{border-color:var(--nv-color-primary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-border-secondary-foreground-alpha-100:before{border-color:var(--nv-color-secondary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-bg-dev-stripes-gradient:before{background-image:repeating-linear-gradient(135deg,oklch(from var(--nv-color-stripes) l c h/.1) 25%,oklch(from var(--nv-color-stripes) l c h/.1) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 75%);content:var(--tw-content)}.before\\:nt-bg-\\[length\\:var\\(--stripes-size\\)_var\\(--stripes-size\\)\\]:before{background-size:var(--stripes-size) var(--stripes-size);content:var(--tw-content)}.before\\:nt-content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.before\\:\\[mask-image\\:linear-gradient\\(transparent_0\\%\\2c black\\)\\]:before{content:var(--tw-content);-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.after\\:nt-absolute:after{content:var(--tw-content);position:absolute}.after\\:nt-inset-0:after{content:var(--tw-content);inset:0}.after\\:-nt-top-12:after{content:var(--tw-content);top:-3rem}.after\\:nt-bottom-0:after{bottom:0;content:var(--tw-content)}.after\\:nt-left-0:after{content:var(--tw-content);left:0}.after\\:nt-left-0\\.5:after{content:var(--tw-content);left:.125rem}.after\\:nt-top-0\\.5:after{content:var(--tw-content);top:.125rem}.after\\:nt-size-3:after{content:var(--tw-content);height:.75rem;width:.75rem}.after\\:nt-h-\\[2px\\]:after{content:var(--tw-content);height:2px}.after\\:nt-w-full:after{content:var(--tw-content);width:100%}.after\\:nt-translate-x-1\\/2:after{--tw-translate-x:50%}.after\\:nt-translate-x-1\\/2:after,.after\\:nt-translate-x-full:after{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\\:nt-translate-x-full:after{--tw-translate-x:100%}.after\\:nt-rounded-full:after{border-radius:var(--nv-radius-full);content:var(--tw-content)}.after\\:nt-rounded-lg:after{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.after\\:nt-rounded-md:after{border-radius:var(--nv-radius-md);content:var(--tw-content)}.after\\:nt-rounded-xl:after{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.after\\:nt-border-b-2:after{border-bottom-width:2px;content:var(--tw-content)}.after\\:nt-border-background:after{border-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-border-b-primary:after{border-bottom-color:var(--nv-color-primary);content:var(--tw-content)}.after\\:nt-border-b-transparent:after{border-bottom-color:#0000;content:var(--tw-content)}.after\\:nt-bg-background:after{background-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.07\\)_55\\%\\2c transparent\\)\\2c linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-stripes) l c h/.07) 55%,#0000),linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-gradient-to-b:after{background-image:linear-gradient(to bottom,var(--tw-gradient-stops));content:var(--tw-content)}.after\\:nt-from-primary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-primary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-from-secondary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-secondary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-to-transparent:after{content:var(--tw-content);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.after\\:nt-opacity-0:after{content:var(--tw-content);opacity:0}.after\\:nt-transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-transition-opacity:after{content:var(--tw-content);transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-duration-200:after{transition-duration:.2s}.after\\:nt-content-\\[\\"\\"\\]:after,.after\\:nt-content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.after\\:nt-duration-200:after{animation-duration:.2s;content:var(--tw-content)}.hover\\:nt-bg-neutral-alpha-100:hover{background-color:var(--nv-color-neutral-alpha-100)}.hover\\:nt-bg-neutral-alpha-50:hover{background-color:var(--nv-color-neutral-alpha-50)}.hover\\:nt-bg-primary-600:hover{background-color:var(--nv-color-primary-600)}.hover\\:nt-bg-primary-alpha-25:hover{background-color:var(--nv-color-primary-alpha-25)}.hover\\:nt-bg-primary-alpha-400:hover{background-color:var(--nv-color-primary-alpha-400)}.hover\\:nt-text-foreground-alpha-800:hover{color:var(--nv-color-foreground-alpha-800)}.before\\:hover\\:\\[animation-play-state\\:running\\]:hover:before{animation-play-state:running;content:var(--tw-content)}.hover\\:after\\:nt-opacity-100:hover:after{content:var(--tw-content);opacity:1}.focus\\:nt-outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-rounded-lg:focus-visible{border-radius:var(--nv-radius-lg)}.focus-visible\\:nt-rounded-md:focus-visible{border-radius:var(--nv-radius-md)}.focus-visible\\:nt-rounded-xl:focus-visible{border-radius:var(--nv-radius-xl)}.focus-visible\\:nt-bg-neutral-alpha-50:focus-visible{background-color:var(--nv-color-neutral-alpha-50)}.focus-visible\\:nt-outline-none:focus-visible{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:nt-ring-primary:focus-visible{--tw-ring-color:var(--nv-color-primary)}.focus-visible\\:nt-ring-ring:focus-visible{--tw-ring-color:var(--nv-color-ring)}.focus-visible\\:nt-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:nt-pointer-events-none:disabled{pointer-events:none}.disabled\\:nt-opacity-20:disabled{opacity:.2}.disabled\\:nt-opacity-50:disabled{opacity:.5}.nt-group:focus-within .group-focus-within\\:nt-opacity-100,.nt-group:hover .group-hover\\:nt-opacity-100{opacity:1}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true]{--tw-rotate:180deg}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true],.data-\\[open\\=true\\]\\:nt-transform[data-open=true]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-400[data-disabled=true]{color:var(--nv-color-foreground-alpha-400)}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-600[data-disabled=true]{color:var(--nv-color-foreground-alpha-600)}.data-\\[state\\=active\\]\\:nt-text-foreground[data-state=active]{color:var(--nv-color-foreground)}.data-\\[state\\=active\\]\\:after\\:nt-border-b-2[data-state=active]:after{border-bottom-width:2px;content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-border-primary[data-state=active]:after{border-color:var(--nv-color-primary);content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-opacity-100[data-state=active]:after{content:var(--tw-content);opacity:1}.\\[\\&\\:not\\(\\:first-child\\)\\]\\:nt-border-t:not(:first-child){border-top-width:1px}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-4 .nv-notificationList{padding-bottom:1rem}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-8 .nv-notificationList{padding-bottom:2rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-4 .nv-preferencesContainer{padding-bottom:1rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-8 .nv-preferencesContainer{padding-bottom:2rem}.\\[\\&_svg\\]\\:nt-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:nt-shrink-0 svg{flex-shrink:0}`;
20
+ // _5owhcajcb:/Users/dimagrossman/projects/novu/packages/js/src/ui/index.directcss
21
+ var ui_default = `.novu{scrollbar-color:var(--nv-color-secondary-foreground-alpha-300) #0000;:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{border:0 solid #e5e7eb;box-sizing:border-box}:where(html,:host){line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;tab-size:4;-webkit-tap-highlight-color:transparent}:where(body){line-height:inherit;margin:0}:where(hr){border-top-width:1px;color:inherit;height:0}:where(abbr:where([title])){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(a){color:inherit;text-decoration:inherit}:where(b,strong){font-weight:bolder}:where(code,kbd,samp,pre){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}:where(small){font-size:80%}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:initial}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(table){border-collapse:collapse;border-color:inherit;text-indent:0}:where(button,input,optgroup,select,textarea){color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}:where(button,select){text-transform:none}:where(button,input:where([type=button]),input:where([type=reset]),input:where([type=submit])){-webkit-appearance:button;background-color:initial;background-image:none}:where(:-moz-focusring){outline:auto}:where(:-moz-ui-invalid){box-shadow:none}:where(progress){vertical-align:initial}:where(*)::-webkit-inner-spin-button,:where(*)::-webkit-outer-spin-button{height:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(*)::-webkit-search-decoration{-webkit-appearance:none}:where(*)::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre){margin:0}:where(fieldset){margin:0;padding:0}:where(legend){padding:0}:where(ol,ul,menu){list-style:none;margin:0;padding:0}:where(dialog){padding:0}:where(textarea){resize:vertical}:where(input)::placeholder,:where(textarea)::placeholder{color:#9ca3af;opacity:1}:where(button,[role=button]){cursor:pointer}:where(:disabled){cursor:default}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block;vertical-align:middle}:where(img,video){height:auto;max-width:100%}:where([hidden]){display:none}:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:where(*) ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-scrollbar{height:.5rem;width:.5rem}::-webkit-scrollbar-thumb{background-clip:"padding-box";background-color:var(--nv-color-secondary-foreground-alpha-300);border-radius:.25rem}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background-color:initial}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}}.nt-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.\\!nt-pointer-events-auto{pointer-events:auto!important}.nt-invisible{visibility:hidden}.nt-absolute{position:absolute}.nt-relative{position:relative}.nt-inset-0{inset:0}.nt-inset-2{inset:.5rem}.nt-left-0\\.5{left:.125rem}.nt-right-0{right:0}.nt-right-3{right:.75rem}.nt-top-0{top:0}.nt-top-0\\.5{top:.125rem}.nt-top-3{top:.75rem}.nt-z-10{z-index:10}.nt-z-\\[-1\\]{z-index:-1}.nt-mx-auto{margin-left:auto;margin-right:auto}.nt--mt-\\[50px\\]{margin-top:-50px}.nt-mb-1{margin-bottom:.25rem}.nt-mb-2{margin-bottom:.5rem}.nt-mb-4{margin-bottom:1rem}.nt-mb-\\[0\\.625rem\\]{margin-bottom:.625rem}.nt-ml-1{margin-left:.25rem}.nt-ml-2{margin-left:.5rem}.nt-ml-auto{margin-left:auto}.nt-mr-2{margin-right:.5rem}.nt-mr-auto{margin-right:auto}.nt-mt-1{margin-top:.25rem}.nt-mt-auto{margin-top:auto}.nt-block{display:block}.nt-flex{display:flex}.nt-inline-flex{display:inline-flex}.nt-grid{display:grid}.nt-hidden{display:none}.nt-aspect-square{aspect-ratio:1/1}.nt-size-1\\.5{height:.375rem;width:.375rem}.nt-size-2{height:.5rem;width:.5rem}.nt-size-2\\.5{height:.625rem;width:.625rem}.nt-size-3{height:.75rem;width:.75rem}.nt-size-3\\.5{height:.875rem;width:.875rem}.nt-size-4{height:1rem;width:1rem}.nt-size-5{height:1.25rem;width:1.25rem}.nt-size-8{height:2rem;width:2rem}.nt-size-fit{height:fit-content;width:fit-content}.nt-size-full{height:100%;width:100%}.nt-h-2{height:.5rem}.nt-h-3{height:.75rem}.nt-h-4{height:1rem}.nt-h-5{height:1.25rem}.nt-h-7{height:1.75rem}.nt-h-8{height:2rem}.nt-h-9{height:2.25rem}.nt-h-\\[600px\\]{height:600px}.nt-h-fit{height:fit-content}.nt-h-full{height:100%}.nt-min-h-0{min-height:0}.nt-w-1\\/3{width:33.333333%}.nt-w-2\\/3{width:66.666667%}.nt-w-5{width:1.25rem}.nt-w-7{width:1.75rem}.nt-w-8{width:2rem}.nt-w-\\[260px\\]{width:260px}.nt-w-\\[400px\\]{width:400px}.nt-w-\\[60px\\]{width:60px}.nt-w-\\[calc\\(2ch\\+2rem\\)\\]{width:calc(2ch + 2rem)}.nt-w-fit{width:fit-content}.nt-w-full{width:100%}.nt-w-max{width:max-content}.nt-min-w-52{min-width:13rem}.nt-flex-1{flex:1 1 0%}.nt-shrink-0{flex-shrink:0}.nt-translate-x-1\\/2{--tw-translate-x:50%}.nt-transform,.nt-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nt-cursor-default{cursor:default}.nt-cursor-not-allowed{cursor:not-allowed}.nt-cursor-pointer{cursor:pointer}.nt-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.nt-flex-row{flex-direction:row}.nt-flex-col{flex-direction:column}.nt-flex-wrap{flex-wrap:wrap}.nt-flex-nowrap{flex-wrap:nowrap}.nt-items-start{align-items:flex-start}.nt-items-center{align-items:center}.nt-justify-end{justify-content:flex-end}.nt-justify-center{justify-content:center}.nt-justify-between{justify-content:space-between}.nt-gap-0\\.5{gap:.125rem}.nt-gap-1{gap:.25rem}.nt-gap-1\\.5{gap:.375rem}.nt-gap-2{gap:.5rem}.nt-gap-3{gap:.75rem}.nt-gap-4{gap:1rem}.nt-gap-6{gap:1.5rem}.nt-gap-8{gap:2rem}.nt-self-stretch{align-self:stretch}.nt-overflow-auto{overflow:auto}.nt-overflow-hidden{overflow:hidden}.nt-overflow-y-auto{overflow-y:auto}.nt-truncate{overflow:hidden;text-overflow:ellipsis}.nt-truncate,.nt-whitespace-nowrap{white-space:nowrap}.nt-whitespace-pre-wrap{white-space:pre-wrap}.nt-rounded{border-radius:var(--nv-radius-base)}.nt-rounded-full{border-radius:var(--nv-radius-full)}.nt-rounded-lg{border-radius:var(--nv-radius-lg)}.nt-rounded-md{border-radius:var(--nv-radius-md)}.nt-rounded-sm{border-radius:var(--nv-radius-sm)}.nt-rounded-xl{border-radius:var(--nv-radius-xl)}.nt-border{border-width:1px}.nt-border-b{border-bottom-width:1px}.nt-border-t{border-top-width:1px}.nt-border-background{border-color:var(--nv-color-background)}.nt-border-border{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.nt-border-neutral-alpha-100{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-alpha-200{border-color:var(--nv-color-neutral-alpha-200)}.nt-border-neutral-alpha-400{border-color:var(--nv-color-neutral-alpha-400)}.nt-border-neutral-alpha-50{border-color:var(--nv-color-neutral-alpha-50)}.nt-border-t-neutral-alpha-200{border-top-color:var(--nv-color-neutral-alpha-200)}.nt-bg-\\[oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.1\\)\\]{background-color:oklch(from var(--nv-color-stripes) l c h/.1)}.nt-bg-background{background-color:var(--nv-color-background)}.nt-bg-counter{background-color:var(--nv-color-counter)}.nt-bg-foreground{background-color:var(--nv-color-foreground)}.nt-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.nt-bg-neutral-alpha-100{background-color:var(--nv-color-neutral-alpha-100)}.nt-bg-neutral-alpha-25{background-color:var(--nv-color-neutral-alpha-25)}.nt-bg-neutral-alpha-300{background-color:var(--nv-color-neutral-alpha-300)}.nt-bg-neutral-alpha-50{background-color:var(--nv-color-neutral-alpha-50)}.nt-bg-primary{background-color:var(--nv-color-primary)}.nt-bg-primary-alpha-300{background-color:var(--nv-color-primary-alpha-300)}.nt-bg-primary-alpha-400{background-color:var(--nv-color-primary-alpha-400)}.nt-bg-secondary{background-color:var(--nv-color-secondary)}.nt-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.nt-bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.nt-bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.nt-from-foreground-alpha-50{--tw-gradient-from:var(--nv-color-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-primary-foreground-alpha-200{--tw-gradient-from:var(--nv-color-primary-foreground-alpha-200) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-20\\%{--tw-gradient-from-position:20%}.nt-to-background{--tw-gradient-to:var(--nv-color-background) var(--tw-gradient-to-position)}.nt-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.nt-object-cover{object-fit:cover}.nt-p-0{padding:0}.nt-p-0\\.5{padding:.125rem}.nt-p-1{padding:.25rem}.nt-p-2{padding:.5rem}.nt-p-2\\.5{padding:.625rem}.nt-p-3{padding:.75rem}.nt-p-4{padding:1rem}.nt-px-1{padding-left:.25rem;padding-right:.25rem}.nt-px-2{padding-left:.5rem;padding-right:.5rem}.nt-px-3{padding-left:.75rem;padding-right:.75rem}.nt-px-4{padding-left:1rem;padding-right:1rem}.nt-px-8{padding-left:2rem;padding-right:2rem}.nt-px-\\[6px\\]{padding-left:6px;padding-right:6px}.nt-py-1{padding-bottom:.25rem;padding-top:.25rem}.nt-py-2{padding-bottom:.5rem;padding-top:.5rem}.nt-py-3{padding-bottom:.75rem;padding-top:.75rem}.nt-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.nt-py-4{padding-bottom:1rem;padding-top:1rem}.nt-py-px{padding-bottom:1px;padding-top:1px}.nt-pb-2{padding-bottom:.5rem}.nt-pb-\\[0\\.625rem\\]{padding-bottom:.625rem}.nt-pr-0{padding-right:0}.nt-pt-2\\.5{padding-top:.625rem}.nt-text-center{text-align:center}.nt-text-start{text-align:start}.nt-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.nt-text-\\[0\\.8rem\\]{font-size:.8rem}.nt-text-\\[12px\\]{font-size:12px}.nt-text-base{font-size:var(--nv-font-size-base);line-height:var(--nv-line-height-base)}.nt-text-sm{font-size:var(--nv-font-size-sm);line-height:var(--nv-line-height-sm)}.nt-text-xl{font-size:var(--nv-font-size-xl);line-height:var(--nv-line-height-xl)}.nt-text-xs{font-size:var(--nv-font-size-xs);line-height:var(--nv-line-height-xs)}.nt-font-medium{font-weight:500}.nt-font-normal{font-weight:400}.nt-font-semibold{font-weight:600}.nt-leading-none{line-height:1}.nt-text-\\[\\#000000\\]{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.nt-text-background{color:var(--nv-color-background)}.nt-text-counter-foreground{color:var(--nv-color-counter-foreground)}.nt-text-foreground{color:var(--nv-color-foreground)}.nt-text-foreground-alpha-300{color:var(--nv-color-foreground-alpha-300)}.nt-text-foreground-alpha-400{color:var(--nv-color-foreground-alpha-400)}.nt-text-foreground-alpha-600{color:var(--nv-color-foreground-alpha-600)}.nt-text-foreground-alpha-700{color:var(--nv-color-foreground-alpha-700)}.nt-text-primary-foreground{color:var(--nv-color-primary-foreground)}.nt-text-secondary-foreground{color:var(--nv-color-secondary-foreground)}.nt-text-stripes{color:var(--nv-color-stripes)}.nt-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.nt-underline{text-decoration-line:underline}.nt-opacity-0{opacity:0}.nt-opacity-20{opacity:.2}.nt-opacity-50{opacity:.5}.nt-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-primary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-primary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-secondary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-secondary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\]{--tw-shadow:0px 1px 2px 0px #0a0d1408;--tw-shadow-colored:0px 1px 2px 0px var(--tw-shadow-color)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\],.nt-shadow-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-dropdown{--tw-shadow:0px 12px 16px -4px oklch(from var(--nv-color-shadow) l c h/0.08),0px 4px 6px -2px oklch(from var(--nv-color-shadow) l c h/0.03);--tw-shadow-colored:0px 12px 16px -4px var(--tw-shadow-color),0px 4px 6px -2px var(--tw-shadow-color)}.nt-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.nt-shadow-lg,.nt-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.nt-shadow-popover{--tw-shadow:0px 8px 26px 0px oklch(from var(--nv-color-shadow) l c h/0.08),0px 2px 6px 0px oklch(from var(--nv-color-shadow) l c h/0.12);--tw-shadow-colored:0px 8px 26px 0px var(--tw-shadow-color),0px 2px 6px 0px var(--tw-shadow-color)}.nt-shadow-popover,.nt-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.nt-shadow-tooltip{--tw-shadow:0 5px 20px 0 oklch(from var(--nv-color-shadow) l c h/0.08);--tw-shadow-colored:0 5px 20px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-outline-none{outline:2px solid #0000;outline-offset:2px}.nt-backdrop-blur-lg{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.nt-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-duration-100{transition-duration:.1s}.nt-duration-200{transition-duration:.2s}.nt-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.nt-animate-in{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.nt-fade-in{--tw-enter-opacity:0}.nt-slide-in-from-top-2{--tw-enter-translate-y:-0.5rem}.nt-duration-100{animation-duration:.1s}.nt-duration-200{animation-duration:.2s}.nt-ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.\\[interpolate-size\\:allow-keywords\\]{interpolate-size:allow-keywords}.\\[scrollbar-gutter\\:stable\\]{scrollbar-gutter:stable}.\\[word-break\\:break-word\\]{word-break:break-word}.before\\:nt-absolute:before{content:var(--tw-content);position:absolute}.before\\:nt-inset-0:before{content:var(--tw-content);inset:0}.before\\:-nt-right-\\[calc\\(0\\+var\\(--stripes-size\\)\\)\\]:before{content:var(--tw-content);right:calc(var(--stripes-size)*-1)}@keyframes nt-stripes{0%{content:var(--tw-content);transform:translateX(0)}to{content:var(--tw-content);transform:translateX(calc(var(--stripes-size)*-1))}}.before\\:nt-animate-stripes:before{animation:nt-stripes 1s linear infinite paused;content:var(--tw-content)}.before\\:nt-rounded-lg:before{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.before\\:nt-rounded-md:before{border-radius:var(--nv-radius-md);content:var(--tw-content)}.before\\:nt-rounded-xl:before{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.before\\:nt-border:before{border-width:1px;content:var(--tw-content)}.before\\:nt-border-primary-foreground-alpha-100:before{border-color:var(--nv-color-primary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-border-secondary-foreground-alpha-100:before{border-color:var(--nv-color-secondary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-bg-dev-stripes-gradient:before{background-image:repeating-linear-gradient(135deg,oklch(from var(--nv-color-stripes) l c h/.1) 25%,oklch(from var(--nv-color-stripes) l c h/.1) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 75%);content:var(--tw-content)}.before\\:nt-bg-\\[length\\:var\\(--stripes-size\\)_var\\(--stripes-size\\)\\]:before{background-size:var(--stripes-size) var(--stripes-size);content:var(--tw-content)}.before\\:nt-content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.before\\:\\[mask-image\\:linear-gradient\\(transparent_0\\%\\2c black\\)\\]:before{content:var(--tw-content);-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.after\\:nt-absolute:after{content:var(--tw-content);position:absolute}.after\\:nt-inset-0:after{content:var(--tw-content);inset:0}.after\\:-nt-top-12:after{content:var(--tw-content);top:-3rem}.after\\:nt-bottom-0:after{bottom:0;content:var(--tw-content)}.after\\:nt-left-0:after{content:var(--tw-content);left:0}.after\\:nt-left-0\\.5:after{content:var(--tw-content);left:.125rem}.after\\:nt-top-0\\.5:after{content:var(--tw-content);top:.125rem}.after\\:nt-size-3:after{content:var(--tw-content);height:.75rem;width:.75rem}.after\\:nt-h-\\[2px\\]:after{content:var(--tw-content);height:2px}.after\\:nt-w-full:after{content:var(--tw-content);width:100%}.after\\:nt-translate-x-1\\/2:after{--tw-translate-x:50%}.after\\:nt-translate-x-1\\/2:after,.after\\:nt-translate-x-full:after{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\\:nt-translate-x-full:after{--tw-translate-x:100%}.after\\:nt-rounded-full:after{border-radius:var(--nv-radius-full);content:var(--tw-content)}.after\\:nt-rounded-lg:after{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.after\\:nt-rounded-md:after{border-radius:var(--nv-radius-md);content:var(--tw-content)}.after\\:nt-rounded-xl:after{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.after\\:nt-border-b-2:after{border-bottom-width:2px;content:var(--tw-content)}.after\\:nt-border-background:after{border-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-border-b-primary:after{border-bottom-color:var(--nv-color-primary);content:var(--tw-content)}.after\\:nt-border-b-transparent:after{border-bottom-color:#0000;content:var(--tw-content)}.after\\:nt-bg-background:after{background-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.07\\)_55\\%\\2c transparent\\)\\2c linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-stripes) l c h/.07) 55%,#0000),linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-gradient-to-b:after{background-image:linear-gradient(to bottom,var(--tw-gradient-stops));content:var(--tw-content)}.after\\:nt-from-primary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-primary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-from-secondary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-secondary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-to-transparent:after{content:var(--tw-content);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.after\\:nt-opacity-0:after{content:var(--tw-content);opacity:0}.after\\:nt-transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-transition-opacity:after{content:var(--tw-content);transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-duration-200:after{transition-duration:.2s}.after\\:nt-content-\\[\\"\\"\\]:after,.after\\:nt-content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.after\\:nt-duration-200:after{animation-duration:.2s;content:var(--tw-content)}.hover\\:nt-bg-neutral-alpha-100:hover{background-color:var(--nv-color-neutral-alpha-100)}.hover\\:nt-bg-neutral-alpha-50:hover{background-color:var(--nv-color-neutral-alpha-50)}.hover\\:nt-bg-primary-600:hover{background-color:var(--nv-color-primary-600)}.hover\\:nt-bg-primary-alpha-25:hover{background-color:var(--nv-color-primary-alpha-25)}.hover\\:nt-bg-primary-alpha-400:hover{background-color:var(--nv-color-primary-alpha-400)}.hover\\:nt-text-foreground-alpha-800:hover{color:var(--nv-color-foreground-alpha-800)}.before\\:hover\\:\\[animation-play-state\\:running\\]:hover:before{animation-play-state:running;content:var(--tw-content)}.hover\\:after\\:nt-opacity-100:hover:after{content:var(--tw-content);opacity:1}.focus\\:nt-outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-rounded-lg:focus-visible{border-radius:var(--nv-radius-lg)}.focus-visible\\:nt-rounded-md:focus-visible{border-radius:var(--nv-radius-md)}.focus-visible\\:nt-rounded-xl:focus-visible{border-radius:var(--nv-radius-xl)}.focus-visible\\:nt-bg-neutral-alpha-50:focus-visible{background-color:var(--nv-color-neutral-alpha-50)}.focus-visible\\:nt-outline-none:focus-visible{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:nt-ring-primary:focus-visible{--tw-ring-color:var(--nv-color-primary)}.focus-visible\\:nt-ring-ring:focus-visible{--tw-ring-color:var(--nv-color-ring)}.focus-visible\\:nt-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:nt-pointer-events-none:disabled{pointer-events:none}.disabled\\:nt-opacity-20:disabled{opacity:.2}.disabled\\:nt-opacity-50:disabled{opacity:.5}.nt-group:focus-within .group-focus-within\\:nt-opacity-100,.nt-group:hover .group-hover\\:nt-opacity-100{opacity:1}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true]{--tw-rotate:180deg}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true],.data-\\[open\\=true\\]\\:nt-transform[data-open=true]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-400[data-disabled=true]{color:var(--nv-color-foreground-alpha-400)}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-600[data-disabled=true]{color:var(--nv-color-foreground-alpha-600)}.data-\\[state\\=active\\]\\:nt-text-foreground[data-state=active]{color:var(--nv-color-foreground)}.data-\\[state\\=active\\]\\:after\\:nt-border-b-2[data-state=active]:after{border-bottom-width:2px;content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-border-primary[data-state=active]:after{border-color:var(--nv-color-primary);content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-opacity-100[data-state=active]:after{content:var(--tw-content);opacity:1}.\\[\\&\\:not\\(\\:first-child\\)\\]\\:nt-border-t:not(:first-child){border-top-width:1px}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-4 .nv-notificationList{padding-bottom:1rem}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-8 .nv-notificationList{padding-bottom:2rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-4 .nv-preferencesContainer{padding-bottom:1rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-8 .nv-preferencesContainer{padding-bottom:2rem}.\\[\\&_svg\\]\\:nt-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:nt-shrink-0 svg{flex-shrink:0}`;
22
22
 
23
23
  // src/ui/config/appearanceKeys.ts
24
24
  var appearanceKeys = [
@@ -82,6 +82,7 @@ var appearanceKeys = [
82
82
  // General
83
83
  "root",
84
84
  "bellIcon",
85
+ "lockIcon",
85
86
  "bellContainer",
86
87
  "bellDot",
87
88
  "preferences__button",
@@ -699,14 +700,6 @@ var useStyle = () => {
699
700
  );
700
701
  return styleFuncMemo();
701
702
  };
702
- function useUncontrolledState(props) {
703
- const [uncontrolledValue, setUncontrolledValue] = solidJs.createSignal(!!props.fallbackValue);
704
- if (props.value !== void 0) {
705
- const accessor = () => !!props.value;
706
- return [accessor, setUncontrolledValue];
707
- }
708
- return [uncontrolledValue, setUncontrolledValue];
709
- }
710
703
 
711
704
  // src/ui/context/AppearanceContext.tsx
712
705
  var AppearanceContext = solidJs.createContext(void 0);
@@ -973,6 +966,8 @@ var InboxProvider = (props) => {
973
966
  const [maxSnoozeDurationHours, setMaxSnoozeDurationHours] = solidJs.createSignal(0);
974
967
  const isSnoozeEnabled = solidJs.createMemo(() => maxSnoozeDurationHours() > 0);
975
968
  const [preferencesFilter, setPreferencesFilter] = solidJs.createSignal(props.preferencesFilter);
969
+ const [isKeyless, setIsKeyless] = solidJs.createSignal(false);
970
+ const [applicationIdentifier, setApplicationIdentifier] = solidJs.createSignal(null);
976
971
  const [preferenceGroups, setPreferenceGroups] = solidJs.createSignal(props.preferenceGroups);
977
972
  const setNewStatus = (newStatus) => {
978
973
  setStatus(newStatus);
@@ -1034,12 +1029,20 @@ var InboxProvider = (props) => {
1034
1029
  eventHandler: ({
1035
1030
  data
1036
1031
  }) => {
1032
+ var _a2, _b2;
1037
1033
  if (!data) {
1038
1034
  return;
1039
1035
  }
1036
+ const identifier = window.localStorage.getItem("novu_keyless_application_identifier");
1040
1037
  setHideBranding(data.removeNovuBranding);
1041
1038
  setIsDevelopmentMode(data.isDevelopmentMode);
1042
1039
  setMaxSnoozeDurationHours(data.maxSnoozeDurationHours);
1040
+ if (data.isDevelopmentMode && !props.applicationIdentifier) {
1041
+ setIsKeyless(!data.applicationIdentifier || !!(identifier == null ? void 0 : identifier.startsWith("pk_keyless_")));
1042
+ setApplicationIdentifier((_a2 = data.applicationIdentifier) != null ? _a2 : null);
1043
+ } else {
1044
+ setApplicationIdentifier((_b2 = props.applicationIdentifier) != null ? _b2 : null);
1045
+ }
1043
1046
  }
1044
1047
  });
1045
1048
  return web.createComponent(InboxContext.Provider, {
@@ -1060,7 +1063,9 @@ var InboxProvider = (props) => {
1060
1063
  preferenceGroups,
1061
1064
  isDevelopmentMode,
1062
1065
  maxSnoozeDurationHours,
1063
- isSnoozeEnabled
1066
+ isSnoozeEnabled,
1067
+ isKeyless,
1068
+ applicationIdentifier
1064
1069
  },
1065
1070
  get children() {
1066
1071
  return props.children;
@@ -1076,7 +1081,7 @@ var useInboxContext = () => {
1076
1081
  };
1077
1082
  var NovuContext = solidJs.createContext(void 0);
1078
1083
  function NovuProvider(props) {
1079
- const novu = solidJs.createMemo(() => props.novu || new chunkOGEM74YA_js.Novu(props.options));
1084
+ const novu = solidJs.createMemo(() => props.novu || new chunk5P6SPWNU_js.Novu(props.options));
1080
1085
  return web.createComponent(NovuContext.Provider, {
1081
1086
  get value() {
1082
1087
  return novu();
@@ -1666,248 +1671,125 @@ var Bell2 = (props) => {
1666
1671
  function isBrowser() {
1667
1672
  return typeof window !== "undefined";
1668
1673
  }
1669
-
1670
- // src/ui/components/elements/Footer.tsx
1671
- var _tmpl$25 = /* @__PURE__ */ web.template(`<span class="nt-z-10 nt-text-xs nt-text-stripes">Development mode`);
1672
- var _tmpl$26 = /* @__PURE__ */ web.template(`<span class="nt-z-10 nt-text-xs">\u2022`);
1673
- 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`);
1674
- var _tmpl$42 = /* @__PURE__ */ web.template(`<div>`);
1675
- 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]`;
1676
- var commonAfter = 'after:nt-content-[""] after:nt-absolute after:nt-inset-0 after:-nt-top-12';
1677
- 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)]`;
1678
- var prodModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
1679
- var Footer = () => {
1680
- const {
1681
- hideBranding,
1682
- isDevelopmentMode
1683
- } = useInboxContext();
1684
- return web.createComponent(solidJs.Show, {
1685
- get when() {
1686
- return !hideBranding() || isDevelopmentMode();
1687
- },
1688
- get children() {
1689
- var _el$ = _tmpl$42();
1690
- _el$.style.setProperty("--stripes-size", "15px");
1691
- web.insert(_el$, web.createComponent(solidJs.Show, {
1692
- get when() {
1693
- return isDevelopmentMode();
1694
- },
1695
- get children() {
1696
- return _tmpl$25();
1697
- }
1698
- }), null);
1699
- web.insert(_el$, web.createComponent(solidJs.Show, {
1700
- get when() {
1701
- return web.memo(() => !!isDevelopmentMode())() && !hideBranding();
1702
- },
1703
- get children() {
1704
- return _tmpl$26();
1705
- }
1706
- }), null);
1707
- web.insert(_el$, web.createComponent(solidJs.Show, {
1708
- get when() {
1709
- return !hideBranding();
1710
- },
1711
- get children() {
1712
- var _el$4 = _tmpl$32(), _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling;
1713
- web.insert(_el$4, web.createComponent(Novu2, {
1714
- "class": "nt-size-2.5"
1715
- }), _el$6);
1716
- web.effect(() => web.setAttribute(_el$4, "href", `https://go.novu.co/powered?ref=${getCurrentDomain()}`));
1717
- return _el$4;
1718
- }
1719
- }), null);
1720
- 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`, {
1721
- [stripes]: isDevelopmentMode(),
1722
- [devModeGradient]: isDevelopmentMode(),
1723
- "nt-bg-[oklch(from_var(--nv-color-stripes)_l_c_h_/_0.1)]": isDevelopmentMode(),
1724
- [prodModeGradient]: !isDevelopmentMode()
1725
- })));
1726
- return _el$;
1727
- }
1728
- });
1729
- };
1730
- function getCurrentDomain() {
1731
- if (isBrowser()) {
1732
- return window.location.hostname;
1733
- }
1734
- return "";
1735
- }
1736
- var _tmpl$27 = /* @__PURE__ */ web.template(`<button>`);
1737
- 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`), {
1738
- variants: {
1739
- variant: {
1740
- default: "nt-bg-gradient-to-b nt-from-20% nt-from-primary-foreground-alpha-200 nt-to-transparent nt-bg-primary nt-text-primary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-primary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-primary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-primary-foreground-alpha-50 after:nt-to-transparent",
1741
- secondary: "nt-bg-secondary nt-text-secondary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-secondary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-secondary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-secondary-foreground-alpha-50 after:nt-to-transparent",
1742
- ghost: "hover:nt-bg-neutral-alpha-100 nt-text-foreground-alpha-600 hover:nt-text-foreground-alpha-800",
1743
- unstyled: ""
1744
- },
1745
- size: {
1746
- none: "",
1747
- iconSm: "nt-p-1 nt-rounded-md after:nt-rounded-md before:nt-rounded-md focus-visible:nt-rounded-md",
1748
- icon: "nt-p-2.5 nt-rounded-xl before:nt-rounded-xl after:nt-rounded-xl focus-visible:nt-rounded-xl",
1749
- default: "nt-px-2 nt-py-1 nt-rounded-lg focus-visible:nt-rounded-lg before:nt-rounded-lg after:nt-rounded-lg",
1750
- sm: "nt-px-1 nt-py-px nt-rounded-md nt-text-xs nt-px-1 before:nt-rounded-md focus-visible:nt-rounded-md after:nt-rounded-md",
1751
- lg: "nt-px-8 nt-py-2 nt-text-base before:nt-rounded-lg after:nt-rounded-lg focus-visible:nt-rounded-lg"
1752
- }
1753
- },
1754
- defaultVariants: {
1755
- variant: "default",
1756
- size: "default"
1757
- }
1758
- });
1759
- var Button = (props) => {
1760
- const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
1761
- const style = useStyle();
1762
- return (() => {
1763
- var _el$ = _tmpl$27();
1764
- web.spread(_el$, web.mergeProps({
1765
- get ["data-variant"]() {
1766
- return props.variant;
1767
- },
1768
- get ["data-size"]() {
1769
- return props.size;
1770
- },
1771
- get ["class"]() {
1772
- return style(local.appearanceKey || "button", cn(buttonVariants({
1773
- variant: props.variant,
1774
- size: props.size
1775
- }), local.class));
1776
- }
1777
- }, rest), false, false);
1778
- return _el$;
1779
- })();
1780
- };
1781
- var _tmpl$28 = /* @__PURE__ */ web.template(`<button>`);
1782
- var PopoverClose = (props) => {
1783
- const {
1784
- onClose
1785
- } = usePopover();
1786
- const style = useStyle();
1787
- const [local, rest] = solidJs.splitProps(props, ["onClick", "asChild", "appearanceKey", "class"]);
1788
- const handleClick = (e) => {
1789
- if (typeof local.onClick === "function") {
1790
- local.onClick(e);
1791
- }
1792
- onClose();
1793
- };
1794
- if (local.asChild) {
1795
- return web.createComponent(web.Dynamic, web.mergeProps({
1796
- get component() {
1797
- return local.asChild;
1798
- },
1799
- onClick: handleClick
1800
- }, rest));
1801
- }
1674
+ var _tmpl$25 = /* @__PURE__ */ web.template(`<svg width=6 height=6 viewBox="0 0 6 6"fill=none xmlns=http://www.w3.org/2000/svg><path d="M5.00175 1.70402L0.705765 6L0 5.29424L4.29548 0.998253H0.509608V0H6V5.49039H5.00175V1.70402Z"fill=currentColor>`);
1675
+ var ArrowUpRight = (props) => {
1802
1676
  return (() => {
1803
- var _el$ = _tmpl$28();
1804
- _el$.$$click = handleClick;
1805
- web.spread(_el$, web.mergeProps({
1806
- get ["class"]() {
1807
- return style(local.appearanceKey || "popoverClose", local.class);
1808
- }
1809
- }, rest), false, false);
1677
+ var _el$ = _tmpl$25();
1678
+ web.spread(_el$, props, true, true);
1810
1679
  return _el$;
1811
1680
  })();
1812
1681
  };
1813
- web.delegateEvents(["click"]);
1814
- var _tmpl$29 = /* @__PURE__ */ web.template(`<div>`);
1815
- var Portal = (props) => {
1816
- const appearance = useAppearance();
1817
- let currentElement;
1818
- return [(() => {
1819
- var _el$ = _tmpl$29();
1820
- web.use((el) => {
1821
- currentElement = el;
1822
- }, _el$);
1823
- _el$.style.setProperty("display", "none");
1824
- return _el$;
1825
- })(), web.createComponent(web.Portal, web.mergeProps({
1826
- get mount() {
1827
- return closestNovuRootParent(currentElement, appearance.id());
1828
- }
1829
- }, props))];
1830
- };
1831
- var closestNovuRootParent = (el, id) => {
1832
- let element = el;
1833
- while (element && element.id !== `novu-root-${id}`) {
1834
- element = element.parentElement;
1835
- }
1836
- if (element && element.id === `novu-root-${id}`) {
1837
- return element;
1838
- }
1839
- return void 0;
1840
- };
1841
- var PopoverContext = solidJs.createContext(void 0);
1842
- function PopoverRoot(props) {
1682
+ var TooltipContext = solidJs.createContext(void 0);
1683
+ function TooltipRoot(props) {
1843
1684
  var _a;
1844
- const [uncontrolledIsOpen, setUncontrolledIsOpen] = solidJs.createSignal((_a = props.open) != null ? _a : false);
1845
- const onOpenChange = () => {
1846
- var _a2;
1847
- return (_a2 = props.onOpenChange) != null ? _a2 : setUncontrolledIsOpen;
1848
- };
1849
- const open = () => {
1850
- var _a2;
1851
- return (_a2 = props.open) != null ? _a2 : uncontrolledIsOpen();
1852
- };
1853
1685
  const [reference, setReference] = solidJs.createSignal(null);
1854
1686
  const [floating, setFloating] = solidJs.createSignal(null);
1687
+ const {
1688
+ animations
1689
+ } = useAppearance();
1690
+ const defaultAnimationDuration = 0.2;
1691
+ const actualAnimationDuration = () => {
1692
+ var _a2;
1693
+ return (_a2 = props.animationDuration) != null ? _a2 : defaultAnimationDuration;
1694
+ };
1695
+ const effectiveAnimationDuration = solidJs.createMemo(() => animations() ? actualAnimationDuration() : 0);
1855
1696
  const position = solidFloatingUi.useFloating(reference, floating, {
1856
- strategy: "absolute",
1857
- placement: props.placement,
1697
+ placement: props.placement || "top",
1698
+ strategy: "fixed",
1858
1699
  whileElementsMounted: dom.autoUpdate,
1859
1700
  middleware: [dom.offset(10), dom.flip({
1860
- fallbackPlacements: props.fallbackPlacements
1701
+ fallbackPlacements: props.fallbackPlacements || ["bottom"]
1861
1702
  }), dom.shift()]
1862
1703
  });
1863
- const floatingStyles = solidJs.createMemo(() => {
1864
- var _a2, _b;
1865
- return {
1866
- position: position.strategy,
1867
- top: `${(_a2 = position.y) != null ? _a2 : 0}px`,
1868
- left: `${(_b = position.x) != null ? _b : 0}px`
1869
- };
1704
+ const [uncontrolledOpen, setUncontrolledOpen] = solidJs.createSignal((_a = props.open) != null ? _a : false);
1705
+ const openAccessor = solidJs.createMemo(() => {
1706
+ return props.open !== void 0 ? !!props.open : uncontrolledOpen();
1870
1707
  });
1871
- const onClose = () => {
1872
- onOpenChange()(false);
1873
- };
1874
- const onToggle = () => {
1875
- onOpenChange()((prev) => !prev);
1708
+ const setOpenSetter = (valueOrFn) => {
1709
+ if (props.open === void 0) {
1710
+ setUncontrolledOpen(valueOrFn);
1711
+ }
1876
1712
  };
1877
- return web.createComponent(PopoverContext.Provider, {
1713
+ const [shouldRenderTooltip, setShouldRenderTooltip] = solidJs.createSignal(openAccessor());
1714
+ let renderTimeoutId;
1715
+ solidJs.createEffect(() => {
1716
+ const isOpen = openAccessor();
1717
+ if (renderTimeoutId) {
1718
+ clearTimeout(renderTimeoutId);
1719
+ renderTimeoutId = void 0;
1720
+ }
1721
+ if (isOpen) {
1722
+ setShouldRenderTooltip(true);
1723
+ } else if (effectiveAnimationDuration() > 0) {
1724
+ renderTimeoutId = window.setTimeout(() => {
1725
+ setShouldRenderTooltip(false);
1726
+ }, effectiveAnimationDuration() * 1e3);
1727
+ } else {
1728
+ setShouldRenderTooltip(false);
1729
+ }
1730
+ });
1731
+ solidJs.createEffect(() => {
1732
+ if (openAccessor()) {
1733
+ setShouldRenderTooltip(true);
1734
+ }
1735
+ });
1736
+ return web.createComponent(TooltipContext.Provider, {
1878
1737
  value: {
1879
- onToggle,
1880
- onClose,
1881
1738
  reference,
1882
1739
  setReference,
1883
1740
  floating,
1884
1741
  setFloating,
1885
- open,
1886
- floatingStyles
1742
+ open: openAccessor,
1743
+ shouldRender: shouldRenderTooltip,
1744
+ setOpen: setOpenSetter,
1745
+ floatingStyles: () => {
1746
+ var _a2, _b;
1747
+ return {
1748
+ position: position.strategy,
1749
+ top: `${(_a2 = position.y) != null ? _a2 : 0}px`,
1750
+ left: `${(_b = position.x) != null ? _b : 0}px`
1751
+ };
1752
+ },
1753
+ effectiveAnimationDuration
1887
1754
  },
1888
1755
  get children() {
1889
1756
  return props.children;
1890
1757
  }
1891
1758
  });
1892
1759
  }
1893
- function usePopover() {
1894
- const context = solidJs.useContext(PopoverContext);
1760
+ function useTooltip() {
1761
+ const context = solidJs.useContext(TooltipContext);
1895
1762
  if (!context) {
1896
- throw new Error("usePopover must be used within Popover.Root component");
1763
+ throw new Error("useTooltip must be used within Tooltip.Root component");
1897
1764
  }
1898
1765
  return context;
1899
1766
  }
1767
+ var Motion = new Proxy(solidMotionone.Motion, {
1768
+ get: (_, tag) => (props) => {
1769
+ const {
1770
+ animations
1771
+ } = useAppearance();
1772
+ return web.createComponent(solidMotionone.Motion, web.mergeProps(props, {
1773
+ tag,
1774
+ get transition() {
1775
+ return animations() ? props.transition : {
1776
+ duration: 0
1777
+ };
1778
+ }
1779
+ }));
1780
+ }
1781
+ });
1900
1782
 
1901
- // src/ui/components/primitives/Popover/PopoverContent.tsx
1902
- var _tmpl$30 = /* @__PURE__ */ web.template(`<div>`);
1903
- 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-cursor-default nt-flex nt-flex-col nt-overflow-hidden nt-border nt-border-border nt-z-10");
1904
- var PopoverContentBody = (props) => {
1783
+ // src/ui/components/primitives/Tooltip/TooltipContent.tsx
1784
+ var tooltipContentVariants = () => "nt-bg-foreground nt-p-2 nt-shadow-tooltip nt-rounded-lg nt-text-background nt-text-xs";
1785
+ var TooltipContentBody = (props) => {
1905
1786
  const {
1906
1787
  open,
1907
1788
  setFloating,
1908
1789
  floating,
1909
- floatingStyles
1910
- } = usePopover();
1790
+ floatingStyles,
1791
+ effectiveAnimationDuration
1792
+ } = useTooltip();
1911
1793
  const {
1912
1794
  setActive,
1913
1795
  removeActive
@@ -1916,80 +1798,72 @@ var PopoverContentBody = (props) => {
1916
1798
  const style = useStyle();
1917
1799
  solidJs.onMount(() => {
1918
1800
  const floatingEl = floating();
1919
- setActive(floatingEl);
1801
+ if (floatingEl) setActive(floatingEl);
1920
1802
  solidJs.onCleanup(() => {
1921
- removeActive(floatingEl);
1803
+ if (floatingEl) removeActive(floatingEl);
1922
1804
  });
1923
1805
  });
1924
- return (() => {
1925
- var _el$ = _tmpl$30();
1926
- web.use(setFloating, _el$);
1927
- web.spread(_el$, web.mergeProps({
1928
- get ["class"]() {
1929
- return style(local.appearanceKey || "popoverContent", cn(popoverContentVariants(), local.class));
1930
- },
1931
- get style() {
1932
- return floatingStyles();
1933
- },
1934
- get ["data-open"]() {
1935
- return open();
1936
- }
1937
- }, rest), false, false);
1938
- return _el$;
1939
- })();
1806
+ return web.createComponent(Motion.div, web.mergeProps({
1807
+ initial: {
1808
+ opacity: 0,
1809
+ scale: 0.95
1810
+ },
1811
+ get animate() {
1812
+ return open() ? {
1813
+ opacity: 1,
1814
+ scale: 1
1815
+ } : {
1816
+ opacity: 0,
1817
+ scale: 0.95
1818
+ };
1819
+ },
1820
+ get transition() {
1821
+ return {
1822
+ duration: effectiveAnimationDuration(),
1823
+ easing: "ease-in-out"
1824
+ };
1825
+ },
1826
+ ref: setFloating,
1827
+ get ["class"]() {
1828
+ return web.memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tooltipContent", tooltipContentVariants());
1829
+ },
1830
+ get style() {
1831
+ return chunk7B52C2XE_js.__spreadProps(chunk7B52C2XE_js.__spreadValues({}, floatingStyles()), {
1832
+ "z-index": 99999
1833
+ });
1834
+ }
1835
+ }, rest, {
1836
+ get children() {
1837
+ return props.children;
1838
+ }
1839
+ }));
1940
1840
  };
1941
- var PopoverContent = (props) => {
1942
- const {
1943
- open,
1944
- onClose,
1945
- reference,
1946
- floating
1947
- } = usePopover();
1841
+ var TooltipContent = (props) => {
1948
1842
  const {
1949
- active
1950
- } = useFocusManager();
1843
+ shouldRender
1844
+ } = useTooltip();
1951
1845
  const {
1952
1846
  container
1953
1847
  } = useAppearance();
1954
- const handleClickOutside = (e) => {
1955
- var _a, _b;
1956
- if ((_a = reference()) == null ? void 0 : _a.contains(e.target)) {
1957
- return;
1958
- }
1959
- const containerElement = container();
1960
- if (active() !== floating() || ((_b = floating()) == null ? void 0 : _b.contains(e.target)) || containerElement && e.target.shadowRoot === containerElement) {
1961
- return;
1962
- }
1963
- onClose();
1964
- };
1965
- const handleEscapeKey = (e) => {
1966
- if (active() !== floating()) {
1967
- return;
1968
- }
1969
- if (e instanceof KeyboardEvent && e.key === "Escape") {
1970
- onClose();
1971
- }
1972
- };
1973
- solidJs.onMount(() => {
1974
- var _a;
1975
- document.body.addEventListener("click", handleClickOutside);
1976
- (_a = container()) == null ? void 0 : _a.addEventListener("click", handleClickOutside);
1977
- document.body.addEventListener("keydown", handleEscapeKey);
1978
- });
1979
- solidJs.onCleanup(() => {
1848
+ const portalContainer = () => {
1980
1849
  var _a;
1981
- document.body.removeEventListener("click", handleClickOutside);
1982
- (_a = container()) == null ? void 0 : _a.removeEventListener("click", handleClickOutside);
1983
- document.body.removeEventListener("keydown", handleEscapeKey);
1984
- });
1850
+ return (_a = container()) != null ? _a : document.body;
1851
+ };
1985
1852
  return web.createComponent(solidJs.Show, {
1986
1853
  get when() {
1987
- return open();
1854
+ return shouldRender();
1988
1855
  },
1989
1856
  get children() {
1990
- return web.createComponent(Portal, {
1857
+ return web.createComponent(web.Portal, {
1858
+ get mount() {
1859
+ return portalContainer();
1860
+ },
1991
1861
  get children() {
1992
- return web.createComponent(PopoverContentBody, props);
1862
+ return web.createComponent(Root, {
1863
+ get children() {
1864
+ return web.createComponent(TooltipContentBody, props);
1865
+ }
1866
+ });
1993
1867
  }
1994
1868
  });
1995
1869
  }
@@ -2006,22 +1880,28 @@ function mergeRefs(...refs) {
2006
1880
  return chain(refs);
2007
1881
  }
2008
1882
 
2009
- // src/ui/components/primitives/Popover/PopoverTrigger.tsx
2010
- var _tmpl$31 = /* @__PURE__ */ web.template(`<button>`);
2011
- var PopoverTrigger = (props) => {
1883
+ // src/ui/components/primitives/Tooltip/TooltipTrigger.tsx
1884
+ var _tmpl$26 = /* @__PURE__ */ web.template(`<button>`);
1885
+ var TooltipTrigger = (props) => {
2012
1886
  const {
2013
1887
  setReference,
2014
- onToggle
2015
- } = usePopover();
1888
+ setOpen
1889
+ } = useTooltip();
2016
1890
  const style = useStyle();
2017
- const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "asChild", "onClick", "ref"]);
2018
- const handleClick = (e) => {
2019
- if (typeof local.onClick === "function") {
2020
- local.onClick(e);
1891
+ const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "asChild", "onClick", "onMouseEnter", "onMouseLeave", "ref"]);
1892
+ const handleMouseEnter = (e) => {
1893
+ if (typeof local.onMouseEnter === "function") {
1894
+ local.onMouseEnter(e);
2021
1895
  }
2022
- onToggle();
1896
+ setOpen(true);
2023
1897
  };
2024
1898
  const ref = solidJs.createMemo(() => local.ref ? mergeRefs(setReference, local.ref) : setReference);
1899
+ const handleMouseLeave = (e) => {
1900
+ if (typeof local.onMouseLeave === "function") {
1901
+ local.onMouseLeave(e);
1902
+ }
1903
+ setOpen(false);
1904
+ };
2025
1905
  if (local.asChild) {
2026
1906
  return web.createComponent(web.Dynamic, web.mergeProps({
2027
1907
  get component() {
@@ -2031,244 +1911,329 @@ var PopoverTrigger = (props) => {
2031
1911
  var _ref$ = ref();
2032
1912
  typeof _ref$ === "function" && _ref$(r$);
2033
1913
  },
2034
- onClick: handleClick
1914
+ onMouseEnter: handleMouseEnter,
1915
+ onMouseLeave: handleMouseLeave
2035
1916
  }, rest));
2036
1917
  }
2037
1918
  return (() => {
2038
- var _el$ = _tmpl$31();
2039
- _el$.$$click = handleClick;
1919
+ var _el$ = _tmpl$26();
1920
+ _el$.addEventListener("mouseleave", () => {
1921
+ setOpen(false);
1922
+ });
1923
+ _el$.addEventListener("mouseenter", () => {
1924
+ setOpen(true);
1925
+ });
2040
1926
  var _ref$2 = ref();
2041
1927
  typeof _ref$2 === "function" && web.use(_ref$2, _el$);
2042
1928
  web.spread(_el$, web.mergeProps({
2043
1929
  get ["class"]() {
2044
- return style(local.appearanceKey || "dropdownTrigger");
1930
+ return style(local.appearanceKey || "tooltipTrigger");
2045
1931
  }
2046
1932
  }, rest), false, true);
2047
1933
  web.insert(_el$, () => props.children);
2048
1934
  return _el$;
2049
1935
  })();
2050
1936
  };
2051
- web.delegateEvents(["click"]);
2052
1937
 
2053
- // src/ui/components/primitives/Popover/index.ts
2054
- var Popover = {
2055
- Root: PopoverRoot,
2056
- /**
2057
- * Popover.Trigger renders a `button` and has no default styling.
2058
- */
2059
- Trigger: PopoverTrigger,
1938
+ // src/ui/components/primitives/Tooltip/index.ts
1939
+ var Tooltip = {
1940
+ Root: TooltipRoot,
2060
1941
  /**
2061
- * Popover.Content renders a `div` and has popover specific styling.
1942
+ * Tooltip.Trigger renders a `button` and has no default styling.
2062
1943
  */
2063
- Content: PopoverContent,
1944
+ Trigger: TooltipTrigger,
2064
1945
  /**
2065
- * Popover.Close renders a `button` and has no styling.
2066
- * Closes the popover when clicked.
2067
- * `onClick` function is propagated.
1946
+ * Tooltip.Content renders a `div` and has popover specific styling.
2068
1947
  */
2069
- Close: PopoverClose
1948
+ Content: TooltipContent
2070
1949
  };
2071
- var dropdownContentVariants = () => "nt-p-1 nt-text-sm nt-min-w-52 nt-shadow-dropdown nt-h-fit nt-min-w-52 nt-w-max";
2072
- var DropdownContent = (props) => {
2073
- const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "class"]);
2074
- return web.createComponent(Popover.Content, web.mergeProps({
2075
- get appearanceKey() {
2076
- return local.appearanceKey || "dropdownContent";
1950
+
1951
+ // src/ui/components/primitives/CopyToClipboard.tsx
1952
+ var _tmpl$27 = /* @__PURE__ */ web.template(`<button type=button>`);
1953
+ function CopyToClipboard(props) {
1954
+ const [isCopied, setIsCopied] = solidJs.createSignal(false);
1955
+ const style = useStyle();
1956
+ let timeoutId;
1957
+ const defaultTooltipText = "Copied!";
1958
+ const defaultTooltipDuration = 2e3;
1959
+ function handleCopy() {
1960
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1961
+ var _a;
1962
+ if (timeoutId) {
1963
+ clearTimeout(timeoutId);
1964
+ }
1965
+ try {
1966
+ yield navigator.clipboard.writeText(props.textToCopy);
1967
+ setIsCopied(true);
1968
+ timeoutId = window.setTimeout(() => {
1969
+ setIsCopied(false);
1970
+ timeoutId = void 0;
1971
+ }, (_a = props.tooltipDuration) != null ? _a : defaultTooltipDuration);
1972
+ } catch (err) {
1973
+ console.error("Failed to copy text: ", err);
1974
+ }
1975
+ });
1976
+ }
1977
+ return web.createComponent(Tooltip.Root, {
1978
+ get open() {
1979
+ return isCopied();
2077
1980
  },
2078
- get ["class"]() {
2079
- return cn(dropdownContentVariants(), local.class);
1981
+ placement: "top",
1982
+ animationDuration: 0.15,
1983
+ get children() {
1984
+ return [web.createComponent(Tooltip.Trigger, {
1985
+ asChild: (triggerProps) => (() => {
1986
+ var _el$ = _tmpl$27();
1987
+ web.spread(_el$, web.mergeProps(triggerProps, {
1988
+ "onClick": handleCopy,
1989
+ get ["class"]() {
1990
+ return style("button", "nt-cursor-pointer");
1991
+ }
1992
+ }), false, true);
1993
+ web.insert(_el$, () => props.children);
1994
+ return _el$;
1995
+ })()
1996
+ }), web.createComponent(Tooltip.Content, {
1997
+ get children() {
1998
+ var _a;
1999
+ return (_a = props.tooltipText) != null ? _a : defaultTooltipText;
2000
+ }
2001
+ })];
2080
2002
  }
2081
- }, rest));
2082
- };
2083
- var dropdownItemVariants = () => "focus:nt-outline-none nt-flex nt-items-center nt-gap-1.5 nt-text-sm nt-rounded-lg nt-items-center hover:nt-bg-neutral-alpha-50 focus-visible:nt-bg-neutral-alpha-50 nt-py-1 nt-px-2";
2084
- var DropdownItem = (props) => {
2085
- const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "onClick", "class", "asChild"]);
2003
+ });
2004
+ }
2005
+
2006
+ // src/ui/components/elements/Footer.tsx
2007
+ var _tmpl$28 = /* @__PURE__ */ web.template(`<span class="nt-z-10 nt-text-xs nt-text-stripes">`);
2008
+ var _tmpl$29 = /* @__PURE__ */ web.template(`<span class="nt-z-10 nt-text-xs">\u2022`);
2009
+ 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`);
2010
+ var _tmpl$42 = /* @__PURE__ */ web.template(`<span class=nt-underline>Copy cURL`);
2011
+ var _tmpl$52 = /* @__PURE__ */ web.template(`<div class="nt-z-10 nt-flex nt-items-center nt-gap-1 nt-text-xs nt-text-secondary-foreground"><a href=https://go.novu.co/keyless class="nt-underline nt-flex nt-items-center nt-gap-0.5"target=_blank rel="noopener noreferrer">Get API key</a><span>\u2022</span><span>\u2022</span><button type=button class=nt-underline>Send notification`);
2012
+ var _tmpl$62 = /* @__PURE__ */ web.template(`<div><div class="nt-flex nt-items-center nt-gap-1">`);
2013
+ var _tmpl$72 = /* @__PURE__ */ web.template(`<a href="https://go.novu.co/keyless?utm_campaign=keyless-mode"target=_blank rel="noopener noreferrer">Keyless mode`);
2014
+ var _tmpl$82 = /* @__PURE__ */ web.template(`<br>`);
2015
+ 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]`;
2016
+ var commonAfter = 'after:nt-content-[""] after:nt-absolute after:nt-inset-0 after:-nt-top-12';
2017
+ 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)]`;
2018
+ var prodModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
2019
+ var Footer = () => {
2086
2020
  const {
2087
- onClose
2088
- } = usePopover();
2089
- const handleClick = (e) => {
2090
- if (typeof local.onClick === "function") {
2091
- local.onClick(e);
2092
- }
2093
- onClose();
2094
- };
2095
- if (local.asChild) {
2096
- return web.createComponent(web.Dynamic, web.mergeProps({
2097
- get component() {
2098
- return local.asChild;
2099
- },
2100
- onClick: handleClick
2101
- }, rest));
2021
+ hideBranding,
2022
+ isDevelopmentMode,
2023
+ isKeyless
2024
+ } = useInboxContext();
2025
+ const novu = useNovu();
2026
+ function handleTriggerHelloWorld() {
2027
+ return chunk7B52C2XE_js.__async(this, null, function* () {
2028
+ try {
2029
+ yield novu.notifications.triggerHelloWorldEvent();
2030
+ } catch (error) {
2031
+ console.error("Failed to send Hello World from UI via novu.notifications:", error);
2032
+ }
2033
+ });
2102
2034
  }
2103
- return web.createComponent(Popover.Close, web.mergeProps({
2104
- get appearanceKey() {
2105
- return local.appearanceKey || "dropdownItem";
2106
- },
2107
- get ["class"]() {
2108
- return cn(dropdownItemVariants(), local.class);
2035
+ return web.createComponent(solidJs.Show, {
2036
+ get when() {
2037
+ return !hideBranding() || isDevelopmentMode();
2109
2038
  },
2110
- onClick: (e) => {
2111
- if (typeof local.onClick === "function") {
2112
- local.onClick(e);
2113
- }
2114
- onClose();
2039
+ get children() {
2040
+ var _el$ = _tmpl$62(), _el$2 = _el$.firstChild;
2041
+ _el$.style.setProperty("--stripes-size", "15px");
2042
+ web.insert(_el$2, web.createComponent(solidJs.Show, {
2043
+ get when() {
2044
+ return isDevelopmentMode();
2045
+ },
2046
+ get children() {
2047
+ var _el$3 = _tmpl$28();
2048
+ web.insert(_el$3, (() => {
2049
+ var _c$ = web.memo(() => !!isKeyless());
2050
+ return () => _c$() ? web.createComponent(Tooltip.Root, {
2051
+ get children() {
2052
+ return [web.createComponent(Tooltip.Trigger, {
2053
+ "class": "",
2054
+ get children() {
2055
+ return _tmpl$72();
2056
+ }
2057
+ }), web.createComponent(Tooltip.Content, {
2058
+ get children() {
2059
+ return ["Temporary <Inbox />. All data will expire in 24 hours.", _tmpl$82(), "Connect API key to persist."];
2060
+ }
2061
+ })];
2062
+ }
2063
+ }) : "Development mode";
2064
+ })());
2065
+ return _el$3;
2066
+ }
2067
+ }), null);
2068
+ web.insert(_el$2, web.createComponent(solidJs.Show, {
2069
+ get when() {
2070
+ return web.memo(() => !!isDevelopmentMode())() && !hideBranding();
2071
+ },
2072
+ get children() {
2073
+ return _tmpl$29();
2074
+ }
2075
+ }), null);
2076
+ web.insert(_el$2, web.createComponent(solidJs.Show, {
2077
+ get when() {
2078
+ return !hideBranding();
2079
+ },
2080
+ get children() {
2081
+ var _el$5 = _tmpl$32(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
2082
+ web.insert(_el$5, web.createComponent(Novu2, {
2083
+ "class": "nt-size-2.5"
2084
+ }), _el$7);
2085
+ web.effect(() => web.setAttribute(_el$5, "href", `https://go.novu.co/powered?ref=${getCurrentDomain()}`));
2086
+ return _el$5;
2087
+ }
2088
+ }), null);
2089
+ web.insert(_el$, web.createComponent(solidJs.Show, {
2090
+ get when() {
2091
+ return isKeyless();
2092
+ },
2093
+ get children() {
2094
+ var _el$8 = _tmpl$52(), _el$9 = _el$8.firstChild; _el$9.firstChild; var _el$11 = _el$9.nextSibling, _el$13 = _el$11.nextSibling, _el$14 = _el$13.nextSibling;
2095
+ web.insert(_el$9, web.createComponent(ArrowUpRight, {
2096
+ "class": "nt-ml-1"
2097
+ }), null);
2098
+ web.insert(_el$8, web.createComponent(CopyToClipboard, {
2099
+ get textToCopy() {
2100
+ return getCurlCommand();
2101
+ },
2102
+ get children() {
2103
+ return _tmpl$42();
2104
+ }
2105
+ }), _el$13);
2106
+ _el$14.$$click = (e) => {
2107
+ e.preventDefault();
2108
+ handleTriggerHelloWorld();
2109
+ };
2110
+ return _el$8;
2111
+ }
2112
+ }), null);
2113
+ web.effect(() => web.className(_el$, cn(`nt-relative nt-flex nt-shrink-0 nt-flex-col nt-justify-center nt-items-center nt-gap-1 nt-mt-auto nt-py-3 nt-text-foreground-alpha-400`, {
2114
+ [stripes]: isDevelopmentMode(),
2115
+ [devModeGradient]: isDevelopmentMode(),
2116
+ "nt-bg-[oklch(from_var(--nv-color-stripes)_l_c_h_/_0.1)]": isDevelopmentMode(),
2117
+ [prodModeGradient]: !isDevelopmentMode()
2118
+ })));
2119
+ return _el$;
2115
2120
  }
2116
- }, rest));
2121
+ });
2117
2122
  };
2118
- var DropdownRoot = (props) => {
2119
- return web.createComponent(Popover.Root, web.mergeProps({
2120
- placement: "bottom",
2121
- fallbackPlacements: ["top"]
2122
- }, props));
2123
- };
2124
- var dropdownTriggerButtonVariants = () => `nt-relative nt-transition nt-outline-none focus-visible:nt-outline-nonefocus-visible:nt-ring-2 focus-visible:nt-ring-primary focus-visible:nt-ring-offset-2`;
2125
- var DropdownTrigger = (props) => {
2126
- const style = useStyle();
2127
- const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "class"]);
2128
- return web.createComponent(Popover.Trigger, web.mergeProps({
2129
- get ["class"]() {
2130
- return style(local.appearanceKey || "dropdownTrigger", cn(dropdownTriggerButtonVariants(), local.class));
2123
+ function getCurrentDomain() {
2124
+ if (isBrowser()) {
2125
+ return window.location.hostname;
2126
+ }
2127
+ return "";
2128
+ }
2129
+ function getCurlCommand() {
2130
+ const identifier = window.localStorage.getItem("novu_keyless_application_identifier");
2131
+ if (!identifier) {
2132
+ console.error("Novu application identifier not found for cURL command.");
2133
+ return "";
2134
+ }
2135
+ const DEFAULT_BACKEND_URL = typeof window !== "undefined" && window.NOVU_LOCAL_BACKEND_URL || "https://api.novu.co";
2136
+ return `curl -X POST ${DEFAULT_BACKEND_URL}/${chunk5P6SPWNU_js.DEFAULT_API_VERSION}/events/trigger -H 'Authorization: Keyless ${identifier}' -H 'Content-Type: application/json' -d '{
2137
+ "name": "hello-world",
2138
+ "to": {
2139
+ "subscriberId": "keyless-subscriber-id"
2140
+ },
2141
+ "payload": {
2142
+ "body": "New From Keyless Environment",
2143
+ "subject": "Hello World!"
2131
2144
  }
2132
- }, rest));
2133
- };
2134
-
2135
- // src/ui/components/primitives/Dropdown/index.ts
2136
- var Dropdown = {
2137
- Root: DropdownRoot,
2138
- /**
2139
- * Dropdown.Trigger renders a `button` and has no default styling.
2140
- */
2141
- Trigger: DropdownTrigger,
2142
- /**
2143
- * Dropdown.Content renders a `Popover.Content` by default.
2144
- */
2145
- Content: DropdownContent,
2146
- /**
2147
- * Dropdown.Close renders a `Popover.Close` by default.
2148
- */
2149
- Close: Popover.Close,
2150
- /**
2151
- * Dropdown.Item renders a `Popover.Close` with dropdown specific styling.
2152
- * Closes the popover when clicked.
2153
- * `onClick` function is propagated.
2154
- */
2155
- Item: DropdownItem
2156
- };
2157
- var Motion = new Proxy(solidMotionone.Motion, {
2158
- get: (_, tag) => (props) => {
2159
- const {
2160
- animations
2161
- } = useAppearance();
2162
- return web.createComponent(solidMotionone.Motion, web.mergeProps(props, {
2163
- tag,
2164
- get transition() {
2165
- return animations() ? props.transition : {
2166
- duration: 0
2167
- };
2168
- }
2169
- }));
2145
+ }'`;
2146
+ }
2147
+ web.delegateEvents(["click"]);
2148
+ var _tmpl$30 = /* @__PURE__ */ web.template(`<button>`);
2149
+ 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`), {
2150
+ variants: {
2151
+ variant: {
2152
+ default: "nt-bg-gradient-to-b nt-from-20% nt-from-primary-foreground-alpha-200 nt-to-transparent nt-bg-primary nt-text-primary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-primary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-primary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-primary-foreground-alpha-50 after:nt-to-transparent",
2153
+ secondary: "nt-bg-secondary nt-text-secondary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-secondary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-secondary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-secondary-foreground-alpha-50 after:nt-to-transparent",
2154
+ ghost: "hover:nt-bg-neutral-alpha-100 nt-text-foreground-alpha-600 hover:nt-text-foreground-alpha-800",
2155
+ unstyled: ""
2156
+ },
2157
+ size: {
2158
+ none: "",
2159
+ iconSm: "nt-p-1 nt-rounded-md after:nt-rounded-md before:nt-rounded-md focus-visible:nt-rounded-md",
2160
+ icon: "nt-p-2.5 nt-rounded-xl before:nt-rounded-xl after:nt-rounded-xl focus-visible:nt-rounded-xl",
2161
+ default: "nt-px-2 nt-py-1 nt-rounded-lg focus-visible:nt-rounded-lg before:nt-rounded-lg after:nt-rounded-lg",
2162
+ sm: "nt-px-1 nt-py-px nt-rounded-md nt-text-xs nt-px-1 before:nt-rounded-md focus-visible:nt-rounded-md after:nt-rounded-md",
2163
+ lg: "nt-px-8 nt-py-2 nt-text-base before:nt-rounded-lg after:nt-rounded-lg focus-visible:nt-rounded-lg"
2164
+ }
2165
+ },
2166
+ defaultVariants: {
2167
+ variant: "default",
2168
+ size: "default"
2170
2169
  }
2171
2170
  });
2172
- var useKeyboardNavigation = ({
2173
- activeTab,
2174
- setActiveTab,
2175
- tabsContainer
2176
- }) => {
2177
- const { container } = useAppearance();
2178
- const [keyboardNavigation, setKeyboardNavigation] = solidJs.createSignal(false);
2179
- const getRoot = () => {
2180
- const containerElement = container();
2181
- return containerElement instanceof ShadowRoot ? containerElement : document;
2182
- };
2183
- solidJs.createEffect(() => {
2184
- const root = getRoot();
2185
- const handleTabKey = (event) => {
2186
- var _a;
2187
- if (!(event instanceof KeyboardEvent) || event.key !== "Tab") {
2188
- return;
2189
- }
2190
- const tabs = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]');
2191
- if (!tabs || !root.activeElement) {
2192
- return;
2193
- }
2194
- setKeyboardNavigation(Array.from(tabs).includes(root.activeElement));
2195
- };
2196
- root.addEventListener("keyup", handleTabKey);
2197
- return solidJs.onCleanup(() => root.removeEventListener("keyup", handleTabKey));
2198
- });
2199
- solidJs.createEffect(() => {
2200
- const root = getRoot();
2201
- const handleArrowKeys = (event) => {
2202
- var _a, _b;
2203
- if (!keyboardNavigation() || !(event instanceof KeyboardEvent) || event.key !== "ArrowLeft" && event.key !== "ArrowRight") {
2204
- return;
2205
- }
2206
- const tabElements = Array.from((_b = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]')) != null ? _b : []);
2207
- const tabIds = tabElements.map((tab) => tab.id);
2208
- const currentIndex = tabIds.indexOf(activeTab());
2209
- const { length } = tabIds;
2210
- let activeIndex = currentIndex;
2211
- let newTab = activeTab();
2212
- if (event.key === "ArrowLeft") {
2213
- activeIndex = currentIndex === 0 ? length - 1 : currentIndex - 1;
2214
- newTab = tabIds[activeIndex];
2215
- } else if (event.key === "ArrowRight") {
2216
- activeIndex = currentIndex === length - 1 ? 0 : currentIndex + 1;
2217
- newTab = tabIds[activeIndex];
2171
+ var Button = (props) => {
2172
+ const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
2173
+ const style = useStyle();
2174
+ return (() => {
2175
+ var _el$ = _tmpl$30();
2176
+ web.spread(_el$, web.mergeProps({
2177
+ get ["data-variant"]() {
2178
+ return props.variant;
2179
+ },
2180
+ get ["data-size"]() {
2181
+ return props.size;
2182
+ },
2183
+ get ["class"]() {
2184
+ return style(local.appearanceKey || "button", cn(buttonVariants({
2185
+ variant: props.variant,
2186
+ size: props.size
2187
+ }), local.class));
2218
2188
  }
2219
- tabElements[activeIndex].focus();
2220
- setActiveTab(newTab);
2221
- };
2222
- root.addEventListener("keydown", handleArrowKeys);
2223
- return solidJs.onCleanup(() => root.removeEventListener("keydown", handleArrowKeys));
2224
- });
2225
- };
2226
-
2227
- // src/ui/components/primitives/Tabs/TabsRoot.tsx
2228
- var _tmpl$33 = /* @__PURE__ */ web.template(`<div>`);
2229
- var TabsContext = solidJs.createContext(void 0);
2230
- var useTabsContext = () => {
2231
- const context = solidJs.useContext(TabsContext);
2232
- if (!context) {
2233
- throw new Error("useTabsContext must be used within an TabsContext.Provider");
2234
- }
2235
- return context;
2189
+ }, rest), false, false);
2190
+ return _el$;
2191
+ })();
2236
2192
  };
2237
- var tabsRootVariants = () => "nt-flex nt-flex-col";
2238
- var TabsRoot = (props) => {
2239
- var _a;
2240
- const [local, rest] = solidJs.splitProps(props, ["defaultValue", "value", "class", "appearanceKey", "onChange", "children"]);
2241
- const [tabsContainer, setTabsContainer] = solidJs.createSignal();
2242
- const [visibleTabs, setVisibleTabs] = solidJs.createSignal([]);
2243
- const [activeTab, setActiveTab] = solidJs.createSignal((_a = local.defaultValue) != null ? _a : "");
2193
+ var _tmpl$31 = /* @__PURE__ */ web.template(`<div>`);
2194
+ var _tmpl$210 = /* @__PURE__ */ web.template(`<div><span>`);
2195
+ var DatePickerContext = solidJs.createContext({
2196
+ currentDate: () => /* @__PURE__ */ new Date(),
2197
+ setCurrentDate: () => {
2198
+ },
2199
+ viewMonth: () => /* @__PURE__ */ new Date(),
2200
+ setViewMonth: () => {
2201
+ },
2202
+ selectedDate: () => null,
2203
+ setSelectedDate: () => {
2204
+ },
2205
+ maxDays: () => 0
2206
+ });
2207
+ var useDatePicker = () => solidJs.useContext(DatePickerContext);
2208
+ var DatePicker = (props) => {
2209
+ const [local, rest] = solidJs.splitProps(props, ["children", "value", "onDateChange", "class", "maxDays"]);
2244
2210
  const style = useStyle();
2245
- useKeyboardNavigation({
2246
- tabsContainer,
2247
- activeTab,
2248
- setActiveTab
2249
- });
2250
- solidJs.createEffect(() => {
2251
- if (local.value) {
2252
- setActiveTab(local.value);
2211
+ const today = /* @__PURE__ */ new Date();
2212
+ today.setHours(0, 0, 0, 0);
2213
+ const [currentDate, setCurrentDate] = solidJs.createSignal(today);
2214
+ const [viewMonth, setViewMonth] = solidJs.createSignal(today);
2215
+ const [selectedDate, setSelectedDate] = solidJs.createSignal(local.value ? new Date(local.value) : null);
2216
+ const handleDateSelect = (date) => {
2217
+ setSelectedDate(date);
2218
+ if (local.onDateChange) {
2219
+ local.onDateChange(date);
2253
2220
  }
2254
- });
2255
- solidJs.createEffect(() => {
2256
- var _a2;
2257
- (_a2 = local.onChange) == null ? void 0 : _a2.call(local, activeTab());
2258
- });
2259
- return web.createComponent(TabsContext.Provider, {
2221
+ };
2222
+ return web.createComponent(DatePickerContext.Provider, {
2260
2223
  value: {
2261
- activeTab,
2262
- setActiveTab,
2263
- visibleTabs,
2264
- setVisibleTabs
2224
+ currentDate,
2225
+ setCurrentDate,
2226
+ viewMonth,
2227
+ setViewMonth,
2228
+ selectedDate,
2229
+ setSelectedDate: handleDateSelect,
2230
+ maxDays: () => props.maxDays
2265
2231
  },
2266
2232
  get children() {
2267
- var _el$ = _tmpl$33();
2268
- web.use(setTabsContainer, _el$);
2233
+ var _el$ = _tmpl$31();
2269
2234
  web.spread(_el$, web.mergeProps({
2270
2235
  get ["class"]() {
2271
- return style(local.appearanceKey || "tabsRoot", cn(tabsRootVariants(), local.class));
2236
+ return style("datePicker", cn("nt-p-2", local.class));
2272
2237
  }
2273
2238
  }, rest), false, true);
2274
2239
  web.insert(_el$, () => local.children);
@@ -2276,48 +2241,743 @@ var TabsRoot = (props) => {
2276
2241
  }
2277
2242
  });
2278
2243
  };
2279
-
2280
- // src/ui/components/primitives/Tabs/TabsContent.tsx
2281
- var _tmpl$34 = /* @__PURE__ */ web.template(`<div role=tabpanel>`);
2282
- var TabsContent = (props) => {
2283
- const [local, rest] = solidJs.splitProps(props, ["value", "class", "appearanceKey", "children"]);
2244
+ var DatePickerHeader = (props) => {
2245
+ const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "children"]);
2284
2246
  const style = useStyle();
2285
2247
  const {
2286
- activeTab
2287
- } = useTabsContext();
2288
- return web.createComponent(solidJs.Show, {
2289
- get when() {
2290
- return activeTab() === local.value;
2291
- },
2292
- get children() {
2293
- var _el$ = _tmpl$34();
2294
- web.spread(_el$, web.mergeProps({
2295
- get ["class"]() {
2296
- return web.memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tabsContent", activeTab() === local.value ? "nt-block" : "nt-hidden");
2297
- },
2298
- get id() {
2299
- return `tabpanel-${local.value}`;
2300
- },
2301
- get ["aria-labelledby"]() {
2302
- return local.value;
2303
- },
2304
- get ["data-state"]() {
2305
- return activeTab() === local.value ? "active" : "inactive";
2306
- }
2307
- }, rest), false, true);
2308
- web.insert(_el$, () => local.children);
2309
- return _el$;
2310
- }
2311
- });
2312
- };
2313
- var _tmpl$35 = /* @__PURE__ */ web.template(`<div role=tablist>`);
2314
- var _tmpl$210 = /* @__PURE__ */ web.template(`<div class="nt-relative nt-z-[-1]">`);
2315
- var tabsListVariants = () => "nt-flex nt-gap-6";
2316
- var TabsList = (props) => {
2317
- const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "ref", "children"]);
2318
- const style = useStyle();
2319
- return [(() => {
2248
+ viewMonth,
2249
+ setViewMonth,
2250
+ currentDate,
2251
+ maxDays
2252
+ } = useDatePicker();
2253
+ useAppearance();
2254
+ const prevIconClass = style("datePickerControlPrevTrigger__icon", "nt-size-4 nt-text-foreground-alpha-700", {
2255
+ iconKey: "arrowLeft"
2256
+ });
2257
+ const nextIconClass = style("datePickerControlNextTrigger__icon", "nt-size-4 nt-text-foreground-alpha-700", {
2258
+ iconKey: "arrowRight"
2259
+ });
2260
+ const handlePrevMonth = () => {
2261
+ const date = new Date(viewMonth());
2262
+ date.setMonth(date.getMonth() - 1);
2263
+ const currentMonth = currentDate();
2264
+ if (date.getFullYear() < currentMonth.getFullYear() || date.getFullYear() === currentMonth.getFullYear() && date.getMonth() < currentMonth.getMonth()) {
2265
+ return;
2266
+ }
2267
+ setViewMonth(date);
2268
+ };
2269
+ const handleNextMonth = () => {
2270
+ const date = new Date(viewMonth());
2271
+ date.setMonth(date.getMonth() + 1);
2272
+ const maxDaysValue = maxDays();
2273
+ if (maxDaysValue > 0) {
2274
+ const maxDate = new Date(currentDate());
2275
+ maxDate.setDate(maxDate.getDate() + maxDaysValue);
2276
+ if (date.getFullYear() > maxDate.getFullYear() || date.getFullYear() === maxDate.getFullYear() && date.getMonth() > maxDate.getMonth()) {
2277
+ return;
2278
+ }
2279
+ }
2280
+ setViewMonth(date);
2281
+ };
2282
+ const isPrevDisabled = () => {
2283
+ const current = currentDate();
2284
+ const view = viewMonth();
2285
+ return view.getFullYear() === current.getFullYear() && view.getMonth() === current.getMonth();
2286
+ };
2287
+ const isNextDisabled = () => {
2288
+ const maxDaysValue = maxDays();
2289
+ if (maxDaysValue === 0) return false;
2290
+ const view = viewMonth();
2291
+ const maxDate = new Date(currentDate());
2292
+ maxDate.setDate(maxDate.getDate() + maxDaysValue);
2293
+ return view.getFullYear() === maxDate.getFullYear() && view.getMonth() === maxDate.getMonth();
2294
+ };
2295
+ return (() => {
2296
+ var _el$2 = _tmpl$210(), _el$3 = _el$2.firstChild;
2297
+ web.spread(_el$2, web.mergeProps({
2298
+ get ["class"]() {
2299
+ return style(local.appearanceKey || "datePickerControl", cn("nt-flex nt-items-center nt-justify-between nt-gap-1.5 nt-h-7 nt-p-1 nt-mb-2 nt-rounded-lg nt-bg-background", local.class));
2300
+ }
2301
+ }, rest), false, true);
2302
+ web.insert(_el$2, web.createComponent(Button, {
2303
+ appearanceKey: "datePickerControlPrevTrigger",
2304
+ variant: "ghost",
2305
+ onClick: (e) => {
2306
+ e.stopPropagation();
2307
+ handlePrevMonth();
2308
+ },
2309
+ get disabled() {
2310
+ return isPrevDisabled();
2311
+ },
2312
+ "class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
2313
+ get children() {
2314
+ return web.createComponent(IconRendererWrapper, {
2315
+ iconKey: "arrowLeft",
2316
+ "class": prevIconClass,
2317
+ get fallback() {
2318
+ return web.createComponent(ArrowLeft, {
2319
+ "class": prevIconClass
2320
+ });
2321
+ }
2322
+ });
2323
+ }
2324
+ }), _el$3);
2325
+ web.insert(_el$3, () => viewMonth().toLocaleDateString("en-US", {
2326
+ month: "long",
2327
+ year: "numeric"
2328
+ }));
2329
+ web.insert(_el$2, web.createComponent(Button, {
2330
+ appearanceKey: "datePickerControlNextTrigger",
2331
+ variant: "ghost",
2332
+ onClick: (e) => {
2333
+ e.stopPropagation();
2334
+ handleNextMonth();
2335
+ },
2336
+ get disabled() {
2337
+ return isNextDisabled();
2338
+ },
2339
+ "class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
2340
+ get children() {
2341
+ return web.createComponent(IconRendererWrapper, {
2342
+ iconKey: "arrowRight",
2343
+ "class": nextIconClass,
2344
+ get fallback() {
2345
+ return web.createComponent(ArrowRight, {
2346
+ "class": nextIconClass
2347
+ });
2348
+ }
2349
+ });
2350
+ }
2351
+ }), null);
2352
+ web.effect(() => web.className(_el$3, style("datePickerHeaderMonth", "nt-text-sm nt-font-medium nt-text-foreground-alpha-700")));
2353
+ return _el$2;
2354
+ })();
2355
+ };
2356
+ var DatePickerGridCellTrigger = (props) => {
2357
+ const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "date"]);
2358
+ const {
2359
+ selectedDate,
2360
+ viewMonth,
2361
+ setSelectedDate,
2362
+ currentDate,
2363
+ maxDays
2364
+ } = useDatePicker();
2365
+ const {
2366
+ t
2367
+ } = useLocalization();
2368
+ const isCurrentMonth = props.date.getMonth() === viewMonth().getMonth();
2369
+ const isPastDate = () => {
2370
+ const today = currentDate();
2371
+ return props.date < today;
2372
+ };
2373
+ const isFutureDate = () => {
2374
+ const maxDaysValue = maxDays();
2375
+ if (maxDaysValue === 0) return false;
2376
+ const maxDate = new Date(currentDate());
2377
+ maxDate.setDate(maxDate.getDate() + maxDaysValue);
2378
+ return props.date > maxDate;
2379
+ };
2380
+ const isDisabled = !isCurrentMonth || isPastDate() || isFutureDate();
2381
+ const isExceedingLimit = () => {
2382
+ return isCurrentMonth && isFutureDate();
2383
+ };
2384
+ const buttonElement = web.createComponent(Button, web.mergeProps({
2385
+ appearanceKey: "datePickerCalendarDay__button",
2386
+ variant: "ghost",
2387
+ disabled: isDisabled,
2388
+ onClick: (e) => {
2389
+ e.stopPropagation();
2390
+ setSelectedDate(local.date);
2391
+ },
2392
+ get ["class"]() {
2393
+ var _a;
2394
+ return cn("nt-size-8 nt-w-full nt-rounded-md nt-flex nt-items-center nt-justify-center", {
2395
+ "nt-text-muted-foreground disabled:nt-opacity-20": !isCurrentMonth || isPastDate(),
2396
+ "nt-text-foreground-alpha-700": isCurrentMonth && !isPastDate() && !isFutureDate()
2397
+ }, {
2398
+ "nt-bg-primary-alpha-300 hover:nt-bg-primary-alpha-400": ((_a = selectedDate()) == null ? void 0 : _a.toDateString()) === local.date.toDateString()
2399
+ });
2400
+ }
2401
+ }, rest, {
2402
+ get children() {
2403
+ return local.date.getDate();
2404
+ }
2405
+ }));
2406
+ if (isExceedingLimit()) {
2407
+ return web.createComponent(Tooltip.Root, {
2408
+ get children() {
2409
+ return [web.createComponent(Tooltip.Trigger, {
2410
+ children: buttonElement
2411
+ }), web.createComponent(Tooltip.Content, {
2412
+ get children() {
2413
+ return t("snooze.datePicker.exceedingLimitTooltip", {
2414
+ days: maxDays()
2415
+ });
2416
+ }
2417
+ })];
2418
+ }
2419
+ });
2420
+ }
2421
+ return buttonElement;
2422
+ };
2423
+ var DatePickerCalendar = (props) => {
2424
+ const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
2425
+ const style = useStyle();
2426
+ const {
2427
+ viewMonth
2428
+ } = useDatePicker();
2429
+ const getDaysInMonth = () => {
2430
+ const year = viewMonth().getFullYear();
2431
+ const month = viewMonth().getMonth();
2432
+ const firstDay = new Date(year, month, 1);
2433
+ const daysInMonth = new Date(year, month + 1, 0).getDate();
2434
+ const startingDay = firstDay.getDay();
2435
+ const days = [];
2436
+ for (let i = 0; i < startingDay; i += 1) {
2437
+ const prevMonthDay = new Date(year, month, -i);
2438
+ days.unshift(prevMonthDay);
2439
+ }
2440
+ for (let i = 1; i <= daysInMonth; i += 1) {
2441
+ days.push(new Date(year, month, i));
2442
+ }
2443
+ const remainingCells = 7 - days.length % 7;
2444
+ if (remainingCells < 7) {
2445
+ for (let i = 1; i <= remainingCells; i += 1) {
2446
+ days.push(new Date(year, month + 1, i));
2447
+ }
2448
+ }
2449
+ return days;
2450
+ };
2451
+ return (() => {
2452
+ var _el$8 = _tmpl$31();
2453
+ _el$8.$$click = (e) => e.stopPropagation();
2454
+ web.spread(_el$8, web.mergeProps({
2455
+ get ["class"]() {
2456
+ return style(local.appearanceKey || "datePickerCalendar", cn("nt-grid nt-grid-cols-7 nt-gap-1", local.class));
2457
+ }
2458
+ }, rest), false, true);
2459
+ web.insert(_el$8, () => getDaysInMonth().map((date) => {
2460
+ return web.createComponent(DatePickerGridCellTrigger, {
2461
+ date
2462
+ });
2463
+ }));
2464
+ return _el$8;
2465
+ })();
2466
+ };
2467
+ web.delegateEvents(["click"]);
2468
+ var _tmpl$33 = /* @__PURE__ */ web.template(`<button>`);
2469
+ var PopoverClose = (props) => {
2470
+ const {
2471
+ onClose
2472
+ } = usePopover();
2473
+ const style = useStyle();
2474
+ const [local, rest] = solidJs.splitProps(props, ["onClick", "asChild", "appearanceKey", "class"]);
2475
+ const handleClick = (e) => {
2476
+ if (typeof local.onClick === "function") {
2477
+ local.onClick(e);
2478
+ }
2479
+ onClose();
2480
+ };
2481
+ if (local.asChild) {
2482
+ return web.createComponent(web.Dynamic, web.mergeProps({
2483
+ get component() {
2484
+ return local.asChild;
2485
+ },
2486
+ onClick: handleClick
2487
+ }, rest));
2488
+ }
2489
+ return (() => {
2490
+ var _el$ = _tmpl$33();
2491
+ _el$.$$click = handleClick;
2492
+ web.spread(_el$, web.mergeProps({
2493
+ get ["class"]() {
2494
+ return style(local.appearanceKey || "popoverClose", local.class);
2495
+ }
2496
+ }, rest), false, false);
2497
+ return _el$;
2498
+ })();
2499
+ };
2500
+ web.delegateEvents(["click"]);
2501
+ var _tmpl$34 = /* @__PURE__ */ web.template(`<div>`);
2502
+ var Portal2 = (props) => {
2503
+ const appearance = useAppearance();
2504
+ let currentElement;
2505
+ return [(() => {
2506
+ var _el$ = _tmpl$34();
2507
+ web.use((el) => {
2508
+ currentElement = el;
2509
+ }, _el$);
2510
+ _el$.style.setProperty("display", "none");
2511
+ return _el$;
2512
+ })(), web.createComponent(web.Portal, web.mergeProps({
2513
+ get mount() {
2514
+ return closestNovuRootParent(currentElement, appearance.id());
2515
+ }
2516
+ }, props))];
2517
+ };
2518
+ var closestNovuRootParent = (el, id) => {
2519
+ let element = el;
2520
+ while (element && element.id !== `novu-root-${id}`) {
2521
+ element = element.parentElement;
2522
+ }
2523
+ if (element && element.id === `novu-root-${id}`) {
2524
+ return element;
2525
+ }
2526
+ return void 0;
2527
+ };
2528
+ var PopoverContext = solidJs.createContext(void 0);
2529
+ function PopoverRoot(props) {
2530
+ var _a;
2531
+ const [uncontrolledIsOpen, setUncontrolledIsOpen] = solidJs.createSignal((_a = props.open) != null ? _a : false);
2532
+ const onOpenChange = () => {
2533
+ var _a2;
2534
+ return (_a2 = props.onOpenChange) != null ? _a2 : setUncontrolledIsOpen;
2535
+ };
2536
+ const open = () => {
2537
+ var _a2;
2538
+ return (_a2 = props.open) != null ? _a2 : uncontrolledIsOpen();
2539
+ };
2540
+ const [reference, setReference] = solidJs.createSignal(null);
2541
+ const [floating, setFloating] = solidJs.createSignal(null);
2542
+ const position = solidFloatingUi.useFloating(reference, floating, {
2543
+ strategy: "absolute",
2544
+ placement: props.placement,
2545
+ whileElementsMounted: dom.autoUpdate,
2546
+ middleware: [dom.offset(10), dom.flip({
2547
+ fallbackPlacements: props.fallbackPlacements
2548
+ }), dom.shift()]
2549
+ });
2550
+ const floatingStyles = solidJs.createMemo(() => {
2551
+ var _a2, _b;
2552
+ return {
2553
+ position: position.strategy,
2554
+ top: `${(_a2 = position.y) != null ? _a2 : 0}px`,
2555
+ left: `${(_b = position.x) != null ? _b : 0}px`
2556
+ };
2557
+ });
2558
+ const onClose = () => {
2559
+ onOpenChange()(false);
2560
+ };
2561
+ const onToggle = () => {
2562
+ onOpenChange()((prev) => !prev);
2563
+ };
2564
+ return web.createComponent(PopoverContext.Provider, {
2565
+ value: {
2566
+ onToggle,
2567
+ onClose,
2568
+ reference,
2569
+ setReference,
2570
+ floating,
2571
+ setFloating,
2572
+ open,
2573
+ floatingStyles
2574
+ },
2575
+ get children() {
2576
+ return props.children;
2577
+ }
2578
+ });
2579
+ }
2580
+ function usePopover() {
2581
+ const context = solidJs.useContext(PopoverContext);
2582
+ if (!context) {
2583
+ throw new Error("usePopover must be used within Popover.Root component");
2584
+ }
2585
+ return context;
2586
+ }
2587
+
2588
+ // src/ui/components/primitives/Popover/PopoverContent.tsx
2589
+ var _tmpl$35 = /* @__PURE__ */ web.template(`<div>`);
2590
+ 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-cursor-default nt-flex nt-flex-col nt-overflow-hidden nt-border nt-border-border nt-z-10");
2591
+ var PopoverContentBody = (props) => {
2592
+ const {
2593
+ open,
2594
+ setFloating,
2595
+ floating,
2596
+ floatingStyles
2597
+ } = usePopover();
2598
+ const {
2599
+ setActive,
2600
+ removeActive
2601
+ } = useFocusManager();
2602
+ const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "style"]);
2603
+ const style = useStyle();
2604
+ solidJs.onMount(() => {
2605
+ const floatingEl = floating();
2606
+ setActive(floatingEl);
2607
+ solidJs.onCleanup(() => {
2608
+ removeActive(floatingEl);
2609
+ });
2610
+ });
2611
+ return (() => {
2320
2612
  var _el$ = _tmpl$35();
2613
+ web.use(setFloating, _el$);
2614
+ web.spread(_el$, web.mergeProps({
2615
+ get ["class"]() {
2616
+ return style(local.appearanceKey || "popoverContent", cn(popoverContentVariants(), local.class));
2617
+ },
2618
+ get style() {
2619
+ return floatingStyles();
2620
+ },
2621
+ get ["data-open"]() {
2622
+ return open();
2623
+ }
2624
+ }, rest), false, false);
2625
+ return _el$;
2626
+ })();
2627
+ };
2628
+ var PopoverContent = (props) => {
2629
+ const {
2630
+ open,
2631
+ onClose,
2632
+ reference,
2633
+ floating
2634
+ } = usePopover();
2635
+ const {
2636
+ active
2637
+ } = useFocusManager();
2638
+ const {
2639
+ container
2640
+ } = useAppearance();
2641
+ const handleClickOutside = (e) => {
2642
+ var _a, _b;
2643
+ if ((_a = reference()) == null ? void 0 : _a.contains(e.target)) {
2644
+ return;
2645
+ }
2646
+ const containerElement = container();
2647
+ if (active() !== floating() || ((_b = floating()) == null ? void 0 : _b.contains(e.target)) || containerElement && e.target.shadowRoot === containerElement) {
2648
+ return;
2649
+ }
2650
+ onClose();
2651
+ };
2652
+ const handleEscapeKey = (e) => {
2653
+ if (active() !== floating()) {
2654
+ return;
2655
+ }
2656
+ if (e instanceof KeyboardEvent && e.key === "Escape") {
2657
+ onClose();
2658
+ }
2659
+ };
2660
+ solidJs.onMount(() => {
2661
+ var _a;
2662
+ document.body.addEventListener("click", handleClickOutside);
2663
+ (_a = container()) == null ? void 0 : _a.addEventListener("click", handleClickOutside);
2664
+ document.body.addEventListener("keydown", handleEscapeKey);
2665
+ });
2666
+ solidJs.onCleanup(() => {
2667
+ var _a;
2668
+ document.body.removeEventListener("click", handleClickOutside);
2669
+ (_a = container()) == null ? void 0 : _a.removeEventListener("click", handleClickOutside);
2670
+ document.body.removeEventListener("keydown", handleEscapeKey);
2671
+ });
2672
+ return web.createComponent(solidJs.Show, {
2673
+ get when() {
2674
+ return open();
2675
+ },
2676
+ get children() {
2677
+ return web.createComponent(Portal2, {
2678
+ get children() {
2679
+ return web.createComponent(PopoverContentBody, props);
2680
+ }
2681
+ });
2682
+ }
2683
+ });
2684
+ };
2685
+ var _tmpl$36 = /* @__PURE__ */ web.template(`<button>`);
2686
+ var PopoverTrigger = (props) => {
2687
+ const {
2688
+ setReference,
2689
+ onToggle
2690
+ } = usePopover();
2691
+ const style = useStyle();
2692
+ const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "asChild", "onClick", "ref"]);
2693
+ const handleClick = (e) => {
2694
+ if (typeof local.onClick === "function") {
2695
+ local.onClick(e);
2696
+ }
2697
+ onToggle();
2698
+ };
2699
+ const ref = solidJs.createMemo(() => local.ref ? mergeRefs(setReference, local.ref) : setReference);
2700
+ if (local.asChild) {
2701
+ return web.createComponent(web.Dynamic, web.mergeProps({
2702
+ get component() {
2703
+ return local.asChild;
2704
+ },
2705
+ ref(r$) {
2706
+ var _ref$ = ref();
2707
+ typeof _ref$ === "function" && _ref$(r$);
2708
+ },
2709
+ onClick: handleClick
2710
+ }, rest));
2711
+ }
2712
+ return (() => {
2713
+ var _el$ = _tmpl$36();
2714
+ _el$.$$click = handleClick;
2715
+ var _ref$2 = ref();
2716
+ typeof _ref$2 === "function" && web.use(_ref$2, _el$);
2717
+ web.spread(_el$, web.mergeProps({
2718
+ get ["class"]() {
2719
+ return style(local.appearanceKey || "dropdownTrigger");
2720
+ }
2721
+ }, rest), false, true);
2722
+ web.insert(_el$, () => props.children);
2723
+ return _el$;
2724
+ })();
2725
+ };
2726
+ web.delegateEvents(["click"]);
2727
+
2728
+ // src/ui/components/primitives/Popover/index.ts
2729
+ var Popover = {
2730
+ Root: PopoverRoot,
2731
+ /**
2732
+ * Popover.Trigger renders a `button` and has no default styling.
2733
+ */
2734
+ Trigger: PopoverTrigger,
2735
+ /**
2736
+ * Popover.Content renders a `div` and has popover specific styling.
2737
+ */
2738
+ Content: PopoverContent,
2739
+ /**
2740
+ * Popover.Close renders a `button` and has no styling.
2741
+ * Closes the popover when clicked.
2742
+ * `onClick` function is propagated.
2743
+ */
2744
+ Close: PopoverClose
2745
+ };
2746
+ var dropdownContentVariants = () => "nt-p-1 nt-text-sm nt-min-w-52 nt-shadow-dropdown nt-h-fit nt-min-w-52 nt-w-max";
2747
+ var DropdownContent = (props) => {
2748
+ const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "class"]);
2749
+ return web.createComponent(Popover.Content, web.mergeProps({
2750
+ get appearanceKey() {
2751
+ return local.appearanceKey || "dropdownContent";
2752
+ },
2753
+ get ["class"]() {
2754
+ return cn(dropdownContentVariants(), local.class);
2755
+ }
2756
+ }, rest));
2757
+ };
2758
+ var dropdownItemVariants = () => "focus:nt-outline-none nt-flex nt-items-center nt-gap-1.5 nt-text-sm nt-rounded-lg nt-items-center hover:nt-bg-neutral-alpha-50 focus-visible:nt-bg-neutral-alpha-50 nt-py-1 nt-px-2";
2759
+ var DropdownItem = (props) => {
2760
+ const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "onClick", "class", "asChild"]);
2761
+ const {
2762
+ onClose
2763
+ } = usePopover();
2764
+ const handleClick = (e) => {
2765
+ if (typeof local.onClick === "function") {
2766
+ local.onClick(e);
2767
+ }
2768
+ onClose();
2769
+ };
2770
+ if (local.asChild) {
2771
+ return web.createComponent(web.Dynamic, web.mergeProps({
2772
+ get component() {
2773
+ return local.asChild;
2774
+ },
2775
+ onClick: handleClick
2776
+ }, rest));
2777
+ }
2778
+ return web.createComponent(Popover.Close, web.mergeProps({
2779
+ get appearanceKey() {
2780
+ return local.appearanceKey || "dropdownItem";
2781
+ },
2782
+ get ["class"]() {
2783
+ return cn(dropdownItemVariants(), local.class);
2784
+ },
2785
+ onClick: (e) => {
2786
+ if (typeof local.onClick === "function") {
2787
+ local.onClick(e);
2788
+ }
2789
+ onClose();
2790
+ }
2791
+ }, rest));
2792
+ };
2793
+ var DropdownRoot = (props) => {
2794
+ return web.createComponent(Popover.Root, web.mergeProps({
2795
+ placement: "bottom",
2796
+ fallbackPlacements: ["top"]
2797
+ }, props));
2798
+ };
2799
+ var dropdownTriggerButtonVariants = () => `nt-relative nt-transition nt-outline-none focus-visible:nt-outline-nonefocus-visible:nt-ring-2 focus-visible:nt-ring-primary focus-visible:nt-ring-offset-2`;
2800
+ var DropdownTrigger = (props) => {
2801
+ const style = useStyle();
2802
+ const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "class"]);
2803
+ return web.createComponent(Popover.Trigger, web.mergeProps({
2804
+ get ["class"]() {
2805
+ return style(local.appearanceKey || "dropdownTrigger", cn(dropdownTriggerButtonVariants(), local.class));
2806
+ }
2807
+ }, rest));
2808
+ };
2809
+
2810
+ // src/ui/components/primitives/Dropdown/index.ts
2811
+ var Dropdown = {
2812
+ Root: DropdownRoot,
2813
+ /**
2814
+ * Dropdown.Trigger renders a `button` and has no default styling.
2815
+ */
2816
+ Trigger: DropdownTrigger,
2817
+ /**
2818
+ * Dropdown.Content renders a `Popover.Content` by default.
2819
+ */
2820
+ Content: DropdownContent,
2821
+ /**
2822
+ * Dropdown.Close renders a `Popover.Close` by default.
2823
+ */
2824
+ Close: Popover.Close,
2825
+ /**
2826
+ * Dropdown.Item renders a `Popover.Close` with dropdown specific styling.
2827
+ * Closes the popover when clicked.
2828
+ * `onClick` function is propagated.
2829
+ */
2830
+ Item: DropdownItem
2831
+ };
2832
+ var useKeyboardNavigation = ({
2833
+ activeTab,
2834
+ setActiveTab,
2835
+ tabsContainer
2836
+ }) => {
2837
+ const { container } = useAppearance();
2838
+ const [keyboardNavigation, setKeyboardNavigation] = solidJs.createSignal(false);
2839
+ const getRoot = () => {
2840
+ const containerElement = container();
2841
+ return containerElement instanceof ShadowRoot ? containerElement : document;
2842
+ };
2843
+ solidJs.createEffect(() => {
2844
+ const root = getRoot();
2845
+ const handleTabKey = (event) => {
2846
+ var _a;
2847
+ if (!(event instanceof KeyboardEvent) || event.key !== "Tab") {
2848
+ return;
2849
+ }
2850
+ const tabs = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]');
2851
+ if (!tabs || !root.activeElement) {
2852
+ return;
2853
+ }
2854
+ setKeyboardNavigation(Array.from(tabs).includes(root.activeElement));
2855
+ };
2856
+ root.addEventListener("keyup", handleTabKey);
2857
+ return solidJs.onCleanup(() => root.removeEventListener("keyup", handleTabKey));
2858
+ });
2859
+ solidJs.createEffect(() => {
2860
+ const root = getRoot();
2861
+ const handleArrowKeys = (event) => {
2862
+ var _a, _b;
2863
+ if (!keyboardNavigation() || !(event instanceof KeyboardEvent) || event.key !== "ArrowLeft" && event.key !== "ArrowRight") {
2864
+ return;
2865
+ }
2866
+ const tabElements = Array.from((_b = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]')) != null ? _b : []);
2867
+ const tabIds = tabElements.map((tab) => tab.id);
2868
+ const currentIndex = tabIds.indexOf(activeTab());
2869
+ const { length } = tabIds;
2870
+ let activeIndex = currentIndex;
2871
+ let newTab = activeTab();
2872
+ if (event.key === "ArrowLeft") {
2873
+ activeIndex = currentIndex === 0 ? length - 1 : currentIndex - 1;
2874
+ newTab = tabIds[activeIndex];
2875
+ } else if (event.key === "ArrowRight") {
2876
+ activeIndex = currentIndex === length - 1 ? 0 : currentIndex + 1;
2877
+ newTab = tabIds[activeIndex];
2878
+ }
2879
+ tabElements[activeIndex].focus();
2880
+ setActiveTab(newTab);
2881
+ };
2882
+ root.addEventListener("keydown", handleArrowKeys);
2883
+ return solidJs.onCleanup(() => root.removeEventListener("keydown", handleArrowKeys));
2884
+ });
2885
+ };
2886
+
2887
+ // src/ui/components/primitives/Tabs/TabsRoot.tsx
2888
+ var _tmpl$37 = /* @__PURE__ */ web.template(`<div>`);
2889
+ var TabsContext = solidJs.createContext(void 0);
2890
+ var useTabsContext = () => {
2891
+ const context = solidJs.useContext(TabsContext);
2892
+ if (!context) {
2893
+ throw new Error("useTabsContext must be used within an TabsContext.Provider");
2894
+ }
2895
+ return context;
2896
+ };
2897
+ var tabsRootVariants = () => "nt-flex nt-flex-col";
2898
+ var TabsRoot = (props) => {
2899
+ var _a;
2900
+ const [local, rest] = solidJs.splitProps(props, ["defaultValue", "value", "class", "appearanceKey", "onChange", "children"]);
2901
+ const [tabsContainer, setTabsContainer] = solidJs.createSignal();
2902
+ const [visibleTabs, setVisibleTabs] = solidJs.createSignal([]);
2903
+ const [activeTab, setActiveTab] = solidJs.createSignal((_a = local.defaultValue) != null ? _a : "");
2904
+ const style = useStyle();
2905
+ useKeyboardNavigation({
2906
+ tabsContainer,
2907
+ activeTab,
2908
+ setActiveTab
2909
+ });
2910
+ solidJs.createEffect(() => {
2911
+ if (local.value) {
2912
+ setActiveTab(local.value);
2913
+ }
2914
+ });
2915
+ solidJs.createEffect(() => {
2916
+ var _a2;
2917
+ (_a2 = local.onChange) == null ? void 0 : _a2.call(local, activeTab());
2918
+ });
2919
+ return web.createComponent(TabsContext.Provider, {
2920
+ value: {
2921
+ activeTab,
2922
+ setActiveTab,
2923
+ visibleTabs,
2924
+ setVisibleTabs
2925
+ },
2926
+ get children() {
2927
+ var _el$ = _tmpl$37();
2928
+ web.use(setTabsContainer, _el$);
2929
+ web.spread(_el$, web.mergeProps({
2930
+ get ["class"]() {
2931
+ return style(local.appearanceKey || "tabsRoot", cn(tabsRootVariants(), local.class));
2932
+ }
2933
+ }, rest), false, true);
2934
+ web.insert(_el$, () => local.children);
2935
+ return _el$;
2936
+ }
2937
+ });
2938
+ };
2939
+
2940
+ // src/ui/components/primitives/Tabs/TabsContent.tsx
2941
+ var _tmpl$38 = /* @__PURE__ */ web.template(`<div role=tabpanel>`);
2942
+ var TabsContent = (props) => {
2943
+ const [local, rest] = solidJs.splitProps(props, ["value", "class", "appearanceKey", "children"]);
2944
+ const style = useStyle();
2945
+ const {
2946
+ activeTab
2947
+ } = useTabsContext();
2948
+ return web.createComponent(solidJs.Show, {
2949
+ get when() {
2950
+ return activeTab() === local.value;
2951
+ },
2952
+ get children() {
2953
+ var _el$ = _tmpl$38();
2954
+ web.spread(_el$, web.mergeProps({
2955
+ get ["class"]() {
2956
+ return web.memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tabsContent", activeTab() === local.value ? "nt-block" : "nt-hidden");
2957
+ },
2958
+ get id() {
2959
+ return `tabpanel-${local.value}`;
2960
+ },
2961
+ get ["aria-labelledby"]() {
2962
+ return local.value;
2963
+ },
2964
+ get ["data-state"]() {
2965
+ return activeTab() === local.value ? "active" : "inactive";
2966
+ }
2967
+ }, rest), false, true);
2968
+ web.insert(_el$, () => local.children);
2969
+ return _el$;
2970
+ }
2971
+ });
2972
+ };
2973
+ var _tmpl$39 = /* @__PURE__ */ web.template(`<div role=tablist>`);
2974
+ var _tmpl$211 = /* @__PURE__ */ web.template(`<div class="nt-relative nt-z-[-1]">`);
2975
+ var tabsListVariants = () => "nt-flex nt-gap-6";
2976
+ var TabsList = (props) => {
2977
+ const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "ref", "children"]);
2978
+ const style = useStyle();
2979
+ return [(() => {
2980
+ var _el$ = _tmpl$39();
2321
2981
  var _ref$ = local.ref;
2322
2982
  typeof _ref$ === "function" ? web.use(_ref$, _el$) : local.ref = _el$;
2323
2983
  web.spread(_el$, web.mergeProps({
@@ -2327,7 +2987,7 @@ var TabsList = (props) => {
2327
2987
  }, rest), false, true);
2328
2988
  web.insert(_el$, () => local.children);
2329
2989
  return _el$;
2330
- })(), _tmpl$210()];
2990
+ })(), _tmpl$211()];
2331
2991
  };
2332
2992
  var tabsTriggerVariants = () => cn("nt-relative nt-transition nt-outline-none nt-text-foreground-alpha-600 nt-pb-[0.625rem]", `after:nt-absolute after:nt-content-[''] after:nt-bottom-0 after:nt-left-0 after:nt-w-full after:nt-h-[2px]`, "after:nt-transition-opacity after:nt-duration-200", "data-[state=active]:after:nt-border-b-2 data-[state=active]:after:nt-border-primary data-[state=active]:after:nt-opacity-100", "data-[state=active]:nt-text-foreground after:nt-border-b-transparent after:nt-opacity-0", "focus-visible:nt-outline-none focus-visible:nt-rounded-lg focus-visible:nt-ring-2 focus-visible:nt-ring-ring focus-visible:nt-ring-offset-2");
2333
2993
  var TabsTrigger = (props) => {
@@ -2398,8 +3058,8 @@ var inboxFilterLocalizationKeys = {
2398
3058
  archived: "inbox.filters.labels.archived",
2399
3059
  snoozed: "inbox.filters.labels.snoozed"
2400
3060
  };
2401
- var _tmpl$36 = /* @__PURE__ */ web.template(`<span><span>`);
2402
- var _tmpl$211 = /* @__PURE__ */ web.template(`<span>`);
3061
+ var _tmpl$40 = /* @__PURE__ */ web.template(`<span><span>`);
3062
+ var _tmpl$212 = /* @__PURE__ */ web.template(`<span>`);
2403
3063
  var cases = [{
2404
3064
  status: "unreadRead" /* UNREAD_READ */,
2405
3065
  iconKey: "unread",
@@ -2467,7 +3127,7 @@ var StatusItem = (props) => {
2467
3127
  },
2468
3128
  get children() {
2469
3129
  return [(() => {
2470
- var _el$ = _tmpl$36(), _el$2 = _el$.firstChild;
3130
+ var _el$ = _tmpl$40(), _el$2 = _el$.firstChild;
2471
3131
  web.insert(_el$, web.createComponent(IconRendererWrapper, {
2472
3132
  get iconKey() {
2473
3133
  return props.iconKey;
@@ -2475,7 +3135,7 @@ var StatusItem = (props) => {
2475
3135
  "class": itemIconClass,
2476
3136
  get fallback() {
2477
3137
  return (() => {
2478
- var _el$3 = _tmpl$211();
3138
+ var _el$3 = _tmpl$212();
2479
3139
  web.className(_el$3, itemIconClass);
2480
3140
  web.insert(_el$3, () => props.icon());
2481
3141
  return _el$3;
@@ -2516,7 +3176,7 @@ var StatusItem = (props) => {
2516
3176
  };
2517
3177
 
2518
3178
  // src/ui/components/elements/InboxStatus/InboxStatusDropdown.tsx
2519
- var _tmpl$37 = /* @__PURE__ */ web.template(`<span>`);
3179
+ var _tmpl$41 = /* @__PURE__ */ web.template(`<span>`);
2520
3180
  var StatusDropdown = () => {
2521
3181
  const style = useStyle();
2522
3182
  const {
@@ -2544,7 +3204,7 @@ var StatusDropdown = () => {
2544
3204
  }, triggerProps, {
2545
3205
  get children() {
2546
3206
  return [(() => {
2547
- var _el$ = _tmpl$37();
3207
+ var _el$ = _tmpl$41();
2548
3208
  web.insert(_el$, () => t(inboxFilterLocalizationKeys[status()]));
2549
3209
  web.effect((_p$) => {
2550
3210
  var _v$ = inboxFilterLocalizationKeys[status()], _v$2 = style("inboxStatus__title", "nt-text-base");
@@ -2632,7 +3292,7 @@ var useNotificationsInfiniteScroll = (props) => {
2632
3292
  );
2633
3293
  solidJs.onMount(() => {
2634
3294
  const listener = ({ data: data2 }) => {
2635
- if (!data2 || !chunkOGEM74YA_js.isSameFilter(filter, data2.filter)) {
3295
+ if (!data2 || !chunk5P6SPWNU_js.isSameFilter(filter, data2.filter)) {
2636
3296
  return;
2637
3297
  }
2638
3298
  mutate({ data: data2.notifications, hasMore: data2.hasMore });
@@ -2642,7 +3302,7 @@ var useNotificationsInfiniteScroll = (props) => {
2642
3302
  });
2643
3303
  solidJs.createEffect(() => chunk7B52C2XE_js.__async(void 0, null, function* () {
2644
3304
  const newFilter = chunk7B52C2XE_js.__spreadValues({}, props.options());
2645
- if (chunkOGEM74YA_js.isSameFilter(filter, newFilter)) {
3305
+ if (chunk5P6SPWNU_js.isSameFilter(filter, newFilter)) {
2646
3306
  return;
2647
3307
  }
2648
3308
  novu.notifications.clearCache();
@@ -2702,7 +3362,7 @@ var useReadAll = (props) => {
2702
3362
  };
2703
3363
 
2704
3364
  // src/ui/components/elements/Header/MoreActionsOptions.tsx
2705
- var _tmpl$38 = /* @__PURE__ */ web.template(`<span>`);
3365
+ var _tmpl$43 = /* @__PURE__ */ web.template(`<span>`);
2706
3366
  var iconKeyToComponentMap = {
2707
3367
  markAsRead: MarkAsRead,
2708
3368
  markAsArchived: MarkAsArchived,
@@ -2772,7 +3432,7 @@ var ActionsItem = (props) => {
2772
3432
  });
2773
3433
  }
2774
3434
  }), (() => {
2775
- var _el$ = _tmpl$38();
3435
+ var _el$ = _tmpl$43();
2776
3436
  web.insert(_el$, () => t(props.localizationKey));
2777
3437
  web.effect((_p$) => {
2778
3438
  var _v$ = props.localizationKey, _v$2 = style("moreActions__dropdownItemLabel", "nt-leading-none");
@@ -2838,14 +3498,14 @@ var MoreActionsDropdown = () => {
2838
3498
  };
2839
3499
 
2840
3500
  // src/ui/components/elements/Header/ActionsContainer.tsx
2841
- var _tmpl$39 = /* @__PURE__ */ web.template(`<div>`);
3501
+ var _tmpl$44 = /* @__PURE__ */ web.template(`<div>`);
2842
3502
  var ActionsContainer = (props) => {
2843
3503
  const style = useStyle();
2844
3504
  const cogsIconClass = style("icon", "nt-size-5", {
2845
3505
  iconKey: "cogs"
2846
3506
  });
2847
3507
  return (() => {
2848
- var _el$ = _tmpl$39();
3508
+ var _el$ = _tmpl$44();
2849
3509
  web.insert(_el$, web.createComponent(MoreActionsDropdown, {}), null);
2850
3510
  web.insert(_el$, web.createComponent(solidJs.Show, {
2851
3511
  get when() {
@@ -2877,11 +3537,11 @@ var ActionsContainer = (props) => {
2877
3537
  };
2878
3538
 
2879
3539
  // src/ui/components/elements/Header/Header.tsx
2880
- var _tmpl$40 = /* @__PURE__ */ web.template(`<div>`);
3540
+ var _tmpl$45 = /* @__PURE__ */ web.template(`<div>`);
2881
3541
  var Header = (props) => {
2882
3542
  const style = useStyle();
2883
3543
  return (() => {
2884
- var _el$ = _tmpl$40();
3544
+ var _el$ = _tmpl$45();
2885
3545
  web.insert(_el$, web.createComponent(StatusDropdown, {}), null);
2886
3546
  web.insert(_el$, web.createComponent(ActionsContainer, {
2887
3547
  get showPreferences() {
@@ -2892,7 +3552,7 @@ var Header = (props) => {
2892
3552
  return _el$;
2893
3553
  })();
2894
3554
  };
2895
- var _tmpl$41 = /* @__PURE__ */ web.template(`<div>`);
3555
+ var _tmpl$46 = /* @__PURE__ */ web.template(`<div>`);
2896
3556
  var Root = (props) => {
2897
3557
  const [_, rest] = solidJs.splitProps(props, ["class"]);
2898
3558
  const {
@@ -2908,7 +3568,7 @@ var Root = (props) => {
2908
3568
  },
2909
3569
  children: new Comment(" Powered by Novu - https://novu.co ")
2910
3570
  }), (() => {
2911
- var _el$ = _tmpl$41();
3571
+ var _el$ = _tmpl$46();
2912
3572
  web.spread(_el$, web.mergeProps({
2913
3573
  get id() {
2914
3574
  return `novu-root-${id()}`;
@@ -2920,15 +3580,15 @@ var Root = (props) => {
2920
3580
  return _el$;
2921
3581
  })()];
2922
3582
  };
2923
- var _tmpl$43 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 14 14"><path fill=currentColor d="M2.8 8.575V5.162a2.362 2.362 0 1 1 4.725 0v3.675a1.313 1.313 0 1 0 2.625 0V5.335a1.575 1.575 0 1 1 1.05 0v3.502a2.362 2.362 0 1 1-4.725 0V5.162a1.312 1.312 0 1 0-2.625 0v3.413h1.575l-2.1 2.625-2.1-2.625H2.8Z"></path><path fill=url(#a) d="M2.8 8.575V5.162a2.362 2.362 0 1 1 4.725 0v3.675a1.313 1.313 0 1 0 2.625 0V5.335a1.575 1.575 0 1 1 1.05 0v3.502a2.362 2.362 0 1 1-4.725 0V5.162a1.312 1.312 0 1 0-2.625 0v3.413h1.575l-2.1 2.625-2.1-2.625H2.8Z"></path><defs><linearGradient id=a x1=1.225 x2=12.251 y1=6.722 y2=6.779 gradientUnits=userSpaceOnUse><stop stop-color=currentColor></stop><stop offset=1 stop-color=currentColor>`);
3583
+ var _tmpl$47 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 14 14"><path fill=currentColor d="M2.8 8.575V5.162a2.362 2.362 0 1 1 4.725 0v3.675a1.313 1.313 0 1 0 2.625 0V5.335a1.575 1.575 0 1 1 1.05 0v3.502a2.362 2.362 0 1 1-4.725 0V5.162a1.312 1.312 0 1 0-2.625 0v3.413h1.575l-2.1 2.625-2.1-2.625H2.8Z"></path><path fill=url(#a) d="M2.8 8.575V5.162a2.362 2.362 0 1 1 4.725 0v3.675a1.313 1.313 0 1 0 2.625 0V5.335a1.575 1.575 0 1 1 1.05 0v3.502a2.362 2.362 0 1 1-4.725 0V5.162a1.312 1.312 0 1 0-2.625 0v3.413h1.575l-2.1 2.625-2.1-2.625H2.8Z"></path><defs><linearGradient id=a x1=1.225 x2=12.251 y1=6.722 y2=6.779 gradientUnits=userSpaceOnUse><stop stop-color=currentColor></stop><stop offset=1 stop-color=currentColor>`);
2924
3584
  var RouteFill = (props) => {
2925
3585
  return (() => {
2926
- var _el$ = _tmpl$43();
3586
+ var _el$ = _tmpl$47();
2927
3587
  web.spread(_el$, props, true, true);
2928
3588
  return _el$;
2929
3589
  })();
2930
3590
  };
2931
- var _tmpl$44 = /* @__PURE__ */ web.template(`<div><div>`);
3591
+ var _tmpl$48 = /* @__PURE__ */ web.template(`<div><div>`);
2932
3592
  var isInterpolateSizeSupported = () => {
2933
3593
  return CSS.supports("interpolate-size", "allow-keywords");
2934
3594
  };
@@ -2961,7 +3621,7 @@ var Collapsible = (props) => {
2961
3621
  return props.open ? `${scrollHeight()}px` : "0px";
2962
3622
  };
2963
3623
  return (() => {
2964
- var _el$ = _tmpl$44(), _el$2 = _el$.firstChild;
3624
+ var _el$ = _tmpl$48(), _el$2 = _el$.firstChild;
2965
3625
  web.spread(_el$, web.mergeProps({
2966
3626
  get ["class"]() {
2967
3627
  return style("collapsible", props.class);
@@ -2981,7 +3641,7 @@ var Collapsible = (props) => {
2981
3641
  return _el$;
2982
3642
  })();
2983
3643
  };
2984
- var _tmpl$45 = /* @__PURE__ */ web.template(`<label><input type=checkbox class=nt-sr-only><div>`);
3644
+ var _tmpl$49 = /* @__PURE__ */ web.template(`<label><input type=checkbox class=nt-sr-only><div>`);
2985
3645
  var Switch = (props) => {
2986
3646
  const style = useStyle();
2987
3647
  const handleChange = () => {
@@ -3007,7 +3667,7 @@ var Switch = (props) => {
3007
3667
  const state = () => props.state;
3008
3668
  const disabled = () => props.disabled;
3009
3669
  return (() => {
3010
- var _el$ = _tmpl$45(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
3670
+ var _el$ = _tmpl$49(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
3011
3671
  _el$2.addEventListener("change", handleChange);
3012
3672
  web.effect((_p$) => {
3013
3673
  var _v$ = style("channelSwitch", cn("nt-relative nt-inline-flex nt-cursor-pointer nt-items-center", {
@@ -3033,7 +3693,7 @@ var Switch = (props) => {
3033
3693
  };
3034
3694
 
3035
3695
  // src/ui/components/elements/Preferences/ChannelRow.tsx
3036
- var _tmpl$46 = /* @__PURE__ */ web.template(`<div><div><div></div><span></span></div><div>`);
3696
+ var _tmpl$50 = /* @__PURE__ */ web.template(`<div><div><div></div><span></span></div><div>`);
3037
3697
  var ChannelRow = (props) => {
3038
3698
  const style = useStyle();
3039
3699
  const updatePreference = (enabled) => chunk7B52C2XE_js.__async(void 0, null, function* () {
@@ -3047,7 +3707,7 @@ var ChannelRow = (props) => {
3047
3707
  const state = () => props.channel.state;
3048
3708
  const channel = () => props.channel.channel;
3049
3709
  return (() => {
3050
- var _el$ = _tmpl$46(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling;
3710
+ var _el$ = _tmpl$50(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling;
3051
3711
  web.insert(_el$3, web.createComponent(ChannelIcon, {
3052
3712
  appearanceKey: "channel__icon",
3053
3713
  get channel() {
@@ -3170,8 +3830,8 @@ var getLabel = (channel) => {
3170
3830
  };
3171
3831
 
3172
3832
  // src/ui/components/elements/Preferences/PreferencesRow.tsx
3173
- var _tmpl$47 = /* @__PURE__ */ web.template(`<div>`);
3174
- var _tmpl$212 = /* @__PURE__ */ web.template(`<div><div><div><div><span></span></div></div><span>`);
3833
+ var _tmpl$51 = /* @__PURE__ */ web.template(`<div>`);
3834
+ var _tmpl$213 = /* @__PURE__ */ web.template(`<div><div><div><div><span></span></div></div><span>`);
3175
3835
  var _tmpl$310 = /* @__PURE__ */ web.template(`<span>`);
3176
3836
  var iconKeyToComponentMap2 = {
3177
3837
  cogs: Cogs,
@@ -3205,7 +3865,7 @@ var PreferencesRow = (props) => {
3205
3865
  return channels().length > 0;
3206
3866
  },
3207
3867
  get children() {
3208
- var _el$ = _tmpl$212(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$3.nextSibling;
3868
+ var _el$ = _tmpl$213(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$3.nextSibling;
3209
3869
  _el$2.$$click = () => {
3210
3870
  setIsOpenChannels((prev) => !prev);
3211
3871
  };
@@ -3253,7 +3913,7 @@ var PreferencesRow = (props) => {
3253
3913
  return isOpenChannels();
3254
3914
  },
3255
3915
  get children() {
3256
- var _el$7 = _tmpl$47();
3916
+ var _el$7 = _tmpl$51();
3257
3917
  web.insert(_el$7, web.createComponent(solidJs.Index, {
3258
3918
  get each() {
3259
3919
  return channels();
@@ -3326,19 +3986,19 @@ var WorkflowDescription = (props) => {
3326
3986
  return channels.map((c, index) => [c, web.memo(() => index < channels.length - 1 && ", ")]);
3327
3987
  };
3328
3988
  return (() => {
3329
- var _el$9 = _tmpl$47();
3989
+ var _el$9 = _tmpl$51();
3330
3990
  web.insert(_el$9, channelNames);
3331
3991
  web.effect(() => web.className(_el$9, style(props.appearanceKey, cn("nt-text-sm nt-text-foreground-alpha-600 nt-text-start", props.class))));
3332
3992
  return _el$9;
3333
3993
  })();
3334
3994
  };
3335
3995
  web.delegateEvents(["click"]);
3336
- var _tmpl$48 = /* @__PURE__ */ web.template(`<div>`);
3337
- var _tmpl$213 = /* @__PURE__ */ web.template(`<div><div></div><div>`);
3996
+ var _tmpl$53 = /* @__PURE__ */ web.template(`<div>`);
3997
+ var _tmpl$214 = /* @__PURE__ */ web.template(`<div><div></div><div>`);
3338
3998
  var SkeletonText = (props) => {
3339
3999
  const style = useStyle();
3340
4000
  return (() => {
3341
- var _el$ = _tmpl$48();
4001
+ var _el$ = _tmpl$53();
3342
4002
  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))));
3343
4003
  return _el$;
3344
4004
  })();
@@ -3346,7 +4006,7 @@ var SkeletonText = (props) => {
3346
4006
  var SkeletonAvatar = (props) => {
3347
4007
  const style = useStyle();
3348
4008
  return (() => {
3349
- var _el$2 = _tmpl$48();
4009
+ var _el$2 = _tmpl$53();
3350
4010
  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))));
3351
4011
  return _el$2;
3352
4012
  })();
@@ -3354,7 +4014,7 @@ var SkeletonAvatar = (props) => {
3354
4014
  var SkeletonSwitch = (props) => {
3355
4015
  const style = useStyle();
3356
4016
  return (() => {
3357
- var _el$3 = _tmpl$213(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
4017
+ var _el$3 = _tmpl$214(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
3358
4018
  web.effect((_p$) => {
3359
4019
  var _v$ = style(props.appearanceKey, cn("nt-relative nt-inline-flex nt-items-center", props.class)), _v$2 = style(props.appearanceKey, "nt-h-4 nt-w-7 nt-rounded-full nt-bg-gradient-to-r nt-from-foreground-alpha-50 nt-to-transparent"), _v$3 = style(props.thumbAppearanceKey, "nt-absolute nt-top-0.5 nt-left-0.5 nt-size-3 nt-rounded-full nt-bg-background nt-shadow");
3360
4020
  _v$ !== _p$.e && web.className(_el$3, _p$.e = _v$);
@@ -3371,7 +4031,7 @@ var SkeletonSwitch = (props) => {
3371
4031
  };
3372
4032
 
3373
4033
  // src/ui/components/elements/Preferences/PreferencesListSkeleton.tsx
3374
- var _tmpl$49 = /* @__PURE__ */ web.template(`<div>`);
4034
+ var _tmpl$54 = /* @__PURE__ */ web.template(`<div>`);
3375
4035
  var channelIcons = [InApp, Email, Sms, Push, Chat];
3376
4036
  var PreferencesListSkeleton = (props) => {
3377
4037
  const style = useStyle();
@@ -3379,7 +4039,7 @@ var PreferencesListSkeleton = (props) => {
3379
4039
  t
3380
4040
  } = useLocalization();
3381
4041
  return (() => {
3382
- var _el$ = _tmpl$49();
4042
+ var _el$ = _tmpl$54();
3383
4043
  web.insert(_el$, web.createComponent(Motion.div, {
3384
4044
  get animate() {
3385
4045
  return {
@@ -3421,7 +4081,7 @@ var PreferencesListSkeleton = (props) => {
3421
4081
  return style("preferencesList__skeletonIcon", "nt-size-8 nt-p-2 nt-rounded-lg nt-bg-neutral-alpha-100");
3422
4082
  }
3423
4083
  }), (() => {
3424
- var _el$3 = _tmpl$49();
4084
+ var _el$3 = _tmpl$54();
3425
4085
  web.insert(_el$3, web.createComponent(SkeletonText, {
3426
4086
  appearanceKey: "notificationList__skeletonText",
3427
4087
  "class": "nt-h-2 nt-w-1/3 nt-bg-neutral-alpha-50 nt-rounded"
@@ -3439,7 +4099,7 @@ var PreferencesListSkeleton = (props) => {
3439
4099
  }
3440
4100
  });
3441
4101
  })), (() => {
3442
- var _el$2 = _tmpl$49();
4102
+ var _el$2 = _tmpl$54();
3443
4103
  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")));
3444
4104
  return _el$2;
3445
4105
  })()];
@@ -3525,26 +4185,26 @@ var DefaultPreferences = (props) => {
3525
4185
  }
3526
4186
  });
3527
4187
  };
3528
- var _tmpl$50 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 14 14"><path fill=currentColor d="M5.95 1.75c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H4.9v1.05h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V7H4.9v3.15h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V11.2h-3.15a.525.525 0 0 1-.525-.525V4.9H2.8a.525.525 0 0 1-.525-.525v-2.1c0-.29.235-.525.525-.525h3.15Zm4.725 8.4h-2.1v1.05h2.1v-1.05Zm0-4.2h-2.1V7h2.1V5.95ZM5.425 2.8h-2.1v1.05h2.1V2.8Z"></path><path fill=url(#a) d="M5.95 1.75c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H4.9v1.05h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V7H4.9v3.15h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V11.2h-3.15a.525.525 0 0 1-.525-.525V4.9H2.8a.525.525 0 0 1-.525-.525v-2.1c0-.29.235-.525.525-.525h3.15Zm4.725 8.4h-2.1v1.05h2.1v-1.05Zm0-4.2h-2.1V7h2.1V5.95ZM5.425 2.8h-2.1v1.05h2.1V2.8Z"></path><defs><linearGradient id=a x1=2.275 x2=11.725 y1=6.982 y2=7.018 gradientUnits=userSpaceOnUse><stop stop-color=currentColor></stop><stop offset=1 stop-color=currentColor>`);
4188
+ var _tmpl$55 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 14 14"><path fill=currentColor d="M5.95 1.75c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H4.9v1.05h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V7H4.9v3.15h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V11.2h-3.15a.525.525 0 0 1-.525-.525V4.9H2.8a.525.525 0 0 1-.525-.525v-2.1c0-.29.235-.525.525-.525h3.15Zm4.725 8.4h-2.1v1.05h2.1v-1.05Zm0-4.2h-2.1V7h2.1V5.95ZM5.425 2.8h-2.1v1.05h2.1V2.8Z"></path><path fill=url(#a) d="M5.95 1.75c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H4.9v1.05h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V7H4.9v3.15h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V11.2h-3.15a.525.525 0 0 1-.525-.525V4.9H2.8a.525.525 0 0 1-.525-.525v-2.1c0-.29.235-.525.525-.525h3.15Zm4.725 8.4h-2.1v1.05h2.1v-1.05Zm0-4.2h-2.1V7h2.1V5.95ZM5.425 2.8h-2.1v1.05h2.1V2.8Z"></path><defs><linearGradient id=a x1=2.275 x2=11.725 y1=6.982 y2=7.018 gradientUnits=userSpaceOnUse><stop stop-color=currentColor></stop><stop offset=1 stop-color=currentColor>`);
3529
4189
  var NodeTree = (props) => {
3530
4190
  return (() => {
3531
- var _el$ = _tmpl$50();
4191
+ var _el$ = _tmpl$55();
3532
4192
  web.spread(_el$, props, true, true);
3533
4193
  return _el$;
3534
4194
  })();
3535
4195
  };
3536
- var _tmpl$51 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 16 16"><path fill=currentColor d="M8 13A5 5 0 1 1 8 3a5 5 0 0 1 0 10Zm0-1a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm.5-4.75V9.5H9v1H7v-1h.5V8.25H7v-1h1.5ZM8.75 6a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z">`);
4196
+ var _tmpl$56 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 16 16"><path fill=currentColor d="M8 13A5 5 0 1 1 8 3a5 5 0 0 1 0 10Zm0-1a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm.5-4.75V9.5H9v1H7v-1h.5V8.25H7v-1h1.5ZM8.75 6a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z">`);
3537
4197
  var Info = (props) => {
3538
4198
  return (() => {
3539
- var _el$ = _tmpl$51();
4199
+ var _el$ = _tmpl$56();
3540
4200
  web.spread(_el$, props, true, true);
3541
4201
  return _el$;
3542
4202
  })();
3543
4203
  };
3544
4204
 
3545
4205
  // src/ui/components/elements/Preferences/GroupedPreferencesRow.tsx
3546
- var _tmpl$52 = /* @__PURE__ */ web.template(`<div><div><span data-localization=preferences.group.info></span></div><div>`);
3547
- var _tmpl$214 = /* @__PURE__ */ web.template(`<div><div><div><span></span></div><div><span>`);
4206
+ var _tmpl$57 = /* @__PURE__ */ web.template(`<div><div><span data-localization=preferences.group.info></span></div><div>`);
4207
+ var _tmpl$215 = /* @__PURE__ */ web.template(`<div><div><div><span></span></div><div><span>`);
3548
4208
  var GroupedPreferencesRow = (props) => {
3549
4209
  const style = useStyle();
3550
4210
  const {
@@ -3609,7 +4269,7 @@ var GroupedPreferencesRow = (props) => {
3609
4269
  return Object.keys(uniqueChannels()).length > 0;
3610
4270
  },
3611
4271
  get children() {
3612
- var _el$ = _tmpl$214(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild;
4272
+ var _el$ = _tmpl$215(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild;
3613
4273
  _el$2.$$click = () => {
3614
4274
  setIsOpened((prev) => !prev);
3615
4275
  };
@@ -3643,7 +4303,7 @@ var GroupedPreferencesRow = (props) => {
3643
4303
  return isOpened();
3644
4304
  },
3645
4305
  get children() {
3646
- var _el$7 = _tmpl$52(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$10 = _el$8.nextSibling;
4306
+ var _el$7 = _tmpl$57(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$10 = _el$8.nextSibling;
3647
4307
  web.insert(_el$8, web.createComponent(solidJs.Index, {
3648
4308
  get each() {
3649
4309
  return Object.keys(uniqueChannels());
@@ -3767,7 +4427,7 @@ var GroupedPreferences = (props) => {
3767
4427
  };
3768
4428
 
3769
4429
  // src/ui/components/elements/Preferences/Preferences.tsx
3770
- var _tmpl$53 = /* @__PURE__ */ web.template(`<div>`);
4430
+ var _tmpl$58 = /* @__PURE__ */ web.template(`<div>`);
3771
4431
  var Preferences = () => {
3772
4432
  var _a;
3773
4433
  const novu = useNovu();
@@ -3854,7 +4514,7 @@ var Preferences = () => {
3854
4514
  })) != null ? _c : [];
3855
4515
  });
3856
4516
  return (() => {
3857
- var _el$ = _tmpl$53();
4517
+ var _el$ = _tmpl$58();
3858
4518
  web.insert(_el$, web.createComponent(PreferencesRow, {
3859
4519
  iconKey: "cogs",
3860
4520
  get preference() {
@@ -3895,646 +4555,186 @@ var Preferences = () => {
3895
4555
  get children() {
3896
4556
  return web.createComponent(GroupedPreferences, {
3897
4557
  get groups() {
3898
- return groupedPreferences();
3899
- },
3900
- get loading() {
3901
- return loading();
3902
- },
3903
- updatePreference,
3904
- bulkUpdatePreferences
3905
- });
3906
- }
3907
- }), null);
3908
- web.effect(() => web.className(_el$, style("preferencesContainer", "nt-px-3 nt-py-4 nt-flex nt-flex-col nt-gap-1 nt-overflow-y-auto nt-h-full nt-pr-0 [scrollbar-gutter:stable]")));
3909
- return _el$;
3910
- })();
3911
- };
3912
- var _tmpl$54 = /* @__PURE__ */ web.template(`<div><div data-localization=preferences.title>`);
3913
- var PreferencesHeader = (props) => {
3914
- const style = useStyle();
3915
- const {
3916
- t
3917
- } = useLocalization();
3918
- const arrowLeftIconClass = style("preferencesHeader__back__button__icon", "nt-size-4", {
3919
- iconKey: "arrowLeft"
3920
- });
3921
- return (() => {
3922
- var _el$ = _tmpl$54(), _el$2 = _el$.firstChild;
3923
- web.insert(_el$, web.createComponent(solidJs.Show, {
3924
- get when() {
3925
- return props.navigateToNotifications;
3926
- },
3927
- children: (navigateToNotifications) => web.createComponent(Button, {
3928
- appearanceKey: "preferencesHeader__back__button",
3929
- "class": "nt-text-foreground-alpha-600",
3930
- variant: "unstyled",
3931
- size: "none",
3932
- get onClick() {
3933
- return navigateToNotifications();
3934
- },
3935
- get children() {
3936
- return web.createComponent(IconRendererWrapper, {
3937
- iconKey: "arrowLeft",
3938
- "class": arrowLeftIconClass,
3939
- get fallback() {
3940
- return web.createComponent(ArrowLeft, {
3941
- "class": arrowLeftIconClass
3942
- });
3943
- }
3944
- });
3945
- }
3946
- })
3947
- }), _el$2);
3948
- web.insert(_el$2, () => t("preferences.title"));
3949
- web.effect((_p$) => {
3950
- var _v$ = style("preferencesHeader", "nt-flex nt-bg-neutral-alpha-25 nt-shrink-0 nt-border-b nt-border-border nt-items-center nt-py-3.5 nt-px-4 nt-gap-2"), _v$2 = style("preferencesHeader__title", "nt-text-base nt-font-medium");
3951
- _v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
3952
- _v$2 !== _p$.t && web.className(_el$2, _p$.t = _v$2);
3953
- return _p$;
3954
- }, {
3955
- e: void 0,
3956
- t: void 0
3957
- });
3958
- return _el$;
3959
- })();
3960
- };
3961
- var useTabsDropdown = ({ tabs }) => {
3962
- const [tabsList, setTabsList] = solidJs.createSignal();
3963
- const [visibleTabs, setVisibleTabs] = solidJs.createSignal([]);
3964
- const [dropdownTabs, setDropdownTabs] = solidJs.createSignal([]);
3965
- solidJs.onMount(() => {
3966
- const tabsListEl = tabsList();
3967
- if (!tabsListEl) return;
3968
- const tabsElements = [...tabsListEl.querySelectorAll('[role="tab"]')];
3969
- const observer = new IntersectionObserver(
3970
- (entries) => {
3971
- let visibleTabIds = entries.filter((entry) => entry.isIntersecting && entry.intersectionRatio === 1).map((entry) => entry.target.id);
3972
- if (tabsElements.length === visibleTabIds.length) {
3973
- setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
3974
- observer.disconnect();
3975
- return;
3976
- }
3977
- visibleTabIds = visibleTabIds.slice(0, -1);
3978
- setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
3979
- setDropdownTabs(tabs.filter((tab) => !visibleTabIds.includes(tab.label)));
3980
- observer.disconnect();
3981
- },
3982
- { root: tabsListEl }
3983
- );
3984
- for (const tabElement of tabsElements) {
3985
- observer.observe(tabElement);
3986
- }
3987
- });
3988
- return { dropdownTabs, setTabsList, visibleTabs };
3989
- };
3990
- var _tmpl$55 = /* @__PURE__ */ web.template(`<strong>`);
3991
- var _tmpl$215 = /* @__PURE__ */ web.template(`<p>`);
3992
- var Bold = (props) => {
3993
- const style = useStyle();
3994
- return (() => {
3995
- var _el$ = _tmpl$55();
3996
- web.insert(_el$, () => props.children);
3997
- web.effect(() => web.className(_el$, style(props.appearanceKey || "strong", "nt-font-semibold")));
3998
- return _el$;
3999
- })();
4000
- };
4001
- var Text = (props) => props.children;
4002
- var Markdown = (props) => {
4003
- const [local, rest] = solidJs.splitProps(props, ["class", "children", "appearanceKey", "strongAppearanceKey"]);
4004
- const style = useStyle();
4005
- const tokens = solidJs.createMemo(() => chunkERC62PGI_js.parseMarkdownIntoTokens(local.children));
4006
- return (() => {
4007
- var _el$2 = _tmpl$215();
4008
- web.spread(_el$2, web.mergeProps({
4009
- get ["class"]() {
4010
- return style(local.appearanceKey, cn(local.class));
4011
- }
4012
- }, rest), false, true);
4013
- web.insert(_el$2, web.createComponent(solidJs.For, {
4014
- get each() {
4015
- return tokens();
4016
- },
4017
- children: (token) => {
4018
- if (token.type === "bold") {
4019
- return web.createComponent(Bold, {
4020
- get appearanceKey() {
4021
- return local.strongAppearanceKey;
4022
- },
4023
- get children() {
4024
- return token.content;
4025
- }
4026
- });
4027
- } else {
4028
- return web.createComponent(Text, {
4029
- get children() {
4030
- return token.content;
4031
- }
4032
- });
4033
- }
4034
- }
4035
- }));
4036
- return _el$2;
4037
- })();
4038
- };
4039
- var Markdown_default = Markdown;
4040
- var _tmpl$56 = /* @__PURE__ */ web.template(`<span>`);
4041
- var badgeVariants = classVarianceAuthority.cva(cn("nt-inline-flex nt-flex-row nt-gap-1 nt-items-center"), {
4042
- variants: {
4043
- variant: {
4044
- secondary: "nt-bg-neutral-alpha-50"
4045
- },
4046
- size: {
4047
- default: "nt-px-1 nt-py-px nt-rounded-sm nt-text-xs nt-px-1"
4048
- }
4049
- },
4050
- defaultVariants: {
4051
- variant: "secondary",
4052
- size: "default"
4053
- }
4054
- });
4055
- var Badge = (props) => {
4056
- const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
4057
- const style = useStyle();
4058
- return (() => {
4059
- var _el$ = _tmpl$56();
4060
- web.spread(_el$, web.mergeProps({
4061
- get ["data-variant"]() {
4062
- return props.variant;
4063
- },
4064
- get ["data-size"]() {
4065
- return props.size;
4066
- },
4067
- get ["class"]() {
4068
- return style(local.appearanceKey || "badge", cn(badgeVariants({
4069
- variant: props.variant,
4070
- size: props.size
4071
- }), local.class));
4072
- }
4073
- }, rest), false, false);
4074
- return _el$;
4075
- })();
4076
- };
4077
- var TooltipContext = solidJs.createContext(void 0);
4078
- function TooltipRoot(props) {
4079
- const [reference, setReference] = solidJs.createSignal(null);
4080
- const [floating, setFloating] = solidJs.createSignal(null);
4081
- const position = solidFloatingUi.useFloating(reference, floating, {
4082
- placement: props.placement || "top",
4083
- strategy: "fixed",
4084
- whileElementsMounted: dom.autoUpdate,
4085
- middleware: [dom.offset(10), dom.flip({
4086
- fallbackPlacements: props.fallbackPlacements || ["bottom"]
4087
- }), dom.shift()]
4088
- });
4089
- const [isOpen, setIsOpen] = useUncontrolledState({
4090
- value: props.open,
4091
- fallbackValue: false
4092
- });
4093
- return web.createComponent(TooltipContext.Provider, {
4094
- value: {
4095
- reference,
4096
- setReference,
4097
- floating,
4098
- setFloating,
4099
- open: isOpen,
4100
- setOpen: setIsOpen,
4101
- floatingStyles: () => {
4102
- var _a, _b;
4103
- return {
4104
- position: position.strategy,
4105
- top: `${(_a = position.y) != null ? _a : 0}px`,
4106
- left: `${(_b = position.x) != null ? _b : 0}px`
4107
- };
4108
- }
4109
- },
4110
- get children() {
4111
- return props.children;
4112
- }
4113
- });
4114
- }
4115
- function useTooltip() {
4116
- const context = solidJs.useContext(TooltipContext);
4117
- if (!context) {
4118
- throw new Error("useTooltip must be used within Tooltip.Root component");
4119
- }
4120
- return context;
4121
- }
4122
-
4123
- // src/ui/components/primitives/Tooltip/TooltipContent.tsx
4124
- var _tmpl$57 = /* @__PURE__ */ web.template(`<div>`);
4125
- var tooltipContentVariants = () => "nt-bg-foreground nt-p-2 nt-shadow-tooltip nt-rounded-lg nt-text-background nt-text-xs";
4126
- var TooltipContentBody = (props) => {
4127
- const {
4128
- open,
4129
- setFloating,
4130
- floating,
4131
- floatingStyles
4132
- } = useTooltip();
4133
- const {
4134
- setActive,
4135
- removeActive
4136
- } = useFocusManager();
4137
- const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "style"]);
4138
- const style = useStyle();
4139
- solidJs.onMount(() => {
4140
- const floatingEl = floating();
4141
- setActive(floatingEl);
4142
- solidJs.onCleanup(() => {
4143
- removeActive(floatingEl);
4144
- });
4145
- });
4146
- return (() => {
4147
- var _el$ = _tmpl$57();
4148
- web.use(setFloating, _el$);
4149
- web.spread(_el$, web.mergeProps({
4150
- get ["class"]() {
4151
- return web.memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tooltipContent", tooltipContentVariants());
4152
- },
4153
- get style() {
4154
- return chunk7B52C2XE_js.__spreadProps(chunk7B52C2XE_js.__spreadValues({}, floatingStyles()), {
4155
- "z-index": 99999
4558
+ return groupedPreferences();
4559
+ },
4560
+ get loading() {
4561
+ return loading();
4562
+ },
4563
+ updatePreference,
4564
+ bulkUpdatePreferences
4156
4565
  });
4157
- },
4158
- get ["data-open"]() {
4159
- return open();
4160
4566
  }
4161
- }, rest), false, false);
4567
+ }), null);
4568
+ web.effect(() => web.className(_el$, style("preferencesContainer", "nt-px-3 nt-py-4 nt-flex nt-flex-col nt-gap-1 nt-overflow-y-auto nt-h-full nt-pr-0 [scrollbar-gutter:stable]")));
4162
4569
  return _el$;
4163
4570
  })();
4164
4571
  };
4165
- var TooltipContent = (props) => {
4166
- const {
4167
- open
4168
- } = useTooltip();
4572
+ var _tmpl$59 = /* @__PURE__ */ web.template(`<div><div data-localization=preferences.title>`);
4573
+ var PreferencesHeader = (props) => {
4574
+ const style = useStyle();
4169
4575
  const {
4170
- container
4171
- } = useAppearance();
4172
- const portalContainer = () => {
4173
- var _a;
4174
- return (_a = container()) != null ? _a : document.body;
4175
- };
4176
- return web.createComponent(solidJs.Show, {
4177
- get when() {
4178
- return open();
4179
- },
4180
- get children() {
4181
- return web.createComponent(web.Portal, {
4182
- get mount() {
4183
- return portalContainer();
4576
+ t
4577
+ } = useLocalization();
4578
+ const arrowLeftIconClass = style("preferencesHeader__back__button__icon", "nt-size-4", {
4579
+ iconKey: "arrowLeft"
4580
+ });
4581
+ return (() => {
4582
+ var _el$ = _tmpl$59(), _el$2 = _el$.firstChild;
4583
+ web.insert(_el$, web.createComponent(solidJs.Show, {
4584
+ get when() {
4585
+ return props.navigateToNotifications;
4586
+ },
4587
+ children: (navigateToNotifications) => web.createComponent(Button, {
4588
+ appearanceKey: "preferencesHeader__back__button",
4589
+ "class": "nt-text-foreground-alpha-600",
4590
+ variant: "unstyled",
4591
+ size: "none",
4592
+ get onClick() {
4593
+ return navigateToNotifications();
4184
4594
  },
4185
4595
  get children() {
4186
- return web.createComponent(Root, {
4187
- get children() {
4188
- return web.createComponent(TooltipContentBody, props);
4596
+ return web.createComponent(IconRendererWrapper, {
4597
+ iconKey: "arrowLeft",
4598
+ "class": arrowLeftIconClass,
4599
+ get fallback() {
4600
+ return web.createComponent(ArrowLeft, {
4601
+ "class": arrowLeftIconClass
4602
+ });
4189
4603
  }
4190
4604
  });
4191
4605
  }
4192
- });
4193
- }
4194
- });
4195
- };
4196
- var _tmpl$58 = /* @__PURE__ */ web.template(`<button>`);
4197
- var TooltipTrigger = (props) => {
4198
- const {
4199
- setReference,
4200
- setOpen
4201
- } = useTooltip();
4202
- const style = useStyle();
4203
- const [local, rest] = solidJs.splitProps(props, ["appearanceKey", "asChild", "onClick", "onMouseEnter", "onMouseLeave", "ref"]);
4204
- const handleMouseEnter = (e) => {
4205
- if (typeof local.onMouseEnter === "function") {
4206
- local.onMouseEnter(e);
4207
- }
4208
- setOpen(true);
4209
- };
4210
- const ref = solidJs.createMemo(() => local.ref ? mergeRefs(setReference, local.ref) : setReference);
4211
- const handleMouseLeave = (e) => {
4212
- if (typeof local.onMouseLeave === "function") {
4213
- local.onMouseLeave(e);
4214
- }
4215
- setOpen(false);
4216
- };
4217
- if (local.asChild) {
4218
- return web.createComponent(web.Dynamic, web.mergeProps({
4219
- get component() {
4220
- return local.asChild;
4221
- },
4222
- ref(r$) {
4223
- var _ref$ = ref();
4224
- typeof _ref$ === "function" && _ref$(r$);
4225
- },
4226
- onMouseEnter: handleMouseEnter,
4227
- onMouseLeave: handleMouseLeave
4228
- }, rest));
4229
- }
4230
- return (() => {
4231
- var _el$ = _tmpl$58();
4232
- _el$.addEventListener("mouseleave", () => {
4233
- setOpen(false);
4234
- });
4235
- _el$.addEventListener("mouseenter", () => {
4236
- setOpen(true);
4606
+ })
4607
+ }), _el$2);
4608
+ web.insert(_el$2, () => t("preferences.title"));
4609
+ web.effect((_p$) => {
4610
+ var _v$ = style("preferencesHeader", "nt-flex nt-bg-neutral-alpha-25 nt-shrink-0 nt-border-b nt-border-border nt-items-center nt-py-3.5 nt-px-4 nt-gap-2"), _v$2 = style("preferencesHeader__title", "nt-text-base nt-font-medium");
4611
+ _v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
4612
+ _v$2 !== _p$.t && web.className(_el$2, _p$.t = _v$2);
4613
+ return _p$;
4614
+ }, {
4615
+ e: void 0,
4616
+ t: void 0
4237
4617
  });
4238
- var _ref$2 = ref();
4239
- typeof _ref$2 === "function" && web.use(_ref$2, _el$);
4240
- web.spread(_el$, web.mergeProps({
4241
- get ["class"]() {
4242
- return style(local.appearanceKey || "tooltipTrigger");
4243
- }
4244
- }, rest), false, true);
4245
- web.insert(_el$, () => props.children);
4246
4618
  return _el$;
4247
4619
  })();
4248
4620
  };
4249
-
4250
- // src/ui/components/primitives/Tooltip/index.ts
4251
- var Tooltip = {
4252
- Root: TooltipRoot,
4253
- /**
4254
- * Tooltip.Trigger renders a `button` and has no default styling.
4255
- */
4256
- Trigger: TooltipTrigger,
4257
- /**
4258
- * Tooltip.Content renders a `div` and has popover specific styling.
4259
- */
4260
- Content: TooltipContent
4261
- };
4262
- var _tmpl$59 = /* @__PURE__ */ web.template(`<div>`);
4263
- var _tmpl$216 = /* @__PURE__ */ web.template(`<div><span>`);
4264
- var DatePickerContext = solidJs.createContext({
4265
- currentDate: () => /* @__PURE__ */ new Date(),
4266
- setCurrentDate: () => {
4267
- },
4268
- viewMonth: () => /* @__PURE__ */ new Date(),
4269
- setViewMonth: () => {
4270
- },
4271
- selectedDate: () => null,
4272
- setSelectedDate: () => {
4273
- },
4274
- maxDays: () => 0
4275
- });
4276
- var useDatePicker = () => solidJs.useContext(DatePickerContext);
4277
- var DatePicker = (props) => {
4278
- const [local, rest] = solidJs.splitProps(props, ["children", "value", "onDateChange", "class", "maxDays"]);
4279
- const style = useStyle();
4280
- const today = /* @__PURE__ */ new Date();
4281
- today.setHours(0, 0, 0, 0);
4282
- const [currentDate, setCurrentDate] = solidJs.createSignal(today);
4283
- const [viewMonth, setViewMonth] = solidJs.createSignal(today);
4284
- const [selectedDate, setSelectedDate] = solidJs.createSignal(local.value ? new Date(local.value) : null);
4285
- const handleDateSelect = (date) => {
4286
- setSelectedDate(date);
4287
- if (local.onDateChange) {
4288
- local.onDateChange(date);
4289
- }
4290
- };
4291
- return web.createComponent(DatePickerContext.Provider, {
4292
- value: {
4293
- currentDate,
4294
- setCurrentDate,
4295
- viewMonth,
4296
- setViewMonth,
4297
- selectedDate,
4298
- setSelectedDate: handleDateSelect,
4299
- maxDays: () => props.maxDays
4300
- },
4301
- get children() {
4302
- var _el$ = _tmpl$59();
4303
- web.spread(_el$, web.mergeProps({
4304
- get ["class"]() {
4305
- return style("datePicker", cn("nt-p-2", local.class));
4621
+ var useTabsDropdown = ({ tabs }) => {
4622
+ const [tabsList, setTabsList] = solidJs.createSignal();
4623
+ const [visibleTabs, setVisibleTabs] = solidJs.createSignal([]);
4624
+ const [dropdownTabs, setDropdownTabs] = solidJs.createSignal([]);
4625
+ solidJs.onMount(() => {
4626
+ const tabsListEl = tabsList();
4627
+ if (!tabsListEl) return;
4628
+ const tabsElements = [...tabsListEl.querySelectorAll('[role="tab"]')];
4629
+ const observer = new IntersectionObserver(
4630
+ (entries) => {
4631
+ let visibleTabIds = entries.filter((entry) => entry.isIntersecting && entry.intersectionRatio === 1).map((entry) => entry.target.id);
4632
+ if (tabsElements.length === visibleTabIds.length) {
4633
+ setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
4634
+ observer.disconnect();
4635
+ return;
4306
4636
  }
4307
- }, rest), false, true);
4308
- web.insert(_el$, () => local.children);
4309
- return _el$;
4637
+ visibleTabIds = visibleTabIds.slice(0, -1);
4638
+ setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
4639
+ setDropdownTabs(tabs.filter((tab) => !visibleTabIds.includes(tab.label)));
4640
+ observer.disconnect();
4641
+ },
4642
+ { root: tabsListEl }
4643
+ );
4644
+ for (const tabElement of tabsElements) {
4645
+ observer.observe(tabElement);
4310
4646
  }
4311
4647
  });
4312
- };
4313
- var DatePickerHeader = (props) => {
4314
- const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "children"]);
4315
- const style = useStyle();
4316
- const {
4317
- viewMonth,
4318
- setViewMonth,
4319
- currentDate,
4320
- maxDays
4321
- } = useDatePicker();
4322
- useAppearance();
4323
- const prevIconClass = style("datePickerControlPrevTrigger__icon", "nt-size-4 nt-text-foreground-alpha-700", {
4324
- iconKey: "arrowLeft"
4325
- });
4326
- const nextIconClass = style("datePickerControlNextTrigger__icon", "nt-size-4 nt-text-foreground-alpha-700", {
4327
- iconKey: "arrowRight"
4328
- });
4329
- const handlePrevMonth = () => {
4330
- const date = new Date(viewMonth());
4331
- date.setMonth(date.getMonth() - 1);
4332
- const currentMonth = currentDate();
4333
- if (date.getFullYear() < currentMonth.getFullYear() || date.getFullYear() === currentMonth.getFullYear() && date.getMonth() < currentMonth.getMonth()) {
4334
- return;
4335
- }
4336
- setViewMonth(date);
4337
- };
4338
- const handleNextMonth = () => {
4339
- const date = new Date(viewMonth());
4340
- date.setMonth(date.getMonth() + 1);
4341
- const maxDaysValue = maxDays();
4342
- if (maxDaysValue > 0) {
4343
- const maxDate = new Date(currentDate());
4344
- maxDate.setDate(maxDate.getDate() + maxDaysValue);
4345
- if (date.getFullYear() > maxDate.getFullYear() || date.getFullYear() === maxDate.getFullYear() && date.getMonth() > maxDate.getMonth()) {
4346
- return;
4347
- }
4348
- }
4349
- setViewMonth(date);
4350
- };
4351
- const isPrevDisabled = () => {
4352
- const current = currentDate();
4353
- const view = viewMonth();
4354
- return view.getFullYear() === current.getFullYear() && view.getMonth() === current.getMonth();
4355
- };
4356
- const isNextDisabled = () => {
4357
- const maxDaysValue = maxDays();
4358
- if (maxDaysValue === 0) return false;
4359
- const view = viewMonth();
4360
- const maxDate = new Date(currentDate());
4361
- maxDate.setDate(maxDate.getDate() + maxDaysValue);
4362
- return view.getFullYear() === maxDate.getFullYear() && view.getMonth() === maxDate.getMonth();
4363
- };
4648
+ return { dropdownTabs, setTabsList, visibleTabs };
4649
+ };
4650
+ var _tmpl$60 = /* @__PURE__ */ web.template(`<strong>`);
4651
+ var _tmpl$216 = /* @__PURE__ */ web.template(`<p>`);
4652
+ var Bold = (props) => {
4653
+ const style = useStyle();
4654
+ return (() => {
4655
+ var _el$ = _tmpl$60();
4656
+ web.insert(_el$, () => props.children);
4657
+ web.effect(() => web.className(_el$, style(props.appearanceKey || "strong", "nt-font-semibold")));
4658
+ return _el$;
4659
+ })();
4660
+ };
4661
+ var Text = (props) => props.children;
4662
+ var Markdown = (props) => {
4663
+ const [local, rest] = solidJs.splitProps(props, ["class", "children", "appearanceKey", "strongAppearanceKey"]);
4664
+ const style = useStyle();
4665
+ const tokens = solidJs.createMemo(() => chunkERC62PGI_js.parseMarkdownIntoTokens(local.children));
4364
4666
  return (() => {
4365
- var _el$2 = _tmpl$216(), _el$3 = _el$2.firstChild;
4667
+ var _el$2 = _tmpl$216();
4366
4668
  web.spread(_el$2, web.mergeProps({
4367
4669
  get ["class"]() {
4368
- return style(local.appearanceKey || "datePickerControl", cn("nt-flex nt-items-center nt-justify-between nt-gap-1.5 nt-h-7 nt-p-1 nt-mb-2 nt-rounded-lg nt-bg-background", local.class));
4670
+ return style(local.appearanceKey, cn(local.class));
4369
4671
  }
4370
4672
  }, rest), false, true);
4371
- web.insert(_el$2, web.createComponent(Button, {
4372
- appearanceKey: "datePickerControlPrevTrigger",
4373
- variant: "ghost",
4374
- onClick: (e) => {
4375
- e.stopPropagation();
4376
- handlePrevMonth();
4377
- },
4378
- get disabled() {
4379
- return isPrevDisabled();
4673
+ web.insert(_el$2, web.createComponent(solidJs.For, {
4674
+ get each() {
4675
+ return tokens();
4380
4676
  },
4381
- "class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
4382
- get children() {
4383
- return web.createComponent(IconRendererWrapper, {
4384
- iconKey: "arrowLeft",
4385
- "class": prevIconClass,
4386
- get fallback() {
4387
- return web.createComponent(ArrowLeft, {
4388
- "class": prevIconClass
4389
- });
4390
- }
4391
- });
4677
+ children: (token) => {
4678
+ if (token.type === "bold") {
4679
+ return web.createComponent(Bold, {
4680
+ get appearanceKey() {
4681
+ return local.strongAppearanceKey;
4682
+ },
4683
+ get children() {
4684
+ return token.content;
4685
+ }
4686
+ });
4687
+ } else {
4688
+ return web.createComponent(Text, {
4689
+ get children() {
4690
+ return token.content;
4691
+ }
4692
+ });
4693
+ }
4392
4694
  }
4393
- }), _el$3);
4394
- web.insert(_el$3, () => viewMonth().toLocaleDateString("en-US", {
4395
- month: "long",
4396
- year: "numeric"
4397
4695
  }));
4398
- web.insert(_el$2, web.createComponent(Button, {
4399
- appearanceKey: "datePickerControlNextTrigger",
4400
- variant: "ghost",
4401
- onClick: (e) => {
4402
- e.stopPropagation();
4403
- handleNextMonth();
4404
- },
4405
- get disabled() {
4406
- return isNextDisabled();
4407
- },
4408
- "class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
4409
- get children() {
4410
- return web.createComponent(IconRendererWrapper, {
4411
- iconKey: "arrowRight",
4412
- "class": nextIconClass,
4413
- get fallback() {
4414
- return web.createComponent(ArrowRight, {
4415
- "class": nextIconClass
4416
- });
4417
- }
4418
- });
4419
- }
4420
- }), null);
4421
- web.effect(() => web.className(_el$3, style("datePickerHeaderMonth", "nt-text-sm nt-font-medium nt-text-foreground-alpha-700")));
4422
4696
  return _el$2;
4423
4697
  })();
4424
4698
  };
4425
- var DatePickerGridCellTrigger = (props) => {
4426
- const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey", "date"]);
4427
- const {
4428
- selectedDate,
4429
- viewMonth,
4430
- setSelectedDate,
4431
- currentDate,
4432
- maxDays
4433
- } = useDatePicker();
4434
- const {
4435
- t
4436
- } = useLocalization();
4437
- const isCurrentMonth = props.date.getMonth() === viewMonth().getMonth();
4438
- const isPastDate = () => {
4439
- const today = currentDate();
4440
- return props.date < today;
4441
- };
4442
- const isFutureDate = () => {
4443
- const maxDaysValue = maxDays();
4444
- if (maxDaysValue === 0) return false;
4445
- const maxDate = new Date(currentDate());
4446
- maxDate.setDate(maxDate.getDate() + maxDaysValue);
4447
- return props.date > maxDate;
4448
- };
4449
- const isDisabled = !isCurrentMonth || isPastDate() || isFutureDate();
4450
- const isExceedingLimit = () => {
4451
- return isCurrentMonth && isFutureDate();
4452
- };
4453
- const buttonElement = web.createComponent(Button, web.mergeProps({
4454
- appearanceKey: "datePickerCalendarDay__button",
4455
- variant: "ghost",
4456
- disabled: isDisabled,
4457
- onClick: (e) => {
4458
- e.stopPropagation();
4459
- setSelectedDate(local.date);
4699
+ var Markdown_default = Markdown;
4700
+ var _tmpl$61 = /* @__PURE__ */ web.template(`<span>`);
4701
+ var badgeVariants = classVarianceAuthority.cva(cn("nt-inline-flex nt-flex-row nt-gap-1 nt-items-center"), {
4702
+ variants: {
4703
+ variant: {
4704
+ secondary: "nt-bg-neutral-alpha-50"
4460
4705
  },
4461
- get ["class"]() {
4462
- var _a;
4463
- return cn("nt-size-8 nt-w-full nt-rounded-md nt-flex nt-items-center nt-justify-center", {
4464
- "nt-text-muted-foreground disabled:nt-opacity-20": !isCurrentMonth || isPastDate(),
4465
- "nt-text-foreground-alpha-700": isCurrentMonth && !isPastDate() && !isFutureDate()
4466
- }, {
4467
- "nt-bg-primary-alpha-300 hover:nt-bg-primary-alpha-400": ((_a = selectedDate()) == null ? void 0 : _a.toDateString()) === local.date.toDateString()
4468
- });
4469
- }
4470
- }, rest, {
4471
- get children() {
4472
- return local.date.getDate();
4706
+ size: {
4707
+ default: "nt-px-1 nt-py-px nt-rounded-sm nt-text-xs nt-px-1"
4473
4708
  }
4474
- }));
4475
- if (isExceedingLimit()) {
4476
- return web.createComponent(Tooltip.Root, {
4477
- get children() {
4478
- return [web.createComponent(Tooltip.Trigger, {
4479
- children: buttonElement
4480
- }), web.createComponent(Tooltip.Content, {
4481
- get children() {
4482
- return t("snooze.datePicker.exceedingLimitTooltip", {
4483
- days: maxDays()
4484
- });
4485
- }
4486
- })];
4487
- }
4488
- });
4709
+ },
4710
+ defaultVariants: {
4711
+ variant: "secondary",
4712
+ size: "default"
4489
4713
  }
4490
- return buttonElement;
4491
- };
4492
- var DatePickerCalendar = (props) => {
4714
+ });
4715
+ var Badge = (props) => {
4493
4716
  const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
4494
4717
  const style = useStyle();
4495
- const {
4496
- viewMonth
4497
- } = useDatePicker();
4498
- const getDaysInMonth = () => {
4499
- const year = viewMonth().getFullYear();
4500
- const month = viewMonth().getMonth();
4501
- const firstDay = new Date(year, month, 1);
4502
- const daysInMonth = new Date(year, month + 1, 0).getDate();
4503
- const startingDay = firstDay.getDay();
4504
- const days = [];
4505
- for (let i = 0; i < startingDay; i += 1) {
4506
- const prevMonthDay = new Date(year, month, -i);
4507
- days.unshift(prevMonthDay);
4508
- }
4509
- for (let i = 1; i <= daysInMonth; i += 1) {
4510
- days.push(new Date(year, month, i));
4511
- }
4512
- const remainingCells = 7 - days.length % 7;
4513
- if (remainingCells < 7) {
4514
- for (let i = 1; i <= remainingCells; i += 1) {
4515
- days.push(new Date(year, month + 1, i));
4516
- }
4517
- }
4518
- return days;
4519
- };
4520
4718
  return (() => {
4521
- var _el$8 = _tmpl$59();
4522
- _el$8.$$click = (e) => e.stopPropagation();
4523
- web.spread(_el$8, web.mergeProps({
4719
+ var _el$ = _tmpl$61();
4720
+ web.spread(_el$, web.mergeProps({
4721
+ get ["data-variant"]() {
4722
+ return props.variant;
4723
+ },
4724
+ get ["data-size"]() {
4725
+ return props.size;
4726
+ },
4524
4727
  get ["class"]() {
4525
- return style(local.appearanceKey || "datePickerCalendar", cn("nt-grid nt-grid-cols-7 nt-gap-1", local.class));
4728
+ return style(local.appearanceKey || "badge", cn(badgeVariants({
4729
+ variant: props.variant,
4730
+ size: props.size
4731
+ }), local.class));
4526
4732
  }
4527
- }, rest), false, true);
4528
- web.insert(_el$8, () => getDaysInMonth().map((date) => {
4529
- return web.createComponent(DatePickerGridCellTrigger, {
4530
- date
4531
- });
4532
- }));
4533
- return _el$8;
4733
+ }, rest), false, false);
4734
+ return _el$;
4534
4735
  })();
4535
4736
  };
4536
- web.delegateEvents(["click"]);
4537
- var _tmpl$60 = /* @__PURE__ */ web.template(`<input>`);
4737
+ var _tmpl$63 = /* @__PURE__ */ web.template(`<input>`);
4538
4738
  var inputVariants = classVarianceAuthority.cva(cn(`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`), {
4539
4739
  variants: {
4540
4740
  variant: {
@@ -4554,7 +4754,7 @@ var Input = (props) => {
4554
4754
  const [local, rest] = solidJs.splitProps(props, ["class", "appearanceKey"]);
4555
4755
  const style = useStyle();
4556
4756
  return (() => {
4557
- var _el$ = _tmpl$60();
4757
+ var _el$ = _tmpl$63();
4558
4758
  web.spread(_el$, web.mergeProps({
4559
4759
  get ["data-variant"]() {
4560
4760
  return props.variant;
@@ -4574,7 +4774,7 @@ var Input = (props) => {
4574
4774
  };
4575
4775
 
4576
4776
  // src/ui/components/primitives/TimePicker.tsx
4577
- var _tmpl$61 = /* @__PURE__ */ web.template(`<div><span>:</span><select><option value=AM>AM</option><option value=PM>PM`);
4777
+ var _tmpl$64 = /* @__PURE__ */ web.template(`<div><span>:</span><select><option value=AM>AM</option><option value=PM>PM`);
4578
4778
  var TimePicker = (props) => {
4579
4779
  const [local, rest] = solidJs.splitProps(props, ["value", "onChange", "class", "appearanceKey"]);
4580
4780
  const style = useStyle();
@@ -4614,7 +4814,7 @@ var TimePicker = (props) => {
4614
4814
  }
4615
4815
  };
4616
4816
  return (() => {
4617
- var _el$ = _tmpl$61(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
4817
+ var _el$ = _tmpl$64(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
4618
4818
  _el$.$$click = (e) => e.stopPropagation();
4619
4819
  web.spread(_el$, web.mergeProps({
4620
4820
  get ["class"]() {
@@ -4702,7 +4902,7 @@ var enforceMinMax = (el) => {
4702
4902
  web.delegateEvents(["click"]);
4703
4903
 
4704
4904
  // src/ui/components/Notification/SnoozeDateTimePicker.tsx
4705
- var _tmpl$62 = /* @__PURE__ */ web.template(`<div><div><p></p></div><div>`);
4905
+ var _tmpl$65 = /* @__PURE__ */ web.template(`<div><div><p></p></div><div>`);
4706
4906
  var fiveMinutesFromNow = () => {
4707
4907
  const futureTime = new Date(Date.now() + 5 * 60 * 1e3);
4708
4908
  const hours = futureTime.getHours();
@@ -4799,7 +4999,7 @@ var SnoozeDateTimePicker = (props) => {
4799
4999
  return t("snooze.datePicker.noDateSelectedTooltip");
4800
5000
  });
4801
5001
  return (() => {
4802
- var _el$ = _tmpl$62(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$2.nextSibling;
5002
+ var _el$ = _tmpl$65(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$2.nextSibling;
4803
5003
  _el$.$$click = (e) => e.stopPropagation();
4804
5004
  web.insert(_el$, web.createComponent(DatePicker, {
4805
5005
  onDateChange: (date) => setSelectedDate(date),
@@ -4884,7 +5084,7 @@ var SnoozeDateTimePicker = (props) => {
4884
5084
  web.delegateEvents(["click"]);
4885
5085
 
4886
5086
  // src/ui/components/Notification/NotificationActions.tsx
4887
- var _tmpl$63 = /* @__PURE__ */ web.template(`<div><span>`);
5087
+ var _tmpl$66 = /* @__PURE__ */ web.template(`<div><span>`);
4888
5088
  var _tmpl$217 = /* @__PURE__ */ web.template(`<span>`);
4889
5089
  var SNOOZE_PRESETS = [{
4890
5090
  key: "snooze.options.anHourFromNow",
@@ -4931,7 +5131,7 @@ var SnoozeDropdownItem = (props) => {
4931
5131
  iconKey: "clock"
4932
5132
  });
4933
5133
  const content = [(() => {
4934
- var _el$ = _tmpl$63(), _el$2 = _el$.firstChild;
5134
+ var _el$ = _tmpl$66(), _el$2 = _el$.firstChild;
4935
5135
  web.insert(_el$, web.createComponent(IconRendererWrapper, {
4936
5136
  iconKey: "clock",
4937
5137
  "class": snoozeItemIconClass,
@@ -5328,7 +5528,7 @@ var renderNotificationActions = (notification, status) => {
5328
5528
  };
5329
5529
 
5330
5530
  // src/ui/components/Notification/DefaultNotification.tsx
5331
- var _tmpl$64 = /* @__PURE__ */ web.template(`<img>`);
5531
+ var _tmpl$67 = /* @__PURE__ */ web.template(`<img>`);
5332
5532
  var _tmpl$218 = /* @__PURE__ */ web.template(`<div>`);
5333
5533
  var _tmpl$311 = /* @__PURE__ */ web.template(`<span>`);
5334
5534
  var _tmpl$410 = /* @__PURE__ */ web.template(`<a><div><div></div><div></div><div>`);
@@ -5420,7 +5620,7 @@ var DefaultNotification = (props) => {
5420
5620
  })();
5421
5621
  },
5422
5622
  get children() {
5423
- var _el$2 = _tmpl$64();
5623
+ var _el$2 = _tmpl$67();
5424
5624
  web.effect((_p$) => {
5425
5625
  var _v$ = style("notificationImage", "nt-size-8 nt-rounded-lg nt-object-cover nt-aspect-square"), _v$2 = props.notification.avatar;
5426
5626
  _v$ !== _p$.e && web.className(_el$2, _p$.e = _v$);
@@ -5671,14 +5871,30 @@ var NewMessagesCta = (props) => {
5671
5871
  }
5672
5872
  });
5673
5873
  };
5674
- var _tmpl$65 = /* @__PURE__ */ web.template(`<div>`);
5874
+ var _tmpl$68 = /* @__PURE__ */ web.template(`<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 16 16"fill=none><path fill=currentColor d="M12.1675 2.04492L11.5308 2.68164L11.1069 3.10645L12.9614 4.96094L12.7495 5.17383L10.894 3.31836L10.4692 3.74219L9.40967 4.80273L8.98486 5.22754L9.40967 5.65137L10.5747 6.81738L10.3628 7.03027L9.19775 5.86328L8.77295 5.43945L6.35889 7.85352L6.62744 8.26172C7.00257 8.83177 7.18147 9.50559 7.14111 10.1816L7.10986 10.4707C7.00656 11.1451 6.68818 11.7654 6.20557 12.2402L5.98877 12.4346C5.46027 12.8661 4.80786 13.1133 4.13135 13.1426L3.84033 13.1416C3.0614 13.1032 2.3236 12.7769 1.771 12.2266H1.77002C1.28602 11.744 0.974717 11.1186 0.877441 10.4473L0.849121 10.1572C0.814077 9.47419 1.00158 8.80051 1.38037 8.2373L1.55518 8.00293C2.04954 7.39769 2.75121 6.99767 3.52393 6.88086C4.29677 6.76406 5.0856 6.93884 5.73682 7.37109L6.146 7.64258L6.49268 7.29492L11.9546 1.83203L12.1675 2.04492ZM4.00537 7.10645C3.71967 7.11042 3.4363 7.15732 3.16553 7.24512L2.89893 7.34668C2.63748 7.46146 2.39532 7.61469 2.18018 7.80078L1.97803 7.99316C1.52375 8.46356 1.2476 9.0739 1.18994 9.71973L1.17822 9.99805C1.18392 10.6519 1.41417 11.2812 1.82568 11.7822L2.01318 11.9883C2.47551 12.4506 3.0805 12.7377 3.7251 12.8066L4.00342 12.8232C4.75062 12.8297 5.4708 12.5425 6.0083 12.0234L6.44775 11.5986L6.40186 11.5527C6.44537 11.4885 6.48869 11.4241 6.52686 11.3564L6.65479 11.1016C6.76956 10.84 6.84411 10.563 6.87646 10.2803L6.89404 9.99609C6.89801 9.71049 6.85899 9.42635 6.77881 9.15332L6.68506 8.88379C6.5776 8.61923 6.4315 8.3726 6.25146 8.15234L6.06006 7.94141C5.85804 7.73939 5.62719 7.56844 5.37549 7.43555L5.1167 7.31543C4.76396 7.17222 4.38604 7.10121 4.00537 7.10645Z"stroke=#525866 stroke-width=1.2>`);
5875
+ function Key(props) {
5876
+ return (() => {
5877
+ var _el$ = _tmpl$68();
5878
+ web.spread(_el$, props, true, true);
5879
+ return _el$;
5880
+ })();
5881
+ }
5882
+
5883
+ // src/ui/components/Notification/NotificationListSkeleton.tsx
5884
+ var _tmpl$69 = /* @__PURE__ */ web.template(`<div>`);
5885
+ var _tmpl$219 = /* @__PURE__ */ web.template(`<p data-localization=notifications.emptyNotice>`);
5886
+ var _tmpl$312 = /* @__PURE__ */ web.template(`<div><p>Trigger your notification. No setup needed.</p><p>Temporary &lt;Inbox />, data will expire in 24h. Connect API key to persists messages, enable
5887
+ preferences, and connect email.</p><div><div>`);
5675
5888
  var NotificationListSkeleton = (props) => {
5676
5889
  const style = useStyle();
5677
5890
  const {
5678
5891
  t
5679
5892
  } = useLocalization();
5893
+ const {
5894
+ isKeyless
5895
+ } = useInboxContext();
5680
5896
  return (() => {
5681
- var _el$ = _tmpl$65();
5897
+ var _el$ = _tmpl$69();
5682
5898
  web.insert(_el$, web.createComponent(Motion.div, {
5683
5899
  get animate() {
5684
5900
  return {
@@ -5717,7 +5933,7 @@ var NotificationListSkeleton = (props) => {
5717
5933
  appearanceKey: "notificationList__skeletonAvatar",
5718
5934
  "class": "nt-w-8 nt-h-8 nt-rounded-full nt-bg-neutral-alpha-100"
5719
5935
  }), (() => {
5720
- var _el$3 = _tmpl$65();
5936
+ var _el$3 = _tmpl$69();
5721
5937
  web.insert(_el$3, web.createComponent(SkeletonText, {
5722
5938
  appearanceKey: "notificationList__skeletonText",
5723
5939
  "class": "nt-h-2 nt-w-1/3 nt-bg-neutral-alpha-50 nt-rounded"
@@ -5731,7 +5947,7 @@ var NotificationListSkeleton = (props) => {
5731
5947
  })()];
5732
5948
  }
5733
5949
  }))), (() => {
5734
- var _el$2 = _tmpl$65();
5950
+ var _el$2 = _tmpl$69();
5735
5951
  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")));
5736
5952
  return _el$2;
5737
5953
  })()];
@@ -5763,9 +5979,12 @@ var NotificationListSkeleton = (props) => {
5763
5979
  get ["class"]() {
5764
5980
  return style("notificationListEmptyNotice", "nt-text-center");
5765
5981
  },
5766
- "data-localization": "notifications.emptyNotice",
5767
5982
  get children() {
5768
- return t("notifications.emptyNotice");
5983
+ return web.memo(() => !!isKeyless())() ? web.createComponent(KeylessEmptyState, {}) : (() => {
5984
+ var _el$4 = _tmpl$219();
5985
+ web.insert(_el$4, () => t("notifications.emptyNotice"));
5986
+ return _el$4;
5987
+ })();
5769
5988
  }
5770
5989
  });
5771
5990
  }
@@ -5774,10 +5993,69 @@ var NotificationListSkeleton = (props) => {
5774
5993
  return _el$;
5775
5994
  })();
5776
5995
  };
5996
+ function KeylessEmptyState() {
5997
+ const style = useStyle();
5998
+ const novu = useNovu();
5999
+ return (() => {
6000
+ var _el$5 = _tmpl$312(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.firstChild;
6001
+ web.insert(_el$8, web.createComponent(Button, {
6002
+ variant: "secondary",
6003
+ size: "sm",
6004
+ get ["class"]() {
6005
+ return style(
6006
+ "notificationListEmptyNotice",
6007
+ // eslint-disable-next-line max-len
6008
+ "nt-h-8 nt-px-4 nt-flex nt-items-center nt-justify-center nt-gap-2 nt-bg-white nt-border nt-border-neutral-alpha-100 nt-shadow-sm nt-text-[12px] nt-font-medium"
6009
+ );
6010
+ },
6011
+ onClick: () => window.open("https://go.novu.co/keyless", "_blank", "noopener noreferrer"),
6012
+ get children() {
6013
+ return [web.createComponent(Key, {
6014
+ get ["class"]() {
6015
+ return style("lockIcon", "nt-size-4 nt-mr-2");
6016
+ }
6017
+ }), "Get API key"];
6018
+ }
6019
+ }), _el$9);
6020
+ web.insert(_el$9, web.createComponent(Button, {
6021
+ variant: "default",
6022
+ size: "sm",
6023
+ get ["class"]() {
6024
+ return style(
6025
+ "notificationListEmptyNotice",
6026
+ // eslint-disable-next-line max-len
6027
+ "nt-h-8 nt-px-4 nt-flex nt-items-center nt-justify-center nt-gap-2 nt-bg-neutral-900 nt-text-white nt-shadow-sm nt-text-[12px] nt-font-medium"
6028
+ );
6029
+ },
6030
+ onClick: () => novu.notifications.triggerHelloWorldEvent(),
6031
+ get children() {
6032
+ return [web.createComponent(Bell, {
6033
+ get ["class"]() {
6034
+ return style("bellIcon", "nt-size-4 nt-mr-2");
6035
+ }
6036
+ }), "Send 'Hello World!'"];
6037
+ }
6038
+ }));
6039
+ web.effect((_p$) => {
6040
+ var _v$ = style("notificationListEmptyNotice", "nt--mt-[50px]"), _v$2 = style("strong", "nt-text-[#000000] nt-mb-1"), _v$3 = style("notificationListEmptyNotice", "nt-mb-4"), _v$4 = style("notificationListEmptyNotice", "nt-flex nt-gap-4 nt-justify-center");
6041
+ _v$ !== _p$.e && web.className(_el$5, _p$.e = _v$);
6042
+ _v$2 !== _p$.t && web.className(_el$6, _p$.t = _v$2);
6043
+ _v$3 !== _p$.a && web.className(_el$7, _p$.a = _v$3);
6044
+ _v$4 !== _p$.o && web.className(_el$8, _p$.o = _v$4);
6045
+ return _p$;
6046
+ }, {
6047
+ e: void 0,
6048
+ t: void 0,
6049
+ a: void 0,
6050
+ o: void 0
6051
+ });
6052
+ return _el$5;
6053
+ })();
6054
+ }
5777
6055
 
5778
6056
  // src/ui/components/Notification/NotificationList.tsx
5779
- var _tmpl$66 = /* @__PURE__ */ web.template(`<div>`);
5780
- var _tmpl$219 = /* @__PURE__ */ web.template(`<div><div>`);
6057
+ var _tmpl$70 = /* @__PURE__ */ web.template(`<div>`);
6058
+ var _tmpl$220 = /* @__PURE__ */ web.template(`<div><div>`);
5781
6059
  var NotificationList = (props) => {
5782
6060
  var _a, _b, _c, _d;
5783
6061
  const options = solidJs.createMemo(() => chunk7B52C2XE_js.__spreadProps(chunk7B52C2XE_js.__spreadValues({}, props.filter), {
@@ -5821,7 +6099,7 @@ var NotificationList = (props) => {
5821
6099
  });
5822
6100
  });
5823
6101
  return (() => {
5824
- var _el$ = _tmpl$219(), _el$2 = _el$.firstChild;
6102
+ var _el$ = _tmpl$220(), _el$2 = _el$.firstChild;
5825
6103
  web.insert(_el$, web.createComponent(NewMessagesCta, {
5826
6104
  get count() {
5827
6105
  return count();
@@ -5878,7 +6156,7 @@ var NotificationList = (props) => {
5878
6156
  return !end();
5879
6157
  },
5880
6158
  get children() {
5881
- var _el$3 = _tmpl$66();
6159
+ var _el$3 = _tmpl$70();
5882
6160
  web.use(setEl, _el$3);
5883
6161
  web.insert(_el$3, web.createComponent(NotificationListSkeleton, {
5884
6162
  loading: true
@@ -5900,13 +6178,13 @@ var NotificationList = (props) => {
5900
6178
  return _el$;
5901
6179
  })();
5902
6180
  };
5903
- var _tmpl$67 = /* @__PURE__ */ web.template(`<span>`);
6181
+ var _tmpl$71 = /* @__PURE__ */ web.template(`<span>`);
5904
6182
  var getDisplayCount = (count) => count >= 100 ? "99+" : count;
5905
6183
  var InboxTabUnreadNotificationsCount = (props) => {
5906
6184
  const style = useStyle();
5907
6185
  const displayCount = solidJs.createMemo(() => getDisplayCount(props.count));
5908
6186
  return (() => {
5909
- var _el$ = _tmpl$67();
6187
+ var _el$ = _tmpl$71();
5910
6188
  web.insert(_el$, displayCount);
5911
6189
  web.effect(() => web.className(_el$, style("notificationsTabsTriggerCount", "nt-rounded-full nt-bg-counter nt-px-[6px] nt-text-counter-foreground nt-text-sm")));
5912
6190
  return _el$;
@@ -5933,7 +6211,7 @@ var InboxTab = (props) => {
5933
6211
  },
5934
6212
  get children() {
5935
6213
  return [(() => {
5936
- var _el$2 = _tmpl$67();
6214
+ var _el$2 = _tmpl$71();
5937
6215
  web.insert(_el$2, () => props.label);
5938
6216
  web.effect(() => web.className(_el$2, style("notificationsTabsTriggerLabel", "nt-text-sm nt-font-medium")));
5939
6217
  return _el$2;
@@ -5973,7 +6251,7 @@ var InboxDropdownTab = (props) => {
5973
6251
  },
5974
6252
  get children() {
5975
6253
  return [(() => {
5976
- var _el$3 = _tmpl$67();
6254
+ var _el$3 = _tmpl$71();
5977
6255
  web.insert(_el$3, () => props.label);
5978
6256
  web.effect(() => web.className(_el$3, style("moreTabs__dropdownItemLabel", "nt-mr-auto")));
5979
6257
  return _el$3;
@@ -6174,7 +6452,7 @@ var InboxTabs = (props) => {
6174
6452
  };
6175
6453
 
6176
6454
  // src/ui/components/Inbox.tsx
6177
- var _tmpl$68 = /* @__PURE__ */ web.template(`<div>`);
6455
+ var _tmpl$73 = /* @__PURE__ */ web.template(`<div>`);
6178
6456
  var InboxPage = /* @__PURE__ */ function(InboxPage2) {
6179
6457
  InboxPage2["Notifications"] = "notifications";
6180
6458
  InboxPage2["Preferences"] = "preferences";
@@ -6199,7 +6477,7 @@ var InboxContent = (props) => {
6199
6477
  };
6200
6478
  });
6201
6479
  return (() => {
6202
- var _el$ = _tmpl$68();
6480
+ var _el$ = _tmpl$73();
6203
6481
  web.insert(_el$, web.createComponent(solidJs.Switch, {
6204
6482
  get children() {
6205
6483
  return [web.createComponent(solidJs.Match, {
@@ -6476,6 +6754,10 @@ var Renderer = (props) => {
6476
6754
  return web.createComponent(FocusManagerProvider, {
6477
6755
  get children() {
6478
6756
  return web.createComponent(InboxProvider, {
6757
+ get applicationIdentifier() {
6758
+ var _a;
6759
+ return (_a = props.options) == null ? void 0 : _a.applicationIdentifier;
6760
+ },
6479
6761
  get tabs() {
6480
6762
  return props.tabs;
6481
6763
  },