aliveicon 1.0.22 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cjs/index.js +1865 -10
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/esm/index.js +1818 -7
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/types/icons/A-Arrow-Down.d.ts +13 -0
  6. package/dist/types/icons/A-Arrow-Up.d.ts +13 -0
  7. package/dist/types/icons/Accessibility.d.ts +12 -0
  8. package/dist/types/icons/Activity.d.ts +12 -0
  9. package/dist/types/icons/Air-vent.d.ts +10 -0
  10. package/dist/types/icons/Airplay.d.ts +12 -0
  11. package/dist/types/icons/Alarm-Clock-Check.d.ts +14 -0
  12. package/dist/types/icons/Alarm-Clock-Minus.d.ts +14 -0
  13. package/dist/types/icons/Alarm-Clock-Plus.d.ts +14 -0
  14. package/dist/types/icons/AlarmClock.d.ts +14 -0
  15. package/dist/types/icons/Album.d.ts +12 -0
  16. package/dist/types/icons/Align-Center-Horizontal.d.ts +15 -0
  17. package/dist/types/icons/Align-Center-Vertical.d.ts +15 -0
  18. package/dist/types/icons/Align-Center.d.ts +16 -0
  19. package/dist/types/icons/Align-End-Horizontal.d.ts +15 -0
  20. package/dist/types/icons/Align-End-Vertical.d.ts +15 -0
  21. package/dist/types/icons/Align-Horizontal-Distributed-Center.d.ts +15 -0
  22. package/dist/types/icons/Align-Horizontal-Distributed-End.d.ts +15 -0
  23. package/dist/types/icons/Align-Horizontal-Distributed-Start.d.ts +15 -0
  24. package/dist/types/icons/Align-Horizontal-Justify-Center.d.ts +15 -0
  25. package/dist/types/icons/Align-Horizontal-Justify-End.d.ts +15 -0
  26. package/dist/types/icons/Align-Horizontal-Justify-Start.d.ts +15 -0
  27. package/dist/types/icons/Align-Horizontal-Space-Around.d.ts +15 -0
  28. package/dist/types/icons/Align-Horizontal-Space-Between.d.ts +15 -0
  29. package/dist/types/icons/Align-Justify.d.ts +15 -0
  30. package/dist/types/index.d.ts +25 -0
  31. package/package.json +1 -1
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useAnimation, motion } from 'framer-motion';
3
- import { useRef, useCallback, useEffect } from 'react';
3
+ import * as React from 'react';
4
+ import { useRef, useCallback, useEffect, forwardRef, useImperativeHandle } from 'react';
4
5
 
5
6
  function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
6
7
 
@@ -2959,10 +2960,10 @@ const getDefaultConfig = () => {
2959
2960
  };
2960
2961
  const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
2961
2962
 
