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