@novu/js 3.5.0-rc.1 → 3.5.0-rc.3
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-ME3JBJPI.js → chunk-MKUNHEMT.js} +94 -19
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +8 -8
- package/dist/{esm/novu-q3jzGeyW.d.mts → cjs/novu-Bocb1dH9.d.ts} +24 -13
- package/dist/cjs/themes/index.d.ts +2 -2
- package/dist/cjs/{types-DdImrpw7.d.ts → types-DeMFGM4g.d.ts} +2 -2
- package/dist/cjs/ui/index.d.ts +4 -4
- package/dist/cjs/ui/index.js +1514 -1222
- package/dist/esm/{chunk-P4YVABAC.mjs → chunk-T4OFEC3E.mjs} +94 -20
- package/dist/esm/index.d.mts +2 -2
- package/dist/esm/index.mjs +1 -1
- package/dist/{cjs/novu-q3jzGeyW.d.ts → esm/novu-Bocb1dH9.d.mts} +24 -13
- package/dist/esm/themes/index.d.mts +2 -2
- package/dist/esm/{types-CTQLJWIf.d.mts → types-CObwRGDC.d.mts} +2 -2
- package/dist/esm/ui/index.d.mts +4 -4
- package/dist/esm/ui/index.mjs +1515 -1223
- package/dist/index.css +1 -1
- package/dist/novu.min.js +10 -10
- package/dist/novu.min.js.gz +0 -0
- package/package.json +17 -16
package/dist/esm/ui/index.mjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Novu, isSameFilter } from '../chunk-
|
|
1
|
+
import { Novu, DEFAULT_API_VERSION, isSameFilter } from '../chunk-T4OFEC3E.mjs';
|
|
2
2
|
import { parseMarkdownIntoTokens } from '../chunk-GPV65U5R.mjs';
|
|
3
3
|
import { __privateAdd, __privateMethod, __privateSet, __privateGet, __spreadProps, __spreadValues, __objRest, __async } from '../chunk-STZMOEWR.mjs';
|
|
4
|
-
import {
|
|
4
|
+
import { createComponent, mergeProps, delegateEvents, render, Portal, spread, template, insert, memo, effect, className, use, setAttribute, Dynamic } from 'solid-js/web';
|
|
5
5
|
import { createSignal, createContext, useContext, onMount, onCleanup, For, createMemo, createEffect, splitProps, Show, Switch as Switch$1, Match, createResource, Index, batch } from 'solid-js';
|
|
6
6
|
import { createStore } from 'solid-js/store';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
9
|
-
import { cva } from 'class-variance-authority';
|
|
10
9
|
import { autoUpdate, offset, flip, shift } from '@floating-ui/dom';
|
|
11
10
|
import { useFloating } from 'solid-floating-ui';
|
|
12
11
|
import { Motion as Motion$1 } from 'solid-motionone';
|
|
12
|
+
import { cva } from 'class-variance-authority';
|
|
13
13
|
|
|
14
|
-
//
|
|
15
|
-
var ui_default = `.novu{scrollbar-color:var(--nv-color-secondary-foreground-alpha-300) #0000;:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{border:0 solid #e5e7eb;box-sizing:border-box}:where(html,:host){line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;tab-size:4;-webkit-tap-highlight-color:transparent}:where(body){line-height:inherit;margin:0}:where(hr){border-top-width:1px;color:inherit;height:0}:where(abbr:where([title])){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(a){color:inherit;text-decoration:inherit}:where(b,strong){font-weight:bolder}:where(code,kbd,samp,pre){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}:where(small){font-size:80%}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:initial}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(table){border-collapse:collapse;border-color:inherit;text-indent:0}:where(button,input,optgroup,select,textarea){color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}:where(button,select){text-transform:none}:where(button,input:where([type=button]),input:where([type=reset]),input:where([type=submit])){-webkit-appearance:button;background-color:initial;background-image:none}:where(:-moz-focusring){outline:auto}:where(:-moz-ui-invalid){box-shadow:none}:where(progress){vertical-align:initial}:where(*)::-webkit-inner-spin-button,:where(*)::-webkit-outer-spin-button{height:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(*)::-webkit-search-decoration{-webkit-appearance:none}:where(*)::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre){margin:0}:where(fieldset){margin:0;padding:0}:where(legend){padding:0}:where(ol,ul,menu){list-style:none;margin:0;padding:0}:where(dialog){padding:0}:where(textarea){resize:vertical}:where(input)::placeholder,:where(textarea)::placeholder{color:#9ca3af;opacity:1}:where(button,[role=button]){cursor:pointer}:where(:disabled){cursor:default}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block;vertical-align:middle}:where(img,video){height:auto;max-width:100%}:where([hidden]){display:none}:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:where(*) ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-scrollbar{height:.5rem;width:.5rem}::-webkit-scrollbar-thumb{background-clip:"padding-box";background-color:var(--nv-color-secondary-foreground-alpha-300);border-radius:.25rem}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background-color:initial}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}}.nt-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.\\!nt-pointer-events-auto{pointer-events:auto!important}.nt-invisible{visibility:hidden}.nt-absolute{position:absolute}.nt-relative{position:relative}.nt-inset-0{inset:0}.nt-inset-2{inset:.5rem}.nt-left-0\\.5{left:.125rem}.nt-right-0{right:0}.nt-right-3{right:.75rem}.nt-top-0{top:0}.nt-top-0\\.5{top:.125rem}.nt-top-3{top:.75rem}.nt-z-10{z-index:10}.nt-z-\\[-1\\]{z-index:-1}.nt-mx-auto{margin-left:auto;margin-right:auto}.nt-mb-2{margin-bottom:.5rem}.nt-mb-4{margin-bottom:1rem}.nt-mb-\\[0\\.625rem\\]{margin-bottom:.625rem}.nt-ml-2{margin-left:.5rem}.nt-ml-auto{margin-left:auto}.nt-mr-2{margin-right:.5rem}.nt-mr-auto{margin-right:auto}.nt-mt-1{margin-top:.25rem}.nt-mt-auto{margin-top:auto}.nt-block{display:block}.nt-flex{display:flex}.nt-inline-flex{display:inline-flex}.nt-grid{display:grid}.nt-hidden{display:none}.nt-aspect-square{aspect-ratio:1/1}.nt-size-1\\.5{height:.375rem;width:.375rem}.nt-size-2{height:.5rem;width:.5rem}.nt-size-2\\.5{height:.625rem;width:.625rem}.nt-size-3{height:.75rem;width:.75rem}.nt-size-3\\.5{height:.875rem;width:.875rem}.nt-size-4{height:1rem;width:1rem}.nt-size-5{height:1.25rem;width:1.25rem}.nt-size-8{height:2rem;width:2rem}.nt-size-fit{height:fit-content;width:fit-content}.nt-size-full{height:100%;width:100%}.nt-h-2{height:.5rem}.nt-h-3{height:.75rem}.nt-h-4{height:1rem}.nt-h-5{height:1.25rem}.nt-h-7{height:1.75rem}.nt-h-8{height:2rem}.nt-h-9{height:2.25rem}.nt-h-\\[600px\\]{height:600px}.nt-h-fit{height:fit-content}.nt-h-full{height:100%}.nt-min-h-0{min-height:0}.nt-w-1\\/3{width:33.333333%}.nt-w-2\\/3{width:66.666667%}.nt-w-5{width:1.25rem}.nt-w-7{width:1.75rem}.nt-w-8{width:2rem}.nt-w-\\[260px\\]{width:260px}.nt-w-\\[400px\\]{width:400px}.nt-w-\\[60px\\]{width:60px}.nt-w-\\[calc\\(2ch\\+2rem\\)\\]{width:calc(2ch + 2rem)}.nt-w-fit{width:fit-content}.nt-w-full{width:100%}.nt-w-max{width:max-content}.nt-min-w-52{min-width:13rem}.nt-flex-1{flex:1 1 0%}.nt-shrink-0{flex-shrink:0}.nt-translate-x-1\\/2{--tw-translate-x:50%}.nt-transform,.nt-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nt-cursor-default{cursor:default}.nt-cursor-not-allowed{cursor:not-allowed}.nt-cursor-pointer{cursor:pointer}.nt-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.nt-flex-row{flex-direction:row}.nt-flex-col{flex-direction:column}.nt-flex-wrap{flex-wrap:wrap}.nt-flex-nowrap{flex-wrap:nowrap}.nt-items-start{align-items:flex-start}.nt-items-center{align-items:center}.nt-justify-end{justify-content:flex-end}.nt-justify-center{justify-content:center}.nt-justify-between{justify-content:space-between}.nt-gap-0\\.5{gap:.125rem}.nt-gap-1{gap:.25rem}.nt-gap-1\\.5{gap:.375rem}.nt-gap-2{gap:.5rem}.nt-gap-3{gap:.75rem}.nt-gap-4{gap:1rem}.nt-gap-6{gap:1.5rem}.nt-gap-8{gap:2rem}.nt-self-stretch{align-self:stretch}.nt-overflow-auto{overflow:auto}.nt-overflow-hidden{overflow:hidden}.nt-overflow-y-auto{overflow-y:auto}.nt-truncate{overflow:hidden;text-overflow:ellipsis}.nt-truncate,.nt-whitespace-nowrap{white-space:nowrap}.nt-whitespace-pre-wrap{white-space:pre-wrap}.nt-rounded{border-radius:var(--nv-radius-base)}.nt-rounded-full{border-radius:var(--nv-radius-full)}.nt-rounded-lg{border-radius:var(--nv-radius-lg)}.nt-rounded-md{border-radius:var(--nv-radius-md)}.nt-rounded-sm{border-radius:var(--nv-radius-sm)}.nt-rounded-xl{border-radius:var(--nv-radius-xl)}.nt-border{border-width:1px}.nt-border-b{border-bottom-width:1px}.nt-border-t{border-top-width:1px}.nt-border-background{border-color:var(--nv-color-background)}.nt-border-border{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.nt-border-neutral-alpha-100{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-alpha-200{border-color:var(--nv-color-neutral-alpha-200)}.nt-border-neutral-alpha-400{border-color:var(--nv-color-neutral-alpha-400)}.nt-border-neutral-alpha-50{border-color:var(--nv-color-neutral-alpha-50)}.nt-border-t-neutral-alpha-200{border-top-color:var(--nv-color-neutral-alpha-200)}.nt-bg-\\[oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.1\\)\\]{background-color:oklch(from var(--nv-color-stripes) l c h/.1)}.nt-bg-background{background-color:var(--nv-color-background)}.nt-bg-counter{background-color:var(--nv-color-counter)}.nt-bg-foreground{background-color:var(--nv-color-foreground)}.nt-bg-neutral-alpha-100{background-color:var(--nv-color-neutral-alpha-100)}.nt-bg-neutral-alpha-25{background-color:var(--nv-color-neutral-alpha-25)}.nt-bg-neutral-alpha-300{background-color:var(--nv-color-neutral-alpha-300)}.nt-bg-neutral-alpha-50{background-color:var(--nv-color-neutral-alpha-50)}.nt-bg-primary{background-color:var(--nv-color-primary)}.nt-bg-primary-alpha-300{background-color:var(--nv-color-primary-alpha-300)}.nt-bg-primary-alpha-400{background-color:var(--nv-color-primary-alpha-400)}.nt-bg-secondary{background-color:var(--nv-color-secondary)}.nt-bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.nt-bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.nt-from-foreground-alpha-50{--tw-gradient-from:var(--nv-color-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-primary-foreground-alpha-200{--tw-gradient-from:var(--nv-color-primary-foreground-alpha-200) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-20\\%{--tw-gradient-from-position:20%}.nt-to-background{--tw-gradient-to:var(--nv-color-background) var(--tw-gradient-to-position)}.nt-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.nt-object-cover{object-fit:cover}.nt-p-0{padding:0}.nt-p-0\\.5{padding:.125rem}.nt-p-1{padding:.25rem}.nt-p-2{padding:.5rem}.nt-p-2\\.5{padding:.625rem}.nt-p-3{padding:.75rem}.nt-p-4{padding:1rem}.nt-px-1{padding-left:.25rem;padding-right:.25rem}.nt-px-2{padding-left:.5rem;padding-right:.5rem}.nt-px-3{padding-left:.75rem;padding-right:.75rem}.nt-px-4{padding-left:1rem;padding-right:1rem}.nt-px-8{padding-left:2rem;padding-right:2rem}.nt-px-\\[6px\\]{padding-left:6px;padding-right:6px}.nt-py-1{padding-bottom:.25rem;padding-top:.25rem}.nt-py-2{padding-bottom:.5rem;padding-top:.5rem}.nt-py-3{padding-bottom:.75rem;padding-top:.75rem}.nt-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.nt-py-4{padding-bottom:1rem;padding-top:1rem}.nt-py-px{padding-bottom:1px;padding-top:1px}.nt-pb-2{padding-bottom:.5rem}.nt-pb-\\[0\\.625rem\\]{padding-bottom:.625rem}.nt-pr-0{padding-right:0}.nt-pt-2\\.5{padding-top:.625rem}.nt-text-center{text-align:center}.nt-text-start{text-align:start}.nt-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.nt-text-\\[0\\.8rem\\]{font-size:.8rem}.nt-text-base{font-size:var(--nv-font-size-base);line-height:var(--nv-line-height-base)}.nt-text-sm{font-size:var(--nv-font-size-sm);line-height:var(--nv-line-height-sm)}.nt-text-xl{font-size:var(--nv-font-size-xl);line-height:var(--nv-line-height-xl)}.nt-text-xs{font-size:var(--nv-font-size-xs);line-height:var(--nv-line-height-xs)}.nt-font-medium{font-weight:500}.nt-font-normal{font-weight:400}.nt-font-semibold{font-weight:600}.nt-leading-none{line-height:1}.nt-text-background{color:var(--nv-color-background)}.nt-text-counter-foreground{color:var(--nv-color-counter-foreground)}.nt-text-foreground{color:var(--nv-color-foreground)}.nt-text-foreground-alpha-300{color:var(--nv-color-foreground-alpha-300)}.nt-text-foreground-alpha-400{color:var(--nv-color-foreground-alpha-400)}.nt-text-foreground-alpha-600{color:var(--nv-color-foreground-alpha-600)}.nt-text-foreground-alpha-700{color:var(--nv-color-foreground-alpha-700)}.nt-text-primary-foreground{color:var(--nv-color-primary-foreground)}.nt-text-secondary-foreground{color:var(--nv-color-secondary-foreground)}.nt-text-stripes{color:var(--nv-color-stripes)}.nt-opacity-0{opacity:0}.nt-opacity-20{opacity:.2}.nt-opacity-50{opacity:.5}.nt-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-primary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-primary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-secondary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-secondary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\]{--tw-shadow:0px 1px 2px 0px #0a0d1408;--tw-shadow-colored:0px 1px 2px 0px var(--tw-shadow-color)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\],.nt-shadow-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-dropdown{--tw-shadow:0px 12px 16px -4px oklch(from var(--nv-color-shadow) l c h/0.08),0px 4px 6px -2px oklch(from var(--nv-color-shadow) l c h/0.03);--tw-shadow-colored:0px 12px 16px -4px var(--tw-shadow-color),0px 4px 6px -2px var(--tw-shadow-color)}.nt-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.nt-shadow-lg,.nt-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.nt-shadow-popover{--tw-shadow:0px 8px 26px 0px oklch(from var(--nv-color-shadow) l c h/0.08),0px 2px 6px 0px oklch(from var(--nv-color-shadow) l c h/0.12);--tw-shadow-colored:0px 8px 26px 0px var(--tw-shadow-color),0px 2px 6px 0px var(--tw-shadow-color)}.nt-shadow-popover,.nt-shadow-tooltip{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-tooltip{--tw-shadow:0 5px 20px 0 oklch(from var(--nv-color-shadow) l c h/0.08);--tw-shadow-colored:0 5px 20px 0 var(--tw-shadow-color)}.nt-outline-none{outline:2px solid #0000;outline-offset:2px}.nt-backdrop-blur-lg{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.nt-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-duration-100{transition-duration:.1s}.nt-duration-200{transition-duration:.2s}.nt-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.nt-animate-in{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.nt-fade-in{--tw-enter-opacity:0}.nt-slide-in-from-top-2{--tw-enter-translate-y:-0.5rem}.nt-duration-100{animation-duration:.1s}.nt-duration-200{animation-duration:.2s}.nt-ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.\\[interpolate-size\\:allow-keywords\\]{interpolate-size:allow-keywords}.\\[scrollbar-gutter\\:stable\\]{scrollbar-gutter:stable}.\\[word-break\\:break-word\\]{word-break:break-word}.before\\:nt-absolute:before{content:var(--tw-content);position:absolute}.before\\:nt-inset-0:before{content:var(--tw-content);inset:0}.before\\:-nt-right-\\[calc\\(0\\+var\\(--stripes-size\\)\\)\\]:before{content:var(--tw-content);right:calc(var(--stripes-size)*-1)}@keyframes nt-stripes{0%{content:var(--tw-content);transform:translateX(0)}to{content:var(--tw-content);transform:translateX(calc(var(--stripes-size)*-1))}}.before\\:nt-animate-stripes:before{animation:nt-stripes 1s linear infinite paused;content:var(--tw-content)}.before\\:nt-rounded-lg:before{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.before\\:nt-rounded-md:before{border-radius:var(--nv-radius-md);content:var(--tw-content)}.before\\:nt-rounded-xl:before{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.before\\:nt-border:before{border-width:1px;content:var(--tw-content)}.before\\:nt-border-primary-foreground-alpha-100:before{border-color:var(--nv-color-primary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-border-secondary-foreground-alpha-100:before{border-color:var(--nv-color-secondary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-bg-dev-stripes-gradient:before{background-image:repeating-linear-gradient(135deg,oklch(from var(--nv-color-stripes) l c h/.1) 25%,oklch(from var(--nv-color-stripes) l c h/.1) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 75%);content:var(--tw-content)}.before\\:nt-bg-\\[length\\:var\\(--stripes-size\\)_var\\(--stripes-size\\)\\]:before{background-size:var(--stripes-size) var(--stripes-size);content:var(--tw-content)}.before\\:nt-content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.before\\:\\[mask-image\\:linear-gradient\\(transparent_0\\%\\2c black\\)\\]:before{content:var(--tw-content);-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.after\\:nt-absolute:after{content:var(--tw-content);position:absolute}.after\\:nt-inset-0:after{content:var(--tw-content);inset:0}.after\\:-nt-top-12:after{content:var(--tw-content);top:-3rem}.after\\:nt-bottom-0:after{bottom:0;content:var(--tw-content)}.after\\:nt-left-0:after{content:var(--tw-content);left:0}.after\\:nt-left-0\\.5:after{content:var(--tw-content);left:.125rem}.after\\:nt-top-0\\.5:after{content:var(--tw-content);top:.125rem}.after\\:nt-size-3:after{content:var(--tw-content);height:.75rem;width:.75rem}.after\\:nt-h-\\[2px\\]:after{content:var(--tw-content);height:2px}.after\\:nt-w-full:after{content:var(--tw-content);width:100%}.after\\:nt-translate-x-1\\/2:after{--tw-translate-x:50%}.after\\:nt-translate-x-1\\/2:after,.after\\:nt-translate-x-full:after{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\\:nt-translate-x-full:after{--tw-translate-x:100%}.after\\:nt-rounded-full:after{border-radius:var(--nv-radius-full);content:var(--tw-content)}.after\\:nt-rounded-lg:after{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.after\\:nt-rounded-md:after{border-radius:var(--nv-radius-md);content:var(--tw-content)}.after\\:nt-rounded-xl:after{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.after\\:nt-border-b-2:after{border-bottom-width:2px;content:var(--tw-content)}.after\\:nt-border-background:after{border-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-border-b-primary:after{border-bottom-color:var(--nv-color-primary);content:var(--tw-content)}.after\\:nt-border-b-transparent:after{border-bottom-color:#0000;content:var(--tw-content)}.after\\:nt-bg-background:after{background-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.07\\)_55\\%\\2c transparent\\)\\2c linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-stripes) l c h/.07) 55%,#0000),linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-gradient-to-b:after{background-image:linear-gradient(to bottom,var(--tw-gradient-stops));content:var(--tw-content)}.after\\:nt-from-primary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-primary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-from-secondary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-secondary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-to-transparent:after{content:var(--tw-content);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.after\\:nt-opacity-0:after{content:var(--tw-content);opacity:0}.after\\:nt-transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-transition-opacity:after{content:var(--tw-content);transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-duration-200:after{transition-duration:.2s}.after\\:nt-content-\\[\\"\\"\\]:after,.after\\:nt-content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.after\\:nt-duration-200:after{animation-duration:.2s;content:var(--tw-content)}.hover\\:nt-bg-neutral-alpha-100:hover{background-color:var(--nv-color-neutral-alpha-100)}.hover\\:nt-bg-neutral-alpha-50:hover{background-color:var(--nv-color-neutral-alpha-50)}.hover\\:nt-bg-primary-600:hover{background-color:var(--nv-color-primary-600)}.hover\\:nt-bg-primary-alpha-25:hover{background-color:var(--nv-color-primary-alpha-25)}.hover\\:nt-bg-primary-alpha-400:hover{background-color:var(--nv-color-primary-alpha-400)}.hover\\:nt-text-foreground-alpha-800:hover{color:var(--nv-color-foreground-alpha-800)}.before\\:hover\\:\\[animation-play-state\\:running\\]:hover:before{animation-play-state:running;content:var(--tw-content)}.hover\\:after\\:nt-opacity-100:hover:after{content:var(--tw-content);opacity:1}.focus\\:nt-outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-rounded-lg:focus-visible{border-radius:var(--nv-radius-lg)}.focus-visible\\:nt-rounded-md:focus-visible{border-radius:var(--nv-radius-md)}.focus-visible\\:nt-rounded-xl:focus-visible{border-radius:var(--nv-radius-xl)}.focus-visible\\:nt-bg-neutral-alpha-50:focus-visible{background-color:var(--nv-color-neutral-alpha-50)}.focus-visible\\:nt-outline-none:focus-visible{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:nt-ring-primary:focus-visible{--tw-ring-color:var(--nv-color-primary)}.focus-visible\\:nt-ring-ring:focus-visible{--tw-ring-color:var(--nv-color-ring)}.focus-visible\\:nt-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:nt-pointer-events-none:disabled{pointer-events:none}.disabled\\:nt-opacity-20:disabled{opacity:.2}.disabled\\:nt-opacity-50:disabled{opacity:.5}.nt-group:focus-within .group-focus-within\\:nt-opacity-100,.nt-group:hover .group-hover\\:nt-opacity-100{opacity:1}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true]{--tw-rotate:180deg}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true],.data-\\[open\\=true\\]\\:nt-transform[data-open=true]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-400[data-disabled=true]{color:var(--nv-color-foreground-alpha-400)}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-600[data-disabled=true]{color:var(--nv-color-foreground-alpha-600)}.data-\\[state\\=active\\]\\:nt-text-foreground[data-state=active]{color:var(--nv-color-foreground)}.data-\\[state\\=active\\]\\:after\\:nt-border-b-2[data-state=active]:after{border-bottom-width:2px;content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-border-primary[data-state=active]:after{border-color:var(--nv-color-primary);content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-opacity-100[data-state=active]:after{content:var(--tw-content);opacity:1}.\\[\\&\\:not\\(\\:first-child\\)\\]\\:nt-border-t:not(:first-child){border-top-width:1px}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-4 .nv-notificationList{padding-bottom:1rem}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-8 .nv-notificationList{padding-bottom:2rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-4 .nv-preferencesContainer{padding-bottom:1rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-8 .nv-preferencesContainer{padding-bottom:2rem}.\\[\\&_svg\\]\\:nt-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:nt-shrink-0 svg{flex-shrink:0}`;
|
|
14
|
+
// _gl34gdy6p:/Users/dimagrossman/projects/novu/packages/js/src/ui/index.directcss
|
|
15
|
+
var ui_default = `.novu{scrollbar-color:var(--nv-color-secondary-foreground-alpha-300) #0000;:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{border:0 solid #e5e7eb;box-sizing:border-box}:where(html,:host){line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;tab-size:4;-webkit-tap-highlight-color:transparent}:where(body){line-height:inherit;margin:0}:where(hr){border-top-width:1px;color:inherit;height:0}:where(abbr:where([title])){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(a){color:inherit;text-decoration:inherit}:where(b,strong){font-weight:bolder}:where(code,kbd,samp,pre){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}:where(small){font-size:80%}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:initial}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(table){border-collapse:collapse;border-color:inherit;text-indent:0}:where(button,input,optgroup,select,textarea){color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}:where(button,select){text-transform:none}:where(button,input:where([type=button]),input:where([type=reset]),input:where([type=submit])){-webkit-appearance:button;background-color:initial;background-image:none}:where(:-moz-focusring){outline:auto}:where(:-moz-ui-invalid){box-shadow:none}:where(progress){vertical-align:initial}:where(*)::-webkit-inner-spin-button,:where(*)::-webkit-outer-spin-button{height:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(*)::-webkit-search-decoration{-webkit-appearance:none}:where(*)::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre){margin:0}:where(fieldset){margin:0;padding:0}:where(legend){padding:0}:where(ol,ul,menu){list-style:none;margin:0;padding:0}:where(dialog){padding:0}:where(textarea){resize:vertical}:where(input)::placeholder,:where(textarea)::placeholder{color:#9ca3af;opacity:1}:where(button,[role=button]){cursor:pointer}:where(:disabled){cursor:default}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block;vertical-align:middle}:where(img,video){height:auto;max-width:100%}:where([hidden]){display:none}:where(*),:where(*) :after,:where(*) :before,:where(*):after,:where(*):before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:where(*) ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-scrollbar{height:.5rem;width:.5rem}::-webkit-scrollbar-thumb{background-clip:"padding-box";background-color:var(--nv-color-secondary-foreground-alpha-300);border-radius:.25rem}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background-color:initial}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}}.nt-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.\\!nt-pointer-events-auto{pointer-events:auto!important}.nt-invisible{visibility:hidden}.nt-absolute{position:absolute}.nt-relative{position:relative}.nt-inset-0{inset:0}.nt-inset-2{inset:.5rem}.nt-left-0\\.5{left:.125rem}.nt-right-0{right:0}.nt-right-3{right:.75rem}.nt-top-0{top:0}.nt-top-0\\.5{top:.125rem}.nt-top-3{top:.75rem}.nt-z-10{z-index:10}.nt-z-\\[-1\\]{z-index:-1}.nt-mx-auto{margin-left:auto;margin-right:auto}.nt--mt-\\[50px\\]{margin-top:-50px}.nt-mb-1{margin-bottom:.25rem}.nt-mb-2{margin-bottom:.5rem}.nt-mb-4{margin-bottom:1rem}.nt-mb-\\[0\\.625rem\\]{margin-bottom:.625rem}.nt-ml-1{margin-left:.25rem}.nt-ml-2{margin-left:.5rem}.nt-ml-auto{margin-left:auto}.nt-mr-2{margin-right:.5rem}.nt-mr-auto{margin-right:auto}.nt-mt-1{margin-top:.25rem}.nt-mt-auto{margin-top:auto}.nt-block{display:block}.nt-flex{display:flex}.nt-inline-flex{display:inline-flex}.nt-grid{display:grid}.nt-hidden{display:none}.nt-aspect-square{aspect-ratio:1/1}.nt-size-1\\.5{height:.375rem;width:.375rem}.nt-size-2{height:.5rem;width:.5rem}.nt-size-2\\.5{height:.625rem;width:.625rem}.nt-size-3{height:.75rem;width:.75rem}.nt-size-3\\.5{height:.875rem;width:.875rem}.nt-size-4{height:1rem;width:1rem}.nt-size-5{height:1.25rem;width:1.25rem}.nt-size-8{height:2rem;width:2rem}.nt-size-fit{height:fit-content;width:fit-content}.nt-size-full{height:100%;width:100%}.nt-h-2{height:.5rem}.nt-h-3{height:.75rem}.nt-h-4{height:1rem}.nt-h-5{height:1.25rem}.nt-h-7{height:1.75rem}.nt-h-8{height:2rem}.nt-h-9{height:2.25rem}.nt-h-\\[600px\\]{height:600px}.nt-h-fit{height:fit-content}.nt-h-full{height:100%}.nt-min-h-0{min-height:0}.nt-w-1\\/3{width:33.333333%}.nt-w-2\\/3{width:66.666667%}.nt-w-5{width:1.25rem}.nt-w-7{width:1.75rem}.nt-w-8{width:2rem}.nt-w-\\[260px\\]{width:260px}.nt-w-\\[400px\\]{width:400px}.nt-w-\\[60px\\]{width:60px}.nt-w-\\[calc\\(2ch\\+2rem\\)\\]{width:calc(2ch + 2rem)}.nt-w-fit{width:fit-content}.nt-w-full{width:100%}.nt-w-max{width:max-content}.nt-min-w-52{min-width:13rem}.nt-flex-1{flex:1 1 0%}.nt-shrink-0{flex-shrink:0}.nt-translate-x-1\\/2{--tw-translate-x:50%}.nt-transform,.nt-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.nt-cursor-default{cursor:default}.nt-cursor-not-allowed{cursor:not-allowed}.nt-cursor-pointer{cursor:pointer}.nt-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.nt-flex-row{flex-direction:row}.nt-flex-col{flex-direction:column}.nt-flex-wrap{flex-wrap:wrap}.nt-flex-nowrap{flex-wrap:nowrap}.nt-items-start{align-items:flex-start}.nt-items-center{align-items:center}.nt-justify-end{justify-content:flex-end}.nt-justify-center{justify-content:center}.nt-justify-between{justify-content:space-between}.nt-gap-0\\.5{gap:.125rem}.nt-gap-1{gap:.25rem}.nt-gap-1\\.5{gap:.375rem}.nt-gap-2{gap:.5rem}.nt-gap-3{gap:.75rem}.nt-gap-4{gap:1rem}.nt-gap-6{gap:1.5rem}.nt-gap-8{gap:2rem}.nt-self-stretch{align-self:stretch}.nt-overflow-auto{overflow:auto}.nt-overflow-hidden{overflow:hidden}.nt-overflow-y-auto{overflow-y:auto}.nt-truncate{overflow:hidden;text-overflow:ellipsis}.nt-truncate,.nt-whitespace-nowrap{white-space:nowrap}.nt-whitespace-pre-wrap{white-space:pre-wrap}.nt-rounded{border-radius:var(--nv-radius-base)}.nt-rounded-full{border-radius:var(--nv-radius-full)}.nt-rounded-lg{border-radius:var(--nv-radius-lg)}.nt-rounded-md{border-radius:var(--nv-radius-md)}.nt-rounded-sm{border-radius:var(--nv-radius-sm)}.nt-rounded-xl{border-radius:var(--nv-radius-xl)}.nt-border{border-width:1px}.nt-border-b{border-bottom-width:1px}.nt-border-t{border-top-width:1px}.nt-border-background{border-color:var(--nv-color-background)}.nt-border-border{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.nt-border-neutral-alpha-100{border-color:var(--nv-color-neutral-alpha-100)}.nt-border-neutral-alpha-200{border-color:var(--nv-color-neutral-alpha-200)}.nt-border-neutral-alpha-400{border-color:var(--nv-color-neutral-alpha-400)}.nt-border-neutral-alpha-50{border-color:var(--nv-color-neutral-alpha-50)}.nt-border-t-neutral-alpha-200{border-top-color:var(--nv-color-neutral-alpha-200)}.nt-bg-\\[oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.1\\)\\]{background-color:oklch(from var(--nv-color-stripes) l c h/.1)}.nt-bg-background{background-color:var(--nv-color-background)}.nt-bg-counter{background-color:var(--nv-color-counter)}.nt-bg-foreground{background-color:var(--nv-color-foreground)}.nt-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.nt-bg-neutral-alpha-100{background-color:var(--nv-color-neutral-alpha-100)}.nt-bg-neutral-alpha-25{background-color:var(--nv-color-neutral-alpha-25)}.nt-bg-neutral-alpha-300{background-color:var(--nv-color-neutral-alpha-300)}.nt-bg-neutral-alpha-50{background-color:var(--nv-color-neutral-alpha-50)}.nt-bg-primary{background-color:var(--nv-color-primary)}.nt-bg-primary-alpha-300{background-color:var(--nv-color-primary-alpha-300)}.nt-bg-primary-alpha-400{background-color:var(--nv-color-primary-alpha-400)}.nt-bg-secondary{background-color:var(--nv-color-secondary)}.nt-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.nt-bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.nt-bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.nt-from-foreground-alpha-50{--tw-gradient-from:var(--nv-color-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-primary-foreground-alpha-200{--tw-gradient-from:var(--nv-color-primary-foreground-alpha-200) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.nt-from-20\\%{--tw-gradient-from-position:20%}.nt-to-background{--tw-gradient-to:var(--nv-color-background) var(--tw-gradient-to-position)}.nt-to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.nt-object-cover{object-fit:cover}.nt-p-0{padding:0}.nt-p-0\\.5{padding:.125rem}.nt-p-1{padding:.25rem}.nt-p-2{padding:.5rem}.nt-p-2\\.5{padding:.625rem}.nt-p-3{padding:.75rem}.nt-p-4{padding:1rem}.nt-px-1{padding-left:.25rem;padding-right:.25rem}.nt-px-2{padding-left:.5rem;padding-right:.5rem}.nt-px-3{padding-left:.75rem;padding-right:.75rem}.nt-px-4{padding-left:1rem;padding-right:1rem}.nt-px-8{padding-left:2rem;padding-right:2rem}.nt-px-\\[6px\\]{padding-left:6px;padding-right:6px}.nt-py-1{padding-bottom:.25rem;padding-top:.25rem}.nt-py-2{padding-bottom:.5rem;padding-top:.5rem}.nt-py-3{padding-bottom:.75rem;padding-top:.75rem}.nt-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.nt-py-4{padding-bottom:1rem;padding-top:1rem}.nt-py-px{padding-bottom:1px;padding-top:1px}.nt-pb-2{padding-bottom:.5rem}.nt-pb-\\[0\\.625rem\\]{padding-bottom:.625rem}.nt-pr-0{padding-right:0}.nt-pt-2\\.5{padding-top:.625rem}.nt-text-center{text-align:center}.nt-text-start{text-align:start}.nt-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.nt-text-\\[0\\.8rem\\]{font-size:.8rem}.nt-text-\\[12px\\]{font-size:12px}.nt-text-base{font-size:var(--nv-font-size-base);line-height:var(--nv-line-height-base)}.nt-text-sm{font-size:var(--nv-font-size-sm);line-height:var(--nv-line-height-sm)}.nt-text-xl{font-size:var(--nv-font-size-xl);line-height:var(--nv-line-height-xl)}.nt-text-xs{font-size:var(--nv-font-size-xs);line-height:var(--nv-line-height-xs)}.nt-font-medium{font-weight:500}.nt-font-normal{font-weight:400}.nt-font-semibold{font-weight:600}.nt-leading-none{line-height:1}.nt-text-\\[\\#000000\\]{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.nt-text-background{color:var(--nv-color-background)}.nt-text-counter-foreground{color:var(--nv-color-counter-foreground)}.nt-text-foreground{color:var(--nv-color-foreground)}.nt-text-foreground-alpha-300{color:var(--nv-color-foreground-alpha-300)}.nt-text-foreground-alpha-400{color:var(--nv-color-foreground-alpha-400)}.nt-text-foreground-alpha-600{color:var(--nv-color-foreground-alpha-600)}.nt-text-foreground-alpha-700{color:var(--nv-color-foreground-alpha-700)}.nt-text-primary-foreground{color:var(--nv-color-primary-foreground)}.nt-text-secondary-foreground{color:var(--nv-color-secondary-foreground)}.nt-text-stripes{color:var(--nv-color-stripes)}.nt-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.nt-underline{text-decoration-line:underline}.nt-opacity-0{opacity:0}.nt-opacity-20{opacity:.2}.nt-opacity-50{opacity:.5}.nt-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-primary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-primary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0_0_0_0\\.5px_var\\(--nv-color-secondary-600\\)\\]{--tw-shadow:0 0 0 0.5px var(--nv-color-secondary-600);--tw-shadow-colored:0 0 0 0.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\]{--tw-shadow:0px 1px 2px 0px #0a0d1408;--tw-shadow-colored:0px 1px 2px 0px var(--tw-shadow-color)}.nt-shadow-\\[0px_1px_2px_0px_rgba\\(10\\,13\\,20\\,0\\.03\\)\\],.nt-shadow-dropdown{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-dropdown{--tw-shadow:0px 12px 16px -4px oklch(from var(--nv-color-shadow) l c h/0.08),0px 4px 6px -2px oklch(from var(--nv-color-shadow) l c h/0.03);--tw-shadow-colored:0px 12px 16px -4px var(--tw-shadow-color),0px 4px 6px -2px var(--tw-shadow-color)}.nt-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.nt-shadow-lg,.nt-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.nt-shadow-popover{--tw-shadow:0px 8px 26px 0px oklch(from var(--nv-color-shadow) l c h/0.08),0px 2px 6px 0px oklch(from var(--nv-color-shadow) l c h/0.12);--tw-shadow-colored:0px 8px 26px 0px var(--tw-shadow-color),0px 2px 6px 0px var(--tw-shadow-color)}.nt-shadow-popover,.nt-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.nt-shadow-tooltip{--tw-shadow:0 5px 20px 0 oklch(from var(--nv-color-shadow) l c h/0.08);--tw-shadow-colored:0 5px 20px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nt-outline-none{outline:2px solid #0000;outline-offset:2px}.nt-backdrop-blur-lg{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.nt-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nt-duration-100{transition-duration:.1s}.nt-duration-200{transition-duration:.2s}.nt-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.nt-animate-in{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.nt-fade-in{--tw-enter-opacity:0}.nt-slide-in-from-top-2{--tw-enter-translate-y:-0.5rem}.nt-duration-100{animation-duration:.1s}.nt-duration-200{animation-duration:.2s}.nt-ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.\\[interpolate-size\\:allow-keywords\\]{interpolate-size:allow-keywords}.\\[scrollbar-gutter\\:stable\\]{scrollbar-gutter:stable}.\\[word-break\\:break-word\\]{word-break:break-word}.before\\:nt-absolute:before{content:var(--tw-content);position:absolute}.before\\:nt-inset-0:before{content:var(--tw-content);inset:0}.before\\:-nt-right-\\[calc\\(0\\+var\\(--stripes-size\\)\\)\\]:before{content:var(--tw-content);right:calc(var(--stripes-size)*-1)}@keyframes nt-stripes{0%{content:var(--tw-content);transform:translateX(0)}to{content:var(--tw-content);transform:translateX(calc(var(--stripes-size)*-1))}}.before\\:nt-animate-stripes:before{animation:nt-stripes 1s linear infinite paused;content:var(--tw-content)}.before\\:nt-rounded-lg:before{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.before\\:nt-rounded-md:before{border-radius:var(--nv-radius-md);content:var(--tw-content)}.before\\:nt-rounded-xl:before{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.before\\:nt-border:before{border-width:1px;content:var(--tw-content)}.before\\:nt-border-primary-foreground-alpha-100:before{border-color:var(--nv-color-primary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-border-secondary-foreground-alpha-100:before{border-color:var(--nv-color-secondary-foreground-alpha-100);content:var(--tw-content)}.before\\:nt-bg-dev-stripes-gradient:before{background-image:repeating-linear-gradient(135deg,oklch(from var(--nv-color-stripes) l c h/.1) 25%,oklch(from var(--nv-color-stripes) l c h/.1) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 50%,oklch(from var(--nv-color-stripes) l c h/.2) 75%);content:var(--tw-content)}.before\\:nt-bg-\\[length\\:var\\(--stripes-size\\)_var\\(--stripes-size\\)\\]:before{background-size:var(--stripes-size) var(--stripes-size);content:var(--tw-content)}.before\\:nt-content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.before\\:\\[mask-image\\:linear-gradient\\(transparent_0\\%\\2c black\\)\\]:before{content:var(--tw-content);-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.after\\:nt-absolute:after{content:var(--tw-content);position:absolute}.after\\:nt-inset-0:after{content:var(--tw-content);inset:0}.after\\:-nt-top-12:after{content:var(--tw-content);top:-3rem}.after\\:nt-bottom-0:after{bottom:0;content:var(--tw-content)}.after\\:nt-left-0:after{content:var(--tw-content);left:0}.after\\:nt-left-0\\.5:after{content:var(--tw-content);left:.125rem}.after\\:nt-top-0\\.5:after{content:var(--tw-content);top:.125rem}.after\\:nt-size-3:after{content:var(--tw-content);height:.75rem;width:.75rem}.after\\:nt-h-\\[2px\\]:after{content:var(--tw-content);height:2px}.after\\:nt-w-full:after{content:var(--tw-content);width:100%}.after\\:nt-translate-x-1\\/2:after{--tw-translate-x:50%}.after\\:nt-translate-x-1\\/2:after,.after\\:nt-translate-x-full:after{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\\:nt-translate-x-full:after{--tw-translate-x:100%}.after\\:nt-rounded-full:after{border-radius:var(--nv-radius-full);content:var(--tw-content)}.after\\:nt-rounded-lg:after{border-radius:var(--nv-radius-lg);content:var(--tw-content)}.after\\:nt-rounded-md:after{border-radius:var(--nv-radius-md);content:var(--tw-content)}.after\\:nt-rounded-xl:after{border-radius:var(--nv-radius-xl);content:var(--tw-content)}.after\\:nt-border-b-2:after{border-bottom-width:2px;content:var(--tw-content)}.after\\:nt-border-background:after{border-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-border-b-primary:after{border-bottom-color:var(--nv-color-primary);content:var(--tw-content)}.after\\:nt-border-b-transparent:after{border-bottom-color:#0000;content:var(--tw-content)}.after\\:nt-bg-background:after{background-color:var(--nv-color-background);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-\\[linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-stripes\\)_l_c_h_\\/_0\\.07\\)_55\\%\\2c transparent\\)\\2c linear-gradient\\(180deg\\2c transparent\\2c oklch\\(from_var\\(--nv-color-background\\)_l_c_h_\\/_0\\.9\\)_55\\%\\2c transparent\\)\\]:after{background-image:linear-gradient(180deg,#0000,oklch(from var(--nv-color-stripes) l c h/.07) 55%,#0000),linear-gradient(180deg,#0000,oklch(from var(--nv-color-background) l c h/.9) 55%,#0000);content:var(--tw-content)}.after\\:nt-bg-gradient-to-b:after{background-image:linear-gradient(to bottom,var(--tw-gradient-stops));content:var(--tw-content)}.after\\:nt-from-primary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-primary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-from-secondary-foreground-alpha-50:after{content:var(--tw-content);--tw-gradient-from:var(--nv-color-secondary-foreground-alpha-50) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.after\\:nt-to-transparent:after{content:var(--tw-content);--tw-gradient-to:#0000 var(--tw-gradient-to-position)}.after\\:nt-opacity-0:after{content:var(--tw-content);opacity:0}.after\\:nt-transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-transition-opacity:after{content:var(--tw-content);transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:nt-duration-200:after{transition-duration:.2s}.after\\:nt-content-\\[\\"\\"\\]:after,.after\\:nt-content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.after\\:nt-duration-200:after{animation-duration:.2s;content:var(--tw-content)}.hover\\:nt-bg-neutral-alpha-100:hover{background-color:var(--nv-color-neutral-alpha-100)}.hover\\:nt-bg-neutral-alpha-50:hover{background-color:var(--nv-color-neutral-alpha-50)}.hover\\:nt-bg-primary-600:hover{background-color:var(--nv-color-primary-600)}.hover\\:nt-bg-primary-alpha-25:hover{background-color:var(--nv-color-primary-alpha-25)}.hover\\:nt-bg-primary-alpha-400:hover{background-color:var(--nv-color-primary-alpha-400)}.hover\\:nt-text-foreground-alpha-800:hover{color:var(--nv-color-foreground-alpha-800)}.before\\:hover\\:\\[animation-play-state\\:running\\]:hover:before{animation-play-state:running;content:var(--tw-content)}.hover\\:after\\:nt-opacity-100:hover:after{content:var(--tw-content);opacity:1}.focus\\:nt-outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-rounded-lg:focus-visible{border-radius:var(--nv-radius-lg)}.focus-visible\\:nt-rounded-md:focus-visible{border-radius:var(--nv-radius-md)}.focus-visible\\:nt-rounded-xl:focus-visible{border-radius:var(--nv-radius-xl)}.focus-visible\\:nt-bg-neutral-alpha-50:focus-visible{background-color:var(--nv-color-neutral-alpha-50)}.focus-visible\\:nt-outline-none:focus-visible{outline:2px solid #0000;outline-offset:2px}.focus-visible\\:nt-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:nt-ring-primary:focus-visible{--tw-ring-color:var(--nv-color-primary)}.focus-visible\\:nt-ring-ring:focus-visible{--tw-ring-color:var(--nv-color-ring)}.focus-visible\\:nt-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:nt-pointer-events-none:disabled{pointer-events:none}.disabled\\:nt-opacity-20:disabled{opacity:.2}.disabled\\:nt-opacity-50:disabled{opacity:.5}.nt-group:focus-within .group-focus-within\\:nt-opacity-100,.nt-group:hover .group-hover\\:nt-opacity-100{opacity:1}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true]{--tw-rotate:180deg}.data-\\[open\\=true\\]\\:nt-rotate-180[data-open=true],.data-\\[open\\=true\\]\\:nt-transform[data-open=true]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-400[data-disabled=true]{color:var(--nv-color-foreground-alpha-400)}.data-\\[disabled\\=true\\]\\:nt-text-foreground-alpha-600[data-disabled=true]{color:var(--nv-color-foreground-alpha-600)}.data-\\[state\\=active\\]\\:nt-text-foreground[data-state=active]{color:var(--nv-color-foreground)}.data-\\[state\\=active\\]\\:after\\:nt-border-b-2[data-state=active]:after{border-bottom-width:2px;content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-border-primary[data-state=active]:after{border-color:var(--nv-color-primary);content:var(--tw-content)}.data-\\[state\\=active\\]\\:after\\:nt-opacity-100[data-state=active]:after{content:var(--tw-content);opacity:1}.\\[\\&\\:not\\(\\:first-child\\)\\]\\:nt-border-t:not(:first-child){border-top-width:1px}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-4 .nv-notificationList{padding-bottom:1rem}.\\[\\&_\\.nv-notificationList\\]\\:nt-pb-8 .nv-notificationList{padding-bottom:2rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-4 .nv-preferencesContainer{padding-bottom:1rem}.\\[\\&_\\.nv-preferencesContainer\\]\\:nt-pb-8 .nv-preferencesContainer{padding-bottom:2rem}.\\[\\&_svg\\]\\:nt-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:nt-shrink-0 svg{flex-shrink:0}`;
|
|
16
16
|
|
|
17
17
|
// src/ui/config/appearanceKeys.ts
|
|
18
18
|
var appearanceKeys = [
|
|
@@ -76,6 +76,7 @@ var appearanceKeys = [
|
|
|
76
76
|
// General
|
|
77
77
|
"root",
|
|
78
78
|
"bellIcon",
|
|
79
|
+
"lockIcon",
|
|
79
80
|
"bellContainer",
|
|
80
81
|
"bellDot",
|
|
81
82
|
"preferences__button",
|
|
@@ -693,14 +694,6 @@ var useStyle = () => {
|
|
|
693
694
|
);
|
|
694
695
|
return styleFuncMemo();
|
|
695
696
|
};
|
|
696
|
-
function useUncontrolledState(props) {
|
|
697
|
-
const [uncontrolledValue, setUncontrolledValue] = createSignal(!!props.fallbackValue);
|
|
698
|
-
if (props.value !== void 0) {
|
|
699
|
-
const accessor = () => !!props.value;
|
|
700
|
-
return [accessor, setUncontrolledValue];
|
|
701
|
-
}
|
|
702
|
-
return [uncontrolledValue, setUncontrolledValue];
|
|
703
|
-
}
|
|
704
697
|
|
|
705
698
|
// src/ui/context/AppearanceContext.tsx
|
|
706
699
|
var AppearanceContext = createContext(void 0);
|
|
@@ -967,6 +960,8 @@ var InboxProvider = (props) => {
|
|
|
967
960
|
const [maxSnoozeDurationHours, setMaxSnoozeDurationHours] = createSignal(0);
|
|
968
961
|
const isSnoozeEnabled = createMemo(() => maxSnoozeDurationHours() > 0);
|
|
969
962
|
const [preferencesFilter, setPreferencesFilter] = createSignal(props.preferencesFilter);
|
|
963
|
+
const [isKeyless, setIsKeyless] = createSignal(false);
|
|
964
|
+
const [applicationIdentifier, setApplicationIdentifier] = createSignal(null);
|
|
970
965
|
const [preferenceGroups, setPreferenceGroups] = createSignal(props.preferenceGroups);
|
|
971
966
|
const setNewStatus = (newStatus) => {
|
|
972
967
|
setStatus(newStatus);
|
|
@@ -1028,12 +1023,16 @@ var InboxProvider = (props) => {
|
|
|
1028
1023
|
eventHandler: ({
|
|
1029
1024
|
data
|
|
1030
1025
|
}) => {
|
|
1026
|
+
var _a2;
|
|
1031
1027
|
if (!data) {
|
|
1032
1028
|
return;
|
|
1033
1029
|
}
|
|
1030
|
+
const identifier = window.localStorage.getItem("novu_keyless_application_identifier");
|
|
1034
1031
|
setHideBranding(data.removeNovuBranding);
|
|
1035
1032
|
setIsDevelopmentMode(data.isDevelopmentMode);
|
|
1036
1033
|
setMaxSnoozeDurationHours(data.maxSnoozeDurationHours);
|
|
1034
|
+
setIsKeyless(!data.applicationIdentifier || !!(identifier == null ? void 0 : identifier.startsWith("pk_keyless_")));
|
|
1035
|
+
setApplicationIdentifier((_a2 = data.applicationIdentifier) != null ? _a2 : null);
|
|
1037
1036
|
}
|
|
1038
1037
|
});
|
|
1039
1038
|
return createComponent(InboxContext.Provider, {
|
|
@@ -1054,7 +1053,9 @@ var InboxProvider = (props) => {
|
|
|
1054
1053
|
preferenceGroups,
|
|
1055
1054
|
isDevelopmentMode,
|
|
1056
1055
|
maxSnoozeDurationHours,
|
|
1057
|
-
isSnoozeEnabled
|
|
1056
|
+
isSnoozeEnabled,
|
|
1057
|
+
isKeyless,
|
|
1058
|
+
applicationIdentifier
|
|
1058
1059
|
},
|
|
1059
1060
|
get children() {
|
|
1060
1061
|
return props.children;
|
|
@@ -1155,32 +1156,33 @@ var CountProvider = (props) => {
|
|
|
1155
1156
|
setTotalUnreadCount(data.totalUnreadCount);
|
|
1156
1157
|
}
|
|
1157
1158
|
});
|
|
1158
|
-
const updateNewNotificationCountsOrCache = (notification, tags) => {
|
|
1159
|
+
const updateNewNotificationCountsOrCache = (notification, tags, data) => {
|
|
1159
1160
|
const notificationsCache = novu.notifications.cache;
|
|
1160
1161
|
const limitValue = limit();
|
|
1161
|
-
const
|
|
1162
|
+
const tabSpecificFilterForCache = __spreadProps(__spreadValues({}, filter()), {
|
|
1162
1163
|
tags,
|
|
1164
|
+
data,
|
|
1163
1165
|
after: void 0,
|
|
1164
1166
|
limit: limitValue
|
|
1165
1167
|
});
|
|
1166
|
-
const hasEmptyCache = !notificationsCache.has(
|
|
1168
|
+
const hasEmptyCache = !notificationsCache.has(tabSpecificFilterForCache);
|
|
1167
1169
|
if (!isOpened() && hasEmptyCache) {
|
|
1168
1170
|
return;
|
|
1169
1171
|
}
|
|
1170
|
-
const cachedData = notificationsCache.getAll(
|
|
1172
|
+
const cachedData = notificationsCache.getAll(tabSpecificFilterForCache) || {
|
|
1171
1173
|
hasMore: false,
|
|
1172
|
-
filter:
|
|
1174
|
+
filter: tabSpecificFilterForCache,
|
|
1173
1175
|
notifications: []
|
|
1174
1176
|
};
|
|
1175
1177
|
const hasLessThenMinAmount = ((cachedData == null ? void 0 : cachedData.notifications.length) || 0) < MIN_AMOUNT_OF_NOTIFICATIONS;
|
|
1176
1178
|
if (hasLessThenMinAmount) {
|
|
1177
|
-
notificationsCache.update(
|
|
1179
|
+
notificationsCache.update(tabSpecificFilterForCache, __spreadProps(__spreadValues({}, cachedData), {
|
|
1178
1180
|
notifications: [notification, ...cachedData.notifications]
|
|
1179
1181
|
}));
|
|
1180
1182
|
return;
|
|
1181
1183
|
}
|
|
1182
1184
|
setNewNotificationCounts((oldMap) => {
|
|
1183
|
-
const key = createKey(tags,
|
|
1185
|
+
const key = createKey(tags, data);
|
|
1184
1186
|
const newMap = new Map(oldMap);
|
|
1185
1187
|
newMap.set(key, (oldMap.get(key) || 0) + 1);
|
|
1186
1188
|
return newMap;
|
|
@@ -1191,32 +1193,49 @@ var CountProvider = (props) => {
|
|
|
1191
1193
|
eventHandler: (_0) => __async(void 0, [_0], function* ({
|
|
1192
1194
|
result: notification
|
|
1193
1195
|
}) {
|
|
1196
|
+
var _a;
|
|
1194
1197
|
if (filter().archived || filter().snoozed) {
|
|
1195
1198
|
return;
|
|
1196
1199
|
}
|
|
1197
|
-
const
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1200
|
+
const currentTabs = tabs();
|
|
1201
|
+
function checkNotificationDataAgainstTabData(notificationData, tabFilterData) {
|
|
1202
|
+
if (!tabFilterData || Object.keys(tabFilterData).length === 0) {
|
|
1203
|
+
return true;
|
|
1204
|
+
}
|
|
1205
|
+
if (!notificationData) {
|
|
1206
|
+
return false;
|
|
1207
|
+
}
|
|
1208
|
+
return Object.entries(tabFilterData).every(([key, filterValue]) => {
|
|
1209
|
+
const notifValue = notificationData[key];
|
|
1210
|
+
if (notifValue === void 0 && filterValue !== void 0) {
|
|
1211
|
+
return false;
|
|
1212
|
+
}
|
|
1213
|
+
if (Array.isArray(filterValue)) {
|
|
1214
|
+
if (Array.isArray(notifValue)) {
|
|
1215
|
+
if (filterValue.length !== notifValue.length) return false;
|
|
1216
|
+
const sortedFilterValue = [...filterValue].sort();
|
|
1217
|
+
const sortedNotifValue = [...notifValue].sort();
|
|
1218
|
+
return sortedFilterValue.every((val, index) => val === sortedNotifValue[index]);
|
|
1219
|
+
} else {
|
|
1220
|
+
return filterValue.includes(notifValue);
|
|
1221
|
+
}
|
|
1222
|
+
} else {
|
|
1223
|
+
return notifValue === filterValue;
|
|
1224
|
+
}
|
|
1225
|
+
});
|
|
1226
|
+
}
|
|
1227
|
+
if (currentTabs.length > 0) {
|
|
1228
|
+
for (const tab of currentTabs) {
|
|
1229
|
+
const tabTags = getTagsFromTab(tab);
|
|
1230
|
+
const tabDataFilterCriteria = (_a = tab.filter) == null ? void 0 : _a.data;
|
|
1231
|
+
const matchesTagFilter = tabTags.length === 0 || notification.tags && tabTags.some((tag) => notification.tags.includes(tag));
|
|
1232
|
+
const matchesDataFilterCriteria = checkNotificationDataAgainstTabData(notification.data, tabDataFilterCriteria);
|
|
1233
|
+
if (matchesTagFilter && matchesDataFilterCriteria) {
|
|
1234
|
+
updateNewNotificationCountsOrCache(notification, tabTags, tabDataFilterCriteria);
|
|
1215
1235
|
}
|
|
1216
|
-
updateNewNotificationCountsOrCache(notification, tags);
|
|
1217
1236
|
}
|
|
1218
1237
|
} else {
|
|
1219
|
-
updateNewNotificationCountsOrCache(notification, []);
|
|
1238
|
+
updateNewNotificationCountsOrCache(notification, [], void 0);
|
|
1220
1239
|
}
|
|
1221
1240
|
})
|
|
1222
1241
|
});
|
|
@@ -1642,248 +1661,125 @@ var Bell2 = (props) => {
|
|
|
1642
1661
|
function isBrowser() {
|
|
1643
1662
|
return typeof window !== "undefined";
|
|
1644
1663
|
}
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
var _tmpl$25 = /* @__PURE__ */ template(`<span class="nt-z-10 nt-text-xs nt-text-stripes">Development mode`);
|
|
1648
|
-
var _tmpl$26 = /* @__PURE__ */ template(`<span class="nt-z-10 nt-text-xs">\u2022`);
|
|
1649
|
-
var _tmpl$32 = /* @__PURE__ */ template(`<a target=_blank class="nt-z-10 nt-flex nt-items-center nt-gap-1 nt-justify-center"><span class=nt-text-xs>Inbox by</span><span class=nt-text-xs>Novu`);
|
|
1650
|
-
var _tmpl$42 = /* @__PURE__ */ template(`<div>`);
|
|
1651
|
-
var stripes = `before:nt-content-[""] before:nt-absolute before:nt-inset-0 before:-nt-right-[calc(0+var(--stripes-size))] before:[mask-image:linear-gradient(transparent_0%,black)] before:nt-bg-dev-stripes-gradient before:nt-bg-[length:var(--stripes-size)_var(--stripes-size)] before:nt-animate-stripes before:hover:[animation-play-state:running]`;
|
|
1652
|
-
var commonAfter = 'after:nt-content-[""] after:nt-absolute after:nt-inset-0 after:-nt-top-12';
|
|
1653
|
-
var devModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-stripes)_l_c_h_/_0.07)_55%,transparent),linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
|
|
1654
|
-
var prodModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
|
|
1655
|
-
var Footer = () => {
|
|
1656
|
-
const {
|
|
1657
|
-
hideBranding,
|
|
1658
|
-
isDevelopmentMode
|
|
1659
|
-
} = useInboxContext();
|
|
1660
|
-
return createComponent(Show, {
|
|
1661
|
-
get when() {
|
|
1662
|
-
return !hideBranding() || isDevelopmentMode();
|
|
1663
|
-
},
|
|
1664
|
-
get children() {
|
|
1665
|
-
var _el$ = _tmpl$42();
|
|
1666
|
-
_el$.style.setProperty("--stripes-size", "15px");
|
|
1667
|
-
insert(_el$, createComponent(Show, {
|
|
1668
|
-
get when() {
|
|
1669
|
-
return isDevelopmentMode();
|
|
1670
|
-
},
|
|
1671
|
-
get children() {
|
|
1672
|
-
return _tmpl$25();
|
|
1673
|
-
}
|
|
1674
|
-
}), null);
|
|
1675
|
-
insert(_el$, createComponent(Show, {
|
|
1676
|
-
get when() {
|
|
1677
|
-
return memo(() => !!isDevelopmentMode())() && !hideBranding();
|
|
1678
|
-
},
|
|
1679
|
-
get children() {
|
|
1680
|
-
return _tmpl$26();
|
|
1681
|
-
}
|
|
1682
|
-
}), null);
|
|
1683
|
-
insert(_el$, createComponent(Show, {
|
|
1684
|
-
get when() {
|
|
1685
|
-
return !hideBranding();
|
|
1686
|
-
},
|
|
1687
|
-
get children() {
|
|
1688
|
-
var _el$4 = _tmpl$32(), _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling;
|
|
1689
|
-
insert(_el$4, createComponent(Novu2, {
|
|
1690
|
-
"class": "nt-size-2.5"
|
|
1691
|
-
}), _el$6);
|
|
1692
|
-
effect(() => setAttribute(_el$4, "href", `https://go.novu.co/powered?ref=${getCurrentDomain()}`));
|
|
1693
|
-
return _el$4;
|
|
1694
|
-
}
|
|
1695
|
-
}), null);
|
|
1696
|
-
effect(() => className(_el$, cn(`nt-relative nt-flex nt-shrink-0 nt-justify-center nt-items-center nt-gap-1 nt-mt-auto nt-py-3 nt-text-foreground-alpha-400`, {
|
|
1697
|
-
[stripes]: isDevelopmentMode(),
|
|
1698
|
-
[devModeGradient]: isDevelopmentMode(),
|
|
1699
|
-
"nt-bg-[oklch(from_var(--nv-color-stripes)_l_c_h_/_0.1)]": isDevelopmentMode(),
|
|
1700
|
-
[prodModeGradient]: !isDevelopmentMode()
|
|
1701
|
-
})));
|
|
1702
|
-
return _el$;
|
|
1703
|
-
}
|
|
1704
|
-
});
|
|
1705
|
-
};
|
|
1706
|
-
function getCurrentDomain() {
|
|
1707
|
-
if (isBrowser()) {
|
|
1708
|
-
return window.location.hostname;
|
|
1709
|
-
}
|
|
1710
|
-
return "";
|
|
1711
|
-
}
|
|
1712
|
-
var _tmpl$27 = /* @__PURE__ */ template(`<button>`);
|
|
1713
|
-
var buttonVariants = cva(cn('nt-inline-flex nt-gap-4 nt-items-center nt-justify-center nt-whitespace-nowrap nt-text-sm nt-font-medium nt-transition-colors disabled:nt-pointer-events-none disabled:nt-opacity-50 after:nt-absolute after:nt-content-[""] before:nt-content-[""] before:nt-absolute [&_svg]:nt-pointer-events-none [&_svg]:nt-shrink-0', `focus-visible:nt-outline-none focus-visible:nt-ring-2 focus-visible:nt-rounded-md focus-visible:nt-ring-ring focus-visible:nt-ring-offset-2`), {
|
|
1714
|
-
variants: {
|
|
1715
|
-
variant: {
|
|
1716
|
-
default: "nt-bg-gradient-to-b nt-from-20% nt-from-primary-foreground-alpha-200 nt-to-transparent nt-bg-primary nt-text-primary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-primary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-primary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-primary-foreground-alpha-50 after:nt-to-transparent",
|
|
1717
|
-
secondary: "nt-bg-secondary nt-text-secondary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-secondary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-secondary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-secondary-foreground-alpha-50 after:nt-to-transparent",
|
|
1718
|
-
ghost: "hover:nt-bg-neutral-alpha-100 nt-text-foreground-alpha-600 hover:nt-text-foreground-alpha-800",
|
|
1719
|
-
unstyled: ""
|
|
1720
|
-
},
|
|
1721
|
-
size: {
|
|
1722
|
-
none: "",
|
|
1723
|
-
iconSm: "nt-p-1 nt-rounded-md after:nt-rounded-md before:nt-rounded-md focus-visible:nt-rounded-md",
|
|
1724
|
-
icon: "nt-p-2.5 nt-rounded-xl before:nt-rounded-xl after:nt-rounded-xl focus-visible:nt-rounded-xl",
|
|
1725
|
-
default: "nt-px-2 nt-py-1 nt-rounded-lg focus-visible:nt-rounded-lg before:nt-rounded-lg after:nt-rounded-lg",
|
|
1726
|
-
sm: "nt-px-1 nt-py-px nt-rounded-md nt-text-xs nt-px-1 before:nt-rounded-md focus-visible:nt-rounded-md after:nt-rounded-md",
|
|
1727
|
-
lg: "nt-px-8 nt-py-2 nt-text-base before:nt-rounded-lg after:nt-rounded-lg focus-visible:nt-rounded-lg"
|
|
1728
|
-
}
|
|
1729
|
-
},
|
|
1730
|
-
defaultVariants: {
|
|
1731
|
-
variant: "default",
|
|
1732
|
-
size: "default"
|
|
1733
|
-
}
|
|
1734
|
-
});
|
|
1735
|
-
var Button = (props) => {
|
|
1736
|
-
const [local, rest] = splitProps(props, ["class", "appearanceKey"]);
|
|
1737
|
-
const style = useStyle();
|
|
1738
|
-
return (() => {
|
|
1739
|
-
var _el$ = _tmpl$27();
|
|
1740
|
-
spread(_el$, mergeProps({
|
|
1741
|
-
get ["data-variant"]() {
|
|
1742
|
-
return props.variant;
|
|
1743
|
-
},
|
|
1744
|
-
get ["data-size"]() {
|
|
1745
|
-
return props.size;
|
|
1746
|
-
},
|
|
1747
|
-
get ["class"]() {
|
|
1748
|
-
return style(local.appearanceKey || "button", cn(buttonVariants({
|
|
1749
|
-
variant: props.variant,
|
|
1750
|
-
size: props.size
|
|
1751
|
-
}), local.class));
|
|
1752
|
-
}
|
|
1753
|
-
}, rest), false, false);
|
|
1754
|
-
return _el$;
|
|
1755
|
-
})();
|
|
1756
|
-
};
|
|
1757
|
-
var _tmpl$28 = /* @__PURE__ */ template(`<button>`);
|
|
1758
|
-
var PopoverClose = (props) => {
|
|
1759
|
-
const {
|
|
1760
|
-
onClose
|
|
1761
|
-
} = usePopover();
|
|
1762
|
-
const style = useStyle();
|
|
1763
|
-
const [local, rest] = splitProps(props, ["onClick", "asChild", "appearanceKey", "class"]);
|
|
1764
|
-
const handleClick = (e) => {
|
|
1765
|
-
if (typeof local.onClick === "function") {
|
|
1766
|
-
local.onClick(e);
|
|
1767
|
-
}
|
|
1768
|
-
onClose();
|
|
1769
|
-
};
|
|
1770
|
-
if (local.asChild) {
|
|
1771
|
-
return createComponent(Dynamic, mergeProps({
|
|
1772
|
-
get component() {
|
|
1773
|
-
return local.asChild;
|
|
1774
|
-
},
|
|
1775
|
-
onClick: handleClick
|
|
1776
|
-
}, rest));
|
|
1777
|
-
}
|
|
1664
|
+
var _tmpl$25 = /* @__PURE__ */ template(`<svg width=6 height=6 viewBox="0 0 6 6"fill=none xmlns=http://www.w3.org/2000/svg><path d="M5.00175 1.70402L0.705765 6L0 5.29424L4.29548 0.998253H0.509608V0H6V5.49039H5.00175V1.70402Z"fill=currentColor>`);
|
|
1665
|
+
var ArrowUpRight = (props) => {
|
|
1778
1666
|
return (() => {
|
|
1779
|
-
var _el$ = _tmpl$
|
|
1780
|
-
_el
|
|
1781
|
-
spread(_el$, mergeProps({
|
|
1782
|
-
get ["class"]() {
|
|
1783
|
-
return style(local.appearanceKey || "popoverClose", local.class);
|
|
1784
|
-
}
|
|
1785
|
-
}, rest), false, false);
|
|
1667
|
+
var _el$ = _tmpl$25();
|
|
1668
|
+
spread(_el$, props, true, true);
|
|
1786
1669
|
return _el$;
|
|
1787
1670
|
})();
|
|
1788
1671
|
};
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
var Portal = (props) => {
|
|
1792
|
-
const appearance = useAppearance();
|
|
1793
|
-
let currentElement;
|
|
1794
|
-
return [(() => {
|
|
1795
|
-
var _el$ = _tmpl$29();
|
|
1796
|
-
use((el) => {
|
|
1797
|
-
currentElement = el;
|
|
1798
|
-
}, _el$);
|
|
1799
|
-
_el$.style.setProperty("display", "none");
|
|
1800
|
-
return _el$;
|
|
1801
|
-
})(), createComponent(Portal$1, mergeProps({
|
|
1802
|
-
get mount() {
|
|
1803
|
-
return closestNovuRootParent(currentElement, appearance.id());
|
|
1804
|
-
}
|
|
1805
|
-
}, props))];
|
|
1806
|
-
};
|
|
1807
|
-
var closestNovuRootParent = (el, id) => {
|
|
1808
|
-
let element = el;
|
|
1809
|
-
while (element && element.id !== `novu-root-${id}`) {
|
|
1810
|
-
element = element.parentElement;
|
|
1811
|
-
}
|
|
1812
|
-
if (element && element.id === `novu-root-${id}`) {
|
|
1813
|
-
return element;
|
|
1814
|
-
}
|
|
1815
|
-
return void 0;
|
|
1816
|
-
};
|
|
1817
|
-
var PopoverContext = createContext(void 0);
|
|
1818
|
-
function PopoverRoot(props) {
|
|
1672
|
+
var TooltipContext = createContext(void 0);
|
|
1673
|
+
function TooltipRoot(props) {
|
|
1819
1674
|
var _a;
|
|
1820
|
-
const [uncontrolledIsOpen, setUncontrolledIsOpen] = createSignal((_a = props.open) != null ? _a : false);
|
|
1821
|
-
const onOpenChange = () => {
|
|
1822
|
-
var _a2;
|
|
1823
|
-
return (_a2 = props.onOpenChange) != null ? _a2 : setUncontrolledIsOpen;
|
|
1824
|
-
};
|
|
1825
|
-
const open = () => {
|
|
1826
|
-
var _a2;
|
|
1827
|
-
return (_a2 = props.open) != null ? _a2 : uncontrolledIsOpen();
|
|
1828
|
-
};
|
|
1829
1675
|
const [reference, setReference] = createSignal(null);
|
|
1830
1676
|
const [floating, setFloating] = createSignal(null);
|
|
1677
|
+
const {
|
|
1678
|
+
animations
|
|
1679
|
+
} = useAppearance();
|
|
1680
|
+
const defaultAnimationDuration = 0.2;
|
|
1681
|
+
const actualAnimationDuration = () => {
|
|
1682
|
+
var _a2;
|
|
1683
|
+
return (_a2 = props.animationDuration) != null ? _a2 : defaultAnimationDuration;
|
|
1684
|
+
};
|
|
1685
|
+
const effectiveAnimationDuration = createMemo(() => animations() ? actualAnimationDuration() : 0);
|
|
1831
1686
|
const position = useFloating(reference, floating, {
|
|
1832
|
-
|
|
1833
|
-
|
|
1687
|
+
placement: props.placement || "top",
|
|
1688
|
+
strategy: "fixed",
|
|
1834
1689
|
whileElementsMounted: autoUpdate,
|
|
1835
1690
|
middleware: [offset(10), flip({
|
|
1836
|
-
fallbackPlacements: props.fallbackPlacements
|
|
1691
|
+
fallbackPlacements: props.fallbackPlacements || ["bottom"]
|
|
1837
1692
|
}), shift()]
|
|
1838
1693
|
});
|
|
1839
|
-
const
|
|
1840
|
-
|
|
1841
|
-
return
|
|
1842
|
-
position: position.strategy,
|
|
1843
|
-
top: `${(_a2 = position.y) != null ? _a2 : 0}px`,
|
|
1844
|
-
left: `${(_b = position.x) != null ? _b : 0}px`
|
|
1845
|
-
};
|
|
1694
|
+
const [uncontrolledOpen, setUncontrolledOpen] = createSignal((_a = props.open) != null ? _a : false);
|
|
1695
|
+
const openAccessor = createMemo(() => {
|
|
1696
|
+
return props.open !== void 0 ? !!props.open : uncontrolledOpen();
|
|
1846
1697
|
});
|
|
1847
|
-
const
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
onOpenChange()((prev) => !prev);
|
|
1698
|
+
const setOpenSetter = (valueOrFn) => {
|
|
1699
|
+
if (props.open === void 0) {
|
|
1700
|
+
setUncontrolledOpen(valueOrFn);
|
|
1701
|
+
}
|
|
1852
1702
|
};
|
|
1853
|
-
|
|
1703
|
+
const [shouldRenderTooltip, setShouldRenderTooltip] = createSignal(openAccessor());
|
|
1704
|
+
let renderTimeoutId;
|
|
1705
|
+
createEffect(() => {
|
|
1706
|
+
const isOpen = openAccessor();
|
|
1707
|
+
if (renderTimeoutId) {
|
|
1708
|
+
clearTimeout(renderTimeoutId);
|
|
1709
|
+
renderTimeoutId = void 0;
|
|
1710
|
+
}
|
|
1711
|
+
if (isOpen) {
|
|
1712
|
+
setShouldRenderTooltip(true);
|
|
1713
|
+
} else if (effectiveAnimationDuration() > 0) {
|
|
1714
|
+
renderTimeoutId = window.setTimeout(() => {
|
|
1715
|
+
setShouldRenderTooltip(false);
|
|
1716
|
+
}, effectiveAnimationDuration() * 1e3);
|
|
1717
|
+
} else {
|
|
1718
|
+
setShouldRenderTooltip(false);
|
|
1719
|
+
}
|
|
1720
|
+
});
|
|
1721
|
+
createEffect(() => {
|
|
1722
|
+
if (openAccessor()) {
|
|
1723
|
+
setShouldRenderTooltip(true);
|
|
1724
|
+
}
|
|
1725
|
+
});
|
|
1726
|
+
return createComponent(TooltipContext.Provider, {
|
|
1854
1727
|
value: {
|
|
1855
|
-
onToggle,
|
|
1856
|
-
onClose,
|
|
1857
1728
|
reference,
|
|
1858
1729
|
setReference,
|
|
1859
1730
|
floating,
|
|
1860
1731
|
setFloating,
|
|
1861
|
-
open,
|
|
1862
|
-
|
|
1732
|
+
open: openAccessor,
|
|
1733
|
+
shouldRender: shouldRenderTooltip,
|
|
1734
|
+
setOpen: setOpenSetter,
|
|
1735
|
+
floatingStyles: () => {
|
|
1736
|
+
var _a2, _b;
|
|
1737
|
+
return {
|
|
1738
|
+
position: position.strategy,
|
|
1739
|
+
top: `${(_a2 = position.y) != null ? _a2 : 0}px`,
|
|
1740
|
+
left: `${(_b = position.x) != null ? _b : 0}px`
|
|
1741
|
+
};
|
|
1742
|
+
},
|
|
1743
|
+
effectiveAnimationDuration
|
|
1863
1744
|
},
|
|
1864
1745
|
get children() {
|
|
1865
1746
|
return props.children;
|
|
1866
1747
|
}
|
|
1867
1748
|
});
|
|
1868
1749
|
}
|
|
1869
|
-
function
|
|
1870
|
-
const context = useContext(
|
|
1750
|
+
function useTooltip() {
|
|
1751
|
+
const context = useContext(TooltipContext);
|
|
1871
1752
|
if (!context) {
|
|
1872
|
-
throw new Error("
|
|
1753
|
+
throw new Error("useTooltip must be used within Tooltip.Root component");
|
|
1873
1754
|
}
|
|
1874
1755
|
return context;
|
|
1875
1756
|
}
|
|
1757
|
+
var Motion = new Proxy(Motion$1, {
|
|
1758
|
+
get: (_, tag) => (props) => {
|
|
1759
|
+
const {
|
|
1760
|
+
animations
|
|
1761
|
+
} = useAppearance();
|
|
1762
|
+
return createComponent(Motion$1, mergeProps(props, {
|
|
1763
|
+
tag,
|
|
1764
|
+
get transition() {
|
|
1765
|
+
return animations() ? props.transition : {
|
|
1766
|
+
duration: 0
|
|
1767
|
+
};
|
|
1768
|
+
}
|
|
1769
|
+
}));
|
|
1770
|
+
}
|
|
1771
|
+
});
|
|
1876
1772
|
|
|
1877
|
-
// src/ui/components/primitives/
|
|
1878
|
-
var
|
|
1879
|
-
var
|
|
1880
|
-
var PopoverContentBody = (props) => {
|
|
1773
|
+
// src/ui/components/primitives/Tooltip/TooltipContent.tsx
|
|
1774
|
+
var tooltipContentVariants = () => "nt-bg-foreground nt-p-2 nt-shadow-tooltip nt-rounded-lg nt-text-background nt-text-xs";
|
|
1775
|
+
var TooltipContentBody = (props) => {
|
|
1881
1776
|
const {
|
|
1882
1777
|
open,
|
|
1883
1778
|
setFloating,
|
|
1884
1779
|
floating,
|
|
1885
|
-
floatingStyles
|
|
1886
|
-
|
|
1780
|
+
floatingStyles,
|
|
1781
|
+
effectiveAnimationDuration
|
|
1782
|
+
} = useTooltip();
|
|
1887
1783
|
const {
|
|
1888
1784
|
setActive,
|
|
1889
1785
|
removeActive
|
|
@@ -1892,80 +1788,72 @@ var PopoverContentBody = (props) => {
|
|
|
1892
1788
|
const style = useStyle();
|
|
1893
1789
|
onMount(() => {
|
|
1894
1790
|
const floatingEl = floating();
|
|
1895
|
-
setActive(floatingEl);
|
|
1791
|
+
if (floatingEl) setActive(floatingEl);
|
|
1896
1792
|
onCleanup(() => {
|
|
1897
|
-
removeActive(floatingEl);
|
|
1793
|
+
if (floatingEl) removeActive(floatingEl);
|
|
1898
1794
|
});
|
|
1899
1795
|
});
|
|
1900
|
-
return ((
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
}
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
}
|
|
1913
|
-
},
|
|
1914
|
-
|
|
1915
|
-
|
|
1796
|
+
return createComponent(Motion.div, mergeProps({
|
|
1797
|
+
initial: {
|
|
1798
|
+
opacity: 0,
|
|
1799
|
+
scale: 0.95
|
|
1800
|
+
},
|
|
1801
|
+
get animate() {
|
|
1802
|
+
return open() ? {
|
|
1803
|
+
opacity: 1,
|
|
1804
|
+
scale: 1
|
|
1805
|
+
} : {
|
|
1806
|
+
opacity: 0,
|
|
1807
|
+
scale: 0.95
|
|
1808
|
+
};
|
|
1809
|
+
},
|
|
1810
|
+
get transition() {
|
|
1811
|
+
return {
|
|
1812
|
+
duration: effectiveAnimationDuration(),
|
|
1813
|
+
easing: "ease-in-out"
|
|
1814
|
+
};
|
|
1815
|
+
},
|
|
1816
|
+
ref: setFloating,
|
|
1817
|
+
get ["class"]() {
|
|
1818
|
+
return memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tooltipContent", tooltipContentVariants());
|
|
1819
|
+
},
|
|
1820
|
+
get style() {
|
|
1821
|
+
return __spreadProps(__spreadValues({}, floatingStyles()), {
|
|
1822
|
+
"z-index": 99999
|
|
1823
|
+
});
|
|
1824
|
+
}
|
|
1825
|
+
}, rest, {
|
|
1826
|
+
get children() {
|
|
1827
|
+
return props.children;
|
|
1828
|
+
}
|
|
1829
|
+
}));
|
|
1916
1830
|
};
|
|
1917
|
-
var
|
|
1918
|
-
const {
|
|
1919
|
-
open,
|
|
1920
|
-
onClose,
|
|
1921
|
-
reference,
|
|
1922
|
-
floating
|
|
1923
|
-
} = usePopover();
|
|
1831
|
+
var TooltipContent = (props) => {
|
|
1924
1832
|
const {
|
|
1925
|
-
|
|
1926
|
-
} =
|
|
1833
|
+
shouldRender
|
|
1834
|
+
} = useTooltip();
|
|
1927
1835
|
const {
|
|
1928
1836
|
container
|
|
1929
1837
|
} = useAppearance();
|
|
1930
|
-
const
|
|
1931
|
-
var _a, _b;
|
|
1932
|
-
if ((_a = reference()) == null ? void 0 : _a.contains(e.target)) {
|
|
1933
|
-
return;
|
|
1934
|
-
}
|
|
1935
|
-
const containerElement = container();
|
|
1936
|
-
if (active() !== floating() || ((_b = floating()) == null ? void 0 : _b.contains(e.target)) || containerElement && e.target.shadowRoot === containerElement) {
|
|
1937
|
-
return;
|
|
1938
|
-
}
|
|
1939
|
-
onClose();
|
|
1940
|
-
};
|
|
1941
|
-
const handleEscapeKey = (e) => {
|
|
1942
|
-
if (active() !== floating()) {
|
|
1943
|
-
return;
|
|
1944
|
-
}
|
|
1945
|
-
if (e instanceof KeyboardEvent && e.key === "Escape") {
|
|
1946
|
-
onClose();
|
|
1947
|
-
}
|
|
1948
|
-
};
|
|
1949
|
-
onMount(() => {
|
|
1950
|
-
var _a;
|
|
1951
|
-
document.body.addEventListener("click", handleClickOutside);
|
|
1952
|
-
(_a = container()) == null ? void 0 : _a.addEventListener("click", handleClickOutside);
|
|
1953
|
-
document.body.addEventListener("keydown", handleEscapeKey);
|
|
1954
|
-
});
|
|
1955
|
-
onCleanup(() => {
|
|
1838
|
+
const portalContainer = () => {
|
|
1956
1839
|
var _a;
|
|
1957
|
-
document.body
|
|
1958
|
-
|
|
1959
|
-
document.body.removeEventListener("keydown", handleEscapeKey);
|
|
1960
|
-
});
|
|
1840
|
+
return (_a = container()) != null ? _a : document.body;
|
|
1841
|
+
};
|
|
1961
1842
|
return createComponent(Show, {
|
|
1962
1843
|
get when() {
|
|
1963
|
-
return
|
|
1844
|
+
return shouldRender();
|
|
1964
1845
|
},
|
|
1965
1846
|
get children() {
|
|
1966
1847
|
return createComponent(Portal, {
|
|
1848
|
+
get mount() {
|
|
1849
|
+
return portalContainer();
|
|
1850
|
+
},
|
|
1967
1851
|
get children() {
|
|
1968
|
-
return createComponent(
|
|
1852
|
+
return createComponent(Root, {
|
|
1853
|
+
get children() {
|
|
1854
|
+
return createComponent(TooltipContentBody, props);
|
|
1855
|
+
}
|
|
1856
|
+
});
|
|
1969
1857
|
}
|
|
1970
1858
|
});
|
|
1971
1859
|
}
|
|
@@ -1982,22 +1870,28 @@ function mergeRefs(...refs) {
|
|
|
1982
1870
|
return chain(refs);
|
|
1983
1871
|
}
|
|
1984
1872
|
|
|
1985
|
-
// src/ui/components/primitives/
|
|
1986
|
-
var _tmpl$
|
|
1987
|
-
var
|
|
1873
|
+
// src/ui/components/primitives/Tooltip/TooltipTrigger.tsx
|
|
1874
|
+
var _tmpl$26 = /* @__PURE__ */ template(`<button>`);
|
|
1875
|
+
var TooltipTrigger = (props) => {
|
|
1988
1876
|
const {
|
|
1989
1877
|
setReference,
|
|
1990
|
-
|
|
1991
|
-
} =
|
|
1878
|
+
setOpen
|
|
1879
|
+
} = useTooltip();
|
|
1992
1880
|
const style = useStyle();
|
|
1993
|
-
const [local, rest] = splitProps(props, ["appearanceKey", "asChild", "onClick", "ref"]);
|
|
1994
|
-
const
|
|
1995
|
-
if (typeof local.
|
|
1996
|
-
local.
|
|
1881
|
+
const [local, rest] = splitProps(props, ["appearanceKey", "asChild", "onClick", "onMouseEnter", "onMouseLeave", "ref"]);
|
|
1882
|
+
const handleMouseEnter = (e) => {
|
|
1883
|
+
if (typeof local.onMouseEnter === "function") {
|
|
1884
|
+
local.onMouseEnter(e);
|
|
1997
1885
|
}
|
|
1998
|
-
|
|
1886
|
+
setOpen(true);
|
|
1999
1887
|
};
|
|
2000
1888
|
const ref = createMemo(() => local.ref ? mergeRefs(setReference, local.ref) : setReference);
|
|
1889
|
+
const handleMouseLeave = (e) => {
|
|
1890
|
+
if (typeof local.onMouseLeave === "function") {
|
|
1891
|
+
local.onMouseLeave(e);
|
|
1892
|
+
}
|
|
1893
|
+
setOpen(false);
|
|
1894
|
+
};
|
|
2001
1895
|
if (local.asChild) {
|
|
2002
1896
|
return createComponent(Dynamic, mergeProps({
|
|
2003
1897
|
get component() {
|
|
@@ -2007,244 +1901,329 @@ var PopoverTrigger = (props) => {
|
|
|
2007
1901
|
var _ref$ = ref();
|
|
2008
1902
|
typeof _ref$ === "function" && _ref$(r$);
|
|
2009
1903
|
},
|
|
2010
|
-
|
|
1904
|
+
onMouseEnter: handleMouseEnter,
|
|
1905
|
+
onMouseLeave: handleMouseLeave
|
|
2011
1906
|
}, rest));
|
|
2012
1907
|
}
|
|
2013
1908
|
return (() => {
|
|
2014
|
-
var _el$ = _tmpl$
|
|
2015
|
-
_el
|
|
1909
|
+
var _el$ = _tmpl$26();
|
|
1910
|
+
_el$.addEventListener("mouseleave", () => {
|
|
1911
|
+
setOpen(false);
|
|
1912
|
+
});
|
|
1913
|
+
_el$.addEventListener("mouseenter", () => {
|
|
1914
|
+
setOpen(true);
|
|
1915
|
+
});
|
|
2016
1916
|
var _ref$2 = ref();
|
|
2017
1917
|
typeof _ref$2 === "function" && use(_ref$2, _el$);
|
|
2018
1918
|
spread(_el$, mergeProps({
|
|
2019
1919
|
get ["class"]() {
|
|
2020
|
-
return style(local.appearanceKey || "
|
|
1920
|
+
return style(local.appearanceKey || "tooltipTrigger");
|
|
2021
1921
|
}
|
|
2022
1922
|
}, rest), false, true);
|
|
2023
1923
|
insert(_el$, () => props.children);
|
|
2024
1924
|
return _el$;
|
|
2025
1925
|
})();
|
|
2026
1926
|
};
|
|
2027
|
-
delegateEvents(["click"]);
|
|
2028
1927
|
|
|
2029
|
-
// src/ui/components/primitives/
|
|
2030
|
-
var
|
|
2031
|
-
Root:
|
|
2032
|
-
/**
|
|
2033
|
-
* Popover.Trigger renders a `button` and has no default styling.
|
|
2034
|
-
*/
|
|
2035
|
-
Trigger: PopoverTrigger,
|
|
1928
|
+
// src/ui/components/primitives/Tooltip/index.ts
|
|
1929
|
+
var Tooltip = {
|
|
1930
|
+
Root: TooltipRoot,
|
|
2036
1931
|
/**
|
|
2037
|
-
*
|
|
1932
|
+
* Tooltip.Trigger renders a `button` and has no default styling.
|
|
2038
1933
|
*/
|
|
2039
|
-
|
|
1934
|
+
Trigger: TooltipTrigger,
|
|
2040
1935
|
/**
|
|
2041
|
-
*
|
|
2042
|
-
* Closes the popover when clicked.
|
|
2043
|
-
* `onClick` function is propagated.
|
|
1936
|
+
* Tooltip.Content renders a `div` and has popover specific styling.
|
|
2044
1937
|
*/
|
|
2045
|
-
|
|
1938
|
+
Content: TooltipContent
|
|
2046
1939
|
};
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
1940
|
+
|
|
1941
|
+
// src/ui/components/primitives/CopyToClipboard.tsx
|
|
1942
|
+
var _tmpl$27 = /* @__PURE__ */ template(`<button type=button>`);
|
|
1943
|
+
function CopyToClipboard(props) {
|
|
1944
|
+
const [isCopied, setIsCopied] = createSignal(false);
|
|
1945
|
+
const style = useStyle();
|
|
1946
|
+
let timeoutId;
|
|
1947
|
+
const defaultTooltipText = "Copied!";
|
|
1948
|
+
const defaultTooltipDuration = 2e3;
|
|
1949
|
+
function handleCopy() {
|
|
1950
|
+
return __async(this, null, function* () {
|
|
1951
|
+
var _a;
|
|
1952
|
+
if (timeoutId) {
|
|
1953
|
+
clearTimeout(timeoutId);
|
|
1954
|
+
}
|
|
1955
|
+
try {
|
|
1956
|
+
yield navigator.clipboard.writeText(props.textToCopy);
|
|
1957
|
+
setIsCopied(true);
|
|
1958
|
+
timeoutId = window.setTimeout(() => {
|
|
1959
|
+
setIsCopied(false);
|
|
1960
|
+
timeoutId = void 0;
|
|
1961
|
+
}, (_a = props.tooltipDuration) != null ? _a : defaultTooltipDuration);
|
|
1962
|
+
} catch (err) {
|
|
1963
|
+
console.error("Failed to copy text: ", err);
|
|
1964
|
+
}
|
|
1965
|
+
});
|
|
1966
|
+
}
|
|
1967
|
+
return createComponent(Tooltip.Root, {
|
|
1968
|
+
get open() {
|
|
1969
|
+
return isCopied();
|
|
2053
1970
|
},
|
|
2054
|
-
|
|
2055
|
-
|
|
1971
|
+
placement: "top",
|
|
1972
|
+
animationDuration: 0.15,
|
|
1973
|
+
get children() {
|
|
1974
|
+
return [createComponent(Tooltip.Trigger, {
|
|
1975
|
+
asChild: (triggerProps) => (() => {
|
|
1976
|
+
var _el$ = _tmpl$27();
|
|
1977
|
+
spread(_el$, mergeProps(triggerProps, {
|
|
1978
|
+
"onClick": handleCopy,
|
|
1979
|
+
get ["class"]() {
|
|
1980
|
+
return style("button", "nt-cursor-pointer");
|
|
1981
|
+
}
|
|
1982
|
+
}), false, true);
|
|
1983
|
+
insert(_el$, () => props.children);
|
|
1984
|
+
return _el$;
|
|
1985
|
+
})()
|
|
1986
|
+
}), createComponent(Tooltip.Content, {
|
|
1987
|
+
get children() {
|
|
1988
|
+
var _a;
|
|
1989
|
+
return (_a = props.tooltipText) != null ? _a : defaultTooltipText;
|
|
1990
|
+
}
|
|
1991
|
+
})];
|
|
2056
1992
|
}
|
|
2057
|
-
}
|
|
2058
|
-
}
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
1993
|
+
});
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
// src/ui/components/elements/Footer.tsx
|
|
1997
|
+
var _tmpl$28 = /* @__PURE__ */ template(`<span class="nt-z-10 nt-text-xs nt-text-stripes">`);
|
|
1998
|
+
var _tmpl$29 = /* @__PURE__ */ template(`<span class="nt-z-10 nt-text-xs">\u2022`);
|
|
1999
|
+
var _tmpl$32 = /* @__PURE__ */ template(`<a target=_blank class="nt-z-10 nt-flex nt-items-center nt-gap-1 nt-justify-center"><span class=nt-text-xs>Inbox by</span><span class=nt-text-xs>Novu`);
|
|
2000
|
+
var _tmpl$42 = /* @__PURE__ */ template(`<span class=nt-underline>Copy cURL`);
|
|
2001
|
+
var _tmpl$52 = /* @__PURE__ */ template(`<div class="nt-z-10 nt-flex nt-items-center nt-gap-1 nt-text-xs nt-text-secondary-foreground"><a href="https://go.novu.co/keyless?utm_campaign=footer-get_api_key"class="nt-underline nt-flex nt-items-center nt-gap-0.5"target=_blank rel="noopener noreferrer">Get API key</a><span>\u2022</span><span>\u2022</span><button type=button class=nt-underline>Send notification`);
|
|
2002
|
+
var _tmpl$62 = /* @__PURE__ */ template(`<div><div class="nt-flex nt-items-center nt-gap-1">`);
|
|
2003
|
+
var _tmpl$72 = /* @__PURE__ */ template(`<a href="https://go.novu.co/keyless?utm_campaign=keyless-mode"target=_blank rel="noopener noreferrer">Keyless mode`);
|
|
2004
|
+
var _tmpl$82 = /* @__PURE__ */ template(`<br>`);
|
|
2005
|
+
var stripes = `before:nt-content-[""] before:nt-absolute before:nt-inset-0 before:-nt-right-[calc(0+var(--stripes-size))] before:[mask-image:linear-gradient(transparent_0%,black)] before:nt-bg-dev-stripes-gradient before:nt-bg-[length:var(--stripes-size)_var(--stripes-size)] before:nt-animate-stripes before:hover:[animation-play-state:running]`;
|
|
2006
|
+
var commonAfter = 'after:nt-content-[""] after:nt-absolute after:nt-inset-0 after:-nt-top-12';
|
|
2007
|
+
var devModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-stripes)_l_c_h_/_0.07)_55%,transparent),linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
|
|
2008
|
+
var prodModeGradient = `${commonAfter} after:nt-bg-[linear-gradient(180deg,transparent,oklch(from_var(--nv-color-background)_l_c_h_/_0.9)_55%,transparent)]`;
|
|
2009
|
+
var Footer = () => {
|
|
2062
2010
|
const {
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
onClick: handleClick
|
|
2077
|
-
}, rest));
|
|
2011
|
+
hideBranding,
|
|
2012
|
+
isDevelopmentMode,
|
|
2013
|
+
isKeyless
|
|
2014
|
+
} = useInboxContext();
|
|
2015
|
+
const novu = useNovu();
|
|
2016
|
+
function handleTriggerHelloWorld() {
|
|
2017
|
+
return __async(this, null, function* () {
|
|
2018
|
+
try {
|
|
2019
|
+
yield novu.notifications.triggerHelloWorldEvent();
|
|
2020
|
+
} catch (error) {
|
|
2021
|
+
console.error("Failed to send Hello World from UI via novu.notifications:", error);
|
|
2022
|
+
}
|
|
2023
|
+
});
|
|
2078
2024
|
}
|
|
2079
|
-
return createComponent(
|
|
2080
|
-
get
|
|
2081
|
-
return
|
|
2082
|
-
},
|
|
2083
|
-
get ["class"]() {
|
|
2084
|
-
return cn(dropdownItemVariants(), local.class);
|
|
2025
|
+
return createComponent(Show, {
|
|
2026
|
+
get when() {
|
|
2027
|
+
return !hideBranding() || isDevelopmentMode();
|
|
2085
2028
|
},
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
var
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
}
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
};
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
})
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
}
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
return;
|
|
2169
|
-
}
|
|
2170
|
-
setKeyboardNavigation(Array.from(tabs).includes(root.activeElement));
|
|
2171
|
-
};
|
|
2172
|
-
root.addEventListener("keyup", handleTabKey);
|
|
2173
|
-
return onCleanup(() => root.removeEventListener("keyup", handleTabKey));
|
|
2174
|
-
});
|
|
2175
|
-
createEffect(() => {
|
|
2176
|
-
const root = getRoot();
|
|
2177
|
-
const handleArrowKeys = (event) => {
|
|
2178
|
-
var _a, _b;
|
|
2179
|
-
if (!keyboardNavigation() || !(event instanceof KeyboardEvent) || event.key !== "ArrowLeft" && event.key !== "ArrowRight") {
|
|
2180
|
-
return;
|
|
2181
|
-
}
|
|
2182
|
-
const tabElements = Array.from((_b = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]')) != null ? _b : []);
|
|
2183
|
-
const tabIds = tabElements.map((tab) => tab.id);
|
|
2184
|
-
const currentIndex = tabIds.indexOf(activeTab());
|
|
2185
|
-
const { length } = tabIds;
|
|
2186
|
-
let activeIndex = currentIndex;
|
|
2187
|
-
let newTab = activeTab();
|
|
2188
|
-
if (event.key === "ArrowLeft") {
|
|
2189
|
-
activeIndex = currentIndex === 0 ? length - 1 : currentIndex - 1;
|
|
2190
|
-
newTab = tabIds[activeIndex];
|
|
2191
|
-
} else if (event.key === "ArrowRight") {
|
|
2192
|
-
activeIndex = currentIndex === length - 1 ? 0 : currentIndex + 1;
|
|
2193
|
-
newTab = tabIds[activeIndex];
|
|
2194
|
-
}
|
|
2195
|
-
tabElements[activeIndex].focus();
|
|
2196
|
-
setActiveTab(newTab);
|
|
2197
|
-
};
|
|
2198
|
-
root.addEventListener("keydown", handleArrowKeys);
|
|
2199
|
-
return onCleanup(() => root.removeEventListener("keydown", handleArrowKeys));
|
|
2029
|
+
get children() {
|
|
2030
|
+
var _el$ = _tmpl$62(), _el$2 = _el$.firstChild;
|
|
2031
|
+
_el$.style.setProperty("--stripes-size", "15px");
|
|
2032
|
+
insert(_el$2, createComponent(Show, {
|
|
2033
|
+
get when() {
|
|
2034
|
+
return isDevelopmentMode();
|
|
2035
|
+
},
|
|
2036
|
+
get children() {
|
|
2037
|
+
var _el$3 = _tmpl$28();
|
|
2038
|
+
insert(_el$3, (() => {
|
|
2039
|
+
var _c$ = memo(() => !!isKeyless());
|
|
2040
|
+
return () => _c$() ? createComponent(Tooltip.Root, {
|
|
2041
|
+
get children() {
|
|
2042
|
+
return [createComponent(Tooltip.Trigger, {
|
|
2043
|
+
"class": "",
|
|
2044
|
+
get children() {
|
|
2045
|
+
return _tmpl$72();
|
|
2046
|
+
}
|
|
2047
|
+
}), createComponent(Tooltip.Content, {
|
|
2048
|
+
get children() {
|
|
2049
|
+
return ["Temporary <Inbox />. All data will expire in 24 hours.", _tmpl$82(), "Connect API key to persist."];
|
|
2050
|
+
}
|
|
2051
|
+
})];
|
|
2052
|
+
}
|
|
2053
|
+
}) : "Development mode";
|
|
2054
|
+
})());
|
|
2055
|
+
return _el$3;
|
|
2056
|
+
}
|
|
2057
|
+
}), null);
|
|
2058
|
+
insert(_el$2, createComponent(Show, {
|
|
2059
|
+
get when() {
|
|
2060
|
+
return memo(() => !!isDevelopmentMode())() && !hideBranding();
|
|
2061
|
+
},
|
|
2062
|
+
get children() {
|
|
2063
|
+
return _tmpl$29();
|
|
2064
|
+
}
|
|
2065
|
+
}), null);
|
|
2066
|
+
insert(_el$2, createComponent(Show, {
|
|
2067
|
+
get when() {
|
|
2068
|
+
return !hideBranding();
|
|
2069
|
+
},
|
|
2070
|
+
get children() {
|
|
2071
|
+
var _el$5 = _tmpl$32(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
|
|
2072
|
+
insert(_el$5, createComponent(Novu2, {
|
|
2073
|
+
"class": "nt-size-2.5"
|
|
2074
|
+
}), _el$7);
|
|
2075
|
+
effect(() => setAttribute(_el$5, "href", `https://go.novu.co/powered?ref=${getCurrentDomain()}`));
|
|
2076
|
+
return _el$5;
|
|
2077
|
+
}
|
|
2078
|
+
}), null);
|
|
2079
|
+
insert(_el$, createComponent(Show, {
|
|
2080
|
+
get when() {
|
|
2081
|
+
return isKeyless();
|
|
2082
|
+
},
|
|
2083
|
+
get children() {
|
|
2084
|
+
var _el$8 = _tmpl$52(), _el$9 = _el$8.firstChild; _el$9.firstChild; var _el$11 = _el$9.nextSibling, _el$13 = _el$11.nextSibling, _el$14 = _el$13.nextSibling;
|
|
2085
|
+
insert(_el$9, createComponent(ArrowUpRight, {
|
|
2086
|
+
"class": "nt-ml-1"
|
|
2087
|
+
}), null);
|
|
2088
|
+
insert(_el$8, createComponent(CopyToClipboard, {
|
|
2089
|
+
get textToCopy() {
|
|
2090
|
+
return getCurlCommand();
|
|
2091
|
+
},
|
|
2092
|
+
get children() {
|
|
2093
|
+
return _tmpl$42();
|
|
2094
|
+
}
|
|
2095
|
+
}), _el$13);
|
|
2096
|
+
_el$14.$$click = (e) => {
|
|
2097
|
+
e.preventDefault();
|
|
2098
|
+
handleTriggerHelloWorld();
|
|
2099
|
+
};
|
|
2100
|
+
return _el$8;
|
|
2101
|
+
}
|
|
2102
|
+
}), null);
|
|
2103
|
+
effect(() => className(_el$, cn(`nt-relative nt-flex nt-shrink-0 nt-flex-col nt-justify-center nt-items-center nt-gap-1 nt-mt-auto nt-py-3 nt-text-foreground-alpha-400`, {
|
|
2104
|
+
[stripes]: isDevelopmentMode(),
|
|
2105
|
+
[devModeGradient]: isDevelopmentMode(),
|
|
2106
|
+
"nt-bg-[oklch(from_var(--nv-color-stripes)_l_c_h_/_0.1)]": isDevelopmentMode(),
|
|
2107
|
+
[prodModeGradient]: !isDevelopmentMode()
|
|
2108
|
+
})));
|
|
2109
|
+
return _el$;
|
|
2110
|
+
}
|
|
2200
2111
|
});
|
|
2201
2112
|
};
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
var TabsContext = createContext(void 0);
|
|
2206
|
-
var useTabsContext = () => {
|
|
2207
|
-
const context = useContext(TabsContext);
|
|
2208
|
-
if (!context) {
|
|
2209
|
-
throw new Error("useTabsContext must be used within an TabsContext.Provider");
|
|
2113
|
+
function getCurrentDomain() {
|
|
2114
|
+
if (isBrowser()) {
|
|
2115
|
+
return window.location.hostname;
|
|
2210
2116
|
}
|
|
2211
|
-
return
|
|
2117
|
+
return "";
|
|
2118
|
+
}
|
|
2119
|
+
function getCurlCommand() {
|
|
2120
|
+
const identifier = window.localStorage.getItem("novu_keyless_application_identifier");
|
|
2121
|
+
if (!identifier) {
|
|
2122
|
+
console.error("Novu application identifier not found for cURL command.");
|
|
2123
|
+
return "";
|
|
2124
|
+
}
|
|
2125
|
+
const DEFAULT_BACKEND_URL = typeof window !== "undefined" && window.NOVU_LOCAL_BACKEND_URL || "https://api.novu.co";
|
|
2126
|
+
return `curl -X POST ${DEFAULT_BACKEND_URL}/${DEFAULT_API_VERSION}/events/trigger -H 'Authorization: Keyless ${identifier}' -H 'Content-Type: application/json' -d '{
|
|
2127
|
+
"name": "hello-world",
|
|
2128
|
+
"to": {
|
|
2129
|
+
"subscriberId": "keyless-subscriber-id"
|
|
2130
|
+
},
|
|
2131
|
+
"payload": {
|
|
2132
|
+
"body": "New From Keyless Environment",
|
|
2133
|
+
"subject": "Hello World!"
|
|
2134
|
+
}
|
|
2135
|
+
}'`;
|
|
2136
|
+
}
|
|
2137
|
+
delegateEvents(["click"]);
|
|
2138
|
+
var _tmpl$30 = /* @__PURE__ */ template(`<button>`);
|
|
2139
|
+
var buttonVariants = cva(cn('nt-inline-flex nt-gap-4 nt-items-center nt-justify-center nt-whitespace-nowrap nt-text-sm nt-font-medium nt-transition-colors disabled:nt-pointer-events-none disabled:nt-opacity-50 after:nt-absolute after:nt-content-[""] before:nt-content-[""] before:nt-absolute [&_svg]:nt-pointer-events-none [&_svg]:nt-shrink-0', `focus-visible:nt-outline-none focus-visible:nt-ring-2 focus-visible:nt-rounded-md focus-visible:nt-ring-ring focus-visible:nt-ring-offset-2`), {
|
|
2140
|
+
variants: {
|
|
2141
|
+
variant: {
|
|
2142
|
+
default: "nt-bg-gradient-to-b nt-from-20% nt-from-primary-foreground-alpha-200 nt-to-transparent nt-bg-primary nt-text-primary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-primary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-primary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-primary-foreground-alpha-50 after:nt-to-transparent",
|
|
2143
|
+
secondary: "nt-bg-secondary nt-text-secondary-foreground nt-shadow-[0_0_0_0.5px_var(--nv-color-secondary-600)] nt-relative before:nt-absolute before:nt-inset-0 before:nt-border before:nt-border-secondary-foreground-alpha-100 after:nt-absolute after:nt-inset-0 after:nt-opacity-0 hover:after:nt-opacity-100 after:nt-transition-opacity after:nt-bg-gradient-to-b after:nt-from-secondary-foreground-alpha-50 after:nt-to-transparent",
|
|
2144
|
+
ghost: "hover:nt-bg-neutral-alpha-100 nt-text-foreground-alpha-600 hover:nt-text-foreground-alpha-800",
|
|
2145
|
+
unstyled: ""
|
|
2146
|
+
},
|
|
2147
|
+
size: {
|
|
2148
|
+
none: "",
|
|
2149
|
+
iconSm: "nt-p-1 nt-rounded-md after:nt-rounded-md before:nt-rounded-md focus-visible:nt-rounded-md",
|
|
2150
|
+
icon: "nt-p-2.5 nt-rounded-xl before:nt-rounded-xl after:nt-rounded-xl focus-visible:nt-rounded-xl",
|
|
2151
|
+
default: "nt-px-2 nt-py-1 nt-rounded-lg focus-visible:nt-rounded-lg before:nt-rounded-lg after:nt-rounded-lg",
|
|
2152
|
+
sm: "nt-px-1 nt-py-px nt-rounded-md nt-text-xs nt-px-1 before:nt-rounded-md focus-visible:nt-rounded-md after:nt-rounded-md",
|
|
2153
|
+
lg: "nt-px-8 nt-py-2 nt-text-base before:nt-rounded-lg after:nt-rounded-lg focus-visible:nt-rounded-lg"
|
|
2154
|
+
}
|
|
2155
|
+
},
|
|
2156
|
+
defaultVariants: {
|
|
2157
|
+
variant: "default",
|
|
2158
|
+
size: "default"
|
|
2159
|
+
}
|
|
2160
|
+
});
|
|
2161
|
+
var Button = (props) => {
|
|
2162
|
+
const [local, rest] = splitProps(props, ["class", "appearanceKey"]);
|
|
2163
|
+
const style = useStyle();
|
|
2164
|
+
return (() => {
|
|
2165
|
+
var _el$ = _tmpl$30();
|
|
2166
|
+
spread(_el$, mergeProps({
|
|
2167
|
+
get ["data-variant"]() {
|
|
2168
|
+
return props.variant;
|
|
2169
|
+
},
|
|
2170
|
+
get ["data-size"]() {
|
|
2171
|
+
return props.size;
|
|
2172
|
+
},
|
|
2173
|
+
get ["class"]() {
|
|
2174
|
+
return style(local.appearanceKey || "button", cn(buttonVariants({
|
|
2175
|
+
variant: props.variant,
|
|
2176
|
+
size: props.size
|
|
2177
|
+
}), local.class));
|
|
2178
|
+
}
|
|
2179
|
+
}, rest), false, false);
|
|
2180
|
+
return _el$;
|
|
2181
|
+
})();
|
|
2212
2182
|
};
|
|
2213
|
-
var
|
|
2214
|
-
var
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2183
|
+
var _tmpl$31 = /* @__PURE__ */ template(`<div>`);
|
|
2184
|
+
var _tmpl$210 = /* @__PURE__ */ template(`<div><span>`);
|
|
2185
|
+
var DatePickerContext = createContext({
|
|
2186
|
+
currentDate: () => /* @__PURE__ */ new Date(),
|
|
2187
|
+
setCurrentDate: () => {
|
|
2188
|
+
},
|
|
2189
|
+
viewMonth: () => /* @__PURE__ */ new Date(),
|
|
2190
|
+
setViewMonth: () => {
|
|
2191
|
+
},
|
|
2192
|
+
selectedDate: () => null,
|
|
2193
|
+
setSelectedDate: () => {
|
|
2194
|
+
},
|
|
2195
|
+
maxDays: () => 0
|
|
2196
|
+
});
|
|
2197
|
+
var useDatePicker = () => useContext(DatePickerContext);
|
|
2198
|
+
var DatePicker = (props) => {
|
|
2199
|
+
const [local, rest] = splitProps(props, ["children", "value", "onDateChange", "class", "maxDays"]);
|
|
2220
2200
|
const style = useStyle();
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2201
|
+
const today = /* @__PURE__ */ new Date();
|
|
2202
|
+
today.setHours(0, 0, 0, 0);
|
|
2203
|
+
const [currentDate, setCurrentDate] = createSignal(today);
|
|
2204
|
+
const [viewMonth, setViewMonth] = createSignal(today);
|
|
2205
|
+
const [selectedDate, setSelectedDate] = createSignal(local.value ? new Date(local.value) : null);
|
|
2206
|
+
const handleDateSelect = (date) => {
|
|
2207
|
+
setSelectedDate(date);
|
|
2208
|
+
if (local.onDateChange) {
|
|
2209
|
+
local.onDateChange(date);
|
|
2229
2210
|
}
|
|
2230
|
-
}
|
|
2231
|
-
|
|
2232
|
-
var _a2;
|
|
2233
|
-
(_a2 = local.onChange) == null ? void 0 : _a2.call(local, activeTab());
|
|
2234
|
-
});
|
|
2235
|
-
return createComponent(TabsContext.Provider, {
|
|
2211
|
+
};
|
|
2212
|
+
return createComponent(DatePickerContext.Provider, {
|
|
2236
2213
|
value: {
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2214
|
+
currentDate,
|
|
2215
|
+
setCurrentDate,
|
|
2216
|
+
viewMonth,
|
|
2217
|
+
setViewMonth,
|
|
2218
|
+
selectedDate,
|
|
2219
|
+
setSelectedDate: handleDateSelect,
|
|
2220
|
+
maxDays: () => props.maxDays
|
|
2241
2221
|
},
|
|
2242
2222
|
get children() {
|
|
2243
|
-
var _el$ = _tmpl$
|
|
2244
|
-
use(setTabsContainer, _el$);
|
|
2223
|
+
var _el$ = _tmpl$31();
|
|
2245
2224
|
spread(_el$, mergeProps({
|
|
2246
2225
|
get ["class"]() {
|
|
2247
|
-
return style(
|
|
2226
|
+
return style("datePicker", cn("nt-p-2", local.class));
|
|
2248
2227
|
}
|
|
2249
2228
|
}, rest), false, true);
|
|
2250
2229
|
insert(_el$, () => local.children);
|
|
@@ -2252,31 +2231,726 @@ var TabsRoot = (props) => {
|
|
|
2252
2231
|
}
|
|
2253
2232
|
});
|
|
2254
2233
|
};
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
var _tmpl$34 = /* @__PURE__ */ template(`<div role=tabpanel>`);
|
|
2258
|
-
var TabsContent = (props) => {
|
|
2259
|
-
const [local, rest] = splitProps(props, ["value", "class", "appearanceKey", "children"]);
|
|
2234
|
+
var DatePickerHeader = (props) => {
|
|
2235
|
+
const [local, rest] = splitProps(props, ["class", "appearanceKey", "children"]);
|
|
2260
2236
|
const style = useStyle();
|
|
2261
2237
|
const {
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2238
|
+
viewMonth,
|
|
2239
|
+
setViewMonth,
|
|
2240
|
+
currentDate,
|
|
2241
|
+
maxDays
|
|
2242
|
+
} = useDatePicker();
|
|
2243
|
+
useAppearance();
|
|
2244
|
+
const prevIconClass = style("datePickerControlPrevTrigger__icon", "nt-size-4 nt-text-foreground-alpha-700", {
|
|
2245
|
+
iconKey: "arrowLeft"
|
|
2246
|
+
});
|
|
2247
|
+
const nextIconClass = style("datePickerControlNextTrigger__icon", "nt-size-4 nt-text-foreground-alpha-700", {
|
|
2248
|
+
iconKey: "arrowRight"
|
|
2249
|
+
});
|
|
2250
|
+
const handlePrevMonth = () => {
|
|
2251
|
+
const date = new Date(viewMonth());
|
|
2252
|
+
date.setMonth(date.getMonth() - 1);
|
|
2253
|
+
const currentMonth = currentDate();
|
|
2254
|
+
if (date.getFullYear() < currentMonth.getFullYear() || date.getFullYear() === currentMonth.getFullYear() && date.getMonth() < currentMonth.getMonth()) {
|
|
2255
|
+
return;
|
|
2256
|
+
}
|
|
2257
|
+
setViewMonth(date);
|
|
2258
|
+
};
|
|
2259
|
+
const handleNextMonth = () => {
|
|
2260
|
+
const date = new Date(viewMonth());
|
|
2261
|
+
date.setMonth(date.getMonth() + 1);
|
|
2262
|
+
const maxDaysValue = maxDays();
|
|
2263
|
+
if (maxDaysValue > 0) {
|
|
2264
|
+
const maxDate = new Date(currentDate());
|
|
2265
|
+
maxDate.setDate(maxDate.getDate() + maxDaysValue);
|
|
2266
|
+
if (date.getFullYear() > maxDate.getFullYear() || date.getFullYear() === maxDate.getFullYear() && date.getMonth() > maxDate.getMonth()) {
|
|
2267
|
+
return;
|
|
2268
|
+
}
|
|
2269
|
+
}
|
|
2270
|
+
setViewMonth(date);
|
|
2271
|
+
};
|
|
2272
|
+
const isPrevDisabled = () => {
|
|
2273
|
+
const current = currentDate();
|
|
2274
|
+
const view = viewMonth();
|
|
2275
|
+
return view.getFullYear() === current.getFullYear() && view.getMonth() === current.getMonth();
|
|
2276
|
+
};
|
|
2277
|
+
const isNextDisabled = () => {
|
|
2278
|
+
const maxDaysValue = maxDays();
|
|
2279
|
+
if (maxDaysValue === 0) return false;
|
|
2280
|
+
const view = viewMonth();
|
|
2281
|
+
const maxDate = new Date(currentDate());
|
|
2282
|
+
maxDate.setDate(maxDate.getDate() + maxDaysValue);
|
|
2283
|
+
return view.getFullYear() === maxDate.getFullYear() && view.getMonth() === maxDate.getMonth();
|
|
2284
|
+
};
|
|
2285
|
+
return (() => {
|
|
2286
|
+
var _el$2 = _tmpl$210(), _el$3 = _el$2.firstChild;
|
|
2287
|
+
spread(_el$2, mergeProps({
|
|
2288
|
+
get ["class"]() {
|
|
2289
|
+
return style(local.appearanceKey || "datePickerControl", cn("nt-flex nt-items-center nt-justify-between nt-gap-1.5 nt-h-7 nt-p-1 nt-mb-2 nt-rounded-lg nt-bg-background", local.class));
|
|
2290
|
+
}
|
|
2291
|
+
}, rest), false, true);
|
|
2292
|
+
insert(_el$2, createComponent(Button, {
|
|
2293
|
+
appearanceKey: "datePickerControlPrevTrigger",
|
|
2294
|
+
variant: "ghost",
|
|
2295
|
+
onClick: (e) => {
|
|
2296
|
+
e.stopPropagation();
|
|
2297
|
+
handlePrevMonth();
|
|
2298
|
+
},
|
|
2299
|
+
get disabled() {
|
|
2300
|
+
return isPrevDisabled();
|
|
2301
|
+
},
|
|
2302
|
+
"class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
|
|
2303
|
+
get children() {
|
|
2304
|
+
return createComponent(IconRendererWrapper, {
|
|
2305
|
+
iconKey: "arrowLeft",
|
|
2306
|
+
"class": prevIconClass,
|
|
2307
|
+
get fallback() {
|
|
2308
|
+
return createComponent(ArrowLeft, {
|
|
2309
|
+
"class": prevIconClass
|
|
2310
|
+
});
|
|
2311
|
+
}
|
|
2312
|
+
});
|
|
2313
|
+
}
|
|
2314
|
+
}), _el$3);
|
|
2315
|
+
insert(_el$3, () => viewMonth().toLocaleDateString("en-US", {
|
|
2316
|
+
month: "long",
|
|
2317
|
+
year: "numeric"
|
|
2318
|
+
}));
|
|
2319
|
+
insert(_el$2, createComponent(Button, {
|
|
2320
|
+
appearanceKey: "datePickerControlNextTrigger",
|
|
2321
|
+
variant: "ghost",
|
|
2322
|
+
onClick: (e) => {
|
|
2323
|
+
e.stopPropagation();
|
|
2324
|
+
handleNextMonth();
|
|
2325
|
+
},
|
|
2326
|
+
get disabled() {
|
|
2327
|
+
return isNextDisabled();
|
|
2328
|
+
},
|
|
2329
|
+
"class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
|
|
2330
|
+
get children() {
|
|
2331
|
+
return createComponent(IconRendererWrapper, {
|
|
2332
|
+
iconKey: "arrowRight",
|
|
2333
|
+
"class": nextIconClass,
|
|
2334
|
+
get fallback() {
|
|
2335
|
+
return createComponent(ArrowRight, {
|
|
2336
|
+
"class": nextIconClass
|
|
2337
|
+
});
|
|
2338
|
+
}
|
|
2339
|
+
});
|
|
2340
|
+
}
|
|
2341
|
+
}), null);
|
|
2342
|
+
effect(() => className(_el$3, style("datePickerHeaderMonth", "nt-text-sm nt-font-medium nt-text-foreground-alpha-700")));
|
|
2343
|
+
return _el$2;
|
|
2344
|
+
})();
|
|
2345
|
+
};
|
|
2346
|
+
var DatePickerGridCellTrigger = (props) => {
|
|
2347
|
+
const [local, rest] = splitProps(props, ["class", "appearanceKey", "date"]);
|
|
2348
|
+
const {
|
|
2349
|
+
selectedDate,
|
|
2350
|
+
viewMonth,
|
|
2351
|
+
setSelectedDate,
|
|
2352
|
+
currentDate,
|
|
2353
|
+
maxDays
|
|
2354
|
+
} = useDatePicker();
|
|
2355
|
+
const {
|
|
2356
|
+
t
|
|
2357
|
+
} = useLocalization();
|
|
2358
|
+
const isCurrentMonth = props.date.getMonth() === viewMonth().getMonth();
|
|
2359
|
+
const isPastDate = () => {
|
|
2360
|
+
const today = currentDate();
|
|
2361
|
+
return props.date < today;
|
|
2362
|
+
};
|
|
2363
|
+
const isFutureDate = () => {
|
|
2364
|
+
const maxDaysValue = maxDays();
|
|
2365
|
+
if (maxDaysValue === 0) return false;
|
|
2366
|
+
const maxDate = new Date(currentDate());
|
|
2367
|
+
maxDate.setDate(maxDate.getDate() + maxDaysValue);
|
|
2368
|
+
return props.date > maxDate;
|
|
2369
|
+
};
|
|
2370
|
+
const isDisabled = !isCurrentMonth || isPastDate() || isFutureDate();
|
|
2371
|
+
const isExceedingLimit = () => {
|
|
2372
|
+
return isCurrentMonth && isFutureDate();
|
|
2373
|
+
};
|
|
2374
|
+
const buttonElement = createComponent(Button, mergeProps({
|
|
2375
|
+
appearanceKey: "datePickerCalendarDay__button",
|
|
2376
|
+
variant: "ghost",
|
|
2377
|
+
disabled: isDisabled,
|
|
2378
|
+
onClick: (e) => {
|
|
2379
|
+
e.stopPropagation();
|
|
2380
|
+
setSelectedDate(local.date);
|
|
2381
|
+
},
|
|
2382
|
+
get ["class"]() {
|
|
2383
|
+
var _a;
|
|
2384
|
+
return cn("nt-size-8 nt-w-full nt-rounded-md nt-flex nt-items-center nt-justify-center", {
|
|
2385
|
+
"nt-text-muted-foreground disabled:nt-opacity-20": !isCurrentMonth || isPastDate(),
|
|
2386
|
+
"nt-text-foreground-alpha-700": isCurrentMonth && !isPastDate() && !isFutureDate()
|
|
2387
|
+
}, {
|
|
2388
|
+
"nt-bg-primary-alpha-300 hover:nt-bg-primary-alpha-400": ((_a = selectedDate()) == null ? void 0 : _a.toDateString()) === local.date.toDateString()
|
|
2389
|
+
});
|
|
2390
|
+
}
|
|
2391
|
+
}, rest, {
|
|
2392
|
+
get children() {
|
|
2393
|
+
return local.date.getDate();
|
|
2394
|
+
}
|
|
2395
|
+
}));
|
|
2396
|
+
if (isExceedingLimit()) {
|
|
2397
|
+
return createComponent(Tooltip.Root, {
|
|
2398
|
+
get children() {
|
|
2399
|
+
return [createComponent(Tooltip.Trigger, {
|
|
2400
|
+
children: buttonElement
|
|
2401
|
+
}), createComponent(Tooltip.Content, {
|
|
2402
|
+
get children() {
|
|
2403
|
+
return t("snooze.datePicker.exceedingLimitTooltip", {
|
|
2404
|
+
days: maxDays()
|
|
2405
|
+
});
|
|
2406
|
+
}
|
|
2407
|
+
})];
|
|
2408
|
+
}
|
|
2409
|
+
});
|
|
2410
|
+
}
|
|
2411
|
+
return buttonElement;
|
|
2412
|
+
};
|
|
2413
|
+
var DatePickerCalendar = (props) => {
|
|
2414
|
+
const [local, rest] = splitProps(props, ["class", "appearanceKey"]);
|
|
2415
|
+
const style = useStyle();
|
|
2416
|
+
const {
|
|
2417
|
+
viewMonth
|
|
2418
|
+
} = useDatePicker();
|
|
2419
|
+
const getDaysInMonth = () => {
|
|
2420
|
+
const year = viewMonth().getFullYear();
|
|
2421
|
+
const month = viewMonth().getMonth();
|
|
2422
|
+
const firstDay = new Date(year, month, 1);
|
|
2423
|
+
const daysInMonth = new Date(year, month + 1, 0).getDate();
|
|
2424
|
+
const startingDay = firstDay.getDay();
|
|
2425
|
+
const days = [];
|
|
2426
|
+
for (let i = 0; i < startingDay; i += 1) {
|
|
2427
|
+
const prevMonthDay = new Date(year, month, -i);
|
|
2428
|
+
days.unshift(prevMonthDay);
|
|
2429
|
+
}
|
|
2430
|
+
for (let i = 1; i <= daysInMonth; i += 1) {
|
|
2431
|
+
days.push(new Date(year, month, i));
|
|
2432
|
+
}
|
|
2433
|
+
const remainingCells = 7 - days.length % 7;
|
|
2434
|
+
if (remainingCells < 7) {
|
|
2435
|
+
for (let i = 1; i <= remainingCells; i += 1) {
|
|
2436
|
+
days.push(new Date(year, month + 1, i));
|
|
2437
|
+
}
|
|
2438
|
+
}
|
|
2439
|
+
return days;
|
|
2440
|
+
};
|
|
2441
|
+
return (() => {
|
|
2442
|
+
var _el$8 = _tmpl$31();
|
|
2443
|
+
_el$8.$$click = (e) => e.stopPropagation();
|
|
2444
|
+
spread(_el$8, mergeProps({
|
|
2445
|
+
get ["class"]() {
|
|
2446
|
+
return style(local.appearanceKey || "datePickerCalendar", cn("nt-grid nt-grid-cols-7 nt-gap-1", local.class));
|
|
2447
|
+
}
|
|
2448
|
+
}, rest), false, true);
|
|
2449
|
+
insert(_el$8, () => getDaysInMonth().map((date) => {
|
|
2450
|
+
return createComponent(DatePickerGridCellTrigger, {
|
|
2451
|
+
date
|
|
2452
|
+
});
|
|
2453
|
+
}));
|
|
2454
|
+
return _el$8;
|
|
2455
|
+
})();
|
|
2456
|
+
};
|
|
2457
|
+
delegateEvents(["click"]);
|
|
2458
|
+
var _tmpl$33 = /* @__PURE__ */ template(`<button>`);
|
|
2459
|
+
var PopoverClose = (props) => {
|
|
2460
|
+
const {
|
|
2461
|
+
onClose
|
|
2462
|
+
} = usePopover();
|
|
2463
|
+
const style = useStyle();
|
|
2464
|
+
const [local, rest] = splitProps(props, ["onClick", "asChild", "appearanceKey", "class"]);
|
|
2465
|
+
const handleClick = (e) => {
|
|
2466
|
+
if (typeof local.onClick === "function") {
|
|
2467
|
+
local.onClick(e);
|
|
2468
|
+
}
|
|
2469
|
+
onClose();
|
|
2470
|
+
};
|
|
2471
|
+
if (local.asChild) {
|
|
2472
|
+
return createComponent(Dynamic, mergeProps({
|
|
2473
|
+
get component() {
|
|
2474
|
+
return local.asChild;
|
|
2475
|
+
},
|
|
2476
|
+
onClick: handleClick
|
|
2477
|
+
}, rest));
|
|
2478
|
+
}
|
|
2479
|
+
return (() => {
|
|
2480
|
+
var _el$ = _tmpl$33();
|
|
2481
|
+
_el$.$$click = handleClick;
|
|
2482
|
+
spread(_el$, mergeProps({
|
|
2483
|
+
get ["class"]() {
|
|
2484
|
+
return style(local.appearanceKey || "popoverClose", local.class);
|
|
2485
|
+
}
|
|
2486
|
+
}, rest), false, false);
|
|
2487
|
+
return _el$;
|
|
2488
|
+
})();
|
|
2489
|
+
};
|
|
2490
|
+
delegateEvents(["click"]);
|
|
2491
|
+
var _tmpl$34 = /* @__PURE__ */ template(`<div>`);
|
|
2492
|
+
var Portal2 = (props) => {
|
|
2493
|
+
const appearance = useAppearance();
|
|
2494
|
+
let currentElement;
|
|
2495
|
+
return [(() => {
|
|
2496
|
+
var _el$ = _tmpl$34();
|
|
2497
|
+
use((el) => {
|
|
2498
|
+
currentElement = el;
|
|
2499
|
+
}, _el$);
|
|
2500
|
+
_el$.style.setProperty("display", "none");
|
|
2501
|
+
return _el$;
|
|
2502
|
+
})(), createComponent(Portal, mergeProps({
|
|
2503
|
+
get mount() {
|
|
2504
|
+
return closestNovuRootParent(currentElement, appearance.id());
|
|
2505
|
+
}
|
|
2506
|
+
}, props))];
|
|
2507
|
+
};
|
|
2508
|
+
var closestNovuRootParent = (el, id) => {
|
|
2509
|
+
let element = el;
|
|
2510
|
+
while (element && element.id !== `novu-root-${id}`) {
|
|
2511
|
+
element = element.parentElement;
|
|
2512
|
+
}
|
|
2513
|
+
if (element && element.id === `novu-root-${id}`) {
|
|
2514
|
+
return element;
|
|
2515
|
+
}
|
|
2516
|
+
return void 0;
|
|
2517
|
+
};
|
|
2518
|
+
var PopoverContext = createContext(void 0);
|
|
2519
|
+
function PopoverRoot(props) {
|
|
2520
|
+
var _a;
|
|
2521
|
+
const [uncontrolledIsOpen, setUncontrolledIsOpen] = createSignal((_a = props.open) != null ? _a : false);
|
|
2522
|
+
const onOpenChange = () => {
|
|
2523
|
+
var _a2;
|
|
2524
|
+
return (_a2 = props.onOpenChange) != null ? _a2 : setUncontrolledIsOpen;
|
|
2525
|
+
};
|
|
2526
|
+
const open = () => {
|
|
2527
|
+
var _a2;
|
|
2528
|
+
return (_a2 = props.open) != null ? _a2 : uncontrolledIsOpen();
|
|
2529
|
+
};
|
|
2530
|
+
const [reference, setReference] = createSignal(null);
|
|
2531
|
+
const [floating, setFloating] = createSignal(null);
|
|
2532
|
+
const position = useFloating(reference, floating, {
|
|
2533
|
+
strategy: "absolute",
|
|
2534
|
+
placement: props.placement,
|
|
2535
|
+
whileElementsMounted: autoUpdate,
|
|
2536
|
+
middleware: [offset(10), flip({
|
|
2537
|
+
fallbackPlacements: props.fallbackPlacements
|
|
2538
|
+
}), shift()]
|
|
2539
|
+
});
|
|
2540
|
+
const floatingStyles = createMemo(() => {
|
|
2541
|
+
var _a2, _b;
|
|
2542
|
+
return {
|
|
2543
|
+
position: position.strategy,
|
|
2544
|
+
top: `${(_a2 = position.y) != null ? _a2 : 0}px`,
|
|
2545
|
+
left: `${(_b = position.x) != null ? _b : 0}px`
|
|
2546
|
+
};
|
|
2547
|
+
});
|
|
2548
|
+
const onClose = () => {
|
|
2549
|
+
onOpenChange()(false);
|
|
2550
|
+
};
|
|
2551
|
+
const onToggle = () => {
|
|
2552
|
+
onOpenChange()((prev) => !prev);
|
|
2553
|
+
};
|
|
2554
|
+
return createComponent(PopoverContext.Provider, {
|
|
2555
|
+
value: {
|
|
2556
|
+
onToggle,
|
|
2557
|
+
onClose,
|
|
2558
|
+
reference,
|
|
2559
|
+
setReference,
|
|
2560
|
+
floating,
|
|
2561
|
+
setFloating,
|
|
2562
|
+
open,
|
|
2563
|
+
floatingStyles
|
|
2564
|
+
},
|
|
2565
|
+
get children() {
|
|
2566
|
+
return props.children;
|
|
2567
|
+
}
|
|
2568
|
+
});
|
|
2569
|
+
}
|
|
2570
|
+
function usePopover() {
|
|
2571
|
+
const context = useContext(PopoverContext);
|
|
2572
|
+
if (!context) {
|
|
2573
|
+
throw new Error("usePopover must be used within Popover.Root component");
|
|
2574
|
+
}
|
|
2575
|
+
return context;
|
|
2576
|
+
}
|
|
2577
|
+
|
|
2578
|
+
// src/ui/components/primitives/Popover/PopoverContent.tsx
|
|
2579
|
+
var _tmpl$35 = /* @__PURE__ */ template(`<div>`);
|
|
2580
|
+
var popoverContentVariants = () => cn("nt-w-[400px] nt-h-[600px] nt-rounded-xl nt-bg-background", "nt-shadow-popover nt-animate-in nt-slide-in-from-top-2 nt-fade-in nt-cursor-default nt-flex nt-flex-col nt-overflow-hidden nt-border nt-border-border nt-z-10");
|
|
2581
|
+
var PopoverContentBody = (props) => {
|
|
2582
|
+
const {
|
|
2583
|
+
open,
|
|
2584
|
+
setFloating,
|
|
2585
|
+
floating,
|
|
2586
|
+
floatingStyles
|
|
2587
|
+
} = usePopover();
|
|
2588
|
+
const {
|
|
2589
|
+
setActive,
|
|
2590
|
+
removeActive
|
|
2591
|
+
} = useFocusManager();
|
|
2592
|
+
const [local, rest] = splitProps(props, ["class", "appearanceKey", "style"]);
|
|
2593
|
+
const style = useStyle();
|
|
2594
|
+
onMount(() => {
|
|
2595
|
+
const floatingEl = floating();
|
|
2596
|
+
setActive(floatingEl);
|
|
2597
|
+
onCleanup(() => {
|
|
2598
|
+
removeActive(floatingEl);
|
|
2599
|
+
});
|
|
2600
|
+
});
|
|
2601
|
+
return (() => {
|
|
2602
|
+
var _el$ = _tmpl$35();
|
|
2603
|
+
use(setFloating, _el$);
|
|
2604
|
+
spread(_el$, mergeProps({
|
|
2605
|
+
get ["class"]() {
|
|
2606
|
+
return style(local.appearanceKey || "popoverContent", cn(popoverContentVariants(), local.class));
|
|
2607
|
+
},
|
|
2608
|
+
get style() {
|
|
2609
|
+
return floatingStyles();
|
|
2610
|
+
},
|
|
2611
|
+
get ["data-open"]() {
|
|
2612
|
+
return open();
|
|
2613
|
+
}
|
|
2614
|
+
}, rest), false, false);
|
|
2615
|
+
return _el$;
|
|
2616
|
+
})();
|
|
2617
|
+
};
|
|
2618
|
+
var PopoverContent = (props) => {
|
|
2619
|
+
const {
|
|
2620
|
+
open,
|
|
2621
|
+
onClose,
|
|
2622
|
+
reference,
|
|
2623
|
+
floating
|
|
2624
|
+
} = usePopover();
|
|
2625
|
+
const {
|
|
2626
|
+
active
|
|
2627
|
+
} = useFocusManager();
|
|
2628
|
+
const {
|
|
2629
|
+
container
|
|
2630
|
+
} = useAppearance();
|
|
2631
|
+
const handleClickOutside = (e) => {
|
|
2632
|
+
var _a, _b;
|
|
2633
|
+
if ((_a = reference()) == null ? void 0 : _a.contains(e.target)) {
|
|
2634
|
+
return;
|
|
2635
|
+
}
|
|
2636
|
+
const containerElement = container();
|
|
2637
|
+
if (active() !== floating() || ((_b = floating()) == null ? void 0 : _b.contains(e.target)) || containerElement && e.target.shadowRoot === containerElement) {
|
|
2638
|
+
return;
|
|
2639
|
+
}
|
|
2640
|
+
onClose();
|
|
2641
|
+
};
|
|
2642
|
+
const handleEscapeKey = (e) => {
|
|
2643
|
+
if (active() !== floating()) {
|
|
2644
|
+
return;
|
|
2645
|
+
}
|
|
2646
|
+
if (e instanceof KeyboardEvent && e.key === "Escape") {
|
|
2647
|
+
onClose();
|
|
2648
|
+
}
|
|
2649
|
+
};
|
|
2650
|
+
onMount(() => {
|
|
2651
|
+
var _a;
|
|
2652
|
+
document.body.addEventListener("click", handleClickOutside);
|
|
2653
|
+
(_a = container()) == null ? void 0 : _a.addEventListener("click", handleClickOutside);
|
|
2654
|
+
document.body.addEventListener("keydown", handleEscapeKey);
|
|
2655
|
+
});
|
|
2656
|
+
onCleanup(() => {
|
|
2657
|
+
var _a;
|
|
2658
|
+
document.body.removeEventListener("click", handleClickOutside);
|
|
2659
|
+
(_a = container()) == null ? void 0 : _a.removeEventListener("click", handleClickOutside);
|
|
2660
|
+
document.body.removeEventListener("keydown", handleEscapeKey);
|
|
2661
|
+
});
|
|
2662
|
+
return createComponent(Show, {
|
|
2663
|
+
get when() {
|
|
2664
|
+
return open();
|
|
2665
|
+
},
|
|
2666
|
+
get children() {
|
|
2667
|
+
return createComponent(Portal2, {
|
|
2668
|
+
get children() {
|
|
2669
|
+
return createComponent(PopoverContentBody, props);
|
|
2670
|
+
}
|
|
2671
|
+
});
|
|
2672
|
+
}
|
|
2673
|
+
});
|
|
2674
|
+
};
|
|
2675
|
+
var _tmpl$36 = /* @__PURE__ */ template(`<button>`);
|
|
2676
|
+
var PopoverTrigger = (props) => {
|
|
2677
|
+
const {
|
|
2678
|
+
setReference,
|
|
2679
|
+
onToggle
|
|
2680
|
+
} = usePopover();
|
|
2681
|
+
const style = useStyle();
|
|
2682
|
+
const [local, rest] = splitProps(props, ["appearanceKey", "asChild", "onClick", "ref"]);
|
|
2683
|
+
const handleClick = (e) => {
|
|
2684
|
+
if (typeof local.onClick === "function") {
|
|
2685
|
+
local.onClick(e);
|
|
2686
|
+
}
|
|
2687
|
+
onToggle();
|
|
2688
|
+
};
|
|
2689
|
+
const ref = createMemo(() => local.ref ? mergeRefs(setReference, local.ref) : setReference);
|
|
2690
|
+
if (local.asChild) {
|
|
2691
|
+
return createComponent(Dynamic, mergeProps({
|
|
2692
|
+
get component() {
|
|
2693
|
+
return local.asChild;
|
|
2694
|
+
},
|
|
2695
|
+
ref(r$) {
|
|
2696
|
+
var _ref$ = ref();
|
|
2697
|
+
typeof _ref$ === "function" && _ref$(r$);
|
|
2698
|
+
},
|
|
2699
|
+
onClick: handleClick
|
|
2700
|
+
}, rest));
|
|
2701
|
+
}
|
|
2702
|
+
return (() => {
|
|
2703
|
+
var _el$ = _tmpl$36();
|
|
2704
|
+
_el$.$$click = handleClick;
|
|
2705
|
+
var _ref$2 = ref();
|
|
2706
|
+
typeof _ref$2 === "function" && use(_ref$2, _el$);
|
|
2707
|
+
spread(_el$, mergeProps({
|
|
2708
|
+
get ["class"]() {
|
|
2709
|
+
return style(local.appearanceKey || "dropdownTrigger");
|
|
2710
|
+
}
|
|
2711
|
+
}, rest), false, true);
|
|
2712
|
+
insert(_el$, () => props.children);
|
|
2713
|
+
return _el$;
|
|
2714
|
+
})();
|
|
2715
|
+
};
|
|
2716
|
+
delegateEvents(["click"]);
|
|
2717
|
+
|
|
2718
|
+
// src/ui/components/primitives/Popover/index.ts
|
|
2719
|
+
var Popover = {
|
|
2720
|
+
Root: PopoverRoot,
|
|
2721
|
+
/**
|
|
2722
|
+
* Popover.Trigger renders a `button` and has no default styling.
|
|
2723
|
+
*/
|
|
2724
|
+
Trigger: PopoverTrigger,
|
|
2725
|
+
/**
|
|
2726
|
+
* Popover.Content renders a `div` and has popover specific styling.
|
|
2727
|
+
*/
|
|
2728
|
+
Content: PopoverContent,
|
|
2729
|
+
/**
|
|
2730
|
+
* Popover.Close renders a `button` and has no styling.
|
|
2731
|
+
* Closes the popover when clicked.
|
|
2732
|
+
* `onClick` function is propagated.
|
|
2733
|
+
*/
|
|
2734
|
+
Close: PopoverClose
|
|
2735
|
+
};
|
|
2736
|
+
var dropdownContentVariants = () => "nt-p-1 nt-text-sm nt-min-w-52 nt-shadow-dropdown nt-h-fit nt-min-w-52 nt-w-max";
|
|
2737
|
+
var DropdownContent = (props) => {
|
|
2738
|
+
const [local, rest] = splitProps(props, ["appearanceKey", "class"]);
|
|
2739
|
+
return createComponent(Popover.Content, mergeProps({
|
|
2740
|
+
get appearanceKey() {
|
|
2741
|
+
return local.appearanceKey || "dropdownContent";
|
|
2742
|
+
},
|
|
2743
|
+
get ["class"]() {
|
|
2744
|
+
return cn(dropdownContentVariants(), local.class);
|
|
2745
|
+
}
|
|
2746
|
+
}, rest));
|
|
2747
|
+
};
|
|
2748
|
+
var dropdownItemVariants = () => "focus:nt-outline-none nt-flex nt-items-center nt-gap-1.5 nt-text-sm nt-rounded-lg nt-items-center hover:nt-bg-neutral-alpha-50 focus-visible:nt-bg-neutral-alpha-50 nt-py-1 nt-px-2";
|
|
2749
|
+
var DropdownItem = (props) => {
|
|
2750
|
+
const [local, rest] = splitProps(props, ["appearanceKey", "onClick", "class", "asChild"]);
|
|
2751
|
+
const {
|
|
2752
|
+
onClose
|
|
2753
|
+
} = usePopover();
|
|
2754
|
+
const handleClick = (e) => {
|
|
2755
|
+
if (typeof local.onClick === "function") {
|
|
2756
|
+
local.onClick(e);
|
|
2757
|
+
}
|
|
2758
|
+
onClose();
|
|
2759
|
+
};
|
|
2760
|
+
if (local.asChild) {
|
|
2761
|
+
return createComponent(Dynamic, mergeProps({
|
|
2762
|
+
get component() {
|
|
2763
|
+
return local.asChild;
|
|
2764
|
+
},
|
|
2765
|
+
onClick: handleClick
|
|
2766
|
+
}, rest));
|
|
2767
|
+
}
|
|
2768
|
+
return createComponent(Popover.Close, mergeProps({
|
|
2769
|
+
get appearanceKey() {
|
|
2770
|
+
return local.appearanceKey || "dropdownItem";
|
|
2771
|
+
},
|
|
2772
|
+
get ["class"]() {
|
|
2773
|
+
return cn(dropdownItemVariants(), local.class);
|
|
2774
|
+
},
|
|
2775
|
+
onClick: (e) => {
|
|
2776
|
+
if (typeof local.onClick === "function") {
|
|
2777
|
+
local.onClick(e);
|
|
2778
|
+
}
|
|
2779
|
+
onClose();
|
|
2780
|
+
}
|
|
2781
|
+
}, rest));
|
|
2782
|
+
};
|
|
2783
|
+
var DropdownRoot = (props) => {
|
|
2784
|
+
return createComponent(Popover.Root, mergeProps({
|
|
2785
|
+
placement: "bottom",
|
|
2786
|
+
fallbackPlacements: ["top"]
|
|
2787
|
+
}, props));
|
|
2788
|
+
};
|
|
2789
|
+
var dropdownTriggerButtonVariants = () => `nt-relative nt-transition nt-outline-none focus-visible:nt-outline-nonefocus-visible:nt-ring-2 focus-visible:nt-ring-primary focus-visible:nt-ring-offset-2`;
|
|
2790
|
+
var DropdownTrigger = (props) => {
|
|
2791
|
+
const style = useStyle();
|
|
2792
|
+
const [local, rest] = splitProps(props, ["appearanceKey", "class"]);
|
|
2793
|
+
return createComponent(Popover.Trigger, mergeProps({
|
|
2794
|
+
get ["class"]() {
|
|
2795
|
+
return style(local.appearanceKey || "dropdownTrigger", cn(dropdownTriggerButtonVariants(), local.class));
|
|
2796
|
+
}
|
|
2797
|
+
}, rest));
|
|
2798
|
+
};
|
|
2799
|
+
|
|
2800
|
+
// src/ui/components/primitives/Dropdown/index.ts
|
|
2801
|
+
var Dropdown = {
|
|
2802
|
+
Root: DropdownRoot,
|
|
2803
|
+
/**
|
|
2804
|
+
* Dropdown.Trigger renders a `button` and has no default styling.
|
|
2805
|
+
*/
|
|
2806
|
+
Trigger: DropdownTrigger,
|
|
2807
|
+
/**
|
|
2808
|
+
* Dropdown.Content renders a `Popover.Content` by default.
|
|
2809
|
+
*/
|
|
2810
|
+
Content: DropdownContent,
|
|
2811
|
+
/**
|
|
2812
|
+
* Dropdown.Close renders a `Popover.Close` by default.
|
|
2813
|
+
*/
|
|
2814
|
+
Close: Popover.Close,
|
|
2815
|
+
/**
|
|
2816
|
+
* Dropdown.Item renders a `Popover.Close` with dropdown specific styling.
|
|
2817
|
+
* Closes the popover when clicked.
|
|
2818
|
+
* `onClick` function is propagated.
|
|
2819
|
+
*/
|
|
2820
|
+
Item: DropdownItem
|
|
2821
|
+
};
|
|
2822
|
+
var useKeyboardNavigation = ({
|
|
2823
|
+
activeTab,
|
|
2824
|
+
setActiveTab,
|
|
2825
|
+
tabsContainer
|
|
2826
|
+
}) => {
|
|
2827
|
+
const { container } = useAppearance();
|
|
2828
|
+
const [keyboardNavigation, setKeyboardNavigation] = createSignal(false);
|
|
2829
|
+
const getRoot = () => {
|
|
2830
|
+
const containerElement = container();
|
|
2831
|
+
return containerElement instanceof ShadowRoot ? containerElement : document;
|
|
2832
|
+
};
|
|
2833
|
+
createEffect(() => {
|
|
2834
|
+
const root = getRoot();
|
|
2835
|
+
const handleTabKey = (event) => {
|
|
2836
|
+
var _a;
|
|
2837
|
+
if (!(event instanceof KeyboardEvent) || event.key !== "Tab") {
|
|
2838
|
+
return;
|
|
2839
|
+
}
|
|
2840
|
+
const tabs = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]');
|
|
2841
|
+
if (!tabs || !root.activeElement) {
|
|
2842
|
+
return;
|
|
2843
|
+
}
|
|
2844
|
+
setKeyboardNavigation(Array.from(tabs).includes(root.activeElement));
|
|
2845
|
+
};
|
|
2846
|
+
root.addEventListener("keyup", handleTabKey);
|
|
2847
|
+
return onCleanup(() => root.removeEventListener("keyup", handleTabKey));
|
|
2848
|
+
});
|
|
2849
|
+
createEffect(() => {
|
|
2850
|
+
const root = getRoot();
|
|
2851
|
+
const handleArrowKeys = (event) => {
|
|
2852
|
+
var _a, _b;
|
|
2853
|
+
if (!keyboardNavigation() || !(event instanceof KeyboardEvent) || event.key !== "ArrowLeft" && event.key !== "ArrowRight") {
|
|
2854
|
+
return;
|
|
2855
|
+
}
|
|
2856
|
+
const tabElements = Array.from((_b = (_a = tabsContainer()) == null ? void 0 : _a.querySelectorAll('[role="tab"]')) != null ? _b : []);
|
|
2857
|
+
const tabIds = tabElements.map((tab) => tab.id);
|
|
2858
|
+
const currentIndex = tabIds.indexOf(activeTab());
|
|
2859
|
+
const { length } = tabIds;
|
|
2860
|
+
let activeIndex = currentIndex;
|
|
2861
|
+
let newTab = activeTab();
|
|
2862
|
+
if (event.key === "ArrowLeft") {
|
|
2863
|
+
activeIndex = currentIndex === 0 ? length - 1 : currentIndex - 1;
|
|
2864
|
+
newTab = tabIds[activeIndex];
|
|
2865
|
+
} else if (event.key === "ArrowRight") {
|
|
2866
|
+
activeIndex = currentIndex === length - 1 ? 0 : currentIndex + 1;
|
|
2867
|
+
newTab = tabIds[activeIndex];
|
|
2868
|
+
}
|
|
2869
|
+
tabElements[activeIndex].focus();
|
|
2870
|
+
setActiveTab(newTab);
|
|
2871
|
+
};
|
|
2872
|
+
root.addEventListener("keydown", handleArrowKeys);
|
|
2873
|
+
return onCleanup(() => root.removeEventListener("keydown", handleArrowKeys));
|
|
2874
|
+
});
|
|
2875
|
+
};
|
|
2876
|
+
|
|
2877
|
+
// src/ui/components/primitives/Tabs/TabsRoot.tsx
|
|
2878
|
+
var _tmpl$37 = /* @__PURE__ */ template(`<div>`);
|
|
2879
|
+
var TabsContext = createContext(void 0);
|
|
2880
|
+
var useTabsContext = () => {
|
|
2881
|
+
const context = useContext(TabsContext);
|
|
2882
|
+
if (!context) {
|
|
2883
|
+
throw new Error("useTabsContext must be used within an TabsContext.Provider");
|
|
2884
|
+
}
|
|
2885
|
+
return context;
|
|
2886
|
+
};
|
|
2887
|
+
var tabsRootVariants = () => "nt-flex nt-flex-col";
|
|
2888
|
+
var TabsRoot = (props) => {
|
|
2889
|
+
var _a;
|
|
2890
|
+
const [local, rest] = splitProps(props, ["defaultValue", "value", "class", "appearanceKey", "onChange", "children"]);
|
|
2891
|
+
const [tabsContainer, setTabsContainer] = createSignal();
|
|
2892
|
+
const [visibleTabs, setVisibleTabs] = createSignal([]);
|
|
2893
|
+
const [activeTab, setActiveTab] = createSignal((_a = local.defaultValue) != null ? _a : "");
|
|
2894
|
+
const style = useStyle();
|
|
2895
|
+
useKeyboardNavigation({
|
|
2896
|
+
tabsContainer,
|
|
2897
|
+
activeTab,
|
|
2898
|
+
setActiveTab
|
|
2899
|
+
});
|
|
2900
|
+
createEffect(() => {
|
|
2901
|
+
if (local.value) {
|
|
2902
|
+
setActiveTab(local.value);
|
|
2903
|
+
}
|
|
2904
|
+
});
|
|
2905
|
+
createEffect(() => {
|
|
2906
|
+
var _a2;
|
|
2907
|
+
(_a2 = local.onChange) == null ? void 0 : _a2.call(local, activeTab());
|
|
2908
|
+
});
|
|
2909
|
+
return createComponent(TabsContext.Provider, {
|
|
2910
|
+
value: {
|
|
2911
|
+
activeTab,
|
|
2912
|
+
setActiveTab,
|
|
2913
|
+
visibleTabs,
|
|
2914
|
+
setVisibleTabs
|
|
2915
|
+
},
|
|
2916
|
+
get children() {
|
|
2917
|
+
var _el$ = _tmpl$37();
|
|
2918
|
+
use(setTabsContainer, _el$);
|
|
2919
|
+
spread(_el$, mergeProps({
|
|
2920
|
+
get ["class"]() {
|
|
2921
|
+
return style(local.appearanceKey || "tabsRoot", cn(tabsRootVariants(), local.class));
|
|
2922
|
+
}
|
|
2923
|
+
}, rest), false, true);
|
|
2924
|
+
insert(_el$, () => local.children);
|
|
2925
|
+
return _el$;
|
|
2926
|
+
}
|
|
2927
|
+
});
|
|
2928
|
+
};
|
|
2929
|
+
|
|
2930
|
+
// src/ui/components/primitives/Tabs/TabsContent.tsx
|
|
2931
|
+
var _tmpl$38 = /* @__PURE__ */ template(`<div role=tabpanel>`);
|
|
2932
|
+
var TabsContent = (props) => {
|
|
2933
|
+
const [local, rest] = splitProps(props, ["value", "class", "appearanceKey", "children"]);
|
|
2934
|
+
const style = useStyle();
|
|
2935
|
+
const {
|
|
2936
|
+
activeTab
|
|
2937
|
+
} = useTabsContext();
|
|
2938
|
+
return createComponent(Show, {
|
|
2939
|
+
get when() {
|
|
2940
|
+
return activeTab() === local.value;
|
|
2941
|
+
},
|
|
2942
|
+
get children() {
|
|
2943
|
+
var _el$ = _tmpl$38();
|
|
2944
|
+
spread(_el$, mergeProps({
|
|
2945
|
+
get ["class"]() {
|
|
2946
|
+
return memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tabsContent", activeTab() === local.value ? "nt-block" : "nt-hidden");
|
|
2947
|
+
},
|
|
2948
|
+
get id() {
|
|
2949
|
+
return `tabpanel-${local.value}`;
|
|
2950
|
+
},
|
|
2951
|
+
get ["aria-labelledby"]() {
|
|
2952
|
+
return local.value;
|
|
2953
|
+
},
|
|
2280
2954
|
get ["data-state"]() {
|
|
2281
2955
|
return activeTab() === local.value ? "active" : "inactive";
|
|
2282
2956
|
}
|
|
@@ -2286,14 +2960,14 @@ var TabsContent = (props) => {
|
|
|
2286
2960
|
}
|
|
2287
2961
|
});
|
|
2288
2962
|
};
|
|
2289
|
-
var _tmpl$
|
|
2290
|
-
var _tmpl$
|
|
2963
|
+
var _tmpl$39 = /* @__PURE__ */ template(`<div role=tablist>`);
|
|
2964
|
+
var _tmpl$211 = /* @__PURE__ */ template(`<div class="nt-relative nt-z-[-1]">`);
|
|
2291
2965
|
var tabsListVariants = () => "nt-flex nt-gap-6";
|
|
2292
2966
|
var TabsList = (props) => {
|
|
2293
2967
|
const [local, rest] = splitProps(props, ["class", "appearanceKey", "ref", "children"]);
|
|
2294
2968
|
const style = useStyle();
|
|
2295
2969
|
return [(() => {
|
|
2296
|
-
var _el$ = _tmpl$
|
|
2970
|
+
var _el$ = _tmpl$39();
|
|
2297
2971
|
var _ref$ = local.ref;
|
|
2298
2972
|
typeof _ref$ === "function" ? use(_ref$, _el$) : local.ref = _el$;
|
|
2299
2973
|
spread(_el$, mergeProps({
|
|
@@ -2303,7 +2977,7 @@ var TabsList = (props) => {
|
|
|
2303
2977
|
}, rest), false, true);
|
|
2304
2978
|
insert(_el$, () => local.children);
|
|
2305
2979
|
return _el$;
|
|
2306
|
-
})(), _tmpl$
|
|
2980
|
+
})(), _tmpl$211()];
|
|
2307
2981
|
};
|
|
2308
2982
|
var tabsTriggerVariants = () => cn("nt-relative nt-transition nt-outline-none nt-text-foreground-alpha-600 nt-pb-[0.625rem]", `after:nt-absolute after:nt-content-[''] after:nt-bottom-0 after:nt-left-0 after:nt-w-full after:nt-h-[2px]`, "after:nt-transition-opacity after:nt-duration-200", "data-[state=active]:after:nt-border-b-2 data-[state=active]:after:nt-border-primary data-[state=active]:after:nt-opacity-100", "data-[state=active]:nt-text-foreground after:nt-border-b-transparent after:nt-opacity-0", "focus-visible:nt-outline-none focus-visible:nt-rounded-lg focus-visible:nt-ring-2 focus-visible:nt-ring-ring focus-visible:nt-ring-offset-2");
|
|
2309
2983
|
var TabsTrigger = (props) => {
|
|
@@ -2374,8 +3048,8 @@ var inboxFilterLocalizationKeys = {
|
|
|
2374
3048
|
archived: "inbox.filters.labels.archived",
|
|
2375
3049
|
snoozed: "inbox.filters.labels.snoozed"
|
|
2376
3050
|
};
|
|
2377
|
-
var _tmpl$
|
|
2378
|
-
var _tmpl$
|
|
3051
|
+
var _tmpl$40 = /* @__PURE__ */ template(`<span><span>`);
|
|
3052
|
+
var _tmpl$212 = /* @__PURE__ */ template(`<span>`);
|
|
2379
3053
|
var cases = [{
|
|
2380
3054
|
status: "unreadRead" /* UNREAD_READ */,
|
|
2381
3055
|
iconKey: "unread",
|
|
@@ -2443,7 +3117,7 @@ var StatusItem = (props) => {
|
|
|
2443
3117
|
},
|
|
2444
3118
|
get children() {
|
|
2445
3119
|
return [(() => {
|
|
2446
|
-
var _el$ = _tmpl$
|
|
3120
|
+
var _el$ = _tmpl$40(), _el$2 = _el$.firstChild;
|
|
2447
3121
|
insert(_el$, createComponent(IconRendererWrapper, {
|
|
2448
3122
|
get iconKey() {
|
|
2449
3123
|
return props.iconKey;
|
|
@@ -2451,7 +3125,7 @@ var StatusItem = (props) => {
|
|
|
2451
3125
|
"class": itemIconClass,
|
|
2452
3126
|
get fallback() {
|
|
2453
3127
|
return (() => {
|
|
2454
|
-
var _el$3 = _tmpl$
|
|
3128
|
+
var _el$3 = _tmpl$212();
|
|
2455
3129
|
className(_el$3, itemIconClass);
|
|
2456
3130
|
insert(_el$3, () => props.icon());
|
|
2457
3131
|
return _el$3;
|
|
@@ -2492,7 +3166,7 @@ var StatusItem = (props) => {
|
|
|
2492
3166
|
};
|
|
2493
3167
|
|
|
2494
3168
|
// src/ui/components/elements/InboxStatus/InboxStatusDropdown.tsx
|
|
2495
|
-
var _tmpl$
|
|
3169
|
+
var _tmpl$41 = /* @__PURE__ */ template(`<span>`);
|
|
2496
3170
|
var StatusDropdown = () => {
|
|
2497
3171
|
const style = useStyle();
|
|
2498
3172
|
const {
|
|
@@ -2520,7 +3194,7 @@ var StatusDropdown = () => {
|
|
|
2520
3194
|
}, triggerProps, {
|
|
2521
3195
|
get children() {
|
|
2522
3196
|
return [(() => {
|
|
2523
|
-
var _el$ = _tmpl$
|
|
3197
|
+
var _el$ = _tmpl$41();
|
|
2524
3198
|
insert(_el$, () => t(inboxFilterLocalizationKeys[status()]));
|
|
2525
3199
|
effect((_p$) => {
|
|
2526
3200
|
var _v$ = inboxFilterLocalizationKeys[status()], _v$2 = style("inboxStatus__title", "nt-text-base");
|
|
@@ -2678,7 +3352,7 @@ var useReadAll = (props) => {
|
|
|
2678
3352
|
};
|
|
2679
3353
|
|
|
2680
3354
|
// src/ui/components/elements/Header/MoreActionsOptions.tsx
|
|
2681
|
-
var _tmpl$
|
|
3355
|
+
var _tmpl$43 = /* @__PURE__ */ template(`<span>`);
|
|
2682
3356
|
var iconKeyToComponentMap = {
|
|
2683
3357
|
markAsRead: MarkAsRead,
|
|
2684
3358
|
markAsArchived: MarkAsArchived,
|
|
@@ -2748,7 +3422,7 @@ var ActionsItem = (props) => {
|
|
|
2748
3422
|
});
|
|
2749
3423
|
}
|
|
2750
3424
|
}), (() => {
|
|
2751
|
-
var _el$ = _tmpl$
|
|
3425
|
+
var _el$ = _tmpl$43();
|
|
2752
3426
|
insert(_el$, () => t(props.localizationKey));
|
|
2753
3427
|
effect((_p$) => {
|
|
2754
3428
|
var _v$ = props.localizationKey, _v$2 = style("moreActions__dropdownItemLabel", "nt-leading-none");
|
|
@@ -2814,14 +3488,14 @@ var MoreActionsDropdown = () => {
|
|
|
2814
3488
|
};
|
|
2815
3489
|
|
|
2816
3490
|
// src/ui/components/elements/Header/ActionsContainer.tsx
|
|
2817
|
-
var _tmpl$
|
|
3491
|
+
var _tmpl$44 = /* @__PURE__ */ template(`<div>`);
|
|
2818
3492
|
var ActionsContainer = (props) => {
|
|
2819
3493
|
const style = useStyle();
|
|
2820
3494
|
const cogsIconClass = style("icon", "nt-size-5", {
|
|
2821
3495
|
iconKey: "cogs"
|
|
2822
3496
|
});
|
|
2823
3497
|
return (() => {
|
|
2824
|
-
var _el$ = _tmpl$
|
|
3498
|
+
var _el$ = _tmpl$44();
|
|
2825
3499
|
insert(_el$, createComponent(MoreActionsDropdown, {}), null);
|
|
2826
3500
|
insert(_el$, createComponent(Show, {
|
|
2827
3501
|
get when() {
|
|
@@ -2853,11 +3527,11 @@ var ActionsContainer = (props) => {
|
|
|
2853
3527
|
};
|
|
2854
3528
|
|
|
2855
3529
|
// src/ui/components/elements/Header/Header.tsx
|
|
2856
|
-
var _tmpl$
|
|
3530
|
+
var _tmpl$45 = /* @__PURE__ */ template(`<div>`);
|
|
2857
3531
|
var Header = (props) => {
|
|
2858
3532
|
const style = useStyle();
|
|
2859
3533
|
return (() => {
|
|
2860
|
-
var _el$ = _tmpl$
|
|
3534
|
+
var _el$ = _tmpl$45();
|
|
2861
3535
|
insert(_el$, createComponent(StatusDropdown, {}), null);
|
|
2862
3536
|
insert(_el$, createComponent(ActionsContainer, {
|
|
2863
3537
|
get showPreferences() {
|
|
@@ -2868,7 +3542,7 @@ var Header = (props) => {
|
|
|
2868
3542
|
return _el$;
|
|
2869
3543
|
})();
|
|
2870
3544
|
};
|
|
2871
|
-
var _tmpl$
|
|
3545
|
+
var _tmpl$46 = /* @__PURE__ */ template(`<div>`);
|
|
2872
3546
|
var Root = (props) => {
|
|
2873
3547
|
const [_, rest] = splitProps(props, ["class"]);
|
|
2874
3548
|
const {
|
|
@@ -2884,7 +3558,7 @@ var Root = (props) => {
|
|
|
2884
3558
|
},
|
|
2885
3559
|
children: new Comment(" Powered by Novu - https://novu.co ")
|
|
2886
3560
|
}), (() => {
|
|
2887
|
-
var _el$ = _tmpl$
|
|
3561
|
+
var _el$ = _tmpl$46();
|
|
2888
3562
|
spread(_el$, mergeProps({
|
|
2889
3563
|
get id() {
|
|
2890
3564
|
return `novu-root-${id()}`;
|
|
@@ -2896,15 +3570,15 @@ var Root = (props) => {
|
|
|
2896
3570
|
return _el$;
|
|
2897
3571
|
})()];
|
|
2898
3572
|
};
|
|
2899
|
-
var _tmpl$
|
|
3573
|
+
var _tmpl$47 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 14 14"><path fill=currentColor d="M2.8 8.575V5.162a2.362 2.362 0 1 1 4.725 0v3.675a1.313 1.313 0 1 0 2.625 0V5.335a1.575 1.575 0 1 1 1.05 0v3.502a2.362 2.362 0 1 1-4.725 0V5.162a1.312 1.312 0 1 0-2.625 0v3.413h1.575l-2.1 2.625-2.1-2.625H2.8Z"></path><path fill=url(#a) d="M2.8 8.575V5.162a2.362 2.362 0 1 1 4.725 0v3.675a1.313 1.313 0 1 0 2.625 0V5.335a1.575 1.575 0 1 1 1.05 0v3.502a2.362 2.362 0 1 1-4.725 0V5.162a1.312 1.312 0 1 0-2.625 0v3.413h1.575l-2.1 2.625-2.1-2.625H2.8Z"></path><defs><linearGradient id=a x1=1.225 x2=12.251 y1=6.722 y2=6.779 gradientUnits=userSpaceOnUse><stop stop-color=currentColor></stop><stop offset=1 stop-color=currentColor>`);
|
|
2900
3574
|
var RouteFill = (props) => {
|
|
2901
3575
|
return (() => {
|
|
2902
|
-
var _el$ = _tmpl$
|
|
3576
|
+
var _el$ = _tmpl$47();
|
|
2903
3577
|
spread(_el$, props, true, true);
|
|
2904
3578
|
return _el$;
|
|
2905
3579
|
})();
|
|
2906
3580
|
};
|
|
2907
|
-
var _tmpl$
|
|
3581
|
+
var _tmpl$48 = /* @__PURE__ */ template(`<div><div>`);
|
|
2908
3582
|
var isInterpolateSizeSupported = () => {
|
|
2909
3583
|
return CSS.supports("interpolate-size", "allow-keywords");
|
|
2910
3584
|
};
|
|
@@ -2937,7 +3611,7 @@ var Collapsible = (props) => {
|
|
|
2937
3611
|
return props.open ? `${scrollHeight()}px` : "0px";
|
|
2938
3612
|
};
|
|
2939
3613
|
return (() => {
|
|
2940
|
-
var _el$ = _tmpl$
|
|
3614
|
+
var _el$ = _tmpl$48(), _el$2 = _el$.firstChild;
|
|
2941
3615
|
spread(_el$, mergeProps({
|
|
2942
3616
|
get ["class"]() {
|
|
2943
3617
|
return style("collapsible", props.class);
|
|
@@ -2957,7 +3631,7 @@ var Collapsible = (props) => {
|
|
|
2957
3631
|
return _el$;
|
|
2958
3632
|
})();
|
|
2959
3633
|
};
|
|
2960
|
-
var _tmpl$
|
|
3634
|
+
var _tmpl$49 = /* @__PURE__ */ template(`<label><input type=checkbox class=nt-sr-only><div>`);
|
|
2961
3635
|
var Switch = (props) => {
|
|
2962
3636
|
const style = useStyle();
|
|
2963
3637
|
const handleChange = () => {
|
|
@@ -2983,7 +3657,7 @@ var Switch = (props) => {
|
|
|
2983
3657
|
const state = () => props.state;
|
|
2984
3658
|
const disabled = () => props.disabled;
|
|
2985
3659
|
return (() => {
|
|
2986
|
-
var _el$ = _tmpl$
|
|
3660
|
+
var _el$ = _tmpl$49(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
|
|
2987
3661
|
_el$2.addEventListener("change", handleChange);
|
|
2988
3662
|
effect((_p$) => {
|
|
2989
3663
|
var _v$ = style("channelSwitch", cn("nt-relative nt-inline-flex nt-cursor-pointer nt-items-center", {
|
|
@@ -3009,7 +3683,7 @@ var Switch = (props) => {
|
|
|
3009
3683
|
};
|
|
3010
3684
|
|
|
3011
3685
|
// src/ui/components/elements/Preferences/ChannelRow.tsx
|
|
3012
|
-
var _tmpl$
|
|
3686
|
+
var _tmpl$50 = /* @__PURE__ */ template(`<div><div><div></div><span></span></div><div>`);
|
|
3013
3687
|
var ChannelRow = (props) => {
|
|
3014
3688
|
const style = useStyle();
|
|
3015
3689
|
const updatePreference = (enabled) => __async(void 0, null, function* () {
|
|
@@ -3023,7 +3697,7 @@ var ChannelRow = (props) => {
|
|
|
3023
3697
|
const state = () => props.channel.state;
|
|
3024
3698
|
const channel = () => props.channel.channel;
|
|
3025
3699
|
return (() => {
|
|
3026
|
-
var _el$ = _tmpl$
|
|
3700
|
+
var _el$ = _tmpl$50(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling;
|
|
3027
3701
|
insert(_el$3, createComponent(ChannelIcon, {
|
|
3028
3702
|
appearanceKey: "channel__icon",
|
|
3029
3703
|
get channel() {
|
|
@@ -3146,8 +3820,8 @@ var getLabel = (channel) => {
|
|
|
3146
3820
|
};
|
|
3147
3821
|
|
|
3148
3822
|
// src/ui/components/elements/Preferences/PreferencesRow.tsx
|
|
3149
|
-
var _tmpl$
|
|
3150
|
-
var _tmpl$
|
|
3823
|
+
var _tmpl$51 = /* @__PURE__ */ template(`<div>`);
|
|
3824
|
+
var _tmpl$213 = /* @__PURE__ */ template(`<div><div><div><div><span></span></div></div><span>`);
|
|
3151
3825
|
var _tmpl$310 = /* @__PURE__ */ template(`<span>`);
|
|
3152
3826
|
var iconKeyToComponentMap2 = {
|
|
3153
3827
|
cogs: Cogs,
|
|
@@ -3181,7 +3855,7 @@ var PreferencesRow = (props) => {
|
|
|
3181
3855
|
return channels().length > 0;
|
|
3182
3856
|
},
|
|
3183
3857
|
get children() {
|
|
3184
|
-
var _el$ = _tmpl$
|
|
3858
|
+
var _el$ = _tmpl$213(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$3.nextSibling;
|
|
3185
3859
|
_el$2.$$click = () => {
|
|
3186
3860
|
setIsOpenChannels((prev) => !prev);
|
|
3187
3861
|
};
|
|
@@ -3229,7 +3903,7 @@ var PreferencesRow = (props) => {
|
|
|
3229
3903
|
return isOpenChannels();
|
|
3230
3904
|
},
|
|
3231
3905
|
get children() {
|
|
3232
|
-
var _el$7 = _tmpl$
|
|
3906
|
+
var _el$7 = _tmpl$51();
|
|
3233
3907
|
insert(_el$7, createComponent(Index, {
|
|
3234
3908
|
get each() {
|
|
3235
3909
|
return channels();
|
|
@@ -3302,19 +3976,19 @@ var WorkflowDescription = (props) => {
|
|
|
3302
3976
|
return channels.map((c, index) => [c, memo(() => index < channels.length - 1 && ", ")]);
|
|
3303
3977
|
};
|
|
3304
3978
|
return (() => {
|
|
3305
|
-
var _el$9 = _tmpl$
|
|
3979
|
+
var _el$9 = _tmpl$51();
|
|
3306
3980
|
insert(_el$9, channelNames);
|
|
3307
3981
|
effect(() => className(_el$9, style(props.appearanceKey, cn("nt-text-sm nt-text-foreground-alpha-600 nt-text-start", props.class))));
|
|
3308
3982
|
return _el$9;
|
|
3309
3983
|
})();
|
|
3310
3984
|
};
|
|
3311
3985
|
delegateEvents(["click"]);
|
|
3312
|
-
var _tmpl$
|
|
3313
|
-
var _tmpl$
|
|
3986
|
+
var _tmpl$53 = /* @__PURE__ */ template(`<div>`);
|
|
3987
|
+
var _tmpl$214 = /* @__PURE__ */ template(`<div><div></div><div>`);
|
|
3314
3988
|
var SkeletonText = (props) => {
|
|
3315
3989
|
const style = useStyle();
|
|
3316
3990
|
return (() => {
|
|
3317
|
-
var _el$ = _tmpl$
|
|
3991
|
+
var _el$ = _tmpl$53();
|
|
3318
3992
|
effect(() => className(_el$, style(props.appearanceKey, cn("nt-w-full nt-h-3 nt-rounded nt-bg-gradient-to-r nt-from-foreground-alpha-50 nt-to-transparent", props.class))));
|
|
3319
3993
|
return _el$;
|
|
3320
3994
|
})();
|
|
@@ -3322,7 +3996,7 @@ var SkeletonText = (props) => {
|
|
|
3322
3996
|
var SkeletonAvatar = (props) => {
|
|
3323
3997
|
const style = useStyle();
|
|
3324
3998
|
return (() => {
|
|
3325
|
-
var _el$2 = _tmpl$
|
|
3999
|
+
var _el$2 = _tmpl$53();
|
|
3326
4000
|
effect(() => className(_el$2, style(props.appearanceKey, cn("nt-size-8 nt-rounded-lg nt-bg-gradient-to-r nt-from-foreground-alpha-50 nt-to-transparent", props.class))));
|
|
3327
4001
|
return _el$2;
|
|
3328
4002
|
})();
|
|
@@ -3330,7 +4004,7 @@ var SkeletonAvatar = (props) => {
|
|
|
3330
4004
|
var SkeletonSwitch = (props) => {
|
|
3331
4005
|
const style = useStyle();
|
|
3332
4006
|
return (() => {
|
|
3333
|
-
var _el$3 = _tmpl$
|
|
4007
|
+
var _el$3 = _tmpl$214(), _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
|
|
3334
4008
|
effect((_p$) => {
|
|
3335
4009
|
var _v$ = style(props.appearanceKey, cn("nt-relative nt-inline-flex nt-items-center", props.class)), _v$2 = style(props.appearanceKey, "nt-h-4 nt-w-7 nt-rounded-full nt-bg-gradient-to-r nt-from-foreground-alpha-50 nt-to-transparent"), _v$3 = style(props.thumbAppearanceKey, "nt-absolute nt-top-0.5 nt-left-0.5 nt-size-3 nt-rounded-full nt-bg-background nt-shadow");
|
|
3336
4010
|
_v$ !== _p$.e && className(_el$3, _p$.e = _v$);
|
|
@@ -3347,7 +4021,7 @@ var SkeletonSwitch = (props) => {
|
|
|
3347
4021
|
};
|
|
3348
4022
|
|
|
3349
4023
|
// src/ui/components/elements/Preferences/PreferencesListSkeleton.tsx
|
|
3350
|
-
var _tmpl$
|
|
4024
|
+
var _tmpl$54 = /* @__PURE__ */ template(`<div>`);
|
|
3351
4025
|
var channelIcons = [InApp, Email, Sms, Push, Chat];
|
|
3352
4026
|
var PreferencesListSkeleton = (props) => {
|
|
3353
4027
|
const style = useStyle();
|
|
@@ -3355,7 +4029,7 @@ var PreferencesListSkeleton = (props) => {
|
|
|
3355
4029
|
t
|
|
3356
4030
|
} = useLocalization();
|
|
3357
4031
|
return (() => {
|
|
3358
|
-
var _el$ = _tmpl$
|
|
4032
|
+
var _el$ = _tmpl$54();
|
|
3359
4033
|
insert(_el$, createComponent(Motion.div, {
|
|
3360
4034
|
get animate() {
|
|
3361
4035
|
return {
|
|
@@ -3397,7 +4071,7 @@ var PreferencesListSkeleton = (props) => {
|
|
|
3397
4071
|
return style("preferencesList__skeletonIcon", "nt-size-8 nt-p-2 nt-rounded-lg nt-bg-neutral-alpha-100");
|
|
3398
4072
|
}
|
|
3399
4073
|
}), (() => {
|
|
3400
|
-
var _el$3 = _tmpl$
|
|
4074
|
+
var _el$3 = _tmpl$54();
|
|
3401
4075
|
insert(_el$3, createComponent(SkeletonText, {
|
|
3402
4076
|
appearanceKey: "notificationList__skeletonText",
|
|
3403
4077
|
"class": "nt-h-2 nt-w-1/3 nt-bg-neutral-alpha-50 nt-rounded"
|
|
@@ -3415,7 +4089,7 @@ var PreferencesListSkeleton = (props) => {
|
|
|
3415
4089
|
}
|
|
3416
4090
|
});
|
|
3417
4091
|
})), (() => {
|
|
3418
|
-
var _el$2 = _tmpl$
|
|
4092
|
+
var _el$2 = _tmpl$54();
|
|
3419
4093
|
effect(() => className(_el$2, style("notificationListEmptyNoticeOverlay", "nt-absolute nt-size-full nt-z-10 nt-inset-0 nt-bg-gradient-to-b nt-from-transparent nt-to-background")));
|
|
3420
4094
|
return _el$2;
|
|
3421
4095
|
})()];
|
|
@@ -3501,26 +4175,26 @@ var DefaultPreferences = (props) => {
|
|
|
3501
4175
|
}
|
|
3502
4176
|
});
|
|
3503
4177
|
};
|
|
3504
|
-
var _tmpl$
|
|
4178
|
+
var _tmpl$55 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 14 14"><path fill=currentColor d="M5.95 1.75c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H4.9v1.05h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V7H4.9v3.15h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V11.2h-3.15a.525.525 0 0 1-.525-.525V4.9H2.8a.525.525 0 0 1-.525-.525v-2.1c0-.29.235-.525.525-.525h3.15Zm4.725 8.4h-2.1v1.05h2.1v-1.05Zm0-4.2h-2.1V7h2.1V5.95ZM5.425 2.8h-2.1v1.05h2.1V2.8Z"></path><path fill=url(#a) d="M5.95 1.75c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H4.9v1.05h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V7H4.9v3.15h2.625v-.525c0-.29.235-.525.525-.525h3.15c.29 0 .525.235.525.525v2.1c0 .29-.235.525-.525.525H8.05a.525.525 0 0 1-.525-.525V11.2h-3.15a.525.525 0 0 1-.525-.525V4.9H2.8a.525.525 0 0 1-.525-.525v-2.1c0-.29.235-.525.525-.525h3.15Zm4.725 8.4h-2.1v1.05h2.1v-1.05Zm0-4.2h-2.1V7h2.1V5.95ZM5.425 2.8h-2.1v1.05h2.1V2.8Z"></path><defs><linearGradient id=a x1=2.275 x2=11.725 y1=6.982 y2=7.018 gradientUnits=userSpaceOnUse><stop stop-color=currentColor></stop><stop offset=1 stop-color=currentColor>`);
|
|
3505
4179
|
var NodeTree = (props) => {
|
|
3506
4180
|
return (() => {
|
|
3507
|
-
var _el$ = _tmpl$
|
|
4181
|
+
var _el$ = _tmpl$55();
|
|
3508
4182
|
spread(_el$, props, true, true);
|
|
3509
4183
|
return _el$;
|
|
3510
4184
|
})();
|
|
3511
4185
|
};
|
|
3512
|
-
var _tmpl$
|
|
4186
|
+
var _tmpl$56 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg fill=none viewBox="0 0 16 16"><path fill=currentColor d="M8 13A5 5 0 1 1 8 3a5 5 0 0 1 0 10Zm0-1a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm.5-4.75V9.5H9v1H7v-1h.5V8.25H7v-1h1.5ZM8.75 6a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z">`);
|
|
3513
4187
|
var Info = (props) => {
|
|
3514
4188
|
return (() => {
|
|
3515
|
-
var _el$ = _tmpl$
|
|
4189
|
+
var _el$ = _tmpl$56();
|
|
3516
4190
|
spread(_el$, props, true, true);
|
|
3517
4191
|
return _el$;
|
|
3518
4192
|
})();
|
|
3519
4193
|
};
|
|
3520
4194
|
|
|
3521
4195
|
// src/ui/components/elements/Preferences/GroupedPreferencesRow.tsx
|
|
3522
|
-
var _tmpl$
|
|
3523
|
-
var _tmpl$
|
|
4196
|
+
var _tmpl$57 = /* @__PURE__ */ template(`<div><div><span data-localization=preferences.group.info></span></div><div>`);
|
|
4197
|
+
var _tmpl$215 = /* @__PURE__ */ template(`<div><div><div><span></span></div><div><span>`);
|
|
3524
4198
|
var GroupedPreferencesRow = (props) => {
|
|
3525
4199
|
const style = useStyle();
|
|
3526
4200
|
const {
|
|
@@ -3585,7 +4259,7 @@ var GroupedPreferencesRow = (props) => {
|
|
|
3585
4259
|
return Object.keys(uniqueChannels()).length > 0;
|
|
3586
4260
|
},
|
|
3587
4261
|
get children() {
|
|
3588
|
-
var _el$ = _tmpl$
|
|
4262
|
+
var _el$ = _tmpl$215(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild;
|
|
3589
4263
|
_el$2.$$click = () => {
|
|
3590
4264
|
setIsOpened((prev) => !prev);
|
|
3591
4265
|
};
|
|
@@ -3619,7 +4293,7 @@ var GroupedPreferencesRow = (props) => {
|
|
|
3619
4293
|
return isOpened();
|
|
3620
4294
|
},
|
|
3621
4295
|
get children() {
|
|
3622
|
-
var _el$7 = _tmpl$
|
|
4296
|
+
var _el$7 = _tmpl$57(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$10 = _el$8.nextSibling;
|
|
3623
4297
|
insert(_el$8, createComponent(Index, {
|
|
3624
4298
|
get each() {
|
|
3625
4299
|
return Object.keys(uniqueChannels());
|
|
@@ -3743,7 +4417,7 @@ var GroupedPreferences = (props) => {
|
|
|
3743
4417
|
};
|
|
3744
4418
|
|
|
3745
4419
|
// src/ui/components/elements/Preferences/Preferences.tsx
|
|
3746
|
-
var _tmpl$
|
|
4420
|
+
var _tmpl$58 = /* @__PURE__ */ template(`<div>`);
|
|
3747
4421
|
var Preferences = () => {
|
|
3748
4422
|
var _a;
|
|
3749
4423
|
const novu = useNovu();
|
|
@@ -3830,7 +4504,7 @@ var Preferences = () => {
|
|
|
3830
4504
|
})) != null ? _c : [];
|
|
3831
4505
|
});
|
|
3832
4506
|
return (() => {
|
|
3833
|
-
var _el$ = _tmpl$
|
|
4507
|
+
var _el$ = _tmpl$58();
|
|
3834
4508
|
insert(_el$, createComponent(PreferencesRow, {
|
|
3835
4509
|
iconKey: "cogs",
|
|
3836
4510
|
get preference() {
|
|
@@ -3869,648 +4543,188 @@ var Preferences = () => {
|
|
|
3869
4543
|
});
|
|
3870
4544
|
},
|
|
3871
4545
|
get children() {
|
|
3872
|
-
return createComponent(GroupedPreferences, {
|
|
3873
|
-
get groups() {
|
|
3874
|
-
return groupedPreferences();
|
|
3875
|
-
},
|
|
3876
|
-
get loading() {
|
|
3877
|
-
return loading();
|
|
3878
|
-
},
|
|
3879
|
-
updatePreference,
|
|
3880
|
-
bulkUpdatePreferences
|
|
3881
|
-
});
|
|
3882
|
-
}
|
|
3883
|
-
}), null);
|
|
3884
|
-
effect(() => className(_el$, style("preferencesContainer", "nt-px-3 nt-py-4 nt-flex nt-flex-col nt-gap-1 nt-overflow-y-auto nt-h-full nt-pr-0 [scrollbar-gutter:stable]")));
|
|
3885
|
-
return _el$;
|
|
3886
|
-
})();
|
|
3887
|
-
};
|
|
3888
|
-
var _tmpl$54 = /* @__PURE__ */ template(`<div><div data-localization=preferences.title>`);
|
|
3889
|
-
var PreferencesHeader = (props) => {
|
|
3890
|
-
const style = useStyle();
|
|
3891
|
-
const {
|
|
3892
|
-
t
|
|
3893
|
-
} = useLocalization();
|
|
3894
|
-
const arrowLeftIconClass = style("preferencesHeader__back__button__icon", "nt-size-4", {
|
|
3895
|
-
iconKey: "arrowLeft"
|
|
3896
|
-
});
|
|
3897
|
-
return (() => {
|
|
3898
|
-
var _el$ = _tmpl$54(), _el$2 = _el$.firstChild;
|
|
3899
|
-
insert(_el$, createComponent(Show, {
|
|
3900
|
-
get when() {
|
|
3901
|
-
return props.navigateToNotifications;
|
|
3902
|
-
},
|
|
3903
|
-
children: (navigateToNotifications) => createComponent(Button, {
|
|
3904
|
-
appearanceKey: "preferencesHeader__back__button",
|
|
3905
|
-
"class": "nt-text-foreground-alpha-600",
|
|
3906
|
-
variant: "unstyled",
|
|
3907
|
-
size: "none",
|
|
3908
|
-
get onClick() {
|
|
3909
|
-
return navigateToNotifications();
|
|
3910
|
-
},
|
|
3911
|
-
get children() {
|
|
3912
|
-
return createComponent(IconRendererWrapper, {
|
|
3913
|
-
iconKey: "arrowLeft",
|
|
3914
|
-
"class": arrowLeftIconClass,
|
|
3915
|
-
get fallback() {
|
|
3916
|
-
return createComponent(ArrowLeft, {
|
|
3917
|
-
"class": arrowLeftIconClass
|
|
3918
|
-
});
|
|
3919
|
-
}
|
|
3920
|
-
});
|
|
3921
|
-
}
|
|
3922
|
-
})
|
|
3923
|
-
}), _el$2);
|
|
3924
|
-
insert(_el$2, () => t("preferences.title"));
|
|
3925
|
-
effect((_p$) => {
|
|
3926
|
-
var _v$ = style("preferencesHeader", "nt-flex nt-bg-neutral-alpha-25 nt-shrink-0 nt-border-b nt-border-border nt-items-center nt-py-3.5 nt-px-4 nt-gap-2"), _v$2 = style("preferencesHeader__title", "nt-text-base nt-font-medium");
|
|
3927
|
-
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
3928
|
-
_v$2 !== _p$.t && className(_el$2, _p$.t = _v$2);
|
|
3929
|
-
return _p$;
|
|
3930
|
-
}, {
|
|
3931
|
-
e: void 0,
|
|
3932
|
-
t: void 0
|
|
3933
|
-
});
|
|
3934
|
-
return _el$;
|
|
3935
|
-
})();
|
|
3936
|
-
};
|
|
3937
|
-
var useTabsDropdown = ({ tabs }) => {
|
|
3938
|
-
const [tabsList, setTabsList] = createSignal();
|
|
3939
|
-
const [visibleTabs, setVisibleTabs] = createSignal([]);
|
|
3940
|
-
const [dropdownTabs, setDropdownTabs] = createSignal([]);
|
|
3941
|
-
onMount(() => {
|
|
3942
|
-
const tabsListEl = tabsList();
|
|
3943
|
-
if (!tabsListEl) return;
|
|
3944
|
-
const tabsElements = [...tabsListEl.querySelectorAll('[role="tab"]')];
|
|
3945
|
-
const observer = new IntersectionObserver(
|
|
3946
|
-
(entries) => {
|
|
3947
|
-
let visibleTabIds = entries.filter((entry) => entry.isIntersecting && entry.intersectionRatio === 1).map((entry) => entry.target.id);
|
|
3948
|
-
if (tabsElements.length === visibleTabIds.length) {
|
|
3949
|
-
setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
|
|
3950
|
-
observer.disconnect();
|
|
3951
|
-
return;
|
|
3952
|
-
}
|
|
3953
|
-
visibleTabIds = visibleTabIds.slice(0, -1);
|
|
3954
|
-
setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
|
|
3955
|
-
setDropdownTabs(tabs.filter((tab) => !visibleTabIds.includes(tab.label)));
|
|
3956
|
-
observer.disconnect();
|
|
3957
|
-
},
|
|
3958
|
-
{ root: tabsListEl }
|
|
3959
|
-
);
|
|
3960
|
-
for (const tabElement of tabsElements) {
|
|
3961
|
-
observer.observe(tabElement);
|
|
3962
|
-
}
|
|
3963
|
-
});
|
|
3964
|
-
return { dropdownTabs, setTabsList, visibleTabs };
|
|
3965
|
-
};
|
|
3966
|
-
var _tmpl$55 = /* @__PURE__ */ template(`<strong>`);
|
|
3967
|
-
var _tmpl$215 = /* @__PURE__ */ template(`<p>`);
|
|
3968
|
-
var Bold = (props) => {
|
|
3969
|
-
const style = useStyle();
|
|
3970
|
-
return (() => {
|
|
3971
|
-
var _el$ = _tmpl$55();
|
|
3972
|
-
insert(_el$, () => props.children);
|
|
3973
|
-
effect(() => className(_el$, style(props.appearanceKey || "strong", "nt-font-semibold")));
|
|
3974
|
-
return _el$;
|
|
3975
|
-
})();
|
|
3976
|
-
};
|
|
3977
|
-
var Text = (props) => props.children;
|
|
3978
|
-
var Markdown = (props) => {
|
|
3979
|
-
const [local, rest] = splitProps(props, ["class", "children", "appearanceKey", "strongAppearanceKey"]);
|
|
3980
|
-
const style = useStyle();
|
|
3981
|
-
const tokens = createMemo(() => parseMarkdownIntoTokens(local.children));
|
|
3982
|
-
return (() => {
|
|
3983
|
-
var _el$2 = _tmpl$215();
|
|
3984
|
-
spread(_el$2, mergeProps({
|
|
3985
|
-
get ["class"]() {
|
|
3986
|
-
return style(local.appearanceKey, cn(local.class));
|
|
3987
|
-
}
|
|
3988
|
-
}, rest), false, true);
|
|
3989
|
-
insert(_el$2, createComponent(For, {
|
|
3990
|
-
get each() {
|
|
3991
|
-
return tokens();
|
|
3992
|
-
},
|
|
3993
|
-
children: (token) => {
|
|
3994
|
-
if (token.type === "bold") {
|
|
3995
|
-
return createComponent(Bold, {
|
|
3996
|
-
get appearanceKey() {
|
|
3997
|
-
return local.strongAppearanceKey;
|
|
3998
|
-
},
|
|
3999
|
-
get children() {
|
|
4000
|
-
return token.content;
|
|
4001
|
-
}
|
|
4002
|
-
});
|
|
4003
|
-
} else {
|
|
4004
|
-
return createComponent(Text, {
|
|
4005
|
-
get children() {
|
|
4006
|
-
return token.content;
|
|
4007
|
-
}
|
|
4008
|
-
});
|
|
4009
|
-
}
|
|
4010
|
-
}
|
|
4011
|
-
}));
|
|
4012
|
-
return _el$2;
|
|
4013
|
-
})();
|
|
4014
|
-
};
|
|
4015
|
-
var Markdown_default = Markdown;
|
|
4016
|
-
var _tmpl$56 = /* @__PURE__ */ template(`<span>`);
|
|
4017
|
-
var badgeVariants = cva(cn("nt-inline-flex nt-flex-row nt-gap-1 nt-items-center"), {
|
|
4018
|
-
variants: {
|
|
4019
|
-
variant: {
|
|
4020
|
-
secondary: "nt-bg-neutral-alpha-50"
|
|
4021
|
-
},
|
|
4022
|
-
size: {
|
|
4023
|
-
default: "nt-px-1 nt-py-px nt-rounded-sm nt-text-xs nt-px-1"
|
|
4024
|
-
}
|
|
4025
|
-
},
|
|
4026
|
-
defaultVariants: {
|
|
4027
|
-
variant: "secondary",
|
|
4028
|
-
size: "default"
|
|
4029
|
-
}
|
|
4030
|
-
});
|
|
4031
|
-
var Badge = (props) => {
|
|
4032
|
-
const [local, rest] = splitProps(props, ["class", "appearanceKey"]);
|
|
4033
|
-
const style = useStyle();
|
|
4034
|
-
return (() => {
|
|
4035
|
-
var _el$ = _tmpl$56();
|
|
4036
|
-
spread(_el$, mergeProps({
|
|
4037
|
-
get ["data-variant"]() {
|
|
4038
|
-
return props.variant;
|
|
4039
|
-
},
|
|
4040
|
-
get ["data-size"]() {
|
|
4041
|
-
return props.size;
|
|
4042
|
-
},
|
|
4043
|
-
get ["class"]() {
|
|
4044
|
-
return style(local.appearanceKey || "badge", cn(badgeVariants({
|
|
4045
|
-
variant: props.variant,
|
|
4046
|
-
size: props.size
|
|
4047
|
-
}), local.class));
|
|
4048
|
-
}
|
|
4049
|
-
}, rest), false, false);
|
|
4050
|
-
return _el$;
|
|
4051
|
-
})();
|
|
4052
|
-
};
|
|
4053
|
-
var TooltipContext = createContext(void 0);
|
|
4054
|
-
function TooltipRoot(props) {
|
|
4055
|
-
const [reference, setReference] = createSignal(null);
|
|
4056
|
-
const [floating, setFloating] = createSignal(null);
|
|
4057
|
-
const position = useFloating(reference, floating, {
|
|
4058
|
-
placement: props.placement || "top",
|
|
4059
|
-
strategy: "fixed",
|
|
4060
|
-
whileElementsMounted: autoUpdate,
|
|
4061
|
-
middleware: [offset(10), flip({
|
|
4062
|
-
fallbackPlacements: props.fallbackPlacements || ["bottom"]
|
|
4063
|
-
}), shift()]
|
|
4064
|
-
});
|
|
4065
|
-
const [isOpen, setIsOpen] = useUncontrolledState({
|
|
4066
|
-
value: props.open,
|
|
4067
|
-
fallbackValue: false
|
|
4068
|
-
});
|
|
4069
|
-
return createComponent(TooltipContext.Provider, {
|
|
4070
|
-
value: {
|
|
4071
|
-
reference,
|
|
4072
|
-
setReference,
|
|
4073
|
-
floating,
|
|
4074
|
-
setFloating,
|
|
4075
|
-
open: isOpen,
|
|
4076
|
-
setOpen: setIsOpen,
|
|
4077
|
-
floatingStyles: () => {
|
|
4078
|
-
var _a, _b;
|
|
4079
|
-
return {
|
|
4080
|
-
position: position.strategy,
|
|
4081
|
-
top: `${(_a = position.y) != null ? _a : 0}px`,
|
|
4082
|
-
left: `${(_b = position.x) != null ? _b : 0}px`
|
|
4083
|
-
};
|
|
4084
|
-
}
|
|
4085
|
-
},
|
|
4086
|
-
get children() {
|
|
4087
|
-
return props.children;
|
|
4088
|
-
}
|
|
4089
|
-
});
|
|
4090
|
-
}
|
|
4091
|
-
function useTooltip() {
|
|
4092
|
-
const context = useContext(TooltipContext);
|
|
4093
|
-
if (!context) {
|
|
4094
|
-
throw new Error("useTooltip must be used within Tooltip.Root component");
|
|
4095
|
-
}
|
|
4096
|
-
return context;
|
|
4097
|
-
}
|
|
4098
|
-
|
|
4099
|
-
// src/ui/components/primitives/Tooltip/TooltipContent.tsx
|
|
4100
|
-
var _tmpl$57 = /* @__PURE__ */ template(`<div>`);
|
|
4101
|
-
var tooltipContentVariants = () => "nt-bg-foreground nt-p-2 nt-shadow-tooltip nt-rounded-lg nt-text-background nt-text-xs";
|
|
4102
|
-
var TooltipContentBody = (props) => {
|
|
4103
|
-
const {
|
|
4104
|
-
open,
|
|
4105
|
-
setFloating,
|
|
4106
|
-
floating,
|
|
4107
|
-
floatingStyles
|
|
4108
|
-
} = useTooltip();
|
|
4109
|
-
const {
|
|
4110
|
-
setActive,
|
|
4111
|
-
removeActive
|
|
4112
|
-
} = useFocusManager();
|
|
4113
|
-
const [local, rest] = splitProps(props, ["class", "appearanceKey", "style"]);
|
|
4114
|
-
const style = useStyle();
|
|
4115
|
-
onMount(() => {
|
|
4116
|
-
const floatingEl = floating();
|
|
4117
|
-
setActive(floatingEl);
|
|
4118
|
-
onCleanup(() => {
|
|
4119
|
-
removeActive(floatingEl);
|
|
4120
|
-
});
|
|
4121
|
-
});
|
|
4122
|
-
return (() => {
|
|
4123
|
-
var _el$ = _tmpl$57();
|
|
4124
|
-
use(setFloating, _el$);
|
|
4125
|
-
spread(_el$, mergeProps({
|
|
4126
|
-
get ["class"]() {
|
|
4127
|
-
return memo(() => !!local.class)() ? local.class : style(local.appearanceKey || "tooltipContent", tooltipContentVariants());
|
|
4128
|
-
},
|
|
4129
|
-
get style() {
|
|
4130
|
-
return __spreadProps(__spreadValues({}, floatingStyles()), {
|
|
4131
|
-
"z-index": 99999
|
|
4546
|
+
return createComponent(GroupedPreferences, {
|
|
4547
|
+
get groups() {
|
|
4548
|
+
return groupedPreferences();
|
|
4549
|
+
},
|
|
4550
|
+
get loading() {
|
|
4551
|
+
return loading();
|
|
4552
|
+
},
|
|
4553
|
+
updatePreference,
|
|
4554
|
+
bulkUpdatePreferences
|
|
4132
4555
|
});
|
|
4133
|
-
},
|
|
4134
|
-
get ["data-open"]() {
|
|
4135
|
-
return open();
|
|
4136
4556
|
}
|
|
4137
|
-
}
|
|
4557
|
+
}), null);
|
|
4558
|
+
effect(() => className(_el$, style("preferencesContainer", "nt-px-3 nt-py-4 nt-flex nt-flex-col nt-gap-1 nt-overflow-y-auto nt-h-full nt-pr-0 [scrollbar-gutter:stable]")));
|
|
4138
4559
|
return _el$;
|
|
4139
4560
|
})();
|
|
4140
4561
|
};
|
|
4141
|
-
var
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
} = useTooltip();
|
|
4562
|
+
var _tmpl$59 = /* @__PURE__ */ template(`<div><div data-localization=preferences.title>`);
|
|
4563
|
+
var PreferencesHeader = (props) => {
|
|
4564
|
+
const style = useStyle();
|
|
4145
4565
|
const {
|
|
4146
|
-
|
|
4147
|
-
} =
|
|
4148
|
-
const
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4566
|
+
t
|
|
4567
|
+
} = useLocalization();
|
|
4568
|
+
const arrowLeftIconClass = style("preferencesHeader__back__button__icon", "nt-size-4", {
|
|
4569
|
+
iconKey: "arrowLeft"
|
|
4570
|
+
});
|
|
4571
|
+
return (() => {
|
|
4572
|
+
var _el$ = _tmpl$59(), _el$2 = _el$.firstChild;
|
|
4573
|
+
insert(_el$, createComponent(Show, {
|
|
4574
|
+
get when() {
|
|
4575
|
+
return props.navigateToNotifications;
|
|
4576
|
+
},
|
|
4577
|
+
children: (navigateToNotifications) => createComponent(Button, {
|
|
4578
|
+
appearanceKey: "preferencesHeader__back__button",
|
|
4579
|
+
"class": "nt-text-foreground-alpha-600",
|
|
4580
|
+
variant: "unstyled",
|
|
4581
|
+
size: "none",
|
|
4582
|
+
get onClick() {
|
|
4583
|
+
return navigateToNotifications();
|
|
4160
4584
|
},
|
|
4161
4585
|
get children() {
|
|
4162
|
-
return createComponent(
|
|
4163
|
-
|
|
4164
|
-
|
|
4586
|
+
return createComponent(IconRendererWrapper, {
|
|
4587
|
+
iconKey: "arrowLeft",
|
|
4588
|
+
"class": arrowLeftIconClass,
|
|
4589
|
+
get fallback() {
|
|
4590
|
+
return createComponent(ArrowLeft, {
|
|
4591
|
+
"class": arrowLeftIconClass
|
|
4592
|
+
});
|
|
4165
4593
|
}
|
|
4166
4594
|
});
|
|
4167
4595
|
}
|
|
4168
|
-
})
|
|
4169
|
-
}
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
var
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
const [local, rest] = splitProps(props, ["appearanceKey", "asChild", "onClick", "onMouseEnter", "onMouseLeave", "ref"]);
|
|
4180
|
-
const handleMouseEnter = (e) => {
|
|
4181
|
-
if (typeof local.onMouseEnter === "function") {
|
|
4182
|
-
local.onMouseEnter(e);
|
|
4183
|
-
}
|
|
4184
|
-
setOpen(true);
|
|
4185
|
-
};
|
|
4186
|
-
const ref = createMemo(() => local.ref ? mergeRefs(setReference, local.ref) : setReference);
|
|
4187
|
-
const handleMouseLeave = (e) => {
|
|
4188
|
-
if (typeof local.onMouseLeave === "function") {
|
|
4189
|
-
local.onMouseLeave(e);
|
|
4190
|
-
}
|
|
4191
|
-
setOpen(false);
|
|
4192
|
-
};
|
|
4193
|
-
if (local.asChild) {
|
|
4194
|
-
return createComponent(Dynamic, mergeProps({
|
|
4195
|
-
get component() {
|
|
4196
|
-
return local.asChild;
|
|
4197
|
-
},
|
|
4198
|
-
ref(r$) {
|
|
4199
|
-
var _ref$ = ref();
|
|
4200
|
-
typeof _ref$ === "function" && _ref$(r$);
|
|
4201
|
-
},
|
|
4202
|
-
onMouseEnter: handleMouseEnter,
|
|
4203
|
-
onMouseLeave: handleMouseLeave
|
|
4204
|
-
}, rest));
|
|
4205
|
-
}
|
|
4206
|
-
return (() => {
|
|
4207
|
-
var _el$ = _tmpl$58();
|
|
4208
|
-
_el$.addEventListener("mouseleave", () => {
|
|
4209
|
-
setOpen(false);
|
|
4210
|
-
});
|
|
4211
|
-
_el$.addEventListener("mouseenter", () => {
|
|
4212
|
-
setOpen(true);
|
|
4596
|
+
})
|
|
4597
|
+
}), _el$2);
|
|
4598
|
+
insert(_el$2, () => t("preferences.title"));
|
|
4599
|
+
effect((_p$) => {
|
|
4600
|
+
var _v$ = style("preferencesHeader", "nt-flex nt-bg-neutral-alpha-25 nt-shrink-0 nt-border-b nt-border-border nt-items-center nt-py-3.5 nt-px-4 nt-gap-2"), _v$2 = style("preferencesHeader__title", "nt-text-base nt-font-medium");
|
|
4601
|
+
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
4602
|
+
_v$2 !== _p$.t && className(_el$2, _p$.t = _v$2);
|
|
4603
|
+
return _p$;
|
|
4604
|
+
}, {
|
|
4605
|
+
e: void 0,
|
|
4606
|
+
t: void 0
|
|
4213
4607
|
});
|
|
4214
|
-
var _ref$2 = ref();
|
|
4215
|
-
typeof _ref$2 === "function" && use(_ref$2, _el$);
|
|
4216
|
-
spread(_el$, mergeProps({
|
|
4217
|
-
get ["class"]() {
|
|
4218
|
-
return style(local.appearanceKey || "tooltipTrigger");
|
|
4219
|
-
}
|
|
4220
|
-
}, rest), false, true);
|
|
4221
|
-
insert(_el$, () => props.children);
|
|
4222
4608
|
return _el$;
|
|
4223
4609
|
})();
|
|
4224
4610
|
};
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
var DatePickerContext = createContext({
|
|
4241
|
-
currentDate: () => /* @__PURE__ */ new Date(),
|
|
4242
|
-
setCurrentDate: () => {
|
|
4243
|
-
},
|
|
4244
|
-
viewMonth: () => /* @__PURE__ */ new Date(),
|
|
4245
|
-
setViewMonth: () => {
|
|
4246
|
-
},
|
|
4247
|
-
selectedDate: () => null,
|
|
4248
|
-
setSelectedDate: () => {
|
|
4249
|
-
},
|
|
4250
|
-
maxDays: () => 0
|
|
4251
|
-
});
|
|
4252
|
-
var useDatePicker = () => useContext(DatePickerContext);
|
|
4253
|
-
var DatePicker = (props) => {
|
|
4254
|
-
const [local, rest] = splitProps(props, ["children", "value", "onDateChange", "class", "maxDays"]);
|
|
4255
|
-
const style = useStyle();
|
|
4256
|
-
const today = /* @__PURE__ */ new Date();
|
|
4257
|
-
today.setHours(0, 0, 0, 0);
|
|
4258
|
-
const [currentDate, setCurrentDate] = createSignal(today);
|
|
4259
|
-
const [viewMonth, setViewMonth] = createSignal(today);
|
|
4260
|
-
const [selectedDate, setSelectedDate] = createSignal(local.value ? new Date(local.value) : null);
|
|
4261
|
-
const handleDateSelect = (date) => {
|
|
4262
|
-
setSelectedDate(date);
|
|
4263
|
-
if (local.onDateChange) {
|
|
4264
|
-
local.onDateChange(date);
|
|
4265
|
-
}
|
|
4266
|
-
};
|
|
4267
|
-
return createComponent(DatePickerContext.Provider, {
|
|
4268
|
-
value: {
|
|
4269
|
-
currentDate,
|
|
4270
|
-
setCurrentDate,
|
|
4271
|
-
viewMonth,
|
|
4272
|
-
setViewMonth,
|
|
4273
|
-
selectedDate,
|
|
4274
|
-
setSelectedDate: handleDateSelect,
|
|
4275
|
-
maxDays: () => props.maxDays
|
|
4276
|
-
},
|
|
4277
|
-
get children() {
|
|
4278
|
-
var _el$ = _tmpl$59();
|
|
4279
|
-
spread(_el$, mergeProps({
|
|
4280
|
-
get ["class"]() {
|
|
4281
|
-
return style("datePicker", cn("nt-p-2", local.class));
|
|
4611
|
+
var useTabsDropdown = ({ tabs }) => {
|
|
4612
|
+
const [tabsList, setTabsList] = createSignal();
|
|
4613
|
+
const [visibleTabs, setVisibleTabs] = createSignal([]);
|
|
4614
|
+
const [dropdownTabs, setDropdownTabs] = createSignal([]);
|
|
4615
|
+
onMount(() => {
|
|
4616
|
+
const tabsListEl = tabsList();
|
|
4617
|
+
if (!tabsListEl) return;
|
|
4618
|
+
const tabsElements = [...tabsListEl.querySelectorAll('[role="tab"]')];
|
|
4619
|
+
const observer = new IntersectionObserver(
|
|
4620
|
+
(entries) => {
|
|
4621
|
+
let visibleTabIds = entries.filter((entry) => entry.isIntersecting && entry.intersectionRatio === 1).map((entry) => entry.target.id);
|
|
4622
|
+
if (tabsElements.length === visibleTabIds.length) {
|
|
4623
|
+
setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
|
|
4624
|
+
observer.disconnect();
|
|
4625
|
+
return;
|
|
4282
4626
|
}
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4627
|
+
visibleTabIds = visibleTabIds.slice(0, -1);
|
|
4628
|
+
setVisibleTabs(tabs.filter((tab) => visibleTabIds.includes(tab.label)));
|
|
4629
|
+
setDropdownTabs(tabs.filter((tab) => !visibleTabIds.includes(tab.label)));
|
|
4630
|
+
observer.disconnect();
|
|
4631
|
+
},
|
|
4632
|
+
{ root: tabsListEl }
|
|
4633
|
+
);
|
|
4634
|
+
for (const tabElement of tabsElements) {
|
|
4635
|
+
observer.observe(tabElement);
|
|
4286
4636
|
}
|
|
4287
4637
|
});
|
|
4288
|
-
};
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
const
|
|
4306
|
-
const date = new Date(viewMonth());
|
|
4307
|
-
date.setMonth(date.getMonth() - 1);
|
|
4308
|
-
const currentMonth = currentDate();
|
|
4309
|
-
if (date.getFullYear() < currentMonth.getFullYear() || date.getFullYear() === currentMonth.getFullYear() && date.getMonth() < currentMonth.getMonth()) {
|
|
4310
|
-
return;
|
|
4311
|
-
}
|
|
4312
|
-
setViewMonth(date);
|
|
4313
|
-
};
|
|
4314
|
-
const handleNextMonth = () => {
|
|
4315
|
-
const date = new Date(viewMonth());
|
|
4316
|
-
date.setMonth(date.getMonth() + 1);
|
|
4317
|
-
const maxDaysValue = maxDays();
|
|
4318
|
-
if (maxDaysValue > 0) {
|
|
4319
|
-
const maxDate = new Date(currentDate());
|
|
4320
|
-
maxDate.setDate(maxDate.getDate() + maxDaysValue);
|
|
4321
|
-
if (date.getFullYear() > maxDate.getFullYear() || date.getFullYear() === maxDate.getFullYear() && date.getMonth() > maxDate.getMonth()) {
|
|
4322
|
-
return;
|
|
4323
|
-
}
|
|
4324
|
-
}
|
|
4325
|
-
setViewMonth(date);
|
|
4326
|
-
};
|
|
4327
|
-
const isPrevDisabled = () => {
|
|
4328
|
-
const current = currentDate();
|
|
4329
|
-
const view = viewMonth();
|
|
4330
|
-
return view.getFullYear() === current.getFullYear() && view.getMonth() === current.getMonth();
|
|
4331
|
-
};
|
|
4332
|
-
const isNextDisabled = () => {
|
|
4333
|
-
const maxDaysValue = maxDays();
|
|
4334
|
-
if (maxDaysValue === 0) return false;
|
|
4335
|
-
const view = viewMonth();
|
|
4336
|
-
const maxDate = new Date(currentDate());
|
|
4337
|
-
maxDate.setDate(maxDate.getDate() + maxDaysValue);
|
|
4338
|
-
return view.getFullYear() === maxDate.getFullYear() && view.getMonth() === maxDate.getMonth();
|
|
4339
|
-
};
|
|
4638
|
+
return { dropdownTabs, setTabsList, visibleTabs };
|
|
4639
|
+
};
|
|
4640
|
+
var _tmpl$60 = /* @__PURE__ */ template(`<strong>`);
|
|
4641
|
+
var _tmpl$216 = /* @__PURE__ */ template(`<p>`);
|
|
4642
|
+
var Bold = (props) => {
|
|
4643
|
+
const style = useStyle();
|
|
4644
|
+
return (() => {
|
|
4645
|
+
var _el$ = _tmpl$60();
|
|
4646
|
+
insert(_el$, () => props.children);
|
|
4647
|
+
effect(() => className(_el$, style(props.appearanceKey || "strong", "nt-font-semibold")));
|
|
4648
|
+
return _el$;
|
|
4649
|
+
})();
|
|
4650
|
+
};
|
|
4651
|
+
var Text = (props) => props.children;
|
|
4652
|
+
var Markdown = (props) => {
|
|
4653
|
+
const [local, rest] = splitProps(props, ["class", "children", "appearanceKey", "strongAppearanceKey"]);
|
|
4654
|
+
const style = useStyle();
|
|
4655
|
+
const tokens = createMemo(() => parseMarkdownIntoTokens(local.children));
|
|
4340
4656
|
return (() => {
|
|
4341
|
-
var _el$2 = _tmpl$216()
|
|
4657
|
+
var _el$2 = _tmpl$216();
|
|
4342
4658
|
spread(_el$2, mergeProps({
|
|
4343
4659
|
get ["class"]() {
|
|
4344
|
-
return style(local.appearanceKey
|
|
4660
|
+
return style(local.appearanceKey, cn(local.class));
|
|
4345
4661
|
}
|
|
4346
4662
|
}, rest), false, true);
|
|
4347
|
-
insert(_el$2, createComponent(
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
onClick: (e) => {
|
|
4351
|
-
e.stopPropagation();
|
|
4352
|
-
handlePrevMonth();
|
|
4353
|
-
},
|
|
4354
|
-
get disabled() {
|
|
4355
|
-
return isPrevDisabled();
|
|
4663
|
+
insert(_el$2, createComponent(For, {
|
|
4664
|
+
get each() {
|
|
4665
|
+
return tokens();
|
|
4356
4666
|
},
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
}
|
|
4366
|
-
}
|
|
4367
|
-
}
|
|
4667
|
+
children: (token) => {
|
|
4668
|
+
if (token.type === "bold") {
|
|
4669
|
+
return createComponent(Bold, {
|
|
4670
|
+
get appearanceKey() {
|
|
4671
|
+
return local.strongAppearanceKey;
|
|
4672
|
+
},
|
|
4673
|
+
get children() {
|
|
4674
|
+
return token.content;
|
|
4675
|
+
}
|
|
4676
|
+
});
|
|
4677
|
+
} else {
|
|
4678
|
+
return createComponent(Text, {
|
|
4679
|
+
get children() {
|
|
4680
|
+
return token.content;
|
|
4681
|
+
}
|
|
4682
|
+
});
|
|
4683
|
+
}
|
|
4368
4684
|
}
|
|
4369
|
-
}), _el$3);
|
|
4370
|
-
insert(_el$3, () => viewMonth().toLocaleDateString("en-US", {
|
|
4371
|
-
month: "long",
|
|
4372
|
-
year: "numeric"
|
|
4373
4685
|
}));
|
|
4374
|
-
insert(_el$2, createComponent(Button, {
|
|
4375
|
-
appearanceKey: "datePickerControlNextTrigger",
|
|
4376
|
-
variant: "ghost",
|
|
4377
|
-
onClick: (e) => {
|
|
4378
|
-
e.stopPropagation();
|
|
4379
|
-
handleNextMonth();
|
|
4380
|
-
},
|
|
4381
|
-
get disabled() {
|
|
4382
|
-
return isNextDisabled();
|
|
4383
|
-
},
|
|
4384
|
-
"class": "nt-flex nt-justify-center nt-items-center nt-gap-0.5 nt-w-5 nt-h-5 nt-p-0 nt-rounded-md nt-bg-background nt-shadow-[0px_1px_2px_0px_rgba(10,13,20,0.03)]",
|
|
4385
|
-
get children() {
|
|
4386
|
-
return createComponent(IconRendererWrapper, {
|
|
4387
|
-
iconKey: "arrowRight",
|
|
4388
|
-
"class": nextIconClass,
|
|
4389
|
-
get fallback() {
|
|
4390
|
-
return createComponent(ArrowRight, {
|
|
4391
|
-
"class": nextIconClass
|
|
4392
|
-
});
|
|
4393
|
-
}
|
|
4394
|
-
});
|
|
4395
|
-
}
|
|
4396
|
-
}), null);
|
|
4397
|
-
effect(() => className(_el$3, style("datePickerHeaderMonth", "nt-text-sm nt-font-medium nt-text-foreground-alpha-700")));
|
|
4398
4686
|
return _el$2;
|
|
4399
4687
|
})();
|
|
4400
4688
|
};
|
|
4401
|
-
var
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
currentDate,
|
|
4408
|
-
maxDays
|
|
4409
|
-
} = useDatePicker();
|
|
4410
|
-
const {
|
|
4411
|
-
t
|
|
4412
|
-
} = useLocalization();
|
|
4413
|
-
const isCurrentMonth = props.date.getMonth() === viewMonth().getMonth();
|
|
4414
|
-
const isPastDate = () => {
|
|
4415
|
-
const today = currentDate();
|
|
4416
|
-
return props.date < today;
|
|
4417
|
-
};
|
|
4418
|
-
const isFutureDate = () => {
|
|
4419
|
-
const maxDaysValue = maxDays();
|
|
4420
|
-
if (maxDaysValue === 0) return false;
|
|
4421
|
-
const maxDate = new Date(currentDate());
|
|
4422
|
-
maxDate.setDate(maxDate.getDate() + maxDaysValue);
|
|
4423
|
-
return props.date > maxDate;
|
|
4424
|
-
};
|
|
4425
|
-
const isDisabled = !isCurrentMonth || isPastDate() || isFutureDate();
|
|
4426
|
-
const isExceedingLimit = () => {
|
|
4427
|
-
return isCurrentMonth && isFutureDate();
|
|
4428
|
-
};
|
|
4429
|
-
const buttonElement = createComponent(Button, mergeProps({
|
|
4430
|
-
appearanceKey: "datePickerCalendarDay__button",
|
|
4431
|
-
variant: "ghost",
|
|
4432
|
-
disabled: isDisabled,
|
|
4433
|
-
onClick: (e) => {
|
|
4434
|
-
e.stopPropagation();
|
|
4435
|
-
setSelectedDate(local.date);
|
|
4689
|
+
var Markdown_default = Markdown;
|
|
4690
|
+
var _tmpl$61 = /* @__PURE__ */ template(`<span>`);
|
|
4691
|
+
var badgeVariants = cva(cn("nt-inline-flex nt-flex-row nt-gap-1 nt-items-center"), {
|
|
4692
|
+
variants: {
|
|
4693
|
+
variant: {
|
|
4694
|
+
secondary: "nt-bg-neutral-alpha-50"
|
|
4436
4695
|
},
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
return cn("nt-size-8 nt-w-full nt-rounded-md nt-flex nt-items-center nt-justify-center", {
|
|
4440
|
-
"nt-text-muted-foreground disabled:nt-opacity-20": !isCurrentMonth || isPastDate(),
|
|
4441
|
-
"nt-text-foreground-alpha-700": isCurrentMonth && !isPastDate() && !isFutureDate()
|
|
4442
|
-
}, {
|
|
4443
|
-
"nt-bg-primary-alpha-300 hover:nt-bg-primary-alpha-400": ((_a = selectedDate()) == null ? void 0 : _a.toDateString()) === local.date.toDateString()
|
|
4444
|
-
});
|
|
4445
|
-
}
|
|
4446
|
-
}, rest, {
|
|
4447
|
-
get children() {
|
|
4448
|
-
return local.date.getDate();
|
|
4696
|
+
size: {
|
|
4697
|
+
default: "nt-px-1 nt-py-px nt-rounded-sm nt-text-xs nt-px-1"
|
|
4449
4698
|
}
|
|
4450
|
-
}
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
return [createComponent(Tooltip.Trigger, {
|
|
4455
|
-
children: buttonElement
|
|
4456
|
-
}), createComponent(Tooltip.Content, {
|
|
4457
|
-
get children() {
|
|
4458
|
-
return t("snooze.datePicker.exceedingLimitTooltip", {
|
|
4459
|
-
days: maxDays()
|
|
4460
|
-
});
|
|
4461
|
-
}
|
|
4462
|
-
})];
|
|
4463
|
-
}
|
|
4464
|
-
});
|
|
4699
|
+
},
|
|
4700
|
+
defaultVariants: {
|
|
4701
|
+
variant: "secondary",
|
|
4702
|
+
size: "default"
|
|
4465
4703
|
}
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
var DatePickerCalendar = (props) => {
|
|
4704
|
+
});
|
|
4705
|
+
var Badge = (props) => {
|
|
4469
4706
|
const [local, rest] = splitProps(props, ["class", "appearanceKey"]);
|
|
4470
4707
|
const style = useStyle();
|
|
4471
|
-
const {
|
|
4472
|
-
viewMonth
|
|
4473
|
-
} = useDatePicker();
|
|
4474
|
-
const getDaysInMonth = () => {
|
|
4475
|
-
const year = viewMonth().getFullYear();
|
|
4476
|
-
const month = viewMonth().getMonth();
|
|
4477
|
-
const firstDay = new Date(year, month, 1);
|
|
4478
|
-
const daysInMonth = new Date(year, month + 1, 0).getDate();
|
|
4479
|
-
const startingDay = firstDay.getDay();
|
|
4480
|
-
const days = [];
|
|
4481
|
-
for (let i = 0; i < startingDay; i += 1) {
|
|
4482
|
-
const prevMonthDay = new Date(year, month, -i);
|
|
4483
|
-
days.unshift(prevMonthDay);
|
|
4484
|
-
}
|
|
4485
|
-
for (let i = 1; i <= daysInMonth; i += 1) {
|
|
4486
|
-
days.push(new Date(year, month, i));
|
|
4487
|
-
}
|
|
4488
|
-
const remainingCells = 7 - days.length % 7;
|
|
4489
|
-
if (remainingCells < 7) {
|
|
4490
|
-
for (let i = 1; i <= remainingCells; i += 1) {
|
|
4491
|
-
days.push(new Date(year, month + 1, i));
|
|
4492
|
-
}
|
|
4493
|
-
}
|
|
4494
|
-
return days;
|
|
4495
|
-
};
|
|
4496
4708
|
return (() => {
|
|
4497
|
-
var _el$
|
|
4498
|
-
_el
|
|
4499
|
-
|
|
4709
|
+
var _el$ = _tmpl$61();
|
|
4710
|
+
spread(_el$, mergeProps({
|
|
4711
|
+
get ["data-variant"]() {
|
|
4712
|
+
return props.variant;
|
|
4713
|
+
},
|
|
4714
|
+
get ["data-size"]() {
|
|
4715
|
+
return props.size;
|
|
4716
|
+
},
|
|
4500
4717
|
get ["class"]() {
|
|
4501
|
-
return style(local.appearanceKey || "
|
|
4718
|
+
return style(local.appearanceKey || "badge", cn(badgeVariants({
|
|
4719
|
+
variant: props.variant,
|
|
4720
|
+
size: props.size
|
|
4721
|
+
}), local.class));
|
|
4502
4722
|
}
|
|
4503
|
-
}, rest), false,
|
|
4504
|
-
|
|
4505
|
-
return createComponent(DatePickerGridCellTrigger, {
|
|
4506
|
-
date
|
|
4507
|
-
});
|
|
4508
|
-
}));
|
|
4509
|
-
return _el$8;
|
|
4723
|
+
}, rest), false, false);
|
|
4724
|
+
return _el$;
|
|
4510
4725
|
})();
|
|
4511
4726
|
};
|
|
4512
|
-
|
|
4513
|
-
var _tmpl$60 = /* @__PURE__ */ template(`<input>`);
|
|
4727
|
+
var _tmpl$63 = /* @__PURE__ */ template(`<input>`);
|
|
4514
4728
|
var inputVariants = cva(cn(`focus-visible:nt-outline-none focus-visible:nt-ring-2 focus-visible:nt-rounded-md focus-visible:nt-ring-ring focus-visible:nt-ring-offset-2`), {
|
|
4515
4729
|
variants: {
|
|
4516
4730
|
variant: {
|
|
@@ -4530,7 +4744,7 @@ var Input = (props) => {
|
|
|
4530
4744
|
const [local, rest] = splitProps(props, ["class", "appearanceKey"]);
|
|
4531
4745
|
const style = useStyle();
|
|
4532
4746
|
return (() => {
|
|
4533
|
-
var _el$ = _tmpl$
|
|
4747
|
+
var _el$ = _tmpl$63();
|
|
4534
4748
|
spread(_el$, mergeProps({
|
|
4535
4749
|
get ["data-variant"]() {
|
|
4536
4750
|
return props.variant;
|
|
@@ -4550,7 +4764,7 @@ var Input = (props) => {
|
|
|
4550
4764
|
};
|
|
4551
4765
|
|
|
4552
4766
|
// src/ui/components/primitives/TimePicker.tsx
|
|
4553
|
-
var _tmpl$
|
|
4767
|
+
var _tmpl$64 = /* @__PURE__ */ template(`<div><span>:</span><select><option value=AM>AM</option><option value=PM>PM`);
|
|
4554
4768
|
var TimePicker = (props) => {
|
|
4555
4769
|
const [local, rest] = splitProps(props, ["value", "onChange", "class", "appearanceKey"]);
|
|
4556
4770
|
const style = useStyle();
|
|
@@ -4590,7 +4804,7 @@ var TimePicker = (props) => {
|
|
|
4590
4804
|
}
|
|
4591
4805
|
};
|
|
4592
4806
|
return (() => {
|
|
4593
|
-
var _el$ = _tmpl$
|
|
4807
|
+
var _el$ = _tmpl$64(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
|
|
4594
4808
|
_el$.$$click = (e) => e.stopPropagation();
|
|
4595
4809
|
spread(_el$, mergeProps({
|
|
4596
4810
|
get ["class"]() {
|
|
@@ -4678,7 +4892,7 @@ var enforceMinMax = (el) => {
|
|
|
4678
4892
|
delegateEvents(["click"]);
|
|
4679
4893
|
|
|
4680
4894
|
// src/ui/components/Notification/SnoozeDateTimePicker.tsx
|
|
4681
|
-
var _tmpl$
|
|
4895
|
+
var _tmpl$65 = /* @__PURE__ */ template(`<div><div><p></p></div><div>`);
|
|
4682
4896
|
var fiveMinutesFromNow = () => {
|
|
4683
4897
|
const futureTime = new Date(Date.now() + 5 * 60 * 1e3);
|
|
4684
4898
|
const hours = futureTime.getHours();
|
|
@@ -4775,7 +4989,7 @@ var SnoozeDateTimePicker = (props) => {
|
|
|
4775
4989
|
return t("snooze.datePicker.noDateSelectedTooltip");
|
|
4776
4990
|
});
|
|
4777
4991
|
return (() => {
|
|
4778
|
-
var _el$ = _tmpl$
|
|
4992
|
+
var _el$ = _tmpl$65(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$2.nextSibling;
|
|
4779
4993
|
_el$.$$click = (e) => e.stopPropagation();
|
|
4780
4994
|
insert(_el$, createComponent(DatePicker, {
|
|
4781
4995
|
onDateChange: (date) => setSelectedDate(date),
|
|
@@ -4860,7 +5074,7 @@ var SnoozeDateTimePicker = (props) => {
|
|
|
4860
5074
|
delegateEvents(["click"]);
|
|
4861
5075
|
|
|
4862
5076
|
// src/ui/components/Notification/NotificationActions.tsx
|
|
4863
|
-
var _tmpl$
|
|
5077
|
+
var _tmpl$66 = /* @__PURE__ */ template(`<div><span>`);
|
|
4864
5078
|
var _tmpl$217 = /* @__PURE__ */ template(`<span>`);
|
|
4865
5079
|
var SNOOZE_PRESETS = [{
|
|
4866
5080
|
key: "snooze.options.anHourFromNow",
|
|
@@ -4907,7 +5121,7 @@ var SnoozeDropdownItem = (props) => {
|
|
|
4907
5121
|
iconKey: "clock"
|
|
4908
5122
|
});
|
|
4909
5123
|
const content = [(() => {
|
|
4910
|
-
var _el$ = _tmpl$
|
|
5124
|
+
var _el$ = _tmpl$66(), _el$2 = _el$.firstChild;
|
|
4911
5125
|
insert(_el$, createComponent(IconRendererWrapper, {
|
|
4912
5126
|
iconKey: "clock",
|
|
4913
5127
|
"class": snoozeItemIconClass,
|
|
@@ -5304,7 +5518,7 @@ var renderNotificationActions = (notification, status) => {
|
|
|
5304
5518
|
};
|
|
5305
5519
|
|
|
5306
5520
|
// src/ui/components/Notification/DefaultNotification.tsx
|
|
5307
|
-
var _tmpl$
|
|
5521
|
+
var _tmpl$67 = /* @__PURE__ */ template(`<img>`);
|
|
5308
5522
|
var _tmpl$218 = /* @__PURE__ */ template(`<div>`);
|
|
5309
5523
|
var _tmpl$311 = /* @__PURE__ */ template(`<span>`);
|
|
5310
5524
|
var _tmpl$410 = /* @__PURE__ */ template(`<a><div><div></div><div></div><div>`);
|
|
@@ -5396,7 +5610,7 @@ var DefaultNotification = (props) => {
|
|
|
5396
5610
|
})();
|
|
5397
5611
|
},
|
|
5398
5612
|
get children() {
|
|
5399
|
-
var _el$2 = _tmpl$
|
|
5613
|
+
var _el$2 = _tmpl$67();
|
|
5400
5614
|
effect((_p$) => {
|
|
5401
5615
|
var _v$ = style("notificationImage", "nt-size-8 nt-rounded-lg nt-object-cover nt-aspect-square"), _v$2 = props.notification.avatar;
|
|
5402
5616
|
_v$ !== _p$.e && className(_el$2, _p$.e = _v$);
|
|
@@ -5647,14 +5861,30 @@ var NewMessagesCta = (props) => {
|
|
|
5647
5861
|
}
|
|
5648
5862
|
});
|
|
5649
5863
|
};
|
|
5650
|
-
var _tmpl$
|
|
5864
|
+
var _tmpl$68 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 16 16"fill=none><path fill=currentColor d="M12.1675 2.04492L11.5308 2.68164L11.1069 3.10645L12.9614 4.96094L12.7495 5.17383L10.894 3.31836L10.4692 3.74219L9.40967 4.80273L8.98486 5.22754L9.40967 5.65137L10.5747 6.81738L10.3628 7.03027L9.19775 5.86328L8.77295 5.43945L6.35889 7.85352L6.62744 8.26172C7.00257 8.83177 7.18147 9.50559 7.14111 10.1816L7.10986 10.4707C7.00656 11.1451 6.68818 11.7654 6.20557 12.2402L5.98877 12.4346C5.46027 12.8661 4.80786 13.1133 4.13135 13.1426L3.84033 13.1416C3.0614 13.1032 2.3236 12.7769 1.771 12.2266H1.77002C1.28602 11.744 0.974717 11.1186 0.877441 10.4473L0.849121 10.1572C0.814077 9.47419 1.00158 8.80051 1.38037 8.2373L1.55518 8.00293C2.04954 7.39769 2.75121 6.99767 3.52393 6.88086C4.29677 6.76406 5.0856 6.93884 5.73682 7.37109L6.146 7.64258L6.49268 7.29492L11.9546 1.83203L12.1675 2.04492ZM4.00537 7.10645C3.71967 7.11042 3.4363 7.15732 3.16553 7.24512L2.89893 7.34668C2.63748 7.46146 2.39532 7.61469 2.18018 7.80078L1.97803 7.99316C1.52375 8.46356 1.2476 9.0739 1.18994 9.71973L1.17822 9.99805C1.18392 10.6519 1.41417 11.2812 1.82568 11.7822L2.01318 11.9883C2.47551 12.4506 3.0805 12.7377 3.7251 12.8066L4.00342 12.8232C4.75062 12.8297 5.4708 12.5425 6.0083 12.0234L6.44775 11.5986L6.40186 11.5527C6.44537 11.4885 6.48869 11.4241 6.52686 11.3564L6.65479 11.1016C6.76956 10.84 6.84411 10.563 6.87646 10.2803L6.89404 9.99609C6.89801 9.71049 6.85899 9.42635 6.77881 9.15332L6.68506 8.88379C6.5776 8.61923 6.4315 8.3726 6.25146 8.15234L6.06006 7.94141C5.85804 7.73939 5.62719 7.56844 5.37549 7.43555L5.1167 7.31543C4.76396 7.17222 4.38604 7.10121 4.00537 7.10645Z"stroke=#525866 stroke-width=1.2>`);
|
|
5865
|
+
function Key(props) {
|
|
5866
|
+
return (() => {
|
|
5867
|
+
var _el$ = _tmpl$68();
|
|
5868
|
+
spread(_el$, props, true, true);
|
|
5869
|
+
return _el$;
|
|
5870
|
+
})();
|
|
5871
|
+
}
|
|
5872
|
+
|
|
5873
|
+
// src/ui/components/Notification/NotificationListSkeleton.tsx
|
|
5874
|
+
var _tmpl$69 = /* @__PURE__ */ template(`<div>`);
|
|
5875
|
+
var _tmpl$219 = /* @__PURE__ */ template(`<p data-localization=notifications.emptyNotice>`);
|
|
5876
|
+
var _tmpl$312 = /* @__PURE__ */ template(`<div><p>Trigger your notification. No setup needed.</p><p>Temporary <Inbox />. All data will expire in 24 hours. Connect API key to persists messages, enable
|
|
5877
|
+
preferences, and connect email.</p><div><div>`);
|
|
5651
5878
|
var NotificationListSkeleton = (props) => {
|
|
5652
5879
|
const style = useStyle();
|
|
5653
5880
|
const {
|
|
5654
5881
|
t
|
|
5655
5882
|
} = useLocalization();
|
|
5883
|
+
const {
|
|
5884
|
+
isKeyless
|
|
5885
|
+
} = useInboxContext();
|
|
5656
5886
|
return (() => {
|
|
5657
|
-
var _el$ = _tmpl$
|
|
5887
|
+
var _el$ = _tmpl$69();
|
|
5658
5888
|
insert(_el$, createComponent(Motion.div, {
|
|
5659
5889
|
get animate() {
|
|
5660
5890
|
return {
|
|
@@ -5693,7 +5923,7 @@ var NotificationListSkeleton = (props) => {
|
|
|
5693
5923
|
appearanceKey: "notificationList__skeletonAvatar",
|
|
5694
5924
|
"class": "nt-w-8 nt-h-8 nt-rounded-full nt-bg-neutral-alpha-100"
|
|
5695
5925
|
}), (() => {
|
|
5696
|
-
var _el$3 = _tmpl$
|
|
5926
|
+
var _el$3 = _tmpl$69();
|
|
5697
5927
|
insert(_el$3, createComponent(SkeletonText, {
|
|
5698
5928
|
appearanceKey: "notificationList__skeletonText",
|
|
5699
5929
|
"class": "nt-h-2 nt-w-1/3 nt-bg-neutral-alpha-50 nt-rounded"
|
|
@@ -5707,7 +5937,7 @@ var NotificationListSkeleton = (props) => {
|
|
|
5707
5937
|
})()];
|
|
5708
5938
|
}
|
|
5709
5939
|
}))), (() => {
|
|
5710
|
-
var _el$2 = _tmpl$
|
|
5940
|
+
var _el$2 = _tmpl$69();
|
|
5711
5941
|
effect(() => className(_el$2, style("notificationListEmptyNoticeOverlay", "nt-absolute nt-size-full nt-z-10 nt-inset-0 nt-bg-gradient-to-b nt-from-transparent nt-to-background")));
|
|
5712
5942
|
return _el$2;
|
|
5713
5943
|
})()];
|
|
@@ -5739,9 +5969,12 @@ var NotificationListSkeleton = (props) => {
|
|
|
5739
5969
|
get ["class"]() {
|
|
5740
5970
|
return style("notificationListEmptyNotice", "nt-text-center");
|
|
5741
5971
|
},
|
|
5742
|
-
"data-localization": "notifications.emptyNotice",
|
|
5743
5972
|
get children() {
|
|
5744
|
-
return
|
|
5973
|
+
return memo(() => !!isKeyless())() ? createComponent(KeylessEmptyState, {}) : (() => {
|
|
5974
|
+
var _el$4 = _tmpl$219();
|
|
5975
|
+
insert(_el$4, () => t("notifications.emptyNotice"));
|
|
5976
|
+
return _el$4;
|
|
5977
|
+
})();
|
|
5745
5978
|
}
|
|
5746
5979
|
});
|
|
5747
5980
|
}
|
|
@@ -5750,10 +5983,69 @@ var NotificationListSkeleton = (props) => {
|
|
|
5750
5983
|
return _el$;
|
|
5751
5984
|
})();
|
|
5752
5985
|
};
|
|
5986
|
+
function KeylessEmptyState() {
|
|
5987
|
+
const style = useStyle();
|
|
5988
|
+
const novu = useNovu();
|
|
5989
|
+
return (() => {
|
|
5990
|
+
var _el$5 = _tmpl$312(), _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling, _el$8 = _el$7.nextSibling, _el$9 = _el$8.firstChild;
|
|
5991
|
+
insert(_el$8, createComponent(Button, {
|
|
5992
|
+
variant: "secondary",
|
|
5993
|
+
size: "sm",
|
|
5994
|
+
get ["class"]() {
|
|
5995
|
+
return style(
|
|
5996
|
+
"notificationListEmptyNotice",
|
|
5997
|
+
// eslint-disable-next-line max-len
|
|
5998
|
+
"nt-h-8 nt-px-4 nt-flex nt-items-center nt-justify-center nt-gap-2 nt-bg-white nt-border nt-border-neutral-alpha-100 nt-shadow-sm nt-text-[12px] nt-font-medium"
|
|
5999
|
+
);
|
|
6000
|
+
},
|
|
6001
|
+
onClick: () => window.open("https://go.novu.co/keyless?utm_campaign=empty-state-get_api_key", "_blank", "noopener noreferrer"),
|
|
6002
|
+
get children() {
|
|
6003
|
+
return [createComponent(Key, {
|
|
6004
|
+
get ["class"]() {
|
|
6005
|
+
return style("lockIcon", "nt-size-4 nt-mr-2");
|
|
6006
|
+
}
|
|
6007
|
+
}), "Get API key"];
|
|
6008
|
+
}
|
|
6009
|
+
}), _el$9);
|
|
6010
|
+
insert(_el$9, createComponent(Button, {
|
|
6011
|
+
variant: "default",
|
|
6012
|
+
size: "sm",
|
|
6013
|
+
get ["class"]() {
|
|
6014
|
+
return style(
|
|
6015
|
+
"notificationListEmptyNotice",
|
|
6016
|
+
// eslint-disable-next-line max-len
|
|
6017
|
+
"nt-h-8 nt-px-4 nt-flex nt-items-center nt-justify-center nt-gap-2 nt-bg-neutral-900 nt-text-white nt-shadow-sm nt-text-[12px] nt-font-medium"
|
|
6018
|
+
);
|
|
6019
|
+
},
|
|
6020
|
+
onClick: () => novu.notifications.triggerHelloWorldEvent(),
|
|
6021
|
+
get children() {
|
|
6022
|
+
return [createComponent(Bell, {
|
|
6023
|
+
get ["class"]() {
|
|
6024
|
+
return style("bellIcon", "nt-size-4 nt-mr-2");
|
|
6025
|
+
}
|
|
6026
|
+
}), "Send 'Hello World!'"];
|
|
6027
|
+
}
|
|
6028
|
+
}));
|
|
6029
|
+
effect((_p$) => {
|
|
6030
|
+
var _v$ = style("notificationListEmptyNotice", "nt--mt-[50px]"), _v$2 = style("strong", "nt-text-[#000000] nt-mb-1"), _v$3 = style("notificationListEmptyNotice", "nt-mb-4"), _v$4 = style("notificationListEmptyNotice", "nt-flex nt-gap-4 nt-justify-center");
|
|
6031
|
+
_v$ !== _p$.e && className(_el$5, _p$.e = _v$);
|
|
6032
|
+
_v$2 !== _p$.t && className(_el$6, _p$.t = _v$2);
|
|
6033
|
+
_v$3 !== _p$.a && className(_el$7, _p$.a = _v$3);
|
|
6034
|
+
_v$4 !== _p$.o && className(_el$8, _p$.o = _v$4);
|
|
6035
|
+
return _p$;
|
|
6036
|
+
}, {
|
|
6037
|
+
e: void 0,
|
|
6038
|
+
t: void 0,
|
|
6039
|
+
a: void 0,
|
|
6040
|
+
o: void 0
|
|
6041
|
+
});
|
|
6042
|
+
return _el$5;
|
|
6043
|
+
})();
|
|
6044
|
+
}
|
|
5753
6045
|
|
|
5754
6046
|
// src/ui/components/Notification/NotificationList.tsx
|
|
5755
|
-
var _tmpl$
|
|
5756
|
-
var _tmpl$
|
|
6047
|
+
var _tmpl$70 = /* @__PURE__ */ template(`<div>`);
|
|
6048
|
+
var _tmpl$220 = /* @__PURE__ */ template(`<div><div>`);
|
|
5757
6049
|
var NotificationList = (props) => {
|
|
5758
6050
|
var _a, _b, _c, _d;
|
|
5759
6051
|
const options = createMemo(() => __spreadProps(__spreadValues({}, props.filter), {
|
|
@@ -5797,7 +6089,7 @@ var NotificationList = (props) => {
|
|
|
5797
6089
|
});
|
|
5798
6090
|
});
|
|
5799
6091
|
return (() => {
|
|
5800
|
-
var _el$ = _tmpl$
|
|
6092
|
+
var _el$ = _tmpl$220(), _el$2 = _el$.firstChild;
|
|
5801
6093
|
insert(_el$, createComponent(NewMessagesCta, {
|
|
5802
6094
|
get count() {
|
|
5803
6095
|
return count();
|
|
@@ -5854,7 +6146,7 @@ var NotificationList = (props) => {
|
|
|
5854
6146
|
return !end();
|
|
5855
6147
|
},
|
|
5856
6148
|
get children() {
|
|
5857
|
-
var _el$3 = _tmpl$
|
|
6149
|
+
var _el$3 = _tmpl$70();
|
|
5858
6150
|
use(setEl, _el$3);
|
|
5859
6151
|
insert(_el$3, createComponent(NotificationListSkeleton, {
|
|
5860
6152
|
loading: true
|
|
@@ -5876,13 +6168,13 @@ var NotificationList = (props) => {
|
|
|
5876
6168
|
return _el$;
|
|
5877
6169
|
})();
|
|
5878
6170
|
};
|
|
5879
|
-
var _tmpl$
|
|
6171
|
+
var _tmpl$71 = /* @__PURE__ */ template(`<span>`);
|
|
5880
6172
|
var getDisplayCount = (count) => count >= 100 ? "99+" : count;
|
|
5881
6173
|
var InboxTabUnreadNotificationsCount = (props) => {
|
|
5882
6174
|
const style = useStyle();
|
|
5883
6175
|
const displayCount = createMemo(() => getDisplayCount(props.count));
|
|
5884
6176
|
return (() => {
|
|
5885
|
-
var _el$ = _tmpl$
|
|
6177
|
+
var _el$ = _tmpl$71();
|
|
5886
6178
|
insert(_el$, displayCount);
|
|
5887
6179
|
effect(() => className(_el$, style("notificationsTabsTriggerCount", "nt-rounded-full nt-bg-counter nt-px-[6px] nt-text-counter-foreground nt-text-sm")));
|
|
5888
6180
|
return _el$;
|
|
@@ -5909,7 +6201,7 @@ var InboxTab = (props) => {
|
|
|
5909
6201
|
},
|
|
5910
6202
|
get children() {
|
|
5911
6203
|
return [(() => {
|
|
5912
|
-
var _el$2 = _tmpl$
|
|
6204
|
+
var _el$2 = _tmpl$71();
|
|
5913
6205
|
insert(_el$2, () => props.label);
|
|
5914
6206
|
effect(() => className(_el$2, style("notificationsTabsTriggerLabel", "nt-text-sm nt-font-medium")));
|
|
5915
6207
|
return _el$2;
|
|
@@ -5949,7 +6241,7 @@ var InboxDropdownTab = (props) => {
|
|
|
5949
6241
|
},
|
|
5950
6242
|
get children() {
|
|
5951
6243
|
return [(() => {
|
|
5952
|
-
var _el$3 = _tmpl$
|
|
6244
|
+
var _el$3 = _tmpl$71();
|
|
5953
6245
|
insert(_el$3, () => props.label);
|
|
5954
6246
|
effect(() => className(_el$3, style("moreTabs__dropdownItemLabel", "nt-mr-auto")));
|
|
5955
6247
|
return _el$3;
|
|
@@ -6150,7 +6442,7 @@ var InboxTabs = (props) => {
|
|
|
6150
6442
|
};
|
|
6151
6443
|
|
|
6152
6444
|
// src/ui/components/Inbox.tsx
|
|
6153
|
-
var _tmpl$
|
|
6445
|
+
var _tmpl$73 = /* @__PURE__ */ template(`<div>`);
|
|
6154
6446
|
var InboxPage = /* @__PURE__ */ function(InboxPage2) {
|
|
6155
6447
|
InboxPage2["Notifications"] = "notifications";
|
|
6156
6448
|
InboxPage2["Preferences"] = "preferences";
|
|
@@ -6175,7 +6467,7 @@ var InboxContent = (props) => {
|
|
|
6175
6467
|
};
|
|
6176
6468
|
});
|
|
6177
6469
|
return (() => {
|
|
6178
|
-
var _el$ = _tmpl$
|
|
6470
|
+
var _el$ = _tmpl$73();
|
|
6179
6471
|
insert(_el$, createComponent(Switch$1, {
|
|
6180
6472
|
get children() {
|
|
6181
6473
|
return [createComponent(Match, {
|
|
@@ -6484,7 +6776,7 @@ var Renderer = (props) => {
|
|
|
6484
6776
|
portalDivElement.style.height = "100%";
|
|
6485
6777
|
}
|
|
6486
6778
|
});
|
|
6487
|
-
return createComponent(Portal
|
|
6779
|
+
return createComponent(Portal, {
|
|
6488
6780
|
mount: node,
|
|
6489
6781
|
ref: (el) => {
|
|
6490
6782
|
portalDivElement = el;
|