tekivex-ui 2.3.0 → 2.5.2
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 +436 -83
- package/dist/TkxForm-BWK4LqY3.js +1461 -0
- package/dist/TkxForm-ljQjX7KD.cjs +15 -0
- package/dist/charts.cjs +1 -0
- package/dist/charts.js +480 -0
- package/dist/headless.cjs +1 -0
- package/dist/headless.js +258 -0
- package/dist/index-BINBzXuY.cjs +2 -0
- package/dist/index-eT_U4qB2.js +512 -0
- package/dist/index.cjs +20 -32
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7942 -8903
- package/dist/src/charts/TkxAreaChart.d.ts +29 -0
- package/dist/src/charts/TkxAreaChart.d.ts.map +1 -0
- package/dist/src/charts/TkxBarChart.d.ts +28 -0
- package/dist/src/charts/TkxBarChart.d.ts.map +1 -0
- package/dist/src/charts/TkxDonutChart.d.ts +23 -0
- package/dist/src/charts/TkxDonutChart.d.ts.map +1 -0
- package/dist/src/charts/TkxLineChart.d.ts +35 -0
- package/dist/src/charts/TkxLineChart.d.ts.map +1 -0
- package/dist/src/charts/TkxPieChart.d.ts +19 -0
- package/dist/src/charts/TkxPieChart.d.ts.map +1 -0
- package/dist/src/charts/TkxRadarChart.d.ts +20 -0
- package/dist/src/charts/TkxRadarChart.d.ts.map +1 -0
- package/dist/src/charts/TkxScatterChart.d.ts +28 -0
- package/dist/src/charts/TkxScatterChart.d.ts.map +1 -0
- package/dist/src/charts/index.d.ts +15 -0
- package/dist/src/charts/index.d.ts.map +1 -0
- package/dist/src/charts/shared.d.ts +33 -0
- package/dist/src/charts/shared.d.ts.map +1 -0
- package/dist/src/components/TkxDataGrid.d.ts +16 -2
- package/dist/src/components/TkxDataGrid.d.ts.map +1 -1
- package/dist/src/components/TkxForm.d.ts +33 -3
- package/dist/src/components/TkxForm.d.ts.map +1 -1
- package/dist/src/components/TkxImage.d.ts.map +1 -1
- package/dist/src/components/TkxTypography.d.ts +1 -1
- package/dist/src/components/TkxTypography.d.ts.map +1 -1
- package/dist/src/engine/tkx.d.ts.map +1 -1
- package/dist/src/headless/index.d.ts +18 -0
- package/dist/src/headless/index.d.ts.map +1 -0
- package/dist/src/headless/useControllable.d.ts +20 -0
- package/dist/src/headless/useControllable.d.ts.map +1 -0
- package/dist/src/headless/useDebounce.d.ts +14 -0
- package/dist/src/headless/useDebounce.d.ts.map +1 -0
- package/dist/src/headless/useDisclosure.d.ts +20 -0
- package/dist/src/headless/useDisclosure.d.ts.map +1 -0
- package/dist/src/headless/useFormState.d.ts +44 -0
- package/dist/src/headless/useFormState.d.ts.map +1 -0
- package/dist/src/headless/useIntersectionObserver.d.ts +23 -0
- package/dist/src/headless/useIntersectionObserver.d.ts.map +1 -0
- package/dist/src/headless/useListSelection.d.ts +29 -0
- package/dist/src/headless/useListSelection.d.ts.map +1 -0
- package/dist/src/headless/useLocalStorage.d.ts +9 -0
- package/dist/src/headless/useLocalStorage.d.ts.map +1 -0
- package/dist/src/headless/useMediaQuery.d.ts +21 -0
- package/dist/src/headless/useMediaQuery.d.ts.map +1 -0
- package/dist/src/headless/useRovingTabIndex.d.ts +33 -0
- package/dist/src/headless/useRovingTabIndex.d.ts.map +1 -0
- package/dist/src/headless/useThrottle.d.ts +9 -0
- package/dist/src/headless/useThrottle.d.ts.map +1 -0
- package/dist/src/i18n/index.d.ts +47 -2
- package/dist/src/i18n/index.d.ts.map +1 -1
- package/dist/src/themes/index.d.ts.map +1 -1
- package/package.json +61 -7
- package/src/charts/TkxAreaChart.tsx +119 -0
- package/src/charts/TkxBarChart.tsx +115 -0
- package/src/charts/TkxDonutChart.tsx +145 -0
- package/src/charts/TkxLineChart.tsx +135 -0
- package/src/charts/TkxPieChart.tsx +82 -0
- package/src/charts/TkxRadarChart.tsx +90 -0
- package/src/charts/TkxScatterChart.tsx +102 -0
- package/src/charts/index.ts +20 -0
- package/src/charts/shared.ts +45 -0
- package/src/components/TkxDataGrid.tsx +532 -268
- package/src/components/TkxForm.tsx +67 -15
- package/src/components/TkxImage.tsx +1 -1
- package/src/components/TkxTypography.tsx +4 -2
- package/src/engine/tkx.ts +60 -3
- package/src/headless/index.ts +44 -0
- package/src/headless/useControllable.ts +40 -0
- package/src/headless/useDebounce.ts +35 -0
- package/src/headless/useDisclosure.ts +28 -0
- package/src/headless/useFormState.ts +111 -0
- package/src/headless/useIntersectionObserver.ts +51 -0
- package/src/headless/useListSelection.ts +101 -0
- package/src/headless/useLocalStorage.ts +46 -0
- package/src/headless/useMediaQuery.ts +37 -0
- package/src/headless/useRovingTabIndex.ts +84 -0
- package/src/headless/useThrottle.ts +46 -0
- package/src/i18n/I18nProvider.tsx +1 -1
- package/src/i18n/index.ts +678 -38
- package/src/themes/index.ts +31 -4
package/src/themes/index.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { createContext, useContext, useEffect, type ReactNode, createElement } from 'react';
|
|
1
|
+
import { createContext, useContext, useLayoutEffect, useEffect, type ReactNode, createElement } from 'react';
|
|
2
2
|
import { cssVar } from '../engine/css';
|
|
3
3
|
import { meetsAA } from '../engine/wcag';
|
|
4
4
|
|
|
5
|
+
// useLayoutEffect on client, useEffect on server (avoids SSR warning)
|
|
6
|
+
const useIsomorphicLayoutEffect =
|
|
7
|
+
typeof window !== 'undefined' ? useLayoutEffect : useEffect;
|
|
8
|
+
|
|
5
9
|
// ── Theme Token Type ─────────────────────────────────────────────────────────
|
|
6
10
|
|
|
7
11
|
export interface ThemeTokens {
|
|
@@ -90,7 +94,10 @@ export interface ThemeProviderProps {
|
|
|
90
94
|
}
|
|
91
95
|
|
|
92
96
|
export function ThemeProvider({ theme = quantumDark, children }: ThemeProviderProps) {
|
|
93
|
-
|
|
97
|
+
// useLayoutEffect fires synchronously after DOM mutations and before paint,
|
|
98
|
+
// eliminating the flash-of-unstyled-content that useEffect causes.
|
|
99
|
+
// The isomorphic alias silently falls back to useEffect during SSR.
|
|
100
|
+
useIsomorphicLayoutEffect(() => {
|
|
94
101
|
const vars = (Object.entries(theme) as [keyof ThemeTokens, string][])
|
|
95
102
|
.map(([key, value]) => cssVar(key, value))
|
|
96
103
|
.join(' ');
|
|
@@ -98,12 +105,32 @@ export function ThemeProvider({ theme = quantumDark, children }: ThemeProviderPr
|
|
|
98
105
|
if (!styleEl) {
|
|
99
106
|
styleEl = document.createElement('style');
|
|
100
107
|
styleEl.id = 'tkx-theme';
|
|
101
|
-
|
|
108
|
+
// Insert as the very first style element so it has the lowest specificity
|
|
109
|
+
// and component-level overrides always win.
|
|
110
|
+
const firstStyle = document.head.querySelector('style');
|
|
111
|
+
if (firstStyle) {
|
|
112
|
+
document.head.insertBefore(styleEl, firstStyle);
|
|
113
|
+
} else {
|
|
114
|
+
document.head.appendChild(styleEl);
|
|
115
|
+
}
|
|
102
116
|
}
|
|
103
117
|
styleEl.textContent = `:root { ${vars} }`;
|
|
104
118
|
}, [theme]);
|
|
105
119
|
|
|
106
|
-
|
|
120
|
+
// Also set CSS variables as inline style on the provider wrapper so that
|
|
121
|
+
// SSR-rendered HTML already contains the correct values without a round-trip.
|
|
122
|
+
const inlineVars = Object.fromEntries(
|
|
123
|
+
(Object.entries(theme) as [keyof ThemeTokens, string][]).map(([key, value]) => [
|
|
124
|
+
`--tkx-${key}`,
|
|
125
|
+
value,
|
|
126
|
+
]),
|
|
127
|
+
) as Record<string, string>;
|
|
128
|
+
|
|
129
|
+
return createElement(
|
|
130
|
+
ThemeContext.Provider,
|
|
131
|
+
{ value: theme },
|
|
132
|
+
createElement('div', { style: { display: 'contents', ...inlineVars } }, children),
|
|
133
|
+
);
|
|
107
134
|
}
|
|
108
135
|
|
|
109
136
|
export function useTheme(): ThemeTokens {
|