@lindle/linoardo 1.0.26 → 1.0.27
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/chunk-DDQ7ICWD.js +107 -0
- package/dist/chunk-DDQ7ICWD.js.map +1 -0
- package/dist/{chunk-KI4DBZ2V.js → chunk-S7VLFCLP.js} +46 -3
- package/dist/chunk-S7VLFCLP.js.map +1 -0
- package/dist/index.cjs +98 -103
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/menu.cjs +54 -102
- package/dist/menu.cjs.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/notification.cjs +44 -1
- package/dist/notification.cjs.map +1 -1
- package/dist/notification.js +1 -1
- package/dist/styles.css +42 -0
- package/package.json +1 -1
- package/dist/chunk-KI4DBZ2V.js.map +0 -1
- package/dist/chunk-T37VPLS4.js +0 -155
- package/dist/chunk-T37VPLS4.js.map +0 -1
package/dist/chunk-T37VPLS4.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { twMerge } from 'tailwind-merge';
|
|
3
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
|
-
|
|
5
|
-
// src/Containment/Menu/index.tsx
|
|
6
|
-
var placementClasses = {
|
|
7
|
-
"bottom-start": "left-0 top-full origin-top-left",
|
|
8
|
-
bottom: "left-1/2 top-full -translate-x-1/2 origin-top",
|
|
9
|
-
"bottom-end": "right-0 top-full origin-top-right",
|
|
10
|
-
"top-start": "left-0 bottom-full origin-bottom-left",
|
|
11
|
-
top: "left-1/2 bottom-full -translate-x-1/2 origin-bottom",
|
|
12
|
-
"top-end": "right-0 bottom-full origin-bottom-right"
|
|
13
|
-
};
|
|
14
|
-
var offsetClasses = {
|
|
15
|
-
top: "mb-2",
|
|
16
|
-
bottom: "mt-2"
|
|
17
|
-
};
|
|
18
|
-
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 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
|
|
19
|
-
var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]";
|
|
20
|
-
var Menu = React.forwardRef((props, ref) => {
|
|
21
|
-
const {
|
|
22
|
-
activator,
|
|
23
|
-
children,
|
|
24
|
-
placement = "bottom-start",
|
|
25
|
-
open,
|
|
26
|
-
openOnHover = true,
|
|
27
|
-
openOnFocus = true,
|
|
28
|
-
matchActivatorWidth = false,
|
|
29
|
-
keepMounted = false,
|
|
30
|
-
scrim = false,
|
|
31
|
-
contentClassName,
|
|
32
|
-
contentProps,
|
|
33
|
-
overlayClassName,
|
|
34
|
-
className,
|
|
35
|
-
...rest
|
|
36
|
-
} = props;
|
|
37
|
-
const { onMouseEnter, onMouseLeave, onFocus, onBlur, ...restProps } = rest;
|
|
38
|
-
const hasContent = children !== void 0 && children !== null;
|
|
39
|
-
const isControlled = typeof open === "boolean";
|
|
40
|
-
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);
|
|
41
|
-
const closeTimer = React.useRef(null);
|
|
42
|
-
const visible = isControlled ? Boolean(open) : uncontrolledOpen;
|
|
43
|
-
const shouldRenderContent = hasContent && (keepMounted || visible || !isControlled && (openOnHover || openOnFocus));
|
|
44
|
-
const verticalPlacement = placement.startsWith("top") ? "top" : "bottom";
|
|
45
|
-
const clearCloseTimer = () => {
|
|
46
|
-
if (closeTimer.current !== null) {
|
|
47
|
-
window.clearTimeout(closeTimer.current);
|
|
48
|
-
closeTimer.current = null;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
const openMenu = () => {
|
|
52
|
-
clearCloseTimer();
|
|
53
|
-
if (!isControlled) {
|
|
54
|
-
setUncontrolledOpen(true);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const scheduleClose = () => {
|
|
58
|
-
clearCloseTimer();
|
|
59
|
-
if (!isControlled) {
|
|
60
|
-
closeTimer.current = window.setTimeout(() => {
|
|
61
|
-
setUncontrolledOpen(false);
|
|
62
|
-
closeTimer.current = null;
|
|
63
|
-
}, 120);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
React.useEffect(() => {
|
|
67
|
-
return () => clearCloseTimer();
|
|
68
|
-
}, []);
|
|
69
|
-
const visibilityClasses = visible ? "pointer-events-auto opacity-100 scale-100" : "pointer-events-none opacity-0 scale-95";
|
|
70
|
-
const {
|
|
71
|
-
className: contentExtraClassName,
|
|
72
|
-
style: contentStyle,
|
|
73
|
-
role: contentRole,
|
|
74
|
-
tabIndex: contentTabIndex,
|
|
75
|
-
...restContentProps
|
|
76
|
-
} = contentProps ?? {};
|
|
77
|
-
const overlayNode = scrim && visible ? /* @__PURE__ */ jsx("div", { className: twMerge(overlayBaseClasses, overlayClassName), "aria-hidden": true }) : null;
|
|
78
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
79
|
-
overlayNode,
|
|
80
|
-
/* @__PURE__ */ jsxs(
|
|
81
|
-
"div",
|
|
82
|
-
{
|
|
83
|
-
...restProps,
|
|
84
|
-
ref,
|
|
85
|
-
className: twMerge("relative inline-flex min-w-0 group/menu", className),
|
|
86
|
-
"data-open": visible || void 0,
|
|
87
|
-
onMouseEnter: (event) => {
|
|
88
|
-
if (openOnHover) {
|
|
89
|
-
openMenu();
|
|
90
|
-
}
|
|
91
|
-
onMouseEnter?.(event);
|
|
92
|
-
},
|
|
93
|
-
onMouseLeave: (event) => {
|
|
94
|
-
if (openOnHover) {
|
|
95
|
-
scheduleClose();
|
|
96
|
-
}
|
|
97
|
-
onMouseLeave?.(event);
|
|
98
|
-
},
|
|
99
|
-
onFocus: (event) => {
|
|
100
|
-
if (openOnFocus) {
|
|
101
|
-
openMenu();
|
|
102
|
-
}
|
|
103
|
-
onFocus?.(event);
|
|
104
|
-
},
|
|
105
|
-
onBlur: (event) => {
|
|
106
|
-
if (openOnFocus) {
|
|
107
|
-
scheduleClose();
|
|
108
|
-
}
|
|
109
|
-
onBlur?.(event);
|
|
110
|
-
},
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ jsx("div", { className: "inline-flex w-full min-w-0", children: activator }),
|
|
113
|
-
shouldRenderContent ? /* @__PURE__ */ jsx(
|
|
114
|
-
"div",
|
|
115
|
-
{
|
|
116
|
-
...restContentProps,
|
|
117
|
-
className: twMerge(
|
|
118
|
-
menuBaseClasses,
|
|
119
|
-
placementClasses[placement],
|
|
120
|
-
offsetClasses[verticalPlacement],
|
|
121
|
-
matchActivatorWidth ? "min-w-full" : void 0,
|
|
122
|
-
visibilityClasses,
|
|
123
|
-
contentClassName,
|
|
124
|
-
contentExtraClassName
|
|
125
|
-
),
|
|
126
|
-
"data-state": visible ? "open" : "closed",
|
|
127
|
-
role: contentRole ?? "menu",
|
|
128
|
-
tabIndex: contentTabIndex ?? -1,
|
|
129
|
-
style: contentStyle,
|
|
130
|
-
onMouseEnter: (event) => {
|
|
131
|
-
if (openOnHover) {
|
|
132
|
-
openMenu();
|
|
133
|
-
}
|
|
134
|
-
restContentProps?.onMouseEnter?.(event);
|
|
135
|
-
},
|
|
136
|
-
onMouseLeave: (event) => {
|
|
137
|
-
if (openOnHover) {
|
|
138
|
-
scheduleClose();
|
|
139
|
-
}
|
|
140
|
-
restContentProps?.onMouseLeave?.(event);
|
|
141
|
-
},
|
|
142
|
-
children
|
|
143
|
-
}
|
|
144
|
-
) : null
|
|
145
|
-
]
|
|
146
|
-
}
|
|
147
|
-
)
|
|
148
|
-
] });
|
|
149
|
-
});
|
|
150
|
-
Menu.displayName = "Menu";
|
|
151
|
-
var Menu_default = Menu;
|
|
152
|
-
|
|
153
|
-
export { Menu_default };
|
|
154
|
-
//# sourceMappingURL=chunk-T37VPLS4.js.map
|
|
155
|
-
//# sourceMappingURL=chunk-T37VPLS4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/Menu/index.tsx"],"names":[],"mappings":"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","file":"chunk-T37VPLS4.js","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport type MenuPlacement =\n | 'bottom-start'\n | 'bottom'\n | 'bottom-end'\n | 'top-start'\n | 'top'\n | 'top-end';\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: React.ReactNode;\n children: React.ReactNode;\n placement?: MenuPlacement;\n open?: boolean;\n openOnHover?: boolean;\n openOnFocus?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full origin-top-left',\n bottom: 'left-1/2 top-full -translate-x-1/2 origin-top',\n 'bottom-end': 'right-0 top-full origin-top-right',\n 'top-start': 'left-0 bottom-full origin-bottom-left',\n top: 'left-1/2 bottom-full -translate-x-1/2 origin-bottom',\n 'top-end': 'right-0 bottom-full origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'mb-2',\n bottom: 'mt-2'\n};\n\nconst menuBaseClasses =\n '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 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]';\n\n/**\n * Contextual menu that opens relative to an activator with optional hover/focus behavior and scrim.\n */\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n placement = 'bottom-start',\n open,\n openOnHover = true,\n openOnFocus = true,\n matchActivatorWidth = false,\n keepMounted = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n ...rest\n } = props;\n\n const { onMouseEnter, onMouseLeave, onFocus, onBlur, ...restProps } = rest;\n\n const hasContent = children !== undefined && children !== null;\n const isControlled = typeof open === 'boolean';\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const closeTimer = React.useRef<number | null>(null);\n const visible = isControlled ? Boolean(open) : uncontrolledOpen;\n const shouldRenderContent =\n hasContent && (keepMounted || visible || (!isControlled && (openOnHover || openOnFocus)));\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const clearCloseTimer = () => {\n if (closeTimer.current !== null) {\n window.clearTimeout(closeTimer.current);\n closeTimer.current = null;\n }\n };\n\n const openMenu = () => {\n clearCloseTimer();\n if (!isControlled) {\n setUncontrolledOpen(true);\n }\n };\n\n const scheduleClose = () => {\n clearCloseTimer();\n if (!isControlled) {\n closeTimer.current = window.setTimeout(() => {\n setUncontrolledOpen(false);\n closeTimer.current = null;\n }, 120);\n }\n };\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, []);\n\n const visibilityClasses = visible\n ? 'pointer-events-auto opacity-100 scale-100'\n : 'pointer-events-none opacity-0 scale-95';\n\n const {\n className: contentExtraClassName,\n style: contentStyle,\n role: contentRole,\n tabIndex: contentTabIndex,\n ...restContentProps\n } = contentProps ?? {};\n\n const overlayNode =\n scrim && visible ? (\n <div className={twMerge(overlayBaseClasses, overlayClassName)} aria-hidden />\n ) : null;\n\n return (\n <>\n {overlayNode}\n <div\n {...restProps}\n ref={ref}\n className={twMerge('relative inline-flex min-w-0 group/menu', className)}\n data-open={visible || undefined}\n onMouseEnter={event => {\n if (openOnHover) {\n openMenu();\n }\n onMouseEnter?.(event);\n }}\n onMouseLeave={event => {\n if (openOnHover) {\n scheduleClose();\n }\n onMouseLeave?.(event);\n }}\n onFocus={event => {\n if (openOnFocus) {\n openMenu();\n }\n onFocus?.(event);\n }}\n onBlur={event => {\n if (openOnFocus) {\n scheduleClose();\n }\n onBlur?.(event);\n }}\n >\n <div className='inline-flex w-full min-w-0'>{activator}</div>\n {shouldRenderContent ? (\n <div\n {...restContentProps}\n className={twMerge(\n menuBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n matchActivatorWidth ? 'min-w-full' : undefined,\n visibilityClasses,\n contentClassName,\n contentExtraClassName\n )}\n data-state={visible ? 'open' : 'closed'}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n style={contentStyle}\n onMouseEnter={event => {\n if (openOnHover) {\n openMenu();\n }\n restContentProps?.onMouseEnter?.(event);\n }}\n onMouseLeave={event => {\n if (openOnHover) {\n scheduleClose();\n }\n restContentProps?.onMouseLeave?.(event);\n }}\n >\n {children}\n </div>\n ) : null}\n </div>\n </>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n"]}
|