@lindle/linoardo 1.0.8 → 1.0.9

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/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import * as React6 from 'react';
1
+ import * as React5 from 'react';
2
2
  import { twMerge } from 'tailwind-merge';
3
3
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
4
 
@@ -99,7 +99,7 @@ var sizeClasses = {
99
99
  large: "px-6 py-3 text-lg",
100
100
  "x-large": "px-7 py-3.5 text-xl"
101
101
  };
102
- var Button = React6.forwardRef(
102
+ var Button = React5.forwardRef(
103
103
  ({
104
104
  variant = "solid",
105
105
  color = "primary",
@@ -238,7 +238,7 @@ var resolveIconClassName2 = (icon) => {
238
238
  const normalized = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
239
239
  return Array.from(/* @__PURE__ */ new Set([...baseClasses, normalized])).join(" ");
240
240
  };
241
- var Chip = React6.forwardRef(
241
+ var Chip = React5.forwardRef(
242
242
  ({
243
243
  variant = "solid",
244
244
  color = "primary",
@@ -270,7 +270,7 @@ var Chip = React6.forwardRef(
270
270
  const appendIconClassName = resolveIconClassName2(appendIcon);
271
271
  const closeIconClassName = resolveIconClassName2(closeIcon);
272
272
  const filterIconClassName = filter && selected ? resolveIconClassName2(filterIcon) : void 0;
273
- const handleClick = React6.useCallback(
273
+ const handleClick = React5.useCallback(
274
274
  (event) => {
275
275
  if (disabled) {
276
276
  event.preventDefault();
@@ -281,7 +281,7 @@ var Chip = React6.forwardRef(
281
281
  },
282
282
  [disabled, onClick]
283
283
  );
284
- const handleKeyDown = React6.useCallback(
284
+ const handleKeyDown = React5.useCallback(
285
285
  (event) => {
286
286
  onKeyDown?.(event);
287
287
  if (event.defaultPrevented || disabled || !interactive) {
@@ -294,7 +294,7 @@ var Chip = React6.forwardRef(
294
294
  },
295
295
  [disabled, interactive, onKeyDown]
296
296
  );
297
- const handleCloseClick = React6.useCallback(
297
+ const handleCloseClick = React5.useCallback(
298
298
  (event) => {
299
299
  event.stopPropagation();
300
300
  if (disabled) {
@@ -305,7 +305,7 @@ var Chip = React6.forwardRef(
305
305
  },
306
306
  [disabled, onClose]
307
307
  );
308
- const handleCloseKeyDown = React6.useCallback((event) => {
308
+ const handleCloseKeyDown = React5.useCallback((event) => {
309
309
  if (event.key === " " || event.key === "Enter") {
310
310
  event.stopPropagation();
311
311
  }
@@ -356,15 +356,6 @@ var Chip = React6.forwardRef(
356
356
  );
357
357
  Chip.displayName = "Chip";
358
358
  var Chip_default = Chip;
359
- var defaultListContext = {
360
- density: "default",
361
- lines: "one",
362
- nav: false,
363
- divided: false,
364
- color: "primary"
365
- };
366
- var ListContext = React6.createContext(defaultListContext);
367
- var useListContext = () => React6.useContext(ListContext);
368
359
  var listItemBaseClasses = "relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200";
369
360
  var densityClasses = {
370
361
  default: "px-4 py-3 text-base",
@@ -385,7 +376,7 @@ var accentClasses = {
385
376
  danger: { text: "text-red-600", bg: "bg-red-50", indicator: "bg-red-500" },
386
377
  surface: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" }
387
378
  };
388
- var ListItem = React6.forwardRef((props, ref) => {
379
+ var ListItem = React5.forwardRef((props, ref) => {
389
380
  const {
390
381
  component,
391
382
  href,
@@ -402,18 +393,22 @@ var ListItem = React6.forwardRef((props, ref) => {
402
393
  inset = false,
403
394
  density: densityOverride,
404
395
  lines: linesOverride,
396
+ nav: navOverride,
397
+ divided: dividedOverride,
398
+ color: colorOverride,
405
399
  className,
406
400
  children,
407
401
  tabIndex,
408
402
  role,
409
403
  ...rest
410
404
  } = props;
411
- const listContext = useListContext();
412
- const density = densityOverride ?? listContext.density;
413
- const lines = linesOverride ?? listContext.lines;
414
- const nav = listContext.nav;
415
- const accent = accentClasses[listContext.color] ?? accentClasses.primary;
416
- const shapeClass = listContext.divided ? "rounded-none" : "rounded-lg";
405
+ const density = densityOverride ?? "default";
406
+ const lines = linesOverride ?? "one";
407
+ const nav = navOverride ?? false;
408
+ const divided = dividedOverride ?? false;
409
+ const color = colorOverride ?? "primary";
410
+ const accent = accentClasses[color] ?? accentClasses.primary;
411
+ const shapeClass = divided ? "rounded-none" : "rounded-lg";
417
412
  const Component = component ?? (href ? "a" : "div");
418
413
  const interactive = typeof rest.onClick === "function" || Component === "a" || Component === "button";
419
414
  const resolvedRole = role ?? "listitem";
@@ -492,7 +487,14 @@ var listRoundedClasses = {
492
487
  xl: "rounded-xl",
493
488
  pill: "rounded-full"
494
489
  };
495
- var List = React6.forwardRef((props, ref) => {
490
+ var isListItemElement = (element) => {
491
+ if (!React5.isValidElement(element)) {
492
+ return false;
493
+ }
494
+ const elementType = element.type;
495
+ return element.type === Item_default || elementType.displayName === Item_default.displayName;
496
+ };
497
+ var List = React5.forwardRef((props, ref) => {
496
498
  const {
497
499
  variant = "solid",
498
500
  density = "default",
@@ -512,31 +514,43 @@ var List = React6.forwardRef((props, ref) => {
512
514
  const gapClass = divided ? "p-0" : "gap-1 p-1";
513
515
  const navClass = nav ? "py-1" : void 0;
514
516
  const accentColor = variant === "bw" ? "surface" : color;
515
- const contextValue = React6.useMemo(
516
- () => ({
517
- density,
518
- lines,
519
- nav,
520
- divided,
521
- color: accentColor
522
- }),
523
- [accentColor, density, lines, nav, divided]
524
- );
525
- return /* @__PURE__ */ jsx(ListContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
517
+ const enhanceChild = (child) => {
518
+ if (!React5.isValidElement(child)) {
519
+ return child;
520
+ }
521
+ if (isListItemElement(child)) {
522
+ return React5.cloneElement(child, {
523
+ density: child.props.density ?? density,
524
+ lines: child.props.lines ?? lines,
525
+ nav: child.props.nav ?? nav,
526
+ divided: child.props.divided ?? divided,
527
+ color: child.props.color ?? accentColor
528
+ });
529
+ }
530
+ if (child.props && typeof child.props === "object" && "children" in child.props) {
531
+ const nestedChildren = React5.Children.map(child.props.children, enhanceChild);
532
+ if (nestedChildren !== child.props.children) {
533
+ return React5.cloneElement(child, void 0, nestedChildren);
534
+ }
535
+ }
536
+ return child;
537
+ };
538
+ const resolvedChildren = React5.Children.map(children, enhanceChild);
539
+ return /* @__PURE__ */ jsx(
526
540
  "div",
527
541
  {
528
542
  ...rest,
529
543
  ref,
530
544
  role: role ?? "list",
531
545
  className: twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className),
532
- children
546
+ children: resolvedChildren
533
547
  }
534
- ) });
548
+ );
535
549
  });
536
550
  List.displayName = "List";
537
551
  var List_default = List;
538
552
  var isBrowser = typeof window !== "undefined";
539
- var useIsomorphicLayoutEffect = isBrowser ? React6.useLayoutEffect : React6.useEffect;
553
+ var useIsomorphicLayoutEffect = isBrowser ? React5.useLayoutEffect : React5.useEffect;
540
554
  var placementClasses = {
541
555
  "bottom-start": "left-0 top-full origin-top-left",
542
556
  bottom: "left-1/2 top-full -translate-x-1/2 origin-top",
@@ -551,7 +565,7 @@ var offsetClasses = {
551
565
  };
552
566
  var menuBaseClasses = "absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 data-[state=closed]:scale-95 data-[state=open]:opacity-100 data-[state=open]:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
553
567
  var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]";
554
- var Menu = React6.forwardRef((props, ref) => {
568
+ var Menu = React5.forwardRef((props, ref) => {
555
569
  const {
556
570
  activator,
557
571
  children,
@@ -573,17 +587,17 @@ var Menu = React6.forwardRef((props, ref) => {
573
587
  onMouseLeave: rootMouseLeave,
574
588
  ...rest
575
589
  } = props;
576
- const baseId = React6.useId();
590
+ const baseId = React5.useId();
577
591
  const menuId = `${baseId}-menu`;
578
592
  const activatorId = `${baseId}-activator`;
579
593
  const isControlled = typeof openProp === "boolean";
580
- const [internalOpen, setInternalOpen] = React6.useState(defaultOpen);
594
+ const [internalOpen, setInternalOpen] = React5.useState(defaultOpen);
581
595
  const open = isControlled ? Boolean(openProp) : internalOpen;
582
- const localRootRef = React6.useRef(null);
583
- const menuRef = React6.useRef(null);
584
- const activatorRef = React6.useRef(null);
585
- const closeTimeoutRef = React6.useRef(null);
586
- const mergedRootRef = React6.useCallback(
596
+ const localRootRef = React5.useRef(null);
597
+ const menuRef = React5.useRef(null);
598
+ const activatorRef = React5.useRef(null);
599
+ const closeTimeoutRef = React5.useRef(null);
600
+ const mergedRootRef = React5.useCallback(
587
601
  (node) => {
588
602
  localRootRef.current = node;
589
603
  if (typeof ref === "function") {
@@ -594,8 +608,8 @@ var Menu = React6.forwardRef((props, ref) => {
594
608
  },
595
609
  [ref]
596
610
  );
597
- const [activatorWidth, setActivatorWidth] = React6.useState();
598
- const updateActivatorWidth = React6.useCallback(() => {
611
+ const [activatorWidth, setActivatorWidth] = React5.useState();
612
+ const updateActivatorWidth = React5.useCallback(() => {
599
613
  if (!matchActivatorWidth) {
600
614
  setActivatorWidth(void 0);
601
615
  return;
@@ -618,7 +632,7 @@ var Menu = React6.forwardRef((props, ref) => {
618
632
  observer.observe(activatorRef.current);
619
633
  return () => observer.disconnect();
620
634
  }, [matchActivatorWidth, updateActivatorWidth]);
621
- const setOpen = React6.useCallback(
635
+ const setOpen = React5.useCallback(
622
636
  (nextOpen) => {
623
637
  if (disabled || open === nextOpen) {
624
638
  return;
@@ -630,7 +644,7 @@ var Menu = React6.forwardRef((props, ref) => {
630
644
  },
631
645
  [disabled, isControlled, onOpenChange, open]
632
646
  );
633
- React6.useEffect(() => {
647
+ React5.useEffect(() => {
634
648
  if (!disabled || !open) {
635
649
  return;
636
650
  }
@@ -639,7 +653,7 @@ var Menu = React6.forwardRef((props, ref) => {
639
653
  }
640
654
  onOpenChange?.(false);
641
655
  }, [disabled, open, isControlled, onOpenChange]);
642
- React6.useEffect(() => {
656
+ React5.useEffect(() => {
643
657
  if (!open) {
644
658
  return;
645
659
  }
@@ -667,7 +681,7 @@ var Menu = React6.forwardRef((props, ref) => {
667
681
  document.removeEventListener("keydown", handleKeyDown);
668
682
  };
669
683
  }, [open, setOpen]);
670
- React6.useEffect(() => {
684
+ React5.useEffect(() => {
671
685
  if (!open) {
672
686
  return;
673
687
  }
@@ -680,7 +694,7 @@ var Menu = React6.forwardRef((props, ref) => {
680
694
  });
681
695
  return () => window.cancelAnimationFrame(id);
682
696
  }, [open]);
683
- const setActivatorNode = React6.useCallback(
697
+ const setActivatorNode = React5.useCallback(
684
698
  (node) => {
685
699
  activatorRef.current = node;
686
700
  if (node && matchActivatorWidth) {
@@ -689,7 +703,7 @@ var Menu = React6.forwardRef((props, ref) => {
689
703
  },
690
704
  [matchActivatorWidth]
691
705
  );
692
- const handleActivatorClick = React6.useCallback(
706
+ const handleActivatorClick = React5.useCallback(
693
707
  (event) => {
694
708
  event.preventDefault();
695
709
  if (disabled) {
@@ -699,7 +713,7 @@ var Menu = React6.forwardRef((props, ref) => {
699
713
  },
700
714
  [disabled, open, setOpen]
701
715
  );
702
- const handleActivatorKeyDown = React6.useCallback(
716
+ const handleActivatorKeyDown = React5.useCallback(
703
717
  (event) => {
704
718
  if (event.key === "Enter" || event.key === " ") {
705
719
  event.preventDefault();
@@ -712,7 +726,7 @@ var Menu = React6.forwardRef((props, ref) => {
712
726
  },
713
727
  [open, setOpen]
714
728
  );
715
- const clearCloseTimeout = React6.useCallback(() => {
729
+ const clearCloseTimeout = React5.useCallback(() => {
716
730
  if (closeTimeoutRef.current !== null) {
717
731
  if (isBrowser) {
718
732
  window.clearTimeout(closeTimeoutRef.current);
@@ -720,7 +734,7 @@ var Menu = React6.forwardRef((props, ref) => {
720
734
  closeTimeoutRef.current = null;
721
735
  }
722
736
  }, []);
723
- const scheduleClose = React6.useCallback(() => {
737
+ const scheduleClose = React5.useCallback(() => {
724
738
  if (!isBrowser) {
725
739
  setOpen(false);
726
740
  return;
@@ -731,10 +745,10 @@ var Menu = React6.forwardRef((props, ref) => {
731
745
  closeTimeoutRef.current = null;
732
746
  }, 150);
733
747
  }, [clearCloseTimeout, setOpen]);
734
- React6.useEffect(() => {
748
+ React5.useEffect(() => {
735
749
  return () => clearCloseTimeout();
736
750
  }, [clearCloseTimeout]);
737
- const isMovingWithinMenu = React6.useCallback(
751
+ const isMovingWithinMenu = React5.useCallback(
738
752
  (event) => {
739
753
  const nextTarget = event.relatedTarget;
740
754
  if (!nextTarget || !localRootRef.current) {
@@ -744,7 +758,7 @@ var Menu = React6.forwardRef((props, ref) => {
744
758
  },
745
759
  [localRootRef]
746
760
  );
747
- const handleRootMouseEnter = React6.useCallback(
761
+ const handleRootMouseEnter = React5.useCallback(
748
762
  (event) => {
749
763
  rootMouseEnter?.(event);
750
764
  if (event.defaultPrevented) {
@@ -757,7 +771,7 @@ var Menu = React6.forwardRef((props, ref) => {
757
771
  },
758
772
  [clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]
759
773
  );
760
- const handleRootMouseLeave = React6.useCallback(
774
+ const handleRootMouseLeave = React5.useCallback(
761
775
  (event) => {
762
776
  rootMouseLeave?.(event);
763
777
  if (event.defaultPrevented) {
@@ -772,7 +786,7 @@ var Menu = React6.forwardRef((props, ref) => {
772
786
  },
773
787
  [isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]
774
788
  );
775
- const handleActivatorMouseEnter = React6.useCallback(
789
+ const handleActivatorMouseEnter = React5.useCallback(
776
790
  (_event) => {
777
791
  if (disabled) {
778
792
  return;
@@ -782,7 +796,7 @@ var Menu = React6.forwardRef((props, ref) => {
782
796
  },
783
797
  [clearCloseTimeout, disabled, setOpen]
784
798
  );
785
- const handleActivatorMouseLeave = React6.useCallback(
799
+ const handleActivatorMouseLeave = React5.useCallback(
786
800
  (event) => {
787
801
  if (disabled || !openOnHover) {
788
802
  return;