2962
- function cn(...inputs) {
2963
+ function cn$p(...inputs) {
2963
2964
  return twMerge(clsx(inputs));
2964
2965
  }
2965
- const squareVariants = {
2966
+ const squareVariants$1 = {
2966
2967
  normal: {
2967
2968
  scale: 1,
2968
2969
  opacity: 1,
@@ -2974,7 +2975,7 @@ const squareVariants = {
2974
2975
  transition: { duration: 0.6, ease: 'easeInOut' },
2975
2976
  },
2976
2977
  };
2977
- const pathVariants = {
2978
+ const pathVariants$k = {
2978
2979
  normal: {
2979
2980
  opacity: 1,
2980
2981
  pathLength: 1,
@@ -3027,13 +3028,1823 @@ function SquareActivity({ size = 28, className, style, autoAnimateOnLoad = false
3027
3028
  triggerAnimation();
3028
3029
  onClick?.(e);
3029
3030
  };
3030
- return (jsx("div", { className: cn('rounded-md', className), style: {
3031
+ return (jsx("div", { className: cn$p('rounded-md', className), style: {
3032
+ width: size,
3033
+ height: size,
3034
+ display: 'inline-block',
3035
+ ...style,
3036
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "18", height: "18", x: "3", y: "3", rx: "2", variants: squareVariants$1, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M17 12h-2l-2 5-2-10-2 5H7", variants: pathVariants$k, animate: controls, initial: "normal", style: { strokeDasharray: 1 } })] }) }));
3037
+ }
3038
+
3039
+ function cn$o(...inputs) {
3040
+ return twMerge(clsx(inputs));
3041
+ }
3042
+ const bounceVariant$1 = {
3043
+ normal: {
3044
+ scale: 1,
3045
+ transition: {
3046
+ type: 'spring',
3047
+ stiffness: 200,
3048
+ damping: 15,
3049
+ },
3050
+ },
3051
+ animate: {
3052
+ scale: 1.2,
3053
+ transition: {
3054
+ type: 'spring',
3055
+ stiffness: 300,
3056
+ damping: 10,
3057
+ },
3058
+ },
3059
+ };
3060
+ const lineVariants$1 = {
3061
+ normal: {
3062
+ opacity: 1,
3063
+ pathLength: 1,
3064
+ pathOffset: 0,
3065
+ transition: {
3066
+ duration: 0.4,
3067
+ opacity: { duration: 0.1 },
3068
+ },
3069
+ },
3070
+ animate: {
3071
+ opacity: [0, 1],
3072
+ pathLength: [0, 1],
3073
+ pathOffset: [1, 0],
3074
+ transition: {
3075
+ duration: 0.6,
3076
+ ease: 'easeInOut',
3077
+ opacity: { duration: 0.1 },
3078
+ },
3079
+ },
3080
+ };
3081
+ const bouncePathVariants$1 = {
3082
+ hidden: {
3083
+ pathLength: 0,
3084
+ opacity: 0,
3085
+ },
3086
+ visible: (i) => ({
3087
+ pathLength: 1,
3088
+ opacity: 1,
3089
+ transition: {
3090
+ pathLength: { delay: i * 0.1, duration: 0.4, ease: 'easeInOut' },
3091
+ opacity: { delay: i * 0.1, duration: 0.2 },
3092
+ },
3093
+ }),
3094
+ };
3095
+ function ArrowDown({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, isBounce = false, onMouseEnter, onMouseLeave, onClick, ...props }) {
3096
+ const controls = useAnimation();
3097
+ const loopRef = useRef(loopOnHover);
3098
+ const triggerAnimation = useCallback(async () => {
3099
+ await controls.start('animate');
3100
+ await controls.start('normal');
3101
+ if (loopRef.current)
3102
+ triggerAnimation();
3103
+ }, [controls]);
3104
+ useEffect(() => {
3105
+ loopRef.current = loopOnHover;
3106
+ }, [loopOnHover]);
3107
+ useEffect(() => {
3108
+ if (autoAnimateOnLoad)
3109
+ triggerAnimation();
3110
+ }, [autoAnimateOnLoad, triggerAnimation]);
3111
+ const handleMouseEnter = (e) => {
3112
+ if (hoverable)
3113
+ triggerAnimation();
3114
+ onMouseEnter?.(e);
3115
+ };
3116
+ const handleMouseLeave = (e) => {
3117
+ if (hoverable)
3118
+ controls.start('normal');
3119
+ onMouseLeave?.(e);
3120
+ };
3121
+ const handleClick = (e) => {
3122
+ if (animateOnClick)
3123
+ triggerAnimation();
3124
+ onClick?.(e);
3125
+ };
3126
+ const paths = [
3127
+ "M3.5 13h6",
3128
+ "m2 16 4.5-9 4.5 9",
3129
+ "M18 7v9",
3130
+ "m14 12 4 4 4-4",
3131
+ ];
3132
+ return (jsx("div", { className: cn$o('inline-block', className), style: {
3133
+ width: size,
3134
+ height: size,
3135
+ ...style,
3136
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsx(motion.svg, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", variants: isBounce ? bounceVariant$1 : undefined, animate: isBounce ? controls : undefined, initial: isBounce ? 'normal' : undefined, children: paths.map((d, i) => (jsx(motion.path, { d: d, variants: isBounce ? bouncePathVariants$1 : lineVariants$1, initial: isBounce ? 'hidden' : 'normal', animate: isBounce ? 'visible' : controls, custom: i }, i))) }) }));
3137
+ }
3138
+
3139
+ function cn$n(...inputs) {
3140
+ return twMerge(clsx(inputs));
3141
+ }
3142
+ const bounceVariant = {
3143
+ normal: {
3144
+ scale: 1,
3145
+ transition: {
3146
+ type: 'spring',
3147
+ stiffness: 200,
3148
+ damping: 15,
3149
+ },
3150
+ },
3151
+ animate: {
3152
+ scale: 1.2,
3153
+ transition: {
3154
+ type: 'spring',
3155
+ stiffness: 300,
3156
+ damping: 10,
3157
+ },
3158
+ },
3159
+ };
3160
+ const lineVariants = {
3161
+ normal: {
3162
+ opacity: 1,
3163
+ pathLength: 1,
3164
+ pathOffset: 0,
3165
+ transition: {
3166
+ duration: 0.4,
3167
+ opacity: { duration: 0.1 },
3168
+ },
3169
+ },
3170
+ animate: {
3171
+ opacity: [0, 1],
3172
+ pathLength: [0, 1],
3173
+ pathOffset: [1, 0],
3174
+ transition: {
3175
+ duration: 0.6,
3176
+ ease: 'easeInOut',
3177
+ opacity: { duration: 0.1 },
3178
+ },
3179
+ },
3180
+ };
3181
+ const bouncePathVariants = {
3182
+ hidden: {
3183
+ pathLength: 0,
3184
+ opacity: 0,
3185
+ },
3186
+ visible: (i) => ({
3187
+ pathLength: 1,
3188
+ opacity: 1,
3189
+ transition: {
3190
+ pathLength: { delay: i * 0.1, duration: 0.4, ease: 'easeInOut' },
3191
+ opacity: { delay: i * 0.1, duration: 0.2 },
3192
+ },
3193
+ }),
3194
+ };
3195
+ function ArrowUp({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, isBounce = false, onMouseEnter, onMouseLeave, onClick, ...props }) {
3196
+ const controls = useAnimation();
3197
+ const loopRef = useRef(loopOnHover);
3198
+ const triggerAnimation = useCallback(async () => {
3199
+ await controls.start('animate');
3200
+ await controls.start('normal');
3201
+ if (loopRef.current)
3202
+ triggerAnimation();
3203
+ }, [controls]);
3204
+ useEffect(() => {
3205
+ loopRef.current = loopOnHover;
3206
+ }, [loopOnHover]);
3207
+ useEffect(() => {
3208
+ if (autoAnimateOnLoad)
3209
+ triggerAnimation();
3210
+ }, [autoAnimateOnLoad, triggerAnimation]);
3211
+ const handleMouseEnter = (e) => {
3212
+ if (hoverable)
3213
+ triggerAnimation();
3214
+ onMouseEnter?.(e);
3215
+ };
3216
+ const handleMouseLeave = (e) => {
3217
+ if (hoverable)
3218
+ controls.start('normal');
3219
+ onMouseLeave?.(e);
3220
+ };
3221
+ const handleClick = (e) => {
3222
+ if (animateOnClick)
3223
+ triggerAnimation();
3224
+ onClick?.(e);
3225
+ };
3226
+ const paths = [
3227
+ "M3.5 13h6", // horizontal part of the "A"
3228
+ "m2 16 4.5-9 4.5 9", // the "A" structure stays same
3229
+ "M18 16V7", // arrow line, now reversed (was 7→16, now 16→7)
3230
+ "m22 12-4-4-4 4", // arrow head pointing upward
3231
+ ];
3232
+ return (jsx("div", { className: cn$n('inline-block', className), style: {
3233
+ width: size,
3234
+ height: size,
3235
+ ...style,
3236
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsx(motion.svg, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", variants: isBounce ? bounceVariant : undefined, animate: isBounce ? controls : undefined, initial: isBounce ? 'normal' : undefined, children: paths.map((d, i) => (jsx(motion.path, { d: d, variants: isBounce ? bouncePathVariants : lineVariants, initial: isBounce ? 'hidden' : 'normal', animate: isBounce ? 'visible' : controls, custom: i }, i))) }) }));
3237
+ }
3238
+
3239
+ function cn$m(...inputs) {
3240
+ return twMerge(clsx(inputs));
3241
+ }
3242
+ const circleVariants = {
3243
+ normal: {
3244
+ scale: 1,
3245
+ opacity: 1,
3246
+ transition: { duration: 0.4 },
3247
+ },
3248
+ animate: {
3249
+ scale: [1, 1.2, 1],
3250
+ opacity: [1, 0.8, 1],
3251
+ transition: {
3252
+ duration: 0.6,
3253
+ times: [0, 0.5, 1],
3254
+ ease: 'easeInOut'
3255
+ },
3256
+ },
3257
+ };
3258
+ const pathVariants$j = {
3259
+ normal: {
3260
+ opacity: 1,
3261
+ pathLength: 1,
3262
+ pathOffset: 0,
3263
+ transition: {
3264
+ duration: 0.4,
3265
+ opacity: { duration: 0.1 },
3266
+ },
3267
+ },
3268
+ animate: {
3269
+ opacity: [0, 1],
3270
+ pathLength: [0, 1],
3271
+ pathOffset: [1, 0],
3272
+ transition: {
3273
+ duration: 0.6,
3274
+ ease: 'linear',
3275
+ opacity: { duration: 0.1 },
3276
+ },
3277
+ },
3278
+ };
3279
+ function AccessibilityActivity({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }) {
3280
+ const controls = useAnimation();
3281
+ const loopRef = useRef(loopOnHover);
3282
+ const triggerAnimation = useCallback(async () => {
3283
+ await controls.start('animate');
3284
+ await controls.start('normal');
3285
+ if (loopRef.current)
3286
+ triggerAnimation();
3287
+ }, [controls]);
3288
+ useEffect(() => {
3289
+ loopRef.current = loopOnHover;
3290
+ }, [loopOnHover]);
3291
+ useEffect(() => {
3292
+ if (autoAnimateOnLoad)
3293
+ triggerAnimation();
3294
+ }, [autoAnimateOnLoad, triggerAnimation]);
3295
+ const handleMouseEnter = (e) => {
3296
+ if (hoverable)
3297
+ triggerAnimation();
3298
+ onMouseEnter?.(e);
3299
+ };
3300
+ const handleMouseLeave = (e) => {
3301
+ if (hoverable)
3302
+ controls.start('normal');
3303
+ onMouseLeave?.(e);
3304
+ };
3305
+ const handleClick = (e) => {
3306
+ if (animateOnClick)
3307
+ triggerAnimation();
3308
+ onClick?.(e);
3309
+ };
3310
+ return (jsx("div", { className: cn$m('rounded-md', className), style: {
3031
3311
  width: size,
3032
3312
  height: size,
3033
3313
  display: 'inline-block',
3034
3314
  ...style,
3035
- }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "18", height: "18", x: "3", y: "3", rx: "2", variants: squareVariants, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M17 12h-2l-2 5-2-10-2 5H7", variants: pathVariants, animate: controls, initial: "normal", style: { strokeDasharray: 1 } })] }) }));
3315
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.circle, { cx: "16", cy: "4", r: "1", variants: circleVariants, animate: controls, initial: "normal" }), jsx(motion.path, { d: "m18 19 1-7-6 1", variants: pathVariants$j, animate: controls, initial: "normal", style: { strokeDasharray: 1 } }), jsx(motion.path, { d: "m5 8 3-3 5.5 3-2.36 3.5", variants: pathVariants$j, animate: controls, initial: "normal", style: { strokeDasharray: 1 } }), jsx(motion.path, { d: "M4.24 14.5a5 5 0 0 0 6.88 6", variants: pathVariants$j, animate: controls, initial: "normal", style: { strokeDasharray: 1 } }), jsx(motion.path, { d: "M13.76 17.5a5 5 0 0 0-6.88-6", variants: pathVariants$j, animate: controls, initial: "normal", style: { strokeDasharray: 1 } })] }) }));
3036
3316
  }
3037
3317
 
3038
- export { SquareActivity };
3318
+ function cn$l(...inputs) {
3319
+ return twMerge(clsx(inputs));
3320
+ }
3321
+ const pathVariants$i = {
3322
+ normal: {
3323
+ opacity: 1,
3324
+ pathLength: 1,
3325
+ pathOffset: 0,
3326
+ transition: {
3327
+ duration: 0.4,
3328
+ opacity: { duration: 0.1 },
3329
+ },
3330
+ },
3331
+ animate: {
3332
+ opacity: [0, 1],
3333
+ pathLength: [0, 1],
3334
+ pathOffset: [1, 0],
3335
+ transition: {
3336
+ duration: 0.6,
3337
+ ease: 'linear',
3338
+ opacity: { duration: 0.1 },
3339
+ },
3340
+ },
3341
+ };
3342
+ function Activity({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }) {
3343
+ const controls = useAnimation();
3344
+ const loopRef = useRef(loopOnHover);
3345
+ const triggerAnimation = useCallback(async () => {
3346
+ console.log("started animation");
3347
+ await controls.start('animate');
3348
+ await controls.start('normal');
3349
+ if (loopRef.current)
3350
+ triggerAnimation();
3351
+ }, [controls]);
3352
+ useEffect(() => {
3353
+ loopRef.current = loopOnHover;
3354
+ }, [loopOnHover]);
3355
+ useEffect(() => {
3356
+ if (autoAnimateOnLoad)
3357
+ triggerAnimation();
3358
+ }, [autoAnimateOnLoad, triggerAnimation]);
3359
+ const handleMouseEnter = (e) => {
3360
+ if (hoverable)
3361
+ triggerAnimation();
3362
+ onMouseEnter?.(e);
3363
+ };
3364
+ const handleMouseLeave = (e) => {
3365
+ if (hoverable)
3366
+ controls.start('normal');
3367
+ onMouseLeave?.(e);
3368
+ };
3369
+ const handleClick = (e) => {
3370
+ if (animateOnClick)
3371
+ triggerAnimation();
3372
+ onClick?.(e);
3373
+ };
3374
+ return (jsx("div", { className: cn$l('rounded-md', className), style: {
3375
+ width: size,
3376
+ height: size,
3377
+ display: 'inline-block',
3378
+ ...style,
3379
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: jsx(motion.path, { d: "M17 12h-2l-2 5-2-10-2 5H7", variants: pathVariants$i, animate: controls, initial: "normal", style: { strokeDasharray: 1 } }) }) }));
3380
+ }
3381
+
3382
+ function cn$k(...inputs) {
3383
+ return twMerge(clsx(inputs));
3384
+ }
3385
+ const windVariants = {
3386
+ normal: (custom) => ({
3387
+ pathLength: 1,
3388
+ opacity: 1,
3389
+ pathOffset: 0,
3390
+ transition: {
3391
+ duration: 0.3,
3392
+ ease: 'easeInOut',
3393
+ delay: custom,
3394
+ },
3395
+ }),
3396
+ animate: (custom) => ({
3397
+ pathLength: [0, 1],
3398
+ opacity: [0, 1],
3399
+ pathOffset: [1, 0],
3400
+ transition: {
3401
+ duration: 0.5,
3402
+ ease: 'easeInOut',
3403
+ delay: custom,
3404
+ },
3405
+ }),
3406
+ };
3407
+ const AirVent = forwardRef(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
3408
+ const controls = useAnimation();
3409
+ const isControlledRef = useRef(false);
3410
+ useImperativeHandle(ref, () => {
3411
+ isControlledRef.current = true;
3412
+ return {
3413
+ startAnimation: () => controls.start('animate'),
3414
+ stopAnimation: () => controls.start('normal'),
3415
+ };
3416
+ });
3417
+ const handleMouseEnter = useCallback((e) => {
3418
+ if (!isControlledRef.current) {
3419
+ controls.start('animate');
3420
+ }
3421
+ else {
3422
+ onMouseEnter?.(e);
3423
+ }
3424
+ }, [controls, onMouseEnter]);
3425
+ const handleMouseLeave = useCallback((e) => {
3426
+ if (!isControlledRef.current) {
3427
+ controls.start('normal');
3428
+ }
3429
+ else {
3430
+ onMouseLeave?.(e);
3431
+ }
3432
+ }, [controls, onMouseLeave]);
3433
+ return (jsx("div", { className: cn$k(className), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx("path", { d: "M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" }), jsx(motion.path, { d: "M6 8h12", variants: windVariants, initial: "normal", animate: controls, custom: 0.1 }), jsx(motion.path, { d: "M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12", variants: windVariants, initial: "normal", animate: controls, custom: 0 }), jsx(motion.path, { d: "M6.6 15.6A2 2 0 1 0 10 17v-5", variants: windVariants, initial: "normal", animate: controls, custom: 0.2 })] }) }));
3434
+ });
3435
+ AirVent.displayName = 'AirVent';
3436
+
3437
+ function cn$j(...inputs) {
3438
+ return twMerge(clsx(inputs));
3439
+ }
3440
+ const screenVariants = {
3441
+ normal: {
3442
+ opacity: 1,
3443
+ pathLength: 1,
3444
+ pathOffset: 0,
3445
+ transition: {
3446
+ duration: 0.3,
3447
+ },
3448
+ },
3449
+ animate: {
3450
+ opacity: [0, 1],
3451
+ pathLength: [0, 1],
3452
+ pathOffset: [1, 0],
3453
+ transition: {
3454
+ duration: 0.6,
3455
+ ease: 'easeInOut',
3456
+ },
3457
+ },
3458
+ };
3459
+ const triangleVariants = {
3460
+ normal: {
3461
+ scale: 1,
3462
+ opacity: 1,
3463
+ transition: { duration: 0.3 },
3464
+ },
3465
+ animate: {
3466
+ scale: [0.6, 1.1, 1],
3467
+ opacity: [0, 1],
3468
+ transition: {
3469
+ duration: 0.6,
3470
+ ease: 'easeOut',
3471
+ },
3472
+ },
3473
+ };
3474
+ function Airplay({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }) {
3475
+ const controls = useAnimation();
3476
+ const loopRef = useRef(loopOnHover);
3477
+ const triggerAnimation = useCallback(async () => {
3478
+ await controls.start('animate');
3479
+ await controls.start('normal');
3480
+ if (loopRef.current)
3481
+ triggerAnimation();
3482
+ }, [controls]);
3483
+ useEffect(() => {
3484
+ loopRef.current = loopOnHover;
3485
+ }, [loopOnHover]);
3486
+ useEffect(() => {
3487
+ if (autoAnimateOnLoad)
3488
+ triggerAnimation();
3489
+ }, [autoAnimateOnLoad, triggerAnimation]);
3490
+ const handleMouseEnter = (e) => {
3491
+ if (hoverable)
3492
+ triggerAnimation();
3493
+ onMouseEnter?.(e);
3494
+ };
3495
+ const handleMouseLeave = (e) => {
3496
+ if (hoverable)
3497
+ controls.start('normal');
3498
+ onMouseLeave?.(e);
3499
+ };
3500
+ const handleClick = (e) => {
3501
+ if (animateOnClick)
3502
+ triggerAnimation();
3503
+ onClick?.(e);
3504
+ };
3505
+ return (jsx("div", { className: cn$j(className), style: {
3506
+ width: size,
3507
+ height: size,
3508
+ display: 'inline-block',
3509
+ ...style,
3510
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.path, { d: "M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1", variants: screenVariants, initial: "normal", animate: controls }), jsx(motion.path, { d: "M12 15l5 6H7z", variants: triangleVariants, initial: "normal", animate: controls })] }) }));
3511
+ }
3512
+
3513
+ function cn$i(...inputs) {
3514
+ return twMerge(clsx(inputs));
3515
+ }
3516
+ const squareVariants = {
3517
+ normal: {
3518
+ scale: 1,
3519
+ opacity: 1,
3520
+ transition: { duration: 0.4 },
3521
+ },
3522
+ animate: {
3523
+ scale: 1.10,
3524
+ opacity: 0.9,
3525
+ transition: { duration: 0.6, ease: 'easeInOut' },
3526
+ },
3527
+ };
3528
+ const pathVariants$h = {
3529
+ normal: {
3530
+ opacity: 1,
3531
+ pathLength: 1,
3532
+ pathOffset: 0,
3533
+ transition: {
3534
+ duration: 0.4,
3535
+ opacity: { duration: 0.1 },
3536
+ },
3537
+ },
3538
+ animate: {
3539
+ opacity: [0, 1],
3540
+ pathLength: [0, 1],
3541
+ pathOffset: [1, 0],
3542
+ transition: {
3543
+ duration: 0.6,
3544
+ ease: 'linear',
3545
+ opacity: { duration: 0.1 },
3546
+ },
3547
+ },
3548
+ };
3549
+ const Album = ({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }) => {
3550
+ const controls = useAnimation();
3551
+ const loopRef = useRef(loopOnHover);
3552
+ const triggerAnimation = useCallback(async () => {
3553
+ await controls.start('animate');
3554
+ await controls.start('normal');
3555
+ if (loopRef.current)
3556
+ triggerAnimation();
3557
+ }, [controls]);
3558
+ useEffect(() => {
3559
+ loopRef.current = loopOnHover;
3560
+ }, [loopOnHover]);
3561
+ useEffect(() => {
3562
+ if (autoAnimateOnLoad)
3563
+ triggerAnimation();
3564
+ }, [autoAnimateOnLoad, triggerAnimation]);
3565
+ const handleMouseEnter = (e) => {
3566
+ if (hoverable)
3567
+ triggerAnimation();
3568
+ onMouseEnter?.(e);
3569
+ };
3570
+ const handleMouseLeave = (e) => {
3571
+ if (hoverable)
3572
+ controls.start('normal');
3573
+ onMouseLeave?.(e);
3574
+ };
3575
+ const handleClick = (e) => {
3576
+ if (animateOnClick)
3577
+ triggerAnimation();
3578
+ onClick?.(e);
3579
+ };
3580
+ return (jsx("div", { className: cn$i('rounded-md', className), style: {
3581
+ width: size,
3582
+ height: size,
3583
+ display: 'inline-block',
3584
+ ...style,
3585
+ }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", variants: squareVariants, animate: controls, initial: "normal" }), jsx(motion.polyline, { points: "11 3 11 11 14 8 17 11 17 3", variants: pathVariants$h, animate: controls, initial: "normal", style: { strokeDasharray: 1 } })] }) }));
3586
+ };
3587
+
3588
+ function cn$h(...inputs) {
3589
+ return twMerge(clsx(inputs));
3590
+ }
3591
+ const pathVariants$g = {
3592
+ normal: {
3593
+ y: 0,
3594
+ x: 0,
3595
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3596
+ },
3597
+ animate: {
3598
+ y: -1.5,
3599
+ x: [-1, 1, -1, 1, -1, 0],
3600
+ transition: {
3601
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3602
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3603
+ },
3604
+ },
3605
+ };
3606
+ const secondaryPathVariants$3 = {
3607
+ normal: {
3608
+ y: 0,
3609
+ x: 0,
3610
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3611
+ },
3612
+ animate: {
3613
+ y: -2.5,
3614
+ x: [-2, 2, -2, 2, -2, 0],
3615
+ transition: {
3616
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3617
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3618
+ },
3619
+ },
3620
+ };
3621
+ const AlarmClock = forwardRef(({ className, size = 28, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
3622
+ const controls = useAnimation();
3623
+ const isControlledRef = useRef(false);
3624
+ const timeoutRef = useRef(null);
3625
+ const startOnce = useCallback(() => {
3626
+ controls.start('animate');
3627
+ if (timeoutRef.current)
3628
+ clearTimeout(timeoutRef.current);
3629
+ timeoutRef.current = setTimeout(() => {
3630
+ controls.start('normal');
3631
+ }, 700); // single cycle duration
3632
+ }, [controls]);
3633
+ const startLoop = useCallback(() => {
3634
+ controls.start('animate');
3635
+ }, [controls]);
3636
+ const stopAnimation = useCallback(() => {
3637
+ if (timeoutRef.current)
3638
+ clearTimeout(timeoutRef.current);
3639
+ controls.start('normal');
3640
+ }, [controls]);
3641
+ useImperativeHandle(ref, () => {
3642
+ isControlledRef.current = true;
3643
+ return {
3644
+ startAnimation: () => startOnce(),
3645
+ stopAnimation: () => stopAnimation(),
3646
+ };
3647
+ });
3648
+ const handleMouseEnter = useCallback((e) => {
3649
+ if (!isControlledRef.current && hoverable) {
3650
+ if (loopOnHover) {
3651
+ startLoop();
3652
+ }
3653
+ else {
3654
+ startOnce();
3655
+ }
3656
+ }
3657
+ onMouseEnter?.(e);
3658
+ }, [hoverable, loopOnHover, onMouseEnter, startOnce, startLoop]);
3659
+ const handleMouseLeave = useCallback((e) => {
3660
+ if (!isControlledRef.current && hoverable && loopOnHover) {
3661
+ stopAnimation();
3662
+ }
3663
+ onMouseLeave?.(e);
3664
+ }, [hoverable, loopOnHover, onMouseLeave, stopAnimation]);
3665
+ const handleClick = useCallback((e) => {
3666
+ if (!isControlledRef.current && animateOnClick) {
3667
+ startOnce();
3668
+ }
3669
+ onClick?.(e);
3670
+ }, [animateOnClick, onClick, startOnce]);
3671
+ useEffect(() => {
3672
+ if (autoAnimateOnLoad) {
3673
+ startOnce();
3674
+ }
3675
+ return () => {
3676
+ if (timeoutRef.current)
3677
+ clearTimeout(timeoutRef.current);
3678
+ };
3679
+ }, [autoAnimateOnLoad, startOnce]);
3680
+ return (jsx("div", { className: cn$h(className), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { overflow: 'visible' }, children: [jsx(motion.path, { variants: pathVariants$g, initial: "normal", animate: controls, d: "M18 20.5L19.5 22" }), jsx(motion.path, { variants: pathVariants$g, initial: "normal", animate: controls, d: "M6 20.5L4.5 22" }), jsx(motion.path, { variants: pathVariants$g, initial: "normal", animate: controls, d: "M21 13C21 17.968 16.968 22 12 22C7.032 22 3 17.968 3 13C3 8.032 7.032 4 12 4C16.968 4 21 8.032 21 13Z" }), jsx(motion.path, { variants: pathVariants$g, initial: "normal", animate: controls, d: "M15.339 15.862L12.549 14.197C12.063 13.909 11.667 13.216 11.667 12.649V8.95898" }), jsx(motion.path, { variants: secondaryPathVariants$3, initial: "normal", animate: controls, d: "M18 2L21.747 5.31064" }), jsx(motion.path, { variants: secondaryPathVariants$3, initial: "normal", animate: controls, d: "M6 2L2.25304 5.31064" })] }) }));
3681
+ });
3682
+ AlarmClock.displayName = 'AlarmClock';
3683
+
3684
+ function cn$g(...inputs) {
3685
+ return twMerge(clsx(inputs));
3686
+ }
3687
+ const pathVariants$f = {
3688
+ normal: {
3689
+ y: 0,
3690
+ x: 0,
3691
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3692
+ },
3693
+ animate: {
3694
+ y: -1.5,
3695
+ x: [-1, 1, -1, 1, -1, 0],
3696
+ transition: {
3697
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3698
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3699
+ },
3700
+ },
3701
+ };
3702
+ const secondaryPathVariants$2 = {
3703
+ normal: {
3704
+ y: 0,
3705
+ x: 0,
3706
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3707
+ },
3708
+ animate: {
3709
+ y: -2.5,
3710
+ x: [-2, 2, -2, 2, -2, 0],
3711
+ transition: {
3712
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3713
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3714
+ },
3715
+ },
3716
+ };
3717
+ const AlarmClockCheck = forwardRef(({ className, size = 28, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
3718
+ const controls = useAnimation();
3719
+ const isControlledRef = useRef(false);
3720
+ const timeoutRef = useRef(null);
3721
+ const startAnimation = useCallback(() => {
3722
+ controls.start('animate');
3723
+ }, [controls]);
3724
+ const stopAnimation = useCallback(() => {
3725
+ controls.start('normal');
3726
+ }, [controls]);
3727
+ const startTimedAnimation = useCallback(() => {
3728
+ startAnimation();
3729
+ if (timeoutRef.current)
3730
+ clearTimeout(timeoutRef.current);
3731
+ timeoutRef.current = setTimeout(() => {
3732
+ stopAnimation();
3733
+ }, 700);
3734
+ }, [startAnimation, stopAnimation]);
3735
+ useImperativeHandle(ref, () => {
3736
+ isControlledRef.current = true;
3737
+ return {
3738
+ startAnimation: () => startTimedAnimation(),
3739
+ stopAnimation: () => stopAnimation(),
3740
+ };
3741
+ });
3742
+ const handleMouseEnter = useCallback((e) => {
3743
+ if (!isControlledRef.current && hoverable) {
3744
+ if (loopOnHover) {
3745
+ startAnimation();
3746
+ }
3747
+ else {
3748
+ startTimedAnimation();
3749
+ }
3750
+ }
3751
+ onMouseEnter?.(e);
3752
+ }, [hoverable, loopOnHover, onMouseEnter, startAnimation, startTimedAnimation]);
3753
+ const handleMouseLeave = useCallback((e) => {
3754
+ if (!isControlledRef.current && hoverable && loopOnHover) {
3755
+ stopAnimation();
3756
+ }
3757
+ onMouseLeave?.(e);
3758
+ }, [hoverable, loopOnHover, onMouseLeave, stopAnimation]);
3759
+ const handleClick = useCallback((e) => {
3760
+ if (!isControlledRef.current && animateOnClick) {
3761
+ startTimedAnimation();
3762
+ }
3763
+ onClick?.(e);
3764
+ }, [animateOnClick, onClick, startTimedAnimation]);
3765
+ useEffect(() => {
3766
+ if (autoAnimateOnLoad) {
3767
+ startTimedAnimation();
3768
+ }
3769
+ return () => {
3770
+ if (timeoutRef.current)
3771
+ clearTimeout(timeoutRef.current);
3772
+ };
3773
+ }, [autoAnimateOnLoad, startTimedAnimation]);
3774
+ return (jsx("div", { className: cn$g(className), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { overflow: 'visible' }, children: [jsx(motion.circle, { variants: pathVariants$f, initial: "normal", animate: controls, cx: "12", cy: "13", r: "8" }), jsx(motion.path, { variants: secondaryPathVariants$2, initial: "normal", animate: controls, d: "M5 3 2 6" }), jsx(motion.path, { variants: secondaryPathVariants$2, initial: "normal", animate: controls, d: "m22 6-3-3" }), jsx(motion.path, { variants: pathVariants$f, initial: "normal", animate: controls, d: "M6.38 18.7 4 21" }), jsx(motion.path, { variants: pathVariants$f, initial: "normal", animate: controls, d: "M17.64 18.67 20 21" }), jsx(motion.path, { variants: pathVariants$f, initial: "normal", animate: controls, d: "m9 13 2 2 4-4" })] }) }));
3775
+ });
3776
+ AlarmClockCheck.displayName = 'AlarmClockCheck';
3777
+
3778
+ function cn$f(...inputs) {
3779
+ return twMerge(clsx(inputs));
3780
+ }
3781
+ const pathVariants$e = {
3782
+ normal: {
3783
+ y: 0,
3784
+ x: 0,
3785
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3786
+ },
3787
+ animate: {
3788
+ y: -1.5,
3789
+ x: [-1, 1, -1, 1, -1, 0],
3790
+ transition: {
3791
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3792
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3793
+ },
3794
+ },
3795
+ };
3796
+ const secondaryPathVariants$1 = {
3797
+ normal: {
3798
+ y: 0,
3799
+ x: 0,
3800
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3801
+ },
3802
+ animate: {
3803
+ y: -2.5,
3804
+ x: [-2, 2, -2, 2, -2, 0],
3805
+ transition: {
3806
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3807
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3808
+ },
3809
+ },
3810
+ };
3811
+ const AlarmClockMinus = forwardRef(({ className, size = 28, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
3812
+ const controls = useAnimation();
3813
+ const isControlledRef = useRef(false);
3814
+ const timeoutRef = useRef(null);
3815
+ const startAnimation = useCallback(() => {
3816
+ controls.start('animate');
3817
+ }, [controls]);
3818
+ const stopAnimation = useCallback(() => {
3819
+ controls.start('normal');
3820
+ }, [controls]);
3821
+ const startTimedAnimation = useCallback(() => {
3822
+ startAnimation();
3823
+ if (timeoutRef.current)
3824
+ clearTimeout(timeoutRef.current);
3825
+ timeoutRef.current = setTimeout(() => {
3826
+ stopAnimation();
3827
+ }, 700);
3828
+ }, [startAnimation, stopAnimation]);
3829
+ useImperativeHandle(ref, () => {
3830
+ isControlledRef.current = true;
3831
+ return {
3832
+ startAnimation: () => startTimedAnimation(),
3833
+ stopAnimation: () => stopAnimation(),
3834
+ };
3835
+ });
3836
+ const handleMouseEnter = useCallback((e) => {
3837
+ if (!isControlledRef.current && hoverable) {
3838
+ if (loopOnHover) {
3839
+ startAnimation();
3840
+ }
3841
+ else {
3842
+ startTimedAnimation();
3843
+ }
3844
+ }
3845
+ onMouseEnter?.(e);
3846
+ }, [hoverable, loopOnHover, onMouseEnter, startAnimation, startTimedAnimation]);
3847
+ const handleMouseLeave = useCallback((e) => {
3848
+ if (!isControlledRef.current && hoverable && loopOnHover) {
3849
+ stopAnimation();
3850
+ }
3851
+ onMouseLeave?.(e);
3852
+ }, [hoverable, loopOnHover, onMouseLeave, stopAnimation]);
3853
+ const handleClick = useCallback((e) => {
3854
+ if (!isControlledRef.current && animateOnClick) {
3855
+ startTimedAnimation();
3856
+ }
3857
+ onClick?.(e);
3858
+ }, [animateOnClick, onClick, startTimedAnimation]);
3859
+ useEffect(() => {
3860
+ if (autoAnimateOnLoad) {
3861
+ startTimedAnimation();
3862
+ }
3863
+ return () => {
3864
+ if (timeoutRef.current)
3865
+ clearTimeout(timeoutRef.current);
3866
+ };
3867
+ }, [autoAnimateOnLoad, startTimedAnimation]);
3868
+ return (jsx("div", { className: cn$f(className), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { overflow: 'visible' }, children: [jsx(motion.circle, { variants: pathVariants$e, initial: "normal", animate: controls, cx: "12", cy: "13", r: "8" }), jsx(motion.path, { variants: secondaryPathVariants$1, initial: "normal", animate: controls, d: "M5 3 2 6" }), jsx(motion.path, { variants: secondaryPathVariants$1, initial: "normal", animate: controls, d: "m22 6-3-3" }), jsx(motion.path, { variants: pathVariants$e, initial: "normal", animate: controls, d: "M6.38 18.7 4 21" }), jsx(motion.path, { variants: pathVariants$e, initial: "normal", animate: controls, d: "M17.64 18.67 20 21" }), jsx(motion.line, { variants: pathVariants$e, initial: "normal", animate: controls, x1: "9", y1: "13", x2: "15", y2: "13" })] }) }));
3869
+ });
3870
+ AlarmClockMinus.displayName = 'AlarmClockMinus';
3871
+
3872
+ function cn$e(...inputs) {
3873
+ return twMerge(clsx(inputs));
3874
+ }
3875
+ const pathVariants$d = {
3876
+ normal: {
3877
+ y: 0,
3878
+ x: 0,
3879
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3880
+ },
3881
+ animate: {
3882
+ y: -1.5,
3883
+ x: [-1, 1, -1, 1, -1, 0],
3884
+ transition: {
3885
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3886
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3887
+ },
3888
+ },
3889
+ };
3890
+ const secondaryPathVariants = {
3891
+ normal: {
3892
+ y: 0,
3893
+ x: 0,
3894
+ transition: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3895
+ },
3896
+ animate: {
3897
+ y: -2.5,
3898
+ x: [-2, 2, -2, 2, -2, 0],
3899
+ transition: {
3900
+ x: { duration: 0.3, repeat: Infinity, ease: 'linear' },
3901
+ y: { duration: 0.2, type: 'spring', stiffness: 200, damping: 25 },
3902
+ },
3903
+ },
3904
+ };
3905
+ const AlarmClockPlus = forwardRef(({ className, size = 28, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
3906
+ const controls = useAnimation();
3907
+ const isControlledRef = useRef(false);
3908
+ const timeoutRef = useRef(null);
3909
+ const startAnimation = useCallback(() => {
3910
+ controls.start('animate');
3911
+ }, [controls]);
3912
+ const stopAnimation = useCallback(() => {
3913
+ controls.start('normal');
3914
+ }, [controls]);
3915
+ const startTimedAnimation = useCallback(() => {
3916
+ startAnimation();
3917
+ if (timeoutRef.current)
3918
+ clearTimeout(timeoutRef.current);
3919
+ timeoutRef.current = setTimeout(() => {
3920
+ stopAnimation();
3921
+ }, 700);
3922
+ }, [startAnimation, stopAnimation]);
3923
+ useImperativeHandle(ref, () => {
3924
+ isControlledRef.current = true;
3925
+ return {
3926
+ startAnimation: () => startTimedAnimation(),
3927
+ stopAnimation: () => stopAnimation(),
3928
+ };
3929
+ });
3930
+ const handleMouseEnter = useCallback((e) => {
3931
+ if (!isControlledRef.current && hoverable) {
3932
+ if (loopOnHover) {
3933
+ startAnimation();
3934
+ }
3935
+ else {
3936
+ startTimedAnimation();
3937
+ }
3938
+ }
3939
+ onMouseEnter?.(e);
3940
+ }, [hoverable, loopOnHover, onMouseEnter, startAnimation, startTimedAnimation]);
3941
+ const handleMouseLeave = useCallback((e) => {
3942
+ if (!isControlledRef.current && hoverable && loopOnHover) {
3943
+ stopAnimation();
3944
+ }
3945
+ onMouseLeave?.(e);
3946
+ }, [hoverable, loopOnHover, onMouseLeave, stopAnimation]);
3947
+ const handleClick = useCallback((e) => {
3948
+ if (!isControlledRef.current && animateOnClick) {
3949
+ startTimedAnimation();
3950
+ }
3951
+ onClick?.(e);
3952
+ }, [animateOnClick, onClick, startTimedAnimation]);
3953
+ useEffect(() => {
3954
+ if (autoAnimateOnLoad) {
3955
+ startTimedAnimation();
3956
+ }
3957
+ return () => {
3958
+ if (timeoutRef.current)
3959
+ clearTimeout(timeoutRef.current);
3960
+ };
3961
+ }, [autoAnimateOnLoad, startTimedAnimation]);
3962
+ return (jsx("div", { className: cn$e(className), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { overflow: 'visible' }, children: [jsx(motion.circle, { variants: pathVariants$d, initial: "normal", animate: controls, cx: "12", cy: "13", r: "8" }), jsx(motion.path, { variants: secondaryPathVariants, initial: "normal", animate: controls, d: "M5 3 2 6" }), jsx(motion.path, { variants: secondaryPathVariants, initial: "normal", animate: controls, d: "m22 6-3-3" }), jsx(motion.path, { variants: pathVariants$d, initial: "normal", animate: controls, d: "M6.38 18.7 4 21" }), jsx(motion.path, { variants: pathVariants$d, initial: "normal", animate: controls, d: "M17.64 18.67 20 21" }), jsx(motion.line, { variants: pathVariants$d, initial: "normal", animate: controls, x1: "9", y1: "13", x2: "15", y2: "13" }), jsx(motion.line, { variants: pathVariants$d, initial: "normal", animate: controls, y1: "10", x1: "12", y2: "16", x2: "12" })] }) }));
3963
+ });
3964
+ AlarmClockPlus.displayName = 'AlarmClockPlus';
3965
+
3966
+ function cn$d(...inputs) {
3967
+ return twMerge(clsx(inputs));
3968
+ }
3969
+ const pathMotion = {
3970
+ normal: {
3971
+ translateX: 0,
3972
+ },
3973
+ animate: {
3974
+ translateX: [0, 3, -3, 2, -2, 0],
3975
+ transition: {
3976
+ ease: "linear",
3977
+ duration: 1,
3978
+ },
3979
+ },
3980
+ };
3981
+ const AlignCenter = React.forwardRef(({ size = 28, className, style, onMouseEnter, onMouseLeave, onClick, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, ...props }, ref) => {
3982
+ const controls = useAnimation();
3983
+ const loopRef = useRef(loopOnHover);
3984
+ const isControlledRef = useRef(false);
3985
+ useImperativeHandle(ref, () => {
3986
+ isControlledRef.current = true;
3987
+ return {
3988
+ startAnimation: () => controls.start("animate"),
3989
+ stopAnimation: () => controls.start("normal"),
3990
+ };
3991
+ });
3992
+ const triggerAnimation = useCallback(async () => {
3993
+ await controls.start("animate");
3994
+ await controls.start("normal");
3995
+ if (loopRef.current)
3996
+ triggerAnimation();
3997
+ }, [controls]);
3998
+ React.useEffect(() => {
3999
+ loopRef.current = loopOnHover;
4000
+ }, [loopOnHover]);
4001
+ React.useEffect(() => {
4002
+ if (autoAnimateOnLoad && !isControlledRef.current) {
4003
+ triggerAnimation();
4004
+ }
4005
+ }, [autoAnimateOnLoad, triggerAnimation]);
4006
+ const handleMouseEnter = useCallback((e) => {
4007
+ if (!isControlledRef.current && hoverable) {
4008
+ triggerAnimation();
4009
+ }
4010
+ onMouseEnter?.(e);
4011
+ }, [triggerAnimation, onMouseEnter, hoverable]);
4012
+ const handleMouseLeave = useCallback((e) => {
4013
+ if (!isControlledRef.current && hoverable) {
4014
+ controls.start("normal");
4015
+ }
4016
+ onMouseLeave?.(e);
4017
+ }, [controls, onMouseLeave, hoverable]);
4018
+ const handleClick = useCallback((e) => {
4019
+ if (!isControlledRef.current && animateOnClick) {
4020
+ triggerAnimation();
4021
+ }
4022
+ onClick?.(e);
4023
+ }, [triggerAnimation, onClick, animateOnClick]);
4024
+ return (jsx("div", { className: cn$d("inline-block", className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.path, { d: "M17 12H7", variants: pathMotion, initial: "normal", animate: controls }), jsx(motion.path, { d: "M19 18H5", animate: controls, initial: "normal" }), jsx(motion.path, { d: "M21 6H3", animate: controls, initial: "normal" })] }) }));
4025
+ });
4026
+ AlignCenter.displayName = "AlignCenter";
4027
+
4028
+ function cn$c(...inputs) {
4029
+ return twMerge(clsx(inputs));
4030
+ }
4031
+ const pathVariants$c = {
4032
+ normal: {
4033
+ pathLength: 1,
4034
+ pathOffset: 0,
4035
+ opacity: 1,
4036
+ transition: {
4037
+ duration: 0.4,
4038
+ },
4039
+ },
4040
+ animate: {
4041
+ pathLength: [0, 1],
4042
+ pathOffset: [1, 0],
4043
+ opacity: [0, 1],
4044
+ transition: {
4045
+ duration: 0.7,
4046
+ ease: 'easeInOut',
4047
+ },
4048
+ },
4049
+ };
4050
+ const AlignCenterHorizontal = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4051
+ const controls = useAnimation();
4052
+ const loopRef = useRef(loopOnHover);
4053
+ const isControlledRef = useRef(false);
4054
+ const triggerAnimation = useCallback(async () => {
4055
+ await controls.start('animate');
4056
+ await controls.start('normal');
4057
+ if (loopRef.current)
4058
+ triggerAnimation();
4059
+ }, [controls]);
4060
+ useEffect(() => {
4061
+ loopRef.current = loopOnHover;
4062
+ }, [loopOnHover]);
4063
+ useEffect(() => {
4064
+ if (autoAnimateOnLoad)
4065
+ triggerAnimation();
4066
+ }, [autoAnimateOnLoad, triggerAnimation]);
4067
+ useImperativeHandle(ref, () => {
4068
+ isControlledRef.current = true;
4069
+ return {
4070
+ startAnimation: () => controls.start('animate'),
4071
+ stopAnimation: () => controls.start('normal'),
4072
+ };
4073
+ });
4074
+ const handleMouseEnter = (e) => {
4075
+ if (!isControlledRef.current && hoverable)
4076
+ triggerAnimation();
4077
+ onMouseEnter?.(e);
4078
+ };
4079
+ const handleMouseLeave = (e) => {
4080
+ if (!isControlledRef.current && hoverable)
4081
+ controls.start('normal');
4082
+ onMouseLeave?.(e);
4083
+ };
4084
+ const handleClick = (e) => {
4085
+ if (animateOnClick)
4086
+ triggerAnimation();
4087
+ onClick?.(e);
4088
+ };
4089
+ return (jsx("div", { className: cn$c('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.path, { d: "M2 12h20", variants: pathVariants$c, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M10 16v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4", variants: pathVariants$c, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M10 8V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v4", variants: pathVariants$c, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M20 16v1a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-1", variants: pathVariants$c, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M14 8V7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v1", variants: pathVariants$c, animate: controls, initial: "normal" })] }) }));
4090
+ });
4091
+ AlignCenterHorizontal.displayName = 'AlignCenterHorizontal';
4092
+
4093
+ function cn$b(...inputs) {
4094
+ return twMerge(clsx(inputs));
4095
+ }
4096
+ const pathVariants$b = {
4097
+ normal: {
4098
+ pathLength: 1,
4099
+ pathOffset: 0,
4100
+ opacity: 1,
4101
+ transition: { duration: 0.4 },
4102
+ },
4103
+ animate: {
4104
+ pathLength: [0, 1],
4105
+ pathOffset: [1, 0],
4106
+ opacity: [0, 1],
4107
+ transition: {
4108
+ duration: 0.7,
4109
+ ease: 'easeInOut',
4110
+ },
4111
+ },
4112
+ };
4113
+ const AlignCenterVertical = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4114
+ const controls = useAnimation();
4115
+ const loopRef = useRef(loopOnHover);
4116
+ const isControlledRef = useRef(false);
4117
+ const triggerAnimation = useCallback(async () => {
4118
+ await controls.start('animate');
4119
+ await controls.start('normal');
4120
+ if (loopRef.current)
4121
+ triggerAnimation();
4122
+ }, [controls]);
4123
+ useEffect(() => {
4124
+ loopRef.current = loopOnHover;
4125
+ }, [loopOnHover]);
4126
+ useEffect(() => {
4127
+ if (autoAnimateOnLoad)
4128
+ triggerAnimation();
4129
+ }, [autoAnimateOnLoad, triggerAnimation]);
4130
+ useImperativeHandle(ref, () => {
4131
+ isControlledRef.current = true;
4132
+ return {
4133
+ startAnimation: () => controls.start('animate'),
4134
+ stopAnimation: () => controls.start('normal'),
4135
+ };
4136
+ });
4137
+ const handleMouseEnter = (e) => {
4138
+ if (!isControlledRef.current && hoverable)
4139
+ triggerAnimation();
4140
+ onMouseEnter?.(e);
4141
+ };
4142
+ const handleMouseLeave = (e) => {
4143
+ if (!isControlledRef.current && hoverable)
4144
+ controls.start('normal');
4145
+ onMouseLeave?.(e);
4146
+ };
4147
+ const handleClick = (e) => {
4148
+ if (animateOnClick)
4149
+ triggerAnimation();
4150
+ onClick?.(e);
4151
+ };
4152
+ return (jsx("div", { className: cn$b('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.path, { d: "M12 2v20", variants: pathVariants$b, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M8 10H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h4", variants: pathVariants$b, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M16 10h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4", variants: pathVariants$b, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M8 20H7a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2h1", variants: pathVariants$b, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M16 14h1a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-1", variants: pathVariants$b, animate: controls, initial: "normal" })] }) }));
4153
+ });
4154
+ AlignCenterVertical.displayName = 'AlignCenterVertical';
4155
+
4156
+ function cn$a(...inputs) {
4157
+ return twMerge(clsx(inputs));
4158
+ }
4159
+ const pathVariants$a = {
4160
+ normal: {
4161
+ pathLength: 1,
4162
+ pathOffset: 0,
4163
+ opacity: 1,
4164
+ transition: { duration: 0.3 },
4165
+ },
4166
+ animate: {
4167
+ pathLength: [0, 1],
4168
+ pathOffset: [1, 0],
4169
+ opacity: [0, 1],
4170
+ transition: {
4171
+ duration: 0.6,
4172
+ ease: 'easeInOut',
4173
+ },
4174
+ },
4175
+ };
4176
+ const AlignEndHorizontal = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4177
+ const controls = useAnimation();
4178
+ const loopRef = useRef(loopOnHover);
4179
+ const isControlledRef = useRef(false);
4180
+ const triggerAnimation = useCallback(async () => {
4181
+ await controls.start('animate');
4182
+ await controls.start('normal');
4183
+ if (loopRef.current)
4184
+ triggerAnimation();
4185
+ }, [controls]);
4186
+ useEffect(() => {
4187
+ loopRef.current = loopOnHover;
4188
+ }, [loopOnHover]);
4189
+ useEffect(() => {
4190
+ if (autoAnimateOnLoad)
4191
+ triggerAnimation();
4192
+ }, [autoAnimateOnLoad, triggerAnimation]);
4193
+ useImperativeHandle(ref, () => {
4194
+ isControlledRef.current = true;
4195
+ return {
4196
+ startAnimation: () => controls.start('animate'),
4197
+ stopAnimation: () => controls.start('normal'),
4198
+ };
4199
+ });
4200
+ const handleMouseEnter = (e) => {
4201
+ if (!isControlledRef.current && hoverable)
4202
+ triggerAnimation();
4203
+ onMouseEnter?.(e);
4204
+ };
4205
+ const handleMouseLeave = (e) => {
4206
+ if (!isControlledRef.current && hoverable)
4207
+ controls.start('normal');
4208
+ onMouseLeave?.(e);
4209
+ };
4210
+ const handleClick = (e) => {
4211
+ if (animateOnClick)
4212
+ triggerAnimation();
4213
+ onClick?.(e);
4214
+ };
4215
+ return (jsx("div", { className: cn$a('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "6", height: "16", x: "4", y: "2", rx: "2", variants: pathVariants$a, animate: controls, initial: "normal" }), jsx(motion.rect, { width: "6", height: "9", x: "14", y: "9", rx: "2", variants: pathVariants$a, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M22 22H2", variants: pathVariants$a, animate: controls, initial: "normal" })] }) }));
4216
+ });
4217
+ AlignEndHorizontal.displayName = 'AlignEndHorizontal';
4218
+
4219
+ function cn$9(...inputs) {
4220
+ return twMerge(clsx(inputs));
4221
+ }
4222
+ const pathVariants$9 = {
4223
+ normal: {
4224
+ pathLength: 1,
4225
+ pathOffset: 0,
4226
+ opacity: 1,
4227
+ transition: { duration: 0.3 },
4228
+ },
4229
+ animate: {
4230
+ pathLength: [0, 1],
4231
+ pathOffset: [1, 0],
4232
+ opacity: [0, 1],
4233
+ transition: {
4234
+ duration: 0.6,
4235
+ ease: 'easeInOut',
4236
+ },
4237
+ },
4238
+ };
4239
+ const AlignEndVertical = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4240
+ const controls = useAnimation();
4241
+ const loopRef = useRef(loopOnHover);
4242
+ const isControlledRef = useRef(false);
4243
+ const triggerAnimation = useCallback(async () => {
4244
+ await controls.start('animate');
4245
+ await controls.start('normal');
4246
+ if (loopRef.current)
4247
+ triggerAnimation();
4248
+ }, [controls]);
4249
+ useEffect(() => {
4250
+ loopRef.current = loopOnHover;
4251
+ }, [loopOnHover]);
4252
+ useEffect(() => {
4253
+ if (autoAnimateOnLoad)
4254
+ triggerAnimation();
4255
+ }, [autoAnimateOnLoad, triggerAnimation]);
4256
+ useImperativeHandle(ref, () => {
4257
+ isControlledRef.current = true;
4258
+ return {
4259
+ startAnimation: () => controls.start('animate'),
4260
+ stopAnimation: () => controls.start('normal'),
4261
+ };
4262
+ });
4263
+ const handleMouseEnter = (e) => {
4264
+ if (!isControlledRef.current && hoverable)
4265
+ triggerAnimation();
4266
+ onMouseEnter?.(e);
4267
+ };
4268
+ const handleMouseLeave = (e) => {
4269
+ if (!isControlledRef.current && hoverable)
4270
+ controls.start('normal');
4271
+ onMouseLeave?.(e);
4272
+ };
4273
+ const handleClick = (e) => {
4274
+ if (animateOnClick)
4275
+ triggerAnimation();
4276
+ onClick?.(e);
4277
+ };
4278
+ return (jsx("div", { className: cn$9('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "16", height: "6", x: "2", y: "4", rx: "2", variants: pathVariants$9, animate: controls, initial: "normal" }), jsx(motion.rect, { width: "9", height: "6", x: "9", y: "14", rx: "2", variants: pathVariants$9, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M22 22V2", variants: pathVariants$9, animate: controls, initial: "normal" })] }) }));
4279
+ });
4280
+ AlignEndVertical.displayName = 'AlignEndVertical';
4281
+
4282
+ function cn$8(...inputs) {
4283
+ return twMerge(clsx(inputs));
4284
+ }
4285
+ const pathVariants$8 = {
4286
+ normal: {
4287
+ pathLength: 1,
4288
+ pathOffset: 0,
4289
+ opacity: 1,
4290
+ transition: { duration: 0.3 },
4291
+ },
4292
+ animate: {
4293
+ pathLength: [0, 1],
4294
+ pathOffset: [1, 0],
4295
+ opacity: [0, 1],
4296
+ transition: {
4297
+ duration: 0.6,
4298
+ ease: 'easeInOut',
4299
+ },
4300
+ },
4301
+ };
4302
+ const AlignHorizontalDistributeCenter = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4303
+ const controls = useAnimation();
4304
+ const loopRef = useRef(loopOnHover);
4305
+ const isControlledRef = useRef(false);
4306
+ const triggerAnimation = useCallback(async () => {
4307
+ await controls.start('animate');
4308
+ await controls.start('normal');
4309
+ if (loopRef.current)
4310
+ triggerAnimation();
4311
+ }, [controls]);
4312
+ useEffect(() => {
4313
+ loopRef.current = loopOnHover;
4314
+ }, [loopOnHover]);
4315
+ useEffect(() => {
4316
+ if (autoAnimateOnLoad)
4317
+ triggerAnimation();
4318
+ }, [autoAnimateOnLoad, triggerAnimation]);
4319
+ useImperativeHandle(ref, () => {
4320
+ isControlledRef.current = true;
4321
+ return {
4322
+ startAnimation: () => controls.start('animate'),
4323
+ stopAnimation: () => controls.start('normal'),
4324
+ };
4325
+ });
4326
+ const handleMouseEnter = (e) => {
4327
+ if (!isControlledRef.current && hoverable)
4328
+ triggerAnimation();
4329
+ onMouseEnter?.(e);
4330
+ };
4331
+ const handleMouseLeave = (e) => {
4332
+ if (!isControlledRef.current && hoverable)
4333
+ controls.start('normal');
4334
+ onMouseLeave?.(e);
4335
+ };
4336
+ const handleClick = (e) => {
4337
+ if (animateOnClick)
4338
+ triggerAnimation();
4339
+ onClick?.(e);
4340
+ };
4341
+ return (jsx("div", { className: cn$8('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "100%", height: "100%", children: [jsx(motion.rect, { width: "6", height: "14", x: "4", y: "5", rx: "2", variants: pathVariants$8, animate: controls, initial: "normal" }), jsx(motion.rect, { width: "6", height: "10", x: "14", y: "7", rx: "2", variants: pathVariants$8, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M17 22v-5", variants: pathVariants$8, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M17 7V2", variants: pathVariants$8, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M7 22v-3", variants: pathVariants$8, animate: controls, initial: "normal" }), jsx(motion.path, { d: "M7 5V2", variants: pathVariants$8, animate: controls, initial: "normal" })] }) }));
4342
+ });
4343
+ AlignHorizontalDistributeCenter.displayName = 'AlignHorizontalDistributeCenter';
4344
+
4345
+ function cn$7(...inputs) {
4346
+ return twMerge(clsx(inputs));
4347
+ }
4348
+ const pathVariants$7 = {
4349
+ normal: {
4350
+ opacity: 1,
4351
+ pathLength: 1,
4352
+ pathOffset: 0,
4353
+ transition: { duration: 0.4 },
4354
+ },
4355
+ animate: {
4356
+ opacity: [0, 1],
4357
+ pathLength: [0, 1],
4358
+ pathOffset: [1, 0],
4359
+ transition: {
4360
+ duration: 0.6,
4361
+ ease: 'linear',
4362
+ },
4363
+ },
4364
+ };
4365
+ const AlignHorizontalDistributeEnd = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4366
+ const controls = useAnimation();
4367
+ const loopRef = useRef(loopOnHover);
4368
+ const isControlledRef = useRef(false);
4369
+ const triggerAnimation = useCallback(async () => {
4370
+ await controls.start('animate');
4371
+ await controls.start('normal');
4372
+ if (loopRef.current)
4373
+ triggerAnimation();
4374
+ }, [controls]);
4375
+ useEffect(() => {
4376
+ loopRef.current = loopOnHover;
4377
+ }, [loopOnHover]);
4378
+ useEffect(() => {
4379
+ if (autoAnimateOnLoad)
4380
+ triggerAnimation();
4381
+ }, [autoAnimateOnLoad, triggerAnimation]);
4382
+ useImperativeHandle(ref, () => {
4383
+ isControlledRef.current = true;
4384
+ return {
4385
+ startAnimation: () => controls.start('animate'),
4386
+ stopAnimation: () => controls.start('normal'),
4387
+ };
4388
+ });
4389
+ const handleMouseEnter = (e) => {
4390
+ if (!isControlledRef.current && hoverable)
4391
+ triggerAnimation();
4392
+ onMouseEnter?.(e);
4393
+ };
4394
+ const handleMouseLeave = (e) => {
4395
+ if (!isControlledRef.current && hoverable)
4396
+ controls.start('normal');
4397
+ onMouseLeave?.(e);
4398
+ };
4399
+ const handleClick = (e) => {
4400
+ if (animateOnClick)
4401
+ triggerAnimation();
4402
+ onClick?.(e);
4403
+ };
4404
+ return (jsx("div", { className: cn$7('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "14", x: "4", y: "5", rx: "2", variants: pathVariants$7, initial: "normal", animate: controls }), jsx(motion.rect, { width: "6", height: "10", x: "14", y: "7", rx: "2", variants: pathVariants$7, initial: "normal", animate: controls }), jsx(motion.path, { d: "M10 2v20", variants: pathVariants$7, initial: "normal", animate: controls }), jsx(motion.path, { d: "M20 2v20", variants: pathVariants$7, initial: "normal", animate: controls })] }) }));
4405
+ });
4406
+ AlignHorizontalDistributeEnd.displayName = 'AlignHorizontalDistributeEnd';
4407
+
4408
+ function cn$6(...inputs) {
4409
+ return twMerge(clsx(inputs));
4410
+ }
4411
+ const pathVariants$6 = {
4412
+ normal: {
4413
+ opacity: 1,
4414
+ pathLength: 1,
4415
+ pathOffset: 0,
4416
+ transition: { duration: 0.4 },
4417
+ },
4418
+ animate: {
4419
+ opacity: [0, 1],
4420
+ pathLength: [0, 1],
4421
+ pathOffset: [1, 0],
4422
+ transition: {
4423
+ duration: 0.6,
4424
+ ease: 'linear',
4425
+ },
4426
+ },
4427
+ };
4428
+ const AlignHorizontalDistributeStart = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4429
+ const controls = useAnimation();
4430
+ const loopRef = useRef(loopOnHover);
4431
+ const isControlledRef = useRef(false);
4432
+ const triggerAnimation = useCallback(async () => {
4433
+ await controls.start('animate');
4434
+ await controls.start('normal');
4435
+ if (loopRef.current)
4436
+ triggerAnimation();
4437
+ }, [controls]);
4438
+ useEffect(() => {
4439
+ loopRef.current = loopOnHover;
4440
+ }, [loopOnHover]);
4441
+ useEffect(() => {
4442
+ if (autoAnimateOnLoad)
4443
+ triggerAnimation();
4444
+ }, [autoAnimateOnLoad, triggerAnimation]);
4445
+ useImperativeHandle(ref, () => {
4446
+ isControlledRef.current = true;
4447
+ return {
4448
+ startAnimation: () => controls.start('animate'),
4449
+ stopAnimation: () => controls.start('normal'),
4450
+ };
4451
+ });
4452
+ const handleMouseEnter = (e) => {
4453
+ if (!isControlledRef.current && hoverable)
4454
+ triggerAnimation();
4455
+ onMouseEnter?.(e);
4456
+ };
4457
+ const handleMouseLeave = (e) => {
4458
+ if (!isControlledRef.current && hoverable)
4459
+ controls.start('normal');
4460
+ onMouseLeave?.(e);
4461
+ };
4462
+ const handleClick = (e) => {
4463
+ if (animateOnClick)
4464
+ triggerAnimation();
4465
+ onClick?.(e);
4466
+ };
4467
+ return (jsx("div", { className: cn$6('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "14", x: "4", y: "5", rx: "2", variants: pathVariants$6, initial: "normal", animate: controls }), jsx(motion.rect, { width: "6", height: "10", x: "14", y: "7", rx: "2", variants: pathVariants$6, initial: "normal", animate: controls }), jsx(motion.path, { d: "M4 2v20", variants: pathVariants$6, initial: "normal", animate: controls }), jsx(motion.path, { d: "M14 2v20", variants: pathVariants$6, initial: "normal", animate: controls })] }) }));
4468
+ });
4469
+ AlignHorizontalDistributeStart.displayName = 'AlignHorizontalDistributeStart';
4470
+
4471
+ function cn$5(...inputs) {
4472
+ return twMerge(clsx(inputs));
4473
+ }
4474
+ const pathVariants$5 = {
4475
+ normal: {
4476
+ opacity: 1,
4477
+ pathLength: 1,
4478
+ pathOffset: 0,
4479
+ transition: { duration: 0.4 },
4480
+ },
4481
+ animate: {
4482
+ opacity: [0, 1],
4483
+ pathLength: [0, 1],
4484
+ pathOffset: [1, 0],
4485
+ transition: {
4486
+ duration: 0.6,
4487
+ ease: 'linear',
4488
+ },
4489
+ },
4490
+ };
4491
+ const AlignHorizontalJustifyCenter = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4492
+ const controls = useAnimation();
4493
+ const loopRef = useRef(loopOnHover);
4494
+ const isControlledRef = useRef(false);
4495
+ const triggerAnimation = useCallback(async () => {
4496
+ await controls.start('animate');
4497
+ await controls.start('normal');
4498
+ if (loopRef.current)
4499
+ triggerAnimation();
4500
+ }, [controls]);
4501
+ useEffect(() => {
4502
+ loopRef.current = loopOnHover;
4503
+ }, [loopOnHover]);
4504
+ useEffect(() => {
4505
+ if (autoAnimateOnLoad)
4506
+ triggerAnimation();
4507
+ }, [autoAnimateOnLoad, triggerAnimation]);
4508
+ useImperativeHandle(ref, () => {
4509
+ isControlledRef.current = true;
4510
+ return {
4511
+ startAnimation: () => controls.start('animate'),
4512
+ stopAnimation: () => controls.start('normal'),
4513
+ };
4514
+ });
4515
+ const handleMouseEnter = (e) => {
4516
+ if (!isControlledRef.current && hoverable)
4517
+ triggerAnimation();
4518
+ onMouseEnter?.(e);
4519
+ };
4520
+ const handleMouseLeave = (e) => {
4521
+ if (!isControlledRef.current && hoverable)
4522
+ controls.start('normal');
4523
+ onMouseLeave?.(e);
4524
+ };
4525
+ const handleClick = (e) => {
4526
+ if (animateOnClick)
4527
+ triggerAnimation();
4528
+ onClick?.(e);
4529
+ };
4530
+ return (jsx("div", { className: cn$5('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "14", x: "2", y: "5", rx: "2", variants: pathVariants$5, initial: "normal", animate: controls }), jsx(motion.rect, { width: "6", height: "10", x: "16", y: "7", rx: "2", variants: pathVariants$5, initial: "normal", animate: controls }), jsx(motion.path, { d: "M12 2v20", variants: pathVariants$5, initial: "normal", animate: controls })] }) }));
4531
+ });
4532
+ AlignHorizontalJustifyCenter.displayName = 'AlignHorizontalJustifyCenter';
4533
+
4534
+ function cn$4(...inputs) {
4535
+ return twMerge(clsx(inputs));
4536
+ }
4537
+ const pathVariants$4 = {
4538
+ normal: {
4539
+ opacity: 1,
4540
+ pathLength: 1,
4541
+ pathOffset: 0,
4542
+ transition: { duration: 0.4 },
4543
+ },
4544
+ animate: {
4545
+ opacity: [0, 1],
4546
+ pathLength: [0, 1],
4547
+ pathOffset: [1, 0],
4548
+ transition: {
4549
+ duration: 0.6,
4550
+ ease: 'linear',
4551
+ },
4552
+ },
4553
+ };
4554
+ const AlignHorizontalJustifyEnd = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4555
+ const controls = useAnimation();
4556
+ const loopRef = useRef(loopOnHover);
4557
+ const isControlledRef = useRef(false);
4558
+ const triggerAnimation = useCallback(async () => {
4559
+ await controls.start('animate');
4560
+ await controls.start('normal');
4561
+ if (loopRef.current)
4562
+ triggerAnimation();
4563
+ }, [controls]);
4564
+ useEffect(() => {
4565
+ loopRef.current = loopOnHover;
4566
+ }, [loopOnHover]);
4567
+ useEffect(() => {
4568
+ if (autoAnimateOnLoad)
4569
+ triggerAnimation();
4570
+ }, [autoAnimateOnLoad, triggerAnimation]);
4571
+ useImperativeHandle(ref, () => {
4572
+ isControlledRef.current = true;
4573
+ return {
4574
+ startAnimation: () => controls.start('animate'),
4575
+ stopAnimation: () => controls.start('normal'),
4576
+ };
4577
+ });
4578
+ const handleMouseEnter = (e) => {
4579
+ if (!isControlledRef.current && hoverable)
4580
+ triggerAnimation();
4581
+ onMouseEnter?.(e);
4582
+ };
4583
+ const handleMouseLeave = (e) => {
4584
+ if (!isControlledRef.current && hoverable)
4585
+ controls.start('normal');
4586
+ onMouseLeave?.(e);
4587
+ };
4588
+ const handleClick = (e) => {
4589
+ if (animateOnClick)
4590
+ triggerAnimation();
4591
+ onClick?.(e);
4592
+ };
4593
+ return (jsx("div", { className: cn$4('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "14", x: "2", y: "5", rx: "2", variants: pathVariants$4, initial: "normal", animate: controls }), jsx(motion.rect, { width: "6", height: "10", x: "12", y: "7", rx: "2", variants: pathVariants$4, initial: "normal", animate: controls }), jsx(motion.path, { d: "M22 2v20", variants: pathVariants$4, initial: "normal", animate: controls })] }) }));
4594
+ });
4595
+ AlignHorizontalJustifyEnd.displayName = 'AlignHorizontalJustifyEnd';
4596
+
4597
+ function cn$3(...inputs) {
4598
+ return twMerge(clsx(inputs));
4599
+ }
4600
+ const pathVariants$3 = {
4601
+ normal: {
4602
+ opacity: 1,
4603
+ pathLength: 1,
4604
+ pathOffset: 0,
4605
+ transition: { duration: 0.4 },
4606
+ },
4607
+ animate: {
4608
+ opacity: [0, 1],
4609
+ pathLength: [0, 1],
4610
+ pathOffset: [1, 0],
4611
+ transition: {
4612
+ duration: 0.6,
4613
+ ease: 'linear',
4614
+ },
4615
+ },
4616
+ };
4617
+ const AlignHorizontalJustifyStart = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4618
+ const controls = useAnimation();
4619
+ const loopRef = useRef(loopOnHover);
4620
+ const isControlledRef = useRef(false);
4621
+ const triggerAnimation = useCallback(async () => {
4622
+ await controls.start('animate');
4623
+ await controls.start('normal');
4624
+ if (loopRef.current)
4625
+ triggerAnimation();
4626
+ }, [controls]);
4627
+ useEffect(() => {
4628
+ loopRef.current = loopOnHover;
4629
+ }, [loopOnHover]);
4630
+ useEffect(() => {
4631
+ if (autoAnimateOnLoad)
4632
+ triggerAnimation();
4633
+ }, [autoAnimateOnLoad, triggerAnimation]);
4634
+ useImperativeHandle(ref, () => {
4635
+ isControlledRef.current = true;
4636
+ return {
4637
+ startAnimation: () => controls.start('animate'),
4638
+ stopAnimation: () => controls.start('normal'),
4639
+ };
4640
+ });
4641
+ const handleMouseEnter = (e) => {
4642
+ if (!isControlledRef.current && hoverable)
4643
+ triggerAnimation();
4644
+ onMouseEnter?.(e);
4645
+ };
4646
+ const handleMouseLeave = (e) => {
4647
+ if (!isControlledRef.current && hoverable)
4648
+ controls.start('normal');
4649
+ onMouseLeave?.(e);
4650
+ };
4651
+ const handleClick = (e) => {
4652
+ if (animateOnClick)
4653
+ triggerAnimation();
4654
+ onClick?.(e);
4655
+ };
4656
+ return (jsx("div", { className: cn$3('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "14", x: "6", y: "5", rx: "2", variants: pathVariants$3, initial: "normal", animate: controls }), jsx(motion.rect, { width: "6", height: "10", x: "16", y: "7", rx: "2", variants: pathVariants$3, initial: "normal", animate: controls }), jsx(motion.path, { d: "M2 2v20", variants: pathVariants$3, initial: "normal", animate: controls })] }) }));
4657
+ });
4658
+ AlignHorizontalJustifyStart.displayName = 'AlignHorizontalJustifyStart';
4659
+
4660
+ function cn$2(...inputs) {
4661
+ return twMerge(clsx(inputs));
4662
+ }
4663
+ const pathVariants$2 = {
4664
+ normal: {
4665
+ opacity: 1,
4666
+ pathLength: 1,
4667
+ pathOffset: 0,
4668
+ transition: { duration: 0.4 },
4669
+ },
4670
+ animate: {
4671
+ opacity: [0, 1],
4672
+ pathLength: [0, 1],
4673
+ pathOffset: [1, 0],
4674
+ transition: {
4675
+ duration: 0.6,
4676
+ ease: 'linear',
4677
+ },
4678
+ },
4679
+ };
4680
+ const AlignHorizontalSpaceAround = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4681
+ const controls = useAnimation();
4682
+ const loopRef = useRef(loopOnHover);
4683
+ const isControlledRef = useRef(false);
4684
+ const triggerAnimation = useCallback(async () => {
4685
+ await controls.start('animate');
4686
+ await controls.start('normal');
4687
+ if (loopRef.current)
4688
+ triggerAnimation();
4689
+ }, [controls]);
4690
+ useEffect(() => {
4691
+ loopRef.current = loopOnHover;
4692
+ }, [loopOnHover]);
4693
+ useEffect(() => {
4694
+ if (autoAnimateOnLoad)
4695
+ triggerAnimation();
4696
+ }, [autoAnimateOnLoad, triggerAnimation]);
4697
+ useImperativeHandle(ref, () => {
4698
+ isControlledRef.current = true;
4699
+ return {
4700
+ startAnimation: () => controls.start('animate'),
4701
+ stopAnimation: () => controls.start('normal'),
4702
+ };
4703
+ });
4704
+ const handleMouseEnter = (e) => {
4705
+ if (!isControlledRef.current && hoverable)
4706
+ triggerAnimation();
4707
+ onMouseEnter?.(e);
4708
+ };
4709
+ const handleMouseLeave = (e) => {
4710
+ if (!isControlledRef.current && hoverable)
4711
+ controls.start('normal');
4712
+ onMouseLeave?.(e);
4713
+ };
4714
+ const handleClick = (e) => {
4715
+ if (animateOnClick)
4716
+ triggerAnimation();
4717
+ onClick?.(e);
4718
+ };
4719
+ return (jsx("div", { className: cn$2('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "10", x: "9", y: "7", rx: "2", variants: pathVariants$2, initial: "normal", animate: controls }), jsx(motion.path, { d: "M4 22V2", variants: pathVariants$2, initial: "normal", animate: controls }), jsx(motion.path, { d: "M20 22V2", variants: pathVariants$2, initial: "normal", animate: controls })] }) }));
4720
+ });
4721
+ AlignHorizontalSpaceAround.displayName = 'AlignHorizontalSpaceAround';
4722
+
4723
+ function cn$1(...inputs) {
4724
+ return twMerge(clsx(inputs));
4725
+ }
4726
+ const pathVariants$1 = {
4727
+ normal: {
4728
+ opacity: 1,
4729
+ pathLength: 1,
4730
+ pathOffset: 0,
4731
+ transition: { duration: 0.4 },
4732
+ },
4733
+ animate: {
4734
+ opacity: [0, 1],
4735
+ pathLength: [0, 1],
4736
+ pathOffset: [1, 0],
4737
+ transition: {
4738
+ duration: 0.6,
4739
+ ease: 'linear',
4740
+ },
4741
+ },
4742
+ };
4743
+ const AlignHorizontalSpaceBetween = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4744
+ const controls = useAnimation();
4745
+ const loopRef = useRef(loopOnHover);
4746
+ const isControlledRef = useRef(false);
4747
+ const triggerAnimation = useCallback(async () => {
4748
+ await controls.start('animate');
4749
+ await controls.start('normal');
4750
+ if (loopRef.current)
4751
+ triggerAnimation();
4752
+ }, [controls]);
4753
+ useEffect(() => {
4754
+ loopRef.current = loopOnHover;
4755
+ }, [loopOnHover]);
4756
+ useEffect(() => {
4757
+ if (autoAnimateOnLoad)
4758
+ triggerAnimation();
4759
+ }, [autoAnimateOnLoad, triggerAnimation]);
4760
+ useImperativeHandle(ref, () => {
4761
+ isControlledRef.current = true;
4762
+ return {
4763
+ startAnimation: () => controls.start('animate'),
4764
+ stopAnimation: () => controls.start('normal'),
4765
+ };
4766
+ });
4767
+ const handleMouseEnter = (e) => {
4768
+ if (!isControlledRef.current && hoverable)
4769
+ triggerAnimation();
4770
+ onMouseEnter?.(e);
4771
+ };
4772
+ const handleMouseLeave = (e) => {
4773
+ if (!isControlledRef.current && hoverable)
4774
+ controls.start('normal');
4775
+ onMouseLeave?.(e);
4776
+ };
4777
+ const handleClick = (e) => {
4778
+ if (animateOnClick)
4779
+ triggerAnimation();
4780
+ onClick?.(e);
4781
+ };
4782
+ return (jsx("div", { className: cn$1('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.rect, { width: "6", height: "14", x: "3", y: "5", rx: "2", variants: pathVariants$1, initial: "normal", animate: controls }), jsx(motion.rect, { width: "6", height: "10", x: "15", y: "7", rx: "2", variants: pathVariants$1, initial: "normal", animate: controls }), jsx(motion.path, { d: "M3 2v20", variants: pathVariants$1, initial: "normal", animate: controls }), jsx(motion.path, { d: "M21 2v20", variants: pathVariants$1, initial: "normal", animate: controls })] }) }));
4783
+ });
4784
+ AlignHorizontalSpaceBetween.displayName = 'AlignHorizontalSpaceBetween';
4785
+
4786
+ function cn(...inputs) {
4787
+ return twMerge(clsx(inputs));
4788
+ }
4789
+ const pathVariants = {
4790
+ normal: {
4791
+ opacity: 1,
4792
+ pathLength: 1,
4793
+ pathOffset: 0,
4794
+ transition: { duration: 0.4 },
4795
+ },
4796
+ animate: {
4797
+ opacity: [0, 1],
4798
+ pathLength: [0, 1],
4799
+ pathOffset: [1, 0],
4800
+ transition: {
4801
+ duration: 0.6,
4802
+ ease: 'linear',
4803
+ },
4804
+ },
4805
+ };
4806
+ const AlignJustify = forwardRef(({ size = 28, className, style, autoAnimateOnLoad = false, hoverable = true, loopOnHover = false, animateOnClick = false, onMouseEnter, onMouseLeave, onClick, ...props }, ref) => {
4807
+ const controls = useAnimation();
4808
+ const loopRef = useRef(loopOnHover);
4809
+ const isControlledRef = useRef(false);
4810
+ const triggerAnimation = useCallback(async () => {
4811
+ await controls.start('animate');
4812
+ await controls.start('normal');
4813
+ if (loopRef.current)
4814
+ triggerAnimation();
4815
+ }, [controls]);
4816
+ useEffect(() => {
4817
+ loopRef.current = loopOnHover;
4818
+ }, [loopOnHover]);
4819
+ useEffect(() => {
4820
+ if (autoAnimateOnLoad)
4821
+ triggerAnimation();
4822
+ }, [autoAnimateOnLoad, triggerAnimation]);
4823
+ useImperativeHandle(ref, () => {
4824
+ isControlledRef.current = true;
4825
+ return {
4826
+ startAnimation: () => controls.start('animate'),
4827
+ stopAnimation: () => controls.start('normal'),
4828
+ };
4829
+ });
4830
+ const handleMouseEnter = (e) => {
4831
+ if (!isControlledRef.current && hoverable)
4832
+ triggerAnimation();
4833
+ onMouseEnter?.(e);
4834
+ };
4835
+ const handleMouseLeave = (e) => {
4836
+ if (!isControlledRef.current && hoverable)
4837
+ controls.start('normal');
4838
+ onMouseLeave?.(e);
4839
+ };
4840
+ const handleClick = (e) => {
4841
+ if (animateOnClick)
4842
+ triggerAnimation();
4843
+ onClick?.(e);
4844
+ };
4845
+ return (jsx("div", { className: cn('inline-block', className), style: { width: size, height: size, ...style }, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, ...props, children: jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx(motion.path, { d: "M3 12h18", variants: pathVariants, initial: "normal", animate: controls }), jsx(motion.path, { d: "M3 18h18", variants: pathVariants, initial: "normal", animate: controls }), jsx(motion.path, { d: "M3 6h18", variants: pathVariants, initial: "normal", animate: controls })] }) }));
4846
+ });
4847
+ AlignJustify.displayName = 'AlignJustify';
4848
+
4849
+ export { AccessibilityActivity, Activity, AirVent, Airplay, AlarmClock, AlarmClockCheck, AlarmClockMinus, AlarmClockPlus, Album, AlignCenter, AlignCenterHorizontal, AlignCenterVertical, AlignEndHorizontal, AlignEndVertical, AlignHorizontalDistributeCenter, AlignHorizontalDistributeEnd, AlignHorizontalDistributeStart, AlignHorizontalJustifyCenter, AlignHorizontalJustifyEnd, AlignHorizontalJustifyStart, AlignHorizontalSpaceAround, AlignHorizontalSpaceBetween, AlignJustify, ArrowDown, ArrowUp, SquareActivity };
3039
4850
  //# sourceMappingURL=index.js.map