@intlayer/design-system 9.0.0-canary.1 → 9.0.0-canary.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/esm/api/hooks/utils.mjs +1 -1
  2. package/dist/esm/api/index.mjs +2 -2
  3. package/dist/esm/api/useAuth/useOAuth2.mjs +2 -2
  4. package/dist/esm/api/useAuth/useSession.mjs +1 -1
  5. package/dist/esm/components/Breadcrumb/index.mjs +1 -1
  6. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
  7. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
  8. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -1
  9. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs +1 -1
  10. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs +1 -1
  11. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs +1 -1
  12. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +1 -1
  13. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs +1 -1
  14. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +2 -2
  15. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +2 -2
  16. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  17. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +6 -6
  18. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -1
  19. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs +1 -1
  20. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
  21. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -2
  22. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +1 -1
  23. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
  24. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  25. package/dist/esm/components/Input/OTPInput.mjs +1 -1
  26. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs +3 -8
  27. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs.map +1 -1
  28. package/dist/esm/components/Link/Link.mjs +1 -1
  29. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
  30. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -1
  31. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  32. package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs +1 -1
  33. package/dist/esm/components/Modal/Modal.mjs +3 -3
  34. package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
  35. package/dist/esm/components/Pagination/Pagination.mjs +2 -2
  36. package/dist/esm/components/Pattern/GridDistortionPattern.mjs +275 -0
  37. package/dist/esm/components/Pattern/GridDistortionPattern.mjs.map +1 -0
  38. package/dist/esm/components/Pattern/index.mjs +2 -1
  39. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  40. package/dist/esm/components/Tab/Tab.mjs +1 -1
  41. package/dist/esm/components/Toaster/Toast.mjs +2 -2
  42. package/dist/esm/components/index.mjs +5 -4
  43. package/dist/esm/hooks/index.mjs +8 -8
  44. package/dist/esm/hooks/useIsMounted.mjs +4 -2
  45. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  46. package/dist/esm/providers/ReactQueryProvider.mjs +2 -2
  47. package/dist/types/api/useIntlayerAPI.d.ts +1 -1
  48. package/dist/types/components/Badge/index.d.ts +2 -2
  49. package/dist/types/components/Button/Button.d.ts +5 -5
  50. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  51. package/dist/types/components/Container/index.d.ts +1 -1
  52. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +2 -2
  53. package/dist/types/components/Input/Checkbox.d.ts +1 -1
  54. package/dist/types/components/Input/Radio.d.ts +1 -1
  55. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -1
  56. package/dist/types/components/Link/Link.d.ts +2 -2
  57. package/dist/types/components/Pagination/Pagination.d.ts +2 -2
  58. package/dist/types/components/Pattern/GridDistortionPattern.d.ts +15 -0
  59. package/dist/types/components/Pattern/GridDistortionPattern.d.ts.map +1 -0
  60. package/dist/types/components/Pattern/index.d.ts +2 -1
  61. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +2 -2
  62. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +1 -1
  63. package/dist/types/components/Tab/Tab.d.ts +1 -1
  64. package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
  65. package/dist/types/components/Tag/index.d.ts +1 -1
  66. package/dist/types/components/Toaster/Toast.d.ts +1 -1
  67. package/dist/types/components/index.d.ts +2 -1
  68. package/package.json +15 -15
