@fangxinyan/lumina 0.1.2 → 0.1.4
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/{Cascader-TO2QMSLJ.css → Cascader-DTRTTXC2.css} +1 -4
- package/dist/Cascader.cjs +3 -2
- package/dist/Cascader.js +2 -1
- package/dist/ColorPicker-GP7AQYUU.css +233 -0
- package/dist/ColorPicker.cjs +13 -0
- package/dist/ColorPicker.cjs.map +1 -0
- package/dist/ColorPicker.d.cts +42 -0
- package/dist/ColorPicker.d.ts +42 -0
- package/dist/ColorPicker.js +4 -0
- package/dist/ColorPicker.js.map +1 -0
- package/dist/Popover-MGCMOXYP.css +10 -0
- package/dist/Popover.cjs +3 -2
- package/dist/Popover.js +2 -1
- package/dist/{Select-DDJJBQEL.css → Select-EDG37C37.css} +1 -4
- package/dist/Select.cjs +3 -2
- package/dist/Select.js +2 -1
- package/dist/{Tooltip-RT4BOVTD.css → Tooltip-ST24GY4S.css} +1 -6
- package/dist/Tooltip.cjs +3 -2
- package/dist/Tooltip.js +2 -1
- package/dist/Typography-NKPWTJCV.css +235 -0
- package/dist/Typography.cjs +29 -0
- package/dist/Typography.cjs.map +1 -0
- package/dist/Typography.d.cts +151 -0
- package/dist/Typography.d.ts +151 -0
- package/dist/Typography.js +4 -0
- package/dist/Typography.js.map +1 -0
- package/dist/{chunk-RMD6KQ4H.cjs → chunk-3UFU63X7.cjs} +29 -7
- package/dist/chunk-3UFU63X7.cjs.map +1 -0
- package/dist/chunk-5WF6M47X.cjs +510 -0
- package/dist/chunk-5WF6M47X.cjs.map +1 -0
- package/dist/chunk-GZGZR4FT.js +484 -0
- package/dist/chunk-GZGZR4FT.js.map +1 -0
- package/dist/{chunk-U6ODMPTI.cjs → chunk-HKAQILD2.cjs} +33 -19
- package/dist/chunk-HKAQILD2.cjs.map +1 -0
- package/dist/{chunk-ZMDVK2U3.cjs → chunk-KGYLUZOU.cjs} +61 -38
- package/dist/chunk-KGYLUZOU.cjs.map +1 -0
- package/dist/chunk-NE4YEBFH.js +66 -0
- package/dist/chunk-NE4YEBFH.js.map +1 -0
- package/dist/{chunk-XRZ5OKZH.js → chunk-OEHCA5IV.js} +38 -24
- package/dist/chunk-OEHCA5IV.js.map +1 -0
- package/dist/{chunk-T5AH4FCV.js → chunk-OYH6A7IQ.js} +61 -38
- package/dist/chunk-OYH6A7IQ.js.map +1 -0
- package/dist/chunk-QTGDYQOT.cjs +357 -0
- package/dist/chunk-QTGDYQOT.cjs.map +1 -0
- package/dist/chunk-RPD2OIIP.js +335 -0
- package/dist/chunk-RPD2OIIP.js.map +1 -0
- package/dist/chunk-RZ2E3XEU.cjs +131 -0
- package/dist/chunk-RZ2E3XEU.cjs.map +1 -0
- package/dist/{chunk-ZXM247EM.cjs → chunk-TWBJCFEJ.cjs} +38 -24
- package/dist/chunk-TWBJCFEJ.cjs.map +1 -0
- package/dist/chunk-V2DIQ3RH.js +109 -0
- package/dist/chunk-V2DIQ3RH.js.map +1 -0
- package/dist/chunk-WNGG25QX.js +56 -0
- package/dist/chunk-WNGG25QX.js.map +1 -0
- package/dist/index.cjs +50 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/styles.css +434 -20
- package/package.json +1 -1
- package/dist/Popover-WXEVUYBG.css +0 -15
- package/dist/chunk-OUJBCNWD.js +0 -52
- package/dist/chunk-OUJBCNWD.js.map +0 -1
- package/dist/chunk-RMD6KQ4H.cjs.map +0 -1
- package/dist/chunk-T5AH4FCV.js.map +0 -1
- package/dist/chunk-U6ODMPTI.cjs.map +0 -1
- package/dist/chunk-XRZ5OKZH.js.map +0 -1
- package/dist/chunk-Y6FVCCUE.js +0 -34
- package/dist/chunk-Y6FVCCUE.js.map +0 -1
- package/dist/chunk-ZMDVK2U3.cjs.map +0 -1
- package/dist/chunk-ZXM247EM.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Cascader/Cascader.tsx"],"names":["React","useFloating","jsxs","jsx","Icon","createPortal"],"mappings":"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","file":"chunk-TWBJCFEJ.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Cascader.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport interface CascaderOption {\n value: string;\n label: React.ReactNode;\n icon?: IconName;\n children?: CascaderOption[];\n disabled?: boolean;\n}\n\nexport interface CascaderProps {\n options: CascaderOption[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (path: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\n/** `Cascader` — multi-column hierarchical selector. */\nexport const Cascader: React.FC<CascaderProps> = ({\n options,\n value,\n defaultValue = [],\n onChange,\n placeholder = \"请选择\",\n disabled,\n className = \"\",\n}) => {\n const [inner, setInner] = React.useState<string[]>(defaultValue);\n const isControlled = value !== undefined;\n const cur = isControlled ? value! : inner;\n const [open, setOpen] = React.useState(false);\n const [path, setPath] = React.useState<string[]>(cur);\n const panelRef = React.useRef<HTMLDivElement>(null);\n\n const { triggerRef: ref, floatingStyle } = useFloating<HTMLDivElement>({\n open,\n placement: \"bottom\",\n panelWidth: 520,\n panelHeight: 260,\n });\n\n React.useEffect(() => {\n const h = (e: MouseEvent) => {\n const t = e.target as Node;\n if (ref.current?.contains(t)) return;\n if (panelRef.current?.contains(t)) return;\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (open) setPath(cur);\n }, [open, cur]);\n\n const columns: CascaderOption[][] = [options];\n let cursor: CascaderOption[] = options;\n for (const v of path) {\n const match: CascaderOption | undefined = cursor.find((o) => o.value === v);\n if (match && match.children) {\n cursor = match.children;\n columns.push(cursor);\n } else break;\n }\n\n const pick = (depth: number, val: string, hasChildren: boolean) => {\n const np = [...path.slice(0, depth), val];\n setPath(np);\n if (!hasChildren) {\n if (!isControlled) setInner(np);\n onChange?.(np);\n setOpen(false);\n }\n };\n\n const labels: React.ReactNode[] = [];\n let list: CascaderOption[] = options;\n for (const v of cur) {\n const m: CascaderOption | undefined = list.find((o) => o.value === v);\n if (!m) break;\n labels.push(m.label);\n if (!m.children) break;\n list = m.children;\n }\n\n return (\n <div ref={ref} className={`cascader ${open ? \"open\" : \"\"} ${className}`}>\n <button\n type=\"button\"\n className={`cascader-trigger ${labels.length === 0 ? \"placeholder\" : \"\"}`}\n disabled={disabled}\n onClick={() => !disabled && setOpen((o) => !o)}\n >\n <span style={{ flex: 1 }}>\n {labels.length ? labels.map((l, i) => <span key={i}>{i > 0 && \" / \"}{l}</span>) : placeholder}\n </span>\n <span style={{ position: \"absolute\", right: 12, color: \"var(--fg-subtle)\" }}>\n <Icon name=\"chevDown\" size={14} />\n </span>\n </button>\n {open && typeof document !== \"undefined\" &&\n createPortal(\n <div ref={panelRef} className=\"cascader-panel\" style={floatingStyle}>\n {columns.map((col, depth) => (\n <div key={depth} className=\"cascader-col\">\n {col.map((o) => {\n const isActive = path[depth] === o.value;\n const hasChildren = !!(o.children && o.children.length);\n return (\n <button\n key={o.value}\n type=\"button\"\n className={`cascader-item ${isActive ? \"active\" : \"\"}`}\n disabled={o.disabled}\n onClick={() => pick(depth, o.value, hasChildren)}\n >\n {o.icon && <Icon name={o.icon} size={13} />}\n <span>{o.label}</span>\n {hasChildren && (\n <span className=\"chev\">\n <Icon name=\"chevRight\" size={12} />\n </span>\n )}\n </button>\n );\n })}\n </div>\n ))}\n </div>,\n document.body\n )}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
// src/utils/useFloating.ts
|
|
4
|
+
function useFloating(opts) {
|
|
5
|
+
const triggerRef = React.useRef(null);
|
|
6
|
+
const preferred = opts.placement ?? "bottom";
|
|
7
|
+
const gap = opts.gap ?? 8;
|
|
8
|
+
const panelW = opts.panelWidth ?? 240;
|
|
9
|
+
const panelH = opts.panelHeight ?? 300;
|
|
10
|
+
const doShift = opts.shift !== false;
|
|
11
|
+
const doFlip = opts.flip !== false;
|
|
12
|
+
const matchW = !!opts.matchTriggerWidth;
|
|
13
|
+
const align = opts.alignCross ?? "start";
|
|
14
|
+
const open = opts.open;
|
|
15
|
+
const [state, setState] = React.useState({ top: 0, left: 0, placement: preferred });
|
|
16
|
+
React.useLayoutEffect(() => {
|
|
17
|
+
if (!open) return;
|
|
18
|
+
const update = () => {
|
|
19
|
+
const el = triggerRef.current;
|
|
20
|
+
if (!el) return;
|
|
21
|
+
const rect = el.getBoundingClientRect();
|
|
22
|
+
const w = matchW ? rect.width : panelW;
|
|
23
|
+
const h = panelH;
|
|
24
|
+
const vw = window.innerWidth;
|
|
25
|
+
const vh = window.innerHeight;
|
|
26
|
+
const MARGIN = 8;
|
|
27
|
+
const place = (p) => {
|
|
28
|
+
switch (p) {
|
|
29
|
+
case "top":
|
|
30
|
+
return { top: rect.top - gap - h, left: rect.left };
|
|
31
|
+
case "right":
|
|
32
|
+
return { top: rect.top, left: rect.right + gap };
|
|
33
|
+
case "left":
|
|
34
|
+
return { top: rect.top, left: rect.left - gap - w };
|
|
35
|
+
case "bottom":
|
|
36
|
+
default:
|
|
37
|
+
return { top: rect.bottom + gap, left: rect.left };
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const fits = (p, c) => {
|
|
41
|
+
if (p === "bottom") return c.top + h <= vh - MARGIN;
|
|
42
|
+
if (p === "top") return c.top >= MARGIN;
|
|
43
|
+
if (p === "right") return c.left + w <= vw - MARGIN;
|
|
44
|
+
if (p === "left") return c.left >= MARGIN;
|
|
45
|
+
return true;
|
|
46
|
+
};
|
|
47
|
+
let resolved = preferred;
|
|
48
|
+
let coords = place(resolved);
|
|
49
|
+
if (doFlip && !fits(resolved, coords)) {
|
|
50
|
+
const opp = {
|
|
51
|
+
top: "bottom",
|
|
52
|
+
bottom: "top",
|
|
53
|
+
left: "right",
|
|
54
|
+
right: "left"
|
|
55
|
+
};
|
|
56
|
+
const alt = opp[resolved];
|
|
57
|
+
const altCoords = place(alt);
|
|
58
|
+
if (fits(alt, altCoords)) {
|
|
59
|
+
resolved = alt;
|
|
60
|
+
coords = altCoords;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (align !== "start") {
|
|
64
|
+
if (resolved === "top" || resolved === "bottom") {
|
|
65
|
+
coords.left = align === "center" ? rect.left + rect.width / 2 : rect.right;
|
|
66
|
+
} else {
|
|
67
|
+
coords.top = align === "center" ? rect.top + rect.height / 2 : rect.bottom;
|
|
68
|
+
}
|
|
69
|
+
} else if (doShift) {
|
|
70
|
+
if (resolved === "bottom" || resolved === "top") {
|
|
71
|
+
coords.left = Math.max(MARGIN, Math.min(coords.left, vw - w - MARGIN));
|
|
72
|
+
} else {
|
|
73
|
+
coords.top = Math.max(MARGIN, Math.min(coords.top, vh - h - MARGIN));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
setState({
|
|
77
|
+
top: coords.top,
|
|
78
|
+
left: coords.left,
|
|
79
|
+
width: matchW ? rect.width : void 0,
|
|
80
|
+
placement: resolved
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
update();
|
|
84
|
+
window.addEventListener("scroll", update, true);
|
|
85
|
+
window.addEventListener("resize", update);
|
|
86
|
+
return () => {
|
|
87
|
+
window.removeEventListener("scroll", update, true);
|
|
88
|
+
window.removeEventListener("resize", update);
|
|
89
|
+
};
|
|
90
|
+
}, [open, preferred, gap, panelW, panelH, doShift, doFlip, matchW]);
|
|
91
|
+
let transform;
|
|
92
|
+
if (align !== "start") {
|
|
93
|
+
const cross = state.placement === "top" || state.placement === "bottom" ? "X" : "Y";
|
|
94
|
+
const percent = align === "center" ? "-50%" : "-100%";
|
|
95
|
+
transform = `translate${cross}(${percent})`;
|
|
96
|
+
}
|
|
97
|
+
const floatingStyle = {
|
|
98
|
+
position: "fixed",
|
|
99
|
+
top: state.top,
|
|
100
|
+
left: state.left,
|
|
101
|
+
...state.width != null ? { width: state.width } : {},
|
|
102
|
+
...transform ? { transform } : {}
|
|
103
|
+
};
|
|
104
|
+
return { triggerRef, floatingStyle, placement: state.placement };
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export { useFloating };
|
|
108
|
+
//# sourceMappingURL=chunk-V2DIQ3RH.js.map
|
|
109
|
+
//# sourceMappingURL=chunk-V2DIQ3RH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/useFloating.ts"],"names":[],"mappings":";;;AAkDO,SAAS,YACd,IAAA,EACsB;AACtB,EAAA,MAAM,UAAA,GAAmB,aAAU,IAAI,CAAA;AACvC,EAAA,MAAM,SAAA,GAAY,KAAK,SAAA,IAAa,QAAA;AACpC,EAAA,MAAM,GAAA,GAAM,KAAK,GAAA,IAAO,CAAA;AACxB,EAAA,MAAM,MAAA,GAAS,KAAK,UAAA,IAAc,GAAA;AAClC,EAAA,MAAM,MAAA,GAAS,KAAK,WAAA,IAAe,GAAA;AACnC,EAAA,MAAM,OAAA,GAAU,KAAK,KAAA,KAAU,KAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,KAAK,IAAA,KAAS,KAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,CAAC,CAAC,IAAA,CAAK,iBAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,KAAK,UAAA,IAAc,OAAA;AACjC,EAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAElB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,KAAA,CAAA,QAAA,CAK7B,EAAE,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,SAAA,EAAW,CAAA;AAE5C,EAAM,sBAAgB,MAAM;AAC1B,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,MAAM,KAAK,UAAA,CAAW,OAAA;AACtB,MAAA,IAAI,CAAC,EAAA,EAAI;AACT,MAAA,MAAM,IAAA,GAAO,GAAG,qBAAA,EAAsB;AACtC,MAAA,MAAM,CAAA,GAAI,MAAA,GAAS,IAAA,CAAK,KAAA,GAAQ,MAAA;AAChC,MAAA,MAAM,CAAA,GAAI,MAAA;AACV,MAAA,MAAM,KAAK,MAAA,CAAO,UAAA;AAClB,MAAA,MAAM,KAAK,MAAA,CAAO,WAAA;AAClB,MAAA,MAAM,MAAA,GAAS,CAAA;AAEf,MAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAiB;AAC9B,QAAA,QAAQ,CAAA;AAAG,UACT,KAAK,KAAA;AACH,YAAA,OAAO,EAAE,KAAK,IAAA,CAAK,GAAA,GAAM,MAAM,CAAA,EAAG,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA,UACpD,KAAK,OAAA;AACH,YAAA,OAAO,EAAE,GAAA,EAAK,IAAA,CAAK,KAAK,IAAA,EAAM,IAAA,CAAK,QAAQ,GAAA,EAAI;AAAA,UACjD,KAAK,MAAA;AACH,YAAA,OAAO,EAAE,KAAK,IAAA,CAAK,GAAA,EAAK,MAAM,IAAA,CAAK,IAAA,GAAO,MAAM,CAAA,EAAE;AAAA,UACpD,KAAK,QAAA;AAAA,UACL;AACE,YAAA,OAAO,EAAE,GAAA,EAAK,IAAA,CAAK,SAAS,GAAA,EAAK,IAAA,EAAM,KAAK,IAAA,EAAK;AAAA;AACrD,MACF,CAAA;AAEA,MAAA,MAAM,IAAA,GAAO,CAAC,CAAA,EAAc,CAAA,KAAqC;AAC/D,QAAA,IAAI,MAAM,QAAA,EAAU,OAAO,CAAA,CAAE,GAAA,GAAM,KAAK,EAAA,GAAK,MAAA;AAC7C,QAAA,IAAI,CAAA,KAAM,KAAA,EAAO,OAAO,CAAA,CAAE,GAAA,IAAO,MAAA;AACjC,QAAA,IAAI,MAAM,OAAA,EAAS,OAAO,CAAA,CAAE,IAAA,GAAO,KAAK,EAAA,GAAK,MAAA;AAC7C,QAAA,IAAI,CAAA,KAAM,MAAA,EAAQ,OAAO,CAAA,CAAE,IAAA,IAAQ,MAAA;AACnC,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,IAAI,QAAA,GAAsB,SAAA;AAC1B,MAAA,IAAI,MAAA,GAAS,MAAM,QAAQ,CAAA;AAE3B,MAAA,IAAI,MAAA,IAAU,CAAC,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA,EAAG;AACrC,QAAA,MAAM,GAAA,GAAoC;AAAA,UACxC,GAAA,EAAK,QAAA;AAAA,UACL,MAAA,EAAQ,KAAA;AAAA,UACR,IAAA,EAAM,OAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACT;AACA,QAAA,MAAM,GAAA,GAAM,IAAI,QAAQ,CAAA;AACxB,QAAA,MAAM,SAAA,GAAY,MAAM,GAAG,CAAA;AAC3B,QAAA,IAAI,IAAA,CAAK,GAAA,EAAK,SAAS,CAAA,EAAG;AACxB,UAAA,QAAA,GAAW,GAAA;AACX,UAAA,MAAA,GAAS,SAAA;AAAA,QACX;AAAA,MACF;AAIA,MAAA,IAAI,UAAU,OAAA,EAAS;AACrB,QAAA,IAAI,QAAA,KAAa,KAAA,IAAS,QAAA,KAAa,QAAA,EAAU;AAC/C,UAAA,MAAA,CAAO,IAAA,GACL,UAAU,QAAA,GAAW,IAAA,CAAK,OAAO,IAAA,CAAK,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAA;AAAA,QAC3D,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,GAAA,GACL,UAAU,QAAA,GAAW,IAAA,CAAK,MAAM,IAAA,CAAK,MAAA,GAAS,IAAI,IAAA,CAAK,MAAA;AAAA,QAC3D;AAAA,MACF,WAAW,OAAA,EAAS;AAClB,QAAA,IAAI,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,KAAA,EAAO;AAC/C,UAAA,MAAA,CAAO,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,IAAA,EAAM,EAAA,GAAK,CAAA,GAAI,MAAM,CAAC,CAAA;AAAA,QACvE,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,GAAA,EAAK,EAAA,GAAK,CAAA,GAAI,MAAM,CAAC,CAAA;AAAA,QACrE;AAAA,MACF;AAEA,MAAA,QAAA,CAAS;AAAA,QACP,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,KAAA,EAAO,MAAA,GAAS,IAAA,CAAK,KAAA,GAAQ,MAAA;AAAA,QAC7B,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAA,EAAO;AACP,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,MAAM,CAAA;AACxC,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AACjD,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAAA,IAC7C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAW,GAAA,EAAK,QAAQ,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAC,CAAA;AAElE,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,MAAM,QAAQ,KAAA,CAAM,SAAA,KAAc,SAAS,KAAA,CAAM,SAAA,KAAc,WAAW,GAAA,GAAM,GAAA;AAChF,IAAA,MAAM,OAAA,GAAU,KAAA,KAAU,QAAA,GAAW,MAAA,GAAS,OAAA;AAC9C,IAAA,SAAA,GAAY,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,CAAA;AAAA,EAC1C;AAEA,EAAA,MAAM,aAAA,GAAqC;AAAA,IACzC,QAAA,EAAU,OAAA;AAAA,IACV,KAAK,KAAA,CAAM,GAAA;AAAA,IACX,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,GAAI,MAAM,KAAA,IAAS,IAAA,GAAO,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IACpD,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc;AAAC,GACnC;AAEA,EAAA,OAAO,EAAE,UAAA,EAAY,aAAA,EAAe,SAAA,EAAW,MAAM,SAAA,EAAU;AACjE","file":"chunk-V2DIQ3RH.js","sourcesContent":["import * as React from \"react\";\n\nexport type Placement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface UseFloatingOptions {\n /** Whether the floating element is currently visible. */\n open: boolean;\n /** Preferred placement relative to the trigger. Default `\"bottom\"`. */\n placement?: Placement;\n /** Distance between trigger and panel in px. Default 8. */\n gap?: number;\n /** Estimated panel width, used for flip / shift math. Ignored when `matchTriggerWidth`. */\n panelWidth?: number;\n /** Estimated panel height, used for flip / shift math. */\n panelHeight?: number;\n /** Keep the panel inside the viewport horizontally / vertically. Default true. */\n shift?: boolean;\n /** Flip to the opposite side if the preferred side would overflow. Default true. */\n flip?: boolean;\n /** Make the panel width track the trigger width (used by Select / Cascader). */\n matchTriggerWidth?: boolean;\n /**\n * Cross-axis alignment of the panel relative to the trigger.\n * - `\"start\"` (default) — panel's leading edge lines up with trigger's leading edge.\n * - `\"center\"` — panel is centered on the trigger (uses a CSS transform).\n * - `\"end\"` — panel's trailing edge lines up with trigger's trailing edge.\n *\n * `shift` is ignored for non-`\"start\"` alignments to avoid tugging against the\n * caller's translate.\n */\n alignCross?: \"start\" | \"center\" | \"end\";\n}\n\nexport interface UseFloatingResult<T extends HTMLElement> {\n /** Attach this to the trigger element. */\n triggerRef: React.RefObject<T>;\n /** Spread this onto the panel element. Already contains `position: fixed` + coords. */\n floatingStyle: React.CSSProperties;\n /** Resolved placement after flip logic — useful for arrow direction. */\n placement: Placement;\n}\n\n/**\n * Minimal floating-element positioning hook used by Tooltip / Popover / Select /\n * Cascader / ColorPicker. Designed to be paired with `createPortal(document.body)`\n * so overflow clipping from ancestors becomes a non-issue.\n *\n * Not a general-purpose `@floating-ui` replacement — it only covers flip + shift\n * relative to the viewport, which is what Lumina's overlays need.\n */\nexport function useFloating<T extends HTMLElement = HTMLElement>(\n opts: UseFloatingOptions\n): UseFloatingResult<T> {\n const triggerRef = React.useRef<T>(null);\n const preferred = opts.placement ?? \"bottom\";\n const gap = opts.gap ?? 8;\n const panelW = opts.panelWidth ?? 240;\n const panelH = opts.panelHeight ?? 300;\n const doShift = opts.shift !== false;\n const doFlip = opts.flip !== false;\n const matchW = !!opts.matchTriggerWidth;\n const align = opts.alignCross ?? \"start\";\n const open = opts.open;\n\n const [state, setState] = React.useState<{\n top: number;\n left: number;\n width?: number;\n placement: Placement;\n }>({ top: 0, left: 0, placement: preferred });\n\n React.useLayoutEffect(() => {\n if (!open) return;\n const update = () => {\n const el = triggerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const w = matchW ? rect.width : panelW;\n const h = panelH;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const MARGIN = 8;\n\n const place = (p: Placement) => {\n switch (p) {\n case \"top\":\n return { top: rect.top - gap - h, left: rect.left };\n case \"right\":\n return { top: rect.top, left: rect.right + gap };\n case \"left\":\n return { top: rect.top, left: rect.left - gap - w };\n case \"bottom\":\n default:\n return { top: rect.bottom + gap, left: rect.left };\n }\n };\n\n const fits = (p: Placement, c: { top: number; left: number }) => {\n if (p === \"bottom\") return c.top + h <= vh - MARGIN;\n if (p === \"top\") return c.top >= MARGIN;\n if (p === \"right\") return c.left + w <= vw - MARGIN;\n if (p === \"left\") return c.left >= MARGIN;\n return true;\n };\n\n let resolved: Placement = preferred;\n let coords = place(resolved);\n\n if (doFlip && !fits(resolved, coords)) {\n const opp: Record<Placement, Placement> = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\",\n };\n const alt = opp[resolved];\n const altCoords = place(alt);\n if (fits(alt, altCoords)) {\n resolved = alt;\n coords = altCoords;\n }\n }\n\n // Cross-axis alignment replaces the cross coordinate with the trigger\n // midpoint / far edge; the paired CSS transform then visually aligns.\n if (align !== \"start\") {\n if (resolved === \"top\" || resolved === \"bottom\") {\n coords.left =\n align === \"center\" ? rect.left + rect.width / 2 : rect.right;\n } else {\n coords.top =\n align === \"center\" ? rect.top + rect.height / 2 : rect.bottom;\n }\n } else if (doShift) {\n if (resolved === \"bottom\" || resolved === \"top\") {\n coords.left = Math.max(MARGIN, Math.min(coords.left, vw - w - MARGIN));\n } else {\n coords.top = Math.max(MARGIN, Math.min(coords.top, vh - h - MARGIN));\n }\n }\n\n setState({\n top: coords.top,\n left: coords.left,\n width: matchW ? rect.width : undefined,\n placement: resolved,\n });\n };\n\n update();\n window.addEventListener(\"scroll\", update, true);\n window.addEventListener(\"resize\", update);\n return () => {\n window.removeEventListener(\"scroll\", update, true);\n window.removeEventListener(\"resize\", update);\n };\n }, [open, preferred, gap, panelW, panelH, doShift, doFlip, matchW]);\n\n let transform: string | undefined;\n if (align !== \"start\") {\n const cross = state.placement === \"top\" || state.placement === \"bottom\" ? \"X\" : \"Y\";\n const percent = align === \"center\" ? \"-50%\" : \"-100%\";\n transform = `translate${cross}(${percent})`;\n }\n\n const floatingStyle: React.CSSProperties = {\n position: \"fixed\",\n top: state.top,\n left: state.left,\n ...(state.width != null ? { width: state.width } : {}),\n ...(transform ? { transform } : {}),\n };\n\n return { triggerRef, floatingStyle, placement: state.placement };\n}\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useFloating } from './chunk-V2DIQ3RH.js';
|
|
2
|
+
import './tokens-HWQ7KWPG.css';
|
|
3
|
+
import './shared-NJHRNLRH.css';
|
|
4
|
+
import './Tooltip-ST24GY4S.css';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { createPortal } from 'react-dom';
|
|
7
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var Tooltip = ({
|
|
10
|
+
content,
|
|
11
|
+
placement = "top",
|
|
12
|
+
children,
|
|
13
|
+
delay = 250,
|
|
14
|
+
disabled
|
|
15
|
+
}) => {
|
|
16
|
+
const [show, setShow] = React.useState(false);
|
|
17
|
+
const t = React.useRef();
|
|
18
|
+
const open = () => {
|
|
19
|
+
if (disabled) return;
|
|
20
|
+
window.clearTimeout(t.current);
|
|
21
|
+
t.current = window.setTimeout(() => setShow(true), delay);
|
|
22
|
+
};
|
|
23
|
+
const close = () => {
|
|
24
|
+
window.clearTimeout(t.current);
|
|
25
|
+
setShow(false);
|
|
26
|
+
};
|
|
27
|
+
const { triggerRef, floatingStyle, placement: resolved } = useFloating({
|
|
28
|
+
open: show,
|
|
29
|
+
placement,
|
|
30
|
+
panelWidth: 160,
|
|
31
|
+
panelHeight: 32,
|
|
32
|
+
alignCross: "center"
|
|
33
|
+
});
|
|
34
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
35
|
+
/* @__PURE__ */ jsx(
|
|
36
|
+
"span",
|
|
37
|
+
{
|
|
38
|
+
ref: triggerRef,
|
|
39
|
+
className: "tip-anchor",
|
|
40
|
+
onMouseEnter: open,
|
|
41
|
+
onMouseLeave: close,
|
|
42
|
+
onFocus: open,
|
|
43
|
+
onBlur: close,
|
|
44
|
+
children
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
show && typeof document !== "undefined" && createPortal(
|
|
48
|
+
/* @__PURE__ */ jsx("span", { className: `tip ${resolved}`, style: floatingStyle, children: content }),
|
|
49
|
+
document.body
|
|
50
|
+
)
|
|
51
|
+
] });
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { Tooltip };
|
|
55
|
+
//# sourceMappingURL=chunk-WNGG25QX.js.map
|
|
56
|
+
//# sourceMappingURL=chunk-WNGG25QX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";;;;;;;;AAgBO,IAAM,UAAkC,CAAC;AAAA,EAC9C,OAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA;AAAA,EACA,KAAA,GAAQ,GAAA;AAAA,EACR;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAU,KAAA,CAAA,MAAA,EAA2B;AAE3C,EAAA,MAAM,OAAO,MAAM;AACjB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAA,CAAO,YAAA,CAAa,EAAE,OAAO,CAAA;AAC7B,IAAA,CAAA,CAAE,UAAU,MAAA,CAAO,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,KAAK,CAAA;AAAA,EAC1D,CAAA;AACA,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,MAAA,CAAO,YAAA,CAAa,EAAE,OAAO,CAAA;AAC7B,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAe,SAAA,EAAW,QAAA,KAAa,WAAA,CAA6B;AAAA,IACtF,IAAA,EAAM,IAAA;AAAA,IACN,SAAA;AAAA,IACA,UAAA,EAAY,GAAA;AAAA,IACZ,WAAA,EAAa,EAAA;AAAA,IACb,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAU,YAAA;AAAA,QACV,YAAA,EAAc,IAAA;AAAA,QACd,YAAA,EAAc,KAAA;AAAA,QACd,OAAA,EAAS,IAAA;AAAA,QACT,MAAA,EAAQ,KAAA;AAAA,QAEP;AAAA;AAAA,KACH;AAAA,IACC,IAAA,IAAQ,OAAO,QAAA,KAAa,WAAA,IAC3B,YAAA;AAAA,sBACE,GAAA,CAAC,UAAK,SAAA,EAAW,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAA,EAAI,KAAA,EAAO,eACxC,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,MACA,QAAA,CAAS;AAAA;AACX,GAAA,EACJ,CAAA;AAEJ","file":"chunk-WNGG25QX.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Tooltip.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport interface TooltipProps {\n content: React.ReactNode;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n children: React.ReactElement;\n delay?: number;\n disabled?: boolean;\n}\n\n/** `Tooltip` — hover/focus text bubble. */\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n placement = \"top\",\n children,\n delay = 250,\n disabled,\n}) => {\n const [show, setShow] = React.useState(false);\n const t = React.useRef<number | undefined>();\n\n const open = () => {\n if (disabled) return;\n window.clearTimeout(t.current);\n t.current = window.setTimeout(() => setShow(true), delay);\n };\n const close = () => {\n window.clearTimeout(t.current);\n setShow(false);\n };\n\n const { triggerRef, floatingStyle, placement: resolved } = useFloating<HTMLSpanElement>({\n open: show,\n placement,\n panelWidth: 160,\n panelHeight: 32,\n alignCross: \"center\",\n });\n\n return (\n <>\n <span\n ref={triggerRef}\n className=\"tip-anchor\"\n onMouseEnter={open}\n onMouseLeave={close}\n onFocus={open}\n onBlur={close}\n >\n {children}\n </span>\n {show && typeof document !== \"undefined\" &&\n createPortal(\n <span className={`tip ${resolved}`} style={floatingStyle}>\n {content}\n </span>,\n document.body\n )}\n </>\n );\n};\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunk2VA2HSL4_cjs = require('./chunk-2VA2HSL4.cjs');
|
|
3
4
|
var chunkITGCHU3Y_cjs = require('./chunk-ITGCHU3Y.cjs');
|
|
4
5
|
var chunk7U6I44RV_cjs = require('./chunk-7U6I44RV.cjs');
|
|
5
6
|
var chunkIKI5CS4L_cjs = require('./chunk-IKI5CS4L.cjs');
|
|
6
|
-
var
|
|
7
|
+
var chunk3UFU63X7_cjs = require('./chunk-3UFU63X7.cjs');
|
|
8
|
+
var chunk5WF6M47X_cjs = require('./chunk-5WF6M47X.cjs');
|
|
9
|
+
var chunk7H453VPW_cjs = require('./chunk-7H453VPW.cjs');
|
|
7
10
|
var chunkKF4MCHZL_cjs = require('./chunk-KF4MCHZL.cjs');
|
|
8
11
|
var chunkIGHLSNXT_cjs = require('./chunk-IGHLSNXT.cjs');
|
|
9
|
-
var
|
|
12
|
+
var chunkHKAQILD2_cjs = require('./chunk-HKAQILD2.cjs');
|
|
10
13
|
var chunkNXOAYNG2_cjs = require('./chunk-NXOAYNG2.cjs');
|
|
11
|
-
var
|
|
14
|
+
var chunkKGYLUZOU_cjs = require('./chunk-KGYLUZOU.cjs');
|
|
12
15
|
var chunkVMHNKD3N_cjs = require('./chunk-VMHNKD3N.cjs');
|
|
13
16
|
var chunkV2ZUOEXM_cjs = require('./chunk-V2ZUOEXM.cjs');
|
|
14
17
|
var chunkALFDP5WX_cjs = require('./chunk-ALFDP5WX.cjs');
|
|
15
|
-
var
|
|
16
|
-
var chunkZXM247EM_cjs = require('./chunk-ZXM247EM.cjs');
|
|
18
|
+
var chunkTWBJCFEJ_cjs = require('./chunk-TWBJCFEJ.cjs');
|
|
17
19
|
var chunkC5TGQ7CV_cjs = require('./chunk-C5TGQ7CV.cjs');
|
|
20
|
+
var chunkQTGDYQOT_cjs = require('./chunk-QTGDYQOT.cjs');
|
|
21
|
+
require('./chunk-RZ2E3XEU.cjs');
|
|
18
22
|
var chunkNZPJ7BUB_cjs = require('./chunk-NZPJ7BUB.cjs');
|
|
19
23
|
var chunkK67KIKX4_cjs = require('./chunk-K67KIKX4.cjs');
|
|
20
24
|
var chunkQESLHLTG_cjs = require('./chunk-QESLHLTG.cjs');
|
|
21
25
|
var chunkQT7SJITQ_cjs = require('./chunk-QT7SJITQ.cjs');
|
|
22
|
-
var chunk7H453VPW_cjs = require('./chunk-7H453VPW.cjs');
|
|
23
26
|
var chunk77NP67ML_cjs = require('./chunk-77NP67ML.cjs');
|
|
24
27
|
var chunkJNFCTYJT_cjs = require('./chunk-JNFCTYJT.cjs');
|
|
25
28
|
var chunkFI7QO3I5_cjs = require('./chunk-FI7QO3I5.cjs');
|
|
@@ -30,8 +33,16 @@ var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
|
|
|
30
33
|
var chunkI2ERCHFV_cjs = require('./chunk-I2ERCHFV.cjs');
|
|
31
34
|
|
|
32
35
|
// src/index.ts
|
|
33
|
-
var VERSION = "0.1.
|
|
36
|
+
var VERSION = "0.1.4";
|
|
34
37
|
|
|
38
|
+
Object.defineProperty(exports, "Table", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () { return chunk2VA2HSL4_cjs.Table; }
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "TablePro", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () { return chunk2VA2HSL4_cjs.TablePro; }
|
|
45
|
+
});
|
|
35
46
|
Object.defineProperty(exports, "Segmented", {
|
|
36
47
|
enumerable: true,
|
|
37
48
|
get: function () { return chunkITGCHU3Y_cjs.Segmented; }
|
|
@@ -86,7 +97,31 @@ Object.defineProperty(exports, "toast", {
|
|
|
86
97
|
});
|
|
87
98
|
Object.defineProperty(exports, "Tooltip", {
|
|
88
99
|
enumerable: true,
|
|
89
|
-
get: function () { return
|
|
100
|
+
get: function () { return chunk3UFU63X7_cjs.Tooltip; }
|
|
101
|
+
});
|
|
102
|
+
Object.defineProperty(exports, "Link", {
|
|
103
|
+
enumerable: true,
|
|
104
|
+
get: function () { return chunk5WF6M47X_cjs.Link; }
|
|
105
|
+
});
|
|
106
|
+
Object.defineProperty(exports, "Paragraph", {
|
|
107
|
+
enumerable: true,
|
|
108
|
+
get: function () { return chunk5WF6M47X_cjs.Paragraph; }
|
|
109
|
+
});
|
|
110
|
+
Object.defineProperty(exports, "Text", {
|
|
111
|
+
enumerable: true,
|
|
112
|
+
get: function () { return chunk5WF6M47X_cjs.Text; }
|
|
113
|
+
});
|
|
114
|
+
Object.defineProperty(exports, "Title", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get: function () { return chunk5WF6M47X_cjs.Title; }
|
|
117
|
+
});
|
|
118
|
+
Object.defineProperty(exports, "Typography", {
|
|
119
|
+
enumerable: true,
|
|
120
|
+
get: function () { return chunk5WF6M47X_cjs.Typography; }
|
|
121
|
+
});
|
|
122
|
+
Object.defineProperty(exports, "List", {
|
|
123
|
+
enumerable: true,
|
|
124
|
+
get: function () { return chunk7H453VPW_cjs.List; }
|
|
90
125
|
});
|
|
91
126
|
Object.defineProperty(exports, "Drawer", {
|
|
92
127
|
enumerable: true,
|
|
@@ -102,7 +137,7 @@ Object.defineProperty(exports, "Pagination", {
|
|
|
102
137
|
});
|
|
103
138
|
Object.defineProperty(exports, "Popover", {
|
|
104
139
|
enumerable: true,
|
|
105
|
-
get: function () { return
|
|
140
|
+
get: function () { return chunkHKAQILD2_cjs.Popover; }
|
|
106
141
|
});
|
|
107
142
|
Object.defineProperty(exports, "Progress", {
|
|
108
143
|
enumerable: true,
|
|
@@ -114,7 +149,7 @@ Object.defineProperty(exports, "Ring", {
|
|
|
114
149
|
});
|
|
115
150
|
Object.defineProperty(exports, "Select", {
|
|
116
151
|
enumerable: true,
|
|
117
|
-
get: function () { return
|
|
152
|
+
get: function () { return chunkKGYLUZOU_cjs.Select; }
|
|
118
153
|
});
|
|
119
154
|
Object.defineProperty(exports, "Badge", {
|
|
120
155
|
enumerable: true,
|
|
@@ -132,17 +167,9 @@ Object.defineProperty(exports, "Switch", {
|
|
|
132
167
|
enumerable: true,
|
|
133
168
|
get: function () { return chunkALFDP5WX_cjs.Switch; }
|
|
134
169
|
});
|
|
135
|
-
Object.defineProperty(exports, "Table", {
|
|
136
|
-
enumerable: true,
|
|
137
|
-
get: function () { return chunk2VA2HSL4_cjs.Table; }
|
|
138
|
-
});
|
|
139
|
-
Object.defineProperty(exports, "TablePro", {
|
|
140
|
-
enumerable: true,
|
|
141
|
-
get: function () { return chunk2VA2HSL4_cjs.TablePro; }
|
|
142
|
-
});
|
|
143
170
|
Object.defineProperty(exports, "Cascader", {
|
|
144
171
|
enumerable: true,
|
|
145
|
-
get: function () { return
|
|
172
|
+
get: function () { return chunkTWBJCFEJ_cjs.Cascader; }
|
|
146
173
|
});
|
|
147
174
|
Object.defineProperty(exports, "Checkbox", {
|
|
148
175
|
enumerable: true,
|
|
@@ -152,6 +179,10 @@ Object.defineProperty(exports, "RadioGroup", {
|
|
|
152
179
|
enumerable: true,
|
|
153
180
|
get: function () { return chunkC5TGQ7CV_cjs.RadioGroup; }
|
|
154
181
|
});
|
|
182
|
+
Object.defineProperty(exports, "ColorPicker", {
|
|
183
|
+
enumerable: true,
|
|
184
|
+
get: function () { return chunkQTGDYQOT_cjs.ColorPicker; }
|
|
185
|
+
});
|
|
155
186
|
Object.defineProperty(exports, "Divider", {
|
|
156
187
|
enumerable: true,
|
|
157
188
|
get: function () { return chunkNZPJ7BUB_cjs.Divider; }
|
|
@@ -184,10 +215,6 @@ Object.defineProperty(exports, "Textarea", {
|
|
|
184
215
|
enumerable: true,
|
|
185
216
|
get: function () { return chunkQT7SJITQ_cjs.Textarea; }
|
|
186
217
|
});
|
|
187
|
-
Object.defineProperty(exports, "List", {
|
|
188
|
-
enumerable: true,
|
|
189
|
-
get: function () { return chunk7H453VPW_cjs.List; }
|
|
190
|
-
});
|
|
191
218
|
Object.defineProperty(exports, "Accordion", {
|
|
192
219
|
enumerable: true,
|
|
193
220
|
get: function () { return chunk77NP67ML_cjs.Accordion; }
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,IAAM,OAAA,GAAU","file":"index.cjs","sourcesContent":["/* lumina — public exports */\n\nexport * from \"./components/Icon\";\nexport * from \"./components/Button\";\nexport * from \"./components/Input\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Select\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/Accordion\";\nexport * from \"./components/Card\";\nexport * from \"./components/Tag\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Progress\";\nexport * from \"./components/Modal\";\nexport * from \"./components/Toast\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Alert\";\nexport * from \"./components/Table\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Calendar\";\nexport * from \"./components/List\";\nexport * from \"./components/AppShell\";\nexport * from \"./components/Empty\";\nexport * from \"./components/Image\";\nexport * from \"./components/Cascader\";\nexport * from \"./components/Typography\";\nexport * from \"./components/ColorPicker\";\nexport * from \"./components/Theme\";\n\n/** Package version — bumped by release scripts. */\nexport const VERSION = \"0.1.4\";\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -25,11 +25,13 @@ export { AppShell, AppShellProps, Sidebar, SidebarItem, SidebarProps, TitleBar,
|
|
|
25
25
|
export { Empty, EmptyProps, Skeleton, SkeletonProps, Spinner, SpinnerProps } from './Empty.cjs';
|
|
26
26
|
export { Image, ImageGrid, ImageGridProps, ImageProps } from './Image.cjs';
|
|
27
27
|
export { Cascader, CascaderOption, CascaderProps } from './Cascader.cjs';
|
|
28
|
+
export { BaseTypographyProps, CopyableConfig, EditableConfig, EllipsisConfig, Link, LinkProps, Paragraph, ParagraphProps, Text, TextProps, Title, TitleLevel, TitleProps, Typography, TypographyProps, TypographyType } from './Typography.cjs';
|
|
29
|
+
export { ColorPicker, ColorPickerProps } from './ColorPicker.cjs';
|
|
28
30
|
export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, AccentKey, AccentPalette, CustomAccentInput, DensityMode, FONT_STACKS, FontConfig, FontKey, ResolvedThemeMode, ThemeConfig, ThemeMode, ThemeProvider, ThemeProviderProps, ThemeTokens, ThemeValue, applyTheme, normalizeAccentInput, resolveThemeMode, useTheme, useThemeOptional } from './Theme.cjs';
|
|
29
31
|
import 'react';
|
|
30
32
|
import 'react/jsx-runtime';
|
|
31
33
|
|
|
32
34
|
/** Package version — bumped by release scripts. */
|
|
33
|
-
declare const VERSION = "0.1.
|
|
35
|
+
declare const VERSION = "0.1.4";
|
|
34
36
|
|
|
35
37
|
export { VERSION };
|
package/dist/index.d.ts
CHANGED
|
@@ -25,11 +25,13 @@ export { AppShell, AppShellProps, Sidebar, SidebarItem, SidebarProps, TitleBar,
|
|
|
25
25
|
export { Empty, EmptyProps, Skeleton, SkeletonProps, Spinner, SpinnerProps } from './Empty.js';
|
|
26
26
|
export { Image, ImageGrid, ImageGridProps, ImageProps } from './Image.js';
|
|
27
27
|
export { Cascader, CascaderOption, CascaderProps } from './Cascader.js';
|
|
28
|
+
export { BaseTypographyProps, CopyableConfig, EditableConfig, EllipsisConfig, Link, LinkProps, Paragraph, ParagraphProps, Text, TextProps, Title, TitleLevel, TitleProps, Typography, TypographyProps, TypographyType } from './Typography.js';
|
|
29
|
+
export { ColorPicker, ColorPickerProps } from './ColorPicker.js';
|
|
28
30
|
export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, AccentKey, AccentPalette, CustomAccentInput, DensityMode, FONT_STACKS, FontConfig, FontKey, ResolvedThemeMode, ThemeConfig, ThemeMode, ThemeProvider, ThemeProviderProps, ThemeTokens, ThemeValue, applyTheme, normalizeAccentInput, resolveThemeMode, useTheme, useThemeOptional } from './Theme.js';
|
|
29
31
|
import 'react';
|
|
30
32
|
import 'react/jsx-runtime';
|
|
31
33
|
|
|
32
34
|
/** Package version — bumped by release scripts. */
|
|
33
|
-
declare const VERSION = "0.1.
|
|
35
|
+
declare const VERSION = "0.1.4";
|
|
34
36
|
|
|
35
37
|
export { VERSION };
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
|
+
export { Table, TablePro } from './chunk-2W2AJUZW.js';
|
|
1
2
|
export { Segmented, Tabs } from './chunk-G3UWXSNQ.js';
|
|
2
3
|
export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, FONT_STACKS, ThemeProvider, applyTheme, normalizeAccentInput, resolveThemeMode, useTheme, useThemeOptional } from './chunk-I7SSCSFH.js';
|
|
3
4
|
export { ToastContainer, toast } from './chunk-QPZZNSRB.js';
|
|
4
|
-
export { Tooltip } from './chunk-
|
|
5
|
+
export { Tooltip } from './chunk-WNGG25QX.js';
|
|
6
|
+
export { Link, Paragraph, Text, Title, Typography } from './chunk-GZGZR4FT.js';
|
|
7
|
+
export { List } from './chunk-4GT5TOHP.js';
|
|
5
8
|
export { Drawer, Modal } from './chunk-Q33V7MSK.js';
|
|
6
9
|
export { Pagination } from './chunk-XFRP2MBR.js';
|
|
7
|
-
export { Popover } from './chunk-
|
|
10
|
+
export { Popover } from './chunk-NE4YEBFH.js';
|
|
8
11
|
export { Progress, Ring } from './chunk-VJN637MT.js';
|
|
9
|
-
export { Select } from './chunk-
|
|
12
|
+
export { Select } from './chunk-OYH6A7IQ.js';
|
|
10
13
|
export { Badge, Tag } from './chunk-3QWHDCHJ.js';
|
|
11
14
|
export { Slider } from './chunk-6YVW3VYL.js';
|
|
12
15
|
export { Switch } from './chunk-HTP6UEVR.js';
|
|
13
|
-
export {
|
|
14
|
-
export { Cascader } from './chunk-XRZ5OKZH.js';
|
|
16
|
+
export { Cascader } from './chunk-OEHCA5IV.js';
|
|
15
17
|
export { Checkbox, RadioGroup } from './chunk-M6CGYGEO.js';
|
|
18
|
+
export { ColorPicker } from './chunk-RPD2OIIP.js';
|
|
19
|
+
import './chunk-V2DIQ3RH.js';
|
|
16
20
|
export { Divider } from './chunk-F3NHM4GX.js';
|
|
17
21
|
export { Empty, Skeleton, Spinner } from './chunk-4AA22BOG.js';
|
|
18
22
|
export { Image, ImageGrid } from './chunk-K5MHL732.js';
|
|
19
23
|
export { Input, Textarea } from './chunk-7NM5BRUX.js';
|
|
20
|
-
export { List } from './chunk-4GT5TOHP.js';
|
|
21
24
|
export { Accordion } from './chunk-M6OTFXZA.js';
|
|
22
25
|
export { Alert } from './chunk-NWJW5KLN.js';
|
|
23
26
|
export { AppShell, Sidebar, TitleBar, WindowControls } from './chunk-3WAFIUDQ.js';
|
|
@@ -28,7 +31,7 @@ export { ICON_NAMES, Icon } from './chunk-GEYMWUW6.js';
|
|
|
28
31
|
export { Card, Panel } from './chunk-OXYFB2ZI.js';
|
|
29
32
|
|
|
30
33
|
// src/index.ts
|
|
31
|
-
var VERSION = "0.1.
|
|
34
|
+
var VERSION = "0.1.4";
|
|
32
35
|
|
|
33
36
|
export { VERSION };
|
|
34
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,IAAM,OAAA,GAAU","file":"index.js","sourcesContent":["/* lumina — public exports */\n\nexport * from \"./components/Icon\";\nexport * from \"./components/Button\";\nexport * from \"./components/Input\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Select\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/Accordion\";\nexport * from \"./components/Card\";\nexport * from \"./components/Tag\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Progress\";\nexport * from \"./components/Modal\";\nexport * from \"./components/Toast\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Alert\";\nexport * from \"./components/Table\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Calendar\";\nexport * from \"./components/List\";\nexport * from \"./components/AppShell\";\nexport * from \"./components/Empty\";\nexport * from \"./components/Image\";\nexport * from \"./components/Cascader\";\nexport * from \"./components/Typography\";\nexport * from \"./components/ColorPicker\";\nexport * from \"./components/Theme\";\n\n/** Package version — bumped by release scripts. */\nexport const VERSION = \"0.1.4\";\n"]}
|