@gfazioli/mantine-border-animate 0.3.8 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Mantine Border Animate Component
2
2
 
3
- <img alt="Mantine Border Animate" src="https://github.com/gfazioli/mantine-border-animate/blob/master/logo.png" />
3
+ <img alt="Mantine Border Animate" src="https://github.com/gfazioli/mantine-border-animate/blob/master/logo.jpeg" />
4
4
 
5
5
  <div align="center">
6
-
6
+
7
7
  [![NPM version](https://img.shields.io/npm/v/%40gfazioli%2Fmantine-border-animate?style=for-the-badge)](https://www.npmjs.com/package/@gfazioli/mantine-border-animate)
8
8
  [![NPM Downloads](https://img.shields.io/npm/dm/%40gfazioli%2Fmantine-border-animate?style=for-the-badge)](https://www.npmjs.com/package/@gfazioli/mantine-border-animate)
9
9
  [![NPM Downloads](https://img.shields.io/npm/dy/%40gfazioli%2Fmantine-border-animate?style=for-the-badge&label=%20&color=f90)](https://www.npmjs.com/package/@gfazioli/mantine-border-animate)
@@ -11,7 +11,7 @@
11
11
 
12
12
  ---
13
13
 
14
- [<kbd><br/>❤️ If this component has been useful to you or your team, please consider becoming a sponsor<br/></kbd>](https://github.com/sponsors/gfazioli?o=esc)
14
+ [<kbd> <br/> ❤️ If this component has been useful to you or your team, please consider becoming a sponsor <br/> </kbd>](https://github.com/sponsors/gfazioli?o=esc)
15
15
 
16
16
  </div>
17
17
 
@@ -19,11 +19,19 @@
19
19
 
20
20
  This component is created on top of the [Mantine](https://mantine.dev/) library.
21
21
 
22
- [Mantine BorderAnimate](https://gfazioli.github.io/mantine-border-animate) provides a flexible wrapper that turns any Mantine or plain React element into a visually striking component with animated borders. Designed for both aesthetics and performance, it uses CSS animations to deliver smooth 60fps effects and exposes controls to tailor the look and behavior: you can show/hide the border, keep it static or continuously animated, and adjust parameters like size, radius, border width, blur, duration, and color transitions.
22
+ [Mantine BorderAnimate](https://gfazioli.github.io/mantine-border-animate) provides a flexible wrapper that turns any Mantine or plain React element into a visually striking component with animated borders. Designed for both aesthetics and performance, it uses CSS animations to deliver smooth 60fps effects and exposes controls to tailor the look and behavior: you can show/hide the border, keep it static or continuously animated, and adjust parameters like size, radius, border width, blur, duration, and color transitions.
23
+
24
+ The component includes three distinct variants — **beam** (a traveling glow along the perimeter with two rendering modes: path and conic), **glow** (a rhythmic pulsation with tunable blur and opacity), and **pulse** (a subtle expand-and-fade "breathing" effect).
23
25
 
24
- The component includes four distinct variants—beam (a traveling glow along the perimeter with adjustable anchor and duration), gradient (a rotating conic gradient between two colors with optional blur), glow (a rhythmic pulsation with tunable blur and opacity), and pulse (a subtle expand‑and‑fade “breathing” effect).
26
+ Key features include:
25
27
 
26
- Advanced visual setups are supported through masking and layering: withMask clips the effect to the border, while disabling it and using zIndex allows soft background glows behind content; anchor positioning further refines inner vs outer illumination. Integration is straightforward via provided stylesheet imports, and examples demonstrate wrapping common Mantine components like Paper, Stack, Title, and Flex to achieve eye‑catching, controllable borders across a wide range of UI elements.
28
+ - **Two beam rendering modes** `path` (radial-gradient traveling along the border via CSS offset-path, uniform beam size) and `conic` (rotating conic-gradient, smooth rotation with customizable wedge spread)
29
+ - **Custom color stops** — multi-color gradients via `colorStops` for both beam modes
30
+ - **Pause on hover** — `pauseOnHover` prop to pause animations during user interaction
31
+ - **Custom timing functions** — `timingFunction` prop for full control over animation easing
32
+ - **Accessible** — automatically respects `prefers-reduced-motion` to disable animations for users who prefer reduced motion
33
+
34
+ Advanced visual setups are supported through masking and layering: `withMask` clips the effect to the border area, while disabling it and using `zIndex` allows soft background glows behind content. Integration is straightforward via provided stylesheet imports, and examples demonstrate wrapping common Mantine components like Paper, Cards, Buttons, Inputs, and Alerts.
27
35
 
28
36
  > [!note]
29
37
  >
@@ -34,7 +42,7 @@ Advanced visual setups are supported through masking and layering: withMask clip
34
42
  ```sh
35
43
  npm install @gfazioli/mantine-border-animate
36
44
  ```
37
- or
45
+ or
38
46
 
39
47
  ```sh
40
48
  yarn add @gfazioli/mantine-border-animate
@@ -68,16 +76,16 @@ function Demo() {
68
76
 
69
77
  <div align="center">
70
78
 
71
- [<kbd><br/>❤️ If this component has been useful to you or your team, please consider becoming a sponsor<br/></kbd>](https://github.com/sponsors/gfazioli?o=esc)
79
+ [<kbd> <br/> ❤️ If this component has been useful to you or your team, please consider becoming a sponsor <br/> </kbd>](https://github.com/sponsors/gfazioli?o=esc)
72
80
 
73
81
  </div>
74
82
 
75
83
  Your support helps me:
76
84
 
77
- - Keep the project actively maintained with timely bug fixes and security updates
78
- - Add new features, improve performance, and refine the developer experience
79
- - Expand test coverage and documentation for smoother adoption
80
- - Ensure long‑term sustainability without relying on ad hoc free time
85
+ - Keep the project actively maintained with timely bug fixes and security updates
86
+ - Add new features, improve performance, and refine the developer experience
87
+ - Expand test coverage and documentation for smoother adoption
88
+ - Ensure long‑term sustainability without relying on ad hoc free time
81
89
  - Prioritize community requests and roadmap items that matter most
82
90
 
83
91
  Open source thrives when those who benefit can give back—even a small monthly contribution makes a real difference. Sponsorships help cover maintenance time, infrastructure, and the countless invisible tasks that keep a project healthy.
@@ -87,5 +95,5 @@ Your help truly matters.
87
95
  💚 [Become a sponsor](https://github.com/sponsors/gfazioli?o=esc) today and help me keep this project reliable, up‑to‑date, and growing for everyone.
88
96
 
89
97
  ---
90
-
98
+
91
99
  [![Star History Chart](https://api.star-history.com/svg?repos=gfazioli/mantine-border-animate&type=Timeline)](https://www.star-history.com/#gfazioli/mantine-border-animate&Timeline)
@@ -5,8 +5,16 @@ var React = require('react');
5
5
  var core = require('@mantine/core');
6
6
  var BorderAnimate_module = require('./BorderAnimate.module.css.cjs');
7
7
 
8
+ function getBeamSpread(size) {
9
+ if (typeof size === "number") {
10
+ return size;
11
+ }
12
+ const map = { xs: 5, sm: 10, md: 20, lg: 35, xl: 50 };
13
+ return map[size] ?? 10;
14
+ }
8
15
  const defaultProps = {
9
16
  variant: "beam",
17
+ beamMode: "path",
10
18
  duration: 5,
11
19
  borderWidth: "xs",
12
20
  radius: "md",
@@ -18,10 +26,11 @@ const defaultProps = {
18
26
  delay: 0,
19
27
  withMask: true,
20
28
  zIndex: 1,
21
- anchor: 0,
22
29
  show: true,
23
30
  animate: true,
24
- angle: 0
31
+ angle: 0,
32
+ borderOpacity: 1,
33
+ pauseOnHover: false
25
34
  };
26
35
  const varsResolver = core.createVarsResolver(
27
36
  (theme, {
@@ -30,15 +39,43 @@ const varsResolver = core.createVarsResolver(
30
39
  borderWidth,
31
40
  colorFrom,
32
41
  colorTo,
42
+ colorStops,
33
43
  size,
34
44
  delay,
35
45
  blur,
36
- opacity,
46
+ borderOpacity,
37
47
  zIndex,
38
48
  radius,
39
- anchor,
40
- angle
49
+ angle,
50
+ variant,
51
+ timingFunction,
52
+ beamMode
41
53
  }) => {
54
+ let gradientBackground;
55
+ let beamStart;
56
+ let beamFrom;
57
+ let beamTo;
58
+ let beamEnd;
59
+ let beamSize;
60
+ if (variant === "beam") {
61
+ if (beamMode === "path") {
62
+ beamSize = core.getSize(size, "border-animate-size");
63
+ if (colorStops && colorStops.length > 0) {
64
+ const stops = colorStops.map((s) => `${core.getThemeColor(s.color, theme)} ${s.position}%`).join(", ");
65
+ gradientBackground = `radial-gradient(ellipse at center, ${stops})`;
66
+ }
67
+ } else if (colorStops && colorStops.length > 0) {
68
+ const stops = colorStops.map((s) => `${core.getThemeColor(s.color, theme)} ${s.position}%`).join(", ");
69
+ gradientBackground = `conic-gradient(from 0deg, ${stops})`;
70
+ } else {
71
+ const spread = getBeamSpread(size);
72
+ const half = spread / 2;
73
+ beamStart = `${50 - half}%`;
74
+ beamFrom = `${50 - half / 2}%`;
75
+ beamTo = `${50 + half / 2}%`;
76
+ beamEnd = `${50 + half}%`;
77
+ }
78
+ }
42
79
  return {
43
80
  root: {
44
81
  "--border-animate-radius": radius === void 0 ? void 0 : core.getRadius(radius)
@@ -48,14 +85,19 @@ const varsResolver = core.createVarsResolver(
48
85
  "--border-animate-duration": `${duration}s`,
49
86
  "--border-animate-direction": reverse ? "reverse" : "normal",
50
87
  "--border-animate-width": core.getSize(borderWidth, "border-animate-width"),
51
- "--border-animate-size": core.getSize(size, "border-animate-size"),
52
88
  "--border-animate-color-from": core.getThemeColor(colorFrom, theme),
53
89
  "--border-animate-color-to": core.getThemeColor(colorTo, theme),
54
90
  "--border-animate-delay": `-${delay}s`,
55
91
  "--border-animate-blur": core.getSize(blur, "border-animate-blur"),
56
- "--border-animate-opacity": `${opacity ?? 1}`,
57
- "--border-animate-anchor": `${anchor ?? 0}`,
58
- "--border-animate-static-angle": `${angle ?? 0}`
92
+ "--border-animate-opacity": `${borderOpacity ?? 1}`,
93
+ "--border-animate-static-angle": `${angle ?? 0}`,
94
+ "--border-animate-gradient-background": gradientBackground,
95
+ "--border-animate-beam-start": beamStart,
96
+ "--border-animate-beam-from": beamFrom,
97
+ "--border-animate-beam-to": beamTo,
98
+ "--border-animate-beam-end": beamEnd,
99
+ "--border-animate-size": beamSize,
100
+ "--border-animate-timing": timingFunction
59
101
  }
60
102
  };
61
103
  }
@@ -65,22 +107,25 @@ const BorderAnimate = core.factory((_props, ref) => {
65
107
  const {
66
108
  children,
67
109
  variant,
110
+ beamMode,
68
111
  duration,
69
112
  borderWidth,
70
113
  colorFrom,
71
114
  colorTo,
115
+ colorStops,
72
116
  size,
73
117
  radius,
74
118
  reverse,
75
119
  blur,
76
120
  delay,
77
121
  withMask,
78
- opacity,
122
+ borderOpacity,
79
123
  zIndex,
80
- anchor,
81
124
  show,
82
125
  animate,
83
126
  angle,
127
+ timingFunction,
128
+ pauseOnHover,
84
129
  classNames,
85
130
  style,
86
131
  styles,
@@ -101,15 +146,27 @@ const BorderAnimate = core.factory((_props, ref) => {
101
146
  vars,
102
147
  varsResolver
103
148
  });
104
- return /* @__PURE__ */ React.createElement(core.Box, { ref, ...getStyles("root"), ...others }, show && /* @__PURE__ */ React.createElement(
149
+ return /* @__PURE__ */ React.createElement(
105
150
  core.Box,
106
151
  {
107
- ...getStyles("border", { variant }),
108
- variant,
109
- "data-with-mask": withMask,
110
- "data-animate": animate
111
- }
112
- ), children);
152
+ ref,
153
+ ...getStyles("root"),
154
+ "data-pause-on-hover": pauseOnHover || void 0,
155
+ ...others
156
+ },
157
+ show && /* @__PURE__ */ React.createElement(
158
+ core.Box,
159
+ {
160
+ ...getStyles("border", { variant }),
161
+ variant,
162
+ "data-with-mask": withMask,
163
+ "data-animate": animate,
164
+ "data-beam-mode": variant === "beam" ? beamMode ?? "path" : void 0,
165
+ "data-color-stops": variant === "beam" && beamMode !== "path" && colorStops && colorStops.length > 0 ? true : void 0
166
+ }
167
+ ),
168
+ children
169
+ );
113
170
  });
114
171
  BorderAnimate.classes = BorderAnimate_module;
115
172
  BorderAnimate.displayName = "BorderAnimate";
@@ -1 +1 @@
1
- {"version":3,"file":"BorderAnimate.cjs","sources":["../../src/BorderAnimate.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n createVarsResolver,\n Factory,\n factory,\n getRadius,\n getSize,\n getThemeColor,\n StylesApiProps,\n useProps,\n useStyles,\n type BoxProps,\n type MantineColor,\n type MantineRadius,\n type MantineSize,\n} from '@mantine/core';\nimport classes from './BorderAnimate.module.css';\n\n/** Available border animation variants */\nexport type BorderAnimateVariant = 'beam' | 'glow' | 'gradient' | 'pulse';\n\nexport type BorderAnimateStylesNames = 'root' | 'border';\n\nexport type BorderAnimateCssVariables = {\n root: '--border-animate-radius';\n border:\n | '--border-animate-z-index'\n | '--border-animate-duration'\n | '--border-animate-direction'\n | '--border-animate-width'\n | '--border-animate-size'\n | '--border-animate-color-from'\n | '--border-animate-color-to'\n | '--border-animate-delay'\n | '--border-animate-blur'\n | '--border-animate-opacity'\n | '--border-animate-anchor'\n | '--border-animate-static-angle';\n};\n\nexport interface BorderAnimateBaseProps {\n children?: React.ReactNode;\n\n /** Animation variant type\n * @default 'beam'\n */\n variant?: BorderAnimateVariant;\n\n /** Animation duration in seconds\n * @default 5\n */\n duration?: number;\n\n /** Border width\n * @default 'xs'\n */\n borderWidth?: MantineSize | (string & {}) | number;\n\n /** Starting color of the gradient\n * @default 'yellow.6'\n */\n colorFrom?: MantineColor;\n\n /** Ending color of the gradient\n * @default 'violet.6'\n */\n colorTo?: MantineColor;\n\n /** Size of the beam/glow (only for beam effect)\n * @default 'sm'\n */\n size?: MantineSize | (string & {}) | number;\n\n /** Border radius\n * @default 'md'\n */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Reverse the animation direction\n * @default false\n */\n reverse?: boolean;\n\n /** Blur amount for the effect\n * @default 'xs'\n */\n blur?: MantineSize | (string & {}) | number;\n\n /** Animation delay in seconds\n * @default 0\n */\n delay?: number;\n\n /** Show/hide the mask that clips the effect to the border\n * @default true\n */\n withMask?: boolean;\n\n /** z-index of the border element\n * @default 1\n */\n zIndex?: number;\n\n /** Controls how far inward the beam follows the border path (in pixels).\n * 0 = follows the outer edge, positive values move the path inward.\n * @default 0\n */\n anchor?: number;\n\n /** Show/hide the animated border\n * @default true\n */\n show?: boolean;\n\n /** Enable/disable the animation\n * @default true\n */\n animate?: boolean;\n\n /** Initial angle/position when animate is false (0-360 degrees).\n * For beam variant: controls the position along the border path.\n * For gradient/glow/pulse variants: controls the gradient angle.\n * @default 0\n */\n angle?: number;\n}\n\nexport interface BorderAnimateProps\n extends BoxProps, BorderAnimateBaseProps, Omit<StylesApiProps<BorderAnimateFactory>, 'variant'> {}\n\nexport type BorderAnimateFactory = Factory<{\n props: BorderAnimateProps;\n ref: HTMLDivElement;\n stylesNames: BorderAnimateStylesNames;\n variant: BorderAnimateVariant;\n vars: BorderAnimateCssVariables;\n}>;\n\nexport const defaultProps: Partial<BorderAnimateProps> = {\n variant: 'beam',\n duration: 5,\n borderWidth: 'xs',\n radius: 'md',\n size: 'sm',\n blur: 'xs',\n colorFrom: 'yellow.6',\n colorTo: 'violet.6',\n reverse: false,\n delay: 0,\n withMask: true,\n zIndex: 1,\n anchor: 0,\n show: true,\n animate: true,\n angle: 0,\n};\n\nconst varsResolver = createVarsResolver<BorderAnimateFactory>(\n (\n theme,\n {\n duration,\n reverse,\n borderWidth,\n colorFrom,\n colorTo,\n size,\n delay,\n blur,\n opacity,\n zIndex,\n radius,\n anchor,\n angle,\n }\n ) => {\n return {\n root: {\n '--border-animate-radius': radius === undefined ? undefined : getRadius(radius),\n },\n border: {\n '--border-animate-z-index': `${zIndex}`,\n '--border-animate-duration': `${duration}s`,\n '--border-animate-direction': reverse ? 'reverse' : 'normal',\n '--border-animate-width': getSize(borderWidth, 'border-animate-width'),\n '--border-animate-size': getSize(size, 'border-animate-size'),\n '--border-animate-color-from': getThemeColor(colorFrom, theme),\n '--border-animate-color-to': getThemeColor(colorTo, theme),\n '--border-animate-delay': `-${delay}s`,\n '--border-animate-blur': getSize(blur, 'border-animate-blur'),\n '--border-animate-opacity': `${opacity ?? 1}`,\n '--border-animate-anchor': `${anchor ?? 0}`,\n '--border-animate-static-angle': `${angle ?? 0}`,\n },\n };\n }\n);\n\nexport const BorderAnimate = factory<BorderAnimateFactory>((_props, ref) => {\n const props = useProps('BorderAnimate', defaultProps, _props);\n\n const {\n children,\n variant,\n duration,\n borderWidth,\n colorFrom,\n colorTo,\n size,\n radius,\n reverse,\n blur,\n delay,\n withMask,\n opacity,\n zIndex,\n anchor,\n show,\n animate,\n angle,\n\n classNames,\n style,\n styles,\n unstyled,\n vars,\n className,\n\n ...others\n } = props;\n\n const getStyles = useStyles<BorderAnimateFactory>({\n name: 'BorderAnimate',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n return (\n <Box ref={ref} {...getStyles('root')} {...others}>\n {show && (\n <Box\n {...getStyles('border', { variant })}\n variant={variant}\n data-with-mask={withMask}\n data-animate={animate}\n />\n )}\n {children}\n </Box>\n );\n});\n\nBorderAnimate.classes = classes;\nBorderAnimate.displayName = 'BorderAnimate';\n"],"names":["createVarsResolver","getRadius","getSize","getThemeColor","factory","useProps","useStyles","classes","Box"],"mappings":"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"}
1
+ {"version":3,"file":"BorderAnimate.cjs","sources":["../../src/BorderAnimate.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n createVarsResolver,\n Factory,\n factory,\n getRadius,\n getSize,\n getThemeColor,\n StylesApiProps,\n useProps,\n useStyles,\n type BoxProps,\n type MantineColor,\n type MantineRadius,\n type MantineSize,\n} from '@mantine/core';\nimport classes from './BorderAnimate.module.css';\n\n/** Available border animation variants */\nexport type BorderAnimateVariant = 'beam' | 'glow' | 'pulse';\n\n/** Beam rendering mode */\nexport type BorderAnimateBeamMode = 'conic' | 'path';\n\n/** A single color stop for multi-color beam gradients */\nexport interface BorderAnimateColorStop {\n /** Color value (any MantineColor, e.g. 'red.5', '#ff0000', 'rgba(...)') */\n color: MantineColor;\n /** Position along the gradient in percentage (0-100) */\n position: number;\n}\n\nexport type BorderAnimateStylesNames = 'root' | 'border';\n\nexport type BorderAnimateCssVariables = {\n root: '--border-animate-radius';\n border:\n | '--border-animate-z-index'\n | '--border-animate-duration'\n | '--border-animate-direction'\n | '--border-animate-width'\n | '--border-animate-color-from'\n | '--border-animate-color-to'\n | '--border-animate-delay'\n | '--border-animate-blur'\n | '--border-animate-opacity'\n | '--border-animate-static-angle'\n | '--border-animate-gradient-background'\n | '--border-animate-beam-start'\n | '--border-animate-beam-from'\n | '--border-animate-beam-to'\n | '--border-animate-beam-end'\n | '--border-animate-size'\n | '--border-animate-timing';\n};\n\n/** Map MantineSize to angular spread percentage for conic beam wedge */\nfunction getBeamSpread(size: MantineSize | (string & {}) | number | undefined): number {\n if (typeof size === 'number') {\n return size;\n }\n\n const map: Record<string, number> = { xs: 5, sm: 10, md: 20, lg: 35, xl: 50 };\n return map[size as string] ?? 10;\n}\n\nexport interface BorderAnimateBaseProps {\n children?: React.ReactNode;\n\n /** Animation variant type\n * @default 'beam'\n */\n variant?: BorderAnimateVariant;\n\n /** Beam rendering mode (beam variant only).\n * - `conic`: rotating conic-gradient — smooth rotation, beam width varies on rectangles\n * - `path`: radial-gradient traveling along the border via offset-path — constant speed\n * along the perimeter, uniform beam size\n * @default 'path'\n */\n beamMode?: BorderAnimateBeamMode;\n\n /** Animation duration in seconds\n * @default 5\n */\n duration?: number;\n\n /** Border width\n * @default 'xs'\n */\n borderWidth?: MantineSize | (string & {}) | number;\n\n /** Starting color of the beam wedge or glow/pulse gradient.\n * Used when colorStops is not provided.\n * @default 'yellow.6'\n */\n colorFrom?: MantineColor;\n\n /** Ending color of the beam wedge or glow/pulse gradient.\n * Used when colorStops is not provided.\n * @default 'violet.6'\n */\n colorTo?: MantineColor;\n\n /** Color stops for the beam conic-gradient. When provided, overrides\n * colorFrom/colorTo and gives full control over the rotating gradient.\n * Each stop has a color (any MantineColor) and a position (0-100).\n * Stops should be provided in ascending position order.\n */\n colorStops?: BorderAnimateColorStop[];\n\n /** Beam size.\n * - For beamMode=\"conic\": angular spread of the wedge (xs=18°..xl=180° or number 0-50)\n * - For beamMode=\"path\": pixel size of the traveling circle (xs..xl or number)\n * @default 'sm'\n */\n size?: MantineSize | (string & {}) | number;\n\n /** Border radius\n * @default 'md'\n */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Reverse the animation direction\n * @default false\n */\n reverse?: boolean;\n\n /** Blur amount for the effect\n * @default 'xs'\n */\n blur?: MantineSize | (string & {}) | number;\n\n /** Animation delay in seconds.\n * A positive value makes the animation start as if it had already been\n * running for that many seconds (useful for staggering multiple borders).\n * @default 0\n */\n delay?: number;\n\n /** Show/hide the mask that clips the effect to the border\n * @default true\n */\n withMask?: boolean;\n\n /** z-index of the border element\n * @default 1\n */\n zIndex?: number;\n\n /** Show/hide the animated border\n * @default true\n */\n show?: boolean;\n\n /** Enable/disable the animation\n * @default true\n */\n animate?: boolean;\n\n /** Initial angle when animate is false (0-360 degrees).\n * Controls the rotation angle or position along the border path.\n * @default 0\n */\n angle?: number;\n\n /** Opacity of the animated border effect (0 to 1).\n * This controls the border effect opacity, not the component opacity.\n * @default 1\n */\n borderOpacity?: number;\n\n /** CSS animation timing function.\n * @default 'linear' for beam, 'ease-in-out' for glow/pulse\n */\n timingFunction?: string;\n\n /** Pause the animation when the user hovers over the component.\n * @default false\n */\n pauseOnHover?: boolean;\n}\n\nexport interface BorderAnimateProps\n extends BoxProps, BorderAnimateBaseProps, Omit<StylesApiProps<BorderAnimateFactory>, 'variant'> {}\n\nexport type BorderAnimateFactory = Factory<{\n props: BorderAnimateProps;\n ref: HTMLDivElement;\n stylesNames: BorderAnimateStylesNames;\n variant: BorderAnimateVariant;\n vars: BorderAnimateCssVariables;\n}>;\n\nexport const defaultProps: Partial<BorderAnimateProps> = {\n variant: 'beam',\n beamMode: 'path',\n duration: 5,\n borderWidth: 'xs',\n radius: 'md',\n size: 'sm',\n blur: 'xs',\n colorFrom: 'yellow.6',\n colorTo: 'violet.6',\n reverse: false,\n delay: 0,\n withMask: true,\n zIndex: 1,\n show: true,\n animate: true,\n angle: 0,\n borderOpacity: 1,\n pauseOnHover: false,\n};\n\nconst varsResolver = createVarsResolver<BorderAnimateFactory>(\n (\n theme,\n {\n duration,\n reverse,\n borderWidth,\n colorFrom,\n colorTo,\n colorStops,\n size,\n delay,\n blur,\n borderOpacity,\n zIndex,\n radius,\n angle,\n variant,\n timingFunction,\n beamMode,\n }\n ) => {\n let gradientBackground: string | undefined;\n let beamStart: string | undefined;\n let beamFrom: string | undefined;\n let beamTo: string | undefined;\n let beamEnd: string | undefined;\n let beamSize: string | undefined;\n\n if (variant === 'beam') {\n if (beamMode === 'path') {\n // Path mode: size is pixel-based for the traveling circle\n beamSize = getSize(size, 'border-animate-size');\n\n if (colorStops && colorStops.length > 0) {\n // Path mode with colorStops: radial-gradient with custom stops\n const stops = colorStops\n .map((s) => `${getThemeColor(s.color, theme)} ${s.position}%`)\n .join(', ');\n gradientBackground = `radial-gradient(ellipse at center, ${stops})`;\n }\n } else if (colorStops && colorStops.length > 0) {\n // Conic mode with colorStops: full gradient generated in JS\n const stops = colorStops\n .map((s) => `${getThemeColor(s.color, theme)} ${s.position}%`)\n .join(', ');\n gradientBackground = `conic-gradient(from 0deg, ${stops})`;\n } else {\n // Conic mode default: wedge positions for CSS-built gradient\n const spread = getBeamSpread(size);\n const half = spread / 2;\n beamStart = `${50 - half}%`;\n beamFrom = `${50 - half / 2}%`;\n beamTo = `${50 + half / 2}%`;\n beamEnd = `${50 + half}%`;\n }\n }\n\n return {\n root: {\n '--border-animate-radius': radius === undefined ? undefined : getRadius(radius),\n },\n border: {\n '--border-animate-z-index': `${zIndex}`,\n '--border-animate-duration': `${duration}s`,\n '--border-animate-direction': reverse ? 'reverse' : 'normal',\n '--border-animate-width': getSize(borderWidth, 'border-animate-width'),\n '--border-animate-color-from': getThemeColor(colorFrom, theme),\n '--border-animate-color-to': getThemeColor(colorTo, theme),\n '--border-animate-delay': `-${delay}s`,\n '--border-animate-blur': getSize(blur, 'border-animate-blur'),\n '--border-animate-opacity': `${borderOpacity ?? 1}`,\n '--border-animate-static-angle': `${angle ?? 0}`,\n '--border-animate-gradient-background': gradientBackground,\n '--border-animate-beam-start': beamStart,\n '--border-animate-beam-from': beamFrom,\n '--border-animate-beam-to': beamTo,\n '--border-animate-beam-end': beamEnd,\n '--border-animate-size': beamSize,\n '--border-animate-timing': timingFunction,\n },\n };\n }\n);\n\nexport const BorderAnimate = factory<BorderAnimateFactory>((_props, ref) => {\n const props = useProps('BorderAnimate', defaultProps, _props);\n\n const {\n children,\n variant,\n beamMode,\n duration,\n borderWidth,\n colorFrom,\n colorTo,\n colorStops,\n size,\n radius,\n reverse,\n blur,\n delay,\n withMask,\n borderOpacity,\n zIndex,\n show,\n animate,\n angle,\n timingFunction,\n pauseOnHover,\n\n classNames,\n style,\n styles,\n unstyled,\n vars,\n className,\n\n ...others\n } = props;\n\n const getStyles = useStyles<BorderAnimateFactory>({\n name: 'BorderAnimate',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n return (\n <Box\n ref={ref}\n {...getStyles('root')}\n data-pause-on-hover={pauseOnHover || undefined}\n {...others}\n >\n {show && (\n <Box\n {...getStyles('border', { variant })}\n variant={variant}\n data-with-mask={withMask}\n data-animate={animate}\n data-beam-mode={variant === 'beam' ? (beamMode ?? 'path') : undefined}\n data-color-stops={\n variant === 'beam' && beamMode !== 'path' && colorStops && colorStops.length > 0\n ? true\n : undefined\n }\n />\n )}\n {children}\n </Box>\n );\n});\n\nBorderAnimate.classes = classes;\nBorderAnimate.displayName = 'BorderAnimate';\n"],"names":["createVarsResolver","getSize","getThemeColor","getRadius","factory","useProps","useStyles","classes","Box"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var classes = {"root":"me_4c17b6ba","border":"me_89b89404","border-animate-beam":"me_e9d4de44","border-animate-gradient":"me_d2bd6f45","border-animate-glow":"me_e9d74022","border-animate-pulse":"me_5193a3a4"};
4
+ var classes = {"root":"me_4c17b6ba","border":"me_89b89404","border-animate-beam-conic":"me_41cf6553","border-animate-beam-rotate":"me_11b89504","border-animate-beam-path":"me_653df20e","border-animate-glow":"me_e9d74022","border-animate-pulse":"me_5193a3a4"};
5
5
 
6
6
  module.exports = classes;
7
7
  //# sourceMappingURL=BorderAnimate.module.css.cjs.map
@@ -3,8 +3,16 @@ import React from 'react';
3
3
  import { createVarsResolver, getSize, getThemeColor, getRadius, factory, useProps, useStyles, Box } from '@mantine/core';
4
4
  import classes from './BorderAnimate.module.css.mjs';
5
5
 
6
+ function getBeamSpread(size) {
7
+ if (typeof size === "number") {
8
+ return size;
9
+ }
10
+ const map = { xs: 5, sm: 10, md: 20, lg: 35, xl: 50 };
11
+ return map[size] ?? 10;
12
+ }
6
13
  const defaultProps = {
7
14
  variant: "beam",
15
+ beamMode: "path",
8
16
  duration: 5,
9
17
  borderWidth: "xs",
10
18
  radius: "md",
@@ -16,10 +24,11 @@ const defaultProps = {
16
24
  delay: 0,
17
25
  withMask: true,
18
26
  zIndex: 1,
19
- anchor: 0,
20
27
  show: true,
21
28
  animate: true,
22
- angle: 0
29
+ angle: 0,
30
+ borderOpacity: 1,
31
+ pauseOnHover: false
23
32
  };
24
33
  const varsResolver = createVarsResolver(
25
34
  (theme, {
@@ -28,15 +37,43 @@ const varsResolver = createVarsResolver(
28
37
  borderWidth,
29
38
  colorFrom,
30
39
  colorTo,
40
+ colorStops,
31
41
  size,
32
42
  delay,
33
43
  blur,
34
- opacity,
44
+ borderOpacity,
35
45
  zIndex,
36
46
  radius,
37
- anchor,
38
- angle
47
+ angle,
48
+ variant,
49
+ timingFunction,
50
+ beamMode
39
51
  }) => {
52
+ let gradientBackground;
53
+ let beamStart;
54
+ let beamFrom;
55
+ let beamTo;
56
+ let beamEnd;
57
+ let beamSize;
58
+ if (variant === "beam") {
59
+ if (beamMode === "path") {
60
+ beamSize = getSize(size, "border-animate-size");
61
+ if (colorStops && colorStops.length > 0) {
62
+ const stops = colorStops.map((s) => `${getThemeColor(s.color, theme)} ${s.position}%`).join(", ");
63
+ gradientBackground = `radial-gradient(ellipse at center, ${stops})`;
64
+ }
65
+ } else if (colorStops && colorStops.length > 0) {
66
+ const stops = colorStops.map((s) => `${getThemeColor(s.color, theme)} ${s.position}%`).join(", ");
67
+ gradientBackground = `conic-gradient(from 0deg, ${stops})`;
68
+ } else {
69
+ const spread = getBeamSpread(size);
70
+ const half = spread / 2;
71
+ beamStart = `${50 - half}%`;
72
+ beamFrom = `${50 - half / 2}%`;
73
+ beamTo = `${50 + half / 2}%`;
74
+ beamEnd = `${50 + half}%`;
75
+ }
76
+ }
40
77
  return {
41
78
  root: {
42
79
  "--border-animate-radius": radius === void 0 ? void 0 : getRadius(radius)
@@ -46,14 +83,19 @@ const varsResolver = createVarsResolver(
46
83
  "--border-animate-duration": `${duration}s`,
47
84
  "--border-animate-direction": reverse ? "reverse" : "normal",
48
85
  "--border-animate-width": getSize(borderWidth, "border-animate-width"),
49
- "--border-animate-size": getSize(size, "border-animate-size"),
50
86
  "--border-animate-color-from": getThemeColor(colorFrom, theme),
51
87
  "--border-animate-color-to": getThemeColor(colorTo, theme),
52
88
  "--border-animate-delay": `-${delay}s`,
53
89
  "--border-animate-blur": getSize(blur, "border-animate-blur"),
54
- "--border-animate-opacity": `${opacity ?? 1}`,
55
- "--border-animate-anchor": `${anchor ?? 0}`,
56
- "--border-animate-static-angle": `${angle ?? 0}`
90
+ "--border-animate-opacity": `${borderOpacity ?? 1}`,
91
+ "--border-animate-static-angle": `${angle ?? 0}`,
92
+ "--border-animate-gradient-background": gradientBackground,
93
+ "--border-animate-beam-start": beamStart,
94
+ "--border-animate-beam-from": beamFrom,
95
+ "--border-animate-beam-to": beamTo,
96
+ "--border-animate-beam-end": beamEnd,
97
+ "--border-animate-size": beamSize,
98
+ "--border-animate-timing": timingFunction
57
99
  }
58
100
  };
59
101
  }
@@ -63,22 +105,25 @@ const BorderAnimate = factory((_props, ref) => {
63
105
  const {
64
106
  children,
65
107
  variant,
108
+ beamMode,
66
109
  duration,
67
110
  borderWidth,
68
111
  colorFrom,
69
112
  colorTo,
113
+ colorStops,
70
114
  size,
71
115
  radius,
72
116
  reverse,
73
117
  blur,
74
118
  delay,
75
119
  withMask,
76
- opacity,
120
+ borderOpacity,
77
121
  zIndex,
78
- anchor,
79
122
  show,
80
123
  animate,
81
124
  angle,
125
+ timingFunction,
126
+ pauseOnHover,
82
127
  classNames,
83
128
  style,
84
129
  styles,
@@ -99,15 +144,27 @@ const BorderAnimate = factory((_props, ref) => {
99
144
  vars,
100
145
  varsResolver
101
146
  });
102
- return /* @__PURE__ */ React.createElement(Box, { ref, ...getStyles("root"), ...others }, show && /* @__PURE__ */ React.createElement(
147
+ return /* @__PURE__ */ React.createElement(
103
148
  Box,
104
149
  {
105
- ...getStyles("border", { variant }),
106
- variant,
107
- "data-with-mask": withMask,
108
- "data-animate": animate
109
- }
110
- ), children);
150
+ ref,
151
+ ...getStyles("root"),
152
+ "data-pause-on-hover": pauseOnHover || void 0,
153
+ ...others
154
+ },
155
+ show && /* @__PURE__ */ React.createElement(
156
+ Box,
157
+ {
158
+ ...getStyles("border", { variant }),
159
+ variant,
160
+ "data-with-mask": withMask,
161
+ "data-animate": animate,
162
+ "data-beam-mode": variant === "beam" ? beamMode ?? "path" : void 0,
163
+ "data-color-stops": variant === "beam" && beamMode !== "path" && colorStops && colorStops.length > 0 ? true : void 0
164
+ }
165
+ ),
166
+ children
167
+ );
111
168
  });
112
169
  BorderAnimate.classes = classes;
113
170
  BorderAnimate.displayName = "BorderAnimate";
@@ -1 +1 @@
1
- {"version":3,"file":"BorderAnimate.mjs","sources":["../../src/BorderAnimate.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n createVarsResolver,\n Factory,\n factory,\n getRadius,\n getSize,\n getThemeColor,\n StylesApiProps,\n useProps,\n useStyles,\n type BoxProps,\n type MantineColor,\n type MantineRadius,\n type MantineSize,\n} from '@mantine/core';\nimport classes from './BorderAnimate.module.css';\n\n/** Available border animation variants */\nexport type BorderAnimateVariant = 'beam' | 'glow' | 'gradient' | 'pulse';\n\nexport type BorderAnimateStylesNames = 'root' | 'border';\n\nexport type BorderAnimateCssVariables = {\n root: '--border-animate-radius';\n border:\n | '--border-animate-z-index'\n | '--border-animate-duration'\n | '--border-animate-direction'\n | '--border-animate-width'\n | '--border-animate-size'\n | '--border-animate-color-from'\n | '--border-animate-color-to'\n | '--border-animate-delay'\n | '--border-animate-blur'\n | '--border-animate-opacity'\n | '--border-animate-anchor'\n | '--border-animate-static-angle';\n};\n\nexport interface BorderAnimateBaseProps {\n children?: React.ReactNode;\n\n /** Animation variant type\n * @default 'beam'\n */\n variant?: BorderAnimateVariant;\n\n /** Animation duration in seconds\n * @default 5\n */\n duration?: number;\n\n /** Border width\n * @default 'xs'\n */\n borderWidth?: MantineSize | (string & {}) | number;\n\n /** Starting color of the gradient\n * @default 'yellow.6'\n */\n colorFrom?: MantineColor;\n\n /** Ending color of the gradient\n * @default 'violet.6'\n */\n colorTo?: MantineColor;\n\n /** Size of the beam/glow (only for beam effect)\n * @default 'sm'\n */\n size?: MantineSize | (string & {}) | number;\n\n /** Border radius\n * @default 'md'\n */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Reverse the animation direction\n * @default false\n */\n reverse?: boolean;\n\n /** Blur amount for the effect\n * @default 'xs'\n */\n blur?: MantineSize | (string & {}) | number;\n\n /** Animation delay in seconds\n * @default 0\n */\n delay?: number;\n\n /** Show/hide the mask that clips the effect to the border\n * @default true\n */\n withMask?: boolean;\n\n /** z-index of the border element\n * @default 1\n */\n zIndex?: number;\n\n /** Controls how far inward the beam follows the border path (in pixels).\n * 0 = follows the outer edge, positive values move the path inward.\n * @default 0\n */\n anchor?: number;\n\n /** Show/hide the animated border\n * @default true\n */\n show?: boolean;\n\n /** Enable/disable the animation\n * @default true\n */\n animate?: boolean;\n\n /** Initial angle/position when animate is false (0-360 degrees).\n * For beam variant: controls the position along the border path.\n * For gradient/glow/pulse variants: controls the gradient angle.\n * @default 0\n */\n angle?: number;\n}\n\nexport interface BorderAnimateProps\n extends BoxProps, BorderAnimateBaseProps, Omit<StylesApiProps<BorderAnimateFactory>, 'variant'> {}\n\nexport type BorderAnimateFactory = Factory<{\n props: BorderAnimateProps;\n ref: HTMLDivElement;\n stylesNames: BorderAnimateStylesNames;\n variant: BorderAnimateVariant;\n vars: BorderAnimateCssVariables;\n}>;\n\nexport const defaultProps: Partial<BorderAnimateProps> = {\n variant: 'beam',\n duration: 5,\n borderWidth: 'xs',\n radius: 'md',\n size: 'sm',\n blur: 'xs',\n colorFrom: 'yellow.6',\n colorTo: 'violet.6',\n reverse: false,\n delay: 0,\n withMask: true,\n zIndex: 1,\n anchor: 0,\n show: true,\n animate: true,\n angle: 0,\n};\n\nconst varsResolver = createVarsResolver<BorderAnimateFactory>(\n (\n theme,\n {\n duration,\n reverse,\n borderWidth,\n colorFrom,\n colorTo,\n size,\n delay,\n blur,\n opacity,\n zIndex,\n radius,\n anchor,\n angle,\n }\n ) => {\n return {\n root: {\n '--border-animate-radius': radius === undefined ? undefined : getRadius(radius),\n },\n border: {\n '--border-animate-z-index': `${zIndex}`,\n '--border-animate-duration': `${duration}s`,\n '--border-animate-direction': reverse ? 'reverse' : 'normal',\n '--border-animate-width': getSize(borderWidth, 'border-animate-width'),\n '--border-animate-size': getSize(size, 'border-animate-size'),\n '--border-animate-color-from': getThemeColor(colorFrom, theme),\n '--border-animate-color-to': getThemeColor(colorTo, theme),\n '--border-animate-delay': `-${delay}s`,\n '--border-animate-blur': getSize(blur, 'border-animate-blur'),\n '--border-animate-opacity': `${opacity ?? 1}`,\n '--border-animate-anchor': `${anchor ?? 0}`,\n '--border-animate-static-angle': `${angle ?? 0}`,\n },\n };\n }\n);\n\nexport const BorderAnimate = factory<BorderAnimateFactory>((_props, ref) => {\n const props = useProps('BorderAnimate', defaultProps, _props);\n\n const {\n children,\n variant,\n duration,\n borderWidth,\n colorFrom,\n colorTo,\n size,\n radius,\n reverse,\n blur,\n delay,\n withMask,\n opacity,\n zIndex,\n anchor,\n show,\n animate,\n angle,\n\n classNames,\n style,\n styles,\n unstyled,\n vars,\n className,\n\n ...others\n } = props;\n\n const getStyles = useStyles<BorderAnimateFactory>({\n name: 'BorderAnimate',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n return (\n <Box ref={ref} {...getStyles('root')} {...others}>\n {show && (\n <Box\n {...getStyles('border', { variant })}\n variant={variant}\n data-with-mask={withMask}\n data-animate={animate}\n />\n )}\n {children}\n </Box>\n );\n});\n\nBorderAnimate.classes = classes;\nBorderAnimate.displayName = 'BorderAnimate';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BorderAnimate.mjs","sources":["../../src/BorderAnimate.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n createVarsResolver,\n Factory,\n factory,\n getRadius,\n getSize,\n getThemeColor,\n StylesApiProps,\n useProps,\n useStyles,\n type BoxProps,\n type MantineColor,\n type MantineRadius,\n type MantineSize,\n} from '@mantine/core';\nimport classes from './BorderAnimate.module.css';\n\n/** Available border animation variants */\nexport type BorderAnimateVariant = 'beam' | 'glow' | 'pulse';\n\n/** Beam rendering mode */\nexport type BorderAnimateBeamMode = 'conic' | 'path';\n\n/** A single color stop for multi-color beam gradients */\nexport interface BorderAnimateColorStop {\n /** Color value (any MantineColor, e.g. 'red.5', '#ff0000', 'rgba(...)') */\n color: MantineColor;\n /** Position along the gradient in percentage (0-100) */\n position: number;\n}\n\nexport type BorderAnimateStylesNames = 'root' | 'border';\n\nexport type BorderAnimateCssVariables = {\n root: '--border-animate-radius';\n border:\n | '--border-animate-z-index'\n | '--border-animate-duration'\n | '--border-animate-direction'\n | '--border-animate-width'\n | '--border-animate-color-from'\n | '--border-animate-color-to'\n | '--border-animate-delay'\n | '--border-animate-blur'\n | '--border-animate-opacity'\n | '--border-animate-static-angle'\n | '--border-animate-gradient-background'\n | '--border-animate-beam-start'\n | '--border-animate-beam-from'\n | '--border-animate-beam-to'\n | '--border-animate-beam-end'\n | '--border-animate-size'\n | '--border-animate-timing';\n};\n\n/** Map MantineSize to angular spread percentage for conic beam wedge */\nfunction getBeamSpread(size: MantineSize | (string & {}) | number | undefined): number {\n if (typeof size === 'number') {\n return size;\n }\n\n const map: Record<string, number> = { xs: 5, sm: 10, md: 20, lg: 35, xl: 50 };\n return map[size as string] ?? 10;\n}\n\nexport interface BorderAnimateBaseProps {\n children?: React.ReactNode;\n\n /** Animation variant type\n * @default 'beam'\n */\n variant?: BorderAnimateVariant;\n\n /** Beam rendering mode (beam variant only).\n * - `conic`: rotating conic-gradient — smooth rotation, beam width varies on rectangles\n * - `path`: radial-gradient traveling along the border via offset-path — constant speed\n * along the perimeter, uniform beam size\n * @default 'path'\n */\n beamMode?: BorderAnimateBeamMode;\n\n /** Animation duration in seconds\n * @default 5\n */\n duration?: number;\n\n /** Border width\n * @default 'xs'\n */\n borderWidth?: MantineSize | (string & {}) | number;\n\n /** Starting color of the beam wedge or glow/pulse gradient.\n * Used when colorStops is not provided.\n * @default 'yellow.6'\n */\n colorFrom?: MantineColor;\n\n /** Ending color of the beam wedge or glow/pulse gradient.\n * Used when colorStops is not provided.\n * @default 'violet.6'\n */\n colorTo?: MantineColor;\n\n /** Color stops for the beam conic-gradient. When provided, overrides\n * colorFrom/colorTo and gives full control over the rotating gradient.\n * Each stop has a color (any MantineColor) and a position (0-100).\n * Stops should be provided in ascending position order.\n */\n colorStops?: BorderAnimateColorStop[];\n\n /** Beam size.\n * - For beamMode=\"conic\": angular spread of the wedge (xs=18°..xl=180° or number 0-50)\n * - For beamMode=\"path\": pixel size of the traveling circle (xs..xl or number)\n * @default 'sm'\n */\n size?: MantineSize | (string & {}) | number;\n\n /** Border radius\n * @default 'md'\n */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Reverse the animation direction\n * @default false\n */\n reverse?: boolean;\n\n /** Blur amount for the effect\n * @default 'xs'\n */\n blur?: MantineSize | (string & {}) | number;\n\n /** Animation delay in seconds.\n * A positive value makes the animation start as if it had already been\n * running for that many seconds (useful for staggering multiple borders).\n * @default 0\n */\n delay?: number;\n\n /** Show/hide the mask that clips the effect to the border\n * @default true\n */\n withMask?: boolean;\n\n /** z-index of the border element\n * @default 1\n */\n zIndex?: number;\n\n /** Show/hide the animated border\n * @default true\n */\n show?: boolean;\n\n /** Enable/disable the animation\n * @default true\n */\n animate?: boolean;\n\n /** Initial angle when animate is false (0-360 degrees).\n * Controls the rotation angle or position along the border path.\n * @default 0\n */\n angle?: number;\n\n /** Opacity of the animated border effect (0 to 1).\n * This controls the border effect opacity, not the component opacity.\n * @default 1\n */\n borderOpacity?: number;\n\n /** CSS animation timing function.\n * @default 'linear' for beam, 'ease-in-out' for glow/pulse\n */\n timingFunction?: string;\n\n /** Pause the animation when the user hovers over the component.\n * @default false\n */\n pauseOnHover?: boolean;\n}\n\nexport interface BorderAnimateProps\n extends BoxProps, BorderAnimateBaseProps, Omit<StylesApiProps<BorderAnimateFactory>, 'variant'> {}\n\nexport type BorderAnimateFactory = Factory<{\n props: BorderAnimateProps;\n ref: HTMLDivElement;\n stylesNames: BorderAnimateStylesNames;\n variant: BorderAnimateVariant;\n vars: BorderAnimateCssVariables;\n}>;\n\nexport const defaultProps: Partial<BorderAnimateProps> = {\n variant: 'beam',\n beamMode: 'path',\n duration: 5,\n borderWidth: 'xs',\n radius: 'md',\n size: 'sm',\n blur: 'xs',\n colorFrom: 'yellow.6',\n colorTo: 'violet.6',\n reverse: false,\n delay: 0,\n withMask: true,\n zIndex: 1,\n show: true,\n animate: true,\n angle: 0,\n borderOpacity: 1,\n pauseOnHover: false,\n};\n\nconst varsResolver = createVarsResolver<BorderAnimateFactory>(\n (\n theme,\n {\n duration,\n reverse,\n borderWidth,\n colorFrom,\n colorTo,\n colorStops,\n size,\n delay,\n blur,\n borderOpacity,\n zIndex,\n radius,\n angle,\n variant,\n timingFunction,\n beamMode,\n }\n ) => {\n let gradientBackground: string | undefined;\n let beamStart: string | undefined;\n let beamFrom: string | undefined;\n let beamTo: string | undefined;\n let beamEnd: string | undefined;\n let beamSize: string | undefined;\n\n if (variant === 'beam') {\n if (beamMode === 'path') {\n // Path mode: size is pixel-based for the traveling circle\n beamSize = getSize(size, 'border-animate-size');\n\n if (colorStops && colorStops.length > 0) {\n // Path mode with colorStops: radial-gradient with custom stops\n const stops = colorStops\n .map((s) => `${getThemeColor(s.color, theme)} ${s.position}%`)\n .join(', ');\n gradientBackground = `radial-gradient(ellipse at center, ${stops})`;\n }\n } else if (colorStops && colorStops.length > 0) {\n // Conic mode with colorStops: full gradient generated in JS\n const stops = colorStops\n .map((s) => `${getThemeColor(s.color, theme)} ${s.position}%`)\n .join(', ');\n gradientBackground = `conic-gradient(from 0deg, ${stops})`;\n } else {\n // Conic mode default: wedge positions for CSS-built gradient\n const spread = getBeamSpread(size);\n const half = spread / 2;\n beamStart = `${50 - half}%`;\n beamFrom = `${50 - half / 2}%`;\n beamTo = `${50 + half / 2}%`;\n beamEnd = `${50 + half}%`;\n }\n }\n\n return {\n root: {\n '--border-animate-radius': radius === undefined ? undefined : getRadius(radius),\n },\n border: {\n '--border-animate-z-index': `${zIndex}`,\n '--border-animate-duration': `${duration}s`,\n '--border-animate-direction': reverse ? 'reverse' : 'normal',\n '--border-animate-width': getSize(borderWidth, 'border-animate-width'),\n '--border-animate-color-from': getThemeColor(colorFrom, theme),\n '--border-animate-color-to': getThemeColor(colorTo, theme),\n '--border-animate-delay': `-${delay}s`,\n '--border-animate-blur': getSize(blur, 'border-animate-blur'),\n '--border-animate-opacity': `${borderOpacity ?? 1}`,\n '--border-animate-static-angle': `${angle ?? 0}`,\n '--border-animate-gradient-background': gradientBackground,\n '--border-animate-beam-start': beamStart,\n '--border-animate-beam-from': beamFrom,\n '--border-animate-beam-to': beamTo,\n '--border-animate-beam-end': beamEnd,\n '--border-animate-size': beamSize,\n '--border-animate-timing': timingFunction,\n },\n };\n }\n);\n\nexport const BorderAnimate = factory<BorderAnimateFactory>((_props, ref) => {\n const props = useProps('BorderAnimate', defaultProps, _props);\n\n const {\n children,\n variant,\n beamMode,\n duration,\n borderWidth,\n colorFrom,\n colorTo,\n colorStops,\n size,\n radius,\n reverse,\n blur,\n delay,\n withMask,\n borderOpacity,\n zIndex,\n show,\n animate,\n angle,\n timingFunction,\n pauseOnHover,\n\n classNames,\n style,\n styles,\n unstyled,\n vars,\n className,\n\n ...others\n } = props;\n\n const getStyles = useStyles<BorderAnimateFactory>({\n name: 'BorderAnimate',\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n return (\n <Box\n ref={ref}\n {...getStyles('root')}\n data-pause-on-hover={pauseOnHover || undefined}\n {...others}\n >\n {show && (\n <Box\n {...getStyles('border', { variant })}\n variant={variant}\n data-with-mask={withMask}\n data-animate={animate}\n data-beam-mode={variant === 'beam' ? (beamMode ?? 'path') : undefined}\n data-color-stops={\n variant === 'beam' && beamMode !== 'path' && colorStops && colorStops.length > 0\n ? true\n : undefined\n }\n />\n )}\n {children}\n </Box>\n );\n});\n\nBorderAnimate.classes = classes;\nBorderAnimate.displayName = 'BorderAnimate';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- var classes = {"root":"me_4c17b6ba","border":"me_89b89404","border-animate-beam":"me_e9d4de44","border-animate-gradient":"me_d2bd6f45","border-animate-glow":"me_e9d74022","border-animate-pulse":"me_5193a3a4"};
2
+ var classes = {"root":"me_4c17b6ba","border":"me_89b89404","border-animate-beam-conic":"me_41cf6553","border-animate-beam-rotate":"me_11b89504","border-animate-beam-path":"me_653df20e","border-animate-glow":"me_e9d74022","border-animate-pulse":"me_5193a3a4"};
3
3
 
4
4
  export { classes as default };
5
5
  //# sourceMappingURL=BorderAnimate.module.css.mjs.map
package/dist/styles.css CHANGED
@@ -1 +1,5 @@
1
- @keyframes me_e9d4de44{0%{offset-distance:0}to{offset-distance:100%}}@keyframes me_e9d74022{0%,to{filter:blur(var(--border-animate-blur));opacity:0}50%{filter:blur(calc(var(--border-animate-blur)*5));opacity:var(--border-animate-opacity)}}@keyframes me_5193a3a4{0%,to{opacity:var(--border-animate-opacity,1);transform:scale(1)}50%{opacity:0;transform:scale(1.02)}}@keyframes me_d2bd6f45{0%{--border-animate-angle:0deg}to{--border-animate-angle:360deg}}.me_4c17b6ba{border-radius:calc(var(--border-animate-radius));display:flex;position:relative}.me_89b89404{--border-animate-size-xs:64px;--border-animate-size-sm:128px;--border-animate-size-md:256px;--border-animate-size-lg:320px;--border-animate-size-xl:480px;--border-animate-width-xs:1px;--border-animate-width-sm:2px;--border-animate-width-md:4px;--border-animate-width-lg:6px;--border-animate-width-xl:8px;--border-animate-blur-xs:2px;--border-animate-blur-sm:4px;--border-animate-blur-md:8px;--border-animate-blur-lg:16px;--border-animate-blur-xl:32px;--border-animate-size:var(--border-animate-size-md);--border-animate-width:var(--border-animate-width-xs);border:calc(var(--border-animate-width)) solid transparent;border-radius:inherit;inset:0;opacity:var(--border-animate-opacity,1);pointer-events:none;position:absolute;z-index:var(--border-animate-z-index,1)}.me_89b89404[data-variant=glow]{z-index:-1}.me_89b89404[data-with-mask=true]:not([data-variant=glow]){mask-clip:content-box,border-box;mask-composite:exclude;mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}@supports not (mask-composite:exclude){.me_89b89404[data-with-mask=true]:not([data-variant=glow]){-webkit-mask-clip:content-box,border-box;-webkit-mask-composite:xor;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}}.me_89b89404[data-animate=false][data-variant=beam]:after{offset-distance:calc(var(--border-animate-static-angle)/360*100%)}.me_89b89404[data-animate=false][data-variant=gradient]:after{--border-animate-angle:calc(var(--border-animate-static-angle)*1deg)}.me_89b89404[data-animate=false],.me_89b89404[data-animate=false]:after{animation:none!important}.me_89b89404[data-variant=beam]:after{animation:me_e9d4de44 var(--border-animate-duration,5s) linear infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);aspect-ratio:1;background:radial-gradient(ellipse at center,var(--border-animate-color-from) 0,var(--border-animate-color-to) 40%,transparent 70%);content:"";filter:blur(var(--border-animate-blur));offset-anchor:50% 50%;offset-path:rect(calc(var(--border-animate-anchor, 0)*1px) calc(100% - var(--border-animate-anchor, 0)*1px) calc(100% - var(--border-animate-anchor, 0)*1px) calc(var(--border-animate-anchor, 0)*1px) round calc(var(--border-animate-radius)));position:absolute;width:calc(var(--border-animate-size))}@property --border-animate-angle{syntax:"<angle>";initial-value:0deg;inherits:false}.me_89b89404[data-variant=gradient]:after{animation:me_d2bd6f45 var(--border-animate-duration,3s) linear infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:conic-gradient(from var(--border-animate-angle,0deg),var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from))}.me_89b89404[data-variant=glow]:after,.me_89b89404[data-variant=gradient]:after{border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:-1px;position:absolute}.me_89b89404[data-variant=glow]:after{animation:me_e9d74022 var(--border-animate-duration,2s) ease-in-out infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from))}.me_89b89404[data-variant=pulse]:after{animation:me_5193a3a4 var(--border-animate-duration,2s) ease-in-out infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to));border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:-1px;position:absolute;transform-origin:center}.me_89b89404[data-animate=false][data-variant=glow]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from));opacity:var(--border-animate-opacity)}.me_89b89404[data-animate=false][data-variant=pulse]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to))}
1
+ @property --border-animate-angle{syntax:"<angle>";initial-value:0deg;inherits:false}@keyframes me_41cf6553{0%{--border-animate-angle:0deg}to{--border-animate-angle:360deg}}@keyframes me_11b89504{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes me_653df20e{0%{offset-distance:0}to{offset-distance:100%}}@keyframes me_e9d74022{0%,to{filter:blur(var(--border-animate-blur));opacity:0}50%{filter:blur(calc(var(--border-animate-blur)*5));opacity:var(--border-animate-opacity)}}@keyframes me_5193a3a4{0%,to{opacity:var(--border-animate-opacity,1);transform:scale(1)}50%{opacity:0;transform:scale(1.02)}}.me_4c17b6ba{border-radius:var(--border-animate-radius);display:flex;position:relative}.me_89b89404{--border-animate-width-xs:1px;--border-animate-width-sm:2px;--border-animate-width-md:4px;--border-animate-width-lg:6px;--border-animate-width-xl:8px;--border-animate-blur-xs:2px;--border-animate-blur-sm:4px;--border-animate-blur-md:8px;--border-animate-blur-lg:16px;--border-animate-blur-xl:32px;--border-animate-size-xs:64px;--border-animate-size-sm:128px;--border-animate-size-md:256px;--border-animate-size-lg:320px;--border-animate-size-xl:480px;--border-animate-width:var(--border-animate-width-xs);border:var(--border-animate-width) solid transparent;border-radius:inherit;inset:0;opacity:var(--border-animate-opacity,1);pointer-events:none;position:absolute;z-index:var(--border-animate-z-index,1)}.me_89b89404[data-variant=glow]{z-index:-1}.me_89b89404[data-with-mask=true]:not([data-variant=glow]){mask-clip:content-box,border-box;mask-composite:exclude;mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}@supports not (mask-composite:exclude){.me_89b89404[data-with-mask=true]:not([data-variant=glow]){-webkit-mask-clip:content-box,border-box;-webkit-mask-composite:xor;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}}.me_89b89404[data-animate=false],.me_89b89404[data-animate=false]:after{animation:none!important}.me_4c17b6ba[data-pause-on-hover]:hover .me_89b89404,.me_4c17b6ba[data-pause-on-hover]:hover .me_89b89404:after{animation-play-state:paused}@media (prefers-reduced-motion:reduce){.me_89b89404,.me_89b89404:after{animation:none!important}}.me_89b89404[data-variant=beam][data-beam-mode=conic]:after{animation:me_41cf6553 var(--border-animate-duration,5s) var(--border-animate-timing,linear) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:var(
2
+ --border-animate-gradient-background,conic-gradient(from var(--border-animate-angle,0deg),transparent 0,transparent var(--border-animate-beam-start,45%),var(--border-animate-color-from) var(--border-animate-beam-from,47.5%),var(--border-animate-color-to) var(--border-animate-beam-to,52.5%),transparent var(--border-animate-beam-end,55%),transparent 100%)
3
+ );border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:calc(var(--border-animate-width, 1px)*-2);position:absolute}.me_89b89404[data-animate=false][data-variant=beam][data-beam-mode=conic]:after{--border-animate-angle:calc(var(--border-animate-static-angle)*1deg)}.me_89b89404[data-variant=beam][data-beam-mode=conic][data-color-stops]:after{animation-name:me_11b89504;inset:-50%}.me_89b89404[data-animate=false][data-variant=beam][data-beam-mode=conic][data-color-stops]:after{transform:rotate(calc(var(--border-animate-static-angle)*1deg))}.me_89b89404[data-variant=beam][data-beam-mode=path]:after{animation:me_653df20e var(--border-animate-duration,5s) var(--border-animate-timing,linear) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);aspect-ratio:1;background:var(
4
+ --border-animate-gradient-background,radial-gradient(ellipse at center,var(--border-animate-color-from) 0,var(--border-animate-color-to) 40%,transparent 70%)
5
+ );content:"";filter:blur(var(--border-animate-blur));offset-anchor:50% 50%;offset-path:inset(0 round var(--border-animate-radius));position:absolute;width:var(--border-animate-size,var(--border-animate-size-sm));will-change:offset-distance}.me_89b89404[data-animate=false][data-variant=beam][data-beam-mode=path]:after{offset-distance:calc(var(--border-animate-static-angle)/360*100%)}.me_89b89404[data-variant=glow]:after{animation:me_e9d74022 var(--border-animate-duration,2s) var(--border-animate-timing,ease-in-out) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from));will-change:filter,opacity}.me_89b89404[data-variant=glow]:after,.me_89b89404[data-variant=pulse]:after{border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:-1px;position:absolute}.me_89b89404[data-variant=pulse]:after{animation:me_5193a3a4 var(--border-animate-duration,2s) var(--border-animate-timing,ease-in-out) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to));transform-origin:center;will-change:transform,opacity}.me_89b89404[data-animate=false][data-variant=glow]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from));opacity:var(--border-animate-opacity)}.me_89b89404[data-animate=false][data-variant=pulse]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to))}
@@ -1 +1,5 @@
1
- @layer mantine-border-animate {@keyframes me_e9d4de44{0%{offset-distance:0}to{offset-distance:100%}}@keyframes me_e9d74022{0%,to{filter:blur(var(--border-animate-blur));opacity:0}50%{filter:blur(calc(var(--border-animate-blur)*5));opacity:var(--border-animate-opacity)}}@keyframes me_5193a3a4{0%,to{opacity:var(--border-animate-opacity,1);transform:scale(1)}50%{opacity:0;transform:scale(1.02)}}@keyframes me_d2bd6f45{0%{--border-animate-angle:0deg}to{--border-animate-angle:360deg}}.me_4c17b6ba{border-radius:calc(var(--border-animate-radius));display:flex;position:relative}.me_89b89404{--border-animate-size-xs:64px;--border-animate-size-sm:128px;--border-animate-size-md:256px;--border-animate-size-lg:320px;--border-animate-size-xl:480px;--border-animate-width-xs:1px;--border-animate-width-sm:2px;--border-animate-width-md:4px;--border-animate-width-lg:6px;--border-animate-width-xl:8px;--border-animate-blur-xs:2px;--border-animate-blur-sm:4px;--border-animate-blur-md:8px;--border-animate-blur-lg:16px;--border-animate-blur-xl:32px;--border-animate-size:var(--border-animate-size-md);--border-animate-width:var(--border-animate-width-xs);border:calc(var(--border-animate-width)) solid transparent;border-radius:inherit;inset:0;opacity:var(--border-animate-opacity,1);pointer-events:none;position:absolute;z-index:var(--border-animate-z-index,1)}.me_89b89404[data-variant=glow]{z-index:-1}.me_89b89404[data-with-mask=true]:not([data-variant=glow]){mask-clip:content-box,border-box;mask-composite:exclude;mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}@supports not (mask-composite:exclude){.me_89b89404[data-with-mask=true]:not([data-variant=glow]){-webkit-mask-clip:content-box,border-box;-webkit-mask-composite:xor;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}}.me_89b89404[data-animate=false][data-variant=beam]:after{offset-distance:calc(var(--border-animate-static-angle)/360*100%)}.me_89b89404[data-animate=false][data-variant=gradient]:after{--border-animate-angle:calc(var(--border-animate-static-angle)*1deg)}.me_89b89404[data-animate=false],.me_89b89404[data-animate=false]:after{animation:none!important}.me_89b89404[data-variant=beam]:after{animation:me_e9d4de44 var(--border-animate-duration,5s) linear infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);aspect-ratio:1;background:radial-gradient(ellipse at center,var(--border-animate-color-from) 0,var(--border-animate-color-to) 40%,transparent 70%);content:"";filter:blur(var(--border-animate-blur));offset-anchor:50% 50%;offset-path:rect(calc(var(--border-animate-anchor, 0)*1px) calc(100% - var(--border-animate-anchor, 0)*1px) calc(100% - var(--border-animate-anchor, 0)*1px) calc(var(--border-animate-anchor, 0)*1px) round calc(var(--border-animate-radius)));position:absolute;width:calc(var(--border-animate-size))}@property --border-animate-angle{syntax:"<angle>";initial-value:0deg;inherits:false}.me_89b89404[data-variant=gradient]:after{animation:me_d2bd6f45 var(--border-animate-duration,3s) linear infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:conic-gradient(from var(--border-animate-angle,0deg),var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from))}.me_89b89404[data-variant=glow]:after,.me_89b89404[data-variant=gradient]:after{border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:-1px;position:absolute}.me_89b89404[data-variant=glow]:after{animation:me_e9d74022 var(--border-animate-duration,2s) ease-in-out infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from))}.me_89b89404[data-variant=pulse]:after{animation:me_5193a3a4 var(--border-animate-duration,2s) ease-in-out infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to));border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:-1px;position:absolute;transform-origin:center}.me_89b89404[data-animate=false][data-variant=glow]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from));opacity:var(--border-animate-opacity)}.me_89b89404[data-animate=false][data-variant=pulse]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to))}}
1
+ @layer mantine-border-animate {@property --border-animate-angle{syntax:"<angle>";initial-value:0deg;inherits:false}@keyframes me_41cf6553{0%{--border-animate-angle:0deg}to{--border-animate-angle:360deg}}@keyframes me_11b89504{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes me_653df20e{0%{offset-distance:0}to{offset-distance:100%}}@keyframes me_e9d74022{0%,to{filter:blur(var(--border-animate-blur));opacity:0}50%{filter:blur(calc(var(--border-animate-blur)*5));opacity:var(--border-animate-opacity)}}@keyframes me_5193a3a4{0%,to{opacity:var(--border-animate-opacity,1);transform:scale(1)}50%{opacity:0;transform:scale(1.02)}}.me_4c17b6ba{border-radius:var(--border-animate-radius);display:flex;position:relative}.me_89b89404{--border-animate-width-xs:1px;--border-animate-width-sm:2px;--border-animate-width-md:4px;--border-animate-width-lg:6px;--border-animate-width-xl:8px;--border-animate-blur-xs:2px;--border-animate-blur-sm:4px;--border-animate-blur-md:8px;--border-animate-blur-lg:16px;--border-animate-blur-xl:32px;--border-animate-size-xs:64px;--border-animate-size-sm:128px;--border-animate-size-md:256px;--border-animate-size-lg:320px;--border-animate-size-xl:480px;--border-animate-width:var(--border-animate-width-xs);border:var(--border-animate-width) solid transparent;border-radius:inherit;inset:0;opacity:var(--border-animate-opacity,1);pointer-events:none;position:absolute;z-index:var(--border-animate-z-index,1)}.me_89b89404[data-variant=glow]{z-index:-1}.me_89b89404[data-with-mask=true]:not([data-variant=glow]){mask-clip:content-box,border-box;mask-composite:exclude;mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}@supports not (mask-composite:exclude){.me_89b89404[data-with-mask=true]:not([data-variant=glow]){-webkit-mask-clip:content-box,border-box;-webkit-mask-composite:xor;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0)}}.me_89b89404[data-animate=false],.me_89b89404[data-animate=false]:after{animation:none!important}.me_4c17b6ba[data-pause-on-hover]:hover .me_89b89404,.me_4c17b6ba[data-pause-on-hover]:hover .me_89b89404:after{animation-play-state:paused}@media (prefers-reduced-motion:reduce){.me_89b89404,.me_89b89404:after{animation:none!important}}.me_89b89404[data-variant=beam][data-beam-mode=conic]:after{animation:me_41cf6553 var(--border-animate-duration,5s) var(--border-animate-timing,linear) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:var(
2
+ --border-animate-gradient-background,conic-gradient(from var(--border-animate-angle,0deg),transparent 0,transparent var(--border-animate-beam-start,45%),var(--border-animate-color-from) var(--border-animate-beam-from,47.5%),var(--border-animate-color-to) var(--border-animate-beam-to,52.5%),transparent var(--border-animate-beam-end,55%),transparent 100%)
3
+ );border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:calc(var(--border-animate-width, 1px)*-2);position:absolute}.me_89b89404[data-animate=false][data-variant=beam][data-beam-mode=conic]:after{--border-animate-angle:calc(var(--border-animate-static-angle)*1deg)}.me_89b89404[data-variant=beam][data-beam-mode=conic][data-color-stops]:after{animation-name:me_11b89504;inset:-50%}.me_89b89404[data-animate=false][data-variant=beam][data-beam-mode=conic][data-color-stops]:after{transform:rotate(calc(var(--border-animate-static-angle)*1deg))}.me_89b89404[data-variant=beam][data-beam-mode=path]:after{animation:me_653df20e var(--border-animate-duration,5s) var(--border-animate-timing,linear) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);aspect-ratio:1;background:var(
4
+ --border-animate-gradient-background,radial-gradient(ellipse at center,var(--border-animate-color-from) 0,var(--border-animate-color-to) 40%,transparent 70%)
5
+ );content:"";filter:blur(var(--border-animate-blur));offset-anchor:50% 50%;offset-path:inset(0 round var(--border-animate-radius));position:absolute;width:var(--border-animate-size,var(--border-animate-size-sm));will-change:offset-distance}.me_89b89404[data-animate=false][data-variant=beam][data-beam-mode=path]:after{offset-distance:calc(var(--border-animate-static-angle)/360*100%)}.me_89b89404[data-variant=glow]:after{animation:me_e9d74022 var(--border-animate-duration,2s) var(--border-animate-timing,ease-in-out) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from));will-change:filter,opacity}.me_89b89404[data-variant=glow]:after,.me_89b89404[data-variant=pulse]:after{border-radius:inherit;content:"";filter:blur(var(--border-animate-blur));inset:-1px;position:absolute}.me_89b89404[data-variant=pulse]:after{animation:me_5193a3a4 var(--border-animate-duration,2s) var(--border-animate-timing,ease-in-out) infinite var(--border-animate-direction,normal);animation-delay:var(--border-animate-delay,0s);background:linear-gradient(90deg,var(--border-animate-color-from),var(--border-animate-color-to));transform-origin:center;will-change:transform,opacity}.me_89b89404[data-animate=false][data-variant=glow]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to),var(--border-animate-color-from));opacity:var(--border-animate-opacity)}.me_89b89404[data-animate=false][data-variant=pulse]:after{background:linear-gradient(calc(var(--border-animate-static-angle)*1deg),var(--border-animate-color-from),var(--border-animate-color-to))}}
@@ -1,11 +1,20 @@
1
1
  import React from 'react';
2
2
  import { Factory, StylesApiProps, type BoxProps, type MantineColor, type MantineRadius, type MantineSize } from '@mantine/core';
3
3
  /** Available border animation variants */
4
- export type BorderAnimateVariant = 'beam' | 'glow' | 'gradient' | 'pulse';
4
+ export type BorderAnimateVariant = 'beam' | 'glow' | 'pulse';
5
+ /** Beam rendering mode */
6
+ export type BorderAnimateBeamMode = 'conic' | 'path';
7
+ /** A single color stop for multi-color beam gradients */
8
+ export interface BorderAnimateColorStop {
9
+ /** Color value (any MantineColor, e.g. 'red.5', '#ff0000', 'rgba(...)') */
10
+ color: MantineColor;
11
+ /** Position along the gradient in percentage (0-100) */
12
+ position: number;
13
+ }
5
14
  export type BorderAnimateStylesNames = 'root' | 'border';
6
15
  export type BorderAnimateCssVariables = {
7
16
  root: '--border-animate-radius';
8
- border: '--border-animate-z-index' | '--border-animate-duration' | '--border-animate-direction' | '--border-animate-width' | '--border-animate-size' | '--border-animate-color-from' | '--border-animate-color-to' | '--border-animate-delay' | '--border-animate-blur' | '--border-animate-opacity' | '--border-animate-anchor' | '--border-animate-static-angle';
17
+ border: '--border-animate-z-index' | '--border-animate-duration' | '--border-animate-direction' | '--border-animate-width' | '--border-animate-color-from' | '--border-animate-color-to' | '--border-animate-delay' | '--border-animate-blur' | '--border-animate-opacity' | '--border-animate-static-angle' | '--border-animate-gradient-background' | '--border-animate-beam-start' | '--border-animate-beam-from' | '--border-animate-beam-to' | '--border-animate-beam-end' | '--border-animate-size' | '--border-animate-timing';
9
18
  };
10
19
  export interface BorderAnimateBaseProps {
11
20
  children?: React.ReactNode;
@@ -13,6 +22,13 @@ export interface BorderAnimateBaseProps {
13
22
  * @default 'beam'
14
23
  */
15
24
  variant?: BorderAnimateVariant;
25
+ /** Beam rendering mode (beam variant only).
26
+ * - `conic`: rotating conic-gradient — smooth rotation, beam width varies on rectangles
27
+ * - `path`: radial-gradient traveling along the border via offset-path — constant speed
28
+ * along the perimeter, uniform beam size
29
+ * @default 'path'
30
+ */
31
+ beamMode?: BorderAnimateBeamMode;
16
32
  /** Animation duration in seconds
17
33
  * @default 5
18
34
  */
@@ -21,15 +37,25 @@ export interface BorderAnimateBaseProps {
21
37
  * @default 'xs'
22
38
  */
23
39
  borderWidth?: MantineSize | (string & {}) | number;
24
- /** Starting color of the gradient
40
+ /** Starting color of the beam wedge or glow/pulse gradient.
41
+ * Used when colorStops is not provided.
25
42
  * @default 'yellow.6'
26
43
  */
27
44
  colorFrom?: MantineColor;
28
- /** Ending color of the gradient
45
+ /** Ending color of the beam wedge or glow/pulse gradient.
46
+ * Used when colorStops is not provided.
29
47
  * @default 'violet.6'
30
48
  */
31
49
  colorTo?: MantineColor;
32
- /** Size of the beam/glow (only for beam effect)
50
+ /** Color stops for the beam conic-gradient. When provided, overrides
51
+ * colorFrom/colorTo and gives full control over the rotating gradient.
52
+ * Each stop has a color (any MantineColor) and a position (0-100).
53
+ * Stops should be provided in ascending position order.
54
+ */
55
+ colorStops?: BorderAnimateColorStop[];
56
+ /** Beam size.
57
+ * - For beamMode="conic": angular spread of the wedge (xs=18°..xl=180° or number 0-50)
58
+ * - For beamMode="path": pixel size of the traveling circle (xs..xl or number)
33
59
  * @default 'sm'
34
60
  */
35
61
  size?: MantineSize | (string & {}) | number;
@@ -45,7 +71,9 @@ export interface BorderAnimateBaseProps {
45
71
  * @default 'xs'
46
72
  */
47
73
  blur?: MantineSize | (string & {}) | number;
48
- /** Animation delay in seconds
74
+ /** Animation delay in seconds.
75
+ * A positive value makes the animation start as if it had already been
76
+ * running for that many seconds (useful for staggering multiple borders).
49
77
  * @default 0
50
78
  */
51
79
  delay?: number;
@@ -57,11 +85,6 @@ export interface BorderAnimateBaseProps {
57
85
  * @default 1
58
86
  */
59
87
  zIndex?: number;
60
- /** Controls how far inward the beam follows the border path (in pixels).
61
- * 0 = follows the outer edge, positive values move the path inward.
62
- * @default 0
63
- */
64
- anchor?: number;
65
88
  /** Show/hide the animated border
66
89
  * @default true
67
90
  */
@@ -70,12 +93,24 @@ export interface BorderAnimateBaseProps {
70
93
  * @default true
71
94
  */
72
95
  animate?: boolean;
73
- /** Initial angle/position when animate is false (0-360 degrees).
74
- * For beam variant: controls the position along the border path.
75
- * For gradient/glow/pulse variants: controls the gradient angle.
96
+ /** Initial angle when animate is false (0-360 degrees).
97
+ * Controls the rotation angle or position along the border path.
76
98
  * @default 0
77
99
  */
78
100
  angle?: number;
101
+ /** Opacity of the animated border effect (0 to 1).
102
+ * This controls the border effect opacity, not the component opacity.
103
+ * @default 1
104
+ */
105
+ borderOpacity?: number;
106
+ /** CSS animation timing function.
107
+ * @default 'linear' for beam, 'ease-in-out' for glow/pulse
108
+ */
109
+ timingFunction?: string;
110
+ /** Pause the animation when the user hovers over the component.
111
+ * @default false
112
+ */
113
+ pauseOnHover?: boolean;
79
114
  }
80
115
  export interface BorderAnimateProps extends BoxProps, BorderAnimateBaseProps, Omit<StylesApiProps<BorderAnimateFactory>, 'variant'> {
81
116
  }
@@ -1,2 +1,2 @@
1
1
  export { BorderAnimate } from './BorderAnimate';
2
- export type { BorderAnimateBaseProps, BorderAnimateCssVariables, BorderAnimateFactory, BorderAnimateProps, BorderAnimateStylesNames, } from './BorderAnimate';
2
+ export type { BorderAnimateBaseProps, BorderAnimateBeamMode, BorderAnimateColorStop, BorderAnimateCssVariables, BorderAnimateFactory, BorderAnimateProps, BorderAnimateStylesNames, BorderAnimateVariant, } from './BorderAnimate';
@@ -1,2 +1,2 @@
1
1
  export { BorderAnimate } from './BorderAnimate';
2
- export type { BorderAnimateBaseProps, BorderAnimateCssVariables, BorderAnimateFactory, BorderAnimateProps, BorderAnimateStylesNames, } from './BorderAnimate';
2
+ export type { BorderAnimateBaseProps, BorderAnimateBeamMode, BorderAnimateColorStop, BorderAnimateCssVariables, BorderAnimateFactory, BorderAnimateProps, BorderAnimateStylesNames, BorderAnimateVariant, } from './BorderAnimate';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gfazioli/mantine-border-animate",
3
- "version": "0.3.8",
3
+ "version": "1.0.0",
4
4
  "description": "Mantine component offering four border animation variants (beam, glow, gradient, pulse) with customizable colors and full animation control, perfect for creating dynamic, visually engaging UI elements.",
5
5
  "homepage": "https://gfazioli.github.io/mantine-border-animate/",
6
6
  "packageManager": "yarn@4.0.1",