@@ -0,0 +1,275 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../utils/cn.mjs";
4
+ import { useIsDarkMode } from "../../hooks/useIsDarkMode.mjs";
5
+ import { useEffect, useRef } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+
8
+ //#region src/components/Pattern/GridDistortionPattern.tsx
9
+ /**
10
+ * Light mode: a visible (but subtle) gray line on white. The base opacity is
11
+ * raised and the highlight boost lowered so the grid no longer fades to nothing
12
+ * far from the pointer while spiking to a harsh accent underneath it.
13
+ */
14
+ const LIGHT_THEME = {
15
+ lineColor: "#a8a8a8",
16
+ highlightColor: "#969696",
17
+ baseOpacity: .3,
18
+ highlightOpacityBoost: .3
19
+ };
20
+ /**
21
+ * Dark mode: a mid-gray line that brightens toward a light purple near the
22
+ * pointer (brighter than the resting line, so the hovered segment lights up
23
+ * instead of darkening into the black background).
24
+ */
25
+ const DARK_THEME = {
26
+ lineColor: "#4d4d4d",
27
+ highlightColor: "#5c5c5c",
28
+ baseOpacity: .2,
29
+ highlightOpacityBoost: .2
30
+ };
31
+ /**
32
+ * Falloff exponent for the highlight. A gentler curve (2 = quadratic) spreads
33
+ * the highlight over a wider area than a cubic one, smoothing the transition
34
+ * between the resting line and the accent under the pointer.
35
+ */
36
+ const HIGHLIGHT_FALLOFF_EXPONENT = 2;
37
+ const hexToRgb = (hex) => {
38
+ const numericValue = parseInt(hex.replace("#", ""), 16);
39
+ return [
40
+ numericValue >> 16 & 255,
41
+ numericValue >> 8 & 255,
42
+ numericValue & 255
43
+ ];
44
+ };
45
+ /** Neutral gray used when a color string can't be parsed into RGB. */
46
+ const FALLBACK_RGB = [
47
+ 136,
48
+ 136,
49
+ 136
50
+ ];
51
+ /**
52
+ * Resolves any CSS color string — `#rrggbb`, `rgb()/hsl()`, a named color, or a
53
+ * `var(--token)` reference — into an `[r, g, b]` triple.
54
+ *
55
+ * 6-digit hex is parsed directly. Everything else is resolved by the browser
56
+ * via a throwaway probe element mounted inside `contextElement`, so custom
57
+ * properties resolve against the correct cascade. Falls back to a neutral gray
58
+ * when the value can't be parsed, so the grid never emits invalid
59
+ * `rgb(NaN, …)` strokes (which browsers render as solid black).
60
+ */
61
+ const resolveColorToRgb = (color, contextElement) => {
62
+ const trimmed = color.trim();
63
+ if (/^#[0-9a-f]{6}$/i.test(trimmed)) return hexToRgb(trimmed);
64
+ const probe = document.createElement("span");
65
+ probe.style.color = trimmed;
66
+ probe.style.display = "none";
67
+ contextElement.appendChild(probe);
68
+ const computedColor = getComputedStyle(probe).color;
69
+ probe.remove();
70
+ const channels = computedColor.match(/-?\d+(?:\.\d+)?/g);
71
+ if (channels && channels.length >= 3) return [
72
+ Number(channels[0]),
73
+ Number(channels[1]),
74
+ Number(channels[2])
75
+ ];
76
+ return FALLBACK_RGB;
77
+ };
78
+ const buildSegmentAttrs = (startX, startY, endX, endY, mouseX, mouseY, mouseActive, radius, strength, lineRgb, highlightRgb, baseOpacity, highlightOpacityBoost) => {
79
+ let red;
80
+ let green;
81
+ let blue;
82
+ let opacity;
83
+ let strokeWidth;
84
+ if (!mouseActive) {
85
+ [red, green, blue] = lineRgb;
86
+ opacity = baseOpacity;
87
+ strokeWidth = .8;
88
+ } else {
89
+ const midX = (startX + endX) / 2;
90
+ const midY = (startY + endY) / 2;
91
+ const deltaX = mouseX - midX;
92
+ const deltaY = mouseY - midY;
93
+ const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
94
+ const easing = Math.max(0, 1 - distance / radius) ** HIGHLIGHT_FALLOFF_EXPONENT;
95
+ red = Math.round(lineRgb[0] + (highlightRgb[0] - lineRgb[0]) * easing);
96
+ green = Math.round(lineRgb[1] + (highlightRgb[1] - lineRgb[1]) * easing);
97
+ blue = Math.round(lineRgb[2] + (highlightRgb[2] - lineRgb[2]) * easing);
98
+ opacity = baseOpacity + easing * highlightOpacityBoost;
99
+ strokeWidth = .8 + easing * 1.2;
100
+ }
101
+ return {
102
+ d: `M ${startX} ${startY} L ${endX} ${endY}`,
103
+ stroke: `rgb(${red},${green},${blue})`,
104
+ strokeOpacity: opacity,
105
+ strokeWidth
106
+ };
107
+ };
108
+ const updateGridPoints = (grid, mouseX, mouseY, mouseActive, radius, strength) => {
109
+ const rows = grid.length;
110
+ const columns = grid[0].length;
111
+ for (let rowIndex = 0; rowIndex < rows; rowIndex++) for (let columnIndex = 0; columnIndex < columns; columnIndex++) {
112
+ const point = grid[rowIndex][columnIndex];
113
+ if (!mouseActive) {
114
+ point.x += (point.baseX - point.x) * .08;
115
+ point.y += (point.baseY - point.y) * .08;
116
+ continue;
117
+ }
118
+ const deltaX = mouseX - point.baseX;
119
+ const deltaY = mouseY - point.baseY;
120
+ const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
121
+ if (distance < radius && distance > 0) {
122
+ const displacement = (Math.cos(distance / radius * Math.PI) + 1) / 2 * strength * radius * .3;
123
+ point.x += (point.baseX + deltaX / distance * displacement - point.x) * .12;
124
+ point.y += (point.baseY + deltaY / distance * displacement - point.y) * .12;
125
+ } else {
126
+ point.x += (point.baseX - point.x) * .08;
127
+ point.y += (point.baseY - point.y) * .08;
128
+ }
129
+ }
130
+ };
131
+ const GridDistortionPattern = ({ width = 70, height = 70, radius = 280, strength = .12, lineColor, highlightColor, className, ...props }) => {
132
+ const theme = useIsDarkMode() ? DARK_THEME : LIGHT_THEME;
133
+ const resolvedLineColor = lineColor ?? theme.lineColor;
134
+ const resolvedHighlightColor = highlightColor ?? theme.highlightColor;
135
+ const svgRef = useRef(null);
136
+ const mouse = useRef({
137
+ x: -9999,
138
+ y: -9999,
139
+ active: false
140
+ });
141
+ const points = useRef([]);
142
+ const radiusRef = useRef(radius);
143
+ const strengthRef = useRef(strength);
144
+ const lineRgbRef = useRef(FALLBACK_RGB);
145
+ const highlightRgbRef = useRef(FALLBACK_RGB);
146
+ const baseOpacityRef = useRef(theme.baseOpacity);
147
+ const highlightOpacityBoostRef = useRef(theme.highlightOpacityBoost);
148
+ radiusRef.current = radius;
149
+ strengthRef.current = strength;
150
+ baseOpacityRef.current = theme.baseOpacity;
151
+ highlightOpacityBoostRef.current = theme.highlightOpacityBoost;
152
+ useEffect(() => {
153
+ const svg = svgRef.current;
154
+ if (!svg) return;
155
+ lineRgbRef.current = resolveColorToRgb(resolvedLineColor, svg);
156
+ highlightRgbRef.current = resolveColorToRgb(resolvedHighlightColor, svg);
157
+ }, [resolvedLineColor, resolvedHighlightColor]);
158
+ useEffect(() => {
159
+ const svg = svgRef.current;
160
+ if (!svg) return;
161
+ const resize = () => {
162
+ const rect = svg.getBoundingClientRect();
163
+ svg.setAttribute("viewBox", `0 0 ${rect.width} ${rect.height}`);
164
+ const columns = Math.ceil(rect.width / width) + 2;
165
+ const rows = Math.ceil(rect.height / height) + 2;
166
+ const newGrid = [];
167
+ for (let rowIndex = -1; rowIndex <= rows; rowIndex++) {
168
+ const row = [];
169
+ for (let columnIndex = -1; columnIndex <= columns; columnIndex++) row.push({
170
+ baseX: columnIndex * width,
171
+ baseY: rowIndex * height,
172
+ x: columnIndex * width,
173
+ y: rowIndex * height
174
+ });
175
+ newGrid.push(row);
176
+ }
177
+ points.current = newGrid;
178
+ };
179
+ resize();
180
+ const resizeObserver = new ResizeObserver(resize);
181
+ resizeObserver.observe(svg);
182
+ return () => resizeObserver.disconnect();
183
+ }, [width, height]);
184
+ useEffect(() => {
185
+ const svg = svgRef.current;
186
+ if (!svg) return;
187
+ const handlePointerMove = (event) => {
188
+ const rect = svg.getBoundingClientRect();
189
+ mouse.current = {
190
+ x: event.clientX - rect.left,
191
+ y: event.clientY - rect.top,
192
+ active: true
193
+ };
194
+ };
195
+ const handlePointerLeave = () => {
196
+ mouse.current.active = false;
197
+ };
198
+ window.addEventListener("pointermove", handlePointerMove, { passive: true });
199
+ window.addEventListener("pointerleave", handlePointerLeave, { passive: true });
200
+ return () => {
201
+ window.removeEventListener("pointermove", handlePointerMove);
202
+ window.removeEventListener("pointerleave", handlePointerLeave);
203
+ };
204
+ }, []);
205
+ useEffect(() => {
206
+ const svg = svgRef.current;
207
+ if (!svg) return;
208
+ const pathPool = [];
209
+ let frame = 0;
210
+ const ensurePathCount = (count) => {
211
+ while (pathPool.length < count) {
212
+ const el = document.createElementNS("http://www.w3.org/2000/svg", "path");
213
+ el.setAttribute("fill", "none");
214
+ svg.appendChild(el);
215
+ pathPool.push(el);
216
+ }
217
+ for (let i = count; i < pathPool.length; i++) pathPool[i].setAttribute("d", "");
218
+ };
219
+ const tick = () => {
220
+ const grid = points.current;
221
+ if (!grid.length) {
222
+ frame = requestAnimationFrame(tick);
223
+ return;
224
+ }
225
+ const { x: mouseX, y: mouseY, active: mouseActive } = mouse.current;
226
+ const currentRadius = radiusRef.current;
227
+ const currentStrength = strengthRef.current;
228
+ const lineRgb = lineRgbRef.current;
229
+ const highlightRgb = highlightRgbRef.current;
230
+ const baseOpacity = baseOpacityRef.current;
231
+ const highlightOpacityBoost = highlightOpacityBoostRef.current;
232
+ updateGridPoints(grid, mouseX, mouseY, mouseActive, currentRadius, currentStrength);
233
+ const rows = grid.length;
234
+ const columns = grid[0].length;
235
+ ensurePathCount(rows * (columns - 1) + columns * (rows - 1));
236
+ let pathIndex = 0;
237
+ for (let rowIndex = 0; rowIndex < rows; rowIndex++) for (let columnIndex = 0; columnIndex < columns - 1; columnIndex++) {
238
+ const p0 = grid[rowIndex][columnIndex];
239
+ const p1 = grid[rowIndex][columnIndex + 1];
240
+ const attrs = buildSegmentAttrs(p0.x, p0.y, p1.x, p1.y, mouseX, mouseY, mouseActive, currentRadius, currentStrength, lineRgb, highlightRgb, baseOpacity, highlightOpacityBoost);
241
+ const el = pathPool[pathIndex++];
242
+ el.setAttribute("d", attrs.d);
243
+ el.setAttribute("stroke", attrs.stroke);
244
+ el.setAttribute("stroke-opacity", String(attrs.strokeOpacity));
245
+ el.setAttribute("stroke-width", String(attrs.strokeWidth));
246
+ }
247
+ for (let columnIndex = 0; columnIndex < columns; columnIndex++) for (let rowIndex = 0; rowIndex < rows - 1; rowIndex++) {
248
+ const p0 = grid[rowIndex][columnIndex];
249
+ const p1 = grid[rowIndex + 1][columnIndex];
250
+ const attrs = buildSegmentAttrs(p0.x, p0.y, p1.x, p1.y, mouseX, mouseY, mouseActive, currentRadius, currentStrength, lineRgb, highlightRgb, baseOpacity, highlightOpacityBoost);
251
+ const el = pathPool[pathIndex++];
252
+ el.setAttribute("d", attrs.d);
253
+ el.setAttribute("stroke", attrs.stroke);
254
+ el.setAttribute("stroke-opacity", String(attrs.strokeOpacity));
255
+ el.setAttribute("stroke-width", String(attrs.strokeWidth));
256
+ }
257
+ frame = requestAnimationFrame(tick);
258
+ };
259
+ tick();
260
+ return () => {
261
+ cancelAnimationFrame(frame);
262
+ for (const el of pathPool) el.remove();
263
+ };
264
+ }, []);
265
+ return /* @__PURE__ */ jsx("svg", {
266
+ ref: svgRef,
267
+ "aria-hidden": "true",
268
+ className: cn("pointer-events-none absolute inset-0 size-full", className),
269
+ ...props
270
+ });
271
+ };
272
+
273
+ //#endregion
274
+ export { GridDistortionPattern };
275
+ //# sourceMappingURL=GridDistortionPattern.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridDistortionPattern.mjs","names":[],"sources":["../../../../src/components/Pattern/GridDistortionPattern.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { type FC, type SVGProps, useEffect, useRef } from 'react';\nimport { useIsDarkMode } from '../../hooks/useIsDarkMode';\n\n// ---------------------------------------------------------------------------\n// Theme configuration — tweak these to adjust the grid appearance globally\n// ---------------------------------------------------------------------------\n\ntype GridTheme = {\n /** Resting line color, used far from the pointer. */\n lineColor: string;\n /**\n * Color the lines fade toward as the pointer approaches. To avoid lines\n * appearing to \"dim into the background\" near the pointer, this should be\n * brighter (higher luminance) than {@link GridTheme.lineColor} in dark mode\n * and clearly contrasting in light mode.\n */\n highlightColor: string;\n /** Stroke opacity far from the pointer — keeps the whole grid visible. */\n baseOpacity: number;\n /** Extra opacity added at the pointer's center on top of {@link GridTheme.baseOpacity}. */\n highlightOpacityBoost: number;\n};\n\n/**\n * Light mode: a visible (but subtle) gray line on white. The base opacity is\n * raised and the highlight boost lowered so the grid no longer fades to nothing\n * far from the pointer while spiking to a harsh accent underneath it.\n */\nconst LIGHT_THEME: GridTheme = {\n lineColor: '#a8a8a8',\n highlightColor: '#969696',\n baseOpacity: 0.3,\n highlightOpacityBoost: 0.3,\n};\n\n/**\n * Dark mode: a mid-gray line that brightens toward a light purple near the\n * pointer (brighter than the resting line, so the hovered segment lights up\n * instead of darkening into the black background).\n */\nconst DARK_THEME: GridTheme = {\n lineColor: '#4d4d4d',\n highlightColor: '#5c5c5c',\n baseOpacity: 0.2,\n highlightOpacityBoost: 0.2,\n};\n\n/**\n * Falloff exponent for the highlight. A gentler curve (2 = quadratic) spreads\n * the highlight over a wider area than a cubic one, smoothing the transition\n * between the resting line and the accent under the pointer.\n */\nconst HIGHLIGHT_FALLOFF_EXPONENT = 2;\n\n// ---------------------------------------------------------------------------\n// Pure helpers — defined once at module level, never recreated\n// ---------------------------------------------------------------------------\n\nconst hexToRgb = (hex: string): [number, number, number] => {\n const numericValue = parseInt(hex.replace('#', ''), 16);\n return [\n (numericValue >> 16) & 255,\n (numericValue >> 8) & 255,\n numericValue & 255,\n ];\n};\n\n/** Neutral gray used when a color string can't be parsed into RGB. */\nconst FALLBACK_RGB: [number, number, number] = [136, 136, 136];\n\n/**\n * Resolves any CSS color string — `#rrggbb`, `rgb()/hsl()`, a named color, or a\n * `var(--token)` reference — into an `[r, g, b]` triple.\n *\n * 6-digit hex is parsed directly. Everything else is resolved by the browser\n * via a throwaway probe element mounted inside `contextElement`, so custom\n * properties resolve against the correct cascade. Falls back to a neutral gray\n * when the value can't be parsed, so the grid never emits invalid\n * `rgb(NaN, …)` strokes (which browsers render as solid black).\n */\nconst resolveColorToRgb = (\n color: string,\n contextElement: Element\n): [number, number, number] => {\n const trimmed = color.trim();\n\n // Fast path: 6-digit hex needs no DOM access.\n if (/^#[0-9a-f]{6}$/i.test(trimmed)) {\n return hexToRgb(trimmed);\n }\n\n const probe = document.createElement('span');\n probe.style.color = trimmed;\n probe.style.display = 'none';\n contextElement.appendChild(probe);\n const computedColor = getComputedStyle(probe).color;\n probe.remove();\n\n const channels = computedColor.match(/-?\\d+(?:\\.\\d+)?/g);\n if (channels && channels.length >= 3) {\n return [Number(channels[0]), Number(channels[1]), Number(channels[2])];\n }\n\n return FALLBACK_RGB;\n};\n\ntype Point = { baseX: number; baseY: number; x: number; y: number };\n\nconst buildSegmentAttrs = (\n startX: number,\n startY: number,\n endX: number,\n endY: number,\n mouseX: number,\n mouseY: number,\n mouseActive: boolean,\n radius: number,\n strength: number,\n lineRgb: [number, number, number],\n highlightRgb: [number, number, number],\n baseOpacity: number,\n highlightOpacityBoost: number\n): {\n d: string;\n stroke: string;\n strokeOpacity: number;\n strokeWidth: number;\n} => {\n let red: number;\n let green: number;\n let blue: number;\n let opacity: number;\n let strokeWidth: number;\n\n if (!mouseActive) {\n [red, green, blue] = lineRgb;\n opacity = baseOpacity;\n strokeWidth = 0.8;\n } else {\n const midX = (startX + endX) / 2;\n const midY = (startY + endY) / 2;\n const deltaX = mouseX - midX;\n const deltaY = mouseY - midY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const distanceRatio = Math.max(0, 1 - distance / radius);\n const easing = distanceRatio ** HIGHLIGHT_FALLOFF_EXPONENT;\n red = Math.round(lineRgb[0] + (highlightRgb[0] - lineRgb[0]) * easing);\n green = Math.round(lineRgb[1] + (highlightRgb[1] - lineRgb[1]) * easing);\n blue = Math.round(lineRgb[2] + (highlightRgb[2] - lineRgb[2]) * easing);\n opacity = baseOpacity + easing * highlightOpacityBoost;\n strokeWidth = 0.8 + easing * 1.2;\n void strength; // currently unused in segment coloring, kept for API compatibility\n }\n\n return {\n d: `M ${startX} ${startY} L ${endX} ${endY}`,\n stroke: `rgb(${red},${green},${blue})`,\n strokeOpacity: opacity,\n strokeWidth,\n };\n};\n\nconst updateGridPoints = (\n grid: Point[][],\n mouseX: number,\n mouseY: number,\n mouseActive: boolean,\n radius: number,\n strength: number\n): void => {\n const rows = grid.length;\n const columns = grid[0]!.length;\n\n for (let rowIndex = 0; rowIndex < rows; rowIndex++) {\n for (let columnIndex = 0; columnIndex < columns; columnIndex++) {\n const point = grid[rowIndex]![columnIndex]!;\n if (!mouseActive) {\n point.x += (point.baseX - point.x) * 0.08;\n point.y += (point.baseY - point.y) * 0.08;\n continue;\n }\n const deltaX = mouseX - point.baseX;\n const deltaY = mouseY - point.baseY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n if (distance < radius && distance > 0) {\n const force = (Math.cos((distance / radius) * Math.PI) + 1) / 2;\n const displacement = force * strength * radius * 0.3;\n point.x +=\n (point.baseX + (deltaX / distance) * displacement - point.x) * 0.12;\n point.y +=\n (point.baseY + (deltaY / distance) * displacement - point.y) * 0.12;\n } else {\n point.x += (point.baseX - point.x) * 0.08;\n point.y += (point.baseY - point.y) * 0.08;\n }\n }\n }\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\ntype GridDistortionPatternProps = {\n width?: number;\n height?: number;\n radius?: number;\n strength?: number;\n lineColor?: string;\n highlightColor?: string;\n} & SVGProps<SVGSVGElement>;\n\nexport const GridDistortionPattern: FC<GridDistortionPatternProps> = ({\n width = 70,\n height = 70,\n radius = 280,\n strength = 0.12,\n lineColor,\n highlightColor,\n className,\n ...props\n}) => {\n const isDarkMode = useIsDarkMode();\n const theme = isDarkMode ? DARK_THEME : LIGHT_THEME;\n\n // Explicit props win; otherwise fall back to the active theme's defaults.\n const resolvedLineColor = lineColor ?? theme.lineColor;\n const resolvedHighlightColor = highlightColor ?? theme.highlightColor;\n\n const svgRef = useRef<SVGSVGElement>(null);\n const mouse = useRef({ x: -9999, y: -9999, active: false });\n const points = useRef<Point[][]>([]);\n\n // Stable refs so the animation loop always sees the latest prop values\n // without needing to restart itself.\n const radiusRef = useRef(radius);\n const strengthRef = useRef(strength);\n // Initialized to safe placeholders; the real (possibly CSS-variable-based)\n // colors are resolved against the DOM in the effect below.\n const lineRgbRef = useRef<[number, number, number]>(FALLBACK_RGB);\n const highlightRgbRef = useRef<[number, number, number]>(FALLBACK_RGB);\n const baseOpacityRef = useRef(theme.baseOpacity);\n const highlightOpacityBoostRef = useRef(theme.highlightOpacityBoost);\n\n // Keep numeric refs in sync with props on each render (cheap assignments).\n radiusRef.current = radius;\n strengthRef.current = strength;\n baseOpacityRef.current = theme.baseOpacity;\n highlightOpacityBoostRef.current = theme.highlightOpacityBoost;\n\n // Resolve colors once mounted — getComputedStyle is required so that\n // `var(--token)` highlight/line colors resolve against the live cascade.\n useEffect(() => {\n const svg = svgRef.current;\n if (!svg) return;\n lineRgbRef.current = resolveColorToRgb(resolvedLineColor, svg);\n highlightRgbRef.current = resolveColorToRgb(resolvedHighlightColor, svg);\n }, [resolvedLineColor, resolvedHighlightColor]);\n\n // ---------------------------------------------------------------------------\n // Resize — rebuild the point grid and resize the SVG viewBox\n // ---------------------------------------------------------------------------\n useEffect(() => {\n const svg = svgRef.current;\n if (!svg) return;\n\n const resize = () => {\n const rect = svg.getBoundingClientRect();\n svg.setAttribute('viewBox', `0 0 ${rect.width} ${rect.height}`);\n\n const columns = Math.ceil(rect.width / width) + 2;\n const rows = Math.ceil(rect.height / height) + 2;\n const newGrid: Point[][] = [];\n\n for (let rowIndex = -1; rowIndex <= rows; rowIndex++) {\n const row: Point[] = [];\n for (let columnIndex = -1; columnIndex <= columns; columnIndex++) {\n row.push({\n baseX: columnIndex * width,\n baseY: rowIndex * height,\n x: columnIndex * width,\n y: rowIndex * height,\n });\n }\n newGrid.push(row);\n }\n points.current = newGrid;\n };\n\n resize();\n const resizeObserver = new ResizeObserver(resize);\n resizeObserver.observe(svg);\n return () => resizeObserver.disconnect();\n }, [width, height]);\n\n // ---------------------------------------------------------------------------\n // Pointer tracking — passive listeners, no React state involved\n // ---------------------------------------------------------------------------\n useEffect(() => {\n const svg = svgRef.current;\n if (!svg) return;\n\n const handlePointerMove = (event: PointerEvent) => {\n const rect = svg.getBoundingClientRect();\n mouse.current = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n active: true,\n };\n };\n const handlePointerLeave = () => {\n mouse.current.active = false;\n };\n\n window.addEventListener('pointermove', handlePointerMove, {\n passive: true,\n });\n window.addEventListener('pointerleave', handlePointerLeave, {\n passive: true,\n });\n return () => {\n window.removeEventListener('pointermove', handlePointerMove);\n window.removeEventListener('pointerleave', handlePointerLeave);\n };\n }, []);\n\n // ---------------------------------------------------------------------------\n // Animation loop — writes directly to SVG DOM, no React state/re-renders\n // ---------------------------------------------------------------------------\n useEffect(() => {\n const svg = svgRef.current;\n if (!svg) return;\n\n // We maintain a pool of <path> elements and reuse them each frame\n // to avoid GC pressure from creating/deleting DOM nodes every tick.\n const pathPool: SVGPathElement[] = [];\n let frame = 0;\n\n const ensurePathCount = (count: number) => {\n while (pathPool.length < count) {\n const el = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'path'\n );\n el.setAttribute('fill', 'none');\n svg.appendChild(el);\n pathPool.push(el);\n }\n // Hide surplus paths\n for (let i = count; i < pathPool.length; i++) {\n pathPool[i]!.setAttribute('d', '');\n }\n };\n\n const tick = () => {\n const grid = points.current;\n if (!grid.length) {\n frame = requestAnimationFrame(tick);\n return;\n }\n\n const { x: mouseX, y: mouseY, active: mouseActive } = mouse.current;\n const currentRadius = radiusRef.current;\n const currentStrength = strengthRef.current;\n const lineRgb = lineRgbRef.current;\n const highlightRgb = highlightRgbRef.current;\n const baseOpacity = baseOpacityRef.current;\n const highlightOpacityBoost = highlightOpacityBoostRef.current;\n\n // Update point positions\n updateGridPoints(\n grid,\n mouseX,\n mouseY,\n mouseActive,\n currentRadius,\n currentStrength\n );\n\n const rows = grid.length;\n const columns = grid[0]!.length;\n\n // Count segments up front so we can size the pool\n const horizontalCount = rows * (columns - 1);\n const verticalCount = columns * (rows - 1);\n const totalSegments = horizontalCount + verticalCount;\n ensurePathCount(totalSegments);\n\n let pathIndex = 0;\n\n // Horizontal segments\n for (let rowIndex = 0; rowIndex < rows; rowIndex++) {\n for (let columnIndex = 0; columnIndex < columns - 1; columnIndex++) {\n const p0 = grid[rowIndex]![columnIndex]!;\n const p1 = grid[rowIndex]![columnIndex + 1]!;\n const attrs = buildSegmentAttrs(\n p0.x,\n p0.y,\n p1.x,\n p1.y,\n mouseX,\n mouseY,\n mouseActive,\n currentRadius,\n currentStrength,\n lineRgb,\n highlightRgb,\n baseOpacity,\n highlightOpacityBoost\n );\n const el = pathPool[pathIndex++]!;\n el.setAttribute('d', attrs.d);\n el.setAttribute('stroke', attrs.stroke);\n el.setAttribute('stroke-opacity', String(attrs.strokeOpacity));\n el.setAttribute('stroke-width', String(attrs.strokeWidth));\n }\n }\n\n // Vertical segments\n for (let columnIndex = 0; columnIndex < columns; columnIndex++) {\n for (let rowIndex = 0; rowIndex < rows - 1; rowIndex++) {\n const p0 = grid[rowIndex]![columnIndex]!;\n const p1 = grid[rowIndex + 1]![columnIndex]!;\n const attrs = buildSegmentAttrs(\n p0.x,\n p0.y,\n p1.x,\n p1.y,\n mouseX,\n mouseY,\n mouseActive,\n currentRadius,\n currentStrength,\n lineRgb,\n highlightRgb,\n baseOpacity,\n highlightOpacityBoost\n );\n const el = pathPool[pathIndex++]!;\n el.setAttribute('d', attrs.d);\n el.setAttribute('stroke', attrs.stroke);\n el.setAttribute('stroke-opacity', String(attrs.strokeOpacity));\n el.setAttribute('stroke-width', String(attrs.strokeWidth));\n }\n }\n\n frame = requestAnimationFrame(tick);\n };\n\n tick();\n\n return () => {\n cancelAnimationFrame(frame);\n // Clean up path elements we injected\n for (const el of pathPool) {\n el.remove();\n }\n };\n }, []); // no dependencies — reads everything via refs\n\n return (\n <svg\n ref={svgRef}\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 size-full',\n className\n )}\n {...props}\n />\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { DotPattern } from "./DotPattern.mjs";
2
+ import { GridDistortionPattern } from "./GridDistortionPattern.mjs";
2
3
  import { GridPattern } from "./GridPattern.mjs";
3
4
  import { Spotlight } from "./SpotLight.mjs";
4
5
 
5
- export { DotPattern, GridPattern, Spotlight };
6
+ export { DotPattern, GridDistortionPattern, GridPattern, Spotlight };
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
 
3
+ import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
4
+ import { useDevice } from "../../hooks/useDevice.mjs";
5
+ import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
3
6
  import { Button } from "../Button/Button.mjs";
4
7
  import { Container } from "../Container/index.mjs";
5
- import { useDevice } from "../../hooks/useDevice.mjs";
6
8
  import { KeyboardShortcut } from "../KeyboardShortcut/KeyboardShortcut.mjs";
7
9
  import { Popover } from "../Popover/dynamic.mjs";
8
- import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
9
- import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
10
10
  import { MaxWidthSmoother } from "../MaxWidthSmoother/index.mjs";
11
11
  import { isElementAtTopAndNotCovered } from "./isElementAtTopAndNotCovered.mjs";
12
12
  import { useRightDrawer } from "./useRightDrawer.mjs";
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import { TabSelector } from "../TabSelector/TabSelector.mjs";
5
4
  import { useHorizontalSwipe } from "../../hooks/useHorizontalSwipe.mjs";
5
+ import { TabSelector } from "../TabSelector/TabSelector.mjs";
6
6
  import { useTabContext } from "./TabContext.mjs";
7
7
  import { Children, createContext, isValidElement, useState } from "react";
8
8
  import { cva } from "class-variance-authority";
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import * as ToastPrimitives from "@radix-ui/react-toast";
5
- import { cva } from "class-variance-authority";
6
4
  import { X } from "lucide-react";
5
+ import { cva } from "class-variance-authority";
7
6
  import { jsx } from "react/jsx-runtime";
7
+ import * as ToastPrimitives from "@radix-ui/react-toast";
8
8
 
9
9
  //#region src/components/Toaster/Toast.tsx
10
10
  const ToastProvider = ToastPrimitives;
@@ -1,6 +1,3 @@
1
- import { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, toastVariants } from "./Toaster/Toast.mjs";
2
- import { reducer, toast, useToast } from "./Toaster/useToast.mjs";
3
- import { Toaster } from "./Toaster/Toaster.mjs";
4
1
  import { Loader } from "./Loader/index.mjs";
5
2
  import { Button, buttonVariants } from "./Button/Button.mjs";
6
3
  import { MaxHeightSmoother } from "./MaxHeightSmoother/index.mjs";
@@ -121,6 +118,9 @@ import { SmartTable } from "./Table/SmartTable.mjs";
121
118
  import { Hr, Td, Th, Tr } from "./Table/TableElements.mjs";
122
119
  import { MarkdownRenderer, baseMarkdownComponents, getIntlayerMarkdownOptions } from "./MarkDownRender/MarkDownRender.mjs";
123
120
  import { createEditorUploadFn } from "./MarkdownEditor/imageUpload.mjs";
121
+ import { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, toastVariants } from "./Toaster/Toast.mjs";
122
+ import { reducer, toast, useToast } from "./Toaster/useToast.mjs";
123
+ import { Toaster } from "./Toaster/Toaster.mjs";
124
124
  import { MarkdownEditor } from "./MarkdownEditor/MarkdownEditor.mjs";
125
125
  import { MaxWidthSmoother } from "./MaxWidthSmoother/index.mjs";
126
126
  import { DesktopNavbar } from "./Navbar/DesktopNavbar.mjs";
@@ -128,6 +128,7 @@ import { Burger } from "./Navbar/Burger.mjs";
128
128
  import { MobileNavbar } from "./Navbar/MobileNavbar.mjs";
129
129
  import { Navbar } from "./Navbar/index.mjs";
130
130
  import { DotPattern } from "./Pattern/DotPattern.mjs";
131
+ import { GridDistortionPattern } from "./Pattern/GridDistortionPattern.mjs";
131
132
  import { GridPattern } from "./Pattern/GridPattern.mjs";
132
133
  import { Spotlight } from "./Pattern/SpotLight.mjs";
133
134
  import { drawerManager, useRightDrawer } from "./RightDrawer/useRightDrawer.mjs";
@@ -140,4 +141,4 @@ import { Terminal } from "./Terminal/Terminal.mjs";
140
141
  import { DesktopThemeSwitcher } from "./ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs";
141
142
  import { MobileThemeSwitcher } from "./ThemeSwitcherDropDown/MobileThemeSwitcher.mjs";
142
143
 
143
- export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BitbucketLogo, Breadcrumb, Browser, Burger, Button, Carousel, Checkbox, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CollapsibleTable, Command, CommandRoot, Container, ContentEditableTextArea, ContentEditorInput, ContentEditorTextArea, ContentSelector, CopyButton, CopyToClipboard, DesktopNavbar, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, AutoSizedTextAreaElement as FormAutoSizedTextArea, Button as FormButton, CheckboxElement as FormCheckbox, FormControl, FormDescription, EditableFieldInputElement as FormEditableFieldInput, EditableFieldTextAreaElement as FormEditableFieldTextArea, FormElement, FormField, InputElement as FormInput, InputPasswordElement as FormInputPassword, FormItem, FormLabelLayout as FormLabel, FormMessage, MultiSelectElement as FormMultiSelect, OTPElement as FormOTP, SearchInputElement as FormSearchInput, SelectElement as FormSelect, SwitchSelectorElement as FormSwitchSelector, TextAreaElement as FormTextArea, GitHubLogo, GitLabLogo, GoogleLogo, GridPattern, H1, H2, H3, H4, H5, H6, HTMLRenderer, HeightResizer, HideShow, Hr, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InstagramLogo, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, LanguageBackground, LanguageSection, Link, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkDownIframe, MarkdownEditor, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileNavbar, MobileThemeSwitcher, Modal, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, Popover, PopoverStatic, PressableSpan, ProductHuntLogo, Radio, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SmartTable, SocialNetworks, Spotlight, Step, Steps, SwitchSelector, Tab, TabSelector, Table, Tag, Td, TechLogo, techLogos_exports as TechLogos, Terminal, TextArea, TextEditor, TextEditorContainer, Th, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tr, VersionSwitcher, VersionSwitcherProvider, VerticalSwitchSelector, WithResizer, XLogo, YoutubeLogo, badgeVariants, baseMarkdownComponents, buttonVariants, checkIsExternalLink, checkboxVariants, choiceVariant, containerVariants, createEditorUploadFn, defaultChoices, drawerManager, getCapitals, getIntlayerHTMLOptions, getIntlayerMarkdownOptions, indicatorVariant, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, radioVariants, reducer, switchSelectorVariant, toast, toastVariants, traceKeys, useContentEditable, useCopyToClipboard, useForm, useFormField, useLocaleSwitcherContent, usePasswordManagerBadge, usePrevious, useRightDrawer, useToast, useVersionSwitcher };
144
+ export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BitbucketLogo, Breadcrumb, Browser, Burger, Button, Carousel, Checkbox, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CollapsibleTable, Command, CommandRoot, Container, ContentEditableTextArea, ContentEditorInput, ContentEditorTextArea, ContentSelector, CopyButton, CopyToClipboard, DesktopNavbar, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, AutoSizedTextAreaElement as FormAutoSizedTextArea, Button as FormButton, CheckboxElement as FormCheckbox, FormControl, FormDescription, EditableFieldInputElement as FormEditableFieldInput, EditableFieldTextAreaElement as FormEditableFieldTextArea, FormElement, FormField, InputElement as FormInput, InputPasswordElement as FormInputPassword, FormItem, FormLabelLayout as FormLabel, FormMessage, MultiSelectElement as FormMultiSelect, OTPElement as FormOTP, SearchInputElement as FormSearchInput, SelectElement as FormSelect, SwitchSelectorElement as FormSwitchSelector, TextAreaElement as FormTextArea, GitHubLogo, GitLabLogo, GoogleLogo, GridDistortionPattern, GridPattern, H1, H2, H3, H4, H5, H6, HTMLRenderer, HeightResizer, HideShow, Hr, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InstagramLogo, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, LanguageBackground, LanguageSection, Link, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkDownIframe, MarkdownEditor, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileNavbar, MobileThemeSwitcher, Modal, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, Popover, PopoverStatic, PressableSpan, ProductHuntLogo, Radio, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SmartTable, SocialNetworks, Spotlight, Step, Steps, SwitchSelector, Tab, TabSelector, Table, Tag, Td, TechLogo, techLogos_exports as TechLogos, Terminal, TextArea, TextEditor, TextEditorContainer, Th, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tr, VersionSwitcher, VersionSwitcherProvider, VerticalSwitchSelector, WithResizer, XLogo, YoutubeLogo, badgeVariants, baseMarkdownComponents, buttonVariants, checkIsExternalLink, checkboxVariants, choiceVariant, containerVariants, createEditorUploadFn, defaultChoices, drawerManager, getCapitals, getIntlayerHTMLOptions, getIntlayerMarkdownOptions, indicatorVariant, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, radioVariants, reducer, switchSelectorVariant, toast, toastVariants, traceKeys, useContentEditable, useCopyToClipboard, useForm, useFormField, useLocaleSwitcherContent, usePasswordManagerBadge, usePrevious, useRightDrawer, useToast, useVersionSwitcher };
@@ -1,16 +1,16 @@
1
- import { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice } from "./useDevice.mjs";
2
- import { useItemSelector } from "./useItemSelector.mjs";
3
- import { usePersistedStore } from "./usePersistedStore.mjs";
4
- import { useGetElementById } from "./useGetElementById.mjs";
1
+ import { useKeyboardDetector } from "./useKeyboardDetector.mjs";
5
2
  import { useGetElementOrWindow } from "./useGetElementOrWindow.mjs";
