@neuronection/assistant-ui 0.1.0 → 0.2.0
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/README.md +15 -4
- package/dist/badge.js +1 -1
- package/dist/button.js +1 -1
- package/dist/check-indicator.d.ts +12 -0
- package/dist/check-indicator.js +3 -0
- package/dist/check-indicator.js.map +1 -0
- package/dist/chunk-3522NABN.js +452 -0
- package/dist/chunk-3522NABN.js.map +1 -0
- package/dist/chunk-4SW3ESVI.js +111 -0
- package/dist/chunk-4SW3ESVI.js.map +1 -0
- package/dist/chunk-BJOY3XL7.js +27 -0
- package/dist/chunk-BJOY3XL7.js.map +1 -0
- package/dist/chunk-BPTGPF3L.js +3 -0
- package/dist/chunk-BPTGPF3L.js.map +1 -0
- package/dist/chunk-DV3MXDLN.js +46 -0
- package/dist/chunk-DV3MXDLN.js.map +1 -0
- package/dist/chunk-ESUTPQDO.js +21 -0
- package/dist/chunk-ESUTPQDO.js.map +1 -0
- package/dist/{chunk-TLTKWLMN.js → chunk-GA3XIDVX.js} +3 -3
- package/dist/{chunk-TLTKWLMN.js.map → chunk-GA3XIDVX.js.map} +1 -1
- package/dist/chunk-GPIN2ITX.js +63 -0
- package/dist/chunk-GPIN2ITX.js.map +1 -0
- package/dist/{chunk-56VRWCLJ.js → chunk-GTXGTQ6F.js} +2 -2
- package/dist/{chunk-56VRWCLJ.js.map → chunk-GTXGTQ6F.js.map} +1 -1
- package/dist/chunk-H5U4KNXF.js +63 -0
- package/dist/chunk-H5U4KNXF.js.map +1 -0
- package/dist/chunk-HSUCCANX.js +44 -0
- package/dist/chunk-HSUCCANX.js.map +1 -0
- package/dist/chunk-KXLMTAZ5.js +109 -0
- package/dist/chunk-KXLMTAZ5.js.map +1 -0
- package/dist/chunk-LEDQQBVV.js +184 -0
- package/dist/chunk-LEDQQBVV.js.map +1 -0
- package/dist/chunk-MXOBOS4Y.js +60 -0
- package/dist/chunk-MXOBOS4Y.js.map +1 -0
- package/dist/chunk-N5KQRHXU.js +107 -0
- package/dist/chunk-N5KQRHXU.js.map +1 -0
- package/dist/chunk-OAR74ML4.js +3 -0
- package/dist/chunk-OAR74ML4.js.map +1 -0
- package/dist/chunk-OUHUVACM.js +45 -0
- package/dist/chunk-OUHUVACM.js.map +1 -0
- package/dist/chunk-PPH3G7AL.js +3 -0
- package/dist/chunk-PPH3G7AL.js.map +1 -0
- package/dist/chunk-RU3DEF2O.js +186 -0
- package/dist/chunk-RU3DEF2O.js.map +1 -0
- package/dist/{chunk-NQQNTK6L.js → chunk-SKTLC2XY.js} +2 -2
- package/dist/{chunk-NQQNTK6L.js.map → chunk-SKTLC2XY.js.map} +1 -1
- package/dist/chunk-WZSAUESL.js +58 -0
- package/dist/chunk-WZSAUESL.js.map +1 -0
- package/dist/chunk-XE4TFW63.js +34 -0
- package/dist/chunk-XE4TFW63.js.map +1 -0
- package/dist/combobox.d.ts +54 -0
- package/dist/combobox.js +3 -0
- package/dist/combobox.js.map +1 -0
- package/dist/confirmation-modal.js +1 -1
- package/dist/context-menu.d.ts +22 -0
- package/dist/context-menu.js +3 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/error-banner.d.ts +10 -0
- package/dist/error-banner.js +3 -0
- package/dist/error-banner.js.map +1 -0
- package/dist/expandable-search.d.ts +16 -0
- package/dist/expandable-search.js +3 -0
- package/dist/expandable-search.js.map +1 -0
- package/dist/field-label.d.ts +13 -0
- package/dist/field-label.js +3 -0
- package/dist/field-label.js.map +1 -0
- package/dist/form-modal.d.ts +23 -0
- package/dist/form-modal.js +3 -0
- package/dist/form-modal.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +22 -6
- package/dist/info-button.d.ts +13 -0
- package/dist/info-button.js +3 -0
- package/dist/info-button.js.map +1 -0
- package/dist/marquee.d.ts +39 -0
- package/dist/marquee.js +3 -0
- package/dist/marquee.js.map +1 -0
- package/dist/menu.d.ts +38 -0
- package/dist/menu.js +3 -0
- package/dist/menu.js.map +1 -0
- package/dist/popover-button.d.ts +23 -0
- package/dist/popover-button.js +3 -0
- package/dist/popover-button.js.map +1 -0
- package/dist/search-input.d.ts +15 -0
- package/dist/search-input.js +3 -0
- package/dist/search-input.js.map +1 -0
- package/dist/selection-bar.d.ts +13 -0
- package/dist/selection-bar.js +3 -0
- package/dist/selection-bar.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/undo-notice.d.ts +14 -0
- package/dist/undo-notice.js +3 -0
- package/dist/undo-notice.js.map +1 -0
- package/dist/view-toggle.d.ts +13 -0
- package/dist/view-toggle.js +3 -0
- package/dist/view-toggle.js.map +1 -0
- package/dist/wizard.d.ts +57 -0
- package/dist/wizard.js +3 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +70 -3
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/components/marquee/Marquee.tsx
|
|
5
|
+
function rectsIntersect(a, b) {
|
|
6
|
+
return a.left < b.right && b.left < a.right && a.top < b.bottom && b.top < a.bottom;
|
|
7
|
+
}
|
|
8
|
+
function marqueeRect(startX, startY, currentX, currentY) {
|
|
9
|
+
return {
|
|
10
|
+
left: Math.min(startX, currentX),
|
|
11
|
+
top: Math.min(startY, currentY),
|
|
12
|
+
right: Math.max(startX, currentX),
|
|
13
|
+
bottom: Math.max(startY, currentY)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function hitTestIds(container, marquee) {
|
|
17
|
+
const hits = [];
|
|
18
|
+
const elements = container.querySelectorAll("[data-selectable-id]");
|
|
19
|
+
for (const element of elements) {
|
|
20
|
+
const box = element.getBoundingClientRect();
|
|
21
|
+
const itemRect = {
|
|
22
|
+
left: box.left,
|
|
23
|
+
top: box.top,
|
|
24
|
+
right: box.right,
|
|
25
|
+
bottom: box.bottom
|
|
26
|
+
};
|
|
27
|
+
if (rectsIntersect(marquee, itemRect)) {
|
|
28
|
+
const id = element.getAttribute("data-selectable-id");
|
|
29
|
+
if (id !== null) {
|
|
30
|
+
hits.push(id);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return hits;
|
|
35
|
+
}
|
|
36
|
+
var DRAG_THRESHOLD = 4;
|
|
37
|
+
var INTERACTIVE_SELECTOR = "button, input, textarea, select, a, [data-selectable-id], [data-no-marquee]";
|
|
38
|
+
function useMarquee({
|
|
39
|
+
enabled,
|
|
40
|
+
containerRef,
|
|
41
|
+
getBaseSelection,
|
|
42
|
+
onSelect
|
|
43
|
+
}) {
|
|
44
|
+
const [band, setBand] = React.useState(null);
|
|
45
|
+
const startRef = React.useRef(null);
|
|
46
|
+
const armedRef = React.useRef(false);
|
|
47
|
+
const getBaseRef = React.useRef(getBaseSelection);
|
|
48
|
+
getBaseRef.current = getBaseSelection;
|
|
49
|
+
const onSelectRef = React.useRef(onSelect);
|
|
50
|
+
onSelectRef.current = onSelect;
|
|
51
|
+
React.useEffect(() => {
|
|
52
|
+
if (!enabled) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const container = containerRef.current;
|
|
56
|
+
if (container === null) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const onMouseDown = (event) => {
|
|
60
|
+
if (event.button !== 0) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const target = event.target;
|
|
64
|
+
if (target !== null && target.closest(INTERACTIVE_SELECTOR) !== null) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const base = event.ctrlKey || event.metaKey ? new Set(getBaseRef.current()) : /* @__PURE__ */ new Set();
|
|
68
|
+
startRef.current = { x: event.clientX, y: event.clientY, base };
|
|
69
|
+
armedRef.current = false;
|
|
70
|
+
};
|
|
71
|
+
const onMouseMove = (event) => {
|
|
72
|
+
const start = startRef.current;
|
|
73
|
+
if (start === null) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const rect = marqueeRect(start.x, start.y, event.clientX, event.clientY);
|
|
77
|
+
if (!armedRef.current) {
|
|
78
|
+
if (rect.right - rect.left < DRAG_THRESHOLD && rect.bottom - rect.top < DRAG_THRESHOLD) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
armedRef.current = true;
|
|
82
|
+
onSelectRef.current([...start.base], "start");
|
|
83
|
+
}
|
|
84
|
+
setBand(rect);
|
|
85
|
+
const containerNow = containerRef.current;
|
|
86
|
+
if (containerNow !== null) {
|
|
87
|
+
const hits = hitTestIds(containerNow, rect);
|
|
88
|
+
onSelectRef.current([.../* @__PURE__ */ new Set([...start.base, ...hits])], "drag");
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const finish = (event) => {
|
|
92
|
+
const start = startRef.current;
|
|
93
|
+
if (start === null) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
startRef.current = null;
|
|
97
|
+
setBand(null);
|
|
98
|
+
if (armedRef.current) {
|
|
99
|
+
const containerNow = containerRef.current;
|
|
100
|
+
if (containerNow !== null) {
|
|
101
|
+
const rect = marqueeRect(start.x, start.y, event.clientX, event.clientY);
|
|
102
|
+
const hits = hitTestIds(containerNow, rect);
|
|
103
|
+
onSelectRef.current([.../* @__PURE__ */ new Set([...start.base, ...hits])], "end");
|
|
104
|
+
}
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!event.ctrlKey && !event.metaKey) {
|
|
108
|
+
onSelectRef.current([], "end");
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const onKey = (event) => {
|
|
112
|
+
if (event.key === "Escape" && startRef.current !== null) {
|
|
113
|
+
const start = startRef.current;
|
|
114
|
+
startRef.current = null;
|
|
115
|
+
setBand(null);
|
|
116
|
+
onSelectRef.current([...start.base], "end");
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
container.addEventListener("mousedown", onMouseDown);
|
|
120
|
+
window.addEventListener("mousemove", onMouseMove);
|
|
121
|
+
window.addEventListener("mouseup", finish);
|
|
122
|
+
window.addEventListener("keydown", onKey);
|
|
123
|
+
return () => {
|
|
124
|
+
container.removeEventListener("mousedown", onMouseDown);
|
|
125
|
+
window.removeEventListener("mousemove", onMouseMove);
|
|
126
|
+
window.removeEventListener("mouseup", finish);
|
|
127
|
+
window.removeEventListener("keydown", onKey);
|
|
128
|
+
};
|
|
129
|
+
}, [enabled, containerRef]);
|
|
130
|
+
return { band };
|
|
131
|
+
}
|
|
132
|
+
function MarqueeBand({ band }) {
|
|
133
|
+
if (band === null) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
return /* @__PURE__ */ jsx(
|
|
137
|
+
"div",
|
|
138
|
+
{
|
|
139
|
+
"data-as": "marquee-band",
|
|
140
|
+
className: "pointer-events-none fixed z-40 rounded-[calc(var(--as-radius-sm)-2px)] border border-[var(--as-primary)] bg-[var(--as-primary)]/10",
|
|
141
|
+
style: {
|
|
142
|
+
left: band.left,
|
|
143
|
+
top: band.top,
|
|
144
|
+
width: band.right - band.left,
|
|
145
|
+
height: band.bottom - band.top
|
|
146
|
+
},
|
|
147
|
+
"aria-hidden": true
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
var MarqueeSurface = React.forwardRef(
|
|
152
|
+
function MarqueeSurface2({ children, selection, clearBlocked, className, ...props }, ref) {
|
|
153
|
+
const paneRef = React.useRef(null);
|
|
154
|
+
React.useImperativeHandle(ref, () => paneRef.current);
|
|
155
|
+
const { band } = useMarquee({
|
|
156
|
+
enabled: true,
|
|
157
|
+
containerRef: paneRef,
|
|
158
|
+
getBaseSelection: () => selection.selected,
|
|
159
|
+
onSelect: (ids) => selection.set(ids)
|
|
160
|
+
});
|
|
161
|
+
React.useEffect(() => {
|
|
162
|
+
const onKey = (event) => {
|
|
163
|
+
if (clearBlocked?.() ?? false) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const target = event.target;
|
|
167
|
+
if (target instanceof Element && target.closest('input, textarea, select, [contenteditable="true"]') !== null) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (event.key === "Escape") {
|
|
171
|
+
selection.clear();
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
window.addEventListener("keydown", onKey);
|
|
175
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
176
|
+
}, [clearBlocked, selection]);
|
|
177
|
+
return /* @__PURE__ */ jsxs("div", { ref: paneRef, "data-marquee-surface": "", "data-as": "marquee-surface", className, ...props, children: [
|
|
178
|
+
children,
|
|
179
|
+
/* @__PURE__ */ jsx(MarqueeBand, { band })
|
|
180
|
+
] });
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee };
|
|
185
|
+
//# sourceMappingURL=chunk-RU3DEF2O.js.map
|
|
186
|
+
//# sourceMappingURL=chunk-RU3DEF2O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marquee/Marquee.tsx"],"names":["MarqueeSurface"],"mappings":"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","file":"chunk-RU3DEF2O.js","sourcesContent":["import * as React from 'react'\n\nexport interface Rect {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport function rectsIntersect(a: Rect, b: Rect): boolean {\n return a.left < b.right && b.left < a.right && a.top < b.bottom && b.top < a.bottom\n}\n\nexport function marqueeRect(\n startX: number,\n startY: number,\n currentX: number,\n currentY: number,\n): Rect {\n return {\n left: Math.min(startX, currentX),\n top: Math.min(startY, currentY),\n right: Math.max(startX, currentX),\n bottom: Math.max(startY, currentY),\n }\n}\n\nexport function hitTestIds(container: HTMLElement, marquee: Rect): string[] {\n const hits: string[] = []\n const elements = container.querySelectorAll<HTMLElement>('[data-selectable-id]')\n for (const element of elements) {\n const box = element.getBoundingClientRect()\n const itemRect: Rect = {\n left: box.left,\n top: box.top,\n right: box.right,\n bottom: box.bottom,\n }\n if (rectsIntersect(marquee, itemRect)) {\n const id = element.getAttribute('data-selectable-id')\n if (id !== null) {\n hits.push(id)\n }\n }\n }\n return hits\n}\n\nconst DRAG_THRESHOLD = 4\n\nconst INTERACTIVE_SELECTOR =\n 'button, input, textarea, select, a, [data-selectable-id], [data-no-marquee]'\n\nexport type MarqueePhase = 'start' | 'drag' | 'end'\n\nexport interface UseMarqueeOptions {\n enabled: boolean\n containerRef: { current: HTMLElement | null }\n getBaseSelection: () => Set<string>\n onSelect: (ids: string[], phase: MarqueePhase) => void\n}\n\nexport function useMarquee({\n enabled,\n containerRef,\n getBaseSelection,\n onSelect,\n}: UseMarqueeOptions): { band: Rect | null } {\n const [band, setBand] = React.useState<Rect | null>(null)\n const startRef = React.useRef<{ x: number; y: number; base: Set<string> } | null>(null)\n const armedRef = React.useRef(false)\n const getBaseRef = React.useRef(getBaseSelection)\n getBaseRef.current = getBaseSelection\n const onSelectRef = React.useRef(onSelect)\n onSelectRef.current = onSelect\n\n React.useEffect(() => {\n if (!enabled) {\n return\n }\n const container = containerRef.current\n if (container === null) {\n return\n }\n\n const onMouseDown = (event: MouseEvent) => {\n if (event.button !== 0) {\n return\n }\n const target = event.target as Element | null\n if (target !== null && target.closest(INTERACTIVE_SELECTOR) !== null) {\n return\n }\n const base =\n event.ctrlKey || event.metaKey\n ? new Set(getBaseRef.current())\n : new Set<string>()\n startRef.current = { x: event.clientX, y: event.clientY, base }\n armedRef.current = false\n }\n\n const onMouseMove = (event: MouseEvent) => {\n const start = startRef.current\n if (start === null) {\n return\n }\n const rect = marqueeRect(start.x, start.y, event.clientX, event.clientY)\n if (!armedRef.current) {\n if (\n rect.right - rect.left < DRAG_THRESHOLD &&\n rect.bottom - rect.top < DRAG_THRESHOLD\n ) {\n return\n }\n armedRef.current = true\n onSelectRef.current([...start.base], 'start')\n }\n setBand(rect)\n const containerNow = containerRef.current\n if (containerNow !== null) {\n const hits = hitTestIds(containerNow, rect)\n onSelectRef.current([...new Set([...start.base, ...hits])], 'drag')\n }\n }\n\n const finish = (event: MouseEvent) => {\n const start = startRef.current\n if (start === null) {\n return\n }\n startRef.current = null\n setBand(null)\n if (armedRef.current) {\n const containerNow = containerRef.current\n if (containerNow !== null) {\n const rect = marqueeRect(start.x, start.y, event.clientX, event.clientY)\n const hits = hitTestIds(containerNow, rect)\n onSelectRef.current([...new Set([...start.base, ...hits])], 'end')\n }\n return\n }\n if (!event.ctrlKey && !event.metaKey) {\n onSelectRef.current([], 'end')\n }\n }\n\n const onKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && startRef.current !== null) {\n const start = startRef.current\n startRef.current = null\n setBand(null)\n onSelectRef.current([...start.base], 'end')\n }\n }\n\n container.addEventListener('mousedown', onMouseDown)\n window.addEventListener('mousemove', onMouseMove)\n window.addEventListener('mouseup', finish)\n window.addEventListener('keydown', onKey)\n return () => {\n container.removeEventListener('mousedown', onMouseDown)\n window.removeEventListener('mousemove', onMouseMove)\n window.removeEventListener('mouseup', finish)\n window.removeEventListener('keydown', onKey)\n }\n }, [enabled, containerRef])\n\n return { band }\n}\n\nexport function MarqueeBand({ band }: { band: Rect | null }) {\n if (band === null) {\n return null\n }\n return (\n <div\n data-as=\"marquee-band\"\n className=\"pointer-events-none fixed z-40 rounded-[calc(var(--as-radius-sm)-2px)] border border-[var(--as-primary)] bg-[var(--as-primary)]/10\"\n style={{\n left: band.left,\n top: band.top,\n width: band.right - band.left,\n height: band.bottom - band.top,\n }}\n aria-hidden\n />\n )\n}\n\nexport interface MarqueeSelection {\n selected: Set<string>\n set: (ids: string[]) => void\n clear: () => void\n}\n\nexport interface MarqueeSurfaceProps extends React.ComponentProps<'div'> {\n children: React.ReactNode\n selection: MarqueeSelection\n clearBlocked?: () => boolean\n}\n\nexport const MarqueeSurface = React.forwardRef<HTMLDivElement, MarqueeSurfaceProps>(\n function MarqueeSurface({ children, selection, clearBlocked, className, ...props }, ref) {\n const paneRef = React.useRef<HTMLDivElement | null>(null)\n React.useImperativeHandle(ref, () => paneRef.current as HTMLDivElement)\n const { band } = useMarquee({\n enabled: true,\n containerRef: paneRef,\n getBaseSelection: () => selection.selected,\n onSelect: (ids) => selection.set(ids),\n })\n React.useEffect(() => {\n const onKey = (event: KeyboardEvent) => {\n if (clearBlocked?.() ?? false) {\n return\n }\n const target = event.target\n if (\n target instanceof Element &&\n target.closest('input, textarea, select, [contenteditable=\"true\"]') !== null\n ) {\n return\n }\n if (event.key === 'Escape') {\n selection.clear()\n }\n }\n window.addEventListener('keydown', onKey)\n return () => window.removeEventListener('keydown', onKey)\n }, [clearBlocked, selection])\n return (\n <div ref={paneRef} data-marquee-surface=\"\" data-as=\"marquee-surface\" className={className} {...props}>\n {children}\n <MarqueeBand band={band} />\n </div>\n )\n },\n)\n"]}
|
|
@@ -35,5 +35,5 @@ var Badge = React.forwardRef(function Badge2({ className, variant, ...props }, r
|
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
export { Badge, badgeVariants };
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-SKTLC2XY.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-SKTLC2XY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/badge/Badge.tsx"],"names":["Badge"],"mappings":";;;;;AAIA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,qGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,uEAAA;AAAA,QACT,SAAA,EACE,2EAAA;AAAA,QACF,OAAA,EAAS,+CAAA;AAAA,QACT,OAAA,EAAS,uEAAA;AAAA,QACT,OAAA,EAAS,uEAAA;AAAA,QACT,MAAA,EAAQ,qEAAA;AAAA,QACR,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAMO,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA,CAAwC,SAASA,MAAAA,CAC1E,EAAE,WAAW,OAAA,EAAS,GAAG,KAAA,EAAM,EAC/B,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,OAAA;AAAA,MACR,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/badge/Badge.tsx"],"names":["Badge"],"mappings":";;;;;AAIA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,qGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,uEAAA;AAAA,QACT,SAAA,EACE,2EAAA;AAAA,QACF,OAAA,EAAS,+CAAA;AAAA,QACT,OAAA,EAAS,uEAAA;AAAA,QACT,OAAA,EAAS,uEAAA;AAAA,QACT,MAAA,EAAQ,qEAAA;AAAA,QACR,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAMO,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA,CAAwC,SAASA,MAAAA,CAC1E,EAAE,WAAW,OAAA,EAAS,GAAG,KAAA,EAAM,EAC/B,GAAA,EACA;AACA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,OAAA;AAAA,MACR,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC","file":"chunk-SKTLC2XY.js","sourcesContent":["import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\nconst badgeVariants = cva(\n 'inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-xs font-medium [&_svg]:size-3',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-[var(--as-primary)] text-[var(--as-primary-fg)]',\n secondary:\n 'border-transparent bg-[var(--as-secondary)] text-[var(--as-secondary-fg)]',\n outline: 'border-[var(--as-border)] text-[var(--as-fg)]',\n success: 'border-transparent bg-[var(--as-success)] text-[var(--as-success-fg)]',\n warning: 'border-transparent bg-[var(--as-warning)] text-[var(--as-warning-fg)]',\n danger: 'border-transparent bg-[var(--as-danger)] text-[var(--as-danger-fg)]',\n ai: 'border-transparent bg-[var(--as-ai)] text-[var(--as-ai-fg)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nexport interface BadgeProps\n extends React.ComponentProps<'span'>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { className, variant, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n data-as=\"badge\"\n className={cn(badgeVariants({ variant, className }))}\n {...props}\n />\n )\n})\n\nexport { badgeVariants }\n\n\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { MenuContent, MenuItem } from './chunk-KXLMTAZ5.js';
|
|
2
|
+
import { cn } from './chunk-BLJWR4ZV.js';
|
|
3
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function ContextMenu({ x, y, items, onClose, className }) {
|
|
7
|
+
const open = items.length > 0;
|
|
8
|
+
return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.Root, { open, onOpenChange: (next) => !next && onClose(), modal: false, children: [
|
|
9
|
+
/* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, { asChild: true, "aria-hidden": true, tabIndex: -1, children: /* @__PURE__ */ jsx(
|
|
10
|
+
"span",
|
|
11
|
+
{
|
|
12
|
+
"data-as": "context-menu-anchor",
|
|
13
|
+
style: { position: "fixed", left: x, top: y, width: 0, height: 0 }
|
|
14
|
+
}
|
|
15
|
+
) }),
|
|
16
|
+
/* @__PURE__ */ jsx(
|
|
17
|
+
MenuContent,
|
|
18
|
+
{
|
|
19
|
+
align: "start",
|
|
20
|
+
sideOffset: 2,
|
|
21
|
+
collisionPadding: 8,
|
|
22
|
+
"data-as": "context-menu",
|
|
23
|
+
onCloseAutoFocus: (event) => event.preventDefault(),
|
|
24
|
+
className: cn("min-w-40", className),
|
|
25
|
+
children: items.map(
|
|
26
|
+
(item) => item.disabled === true ? /* @__PURE__ */ jsxs(
|
|
27
|
+
"span",
|
|
28
|
+
{
|
|
29
|
+
role: "menuitem",
|
|
30
|
+
"aria-disabled": "true",
|
|
31
|
+
title: item.hint,
|
|
32
|
+
className: "pointer-events-none flex w-full cursor-default select-none items-center gap-2 rounded-[calc(var(--as-radius-sm)-2px)] px-2 py-1.5 text-left text-sm text-[var(--as-muted-fg)] opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",
|
|
33
|
+
children: [
|
|
34
|
+
item.icon ? /* @__PURE__ */ jsx(item.icon, { "aria-hidden": true }) : null,
|
|
35
|
+
item.label
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
item.key
|
|
39
|
+
) : /* @__PURE__ */ jsx(
|
|
40
|
+
MenuItem,
|
|
41
|
+
{
|
|
42
|
+
icon: item.icon,
|
|
43
|
+
danger: item.danger,
|
|
44
|
+
title: item.hint,
|
|
45
|
+
onSelect: () => item.onSelect?.(),
|
|
46
|
+
children: item.label
|
|
47
|
+
},
|
|
48
|
+
item.key
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
] });
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { ContextMenu };
|
|
57
|
+
//# sourceMappingURL=chunk-WZSAUESL.js.map
|
|
58
|
+
//# sourceMappingURL=chunk-WZSAUESL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/context-menu/ContextMenu.tsx"],"names":[],"mappings":";;;;;AAwBO,SAAS,YAAY,EAAE,CAAA,EAAG,GAAG,KAAA,EAAO,OAAA,EAAS,WAAU,EAAqB;AACjF,EAAA,MAAM,IAAA,GAAO,MAAM,MAAA,GAAS,CAAA;AAC5B,EAAA,uBACE,IAAA,CAAuB,qBAAA,CAAA,IAAA,EAAtB,EAA2B,IAAA,EAAY,YAAA,EAAc,CAAC,IAAA,KAAS,CAAC,IAAA,IAAQ,OAAA,EAAQ,EAAG,KAAA,EAAO,KAAA,EACzF,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAuB,+BAAtB,EAA8B,OAAA,EAAO,MAAC,aAAA,EAAW,IAAA,EAAC,UAAU,EAAA,EAC3D,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAQ,qBAAA;AAAA,QACR,KAAA,EAAO,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAE;AAAA,KACnE,EACF,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,gBAAA,EAAkB,CAAA;AAAA,QAClB,SAAA,EAAQ,cAAA;AAAA,QACR,gBAAA,EAAkB,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,QAClD,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QAElC,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,UAAI,CAAC,IAAA,KACV,IAAA,CAAK,QAAA,KAAa,IAAA,mBAChB,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,UAAA;AAAA,cACL,eAAA,EAAc,MAAA;AAAA,cACd,OAAO,IAAA,CAAK,IAAA;AAAA,cACZ,SAAA,EAAU,0NAAA;AAAA,cAET,QAAA,EAAA;AAAA,gBAAA,IAAA,CAAK,uBAAO,GAAA,CAAC,IAAA,CAAK,MAAL,EAAU,aAAA,EAAW,MAAC,CAAA,GAAK,IAAA;AAAA,gBACxC,IAAA,CAAK;AAAA;AAAA,aAAA;AAAA,YAPD,IAAA,CAAK;AAAA,WAQZ,mBAEA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,OAAO,IAAA,CAAK,IAAA;AAAA,cACZ,QAAA,EAAU,MAAM,IAAA,CAAK,QAAA,IAAW;AAAA,cAE/B,QAAA,EAAA,IAAA,CAAK;AAAA,aAAA;AAAA,YAND,IAAA,CAAK;AAAA;AAOZ;AAEJ;AAAA;AACF,GAAA,EACF,CAAA;AAEJ","file":"chunk-WZSAUESL.js","sourcesContent":["import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { MenuContent, MenuItem } from '../menu/Menu'\n\nexport interface ContextMenuItem {\n key: string\n label: string\n icon?: LucideIcon\n onSelect?: () => void\n danger?: boolean\n disabled?: boolean\n hint?: string\n}\n\nexport interface ContextMenuProps {\n x: number\n y: number\n items: ContextMenuItem[]\n onClose: () => void\n className?: string\n}\n\nexport function ContextMenu({ x, y, items, onClose, className }: ContextMenuProps) {\n const open = items.length > 0\n return (\n <DropdownMenuPrimitive.Root open={open} onOpenChange={(next) => !next && onClose()} modal={false}>\n <DropdownMenuPrimitive.Trigger asChild aria-hidden tabIndex={-1}>\n <span\n data-as=\"context-menu-anchor\"\n style={{ position: 'fixed', left: x, top: y, width: 0, height: 0 }}\n />\n </DropdownMenuPrimitive.Trigger>\n <MenuContent\n align=\"start\"\n sideOffset={2}\n collisionPadding={8}\n data-as=\"context-menu\"\n onCloseAutoFocus={(event) => event.preventDefault()}\n className={cn('min-w-40', className)}\n >\n {items.map((item) =>\n item.disabled === true ? (\n <span\n key={item.key}\n role=\"menuitem\"\n aria-disabled=\"true\"\n title={item.hint}\n className=\"pointer-events-none flex w-full cursor-default select-none items-center gap-2 rounded-[calc(var(--as-radius-sm)-2px)] px-2 py-1.5 text-left text-sm text-[var(--as-muted-fg)] opacity-50 [&_svg]:size-4 [&_svg]:shrink-0\"\n >\n {item.icon ? <item.icon aria-hidden /> : null}\n {item.label}\n </span>\n ) : (\n <MenuItem\n key={item.key}\n icon={item.icon}\n danger={item.danger}\n title={item.hint}\n onSelect={() => item.onSelect?.()}\n >\n {item.label}\n </MenuItem>\n ),\n )}\n </MenuContent>\n </DropdownMenuPrimitive.Root>\n )\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { cn } from './chunk-BLJWR4ZV.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Minus, Check } from 'lucide-react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var CheckIndicator = React.forwardRef(
|
|
7
|
+
function CheckIndicator2({ checked, label, onToggle, mixed = false, className }, ref) {
|
|
8
|
+
return /* @__PURE__ */ jsx(
|
|
9
|
+
"button",
|
|
10
|
+
{
|
|
11
|
+
ref,
|
|
12
|
+
type: "button",
|
|
13
|
+
role: "checkbox",
|
|
14
|
+
"data-as": "check-indicator",
|
|
15
|
+
"aria-checked": mixed ? "mixed" : checked,
|
|
16
|
+
"aria-label": label,
|
|
17
|
+
onClick: (event) => {
|
|
18
|
+
event.stopPropagation();
|
|
19
|
+
onToggle();
|
|
20
|
+
},
|
|
21
|
+
className: cn(
|
|
22
|
+
"flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-[calc(var(--as-radius-sm)-2px)] transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]",
|
|
23
|
+
checked || mixed ? "bg-[var(--as-primary)] text-[var(--as-primary-fg)]" : "border border-[var(--as-border)] text-[var(--as-muted-fg)] hover:border-[var(--as-fg)]/40",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
children: mixed ? /* @__PURE__ */ jsx(Minus, { className: "size-3", "aria-hidden": true }) : checked ? /* @__PURE__ */ jsx(Check, { className: "size-3", "aria-hidden": true }) : null
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
export { CheckIndicator };
|
|
33
|
+
//# sourceMappingURL=chunk-XE4TFW63.js.map
|
|
34
|
+
//# sourceMappingURL=chunk-XE4TFW63.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/check-indicator/CheckIndicator.tsx"],"names":["CheckIndicator"],"mappings":";;;;;AAYO,IAAM,cAAA,GAAuB,KAAA,CAAA,UAAA;AAAA,EAClC,SAASA,eAAAA,CAAe,EAAE,OAAA,EAAS,KAAA,EAAO,UAAU,KAAA,GAAQ,KAAA,EAAO,SAAA,EAAU,EAAG,GAAA,EAAK;AACnF,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAQ,iBAAA;AAAA,QACR,cAAA,EAAc,QAAQ,OAAA,GAAU,OAAA;AAAA,QAChC,YAAA,EAAY,KAAA;AAAA,QACZ,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,UAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,UAAA,QAAA,EAAS;AAAA,QACX,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,+NAAA;AAAA,UACA,OAAA,IAAW,QACP,oDAAA,GACA,2FAAA;AAAA,UACJ;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,KAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,UAAS,aAAA,EAAW,IAAA,EAAC,CAAA,GACpC,OAAA,uBACD,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,MAAC,CAAA,GACpC;AAAA;AAAA,KACN;AAAA,EAEJ;AACF","file":"chunk-XE4TFW63.js","sourcesContent":["import * as React from 'react'\nimport { Check, Minus } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport interface CheckIndicatorProps {\n checked: boolean\n label: string\n onToggle: () => void\n mixed?: boolean\n className?: string\n}\n\nexport const CheckIndicator = React.forwardRef<HTMLButtonElement, CheckIndicatorProps>(\n function CheckIndicator({ checked, label, onToggle, mixed = false, className }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"checkbox\"\n data-as=\"check-indicator\"\n aria-checked={mixed ? 'mixed' : checked}\n aria-label={label}\n onClick={(event) => {\n event.stopPropagation()\n onToggle()\n }}\n className={cn(\n 'flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-[calc(var(--as-radius-sm)-2px)] transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]',\n checked || mixed\n ? 'bg-[var(--as-primary)] text-[var(--as-primary-fg)]'\n : 'border border-[var(--as-border)] text-[var(--as-muted-fg)] hover:border-[var(--as-fg)]/40',\n className,\n )}\n >\n {mixed ? (\n <Minus className=\"size-3\" aria-hidden />\n ) : checked ? (\n <Check className=\"size-3\" aria-hidden />\n ) : null}\n </button>\n )\n },\n)\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface ComboboxOption {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
group?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface ComboboxProps {
|
|
11
|
+
options: ComboboxOption[];
|
|
12
|
+
value?: string;
|
|
13
|
+
onChange: (value: string) => void;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
searchPlaceholder?: string;
|
|
16
|
+
searchLabel?: string;
|
|
17
|
+
emptyLabel?: string;
|
|
18
|
+
loadingLabel?: string;
|
|
19
|
+
loading?: boolean;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
clearable?: boolean;
|
|
22
|
+
clearLabel?: string;
|
|
23
|
+
onSearchChange?: (term: string) => void;
|
|
24
|
+
onOpenChange?: (open: boolean) => void;
|
|
25
|
+
label?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
id?: string;
|
|
28
|
+
className?: string;
|
|
29
|
+
panelClassName?: string;
|
|
30
|
+
}
|
|
31
|
+
declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLButtonElement>>;
|
|
32
|
+
interface ComboboxMultiProps {
|
|
33
|
+
options: ComboboxOption[];
|
|
34
|
+
value: string[];
|
|
35
|
+
onChange: (value: string[]) => void;
|
|
36
|
+
placeholder?: string;
|
|
37
|
+
searchPlaceholder?: string;
|
|
38
|
+
searchLabel?: string;
|
|
39
|
+
emptyLabel?: string;
|
|
40
|
+
loadingLabel?: string;
|
|
41
|
+
loading?: boolean;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
maxTriggerLabels?: number;
|
|
44
|
+
onSearchChange?: (term: string) => void;
|
|
45
|
+
onOpenChange?: (open: boolean) => void;
|
|
46
|
+
label?: string;
|
|
47
|
+
error?: string;
|
|
48
|
+
id?: string;
|
|
49
|
+
className?: string;
|
|
50
|
+
panelClassName?: string;
|
|
51
|
+
}
|
|
52
|
+
declare const ComboboxMulti: React.ForwardRefExoticComponent<ComboboxMultiProps & React.RefAttributes<HTMLButtonElement>>;
|
|
53
|
+
|
|
54
|
+
export { Combobox, ComboboxMulti, type ComboboxMultiProps, type ComboboxOption, type ComboboxProps };
|
package/dist/combobox.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"combobox.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
|
|
4
|
+
interface ContextMenuItem {
|
|
5
|
+
key: string;
|
|
6
|
+
label: string;
|
|
7
|
+
icon?: LucideIcon;
|
|
8
|
+
onSelect?: () => void;
|
|
9
|
+
danger?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
hint?: string;
|
|
12
|
+
}
|
|
13
|
+
interface ContextMenuProps {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
items: ContextMenuItem[];
|
|
17
|
+
onClose: () => void;
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
declare function ContextMenu({ x, y, items, onClose, className }: ContextMenuProps): React.JSX.Element;
|
|
21
|
+
|
|
22
|
+
export { ContextMenu, type ContextMenuItem, type ContextMenuProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"context-menu.js"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface ErrorBannerProps {
|
|
4
|
+
message: string | null | undefined;
|
|
5
|
+
action?: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
declare function ErrorBanner({ message, action, className }: ErrorBannerProps): React.JSX.Element | null;
|
|
9
|
+
|
|
10
|
+
export { ErrorBanner, type ErrorBannerProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"error-banner.js"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface ExpandableSearchProps {
|
|
4
|
+
value: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
onSubmit?: (value: string) => void;
|
|
7
|
+
onClear?: () => void;
|
|
8
|
+
placeholder: string;
|
|
9
|
+
ariaLabel: string;
|
|
10
|
+
clearLabel?: string;
|
|
11
|
+
expandLabel?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const ExpandableSearch: React.ForwardRefExoticComponent<ExpandableSearchProps & React.RefAttributes<HTMLInputElement>>;
|
|
15
|
+
|
|
16
|
+
export { ExpandableSearch, type ExpandableSearchProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"expandable-search.js"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface FieldLabelProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
info: React.ReactNode;
|
|
6
|
+
infoTitle?: React.ReactNode;
|
|
7
|
+
label?: string;
|
|
8
|
+
showOnHover?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
declare function FieldLabel({ children, info, infoTitle, label, showOnHover, className, }: FieldLabelProps): React.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { FieldLabel, type FieldLabelProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"field-label.js"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
|
|
4
|
+
interface FormModalProps {
|
|
5
|
+
open: boolean;
|
|
6
|
+
onOpenChange: (open: boolean) => void;
|
|
7
|
+
title: React.ReactNode;
|
|
8
|
+
description?: React.ReactNode;
|
|
9
|
+
icon?: LucideIcon;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
onSubmit?: () => void;
|
|
12
|
+
submitting?: boolean;
|
|
13
|
+
submitDisabled?: boolean;
|
|
14
|
+
submitLabel?: string;
|
|
15
|
+
cancelLabel?: string;
|
|
16
|
+
closeLabel?: string;
|
|
17
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
18
|
+
contentClassName?: string;
|
|
19
|
+
footer?: React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
declare function FormModal({ open, onOpenChange, title, description, icon: Icon, children, onSubmit, submitting, submitDisabled, submitLabel, cancelLabel, closeLabel, size, contentClassName, footer, }: FormModalProps): React.JSX.Element;
|
|
22
|
+
|
|
23
|
+
export { FormModal, type FormModalProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"form-modal.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,17 +6,34 @@ export { ThemeScope, ThemeScopeProps } from './theme-scope.js';
|
|
|
6
6
|
export { Badge, BadgeProps, badgeVariants } from './badge.js';
|
|
7
7
|
export { Button, ButtonProps, buttonVariants } from './button.js';
|
|
8
8
|
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './card.js';
|
|
9
|
+
export { CheckIndicator, CheckIndicatorProps } from './check-indicator.js';
|
|
10
|
+
export { Combobox, ComboboxMulti, ComboboxMultiProps, ComboboxOption, ComboboxProps } from './combobox.js';
|
|
9
11
|
export { ConfirmationModal, ConfirmationModalProps } from './confirmation-modal.js';
|
|
12
|
+
export { ContextMenu, ContextMenuItem, ContextMenuProps } from './context-menu.js';
|
|
10
13
|
export { EmptyState, EmptyStateProps } from './empty-state.js';
|
|
14
|
+
export { ErrorBanner, ErrorBannerProps } from './error-banner.js';
|
|
15
|
+
export { ExpandableSearch, ExpandableSearchProps } from './expandable-search.js';
|
|
16
|
+
export { FieldLabel, FieldLabelProps } from './field-label.js';
|
|
17
|
+
export { FormModal, FormModalProps } from './form-modal.js';
|
|
18
|
+
export { InfoButton, InfoButtonProps } from './info-button.js';
|
|
11
19
|
export { Input, InputProps } from './input.js';
|
|
20
|
+
export { MarqueeBand, MarqueePhase, MarqueeSelection, MarqueeSurface, MarqueeSurfaceProps, Rect, UseMarqueeOptions, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './marquee.js';
|
|
21
|
+
export { ActionMenu, ActionMenuItem, ActionMenuProps, Menu, MenuContent, MenuGroup, MenuItem, MenuItemProps, MenuLabel, MenuSeparator, MenuTrigger } from './menu.js';
|
|
12
22
|
export { Modal, ModalClose, ModalContent, ModalContentProps, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './modal.js';
|
|
23
|
+
export { PopoverButton, PopoverButtonProps } from './popover-button.js';
|
|
13
24
|
export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger } from './popover.js';
|
|
25
|
+
export { SearchInput, SearchInputProps } from './search-input.js';
|
|
26
|
+
export { SelectionBar, SelectionBarProps } from './selection-bar.js';
|
|
14
27
|
export { Spinner, SpinnerProps } from './spinner.js';
|
|
15
28
|
export { InfoTooltip, InfoTooltipProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip.js';
|
|
29
|
+
export { UndoNotice, UndoNoticeProps } from './undo-notice.js';
|
|
30
|
+
export { ViewToggle, ViewToggleProps, ViewToggleView } from './view-toggle.js';
|
|
31
|
+
export { Stepper, StepperProps, StepperStep, Wizard, WizardContext, WizardProps, WizardStep } from './wizard.js';
|
|
16
32
|
import 'react';
|
|
17
33
|
import 'class-variance-authority/types';
|
|
18
34
|
import 'class-variance-authority';
|
|
19
35
|
import 'lucide-react';
|
|
36
|
+
import '@radix-ui/react-dropdown-menu';
|
|
20
37
|
import '@radix-ui/react-dialog';
|
|
21
38
|
import '@radix-ui/react-popover';
|
|
22
39
|
import '@radix-ui/react-tooltip';
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
export { Portal } from './chunk-7YLR4AGA.js';
|
|
2
1
|
export { ThemeScope } from './chunk-TGU3PKNM.js';
|
|
3
2
|
export { InfoTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-TJGX27YO.js';
|
|
3
|
+
export { UndoNotice } from './chunk-OUHUVACM.js';
|
|
4
|
+
export { ViewToggle } from './chunk-MXOBOS4Y.js';
|
|
5
|
+
export { Stepper, Wizard } from './chunk-LEDQQBVV.js';
|
|
6
|
+
export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './chunk-RU3DEF2O.js';
|
|
4
7
|
export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger } from './chunk-CI56SSO2.js';
|
|
8
|
+
export { Portal } from './chunk-7YLR4AGA.js';
|
|
9
|
+
export { SearchInput } from './chunk-H5U4KNXF.js';
|
|
10
|
+
export { SelectionBar } from './chunk-HSUCCANX.js';
|
|
11
|
+
export { ContextMenu } from './chunk-WZSAUESL.js';
|
|
12
|
+
export { ActionMenu, Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuTrigger } from './chunk-KXLMTAZ5.js';
|
|
13
|
+
export { EmptyState } from './chunk-KDJLYKR6.js';
|
|
14
|
+
export { ErrorBanner } from './chunk-BJOY3XL7.js';
|
|
15
|
+
export { ExpandableSearch } from './chunk-4SW3ESVI.js';
|
|
16
|
+
export { FieldLabel } from './chunk-ESUTPQDO.js';
|
|
17
|
+
export { FormModal } from './chunk-GPIN2ITX.js';
|
|
18
|
+
export { InfoButton } from './chunk-DV3MXDLN.js';
|
|
19
|
+
export { PopoverButton } from './chunk-N5KQRHXU.js';
|
|
20
|
+
export { Input } from './chunk-COPPAHR5.js';
|
|
5
21
|
export { rawTokens, semanticTokens } from './chunk-3HFL3JGP.js';
|
|
6
|
-
export { Badge, badgeVariants } from './chunk-
|
|
22
|
+
export { Badge, badgeVariants } from './chunk-SKTLC2XY.js';
|
|
7
23
|
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-HSWSYEFQ.js';
|
|
8
|
-
export {
|
|
24
|
+
export { CheckIndicator } from './chunk-XE4TFW63.js';
|
|
25
|
+
export { Combobox, ComboboxMulti } from './chunk-3522NABN.js';
|
|
26
|
+
export { ConfirmationModal } from './chunk-GA3XIDVX.js';
|
|
9
27
|
export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './chunk-RHBQ3GZE.js';
|
|
10
|
-
export { Button, buttonVariants } from './chunk-
|
|
28
|
+
export { Button, buttonVariants } from './chunk-GTXGTQ6F.js';
|
|
11
29
|
export { Spinner } from './chunk-INTST5VG.js';
|
|
12
|
-
export { EmptyState } from './chunk-KDJLYKR6.js';
|
|
13
|
-
export { Input } from './chunk-COPPAHR5.js';
|
|
14
30
|
export { cn } from './chunk-BLJWR4ZV.js';
|
|
15
31
|
//# sourceMappingURL=index.js.map
|
|
16
32
|
//# sourceMappingURL=index.js.map
|