tekivex-ui 3.20.0 → 3.22.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 +33 -0
- package/dist/experimental.cjs +1 -1
- package/dist/experimental.js +23 -23
- package/dist/headless.cjs +1 -1
- package/dist/headless.js +46 -46
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.js +633 -607
- package/dist/realtime.cjs +1 -1
- package/dist/realtime.js +1 -1
- package/dist/src/components/TkxAffix.d.ts +2 -1
- package/dist/src/components/TkxAppBar.d.ts +4 -2
- package/dist/src/components/TkxAutoForm.d.ts +15 -0
- package/dist/src/components/TkxBottomNav.d.ts +4 -2
- package/dist/src/components/TkxCascader.d.ts +1 -2
- package/dist/src/components/TkxClock.d.ts +0 -1
- package/dist/src/components/TkxList.d.ts +4 -2
- package/dist/src/components/TkxLiveFeed.d.ts +867 -5
- package/dist/src/components/TkxLiveMetrics.d.ts +0 -1
- package/dist/src/components/TkxQRCode.d.ts +22 -2
- package/dist/src/components/TkxRealTimeChart.d.ts +863 -2
- package/dist/src/components/TkxResult.d.ts +4 -2
- package/dist/src/components/TkxSecurityDashboard.d.ts +23 -0
- package/dist/src/components/TkxSegmented.d.ts +3 -1
- package/dist/src/components/TkxSpin.d.ts +3 -1
- package/dist/src/components/TkxTimeline.d.ts +4 -2
- package/dist/src/components/TkxWatermark.d.ts +1 -1
- package/dist/src/components/index.d.ts +2 -0
- package/dist/src/engine/security.d.ts +15 -0
- package/dist/src/themes/index.d.ts +1 -0
- package/dist/themes.cjs +1 -1
- package/dist/themes.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
1
|
+
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
2
|
export type ResultStatus = 'success' | 'error' | 'warning' | 'info' | '404' | '403' | '500';
|
|
3
3
|
export interface TkxResultProps {
|
|
4
4
|
status: ResultStatus;
|
|
@@ -6,5 +6,7 @@ export interface TkxResultProps {
|
|
|
6
6
|
subTitle?: string;
|
|
7
7
|
icon?: ReactNode;
|
|
8
8
|
extra?: ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
style?: CSSProperties;
|
|
9
11
|
}
|
|
10
|
-
export declare function TkxResult({ status, title, subTitle, icon, extra }: TkxResultProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function TkxResult({ status, title, subTitle, icon, extra, className, style }: TkxResultProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
|
+
import { type SecurityEvent, type SecurityEventType, type SecuritySeverity } from '../engine/security';
|
|
3
|
+
export interface SecurityEventsState {
|
|
4
|
+
events: readonly SecurityEvent[];
|
|
5
|
+
counts: Record<SecurityEventType, number>;
|
|
6
|
+
bySeverity: Record<SecuritySeverity, number>;
|
|
7
|
+
clear: () => void;
|
|
8
|
+
toJSON: () => string;
|
|
9
|
+
}
|
|
10
|
+
export declare function useSecurityEvents(maxEvents?: number): SecurityEventsState;
|
|
11
|
+
export interface SecurityProviderProps {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
maxEvents?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function SecurityProvider({ children, maxEvents }: SecurityProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export interface TkxSecurityDashboardProps {
|
|
17
|
+
maxEvents?: number;
|
|
18
|
+
hideExport?: boolean;
|
|
19
|
+
compact?: boolean;
|
|
20
|
+
className?: string;
|
|
21
|
+
style?: CSSProperties;
|
|
22
|
+
}
|
|
23
|
+
export declare function TkxSecurityDashboard({ maxEvents, hideExport, compact, className, style, }: TkxSecurityDashboardProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -11,5 +11,7 @@ export interface TkxSegmentedProps {
|
|
|
11
11
|
onChange?: (value: string) => void;
|
|
12
12
|
size?: 'sm' | 'md' | 'lg';
|
|
13
13
|
block?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
style?: React.CSSProperties;
|
|
14
16
|
}
|
|
15
|
-
export declare function TkxSegmented({ options, value, onChange, size, block, }: TkxSegmentedProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function TkxSegmented({ options, value, onChange, size, block, className, style, }: TkxSegmentedProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -7,8 +7,10 @@ export interface TkxSpinProps {
|
|
|
7
7
|
children?: ReactNode;
|
|
8
8
|
fullscreen?: boolean;
|
|
9
9
|
delay?: number;
|
|
10
|
+
className?: string;
|
|
10
11
|
style?: CSSProperties;
|
|
11
12
|
}
|
|
12
|
-
export declare function TkxSpin({ spinning, size, tip, indicator, children, fullscreen, delay, style, }: TkxSpinProps): import("react").DetailedReactHTMLElement<{
|
|
13
|
+
export declare function TkxSpin({ spinning, size, tip, indicator, children, fullscreen, delay, className, style, }: TkxSpinProps): import("react").DetailedReactHTMLElement<{
|
|
14
|
+
className: string | undefined;
|
|
13
15
|
style: CSSProperties | undefined;
|
|
14
16
|
}, HTMLElement> | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
1
|
+
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
2
|
export type TimelineVariant = 'default' | 'compact' | 'alternating';
|
|
3
3
|
export type TimelineItemStatus = 'completed' | 'active' | 'pending' | 'error';
|
|
4
4
|
export interface TimelineItem {
|
|
@@ -15,5 +15,7 @@ export interface TkxTimelineProps {
|
|
|
15
15
|
variant?: TimelineVariant;
|
|
16
16
|
orientation?: 'vertical' | 'horizontal';
|
|
17
17
|
connectorStyle?: 'solid' | 'dashed' | 'dotted';
|
|
18
|
+
className?: string;
|
|
19
|
+
style?: CSSProperties;
|
|
18
20
|
}
|
|
19
|
-
export declare function TkxTimeline({ items, variant, orientation, connectorStyle, }: TkxTimelineProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function TkxTimeline({ items, variant, orientation, connectorStyle, className, style, }: TkxTimelineProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -14,5 +14,5 @@ export interface TkxWatermarkProps {
|
|
|
14
14
|
intensifyOnDevtools?: boolean;
|
|
15
15
|
fingerprintId?: string;
|
|
16
16
|
}
|
|
17
|
-
export declare function useDevtoolsOpen(): boolean;
|
|
17
|
+
export declare function useDevtoolsOpen(enabled?: boolean): boolean;
|
|
18
18
|
export declare function TkxWatermark({ text, children, rotate, gap, fontSize, color, zIndex, pattern, dynamic, refreshMs, intensifyOnDevtools, fingerprintId, }: TkxWatermarkProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -13,6 +13,7 @@ export * from './TkxAvatar';
|
|
|
13
13
|
export * from './TkxTable';
|
|
14
14
|
export * from './TkxDivider';
|
|
15
15
|
export * from './TkxIcon';
|
|
16
|
+
export * from './TkxSecurityDashboard';
|
|
16
17
|
export * from './TkxLogo';
|
|
17
18
|
export * from './TkxSelect';
|
|
18
19
|
export * from './TkxCheckbox';
|
|
@@ -54,6 +55,7 @@ export * from './TkxMasonry';
|
|
|
54
55
|
export * from './TkxRichTextDisplay';
|
|
55
56
|
export * from './TkxMarkdown';
|
|
56
57
|
export * from './TkxForm';
|
|
58
|
+
export * from './TkxAutoForm';
|
|
57
59
|
export * from './TkxLayout';
|
|
58
60
|
export * from './TkxConfigProvider';
|
|
59
61
|
export * from './TkxTypography';
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
export declare function sha256Hex(input: string): string;
|
|
2
|
+
export type SecurityEventType = 'xss-sanitized' | 'unicode-stripped' | 'pii-redacted' | 'audit' | 'clickjacking-detected' | 'rate-limited' | 'mime-rejected';
|
|
3
|
+
export type SecuritySeverity = 'info' | 'warning' | 'critical';
|
|
4
|
+
export interface SecurityEvent {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly type: SecurityEventType;
|
|
7
|
+
readonly timestamp: number;
|
|
8
|
+
readonly severity: SecuritySeverity;
|
|
9
|
+
readonly message: string;
|
|
10
|
+
readonly detail?: Readonly<Record<string, unknown>>;
|
|
11
|
+
}
|
|
12
|
+
type SecurityEventListener = (evt: SecurityEvent) => void;
|
|
13
|
+
export declare function onSecurityEvent(listener: SecurityEventListener): () => void;
|
|
14
|
+
export declare function getRecentSecurityEvents(): readonly SecurityEvent[];
|
|
15
|
+
export declare function clearSecurityEvents(): void;
|
|
16
|
+
export declare function emitSecurityEvent(type: SecurityEventType, message: string, severity?: SecuritySeverity, detail?: Record<string, unknown>): SecurityEvent;
|
|
2
17
|
export declare function sanitizeString(input: unknown): string;
|
|
3
18
|
export declare function sanitizeProps<T extends Record<string, unknown>>(props: T): T;
|
|
4
19
|
export interface PropSchema {
|
|
@@ -33,6 +33,7 @@ export declare function themeInitScript(opts?: {
|
|
|
33
33
|
defaultMode?: 'light' | 'dark';
|
|
34
34
|
}): string;
|
|
35
35
|
export declare function useTheme(): ThemeTokens;
|
|
36
|
+
export declare function tkxThemeVars(theme: ThemeTokens): Record<string, string>;
|
|
36
37
|
export declare function usePrefersColorScheme(): 'light' | 'dark';
|
|
37
38
|
export interface ColorPalette {
|
|
38
39
|
50: string;
|
package/dist/themes.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let e=require("react");function t(e){const[t,r,n]=function(e){if(!e||"string"!=typeof e)return[0,0,0];const t=e.replace("#",""),r=3===t.length?t.split("").map(e=>e+e).join(""):t,n=parseInt(r.slice(0,2),16),o=parseInt(r.slice(2,4),16),a=parseInt(r.slice(4,6),16);return[isNaN(n)?0:n,isNaN(o)?0:o,isNaN(a)?0:a]}(e).map(e=>{const t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return.2126*t+.7152*r+.0722*n}function r(e,r){const n=t(e),o=t(r);return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)}function n(e,t,n=!1){return r(e,t)>=(n?3:4.5)}["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])',"details > summary"].join(", ");var o="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,a={bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"},i={bg:"#f8f6f1",surface:"#ffffff",surfaceAlt:"#f0ede6",border:"#ddd8cc",text:"#1a1815",textMuted:"#6b6560",primary:"#0d7c5f",secondary:"#6930c3",danger:"#c1121f",warning:"#d4a017",success:"#0d7c5f",info:"#1d4ed8"},s=/^#[0-9a-fA-F]{3,8}$/,c=(0,e.createContext)(a);function d(e,t,r){r/=100;const n=(t/=100)*Math.min(r,1-r),o=t=>{const o=(t+e/30)%12,a=r-n*Math.max(Math.min(o-3,9-o,1),-1);return Math.round(255*a).toString(16).padStart(2,"0")};return`#${o(0)}${o(8)}${o(4)}`}exports.ThemeContext=c,exports.ThemeProvider=function({theme:t,mode:r,lightTheme:n=i,darkTheme:s=a,defaultMode:d="light",suppressHydrationWarning:x=!1,children:p}){const f=void 0!==t,
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let e=require("react");function t(e){const[t,r,n]=function(e){if(!e||"string"!=typeof e)return[0,0,0];const t=e.replace("#",""),r=3===t.length?t.split("").map(e=>e+e).join(""):t,n=parseInt(r.slice(0,2),16),o=parseInt(r.slice(2,4),16),a=parseInt(r.slice(4,6),16);return[isNaN(n)?0:n,isNaN(o)?0:o,isNaN(a)?0:a]}(e).map(e=>{const t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return.2126*t+.7152*r+.0722*n}function r(e,r){const n=t(e),o=t(r);return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)}function n(e,t,n=!1){return r(e,t)>=(n?3:4.5)}["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])',"details > summary"].join(", ");var o="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,a={bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"},i={bg:"#f8f6f1",surface:"#ffffff",surfaceAlt:"#f0ede6",border:"#ddd8cc",text:"#1a1815",textMuted:"#6b6560",primary:"#0d7c5f",secondary:"#6930c3",danger:"#c1121f",warning:"#d4a017",success:"#0d7c5f",info:"#1d4ed8"},s=/^#[0-9a-fA-F]{3,8}$/,c=(0,e.createContext)(a);function d(e,t,r){r/=100;const n=(t/=100)*Math.min(r,1-r),o=t=>{const o=(t+e/30)%12,a=r-n*Math.max(Math.min(o-3,9-o,1),-1);return Math.round(255*a).toString(16).padStart(2,"0")};return`#${o(0)}${o(8)}${o(4)}`}exports.ThemeContext=c,exports.ThemeProvider=function({theme:t,mode:r,lightTheme:n=i,darkTheme:s=a,defaultMode:d="light",suppressHydrationWarning:x=!1,children:p}){const f=void 0!==t,u=function(t){const[r,n]=(0,e.useState)(null);return(0,e.useEffect)(()=>{if(!t||"undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");n(e.matches);const r=e=>n(e.matches);return e.addEventListener?(e.addEventListener("change",r),()=>e.removeEventListener("change",r)):(e.addListener(r),()=>e.removeListener(r))},[t]),r}(!f&&("auto"===r||void 0===r)),l=function(){const[t,r]=(0,e.useState)(!1);return(0,e.useEffect)(()=>r(!0),[]),t}();let m;m=f?t:"light"===r?n:"dark"===r?s:null===u?"dark"===d?s:n:u?s:n;const h=x&&!l;o(()=>{if(h)return;const e=Object.entries(m).map(([e,t])=>function(e,t){return void 0!==t?`--tkx-${e}: ${t};`:`var(--tkx-${e})`}(e,t)).join(" ");let t=document.getElementById("tkx-theme");if(!t){t=document.createElement("style"),t.id="tkx-theme";const e=document.head.querySelector("style");e?document.head.insertBefore(t,e):document.head.appendChild(t)}t.textContent=`:root { ${e} }`,document.documentElement.setAttribute("data-tkx-scheme",m===s?"dark":m===n?"light":"custom")},[m,s,n,h]);const g=h?{}:Object.fromEntries(Object.entries(m).map(([e,t])=>[`--tkx-${e}`,t]));return(0,e.createElement)(c.Provider,{value:m},(0,e.createElement)("div",{style:{display:"contents",...g}},p))},exports.auroraLight=i,exports.breakpoints={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},exports.createTheme=function(e,t){const o={...e,...t};for(const[r,n]of Object.entries(o))if(!s.test(n))throw new Error(`Invalid hex color for theme token '${r}': ${n}`);return n(o.text,o.bg),n(o.primary,o.bg),r(o.text,o.bg),o},exports.generatePalette=function(e){const[t,r]=function(e){const t=e.replace("#",""),r=parseInt(t.slice(0,2),16)/255,n=parseInt(t.slice(2,4),16)/255,o=parseInt(t.slice(4,6),16)/255,a=Math.max(r,n,o),i=Math.min(r,n,o);let s=0,c=0;const d=(a+i)/2;if(a!==i){const e=a-i;switch(c=d>.5?e/(2-a-i):e/(a+i),a){case r:s=((n-o)/e+(n<o?6:0))/6;break;case n:s=((o-r)/e+2)/6;break;case o:s=((r-n)/e+4)/6}}return[Math.round(360*s),Math.round(100*c),Math.round(100*d)]}(e);return{50:d(t,Math.min(r,30),96),100:d(t,Math.min(r,40),90),200:d(t,Math.min(r,50),80),300:d(t,r,70),400:d(t,r,60),500:e,600:d(t,r,45),700:d(t,r,35),800:d(t,r,25),900:d(t,r,15)}},exports.quantumDark=a,exports.radii={none:"0",sm:"4px",md:"6px",lg:"8px",xl:"12px","2xl":"16px",full:"9999px"},exports.shadows={none:"none",xs:"0 1px 2px 0 rgba(0,0,0,0.05)",sm:"0 1px 3px 0 rgba(0,0,0,0.1), 0 1px 2px -1px rgba(0,0,0,0.1)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",lg:"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",xl:"0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)","2xl":"0 25px 50px -12px rgba(0,0,0,0.25)",inner:"inset 0 2px 4px 0 rgba(0,0,0,0.06)"},exports.spacing={0:"0px",.5:"2px",1:"4px",1.5:"6px",2:"8px",2.5:"10px",3:"12px",4:"16px",5:"20px",6:"24px",8:"32px",10:"40px",12:"48px",16:"64px",20:"80px",24:"96px"},exports.themeInitScript=function(e){const t=e?.storageKey??"tkx-theme",r="dark"===e?.defaultMode?"dark":"light";return`(function(){try{var k=${JSON.stringify(t)};var d=${JSON.stringify(r)};var s=null;try{s=window.localStorage.getItem(k);}catch(e){}var m=s;if(m!=="light"&&m!=="dark"){m=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":d);}var r=document.documentElement;r.dataset.theme=m;r.setAttribute("data-tkx-scheme",m);}catch(e){}})();`},exports.tkxThemeVars=function(e){return{"--tkx-bg":e.bg,"--tkx-bg-subtle":e.surface,"--tkx-fg":e.text,"--tkx-fg-muted":e.textMuted,"--tkx-accent":e.primary,"--tkx-border":e.border,"--tkx-border-soft":e.surfaceAlt}},exports.typography={xs:{fontSize:"0.75rem",lineHeight:"1rem"},sm:{fontSize:"0.875rem",lineHeight:"1.25rem"},base:{fontSize:"1rem",lineHeight:"1.5rem"},lg:{fontSize:"1.125rem",lineHeight:"1.75rem"},xl:{fontSize:"1.25rem",lineHeight:"1.75rem"},"2xl":{fontSize:"1.5rem",lineHeight:"2rem"},"3xl":{fontSize:"1.875rem",lineHeight:"2.25rem"},"4xl":{fontSize:"2.25rem",lineHeight:"2.5rem"},"5xl":{fontSize:"3rem",lineHeight:"1.15"}},exports.usePrefersColorScheme=function(){const[t,r]=(0,e.useState)(()=>"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":"dark");return(0,e.useEffect)(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>r(e.matches?"dark":"light");return e.addEventListener?(e.addEventListener("change",t),()=>e.removeEventListener("change",t)):(e.addListener(t),()=>e.removeListener(t))},[]),t},exports.useTheme=function(){return(0,e.useContext)(c)},exports.zIndex={hide:-1,base:0,dropdown:1e3,sticky:1100,fixed:1200,overlay:1300,modal:1400,popover:1500,tooltip:1600,toast:1700,max:9999};
|
package/dist/themes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createContext as e,createElement as t,useContext as n,useEffect as r,useLayoutEffect as a,useState as o}from"react";function i(e){const[t,n,r]=function(e){if(!e||"string"!=typeof e)return[0,0,0];const t=e.replace("#",""),n=3===t.length?t.split("").map(e=>e+e).join(""):t,r=parseInt(n.slice(0,2),16),a=parseInt(n.slice(2,4),16),o=parseInt(n.slice(4,6),16);return[isNaN(r)?0:r,isNaN(a)?0:a,isNaN(o)?0:o]}(e).map(e=>{const t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return.2126*t+.7152*n+.0722*r}function c(e,t){const n=i(e),r=i(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function d(e,t,n=!1){return c(e,t)>=(n?3:4.5)}["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])',"details > summary"].join(", ");var s="undefined"!=typeof window?a:r,
|
|
1
|
+
import{createContext as e,createElement as t,useContext as n,useEffect as r,useLayoutEffect as a,useState as o}from"react";function i(e){const[t,n,r]=function(e){if(!e||"string"!=typeof e)return[0,0,0];const t=e.replace("#",""),n=3===t.length?t.split("").map(e=>e+e).join(""):t,r=parseInt(n.slice(0,2),16),a=parseInt(n.slice(2,4),16),o=parseInt(n.slice(4,6),16);return[isNaN(r)?0:r,isNaN(a)?0:a,isNaN(o)?0:o]}(e).map(e=>{const t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4});return.2126*t+.7152*n+.0722*r}function c(e,t){const n=i(e),r=i(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function d(e,t,n=!1){return c(e,t)>=(n?3:4.5)}["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])',"details > summary"].join(", ");var s="undefined"!=typeof window?a:r,x={bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"},f={bg:"#f8f6f1",surface:"#ffffff",surfaceAlt:"#f0ede6",border:"#ddd8cc",text:"#1a1815",textMuted:"#6b6560",primary:"#0d7c5f",secondary:"#6930c3",danger:"#c1121f",warning:"#d4a017",success:"#0d7c5f",info:"#1d4ed8"},p=/^#[0-9a-fA-F]{3,8}$/;function u(e,t){const n={...e,...t};for(const[r,a]of Object.entries(n))if(!p.test(a))throw new Error(`Invalid hex color for theme token '${r}': ${a}`);return d(n.text,n.bg),d(n.primary,n.bg),c(n.text,n.bg),n}var l=e(x);function m({theme:e,mode:n,lightTheme:a=f,darkTheme:i=x,defaultMode:c="light",suppressHydrationWarning:d=!1,children:p}){const u=void 0!==e,m=function(e){const[t,n]=o(null);return r(()=>{if(!e||"undefined"==typeof window||!window.matchMedia)return;const t=window.matchMedia("(prefers-color-scheme: dark)");n(t.matches);const r=e=>n(e.matches);return t.addEventListener?(t.addEventListener("change",r),()=>t.removeEventListener("change",r)):(t.addListener(r),()=>t.removeListener(r))},[e]),t}(!u&&("auto"===n||void 0===n)),h=function(){const[e,t]=o(!1);return r(()=>t(!0),[]),e}();let g;g=u?e:"light"===n?a:"dark"===n?i:null===m?"dark"===c?i:a:m?i:a;const b=d&&!h;s(()=>{if(b)return;const e=Object.entries(g).map(([e,t])=>function(e,t){return void 0!==t?`--tkx-${e}: ${t};`:`var(--tkx-${e})`}(e,t)).join(" ");let t=document.getElementById("tkx-theme");if(!t){t=document.createElement("style"),t.id="tkx-theme";const e=document.head.querySelector("style");e?document.head.insertBefore(t,e):document.head.appendChild(t)}t.textContent=`:root { ${e} }`,document.documentElement.setAttribute("data-tkx-scheme",g===i?"dark":g===a?"light":"custom")},[g,i,a,b]);const k=b?{}:Object.fromEntries(Object.entries(g).map(([e,t])=>[`--tkx-${e}`,t]));return t(l.Provider,{value:g},t("div",{style:{display:"contents",...k}},p))}function h(e){const t=e?.storageKey??"tkx-theme",n="dark"===e?.defaultMode?"dark":"light";return`(function(){try{var k=${JSON.stringify(t)};var d=${JSON.stringify(n)};var s=null;try{s=window.localStorage.getItem(k);}catch(e){}var m=s;if(m!=="light"&&m!=="dark"){m=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":d);}var r=document.documentElement;r.dataset.theme=m;r.setAttribute("data-tkx-scheme",m);}catch(e){}})();`}function g(){return n(l)}function b(e){return{"--tkx-bg":e.bg,"--tkx-bg-subtle":e.surface,"--tkx-fg":e.text,"--tkx-fg-muted":e.textMuted,"--tkx-accent":e.primary,"--tkx-border":e.border,"--tkx-border-soft":e.surfaceAlt}}function k(){const[e,t]=o(()=>"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":"dark");return r(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),n=e=>t(e.matches?"dark":"light");return e.addEventListener?(e.addEventListener("change",n),()=>e.removeEventListener("change",n)):(e.addListener(n),()=>e.removeListener(n))},[]),e}function w(e,t,n){n/=100;const r=(t/=100)*Math.min(n,1-n),a=t=>{const a=(t+e/30)%12,o=n-r*Math.max(Math.min(a-3,9-a,1),-1);return Math.round(255*o).toString(16).padStart(2,"0")};return`#${a(0)}${a(8)}${a(4)}`}function M(e){const[t,n]=function(e){const t=e.replace("#",""),n=parseInt(t.slice(0,2),16)/255,r=parseInt(t.slice(2,4),16)/255,a=parseInt(t.slice(4,6),16)/255,o=Math.max(n,r,a),i=Math.min(n,r,a);let c=0,d=0;const s=(o+i)/2;if(o!==i){const e=o-i;switch(d=s>.5?e/(2-o-i):e/(o+i),o){case n:c=((r-a)/e+(r<a?6:0))/6;break;case r:c=((a-n)/e+2)/6;break;case a:c=((n-r)/e+4)/6}}return[Math.round(360*c),Math.round(100*d),Math.round(100*s)]}(e);return{50:w(t,Math.min(n,30),96),100:w(t,Math.min(n,40),90),200:w(t,Math.min(n,50),80),300:w(t,n,70),400:w(t,n,60),500:e,600:w(t,n,45),700:w(t,n,35),800:w(t,n,25),900:w(t,n,15)}}var y={xs:{fontSize:"0.75rem",lineHeight:"1rem"},sm:{fontSize:"0.875rem",lineHeight:"1.25rem"},base:{fontSize:"1rem",lineHeight:"1.5rem"},lg:{fontSize:"1.125rem",lineHeight:"1.75rem"},xl:{fontSize:"1.25rem",lineHeight:"1.75rem"},"2xl":{fontSize:"1.5rem",lineHeight:"2rem"},"3xl":{fontSize:"1.875rem",lineHeight:"2.25rem"},"4xl":{fontSize:"2.25rem",lineHeight:"2.5rem"},"5xl":{fontSize:"3rem",lineHeight:"1.15"}},v={0:"0px",.5:"2px",1:"4px",1.5:"6px",2:"8px",2.5:"10px",3:"12px",4:"16px",5:"20px",6:"24px",8:"32px",10:"40px",12:"48px",16:"64px",20:"80px",24:"96px"},$={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},S={none:"none",xs:"0 1px 2px 0 rgba(0,0,0,0.05)",sm:"0 1px 3px 0 rgba(0,0,0,0.1), 0 1px 2px -1px rgba(0,0,0,0.1)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",lg:"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",xl:"0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)","2xl":"0 25px 50px -12px rgba(0,0,0,0.25)",inner:"inset 0 2px 4px 0 rgba(0,0,0,0.06)"},H={hide:-1,base:0,dropdown:1e3,sticky:1100,fixed:1200,overlay:1300,modal:1400,popover:1500,tooltip:1600,toast:1700,max:9999},z={none:"0",sm:"4px",md:"6px",lg:"8px",xl:"12px","2xl":"16px",full:"9999px"};export{l as ThemeContext,m as ThemeProvider,f as auroraLight,$ as breakpoints,u as createTheme,M as generatePalette,x as quantumDark,z as radii,S as shadows,v as spacing,h as themeInitScript,b as tkxThemeVars,y as typography,k as usePrefersColorScheme,g as useTheme,H as zIndex};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tekivex-ui",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.22.0",
|
|
4
4
|
"description": "Production-grade React component library — 116 components (plus 4 experimental, opt-in), WCAG 2.1 AAA, WAI-ARIA 1.2, built-in security kernel with published threat model, built-in charts, headless primitives, zero-runtime CSS engine, 44-locale i18n, Indian KYC pack, agent runtime (Anthropic/OpenAI/Gemini/Ollama/MCP/A2A), TypeScript-first.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|