@jacshuo/onyx 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +358 -361
- package/dist/Chart/BarChart.cjs +1 -1
- package/dist/Chart/BarChart.js +1 -1
- package/dist/Chart/PieChart.cjs +1 -1
- package/dist/Chart/PieChart.js +1 -1
- package/dist/Chart/ScatterChart.cjs +1 -1
- package/dist/Chart/ScatterChart.js +1 -1
- package/dist/Chart/index.cjs +1 -1
- package/dist/Chart/index.js +1 -1
- package/dist/DataDisplay/VirtualList.cjs +2 -0
- package/dist/DataDisplay/VirtualList.css +1 -0
- package/dist/DataDisplay/VirtualList.d.cts +5 -0
- package/dist/DataDisplay/VirtualList.d.ts +5 -0
- package/dist/DataDisplay/VirtualList.js +2 -0
- package/dist/DataDisplay/index.cjs +3 -2
- package/dist/DataDisplay/index.css +1 -0
- package/dist/DataDisplay/index.d.cts +5 -0
- package/dist/DataDisplay/index.d.ts +5 -0
- package/dist/DataDisplay/index.js +3 -2
- package/dist/Extras/DateTimePicker.cjs +1 -0
- package/dist/Extras/DateTimePicker.css +1 -0
- package/dist/Extras/DateTimePicker.d.cts +5 -0
- package/dist/Extras/DateTimePicker.d.ts +5 -0
- package/dist/Extras/DateTimePicker.js +1 -0
- package/dist/Extras/FileExplorer.cjs +2 -2
- package/dist/Extras/FileExplorer.js +2 -2
- package/dist/Extras/LoginPanel.cjs +1 -0
- package/dist/Extras/LoginPanel.css +1 -0
- package/dist/Extras/LoginPanel.d.cts +3 -0
- package/dist/Extras/LoginPanel.d.ts +3 -0
- package/dist/Extras/LoginPanel.js +1 -0
- package/dist/Extras/RichTextEditor.cjs +45 -0
- package/dist/Extras/RichTextEditor.css +1 -0
- package/dist/Extras/RichTextEditor.d.cts +10 -0
- package/dist/Extras/RichTextEditor.d.ts +10 -0
- package/dist/Extras/RichTextEditor.js +45 -0
- package/dist/Extras/index.cjs +48 -4
- package/dist/Extras/index.css +1 -1
- package/dist/Extras/index.d.cts +12 -0
- package/dist/Extras/index.d.ts +12 -0
- package/dist/Extras/index.js +48 -4
- package/dist/Forms/Form.cjs +1 -1
- package/dist/Forms/Form.js +1 -1
- package/dist/Forms/OTPInput.cjs +1 -0
- package/dist/Forms/OTPInput.css +1 -0
- package/dist/Forms/OTPInput.d.cts +4 -0
- package/dist/Forms/OTPInput.d.ts +4 -0
- package/dist/Forms/OTPInput.js +1 -0
- package/dist/Forms/Select.cjs +1 -1
- package/dist/Forms/Select.js +1 -1
- package/dist/Forms/index.cjs +1 -1
- package/dist/Forms/index.css +1 -0
- package/dist/Forms/index.d.cts +4 -0
- package/dist/Forms/index.d.ts +4 -0
- package/dist/Forms/index.js +1 -1
- package/dist/Layout/SplitPanel.cjs +1 -0
- package/dist/Layout/SplitPanel.d.cts +3 -0
- package/dist/Layout/SplitPanel.d.ts +3 -0
- package/dist/Layout/SplitPanel.js +1 -0
- package/dist/Layout/index.cjs +1 -1
- package/dist/Layout/index.d.cts +3 -0
- package/dist/Layout/index.d.ts +3 -0
- package/dist/Layout/index.js +1 -1
- package/dist/Navigation/Header.cjs +1 -1
- package/dist/Navigation/Header.js +1 -1
- package/dist/Navigation/RibbonBar.d.cts +3 -3
- package/dist/Navigation/RibbonBar.d.ts +3 -3
- package/dist/Navigation/SideNav.cjs +1 -1
- package/dist/Navigation/SideNav.js +1 -1
- package/dist/Navigation/index.cjs +2 -2
- package/dist/Navigation/index.d.cts +3 -3
- package/dist/Navigation/index.d.ts +3 -3
- package/dist/Navigation/index.js +2 -2
- package/dist/Primitives/Avatar.cjs +1 -1
- package/dist/Primitives/Avatar.js +1 -1
- package/dist/Primitives/Badge.cjs +1 -1
- package/dist/Primitives/Badge.js +1 -1
- package/dist/Primitives/Button.cjs +1 -1
- package/dist/Primitives/Button.js +1 -1
- package/dist/Primitives/Checkbox.cjs +1 -1
- package/dist/Primitives/Checkbox.js +1 -1
- package/dist/Primitives/Dropdown.cjs +1 -1
- package/dist/Primitives/Dropdown.js +1 -1
- package/dist/Primitives/DropdownButton.cjs +1 -1
- package/dist/Primitives/DropdownButton.js +1 -1
- package/dist/Primitives/Indicator.cjs +1 -1
- package/dist/Primitives/Indicator.js +1 -1
- package/dist/Primitives/Input.cjs +1 -1
- package/dist/Primitives/Input.js +1 -1
- package/dist/Primitives/Kbd.cjs +1 -0
- package/dist/Primitives/Kbd.css +0 -0
- package/dist/Primitives/Kbd.d.cts +6 -0
- package/dist/Primitives/Kbd.d.ts +6 -0
- package/dist/Primitives/Kbd.js +1 -0
- package/dist/Primitives/Label.cjs +1 -1
- package/dist/Primitives/Label.js +1 -1
- package/dist/Primitives/Radio.cjs +1 -1
- package/dist/Primitives/Radio.js +1 -1
- package/dist/Primitives/Rating.cjs +2 -0
- package/dist/Primitives/Rating.css +0 -0
- package/dist/Primitives/Rating.d.cts +4 -0
- package/dist/Primitives/Rating.d.ts +4 -0
- package/dist/Primitives/Rating.js +2 -0
- package/dist/Primitives/Slider.cjs +1 -1
- package/dist/Primitives/Slider.js +1 -1
- package/dist/Primitives/Switch.cjs +1 -1
- package/dist/Primitives/Switch.js +1 -1
- package/dist/Primitives/Tag.cjs +1 -1
- package/dist/Primitives/Tag.js +1 -1
- package/dist/Primitives/index.cjs +2 -1
- package/dist/Primitives/index.d.cts +10 -0
- package/dist/Primitives/index.d.ts +10 -0
- package/dist/Primitives/index.js +2 -1
- package/dist/_tsup-dts-rollup.d.cts +990 -3
- package/dist/_tsup-dts-rollup.d.ts +990 -3
- package/dist/index.cjs +49 -5
- package/dist/index.css +1 -1
- package/dist/index.d.cts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +49 -5
- package/dist/styles/DataDisplay/VirtualList.css +35 -0
- package/dist/styles/Extras/DateTimePicker.css +566 -0
- package/dist/styles/Extras/LoginPanel.css +16 -0
- package/dist/styles/Extras/RichTextEditor.css +908 -0
- package/dist/styles/Forms/OTPInput.css +11 -0
- package/dist/styles/Layout/SplitPanel.css +15 -0
- package/dist/styles/Primitives/Kbd.css +1 -0
- package/dist/styles/Primitives/Rating.css +1 -0
- package/dist/styles/base.css +312 -7
- package/dist/styles.css +770 -7
- package/dist/theme.cjs +1 -1
- package/dist/theme.d.cts +3 -0
- package/dist/theme.d.ts +3 -0
- package/dist/theme.js +1 -1
- package/package.json +21 -1
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var L=require('react'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var L__default=/*#__PURE__*/_interopDefault(L);function i(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var q=classVarianceAuthority.cva("w-full text-left text-sm",{variants:{intent:{default:"",striped:"[&_tbody_tr:nth-child(even)]:bg-primary-50 dark:[&_tbody_tr:nth-child(even)]:bg-primary-800/30",bordered:"[&_th]:border [&_td]:border [&_th]:border-primary-200 [&_td]:border-primary-200 dark:[&_th]:border-primary-700 dark:[&_td]:border-primary-700"},density:{compact:"[&_th]:px-2 [&_th]:py-1 [&_td]:px-2 [&_td]:py-1",default:"",relaxed:"[&_th]:px-6 [&_th]:py-5 [&_td]:px-6 [&_td]:py-5"}},defaultVariants:{intent:"default",density:"default"}}),O=classVarianceAuthority.cva("text-sm text-primary-700 dark:text-primary-300",{variants:{intent:{default:"space-y-1",bordered:"divide-y divide-primary-200 rounded-lg border border-primary-200 dark:divide-primary-700 dark:border-primary-700 [&>li]:px-4 [&>li]:py-2",hover:"[&>li]:rounded-md [&>li]:px-3 [&>li]:py-2 [&>li]:transition-colors [&>li:hover]:bg-primary-50 dark:[&>li:hover]:bg-primary-800/50"}},defaultVariants:{intent:"default"}});classVarianceAuthority.cva("group flex w-full items-center gap-1.5 text-left [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3 [&_svg]:w-3",md:"py-1.5 text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"py-2 text-base [&_svg]:h-4 [&_svg]:w-4"}},defaultVariants:{size:"md"}});classVarianceAuthority.cva("flex cursor-pointer items-center gap-1 rounded transition-colors [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"py-1 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"py-1.5 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{size:"md"}});var $=classVarianceAuthority.cva("relative rounded-xl border bg-white p-5 shadow-sm transition-shadow hover:shadow-md dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),G=classVarianceAuthority.cva("relative overflow-hidden rounded-xl border bg-white p-5 shadow-sm transition-all duration-300 hover:shadow-lg dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),V=classVarianceAuthority.cva("overflow-x-auto rounded-lg font-mono [background:var(--color-syntax-bg)] [&_pre]:m-0 [&_pre]:p-4 [&_code]:bg-transparent",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}});function P({intent:e,density:t,className:r,...s}){return jsxRuntime.jsx("div",{className:"w-full overflow-auto",children:jsxRuntime.jsx("table",{className:i(q({intent:e,density:t}),r),...s})})}var le=L.createContext({size:"md"});function M({intent:e,size:t="md",className:r,...s}){return jsxRuntime.jsx(le.Provider,{value:{size:t},children:jsxRuntime.jsx("ul",{className:i(O({intent:e}),r),...s})})}var me=L.createContext({showLines:true,expandedKeys:null,onToggleKey:()=>{},size:"md"});function H({showLines:e=true,showRoot:t=true,expandedKeys:r,defaultExpandedKeys:s="all",onExpandedKeysChange:a,size:n="md",className:l,children:c,...o}){let [y,g]=L.useState(()=>s),d=L.useCallback(u=>{if(r){let f=new Set(r);f.has(u)?f.delete(u):f.add(u),a?.(f);}else g(f=>{if(f==="all")return new Set(["__ALL_MINUS__",u]);let h=new Set(f);return h.has(u)?h.delete(u):h.add(u),h});},[r,a]),T=r??(y==="all"?null:y);return jsxRuntime.jsx(me.Provider,{value:{showLines:e,expandedKeys:T,onToggleKey:d,size:n},children:t?jsxRuntime.jsx("ul",{className:i("text-sm",l),role:"tree",...o,children:c}):jsxRuntime.jsx("ul",{className:i("text-sm",l),role:"tree",...o,children:jsxRuntime.jsx(ue,{children:c})})})}function ue({children:e}){let t=J(e);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:t.map(r=>L__default.default.isValidElement(r)&&r.props.children?r.props.children:null)})}function J(e){let t=[];return L__default.default.Children.forEach(e,r=>{L__default.default.isValidElement(r)&&r.type===L__default.default.Fragment?t.push(...J(r.props.children)):t.push(r);}),t}function be({avatar:e,sender:t}){return e?typeof e=="string"?/^(?:https?|data|blob):/.test(e)?jsxRuntime.jsx("img",{src:e,alt:t,className:"h-8 w-8 shrink-0 rounded-full object-cover",draggable:false}):jsxRuntime.jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-lg select-none",children:e}):jsxRuntime.jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full",children:e}):jsxRuntime.jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-semibold select-none",children:t.charAt(0).toUpperCase()})}function xe({msg:e,alignRight:t}){return jsxRuntime.jsxs("div",{className:i("flex gap-2.5",t?"flex-row-reverse":"flex-row"),children:[jsxRuntime.jsx(be,{avatar:e.avatar,sender:e.sender}),jsxRuntime.jsxs("div",{className:i("flex max-w-[75%] flex-col gap-0.5",t?"items-end":"items-start"),children:[jsxRuntime.jsx("span",{className:"text-primary-500 dark:text-primary-400 text-xs",children:e.sender}),jsxRuntime.jsx("div",{className:i("rounded-xl px-3 py-2 text-sm leading-relaxed",t?"rounded-tr-sm bg-primary-500 text-white dark:bg-primary-600":"bg-primary-100 text-primary-800 dark:bg-primary-800 dark:text-primary-200 rounded-tl-sm"),children:e.content}),e.time&&jsxRuntime.jsx("span",{className:"text-primary-400 dark:text-primary-500 text-[10px]",children:e.time})]})]})}function D({messages:e,mode:t="split",autoScroll:r=true,className:s,...a}){let n=L.useRef(null);return L.useEffect(()=>{r&&n.current?.scrollIntoView({behavior:"smooth"});},[e,r]),jsxRuntime.jsxs("div",{className:i("flex flex-col gap-4 overflow-y-auto rounded-lg border p-4","border-primary-200 dark:border-primary-700 dark:bg-primary-900 bg-white",s),...a,children:[e.map(l=>{let c=t==="split"&&!!l.self;return jsxRuntime.jsx(xe,{msg:l,alignRight:c},l.id)}),jsxRuntime.jsx("div",{ref:n})]})}var ke={name:"onyx-css-vars",type:"dark",settings:[{settings:{foreground:"var(--color-syntax-plain)",background:"var(--color-syntax-bg)"}},{scope:["comment","punctuation.definition.comment"],settings:{foreground:"var(--color-syntax-comment)",fontStyle:"italic"}},{scope:["keyword","keyword.control","keyword.operator.new","keyword.operator.expression","storage.type","storage.modifier"],settings:{foreground:"var(--color-syntax-keyword)"}},{scope:["string","string.quoted","string.template"],settings:{foreground:"var(--color-syntax-string)"}},{scope:["entity.name.function","support.function","meta.function-call"],settings:{foreground:"var(--color-syntax-function)"}},{scope:["variable","variable.other","variable.parameter","meta.definition.variable"],settings:{foreground:"var(--color-syntax-variable)"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"var(--color-syntax-number)"}},{scope:["keyword.operator","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.arithmetic"],settings:{foreground:"var(--color-syntax-operator)"}},{scope:["entity.name.tag","punctuation.definition.tag","support.class.component"],settings:{foreground:"var(--color-syntax-tag)"}},{scope:["entity.other.attribute-name","meta.tag.attributes"],settings:{foreground:"var(--color-syntax-attr)"}},{scope:["punctuation","meta.brace","punctuation.definition.block","punctuation.separator","punctuation.terminator"],settings:{foreground:"var(--color-syntax-punctuation)"}},{scope:["entity.name.type","support.type","support.class","entity.other.inherited-class"],settings:{foreground:"var(--color-syntax-type)"}}]},we={typescript:()=>import('@shikijs/langs/typescript'),javascript:()=>import('@shikijs/langs/javascript'),tsx:()=>import('@shikijs/langs/tsx'),jsx:()=>import('@shikijs/langs/jsx'),html:()=>import('@shikijs/langs/html'),css:()=>import('@shikijs/langs/css'),json:()=>import('@shikijs/langs/json'),markdown:()=>import('@shikijs/langs/markdown'),python:()=>import('@shikijs/langs/python'),rust:()=>import('@shikijs/langs/rust'),go:()=>import('@shikijs/langs/go'),java:()=>import('@shikijs/langs/java'),c:()=>import('@shikijs/langs/c'),cpp:()=>import('@shikijs/langs/cpp'),csharp:()=>import('@shikijs/langs/csharp'),vue:()=>import('@shikijs/langs/vue'),xml:()=>import('@shikijs/langs/xml'),yaml:()=>import('@shikijs/langs/yaml'),sql:()=>import('@shikijs/langs/sql'),bash:()=>import('@shikijs/langs/bash'),shell:()=>import('@shikijs/langs/shell')},z=null,W=new Set;function Te(){return z||(z=Promise.all([import('shiki/core'),import('shiki/engine/javascript')]).then(([{createHighlighterCore:e},{createJavaScriptRegexEngine:t}])=>e({themes:[ke],langs:[],engine:t()}))),z}async function Ne(e,t,r){let s=await Te();if(t&&!W.has(t)){let n=we[t];if(n)try{let l=await n();await s.loadLanguage(l.default??l),W.add(t);}catch{t="text";}else t="text";}let a=s.codeToHtml(e,{lang:t||"text",theme:"onyx-css-vars"});if(a=a.replace(/(<pre [^>]*style=")/,"$1line-height:1.7;tab-size:2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;"),r){let n=0;a=a.replace(/<span class="line">/g,()=>(n++,`<span class="line"><span class="line-number" data-line="${n}"></span>`));}return a}function B({code:e,language:t="text",lineNumbers:r=false,editable:s=false,onCodeChange:a,size:n,className:l,...c}){let[o,y]=L.useState(""),g=L.useRef(null),b=L.useRef(null),d=L.useRef(null);L.useEffect(()=>{let p=false;return Ne(e,t,s?false:r).then(m=>{p||y(m);}),()=>{p=true;}},[e,t,r,s]);let T=L.useCallback(()=>{let p=b.current,m=d.current?.querySelector("pre"),R=g.current?.querySelector("[data-gutter]");p&&m&&(m.scrollTop=p.scrollTop,m.scrollLeft=p.scrollLeft),p&&R&&(R.scrollTop=p.scrollTop);},[]),u=L.useCallback(p=>{a?.(p.target.value);},[a]),f=L.useCallback(p=>{if(p.key==="Tab"){p.preventDefault();let m=p.currentTarget,R=m.selectionStart,re=m.selectionEnd,ae=m.value.substring(0,R)+" "+m.value.substring(re);a?.(ae),requestAnimationFrame(()=>{m.selectionStart=m.selectionEnd=R+2;});}},[a]),h=r&&"[&_.line-number]:inline-block [&_.line-number]:w-8 [&_.line-number]:mr-4 [&_.line-number]:text-right [&_.line-number]:text-secondary-400 [&_.line-number]:select-none [&_.line-number]:before:content-[attr(data-line)]",K="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",U=1.7,te=e.split(`
|
|
2
|
-
`).length;return s?jsxRuntime.jsxs("div",{ref:g,className:i(V({size:n}),"flex border border-primary-200 dark:border-primary-700",l),style:{background:"var(--color-syntax-bg)"},...c,children:[r&&jsxRuntime.jsx("div",{"data-gutter":true,"aria-hidden":true,className:"shrink-0 select-none overflow-hidden py-4 pl-3 pr-1 text-right text-secondary-400",style:{fontFamily:K,lineHeight:U,width:"3rem"},children:Array.from({length:te},(p,m)=>jsxRuntime.jsx("div",{children:m+1},m))}),jsxRuntime.jsxs("div",{className:"relative min-w-0 flex-1",children:[jsxRuntime.jsx("textarea",{ref:b,value:e,onChange:u,onScroll:T,onKeyDown:f,spellCheck:false,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",className:"relative z-2 m-0 block h-full w-full resize-none overflow-auto whitespace-pre border-none bg-transparent p-4 text-transparent caret-primary-600 outline-none dark:caret-primary-400",style:{fontFamily:K,lineHeight:U,tabSize:2,minHeight:"6rem"}}),jsxRuntime.jsx("div",{ref:d,"aria-hidden":true,className:"pointer-events-none absolute inset-0 z-1 overflow-hidden [&_pre]:m-0 [&_pre]:h-full [&_pre]:overflow-hidden [&_pre]:p-4 [&_code]:bg-transparent",dangerouslySetInnerHTML:o?{__html:o}:void 0})]})]}):jsxRuntime.jsx("div",{ref:g,className:i(V({size:n}),"border border-primary-200 dark:border-primary-700",h,l),style:{background:"var(--color-syntax-bg)"},...c,children:jsxRuntime.jsx("div",{ref:d,className:"[&_pre]:m-0 [&_pre]:p-4",dangerouslySetInnerHTML:o?{__html:o}:void 0,children:o?void 0:jsxRuntime.jsx("pre",{className:"m-0 p-4",style:{background:"var(--color-syntax-bg)"},children:jsxRuntime.jsx("code",{children:e})})})})}var _e={up:lucideReact.TrendingUp,down:lucideReact.TrendingDown,neutral:lucideReact.Minus},Ke={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"};function F({title:e,value:t,prefix:r,suffix:s,icon:a,trend:n,trendValue:l,description:c,intent:o,size:y,className:g}){let b=n?_e[n]:null,d=n?Ke[n]:"";return jsxRuntime.jsx("div",{className:i($({intent:o,size:y}),g),children:jsxRuntime.jsxs("div",{className:"flex items-start justify-between gap-3",children:[jsxRuntime.jsxs("div",{className:"min-w-0 flex-1",children:[jsxRuntime.jsx("p",{className:"truncate text-xs font-medium tracking-wider uppercase text-secondary-500 dark:text-secondary-400",children:e}),jsxRuntime.jsxs("p",{className:"mt-1 flex items-baseline gap-1 text-2xl font-bold text-primary-900 dark:text-primary-50",children:[r&&jsxRuntime.jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:r}),jsxRuntime.jsx("span",{children:t}),s&&jsxRuntime.jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:s})]}),(n||c)&&jsxRuntime.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[n&&b&&jsxRuntime.jsxs("span",{className:i("flex items-center gap-0.5 text-xs font-semibold",d),children:[jsxRuntime.jsx(b,{className:"h-3.5 w-3.5"}),l]}),c&&jsxRuntime.jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:c})]})]}),a&&jsxRuntime.jsx("div",{className:i("flex h-10 w-10 shrink-0 items-center justify-center rounded-xl [&_svg]:h-5 [&_svg]:w-5",o==="success"&&"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",o==="danger"&&"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",o==="warning"&&"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400",(!o||o==="primary")&&"bg-primary-100 text-primary-600 dark:bg-primary-800 dark:text-primary-400"),children:a})]})})}function Ee(e){return 1-Math.pow(1-e,4)}function De(e,t,r,s,a){let[n,l]=L.useState(()=>a?a(t):t.toFixed(s)),c=L.useRef(null),o=L.useRef(null);return L.useEffect(()=>{c.current!==null&&cancelAnimationFrame(c.current),o.current=null;let y=g=>{o.current===null&&(o.current=g);let b=g-o.current,d=Math.min(b/r,1),T=Ee(d),u=t+(e-t)*T;l(a?a(u):u.toFixed(s)),d<1&&(c.current=requestAnimationFrame(y));};return c.current=requestAnimationFrame(y),()=>{c.current!==null&&cancelAnimationFrame(c.current);}},[e,t,r,s,a]),n}var Ae={up:lucideReact.TrendingUp,down:lucideReact.TrendingDown,neutral:lucideReact.Minus},Ie={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"},ee={primary:"bg-primary-100 text-primary-600 dark:bg-primary-800/60 dark:text-primary-300",success:"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",danger:"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",warning:"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400"};function j({title:e,value:t,decimals:r=0,prefix:s,suffix:a,icon:n,trend:l,trendValue:c,description:o,animateDuration:y=1200,formatter:g,from:b=0,intent:d,size:T,className:u}){let f=De(t,b,y,r,g),h=l?Ae[l]:null,K=l?Ie[l]:"";return jsxRuntime.jsxs("div",{className:i(G({intent:d,size:T}),u),children:[jsxRuntime.jsx("div",{className:i("pointer-events-none absolute inset-x-0 top-0 h-0.5 rounded-t-xl",d==="success"&&"bg-gradient-to-r from-success-400 to-success-600",d==="danger"&&"bg-gradient-to-r from-danger-400 to-danger-600",d==="warning"&&"bg-gradient-to-r from-warning-400 to-warning-600",(!d||d==="primary")&&"bg-gradient-to-r from-primary-400 to-primary-600")}),jsxRuntime.jsxs("div",{className:"flex items-start justify-between gap-4",children:[jsxRuntime.jsxs("div",{className:"min-w-0 flex-1",children:[jsxRuntime.jsx("p",{className:"text-xs font-semibold tracking-widest uppercase text-secondary-500 dark:text-secondary-400",children:e}),jsxRuntime.jsxs("p",{className:"mt-2 flex items-baseline gap-1",children:[s&&jsxRuntime.jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:s}),jsxRuntime.jsx("span",{className:"font-mono text-3xl font-bold tabular-nums text-primary-900 dark:text-primary-50",children:f}),a&&jsxRuntime.jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:a})]})]}),n&&jsxRuntime.jsx("div",{className:i("flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl [&_svg]:h-6 [&_svg]:w-6",ee[d??"primary"]??ee.primary),children:n})]}),(l||o)&&jsxRuntime.jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-primary-100 pt-3 dark:border-primary-700/50",children:[l&&h&&jsxRuntime.jsxs("span",{className:i("flex items-center gap-0.5 text-xs font-bold",K),children:[jsxRuntime.jsx(h,{className:"h-3.5 w-3.5"}),c]}),o&&jsxRuntime.jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:o})]})]})}var ze={Table:P,List:M,Tree:H,Chat:D,CodeBlock:B,Stat:F,MetricCard:j},or=ze;exports.Chat=D;exports.CodeBlock=B;exports.DataDisplay=ze;exports.List=M;exports.MetricCard=j;exports.Stat=F;exports.Table=P;exports.Tree=H;exports.default=or;
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var re=require('react'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var re__default=/*#__PURE__*/_interopDefault(re);function f(...r){return tailwindMerge.twMerge(clsx.clsx(r))}var ke=classVarianceAuthority.cva("w-full text-left text-sm",{variants:{intent:{default:"",striped:"[&_tbody_tr:nth-child(even)]:bg-primary-50 dark:[&_tbody_tr:nth-child(even)]:bg-primary-800/30",bordered:"[&_th]:border [&_td]:border [&_th]:border-primary-200 [&_td]:border-primary-200 dark:[&_th]:border-primary-700 dark:[&_td]:border-primary-700"},density:{compact:"[&_th]:px-2 [&_th]:py-1 [&_td]:px-2 [&_td]:py-1",default:"",relaxed:"[&_th]:px-6 [&_th]:py-5 [&_td]:px-6 [&_td]:py-5"}},defaultVariants:{intent:"default",density:"default"}}),Te=classVarianceAuthority.cva("text-sm text-primary-700 dark:text-primary-300",{variants:{intent:{default:"space-y-1",bordered:"divide-y divide-primary-200 rounded-lg border border-primary-200 dark:divide-primary-700 dark:border-primary-700 [&>li]:px-4 [&>li]:py-2",hover:"[&>li]:rounded-md [&>li]:px-3 [&>li]:py-2 [&>li]:transition-colors [&>li:hover]:bg-primary-50 dark:[&>li:hover]:bg-primary-800/50"}},defaultVariants:{intent:"default"}});classVarianceAuthority.cva("group flex w-full items-center gap-1.5 text-left [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3 [&_svg]:w-3",md:"py-1.5 text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"py-2 text-base [&_svg]:h-4 [&_svg]:w-4"}},defaultVariants:{size:"md"}});classVarianceAuthority.cva("flex cursor-pointer items-center gap-1 rounded transition-colors [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"py-1 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"py-1.5 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{size:"md"}});var Ne=classVarianceAuthority.cva("relative rounded-xl border bg-white p-5 shadow-sm transition-shadow hover:shadow-md dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),Re=classVarianceAuthority.cva("relative overflow-hidden rounded-xl border bg-white p-5 shadow-sm transition-all duration-300 hover:shadow-lg dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),le=classVarianceAuthority.cva("overflow-x-auto rounded-lg font-mono [background:var(--color-syntax-bg)] [&_pre]:m-0 [&_pre]:p-4 [&_code]:bg-transparent",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}});function ce({intent:r,density:a,className:t,...o}){return jsxRuntime.jsx("div",{className:"w-full overflow-auto",children:jsxRuntime.jsx("table",{className:f(ke({intent:r,density:a}),t),...o})})}var Be=re.createContext({size:"md"});function de({intent:r,size:a="md",className:t,...o}){return jsxRuntime.jsx(Be.Provider,{value:{size:a},children:jsxRuntime.jsx("ul",{className:f(Te({intent:r}),t),...o})})}var Ue=re.createContext({showLines:true,expandedKeys:null,onToggleKey:()=>{},size:"md"});function me({showLines:r=true,showRoot:a=true,expandedKeys:t,defaultExpandedKeys:o="all",onExpandedKeysChange:s,size:c="md",className:i,children:g,...d}){let [T,w]=re.useState(()=>o),u=re.useCallback(p=>{if(t){let b=new Set(t);b.has(p)?b.delete(p):b.add(p),s?.(b);}else w(b=>{if(b==="all")return new Set(["__ALL_MINUS__",p]);let y=new Set(b);return y.has(p)?y.delete(p):y.add(p),y});},[t,s]),m=t??(T==="all"?null:T);return jsxRuntime.jsx(Ue.Provider,{value:{showLines:r,expandedKeys:m,onToggleKey:u,size:c},children:a?jsxRuntime.jsx("ul",{className:f("text-sm",i),role:"tree",...d,children:g}):jsxRuntime.jsx("ul",{className:f("text-sm",i),role:"tree",...d,children:jsxRuntime.jsx(qe,{children:g})})})}function qe({children:r}){let a=Ce(r);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:a.map(t=>re__default.default.isValidElement(t)&&t.props.children?t.props.children:null)})}function Ce(r){let a=[];return re__default.default.Children.forEach(r,t=>{re__default.default.isValidElement(t)&&t.type===re__default.default.Fragment?a.push(...Ce(t.props.children)):a.push(t);}),a}function $e({avatar:r,sender:a}){return r?typeof r=="string"?/^(?:https?|data|blob):/.test(r)?jsxRuntime.jsx("img",{src:r,alt:a,className:"h-8 w-8 shrink-0 rounded-full object-cover",draggable:false}):jsxRuntime.jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-lg select-none",children:r}):jsxRuntime.jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full",children:r}):jsxRuntime.jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-semibold select-none",children:a.charAt(0).toUpperCase()})}function Ge({msg:r,alignRight:a}){return jsxRuntime.jsxs("div",{className:f("flex gap-2.5",a?"flex-row-reverse":"flex-row"),children:[jsxRuntime.jsx($e,{avatar:r.avatar,sender:r.sender}),jsxRuntime.jsxs("div",{className:f("flex max-w-[75%] flex-col gap-0.5",a?"items-end":"items-start"),children:[jsxRuntime.jsx("span",{className:"text-primary-500 dark:text-primary-400 text-xs",children:r.sender}),jsxRuntime.jsx("div",{className:f("rounded-xl px-3 py-2 text-sm leading-relaxed",a?"rounded-tr-sm bg-primary-500 text-white dark:bg-primary-600":"bg-primary-100 text-primary-800 dark:bg-primary-800 dark:text-primary-200 rounded-tl-sm"),children:r.content}),r.time&&jsxRuntime.jsx("span",{className:"text-primary-400 dark:text-primary-500 text-[10px]",children:r.time})]})]})}function ue({messages:r,mode:a="split",autoScroll:t=true,className:o,...s}){let c=re.useRef(null);return re.useEffect(()=>{t&&c.current?.scrollIntoView({behavior:"smooth"});},[r,t]),jsxRuntime.jsxs("div",{className:f("flex flex-col gap-4 overflow-y-auto rounded-lg border p-4","border-primary-200 dark:border-primary-700 dark:bg-primary-900 bg-white",o),...s,children:[r.map(i=>{let g=a==="split"&&!!i.self;return jsxRuntime.jsx(Ge,{msg:i,alignRight:g},i.id)}),jsxRuntime.jsx("div",{ref:c})]})}var Ze={name:"onyx-css-vars",type:"dark",settings:[{settings:{foreground:"var(--color-syntax-plain)",background:"var(--color-syntax-bg)"}},{scope:["comment","punctuation.definition.comment"],settings:{foreground:"var(--color-syntax-comment)",fontStyle:"italic"}},{scope:["keyword","keyword.control","keyword.operator.new","keyword.operator.expression","storage.type","storage.modifier"],settings:{foreground:"var(--color-syntax-keyword)"}},{scope:["string","string.quoted","string.template"],settings:{foreground:"var(--color-syntax-string)"}},{scope:["entity.name.function","support.function","meta.function-call"],settings:{foreground:"var(--color-syntax-function)"}},{scope:["variable","variable.other","variable.parameter","meta.definition.variable"],settings:{foreground:"var(--color-syntax-variable)"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"var(--color-syntax-number)"}},{scope:["keyword.operator","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.arithmetic"],settings:{foreground:"var(--color-syntax-operator)"}},{scope:["entity.name.tag","punctuation.definition.tag","support.class.component"],settings:{foreground:"var(--color-syntax-tag)"}},{scope:["entity.other.attribute-name","meta.tag.attributes"],settings:{foreground:"var(--color-syntax-attr)"}},{scope:["punctuation","meta.brace","punctuation.definition.block","punctuation.separator","punctuation.terminator"],settings:{foreground:"var(--color-syntax-punctuation)"}},{scope:["entity.name.type","support.type","support.class","entity.other.inherited-class"],settings:{foreground:"var(--color-syntax-type)"}}]},et={typescript:()=>import('@shikijs/langs/typescript'),javascript:()=>import('@shikijs/langs/javascript'),tsx:()=>import('@shikijs/langs/tsx'),jsx:()=>import('@shikijs/langs/jsx'),html:()=>import('@shikijs/langs/html'),css:()=>import('@shikijs/langs/css'),json:()=>import('@shikijs/langs/json'),markdown:()=>import('@shikijs/langs/markdown'),python:()=>import('@shikijs/langs/python'),rust:()=>import('@shikijs/langs/rust'),go:()=>import('@shikijs/langs/go'),java:()=>import('@shikijs/langs/java'),c:()=>import('@shikijs/langs/c'),cpp:()=>import('@shikijs/langs/cpp'),csharp:()=>import('@shikijs/langs/csharp'),vue:()=>import('@shikijs/langs/vue'),xml:()=>import('@shikijs/langs/xml'),yaml:()=>import('@shikijs/langs/yaml'),sql:()=>import('@shikijs/langs/sql'),bash:()=>import('@shikijs/langs/bash'),shell:()=>import('@shikijs/langs/shell')},be=null,Ve=new Set;function tt(){return be||(be=Promise.all([import('shiki/core'),import('shiki/engine/javascript')]).then(([{createHighlighterCore:r},{createJavaScriptRegexEngine:a}])=>r({themes:[Ze],langs:[],engine:a()}))),be}async function rt(r,a,t){let o=await tt();if(a&&!Ve.has(a)){let c=et[a];if(c)try{let i=await c();await o.loadLanguage(i.default??i),Ve.add(a);}catch{a="text";}else a="text";}let s=o.codeToHtml(r,{lang:a||"text",theme:"onyx-css-vars"});if(s=s.replace(/(<pre [^>]*style=")/,"$1line-height:1.7;tab-size:2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;"),t){let c=0;s=s.replace(/<span class="line">/g,()=>(c++,`<span class="line"><span class="line-number" data-line="${c}"></span>`));}return s}function ye({code:r,language:a="text",lineNumbers:t=false,editable:o=false,onCodeChange:s,size:c,className:i,...g}){let[d,T]=re.useState(""),w=re.useRef(null),N=re.useRef(null),u=re.useRef(null);re.useEffect(()=>{let v=false;return rt(r,a,o?false:t).then(x=>{v||T(x);}),()=>{v=true;}},[r,a,t,o]);let m=re.useCallback(()=>{let v=N.current,x=u.current?.querySelector("pre"),L=w.current?.querySelector("[data-gutter]");v&&x&&(x.scrollTop=v.scrollTop,x.scrollLeft=v.scrollLeft),v&&L&&(L.scrollTop=v.scrollTop);},[]),p=re.useCallback(v=>{s?.(v.target.value);},[s]),b=re.useCallback(v=>{if(v.key==="Tab"){v.preventDefault();let x=v.currentTarget,L=x.selectionStart,O=x.selectionEnd,P=x.value.substring(0,L)+" "+x.value.substring(O);s?.(P),requestAnimationFrame(()=>{x.selectionStart=x.selectionEnd=L+2;});}},[s]),y=t&&"[&_.line-number]:inline-block [&_.line-number]:w-8 [&_.line-number]:mr-4 [&_.line-number]:text-right [&_.line-number]:text-secondary-400 [&_.line-number]:select-none [&_.line-number]:before:content-[attr(data-line)]",k="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",I=1.7,S=r.split(`
|
|
2
|
+
`).length;return o?jsxRuntime.jsxs("div",{ref:w,className:f(le({size:c}),"flex border border-primary-200 dark:border-primary-700",i),style:{background:"var(--color-syntax-bg)"},...g,children:[t&&jsxRuntime.jsx("div",{"data-gutter":true,"aria-hidden":true,className:"shrink-0 select-none overflow-hidden py-4 pl-3 pr-1 text-right text-secondary-400",style:{fontFamily:k,lineHeight:I,width:"3rem"},children:Array.from({length:S},(v,x)=>jsxRuntime.jsx("div",{children:x+1},x))}),jsxRuntime.jsxs("div",{className:"relative min-w-0 flex-1",children:[jsxRuntime.jsx("textarea",{ref:N,value:r,onChange:p,onScroll:m,onKeyDown:b,spellCheck:false,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",className:"relative z-2 m-0 block h-full w-full resize-none overflow-auto whitespace-pre border-none bg-transparent p-4 text-transparent caret-primary-600 outline-none dark:caret-primary-400",style:{fontFamily:k,lineHeight:I,tabSize:2,minHeight:"6rem"}}),jsxRuntime.jsx("div",{ref:u,"aria-hidden":true,className:"pointer-events-none absolute inset-0 z-1 overflow-hidden [&_pre]:m-0 [&_pre]:h-full [&_pre]:overflow-hidden [&_pre]:p-4 [&_code]:bg-transparent",dangerouslySetInnerHTML:d?{__html:d}:void 0})]})]}):jsxRuntime.jsx("div",{ref:w,className:f(le({size:c}),"border border-primary-200 dark:border-primary-700",y,i),style:{background:"var(--color-syntax-bg)"},...g,children:jsxRuntime.jsx("div",{ref:u,className:"[&_pre]:m-0 [&_pre]:p-4",dangerouslySetInnerHTML:d?{__html:d}:void 0,children:d?void 0:jsxRuntime.jsx("pre",{className:"m-0 p-4",style:{background:"var(--color-syntax-bg)"},children:jsxRuntime.jsx("code",{children:r})})})})}var ot={up:lucideReact.TrendingUp,down:lucideReact.TrendingDown,neutral:lucideReact.Minus},it={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"};function xe({title:r,value:a,prefix:t,suffix:o,icon:s,trend:c,trendValue:i,description:g,intent:d,size:T,className:w}){let N=c?ot[c]:null,u=c?it[c]:"";return jsxRuntime.jsx("div",{className:f(Ne({intent:d,size:T}),w),children:jsxRuntime.jsxs("div",{className:"flex items-start justify-between gap-3",children:[jsxRuntime.jsxs("div",{className:"min-w-0 flex-1",children:[jsxRuntime.jsx("p",{className:"truncate text-xs font-medium tracking-wider uppercase text-secondary-500 dark:text-secondary-400",children:r}),jsxRuntime.jsxs("p",{className:"mt-1 flex items-baseline gap-1 text-2xl font-bold text-primary-900 dark:text-primary-50",children:[t&&jsxRuntime.jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:t}),jsxRuntime.jsx("span",{children:a}),o&&jsxRuntime.jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:o})]}),(c||g)&&jsxRuntime.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[c&&N&&jsxRuntime.jsxs("span",{className:f("flex items-center gap-0.5 text-xs font-semibold",u),children:[jsxRuntime.jsx(N,{className:"h-3.5 w-3.5"}),i]}),g&&jsxRuntime.jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:g})]})]}),s&&jsxRuntime.jsx("div",{className:f("flex h-10 w-10 shrink-0 items-center justify-center rounded-xl [&_svg]:h-5 [&_svg]:w-5",d==="success"&&"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",d==="danger"&&"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",d==="warning"&&"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400",(!d||d==="primary")&&"bg-primary-100 text-primary-600 dark:bg-primary-800 dark:text-primary-400"),children:s})]})})}function ut(r){return 1-Math.pow(1-r,4)}function ft(r,a,t,o,s){let[c,i]=re.useState(()=>s?s(a):a.toFixed(o)),g=re.useRef(null),d=re.useRef(null);return re.useEffect(()=>{g.current!==null&&cancelAnimationFrame(g.current),d.current=null;let T=w=>{d.current===null&&(d.current=w);let N=w-d.current,u=Math.min(N/t,1),m=ut(u),p=a+(r-a)*m;i(s?s(p):p.toFixed(o)),u<1&&(g.current=requestAnimationFrame(T));};return g.current=requestAnimationFrame(T),()=>{g.current!==null&&cancelAnimationFrame(g.current);}},[r,a,t,o,s]),c}var gt={up:lucideReact.TrendingUp,down:lucideReact.TrendingDown,neutral:lucideReact.Minus},bt={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"},Pe={primary:"bg-primary-100 text-primary-600 dark:bg-primary-800/60 dark:text-primary-300",success:"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",danger:"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",warning:"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400"};function he({title:r,value:a,decimals:t=0,prefix:o,suffix:s,icon:c,trend:i,trendValue:g,description:d,animateDuration:T=1200,formatter:w,from:N=0,intent:u,size:m,className:p}){let b=ft(a,N,T,t,w),y=i?gt[i]:null,k=i?bt[i]:"";return jsxRuntime.jsxs("div",{className:f(Re({intent:u,size:m}),p),children:[jsxRuntime.jsx("div",{className:f("pointer-events-none absolute inset-x-0 top-0 h-0.5 rounded-t-xl",u==="success"&&"bg-gradient-to-r from-success-400 to-success-600",u==="danger"&&"bg-gradient-to-r from-danger-400 to-danger-600",u==="warning"&&"bg-gradient-to-r from-warning-400 to-warning-600",(!u||u==="primary")&&"bg-gradient-to-r from-primary-400 to-primary-600")}),jsxRuntime.jsxs("div",{className:"flex items-start justify-between gap-4",children:[jsxRuntime.jsxs("div",{className:"min-w-0 flex-1",children:[jsxRuntime.jsx("p",{className:"text-xs font-semibold tracking-widest uppercase text-secondary-500 dark:text-secondary-400",children:r}),jsxRuntime.jsxs("p",{className:"mt-2 flex items-baseline gap-1",children:[o&&jsxRuntime.jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:o}),jsxRuntime.jsx("span",{className:"font-mono text-3xl font-bold tabular-nums text-primary-900 dark:text-primary-50",children:b}),s&&jsxRuntime.jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:s})]})]}),c&&jsxRuntime.jsx("div",{className:f("flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl [&_svg]:h-6 [&_svg]:w-6",Pe[u??"primary"]??Pe.primary),children:c})]}),(i||d)&&jsxRuntime.jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-primary-100 pt-3 dark:border-primary-700/50",children:[i&&y&&jsxRuntime.jsxs("span",{className:f("flex items-center gap-0.5 text-xs font-bold",k),children:[jsxRuntime.jsx(y,{className:"h-3.5 w-3.5"}),g]}),d&&jsxRuntime.jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:d})]})]})}var He="onyx-vlist:";function _e(r,a){let t=0,o=r.length-2;for(;t<=o;){let s=t+o>>1;if(r[s+1]<=a)t=s+1;else if(r[s]>a)o=s-1;else return s}return Math.max(0,t)}function Ke(r,a){let{items:t,itemHeight:o,estimatedItemHeight:s=48,direction:c="vertical",overscan:i=3,onReachEnd:g,reachEndThreshold:d=120,isLoading:T,onScroll:w,onVisibleRangeChange:N,scrollRestorationId:u}=r,m=c==="vertical",p=typeof o=="number",b=p?o:0,y=re.useRef(null),[k,I]=re.useState(300);re.useEffect(()=>{let e=y.current;if(!e)return;let n=new ResizeObserver(([V])=>{let E=m?V.contentRect.height:V.contentRect.width;E>0&&I(E);});n.observe(e);let l=e.getBoundingClientRect(),h=m?l.height:l.width;return h>0&&I(h),()=>n.disconnect()},[m]);let[S,v]=re.useState(0);re.useEffect(()=>{if(!u)return;let e=y.current;if(e)try{let n=localStorage.getItem(He+u);if(n!==null){let l=parseFloat(n);!Number.isNaN(l)&&l>0&&requestAnimationFrame(()=>{m?e.scrollTop=l:e.scrollLeft=l;});}}catch{}},[]);let x=re.useRef(false),L=re.useRef(t.length);t.length!==L.current&&(L.current=t.length,x.current=false);let O=re.useCallback(()=>{let e=y.current;if(!e)return;let n=m?e.scrollTop:e.scrollLeft;if(v(n),w?.(n),u)try{localStorage.setItem(He+u,String(n));}catch{}g&&!T&&(m?e.scrollHeight-e.clientHeight:e.scrollWidth-e.clientWidth)-n<=d&&(x.current||(x.current=true,g()));},[m,w,u,g,T,d]);re.useEffect(()=>{let e=y.current;if(e)return e.addEventListener("scroll",O,{passive:true}),()=>e.removeEventListener("scroll",O)},[O]),re.useEffect(()=>{if(m)return;let e=y.current;if(!e)return;let n=l=>{Math.abs(l.deltaX)>=Math.abs(l.deltaY)||(l.preventDefault(),e.scrollLeft+=l.deltaY);};return e.addEventListener("wheel",n,{passive:false}),()=>e.removeEventListener("wheel",n)},[m]),re.useEffect(()=>{if(m)return;let e=y.current;if(!e)return;let n=5,l=false,h=false,V=0,E=0,Q=z=>{z.target.closest("button,a,input,select,textarea,[role=button],[role=checkbox],[role=radio],[role=option]")||z.button===0&&(l=true,h=false,V=z.clientX,E=e.scrollLeft,e.setPointerCapture(z.pointerId));},_=z=>{if(!l)return;let ie=V-z.clientX;if(!h){if(Math.abs(ie)<n)return;h=true,e.style.cursor="grabbing",e.style.userSelect="none";}e.scrollLeft=E+ie;},te=z=>{if(l){l=false,e.style.cursor="",e.style.userSelect="";try{e.releasePointerCapture(z.pointerId);}catch{}}};return e.addEventListener("pointerdown",Q),e.addEventListener("pointermove",_),e.addEventListener("pointerup",te),e.addEventListener("pointercancel",te),()=>{e.removeEventListener("pointerdown",Q),e.removeEventListener("pointermove",_),e.removeEventListener("pointerup",te),e.removeEventListener("pointercancel",te);}},[m]);let P=re.useRef(new Map),[ee,se]=re.useState(0),oe=re.useCallback((e,n)=>{if(p||!n)return;let l=m?n.offsetHeight:n.offsetWidth;l>0&&P.current.get(e)!==l&&(P.current.set(e,l),se(h=>h+1));},[p,m]),Y=re.useRef(t);Y.current!==t&&(Y.current=t,p||(P.current=new Map));let C=re.useMemo(()=>{if(p)return [];let e=new Array(t.length+1);e[0]=0;for(let n=0;n<t.length;n++){let l=P.current.get(n),h;l!==void 0?h=l:typeof o=="function"?h=t[n]!==void 0?o(t[n],n):s:h=s,e[n+1]=e[n]+h;}return e},[p,t,o,s,ee]),R=re.useCallback(e=>p?e*b:C[e]??0,[p,b,C]),j=re.useCallback(e=>{if(p)return b;let n=P.current.get(e);return n!==void 0?n:typeof o=="function"&&t[e]!==void 0?o(t[e],e):s},[p,b,o,t,s,ee]),$,H,D;if(p){$=b*t.length;let e=Math.floor(S/b),n=Math.ceil((S+k)/b);H=Math.max(0,e-i),D=Math.min(t.length-1,n+i-1);}else if($=C[t.length]??0,C.length>1){let e=_e(C,S);H=Math.max(0,e-i);let n=e;for(;n<t.length&&C[n]<S+k;)n++;D=Math.min(t.length-1,n+i-1);}else H=0,D=Math.min(t.length-1,i*2);H=Math.max(0,H),D=Math.max(H,Math.min(t.length-1,D));let G=re.useRef({start:-1,end:-1});return re.useEffect(()=>{let e,n;if(p&&b>0)e=Math.max(0,Math.floor(S/b)),n=Math.min(t.length-1,Math.ceil((S+k)/b)-1);else {for(e=_e(C,S),n=e;n<t.length&&C[n]<S+k;)n++;n=Math.max(0,n-1);}(G.current.start!==e||G.current.end!==n)&&(G.current={start:e,end:n},N?.(e,n));}),re.useImperativeHandle(a,()=>({scrollToIndex(e,n="auto"){let l=y.current;if(!l)return;let h=R(e),V=j(e),E=m?l.clientHeight:l.clientWidth,Q=m?l.scrollTop:l.scrollLeft,_;if(n==="start")_=h;else if(n==="end")_=h-E+V;else if(n==="center")_=h-(E-V)/2;else if(h<Q)_=h;else if(h+V>Q+E)_=h-E+V;else return;l.scrollTo({[m?"top":"left"]:Math.max(0,_),behavior:"smooth"});},scrollToOffset(e){let n=y.current;n&&n.scrollTo({[m?"top":"left"]:e,behavior:"smooth"});},getScrollOffset(){let e=y.current;return e?m?e.scrollTop:e.scrollLeft:0}}),[R,j,m]),{scrollerRef:y,startIndex:H,endIndex:D,totalSize:$,getItemOffset:R,getItemSize:j,measureItem:oe}}function vt({text:r="Loading\u2026"}){return jsxRuntime.jsxs("div",{className:"flex items-center justify-center gap-2 py-4 text-sm text-primary-400",children:[jsxRuntime.jsx("span",{"aria-hidden":true,className:"h-4 w-4 animate-spin rounded-full border-2 border-primary-200 border-t-primary-500"}),jsxRuntime.jsx("span",{children:r})]})}function wt({text:r="No items"}){return jsxRuntime.jsxs("div",{className:"flex h-full min-h-[120px] flex-col items-center justify-center gap-2 text-sm text-primary-400",children:[jsxRuntime.jsx("svg",{"aria-hidden":true,xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 opacity-40",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"})}),jsxRuntime.jsx("span",{children:r})]})}function kt(r,a){let{items:t,renderItem:o,getItemKey:s,itemHeight:c,direction:i="vertical",height:g="100%",width:d="100%",isLoading:T=false,loadingRenderer:w,loadingText:N,emptyRenderer:u,emptyText:m,itemClassName:p,className:b,style:y}=r,k=i==="vertical",I=typeof c!="number",{scrollerRef:S,startIndex:v,endIndex:x,totalSize:L,getItemOffset:O,getItemSize:P,measureItem:ee}=Ke(r,a),se={position:"relative",overflowX:k?"hidden":"auto",overflowY:k?"auto":"hidden",height:g,width:d,cursor:k?void 0:"grab"},oe={position:"relative",[k?"height":"width"]:L,[k?"width":"height"]:"100%",overflow:"hidden"},Y=[];for(let R=v;R<=x;R++){let j=t[R];if(j===void 0)continue;let $=O(R),H=P(R),D=s?s(j,R):R,G={position:"absolute",[k?"top":"left"]:$,[k?"height":"width"]:I?void 0:H,[k?"width":"height"]:"100%",boxSizing:"border-box"};Y.push(jsxRuntime.jsx("div",{role:"row","aria-rowindex":R+1,style:G,className:f("onyx-vlist-item",p),ref:I?e=>ee(R,e):void 0,children:o(j,R)},D));}let C=t.length===0;return jsxRuntime.jsxs("div",{ref:S,role:"grid","aria-rowcount":t.length,"data-virtual-list":true,"data-direction":i,className:f("onyx-virtual-list",b),style:{...se,...y},children:[C?u?u():jsxRuntime.jsx(wt,{text:m}):jsxRuntime.jsx("div",{style:oe,children:Y}),T&&(w?w():jsxRuntime.jsx(vt,{text:N}))]})}var ae=re.forwardRef(kt);var Tt={Table:ce,List:de,Tree:me,Chat:ue,CodeBlock:ye,Stat:xe,MetricCard:he,VirtualList:ae},an=Tt;
|
|
3
|
+
exports.Chat=ue;exports.CodeBlock=ye;exports.DataDisplay=Tt;exports.List=de;exports.MetricCard=he;exports.Stat=xe;exports.Table=ce;exports.Tree=me;exports.VirtualList=ae;exports.default=an;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-virtual-list]{-webkit-overflow-scrolling:touch;scroll-behavior:auto;outline:none}.onyx-vlist-item{will-change:transform;contain:layout style}[data-virtual-list][data-direction=horizontal]{cursor:grab}[data-virtual-list]::-webkit-scrollbar{width:6px;height:6px}[data-virtual-list]::-webkit-scrollbar-track{background:transparent}[data-virtual-list]::-webkit-scrollbar-thumb{border-radius:9999px;background-color:color-mix(in srgb,currentColor 25%,transparent)}[data-virtual-list]::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,currentColor 40%,transparent)}
|
|
@@ -9,5 +9,10 @@ export { StatTrend_alias_1 as StatTrend } from '../_tsup-dts-rollup.cjs';
|
|
|
9
9
|
export { MetricCard_alias_1 as MetricCard } from '../_tsup-dts-rollup.cjs';
|
|
10
10
|
export { MetricCardProps_alias_1 as MetricCardProps } from '../_tsup-dts-rollup.cjs';
|
|
11
11
|
export { MetricCardTrend_alias_1 as MetricCardTrend } from '../_tsup-dts-rollup.cjs';
|
|
12
|
+
export { VirtualList_alias_1 as VirtualList } from '../_tsup-dts-rollup.cjs';
|
|
13
|
+
export { VirtualListHandle_alias_1 as VirtualListHandle } from '../_tsup-dts-rollup.cjs';
|
|
14
|
+
export { VirtualListProps_alias_1 as VirtualListProps } from '../_tsup-dts-rollup.cjs';
|
|
15
|
+
export { VirtualListAlign_alias_1 as VirtualListAlign } from '../_tsup-dts-rollup.cjs';
|
|
16
|
+
export { VirtualListDirection_alias_1 as VirtualListDirection } from '../_tsup-dts-rollup.cjs';
|
|
12
17
|
export { DataDisplay_alias_1 as DataDisplay } from '../_tsup-dts-rollup.cjs';
|
|
13
18
|
export { default_alias_2 as default } from '../_tsup-dts-rollup.cjs';
|
|
@@ -9,5 +9,10 @@ export { StatTrend_alias_1 as StatTrend } from '../_tsup-dts-rollup.js';
|
|
|
9
9
|
export { MetricCard_alias_1 as MetricCard } from '../_tsup-dts-rollup.js';
|
|
10
10
|
export { MetricCardProps_alias_1 as MetricCardProps } from '../_tsup-dts-rollup.js';
|
|
11
11
|
export { MetricCardTrend_alias_1 as MetricCardTrend } from '../_tsup-dts-rollup.js';
|
|
12
|
+
export { VirtualList_alias_1 as VirtualList } from '../_tsup-dts-rollup.js';
|
|
13
|
+
export { VirtualListHandle_alias_1 as VirtualListHandle } from '../_tsup-dts-rollup.js';
|
|
14
|
+
export { VirtualListProps_alias_1 as VirtualListProps } from '../_tsup-dts-rollup.js';
|
|
15
|
+
export { VirtualListAlign_alias_1 as VirtualListAlign } from '../_tsup-dts-rollup.js';
|
|
16
|
+
export { VirtualListDirection_alias_1 as VirtualListDirection } from '../_tsup-dts-rollup.js';
|
|
12
17
|
export { DataDisplay_alias_1 as DataDisplay } from '../_tsup-dts-rollup.js';
|
|
13
18
|
export { default_alias_2 as default } from '../_tsup-dts-rollup.js';
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import L,{createContext,useState,useCallback,useRef,useEffect}from'react';import {Minus,TrendingDown,TrendingUp}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,Fragment,jsxs}from'react/jsx-runtime';function i(...e){return twMerge(clsx(e))}var q=cva("w-full text-left text-sm",{variants:{intent:{default:"",striped:"[&_tbody_tr:nth-child(even)]:bg-primary-50 dark:[&_tbody_tr:nth-child(even)]:bg-primary-800/30",bordered:"[&_th]:border [&_td]:border [&_th]:border-primary-200 [&_td]:border-primary-200 dark:[&_th]:border-primary-700 dark:[&_td]:border-primary-700"},density:{compact:"[&_th]:px-2 [&_th]:py-1 [&_td]:px-2 [&_td]:py-1",default:"",relaxed:"[&_th]:px-6 [&_th]:py-5 [&_td]:px-6 [&_td]:py-5"}},defaultVariants:{intent:"default",density:"default"}}),O=cva("text-sm text-primary-700 dark:text-primary-300",{variants:{intent:{default:"space-y-1",bordered:"divide-y divide-primary-200 rounded-lg border border-primary-200 dark:divide-primary-700 dark:border-primary-700 [&>li]:px-4 [&>li]:py-2",hover:"[&>li]:rounded-md [&>li]:px-3 [&>li]:py-2 [&>li]:transition-colors [&>li:hover]:bg-primary-50 dark:[&>li:hover]:bg-primary-800/50"}},defaultVariants:{intent:"default"}});cva("group flex w-full items-center gap-1.5 text-left [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3 [&_svg]:w-3",md:"py-1.5 text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"py-2 text-base [&_svg]:h-4 [&_svg]:w-4"}},defaultVariants:{size:"md"}});cva("flex cursor-pointer items-center gap-1 rounded transition-colors [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"py-1 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"py-1.5 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{size:"md"}});var $=cva("relative rounded-xl border bg-white p-5 shadow-sm transition-shadow hover:shadow-md dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),G=cva("relative overflow-hidden rounded-xl border bg-white p-5 shadow-sm transition-all duration-300 hover:shadow-lg dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),V=cva("overflow-x-auto rounded-lg font-mono [background:var(--color-syntax-bg)] [&_pre]:m-0 [&_pre]:p-4 [&_code]:bg-transparent",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}});function P({intent:e,density:t,className:r,...s}){return jsx("div",{className:"w-full overflow-auto",children:jsx("table",{className:i(q({intent:e,density:t}),r),...s})})}var le=createContext({size:"md"});function M({intent:e,size:t="md",className:r,...s}){return jsx(le.Provider,{value:{size:t},children:jsx("ul",{className:i(O({intent:e}),r),...s})})}var me=createContext({showLines:true,expandedKeys:null,onToggleKey:()=>{},size:"md"});function H({showLines:e=true,showRoot:t=true,expandedKeys:r,defaultExpandedKeys:s="all",onExpandedKeysChange:a,size:n="md",className:l,children:c,...o}){let [y,g]=useState(()=>s),d=useCallback(u=>{if(r){let f=new Set(r);f.has(u)?f.delete(u):f.add(u),a?.(f);}else g(f=>{if(f==="all")return new Set(["__ALL_MINUS__",u]);let h=new Set(f);return h.has(u)?h.delete(u):h.add(u),h});},[r,a]),T=r??(y==="all"?null:y);return jsx(me.Provider,{value:{showLines:e,expandedKeys:T,onToggleKey:d,size:n},children:t?jsx("ul",{className:i("text-sm",l),role:"tree",...o,children:c}):jsx("ul",{className:i("text-sm",l),role:"tree",...o,children:jsx(ue,{children:c})})})}function ue({children:e}){let t=J(e);return jsx(Fragment,{children:t.map(r=>L.isValidElement(r)&&r.props.children?r.props.children:null)})}function J(e){let t=[];return L.Children.forEach(e,r=>{L.isValidElement(r)&&r.type===L.Fragment?t.push(...J(r.props.children)):t.push(r);}),t}function be({avatar:e,sender:t}){return e?typeof e=="string"?/^(?:https?|data|blob):/.test(e)?jsx("img",{src:e,alt:t,className:"h-8 w-8 shrink-0 rounded-full object-cover",draggable:false}):jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-lg select-none",children:e}):jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full",children:e}):jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-semibold select-none",children:t.charAt(0).toUpperCase()})}function xe({msg:e,alignRight:t}){return jsxs("div",{className:i("flex gap-2.5",t?"flex-row-reverse":"flex-row"),children:[jsx(be,{avatar:e.avatar,sender:e.sender}),jsxs("div",{className:i("flex max-w-[75%] flex-col gap-0.5",t?"items-end":"items-start"),children:[jsx("span",{className:"text-primary-500 dark:text-primary-400 text-xs",children:e.sender}),jsx("div",{className:i("rounded-xl px-3 py-2 text-sm leading-relaxed",t?"rounded-tr-sm bg-primary-500 text-white dark:bg-primary-600":"bg-primary-100 text-primary-800 dark:bg-primary-800 dark:text-primary-200 rounded-tl-sm"),children:e.content}),e.time&&jsx("span",{className:"text-primary-400 dark:text-primary-500 text-[10px]",children:e.time})]})]})}function D({messages:e,mode:t="split",autoScroll:r=true,className:s,...a}){let n=useRef(null);return useEffect(()=>{r&&n.current?.scrollIntoView({behavior:"smooth"});},[e,r]),jsxs("div",{className:i("flex flex-col gap-4 overflow-y-auto rounded-lg border p-4","border-primary-200 dark:border-primary-700 dark:bg-primary-900 bg-white",s),...a,children:[e.map(l=>{let c=t==="split"&&!!l.self;return jsx(xe,{msg:l,alignRight:c},l.id)}),jsx("div",{ref:n})]})}var ke={name:"onyx-css-vars",type:"dark",settings:[{settings:{foreground:"var(--color-syntax-plain)",background:"var(--color-syntax-bg)"}},{scope:["comment","punctuation.definition.comment"],settings:{foreground:"var(--color-syntax-comment)",fontStyle:"italic"}},{scope:["keyword","keyword.control","keyword.operator.new","keyword.operator.expression","storage.type","storage.modifier"],settings:{foreground:"var(--color-syntax-keyword)"}},{scope:["string","string.quoted","string.template"],settings:{foreground:"var(--color-syntax-string)"}},{scope:["entity.name.function","support.function","meta.function-call"],settings:{foreground:"var(--color-syntax-function)"}},{scope:["variable","variable.other","variable.parameter","meta.definition.variable"],settings:{foreground:"var(--color-syntax-variable)"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"var(--color-syntax-number)"}},{scope:["keyword.operator","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.arithmetic"],settings:{foreground:"var(--color-syntax-operator)"}},{scope:["entity.name.tag","punctuation.definition.tag","support.class.component"],settings:{foreground:"var(--color-syntax-tag)"}},{scope:["entity.other.attribute-name","meta.tag.attributes"],settings:{foreground:"var(--color-syntax-attr)"}},{scope:["punctuation","meta.brace","punctuation.definition.block","punctuation.separator","punctuation.terminator"],settings:{foreground:"var(--color-syntax-punctuation)"}},{scope:["entity.name.type","support.type","support.class","entity.other.inherited-class"],settings:{foreground:"var(--color-syntax-type)"}}]},we={typescript:()=>import('@shikijs/langs/typescript'),javascript:()=>import('@shikijs/langs/javascript'),tsx:()=>import('@shikijs/langs/tsx'),jsx:()=>import('@shikijs/langs/jsx'),html:()=>import('@shikijs/langs/html'),css:()=>import('@shikijs/langs/css'),json:()=>import('@shikijs/langs/json'),markdown:()=>import('@shikijs/langs/markdown'),python:()=>import('@shikijs/langs/python'),rust:()=>import('@shikijs/langs/rust'),go:()=>import('@shikijs/langs/go'),java:()=>import('@shikijs/langs/java'),c:()=>import('@shikijs/langs/c'),cpp:()=>import('@shikijs/langs/cpp'),csharp:()=>import('@shikijs/langs/csharp'),vue:()=>import('@shikijs/langs/vue'),xml:()=>import('@shikijs/langs/xml'),yaml:()=>import('@shikijs/langs/yaml'),sql:()=>import('@shikijs/langs/sql'),bash:()=>import('@shikijs/langs/bash'),shell:()=>import('@shikijs/langs/shell')},z=null,W=new Set;function Te(){return z||(z=Promise.all([import('shiki/core'),import('shiki/engine/javascript')]).then(([{createHighlighterCore:e},{createJavaScriptRegexEngine:t}])=>e({themes:[ke],langs:[],engine:t()}))),z}async function Ne(e,t,r){let s=await Te();if(t&&!W.has(t)){let n=we[t];if(n)try{let l=await n();await s.loadLanguage(l.default??l),W.add(t);}catch{t="text";}else t="text";}let a=s.codeToHtml(e,{lang:t||"text",theme:"onyx-css-vars"});if(a=a.replace(/(<pre [^>]*style=")/,"$1line-height:1.7;tab-size:2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;"),r){let n=0;a=a.replace(/<span class="line">/g,()=>(n++,`<span class="line"><span class="line-number" data-line="${n}"></span>`));}return a}function B({code:e,language:t="text",lineNumbers:r=false,editable:s=false,onCodeChange:a,size:n,className:l,...c}){let[o,y]=useState(""),g=useRef(null),b=useRef(null),d=useRef(null);useEffect(()=>{let p=false;return Ne(e,t,s?false:r).then(m=>{p||y(m);}),()=>{p=true;}},[e,t,r,s]);let T=useCallback(()=>{let p=b.current,m=d.current?.querySelector("pre"),R=g.current?.querySelector("[data-gutter]");p&&m&&(m.scrollTop=p.scrollTop,m.scrollLeft=p.scrollLeft),p&&R&&(R.scrollTop=p.scrollTop);},[]),u=useCallback(p=>{a?.(p.target.value);},[a]),f=useCallback(p=>{if(p.key==="Tab"){p.preventDefault();let m=p.currentTarget,R=m.selectionStart,re=m.selectionEnd,ae=m.value.substring(0,R)+" "+m.value.substring(re);a?.(ae),requestAnimationFrame(()=>{m.selectionStart=m.selectionEnd=R+2;});}},[a]),h=r&&"[&_.line-number]:inline-block [&_.line-number]:w-8 [&_.line-number]:mr-4 [&_.line-number]:text-right [&_.line-number]:text-secondary-400 [&_.line-number]:select-none [&_.line-number]:before:content-[attr(data-line)]",K="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",U=1.7,te=e.split(`
|
|
2
|
-
`).length;return s?jsxs("div",{ref:g,className:i(V({size:n}),"flex border border-primary-200 dark:border-primary-700",l),style:{background:"var(--color-syntax-bg)"},...c,children:[r&&jsx("div",{"data-gutter":true,"aria-hidden":true,className:"shrink-0 select-none overflow-hidden py-4 pl-3 pr-1 text-right text-secondary-400",style:{fontFamily:K,lineHeight:U,width:"3rem"},children:Array.from({length:te},(p,m)=>jsx("div",{children:m+1},m))}),jsxs("div",{className:"relative min-w-0 flex-1",children:[jsx("textarea",{ref:b,value:e,onChange:u,onScroll:T,onKeyDown:f,spellCheck:false,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",className:"relative z-2 m-0 block h-full w-full resize-none overflow-auto whitespace-pre border-none bg-transparent p-4 text-transparent caret-primary-600 outline-none dark:caret-primary-400",style:{fontFamily:K,lineHeight:U,tabSize:2,minHeight:"6rem"}}),jsx("div",{ref:d,"aria-hidden":true,className:"pointer-events-none absolute inset-0 z-1 overflow-hidden [&_pre]:m-0 [&_pre]:h-full [&_pre]:overflow-hidden [&_pre]:p-4 [&_code]:bg-transparent",dangerouslySetInnerHTML:o?{__html:o}:void 0})]})]}):jsx("div",{ref:g,className:i(V({size:n}),"border border-primary-200 dark:border-primary-700",h,l),style:{background:"var(--color-syntax-bg)"},...c,children:jsx("div",{ref:d,className:"[&_pre]:m-0 [&_pre]:p-4",dangerouslySetInnerHTML:o?{__html:o}:void 0,children:o?void 0:jsx("pre",{className:"m-0 p-4",style:{background:"var(--color-syntax-bg)"},children:jsx("code",{children:e})})})})}var _e={up:TrendingUp,down:TrendingDown,neutral:Minus},Ke={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"};function F({title:e,value:t,prefix:r,suffix:s,icon:a,trend:n,trendValue:l,description:c,intent:o,size:y,className:g}){let b=n?_e[n]:null,d=n?Ke[n]:"";return jsx("div",{className:i($({intent:o,size:y}),g),children:jsxs("div",{className:"flex items-start justify-between gap-3",children:[jsxs("div",{className:"min-w-0 flex-1",children:[jsx("p",{className:"truncate text-xs font-medium tracking-wider uppercase text-secondary-500 dark:text-secondary-400",children:e}),jsxs("p",{className:"mt-1 flex items-baseline gap-1 text-2xl font-bold text-primary-900 dark:text-primary-50",children:[r&&jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:r}),jsx("span",{children:t}),s&&jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:s})]}),(n||c)&&jsxs("div",{className:"mt-2 flex items-center gap-2",children:[n&&b&&jsxs("span",{className:i("flex items-center gap-0.5 text-xs font-semibold",d),children:[jsx(b,{className:"h-3.5 w-3.5"}),l]}),c&&jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:c})]})]}),a&&jsx("div",{className:i("flex h-10 w-10 shrink-0 items-center justify-center rounded-xl [&_svg]:h-5 [&_svg]:w-5",o==="success"&&"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",o==="danger"&&"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",o==="warning"&&"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400",(!o||o==="primary")&&"bg-primary-100 text-primary-600 dark:bg-primary-800 dark:text-primary-400"),children:a})]})})}function Ee(e){return 1-Math.pow(1-e,4)}function De(e,t,r,s,a){let[n,l]=useState(()=>a?a(t):t.toFixed(s)),c=useRef(null),o=useRef(null);return useEffect(()=>{c.current!==null&&cancelAnimationFrame(c.current),o.current=null;let y=g=>{o.current===null&&(o.current=g);let b=g-o.current,d=Math.min(b/r,1),T=Ee(d),u=t+(e-t)*T;l(a?a(u):u.toFixed(s)),d<1&&(c.current=requestAnimationFrame(y));};return c.current=requestAnimationFrame(y),()=>{c.current!==null&&cancelAnimationFrame(c.current);}},[e,t,r,s,a]),n}var Ae={up:TrendingUp,down:TrendingDown,neutral:Minus},Ie={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"},ee={primary:"bg-primary-100 text-primary-600 dark:bg-primary-800/60 dark:text-primary-300",success:"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",danger:"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",warning:"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400"};function j({title:e,value:t,decimals:r=0,prefix:s,suffix:a,icon:n,trend:l,trendValue:c,description:o,animateDuration:y=1200,formatter:g,from:b=0,intent:d,size:T,className:u}){let f=De(t,b,y,r,g),h=l?Ae[l]:null,K=l?Ie[l]:"";return jsxs("div",{className:i(G({intent:d,size:T}),u),children:[jsx("div",{className:i("pointer-events-none absolute inset-x-0 top-0 h-0.5 rounded-t-xl",d==="success"&&"bg-gradient-to-r from-success-400 to-success-600",d==="danger"&&"bg-gradient-to-r from-danger-400 to-danger-600",d==="warning"&&"bg-gradient-to-r from-warning-400 to-warning-600",(!d||d==="primary")&&"bg-gradient-to-r from-primary-400 to-primary-600")}),jsxs("div",{className:"flex items-start justify-between gap-4",children:[jsxs("div",{className:"min-w-0 flex-1",children:[jsx("p",{className:"text-xs font-semibold tracking-widest uppercase text-secondary-500 dark:text-secondary-400",children:e}),jsxs("p",{className:"mt-2 flex items-baseline gap-1",children:[s&&jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:s}),jsx("span",{className:"font-mono text-3xl font-bold tabular-nums text-primary-900 dark:text-primary-50",children:f}),a&&jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:a})]})]}),n&&jsx("div",{className:i("flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl [&_svg]:h-6 [&_svg]:w-6",ee[d??"primary"]??ee.primary),children:n})]}),(l||o)&&jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-primary-100 pt-3 dark:border-primary-700/50",children:[l&&h&&jsxs("span",{className:i("flex items-center gap-0.5 text-xs font-bold",K),children:[jsx(h,{className:"h-3.5 w-3.5"}),c]}),o&&jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:o})]})]})}var ze={Table:P,List:M,Tree:H,Chat:D,CodeBlock:B,Stat:F,MetricCard:j},or=ze;export{D as Chat,B as CodeBlock,ze as DataDisplay,M as List,j as MetricCard,F as Stat,P as Table,H as Tree,or as default};
|
|
1
|
+
import re,{createContext,forwardRef,useRef,useState,useEffect,useCallback,useMemo,useImperativeHandle}from'react';import {Minus,TrendingDown,TrendingUp}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function f(...r){return twMerge(clsx(r))}var ke=cva("w-full text-left text-sm",{variants:{intent:{default:"",striped:"[&_tbody_tr:nth-child(even)]:bg-primary-50 dark:[&_tbody_tr:nth-child(even)]:bg-primary-800/30",bordered:"[&_th]:border [&_td]:border [&_th]:border-primary-200 [&_td]:border-primary-200 dark:[&_th]:border-primary-700 dark:[&_td]:border-primary-700"},density:{compact:"[&_th]:px-2 [&_th]:py-1 [&_td]:px-2 [&_td]:py-1",default:"",relaxed:"[&_th]:px-6 [&_th]:py-5 [&_td]:px-6 [&_td]:py-5"}},defaultVariants:{intent:"default",density:"default"}}),Te=cva("text-sm text-primary-700 dark:text-primary-300",{variants:{intent:{default:"space-y-1",bordered:"divide-y divide-primary-200 rounded-lg border border-primary-200 dark:divide-primary-700 dark:border-primary-700 [&>li]:px-4 [&>li]:py-2",hover:"[&>li]:rounded-md [&>li]:px-3 [&>li]:py-2 [&>li]:transition-colors [&>li:hover]:bg-primary-50 dark:[&>li:hover]:bg-primary-800/50"}},defaultVariants:{intent:"default"}});cva("group flex w-full items-center gap-1.5 text-left [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3 [&_svg]:w-3",md:"py-1.5 text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"py-2 text-base [&_svg]:h-4 [&_svg]:w-4"}},defaultVariants:{size:"md"}});cva("flex cursor-pointer items-center gap-1 rounded transition-colors [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"py-1 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"py-1.5 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{size:"md"}});var Ne=cva("relative rounded-xl border bg-white p-5 shadow-sm transition-shadow hover:shadow-md dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),Re=cva("relative overflow-hidden rounded-xl border bg-white p-5 shadow-sm transition-all duration-300 hover:shadow-lg dark:bg-primary-900",{variants:{intent:{primary:"border-primary-200 dark:border-primary-700",success:"border-success-200 dark:border-success-800",danger:"border-danger-200 dark:border-danger-800",warning:"border-warning-200 dark:border-warning-800"},size:{sm:"p-4",md:"p-5",lg:"p-6"}},defaultVariants:{intent:"primary",size:"md"}}),le=cva("overflow-x-auto rounded-lg font-mono [background:var(--color-syntax-bg)] [&_pre]:m-0 [&_pre]:p-4 [&_code]:bg-transparent",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}});function ce({intent:r,density:a,className:t,...o}){return jsx("div",{className:"w-full overflow-auto",children:jsx("table",{className:f(ke({intent:r,density:a}),t),...o})})}var Be=createContext({size:"md"});function de({intent:r,size:a="md",className:t,...o}){return jsx(Be.Provider,{value:{size:a},children:jsx("ul",{className:f(Te({intent:r}),t),...o})})}var Ue=createContext({showLines:true,expandedKeys:null,onToggleKey:()=>{},size:"md"});function me({showLines:r=true,showRoot:a=true,expandedKeys:t,defaultExpandedKeys:o="all",onExpandedKeysChange:s,size:c="md",className:i,children:g,...d}){let [T,w]=useState(()=>o),u=useCallback(p=>{if(t){let b=new Set(t);b.has(p)?b.delete(p):b.add(p),s?.(b);}else w(b=>{if(b==="all")return new Set(["__ALL_MINUS__",p]);let y=new Set(b);return y.has(p)?y.delete(p):y.add(p),y});},[t,s]),m=t??(T==="all"?null:T);return jsx(Ue.Provider,{value:{showLines:r,expandedKeys:m,onToggleKey:u,size:c},children:a?jsx("ul",{className:f("text-sm",i),role:"tree",...d,children:g}):jsx("ul",{className:f("text-sm",i),role:"tree",...d,children:jsx(qe,{children:g})})})}function qe({children:r}){let a=Ce(r);return jsx(Fragment,{children:a.map(t=>re.isValidElement(t)&&t.props.children?t.props.children:null)})}function Ce(r){let a=[];return re.Children.forEach(r,t=>{re.isValidElement(t)&&t.type===re.Fragment?a.push(...Ce(t.props.children)):a.push(t);}),a}function $e({avatar:r,sender:a}){return r?typeof r=="string"?/^(?:https?|data|blob):/.test(r)?jsx("img",{src:r,alt:a,className:"h-8 w-8 shrink-0 rounded-full object-cover",draggable:false}):jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-lg select-none",children:r}):jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full",children:r}):jsx("div",{className:"bg-primary-200 text-primary-600 dark:bg-primary-700 dark:text-primary-300 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-semibold select-none",children:a.charAt(0).toUpperCase()})}function Ge({msg:r,alignRight:a}){return jsxs("div",{className:f("flex gap-2.5",a?"flex-row-reverse":"flex-row"),children:[jsx($e,{avatar:r.avatar,sender:r.sender}),jsxs("div",{className:f("flex max-w-[75%] flex-col gap-0.5",a?"items-end":"items-start"),children:[jsx("span",{className:"text-primary-500 dark:text-primary-400 text-xs",children:r.sender}),jsx("div",{className:f("rounded-xl px-3 py-2 text-sm leading-relaxed",a?"rounded-tr-sm bg-primary-500 text-white dark:bg-primary-600":"bg-primary-100 text-primary-800 dark:bg-primary-800 dark:text-primary-200 rounded-tl-sm"),children:r.content}),r.time&&jsx("span",{className:"text-primary-400 dark:text-primary-500 text-[10px]",children:r.time})]})]})}function ue({messages:r,mode:a="split",autoScroll:t=true,className:o,...s}){let c=useRef(null);return useEffect(()=>{t&&c.current?.scrollIntoView({behavior:"smooth"});},[r,t]),jsxs("div",{className:f("flex flex-col gap-4 overflow-y-auto rounded-lg border p-4","border-primary-200 dark:border-primary-700 dark:bg-primary-900 bg-white",o),...s,children:[r.map(i=>{let g=a==="split"&&!!i.self;return jsx(Ge,{msg:i,alignRight:g},i.id)}),jsx("div",{ref:c})]})}var Ze={name:"onyx-css-vars",type:"dark",settings:[{settings:{foreground:"var(--color-syntax-plain)",background:"var(--color-syntax-bg)"}},{scope:["comment","punctuation.definition.comment"],settings:{foreground:"var(--color-syntax-comment)",fontStyle:"italic"}},{scope:["keyword","keyword.control","keyword.operator.new","keyword.operator.expression","storage.type","storage.modifier"],settings:{foreground:"var(--color-syntax-keyword)"}},{scope:["string","string.quoted","string.template"],settings:{foreground:"var(--color-syntax-string)"}},{scope:["entity.name.function","support.function","meta.function-call"],settings:{foreground:"var(--color-syntax-function)"}},{scope:["variable","variable.other","variable.parameter","meta.definition.variable"],settings:{foreground:"var(--color-syntax-variable)"}},{scope:["constant.numeric","constant.language"],settings:{foreground:"var(--color-syntax-number)"}},{scope:["keyword.operator","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.arithmetic"],settings:{foreground:"var(--color-syntax-operator)"}},{scope:["entity.name.tag","punctuation.definition.tag","support.class.component"],settings:{foreground:"var(--color-syntax-tag)"}},{scope:["entity.other.attribute-name","meta.tag.attributes"],settings:{foreground:"var(--color-syntax-attr)"}},{scope:["punctuation","meta.brace","punctuation.definition.block","punctuation.separator","punctuation.terminator"],settings:{foreground:"var(--color-syntax-punctuation)"}},{scope:["entity.name.type","support.type","support.class","entity.other.inherited-class"],settings:{foreground:"var(--color-syntax-type)"}}]},et={typescript:()=>import('@shikijs/langs/typescript'),javascript:()=>import('@shikijs/langs/javascript'),tsx:()=>import('@shikijs/langs/tsx'),jsx:()=>import('@shikijs/langs/jsx'),html:()=>import('@shikijs/langs/html'),css:()=>import('@shikijs/langs/css'),json:()=>import('@shikijs/langs/json'),markdown:()=>import('@shikijs/langs/markdown'),python:()=>import('@shikijs/langs/python'),rust:()=>import('@shikijs/langs/rust'),go:()=>import('@shikijs/langs/go'),java:()=>import('@shikijs/langs/java'),c:()=>import('@shikijs/langs/c'),cpp:()=>import('@shikijs/langs/cpp'),csharp:()=>import('@shikijs/langs/csharp'),vue:()=>import('@shikijs/langs/vue'),xml:()=>import('@shikijs/langs/xml'),yaml:()=>import('@shikijs/langs/yaml'),sql:()=>import('@shikijs/langs/sql'),bash:()=>import('@shikijs/langs/bash'),shell:()=>import('@shikijs/langs/shell')},be=null,Ve=new Set;function tt(){return be||(be=Promise.all([import('shiki/core'),import('shiki/engine/javascript')]).then(([{createHighlighterCore:r},{createJavaScriptRegexEngine:a}])=>r({themes:[Ze],langs:[],engine:a()}))),be}async function rt(r,a,t){let o=await tt();if(a&&!Ve.has(a)){let c=et[a];if(c)try{let i=await c();await o.loadLanguage(i.default??i),Ve.add(a);}catch{a="text";}else a="text";}let s=o.codeToHtml(r,{lang:a||"text",theme:"onyx-css-vars"});if(s=s.replace(/(<pre [^>]*style=")/,"$1line-height:1.7;tab-size:2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;"),t){let c=0;s=s.replace(/<span class="line">/g,()=>(c++,`<span class="line"><span class="line-number" data-line="${c}"></span>`));}return s}function ye({code:r,language:a="text",lineNumbers:t=false,editable:o=false,onCodeChange:s,size:c,className:i,...g}){let[d,T]=useState(""),w=useRef(null),N=useRef(null),u=useRef(null);useEffect(()=>{let v=false;return rt(r,a,o?false:t).then(x=>{v||T(x);}),()=>{v=true;}},[r,a,t,o]);let m=useCallback(()=>{let v=N.current,x=u.current?.querySelector("pre"),L=w.current?.querySelector("[data-gutter]");v&&x&&(x.scrollTop=v.scrollTop,x.scrollLeft=v.scrollLeft),v&&L&&(L.scrollTop=v.scrollTop);},[]),p=useCallback(v=>{s?.(v.target.value);},[s]),b=useCallback(v=>{if(v.key==="Tab"){v.preventDefault();let x=v.currentTarget,L=x.selectionStart,O=x.selectionEnd,P=x.value.substring(0,L)+" "+x.value.substring(O);s?.(P),requestAnimationFrame(()=>{x.selectionStart=x.selectionEnd=L+2;});}},[s]),y=t&&"[&_.line-number]:inline-block [&_.line-number]:w-8 [&_.line-number]:mr-4 [&_.line-number]:text-right [&_.line-number]:text-secondary-400 [&_.line-number]:select-none [&_.line-number]:before:content-[attr(data-line)]",k="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",I=1.7,S=r.split(`
|
|
2
|
+
`).length;return o?jsxs("div",{ref:w,className:f(le({size:c}),"flex border border-primary-200 dark:border-primary-700",i),style:{background:"var(--color-syntax-bg)"},...g,children:[t&&jsx("div",{"data-gutter":true,"aria-hidden":true,className:"shrink-0 select-none overflow-hidden py-4 pl-3 pr-1 text-right text-secondary-400",style:{fontFamily:k,lineHeight:I,width:"3rem"},children:Array.from({length:S},(v,x)=>jsx("div",{children:x+1},x))}),jsxs("div",{className:"relative min-w-0 flex-1",children:[jsx("textarea",{ref:N,value:r,onChange:p,onScroll:m,onKeyDown:b,spellCheck:false,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",className:"relative z-2 m-0 block h-full w-full resize-none overflow-auto whitespace-pre border-none bg-transparent p-4 text-transparent caret-primary-600 outline-none dark:caret-primary-400",style:{fontFamily:k,lineHeight:I,tabSize:2,minHeight:"6rem"}}),jsx("div",{ref:u,"aria-hidden":true,className:"pointer-events-none absolute inset-0 z-1 overflow-hidden [&_pre]:m-0 [&_pre]:h-full [&_pre]:overflow-hidden [&_pre]:p-4 [&_code]:bg-transparent",dangerouslySetInnerHTML:d?{__html:d}:void 0})]})]}):jsx("div",{ref:w,className:f(le({size:c}),"border border-primary-200 dark:border-primary-700",y,i),style:{background:"var(--color-syntax-bg)"},...g,children:jsx("div",{ref:u,className:"[&_pre]:m-0 [&_pre]:p-4",dangerouslySetInnerHTML:d?{__html:d}:void 0,children:d?void 0:jsx("pre",{className:"m-0 p-4",style:{background:"var(--color-syntax-bg)"},children:jsx("code",{children:r})})})})}var ot={up:TrendingUp,down:TrendingDown,neutral:Minus},it={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"};function xe({title:r,value:a,prefix:t,suffix:o,icon:s,trend:c,trendValue:i,description:g,intent:d,size:T,className:w}){let N=c?ot[c]:null,u=c?it[c]:"";return jsx("div",{className:f(Ne({intent:d,size:T}),w),children:jsxs("div",{className:"flex items-start justify-between gap-3",children:[jsxs("div",{className:"min-w-0 flex-1",children:[jsx("p",{className:"truncate text-xs font-medium tracking-wider uppercase text-secondary-500 dark:text-secondary-400",children:r}),jsxs("p",{className:"mt-1 flex items-baseline gap-1 text-2xl font-bold text-primary-900 dark:text-primary-50",children:[t&&jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:t}),jsx("span",{children:a}),o&&jsx("span",{className:"text-base font-semibold text-secondary-500 dark:text-secondary-400",children:o})]}),(c||g)&&jsxs("div",{className:"mt-2 flex items-center gap-2",children:[c&&N&&jsxs("span",{className:f("flex items-center gap-0.5 text-xs font-semibold",u),children:[jsx(N,{className:"h-3.5 w-3.5"}),i]}),g&&jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:g})]})]}),s&&jsx("div",{className:f("flex h-10 w-10 shrink-0 items-center justify-center rounded-xl [&_svg]:h-5 [&_svg]:w-5",d==="success"&&"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",d==="danger"&&"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",d==="warning"&&"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400",(!d||d==="primary")&&"bg-primary-100 text-primary-600 dark:bg-primary-800 dark:text-primary-400"),children:s})]})})}function ut(r){return 1-Math.pow(1-r,4)}function ft(r,a,t,o,s){let[c,i]=useState(()=>s?s(a):a.toFixed(o)),g=useRef(null),d=useRef(null);return useEffect(()=>{g.current!==null&&cancelAnimationFrame(g.current),d.current=null;let T=w=>{d.current===null&&(d.current=w);let N=w-d.current,u=Math.min(N/t,1),m=ut(u),p=a+(r-a)*m;i(s?s(p):p.toFixed(o)),u<1&&(g.current=requestAnimationFrame(T));};return g.current=requestAnimationFrame(T),()=>{g.current!==null&&cancelAnimationFrame(g.current);}},[r,a,t,o,s]),c}var gt={up:TrendingUp,down:TrendingDown,neutral:Minus},bt={up:"text-success-600 dark:text-success-400",down:"text-danger-600 dark:text-danger-400",neutral:"text-secondary-500 dark:text-secondary-400"},Pe={primary:"bg-primary-100 text-primary-600 dark:bg-primary-800/60 dark:text-primary-300",success:"bg-success-100 text-success-600 dark:bg-success-900/30 dark:text-success-400",danger:"bg-danger-100 text-danger-600 dark:bg-danger-900/30 dark:text-danger-400",warning:"bg-warning-100 text-warning-600 dark:bg-warning-900/30 dark:text-warning-400"};function he({title:r,value:a,decimals:t=0,prefix:o,suffix:s,icon:c,trend:i,trendValue:g,description:d,animateDuration:T=1200,formatter:w,from:N=0,intent:u,size:m,className:p}){let b=ft(a,N,T,t,w),y=i?gt[i]:null,k=i?bt[i]:"";return jsxs("div",{className:f(Re({intent:u,size:m}),p),children:[jsx("div",{className:f("pointer-events-none absolute inset-x-0 top-0 h-0.5 rounded-t-xl",u==="success"&&"bg-gradient-to-r from-success-400 to-success-600",u==="danger"&&"bg-gradient-to-r from-danger-400 to-danger-600",u==="warning"&&"bg-gradient-to-r from-warning-400 to-warning-600",(!u||u==="primary")&&"bg-gradient-to-r from-primary-400 to-primary-600")}),jsxs("div",{className:"flex items-start justify-between gap-4",children:[jsxs("div",{className:"min-w-0 flex-1",children:[jsx("p",{className:"text-xs font-semibold tracking-widest uppercase text-secondary-500 dark:text-secondary-400",children:r}),jsxs("p",{className:"mt-2 flex items-baseline gap-1",children:[o&&jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:o}),jsx("span",{className:"font-mono text-3xl font-bold tabular-nums text-primary-900 dark:text-primary-50",children:b}),s&&jsx("span",{className:"text-lg font-semibold text-secondary-400 dark:text-secondary-500",children:s})]})]}),c&&jsx("div",{className:f("flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl [&_svg]:h-6 [&_svg]:w-6",Pe[u??"primary"]??Pe.primary),children:c})]}),(i||d)&&jsxs("div",{className:"mt-3 flex items-center gap-2 border-t border-primary-100 pt-3 dark:border-primary-700/50",children:[i&&y&&jsxs("span",{className:f("flex items-center gap-0.5 text-xs font-bold",k),children:[jsx(y,{className:"h-3.5 w-3.5"}),g]}),d&&jsx("span",{className:"text-xs text-secondary-500 dark:text-secondary-400",children:d})]})]})}var He="onyx-vlist:";function _e(r,a){let t=0,o=r.length-2;for(;t<=o;){let s=t+o>>1;if(r[s+1]<=a)t=s+1;else if(r[s]>a)o=s-1;else return s}return Math.max(0,t)}function Ke(r,a){let{items:t,itemHeight:o,estimatedItemHeight:s=48,direction:c="vertical",overscan:i=3,onReachEnd:g,reachEndThreshold:d=120,isLoading:T,onScroll:w,onVisibleRangeChange:N,scrollRestorationId:u}=r,m=c==="vertical",p=typeof o=="number",b=p?o:0,y=useRef(null),[k,I]=useState(300);useEffect(()=>{let e=y.current;if(!e)return;let n=new ResizeObserver(([V])=>{let E=m?V.contentRect.height:V.contentRect.width;E>0&&I(E);});n.observe(e);let l=e.getBoundingClientRect(),h=m?l.height:l.width;return h>0&&I(h),()=>n.disconnect()},[m]);let[S,v]=useState(0);useEffect(()=>{if(!u)return;let e=y.current;if(e)try{let n=localStorage.getItem(He+u);if(n!==null){let l=parseFloat(n);!Number.isNaN(l)&&l>0&&requestAnimationFrame(()=>{m?e.scrollTop=l:e.scrollLeft=l;});}}catch{}},[]);let x=useRef(false),L=useRef(t.length);t.length!==L.current&&(L.current=t.length,x.current=false);let O=useCallback(()=>{let e=y.current;if(!e)return;let n=m?e.scrollTop:e.scrollLeft;if(v(n),w?.(n),u)try{localStorage.setItem(He+u,String(n));}catch{}g&&!T&&(m?e.scrollHeight-e.clientHeight:e.scrollWidth-e.clientWidth)-n<=d&&(x.current||(x.current=true,g()));},[m,w,u,g,T,d]);useEffect(()=>{let e=y.current;if(e)return e.addEventListener("scroll",O,{passive:true}),()=>e.removeEventListener("scroll",O)},[O]),useEffect(()=>{if(m)return;let e=y.current;if(!e)return;let n=l=>{Math.abs(l.deltaX)>=Math.abs(l.deltaY)||(l.preventDefault(),e.scrollLeft+=l.deltaY);};return e.addEventListener("wheel",n,{passive:false}),()=>e.removeEventListener("wheel",n)},[m]),useEffect(()=>{if(m)return;let e=y.current;if(!e)return;let n=5,l=false,h=false,V=0,E=0,Q=z=>{z.target.closest("button,a,input,select,textarea,[role=button],[role=checkbox],[role=radio],[role=option]")||z.button===0&&(l=true,h=false,V=z.clientX,E=e.scrollLeft,e.setPointerCapture(z.pointerId));},_=z=>{if(!l)return;let ie=V-z.clientX;if(!h){if(Math.abs(ie)<n)return;h=true,e.style.cursor="grabbing",e.style.userSelect="none";}e.scrollLeft=E+ie;},te=z=>{if(l){l=false,e.style.cursor="",e.style.userSelect="";try{e.releasePointerCapture(z.pointerId);}catch{}}};return e.addEventListener("pointerdown",Q),e.addEventListener("pointermove",_),e.addEventListener("pointerup",te),e.addEventListener("pointercancel",te),()=>{e.removeEventListener("pointerdown",Q),e.removeEventListener("pointermove",_),e.removeEventListener("pointerup",te),e.removeEventListener("pointercancel",te);}},[m]);let P=useRef(new Map),[ee,se]=useState(0),oe=useCallback((e,n)=>{if(p||!n)return;let l=m?n.offsetHeight:n.offsetWidth;l>0&&P.current.get(e)!==l&&(P.current.set(e,l),se(h=>h+1));},[p,m]),Y=useRef(t);Y.current!==t&&(Y.current=t,p||(P.current=new Map));let C=useMemo(()=>{if(p)return [];let e=new Array(t.length+1);e[0]=0;for(let n=0;n<t.length;n++){let l=P.current.get(n),h;l!==void 0?h=l:typeof o=="function"?h=t[n]!==void 0?o(t[n],n):s:h=s,e[n+1]=e[n]+h;}return e},[p,t,o,s,ee]),R=useCallback(e=>p?e*b:C[e]??0,[p,b,C]),j=useCallback(e=>{if(p)return b;let n=P.current.get(e);return n!==void 0?n:typeof o=="function"&&t[e]!==void 0?o(t[e],e):s},[p,b,o,t,s,ee]),$,H,D;if(p){$=b*t.length;let e=Math.floor(S/b),n=Math.ceil((S+k)/b);H=Math.max(0,e-i),D=Math.min(t.length-1,n+i-1);}else if($=C[t.length]??0,C.length>1){let e=_e(C,S);H=Math.max(0,e-i);let n=e;for(;n<t.length&&C[n]<S+k;)n++;D=Math.min(t.length-1,n+i-1);}else H=0,D=Math.min(t.length-1,i*2);H=Math.max(0,H),D=Math.max(H,Math.min(t.length-1,D));let G=useRef({start:-1,end:-1});return useEffect(()=>{let e,n;if(p&&b>0)e=Math.max(0,Math.floor(S/b)),n=Math.min(t.length-1,Math.ceil((S+k)/b)-1);else {for(e=_e(C,S),n=e;n<t.length&&C[n]<S+k;)n++;n=Math.max(0,n-1);}(G.current.start!==e||G.current.end!==n)&&(G.current={start:e,end:n},N?.(e,n));}),useImperativeHandle(a,()=>({scrollToIndex(e,n="auto"){let l=y.current;if(!l)return;let h=R(e),V=j(e),E=m?l.clientHeight:l.clientWidth,Q=m?l.scrollTop:l.scrollLeft,_;if(n==="start")_=h;else if(n==="end")_=h-E+V;else if(n==="center")_=h-(E-V)/2;else if(h<Q)_=h;else if(h+V>Q+E)_=h-E+V;else return;l.scrollTo({[m?"top":"left"]:Math.max(0,_),behavior:"smooth"});},scrollToOffset(e){let n=y.current;n&&n.scrollTo({[m?"top":"left"]:e,behavior:"smooth"});},getScrollOffset(){let e=y.current;return e?m?e.scrollTop:e.scrollLeft:0}}),[R,j,m]),{scrollerRef:y,startIndex:H,endIndex:D,totalSize:$,getItemOffset:R,getItemSize:j,measureItem:oe}}function vt({text:r="Loading\u2026"}){return jsxs("div",{className:"flex items-center justify-center gap-2 py-4 text-sm text-primary-400",children:[jsx("span",{"aria-hidden":true,className:"h-4 w-4 animate-spin rounded-full border-2 border-primary-200 border-t-primary-500"}),jsx("span",{children:r})]})}function wt({text:r="No items"}){return jsxs("div",{className:"flex h-full min-h-[120px] flex-col items-center justify-center gap-2 text-sm text-primary-400",children:[jsx("svg",{"aria-hidden":true,xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 opacity-40",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"})}),jsx("span",{children:r})]})}function kt(r,a){let{items:t,renderItem:o,getItemKey:s,itemHeight:c,direction:i="vertical",height:g="100%",width:d="100%",isLoading:T=false,loadingRenderer:w,loadingText:N,emptyRenderer:u,emptyText:m,itemClassName:p,className:b,style:y}=r,k=i==="vertical",I=typeof c!="number",{scrollerRef:S,startIndex:v,endIndex:x,totalSize:L,getItemOffset:O,getItemSize:P,measureItem:ee}=Ke(r,a),se={position:"relative",overflowX:k?"hidden":"auto",overflowY:k?"auto":"hidden",height:g,width:d,cursor:k?void 0:"grab"},oe={position:"relative",[k?"height":"width"]:L,[k?"width":"height"]:"100%",overflow:"hidden"},Y=[];for(let R=v;R<=x;R++){let j=t[R];if(j===void 0)continue;let $=O(R),H=P(R),D=s?s(j,R):R,G={position:"absolute",[k?"top":"left"]:$,[k?"height":"width"]:I?void 0:H,[k?"width":"height"]:"100%",boxSizing:"border-box"};Y.push(jsx("div",{role:"row","aria-rowindex":R+1,style:G,className:f("onyx-vlist-item",p),ref:I?e=>ee(R,e):void 0,children:o(j,R)},D));}let C=t.length===0;return jsxs("div",{ref:S,role:"grid","aria-rowcount":t.length,"data-virtual-list":true,"data-direction":i,className:f("onyx-virtual-list",b),style:{...se,...y},children:[C?u?u():jsx(wt,{text:m}):jsx("div",{style:oe,children:Y}),T&&(w?w():jsx(vt,{text:N}))]})}var ae=forwardRef(kt);var Tt={Table:ce,List:de,Tree:me,Chat:ue,CodeBlock:ye,Stat:xe,MetricCard:he,VirtualList:ae},an=Tt;
|
|
3
|
+
export{ue as Chat,ye as CodeBlock,Tt as DataDisplay,de as List,he as MetricCard,xe as Stat,ce as Table,me as Tree,ae as VirtualList,an as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var react=require('react'),reactDom=require('react-dom'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function N(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function Z(e="en-US",t="long"){return Array.from({length:12},(n,r)=>new Intl.DateTimeFormat(e,{month:t}).format(new Date(2e3,r,1)))}function ue(e="en-US",t="narrow"){let n=new Date(2e3,0,2);return Array.from({length:7},(r,i)=>{let d=new Date(n);return d.setDate(n.getDate()+i),new Intl.DateTimeFormat(e,{weekday:t}).format(d)})}function fe(e,t=true,n=true){return e==="date"?"YYYY-MM-DD":e==="time"?t?n?"HH:mm:ss":"HH:mm":n?"hh:mm:ss A":"hh:mm A":t?n?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm":n?"YYYY-MM-DD hh:mm:ss A":"YYYY-MM-DD hh:mm A"}function Ae(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ge(e,t,n="en-US"){let r=e.getHours(),i=Z(n,"long"),d=Z(n,"short"),a={YYYY:String(e.getFullYear()),YY:String(e.getFullYear()).slice(-2),MMMM:i[e.getMonth()],MMM:d[e.getMonth()],MM:String(e.getMonth()+1).padStart(2,"0"),M:String(e.getMonth()+1),DD:String(e.getDate()).padStart(2,"0"),D:String(e.getDate()),HH:String(r).padStart(2,"0"),H:String(r),hh:String(r%12||12).padStart(2,"0"),h:String(r%12||12),mm:String(e.getMinutes()).padStart(2,"0"),ss:String(e.getSeconds()).padStart(2,"0"),A:r<12?"AM":"PM",a:r<12?"am":"pm"},c=Object.keys(a).sort((s,m)=>m.length-s.length),l=new RegExp(c.map(Ae).join("|"),"g");return t.replace(l,s=>a[s]??s)}function U(e,t){return new Date(e,t+1,0).getDate()}function be(e,t){let n=new Date(e,t,1).getDay(),r=U(e,t),i=U(e,t-1),d=[];for(let c=n-1;c>=0;c--)d.push({date:new Date(e,t-1,i-c),thisMonth:false});for(let c=1;c<=r;c++)d.push({date:new Date(e,t,c),thisMonth:true});let a=42-d.length;for(let c=1;c<=a;c++)d.push({date:new Date(e,t+1,c),thisMonth:false});return d}function V(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function de(e,t){return V(e).getTime()===V(t).getTime()}function he(e,t){return V(e)<V(t)}function ve(e,t){return V(e)>V(t)}function re(e,t,n){return t&&e<t?new Date(t):n&&e>n?new Date(n):e}function ye(e,t,n,r){let i=new Date(e),a=t*(r==="future"?1:-1);switch(n){case "day":i.setDate(i.getDate()+a);break;case "week":i.setDate(i.getDate()+a*7);break;case "month":i.setMonth(i.getMonth()+a);break;case "year":i.setFullYear(i.getFullYear()+a);break}return i}function we(e,t=200){let n=e-Math.floor(t/2);return Array.from({length:t},(r,i)=>n+i)}function De(e){let{value:t,defaultValue:n,onChange:r,mode:i="datetime",minDate:d,maxDate:a,use24Hour:c=true,showSeconds:l=true,locale:s="en-US",format:m,onOpen:p,onClose:g}=e,f=t!==void 0,[O,S]=react.useState(n??null),x=f?t??null:O,[E,k]=react.useState(false),[L,W]=react.useState(()=>x??new Date),[ae,I]=react.useState("drum"),[j,R]=react.useState(()=>(x??new Date).getFullYear()),[v,P]=react.useState(()=>(x??new Date).getMonth()),[_,oe]=react.useState(1),[Q,ne]=react.useState("day"),[B,ie]=react.useState("future"),ee=m??fe(i,c,l),G=x?ge(x,ee,s):"",$=react.useCallback(()=>{let h=x??new Date;W(new Date(h)),R(h.getFullYear()),P(h.getMonth()),I("drum"),k(true),p?.();},[x,p]),H=react.useCallback(()=>{k(false),g?.();},[g]),b=react.useCallback(()=>{let h=re(L,d,a);f||S(h),r?.(h),H();},[L,d,a,f,r,H]),Y=react.useCallback(()=>{f||S(null),r?.(null),H();},[f,r,H]),A=react.useCallback((h,y)=>{W(F=>{let M=new Date(F);switch(h){case "year":M.setFullYear(y);break;case "month":{M.setMonth(y);let te=U(M.getFullYear(),y);M.getDate()>te&&M.setDate(te);break}case "day":M.setDate(y);break;case "hour":M.setHours(y);break;case "minute":M.setMinutes(y);break;case "second":M.setSeconds(y);break}return re(M,d,a)});},[d,a]),q=react.useCallback(()=>{let h=re(ye(new Date,_,Q,B),d,a);W(h),R(h.getFullYear()),P(h.getMonth());},[_,Q,B,d,a]),le=react.useCallback(h=>{let y=v+h,F=j;y<0&&(y=11,F--),y>11&&(y=0,F++),P(y),R(F);},[v,j]);return {isOpen:E,displayValue:G,workingDate:L,view:ae,calYear:j,calMonth:v,offsetAmount:_,offsetUnit:Q,offsetDirection:B,mode:i,use24Hour:c,showSeconds:l,locale:s,minDate:d,maxDate:a,openPicker:$,closePicker:H,confirm:b,clear:Y,updateField:A,setView:I,setCalYear:R,setCalMonth:P,setOffsetAmount:oe,setOffsetUnit:ne,setOffsetDirection:ie,applyQuickOffset:q,navigateCalendar:le}}var J=40;function Me(e,t,n=true){let r=react.useRef(t);r.current=t,react.useEffect(()=>{if(!n)return;function i(d){let a=d.target;e.some(l=>l.current?.contains(a))||r.current();}return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[e,n]);}function Se(e,t,n){let r=react.useRef(false),i=react.useRef(void 0),d=react.useRef(n);d.current=n;let a=react.useRef(t);a.current=t;let c=react.useCallback((s,m="smooth")=>{let p=e.current;if(!p)return;let g=s*J;Math.abs(p.scrollTop-g)<2&&m!=="instant"||(m==="instant"?p.scrollTop=g:p.scrollTo({top:g,behavior:m}));},[e]),l=react.useCallback(()=>{e.current&&(r.current=true,clearTimeout(i.current),i.current=setTimeout(()=>{r.current=false;let m=e.current;if(!m)return;let p=Math.round(m.scrollTop/J),g=Math.max(0,Math.min(a.current-1,p)),f=g*J;Math.abs(m.scrollTop-f)>1&&m.scrollTo({top:f,behavior:"smooth"}),d.current(g);},120));},[e]);return {scrollToIndex:c,handleScroll:l,isScrollingRef:r}}function Ce(e,t,n){react.useEffect(()=>{if(!n)return;function r(){let d=e.current,a=t.current;if(!d||!a)return;if(window.innerWidth<=640){a.style.top="",a.style.left="";return}let c=d.getBoundingClientRect(),l=window.innerHeight,s=window.innerWidth,m=a.offsetHeight||460,p=a.offsetWidth||340,g=c.bottom+8,f=c.left;g+m>l-16&&(g=Math.max(16,c.top-m-8)),f+p>s-16&&(f=Math.max(16,s-p-16)),f<16&&(f=16),a.style.top=`${Math.round(g)}px`,a.style.left=`${Math.round(f)}px`;}let i=setTimeout(r,0);return window.addEventListener("resize",r),window.addEventListener("scroll",r,true),()=>{clearTimeout(i),window.removeEventListener("resize",r),window.removeEventListener("scroll",r,true);}},[n,e,t]);}function T({items:e,selectedValue:t,onSelect:n,label:r}){let i=react.useRef(null),d=react.useRef(t),a=react.useRef(false),{scrollToIndex:c,handleScroll:l}=Se(i,e.length,s=>{let m=e[s];m&&(a.current=true,n(m.value),setTimeout(()=>{a.current=false;},200));});return react.useEffect(()=>{let s=i.current;if(!s)return;let m=e.findIndex(p=>p.value===t);m>=0&&(s.scrollTop=m*J);},[]),react.useEffect(()=>{if(d.current!==t&&(d.current=t,!a.current)){let s=e.findIndex(m=>m.value===t);s>=0&&c(s,"smooth");}},[t,e,c]),jsxRuntime.jsxs("div",{className:"dtp-column",role:"group","aria-label":r,children:[jsxRuntime.jsx("div",{className:"dtp-column-highlight","aria-hidden":"true"}),jsxRuntime.jsx("div",{ref:i,className:"dtp-column-list",onScroll:l,role:"listbox","aria-label":r,children:e.map(s=>jsxRuntime.jsx("div",{className:N("dtp-item",s.value===t&&"dtp-item--selected"),onClick:()=>{let m=e.findIndex(p=>p.value===s.value);m>=0&&c(m,"smooth"),n(s.value);},role:"option","aria-selected":s.value===t,children:s.label},s.value))}),jsxRuntime.jsx("div",{className:"dtp-fade-top","aria-hidden":"true"}),jsxRuntime.jsx("div",{className:"dtp-fade-bottom","aria-hidden":"true"})]})}function Ue({year:e,month:t,selectedDate:n,today:r,minDate:i,maxDate:d,locale:a,onSelectDay:c,onPrev:l,onNext:s}){let m=ue(a,"narrow"),p=Z(a,"long"),g=be(e,t);return jsxRuntime.jsxs("div",{className:"dtp-calendar",children:[jsxRuntime.jsxs("div",{className:"dtp-cal-nav",children:[jsxRuntime.jsx("button",{type:"button",className:"dtp-cal-nav-btn",onClick:l,"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsxs("span",{className:"dtp-cal-title",children:[p[t]," ",e]}),jsxRuntime.jsx("button",{type:"button",className:"dtp-cal-nav-btn",onClick:s,"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsx("div",{className:"dtp-cal-weekdays",role:"row",children:m.map((f,O)=>jsxRuntime.jsx("div",{className:"dtp-cal-weekday",role:"columnheader","aria-label":f,children:f},O))}),jsxRuntime.jsx("div",{className:"dtp-cal-days",role:"grid",children:g.map(({date:f,thisMonth:O},S)=>{let x=de(f,n),E=de(f,r),k=i!=null&&he(f,i)||d!=null&&ve(f,d);return jsxRuntime.jsx("button",{type:"button",role:"gridcell",className:N("dtp-cal-day",!O&&"dtp-cal-day--other",x&&"dtp-cal-day--selected",E&&!x&&"dtp-cal-day--today",k&&"dtp-cal-day--disabled"),onClick:()=>!k&&c(f),disabled:k,"aria-current":E?"date":void 0,"aria-selected":x,"aria-disabled":k,children:f.getDate()},S)})})]})}function Ve({amount:e,unit:t,direction:n,onAmountChange:r,onUnitChange:i,onDirectionChange:d,onApply:a,locale:c}){let l=c.startsWith("zh"),s=[{value:"day",label:l?"\u5929":"Day"},{value:"week",label:l?"\u5468":"Week"},{value:"month",label:l?"\u6708":"Month"},{value:"year",label:l?"\u5E74":"Year"}],m=[{value:"future",label:l?"\u4EE5\u540E":"from now"},{value:"past",label:l?"\u4EE5\u524D":"before now"}];return jsxRuntime.jsxs("div",{className:"dtp-quick-offset","aria-label":l?"\u5FEB\u901F\u504F\u79FB":"Quick offset",children:[jsxRuntime.jsx("input",{type:"number",className:"dtp-offset-input",value:e,min:1,max:9999,"aria-label":l?"\u504F\u79FB\u6570\u91CF":"Offset amount",onChange:p=>{let g=parseInt(p.target.value,10);!isNaN(g)&&g>=1&&r(g);}}),jsxRuntime.jsx("select",{className:"dtp-offset-select",value:t,"aria-label":l?"\u504F\u79FB\u5355\u4F4D":"Offset unit",onChange:p=>i(p.target.value),children:s.map(p=>jsxRuntime.jsx("option",{value:p.value,children:p.label},p.value))}),jsxRuntime.jsx("select",{className:"dtp-offset-select",value:n,"aria-label":l?"\u504F\u79FB\u65B9\u5411":"Offset direction",onChange:p=>d(p.target.value),children:m.map(p=>jsxRuntime.jsx("option",{value:p.value,children:p.label},p.value))}),jsxRuntime.jsx("button",{type:"button",className:"dtp-offset-apply",onClick:a,children:l?"\u5E94\u7528":"Apply"})]})}function Le({className:e,popupClassName:t,triggerClassName:n,disabled:r=false,placeholder:i,...d}){let{isOpen:a,displayValue:c,workingDate:l,view:s,calYear:m,calMonth:p,offsetAmount:g,offsetUnit:f,offsetDirection:O,mode:S,use24Hour:x,showSeconds:E,locale:k,minDate:L,maxDate:W,openPicker:ae,closePicker:I,confirm:j,clear:R,updateField:v,setView:P,setCalYear:_,setCalMonth:oe,setOffsetAmount:Q,setOffsetUnit:ne,setOffsetDirection:B,applyQuickOffset:ie,navigateCalendar:ee}=De({...d}),G=react.useRef(null),$=react.useRef(null),H=new Date;Me([G,$],I,a),Ce(G,$,a);let b=k.startsWith("zh"),Y={cancel:b?"\u53D6\u6D88":"Cancel",confirm:b?"\u786E\u5B9A":"Confirm",calendarView:b?"\u65E5\u5386":"Calendar",scrollView:b?"\u6EDA\u8F6E":"Scroll",placeholder:i??(b?"\u9009\u62E9\u65E5\u671F\u65F6\u95F4":"Select date / time")},A=S==="date"||S==="datetime",q=S==="time"||S==="datetime",le=we(l.getFullYear(),200).map(u=>({label:String(u),value:u})),h=Z(k,"short").map((u,D)=>({label:u,value:D})),y=U(l.getFullYear(),l.getMonth()),F=Array.from({length:y},(u,D)=>({label:String(D+1).padStart(2,"0"),value:D+1})),M=Array.from({length:24},(u,D)=>({label:String(D).padStart(2,"0"),value:D})),te=Array.from({length:12},(u,D)=>({label:String(D===0?12:D).padStart(2,"0"),value:D})),Te=[{label:"AM",value:0},{label:"PM",value:1}],ce=Array.from({length:60},(u,D)=>({label:String(D).padStart(2,"0"),value:D})),se=l.getHours(),pe=se%12,me=se<12?0:1,Oe=q&&!A?lucideReact.Clock:lucideReact.Calendar;return jsxRuntime.jsxs("div",{className:N("dtp-root",e),children:[jsxRuntime.jsxs("div",{className:"dtp-trigger-wrap",children:[jsxRuntime.jsxs("button",{ref:G,type:"button",className:N("dtp-trigger",c&&"dtp-trigger--has-clear",r&&"dtp-trigger--disabled",n),onClick:()=>!r&&(a?I():ae()),disabled:r,"aria-haspopup":"dialog","aria-expanded":a,children:[jsxRuntime.jsx(Oe,{className:"dtp-trigger-icon","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:N("dtp-trigger-text",!c&&"dtp-trigger-placeholder"),children:c||Y.placeholder})]}),c&&jsxRuntime.jsx("button",{type:"button",className:"dtp-trigger-clear","aria-label":b?"\u6E05\u9664":"Clear value",onClick:()=>!r&&R(),children:jsxRuntime.jsx(lucideReact.X,{className:"h-3.5 w-3.5"})})]}),a&&reactDom.createPortal(jsxRuntime.jsxs("div",{ref:$,className:N("dtp-panel",t),role:"dialog","aria-modal":"true","aria-label":b?"\u65E5\u671F\u65F6\u95F4\u9009\u62E9\u5668":"Date time picker",children:[jsxRuntime.jsxs("div",{className:"dtp-panel-header",children:[jsxRuntime.jsx("span",{className:"dtp-panel-preview",children:c||Y.placeholder}),jsxRuntime.jsx("div",{className:"dtp-panel-actions",children:A&&jsxRuntime.jsx("button",{type:"button",className:N("dtp-view-btn",s==="calendar"&&"dtp-view-btn--active"),"aria-pressed":s==="calendar",title:s==="calendar"?Y.scrollView:Y.calendarView,onClick:()=>{s!=="calendar"&&(_(l.getFullYear()),oe(l.getMonth())),P(s==="calendar"?"drum":"calendar");},children:jsxRuntime.jsx(lucideReact.Calendar,{className:"h-4 w-4"})})})]}),jsxRuntime.jsx("div",{className:"dtp-panel-body",children:s==="drum"?jsxRuntime.jsxs("div",{className:"dtp-drum",children:[A&&jsxRuntime.jsxs("div",{className:"dtp-drum-date",children:[jsxRuntime.jsx(T,{label:b?"\u5E74":"Year",items:le,selectedValue:l.getFullYear(),onSelect:u=>v("year",u)}),jsxRuntime.jsx(T,{label:b?"\u6708":"Month",items:h,selectedValue:l.getMonth(),onSelect:u=>v("month",u)}),jsxRuntime.jsx(T,{label:b?"\u65E5":"Day",items:F,selectedValue:l.getDate(),onSelect:u=>v("day",u)})]}),A&&q&&jsxRuntime.jsx("div",{className:"dtp-drum-sep","aria-hidden":"true"}),q&&jsxRuntime.jsxs("div",{className:"dtp-drum-time",children:[x?jsxRuntime.jsx(T,{label:b?"\u65F6":"Hour",items:M,selectedValue:se,onSelect:u=>v("hour",u)}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(T,{label:b?"\u65F6":"Hour",items:te,selectedValue:pe,onSelect:u=>{v("hour",me===1?u+12:u);}}),jsxRuntime.jsx(T,{label:"AM/PM",items:Te,selectedValue:me,onSelect:u=>{v("hour",pe+(u===1?12:0));}})]}),jsxRuntime.jsx(T,{label:b?"\u5206":"Min",items:ce,selectedValue:l.getMinutes(),onSelect:u=>v("minute",u)}),E&&jsxRuntime.jsx(T,{label:b?"\u79D2":"Sec",items:ce,selectedValue:l.getSeconds(),onSelect:u=>v("second",u)})]})]}):jsxRuntime.jsx(Ue,{year:m,month:p,selectedDate:l,today:H,minDate:L,maxDate:W,locale:k,onSelectDay:u=>{v("year",u.getFullYear()),v("month",u.getMonth()),v("day",u.getDate()),P("drum");},onPrev:()=>ee(-1),onNext:()=>ee(1)})}),A&&jsxRuntime.jsx("div",{className:"dtp-panel-offset",children:jsxRuntime.jsx(Ve,{amount:g,unit:f,direction:O,onAmountChange:Q,onUnitChange:ne,onDirectionChange:B,onApply:ie,locale:k})}),jsxRuntime.jsxs("div",{className:"dtp-panel-footer",children:[jsxRuntime.jsx("button",{type:"button",className:"dtp-btn-cancel",onClick:I,children:Y.cancel}),jsxRuntime.jsx("button",{type:"button",className:"dtp-btn-confirm",onClick:j,children:Y.confirm})]})]}),document.body)]})}exports.DateTimePicker=Le;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--dtp-panel-bg: rgba(255, 255, 255, .9);--dtp-panel-border: var(--color-primary-200);--dtp-blur: 16px;--dtp-accent: var(--color-primary-500);--dtp-accent-bg: var(--color-primary-100);--dtp-text-selected: var(--color-primary-800);--dtp-text-muted: var(--color-secondary-400);--dtp-text-primary: var(--color-primary-700);--dtp-item-h: 40px;--dtp-radius: 16px;--dtp-shadow: 0 20px 60px rgba(0, 0, 0, .12), 0 4px 16px rgba(0, 0, 0, .06)}:root:where(.dark,.dark *),.dark{--dtp-panel-bg: rgba(15, 23, 42, .9);--dtp-panel-border: var(--color-primary-700);--dtp-accent-bg: rgba(100, 116, 139, .25);--dtp-text-selected: var(--color-primary-100);--dtp-text-muted: var(--color-secondary-500);--dtp-text-primary: var(--color-primary-300);--dtp-shadow: 0 20px 60px rgba(0, 0, 0, .45), 0 4px 16px rgba(0, 0, 0, .2)}.dtp-root{display:inline-flex;align-items:center}.dtp-trigger-wrap{position:relative;display:inline-flex;align-items:center}.dtp-trigger{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:.5rem;border:1px solid var(--color-primary-300);background:var(--color-primary-50);color:var(--color-primary-700);font-size:.875rem;line-height:1.5;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;min-width:180px;text-align:left}.dtp-trigger--has-clear{padding-right:2rem}:where(.dark,.dark *) .dtp-trigger{border-color:var(--color-primary-600);background:var(--color-primary-800);color:var(--color-primary-200)}.dtp-trigger:hover:not(:disabled){border-color:var(--color-primary-400);box-shadow:0 0 0 3px var(--color-primary-100)}:where(.dark,.dark *) .dtp-trigger:hover:not(:disabled){box-shadow:0 0 0 3px #64748b33}.dtp-trigger--disabled{opacity:.5;cursor:not-allowed}.dtp-trigger-icon{width:1rem;height:1rem;color:var(--color-primary-400);flex-shrink:0}.dtp-trigger-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dtp-trigger-placeholder{color:var(--color-secondary-400)}.dtp-trigger-clear{position:absolute;right:.375rem;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;padding:.125rem;border-radius:9999px;border:none;background:transparent;color:var(--color-secondary-400);cursor:pointer;transition:background .1s ease,color .1s ease}.dtp-trigger-clear:hover{background:var(--color-primary-200);color:var(--color-primary-600)}.dtp-panel{position:fixed;z-index:9999;width:340px;max-width:calc(100vw - 32px);border-radius:var(--dtp-radius);border:1px solid var(--dtp-panel-border);background:var(--dtp-panel-bg);-webkit-backdrop-filter:blur(var(--dtp-blur));backdrop-filter:blur(var(--dtp-blur));box-shadow:var(--dtp-shadow);overflow:hidden;animation:dtp-panel-in .2s cubic-bezier(.16,1,.3,1) both;top:60px;left:0}@keyframes dtp-panel-in{0%{opacity:0;transform:scale(.97) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(max-width:640px){.dtp-panel{position:fixed!important;top:auto!important;left:0!important;bottom:0;width:100vw;max-width:100vw;border-radius:var(--dtp-radius) var(--dtp-radius) 0 0;animation:dtp-panel-slide-up .28s cubic-bezier(.16,1,.3,1) both}@keyframes dtp-panel-slide-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}.dtp-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1rem .625rem;border-bottom:1px solid var(--dtp-panel-border)}.dtp-panel-preview{font-size:.9375rem;font-weight:600;color:var(--dtp-text-primary);letter-spacing:-.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dtp-panel-actions{display:flex;gap:.375rem;margin-left:.5rem}.dtp-view-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.5rem;border:1px solid transparent;background:transparent;color:var(--dtp-text-muted);cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease}.dtp-view-btn:hover{background:var(--dtp-accent-bg);color:var(--dtp-text-selected)}.dtp-view-btn--active{background:var(--dtp-accent-bg);color:var(--dtp-accent);border-color:var(--dtp-panel-border)}.dtp-panel-body{padding:.625rem .5rem}.dtp-drum{display:flex;align-items:stretch}.dtp-drum-date,.dtp-drum-time{display:flex;flex:1;min-width:0}.dtp-drum-sep{width:1px;background:var(--dtp-panel-border);margin:.5rem .25rem}.dtp-column{position:relative;flex:1;height:calc(var(--dtp-item-h) * 5);min-width:0;overflow:hidden}.dtp-column-highlight{position:absolute;left:4px;right:4px;top:50%;transform:translateY(-50%);height:var(--dtp-item-h);background:var(--dtp-accent-bg);border-radius:8px;pointer-events:none;z-index:0}.dtp-column-list{height:100%;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;padding-top:calc(var(--dtp-item-h) * 2);padding-bottom:calc(var(--dtp-item-h) * 2)}.dtp-column-list::-webkit-scrollbar{display:none}.dtp-item{position:relative;z-index:1;height:var(--dtp-item-h);display:flex;align-items:center;justify-content:center;font-size:.875rem;cursor:pointer;color:var(--dtp-text-muted);transition:color .1s ease;-webkit-user-select:none;user-select:none}.dtp-item:hover{color:var(--dtp-text-primary)}.dtp-item--selected{color:var(--dtp-text-selected);font-weight:600;font-size:1rem}.dtp-fade-top,.dtp-fade-bottom{position:absolute;left:0;right:0;height:calc(var(--dtp-item-h) * 2);pointer-events:none;z-index:2}.dtp-fade-top{top:0;background:linear-gradient(to bottom,var(--dtp-panel-bg) 10%,transparent 100%)}.dtp-fade-bottom{bottom:0;background:linear-gradient(to top,var(--dtp-panel-bg) 10%,transparent 100%)}.dtp-calendar{padding:0 .25rem;min-height:230px}.dtp-cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.dtp-cal-nav-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.5rem;border:none;background:transparent;color:var(--dtp-text-muted);cursor:pointer;transition:background .1s ease,color .1s ease}.dtp-cal-nav-btn:hover{background:var(--dtp-accent-bg);color:var(--dtp-text-selected)}.dtp-cal-title{font-size:.875rem;font-weight:600;color:var(--dtp-text-primary)}.dtp-cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:.125rem}.dtp-cal-weekday{text-align:center;font-size:.6875rem;font-weight:500;color:var(--dtp-text-muted);padding:.25rem 0}.dtp-cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.dtp-cal-day{display:flex;align-items:center;justify-content:center;height:2rem;border-radius:.375rem;border:none;background:transparent;font-size:.8125rem;color:var(--dtp-text-primary);cursor:pointer;transition:background 80ms ease,color 80ms ease;width:100%}.dtp-cal-day:hover:not(:disabled):not(.dtp-cal-day--selected){background:var(--dtp-accent-bg)}.dtp-cal-day--other{color:var(--dtp-text-muted);opacity:.45}.dtp-cal-day--selected{background:var(--dtp-accent)!important;color:#fff!important;font-weight:600}.dtp-cal-day--today:not(.dtp-cal-day--selected){font-weight:600;color:var(--dtp-accent);box-shadow:inset 0 0 0 1px var(--dtp-accent)}.dtp-cal-day--disabled{opacity:.28;cursor:not-allowed;pointer-events:none}.dtp-panel-offset{padding:.375rem .75rem .5rem;border-top:1px solid var(--dtp-panel-border)}.dtp-quick-offset{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap;padding:.25rem 0}.dtp-offset-input{width:3.25rem;padding:.25rem .4rem;border-radius:.375rem;border:1px solid var(--dtp-panel-border);background:transparent;color:var(--dtp-text-primary);font-size:.8125rem;text-align:center;outline:none;transition:border-color .1s ease}.dtp-offset-input:focus{border-color:var(--dtp-accent)}.dtp-offset-select{padding:.25rem .3rem;border-radius:.375rem;border:1px solid var(--dtp-panel-border);background:transparent;color:var(--dtp-text-primary);font-size:.8125rem;outline:none;cursor:pointer;transition:border-color .1s ease}.dtp-offset-select:focus{border-color:var(--dtp-accent)}.dtp-offset-apply{padding:.25rem .65rem;border-radius:.375rem;border:none;background:var(--dtp-accent);color:#fff;font-size:.8125rem;font-weight:500;cursor:pointer;transition:opacity .12s ease}.dtp-offset-apply:hover{opacity:.85}.dtp-panel-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:.625rem .75rem;border-top:1px solid var(--dtp-panel-border)}.dtp-btn-cancel{padding:.4375rem 1rem;border-radius:.5rem;border:1px solid var(--dtp-panel-border);background:transparent;color:var(--dtp-text-muted);font-size:.875rem;cursor:pointer;transition:background .1s ease,color .1s ease}.dtp-btn-cancel:hover{background:var(--dtp-accent-bg);color:var(--dtp-text-primary)}.dtp-btn-confirm{padding:.4375rem 1.25rem;border-radius:.5rem;border:none;background:var(--dtp-accent);color:#fff;font-size:.875rem;font-weight:500;cursor:pointer;transition:opacity .12s ease,transform .1s ease}.dtp-btn-confirm:hover{opacity:.9;transform:translateY(-1px)}.dtp-btn-confirm:active{transform:translateY(0)}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DateTimePicker_alias_3 as DateTimePicker } from '../_tsup-dts-rollup.cjs';
|
|
2
|
+
export { DateTimePickerProps_alias_2 as DateTimePickerProps } from '../_tsup-dts-rollup.cjs';
|
|
3
|
+
export { DateTimeMode_alias_2 as DateTimeMode } from '../_tsup-dts-rollup.cjs';
|
|
4
|
+
export { OffsetUnit_alias_2 as OffsetUnit } from '../_tsup-dts-rollup.cjs';
|
|
5
|
+
export { OffsetDirection_alias_2 as OffsetDirection } from '../_tsup-dts-rollup.cjs';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DateTimePicker_alias_3 as DateTimePicker } from '../_tsup-dts-rollup.js';
|
|
2
|
+
export { DateTimePickerProps_alias_2 as DateTimePickerProps } from '../_tsup-dts-rollup.js';
|
|
3
|
+
export { DateTimeMode_alias_2 as DateTimeMode } from '../_tsup-dts-rollup.js';
|
|
4
|
+
export { OffsetUnit_alias_2 as OffsetUnit } from '../_tsup-dts-rollup.js';
|
|
5
|
+
export { OffsetDirection_alias_2 as OffsetDirection } from '../_tsup-dts-rollup.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {useRef,useState,useCallback,useEffect}from'react';import {createPortal}from'react-dom';import {Clock,Calendar,X,ChevronLeft,ChevronRight}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function N(...e){return twMerge(clsx(e))}function Z(e="en-US",t="long"){return Array.from({length:12},(n,r)=>new Intl.DateTimeFormat(e,{month:t}).format(new Date(2e3,r,1)))}function ue(e="en-US",t="narrow"){let n=new Date(2e3,0,2);return Array.from({length:7},(r,i)=>{let d=new Date(n);return d.setDate(n.getDate()+i),new Intl.DateTimeFormat(e,{weekday:t}).format(d)})}function fe(e,t=true,n=true){return e==="date"?"YYYY-MM-DD":e==="time"?t?n?"HH:mm:ss":"HH:mm":n?"hh:mm:ss A":"hh:mm A":t?n?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm":n?"YYYY-MM-DD hh:mm:ss A":"YYYY-MM-DD hh:mm A"}function Ae(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ge(e,t,n="en-US"){let r=e.getHours(),i=Z(n,"long"),d=Z(n,"short"),a={YYYY:String(e.getFullYear()),YY:String(e.getFullYear()).slice(-2),MMMM:i[e.getMonth()],MMM:d[e.getMonth()],MM:String(e.getMonth()+1).padStart(2,"0"),M:String(e.getMonth()+1),DD:String(e.getDate()).padStart(2,"0"),D:String(e.getDate()),HH:String(r).padStart(2,"0"),H:String(r),hh:String(r%12||12).padStart(2,"0"),h:String(r%12||12),mm:String(e.getMinutes()).padStart(2,"0"),ss:String(e.getSeconds()).padStart(2,"0"),A:r<12?"AM":"PM",a:r<12?"am":"pm"},c=Object.keys(a).sort((s,m)=>m.length-s.length),l=new RegExp(c.map(Ae).join("|"),"g");return t.replace(l,s=>a[s]??s)}function U(e,t){return new Date(e,t+1,0).getDate()}function be(e,t){let n=new Date(e,t,1).getDay(),r=U(e,t),i=U(e,t-1),d=[];for(let c=n-1;c>=0;c--)d.push({date:new Date(e,t-1,i-c),thisMonth:false});for(let c=1;c<=r;c++)d.push({date:new Date(e,t,c),thisMonth:true});let a=42-d.length;for(let c=1;c<=a;c++)d.push({date:new Date(e,t+1,c),thisMonth:false});return d}function V(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function de(e,t){return V(e).getTime()===V(t).getTime()}function he(e,t){return V(e)<V(t)}function ve(e,t){return V(e)>V(t)}function re(e,t,n){return t&&e<t?new Date(t):n&&e>n?new Date(n):e}function ye(e,t,n,r){let i=new Date(e),a=t*(r==="future"?1:-1);switch(n){case "day":i.setDate(i.getDate()+a);break;case "week":i.setDate(i.getDate()+a*7);break;case "month":i.setMonth(i.getMonth()+a);break;case "year":i.setFullYear(i.getFullYear()+a);break}return i}function we(e,t=200){let n=e-Math.floor(t/2);return Array.from({length:t},(r,i)=>n+i)}function De(e){let{value:t,defaultValue:n,onChange:r,mode:i="datetime",minDate:d,maxDate:a,use24Hour:c=true,showSeconds:l=true,locale:s="en-US",format:m,onOpen:p,onClose:g}=e,f=t!==void 0,[O,S]=useState(n??null),x=f?t??null:O,[E,k]=useState(false),[L,W]=useState(()=>x??new Date),[ae,I]=useState("drum"),[j,R]=useState(()=>(x??new Date).getFullYear()),[v,P]=useState(()=>(x??new Date).getMonth()),[_,oe]=useState(1),[Q,ne]=useState("day"),[B,ie]=useState("future"),ee=m??fe(i,c,l),G=x?ge(x,ee,s):"",$=useCallback(()=>{let h=x??new Date;W(new Date(h)),R(h.getFullYear()),P(h.getMonth()),I("drum"),k(true),p?.();},[x,p]),H=useCallback(()=>{k(false),g?.();},[g]),b=useCallback(()=>{let h=re(L,d,a);f||S(h),r?.(h),H();},[L,d,a,f,r,H]),Y=useCallback(()=>{f||S(null),r?.(null),H();},[f,r,H]),A=useCallback((h,y)=>{W(F=>{let M=new Date(F);switch(h){case "year":M.setFullYear(y);break;case "month":{M.setMonth(y);let te=U(M.getFullYear(),y);M.getDate()>te&&M.setDate(te);break}case "day":M.setDate(y);break;case "hour":M.setHours(y);break;case "minute":M.setMinutes(y);break;case "second":M.setSeconds(y);break}return re(M,d,a)});},[d,a]),q=useCallback(()=>{let h=re(ye(new Date,_,Q,B),d,a);W(h),R(h.getFullYear()),P(h.getMonth());},[_,Q,B,d,a]),le=useCallback(h=>{let y=v+h,F=j;y<0&&(y=11,F--),y>11&&(y=0,F++),P(y),R(F);},[v,j]);return {isOpen:E,displayValue:G,workingDate:L,view:ae,calYear:j,calMonth:v,offsetAmount:_,offsetUnit:Q,offsetDirection:B,mode:i,use24Hour:c,showSeconds:l,locale:s,minDate:d,maxDate:a,openPicker:$,closePicker:H,confirm:b,clear:Y,updateField:A,setView:I,setCalYear:R,setCalMonth:P,setOffsetAmount:oe,setOffsetUnit:ne,setOffsetDirection:ie,applyQuickOffset:q,navigateCalendar:le}}var J=40;function Me(e,t,n=true){let r=useRef(t);r.current=t,useEffect(()=>{if(!n)return;function i(d){let a=d.target;e.some(l=>l.current?.contains(a))||r.current();}return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[e,n]);}function Se(e,t,n){let r=useRef(false),i=useRef(void 0),d=useRef(n);d.current=n;let a=useRef(t);a.current=t;let c=useCallback((s,m="smooth")=>{let p=e.current;if(!p)return;let g=s*J;Math.abs(p.scrollTop-g)<2&&m!=="instant"||(m==="instant"?p.scrollTop=g:p.scrollTo({top:g,behavior:m}));},[e]),l=useCallback(()=>{e.current&&(r.current=true,clearTimeout(i.current),i.current=setTimeout(()=>{r.current=false;let m=e.current;if(!m)return;let p=Math.round(m.scrollTop/J),g=Math.max(0,Math.min(a.current-1,p)),f=g*J;Math.abs(m.scrollTop-f)>1&&m.scrollTo({top:f,behavior:"smooth"}),d.current(g);},120));},[e]);return {scrollToIndex:c,handleScroll:l,isScrollingRef:r}}function Ce(e,t,n){useEffect(()=>{if(!n)return;function r(){let d=e.current,a=t.current;if(!d||!a)return;if(window.innerWidth<=640){a.style.top="",a.style.left="";return}let c=d.getBoundingClientRect(),l=window.innerHeight,s=window.innerWidth,m=a.offsetHeight||460,p=a.offsetWidth||340,g=c.bottom+8,f=c.left;g+m>l-16&&(g=Math.max(16,c.top-m-8)),f+p>s-16&&(f=Math.max(16,s-p-16)),f<16&&(f=16),a.style.top=`${Math.round(g)}px`,a.style.left=`${Math.round(f)}px`;}let i=setTimeout(r,0);return window.addEventListener("resize",r),window.addEventListener("scroll",r,true),()=>{clearTimeout(i),window.removeEventListener("resize",r),window.removeEventListener("scroll",r,true);}},[n,e,t]);}function T({items:e,selectedValue:t,onSelect:n,label:r}){let i=useRef(null),d=useRef(t),a=useRef(false),{scrollToIndex:c,handleScroll:l}=Se(i,e.length,s=>{let m=e[s];m&&(a.current=true,n(m.value),setTimeout(()=>{a.current=false;},200));});return useEffect(()=>{let s=i.current;if(!s)return;let m=e.findIndex(p=>p.value===t);m>=0&&(s.scrollTop=m*J);},[]),useEffect(()=>{if(d.current!==t&&(d.current=t,!a.current)){let s=e.findIndex(m=>m.value===t);s>=0&&c(s,"smooth");}},[t,e,c]),jsxs("div",{className:"dtp-column",role:"group","aria-label":r,children:[jsx("div",{className:"dtp-column-highlight","aria-hidden":"true"}),jsx("div",{ref:i,className:"dtp-column-list",onScroll:l,role:"listbox","aria-label":r,children:e.map(s=>jsx("div",{className:N("dtp-item",s.value===t&&"dtp-item--selected"),onClick:()=>{let m=e.findIndex(p=>p.value===s.value);m>=0&&c(m,"smooth"),n(s.value);},role:"option","aria-selected":s.value===t,children:s.label},s.value))}),jsx("div",{className:"dtp-fade-top","aria-hidden":"true"}),jsx("div",{className:"dtp-fade-bottom","aria-hidden":"true"})]})}function Ue({year:e,month:t,selectedDate:n,today:r,minDate:i,maxDate:d,locale:a,onSelectDay:c,onPrev:l,onNext:s}){let m=ue(a,"narrow"),p=Z(a,"long"),g=be(e,t);return jsxs("div",{className:"dtp-calendar",children:[jsxs("div",{className:"dtp-cal-nav",children:[jsx("button",{type:"button",className:"dtp-cal-nav-btn",onClick:l,"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsxs("span",{className:"dtp-cal-title",children:[p[t]," ",e]}),jsx("button",{type:"button",className:"dtp-cal-nav-btn",onClick:s,"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsx("div",{className:"dtp-cal-weekdays",role:"row",children:m.map((f,O)=>jsx("div",{className:"dtp-cal-weekday",role:"columnheader","aria-label":f,children:f},O))}),jsx("div",{className:"dtp-cal-days",role:"grid",children:g.map(({date:f,thisMonth:O},S)=>{let x=de(f,n),E=de(f,r),k=i!=null&&he(f,i)||d!=null&&ve(f,d);return jsx("button",{type:"button",role:"gridcell",className:N("dtp-cal-day",!O&&"dtp-cal-day--other",x&&"dtp-cal-day--selected",E&&!x&&"dtp-cal-day--today",k&&"dtp-cal-day--disabled"),onClick:()=>!k&&c(f),disabled:k,"aria-current":E?"date":void 0,"aria-selected":x,"aria-disabled":k,children:f.getDate()},S)})})]})}function Ve({amount:e,unit:t,direction:n,onAmountChange:r,onUnitChange:i,onDirectionChange:d,onApply:a,locale:c}){let l=c.startsWith("zh"),s=[{value:"day",label:l?"\u5929":"Day"},{value:"week",label:l?"\u5468":"Week"},{value:"month",label:l?"\u6708":"Month"},{value:"year",label:l?"\u5E74":"Year"}],m=[{value:"future",label:l?"\u4EE5\u540E":"from now"},{value:"past",label:l?"\u4EE5\u524D":"before now"}];return jsxs("div",{className:"dtp-quick-offset","aria-label":l?"\u5FEB\u901F\u504F\u79FB":"Quick offset",children:[jsx("input",{type:"number",className:"dtp-offset-input",value:e,min:1,max:9999,"aria-label":l?"\u504F\u79FB\u6570\u91CF":"Offset amount",onChange:p=>{let g=parseInt(p.target.value,10);!isNaN(g)&&g>=1&&r(g);}}),jsx("select",{className:"dtp-offset-select",value:t,"aria-label":l?"\u504F\u79FB\u5355\u4F4D":"Offset unit",onChange:p=>i(p.target.value),children:s.map(p=>jsx("option",{value:p.value,children:p.label},p.value))}),jsx("select",{className:"dtp-offset-select",value:n,"aria-label":l?"\u504F\u79FB\u65B9\u5411":"Offset direction",onChange:p=>d(p.target.value),children:m.map(p=>jsx("option",{value:p.value,children:p.label},p.value))}),jsx("button",{type:"button",className:"dtp-offset-apply",onClick:a,children:l?"\u5E94\u7528":"Apply"})]})}function Le({className:e,popupClassName:t,triggerClassName:n,disabled:r=false,placeholder:i,...d}){let{isOpen:a,displayValue:c,workingDate:l,view:s,calYear:m,calMonth:p,offsetAmount:g,offsetUnit:f,offsetDirection:O,mode:S,use24Hour:x,showSeconds:E,locale:k,minDate:L,maxDate:W,openPicker:ae,closePicker:I,confirm:j,clear:R,updateField:v,setView:P,setCalYear:_,setCalMonth:oe,setOffsetAmount:Q,setOffsetUnit:ne,setOffsetDirection:B,applyQuickOffset:ie,navigateCalendar:ee}=De({...d}),G=useRef(null),$=useRef(null),H=new Date;Me([G,$],I,a),Ce(G,$,a);let b=k.startsWith("zh"),Y={cancel:b?"\u53D6\u6D88":"Cancel",confirm:b?"\u786E\u5B9A":"Confirm",calendarView:b?"\u65E5\u5386":"Calendar",scrollView:b?"\u6EDA\u8F6E":"Scroll",placeholder:i??(b?"\u9009\u62E9\u65E5\u671F\u65F6\u95F4":"Select date / time")},A=S==="date"||S==="datetime",q=S==="time"||S==="datetime",le=we(l.getFullYear(),200).map(u=>({label:String(u),value:u})),h=Z(k,"short").map((u,D)=>({label:u,value:D})),y=U(l.getFullYear(),l.getMonth()),F=Array.from({length:y},(u,D)=>({label:String(D+1).padStart(2,"0"),value:D+1})),M=Array.from({length:24},(u,D)=>({label:String(D).padStart(2,"0"),value:D})),te=Array.from({length:12},(u,D)=>({label:String(D===0?12:D).padStart(2,"0"),value:D})),Te=[{label:"AM",value:0},{label:"PM",value:1}],ce=Array.from({length:60},(u,D)=>({label:String(D).padStart(2,"0"),value:D})),se=l.getHours(),pe=se%12,me=se<12?0:1,Oe=q&&!A?Clock:Calendar;return jsxs("div",{className:N("dtp-root",e),children:[jsxs("div",{className:"dtp-trigger-wrap",children:[jsxs("button",{ref:G,type:"button",className:N("dtp-trigger",c&&"dtp-trigger--has-clear",r&&"dtp-trigger--disabled",n),onClick:()=>!r&&(a?I():ae()),disabled:r,"aria-haspopup":"dialog","aria-expanded":a,children:[jsx(Oe,{className:"dtp-trigger-icon","aria-hidden":"true"}),jsx("span",{className:N("dtp-trigger-text",!c&&"dtp-trigger-placeholder"),children:c||Y.placeholder})]}),c&&jsx("button",{type:"button",className:"dtp-trigger-clear","aria-label":b?"\u6E05\u9664":"Clear value",onClick:()=>!r&&R(),children:jsx(X,{className:"h-3.5 w-3.5"})})]}),a&&createPortal(jsxs("div",{ref:$,className:N("dtp-panel",t),role:"dialog","aria-modal":"true","aria-label":b?"\u65E5\u671F\u65F6\u95F4\u9009\u62E9\u5668":"Date time picker",children:[jsxs("div",{className:"dtp-panel-header",children:[jsx("span",{className:"dtp-panel-preview",children:c||Y.placeholder}),jsx("div",{className:"dtp-panel-actions",children:A&&jsx("button",{type:"button",className:N("dtp-view-btn",s==="calendar"&&"dtp-view-btn--active"),"aria-pressed":s==="calendar",title:s==="calendar"?Y.scrollView:Y.calendarView,onClick:()=>{s!=="calendar"&&(_(l.getFullYear()),oe(l.getMonth())),P(s==="calendar"?"drum":"calendar");},children:jsx(Calendar,{className:"h-4 w-4"})})})]}),jsx("div",{className:"dtp-panel-body",children:s==="drum"?jsxs("div",{className:"dtp-drum",children:[A&&jsxs("div",{className:"dtp-drum-date",children:[jsx(T,{label:b?"\u5E74":"Year",items:le,selectedValue:l.getFullYear(),onSelect:u=>v("year",u)}),jsx(T,{label:b?"\u6708":"Month",items:h,selectedValue:l.getMonth(),onSelect:u=>v("month",u)}),jsx(T,{label:b?"\u65E5":"Day",items:F,selectedValue:l.getDate(),onSelect:u=>v("day",u)})]}),A&&q&&jsx("div",{className:"dtp-drum-sep","aria-hidden":"true"}),q&&jsxs("div",{className:"dtp-drum-time",children:[x?jsx(T,{label:b?"\u65F6":"Hour",items:M,selectedValue:se,onSelect:u=>v("hour",u)}):jsxs(Fragment,{children:[jsx(T,{label:b?"\u65F6":"Hour",items:te,selectedValue:pe,onSelect:u=>{v("hour",me===1?u+12:u);}}),jsx(T,{label:"AM/PM",items:Te,selectedValue:me,onSelect:u=>{v("hour",pe+(u===1?12:0));}})]}),jsx(T,{label:b?"\u5206":"Min",items:ce,selectedValue:l.getMinutes(),onSelect:u=>v("minute",u)}),E&&jsx(T,{label:b?"\u79D2":"Sec",items:ce,selectedValue:l.getSeconds(),onSelect:u=>v("second",u)})]})]}):jsx(Ue,{year:m,month:p,selectedDate:l,today:H,minDate:L,maxDate:W,locale:k,onSelectDay:u=>{v("year",u.getFullYear()),v("month",u.getMonth()),v("day",u.getDate()),P("drum");},onPrev:()=>ee(-1),onNext:()=>ee(1)})}),A&&jsx("div",{className:"dtp-panel-offset",children:jsx(Ve,{amount:g,unit:f,direction:O,onAmountChange:Q,onUnitChange:ne,onDirectionChange:B,onApply:ie,locale:k})}),jsxs("div",{className:"dtp-panel-footer",children:[jsx("button",{type:"button",className:"dtp-btn-cancel",onClick:I,children:Y.cancel}),jsx("button",{type:"button",className:"dtp-btn-confirm",onClick:j,children:Y.confirm})]})]}),document.body)]})}export{Le as DateTimePicker};
|