@novu/js 3.17.0 → 3.18.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.
Files changed (31) hide show
  1. package/dist/cjs/{chunk-7B52C2XE.js → chunk-A6CBLMST.js} +9 -0
  2. package/dist/cjs/{chunk-SP44ETLM.js → chunk-NR4RSYUE.js} +772 -694
  3. package/dist/cjs/{chunk-WDGG3OER.js → chunk-TLQQB5Y7.js} +217 -199
  4. package/dist/{esm/inbox-service-CGCuuYnv.d.mts → cjs/inbox-service-DSSwFYNG.d.ts} +18 -2
  5. package/dist/cjs/index.d.ts +93 -4
  6. package/dist/cjs/index.js +246 -20
  7. package/dist/cjs/internal/index.d.ts +1 -1
  8. package/dist/cjs/internal/index.js +7 -7
  9. package/dist/cjs/{novu-CmNBco-0.d.ts → novu-BQCC3vQS.d.ts} +3 -2
  10. package/dist/cjs/themes/index.d.ts +3 -3
  11. package/dist/cjs/themes/index.js +1 -1
  12. package/dist/cjs/{types-BF6zvyj6.d.ts → types-Djf8MaW9.d.ts} +2 -2
  13. package/dist/cjs/ui/index.d.ts +18 -6
  14. package/dist/cjs/ui/index.js +609 -243
  15. package/dist/esm/{chunk-BKA3HRZM.mjs → chunk-33B2GJE2.mjs} +140 -64
  16. package/dist/esm/{chunk-STZMOEWR.mjs → chunk-3LR3AF54.mjs} +9 -1
  17. package/dist/esm/{chunk-4S22IB5W.mjs → chunk-T3NTOGY3.mjs} +193 -176
  18. package/dist/{cjs/inbox-service-CGCuuYnv.d.ts → esm/inbox-service-DSSwFYNG.d.mts} +18 -2
  19. package/dist/esm/index.d.mts +93 -4
  20. package/dist/esm/index.mjs +228 -3
  21. package/dist/esm/internal/index.d.mts +1 -1
  22. package/dist/esm/internal/index.mjs +2 -2
  23. package/dist/esm/{novu-CFYEiYN8.d.mts → novu-Z0z0-IxO.d.mts} +3 -2
  24. package/dist/esm/themes/index.d.mts +3 -3
  25. package/dist/esm/themes/index.mjs +1 -1
  26. package/dist/esm/{types-CJKmgwu6.d.mts → types-BJ345m1Q.d.mts} +2 -2
  27. package/dist/esm/ui/index.d.mts +18 -6
  28. package/dist/esm/ui/index.mjs +424 -58
  29. package/dist/novu.min.js +15 -15
  30. package/dist/novu.min.js.gz +0 -0
  31. package/package.json +7 -2
@@ -1,6 +1,6 @@
1
- import { Novu, isSameFilter, isBrowser, DEFAULT_API_VERSION, checkNotificationTagFilter, checkNotificationDataFilter } from '../chunk-BKA3HRZM.mjs';
2
- import { buildSubscriptionIdentifier, parseMarkdownIntoTokens } from '../chunk-4S22IB5W.mjs';
3
- import { __spreadProps, __spreadValues, __privateAdd, __privateMethod, __privateSet, __privateGet, __objRest, __async } from '../chunk-STZMOEWR.mjs';
1
+ import { Novu, isValidInAppRedirectUrl, isValidInAppRedirectTarget, NOTIFICATION_COUNT_SYNC_EVENTS, isSameFilter, isBrowser, DEFAULT_API_VERSION, checkNotificationMatchesFilter } from '../chunk-33B2GJE2.mjs';
2
+ import { buildSubscriptionIdentifier, parseMarkdownIntoTokens } from '../chunk-T3NTOGY3.mjs';
3
+ import { __spreadProps, __spreadValues, __privateAdd, __privateMethod, __privateSet, __privateGet, __objRest, __async } from '../chunk-3LR3AF54.mjs';
4
4
  import { delegateEvents, createComponent, mergeProps, render, Portal as Portal$1, insert, effect, className, memo, spread, template, Dynamic, use, setAttribute } from 'solid-js/web';
5
5
  import { createSignal, createContext, useContext, createMemo, onMount, onCleanup, createEffect, Show, For, createResource, Switch, Match, splitProps, Index, batch, createUniqueId } from 'solid-js';
6
6
  import { createStore } from 'solid-js/store';
@@ -12,7 +12,7 @@ import { autoUpdate, offset, flip, shift } from '@floating-ui/dom';
12
12
  import { useFloating } from 'solid-floating-ui';
13
13
  import { Motion as Motion$1, Presence } from 'solid-motionone';
14
14
 