3
+ import { useScrollY } from "./useScrollY.mjs";
4
+ import { usePersistedStore } from "./usePersistedStore.mjs";
6
5
  import { useHorizontalSwipe } from "./useHorizontalSwipe.mjs";
7
- import { useIsDarkMode } from "./useIsDarkMode.mjs";
6
+ import { useItemSelector } from "./useItemSelector.mjs";
7
+ import { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice } from "./useDevice.mjs";
8
+ import { useSearch } from "./useSearch.mjs";
8
9
  import { useIsMounted } from "./useIsMounted.mjs";
9
- import { useKeyboardDetector } from "./useKeyboardDetector.mjs";
10
+ import { useGetElementById } from "./useGetElementById.mjs";
11
+ import { useIsDarkMode } from "./useIsDarkMode.mjs";
10
12
  import { useScreenWidth } from "./useScreenWidth.mjs";
11
13
  import { useScrollBlockage } from "./useScrollBlockage/index.mjs";
12
14
  import { useScrollDetection } from "./useScrollDetection.mjs";
13
- import { useScrollY } from "./useScrollY.mjs";
14
- import { useSearch } from "./useSearch.mjs";
15
15
 
16
16
  export { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice, useGetElementById, useGetElementOrWindow, useHorizontalSwipe, useIsDarkMode, useIsMounted, useItemSelector, useKeyboardDetector, usePersistedStore, useScreenWidth, useScrollBlockage, useScrollDetection, useScrollY, useSearch };
