@flikk/ui 1.0.0-beta.15 → 1.0.0-beta.17
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 +52 -0
- package/dist/bg/1.jpg +0 -0
- package/dist/bg/10.jpg +0 -0
- package/dist/bg/11.jpg +0 -0
- package/dist/bg/14.jpg +0 -0
- package/dist/bg/15.jpg +0 -0
- package/dist/bg/16.jpg +0 -0
- package/dist/bg/17.jpg +0 -0
- package/dist/bg/18.jpg +0 -0
- package/dist/bg/19.jpg +0 -0
- package/dist/bg/2.jpg +0 -0
- package/dist/bg/20.jpg +0 -0
- package/dist/bg/21.jpg +0 -0
- package/dist/bg/22.jpg +0 -0
- package/dist/bg/23.jpg +0 -0
- package/dist/bg/24.jpg +0 -0
- package/dist/bg/3.jpg +0 -0
- package/dist/bg/4.jpg +0 -0
- package/dist/bg/5.jpg +0 -0
- package/dist/bg/6.jpg +0 -0
- package/dist/bg/7.jpg +0 -0
- package/dist/bg/8.jpg +0 -0
- package/dist/bg/9.jpg +0 -0
- package/dist/bg/bg/1.jpg +0 -0
- package/dist/bg/bg/10.jpg +0 -0
- package/dist/bg/bg/11.jpg +0 -0
- package/dist/bg/bg/14.jpg +0 -0
- package/dist/bg/bg/15.jpg +0 -0
- package/dist/bg/bg/16.jpg +0 -0
- package/dist/bg/bg/17.jpg +0 -0
- package/dist/bg/bg/18.jpg +0 -0
- package/dist/bg/bg/19.jpg +0 -0
- package/dist/bg/bg/2.jpg +0 -0
- package/dist/bg/bg/20.jpg +0 -0
- package/dist/bg/bg/21.jpg +0 -0
- package/dist/bg/bg/22.jpg +0 -0
- package/dist/bg/bg/23.jpg +0 -0
- package/dist/bg/bg/24.jpg +0 -0
- package/dist/bg/bg/3.jpg +0 -0
- package/dist/bg/bg/4.jpg +0 -0
- package/dist/bg/bg/5.jpg +0 -0
- package/dist/bg/bg/6.jpg +0 -0
- package/dist/bg/bg/7.jpg +0 -0
- package/dist/bg/bg/8.jpg +0 -0
- package/dist/bg/bg/9.jpg +0 -0
- package/dist/components/ai/StreamingResponse/AnimatedText.js +3 -3
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +22 -22
- package/dist/components/ai/StreamingResponse/StreamingCursor.js +1 -1
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +10 -10
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +3 -3
- package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +1 -1
- package/dist/components/ai/StreamingResponse/WordAnimationContext.js +11 -11
- package/dist/components/ai/index.d.ts +0 -2
- package/dist/components/ai/index.js +0 -2
- package/dist/components/core/Button/Button.js +1 -1
- package/dist/components/core/Calendar/Calendar.js +2 -2
- package/dist/components/core/Calendar/Calendar.types.d.ts +1 -1
- package/dist/components/core/Card/Card.theme.js +2 -2
- package/dist/components/core/Progress/Progress.theme.js +2 -2
- package/dist/components/effects/GlassSurface/GlassSurface.js +7 -7
- package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +6 -0
- package/dist/components/effects/Neumorphic/InsetCircleButton.d.ts +2 -1
- package/dist/components/effects/Neumorphic/InsetCircleButton.js +2 -2
- package/dist/components/effects/Neumorphic/InsetPill.d.ts +2 -1
- package/dist/components/effects/Neumorphic/InsetPill.js +2 -2
- package/dist/components/effects/index.d.ts +2 -2
- package/dist/components/effects/index.js +1 -1
- package/dist/components/forms/Slider/Slider.js +10 -3
- package/dist/components/forms/Slider/Slider.theme.js +3 -3
- package/dist/components/forms/Switch/Switch.js +10 -2
- package/dist/components/forms/Switch/Switch.theme.js +2 -2
- package/dist/components/forms/index.d.ts +0 -3
- package/dist/components/forms/index.js +0 -2
- package/dist/index.js +1 -3
- package/dist/styles.css +1 -1
- package/package.json +5 -3
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.animations.d.ts +0 -10
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.animations.js +0 -47
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.d.ts +0 -20
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.js +0 -44
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.d.ts +0 -2
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.js +0 -20
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.types.d.ts +0 -67
- package/dist/components/ai/ThinkingIndicator/index.d.ts +0 -3
- package/dist/components/forms/TransferList/TransferList.animations.d.ts +0 -10
- package/dist/components/forms/TransferList/TransferList.animations.js +0 -32
- package/dist/components/forms/TransferList/TransferList.d.ts +0 -28
- package/dist/components/forms/TransferList/TransferList.js +0 -199
- package/dist/components/forms/TransferList/TransferList.theme.d.ts +0 -6
- package/dist/components/forms/TransferList/TransferList.theme.js +0 -60
- package/dist/components/forms/TransferList/TransferList.types.d.ts +0 -101
- package/dist/components/forms/TransferList/index.d.ts +0 -3
|
@@ -23,7 +23,7 @@ const useDarkMode = () => {
|
|
|
23
23
|
* Creates a realistic chromatic aberration glass effect using SVG filters.
|
|
24
24
|
* Works as a wrapper for any content.
|
|
25
25
|
*/
|
|
26
|
-
const GlassSurface = React__default.forwardRef(({ children, width, height, borderRadius = 20, borderWidth = 0.07, brightness: brightnessProp, opacity: opacityProp, blur: blurProp, displace: displaceProp, backgroundOpacity: backgroundOpacityProp, backgroundColor, saturation: saturationProp, distortionScale: distortionScaleProp, redOffset = 0, greenOffset = 10, blueOffset = 20, xChannel = "R", yChannel = "G", mixBlendMode: mixBlendModeProp, colorScheme = "auto", frosted = false, className = "", style = {}, }, forwardedRef) => {
|
|
26
|
+
const GlassSurface = React__default.forwardRef(({ children, width, height, borderRadius = 20, borderWidth = 0.07, brightness: brightnessProp, opacity: opacityProp, blur: blurProp, displace: displaceProp, backgroundOpacity: backgroundOpacityProp, backgroundColor, saturation: saturationProp, distortionScale: distortionScaleProp, redOffset = 0, greenOffset = 10, blueOffset = 20, xChannel = "R", yChannel = "G", mixBlendMode: mixBlendModeProp, colorScheme = "auto", backdropBrightness = 1, frosted = false, className = "", style = {}, }, forwardedRef) => {
|
|
27
27
|
const uniqueId = useId().replace(/:/g, "-");
|
|
28
28
|
const filterId = `glass-filter-${uniqueId}`;
|
|
29
29
|
const redGradId = `red-grad-${uniqueId}`;
|
|
@@ -66,11 +66,11 @@ const GlassSurface = React__default.forwardRef(({ children, width, height, borde
|
|
|
66
66
|
<svg viewBox="0 0 ${actualWidth} ${actualHeight}" xmlns="http://www.w3.org/2000/svg">
|
|
67
67
|
<defs>
|
|
68
68
|
<linearGradient id="${redGradId}" x1="100%" y1="0%" x2="0%" y2="0%">
|
|
69
|
-
<stop offset="0%" stop-color="#
|
|
69
|
+
<stop offset="0%" stop-color="#000"/>
|
|
70
70
|
<stop offset="100%" stop-color="red"/>
|
|
71
71
|
</linearGradient>
|
|
72
72
|
<linearGradient id="${blueGradId}" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
73
|
-
<stop offset="0%" stop-color="#
|
|
73
|
+
<stop offset="0%" stop-color="#000"/>
|
|
74
74
|
<stop offset="100%" stop-color="blue"/>
|
|
75
75
|
</linearGradient>
|
|
76
76
|
</defs>
|
|
@@ -186,8 +186,8 @@ const GlassSurface = React__default.forwardRef(({ children, width, height, borde
|
|
|
186
186
|
return {
|
|
187
187
|
...baseStyles,
|
|
188
188
|
background: getBackgroundWithOpacity(),
|
|
189
|
-
backdropFilter: `url(#${filterId}) ${frostedBlur} saturate(${saturation})`,
|
|
190
|
-
WebkitBackdropFilter: `url(#${filterId}) ${frostedBlur} saturate(${saturation})`,
|
|
189
|
+
backdropFilter: `url(#${filterId}) ${frostedBlur} brightness(${backdropBrightness}) saturate(${saturation})`,
|
|
190
|
+
WebkitBackdropFilter: `url(#${filterId}) ${frostedBlur} brightness(${backdropBrightness}) saturate(${saturation})`,
|
|
191
191
|
...(!resolvedDark && { border: "1px solid rgba(0, 0, 0, 0.06)" }),
|
|
192
192
|
...(hasCustomShadow
|
|
193
193
|
? {}
|
|
@@ -246,7 +246,7 @@ const GlassSurface = React__default.forwardRef(({ children, width, height, borde
|
|
|
246
246
|
};
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
}, [style, width, height, borderRadius, frosted, svgSupported, backgroundColor, resolvedDark, backgroundOpacity, filterId, saturation, hasCustomShadow, supportsBackdrop]);
|
|
249
|
+
}, [style, width, height, borderRadius, frosted, svgSupported, backgroundColor, resolvedDark, backgroundOpacity, filterId, backdropBrightness, saturation, hasCustomShadow, supportsBackdrop]);
|
|
250
250
|
const focusVisibleClasses = resolvedDark
|
|
251
251
|
? "focus-visible:outline-2 focus-visible:outline-[#0A84FF] focus-visible:outline-offset-2"
|
|
252
252
|
: "focus-visible:outline-2 focus-visible:outline-[#007AFF] focus-visible:outline-offset-2";
|
|
@@ -257,7 +257,7 @@ const GlassSurface = React__default.forwardRef(({ children, width, height, borde
|
|
|
257
257
|
else if (forwardedRef)
|
|
258
258
|
forwardedRef.current = node;
|
|
259
259
|
}, [forwardedRef]);
|
|
260
|
-
return (jsxs("div", { ref: mergedRef, className: cn("relative transition-opacity duration-[260ms] ease-out", focusVisibleClasses, className), style: containerStyles, children: [jsx("svg", { className: "w-full h-full pointer-events-none absolute inset-0 opacity-0 -z-10", xmlns: "http://www.w3.org/2000/svg", children: jsxs("defs", { children: [jsxs("filter", { id: filterId, colorInterpolationFilters: "sRGB", x: "0%", y: "0%", width: "100%", height: "100%", children: [jsx("feImage", { ref: feImageRef, x: "0", y: "0", width: "100%", height: "100%", preserveAspectRatio: "none", result: "map" }), jsx("feDisplacementMap", { ref: redChannelRef, in: "SourceGraphic", in2: "map",
|
|
260
|
+
return (jsxs("div", { ref: mergedRef, className: cn("relative transition-opacity duration-[260ms] ease-out", focusVisibleClasses, className), style: containerStyles, children: [jsx("svg", { className: "w-full h-full pointer-events-none absolute inset-0 opacity-0 -z-10", xmlns: "http://www.w3.org/2000/svg", children: jsxs("defs", { children: [jsxs("filter", { id: filterId, colorInterpolationFilters: "sRGB", x: "0%", y: "0%", width: "100%", height: "100%", children: [jsx("feImage", { ref: feImageRef, x: "0", y: "0", width: "100%", height: "100%", preserveAspectRatio: "none", result: "map" }), jsx("feDisplacementMap", { ref: redChannelRef, in: "SourceGraphic", in2: "map", result: "dispRed" }), jsx("feColorMatrix", { in: "dispRed", type: "matrix", values: "1 0 0 0 0\n 0 0 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0", result: "red" }), jsx("feDisplacementMap", { ref: greenChannelRef, in: "SourceGraphic", in2: "map", result: "dispGreen" }), jsx("feColorMatrix", { in: "dispGreen", type: "matrix", values: "0 0 0 0 0\n 0 1 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0", result: "green" }), jsx("feDisplacementMap", { ref: blueChannelRef, in: "SourceGraphic", in2: "map", result: "dispBlue" }), jsx("feColorMatrix", { in: "dispBlue", type: "matrix", values: "0 0 0 0 0\n 0 0 0 0 0\n 0 0 1 0 0\n 0 0 0 1 0", result: "blue" }), jsx("feBlend", { in: "red", in2: "green", mode: "screen", result: "rg" }), jsx("feBlend", { in: "rg", in2: "blue", mode: "screen", result: "output" }), jsx("feGaussianBlur", { ref: gaussianBlurRef, in: "output", stdDeviation: "0.7" })] }), jsx("filter", { id: noiseFilterId, x: "0%", y: "0%", width: "100%", height: "100%", children: jsx("feTurbulence", { type: "fractalNoise", baseFrequency: "0.65", numOctaves: "3", stitchTiles: "stitch" }) })] }) }), jsx("div", { className: "relative z-10 h-full rounded-[inherit]", children: children }), jsx("div", { className: "absolute inset-0 pointer-events-none rounded-[inherit] overflow-hidden z-20", children: frosted && (jsx("div", { className: "absolute inset-0 opacity-10 mix-blend-overlay", style: { filter: `url(#${noiseFilterId})` } })) })] }));
|
|
261
261
|
});
|
|
262
262
|
GlassSurface.displayName = "GlassSurface";
|
|
263
263
|
|
|
@@ -48,6 +48,12 @@ export interface GlassSurfaceProps {
|
|
|
48
48
|
* @default 'auto'
|
|
49
49
|
*/
|
|
50
50
|
colorScheme?: "auto" | "dark" | "light";
|
|
51
|
+
/**
|
|
52
|
+
* Brightness multiplier for the backdrop-filter chain.
|
|
53
|
+
* Values > 1 brighten, < 1 darken. Only applies when SVG filters are supported.
|
|
54
|
+
* @default 1
|
|
55
|
+
*/
|
|
56
|
+
backdropBrightness?: number;
|
|
51
57
|
/**
|
|
52
58
|
* Enable frosted glass effect with noise texture
|
|
53
59
|
* @default false
|
|
@@ -5,5 +5,6 @@ export interface InsetCircleButtonProps {
|
|
|
5
5
|
className?: string;
|
|
6
6
|
classNameDisc?: string;
|
|
7
7
|
classNameHover?: string;
|
|
8
|
+
onClick?: () => void;
|
|
8
9
|
}
|
|
9
|
-
export declare function InsetCircleButton({ children, size, className, classNameDisc, classNameHover, }: InsetCircleButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function InsetCircleButton({ children, size, className, classNameDisc, classNameHover, onClick, }: InsetCircleButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,8 +3,8 @@ import { motion } from 'motion/react';
|
|
|
3
3
|
import { cn } from '../../../utils/cn.js';
|
|
4
4
|
import 'react';
|
|
5
5
|
|
|
6
|
-
function InsetCircleButton({ children, size = 44, className, classNameDisc, classNameHover, }) {
|
|
7
|
-
return (jsx("div", { className: cn("neu-circle-groove group shrink-0 cursor-pointer bg-neutral-200/80 dark:bg-neutral-900", className), style: { width: size, height: size }, children: jsxs(motion.div, { className: cn("neu-circle-disc bg-linear-to-br from-neutral-100 to-neutral-300 dark:from-neutral-700 dark:to-neutral-900", classNameDisc), whileHover: { scale: 1 }, whileTap: { scale: 0.975 }, transition: { type: "spring", stiffness: 200, damping: 20 }, children: [jsx("div", { className: cn("absolute inset-0 rounded-full bg-linear-to-br from-neutral-300 to-neutral-200 dark:from-neutral-900 dark:to-neutral-700 opacity-0 group-hover:opacity-100 transition-opacity duration-300", classNameHover) }), jsx("div", { className: "relative z-2", children: children })] }) }));
|
|
6
|
+
function InsetCircleButton({ children, size = 44, className, classNameDisc, classNameHover, onClick, }) {
|
|
7
|
+
return (jsx("div", { className: cn("neu-circle-groove group shrink-0 cursor-pointer bg-neutral-200/80 dark:bg-neutral-900", className), style: { width: size, height: size }, onClick: onClick, children: jsxs(motion.div, { className: cn("neu-circle-disc bg-linear-to-br from-neutral-100 to-neutral-300 dark:from-neutral-700 dark:to-neutral-900", classNameDisc), whileHover: { scale: 1 }, whileTap: { scale: 0.975 }, transition: { type: "spring", stiffness: 200, damping: 20 }, children: [jsx("div", { className: cn("absolute inset-0 rounded-full bg-linear-to-br from-neutral-300 to-neutral-200 dark:from-neutral-900 dark:to-neutral-700 opacity-0 group-hover:opacity-100 transition-opacity duration-300", classNameHover) }), jsx("div", { className: "relative z-2", children: children })] }) }));
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export { InsetCircleButton };
|
|
@@ -3,5 +3,6 @@ export interface InsetPillProps {
|
|
|
3
3
|
children: React.ReactNode;
|
|
4
4
|
className?: string;
|
|
5
5
|
padding?: string;
|
|
6
|
+
onClick?: () => void;
|
|
6
7
|
}
|
|
7
|
-
export declare function InsetPill({ children, className, padding, }: InsetPillProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function InsetPill({ children, className, padding, onClick, }: InsetPillProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
function InsetPill({ children, className, padding = "10px 18px", }) {
|
|
4
|
-
return (jsx("div", { className: `neu-inset inline-flex items-center gap-2 cursor-pointer rounded-full bg-neutral-200/60 dark:bg-neutral-800/80 ${className !== null && className !== void 0 ? className : ""}`, style: { padding }, children: jsx("div", { className: "relative z-2 flex items-center gap-2", children: children }) }));
|
|
3
|
+
function InsetPill({ children, className, padding = "10px 18px", onClick, }) {
|
|
4
|
+
return (jsx("div", { className: `neu-inset inline-flex items-center gap-2 cursor-pointer rounded-full bg-neutral-200/60 dark:bg-neutral-800/80 ${className !== null && className !== void 0 ? className : ""}`, style: { padding }, onClick: onClick, children: jsx("div", { className: "relative z-2 flex items-center gap-2", children: children }) }));
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
export { InsetPill };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { CustomCursor } from "./CustomCursor";
|
|
2
|
-
export type { CustomCursorProps } from "./CustomCursor";
|
|
1
|
+
export { CustomCursorProvider, CustomCursor, CustomCursorFollow, useCustomCursor } from "./CustomCursor";
|
|
2
|
+
export type { CustomCursorProps, CustomCursorProviderProps, CustomCursorFollowProps, CustomCursorContextType, CustomCursorSize, CustomCursorColor, CustomCursorVariant, CustomCursorShape, CustomCursorTheme, CustomCursorThemeOverrides, } from "./CustomCursor";
|
|
3
3
|
export { GlassEffect } from "./GlassEffect";
|
|
4
4
|
export type { GlassEffectProps, BlendMode } from "./GlassEffect";
|
|
5
5
|
export { Overlay } from "./Overlay";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CustomCursor } from './CustomCursor/CustomCursor.js';
|
|
1
|
+
export { CustomCursor, CustomCursorFollow, CustomCursorProvider, useCustomCursor } from './CustomCursor/CustomCursor.js';
|
|
2
2
|
export { GlassEffect } from './GlassEffect/GlassEffect.js';
|
|
3
3
|
export { Overlay } from './Overlay/Overlay.js';
|
|
4
4
|
export { GlassSurface } from './GlassSurface/GlassSurface.js';
|
|
@@ -216,18 +216,25 @@ const Slider = React__default.forwardRef(({ state = "default", className = "", l
|
|
|
216
216
|
}
|
|
217
217
|
return `${currentValue}${unit}`;
|
|
218
218
|
};
|
|
219
|
-
|
|
219
|
+
const filterId = `slider-liquid-lens-${sliderId}`;
|
|
220
|
+
return (jsxs("div", { className: cn(mergedTheme.wrapperStyle, wrapperClassName), ref: ref, ...props, children: [jsx("svg", { width: "0", height: "0", className: "absolute", "aria-hidden": "true", children: jsx("defs", { children: jsxs("filter", { id: filterId, children: [jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "1", result: "blur" }), jsx("feColorMatrix", { in: "blur", type: "matrix", values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7", result: "goo" }), jsx("feComposite", { in: "SourceGraphic", in2: "goo", operator: "atop" })] }) }) }), label && (jsx(FormLabel, { htmlFor: sliderId, required: required, className: cn(mergedTheme.labelStyle, labelClassName), children: label })), jsxs("div", { className: "flex items-center gap-4", children: [iconStart && (jsx("div", { className: "flex-shrink-0 text-[var(--color-text-muted)]", children: iconStart })), showMinMax && (jsx("span", { className: cn(mergedTheme.minMaxLabelStyle), children: min })), jsxs("div", { className: cn(mergedTheme.rootStyle, className), "data-disabled": isDisabled || undefined, "data-invalid": isInvalid || undefined, "data-orientation": "horizontal", children: [jsxs("div", { ref: trackRef, className: mergedTheme.trackStyle, onPointerDown: handleTrackClick, role: "presentation", children: [jsx("div", { className: mergedTheme.rangeStyle, style: getFilledTrackStyle() }), showTicks &&
|
|
220
221
|
ticks.map((tick) => {
|
|
221
222
|
const percentage = getPercentage(tick);
|
|
222
223
|
return (jsx("div", { className: mergedTheme.tickStyle, style: { left: `${percentage}%` } }, tick));
|
|
223
224
|
})] }), values.map((val, index) => {
|
|
224
225
|
const percentage = getPercentage(val);
|
|
225
|
-
return (
|
|
226
|
+
return (jsxs("div", { className: cn(mergedTheme.thumbStyle, "outline-[2px] outline-[var(--color-border)]/80 ring-0 shadow-lg p-0"), style: {
|
|
226
227
|
left: `${percentage}%`,
|
|
227
228
|
transform: "translate(-50%, -50%)",
|
|
228
229
|
position: "absolute",
|
|
229
230
|
top: "50%",
|
|
230
|
-
}, onPointerDown: (e) => handlePointerDown(e, index), onKeyDown: (e) => handleKeyDown(e, index), role: "slider", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": val, "aria-orientation": "horizontal", "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : (range ? `Slider thumb ${index + 1}` : "Slider"), "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby !== null && ariaDescribedby !== void 0 ? ariaDescribedby : helperTextId, tabIndex: isDisabled ? -1 : 0, "data-disabled": isDisabled || undefined, "data-invalid": isInvalid || undefined
|
|
231
|
+
}, onPointerDown: (e) => handlePointerDown(e, index), onKeyDown: (e) => handleKeyDown(e, index), role: "slider", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": val, "aria-orientation": "horizontal", "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : (range ? `Slider thumb ${index + 1}` : "Slider"), "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby !== null && ariaDescribedby !== void 0 ? ariaDescribedby : helperTextId, tabIndex: isDisabled ? -1 : 0, "data-disabled": isDisabled || undefined, "data-invalid": isInvalid || undefined, children: [jsx("div", { className: "absolute inset-0 z-0 rounded-full", style: {
|
|
232
|
+
backdropFilter: "blur(0.6px)",
|
|
233
|
+
WebkitBackdropFilter: "blur(0.6px)",
|
|
234
|
+
filter: `url(#${filterId})`,
|
|
235
|
+
}, "aria-hidden": "true" }), jsx("div", { className: "absolute inset-0 z-[1] rounded-full bg-[var(--color-surface)]/90", "aria-hidden": "true" }), jsx("div", { className: "absolute inset-0 z-[2] rounded-full", style: {
|
|
236
|
+
boxShadow: "inset 1px 1px 0 rgba(255,255,255,0.35), inset 1px 3px 0 rgba(0,0,0,0.03), inset 0 0 14px rgba(255,255,255,0.25), inset -1px -1px 0 rgba(0,0,0,0.06)",
|
|
237
|
+
}, "aria-hidden": "true" })] }, index));
|
|
231
238
|
}), name && (jsx("input", { type: "hidden", name: name, value: Array.isArray(currentValue)
|
|
232
239
|
? currentValue.join(",")
|
|
233
240
|
: currentValue }))] }), showMinMax && (jsx("span", { className: cn(mergedTheme.minMaxLabelStyle), children: max })), showValue && (jsx("div", { className: cn(mergedTheme.valueDisplayStyle), children: formatValueDisplay() })), iconEnd && (jsx("div", { className: "flex-shrink-0 text-[var(--color-text-muted)]", children: iconEnd }))] }), helperText && (jsx("div", { id: helperTextId, className: cn(mergedTheme.helperTextStyle, helperTextClassName), children: helperText }))] }));
|
|
@@ -10,17 +10,17 @@ const sliderTheme = {
|
|
|
10
10
|
// Root container with layout
|
|
11
11
|
rootStyle: "relative flex items-center w-full touch-none select-none data-[orientation=vertical]:flex-col data-[orientation=vertical]:h-full",
|
|
12
12
|
// Track (background)
|
|
13
|
-
trackStyle: "relative w-full h-2 grow rounded-full bg-[var(--color-background-tertiary)] overflow-hidden data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:w-2 data-[orientation=vertical]:h-full",
|
|
13
|
+
trackStyle: "relative w-full h-2 grow rounded-full bg-[var(--color-background-tertiary)] overflow-hidden data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:w-2 data-[orientation=vertical]:h-full shadow-inner",
|
|
14
14
|
// Range (filled portion) - rounded to match track clipping
|
|
15
15
|
rangeStyle: "absolute h-full bg-gradient-to-r from-[var(--color-primary-500)] to-[var(--color-primary-700)] transition-all rounded-full data-[disabled]:bg-[var(--color-background-disabled)] data-[invalid]:bg-[var(--color-danger)]",
|
|
16
16
|
// Thumb (draggable handle)
|
|
17
|
-
thumbStyle: "block h-5 w-
|
|
17
|
+
thumbStyle: "block h-5 w-7 rounded-full bg-transparent overflow-hidden cursor-grab active:cursor-grabbing active:scale-x-110 active:scale-y-[0.98] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-border)] focus-visible:ring-offset-2 transition-all hover:scale-110 data-[disabled]:cursor-not-allowed data-[disabled]:hover:scale-100 data-[invalid]:focus-visible:ring-[var(--color-danger)]",
|
|
18
18
|
// Value display
|
|
19
19
|
valueDisplayStyle: "text-base font-medium text-[var(--color-text-secondary)] w-fit min-w-12",
|
|
20
20
|
// Min/max labels
|
|
21
21
|
minMaxLabelStyle: "text-base font-medium text-[var(--color-text-muted)]",
|
|
22
22
|
// Tick marks
|
|
23
|
-
tickStyle: "absolute w-0.5 h-2 bg-
|
|
23
|
+
tickStyle: "absolute w-0.5 h-2 bg-[var(--color-border)] -translate-x-0.5 pointer-events-none",
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
export { sliderTheme };
|
|
@@ -34,7 +34,9 @@ const Switch = React__default.forwardRef(({ id, checked: controlledChecked, onCh
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
// Label and description content
|
|
37
|
-
const labelContent = label || description ? (jsxs("div", { className: "flex grow flex-col", children: [label &&
|
|
37
|
+
const labelContent = label || description ? (jsxs("div", { className: "flex grow flex-col", children: [label &&
|
|
38
|
+
(typeof label === "string" ? (jsx(FormLabel, { htmlFor: id, state: state, children: label })) : (label)), description &&
|
|
39
|
+
(typeof description === "string" ? (jsx("div", { className: cn(switchTheme.description, theme === null || theme === void 0 ? void 0 : theme.description), children: description })) : (description))] })) : null;
|
|
38
40
|
// Build data attributes for state-based styling
|
|
39
41
|
const trackDataState = isDisabled
|
|
40
42
|
? "disabled"
|
|
@@ -43,8 +45,14 @@ const Switch = React__default.forwardRef(({ id, checked: controlledChecked, onCh
|
|
|
43
45
|
: isChecked
|
|
44
46
|
? "checked"
|
|
45
47
|
: "unchecked";
|
|
48
|
+
const filterId = `switch-liquid-lens-${id}`;
|
|
46
49
|
// Switch toggle component
|
|
47
|
-
const switchToggle = (jsxs("div", { className: "relative flex items-center h-6", children: [jsx("input", { ref: ref, type: "checkbox", id: id, checked: isChecked, onChange: handleChange, disabled: isDisabled, className: "sr-only", "aria-checked": isChecked, "aria-invalid": isInvalid }), jsx("div", { className: cn(switchTheme.track, theme === null || theme === void 0 ? void 0 : theme.track), "data-state": trackDataState, onClick: handleTrackClick, children:
|
|
50
|
+
const switchToggle = (jsxs("div", { className: "relative flex items-center h-6", children: [jsx("input", { ref: ref, type: "checkbox", id: id, checked: isChecked, onChange: handleChange, disabled: isDisabled, className: "sr-only", "aria-checked": isChecked, "aria-invalid": isInvalid }), jsx("svg", { width: "0", height: "0", className: "absolute", "aria-hidden": "true", children: jsx("defs", { children: jsxs("filter", { id: filterId, children: [jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "1", result: "blur" }), jsx("feColorMatrix", { in: "blur", type: "matrix", values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7", result: "goo" }), jsx("feComposite", { in: "SourceGraphic", in2: "goo", operator: "atop" })] }) }) }), jsx("div", { className: cn(switchTheme.track, theme === null || theme === void 0 ? void 0 : theme.track), "data-state": trackDataState, onClick: handleTrackClick, children: jsxs(motion.div, { className: cn(switchTheme.thumb, theme === null || theme === void 0 ? void 0 : theme.thumb, ""), initial: false, animate: isChecked ? thumbPositions.checked : thumbPositions.unchecked, transition: { type: "spring", stiffness: 500, damping: 30 }, whileTap: isDisabled ? undefined : { scale: 1.15 }, style: { filter: `url(#${filterId})` }, children: [jsx("div", { className: "absolute inset-0 z-0 rounded-full", style: {
|
|
51
|
+
backdropFilter: "blur(0.6px)",
|
|
52
|
+
WebkitBackdropFilter: "blur(0.6px)",
|
|
53
|
+
}, "aria-hidden": "true" }), jsx("div", { className: "absolute inset-0 z-[1] rounded-full bg-[var(--color-surface)]/80", "aria-hidden": "true" }), jsx("div", { className: "absolute inset-0 z-[2] rounded-full", style: {
|
|
54
|
+
boxShadow: "inset 1px 1px 0 rgba(255,255,255,0.35), inset 1px 3px 0 rgba(0,0,0,0.03), inset 0 0 14px rgba(255,255,255,0.25), inset -1px -1px 0 rgba(0,0,0,0.06)",
|
|
55
|
+
}, "aria-hidden": "true" })] }) })] }));
|
|
48
56
|
return (jsxs("div", { className: cn(switchTheme.container, labelPosition === "start" ? "flex-row-reverse" : "flex-row", theme === null || theme === void 0 ? void 0 : theme.container, className), ...rest, children: [labelContent, switchToggle] }));
|
|
49
57
|
});
|
|
50
58
|
Switch.displayName = "Switch";
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
const switchTheme = {
|
|
5
5
|
container: "flex w-full justify-between items-center gap-4",
|
|
6
|
-
track: "w-12 h-6 rounded-full
|
|
7
|
-
thumb: "w-7 h-5 rounded-full
|
|
6
|
+
track: "w-12 h-6 rounded-full cursor-pointer shadow-inner bg-[var(--color-background-tertiary)] data-[state=checked]:bg-[var(--color-primary)] data-[state=disabled]:bg-[var(--color-background-disabled)] data-[state=disabled]:cursor-not-allowed data-[state=invalid]:border-2 data-[state=invalid]:border-[var(--color-danger)] outline outline-[var(--color-border)] transition-colors duration-300",
|
|
7
|
+
thumb: "w-7 h-5 rounded-full bg-transparent overflow-hidden border border-[var(--color-border)]/40 shadow-lg",
|
|
8
8
|
description: "text-base text-[var(--color-text-muted)] -mt-1.5",
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
@@ -69,9 +69,6 @@ export * from "./ColorPicker";
|
|
|
69
69
|
export { SelectableCard } from "./SelectableCard";
|
|
70
70
|
export type { SelectableCardProps, SelectableCardGroupProps, SelectableCardType, SelectableCardIndicator, SelectableCardTheme, } from "./SelectableCard";
|
|
71
71
|
export { selectableCardTheme } from "./SelectableCard";
|
|
72
|
-
export { TransferList } from "./TransferList";
|
|
73
|
-
export type { TransferListProps, TransferListItem, TransferListSize, TransferListTheme, } from "./TransferList";
|
|
74
|
-
export { transferListTheme } from "./TransferList";
|
|
75
72
|
export { Mention } from "./Mention";
|
|
76
73
|
export type { MentionProps, MentionSuggestion, MentionTrigger, MentionSize, MentionTheme, MentionThemeOverrides, } from "./Mention";
|
|
77
74
|
export { mentionTheme } from "./Mention";
|
|
@@ -65,8 +65,6 @@ export { ColorPickerPresets } from './ColorPicker/ColorPickerPresets.js';
|
|
|
65
65
|
export { formatHex, formatHsl, formatRgb, hexToRgb, hslToRgb, hsvToRgb, parseColor, rgbToHex, rgbToHsl, rgbToHsv, validateHex, validateRgb } from './ColorPicker/colorUtils.js';
|
|
66
66
|
export { SelectableCard } from './SelectableCard/SelectableCard.js';
|
|
67
67
|
export { selectableCardTheme } from './SelectableCard/SelectableCard.theme.js';
|
|
68
|
-
export { TransferList } from './TransferList/TransferList.js';
|
|
69
|
-
export { transferListTheme } from './TransferList/TransferList.theme.js';
|
|
70
68
|
export { Mention } from './Mention/Mention.js';
|
|
71
69
|
export { mentionTheme } from './Mention/Mention.theme.js';
|
|
72
70
|
export { CronInput } from './CronInput/CronInput.js';
|
package/dist/index.js
CHANGED
|
@@ -64,7 +64,7 @@ export { Combobox } from './components/forms/Combobox/Combobox.js';
|
|
|
64
64
|
export { CommandPalette } from './components/core/CommandPalette/CommandPalette.js';
|
|
65
65
|
export { ContextMenu } from './components/core/ContextMenu/ContextMenu.js';
|
|
66
66
|
export { CronInput } from './components/forms/CronInput/CronInput.js';
|
|
67
|
-
export { CustomCursor } from './components/effects/CustomCursor/CustomCursor.js';
|
|
67
|
+
export { CustomCursor, CustomCursorFollow, CustomCursorProvider, useCustomCursor } from './components/effects/CustomCursor/CustomCursor.js';
|
|
68
68
|
export { DEFAULT_CHART_COLORS, EXTENDED_CHART_COLORS, MINIMAL_CHART_COLORS, colorClassToVariable, combineClasses, createColorClass, extractFillClass, extractStrokeClass, generateColorPalette, generateSeriesColors, getContrastColor } from './components/charts/utils/color-utils.js';
|
|
69
69
|
export { DEFAULT_DATE_RANGE_PRESETS } from './components/forms/DateRangePicker/dateRangePresets.js';
|
|
70
70
|
export { DatePicker } from './components/forms/DatePicker/DatePicker.js';
|
|
@@ -205,7 +205,6 @@ export { Timeline } from './components/data-display/Timeline/Timeline.js';
|
|
|
205
205
|
export { Toast } from './components/core/Toast/Toast.js';
|
|
206
206
|
export { ToastProvider, useToastContext } from './components/core/Toast/ToastProvider.js';
|
|
207
207
|
export { Tooltip } from './components/core/Tooltip/Tooltip.js';
|
|
208
|
-
export { TransferList } from './components/forms/TransferList/TransferList.js';
|
|
209
208
|
export { Tree } from './components/core/Tree/Tree.js';
|
|
210
209
|
export { TypeWriter } from './components/core/Message/TypeWriter.js';
|
|
211
210
|
export { XAxis } from './components/charts/shared/ChartAxis/XAxis.js';
|
|
@@ -263,7 +262,6 @@ export { tagTheme } from './components/core/Tag/Tag.theme.js';
|
|
|
263
262
|
export { textareaTheme } from './components/forms/Textarea/Textarea.theme.js';
|
|
264
263
|
export { timePickerTheme } from './components/forms/TimePicker/TimePicker.theme.js';
|
|
265
264
|
export { toastTheme } from './components/core/Toast/Toast.theme.js';
|
|
266
|
-
export { transferListTheme } from './components/forms/TransferList/TransferList.theme.js';
|
|
267
265
|
export { treeTheme } from './components/core/Tree/Tree.theme.js';
|
|
268
266
|
export { useChartAccessibility } from './components/charts/hooks/useChartAccessibility.js';
|
|
269
267
|
export { useChartTheme } from './components/charts/hooks/useChartTheme.js';
|