15
- // _gq6z8z4nv:/home/runner/work/novu/novu/packages/js/src/ui/index.directcss
15
+ // _3la1xivug:/home/runner/work/novu/novu/packages/js/src/ui/index.directcss
16
16
  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-bottom-0{bottom:0}.nt-left-0{left:0}.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-m-1{margin:-.25rem}.nt-mx-auto{margin-left:auto;margin-right:auto}.-nt-mt-2{margin-top:-.5rem}.-nt-mt-\\[2px\\]{margin-top:-2px}.nt--mt-\\[50px\\]{margin-top:-50px}.nt-mb-1{margin-bottom:.25rem}.nt-mb-2{margin-bottom:.5rem}.nt-mb-3{margin-bottom:.75rem}.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-1\\.5{margin-top:.375rem}.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-6{height:1.5rem;width:1.5rem}.nt-size-8{height:2rem;width:2rem}.nt-size-fit{height:-webkit-fit-content;height:fit-content;width:-webkit-fit-content;width:fit-content}.nt-size-full{height:100%;width:100%}.nt-h-2{height:.5rem}.nt-h-3{height:.75rem}.nt-h-3\\.5{height:.875rem}.nt-h-4{height:1rem}.nt-h-5{height:1.25rem}.nt-h-6{height:1.5rem}.nt-h-7{height:1.75rem}.nt-h-8{height:2rem}.nt-h-9{height:2.25rem}.nt-h-\\[600px\\]{height:600px}.nt-h-auto{height:auto}.nt-h-fit{height:-webkit-fit-content;height:fit-content}.nt-h-full{height:100%}.nt-max-h-\\[160px\\]{max-height:160px}.nt-min-h-0{min-height:0}.nt-min-h-\\[272px\\]{min-height:272px}.nt-w-1\\.5{width:.375rem}.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-\\[350px\\]{width:350px}.nt-w-\\[3px\\]{width:3px}.nt-w-\\[400px\\]{width:400px}.nt-w-\\[60px\\]{width:60px}.nt-w-\\[calc\\(2ch\\+2rem\\)\\]{width:calc(2ch + 2rem)}.nt-w-fit{width:-webkit-fit-content;width:fit-content}.nt-w-full{width:100%}.nt-w-max{width:-webkit-max-content;width:max-content}.nt-min-w-52{min-width:13rem}.nt-min-w-\\[120px\\]{min-width:120px}.nt-min-w-\\[220px\\]{min-width:220px}.nt-min-w-\\[74px\\]{min-width:74px}.nt-max-w-56{max-width:14rem}.nt-max-w-\\[120px\\]{max-width:120px}.nt-max-w-\\[220px\\]{max-width:220px}.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))}@keyframes nt-shimmer{0%{opacity:1}50%{opacity:.6}to{opacity:1}}.nt-animate-shimmer{animation:nt-shimmer 1.5s ease-in-out infinite}@keyframes nt-spin{to{transform:rotate(1turn)}}.nt-animate-spin{animation:nt-spin 1s linear infinite}.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-overflow-x-hidden{overflow-x:hidden}.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-rounded-b-lg{border-bottom-left-radius:var(--nv-radius-lg);border-bottom-right-radius:var(--nv-radius-lg)}.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-primary{border-color:var(--nv-color-primary)}.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-severity-high{background-color:var(--nv-color-severity-high)}.nt-bg-severity-high-alpha-100{background-color:var(--nv-color-severity-high-alpha-100)}.nt-bg-severity-high-alpha-200{background-color:var(--nv-color-severity-high-alpha-200)}.nt-bg-severity-high-alpha-300{background-color:var(--nv-color-severity-high-alpha-300)}.nt-bg-severity-high-alpha-50{background-color:var(--nv-color-severity-high-alpha-50)}.nt-bg-severity-low{background-color:var(--nv-color-severity-low)}.nt-bg-severity-low-alpha-100{background-color:var(--nv-color-severity-low-alpha-100)}.nt-bg-severity-low-alpha-200{background-color:var(--nv-color-severity-low-alpha-200)}.nt-bg-severity-low-alpha-300{background-color:var(--nv-color-severity-low-alpha-300)}.nt-bg-severity-low-alpha-50{background-color:var(--nv-color-severity-low-alpha-50)}.nt-bg-severity-medium{background-color:var(--nv-color-severity-medium)}.nt-bg-severity-medium-alpha-100{background-color:var(--nv-color-severity-medium-alpha-100)}.nt-bg-severity-medium-alpha-200{background-color:var(--nv-color-severity-medium-alpha-200)}.nt-bg-severity-medium-alpha-300{background-color:var(--nv-color-severity-medium-alpha-300)}.nt-bg-severity-medium-alpha-50{background-color:var(--nv-color-severity-medium-alpha-50)}.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-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.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-12{padding-bottom:3rem}.nt-pb-2{padding-bottom:.5rem}.nt-pb-\\[0\\.625rem\\]{padding-bottom:.625rem}.nt-pr-0{padding-right:0}.nt-pt-2{padding-top:.5rem}.nt-pt-2\\.5{padding-top:.625rem}.nt-pt-8{padding-top:2rem}.nt-text-left{text-align:left}.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-italic{font-style:italic}.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-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity,1))}.nt-text-neutral-alpha-500{color:var(--nv-color-neutral-alpha-500)}.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{-webkit-text-decoration-line: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-\\[0_1px_2px_0_rgba\\(10\\,13\\,20\\,0\\.03\\)\\]{--tw-shadow:0 1px 2px 0 #0a0d1408;--tw-shadow-colored:0 1px 2px 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-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-ring-offset-background{--tw-ring-offset-color:var(--nv-color-background)}.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,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-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-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-\\[width\\]{transition-duration:.15s;transition-property:width;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,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-opacity{transition-duration:.15s;transition-property:opacity;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)}.nt-will-change-\\[width\\]{will-change:width}@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)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-foreground\\)_80\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-foreground) 80% c h)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-severity-high\\)_45\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-severity-high) 45% c h)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-severity-high\\)_80\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-severity-high) 80% c h)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-severity-low\\)_45\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-severity-low) 45% c h)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-severity-low\\)_80\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-severity-low) 80% c h)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-severity-medium\\)_45\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-severity-medium) 45% c h)}.\\[--bell-gradient-end\\:oklch\\(from_var\\(--nv-color-severity-medium\\)_80\\%_c_h\\)\\]{--bell-gradient-end:oklch(from var(--nv-color-severity-medium) 80% c h)}.\\[--bell-gradient-start\\:var\\(--nv-color-foreground\\)\\]{--bell-gradient-start:var(--nv-color-foreground)}.\\[--bell-gradient-start\\:var\\(--nv-color-severity-high\\)\\]{--bell-gradient-start:var(--nv-color-severity-high)}.\\[--bell-gradient-start\\:var\\(--nv-color-severity-low\\)\\]{--bell-gradient-start:var(--nv-color-severity-low)}.\\[--bell-gradient-start\\:var\\(--nv-color-severity-medium\\)\\]{--bell-gradient-start:var(--nv-color-severity-medium)}.\\[interpolate-size\\:allow-keywords\\]{interpolate-size:allow-keywords}.\\[line-height\\:16px\\]{line-height:16px}.\\[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)}.before\\:nt-m-1:before{content:var(--tw-content);margin:.25rem}@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-full:before{border-radius:var(--nv-radius-full);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-severity-high-alpha-200:before{background-color:var(--nv-color-severity-high-alpha-200);content:var(--tw-content)}.before\\:nt-bg-severity-high-alpha-300:before{background-color:var(--nv-color-severity-high-alpha-300);content:var(--tw-content)}.before\\:nt-bg-severity-low-alpha-200:before{background-color:var(--nv-color-severity-low-alpha-200);content:var(--tw-content)}.before\\:nt-bg-severity-low-alpha-300:before{background-color:var(--nv-color-severity-low-alpha-300);content:var(--tw-content)}.before\\:nt-bg-severity-medium-alpha-200:before{background-color:var(--nv-color-severity-medium-alpha-200);content:var(--tw-content)}.before\\:nt-bg-severity-medium-alpha-300:before{background-color:var(--nv-color-severity-medium-alpha-300);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-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-bg-severity-high-alpha-50:hover{background-color:var(--nv-color-severity-high-alpha-50)}.hover\\:nt-bg-severity-low-alpha-50:hover{background-color:var(--nv-color-severity-low-alpha-50)}.hover\\:nt-bg-severity-medium-alpha-50:hover{background-color:var(--nv-color-severity-medium-alpha-50)}.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{opacity:1}.nt-group:hover .group-hover\\:nt-bg-severity-high-alpha-500{background-color:var(--nv-color-severity-high-alpha-500)}.nt-group:hover .group-hover\\:nt-bg-severity-low-alpha-500{background-color:var(--nv-color-severity-low-alpha-500)}.nt-group:hover .group-hover\\:nt-bg-severity-medium-alpha-500{background-color:var(--nv-color-severity-medium-alpha-500)}.nt-group:hover .group-hover\\:nt-opacity-0{opacity:0}.nt-group:hover .group-hover\\:nt-opacity-100{opacity:1}.nt-peer:focus-visible~.peer-focus-visible\\:nt-outline-none{outline:2px solid #0000;outline-offset:2px}.nt-peer:focus-visible~.peer-focus-visible\\:nt-ring-2{--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)}.nt-peer:focus-visible~.peer-focus-visible\\:nt-ring-offset-2{--tw-ring-offset-width:2px}.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\\]\\:nt-cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\\[checked\\]\\:nt-border-none[data-checked],.data-\\[indeterminate\\]\\:nt-border-none[data-indeterminate]{border-style:none}.data-\\[checked\\]\\:nt-bg-primary[data-checked],.data-\\[indeterminate\\]\\:nt-bg-primary[data-indeterminate]{background-color:var(--nv-color-primary)}.data-\\[checked\\]\\:nt-text-primary-foreground[data-checked]{color:var(--nv-color-primary-foreground)}.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-\\[indeterminate\\]\\:nt-text-primary-foreground[data-indeterminate]{color:var(--nv-color-primary-foreground)}.data-\\[state\\=active\\]\\:nt-text-foreground[data-state=active]{color:var(--nv-color-foreground)}.data-\\[disabled\\]\\:nt-opacity-50[data-disabled]{opacity:.5}.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-12 .nv-notificationList{padding-bottom:3rem}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-8 .nv-notificationList{padding-bottom:2rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-12 .nv-preferencesContainer{padding-bottom:3rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-8 .nv-preferencesContainer{padding-bottom:2rem}.\\[\\&_stop\\]\\:nt-transition-\\[stop-color\\] stop{transition-duration:.15s;transition-property:stop-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\\[\\&_svg\\]\\:nt-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:nt-shrink-0 svg{flex-shrink:0}`;
17
17
 
18
18
  // src/ui/config/appearanceKeys.ts
@@ -568,6 +568,11 @@ function createInfiniteScroll(fetcher, options) {
568
568
  ];
569
569
  }
570
570
 
571
+ // src/ui/helpers/normalizeIntlLocale.ts
572
+ function normalizeIntlLocale(locale) {
573
+ return locale.replace(/_/g, "-");
574
+ }
575
+
571
576
  // src/ui/helpers/formatToRelativeTime.ts
572
577
  var DEFAULT_LOCALE = "en-US";
573
578
  var SECONDS = {
@@ -582,11 +587,12 @@ function formatToRelativeTime({
582
587
  locale = DEFAULT_LOCALE,
583
588
  toDate = /* @__PURE__ */ new Date()
584
589
  }) {
590
+ const intlLocale = normalizeIntlLocale(locale);
585
591
  const elapsed = toDate.getTime() - fromDate.getTime();
586
- const formatter = new Intl.RelativeTimeFormat(locale, { style: "narrow" });
592
+ const formatter = new Intl.RelativeTimeFormat(intlLocale, { style: "narrow" });
587
593
  const diffInSeconds = Math.floor(elapsed / 1e3);
588
594
  if (Math.abs(diffInSeconds) < SECONDS.inMinute) {
589
- const subMinuteFormatter = new Intl.RelativeTimeFormat(locale, { style: "narrow", numeric: "auto" });
595
+ const subMinuteFormatter = new Intl.RelativeTimeFormat(intlLocale, { style: "narrow", numeric: "auto" });
590
596
  return subMinuteFormatter.format(-0, "second");
591
597
  } else if (Math.abs(diffInSeconds) < SECONDS.inHour) {
592
598
  return formatter.format(-Math.floor(diffInSeconds / SECONDS.inMinute), "minute");
@@ -595,10 +601,11 @@ function formatToRelativeTime({
595
601
  } else if (Math.abs(diffInSeconds) < SECONDS.inMonth) {
596
602
  return formatter.format(-Math.floor(diffInSeconds / SECONDS.inDay), "day");
597
603
  } else {
598
- return new Intl.DateTimeFormat(locale, { month: "short", day: "numeric" }).format(fromDate);
604
+ return new Intl.DateTimeFormat(intlLocale, { month: "short", day: "numeric" }).format(fromDate);
599
605
  }
600
606
  }
601
607
  function formatSnoozedUntil({ untilDate, locale = DEFAULT_LOCALE }) {
608
+ const intlLocale = normalizeIntlLocale(locale);
602
609
  const remaining = untilDate.getTime() - (/* @__PURE__ */ new Date()).getTime();
603
610
  const diffInSeconds = Math.floor(remaining / 1e3);
604
611
  if (diffInSeconds < 0) {
@@ -616,7 +623,7 @@ function formatSnoozedUntil({ untilDate, locale = DEFAULT_LOCALE }) {
616
623
  const days = Math.floor(diffInSeconds / SECONDS.inDay);
617
624
  return `${days} ${days === 1 ? "day" : "days"}`;
618
625
  } else {
619
- return new Intl.DateTimeFormat(locale, { month: "short", day: "numeric" }).format(untilDate);
626
+ return new Intl.DateTimeFormat(intlLocale, { month: "short", day: "numeric" }).format(untilDate);
620
627
  }
621
628
  }
622
629
 
@@ -1338,7 +1345,7 @@ var LocalizationProvider = (props) => {
1338
1345
  }
1339
1346
  return value;
1340
1347
  };
1341
- const locale = createMemo(() => localization().locale);
1348
+ const locale = createMemo(() => normalizeIntlLocale(localization().locale));
1342
1349
  return createComponent(LocalizationContext.Provider, {
1343
1350
  value: {
1344
1351
  t,
@@ -1427,12 +1434,13 @@ var InboxProvider = (props) => {
1427
1434
  });
1428
1435
  };
1429
1436
  const navigate = (url, target) => {
1430
- if (!url) {
1437
+ if (!url || !isValidInAppRedirectUrl(url)) {
1431
1438
  return;
1432
1439
  }
1433
1440
  const isAbsoluteUrl = !url.startsWith("/");
1434
1441
  if (isAbsoluteUrl) {
1435
- window.open(url, target != null ? target : DEFAULT_TARGET, DEFAULT_REFERRER);
1442
+ const safeTarget = isValidInAppRedirectTarget(target) ? target : DEFAULT_TARGET;
1443
+ window.open(url, safeTarget, DEFAULT_REFERRER);
1436
1444
  return;
1437
1445
  }
1438
1446
  if (props.routerPush) {
@@ -1564,11 +1572,24 @@ var CountProvider = (props) => {
1564
1572
  });
1565
1573
  const [unreadCounts, setUnreadCounts] = createSignal(/* @__PURE__ */ new Map());
1566
1574
  const [newNotificationCounts, setNewNotificationCounts] = createSignal(/* @__PURE__ */ new Map());
1567
- const updateTabCounts = () => __async(null, null, function* () {
1568
- if (tabs().length === 0) {
1569
- return;
1570
- }
1571
- const filters = tabs().map((tab) => {
1575
+ let refreshGeneration = 0;
1576
+ const emptySeverityCounts = () => ({
1577
+ ["high" /* HIGH */]: 0,
1578
+ ["medium" /* MEDIUM */]: 0,
1579
+ ["low" /* LOW */]: 0,
1580
+ ["none" /* NONE */]: 0
1581
+ });
1582
+ const refreshCounts = () => __async(null, null, function* () {
1583
+ const generation = ++refreshGeneration;
1584
+ const novu = novuAccessor();
1585
+ const bellFilters = ["high" /* HIGH */, "medium" /* MEDIUM */, "low" /* LOW */, "none" /* NONE */].map((severity) => ({
1586
+ read: false,
1587
+ archived: false,
1588
+ snoozed: false,
1589
+ severity
1590
+ }));
1591
+ const currentTabs = tabs();
1592
+ const tabFilters = currentTabs.length > 0 ? currentTabs.map((tab) => {
1572
1593
  var _a, _b;
1573
1594
  return {
1574
1595
  tags: getTagsFromTab(tab),
@@ -1578,40 +1599,66 @@ var CountProvider = (props) => {
1578
1599
  data: (_a = tab.filter) == null ? void 0 : _a.data,
1579
1600
  severity: (_b = tab.filter) == null ? void 0 : _b.severity
1580
1601
  };
1581
- });
1582
- const {
1583
- data
1584
- } = yield novuAccessor().notifications.count({
1585
- filters
1586
- });
1587
- if (!data) {
1602
+ }) : null;
1603
+ const [bellResult, tabResult] = yield Promise.all([novu.notifications.count({
1604
+ filters: bellFilters
1605
+ }), tabFilters ? novu.notifications.count({
1606
+ filters: tabFilters
1607
+ }) : Promise.resolve(null)]);
1608
+ if (generation !== refreshGeneration) {
1588
1609
  return;
1589
1610
  }
1590
- const newMap = /* @__PURE__ */ new Map();
1591
- const {
1592
- counts
1593
- } = data;
1594
- for (let i = 0; i < counts.length; i += 1) {
1595
- const tagsKey = createKey({
1596
- tags: counts[i].filter.tags,
1597
- data: counts[i].filter.data,
1598
- severity: counts[i].filter.severity
1611
+ if (bellResult.data) {
1612
+ const severity = emptySeverityCounts();
1613
+ let total = 0;
1614
+ for (const item of bellResult.data.counts) {
1615
+ const filterSeverity = item.filter.severity;
1616
+ const severityKey = Array.isArray(filterSeverity) ? filterSeverity[0] : filterSeverity;
1617
+ if (severityKey && severityKey in severity) {
1618
+ severity[severityKey] = item.count;
1619
+ total += item.count;
1620
+ }
1621
+ }
1622
+ setUnreadCount({
1623
+ total,
1624
+ severity
1599
1625
  });
1600
- newMap.set(tagsKey, data == null ? void 0 : data.counts[i].count);
1601
1626
  }
1602
- setUnreadCounts(newMap);
1627
+ if (tabResult == null ? void 0 : tabResult.data) {
1628
+ const newMap = /* @__PURE__ */ new Map();
1629
+ for (let i = 0; i < tabResult.data.counts.length; i += 1) {
1630
+ const countItem = tabResult.data.counts[i];
1631
+ const tagsKey = createKey({
1632
+ tags: countItem.filter.tags,
1633
+ data: countItem.filter.data,
1634
+ severity: countItem.filter.severity
1635
+ });
1636
+ newMap.set(tagsKey, countItem.count);
1637
+ }
1638
+ setUnreadCounts(newMap);
1639
+ }
1603
1640
  });
1604
1641
  createEffect(() => {
1605
1642
  novuAccessor();
1606
- updateTabCounts();
1643
+ refreshCounts();
1607
1644
  });
1608
1645
  useWebSocketEvent({
1609
1646
  event: "notifications.unread_count_changed",
1610
1647
  eventHandler: (data) => {
1611
1648
  setUnreadCount(data.result);
1612
- updateTabCounts();
1649
+ refreshCounts();
1613
1650
  }
1614
1651
  });
1652
+ createEffect(() => {
1653
+ const novu = novuAccessor();
1654
+ const cleanups = NOTIFICATION_COUNT_SYNC_EVENTS.map((event) => novu.on(event, (payload) => {
1655
+ if ("error" in payload && payload.error) {
1656
+ return;
1657
+ }
1658
+ refreshCounts();
1659
+ }));
1660
+ onCleanup(() => cleanups.forEach((cleanup) => cleanup()));
1661
+ });
1615
1662
  useNovuEvent({
1616
1663
  event: "session.initialize.resolved",
1617
1664
  eventHandler: ({
@@ -1665,7 +1712,7 @@ var CountProvider = (props) => {
1665
1712
  eventHandler: (_0) => __async(null, [_0], function* ({
1666
1713
  result: notification
1667
1714
  }) {
1668
- var _a, _b;
1715
+ var _a, _b, _c, _d, _e, _f;
1669
1716
  if (filter().archived || filter().snoozed) {
1670
1717
  return;
1671
1718
  }
@@ -1674,32 +1721,33 @@ var CountProvider = (props) => {
1674
1721
  if (currentTabs.length > 0) {
1675
1722
  for (const tab of currentTabs) {
1676
1723
  const tabTags = getTagsFromTab(tab);
1677
- const tabDataFilterCriteria = (_a = tab.filter) == null ? void 0 : _a.data;
1678
- const tabSeverityFilterCriteria = (_b = tab.filter) == null ? void 0 : _b.severity;
1679
- const matchesTagFilter = checkNotificationTagFilter(notification.tags, tabTags);
1680
- const matchesDataFilterCriteria = checkNotificationDataFilter(notification.data, tabDataFilterCriteria);
1681
- const matchesSeverityFilterCriteria = !tabSeverityFilterCriteria || Array.isArray(tabSeverityFilterCriteria) && tabSeverityFilterCriteria.length === 0 || Array.isArray(tabSeverityFilterCriteria) && tabSeverityFilterCriteria.includes(notification.severity) || !Array.isArray(tabSeverityFilterCriteria) && tabSeverityFilterCriteria === notification.severity;
1682
- if (matchesTagFilter && matchesDataFilterCriteria && matchesSeverityFilterCriteria) {
1683
- const filterKey = createKey({
1684
- tags: tabTags,
1685
- data: tabDataFilterCriteria,
1686
- severity: tabSeverityFilterCriteria
1687
- });
1688
- if (!processedFilters.has(filterKey)) {
1689
- processedFilters.add(filterKey);
1690
- updateNewNotificationCountsOrCache(tab.label, notification, tabTags, tabDataFilterCriteria, tabSeverityFilterCriteria);
1691
- }
1724
+ const tabFilter = {
1725
+ tags: tabTags,
1726
+ read: false,
1727
+ archived: false,
1728
+ snoozed: false,
1729
+ data: (_a = tab.filter) == null ? void 0 : _a.data,
1730
+ severity: (_b = tab.filter) == null ? void 0 : _b.severity
1731
+ };
1732
+ if (!checkNotificationMatchesFilter(notification, tabFilter)) {
1733
+ continue;
1734
+ }
1735
+ const filterKey = createKey({
1736
+ tags: tabTags,
1737
+ data: (_c = tab.filter) == null ? void 0 : _c.data,
1738
+ severity: (_d = tab.filter) == null ? void 0 : _d.severity
1739
+ });
1740
+ if (!processedFilters.has(filterKey)) {
1741
+ processedFilters.add(filterKey);
1742
+ updateNewNotificationCountsOrCache(tab.label, notification, tabTags, (_e = tab.filter) == null ? void 0 : _e.data, (_f = tab.filter) == null ? void 0 : _f.severity);
1692
1743
  }
1693
1744
  }
1694
1745
  } else {
1695
1746
  updateNewNotificationCountsOrCache("", notification, [], void 0, void 0);
1696
1747
  }
1748
+ yield refreshCounts();
1697
1749
  })
1698
1750
  });
1699
- useWebSocketEvent({
1700
- event: "notifications.notification_received",
1701
- eventHandler: updateTabCounts
1702
- });
1703
1751
  const resetNewNotificationCounts = (key) => {
1704
1752
  setNewNotificationCounts((oldMap) => {
1705
1753
  const newMap = new Map(oldMap);
@@ -12206,6 +12254,323 @@ var SubscriptionPreferencesWrapper = (props) => {
12206
12254
  onSubscribeClick
12207
12255
  });
12208
12256
  };
12257
+ var TELEGRAM_PROVIDER_ID = "telegram";
12258
+ var useTelegramConnection = (options) => {
12259
+ const novuAccessor = useNovu();
12260
+ const [loading, setLoading] = createSignal(true);
12261
+ const [endpoint, { mutate, refetch }] = createResource(
12262
+ options,
12263
+ (_0) => __async(null, [_0], function* ({ integrationIdentifier, subscriberId }) {
12264
+ var _a, _b;
12265
+ try {
12266
+ if (!integrationIdentifier) {
12267
+ return null;
12268
+ }
12269
+ const response = yield novuAccessor().channelEndpoints.list({
12270
+ integrationIdentifier,
12271
+ providerId: TELEGRAM_PROVIDER_ID,
12272
+ subscriberId,
12273
+ limit: 1
12274
+ });
12275
+ return (_b = (_a = response.data) == null ? void 0 : _a[0]) != null ? _b : null;
12276
+ } catch (e) {
12277
+ return null;
12278
+ }
12279
+ })
12280
+ );
12281
+ const link = (args) => __async(null, null, function* () {
12282
+ return novuAccessor().channelEndpoints.link(args);
12283
+ });
12284
+ const disconnect = (identifier) => __async(null, null, function* () {
12285
+ setLoading(true);
12286
+ const response = yield novuAccessor().channelEndpoints.delete({ identifier });
12287
+ if (!response.error) {
12288
+ mutate(null);
12289
+ }
12290
+ setLoading(false);
12291
+ return response;
12292
+ });
12293
+ createEffect(() => {
12294
+ setLoading(endpoint.loading);
12295
+ });
12296
+ return { endpoint, loading, mutate, refetch, link, disconnect };
12297
+ };
12298
+ var _tmpl$104 = /* @__PURE__ */ template(`<svg width=16 height=16 viewBox="0 0 32 32"fill=none xmlns=http://www.w3.org/2000/svg><circle cx=16 cy=16 r=14 fill=#26A5E4></circle><path fill=#fff d="M7.2 15.6l14.4-5.6c.7-.2 1.3.2 1.1 1l-2.4 11.6c-.2.8-.7 1-1.4.6l-4-3-1.9 1.8c-.2.2-.4.4-.8.4l.3-4 7.2-6.6c.3-.3-.1-.4-.5-.2l-8.9 5.6-3.8-1.2c-.8-.2-.8-.8.2-1.2l-.1-.2Z">`);
12299
+ var TelegramColored = (props) => {
12300
+ return (() => {
12301
+ var _el$ = _tmpl$104();
12302
+ spread(_el$, props, true, true);
12303
+ return _el$;
12304
+ })();
12305
+ };
12306
+
12307
+ // src/ui/components/telegram-connect-button/TelegramConnectButton.tsx
12308
+ var _tmpl$105 = /* @__PURE__ */ template(`<span>`);
12309
+ var _tmpl$234 = /* @__PURE__ */ template(`<div>`);
12310
+ var TELEGRAM_PROVIDER_ID2 = "telegram";
12311
+ var POLL_INTERVAL_MS4 = 2500;
12312
+ var POLL_TIMEOUT_MS5 = 12e4;
12313
+ var TelegramConnectButton = (props) => {
12314
+ const style = useStyle();
12315
+ const novuAccessor = useNovu();
12316
+ const integrationIdentifier = () => props.integrationIdentifier;
12317
+ const resolvedSubscriberId = () => {
12318
+ var _a;
12319
+ return (_a = props.subscriberId) != null ? _a : novuAccessor().subscriberId;
12320
+ };
12321
+ const {
12322
+ endpoint,
12323
+ loading,
12324
+ disconnect,
12325
+ mutate,
12326
+ link
12327
+ } = useTelegramConnection({
12328
+ integrationIdentifier: integrationIdentifier(),
12329
+ subscriberId: props.subscriberId
12330
+ });
12331
+ const [actionLoading, setActionLoading] = createSignal(false);
12332
+ const isConnected = () => !!endpoint();
12333
+ const isLoading = () => loading() || actionLoading();
12334
+ const intervalIdRef = {
12335
+ current: null
12336
+ };
12337
+ const stopPolling = () => {
12338
+ if (intervalIdRef.current !== null) {
12339
+ clearInterval(intervalIdRef.current);
12340
+ intervalIdRef.current = null;
12341
+ }
12342
+ };
12343
+ onCleanup(stopPolling);
12344
+ const startPolling = () => {
12345
+ stopPolling();
12346
+ const startedAt = Date.now();
12347
+ let committed = false;
12348
+ intervalIdRef.current = setInterval(() => __async(null, null, function* () {
12349
+ var _a, _b, _c;
12350
+ if (committed) {
12351
+ return;
12352
+ }
12353
+ try {
12354
+ const response = yield novuAccessor().channelEndpoints.list({
12355
+ integrationIdentifier: integrationIdentifier(),
12356
+ providerId: TELEGRAM_PROVIDER_ID2,
12357
+ subscriberId: resolvedSubscriberId(),
12358
+ limit: 1
12359
+ });
12360
+ if (committed) {
12361
+ return;
12362
+ }
12363
+ const found = (_a = response.data) == null ? void 0 : _a[0];
12364
+ if (found) {
12365
+ committed = true;
12366
+ stopPolling();
12367
+ setActionLoading(false);
12368
+ mutate(found);
12369
+ (_b = props.onConnectSuccess) == null ? void 0 : _b.call(props, found.identifier);
12370
+ return;
12371
+ }
12372
+ } catch (e) {
12373
+ }
12374
+ if (committed) {
12375
+ return;
12376
+ }
12377
+ if (Date.now() - startedAt >= POLL_TIMEOUT_MS5) {
12378
+ committed = true;
12379
+ stopPolling();
12380
+ setActionLoading(false);
12381
+ (_c = props.onConnectError) == null ? void 0 : _c.call(props, new Error("Telegram connection timed out. Please try again."));
12382
+ }
12383
+ }), POLL_INTERVAL_MS4);
12384
+ };
12385
+ const handleClick = () => __async(null, null, function* () {
12386
+ var _a, _b, _c, _d, _e, _f;
12387
+ if (isConnected()) {
12388
+ const identifier = (_a = endpoint()) == null ? void 0 : _a.identifier;
12389
+ if (!identifier) return;
12390
+ const result = yield disconnect(identifier);
12391
+ if (result.error) {
12392
+ (_b = props.onDisconnectError) == null ? void 0 : _b.call(props, result.error);
12393
+ } else {
12394
+ (_c = props.onDisconnectSuccess) == null ? void 0 : _c.call(props);
12395
+ }
12396
+ } else {
12397
+ setActionLoading(true);
12398
+ const result = yield link({
12399
+ integrationIdentifier: integrationIdentifier()
12400
+ });
12401
+ if (result.error) {
12402
+ setActionLoading(false);
12403
+ (_d = props.onConnectError) == null ? void 0 : _d.call(props, result.error);
12404
+ return;
12405
+ }
12406
+ if ((_e = result.data) == null ? void 0 : _e.url) {
12407
+ window.open(result.data.url, "_blank", "noopener,noreferrer");
12408
+ startPolling();
12409
+ } else {
12410
+ setActionLoading(false);
12411
+ (_f = props.onConnectError) == null ? void 0 : _f.call(props, new Error("Telegram link URL was not returned. Please try again."));
12412
+ }
12413
+ }
12414
+ });
12415
+ const buttonContent = () => (() => {
12416
+ var _el$ = _tmpl$105();
12417
+ insert(_el$, createComponent(Motion.span, {
12418
+ initial: {
12419
+ opacity: 1
12420
+ },
12421
+ get animate() {
12422
+ return {
12423
+ opacity: actionLoading() ? 0 : 1
12424
+ };
12425
+ },
12426
+ transition: {
12427
+ easing: "ease-in-out",
12428
+ duration: 0.2
12429
+ },
12430
+ "class": "nt-inline-flex nt-items-center nt-gap-1",
12431
+ get children() {
12432
+ return [memo(() => memo(() => !!isConnected())() ? createComponent(IconRendererWrapper, {
12433
+ iconKey: "channelConnected",
12434
+ get ["class"]() {
12435
+ return style({
12436
+ key: "channelConnectButtonIcon",
12437
+ className: "nt-inline-flex nt-items-center nt-justify-center nt-size-4 nt-shrink-0 nt-rounded-full nt-bg-white nt-shadow-[0_1px_2px_0_rgba(10,13,20,0.03)]",
12438
+ iconKey: "channelConnected",
12439
+ context: {
12440
+ connected: true
12441
+ }
12442
+ });
12443
+ },
12444
+ get fallback() {
12445
+ return (() => {
12446
+ var _el$3 = _tmpl$105();
12447
+ insert(_el$3, createComponent(CheckCircleFill, {
12448
+ "class": "nt-size-full"
12449
+ }));
12450
+ effect(() => className(_el$3, style({
12451
+ key: "channelConnectButtonIcon",
12452
+ className: "nt-inline-flex nt-items-center nt-justify-center nt-size-4 nt-shrink-0 nt-rounded-full nt-bg-white nt-shadow-[0_1px_2px_0_rgba(10,13,20,0.03)]",
12453
+ iconKey: "channelConnected",
12454
+ context: {
12455
+ connected: true
12456
+ }
12457
+ })));
12458
+ return _el$3;
12459
+ })();
12460
+ }
12461
+ }) : createComponent(IconRendererWrapper, {
12462
+ iconKey: "channelConnect",
12463
+ get ["class"]() {
12464
+ return style({
12465
+ key: "channelConnectButtonIcon",
12466
+ className: "nt-size-4 nt-shrink-0",
12467
+ iconKey: "channelConnect",
12468
+ context: {
12469
+ connected: false
12470
+ }
12471
+ });
12472
+ },
12473
+ get fallback() {
12474
+ return createComponent(TelegramColored, {
12475
+ get ["class"]() {
12476
+ return style({
12477
+ key: "channelConnectButtonIcon",
12478
+ className: "nt-size-4 nt-shrink-0",
12479
+ iconKey: "channelConnect",
12480
+ context: {
12481
+ connected: false
12482
+ }
12483
+ });
12484
+ }
12485
+ });
12486
+ }
12487
+ })), (() => {
12488
+ var _el$2 = _tmpl$105();
12489
+ insert(_el$2, () => {
12490
+ var _a, _b;
12491
+ return isConnected() ? (_a = props.connectedLabel) != null ? _a : "Connected to Telegram" : (_b = props.connectLabel) != null ? _b : "Connect Telegram";
12492
+ });
12493
+ effect(() => className(_el$2, style({
12494
+ key: "channelConnectButtonLabel",
12495
+ className: "[line-height:16px]",
12496
+ context: {
12497
+ connected: isConnected()
12498
+ }
12499
+ })));
12500
+ return _el$2;
12501
+ })()];
12502
+ }
12503
+ }), null);
12504
+ insert(_el$, createComponent(Motion.span, {
12505
+ initial: {
12506
+ opacity: 0
12507
+ },
12508
+ get animate() {
12509
+ return {
12510
+ opacity: actionLoading() ? 1 : 0
12511
+ };
12512
+ },
12513
+ transition: {
12514
+ easing: "ease-in-out",
12515
+ duration: 0.2
12516
+ },
12517
+ "class": "nt-absolute nt-left-0 nt-inline-flex nt-items-center",
12518
+ get children() {
12519
+ return createComponent(Loader, {
12520
+ "class": "nt-text-foreground-alpha-600 nt-size-3.5 nt-animate-spin"
12521
+ });
12522
+ }
12523
+ }), null);
12524
+ effect(() => className(_el$, style({
12525
+ key: "channelConnectButtonInner",
12526
+ className: "nt-relative nt-overflow-hidden nt-inline-flex nt-items-center nt-justify-center nt-gap-1",
12527
+ context: {
12528
+ connected: isConnected()
12529
+ }
12530
+ })));
12531
+ return _el$;
12532
+ })();
12533
+ return createComponent(Show, {
12534
+ get when() {
12535
+ return !loading();
12536
+ },
12537
+ get fallback() {
12538
+ return createComponent(Loader, {
12539
+ "class": "nt-text-foreground-alpha-600 nt-size-4 nt-animate-spin"
12540
+ });
12541
+ },
12542
+ get children() {
12543
+ var _el$4 = _tmpl$234();
12544
+ insert(_el$4, createComponent(Button, {
12545
+ get ["class"]() {
12546
+ return style({
12547
+ key: "channelConnectButton",
12548
+ className: "nt-transition-[width] nt-duration-800 nt-will-change-[width]",
12549
+ context: {
12550
+ connected: isConnected()
12551
+ }
12552
+ });
12553
+ },
12554
+ variant: "secondary",
12555
+ onClick: handleClick,
12556
+ get disabled() {
12557
+ return isLoading();
12558
+ },
12559
+ get children() {
12560
+ return buttonContent();
12561
+ }
12562
+ }));
12563
+ effect(() => className(_el$4, style({
12564
+ key: "channelConnectButtonContainer",
12565
+ className: "nt-flex nt-items-center nt-gap-2",
12566
+ context: {
12567
+ connected: isConnected()
12568
+ }
12569
+ })));
12570
+ return _el$4;
12571
+ }
12572
+ });
12573
+ };
12209
12574
 
12210
12575
  // src/ui/components/Renderer.tsx
12211
12576
  var novuComponents = {
@@ -12287,10 +12652,11 @@ var novuComponents = {
12287
12652
  SlackLinkUser,
12288
12653
  SlackConnectButton,
12289
12654
  MsTeamsLinkUser,
12290
- MsTeamsConnectButton
12655
+ MsTeamsConnectButton,
12656
+ TelegramConnectButton
12291
12657
  };
12292
12658
  var SUBSCRIPTION_COMPONENTS = ["Subscription", "SubscriptionButton", "SubscriptionPreferences"];
12293
- var CHANNEL_COMPONENTS = ["ConnectChat", "SlackLinkUser", "SlackConnectButton", "MsTeamsLinkUser", "MsTeamsConnectButton"];
12659
+ var CHANNEL_COMPONENTS = ["ConnectChat", "SlackLinkUser", "SlackConnectButton", "MsTeamsLinkUser", "MsTeamsConnectButton", "TelegramConnectButton"];
12294
12660
  var InboxComponentsRenderer = (props) => {
12295
12661
  return createComponent(Show, {
12296
12662
  get when() {