@novu/js 3.10.1 → 3.11.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/README.md +55 -1
- package/dist/cjs/{chunk-U6OU7N23.js → chunk-QQNKEWGC.js} +67 -10
- package/dist/cjs/{chunk-ZB7IPCHY.js → chunk-VWSQDNZX.js} +16 -0
- package/dist/cjs/index.d.ts +4 -4
- package/dist/cjs/index.js +14 -14
- package/dist/cjs/internal/index.d.ts +16 -2
- package/dist/cjs/internal/index.js +7 -3
- package/dist/{esm/novu-C2DJGZ4P.d.mts → cjs/novu-ThMWeiRt.d.ts} +13 -3
- package/dist/cjs/themes/index.d.ts +3 -3
- package/dist/cjs/{types-DKMAoSfo.d.ts → types-BM_9Xx5Z.d.ts} +9 -1
- package/dist/cjs/{types-CvebLpsG.d.ts → types-BjANCN3c.d.ts} +2 -2
- package/dist/cjs/ui/index.d.ts +4 -4
- package/dist/cjs/ui/index.js +17 -14
- package/dist/esm/{chunk-QOD7NZ77.mjs → chunk-RZWQYM3H.mjs} +16 -1
- package/dist/esm/{chunk-JEKUVONQ.mjs → chunk-UM35OVAD.mjs} +66 -9
- package/dist/esm/index.d.mts +4 -4
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/internal/index.d.mts +16 -2
- package/dist/esm/internal/index.mjs +1 -1
- package/dist/{cjs/novu--9_BeIj6.d.ts → esm/novu-DY-mm8Og.d.mts} +13 -3
- package/dist/esm/themes/index.d.mts +3 -3
- package/dist/esm/{types-DKMAoSfo.d.mts → types-BM_9Xx5Z.d.mts} +9 -1
- package/dist/esm/{types-Ba0J3oyA.d.mts → types-C5eX1GmB.d.mts} +2 -2
- package/dist/esm/ui/index.d.mts +4 -4
- package/dist/esm/ui/index.mjs +9 -6
- package/dist/novu.min.js +12 -12
- package/dist/novu.min.js.gz +0 -0
- package/package.json +1 -1
package/dist/cjs/ui/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkQQNKEWGC_js = require('../chunk-QQNKEWGC.js');
|
|
4
|
+
var chunkVWSQDNZX_js = require('../chunk-VWSQDNZX.js');
|
|
5
5
|
var chunk7B52C2XE_js = require('../chunk-7B52C2XE.js');
|
|
6
6
|
var web = require('solid-js/web');
|
|
7
7
|
var solidJs = require('solid-js');
|
|
@@ -37,7 +37,7 @@ function _interopNamespace(e) {
|
|
|
37
37
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
38
38
|
var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
|
|
39
39
|
|
|
40
|
-
//
|
|
40
|
+
// _v71190j6q:/home/runner/_work/novu/novu/packages/js/src/ui/index.directcss
|
|
41
41
|
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-8{height:2rem;width:2rem}.nt-size-fit{height:fit-content;width:fit-content}.nt-size-full{height:100%;width:100%}.nt-h-2{height:.5rem}.nt-h-3{height:.75rem}.nt-h-3\\.5{height:.875rem}.nt-h-4{height:1rem}.nt-h-5{height:1.25rem}.nt-h-7{height:1.75rem}.nt-h-8{height:2rem}.nt-h-9{height:2.25rem}.nt-h-\\[600px\\]{height:600px}.nt-h-fit{height:fit-content}.nt-h-full{height:100%}.nt-max-h-\\[160px\\]{max-height:160px}.nt-min-h-0{min-height:0}.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-\\[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:fit-content}.nt-w-full{width:100%}.nt-w-max{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))}.nt-cursor-default{cursor:default}.nt-cursor-not-allowed{cursor:not-allowed}.nt-cursor-pointer{cursor:pointer}.nt-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.nt-flex-row{flex-direction:row}.nt-flex-col{flex-direction:column}.nt-flex-wrap{flex-wrap:wrap}.nt-flex-nowrap{flex-wrap:nowrap}.nt-items-start{align-items:flex-start}.nt-items-center{align-items:center}.nt-justify-end{justify-content:flex-end}.nt-justify-center{justify-content:center}.nt-justify-between{justify-content:space-between}.nt-gap-0\\.5{gap:.125rem}.nt-gap-1{gap:.25rem}.nt-gap-1\\.5{gap:.375rem}.nt-gap-2{gap:.5rem}.nt-gap-3{gap:.75rem}.nt-gap-4{gap:1rem}.nt-gap-6{gap:1.5rem}.nt-gap-8{gap:2rem}.nt-self-stretch{align-self:stretch}.nt-overflow-auto{overflow:auto}.nt-overflow-hidden{overflow:hidden}.nt-overflow-y-auto{overflow-y:auto}.nt-truncate{overflow:hidden;text-overflow:ellipsis}.nt-truncate,.nt-whitespace-nowrap{white-space:nowrap}.nt-whitespace-pre-wrap{white-space:pre-wrap}.nt-rounded{border-radius:var(--nv-radius-base)}.nt-rounded-full{border-radius:var(--nv-radius-full)}.nt-rounded-lg{border-radius:var(--nv-radius-lg)}.nt-rounded-md{border-radius:var(--nv-radius-md)}.nt-rounded-sm{border-radius:var(--nv-radius-sm)}.nt-rounded-xl{border-radius:var(--nv-radius-xl)}.nt-border{border-width:1px}.nt-border-b{border-bottom-width:1px}.nt-border-t{border-top-width:1px}.nt-border-background{border-color:var(--nv-color-background)}.nt-border-border{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.nt-border-neutral-alpha-100{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-alpha-200{border-color:var(--nv-color-neutral-alpha-200)}.nt-border-neutral-alpha-400{border-color:var(--nv-color-neutral-alpha-400)}.nt-border-neutral-alpha-50{border-color:var(--nv-color-neutral-alpha-50)}.nt-border-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-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-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-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{text-decoration-line:underline}.nt-opacity-0{opacity:0}.nt-opacity-20{opacity:.2}.nt-opacity-50{opacity:.5}.nt-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-primary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-primary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-secondary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-secondary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\]{--tw-shadow:0px 1px 2px 0px #0a0d1408;--tw-shadow-colored:0px 1px 2px 0px var(--tw-shadow-color)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\],.nt-shadow-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-dropdown{--tw-shadow:0px 12px 16px -4px oklch(from var(--nv-color-shadow) l c h/0.08),0px 4px 6px -2px oklch(from var(--nv-color-shadow) l c h/0.03);--tw-shadow-colored:0px 12px 16px -4px var(--tw-shadow-color),0px 4px 6px -2px var(--tw-shadow-color)}.nt-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.nt-shadow-lg,.nt-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.nt-shadow-popover{--tw-shadow:0px 8px 26px 0px oklch(from var(--nv-color-shadow) l c h/0.08),0px 2px 6px 0px oklch(from var(--nv-color-shadow) l c h/0.12);--tw-shadow-colored:0px 8px 26px 0px var(--tw-shadow-color),0px 2px 6px 0px var(--tw-shadow-color)}.nt-shadow-popover,.nt-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.nt-shadow-tooltip{--tw-shadow:0 5px 20px 0 oklch(from var(--nv-color-shadow) l c h/0.08);--tw-shadow-colored:0 5px 20px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-outline-none{outline:2px solid #0000;outline-offset:2px}.nt-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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-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)}@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}.\\[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-lg:before{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.before\\:nt-rounded-md:before{border-radius:var(--nv-radius-md);content:var(--tw-content)}.before\\:nt-rounded-xl:before{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.before\\:nt-border:before{border-width:1px;content:var(--tw-content)}.before\\:nt-border-primary-foreground-alpha-100:before{border-color:var(--nv-color-primary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-border-secondary-foreground-alpha-100:before{border-color:var(--nv-color-secondary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-bg-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-lg:after{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.after\\:nt-rounded-md:after{border-radius:var(--nv-radius-md);content:var(--tw-content)}.after\\:nt-rounded-xl:after{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.after\\:nt-border-b-2:after{border-bottom-width:2px;content:var(--tw-content)}.after\\:nt-border-background:after{border-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-border-b-primary:after{border-bottom-color:var(--nv-color-primary);content:var(--tw-content)}.after\\:nt-border-b-transparent:after{border-bottom-color:#0000;content:var(--tw-content)}.after\\:nt-bg-background:after{background-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.07\\)_55\\%\\2c transparent\\)\\2c linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-stripes) l c h/.07) 55%,#0000),linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-gradient-to-b:after{background-image:linear-gradient(to bottom,var(--tw-gradient-stops));content:var(--tw-content)}.after\\:nt-from-primary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-primary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-from-secondary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-secondary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-to-transparent:after{content:var(--tw-content);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.after\\:nt-opacity-0:after{content:var(--tw-content);opacity:0}.after\\:nt-transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-transition-opacity:after{content:var(--tw-content);transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-duration-200:after{transition-duration:.2s}.after\\:nt-content-\\[\\"\\"\\]:after,.after\\:nt-content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.after\\:nt-duration-200:after{animation-duration:.2s;content:var(--tw-content)}.hover\\:nt-bg-neutral-alpha-100:hover{background-color:var(--nv-color-neutral-alpha-100)}.hover\\:nt-bg-neutral-alpha-50:hover{background-color:var(--nv-color-neutral-alpha-50)}.hover\\:nt-bg-primary-600:hover{background-color:var(--nv-color-primary-600)}.hover\\:nt-bg-primary-alpha-25:hover{background-color:var(--nv-color-primary-alpha-25)}.hover\\:nt-bg-primary-alpha-400:hover{background-color:var(--nv-color-primary-alpha-400)}.hover\\:nt-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}`;
|
|
42
42
|
|
|
43
43
|
// src/ui/config/appearanceKeys.ts
|
|
@@ -1112,7 +1112,7 @@ var useWebSocketEvent = ({
|
|
|
1112
1112
|
eventHandler: onMessage
|
|
1113
1113
|
}) => {
|
|
1114
1114
|
const novu = useNovu();
|
|
1115
|
-
const channelName = `nv_ws_connection:a=${novu.applicationIdentifier}:s=${novu.subscriberId}:e=${webSocketEvent}`;
|
|
1115
|
+
const channelName = `nv_ws_connection:a=${novu.applicationIdentifier}:s=${novu.subscriberId}:c=${novu.contextKey}:e=${webSocketEvent}`;
|
|
1116
1116
|
const { postMessage } = useBrowserTabsChannel({ channelName, onMessage });
|
|
1117
1117
|
const updateReadCount = (data) => {
|
|
1118
1118
|
onMessage(data);
|
|
@@ -1334,6 +1334,7 @@ var InboxProvider = (props) => {
|
|
|
1334
1334
|
const [preferencesFilter, setPreferencesFilter] = solidJs.createSignal(props.preferencesFilter);
|
|
1335
1335
|
const [isKeyless, setIsKeyless] = solidJs.createSignal(false);
|
|
1336
1336
|
const [applicationIdentifier, setApplicationIdentifier] = solidJs.createSignal(null);
|
|
1337
|
+
const [contextKeys, setContextKeys] = solidJs.createSignal(void 0);
|
|
1337
1338
|
const [preferenceGroups, setPreferenceGroups] = solidJs.createSignal(props.preferenceGroups);
|
|
1338
1339
|
const [preferencesSort, setPreferencesSort] = solidJs.createSignal(props.preferencesSort);
|
|
1339
1340
|
const setNewStatus = (newStatus) => {
|
|
@@ -1407,6 +1408,7 @@ var InboxProvider = (props) => {
|
|
|
1407
1408
|
setHideBranding(data.removeNovuBranding);
|
|
1408
1409
|
setIsDevelopmentMode(data.isDevelopmentMode);
|
|
1409
1410
|
setMaxSnoozeDurationHours(data.maxSnoozeDurationHours);
|
|
1411
|
+
setContextKeys(data.contextKeys);
|
|
1410
1412
|
if (data.isDevelopmentMode && !props.applicationIdentifier) {
|
|
1411
1413
|
setIsKeyless(!data.applicationIdentifier || !!(identifier == null ? void 0 : identifier.startsWith("pk_keyless_")));
|
|
1412
1414
|
setApplicationIdentifier((_a2 = data.applicationIdentifier) != null ? _a2 : null);
|
|
@@ -1436,7 +1438,8 @@ var InboxProvider = (props) => {
|
|
|
1436
1438
|
maxSnoozeDurationHours,
|
|
1437
1439
|
isSnoozeEnabled,
|
|
1438
1440
|
isKeyless,
|
|
1439
|
-
applicationIdentifier
|
|
1441
|
+
applicationIdentifier,
|
|
1442
|
+
contextKeys
|
|
1440
1443
|
},
|
|
1441
1444
|
get children() {
|
|
1442
1445
|
return props.children;
|
|
@@ -1452,7 +1455,7 @@ var useInboxContext = () => {
|
|
|
1452
1455
|
};
|
|
1453
1456
|
var NovuContext = solidJs.createContext(void 0);
|
|
1454
1457
|
function NovuProvider(props) {
|
|
1455
|
-
const novu = solidJs.createMemo(() => props.novu || new
|
|
1458
|
+
const novu = solidJs.createMemo(() => props.novu || new chunkQQNKEWGC_js.Novu(props.options));
|
|
1456
1459
|
return web.createComponent(NovuContext.Provider, {
|
|
1457
1460
|
get value() {
|
|
1458
1461
|
return novu();
|
|
@@ -1604,8 +1607,8 @@ var CountProvider = (props) => {
|
|
|
1604
1607
|
const tabTags = getTagsFromTab(tab);
|
|
1605
1608
|
const tabDataFilterCriteria = (_a = tab.filter) == null ? void 0 : _a.data;
|
|
1606
1609
|
const tabSeverityFilterCriteria = (_b = tab.filter) == null ? void 0 : _b.severity;
|
|
1607
|
-
const matchesTagFilter =
|
|
1608
|
-
const matchesDataFilterCriteria =
|
|
1610
|
+
const matchesTagFilter = chunkQQNKEWGC_js.checkNotificationTagFilter(notification.tags, tabTags);
|
|
1611
|
+
const matchesDataFilterCriteria = chunkQQNKEWGC_js.checkNotificationDataFilter(notification.data, tabDataFilterCriteria);
|
|
1609
1612
|
const matchesSeverityFilterCriteria = !tabSeverityFilterCriteria || Array.isArray(tabSeverityFilterCriteria) && tabSeverityFilterCriteria.length === 0 || Array.isArray(tabSeverityFilterCriteria) && tabSeverityFilterCriteria.includes(notification.severity) || !Array.isArray(tabSeverityFilterCriteria) && tabSeverityFilterCriteria === notification.severity;
|
|
1610
1613
|
if (matchesTagFilter && matchesDataFilterCriteria && matchesSeverityFilterCriteria) {
|
|
1611
1614
|
const filterKey = createKey({
|
|
@@ -2619,7 +2622,7 @@ var Footer = () => {
|
|
|
2619
2622
|
});
|
|
2620
2623
|
};
|
|
2621
2624
|
function getCurrentDomain() {
|
|
2622
|
-
if (
|
|
2625
|
+
if (chunkQQNKEWGC_js.isBrowser()) {
|
|
2623
2626
|
return window.location.hostname;
|
|
2624
2627
|
}
|
|
2625
2628
|
return "";
|
|
@@ -2631,7 +2634,7 @@ function getCurlCommand() {
|
|
|
2631
2634
|
return "";
|
|
2632
2635
|
}
|
|
2633
2636
|
const DEFAULT_BACKEND_URL = typeof window !== "undefined" && window.NOVU_LOCAL_BACKEND_URL || "https://api.novu.co";
|
|
2634
|
-
return `curl -X POST ${DEFAULT_BACKEND_URL}/${
|
|
2637
|
+
return `curl -X POST ${DEFAULT_BACKEND_URL}/${chunkQQNKEWGC_js.DEFAULT_API_VERSION}/events/trigger -H 'Authorization: Keyless ${identifier}' -H 'Content-Type: application/json' -d '{
|
|
2635
2638
|
"name": "hello-world",
|
|
2636
2639
|
"to": {
|
|
2637
2640
|
"subscriberId": "keyless-subscriber-id"
|
|
@@ -4077,7 +4080,7 @@ var useNotificationsInfiniteScroll = (props) => {
|
|
|
4077
4080
|
);
|
|
4078
4081
|
solidJs.onMount(() => {
|
|
4079
4082
|
const listener = ({ data: data2 }) => {
|
|
4080
|
-
if (!data2 || !
|
|
4083
|
+
if (!data2 || !chunkQQNKEWGC_js.isSameFilter(filter, data2.filter)) {
|
|
4081
4084
|
return;
|
|
4082
4085
|
}
|
|
4083
4086
|
mutate({ data: data2.notifications, hasMore: data2.hasMore });
|
|
@@ -4087,7 +4090,7 @@ var useNotificationsInfiniteScroll = (props) => {
|
|
|
4087
4090
|
});
|
|
4088
4091
|
solidJs.createEffect(() => chunk7B52C2XE_js.__async(void 0, null, function* () {
|
|
4089
4092
|
const newFilter = chunk7B52C2XE_js.__spreadValues({}, props.options());
|
|
4090
|
-
if (
|
|
4093
|
+
if (chunkQQNKEWGC_js.isSameFilter(filter, newFilter)) {
|
|
4091
4094
|
return;
|
|
4092
4095
|
}
|
|
4093
4096
|
novu.notifications.clearCache();
|
|
@@ -6614,7 +6617,7 @@ var Text = (props) => props.children;
|
|
|
6614
6617
|
var Markdown = (props) => {
|
|
6615
6618
|
const [local, rest] = solidJs.splitProps(props, ["class", "children", "appearanceKey", "strongAppearanceKey", "context"]);
|
|
6616
6619
|
const style = useStyle();
|
|
6617
|
-
const tokens = solidJs.createMemo(() =>
|
|
6620
|
+
const tokens = solidJs.createMemo(() => chunkVWSQDNZX_js.parseMarkdownIntoTokens(local.children));
|
|
6618
6621
|
return (() => {
|
|
6619
6622
|
var _el$2 = _tmpl$222();
|
|
6620
6623
|
web.spread(_el$2, web.mergeProps({
|
|
@@ -8423,7 +8426,7 @@ var NotificationList = (props) => {
|
|
|
8423
8426
|
})();
|
|
8424
8427
|
};
|
|
8425
8428
|
var _tmpl$81 = /* @__PURE__ */ web.template(`<span>`);
|
|
8426
|
-
var getDisplayCount = (count) => count
|
|
8429
|
+
var getDisplayCount = (count) => count > 99 ? "99+" : String(count);
|
|
8427
8430
|
var InboxTabUnreadNotificationsCount = (props) => {
|
|
8428
8431
|
const style = useStyle();
|
|
8429
8432
|
const displayCount = solidJs.createMemo(() => getDisplayCount(props.count));
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
// src/ui/internal/buildContextKey.ts
|
|
2
|
+
function buildContextKey(context) {
|
|
3
|
+
if (!context) {
|
|
4
|
+
return "";
|
|
5
|
+
}
|
|
6
|
+
const keys = [];
|
|
7
|
+
for (const [type, value] of Object.entries(context)) {
|
|
8
|
+
if (value) {
|
|
9
|
+
const id = typeof value === "string" ? value : value.id;
|
|
10
|
+
keys.push(`${type}:${id}`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return keys.sort().join(",");
|
|
14
|
+
}
|
|
15
|
+
|
|
1
16
|
// src/ui/internal/buildSubscriber.ts
|
|
2
17
|
function buildSubscriber({
|
|
3
18
|
subscriberId,
|
|
@@ -44,4 +59,4 @@ var parseMarkdownIntoTokens = (text) => {
|
|
|
44
59
|
return tokens;
|
|
45
60
|
};
|
|
46
61
|
|
|
47
|
-
export { buildSubscriber, parseMarkdownIntoTokens };
|
|
62
|
+
export { buildContextKey, buildSubscriber, parseMarkdownIntoTokens };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildSubscriber } from './chunk-
|
|
1
|
+
import { buildSubscriber, buildContextKey } from './chunk-RZWQYM3H.mjs';
|
|
2
2
|
import { __privateAdd, __privateSet, __privateGet, __async, __objRest, __spreadValues, __spreadProps, __privateMethod } from './chunk-STZMOEWR.mjs';
|
|
3
3
|
import mitt from 'mitt';
|
|
4
4
|
import 'event-target-polyfill';
|
|
@@ -141,7 +141,7 @@ function checkNotificationMatchesFilter(notification, filter) {
|
|
|
141
141
|
|
|
142
142
|
// src/api/http-client.ts
|
|
143
143
|
var DEFAULT_API_VERSION = "v1";
|
|
144
|
-
var DEFAULT_USER_AGENT = `${"@novu/js"}@${"3.
|
|
144
|
+
var DEFAULT_USER_AGENT = `${"@novu/js"}@${"3.11.0"}`;
|
|
145
145
|
var HttpClient = class {
|
|
146
146
|
constructor(options = {}) {
|
|
147
147
|
// Environment variable for local development that overrides the default API endpoint without affecting the Inbox DX
|
|
@@ -269,14 +269,18 @@ var InboxService = class {
|
|
|
269
269
|
return __async(this, arguments, function* ({
|
|
270
270
|
applicationIdentifier,
|
|
271
271
|
subscriberHash,
|
|
272
|
+
contextHash,
|
|
272
273
|
subscriber,
|
|
273
|
-
defaultSchedule
|
|
274
|
+
defaultSchedule,
|
|
275
|
+
context
|
|
274
276
|
}) {
|
|
275
277
|
const response = yield __privateGet(this, _httpClient).post(`${INBOX_ROUTE}/session`, {
|
|
276
278
|
applicationIdentifier,
|
|
277
279
|
subscriberHash,
|
|
280
|
+
contextHash,
|
|
278
281
|
subscriber,
|
|
279
|
-
defaultSchedule
|
|
282
|
+
defaultSchedule,
|
|
283
|
+
context
|
|
280
284
|
});
|
|
281
285
|
__privateGet(this, _httpClient).setAuthorizationToken(response.token);
|
|
282
286
|
__privateGet(this, _httpClient).setKeylessHeader(response.applicationIdentifier);
|
|
@@ -2491,6 +2495,18 @@ var Session = class {
|
|
|
2491
2495
|
var _a;
|
|
2492
2496
|
return (_a = __privateGet(this, _options).subscriber) == null ? void 0 : _a.subscriberId;
|
|
2493
2497
|
}
|
|
2498
|
+
get context() {
|
|
2499
|
+
return __privateGet(this, _options).context;
|
|
2500
|
+
}
|
|
2501
|
+
get subscriberHash() {
|
|
2502
|
+
return __privateGet(this, _options).subscriberHash;
|
|
2503
|
+
}
|
|
2504
|
+
get contextHash() {
|
|
2505
|
+
return __privateGet(this, _options).contextHash;
|
|
2506
|
+
}
|
|
2507
|
+
get subscriber() {
|
|
2508
|
+
return __privateGet(this, _options).subscriber;
|
|
2509
|
+
}
|
|
2494
2510
|
handleApplicationIdentifier(method, identifier) {
|
|
2495
2511
|
if (typeof window === "undefined" || !window.localStorage) {
|
|
2496
2512
|
return null;
|
|
@@ -2517,14 +2533,16 @@ var Session = class {
|
|
|
2517
2533
|
initialize(options) {
|
|
2518
2534
|
return __async(this, null, function* () {
|
|
2519
2535
|
var _a, _b, _c, _d, _e, _f;
|
|
2520
|
-
|
|
2536
|
+
const subscriberUnchanged = ((_a = __privateGet(this, _options).subscriber) == null ? void 0 : _a.subscriberId) === ((_b = options == null ? void 0 : options.subscriber) == null ? void 0 : _b.subscriberId);
|
|
2537
|
+
const contextUnchanged = JSON.stringify(__privateGet(this, _options).context) === JSON.stringify(options == null ? void 0 : options.context);
|
|
2538
|
+
if (subscriberUnchanged && contextUnchanged) {
|
|
2521
2539
|
return;
|
|
2522
2540
|
}
|
|
2523
2541
|
try {
|
|
2524
2542
|
if (options) {
|
|
2525
2543
|
__privateSet(this, _options, options);
|
|
2526
2544
|
}
|
|
2527
|
-
const { subscriber, subscriberHash, applicationIdentifier, defaultSchedule } = __privateGet(this, _options);
|
|
2545
|
+
const { subscriber, subscriberHash, contextHash, applicationIdentifier, defaultSchedule, context } = __privateGet(this, _options);
|
|
2528
2546
|
let currentTimezone;
|
|
2529
2547
|
if (isBrowser()) {
|
|
2530
2548
|
currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
@@ -2542,11 +2560,13 @@ var Session = class {
|
|
|
2542
2560
|
const response = yield __privateGet(this, _inboxService2).initializeSession({
|
|
2543
2561
|
applicationIdentifier: finalApplicationIdentifier,
|
|
2544
2562
|
subscriberHash,
|
|
2563
|
+
contextHash,
|
|
2545
2564
|
subscriber: __spreadProps(__spreadValues({}, subscriber), {
|
|
2546
2565
|
subscriberId: (_c = subscriber == null ? void 0 : subscriber.subscriberId) != null ? _c : "",
|
|
2547
2566
|
timezone: (_d = subscriber == null ? void 0 : subscriber.timezone) != null ? _d : currentTimezone
|
|
2548
2567
|
}),
|
|
2549
|
-
defaultSchedule
|
|
2568
|
+
defaultSchedule,
|
|
2569
|
+
context
|
|
2550
2570
|
});
|
|
2551
2571
|
if ((_e = response == null ? void 0 : response.applicationIdentifier) == null ? void 0 : _e.startsWith("pk_keyless_")) {
|
|
2552
2572
|
this.handleApplicationIdentifier("store", response.applicationIdentifier);
|
|
@@ -3065,7 +3085,9 @@ var Novu = class {
|
|
|
3065
3085
|
applicationIdentifier: options.applicationIdentifier || "",
|
|
3066
3086
|
subscriberHash: options.subscriberHash,
|
|
3067
3087
|
subscriber: buildSubscriber({ subscriberId: options.subscriberId, subscriber: options.subscriber }),
|
|
3068
|
-
defaultSchedule: options.defaultSchedule
|
|
3088
|
+
defaultSchedule: options.defaultSchedule,
|
|
3089
|
+
context: options.context,
|
|
3090
|
+
contextHash: options.contextHash
|
|
3069
3091
|
},
|
|
3070
3092
|
__privateGet(this, _inboxService3),
|
|
3071
3093
|
__privateGet(this, _emitter10)
|
|
@@ -3105,13 +3127,48 @@ var Novu = class {
|
|
|
3105
3127
|
get subscriberId() {
|
|
3106
3128
|
return __privateGet(this, _session).subscriberId;
|
|
3107
3129
|
}
|
|
3130
|
+
get context() {
|
|
3131
|
+
return __privateGet(this, _session).context;
|
|
3132
|
+
}
|
|
3133
|
+
get contextKey() {
|
|
3134
|
+
return buildContextKey(__privateGet(this, _session).context);
|
|
3135
|
+
}
|
|
3108
3136
|
changeSubscriber(options) {
|
|
3109
3137
|
return __async(this, null, function* () {
|
|
3110
3138
|
yield __privateGet(this, _session).initialize({
|
|
3111
3139
|
applicationIdentifier: __privateGet(this, _session).applicationIdentifier || "",
|
|
3112
3140
|
subscriberHash: options.subscriberHash,
|
|
3113
|
-
subscriber: options.subscriber
|
|
3141
|
+
subscriber: options.subscriber,
|
|
3142
|
+
// Preserve existing context and contextHash
|
|
3143
|
+
context: __privateGet(this, _session).context,
|
|
3144
|
+
contextHash: __privateGet(this, _session).contextHash
|
|
3114
3145
|
});
|
|
3146
|
+
this.notifications.cache.clearAll();
|
|
3147
|
+
const disconnectResult = yield this.socket.disconnect();
|
|
3148
|
+
if (!disconnectResult.error) {
|
|
3149
|
+
yield this.socket.connect();
|
|
3150
|
+
}
|
|
3151
|
+
});
|
|
3152
|
+
}
|
|
3153
|
+
changeContext(options) {
|
|
3154
|
+
return __async(this, null, function* () {
|
|
3155
|
+
const currentSubscriber = __privateGet(this, _session).subscriber;
|
|
3156
|
+
if (!currentSubscriber) {
|
|
3157
|
+
throw new Error("Cannot change context without an active subscriber");
|
|
3158
|
+
}
|
|
3159
|
+
yield __privateGet(this, _session).initialize({
|
|
3160
|
+
applicationIdentifier: __privateGet(this, _session).applicationIdentifier || "",
|
|
3161
|
+
// Preserve existing subscriber and subscriberHash
|
|
3162
|
+
subscriberHash: __privateGet(this, _session).subscriberHash,
|
|
3163
|
+
subscriber: currentSubscriber,
|
|
3164
|
+
context: options.context,
|
|
3165
|
+
contextHash: options.contextHash
|
|
3166
|
+
});
|
|
3167
|
+
this.notifications.cache.clearAll();
|
|
3168
|
+
const disconnectResult = yield this.socket.disconnect();
|
|
3169
|
+
if (!disconnectResult.error) {
|
|
3170
|
+
yield this.socket.connect();
|
|
3171
|
+
}
|
|
3115
3172
|
});
|
|
3116
3173
|
}
|
|
3117
3174
|
};
|
package/dist/esm/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { N as Notification } from './novu-
|
|
2
|
-
export { E as EventHandler, a as Events, F as FiltersCountResponse, L as ListNotificationsResponse, b as Novu, P as Preference, c as Schedule, S as SocketEventNames } from './novu-
|
|
3
|
-
import { S as SeverityLevelEnum, N as NotificationFilter } from './types-
|
|
4
|
-
export { C as ChannelPreference, a as ChannelType, D as DaySchedule,
|
|
1
|
+
import { N as Notification } from './novu-DY-mm8Og.mjs';
|
|
2
|
+
export { E as EventHandler, a as Events, F as FiltersCountResponse, L as ListNotificationsResponse, b as Novu, P as Preference, c as Schedule, S as SocketEventNames } from './novu-DY-mm8Og.mjs';
|
|
3
|
+
import { S as SeverityLevelEnum, N as NotificationFilter } from './types-BM_9Xx5Z.mjs';
|
|
4
|
+
export { C as ChannelPreference, a as ChannelType, b as Context, D as DaySchedule, c as DefaultSchedule, I as InboxNotification, d as NotificationStatus, e as NovuError, f as NovuOptions, P as PreferenceLevel, g as PreferencesResponse, h as StandardNovuOptions, i as Subscriber, T as TimeRange, U as UnreadCount, W as WebSocketEvent, j as WeeklySchedule, k as WorkflowCriticalityEnum } from './types-BM_9Xx5Z.mjs';
|
|
5
5
|
|
|
6
6
|
declare const areTagsEqual: (tags1?: string[], tags2?: string[]) => boolean;
|
|
7
7
|
declare const areSeveritiesEqual: (el1?: SeverityLevelEnum | SeverityLevelEnum[], el2?: SeverityLevelEnum | SeverityLevelEnum[]) => boolean;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ChannelType, NotificationStatus, Novu, PreferenceLevel, SeverityLevelEnum, WebSocketEvent, WorkflowCriticalityEnum, areSeveritiesEqual, areTagsEqual, checkNotificationDataFilter, checkNotificationMatchesFilter, isSameFilter } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { ChannelType, NotificationStatus, Novu, PreferenceLevel, SeverityLevelEnum, WebSocketEvent, WorkflowCriticalityEnum, areSeveritiesEqual, areTagsEqual, checkNotificationDataFilter, checkNotificationMatchesFilter, isSameFilter } from './chunk-UM35OVAD.mjs';
|
|
2
|
+
import './chunk-RZWQYM3H.mjs';
|
|
3
3
|
import './chunk-STZMOEWR.mjs';
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as Context, i as Subscriber } from '../types-BM_9Xx5Z.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Builds a compact, stable string key from context objects by extracting only type:id pairs.
|
|
5
|
+
*
|
|
6
|
+
* This avoids including large `data` payloads in:
|
|
7
|
+
* - React dependency arrays (useMemo)
|
|
8
|
+
* - Web Locks API channel names (prevents duplicate subscriptions)
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* buildContextKey({ tenant: { id: "inbox-1", data: {...} } }) // "tenant:inbox-1"
|
|
12
|
+
* buildContextKey({ tenant: "inbox-1" }) // "tenant:inbox-1"
|
|
13
|
+
* buildContextKey(undefined) // ""
|
|
14
|
+
*/
|
|
15
|
+
declare function buildContextKey(context: Context | undefined): string;
|
|
2
16
|
|
|
3
17
|
declare function buildSubscriber({ subscriberId, subscriber, }: {
|
|
4
18
|
subscriberId: string | undefined;
|
|
@@ -11,4 +25,4 @@ interface Token {
|
|
|
11
25
|
}
|
|
12
26
|
declare const parseMarkdownIntoTokens: (text: string) => Token[];
|
|
13
27
|
|
|
14
|
-
export { type Token, buildSubscriber, parseMarkdownIntoTokens };
|
|
28
|
+
export { type Token, buildContextKey, buildSubscriber, parseMarkdownIntoTokens };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { buildSubscriber, parseMarkdownIntoTokens } from '../chunk-
|
|
1
|
+
export { buildContextKey, buildSubscriber, parseMarkdownIntoTokens } from '../chunk-RZWQYM3H.mjs';
|
|
2
2
|
import '../chunk-STZMOEWR.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { j as WeeklySchedule, S as SeverityLevelEnum, k as WorkflowCriticalityEnum, C as ChannelPreference, l as Session, R as Result, P as PreferenceLevel, m as Workflow, n as Prettify, i as Subscriber, c as DefaultSchedule, b as Context, I as InboxNotification, N as NotificationFilter, A as ActionTypeEnum, g as PreferencesResponse, W as WebSocketEvent, o as ContextValue, f as NovuOptions } from './types-BM_9Xx5Z.mjs';
|
|
2
2
|
|
|
3
3
|
type HttpClientOptions = {
|
|
4
4
|
apiVersion?: string;
|
|
@@ -139,11 +139,13 @@ declare class InboxService {
|
|
|
139
139
|
#private;
|
|
140
140
|
isSessionInitialized: boolean;
|
|
141
141
|
constructor(options?: InboxServiceOptions);
|
|
142
|
-
initializeSession({ applicationIdentifier, subscriberHash, subscriber, defaultSchedule, }: {
|
|
142
|
+
initializeSession({ applicationIdentifier, subscriberHash, contextHash, subscriber, defaultSchedule, context, }: {
|
|
143
143
|
applicationIdentifier?: string;
|
|
144
144
|
subscriberHash?: string;
|
|
145
|
+
contextHash?: string;
|
|
145
146
|
subscriber?: Subscriber;
|
|
146
147
|
defaultSchedule?: DefaultSchedule;
|
|
148
|
+
context?: Context;
|
|
147
149
|
}): Promise<Session>;
|
|
148
150
|
fetchNotifications({ after, archived, limit, offset, read, tags, snoozed, seen, data, severity, }: {
|
|
149
151
|
tags?: string[];
|
|
@@ -444,7 +446,9 @@ type InitializeSessionArgs = KeylessInitializeSessionArgs | {
|
|
|
444
446
|
applicationIdentifier: string;
|
|
445
447
|
subscriber: Subscriber;
|
|
446
448
|
subscriberHash?: string;
|
|
449
|
+
contextHash?: string;
|
|
447
450
|
defaultSchedule?: DefaultSchedule;
|
|
451
|
+
context?: Context;
|
|
448
452
|
};
|
|
449
453
|
|
|
450
454
|
type NovuPendingEvent<A, D = undefined> = {
|
|
@@ -468,7 +472,7 @@ type NotificationUnreadEvents = BaseEvents<'notification.unread', UnreadArgs, No
|
|
|
468
472
|
type NotificationSeenEvents = BaseEvents<'notification.seen', SeenArgs, Notification>;
|
|
469
473
|
type NotificationArchiveEvents = BaseEvents<'notification.archive', ArchivedArgs, Notification>;
|
|
470
474
|
type NotificationUnarchiveEvents = BaseEvents<'notification.unarchive', UnarchivedArgs, Notification>;
|
|
471
|
-
type NotificationDeleteEvents = BaseEvents<'notification.delete', DeletedArgs,
|
|
475
|
+
type NotificationDeleteEvents = BaseEvents<'notification.delete', DeletedArgs, Notification>;
|
|
472
476
|
type NotificationSnoozeEvents = BaseEvents<'notification.snooze', SnoozeArgs, Notification>;
|
|
473
477
|
type NotificationUnsnoozeEvents = BaseEvents<'notification.unsnooze', UnsnoozeArgs, Notification>;
|
|
474
478
|
type NotificationCompleteActionEvents = BaseEvents<'notification.complete_action', CompleteArgs, Notification>;
|
|
@@ -578,11 +582,17 @@ declare class Novu implements Pick<NovuEventEmitter, 'on'> {
|
|
|
578
582
|
off: <Key extends EventNames>(eventName: Key, listener: EventHandler<Events[Key]>) => void;
|
|
579
583
|
get applicationIdentifier(): string | undefined;
|
|
580
584
|
get subscriberId(): string | undefined;
|
|
585
|
+
get context(): Partial<Record<string, ContextValue>> | undefined;
|
|
586
|
+
get contextKey(): string;
|
|
581
587
|
constructor(options: NovuOptions);
|
|
582
588
|
changeSubscriber(options: {
|
|
583
589
|
subscriber: Subscriber;
|
|
584
590
|
subscriberHash?: string;
|
|
585
591
|
}): Promise<void>;
|
|
592
|
+
changeContext(options: {
|
|
593
|
+
context: Context;
|
|
594
|
+
contextHash?: string;
|
|
595
|
+
}): Promise<void>;
|
|
586
596
|
}
|
|
587
597
|
|
|
588
598
|
export { type EventHandler as E, type FiltersCountResponse as F, type ListNotificationsResponse as L, Notification as N, Preference as P, type SocketEventNames as S, type Events as a, Novu as b, Schedule as c };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as Theme } from '../types-
|
|
2
|
-
import '../types-
|
|
3
|
-
import '../novu-
|
|
1
|
+
import { r as Theme } from '../types-C5eX1GmB.mjs';
|
|
2
|
+
import '../types-BM_9Xx5Z.mjs';
|
|
3
|
+
import '../novu-DY-mm8Og.mjs';
|
|
4
4
|
|
|
5
5
|
declare const dark: Theme;
|
|
6
6
|
|
|
@@ -61,6 +61,7 @@ type Session = {
|
|
|
61
61
|
isDevelopmentMode: boolean;
|
|
62
62
|
maxSnoozeDurationHours: number;
|
|
63
63
|
applicationIdentifier?: string;
|
|
64
|
+
contextKeys?: string[];
|
|
64
65
|
};
|
|
65
66
|
type Subscriber = {
|
|
66
67
|
id?: string;
|
|
@@ -158,6 +159,11 @@ type DefaultSchedule = {
|
|
|
158
159
|
isEnabled?: boolean;
|
|
159
160
|
weeklySchedule?: WeeklySchedule;
|
|
160
161
|
};
|
|
162
|
+
type ContextValue = string | {
|
|
163
|
+
id: string;
|
|
164
|
+
data?: Record<string, unknown>;
|
|
165
|
+
};
|
|
166
|
+
type Context = Partial<Record<string, ContextValue>>;
|
|
161
167
|
type PreferencesResponse = {
|
|
162
168
|
level: PreferenceLevel;
|
|
163
169
|
enabled: boolean;
|
|
@@ -192,10 +198,12 @@ type StandardNovuOptions = {
|
|
|
192
198
|
__userAgent?: string;
|
|
193
199
|
applicationIdentifier: string;
|
|
194
200
|
subscriberHash?: string;
|
|
201
|
+
contextHash?: string;
|
|
195
202
|
apiUrl?: string;
|
|
196
203
|
socketUrl?: string;
|
|
197
204
|
useCache?: boolean;
|
|
198
205
|
defaultSchedule?: DefaultSchedule;
|
|
206
|
+
context?: Context;
|
|
199
207
|
} & ({
|
|
200
208
|
/** @deprecated Use subscriber prop instead */
|
|
201
209
|
subscriberId: string;
|
|
@@ -209,4 +217,4 @@ type Prettify<T> = {
|
|
|
209
217
|
[K in keyof T]: T[K];
|
|
210
218
|
} & {};
|
|
211
219
|
|
|
212
|
-
export { ActionTypeEnum as A, type ChannelPreference as C, type DaySchedule as D, type InboxNotification as I, type NotificationFilter as N, PreferenceLevel as P, type Result as R, SeverityLevelEnum as S, type TimeRange as T, type UnreadCount as U, WebSocketEvent as W, ChannelType as a, type
|
|
220
|
+
export { ActionTypeEnum as A, type ChannelPreference as C, type DaySchedule as D, type InboxNotification as I, type NotificationFilter as N, PreferenceLevel as P, type Result as R, SeverityLevelEnum as S, type TimeRange as T, type UnreadCount as U, WebSocketEvent as W, ChannelType as a, type Context as b, type DefaultSchedule as c, NotificationStatus as d, NovuError as e, type NovuOptions as f, type PreferencesResponse as g, type StandardNovuOptions as h, type Subscriber as i, type WeeklySchedule as j, WorkflowCriticalityEnum as k, type Session as l, type Workflow as m, type Prettify as n, type ContextValue as o };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as UnreadCount, N as NotificationFilter,
|
|
2
|
-
import { N as Notification, P as Preference, c as Schedule, b as Novu } from './novu-
|
|
1
|
+
import { U as UnreadCount, N as NotificationFilter, k as WorkflowCriticalityEnum, f as NovuOptions } from './types-BM_9Xx5Z.mjs';
|
|
2
|
+
import { N as Notification, P as Preference, c as Schedule, b as Novu } from './novu-DY-mm8Og.mjs';
|
|
3
3
|
|
|
4
4
|
declare const appearanceKeys: readonly ["button", "input", "icon", "badge", "popoverContent", "popoverTrigger", "popoverClose", "dropdownContent", "dropdownTrigger", "dropdownItem", "dropdownItemLabel", "dropdownItemLabelContainer", "dropdownItemLeft__icon", "dropdownItemRight__icon", "dropdownItem__icon", "collapsible", "tooltipContent", "tooltipTrigger", "datePicker", "datePickerGrid", "datePickerGridRow", "datePickerGridCell", "datePickerGridCellTrigger", "datePickerTrigger", "datePickerGridHeader", "datePickerControl", "datePickerControlPrevTrigger", "datePickerControlNextTrigger", "datePickerControlPrevTrigger__icon", "datePickerControlNextTrigger__icon", "datePickerCalendar", "datePickerHeaderMonth", "datePickerCalendarDay__button", "timePicker", "timePicker__hourSelect", "timePicker__minuteSelect", "timePicker__periodSelect", "timePicker__separator", "timePickerHour__input", "timePickerMinute__input", "snoozeDatePicker", "snoozeDatePicker__actions", "snoozeDatePickerCancel__button", "snoozeDatePickerApply__button", "snoozeDatePicker__timePickerContainer", "snoozeDatePicker__timePickerLabel", "back__button", "skeletonText", "skeletonAvatar", "skeletonSwitch", "skeletonSwitchThumb", "tabsRoot", "tabsList", "tabsContent", "tabsTrigger", "dots", "root", "bellIcon", "lockIcon", "bellContainer", "severityHigh__bellContainer", "severityMedium__bellContainer", "severityLow__bellContainer", "bellSeverityGlow", "severityGlowHigh__bellSeverityGlow", "severityGlowMedium__bellSeverityGlow", "severityGlowLow__bellSeverityGlow", "bellDot", "preferences__button", "preferencesContainer", "inboxHeader", "loading", "inboxContent", "inbox__popoverTrigger", "inbox__popoverContent", "notificationListContainer", "notificationList", "notificationListEmptyNoticeContainer", "notificationListEmptyNoticeOverlay", "notificationListEmptyNoticeIcon", "notificationListEmptyNotice", "notificationList__skeleton", "notificationList__skeletonContent", "notificationList__skeletonItem", "notificationList__skeletonAvatar", "notificationList__skeletonText", "notificationListNewNotificationsNotice__button", "notification", "severityHigh__notification", "severityMedium__notification", "severityLow__notification", "notificationBar", "severityHigh__notificationBar", "severityMedium__notificationBar", "severityLow__notificationBar", "notificationContent", "notificationTextContainer", "notificationDot", "notificationSubject", "notificationSubject__strong", "notificationBody", "notificationBody__strong", "notificationBodyContainer", "notificationImage", "notificationImageLoadingFallback", "notificationDate", "notificationDateActionsContainer", "notificationDefaultActions", "notificationCustomActions", "notificationPrimaryAction__button", "notificationSecondaryAction__button", "notificationRead__button", "notificationUnread__button", "notificationArchive__button", "notificationUnarchive__button", "notificationSnooze__button", "notificationUnsnooze__button", "notificationRead__icon", "notificationUnread__icon", "notificationArchive__icon", "notificationUnarchive__icon", "notificationSnooze__icon", "notificationUnsnooze__icon", "notificationsTabs__tabsRoot", "notificationsTabs__tabsList", "notificationsTabs__tabsContent", "notificationsTabs__tabsTrigger", "notificationsTabsTriggerLabel", "notificationsTabsTriggerCount", "inboxStatus__title", "inboxStatus__dropdownTrigger", "inboxStatus__dropdownContent", "inboxStatus__dropdownItem", "inboxStatus__dropdownItemLabel", "inboxStatus__dropdownItemLabelContainer", "inboxStatus__dropdownItemLeft__icon", "inboxStatus__dropdownItemRight__icon", "inboxStatus__dropdownItem__icon", "inboxStatus__dropdownItemCheck__icon", "moreActionsContainer", "moreActions__dropdownTrigger", "moreActions__dropdownContent", "moreActions__dropdownItem", "moreActions__dropdownItemLabel", "moreActions__dropdownItemLeft__icon", "moreActions__dots", "moreTabs__button", "moreTabs__icon", "moreTabs__dropdownTrigger", "moreTabs__dropdownContent", "moreTabs__dropdownItem", "moreTabs__dropdownItemLabel", "moreTabs__dropdownItemRight__icon", "workflowContainer", "workflowLabel", "workflowLabelHeader", "workflowLabelHeaderContainer", "workflowLabelIcon", "workflowLabelContainer", "workflowContainerDisabledNotice", "workflowLabelDisabled__icon", "workflowContainerRight__icon", "workflowArrow__icon", "workflowDescription", "preferencesGroupContainer", "preferencesGroupHeader", "preferencesGroupLabelContainer", "preferencesGroupLabelIcon", "preferencesGroupLabel", "preferencesGroupActionsContainer", "preferencesGroupActionsContainerRight__icon", "preferencesGroupBody", "preferencesGroupChannels", "preferencesGroupInfo", "preferencesGroupInfoIcon", "preferencesGroupWorkflows", "channelContainer", "channelIconContainer", "channel__icon", "channelsContainerCollapsible", "channelsContainer", "channelLabel", "channelLabelContainer", "channelName", "channelSwitchContainer", "channelSwitch", "channelSwitchThumb", "preferencesHeader", "preferencesHeader__back__button", "preferencesHeader__back__button__icon", "preferencesHeader__title", "preferencesHeader__icon", "preferencesListEmptyNoticeContainer", "preferencesListEmptyNotice", "preferencesList__skeleton", "preferencesList__skeletonContent", "preferencesList__skeletonItem", "preferencesList__skeletonIcon", "preferencesList__skeletonSwitch", "preferencesList__skeletonSwitchThumb", "preferencesList__skeletonText", "scheduleContainer", "scheduleHeader", "scheduleLabelContainer", "scheduleLabelScheduleIcon", "scheduleLabelInfoIcon", "scheduleLabel", "scheduleActionsContainer", "scheduleActionsContainerRight", "scheduleBody", "scheduleDescription", "scheduleTable", "scheduleTableHeader", "scheduleHeaderColumn", "scheduleTableBody", "scheduleBodyRow", "scheduleBodyColumn", "scheduleInfoContainer", "scheduleInfoIcon", "scheduleInfo", "dayScheduleCopyTitle", "dayScheduleCopyIcon", "dayScheduleCopySelectAll", "dayScheduleCopyDay", "dayScheduleCopyFooterContainer", "dayScheduleCopy__dropdownTrigger", "dayScheduleCopy__dropdownContent", "timeSelect__dropdownTrigger", "timeSelect__time", "timeSelect__dropdownContent", "timeSelect__dropdownItem", "timeSelect__dropdownItemLabel", "timeSelect__dropdownItemLabelContainer", "timeSelect__dropdownItemCheck__icon", "notificationSnooze__dropdownContent", "notificationSnooze__dropdownItem", "notificationSnooze__dropdownItem__icon", "notificationSnoozeCustomTime_popoverContent", "notificationDeliveredAt__badge", "notificationDeliveredAt__icon", "notificationSnoozedUntil__icon", "strong"];
|
|
5
5
|
|
package/dist/esm/ui/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { N as Notification } from '../novu-
|
|
2
|
-
import {
|
|
3
|
-
import { B as BellRenderer, N as NotificationClickHandler, a as NotificationActionClickHandler, b as NotificationRenderer, A as AvatarRenderer, S as SubjectRenderer, c as BodyRenderer, D as DefaultActionsRenderer, C as CustomActionsRenderer, d as NovuProviderProps, e as BaseNovuProviderProps, f as Appearance, L as Localization, T as Tab, P as PreferencesFilter, g as PreferenceGroups, h as PreferencesSort, R as RouterPush } from '../types-
|
|
4
|
-
export { i as AppearanceCallback, j as AppearanceCallbackFunction, k as AppearanceCallbackKeys, l as AppearanceKey, E as ElementStyles, m as Elements, I as IconKey, n as IconOverrides, o as IconRenderer, p as LocalizationKey, q as NotificationStatus, r as Theme, V as Variables } from '../types-
|
|
1
|
+
export { N as Notification } from '../novu-DY-mm8Og.mjs';
|
|
2
|
+
import { f as NovuOptions } from '../types-BM_9Xx5Z.mjs';
|
|
3
|
+
import { B as BellRenderer, N as NotificationClickHandler, a as NotificationActionClickHandler, b as NotificationRenderer, A as AvatarRenderer, S as SubjectRenderer, c as BodyRenderer, D as DefaultActionsRenderer, C as CustomActionsRenderer, d as NovuProviderProps, e as BaseNovuProviderProps, f as Appearance, L as Localization, T as Tab, P as PreferencesFilter, g as PreferenceGroups, h as PreferencesSort, R as RouterPush } from '../types-C5eX1GmB.mjs';
|
|
4
|
+
export { i as AppearanceCallback, j as AppearanceCallbackFunction, k as AppearanceCallbackKeys, l as AppearanceKey, E as ElementStyles, m as Elements, I as IconKey, n as IconOverrides, o as IconRenderer, p as LocalizationKey, q as NotificationStatus, r as Theme, V as Variables } from '../types-C5eX1GmB.mjs';
|
|
5
5
|
import { Placement, OffsetOptions } from '@floating-ui/dom';
|
|
6
6
|
import * as solid_js from 'solid-js';
|
|
7
7
|
import { ComponentProps } from 'solid-js';
|