@combinedk/ui 3.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +19 -0
- package/dist/index10.cjs +2 -0
- package/dist/index10.cjs.map +1 -0
- package/dist/index10.js +289 -0
- package/dist/index10.js.map +1 -0
- package/dist/index11.cjs +2 -0
- package/dist/index11.cjs.map +1 -0
- package/dist/index11.js +52 -0
- package/dist/index11.js.map +1 -0
- package/dist/index12.cjs +2 -0
- package/dist/index12.cjs.map +1 -0
- package/dist/index12.js +133 -0
- package/dist/index12.js.map +1 -0
- package/dist/index13.cjs +2 -0
- package/dist/index13.cjs.map +1 -0
- package/dist/index13.js +150 -0
- package/dist/index13.js.map +1 -0
- package/dist/index14.cjs +2 -0
- package/dist/index14.cjs.map +1 -0
- package/dist/index14.js +100 -0
- package/dist/index14.js.map +1 -0
- package/dist/index15.cjs +2 -0
- package/dist/index15.cjs.map +1 -0
- package/dist/index15.js +35 -0
- package/dist/index15.js.map +1 -0
- package/dist/index16.cjs +2 -0
- package/dist/index16.cjs.map +1 -0
- package/dist/index16.js +330 -0
- package/dist/index16.js.map +1 -0
- package/dist/index17.cjs +2 -0
- package/dist/index17.cjs.map +1 -0
- package/dist/index17.js +114 -0
- package/dist/index17.js.map +1 -0
- package/dist/index18.cjs +2 -0
- package/dist/index18.cjs.map +1 -0
- package/dist/index18.js +110 -0
- package/dist/index18.js.map +1 -0
- package/dist/index19.cjs +2 -0
- package/dist/index19.cjs.map +1 -0
- package/dist/index19.js +24 -0
- package/dist/index19.js.map +1 -0
- package/dist/index2.cjs +2 -0
- package/dist/index2.cjs.map +1 -0
- package/dist/index2.js +90 -0
- package/dist/index2.js.map +1 -0
- package/dist/index3.cjs +2 -0
- package/dist/index3.cjs.map +1 -0
- package/dist/index3.js +71 -0
- package/dist/index3.js.map +1 -0
- package/dist/index4.cjs +2 -0
- package/dist/index4.cjs.map +1 -0
- package/dist/index4.js +32 -0
- package/dist/index4.js.map +1 -0
- package/dist/index5.cjs +2 -0
- package/dist/index5.cjs.map +1 -0
- package/dist/index5.js +27 -0
- package/dist/index5.js.map +1 -0
- package/dist/index6.cjs +2 -0
- package/dist/index6.cjs.map +1 -0
- package/dist/index6.js +23 -0
- package/dist/index6.js.map +1 -0
- package/dist/index7.cjs +2 -0
- package/dist/index7.cjs.map +1 -0
- package/dist/index7.js +82 -0
- package/dist/index7.js.map +1 -0
- package/dist/index8.cjs +2 -0
- package/dist/index8.cjs.map +1 -0
- package/dist/index8.js +93 -0
- package/dist/index8.js.map +1 -0
- package/dist/index9.cjs +2 -0
- package/dist/index9.cjs.map +1 -0
- package/dist/index9.js +99 -0
- package/dist/index9.js.map +1 -0
- package/dist/src/components/Badge.d.ts +9 -0
- package/dist/src/components/Button.d.ts +11 -0
- package/dist/src/components/Card.d.ts +9 -0
- package/dist/src/components/Checkbox.d.ts +22 -0
- package/dist/src/components/ConfirmDialog.d.ts +13 -0
- package/dist/src/components/DropdownMenu.d.ts +24 -0
- package/dist/src/components/EmptyState.d.ts +9 -0
- package/dist/src/components/Field.d.ts +24 -0
- package/dist/src/components/Input.d.ts +9 -0
- package/dist/src/components/Modal.d.ts +12 -0
- package/dist/src/components/PageHeader.d.ts +11 -0
- package/dist/src/components/PreviewBadge.d.ts +8 -0
- package/dist/src/components/Select.d.ts +32 -0
- package/dist/src/components/Skeleton.d.ts +21 -0
- package/dist/src/components/StatusPill.d.ts +7 -0
- package/dist/src/components/Table.d.ts +26 -0
- package/dist/src/components/Tag.d.ts +5 -0
- package/dist/src/components/Toast.d.ts +13 -0
- package/dist/src/index.d.ts +21 -0
- package/package.json +43 -0
- package/src/tokens.css +151 -0
package/dist/index8.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
//#region src/components/PageHeader.tsx
|
|
3
|
+
function n({ title: n, group: r, subtitle: i, icon: a, actions: o }) {
|
|
4
|
+
return /* @__PURE__ */ t("div", {
|
|
5
|
+
style: { marginBottom: 28 },
|
|
6
|
+
children: [
|
|
7
|
+
/* @__PURE__ */ t("div", {
|
|
8
|
+
style: {
|
|
9
|
+
display: "flex",
|
|
10
|
+
alignItems: "center",
|
|
11
|
+
justifyContent: "space-between",
|
|
12
|
+
gap: 16,
|
|
13
|
+
flexWrap: "wrap",
|
|
14
|
+
marginBottom: i ? 6 : 0
|
|
15
|
+
},
|
|
16
|
+
children: [/* @__PURE__ */ t("div", {
|
|
17
|
+
style: {
|
|
18
|
+
display: "flex",
|
|
19
|
+
alignItems: "center",
|
|
20
|
+
gap: 10,
|
|
21
|
+
flexWrap: "wrap",
|
|
22
|
+
minWidth: 0
|
|
23
|
+
},
|
|
24
|
+
children: [
|
|
25
|
+
a && /* @__PURE__ */ e("span", {
|
|
26
|
+
style: {
|
|
27
|
+
color: "var(--c-text-subtle)",
|
|
28
|
+
display: "inline-flex",
|
|
29
|
+
flexShrink: 0
|
|
30
|
+
},
|
|
31
|
+
children: a
|
|
32
|
+
}),
|
|
33
|
+
/* @__PURE__ */ e("h1", {
|
|
34
|
+
style: {
|
|
35
|
+
fontFamily: "var(--font-sans)",
|
|
36
|
+
fontSize: 20,
|
|
37
|
+
fontWeight: 700,
|
|
38
|
+
color: "var(--c-text)",
|
|
39
|
+
lineHeight: 1.2,
|
|
40
|
+
margin: 0,
|
|
41
|
+
letterSpacing: "-0.01em"
|
|
42
|
+
},
|
|
43
|
+
children: n
|
|
44
|
+
}),
|
|
45
|
+
r && /* @__PURE__ */ e("span", {
|
|
46
|
+
style: {
|
|
47
|
+
fontFamily: "var(--font-sans)",
|
|
48
|
+
fontSize: 10.5,
|
|
49
|
+
fontWeight: 600,
|
|
50
|
+
color: "var(--c-text-subtle)",
|
|
51
|
+
background: "var(--color-neutral-100)",
|
|
52
|
+
padding: "2px 8px",
|
|
53
|
+
borderRadius: 10,
|
|
54
|
+
textTransform: "uppercase",
|
|
55
|
+
letterSpacing: "0.05em",
|
|
56
|
+
whiteSpace: "nowrap"
|
|
57
|
+
},
|
|
58
|
+
children: r
|
|
59
|
+
})
|
|
60
|
+
]
|
|
61
|
+
}), o && /* @__PURE__ */ e("div", {
|
|
62
|
+
style: {
|
|
63
|
+
display: "flex",
|
|
64
|
+
alignItems: "center",
|
|
65
|
+
gap: 8,
|
|
66
|
+
flexShrink: 0
|
|
67
|
+
},
|
|
68
|
+
children: o
|
|
69
|
+
})]
|
|
70
|
+
}),
|
|
71
|
+
i && /* @__PURE__ */ e("p", {
|
|
72
|
+
style: {
|
|
73
|
+
fontFamily: "var(--font-sans)",
|
|
74
|
+
fontSize: 14,
|
|
75
|
+
color: "var(--c-text-secondary)",
|
|
76
|
+
lineHeight: 1.55,
|
|
77
|
+
margin: 0,
|
|
78
|
+
maxWidth: 560
|
|
79
|
+
},
|
|
80
|
+
children: i
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ e("div", { style: {
|
|
83
|
+
marginTop: 20,
|
|
84
|
+
height: 1,
|
|
85
|
+
background: "var(--c-border)"
|
|
86
|
+
} })
|
|
87
|
+
]
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
export { n as PageHeader };
|
|
92
|
+
|
|
93
|
+
//# sourceMappingURL=index8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index8.js","names":[],"sources":["../src/components/PageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\ninterface PageHeaderProps {\n title: string\n /** Nav group label — \"Build\", \"Run\", or \"System\" */\n group?: string\n subtitle?: string\n icon?: ReactNode\n actions?: ReactNode\n}\n\nexport function PageHeader({ title, group, subtitle, icon, actions }: PageHeaderProps) {\n return (\n <div style={{ marginBottom: 28 }}>\n {/* Title row */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 16,\n flexWrap: 'wrap',\n marginBottom: subtitle ? 6 : 0,\n }}>\n {/* Left: icon + title + group pill */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, flexWrap: 'wrap', minWidth: 0 }}>\n {icon && (\n <span style={{\n color: 'var(--c-text-subtle)',\n display: 'inline-flex',\n flexShrink: 0,\n }}>\n {icon}\n </span>\n )}\n\n <h1 style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 20,\n fontWeight: 700,\n color: 'var(--c-text)',\n lineHeight: 1.2,\n margin: 0,\n letterSpacing: '-0.01em',\n }}>\n {title}\n </h1>\n\n {group && (\n <span style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 10.5,\n fontWeight: 600,\n color: 'var(--c-text-subtle)',\n background: 'var(--color-neutral-100)',\n padding: '2px 8px',\n borderRadius: 10,\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n whiteSpace: 'nowrap',\n }}>\n {group}\n </span>\n )}\n </div>\n\n {/* Right: action buttons */}\n {actions && (\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, flexShrink: 0 }}>\n {actions}\n </div>\n )}\n </div>\n\n {/* Subtitle */}\n {subtitle && (\n <p style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 14,\n color: 'var(--c-text-secondary)',\n lineHeight: 1.55,\n margin: 0,\n maxWidth: 560,\n }}>\n {subtitle}\n </p>\n )}\n\n {/* Divider */}\n <div style={{\n marginTop: 20,\n height: 1,\n background: 'var(--c-border)',\n }} />\n </div>\n )\n}\n"],"mappings":";;AAWA,SAAgB,EAAW,EAAE,UAAO,UAAO,aAAU,SAAM,cAA4B;AACrF,QACE,kBAAC,OAAD;EAAK,OAAO,EAAE,cAAc,IAAI;YAAhC;GAEE,kBAAC,OAAD;IAAK,OAAO;KACV,SAAgB;KAChB,YAAgB;KAChB,gBAAgB;KAChB,KAAgB;KAChB,UAAgB;KAChB,cAAgB,IAAW,IAAI;KAChC;cAPD,CASE,kBAAC,OAAD;KAAK,OAAO;MAAE,SAAS;MAAQ,YAAY;MAAU,KAAK;MAAI,UAAU;MAAQ,UAAU;MAAG;eAA7F;MACG,KACC,kBAAC,QAAD;OAAM,OAAO;QACX,OAAa;QACb,SAAa;QACb,YAAa;QACd;iBACE;OACI,CAAA;MAGT,kBAAC,MAAD;OAAI,OAAO;QACT,YAAe;QACf,UAAe;QACf,YAAe;QACf,OAAe;QACf,YAAe;QACf,QAAe;QACf,eAAe;QAChB;iBACE;OACE,CAAA;MAEJ,KACC,kBAAC,QAAD;OAAM,OAAO;QACX,YAAe;QACf,UAAe;QACf,YAAe;QACf,OAAe;QACf,YAAe;QACf,SAAe;QACf,cAAe;QACf,eAAe;QACf,eAAe;QACf,YAAe;QAChB;iBACE;OACI,CAAA;MAEL;QAGL,KACC,kBAAC,OAAD;KAAK,OAAO;MAAE,SAAS;MAAQ,YAAY;MAAU,KAAK;MAAG,YAAY;MAAG;eACzE;KACG,CAAA,CAEJ;;GAGL,KACC,kBAAC,KAAD;IAAG,OAAO;KACR,YAAa;KACb,UAAa;KACb,OAAa;KACb,YAAa;KACb,QAAa;KACb,UAAa;KACd;cACE;IACC,CAAA;GAIN,kBAAC,OAAD,EAAK,OAAO;IACV,WAAa;IACb,QAAa;IACb,YAAa;IACd,EAAI,CAAA;GACD"}
|
package/dist/index9.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`),t=require(`react/jsx-runtime`),n=require(`react-dom`);function r({open:r,onClose:i,title:a,subtitle:o,children:s,actions:c,width:l=440}){return(0,e.useEffect)(()=>{if(!r)return;let e=e=>{e.key===`Escape`&&i()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r,i]),r?(0,n.createPortal)((0,t.jsx)(`div`,{onClick:i,style:{position:`fixed`,inset:0,background:`var(--c-overlay)`,backdropFilter:`blur(4px)`,display:`flex`,alignItems:`center`,justifyContent:`center`,zIndex:1e3},children:(0,t.jsxs)(`div`,{onClick:e=>e.stopPropagation(),style:{background:`var(--c-surface)`,borderRadius:14,padding:`28px 32px`,boxShadow:`0 20px 60px rgba(47,56,67,0.20)`,width:l,maxWidth:`90vw`,animation:`modalIn 0.18s ease`},children:[(0,t.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,marginBottom:16},children:[(0,t.jsxs)(`div`,{children:[(0,t.jsx)(`div`,{style:{fontFamily:`var(--font-sans)`,fontSize:18,fontWeight:700,color:`var(--c-text)`},children:a}),o&&(0,t.jsx)(`div`,{style:{fontFamily:`var(--font-sans)`,fontSize:13,color:`var(--c-text-secondary)`,marginTop:4},children:o})]}),(0,t.jsx)(`button`,{onClick:i,style:{background:`none`,border:`none`,cursor:`pointer`,color:`var(--c-text-muted)`,fontSize:18,lineHeight:1,padding:0,flexShrink:0},children:`✕`})]}),(0,t.jsx)(`div`,{style:{fontFamily:`var(--font-sans)`,fontSize:14,color:`var(--c-text)`,lineHeight:1.6},children:s}),c&&(0,t.jsx)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`,marginTop:24},children:c})]})}),document.body):null}exports.Modal=r;
|
|
2
|
+
//# sourceMappingURL=index9.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index9.cjs","names":[],"sources":["../src/components/Modal.tsx"],"sourcesContent":["import { type ReactNode, useEffect } from 'react'\nimport { createPortal } from 'react-dom'\n\ninterface ModalProps {\n open: boolean\n onClose: () => void\n title: string\n subtitle?: string\n children: ReactNode\n actions?: ReactNode\n width?: number\n}\n\nexport function Modal({ open, onClose, title, subtitle, children, actions, width = 440 }: ModalProps) {\n useEffect(() => {\n if (!open) return\n const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose() }\n document.addEventListener('keydown', onKey)\n return () => document.removeEventListener('keydown', onKey)\n }, [open, onClose])\n\n if (!open) return null\n\n return createPortal(\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n background: 'var(--c-overlay)',\n backdropFilter: 'blur(4px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1000,\n }}\n >\n <div\n onClick={e => e.stopPropagation()}\n style={{\n background: 'var(--c-surface)',\n borderRadius: 14,\n padding: '28px 32px',\n boxShadow: '0 20px 60px rgba(47,56,67,0.20)',\n width,\n maxWidth: '90vw',\n animation: 'modalIn 0.18s ease',\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', marginBottom: 16 }}>\n <div>\n <div style={{ fontFamily: 'var(--font-sans)', fontSize: 18, fontWeight: 700, color: 'var(--c-text)' }}>\n {title}\n </div>\n {subtitle && (\n <div style={{ fontFamily: 'var(--font-sans)', fontSize: 13, color: 'var(--c-text-secondary)', marginTop: 4 }}>\n {subtitle}\n </div>\n )}\n </div>\n <button\n onClick={onClose}\n style={{ background: 'none', border: 'none', cursor: 'pointer', color: 'var(--c-text-muted)', fontSize: 18, lineHeight: 1, padding: 0, flexShrink: 0 }}\n >\n ✕\n </button>\n </div>\n\n {/* Body */}\n <div style={{ fontFamily: 'var(--font-sans)', fontSize: 14, color: 'var(--c-text)', lineHeight: 1.6 }}>\n {children}\n </div>\n\n {/* Footer */}\n {actions && (\n <div style={{ display: 'flex', gap: 8, justifyContent: 'flex-end', marginTop: 24 }}>\n {actions}\n </div>\n )}\n </div>\n </div>,\n document.body\n )\n}\n"],"mappings":"6EAaA,SAAgB,EAAM,CAAE,OAAM,UAAS,QAAO,WAAU,WAAU,UAAS,QAAQ,KAAmB,CAUpG,OATA,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,EAAM,OACX,IAAM,EAAS,GAAqB,CAAM,EAAE,MAAQ,UAAU,GAAS,EAEvE,OADA,SAAS,iBAAiB,UAAW,EAAM,KAC9B,SAAS,oBAAoB,UAAW,EAAM,EAC1D,CAAC,EAAM,EAAQ,CAAC,CAEd,GAEL,EAAA,EAAA,eACE,EAAA,EAAA,KAAC,MAAD,CACE,QAAS,EACT,MAAO,CACL,SAAgB,QAChB,MAAgB,EAChB,WAAgB,mBAChB,eAAgB,YAChB,QAAgB,OAChB,WAAgB,SAChB,eAAgB,SAChB,OAAgB,IACjB,WAED,EAAA,EAAA,MAAC,MAAD,CACE,QAAS,GAAK,EAAE,iBAAiB,CACjC,MAAO,CACL,WAAc,mBACd,aAAc,GACd,QAAc,YACd,UAAc,kCACd,QACA,SAAc,OACd,UAAc,qBACf,UAVH,EAaE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,eAAgB,gBAAiB,WAAY,aAAc,aAAc,GAAI,UAA5G,EACE,EAAA,EAAA,MAAC,MAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,mBAAoB,SAAU,GAAI,WAAY,IAAK,MAAO,gBAAiB,UAClG,EACG,CAAA,CACL,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,mBAAoB,SAAU,GAAI,MAAO,0BAA2B,UAAW,EAAG,UACzG,EACG,CAAA,CAEJ,CAAA,CAAA,EACN,EAAA,EAAA,KAAC,SAAD,CACE,QAAS,EACT,MAAO,CAAE,WAAY,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,MAAO,sBAAuB,SAAU,GAAI,WAAY,EAAG,QAAS,EAAG,WAAY,EAAG,UACvJ,IAEQ,CAAA,CACL,IAGN,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,WAAY,mBAAoB,SAAU,GAAI,MAAO,gBAAiB,WAAY,IAAK,CAClG,WACG,CAAA,CAGL,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,IAAK,EAAG,eAAgB,WAAY,UAAW,GAAI,UAC/E,EACG,CAAA,CAEJ,GACF,CAAA,CACN,SAAS,KACV,CA9DiB"}
|
package/dist/index9.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useEffect as e } from "react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
import { createPortal as r } from "react-dom";
|
|
4
|
+
//#region src/components/Modal.tsx
|
|
5
|
+
function i({ open: i, onClose: a, title: o, subtitle: s, children: c, actions: l, width: u = 440 }) {
|
|
6
|
+
return e(() => {
|
|
7
|
+
if (!i) return;
|
|
8
|
+
let e = (e) => {
|
|
9
|
+
e.key === "Escape" && a();
|
|
10
|
+
};
|
|
11
|
+
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
12
|
+
}, [i, a]), i ? r(/* @__PURE__ */ t("div", {
|
|
13
|
+
onClick: a,
|
|
14
|
+
style: {
|
|
15
|
+
position: "fixed",
|
|
16
|
+
inset: 0,
|
|
17
|
+
background: "var(--c-overlay)",
|
|
18
|
+
backdropFilter: "blur(4px)",
|
|
19
|
+
display: "flex",
|
|
20
|
+
alignItems: "center",
|
|
21
|
+
justifyContent: "center",
|
|
22
|
+
zIndex: 1e3
|
|
23
|
+
},
|
|
24
|
+
children: /* @__PURE__ */ n("div", {
|
|
25
|
+
onClick: (e) => e.stopPropagation(),
|
|
26
|
+
style: {
|
|
27
|
+
background: "var(--c-surface)",
|
|
28
|
+
borderRadius: 14,
|
|
29
|
+
padding: "28px 32px",
|
|
30
|
+
boxShadow: "0 20px 60px rgba(47,56,67,0.20)",
|
|
31
|
+
width: u,
|
|
32
|
+
maxWidth: "90vw",
|
|
33
|
+
animation: "modalIn 0.18s ease"
|
|
34
|
+
},
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ n("div", {
|
|
37
|
+
style: {
|
|
38
|
+
display: "flex",
|
|
39
|
+
justifyContent: "space-between",
|
|
40
|
+
alignItems: "flex-start",
|
|
41
|
+
marginBottom: 16
|
|
42
|
+
},
|
|
43
|
+
children: [/* @__PURE__ */ n("div", { children: [/* @__PURE__ */ t("div", {
|
|
44
|
+
style: {
|
|
45
|
+
fontFamily: "var(--font-sans)",
|
|
46
|
+
fontSize: 18,
|
|
47
|
+
fontWeight: 700,
|
|
48
|
+
color: "var(--c-text)"
|
|
49
|
+
},
|
|
50
|
+
children: o
|
|
51
|
+
}), s && /* @__PURE__ */ t("div", {
|
|
52
|
+
style: {
|
|
53
|
+
fontFamily: "var(--font-sans)",
|
|
54
|
+
fontSize: 13,
|
|
55
|
+
color: "var(--c-text-secondary)",
|
|
56
|
+
marginTop: 4
|
|
57
|
+
},
|
|
58
|
+
children: s
|
|
59
|
+
})] }), /* @__PURE__ */ t("button", {
|
|
60
|
+
onClick: a,
|
|
61
|
+
style: {
|
|
62
|
+
background: "none",
|
|
63
|
+
border: "none",
|
|
64
|
+
cursor: "pointer",
|
|
65
|
+
color: "var(--c-text-muted)",
|
|
66
|
+
fontSize: 18,
|
|
67
|
+
lineHeight: 1,
|
|
68
|
+
padding: 0,
|
|
69
|
+
flexShrink: 0
|
|
70
|
+
},
|
|
71
|
+
children: "✕"
|
|
72
|
+
})]
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ t("div", {
|
|
75
|
+
style: {
|
|
76
|
+
fontFamily: "var(--font-sans)",
|
|
77
|
+
fontSize: 14,
|
|
78
|
+
color: "var(--c-text)",
|
|
79
|
+
lineHeight: 1.6
|
|
80
|
+
},
|
|
81
|
+
children: c
|
|
82
|
+
}),
|
|
83
|
+
l && /* @__PURE__ */ t("div", {
|
|
84
|
+
style: {
|
|
85
|
+
display: "flex",
|
|
86
|
+
gap: 8,
|
|
87
|
+
justifyContent: "flex-end",
|
|
88
|
+
marginTop: 24
|
|
89
|
+
},
|
|
90
|
+
children: l
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
})
|
|
94
|
+
}), document.body) : null;
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
export { i as Modal };
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=index9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index9.js","names":[],"sources":["../src/components/Modal.tsx"],"sourcesContent":["import { type ReactNode, useEffect } from 'react'\nimport { createPortal } from 'react-dom'\n\ninterface ModalProps {\n open: boolean\n onClose: () => void\n title: string\n subtitle?: string\n children: ReactNode\n actions?: ReactNode\n width?: number\n}\n\nexport function Modal({ open, onClose, title, subtitle, children, actions, width = 440 }: ModalProps) {\n useEffect(() => {\n if (!open) return\n const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose() }\n document.addEventListener('keydown', onKey)\n return () => document.removeEventListener('keydown', onKey)\n }, [open, onClose])\n\n if (!open) return null\n\n return createPortal(\n <div\n onClick={onClose}\n style={{\n position: 'fixed',\n inset: 0,\n background: 'var(--c-overlay)',\n backdropFilter: 'blur(4px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1000,\n }}\n >\n <div\n onClick={e => e.stopPropagation()}\n style={{\n background: 'var(--c-surface)',\n borderRadius: 14,\n padding: '28px 32px',\n boxShadow: '0 20px 60px rgba(47,56,67,0.20)',\n width,\n maxWidth: '90vw',\n animation: 'modalIn 0.18s ease',\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', marginBottom: 16 }}>\n <div>\n <div style={{ fontFamily: 'var(--font-sans)', fontSize: 18, fontWeight: 700, color: 'var(--c-text)' }}>\n {title}\n </div>\n {subtitle && (\n <div style={{ fontFamily: 'var(--font-sans)', fontSize: 13, color: 'var(--c-text-secondary)', marginTop: 4 }}>\n {subtitle}\n </div>\n )}\n </div>\n <button\n onClick={onClose}\n style={{ background: 'none', border: 'none', cursor: 'pointer', color: 'var(--c-text-muted)', fontSize: 18, lineHeight: 1, padding: 0, flexShrink: 0 }}\n >\n ✕\n </button>\n </div>\n\n {/* Body */}\n <div style={{ fontFamily: 'var(--font-sans)', fontSize: 14, color: 'var(--c-text)', lineHeight: 1.6 }}>\n {children}\n </div>\n\n {/* Footer */}\n {actions && (\n <div style={{ display: 'flex', gap: 8, justifyContent: 'flex-end', marginTop: 24 }}>\n {actions}\n </div>\n )}\n </div>\n </div>,\n document.body\n )\n}\n"],"mappings":";;;;AAaA,SAAgB,EAAM,EAAE,SAAM,YAAS,UAAO,aAAU,aAAU,YAAS,WAAQ,OAAmB;AAUpG,QATA,QAAgB;AACd,MAAI,CAAC,EAAM;EACX,IAAM,KAAS,MAAqB;AAAE,GAAI,EAAE,QAAQ,YAAU,GAAS;;AAEvE,SADA,SAAS,iBAAiB,WAAW,EAAM,QAC9B,SAAS,oBAAoB,WAAW,EAAM;IAC1D,CAAC,GAAM,EAAQ,CAAC,EAEd,IAEE,EACL,kBAAC,OAAD;EACE,SAAS;EACT,OAAO;GACL,UAAgB;GAChB,OAAgB;GAChB,YAAgB;GAChB,gBAAgB;GAChB,SAAgB;GAChB,YAAgB;GAChB,gBAAgB;GAChB,QAAgB;GACjB;YAED,kBAAC,OAAD;GACE,UAAS,MAAK,EAAE,iBAAiB;GACjC,OAAO;IACL,YAAc;IACd,cAAc;IACd,SAAc;IACd,WAAc;IACd;IACA,UAAc;IACd,WAAc;IACf;aAVH;IAaE,kBAAC,OAAD;KAAK,OAAO;MAAE,SAAS;MAAQ,gBAAgB;MAAiB,YAAY;MAAc,cAAc;MAAI;eAA5G,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,OAAO;OAAE,YAAY;OAAoB,UAAU;OAAI,YAAY;OAAK,OAAO;OAAiB;gBAClG;MACG,CAAA,EACL,KACC,kBAAC,OAAD;MAAK,OAAO;OAAE,YAAY;OAAoB,UAAU;OAAI,OAAO;OAA2B,WAAW;OAAG;gBACzG;MACG,CAAA,CAEJ,EAAA,CAAA,EACN,kBAAC,UAAD;MACE,SAAS;MACT,OAAO;OAAE,YAAY;OAAQ,QAAQ;OAAQ,QAAQ;OAAW,OAAO;OAAuB,UAAU;OAAI,YAAY;OAAG,SAAS;OAAG,YAAY;OAAG;gBACvJ;MAEQ,CAAA,CACL;;IAGN,kBAAC,OAAD;KAAK,OAAO;MAAE,YAAY;MAAoB,UAAU;MAAI,OAAO;MAAiB,YAAY;MAAK;KAClG;KACG,CAAA;IAGL,KACC,kBAAC,OAAD;KAAK,OAAO;MAAE,SAAS;MAAQ,KAAK;MAAG,gBAAgB;MAAY,WAAW;MAAI;eAC/E;KACG,CAAA;IAEJ;;EACF,CAAA,EACN,SAAS,KACV,GA9DiB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info' | 'brand' | 'dark';
|
|
3
|
+
interface BadgeProps {
|
|
4
|
+
variant?: BadgeVariant;
|
|
5
|
+
dot?: boolean;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function Badge({ variant, dot, children }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode, ButtonHTMLAttributes } from 'react';
|
|
2
|
+
type Variant = 'primary' | 'secondary' | 'ghost' | 'destructive' | 'outline' | 'accent';
|
|
3
|
+
type Size = 'sm' | 'md' | 'lg';
|
|
4
|
+
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
variant?: Variant;
|
|
6
|
+
size?: Size;
|
|
7
|
+
icon?: ReactNode;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare function Button({ variant, size, icon, children, disabled, style, ...rest }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
/** Show amber left-border accent and subtle bg shift on hover */
|
|
5
|
+
interactive?: boolean;
|
|
6
|
+
padding?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function Card({ children, interactive, padding, style, ...rest }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface CheckboxProps {
|
|
2
|
+
checked: boolean;
|
|
3
|
+
onChange: (v: boolean) => void;
|
|
4
|
+
label?: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function Checkbox({ checked, onChange, label, disabled }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface RadioProps {
|
|
9
|
+
checked: boolean;
|
|
10
|
+
onChange: () => void;
|
|
11
|
+
label?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function Radio({ checked, onChange, label, disabled }: RadioProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
interface SwitchProps {
|
|
16
|
+
checked: boolean;
|
|
17
|
+
onChange: (v: boolean) => void;
|
|
18
|
+
label?: string;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function Switch({ checked, onChange, label, disabled }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface ConfirmDialogProps {
|
|
2
|
+
open: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onConfirm: () => void;
|
|
5
|
+
title: string;
|
|
6
|
+
body?: string;
|
|
7
|
+
confirmLabel?: string;
|
|
8
|
+
cancelLabel?: string;
|
|
9
|
+
confirmVariant?: 'destructive' | 'primary';
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function ConfirmDialog({ open, onClose, onConfirm, title, body, confirmLabel, cancelLabel, confirmVariant, loading, }: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface DropdownMenuItem {
|
|
3
|
+
label: string;
|
|
4
|
+
icon?: ReactNode;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
variant?: 'default' | 'destructive';
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
separator?: never;
|
|
9
|
+
}
|
|
10
|
+
export interface DropdownMenuSeparator {
|
|
11
|
+
separator: true;
|
|
12
|
+
label?: never;
|
|
13
|
+
onClick?: never;
|
|
14
|
+
variant?: never;
|
|
15
|
+
disabled?: never;
|
|
16
|
+
}
|
|
17
|
+
export type DropdownMenuEntry = DropdownMenuItem | DropdownMenuSeparator;
|
|
18
|
+
interface DropdownMenuProps {
|
|
19
|
+
trigger: ReactNode;
|
|
20
|
+
items: DropdownMenuEntry[];
|
|
21
|
+
align?: 'left' | 'right';
|
|
22
|
+
}
|
|
23
|
+
export declare function DropdownMenu({ trigger, items, align }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface EmptyStateProps {
|
|
3
|
+
icon?: ReactNode;
|
|
4
|
+
title: string;
|
|
5
|
+
body?: string;
|
|
6
|
+
action?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function EmptyState({ icon, title, body, action }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ReactNode, TextareaHTMLAttributes } from 'react';
|
|
2
|
+
interface FieldProps {
|
|
3
|
+
label: string;
|
|
4
|
+
required?: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
help?: string;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare function Field({ label, required, error, help, children }: FieldProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
11
|
+
error?: boolean;
|
|
12
|
+
mono?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function Textarea({ error, mono, style, ...rest }: TextareaProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
interface SegmentedControlProps {
|
|
16
|
+
options: string[] | Array<{
|
|
17
|
+
value: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}>;
|
|
20
|
+
value: string;
|
|
21
|
+
onChange: (v: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function SegmentedControl({ options, value, onChange }: SegmentedControlProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix'> {
|
|
3
|
+
label?: string;
|
|
4
|
+
hint?: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
prefix?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function Input({ label, hint, error, prefix, style, ...rest }: InputProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface ModalProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title: string;
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
actions?: ReactNode;
|
|
9
|
+
width?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function Modal({ open, onClose, title, subtitle, children, actions, width }: ModalProps): import('react').ReactPortal | null;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface PageHeaderProps {
|
|
3
|
+
title: string;
|
|
4
|
+
/** Nav group label — "Build", "Run", or "System" */
|
|
5
|
+
group?: string;
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
icon?: ReactNode;
|
|
8
|
+
actions?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare function PageHeader({ title, group, subtitle, icon, actions }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export declare function PreviewBadge(): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare function PreviewHeader({ title, lead, icon, actions, }: {
|
|
4
|
+
title: string;
|
|
5
|
+
lead: string;
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
actions?: ReactNode;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
interface SelectProps {
|
|
2
|
+
value: string;
|
|
3
|
+
onChange: (v: string) => void;
|
|
4
|
+
options: string[] | Array<{
|
|
5
|
+
value: string;
|
|
6
|
+
label: string;
|
|
7
|
+
}>;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function Select({ value, onChange, options, placeholder, disabled }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
interface MultiSelectProps {
|
|
13
|
+
values: string[];
|
|
14
|
+
onChange: (v: string[]) => void;
|
|
15
|
+
options: string[] | Array<{
|
|
16
|
+
value: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}>;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function MultiSelect({ values, onChange, options, placeholder }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
interface ComboboxProps {
|
|
23
|
+
value: string;
|
|
24
|
+
onChange: (v: string) => void;
|
|
25
|
+
options: string[] | Array<{
|
|
26
|
+
value: string;
|
|
27
|
+
label: string;
|
|
28
|
+
}>;
|
|
29
|
+
placeholder?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function Combobox({ value, onChange, options, placeholder }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
interface SkeletonProps {
|
|
3
|
+
width?: number | string;
|
|
4
|
+
height?: number | string;
|
|
5
|
+
radius?: number | string;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
}
|
|
8
|
+
export declare function Skeleton({ width, height, radius, style }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function SkeletonTableRow({ cols }: {
|
|
10
|
+
cols?: number;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function SkeletonTable({ rows, cols }: {
|
|
13
|
+
rows?: number;
|
|
14
|
+
cols?: number;
|
|
15
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function SkeletonText({ lines, lastWidth }: {
|
|
17
|
+
lines?: number;
|
|
18
|
+
lastWidth?: string;
|
|
19
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function SkeletonCard(): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type Status = 'Published' | 'Draft' | 'Archived' | 'Running' | 'Completed' | 'Failed' | 'Paused';
|
|
2
|
+
interface StatusPillProps {
|
|
3
|
+
status: Status;
|
|
4
|
+
pulse?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function StatusPill({ status, pulse }: StatusPillProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface TableColumn<T> {
|
|
3
|
+
key: string;
|
|
4
|
+
label: string;
|
|
5
|
+
sortable?: boolean;
|
|
6
|
+
width?: number | string;
|
|
7
|
+
render?: (row: T) => ReactNode;
|
|
8
|
+
}
|
|
9
|
+
interface TableProps<T extends Record<string, unknown>> {
|
|
10
|
+
columns: TableColumn<T>[];
|
|
11
|
+
data: T[];
|
|
12
|
+
keyField: keyof T;
|
|
13
|
+
selectable?: boolean;
|
|
14
|
+
selected?: Set<string>;
|
|
15
|
+
onSelectionChange?: (next: Set<string>) => void;
|
|
16
|
+
onRowClick?: (row: T) => void;
|
|
17
|
+
emptyMessage?: string;
|
|
18
|
+
totalCount?: number;
|
|
19
|
+
page?: number;
|
|
20
|
+
pageSize?: number;
|
|
21
|
+
onPageChange?: (page: number) => void;
|
|
22
|
+
bulkActions?: (selected: Set<string>, clearSelection: () => void) => ReactNode;
|
|
23
|
+
expandable?: (row: T) => ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export declare function Table<T extends Record<string, unknown>>({ columns, data, keyField, selectable, selected: externalSelected, onSelectionChange, onRowClick, emptyMessage, totalCount, page, pageSize, onPageChange, bulkActions, expandable, }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type ToastKind = 'success' | 'info' | 'warning' | 'error';
|
|
3
|
+
interface ToastContextValue {
|
|
4
|
+
success: (title: string, body?: string) => void;
|
|
5
|
+
info: (title: string, body?: string) => void;
|
|
6
|
+
warning: (title: string, body?: string) => void;
|
|
7
|
+
error: (title: string, body?: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function ToastProvider({ children }: {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function useToast(): ToastContextValue;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { Button } from './components/Button';
|
|
2
|
+
export { Badge } from './components/Badge';
|
|
3
|
+
export { StatusPill } from './components/StatusPill';
|
|
4
|
+
export { Card } from './components/Card';
|
|
5
|
+
export { Tag } from './components/Tag';
|
|
6
|
+
export { Input } from './components/Input';
|
|
7
|
+
export { PageHeader } from './components/PageHeader';
|
|
8
|
+
export { Modal } from './components/Modal';
|
|
9
|
+
export { Table } from './components/Table';
|
|
10
|
+
export type { TableColumn } from './components/Table';
|
|
11
|
+
export { EmptyState } from './components/EmptyState';
|
|
12
|
+
export { Skeleton, SkeletonTable, SkeletonTableRow, SkeletonText, SkeletonCard } from './components/Skeleton';
|
|
13
|
+
export { ToastProvider, useToast } from './components/Toast';
|
|
14
|
+
export type { ToastKind } from './components/Toast';
|
|
15
|
+
export { DropdownMenu } from './components/DropdownMenu';
|
|
16
|
+
export type { DropdownMenuEntry, DropdownMenuItem } from './components/DropdownMenu';
|
|
17
|
+
export { ConfirmDialog } from './components/ConfirmDialog';
|
|
18
|
+
export { Select, MultiSelect, Combobox } from './components/Select';
|
|
19
|
+
export { Checkbox, Radio, Switch } from './components/Checkbox';
|
|
20
|
+
export { Field, Textarea, SegmentedControl } from './components/Field';
|
|
21
|
+
export { PreviewBadge, PreviewHeader } from './components/PreviewBadge';
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@combinedk/ui",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Combine DataController shared UI component library",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./tokens.css": "./src/tokens.css"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"src/tokens.css"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "vite build",
|
|
23
|
+
"dev": "vite build --watch",
|
|
24
|
+
"typecheck": "tsc --noEmit"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"lucide-react": ">=1.0.0",
|
|
28
|
+
"react": ">=19.0.0",
|
|
29
|
+
"react-dom": ">=19.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/react": "^19.2.14",
|
|
33
|
+
"@types/react-dom": "^19.2.3",
|
|
34
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
35
|
+
"typescript": "~6.0.2",
|
|
36
|
+
"vite": "^8.0.9",
|
|
37
|
+
"vite-plugin-dts": "^4.3.0"
|
|
38
|
+
},
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"registry": "https://npm.pkg.github.com",
|
|
41
|
+
"access": "restricted"
|
|
42
|
+
}
|
|
43
|
+
}
|