@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.
- package/dist/cjs/{chunk-7B52C2XE.js → chunk-A6CBLMST.js} +9 -0
- package/dist/cjs/{chunk-SP44ETLM.js → chunk-NR4RSYUE.js} +772 -694
- package/dist/cjs/{chunk-WDGG3OER.js → chunk-TLQQB5Y7.js} +217 -199
- package/dist/{esm/inbox-service-CGCuuYnv.d.mts → cjs/inbox-service-DSSwFYNG.d.ts} +18 -2
- package/dist/cjs/index.d.ts +93 -4
- package/dist/cjs/index.js +246 -20
- package/dist/cjs/internal/index.d.ts +1 -1
- package/dist/cjs/internal/index.js +7 -7
- package/dist/cjs/{novu-CmNBco-0.d.ts → novu-BQCC3vQS.d.ts} +3 -2
- package/dist/cjs/themes/index.d.ts +3 -3
- package/dist/cjs/themes/index.js +1 -1
- package/dist/cjs/{types-BF6zvyj6.d.ts → types-Djf8MaW9.d.ts} +2 -2
- package/dist/cjs/ui/index.d.ts +18 -6
- package/dist/cjs/ui/index.js +609 -243
- package/dist/esm/{chunk-BKA3HRZM.mjs → chunk-33B2GJE2.mjs} +140 -64
- package/dist/esm/{chunk-STZMOEWR.mjs → chunk-3LR3AF54.mjs} +9 -1
- package/dist/esm/{chunk-4S22IB5W.mjs → chunk-T3NTOGY3.mjs} +193 -176
- package/dist/{cjs/inbox-service-CGCuuYnv.d.ts → esm/inbox-service-DSSwFYNG.d.mts} +18 -2
- package/dist/esm/index.d.mts +93 -4
- package/dist/esm/index.mjs +228 -3
- package/dist/esm/internal/index.d.mts +1 -1
- package/dist/esm/internal/index.mjs +2 -2
- package/dist/esm/{novu-CFYEiYN8.d.mts → novu-Z0z0-IxO.d.mts} +3 -2
- package/dist/esm/themes/index.d.mts +3 -3
- package/dist/esm/themes/index.mjs +1 -1
- package/dist/esm/{types-CJKmgwu6.d.mts → types-BJ345m1Q.d.mts} +2 -2
- package/dist/esm/ui/index.d.mts +18 -6
- package/dist/esm/ui/index.mjs +424 -58
- package/dist/novu.min.js +15 -15
- package/dist/novu.min.js.gz +0 -0
- package/package.json +7 -2
package/dist/esm/ui/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Novu, isSameFilter, isBrowser, DEFAULT_API_VERSION,
|
|
2
|
-
import { buildSubscriptionIdentifier, parseMarkdownIntoTokens } from '../chunk-
|
|
3
|
-
import { __spreadProps, __spreadValues, __privateAdd, __privateMethod, __privateSet, __privateGet, __objRest, __async } from '../chunk-
|
|
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
|
-
//
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
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
|
-
|
|
1584
|
-
}
|
|
1585
|
-
filters
|
|
1586
|
-
});
|
|
1587
|
-
if (
|
|
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
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1643
|
+
refreshCounts();
|
|
1607
1644
|
});
|
|
1608
1645
|
useWebSocketEvent({
|
|
1609
1646
|
event: "notifications.unread_count_changed",
|
|
1610
1647
|
eventHandler: (data) => {
|
|
1611
1648
|
setUnreadCount(data.result);
|
|
1612
|
-
|
|
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
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
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() {
|