@lindle/linoardo 1.0.7 → 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.cjs +89 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -22
- package/dist/index.d.ts +16 -22
- package/dist/index.js +88 -65
- package/dist/index.js.map +1 -1
- package/dist/styles.css +65 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
412
|
-
const
|
|
413
|
-
const
|
|
414
|
-
const
|
|
415
|
-
const
|
|
416
|
-
const
|
|
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
|
|
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
|
|
516
|
-
()
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
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 ?
|
|
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 =
|
|
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 =
|
|
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] =
|
|
594
|
+
const [internalOpen, setInternalOpen] = React5.useState(defaultOpen);
|
|
581
595
|
const open = isControlled ? Boolean(openProp) : internalOpen;
|
|
582
|
-
const localRootRef =
|
|
583
|
-
const menuRef =
|
|
584
|
-
const activatorRef =
|
|
585
|
-
const closeTimeoutRef =
|
|
586
|
-
const mergedRootRef =
|
|
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] =
|
|
598
|
-
const updateActivatorWidth =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
748
|
+
React5.useEffect(() => {
|
|
735
749
|
return () => clearCloseTimeout();
|
|
736
750
|
}, [clearCloseTimeout]);
|
|
737
|
-
const isMovingWithinMenu =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
799
|
+
const handleActivatorMouseLeave = React5.useCallback(
|
|
786
800
|
(event) => {
|
|
787
801
|
if (disabled || !openOnHover) {
|
|
788
802
|
return;
|
|
@@ -930,7 +944,16 @@ var resolveIconClassName3 = (icon) => {
|
|
|
930
944
|
const classes = [...baseClasses, normalizedName];
|
|
931
945
|
return Array.from(new Set(classes)).join(" ");
|
|
932
946
|
};
|
|
933
|
-
var Input = ({
|
|
947
|
+
var Input = ({
|
|
948
|
+
variant = "outline",
|
|
949
|
+
success,
|
|
950
|
+
error,
|
|
951
|
+
warn,
|
|
952
|
+
icon,
|
|
953
|
+
className,
|
|
954
|
+
wrapperClassName,
|
|
955
|
+
...props
|
|
956
|
+
}) => {
|
|
934
957
|
const classBase = "input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full";
|
|
935
958
|
const variantClasses = {
|
|
936
959
|
outline: "rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary",
|
|
@@ -952,7 +975,7 @@ var Input = ({ variant = "outline", success, error, warn, icon, className, ...pr
|
|
|
952
975
|
const toneClass = status ? statusClasses[status.tone] : void 0;
|
|
953
976
|
const prependIconClass = resolveIconClassName3(icon);
|
|
954
977
|
const prependPadding = prependIconClass ? "pl-10" : void 0;
|
|
955
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
978
|
+
return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
|
|
956
979
|
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
|
|
957
980
|
prependIconClass && /* @__PURE__ */ jsx("i", { className: twMerge("pointer-events-none absolute left-3 ", prependIconClass), "aria-hidden": true }),
|
|
958
981
|
/* @__PURE__ */ jsx("input", { ...props, className: twMerge(classBase, variantClass, toneClass, prependPadding, className) })
|