@@ -1,12 +1,14 @@
1
1
  'use client';
2
2
 
3
- import { useEffect, useState } from "react";
3
+ import { startTransition, useEffect, useState } from "react";
4
4
 
5
5
  //#region src/hooks/useIsMounted.ts
6
6
  const useIsMounted = () => {
7
7
  const [isMounted, setIsMounted] = useState(false);
8
8
  useEffect(() => {
9
- setIsMounted(true);
9
+ startTransition(() => {
10
+ setIsMounted(true);
11
+ });
10
12
  }, []);
11
13
  return isMounted;
12
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMounted.mjs","names":[],"sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n"],"mappings":";;;;;AAIA,MAAa,qBAAqB;CAChC,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;AAEjD,iBAAgB;AACd,eAAa,KAAK;IACjB,EAAE,CAAC;AAEN,QAAO"}
1
+ {"version":3,"file":"useIsMounted.mjs","names":[],"sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["'use client';\n\nimport { startTransition, useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n // startTransition defers the background as a low-priority update so the\n // sign-in form paints before React starts loading the flag section chunk.\n startTransition(() => {\n setIsMounted(true);\n });\n }, []);\n\n return isMounted;\n};\n"],"mappings":";;;;;AAIA,MAAa,qBAAqB;CAChC,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;AAEjD,iBAAgB;AAGd,wBAAsB;AACpB,gBAAa,KAAK;IAClB;IACD,EAAE,CAAC;AAEN,QAAO"}
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
 
3
3
  import { useToast } from "../components/Toaster/useToast.mjs";
4
- import { createAsyncStoragePersister } from "@tanstack/query-async-storage-persister";
5
4
  import { MutationCache, QueryClient, QueryClientProvider, timeoutManager } from "@tanstack/react-query";
6
- import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
7
5
  import { useRef } from "react";
8
6
  import { jsx } from "react/jsx-runtime";
7
+ import { createAsyncStoragePersister } from "@tanstack/query-async-storage-persister";
8
+ import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
9
9
 
10
10
  //#region src/providers/ReactQueryProvider.tsx
11
11
  const PERSIST_MAX_AGE = 1e3 * 60 * 60 * 24;
@@ -11,9 +11,9 @@ type UseIntlayerAuthProps = {
11
11
  };
12
12
  declare const useIntlayerOAuthOptions: (props?: UseIntlayerAuthProps) => {
13
13
  options: {
14
+ headers: HeadersInit;
14
15
  cache?: RequestCache;
15
16
  credentials?: RequestCredentials;
16
- headers: HeadersInit;
17
17
  integrity?: string;
18
18
  keepalive?: boolean;
19
19
  method?: string;
@@ -23,8 +23,8 @@ type BadgeSize = 'sm' | 'md' | 'lg';
23
23
  * @description Defines the styling variants for different badge combinations
24
24
  */
25
25
  declare const badgeVariants: (props?: {
26
- color?: "error" | "success" | "primary" | "secondary" | "text" | "neutral" | "light" | "dark" | "custom";
27
- variant?: "default" | "none" | "outline" | "hoverable";
26
+ color?: "error" | "custom" | "primary" | "secondary" | "neutral" | "light" | "dark" | "text" | "success";
27
+ variant?: "none" | "default" | "outline" | "hoverable";
28
28
  size?: "sm" | "md" | "lg";
29
29
  } & _$class_variance_authority_types0.ClassProp) => string;
30
30
  /**
@@ -24,11 +24,11 @@ type ButtonTextAlign = 'left' | 'center' | 'right';
24
24
  * Enhanced button variants with improved accessibility and focus states
25
25
  */
26
26
  declare const buttonVariants: (props?: {
27
- size?: "xs" | "sm" | "md" | "lg" | "xl" | "custom" | "icon-sm" | "icon-md" | "icon-lg" | "icon-xl";
28
- color?: "error" | "success" | "primary" | "secondary" | "text" | "neutral" | "light" | "dark" | "custom" | "card" | "current" | "text-inverse";
29
- roundedSize?: "sm" | "md" | "lg" | "xl" | "2xl" | "none" | "3xl" | "4xl" | "full" | "5xl";
30
- variant?: "default" | "input" | "none" | "link" | "outline" | "hoverable" | "invisible-link" | "fade";
31
- textAlign?: "left" | "right" | "center";
27
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "icon-sm" | "icon-md" | "icon-lg" | "icon-xl" | "custom";
28
+ color?: "error" | "custom" | "primary" | "secondary" | "neutral" | "card" | "light" | "dark" | "text" | "current" | "text-inverse" | "success";
29
+ roundedSize?: "sm" | "md" | "lg" | "xl" | "2xl" | "none" | "3xl" | "4xl" | "5xl" | "full";
30
+ variant?: "none" | "default" | "outline" | "link" | "invisible-link" | "hoverable" | "fade" | "input";
31
+ textAlign?: "left" | "center" | "right";
32
32
  isFullWidth?: boolean;
33
33
  } & _$class_variance_authority_types0.ClassProp) => string;
34
34
  /**
@@ -5,8 +5,8 @@ import { VariantProps } from "class-variance-authority";
5
5
  //#region src/components/CollapsibleTable/CollapsibleTable.d.ts
6
6
  declare const collapsibleTableVariants: (props?: {
7
7
  size?: "sm" | "md" | "lg" | "xl" | "full";
8
- variant?: "default" | "dark" | "ghost" | "outlined";
9
- spacing?: "auto" | "sm" | "md" | "lg" | "none";
8
+ variant?: "dark" | "default" | "ghost" | "outlined";
9
+ spacing?: "sm" | "md" | "lg" | "none" | "auto";
10
10
  } & _$class_variance_authority_types0.ClassProp) => string;
11
11
  interface CollapsibleTableProps extends Omit<HTMLAttributes<HTMLElement>, 'title'>, VariantProps<typeof collapsibleTableVariants> {
12
12
  /** Table title displayed in the header */
@@ -13,7 +13,7 @@ declare const containerVariants: (props?: {
13
13
  padding?: "sm" | "md" | "lg" | "xl" | "2xl" | "none";
14
14
  separator?: "both" | "without" | "x" | "y";
15
15
  border?: "with" | "none";
16
- borderColor?: "error" | "success" | "primary" | "secondary" | "text" | "neutral" | "card" | "warning";
16
+ borderColor?: "error" | "primary" | "secondary" | "neutral" | "card" | "text" | "success" | "warning";
17
17
  background?: "with" | "none" | "hoverable";
18
18
  gap?: "sm" | "md" | "lg" | "xl" | "2xl" | "none";
19
19
  } & _$class_variance_authority_types0.ClassProp) => string;
@@ -7,10 +7,10 @@ declare const useDictionarySchema: (projectId: string) => z.ZodObject<{
7
7
  key: z.ZodDefault<z.ZodString>;
8
8
  projectIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
9
9
  qualifierType: z.ZodDefault<z.ZodEnum<{
10
- item: "item";
11
- meta: "meta";
12
10
  none: "none";
13
11
  variant: "variant";
12
+ meta: "meta";
13
+ item: "item";
14
14
  }>>;
15
15
  item: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
16
16
  variant: z.ZodOptional<z.ZodString>;
@@ -6,7 +6,7 @@ import { VariantProps } from "class-variance-authority";
6
6
  declare const checkboxVariants: (props?: {
7
7
  variant?: "default";
8
8
  size?: "xs" | "sm" | "md" | "lg";
9
- color?: "error" | "success" | "primary" | "secondary" | "text" | "neutral" | "light" | "dark" | "custom" | "text-inverse";
9
+ color?: "error" | "custom" | "primary" | "secondary" | "neutral" | "light" | "dark" | "text" | "text-inverse" | "success";
10
10
  validationStyleEnabled?: "enabled" | "disabled";
11
11
  } & _$class_variance_authority_types0.ClassProp) => string;
12
12
  type CheckboxSize = 'xs' | 'sm' | 'md' | 'lg';
@@ -6,7 +6,7 @@ import { VariantProps } from "class-variance-authority";
6
6
  declare const radioVariants: (props?: {
7
7
  variant?: "default";
8
8
  size?: "xs" | "sm" | "md" | "lg";
9
- color?: "error" | "success" | "primary" | "secondary" | "text" | "neutral" | "light" | "dark" | "custom" | "text-inverse";
9
+ color?: "error" | "custom" | "primary" | "secondary" | "neutral" | "light" | "dark" | "text" | "text-inverse" | "success";
10
10
  validationStyleEnabled?: "enabled" | "disabled";
11
11
  } & _$class_variance_authority_types0.ClassProp) => string;
12
12
  type RadioSize = 'xs' | 'sm' | 'md' | 'lg';
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageBackground.d.ts","names":[],"sources":["../../../../src/components/LanguageBackground/LanguageBackground.tsx"],"mappings":";;;cAgBa,kBAAA,EAAoB,EAAA,CAAG,iBAAA"}
1
+ {"version":3,"file":"LanguageBackground.d.ts","names":[],"sources":["../../../../src/components/LanguageBackground/LanguageBackground.tsx"],"mappings":";;;cASa,kBAAA,EAAoB,EAAA,CAAG,iBAAA"}
@@ -13,9 +13,9 @@ type LinkRoundedSize = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'ful
13
13
  type LinkSize = 'sm' | 'md' | 'lg' | 'xl' | 'custom';
14
14
  type LinkUnderlined = 'default' | 'true' | 'false';
15
15
  declare const linkVariants: (props?: {
16
- variant?: "default" | "hoverable" | "button" | "invisible-link" | "button-outlined";
16
+ variant?: "default" | "invisible-link" | "hoverable" | "button" | "button-outlined";
17
17
  roundedSize?: "sm" | "md" | "lg" | "xl" | "2xl" | "none" | "3xl" | "full";
18
- color?: "error" | "success" | "primary" | "secondary" | "text" | "neutral" | "light" | "dark" | "custom" | "text-inverse";
18
+ color?: "error" | "custom" | "primary" | "secondary" | "neutral" | "light" | "dark" | "text" | "text-inverse" | "success";
19
19
  size?: "sm" | "md" | "lg" | "xl" | "custom";
20
20
  underlined?: boolean | "default";
21
21
  } & _$class_variance_authority_types0.ClassProp) => string;
@@ -5,8 +5,8 @@ import { VariantProps } from "class-variance-authority";
5
5
  //#region src/components/Pagination/Pagination.d.ts
6
6
  declare const paginationVariants: (props?: {
7
7
  size?: "sm" | "md" | "lg";
8
- color?: "primary" | "secondary" | "text" | "neutral";
9
- variant?: "default" | "ghost" | "bordered";
8
+ color?: "primary" | "secondary" | "neutral" | "text";
9
+ variant?: "default" | "bordered" | "ghost";
10
10
  } & _$class_variance_authority_types0.ClassProp) => string;
11
11
  type PaginationSize = 'sm' | 'md' | 'lg';
12
12
  type PaginationVariant = 'default' | 'bordered' | 'ghost';