@lindle/linoardo 1.0.15 → 1.0.17
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/ExpansionPanelItem-Bd6ZWGkR.d.cts +58 -0
- package/dist/ExpansionPanelItem-DOjgDeB6.d.ts +58 -0
- package/dist/button.cjs +206 -0
- package/dist/button.cjs.map +1 -0
- package/dist/button.d.cts +19 -0
- package/dist/button.d.ts +19 -0
- package/dist/button.js +4 -0
- package/dist/button.js.map +1 -0
- package/dist/chip.cjs +247 -0
- package/dist/chip.cjs.map +1 -0
- package/dist/chip.d.cts +368 -0
- package/dist/chip.d.ts +368 -0
- package/dist/chip.js +4 -0
- package/dist/chip.js.map +1 -0
- package/dist/chunk-32KFNI6K.js +114 -0
- package/dist/chunk-32KFNI6K.js.map +1 -0
- package/dist/chunk-3EGIRBQ3.js +100 -0
- package/dist/chunk-3EGIRBQ3.js.map +1 -0
- package/dist/chunk-5GY2JCBO.js +92 -0
- package/dist/chunk-5GY2JCBO.js.map +1 -0
- package/dist/chunk-7LLAWEDF.js +179 -0
- package/dist/chunk-7LLAWEDF.js.map +1 -0
- package/dist/chunk-E32P5AHO.js +125 -0
- package/dist/chunk-E32P5AHO.js.map +1 -0
- package/dist/chunk-GA6HSRN6.js +235 -0
- package/dist/chunk-GA6HSRN6.js.map +1 -0
- package/dist/chunk-IEILIKS2.js +8 -0
- package/dist/chunk-IEILIKS2.js.map +1 -0
- package/dist/chunk-PWK6MLZT.js +239 -0
- package/dist/chunk-PWK6MLZT.js.map +1 -0
- package/dist/chunk-TTDFAKOL.js +98 -0
- package/dist/chunk-TTDFAKOL.js.map +1 -0
- package/dist/chunk-U6NAIIDI.js +99 -0
- package/dist/chunk-U6NAIIDI.js.map +1 -0
- package/dist/chunk-XFPBICJG.js +127 -0
- package/dist/chunk-XFPBICJG.js.map +1 -0
- package/dist/dialog.cjs +121 -0
- package/dist/dialog.cjs.map +1 -0
- package/dist/dialog.d.cts +17 -0
- package/dist/dialog.d.ts +17 -0
- package/dist/dialog.js +3 -0
- package/dist/dialog.js.map +1 -0
- package/dist/expansion-panel/item.cjs +195 -0
- package/dist/expansion-panel/item.cjs.map +1 -0
- package/dist/expansion-panel/item.d.cts +3 -0
- package/dist/expansion-panel/item.d.ts +3 -0
- package/dist/expansion-panel/item.js +3 -0
- package/dist/expansion-panel/item.js.map +1 -0
- package/dist/expansion-panel.cjs +356 -0
- package/dist/expansion-panel.cjs.map +1 -0
- package/dist/expansion-panel.d.cts +8 -0
- package/dist/expansion-panel.d.ts +8 -0
- package/dist/expansion-panel.js +4 -0
- package/dist/expansion-panel.js.map +1 -0
- package/dist/global.types-E2uVLemv.d.cts +7 -0
- package/dist/global.types-E2uVLemv.d.ts +7 -0
- package/dist/index-Md3BuoGM.d.cts +32 -0
- package/dist/index-d_JuI06O.d.ts +32 -0
- package/dist/index.cjs +148 -144
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -549
- package/dist/index.d.ts +12 -549
- package/dist/index.js +11 -1330
- package/dist/index.js.map +1 -1
- package/dist/input.cjs +106 -0
- package/dist/input.cjs.map +1 -0
- package/dist/input.d.cts +22 -0
- package/dist/input.d.ts +22 -0
- package/dist/input.js +4 -0
- package/dist/input.js.map +1 -0
- package/dist/list/item.cjs +149 -0
- package/dist/list/item.cjs.map +1 -0
- package/dist/list/item.d.cts +3 -0
- package/dist/list/item.d.ts +3 -0
- package/dist/list/item.js +3 -0
- package/dist/list/item.js.map +1 -0
- package/dist/list.cjs +235 -0
- package/dist/list.cjs.map +1 -0
- package/dist/list.d.cts +17 -0
- package/dist/list.d.ts +17 -0
- package/dist/list.js +4 -0
- package/dist/list.js.map +1 -0
- package/dist/menu.cjs +122 -0
- package/dist/menu.cjs.map +1 -0
- package/dist/menu.d.cts +20 -0
- package/dist/menu.d.ts +20 -0
- package/dist/menu.js +3 -0
- package/dist/menu.js.map +1 -0
- package/dist/styles.css +0 -24
- package/dist/tooltip.cjs +136 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.d.cts +19 -0
- package/dist/tooltip.d.ts +19 -0
- package/dist/tooltip.js +3 -0
- package/dist/tooltip.js.map +1 -0
- package/package.json +52 -2
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { forwardRef, useState, useRef, isValidElement, cloneElement } from 'react';
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/Containment/ExpansionPanel/ExpansionPanelItem.tsx
|
|
6
|
+
var EXPANSION_PANEL_CONTEXT_PROP = "__expansionPanelContext";
|
|
7
|
+
var EXPANSION_PANEL_ITEM_MARKER = "__isExpansionPanelItem";
|
|
8
|
+
var hasMarker = (type) => {
|
|
9
|
+
if (!type || typeof type !== "function" && typeof type !== "object") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (type[EXPANSION_PANEL_ITEM_MARKER]) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
const innerType = type.type;
|
|
16
|
+
if (innerType && innerType !== type) {
|
|
17
|
+
return hasMarker(innerType);
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
};
|
|
21
|
+
var traverseNode = (node, value) => {
|
|
22
|
+
if (Array.isArray(node)) {
|
|
23
|
+
let changed = false;
|
|
24
|
+
const nextArray = node.map((child) => {
|
|
25
|
+
const result = traverseNode(child, value);
|
|
26
|
+
if (result.changed) {
|
|
27
|
+
changed = true;
|
|
28
|
+
}
|
|
29
|
+
return result.node;
|
|
30
|
+
});
|
|
31
|
+
return { node: changed ? nextArray : node, changed };
|
|
32
|
+
}
|
|
33
|
+
if (node === null || node === void 0 || typeof node === "boolean" || typeof node === "string" || typeof node === "number") {
|
|
34
|
+
return { node, changed: false };
|
|
35
|
+
}
|
|
36
|
+
if (!isValidElement(node)) {
|
|
37
|
+
return { node, changed: false };
|
|
38
|
+
}
|
|
39
|
+
const { node: mappedChildren, changed: childrenChanged } = traverseNode(node.props.children, value);
|
|
40
|
+
const shouldInject = hasMarker(node.type);
|
|
41
|
+
if (!shouldInject && !childrenChanged) {
|
|
42
|
+
return { node, changed: false };
|
|
43
|
+
}
|
|
44
|
+
const injectedProps = shouldInject ? { [EXPANSION_PANEL_CONTEXT_PROP]: value } : void 0;
|
|
45
|
+
const cloned = mappedChildren === void 0 ? cloneElement(node, injectedProps) : cloneElement(node, injectedProps, mappedChildren);
|
|
46
|
+
return { node: cloned, changed: true };
|
|
47
|
+
};
|
|
48
|
+
var injectExpansionPanelContext = (children, value) => traverseNode(children, value).node;
|
|
49
|
+
var markExpansionPanelItem = (component) => {
|
|
50
|
+
if (typeof component !== "function" && (typeof component !== "object" || component === null)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
component[EXPANSION_PANEL_ITEM_MARKER] = true;
|
|
54
|
+
};
|
|
55
|
+
var densityClasses = {
|
|
56
|
+
comfortable: "py-5",
|
|
57
|
+
default: "py-4",
|
|
58
|
+
compact: "py-3"
|
|
59
|
+
};
|
|
60
|
+
var roundedClasses = {
|
|
61
|
+
none: "rounded-none",
|
|
62
|
+
sm: "rounded-sm",
|
|
63
|
+
md: "rounded-md",
|
|
64
|
+
lg: "rounded-lg",
|
|
65
|
+
xl: "rounded-xl"
|
|
66
|
+
};
|
|
67
|
+
var itemVariantClasses = {
|
|
68
|
+
elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
|
|
69
|
+
outlined: "bg-white border border-gray-200",
|
|
70
|
+
tonal: "bg-gray-50 border border-gray-100",
|
|
71
|
+
plain: "bg-transparent border border-transparent"
|
|
72
|
+
};
|
|
73
|
+
var accentClasses = {
|
|
74
|
+
primary: { text: "text-primary", bg: "bg-primary/5", border: "border-primary/30" },
|
|
75
|
+
neutral: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
|
|
76
|
+
info: { text: "text-sky-600", bg: "bg-sky-50", border: "border-sky-200" },
|
|
77
|
+
success: { text: "text-emerald-600", bg: "bg-emerald-50", border: "border-emerald-200" },
|
|
78
|
+
warning: { text: "text-amber-600", bg: "bg-amber-50", border: "border-amber-200" },
|
|
79
|
+
danger: { text: "text-red-600", bg: "bg-red-50", border: "border-red-200" },
|
|
80
|
+
surface: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
|
|
81
|
+
bw: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" }
|
|
82
|
+
};
|
|
83
|
+
var uniqueIdCounter = 0;
|
|
84
|
+
var generateId = (prefix) => `${prefix}-${++uniqueIdCounter}`;
|
|
85
|
+
var ExpansionPanelItemInner = (props) => {
|
|
86
|
+
const {
|
|
87
|
+
value,
|
|
88
|
+
title,
|
|
89
|
+
subtitle,
|
|
90
|
+
text,
|
|
91
|
+
prepend,
|
|
92
|
+
append,
|
|
93
|
+
expandIcon,
|
|
94
|
+
collapseIcon,
|
|
95
|
+
hideToggleIcon = false,
|
|
96
|
+
headerClassName,
|
|
97
|
+
contentClassName,
|
|
98
|
+
className,
|
|
99
|
+
disabled = false,
|
|
100
|
+
children,
|
|
101
|
+
color: colorOverride,
|
|
102
|
+
forwardedRef,
|
|
103
|
+
__expansionPanelContext,
|
|
104
|
+
...rest
|
|
105
|
+
} = props;
|
|
106
|
+
const [standaloneExpanded, setStandaloneExpanded] = useState(false);
|
|
107
|
+
const generatedValueRef = useRef(null);
|
|
108
|
+
if (generatedValueRef.current === null) {
|
|
109
|
+
generatedValueRef.current = generateId("expansion-panel-value");
|
|
110
|
+
}
|
|
111
|
+
const generatedValue = generatedValueRef.current;
|
|
112
|
+
const headerIdRef = useRef(null);
|
|
113
|
+
if (!headerIdRef.current) {
|
|
114
|
+
headerIdRef.current = generateId("expansion-panel-header");
|
|
115
|
+
}
|
|
116
|
+
const headerId = headerIdRef.current;
|
|
117
|
+
const contentIdRef = useRef(null);
|
|
118
|
+
if (!contentIdRef.current) {
|
|
119
|
+
contentIdRef.current = generateId("expansion-panel-content");
|
|
120
|
+
}
|
|
121
|
+
const contentId = contentIdRef.current;
|
|
122
|
+
const context = __expansionPanelContext ?? null;
|
|
123
|
+
const panelValue = value ?? generatedValue;
|
|
124
|
+
const density = context?.density ?? "default";
|
|
125
|
+
const color = colorOverride ?? context?.color ?? "primary";
|
|
126
|
+
const divider = context?.divider ?? true;
|
|
127
|
+
const variant = context?.variant ?? "elevated";
|
|
128
|
+
const rounded = context?.rounded ?? "lg";
|
|
129
|
+
const accent = accentClasses[color] ?? accentClasses.primary;
|
|
130
|
+
const isExpanded = context ? context.expandedValues.includes(panelValue) : standaloneExpanded;
|
|
131
|
+
const rootSurface = divider ? "bg-transparent border-0 shadow-none" : itemVariantClasses[variant];
|
|
132
|
+
const shapeClass = divider ? void 0 : roundedClasses[rounded] ?? roundedClasses.lg;
|
|
133
|
+
const densityPadding = densityClasses[density] ?? densityClasses.default;
|
|
134
|
+
const disabledClass = disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer";
|
|
135
|
+
const titleClass = isExpanded ? accent.text : void 0;
|
|
136
|
+
const activeBorderClass = twMerge("border-l-2 border-transparent", isExpanded ? accent.border : void 0);
|
|
137
|
+
const defaultToggleIcon = /* @__PURE__ */ jsx("i", { className: "mdi mdi-chevron-down text-lg leading-none transition-transform duration-200", "aria-hidden": true });
|
|
138
|
+
const hasContent = Boolean(children ?? text);
|
|
139
|
+
const contentAnimationClass = isExpanded ? "pb-5 opacity-100" : "pb-0 opacity-0";
|
|
140
|
+
const toggleIconNode = hideToggleIcon ? null : isExpanded && collapseIcon ? collapseIcon : expandIcon ?? defaultToggleIcon;
|
|
141
|
+
const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;
|
|
142
|
+
const toggleWrapperClass = twMerge(
|
|
143
|
+
"ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200",
|
|
144
|
+
shouldRotateDefaultIcon && isExpanded ? "rotate-180" : void 0
|
|
145
|
+
);
|
|
146
|
+
const handleToggle = () => {
|
|
147
|
+
if (disabled) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (context) {
|
|
151
|
+
context.toggle(panelValue, disabled);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
setStandaloneExpanded((prev) => !prev);
|
|
155
|
+
};
|
|
156
|
+
return /* @__PURE__ */ jsxs(
|
|
157
|
+
"div",
|
|
158
|
+
{
|
|
159
|
+
...rest,
|
|
160
|
+
ref: forwardedRef,
|
|
161
|
+
className: twMerge(
|
|
162
|
+
"expansion-panel-item flex flex-col overflow-hidden transition-colors duration-200",
|
|
163
|
+
rootSurface,
|
|
164
|
+
shapeClass,
|
|
165
|
+
className
|
|
166
|
+
),
|
|
167
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
168
|
+
"data-disabled": disabled || void 0,
|
|
169
|
+
children: [
|
|
170
|
+
/* @__PURE__ */ jsxs(
|
|
171
|
+
"button",
|
|
172
|
+
{
|
|
173
|
+
type: "button",
|
|
174
|
+
id: headerId,
|
|
175
|
+
onClick: handleToggle,
|
|
176
|
+
disabled,
|
|
177
|
+
"aria-expanded": isExpanded,
|
|
178
|
+
"aria-controls": hasContent ? contentId : void 0,
|
|
179
|
+
className: twMerge(
|
|
180
|
+
"flex w-full items-center gap-4 px-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
|
|
181
|
+
densityPadding,
|
|
182
|
+
disabledClass,
|
|
183
|
+
isExpanded ? accent.bg : void 0,
|
|
184
|
+
headerClassName
|
|
185
|
+
),
|
|
186
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
187
|
+
children: [
|
|
188
|
+
prepend && /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: prepend }),
|
|
189
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 text-left", children: [
|
|
190
|
+
title && /* @__PURE__ */ jsx("span", { className: twMerge("truncate font-medium text-gray-900", titleClass), children: title }),
|
|
191
|
+
subtitle && /* @__PURE__ */ jsx("span", { className: "text-sm text-gray-500", children: subtitle })
|
|
192
|
+
] }),
|
|
193
|
+
append && /* @__PURE__ */ jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500", children: append }),
|
|
194
|
+
!hideToggleIcon && /* @__PURE__ */ jsx("span", { className: toggleWrapperClass, children: toggleIconNode })
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
),
|
|
198
|
+
hasContent && /* @__PURE__ */ jsx(
|
|
199
|
+
"div",
|
|
200
|
+
{
|
|
201
|
+
className: "grid overflow-hidden border-t border-gray-100 transition-all duration-200 ease-in-out",
|
|
202
|
+
style: { gridTemplateRows: isExpanded ? "1fr" : "0fr" },
|
|
203
|
+
"aria-hidden": isExpanded ? void 0 : true,
|
|
204
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
205
|
+
children: /* @__PURE__ */ jsx(
|
|
206
|
+
"div",
|
|
207
|
+
{
|
|
208
|
+
id: contentId,
|
|
209
|
+
role: "region",
|
|
210
|
+
"aria-labelledby": headerId,
|
|
211
|
+
"data-state": isExpanded ? "open" : "closed",
|
|
212
|
+
className: twMerge(
|
|
213
|
+
"min-h-0 px-4 pt-0 text-sm text-gray-600 transition-all duration-200",
|
|
214
|
+
activeBorderClass,
|
|
215
|
+
contentAnimationClass,
|
|
216
|
+
isExpanded ? "pointer-events-auto" : "pointer-events-none",
|
|
217
|
+
contentClassName
|
|
218
|
+
),
|
|
219
|
+
children: children ?? text
|
|
220
|
+
}
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
)
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
};
|
|
228
|
+
var ExpansionPanelItem = forwardRef((props, ref) => /* @__PURE__ */ jsx(ExpansionPanelItemInner, { ...props, forwardedRef: ref }));
|
|
229
|
+
ExpansionPanelItem.displayName = "ExpansionPanelItem";
|
|
230
|
+
markExpansionPanelItem(ExpansionPanelItem);
|
|
231
|
+
var ExpansionPanelItem_default = ExpansionPanelItem;
|
|
232
|
+
|
|
233
|
+
export { ExpansionPanelItem_default, injectExpansionPanelContext };
|
|
234
|
+
//# sourceMappingURL=chunk-GA6HSRN6.js.map
|
|
235
|
+
//# sourceMappingURL=chunk-GA6HSRN6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Containment/ExpansionPanel/context.ts","../src/Containment/ExpansionPanel/ExpansionPanelItem.tsx"],"names":[],"mappings":"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","file":"chunk-GA6HSRN6.js","sourcesContent":["import { cloneElement, isValidElement } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { ExpansionPanelContextValue } from './types.expansion-panel';\n\nexport const EXPANSION_PANEL_CONTEXT_PROP = '__expansionPanelContext' as const;\nconst EXPANSION_PANEL_ITEM_MARKER = '__isExpansionPanelItem';\n\ntype MarkerTarget = Record<string | number | symbol, unknown> & {\n type?: unknown;\n};\n\nconst hasMarker = (type: unknown): boolean => {\n if (!type || (typeof type !== 'function' && typeof type !== 'object')) {\n return false;\n }\n\n if ((type as MarkerTarget)[EXPANSION_PANEL_ITEM_MARKER]) {\n return true;\n }\n\n const innerType = (type as MarkerTarget).type;\n if (innerType && innerType !== type) {\n return hasMarker(innerType);\n }\n\n return false;\n};\n\nconst traverseNode = (\n node: ReactNode,\n value: ExpansionPanelContextValue\n): { node: ReactNode; changed: boolean } => {\n if (Array.isArray(node)) {\n let changed = false;\n const nextArray = node.map(child => {\n const result = traverseNode(child, value);\n if (result.changed) {\n changed = true;\n }\n return result.node;\n });\n return { node: changed ? nextArray : node, changed };\n }\n\n if (\n node === null ||\n node === undefined ||\n typeof node === 'boolean' ||\n typeof node === 'string' ||\n typeof node === 'number'\n ) {\n return { node, changed: false };\n }\n\n if (!isValidElement(node)) {\n return { node, changed: false };\n }\n\n const { node: mappedChildren, changed: childrenChanged } = traverseNode(node.props.children, value);\n const shouldInject = hasMarker(node.type);\n\n if (!shouldInject && !childrenChanged) {\n return { node, changed: false };\n }\n\n const injectedProps = shouldInject ? { [EXPANSION_PANEL_CONTEXT_PROP]: value } : undefined;\n const cloned =\n mappedChildren === undefined\n ? cloneElement(node, injectedProps)\n : cloneElement(node, injectedProps, mappedChildren);\n\n return { node: cloned, changed: true };\n};\n\nexport const injectExpansionPanelContext = (\n children: ReactNode,\n value: ExpansionPanelContextValue\n): ReactNode => traverseNode(children, value).node;\n\nexport const markExpansionPanelItem = (component: unknown) => {\n if (typeof component !== 'function' && (typeof component !== 'object' || component === null)) {\n return;\n }\n\n (component as MarkerTarget)[EXPANSION_PANEL_ITEM_MARKER] = true;\n};\n","import { forwardRef, useRef, useState } from 'react';\nimport type { Ref } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { markExpansionPanelItem } from './context';\nimport type {\n ExpansionPanelDensity,\n ExpansionPanelItemProps,\n ExpansionPanelValue,\n ExpansionPanelContextValue\n} from './types.expansion-panel';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nconst densityClasses: Record<ExpansionPanelDensity, string> = {\n comfortable: 'py-5',\n default: 'py-4',\n compact: 'py-3'\n};\n\nconst roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl'\n};\n\nconst itemVariantClasses = {\n elevated: 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5',\n outlined: 'bg-white border border-gray-200',\n tonal: 'bg-gray-50 border border-gray-100',\n plain: 'bg-transparent border border-transparent'\n};\n\nconst accentClasses: Record<Palette, { text: string; bg: string; border: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/5', border: 'border-primary/30' },\n neutral: { text: 'text-gray-900', bg: 'bg-gray-100', border: 'border-gray-200' },\n info: { text: 'text-sky-600', bg: 'bg-sky-50', border: 'border-sky-200' },\n success: { text: 'text-emerald-600', bg: 'bg-emerald-50', border: 'border-emerald-200' },\n warning: { text: 'text-amber-600', bg: 'bg-amber-50', border: 'border-amber-200' },\n danger: { text: 'text-red-600', bg: 'bg-red-50', border: 'border-red-200' },\n surface: { text: 'text-gray-900', bg: 'bg-gray-100', border: 'border-gray-200' },\n bw: { text: 'text-gray-900', bg: 'bg-gray-100', border: 'border-gray-200' }\n};\n\nlet uniqueIdCounter = 0;\nconst generateId = (prefix: string) => `${prefix}-${++uniqueIdCounter}`;\n\ntype ForwardedRef = Ref<HTMLDivElement>;\n\ninterface ExpansionPanelItemInnerProps extends ExpansionPanelItemProps {\n forwardedRef?: ForwardedRef;\n}\n\nconst ExpansionPanelItemInner = (props: ExpansionPanelItemInnerProps) => {\n const {\n value,\n title,\n subtitle,\n text,\n prepend,\n append,\n expandIcon,\n collapseIcon,\n hideToggleIcon = false,\n headerClassName,\n contentClassName,\n className,\n disabled = false,\n children,\n color: colorOverride,\n forwardedRef,\n __expansionPanelContext,\n ...rest\n } = props;\n\n const [standaloneExpanded, setStandaloneExpanded] = useState(false);\n\n const generatedValueRef = useRef<ExpansionPanelValue | null>(null);\n if (generatedValueRef.current === null) {\n generatedValueRef.current = generateId('expansion-panel-value');\n }\n const generatedValue = generatedValueRef.current as ExpansionPanelValue;\n\n const headerIdRef = useRef<string | null>(null);\n if (!headerIdRef.current) {\n headerIdRef.current = generateId('expansion-panel-header');\n }\n const headerId = headerIdRef.current as string;\n\n const contentIdRef = useRef<string | null>(null);\n if (!contentIdRef.current) {\n contentIdRef.current = generateId('expansion-panel-content');\n }\n const contentId = contentIdRef.current as string;\n\n const context: ExpansionPanelContextValue | null = __expansionPanelContext ?? null;\n const panelValue = value ?? generatedValue;\n const density = context?.density ?? 'default';\n const color = colorOverride ?? context?.color ?? 'primary';\n const divider = context?.divider ?? true;\n const variant = context?.variant ?? 'elevated';\n const rounded = context?.rounded ?? 'lg';\n const accent = accentClasses[color] ?? accentClasses.primary;\n const isExpanded = context ? context.expandedValues.includes(panelValue) : standaloneExpanded;\n\n const rootSurface = divider ? 'bg-transparent border-0 shadow-none' : itemVariantClasses[variant];\n const shapeClass = divider ? undefined : roundedClasses[rounded] ?? roundedClasses.lg;\n const densityPadding = densityClasses[density] ?? densityClasses.default;\n const disabledClass = disabled ? 'cursor-not-allowed opacity-60' : 'cursor-pointer';\n const titleClass = isExpanded ? accent.text : undefined;\n const activeBorderClass = twMerge('border-l-2 border-transparent', isExpanded ? accent.border : undefined);\n const defaultToggleIcon = (\n <i className='mdi mdi-chevron-down text-lg leading-none transition-transform duration-200' aria-hidden />\n );\n\n const hasContent = Boolean(children ?? text);\n const contentAnimationClass = isExpanded ? 'pb-5 opacity-100' : 'pb-0 opacity-0';\n const toggleIconNode = hideToggleIcon\n ? null\n : isExpanded && collapseIcon\n ? collapseIcon\n : expandIcon ?? defaultToggleIcon;\n\n const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;\n const toggleWrapperClass = twMerge(\n 'ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200',\n shouldRotateDefaultIcon && isExpanded ? 'rotate-180' : undefined\n );\n\n const handleToggle = () => {\n if (disabled) {\n return;\n }\n\n if (context) {\n context.toggle(panelValue, disabled);\n return;\n }\n\n setStandaloneExpanded(prev => !prev);\n };\n\n return (\n <div\n {...rest}\n ref={forwardedRef}\n className={twMerge(\n 'expansion-panel-item flex flex-col overflow-hidden transition-colors duration-200',\n rootSurface,\n shapeClass,\n className\n )}\n data-state={isExpanded ? 'open' : 'closed'}\n data-disabled={disabled || undefined}\n >\n <button\n type='button'\n id={headerId}\n onClick={handleToggle}\n disabled={disabled}\n aria-expanded={isExpanded}\n aria-controls={hasContent ? contentId : undefined}\n className={twMerge(\n 'flex w-full items-center gap-4 px-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40',\n densityPadding,\n disabledClass,\n isExpanded ? accent.bg : undefined,\n headerClassName\n )}\n data-state={isExpanded ? 'open' : 'closed'}\n >\n {prepend && <span className='flex h-10 w-10 items-center justify-center text-gray-500'>{prepend}</span>}\n <span className='flex min-w-0 flex-1 flex-col gap-0.5 text-left'>\n {title && <span className={twMerge('truncate font-medium text-gray-900', titleClass)}>{title}</span>}\n {subtitle && <span className='text-sm text-gray-500'>{subtitle}</span>}\n </span>\n {append && <span className='ml-auto flex items-center gap-2 text-sm text-gray-500'>{append}</span>}\n {!hideToggleIcon && <span className={toggleWrapperClass}>{toggleIconNode}</span>}\n </button>\n {hasContent && (\n <div\n className='grid overflow-hidden border-t border-gray-100 transition-all duration-200 ease-in-out'\n style={{ gridTemplateRows: isExpanded ? '1fr' : '0fr' }}\n aria-hidden={isExpanded ? undefined : true}\n data-state={isExpanded ? 'open' : 'closed'}\n >\n <div\n id={contentId}\n role='region'\n aria-labelledby={headerId}\n data-state={isExpanded ? 'open' : 'closed'}\n className={twMerge(\n 'min-h-0 px-4 pt-0 text-sm text-gray-600 transition-all duration-200',\n activeBorderClass,\n contentAnimationClass,\n isExpanded ? 'pointer-events-auto' : 'pointer-events-none',\n contentClassName\n )}\n >\n {children ?? text}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nconst ExpansionPanelItem = forwardRef<HTMLDivElement, ExpansionPanelItemProps>((props, ref) => (\n <ExpansionPanelItemInner {...props} forwardedRef={ref} />\n));\n\nExpansionPanelItem.displayName = 'ExpansionPanelItem';\nmarkExpansionPanelItem(ExpansionPanelItem);\n\nexport default ExpansionPanelItem;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/globals.ts"],"names":[],"mappings":";AAAO,IAAM,eAAA,GAAkB;AAAA,EAC7B,GAAA,EAAK,CAAC,KAAK;AACb","file":"chunk-IEILIKS2.js","sourcesContent":["export const iconBaseClasses = {\n mdi: ['mdi']\n} as const;\n"]}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { iconBaseClasses } from './chunk-IEILIKS2.js';
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
// src/Containment/Chip/states.chip.ts
|
|
7
|
+
var chipBaseClasses = "inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
|
|
8
|
+
var chipSizeClasses = {
|
|
9
|
+
small: "text-xs px-3 py-1 min-h-[1.5rem]",
|
|
10
|
+
medium: "text-sm px-4 py-1.5 min-h-[2rem]",
|
|
11
|
+
large: "text-base px-5 py-2 min-h-[2.5rem]"
|
|
12
|
+
};
|
|
13
|
+
var closeButtonClasses = "ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2";
|
|
14
|
+
var blackAndWhiteChipVariantClass = "bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
15
|
+
var blackAndWhitePaletteClasses = {
|
|
16
|
+
solid: blackAndWhiteChipVariantClass,
|
|
17
|
+
outline: blackAndWhiteChipVariantClass,
|
|
18
|
+
ghost: blackAndWhiteChipVariantClass,
|
|
19
|
+
text: blackAndWhiteChipVariantClass,
|
|
20
|
+
filled: blackAndWhiteChipVariantClass,
|
|
21
|
+
underlined: blackAndWhiteChipVariantClass,
|
|
22
|
+
rounded: blackAndWhiteChipVariantClass,
|
|
23
|
+
sharp: `${blackAndWhiteChipVariantClass} rounded-none`
|
|
24
|
+
};
|
|
25
|
+
var paletteVariantClasses = {
|
|
26
|
+
primary: {
|
|
27
|
+
solid: "bg-primary text-white border border-primary hover:bg-primary/90",
|
|
28
|
+
sharp: "rounded-none bg-primary text-white border border-primary hover:bg-primary/90",
|
|
29
|
+
outline: "bg-transparent text-primary border border-primary hover:bg-primary/10",
|
|
30
|
+
ghost: "bg-primary/15 text-primary border border-transparent hover:bg-primary/25",
|
|
31
|
+
text: "bg-transparent text-primary border border-transparent hover:text-primary/80",
|
|
32
|
+
filled: "bg-primary/10 text-primary border border-primary/30 hover:bg-primary/20",
|
|
33
|
+
underlined: "bg-transparent text-primary border-0 border-b-2 border-primary px-0 rounded-none hover:text-primary/80",
|
|
34
|
+
rounded: "bg-white text-primary border border-primary/40 shadow-sm hover:bg-primary/5"
|
|
35
|
+
},
|
|
36
|
+
neutral: {
|
|
37
|
+
solid: "bg-gray-900 text-white border border-gray-900 hover:bg-gray-800",
|
|
38
|
+
sharp: "rounded-none bg-gray-900 text-white border border-gray-900 hover:bg-gray-800",
|
|
39
|
+
outline: "bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100",
|
|
40
|
+
ghost: "bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200",
|
|
41
|
+
text: "bg-transparent text-gray-900 border border-transparent hover:text-gray-700",
|
|
42
|
+
filled: "bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300",
|
|
43
|
+
underlined: "bg-transparent text-gray-900 border-0 border-b-2 border-gray-500 px-0 rounded-none hover:text-gray-700",
|
|
44
|
+
rounded: "bg-white text-gray-900 border border-gray-300 shadow-sm hover:bg-gray-100"
|
|
45
|
+
},
|
|
46
|
+
info: {
|
|
47
|
+
solid: "bg-sky-500 text-white border border-sky-500 hover:bg-sky-600",
|
|
48
|
+
sharp: "rounded-none bg-sky-500 text-white border border-sky-500 hover:bg-sky-600",
|
|
49
|
+
outline: "bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50",
|
|
50
|
+
ghost: "bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200",
|
|
51
|
+
text: "bg-transparent text-sky-600 border border-transparent hover:text-sky-700",
|
|
52
|
+
filled: "bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200",
|
|
53
|
+
underlined: "bg-transparent text-sky-600 border-0 border-b-2 border-sky-500 px-0 rounded-none hover:text-sky-700",
|
|
54
|
+
rounded: "bg-white text-sky-700 border border-sky-200 shadow-sm hover:bg-sky-50"
|
|
55
|
+
},
|
|
56
|
+
success: {
|
|
57
|
+
solid: "bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600",
|
|
58
|
+
sharp: "rounded-none bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600",
|
|
59
|
+
outline: "bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50",
|
|
60
|
+
ghost: "bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200",
|
|
61
|
+
text: "bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700",
|
|
62
|
+
filled: "bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200",
|
|
63
|
+
underlined: "bg-transparent text-emerald-600 border-0 border-b-2 border-emerald-500 px-0 rounded-none hover:text-emerald-700",
|
|
64
|
+
rounded: "bg-white text-emerald-700 border border-emerald-200 shadow-sm hover:bg-emerald-50"
|
|
65
|
+
},
|
|
66
|
+
warning: {
|
|
67
|
+
solid: "bg-amber-500 text-white border border-amber-500 hover:bg-amber-600",
|
|
68
|
+
sharp: "rounded-none bg-amber-500 text-white border border-amber-500 hover:bg-amber-600",
|
|
69
|
+
outline: "bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50",
|
|
70
|
+
ghost: "bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200",
|
|
71
|
+
text: "bg-transparent text-amber-700 border border-transparent hover:text-amber-800",
|
|
72
|
+
filled: "bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200",
|
|
73
|
+
underlined: "bg-transparent text-amber-700 border-0 border-b-2 border-amber-500 px-0 rounded-none hover:text-amber-800",
|
|
74
|
+
rounded: "bg-white text-amber-700 border border-amber-200 shadow-sm hover:bg-amber-50"
|
|
75
|
+
},
|
|
76
|
+
danger: {
|
|
77
|
+
solid: "bg-red-500 text-white border border-red-500 hover:bg-red-600",
|
|
78
|
+
sharp: "rounded-none bg-red-500 text-white border border-red-500 hover:bg-red-600",
|
|
79
|
+
outline: "bg-transparent text-red-600 border border-red-500 hover:bg-red-50",
|
|
80
|
+
ghost: "bg-red-100 text-red-700 border border-transparent hover:bg-red-200",
|
|
81
|
+
text: "bg-transparent text-red-600 border border-transparent hover:text-red-700",
|
|
82
|
+
filled: "bg-red-100 text-red-700 border border-red-200 hover:bg-red-200",
|
|
83
|
+
underlined: "bg-transparent text-red-600 border-0 border-b-2 border-red-500 px-0 rounded-none hover:text-red-700",
|
|
84
|
+
rounded: "bg-white text-red-600 border border-red-200 shadow-sm hover:bg-red-50"
|
|
85
|
+
},
|
|
86
|
+
surface: {
|
|
87
|
+
solid: "bg-white text-gray-900 border border-gray-200 hover:bg-gray-50",
|
|
88
|
+
sharp: "rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50",
|
|
89
|
+
outline: "bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50",
|
|
90
|
+
ghost: "bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200",
|
|
91
|
+
text: "bg-transparent text-gray-900 border border-transparent hover:text-gray-600",
|
|
92
|
+
filled: "bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white",
|
|
93
|
+
underlined: "bg-transparent text-gray-900 border-0 border-b-2 border-gray-400 px-0 rounded-none hover:text-gray-600",
|
|
94
|
+
rounded: "bg-white text-gray-900 border border-gray-200 shadow-sm hover:bg-gray-50"
|
|
95
|
+
},
|
|
96
|
+
bw: blackAndWhitePaletteClasses
|
|
97
|
+
};
|
|
98
|
+
var resolveVariantClass = (variant, palette) => {
|
|
99
|
+
const variants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;
|
|
100
|
+
return variants[variant] ?? variants.solid;
|
|
101
|
+
};
|
|
102
|
+
var resolveIconClassName = (icon) => {
|
|
103
|
+
if (!icon) {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
if (typeof icon === "string") {
|
|
107
|
+
const trimmed = icon.trim();
|
|
108
|
+
if (!trimmed) {
|
|
109
|
+
return void 0;
|
|
110
|
+
}
|
|
111
|
+
if (trimmed.includes(" ")) {
|
|
112
|
+
return trimmed;
|
|
113
|
+
}
|
|
114
|
+
const normalized2 = trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
|
|
115
|
+
return ["mdi", normalized2].join(" ");
|
|
116
|
+
}
|
|
117
|
+
const [library, providedName] = icon;
|
|
118
|
+
const normalizedLibrary = library.trim();
|
|
119
|
+
const baseClasses = iconBaseClasses[normalizedLibrary] ?? [normalizedLibrary];
|
|
120
|
+
const iconName = providedName.trim();
|
|
121
|
+
if (!iconName) {
|
|
122
|
+
return baseClasses.join(" ");
|
|
123
|
+
}
|
|
124
|
+
const normalized = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
|
|
125
|
+
return Array.from(/* @__PURE__ */ new Set([...baseClasses, normalized])).join(" ");
|
|
126
|
+
};
|
|
127
|
+
var Chip = forwardRef(
|
|
128
|
+
({
|
|
129
|
+
variant = "solid",
|
|
130
|
+
color = "primary",
|
|
131
|
+
size = "medium",
|
|
132
|
+
pill = true,
|
|
133
|
+
selected = false,
|
|
134
|
+
closable = false,
|
|
135
|
+
closeIcon = "mdi-close",
|
|
136
|
+
onClose,
|
|
137
|
+
filter = false,
|
|
138
|
+
filterIcon = "mdi-check-bold",
|
|
139
|
+
prependIcon,
|
|
140
|
+
appendIcon,
|
|
141
|
+
disabled = false,
|
|
142
|
+
className,
|
|
143
|
+
children,
|
|
144
|
+
...rest
|
|
145
|
+
}, ref) => {
|
|
146
|
+
const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;
|
|
147
|
+
const interactive = typeof onClick === "function";
|
|
148
|
+
const variantClass = resolveVariantClass(variant, color);
|
|
149
|
+
const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;
|
|
150
|
+
const pillClass = pill ? "rounded-full" : "rounded-lg";
|
|
151
|
+
const cursorClass = disabled ? "pointer-events-none opacity-50" : interactive ? "cursor-pointer" : "cursor-default";
|
|
152
|
+
const selectedClass = selected ? "ring-2 ring-current/50 ring-offset-2 ring-offset-white" : void 0;
|
|
153
|
+
const resolvedRole = disabled ? role : role ?? (interactive ? "button" : void 0);
|
|
154
|
+
const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : void 0);
|
|
155
|
+
const prependIconClassName = resolveIconClassName(prependIcon);
|
|
156
|
+
const appendIconClassName = resolveIconClassName(appendIcon);
|
|
157
|
+
const closeIconClassName = resolveIconClassName(closeIcon);
|
|
158
|
+
const filterIconClassName = filter && selected ? resolveIconClassName(filterIcon) : void 0;
|
|
159
|
+
const handleClick = (event) => {
|
|
160
|
+
if (disabled) {
|
|
161
|
+
event.preventDefault();
|
|
162
|
+
event.stopPropagation();
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
onClick?.(event);
|
|
166
|
+
};
|
|
167
|
+
const handleKeyDown = (event) => {
|
|
168
|
+
onKeyDown?.(event);
|
|
169
|
+
if (event.defaultPrevented || disabled || !interactive) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
event.currentTarget.click();
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const handleCloseClick = (event) => {
|
|
178
|
+
event.stopPropagation();
|
|
179
|
+
if (disabled) {
|
|
180
|
+
event.preventDefault();
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
onClose?.(event);
|
|
184
|
+
};
|
|
185
|
+
const handleCloseKeyDown = (event) => {
|
|
186
|
+
if (event.key === " " || event.key === "Enter") {
|
|
187
|
+
event.stopPropagation();
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const renderableChildren = typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsx("span", { className: "truncate", children }) : children;
|
|
191
|
+
const filterAdornment = filter ? /* @__PURE__ */ jsx(
|
|
192
|
+
"span",
|
|
193
|
+
{
|
|
194
|
+
className: "flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]",
|
|
195
|
+
"aria-hidden": true,
|
|
196
|
+
children: filterIconClassName ? /* @__PURE__ */ jsx("i", { className: filterIconClassName, "aria-hidden": true }) : null
|
|
197
|
+
}
|
|
198
|
+
) : null;
|
|
199
|
+
return /* @__PURE__ */ jsxs(
|
|
200
|
+
"span",
|
|
201
|
+
{
|
|
202
|
+
...nativeProps,
|
|
203
|
+
ref,
|
|
204
|
+
role: resolvedRole,
|
|
205
|
+
tabIndex: resolvedTabIndex,
|
|
206
|
+
"aria-disabled": disabled || void 0,
|
|
207
|
+
"aria-pressed": filter ? selected : void 0,
|
|
208
|
+
"data-selected": selected || void 0,
|
|
209
|
+
className: twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className),
|
|
210
|
+
onClick: interactive ? handleClick : void 0,
|
|
211
|
+
onKeyDown: interactive ? handleKeyDown : onKeyDown,
|
|
212
|
+
children: [
|
|
213
|
+
filterAdornment,
|
|
214
|
+
prependIconClassName && /* @__PURE__ */ jsx("i", { className: twMerge("text-[1em] leading-none", prependIconClassName), "aria-hidden": true }),
|
|
215
|
+
renderableChildren,
|
|
216
|
+
appendIconClassName && /* @__PURE__ */ jsx("i", { className: twMerge("text-[1em] leading-none", appendIconClassName), "aria-hidden": true }),
|
|
217
|
+
closable && /* @__PURE__ */ jsx(
|
|
218
|
+
"button",
|
|
219
|
+
{
|
|
220
|
+
type: "button",
|
|
221
|
+
disabled,
|
|
222
|
+
"aria-label": "Remove chip",
|
|
223
|
+
className: twMerge(closeButtonClasses),
|
|
224
|
+
onClick: handleCloseClick,
|
|
225
|
+
onKeyDown: handleCloseKeyDown,
|
|
226
|
+
children: closeIconClassName ? /* @__PURE__ */ jsx("i", { className: closeIconClassName, "aria-hidden": true }) : /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\xD7" })
|
|
227
|
+
}
|
|
228
|
+
)
|
|
229
|
+
]
|
|
230
|
+
}
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
Chip.displayName = "Chip";
|
|
235
|
+
var Chip_default = Chip;
|
|
236
|
+
|
|
237
|
+
export { Chip_default };
|
|
238
|
+
//# sourceMappingURL=chunk-PWK6MLZT.js.map
|
|
239
|
+
//# sourceMappingURL=chunk-PWK6MLZT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Containment/Chip/states.chip.ts","../src/Containment/Chip/index.tsx"],"names":["normalized"],"mappings":"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","file":"chunk-PWK6MLZT.js","sourcesContent":["import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { ChipSize, ChipVariant } from './types.chip';\n\nexport const chipBaseClasses =\n 'inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nexport const chipSizeClasses: Record<ChipSize, string> = {\n small: 'text-xs px-3 py-1 min-h-[1.5rem]',\n medium: 'text-sm px-4 py-1.5 min-h-[2rem]',\n large: 'text-base px-5 py-2 min-h-[2.5rem]'\n};\n\nexport const closeButtonClasses =\n 'ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2';\n\nconst blackAndWhiteChipVariantClass =\n 'bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst blackAndWhitePaletteClasses = {\n solid: blackAndWhiteChipVariantClass,\n outline: blackAndWhiteChipVariantClass,\n ghost: blackAndWhiteChipVariantClass,\n text: blackAndWhiteChipVariantClass,\n filled: blackAndWhiteChipVariantClass,\n underlined: blackAndWhiteChipVariantClass,\n rounded: blackAndWhiteChipVariantClass,\n sharp: `${blackAndWhiteChipVariantClass} rounded-none`\n} satisfies Record<ChipVariant, string>;\n\nconst paletteVariantClasses: Record<Palette, Record<ChipVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white border border-primary hover:bg-primary/90',\n sharp: 'rounded-none bg-primary text-white border border-primary hover:bg-primary/90',\n outline: 'bg-transparent text-primary border border-primary hover:bg-primary/10',\n ghost: 'bg-primary/15 text-primary border border-transparent hover:bg-primary/25',\n text: 'bg-transparent text-primary border border-transparent hover:text-primary/80',\n filled: 'bg-primary/10 text-primary border border-primary/30 hover:bg-primary/20',\n underlined: 'bg-transparent text-primary border-0 border-b-2 border-primary px-0 rounded-none hover:text-primary/80',\n rounded: 'bg-white text-primary border border-primary/40 shadow-sm hover:bg-primary/5'\n },\n neutral: {\n solid: 'bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n sharp: 'rounded-none bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n outline: 'bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-700',\n filled: 'bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300',\n underlined: 'bg-transparent text-gray-900 border-0 border-b-2 border-gray-500 px-0 rounded-none hover:text-gray-700',\n rounded: 'bg-white text-gray-900 border border-gray-300 shadow-sm hover:bg-gray-100'\n },\n info: {\n solid: 'bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n sharp: 'rounded-none bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n outline: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50',\n ghost: 'bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200',\n text: 'bg-transparent text-sky-600 border border-transparent hover:text-sky-700',\n filled: 'bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200',\n underlined: 'bg-transparent text-sky-600 border-0 border-b-2 border-sky-500 px-0 rounded-none hover:text-sky-700',\n rounded: 'bg-white text-sky-700 border border-sky-200 shadow-sm hover:bg-sky-50'\n },\n success: {\n solid: 'bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n sharp: 'rounded-none bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n outline: 'bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50',\n ghost: 'bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200',\n text: 'bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700',\n filled: 'bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200',\n underlined:\n 'bg-transparent text-emerald-600 border-0 border-b-2 border-emerald-500 px-0 rounded-none hover:text-emerald-700',\n rounded: 'bg-white text-emerald-700 border border-emerald-200 shadow-sm hover:bg-emerald-50'\n },\n warning: {\n solid: 'bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n sharp: 'rounded-none bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n outline: 'bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50',\n ghost: 'bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200',\n text: 'bg-transparent text-amber-700 border border-transparent hover:text-amber-800',\n filled: 'bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200',\n underlined:\n 'bg-transparent text-amber-700 border-0 border-b-2 border-amber-500 px-0 rounded-none hover:text-amber-800',\n rounded: 'bg-white text-amber-700 border border-amber-200 shadow-sm hover:bg-amber-50'\n },\n danger: {\n solid: 'bg-red-500 text-white border border-red-500 hover:bg-red-600',\n sharp: 'rounded-none bg-red-500 text-white border border-red-500 hover:bg-red-600',\n outline: 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50',\n ghost: 'bg-red-100 text-red-700 border border-transparent hover:bg-red-200',\n text: 'bg-transparent text-red-600 border border-transparent hover:text-red-700',\n filled: 'bg-red-100 text-red-700 border border-red-200 hover:bg-red-200',\n underlined: 'bg-transparent text-red-600 border-0 border-b-2 border-red-500 px-0 rounded-none hover:text-red-700',\n rounded: 'bg-white text-red-600 border border-red-200 shadow-sm hover:bg-red-50'\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n sharp: 'rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n outline: 'bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-600',\n filled: 'bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white',\n underlined: 'bg-transparent text-gray-900 border-0 border-b-2 border-gray-400 px-0 rounded-none hover:text-gray-600',\n rounded: 'bg-white text-gray-900 border border-gray-200 shadow-sm hover:bg-gray-50'\n },\n bw: blackAndWhitePaletteClasses\n};\n\nexport const resolveVariantClass = (variant: ChipVariant, palette: Palette) => {\n const variants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return variants[variant] ?? variants.solid;\n};\n\nexport const resolveIconClassName = (icon?: PropIcon) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n","import { forwardRef } from 'react';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { ChipProps } from './types.chip';\nimport {\n chipBaseClasses,\n chipSizeClasses,\n closeButtonClasses,\n resolveIconClassName,\n resolveVariantClass\n} from './states.chip';\n\nconst Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n pill = true,\n selected = false,\n closable = false,\n closeIcon = 'mdi-close',\n onClose,\n filter = false,\n filterIcon = 'mdi-check-bold',\n prependIcon,\n appendIcon,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;\n const interactive = typeof onClick === 'function';\n\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;\n const pillClass = pill ? 'rounded-full' : 'rounded-lg';\n const cursorClass = disabled ? 'pointer-events-none opacity-50' : interactive ? 'cursor-pointer' : 'cursor-default';\n const selectedClass = selected ? 'ring-2 ring-current/50 ring-offset-2 ring-offset-white' : undefined;\n\n const resolvedRole = disabled ? role : role ?? (interactive ? 'button' : undefined);\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : undefined);\n const prependIconClassName = resolveIconClassName(prependIcon);\n const appendIconClassName = resolveIconClassName(appendIcon);\n const closeIconClassName = resolveIconClassName(closeIcon);\n const filterIconClassName = filter && selected ? resolveIconClassName(filterIcon) : undefined;\n\n const handleClick = (event: MouseEvent<HTMLSpanElement>) => {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n onClick?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || !interactive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLSpanElement).click();\n }\n };\n\n const handleCloseClick = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClose?.(event);\n };\n\n const handleCloseKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.stopPropagation();\n }\n };\n\n const renderableChildren =\n typeof children === 'string' || typeof children === 'number' ? (\n <span className='truncate'>{children}</span>\n ) : (\n children\n );\n\n const filterAdornment = filter ? (\n <span\n className='flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]'\n aria-hidden\n >\n {filterIconClassName ? <i className={filterIconClassName} aria-hidden /> : null}\n </span>\n ) : null;\n\n return (\n <span\n {...nativeProps}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-pressed={filter ? selected : undefined}\n data-selected={selected || undefined}\n className={twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className)}\n onClick={interactive ? handleClick : undefined}\n onKeyDown={interactive ? handleKeyDown : onKeyDown}\n >\n {filterAdornment}\n {prependIconClassName && <i className={twMerge('text-[1em] leading-none', prependIconClassName)} aria-hidden />}\n {renderableChildren}\n {appendIconClassName && <i className={twMerge('text-[1em] leading-none', appendIconClassName)} aria-hidden />}\n {closable && (\n <button\n type='button'\n disabled={disabled}\n aria-label='Remove chip'\n className={twMerge(closeButtonClasses)}\n onClick={handleCloseClick}\n onKeyDown={handleCloseKeyDown}\n >\n {closeIconClassName ? <i className={closeIconClassName} aria-hidden /> : <span aria-hidden>×</span>}\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = 'Chip';\n\nexport type { ChipProps, ChipSize, ChipVariant } from './types.chip';\nexport default Chip;\n"]}
|