@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index18.js","names":[],"sources":["../src/components/Field.tsx"],"sourcesContent":["import type { ReactNode, TextareaHTMLAttributes } from 'react'\n\n// ── Field wrapper ──────────────────────────────────────────────────────────\n\ninterface FieldProps {\n label: string\n required?: boolean\n error?: string\n help?: string\n children: ReactNode\n}\n\nexport function Field({ label, required, error, help, children }: FieldProps) {\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <label style={{\n fontSize: 12,\n fontWeight: 600,\n color: 'var(--c-text)',\n fontFamily: 'var(--font-sans)',\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n }}>\n {label}\n {required && <span style={{ color: 'var(--c-error)' }}>*</span>}\n </label>\n {children}\n {error\n ? <p style={{ margin: 0, fontSize: 11.5, color: 'var(--c-error)', fontFamily: 'var(--font-sans)' }}>{error}</p>\n : help && <p style={{ margin: 0, fontSize: 11.5, color: 'var(--c-text-secondary)', fontFamily: 'var(--font-sans)' }}>{help}</p>\n }\n </div>\n )\n}\n\n// ── Textarea ───────────────────────────────────────────────────────────────\n\ninterface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean\n mono?: boolean\n}\n\nexport function Textarea({ error, mono, style, ...rest }: TextareaProps) {\n return (\n <textarea\n style={{\n width: '100%',\n padding: '8px 12px',\n border: `1px solid ${error ? 'var(--c-error)' : 'var(--c-border)'}`,\n borderRadius: 6,\n fontFamily: mono ? 'var(--font-mono)' : 'var(--font-sans)',\n fontSize: 13,\n color: 'var(--c-text)',\n background: 'var(--c-surface)',\n resize: 'vertical',\n minHeight: 80,\n outline: 'none',\n lineHeight: 1.6,\n boxSizing: 'border-box',\n boxShadow: error ? '0 0 0 3px oklch(95% 0.04 25)' : 'none',\n transition: 'border-color 150ms, box-shadow 150ms',\n ...style,\n }}\n onFocus={e => {\n e.currentTarget.style.borderColor = error ? 'var(--c-error)' : 'var(--c-text)'\n e.currentTarget.style.boxShadow = error ? '0 0 0 3px oklch(95% 0.04 25)' : '0 0 0 3px rgba(47,56,67,0.08)'\n }}\n onBlur={e => {\n e.currentTarget.style.borderColor = error ? 'var(--c-error)' : 'var(--c-border)'\n e.currentTarget.style.boxShadow = error ? '0 0 0 3px oklch(95% 0.04 25)' : 'none'\n }}\n {...rest}\n />\n )\n}\n\n// ── SegmentedControl ───────────────────────────────────────────────────────\n\ninterface SegmentedControlProps {\n options: string[] | Array<{ value: string; label: string }>\n value: string\n onChange: (v: string) => void\n}\n\nexport function SegmentedControl({ options, value, onChange }: SegmentedControlProps) {\n const opts = options.map(o => typeof o === 'string' ? { value: o, label: o } : o)\n return (\n <div style={{\n display: 'inline-flex',\n background: 'var(--color-neutral-100)',\n borderRadius: 999,\n padding: 3,\n gap: 2,\n }}>\n {opts.map(o => (\n <button\n key={o.value}\n onClick={() => onChange(o.value)}\n style={{\n border: 'none',\n background: o.value === value ? 'var(--c-surface)' : 'transparent',\n color: o.value === value ? 'var(--c-text)' : 'var(--c-text-subtle)',\n padding: '4px 14px',\n borderRadius: 999,\n cursor: 'pointer',\n fontFamily: 'var(--font-sans)',\n fontSize: 11.5,\n fontWeight: 600,\n boxShadow: o.value === value ? '0 1px 2px rgba(0,0,0,0.08)' : 'none',\n transition: 'all 160ms',\n }}\n >\n {o.label}\n </button>\n ))}\n </div>\n )\n}\n"],"mappings":";;AAYA,SAAgB,EAAM,EAAE,UAAO,aAAU,UAAO,SAAM,eAAwB;AAC5E,QACE,kBAAC,OAAD;EAAK,OAAO;GAAE,SAAS;GAAQ,eAAe;GAAU,KAAK;GAAG;YAAhE;GACE,kBAAC,SAAD;IAAO,OAAO;KACZ,UAAY;KACZ,YAAY;KACZ,OAAY;KACZ,YAAY;KACZ,SAAY;KACZ,YAAY;KACZ,KAAY;KACb;cARD,CASG,GACA,KAAY,kBAAC,QAAD;KAAM,OAAO,EAAE,OAAO,kBAAkB;eAAE;KAAQ,CAAA,CACzD;;GACP;GACA,IACG,kBAAC,KAAD;IAAG,OAAO;KAAE,QAAQ;KAAG,UAAU;KAAM,OAAO;KAAkB,YAAY;KAAoB;cAAG;IAAU,CAAA,GAC7G,KAAQ,kBAAC,KAAD;IAAG,OAAO;KAAE,QAAQ;KAAG,UAAU;KAAM,OAAO;KAA2B,YAAY;KAAoB;cAAG;IAAS,CAAA;GAE7H;;;AAWV,SAAgB,EAAS,EAAE,UAAO,SAAM,UAAO,GAAG,KAAuB;AACvE,QACE,kBAAC,YAAD;EACE,OAAO;GACL,OAAc;GACd,SAAc;GACd,QAAc,aAAa,IAAQ,mBAAmB;GACtD,cAAc;GACd,YAAc,IAAO,qBAAqB;GAC1C,UAAc;GACd,OAAc;GACd,YAAc;GACd,QAAc;GACd,WAAc;GACd,SAAc;GACd,YAAc;GACd,WAAc;GACd,WAAc,IAAQ,iCAAiC;GACvD,YAAc;GACd,GAAG;GACJ;EACD,UAAS,MAAK;AAEZ,GADA,EAAE,cAAc,MAAM,cAAc,IAAQ,mBAAmB,iBAC/D,EAAE,cAAc,MAAM,YAAc,IAAQ,iCAAiC;;EAE/E,SAAQ,MAAK;AAEX,GADA,EAAE,cAAc,MAAM,cAAc,IAAQ,mBAAmB,mBAC/D,EAAE,cAAc,MAAM,YAAc,IAAQ,iCAAiC;;EAE/E,GAAI;EACJ,CAAA;;AAYN,SAAgB,EAAiB,EAAE,YAAS,UAAO,eAAmC;AAEpF,QACE,kBAAC,OAAD;EAAK,OAAO;GACV,SAAc;GACd,YAAc;GACd,cAAc;GACd,SAAc;GACd,KAAc;GACf;YARU,EAAQ,KAAI,MAAK,OAAO,KAAM,WAAW;GAAE,OAAO;GAAG,OAAO;GAAG,GAAG,EAS1E,CAAK,KAAI,MACR,kBAAC,UAAD;GAEE,eAAe,EAAS,EAAE,MAAM;GAChC,OAAO;IACL,QAAc;IACd,YAAc,EAAE,UAAU,IAAQ,qBAAqB;IACvD,OAAc,EAAE,UAAU,IAAQ,kBAAkB;IACpD,SAAc;IACd,cAAc;IACd,QAAc;IACd,YAAc;IACd,UAAc;IACd,YAAc;IACd,WAAc,EAAE,UAAU,IAAQ,+BAA+B;IACjE,YAAc;IACf;aAEA,EAAE;GACI,EAjBF,EAAE,MAiBA,CACT;EACE,CAAA"}
|
package/dist/index19.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./index3.cjs`),t=require(`./index8.cjs`);let n=require(`react/jsx-runtime`);function r(){return(0,n.jsx)(e.Badge,{variant:`warning`,dot:!0,children:`Preview`})}function i({title:e,lead:r,icon:i,actions:a}){return(0,n.jsx)(t.PageHeader,{title:e,group:`Preview`,icon:i,subtitle:r,actions:a})}exports.PreviewBadge=r,exports.PreviewHeader=i;
|
|
2
|
+
//# sourceMappingURL=index19.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index19.cjs","names":[],"sources":["../src/components/PreviewBadge.tsx"],"sourcesContent":["// Small pill that flags a page as a non-functional preview. Tokens only.\n\nimport type { ReactNode } from 'react'\nimport { Badge } from './Badge'\nimport { PageHeader } from './PageHeader'\n\nexport function PreviewBadge() {\n return <Badge variant=\"warning\" dot>Preview</Badge>\n}\n\n// Thin wrapper over the shared PageHeader so preview pages sit on the exact\n// same vertical rhythm (icon + title + group pill + subtitle + divider) as\n// every other page in the app. The amber PREVIEW group pill already tells\n// viewers this is a design demo, so we don't stack a second badge on top.\nexport function PreviewHeader({\n title, lead, icon, actions,\n}: {\n title: string\n lead: string\n icon?: ReactNode\n actions?: ReactNode\n}) {\n return (\n <PageHeader\n title={title}\n group=\"Preview\"\n icon={icon}\n subtitle={lead}\n actions={actions}\n />\n )\n}\n"],"mappings":"6FAMA,SAAgB,GAAe,CAC7B,OAAO,EAAA,EAAA,KAAC,EAAA,MAAD,CAAO,QAAQ,UAAU,IAAA,YAAI,UAAe,CAAA,CAOrD,SAAgB,EAAc,CAC5B,QAAO,OAAM,OAAM,WAMlB,CACD,OACE,EAAA,EAAA,KAAC,EAAA,WAAD,CACS,QACP,MAAM,UACA,OACN,SAAU,EACD,UACT,CAAA"}
|
package/dist/index19.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Badge as e } from "./index3.js";
|
|
2
|
+
import { PageHeader as t } from "./index8.js";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/PreviewBadge.tsx
|
|
5
|
+
function r() {
|
|
6
|
+
return /* @__PURE__ */ n(e, {
|
|
7
|
+
variant: "warning",
|
|
8
|
+
dot: !0,
|
|
9
|
+
children: "Preview"
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function i({ title: e, lead: r, icon: i, actions: a }) {
|
|
13
|
+
return /* @__PURE__ */ n(t, {
|
|
14
|
+
title: e,
|
|
15
|
+
group: "Preview",
|
|
16
|
+
icon: i,
|
|
17
|
+
subtitle: r,
|
|
18
|
+
actions: a
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { r as PreviewBadge, i as PreviewHeader };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=index19.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index19.js","names":[],"sources":["../src/components/PreviewBadge.tsx"],"sourcesContent":["// Small pill that flags a page as a non-functional preview. Tokens only.\n\nimport type { ReactNode } from 'react'\nimport { Badge } from './Badge'\nimport { PageHeader } from './PageHeader'\n\nexport function PreviewBadge() {\n return <Badge variant=\"warning\" dot>Preview</Badge>\n}\n\n// Thin wrapper over the shared PageHeader so preview pages sit on the exact\n// same vertical rhythm (icon + title + group pill + subtitle + divider) as\n// every other page in the app. The amber PREVIEW group pill already tells\n// viewers this is a design demo, so we don't stack a second badge on top.\nexport function PreviewHeader({\n title, lead, icon, actions,\n}: {\n title: string\n lead: string\n icon?: ReactNode\n actions?: ReactNode\n}) {\n return (\n <PageHeader\n title={title}\n group=\"Preview\"\n icon={icon}\n subtitle={lead}\n actions={actions}\n />\n )\n}\n"],"mappings":";;;;AAMA,SAAgB,IAAe;AAC7B,QAAO,kBAAC,GAAD;EAAO,SAAQ;EAAU,KAAA;YAAI;EAAe,CAAA;;AAOrD,SAAgB,EAAc,EAC5B,UAAO,SAAM,SAAM,cAMlB;AACD,QACE,kBAAC,GAAD;EACS;EACP,OAAM;EACA;EACN,UAAU;EACD;EACT,CAAA"}
|
package/dist/index2.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`),t=require(`react/jsx-runtime`);var n={sm:{padding:`6px 12px`,fontSize:12,borderRadius:6},md:{padding:`9px 18px`,fontSize:14,borderRadius:8},lg:{padding:`12px 24px`,fontSize:16,borderRadius:10}};function r({variant:r=`primary`,size:i=`md`,icon:a,children:o,disabled:s,style:c,...l}){let[u,d]=(0,e.useState)(!1),f=n[i],p={primary:{background:u?`var(--color-neutral-900)`:`var(--c-contrast)`,color:`#fff`,border:`none`,boxShadow:u?`var(--shadow-md)`:`var(--shadow-xs)`},secondary:{background:u?`var(--c-border)`:`var(--color-neutral-100)`,color:`var(--c-text)`,border:`1px solid var(--c-border)`},ghost:{background:u?`var(--color-neutral-100)`:`transparent`,color:`var(--color-neutral-700)`,border:`1px solid transparent`},destructive:{background:u?`oklch(46% 0.18 25)`:`oklch(55% 0.18 25)`,color:`#fff`,border:`none`},outline:{background:u?`var(--color-neutral-100)`:`transparent`,color:`var(--c-text)`,border:`1.5px solid var(--c-text)`},accent:{background:u?`var(--color-amber-500)`:`var(--c-amber)`,color:`var(--c-contrast)`,border:`none`,boxShadow:u?`0 4px 12px rgba(245,181,71,0.35)`:`0 1px 3px rgba(245,181,71,0.22)`}};return(0,t.jsxs)(`button`,{disabled:s,onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),style:{display:`inline-flex`,alignItems:`center`,gap:6,fontFamily:`var(--font-sans)`,fontWeight:600,cursor:s?`not-allowed`:`pointer`,transition:`all 0.15s`,outline:`none`,opacity:s?.45:1,padding:f.padding,fontSize:f.fontSize,borderRadius:f.borderRadius,...p[r],...c},...l,children:[a&&(0,t.jsx)(`span`,{style:{fontSize:`1.1em`,lineHeight:1,display:`inline-flex`},children:a}),o]})}exports.Button=r;
|
|
2
|
+
//# sourceMappingURL=index2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.cjs","names":[],"sources":["../src/components/Button.tsx"],"sourcesContent":["import { useState, type ReactNode, type ButtonHTMLAttributes } from 'react'\n\ntype Variant = 'primary' | 'secondary' | 'ghost' | 'destructive' | 'outline' | 'accent'\ntype Size = 'sm' | 'md' | 'lg'\n\ninterface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: Variant\n size?: Size\n icon?: ReactNode\n children?: ReactNode\n}\n\nconst SIZES: Record<Size, { padding: string; fontSize: number; borderRadius: number }> = {\n sm: { padding: '6px 12px', fontSize: 12, borderRadius: 6 },\n md: { padding: '9px 18px', fontSize: 14, borderRadius: 8 },\n lg: { padding: '12px 24px', fontSize: 16, borderRadius: 10 },\n}\n\nexport function Button({\n variant = 'primary',\n size = 'md',\n icon,\n children,\n disabled,\n style,\n ...rest\n}: ButtonProps) {\n const [hovered, setHovered] = useState(false)\n const sz = SIZES[size]\n\n const variantStyles: Record<Variant, React.CSSProperties> = {\n primary: {\n background: hovered ? 'var(--color-neutral-900)' : 'var(--c-contrast)',\n color: '#fff',\n border: 'none',\n boxShadow: hovered ? 'var(--shadow-md)' : 'var(--shadow-xs)',\n },\n secondary: {\n background: hovered ? 'var(--c-border)' : 'var(--color-neutral-100)',\n color: 'var(--c-text)',\n border: '1px solid var(--c-border)',\n },\n ghost: {\n background: hovered ? 'var(--color-neutral-100)' : 'transparent',\n color: 'var(--color-neutral-700)',\n border: '1px solid transparent',\n },\n destructive: {\n background: hovered ? 'oklch(46% 0.18 25)' : 'oklch(55% 0.18 25)',\n color: '#fff',\n border: 'none',\n },\n outline: {\n background: hovered ? 'var(--color-neutral-100)' : 'transparent',\n color: 'var(--c-text)',\n border: '1.5px solid var(--c-text)',\n },\n accent: {\n background: hovered ? 'var(--color-amber-500)' : 'var(--c-amber)',\n color: 'var(--c-contrast)',\n border: 'none',\n boxShadow: hovered ? '0 4px 12px rgba(245,181,71,0.35)' : '0 1px 3px rgba(245,181,71,0.22)',\n },\n }\n\n return (\n <button\n disabled={disabled}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n fontFamily: 'var(--font-sans)',\n fontWeight: 600,\n cursor: disabled ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s',\n outline: 'none',\n opacity: disabled ? 0.45 : 1,\n padding: sz.padding,\n fontSize: sz.fontSize,\n borderRadius: sz.borderRadius,\n ...variantStyles[variant],\n ...style,\n }}\n {...rest}\n >\n {icon && <span style={{ fontSize: '1.1em', lineHeight: 1, display: 'inline-flex' }}>{icon}</span>}\n {children}\n </button>\n )\n}\n"],"mappings":"sDAYA,IAAM,EAAmF,CACvF,GAAI,CAAE,QAAS,WAAa,SAAU,GAAI,aAAc,EAAI,CAC5D,GAAI,CAAE,QAAS,WAAa,SAAU,GAAI,aAAc,EAAI,CAC5D,GAAI,CAAE,QAAS,YAAa,SAAU,GAAI,aAAc,GAAI,CAC7D,CAED,SAAgB,EAAO,CACrB,UAAU,UACV,OAAO,KACP,OACA,WACA,WACA,QACA,GAAG,GACW,CACd,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,EAAK,EAAM,GAEX,EAAsD,CAC1D,QAAS,CACP,WAAa,EAAU,2BAA6B,oBACpD,MAAa,OACb,OAAa,OACb,UAAa,EAAU,mBAAqB,mBAC7C,CACD,UAAW,CACT,WAAa,EAAU,kBAAoB,2BAC3C,MAAa,gBACb,OAAa,4BACd,CACD,MAAO,CACL,WAAa,EAAU,2BAA6B,cACpD,MAAa,2BACb,OAAa,wBACd,CACD,YAAa,CACX,WAAa,EAAU,qBAAuB,qBAC9C,MAAa,OACb,OAAa,OACd,CACD,QAAS,CACP,WAAa,EAAU,2BAA6B,cACpD,MAAa,gBACb,OAAa,4BACd,CACD,OAAQ,CACN,WAAa,EAAU,yBAA2B,iBAClD,MAAa,oBACb,OAAa,OACb,UAAa,EAAU,mCAAqC,kCAC7D,CACF,CAED,OACE,EAAA,EAAA,MAAC,SAAD,CACY,WACV,iBAAoB,EAAW,GAAK,CACpC,iBAAoB,EAAW,GAAM,CACrC,MAAO,CACL,QAAe,cACf,WAAe,SACf,IAAe,EACf,WAAe,mBACf,WAAe,IACf,OAAe,EAAW,cAAgB,UAC1C,WAAe,YACf,QAAe,OACf,QAAe,EAAW,IAAO,EACjC,QAAe,EAAG,QAClB,SAAe,EAAG,SAClB,aAAe,EAAG,aAClB,GAAG,EAAc,GACjB,GAAG,EACJ,CACD,GAAI,WApBN,CAsBG,IAAQ,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CAAE,SAAU,QAAS,WAAY,EAAG,QAAS,cAAe,UAAG,EAAY,CAAA,CAChG,EACM"}
|
package/dist/index2.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Button.tsx
|
|
4
|
+
var r = {
|
|
5
|
+
sm: {
|
|
6
|
+
padding: "6px 12px",
|
|
7
|
+
fontSize: 12,
|
|
8
|
+
borderRadius: 6
|
|
9
|
+
},
|
|
10
|
+
md: {
|
|
11
|
+
padding: "9px 18px",
|
|
12
|
+
fontSize: 14,
|
|
13
|
+
borderRadius: 8
|
|
14
|
+
},
|
|
15
|
+
lg: {
|
|
16
|
+
padding: "12px 24px",
|
|
17
|
+
fontSize: 16,
|
|
18
|
+
borderRadius: 10
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
function i({ variant: i = "primary", size: a = "md", icon: o, children: s, disabled: c, style: l, ...u }) {
|
|
22
|
+
let [d, f] = e(!1), p = r[a], m = {
|
|
23
|
+
primary: {
|
|
24
|
+
background: d ? "var(--color-neutral-900)" : "var(--c-contrast)",
|
|
25
|
+
color: "#fff",
|
|
26
|
+
border: "none",
|
|
27
|
+
boxShadow: d ? "var(--shadow-md)" : "var(--shadow-xs)"
|
|
28
|
+
},
|
|
29
|
+
secondary: {
|
|
30
|
+
background: d ? "var(--c-border)" : "var(--color-neutral-100)",
|
|
31
|
+
color: "var(--c-text)",
|
|
32
|
+
border: "1px solid var(--c-border)"
|
|
33
|
+
},
|
|
34
|
+
ghost: {
|
|
35
|
+
background: d ? "var(--color-neutral-100)" : "transparent",
|
|
36
|
+
color: "var(--color-neutral-700)",
|
|
37
|
+
border: "1px solid transparent"
|
|
38
|
+
},
|
|
39
|
+
destructive: {
|
|
40
|
+
background: d ? "oklch(46% 0.18 25)" : "oklch(55% 0.18 25)",
|
|
41
|
+
color: "#fff",
|
|
42
|
+
border: "none"
|
|
43
|
+
},
|
|
44
|
+
outline: {
|
|
45
|
+
background: d ? "var(--color-neutral-100)" : "transparent",
|
|
46
|
+
color: "var(--c-text)",
|
|
47
|
+
border: "1.5px solid var(--c-text)"
|
|
48
|
+
},
|
|
49
|
+
accent: {
|
|
50
|
+
background: d ? "var(--color-amber-500)" : "var(--c-amber)",
|
|
51
|
+
color: "var(--c-contrast)",
|
|
52
|
+
border: "none",
|
|
53
|
+
boxShadow: d ? "0 4px 12px rgba(245,181,71,0.35)" : "0 1px 3px rgba(245,181,71,0.22)"
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return /* @__PURE__ */ n("button", {
|
|
57
|
+
disabled: c,
|
|
58
|
+
onMouseEnter: () => f(!0),
|
|
59
|
+
onMouseLeave: () => f(!1),
|
|
60
|
+
style: {
|
|
61
|
+
display: "inline-flex",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
gap: 6,
|
|
64
|
+
fontFamily: "var(--font-sans)",
|
|
65
|
+
fontWeight: 600,
|
|
66
|
+
cursor: c ? "not-allowed" : "pointer",
|
|
67
|
+
transition: "all 0.15s",
|
|
68
|
+
outline: "none",
|
|
69
|
+
opacity: c ? .45 : 1,
|
|
70
|
+
padding: p.padding,
|
|
71
|
+
fontSize: p.fontSize,
|
|
72
|
+
borderRadius: p.borderRadius,
|
|
73
|
+
...m[i],
|
|
74
|
+
...l
|
|
75
|
+
},
|
|
76
|
+
...u,
|
|
77
|
+
children: [o && /* @__PURE__ */ t("span", {
|
|
78
|
+
style: {
|
|
79
|
+
fontSize: "1.1em",
|
|
80
|
+
lineHeight: 1,
|
|
81
|
+
display: "inline-flex"
|
|
82
|
+
},
|
|
83
|
+
children: o
|
|
84
|
+
}), s]
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { i as Button };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=index2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.js","names":[],"sources":["../src/components/Button.tsx"],"sourcesContent":["import { useState, type ReactNode, type ButtonHTMLAttributes } from 'react'\n\ntype Variant = 'primary' | 'secondary' | 'ghost' | 'destructive' | 'outline' | 'accent'\ntype Size = 'sm' | 'md' | 'lg'\n\ninterface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: Variant\n size?: Size\n icon?: ReactNode\n children?: ReactNode\n}\n\nconst SIZES: Record<Size, { padding: string; fontSize: number; borderRadius: number }> = {\n sm: { padding: '6px 12px', fontSize: 12, borderRadius: 6 },\n md: { padding: '9px 18px', fontSize: 14, borderRadius: 8 },\n lg: { padding: '12px 24px', fontSize: 16, borderRadius: 10 },\n}\n\nexport function Button({\n variant = 'primary',\n size = 'md',\n icon,\n children,\n disabled,\n style,\n ...rest\n}: ButtonProps) {\n const [hovered, setHovered] = useState(false)\n const sz = SIZES[size]\n\n const variantStyles: Record<Variant, React.CSSProperties> = {\n primary: {\n background: hovered ? 'var(--color-neutral-900)' : 'var(--c-contrast)',\n color: '#fff',\n border: 'none',\n boxShadow: hovered ? 'var(--shadow-md)' : 'var(--shadow-xs)',\n },\n secondary: {\n background: hovered ? 'var(--c-border)' : 'var(--color-neutral-100)',\n color: 'var(--c-text)',\n border: '1px solid var(--c-border)',\n },\n ghost: {\n background: hovered ? 'var(--color-neutral-100)' : 'transparent',\n color: 'var(--color-neutral-700)',\n border: '1px solid transparent',\n },\n destructive: {\n background: hovered ? 'oklch(46% 0.18 25)' : 'oklch(55% 0.18 25)',\n color: '#fff',\n border: 'none',\n },\n outline: {\n background: hovered ? 'var(--color-neutral-100)' : 'transparent',\n color: 'var(--c-text)',\n border: '1.5px solid var(--c-text)',\n },\n accent: {\n background: hovered ? 'var(--color-amber-500)' : 'var(--c-amber)',\n color: 'var(--c-contrast)',\n border: 'none',\n boxShadow: hovered ? '0 4px 12px rgba(245,181,71,0.35)' : '0 1px 3px rgba(245,181,71,0.22)',\n },\n }\n\n return (\n <button\n disabled={disabled}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n fontFamily: 'var(--font-sans)',\n fontWeight: 600,\n cursor: disabled ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s',\n outline: 'none',\n opacity: disabled ? 0.45 : 1,\n padding: sz.padding,\n fontSize: sz.fontSize,\n borderRadius: sz.borderRadius,\n ...variantStyles[variant],\n ...style,\n }}\n {...rest}\n >\n {icon && <span style={{ fontSize: '1.1em', lineHeight: 1, display: 'inline-flex' }}>{icon}</span>}\n {children}\n </button>\n )\n}\n"],"mappings":";;;AAYA,IAAM,IAAmF;CACvF,IAAI;EAAE,SAAS;EAAa,UAAU;EAAI,cAAc;EAAI;CAC5D,IAAI;EAAE,SAAS;EAAa,UAAU;EAAI,cAAc;EAAI;CAC5D,IAAI;EAAE,SAAS;EAAa,UAAU;EAAI,cAAc;EAAI;CAC7D;AAED,SAAgB,EAAO,EACrB,aAAU,WACV,UAAO,MACP,SACA,aACA,aACA,UACA,GAAG,KACW;CACd,IAAM,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,IAAK,EAAM,IAEX,IAAsD;EAC1D,SAAS;GACP,YAAa,IAAU,6BAA6B;GACpD,OAAa;GACb,QAAa;GACb,WAAa,IAAU,qBAAqB;GAC7C;EACD,WAAW;GACT,YAAa,IAAU,oBAAoB;GAC3C,OAAa;GACb,QAAa;GACd;EACD,OAAO;GACL,YAAa,IAAU,6BAA6B;GACpD,OAAa;GACb,QAAa;GACd;EACD,aAAa;GACX,YAAa,IAAU,uBAAuB;GAC9C,OAAa;GACb,QAAa;GACd;EACD,SAAS;GACP,YAAa,IAAU,6BAA6B;GACpD,OAAa;GACb,QAAa;GACd;EACD,QAAQ;GACN,YAAa,IAAU,2BAA2B;GAClD,OAAa;GACb,QAAa;GACb,WAAa,IAAU,qCAAqC;GAC7D;EACF;AAED,QACE,kBAAC,UAAD;EACY;EACV,oBAAoB,EAAW,GAAK;EACpC,oBAAoB,EAAW,GAAM;EACrC,OAAO;GACL,SAAe;GACf,YAAe;GACf,KAAe;GACf,YAAe;GACf,YAAe;GACf,QAAe,IAAW,gBAAgB;GAC1C,YAAe;GACf,SAAe;GACf,SAAe,IAAW,MAAO;GACjC,SAAe,EAAG;GAClB,UAAe,EAAG;GAClB,cAAe,EAAG;GAClB,GAAG,EAAc;GACjB,GAAG;GACJ;EACD,GAAI;YApBN,CAsBG,KAAQ,kBAAC,QAAD;GAAM,OAAO;IAAE,UAAU;IAAS,YAAY;IAAG,SAAS;IAAe;aAAG;GAAY,CAAA,EAChG,EACM"}
|
package/dist/index3.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react/jsx-runtime`);var t={default:{bg:`var(--color-neutral-100)`,color:`var(--color-neutral-600)`,border:`var(--c-border)`},success:{bg:`var(--color-green-100)`,color:`var(--color-green-700)`,border:`var(--color-green-200)`},warning:{bg:`oklch(95% 0.05 75)`,color:`oklch(46% 0.18 70)`,border:`oklch(88% 0.1 75)`},error:{bg:`oklch(95% 0.04 25)`,color:`oklch(46% 0.18 25)`,border:`oklch(87% 0.09 25)`},info:{bg:`oklch(94% 0.04 245)`,color:`oklch(46% 0.18 245)`,border:`oklch(88% 0.08 245)`},brand:{bg:`var(--c-amber)`,color:`var(--c-contrast)`,border:`var(--color-amber-500)`},dark:{bg:`var(--c-contrast)`,color:`var(--c-amber)`,border:`var(--color-neutral-900)`}};function n({variant:n=`default`,dot:r,children:i}){let a=t[n];return(0,e.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:5,padding:`3px 9px`,borderRadius:`var(--radius-full)`,fontFamily:`var(--font-sans)`,fontSize:12,fontWeight:600,lineHeight:1.4,background:a.bg,color:a.color,border:`1px solid ${a.border}`,whiteSpace:`nowrap`},children:[r&&(0,e.jsx)(`span`,{style:{width:6,height:6,borderRadius:`var(--radius-full)`,background:`currentColor`,display:`inline-block`,flexShrink:0}}),i]})}exports.Badge=n;
|
|
2
|
+
//# sourceMappingURL=index3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index3.cjs","names":[],"sources":["../src/components/Badge.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\ntype BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info' | 'brand' | 'dark'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n dot?: boolean\n children: ReactNode\n}\n\nconst VARIANTS: Record<BadgeVariant, { bg: string; color: string; border: string }> = {\n default: { bg: 'var(--color-neutral-100)', color: 'var(--color-neutral-600)', border: 'var(--c-border)' },\n success: { bg: 'var(--color-green-100)', color: 'var(--color-green-700)', border: 'var(--color-green-200)' },\n warning: { bg: 'oklch(95% 0.05 75)', color: 'oklch(46% 0.18 70)', border: 'oklch(88% 0.1 75)' },\n error: { bg: 'oklch(95% 0.04 25)', color: 'oklch(46% 0.18 25)', border: 'oklch(87% 0.09 25)' },\n info: { bg: 'oklch(94% 0.04 245)', color: 'oklch(46% 0.18 245)', border: 'oklch(88% 0.08 245)' },\n brand: { bg: 'var(--c-amber)', color: 'var(--c-contrast)', border: 'var(--color-amber-500)' },\n dark: { bg: 'var(--c-contrast)', color: 'var(--c-amber)', border: 'var(--color-neutral-900)' },\n}\n\nexport function Badge({ variant = 'default', dot, children }: BadgeProps) {\n const v = VARIANTS[variant]\n return (\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 5,\n padding: '3px 9px',\n borderRadius: 'var(--radius-full)',\n fontFamily: 'var(--font-sans)',\n fontSize: 12,\n fontWeight: 600,\n lineHeight: 1.4,\n background: v.bg,\n color: v.color,\n border: `1px solid ${v.border}`,\n whiteSpace: 'nowrap',\n }}>\n {dot && (\n <span style={{\n width: 6,\n height: 6,\n borderRadius: 'var(--radius-full)',\n background: 'currentColor',\n display: 'inline-block',\n flexShrink: 0,\n }} />\n )}\n {children}\n </span>\n )\n}\n"],"mappings":"mCAUA,IAAM,EAAgF,CACpF,QAAa,CAAE,GAAI,2BAA4B,MAAO,2BAA4B,OAAQ,kBAAmB,CAC7G,QAAa,CAAE,GAAI,yBAA4B,MAAO,yBAA4B,OAAQ,yBAA0B,CACpH,QAAa,CAAE,GAAI,qBAA6B,MAAO,qBAA4B,OAAQ,oBAAqB,CAChH,MAAa,CAAE,GAAI,qBAA6B,MAAO,qBAA4B,OAAQ,qBAAsB,CACjH,KAAa,CAAE,GAAI,sBAA6B,MAAO,sBAA4B,OAAQ,sBAAuB,CAClH,MAAa,CAAE,GAAI,iBAA8B,MAAO,oBAA4B,OAAQ,yBAA0B,CACtH,KAAa,CAAE,GAAI,oBAA8B,MAAO,iBAA4B,OAAQ,2BAA4B,CACzH,CAED,SAAgB,EAAM,CAAE,UAAU,UAAW,MAAK,YAAwB,CACxE,IAAM,EAAI,EAAS,GACnB,OACE,EAAA,EAAA,MAAC,OAAD,CAAM,MAAO,CACX,QAAa,cACb,WAAa,SACb,IAAa,EACb,QAAa,UACb,aAAc,qBACd,WAAa,mBACb,SAAa,GACb,WAAa,IACb,WAAa,IACb,WAAa,EAAE,GACf,MAAa,EAAE,MACf,OAAa,aAAa,EAAE,SAC5B,WAAa,SACd,UAdD,CAeG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,MAAc,EACd,OAAc,EACd,aAAc,qBACd,WAAc,eACd,QAAc,eACd,WAAc,EACf,CAAI,CAAA,CAEN,EACI"}
|
package/dist/index3.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
//#region src/components/Badge.tsx
|
|
3
|
+
var n = {
|
|
4
|
+
default: {
|
|
5
|
+
bg: "var(--color-neutral-100)",
|
|
6
|
+
color: "var(--color-neutral-600)",
|
|
7
|
+
border: "var(--c-border)"
|
|
8
|
+
},
|
|
9
|
+
success: {
|
|
10
|
+
bg: "var(--color-green-100)",
|
|
11
|
+
color: "var(--color-green-700)",
|
|
12
|
+
border: "var(--color-green-200)"
|
|
13
|
+
},
|
|
14
|
+
warning: {
|
|
15
|
+
bg: "oklch(95% 0.05 75)",
|
|
16
|
+
color: "oklch(46% 0.18 70)",
|
|
17
|
+
border: "oklch(88% 0.1 75)"
|
|
18
|
+
},
|
|
19
|
+
error: {
|
|
20
|
+
bg: "oklch(95% 0.04 25)",
|
|
21
|
+
color: "oklch(46% 0.18 25)",
|
|
22
|
+
border: "oklch(87% 0.09 25)"
|
|
23
|
+
},
|
|
24
|
+
info: {
|
|
25
|
+
bg: "oklch(94% 0.04 245)",
|
|
26
|
+
color: "oklch(46% 0.18 245)",
|
|
27
|
+
border: "oklch(88% 0.08 245)"
|
|
28
|
+
},
|
|
29
|
+
brand: {
|
|
30
|
+
bg: "var(--c-amber)",
|
|
31
|
+
color: "var(--c-contrast)",
|
|
32
|
+
border: "var(--color-amber-500)"
|
|
33
|
+
},
|
|
34
|
+
dark: {
|
|
35
|
+
bg: "var(--c-contrast)",
|
|
36
|
+
color: "var(--c-amber)",
|
|
37
|
+
border: "var(--color-neutral-900)"
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function r({ variant: r = "default", dot: i, children: a }) {
|
|
41
|
+
let o = n[r];
|
|
42
|
+
return /* @__PURE__ */ t("span", {
|
|
43
|
+
style: {
|
|
44
|
+
display: "inline-flex",
|
|
45
|
+
alignItems: "center",
|
|
46
|
+
gap: 5,
|
|
47
|
+
padding: "3px 9px",
|
|
48
|
+
borderRadius: "var(--radius-full)",
|
|
49
|
+
fontFamily: "var(--font-sans)",
|
|
50
|
+
fontSize: 12,
|
|
51
|
+
fontWeight: 600,
|
|
52
|
+
lineHeight: 1.4,
|
|
53
|
+
background: o.bg,
|
|
54
|
+
color: o.color,
|
|
55
|
+
border: `1px solid ${o.border}`,
|
|
56
|
+
whiteSpace: "nowrap"
|
|
57
|
+
},
|
|
58
|
+
children: [i && /* @__PURE__ */ e("span", { style: {
|
|
59
|
+
width: 6,
|
|
60
|
+
height: 6,
|
|
61
|
+
borderRadius: "var(--radius-full)",
|
|
62
|
+
background: "currentColor",
|
|
63
|
+
display: "inline-block",
|
|
64
|
+
flexShrink: 0
|
|
65
|
+
} }), a]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { r as Badge };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=index3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index3.js","names":[],"sources":["../src/components/Badge.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\ntype BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info' | 'brand' | 'dark'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n dot?: boolean\n children: ReactNode\n}\n\nconst VARIANTS: Record<BadgeVariant, { bg: string; color: string; border: string }> = {\n default: { bg: 'var(--color-neutral-100)', color: 'var(--color-neutral-600)', border: 'var(--c-border)' },\n success: { bg: 'var(--color-green-100)', color: 'var(--color-green-700)', border: 'var(--color-green-200)' },\n warning: { bg: 'oklch(95% 0.05 75)', color: 'oklch(46% 0.18 70)', border: 'oklch(88% 0.1 75)' },\n error: { bg: 'oklch(95% 0.04 25)', color: 'oklch(46% 0.18 25)', border: 'oklch(87% 0.09 25)' },\n info: { bg: 'oklch(94% 0.04 245)', color: 'oklch(46% 0.18 245)', border: 'oklch(88% 0.08 245)' },\n brand: { bg: 'var(--c-amber)', color: 'var(--c-contrast)', border: 'var(--color-amber-500)' },\n dark: { bg: 'var(--c-contrast)', color: 'var(--c-amber)', border: 'var(--color-neutral-900)' },\n}\n\nexport function Badge({ variant = 'default', dot, children }: BadgeProps) {\n const v = VARIANTS[variant]\n return (\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 5,\n padding: '3px 9px',\n borderRadius: 'var(--radius-full)',\n fontFamily: 'var(--font-sans)',\n fontSize: 12,\n fontWeight: 600,\n lineHeight: 1.4,\n background: v.bg,\n color: v.color,\n border: `1px solid ${v.border}`,\n whiteSpace: 'nowrap',\n }}>\n {dot && (\n <span style={{\n width: 6,\n height: 6,\n borderRadius: 'var(--radius-full)',\n background: 'currentColor',\n display: 'inline-block',\n flexShrink: 0,\n }} />\n )}\n {children}\n </span>\n )\n}\n"],"mappings":";;AAUA,IAAM,IAAgF;CACpF,SAAa;EAAE,IAAI;EAA4B,OAAO;EAA4B,QAAQ;EAAmB;CAC7G,SAAa;EAAE,IAAI;EAA4B,OAAO;EAA4B,QAAQ;EAA0B;CACpH,SAAa;EAAE,IAAI;EAA6B,OAAO;EAA4B,QAAQ;EAAqB;CAChH,OAAa;EAAE,IAAI;EAA6B,OAAO;EAA4B,QAAQ;EAAsB;CACjH,MAAa;EAAE,IAAI;EAA6B,OAAO;EAA4B,QAAQ;EAAuB;CAClH,OAAa;EAAE,IAAI;EAA8B,OAAO;EAA4B,QAAQ;EAA0B;CACtH,MAAa;EAAE,IAAI;EAA8B,OAAO;EAA4B,QAAQ;EAA4B;CACzH;AAED,SAAgB,EAAM,EAAE,aAAU,WAAW,QAAK,eAAwB;CACxE,IAAM,IAAI,EAAS;AACnB,QACE,kBAAC,QAAD;EAAM,OAAO;GACX,SAAa;GACb,YAAa;GACb,KAAa;GACb,SAAa;GACb,cAAc;GACd,YAAa;GACb,UAAa;GACb,YAAa;GACb,YAAa;GACb,YAAa,EAAE;GACf,OAAa,EAAE;GACf,QAAa,aAAa,EAAE;GAC5B,YAAa;GACd;YAdD,CAeG,KACC,kBAAC,QAAD,EAAM,OAAO;GACX,OAAc;GACd,QAAc;GACd,cAAc;GACd,YAAc;GACd,SAAc;GACd,YAAc;GACf,EAAI,CAAA,EAEN,EACI"}
|
package/dist/index4.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react/jsx-runtime`);function t({status:t,pulse:n=!1}){let r=t.toLowerCase();return(0,e.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6,padding:`2px 9px`,borderRadius:`var(--radius-full)`,fontFamily:`var(--font-sans)`,fontSize:11,fontWeight:600,background:`var(--status-${r}-bg)`,color:`var(--status-${r}-fg)`,whiteSpace:`nowrap`},children:[(0,e.jsx)(`span`,{style:{width:7,height:7,borderRadius:`var(--radius-full)`,background:`var(--status-${r}-dot)`,flexShrink:0,animation:n?`statusPulse 1.4s ease-out infinite`:`none`}}),t]})}exports.StatusPill=t;
|
|
2
|
+
//# sourceMappingURL=index4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index4.cjs","names":[],"sources":["../src/components/StatusPill.tsx"],"sourcesContent":["type Status =\n | 'Published' | 'Draft' | 'Archived'\n | 'Running' | 'Completed' | 'Failed' | 'Paused'\n\ninterface StatusPillProps {\n status: Status\n pulse?: boolean\n}\n\nexport function StatusPill({ status, pulse = false }: StatusPillProps) {\n const key = status.toLowerCase()\n return (\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '2px 9px',\n borderRadius: 'var(--radius-full)',\n fontFamily: 'var(--font-sans)',\n fontSize: 11,\n fontWeight: 600,\n background: `var(--status-${key}-bg)`,\n color: `var(--status-${key}-fg)`,\n whiteSpace: 'nowrap',\n }}>\n <span style={{\n width: 7,\n height: 7,\n borderRadius: 'var(--radius-full)',\n background: `var(--status-${key}-dot)`,\n flexShrink: 0,\n animation: pulse ? 'statusPulse 1.4s ease-out infinite' : 'none',\n }} />\n {status}\n </span>\n )\n}\n"],"mappings":"mCASA,SAAgB,EAAW,CAAE,SAAQ,QAAQ,IAA0B,CACrE,IAAM,EAAM,EAAO,aAAa,CAChC,OACE,EAAA,EAAA,MAAC,OAAD,CAAM,MAAO,CACX,QAAc,cACd,WAAc,SACd,IAAc,EACd,QAAc,UACd,aAAc,qBACd,WAAc,mBACd,SAAc,GACd,WAAc,IACd,WAAc,gBAAgB,EAAI,MAClC,MAAc,gBAAgB,EAAI,MAClC,WAAc,SACf,UAZD,EAaE,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,MAAc,EACd,OAAc,EACd,aAAc,qBACd,WAAc,gBAAgB,EAAI,OAClC,WAAc,EACd,UAAc,EAAQ,qCAAuC,OAC9D,CAAI,CAAA,CACJ,EACI"}
|
package/dist/index4.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
//#region src/components/StatusPill.tsx
|
|
3
|
+
function n({ status: n, pulse: r = !1 }) {
|
|
4
|
+
let i = n.toLowerCase();
|
|
5
|
+
return /* @__PURE__ */ t("span", {
|
|
6
|
+
style: {
|
|
7
|
+
display: "inline-flex",
|
|
8
|
+
alignItems: "center",
|
|
9
|
+
gap: 6,
|
|
10
|
+
padding: "2px 9px",
|
|
11
|
+
borderRadius: "var(--radius-full)",
|
|
12
|
+
fontFamily: "var(--font-sans)",
|
|
13
|
+
fontSize: 11,
|
|
14
|
+
fontWeight: 600,
|
|
15
|
+
background: `var(--status-${i}-bg)`,
|
|
16
|
+
color: `var(--status-${i}-fg)`,
|
|
17
|
+
whiteSpace: "nowrap"
|
|
18
|
+
},
|
|
19
|
+
children: [/* @__PURE__ */ e("span", { style: {
|
|
20
|
+
width: 7,
|
|
21
|
+
height: 7,
|
|
22
|
+
borderRadius: "var(--radius-full)",
|
|
23
|
+
background: `var(--status-${i}-dot)`,
|
|
24
|
+
flexShrink: 0,
|
|
25
|
+
animation: r ? "statusPulse 1.4s ease-out infinite" : "none"
|
|
26
|
+
} }), n]
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { n as StatusPill };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=index4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index4.js","names":[],"sources":["../src/components/StatusPill.tsx"],"sourcesContent":["type Status =\n | 'Published' | 'Draft' | 'Archived'\n | 'Running' | 'Completed' | 'Failed' | 'Paused'\n\ninterface StatusPillProps {\n status: Status\n pulse?: boolean\n}\n\nexport function StatusPill({ status, pulse = false }: StatusPillProps) {\n const key = status.toLowerCase()\n return (\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '2px 9px',\n borderRadius: 'var(--radius-full)',\n fontFamily: 'var(--font-sans)',\n fontSize: 11,\n fontWeight: 600,\n background: `var(--status-${key}-bg)`,\n color: `var(--status-${key}-fg)`,\n whiteSpace: 'nowrap',\n }}>\n <span style={{\n width: 7,\n height: 7,\n borderRadius: 'var(--radius-full)',\n background: `var(--status-${key}-dot)`,\n flexShrink: 0,\n animation: pulse ? 'statusPulse 1.4s ease-out infinite' : 'none',\n }} />\n {status}\n </span>\n )\n}\n"],"mappings":";;AASA,SAAgB,EAAW,EAAE,WAAQ,WAAQ,MAA0B;CACrE,IAAM,IAAM,EAAO,aAAa;AAChC,QACE,kBAAC,QAAD;EAAM,OAAO;GACX,SAAc;GACd,YAAc;GACd,KAAc;GACd,SAAc;GACd,cAAc;GACd,YAAc;GACd,UAAc;GACd,YAAc;GACd,YAAc,gBAAgB,EAAI;GAClC,OAAc,gBAAgB,EAAI;GAClC,YAAc;GACf;YAZD,CAaE,kBAAC,QAAD,EAAM,OAAO;GACX,OAAc;GACd,QAAc;GACd,cAAc;GACd,YAAc,gBAAgB,EAAI;GAClC,YAAc;GACd,WAAc,IAAQ,uCAAuC;GAC9D,EAAI,CAAA,EACJ,EACI"}
|
package/dist/index5.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`),t=require(`react/jsx-runtime`);function n({children:n,interactive:r=!1,padding:i=`18px 20px`,style:a,...o}){let[s,c]=(0,e.useState)(!1);return(0,t.jsx)(`div`,{onMouseEnter:()=>r&&c(!0),onMouseLeave:()=>r&&c(!1),style:{background:s&&r?`#fff8e5`:`var(--c-surface)`,border:`1px solid ${s?`var(--c-border-strong)`:`var(--c-border)`}`,borderLeft:r?`3px solid ${s?`var(--c-amber)`:`var(--c-border)`}`:`1px solid ${s?`var(--c-border-strong)`:`var(--c-border)`}`,borderRadius:`var(--radius-lg)`,padding:i,boxShadow:s?`var(--shadow-sm)`:`none`,transition:`border-color 160ms, box-shadow 160ms, background 160ms`,cursor:r?`pointer`:`default`,...a},...o,children:n})}exports.Card=n;
|
|
2
|
+
//# sourceMappingURL=index5.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index5.cjs","names":[],"sources":["../src/components/Card.tsx"],"sourcesContent":["import { useState, type ReactNode, type HTMLAttributes } from 'react'\n\ninterface CardProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n /** Show amber left-border accent and subtle bg shift on hover */\n interactive?: boolean\n padding?: string\n}\n\nexport function Card({ children, interactive = false, padding = '18px 20px', style, ...rest }: CardProps) {\n const [hovered, setHovered] = useState(false)\n\n return (\n <div\n onMouseEnter={() => interactive && setHovered(true)}\n onMouseLeave={() => interactive && setHovered(false)}\n style={{\n background: hovered && interactive ? '#fff8e5' : 'var(--c-surface)',\n border: `1px solid ${hovered ? 'var(--c-border-strong)' : 'var(--c-border)'}`,\n borderLeft: interactive\n ? `3px solid ${hovered ? 'var(--c-amber)' : 'var(--c-border)'}`\n : `1px solid ${hovered ? 'var(--c-border-strong)' : 'var(--c-border)'}`,\n borderRadius: 'var(--radius-lg)',\n padding,\n boxShadow: hovered ? 'var(--shadow-sm)' : 'none',\n transition: 'border-color 160ms, box-shadow 160ms, background 160ms',\n cursor: interactive ? 'pointer' : 'default',\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n )\n}\n"],"mappings":"sDASA,SAAgB,EAAK,CAAE,WAAU,cAAc,GAAO,UAAU,YAAa,QAAO,GAAG,GAAmB,CACxG,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CAE7C,OACE,EAAA,EAAA,KAAC,MAAD,CACE,iBAAoB,GAAe,EAAW,GAAK,CACnD,iBAAoB,GAAe,EAAW,GAAM,CACpD,MAAO,CACL,WAAc,GAAW,EAAc,UAAY,mBACnD,OAAc,aAAa,EAAU,yBAA2B,oBAChE,WAAc,EACV,aAAa,EAAU,iBAAmB,oBAC1C,aAAa,EAAU,yBAA2B,oBACtD,aAAc,mBACd,UACA,UAAc,EAAU,mBAAqB,OAC7C,WAAc,yDACd,OAAc,EAAc,UAAY,UACxC,GAAG,EACJ,CACD,GAAI,EAEH,WACG,CAAA"}
|
package/dist/index5.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Card.tsx
|
|
4
|
+
function n({ children: n, interactive: r = !1, padding: i = "18px 20px", style: a, ...o }) {
|
|
5
|
+
let [s, c] = e(!1);
|
|
6
|
+
return /* @__PURE__ */ t("div", {
|
|
7
|
+
onMouseEnter: () => r && c(!0),
|
|
8
|
+
onMouseLeave: () => r && c(!1),
|
|
9
|
+
style: {
|
|
10
|
+
background: s && r ? "#fff8e5" : "var(--c-surface)",
|
|
11
|
+
border: `1px solid ${s ? "var(--c-border-strong)" : "var(--c-border)"}`,
|
|
12
|
+
borderLeft: r ? `3px solid ${s ? "var(--c-amber)" : "var(--c-border)"}` : `1px solid ${s ? "var(--c-border-strong)" : "var(--c-border)"}`,
|
|
13
|
+
borderRadius: "var(--radius-lg)",
|
|
14
|
+
padding: i,
|
|
15
|
+
boxShadow: s ? "var(--shadow-sm)" : "none",
|
|
16
|
+
transition: "border-color 160ms, box-shadow 160ms, background 160ms",
|
|
17
|
+
cursor: r ? "pointer" : "default",
|
|
18
|
+
...a
|
|
19
|
+
},
|
|
20
|
+
...o,
|
|
21
|
+
children: n
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { n as Card };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=index5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index5.js","names":[],"sources":["../src/components/Card.tsx"],"sourcesContent":["import { useState, type ReactNode, type HTMLAttributes } from 'react'\n\ninterface CardProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n /** Show amber left-border accent and subtle bg shift on hover */\n interactive?: boolean\n padding?: string\n}\n\nexport function Card({ children, interactive = false, padding = '18px 20px', style, ...rest }: CardProps) {\n const [hovered, setHovered] = useState(false)\n\n return (\n <div\n onMouseEnter={() => interactive && setHovered(true)}\n onMouseLeave={() => interactive && setHovered(false)}\n style={{\n background: hovered && interactive ? '#fff8e5' : 'var(--c-surface)',\n border: `1px solid ${hovered ? 'var(--c-border-strong)' : 'var(--c-border)'}`,\n borderLeft: interactive\n ? `3px solid ${hovered ? 'var(--c-amber)' : 'var(--c-border)'}`\n : `1px solid ${hovered ? 'var(--c-border-strong)' : 'var(--c-border)'}`,\n borderRadius: 'var(--radius-lg)',\n padding,\n boxShadow: hovered ? 'var(--shadow-sm)' : 'none',\n transition: 'border-color 160ms, box-shadow 160ms, background 160ms',\n cursor: interactive ? 'pointer' : 'default',\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n )\n}\n"],"mappings":";;;AASA,SAAgB,EAAK,EAAE,aAAU,iBAAc,IAAO,aAAU,aAAa,UAAO,GAAG,KAAmB;CACxG,IAAM,CAAC,GAAS,KAAc,EAAS,GAAM;AAE7C,QACE,kBAAC,OAAD;EACE,oBAAoB,KAAe,EAAW,GAAK;EACnD,oBAAoB,KAAe,EAAW,GAAM;EACpD,OAAO;GACL,YAAc,KAAW,IAAc,YAAY;GACnD,QAAc,aAAa,IAAU,2BAA2B;GAChE,YAAc,IACV,aAAa,IAAU,mBAAmB,sBAC1C,aAAa,IAAU,2BAA2B;GACtD,cAAc;GACd;GACA,WAAc,IAAU,qBAAqB;GAC7C,YAAc;GACd,QAAc,IAAc,YAAY;GACxC,GAAG;GACJ;EACD,GAAI;EAEH;EACG,CAAA"}
|
package/dist/index6.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react/jsx-runtime`);function t({children:t}){return(0,e.jsx)(`span`,{style:{display:`inline-block`,padding:`2px 8px`,background:`var(--color-neutral-50)`,color:`var(--c-brown)`,fontSize:10.5,fontWeight:600,fontFamily:`var(--font-sans)`,borderRadius:`var(--radius-sm)`,letterSpacing:.2,whiteSpace:`nowrap`},children:t})}exports.Tag=t;
|
|
2
|
+
//# sourceMappingURL=index6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index6.cjs","names":[],"sources":["../src/components/Tag.tsx"],"sourcesContent":["interface TagProps {\n children: string\n}\n\nexport function Tag({ children }: TagProps) {\n return (\n <span style={{\n display: 'inline-block',\n padding: '2px 8px',\n background: 'var(--color-neutral-50)',\n color: 'var(--c-brown)',\n fontSize: 10.5,\n fontWeight: 600,\n fontFamily: 'var(--font-sans)',\n borderRadius: 'var(--radius-sm)',\n letterSpacing: 0.2,\n whiteSpace: 'nowrap',\n }}>\n {children}\n </span>\n )\n}\n"],"mappings":"mCAIA,SAAgB,EAAI,CAAE,YAAsB,CAC1C,OACE,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,QAAc,eACd,QAAc,UACd,WAAc,0BACd,MAAc,iBACd,SAAc,KACd,WAAc,IACd,WAAc,mBACd,aAAc,mBACd,cAAe,GACf,WAAc,SACf,CACE,WACI,CAAA"}
|
package/dist/index6.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
//#region src/components/Tag.tsx
|
|
3
|
+
function t({ children: t }) {
|
|
4
|
+
return /* @__PURE__ */ e("span", {
|
|
5
|
+
style: {
|
|
6
|
+
display: "inline-block",
|
|
7
|
+
padding: "2px 8px",
|
|
8
|
+
background: "var(--color-neutral-50)",
|
|
9
|
+
color: "var(--c-brown)",
|
|
10
|
+
fontSize: 10.5,
|
|
11
|
+
fontWeight: 600,
|
|
12
|
+
fontFamily: "var(--font-sans)",
|
|
13
|
+
borderRadius: "var(--radius-sm)",
|
|
14
|
+
letterSpacing: .2,
|
|
15
|
+
whiteSpace: "nowrap"
|
|
16
|
+
},
|
|
17
|
+
children: t
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { t as Tag };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=index6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index6.js","names":[],"sources":["../src/components/Tag.tsx"],"sourcesContent":["interface TagProps {\n children: string\n}\n\nexport function Tag({ children }: TagProps) {\n return (\n <span style={{\n display: 'inline-block',\n padding: '2px 8px',\n background: 'var(--color-neutral-50)',\n color: 'var(--c-brown)',\n fontSize: 10.5,\n fontWeight: 600,\n fontFamily: 'var(--font-sans)',\n borderRadius: 'var(--radius-sm)',\n letterSpacing: 0.2,\n whiteSpace: 'nowrap',\n }}>\n {children}\n </span>\n )\n}\n"],"mappings":";;AAIA,SAAgB,EAAI,EAAE,eAAsB;AAC1C,QACE,kBAAC,QAAD;EAAM,OAAO;GACX,SAAc;GACd,SAAc;GACd,YAAc;GACd,OAAc;GACd,UAAc;GACd,YAAc;GACd,YAAc;GACd,cAAc;GACd,eAAe;GACf,YAAc;GACf;EACE;EACI,CAAA"}
|
package/dist/index7.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react`),t=require(`react/jsx-runtime`);function n({label:n,hint:r,error:i,prefix:a,style:o,...s}){let[c,l]=(0,e.useState)(!1),u=i?`oklch(55% 0.18 25)`:c?`var(--c-text)`:`var(--color-neutral-300)`,d=i?`0 0 0 3px oklch(95% 0.04 25)`:c?`0 0 0 3px var(--c-border)`:`none`;return(0,t.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:5},children:[n&&(0,t.jsx)(`label`,{style:{fontFamily:`var(--font-sans)`,fontSize:13,fontWeight:600,color:`var(--c-text)`,lineHeight:1.4},children:n}),(0,t.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,border:`1.5px solid ${u}`,borderRadius:`var(--radius-md)`,background:`var(--c-surface)`,boxShadow:d,transition:`border-color 0.15s, box-shadow 0.15s`,overflow:`hidden`},children:[a&&(0,t.jsx)(`span`,{style:{padding:`0 10px`,color:`var(--c-text-muted)`,fontFamily:`var(--font-sans)`,fontSize:14,borderRight:`1px solid var(--c-border)`,alignSelf:`stretch`,display:`flex`,alignItems:`center`},children:a}),(0,t.jsx)(`input`,{onFocus:e=>{l(!0),s.onFocus?.(e)},onBlur:e=>{l(!1),s.onBlur?.(e)},style:{flex:1,padding:`9px 12px`,border:`none`,outline:`none`,background:`transparent`,fontFamily:`var(--font-sans)`,fontSize:14,color:`var(--c-text)`,...o},...s})]}),(i||r)&&(0,t.jsx)(`span`,{style:{fontFamily:`var(--font-sans)`,fontSize:12,lineHeight:1.4,color:i?`oklch(55% 0.18 25)`:`var(--c-text-muted)`},children:i??r})]})}exports.Input=n;
|
|
2
|
+
//# sourceMappingURL=index7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index7.cjs","names":[],"sources":["../src/components/Input.tsx"],"sourcesContent":["import { useState, type InputHTMLAttributes, type ReactNode } from 'react'\n\ninterface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix'> {\n label?: string\n hint?: string\n error?: string\n prefix?: ReactNode\n}\n\nexport function Input({ label, hint, error, prefix, style, ...rest }: InputProps) {\n const [focused, setFocused] = useState(false)\n\n const borderColor = error\n ? 'oklch(55% 0.18 25)'\n : focused\n ? 'var(--c-text)'\n : 'var(--color-neutral-300)'\n\n const focusShadow = error\n ? '0 0 0 3px oklch(95% 0.04 25)'\n : focused\n ? '0 0 0 3px var(--c-border)'\n : 'none'\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 5 }}>\n {label && (\n <label style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--c-text)',\n lineHeight: 1.4,\n }}>\n {label}\n </label>\n )}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n border: `1.5px solid ${borderColor}`,\n borderRadius: 'var(--radius-md)',\n background: 'var(--c-surface)',\n boxShadow: focusShadow,\n transition: 'border-color 0.15s, box-shadow 0.15s',\n overflow: 'hidden',\n }}>\n {prefix && (\n <span style={{\n padding: '0 10px',\n color: 'var(--c-text-muted)',\n fontFamily: 'var(--font-sans)',\n fontSize: 14,\n borderRight: '1px solid var(--c-border)',\n alignSelf: 'stretch',\n display: 'flex',\n alignItems: 'center',\n }}>\n {prefix}\n </span>\n )}\n <input\n onFocus={e => { setFocused(true); rest.onFocus?.(e) }}\n onBlur={e => { setFocused(false); rest.onBlur?.(e) }}\n style={{\n flex: 1,\n padding: '9px 12px',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n fontFamily: 'var(--font-sans)',\n fontSize: 14,\n color: 'var(--c-text)',\n ...style,\n }}\n {...rest}\n />\n </div>\n {(error || hint) && (\n <span style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 12,\n lineHeight: 1.4,\n color: error ? 'oklch(55% 0.18 25)' : 'var(--c-text-muted)',\n }}>\n {error ?? hint}\n </span>\n )}\n </div>\n )\n}\n"],"mappings":"sDASA,SAAgB,EAAM,CAAE,QAAO,OAAM,QAAO,SAAQ,QAAO,GAAG,GAAoB,CAChF,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CAEvC,EAAc,EAChB,qBACA,EACA,gBACA,2BAEE,EAAc,EAChB,+BACA,EACA,4BACA,OAEJ,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,EAAG,UAAhE,CACG,IACC,EAAA,EAAA,KAAC,QAAD,CAAO,MAAO,CACZ,WAAY,mBACZ,SAAY,GACZ,WAAY,IACZ,MAAY,gBACZ,WAAY,IACb,UACE,EACK,CAAA,EAEV,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CACV,QAAc,OACd,WAAc,SACd,OAAc,eAAe,IAC7B,aAAc,mBACd,WAAc,mBACd,UAAc,EACd,WAAc,uCACd,SAAc,SACf,UATD,CAUG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,QAAc,SACd,MAAc,sBACd,WAAc,mBACd,SAAc,GACd,YAAc,4BACd,UAAc,UACd,QAAc,OACd,WAAc,SACf,UACE,EACI,CAAA,EAET,EAAA,EAAA,KAAC,QAAD,CACE,QAAS,GAAK,CAAE,EAAW,GAAK,CAAE,EAAK,UAAU,EAAE,EACnD,OAAQ,GAAK,CAAE,EAAW,GAAM,CAAE,EAAK,SAAS,EAAE,EAClD,MAAO,CACL,KAAY,EACZ,QAAY,WACZ,OAAY,OACZ,QAAY,OACZ,WAAY,cACZ,WAAY,mBACZ,SAAY,GACZ,MAAY,gBACZ,GAAG,EACJ,CACD,GAAI,EACJ,CAAA,CACE,IACJ,GAAS,KACT,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,WAAY,mBACZ,SAAY,GACZ,WAAY,IACZ,MAAY,EAAQ,qBAAuB,sBAC5C,UACE,GAAS,EACL,CAAA,CAEL"}
|
package/dist/index7.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Input.tsx
|
|
4
|
+
function r({ label: r, hint: i, error: a, prefix: o, style: s, ...c }) {
|
|
5
|
+
let [l, u] = e(!1), d = a ? "oklch(55% 0.18 25)" : l ? "var(--c-text)" : "var(--color-neutral-300)", f = a ? "0 0 0 3px oklch(95% 0.04 25)" : l ? "0 0 0 3px var(--c-border)" : "none";
|
|
6
|
+
return /* @__PURE__ */ n("div", {
|
|
7
|
+
style: {
|
|
8
|
+
display: "flex",
|
|
9
|
+
flexDirection: "column",
|
|
10
|
+
gap: 5
|
|
11
|
+
},
|
|
12
|
+
children: [
|
|
13
|
+
r && /* @__PURE__ */ t("label", {
|
|
14
|
+
style: {
|
|
15
|
+
fontFamily: "var(--font-sans)",
|
|
16
|
+
fontSize: 13,
|
|
17
|
+
fontWeight: 600,
|
|
18
|
+
color: "var(--c-text)",
|
|
19
|
+
lineHeight: 1.4
|
|
20
|
+
},
|
|
21
|
+
children: r
|
|
22
|
+
}),
|
|
23
|
+
/* @__PURE__ */ n("div", {
|
|
24
|
+
style: {
|
|
25
|
+
display: "flex",
|
|
26
|
+
alignItems: "center",
|
|
27
|
+
border: `1.5px solid ${d}`,
|
|
28
|
+
borderRadius: "var(--radius-md)",
|
|
29
|
+
background: "var(--c-surface)",
|
|
30
|
+
boxShadow: f,
|
|
31
|
+
transition: "border-color 0.15s, box-shadow 0.15s",
|
|
32
|
+
overflow: "hidden"
|
|
33
|
+
},
|
|
34
|
+
children: [o && /* @__PURE__ */ t("span", {
|
|
35
|
+
style: {
|
|
36
|
+
padding: "0 10px",
|
|
37
|
+
color: "var(--c-text-muted)",
|
|
38
|
+
fontFamily: "var(--font-sans)",
|
|
39
|
+
fontSize: 14,
|
|
40
|
+
borderRight: "1px solid var(--c-border)",
|
|
41
|
+
alignSelf: "stretch",
|
|
42
|
+
display: "flex",
|
|
43
|
+
alignItems: "center"
|
|
44
|
+
},
|
|
45
|
+
children: o
|
|
46
|
+
}), /* @__PURE__ */ t("input", {
|
|
47
|
+
onFocus: (e) => {
|
|
48
|
+
u(!0), c.onFocus?.(e);
|
|
49
|
+
},
|
|
50
|
+
onBlur: (e) => {
|
|
51
|
+
u(!1), c.onBlur?.(e);
|
|
52
|
+
},
|
|
53
|
+
style: {
|
|
54
|
+
flex: 1,
|
|
55
|
+
padding: "9px 12px",
|
|
56
|
+
border: "none",
|
|
57
|
+
outline: "none",
|
|
58
|
+
background: "transparent",
|
|
59
|
+
fontFamily: "var(--font-sans)",
|
|
60
|
+
fontSize: 14,
|
|
61
|
+
color: "var(--c-text)",
|
|
62
|
+
...s
|
|
63
|
+
},
|
|
64
|
+
...c
|
|
65
|
+
})]
|
|
66
|
+
}),
|
|
67
|
+
(a || i) && /* @__PURE__ */ t("span", {
|
|
68
|
+
style: {
|
|
69
|
+
fontFamily: "var(--font-sans)",
|
|
70
|
+
fontSize: 12,
|
|
71
|
+
lineHeight: 1.4,
|
|
72
|
+
color: a ? "oklch(55% 0.18 25)" : "var(--c-text-muted)"
|
|
73
|
+
},
|
|
74
|
+
children: a ?? i
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { r as Input };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=index7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index7.js","names":[],"sources":["../src/components/Input.tsx"],"sourcesContent":["import { useState, type InputHTMLAttributes, type ReactNode } from 'react'\n\ninterface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix'> {\n label?: string\n hint?: string\n error?: string\n prefix?: ReactNode\n}\n\nexport function Input({ label, hint, error, prefix, style, ...rest }: InputProps) {\n const [focused, setFocused] = useState(false)\n\n const borderColor = error\n ? 'oklch(55% 0.18 25)'\n : focused\n ? 'var(--c-text)'\n : 'var(--color-neutral-300)'\n\n const focusShadow = error\n ? '0 0 0 3px oklch(95% 0.04 25)'\n : focused\n ? '0 0 0 3px var(--c-border)'\n : 'none'\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 5 }}>\n {label && (\n <label style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--c-text)',\n lineHeight: 1.4,\n }}>\n {label}\n </label>\n )}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n border: `1.5px solid ${borderColor}`,\n borderRadius: 'var(--radius-md)',\n background: 'var(--c-surface)',\n boxShadow: focusShadow,\n transition: 'border-color 0.15s, box-shadow 0.15s',\n overflow: 'hidden',\n }}>\n {prefix && (\n <span style={{\n padding: '0 10px',\n color: 'var(--c-text-muted)',\n fontFamily: 'var(--font-sans)',\n fontSize: 14,\n borderRight: '1px solid var(--c-border)',\n alignSelf: 'stretch',\n display: 'flex',\n alignItems: 'center',\n }}>\n {prefix}\n </span>\n )}\n <input\n onFocus={e => { setFocused(true); rest.onFocus?.(e) }}\n onBlur={e => { setFocused(false); rest.onBlur?.(e) }}\n style={{\n flex: 1,\n padding: '9px 12px',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n fontFamily: 'var(--font-sans)',\n fontSize: 14,\n color: 'var(--c-text)',\n ...style,\n }}\n {...rest}\n />\n </div>\n {(error || hint) && (\n <span style={{\n fontFamily: 'var(--font-sans)',\n fontSize: 12,\n lineHeight: 1.4,\n color: error ? 'oklch(55% 0.18 25)' : 'var(--c-text-muted)',\n }}>\n {error ?? hint}\n </span>\n )}\n </div>\n )\n}\n"],"mappings":";;;AASA,SAAgB,EAAM,EAAE,UAAO,SAAM,UAAO,WAAQ,UAAO,GAAG,KAAoB;CAChF,IAAM,CAAC,GAAS,KAAc,EAAS,GAAM,EAEvC,IAAc,IAChB,uBACA,IACA,kBACA,4BAEE,IAAc,IAChB,iCACA,IACA,8BACA;AAEJ,QACE,kBAAC,OAAD;EAAK,OAAO;GAAE,SAAS;GAAQ,eAAe;GAAU,KAAK;GAAG;YAAhE;GACG,KACC,kBAAC,SAAD;IAAO,OAAO;KACZ,YAAY;KACZ,UAAY;KACZ,YAAY;KACZ,OAAY;KACZ,YAAY;KACb;cACE;IACK,CAAA;GAEV,kBAAC,OAAD;IAAK,OAAO;KACV,SAAc;KACd,YAAc;KACd,QAAc,eAAe;KAC7B,cAAc;KACd,YAAc;KACd,WAAc;KACd,YAAc;KACd,UAAc;KACf;cATD,CAUG,KACC,kBAAC,QAAD;KAAM,OAAO;MACX,SAAc;MACd,OAAc;MACd,YAAc;MACd,UAAc;MACd,aAAc;MACd,WAAc;MACd,SAAc;MACd,YAAc;MACf;eACE;KACI,CAAA,EAET,kBAAC,SAAD;KACE,UAAS,MAAK;AAAoB,MAAlB,EAAW,GAAK,EAAE,EAAK,UAAU,EAAE;;KACnD,SAAQ,MAAK;AAAqB,MAAnB,EAAW,GAAM,EAAE,EAAK,SAAS,EAAE;;KAClD,OAAO;MACL,MAAY;MACZ,SAAY;MACZ,QAAY;MACZ,SAAY;MACZ,YAAY;MACZ,YAAY;MACZ,UAAY;MACZ,OAAY;MACZ,GAAG;MACJ;KACD,GAAI;KACJ,CAAA,CACE;;IACJ,KAAS,MACT,kBAAC,QAAD;IAAM,OAAO;KACX,YAAY;KACZ,UAAY;KACZ,YAAY;KACZ,OAAY,IAAQ,uBAAuB;KAC5C;cACE,KAAS;IACL,CAAA;GAEL"}
|
package/dist/index8.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
let e=require(`react/jsx-runtime`);function t({title:t,group:n,subtitle:r,icon:i,actions:a}){return(0,e.jsxs)(`div`,{style:{marginBottom:28},children:[(0,e.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:16,flexWrap:`wrap`,marginBottom:r?6:0},children:[(0,e.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,flexWrap:`wrap`,minWidth:0},children:[i&&(0,e.jsx)(`span`,{style:{color:`var(--c-text-subtle)`,display:`inline-flex`,flexShrink:0},children:i}),(0,e.jsx)(`h1`,{style:{fontFamily:`var(--font-sans)`,fontSize:20,fontWeight:700,color:`var(--c-text)`,lineHeight:1.2,margin:0,letterSpacing:`-0.01em`},children:t}),n&&(0,e.jsx)(`span`,{style:{fontFamily:`var(--font-sans)`,fontSize:10.5,fontWeight:600,color:`var(--c-text-subtle)`,background:`var(--color-neutral-100)`,padding:`2px 8px`,borderRadius:10,textTransform:`uppercase`,letterSpacing:`0.05em`,whiteSpace:`nowrap`},children:n})]}),a&&(0,e.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexShrink:0},children:a})]}),r&&(0,e.jsx)(`p`,{style:{fontFamily:`var(--font-sans)`,fontSize:14,color:`var(--c-text-secondary)`,lineHeight:1.55,margin:0,maxWidth:560},children:r}),(0,e.jsx)(`div`,{style:{marginTop:20,height:1,background:`var(--c-border)`}})]})}exports.PageHeader=t;
|
|
2
|
+
//# sourceMappingURL=index8.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index8.cjs","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":"mCAWA,SAAgB,EAAW,CAAE,QAAO,QAAO,WAAU,OAAM,WAA4B,CACrF,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,aAAc,GAAI,UAAhC,EAEE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CACV,QAAgB,OAChB,WAAgB,SAChB,eAAgB,gBAChB,IAAgB,GAChB,SAAgB,OAChB,aAAgB,EAAW,EAAI,EAChC,UAPD,EASE,EAAA,EAAA,MAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,GAAI,SAAU,OAAQ,SAAU,EAAG,UAA7F,CACG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,MAAa,uBACb,QAAa,cACb,WAAa,EACd,UACE,EACI,CAAA,EAGT,EAAA,EAAA,KAAC,KAAD,CAAI,MAAO,CACT,WAAe,mBACf,SAAe,GACf,WAAe,IACf,MAAe,gBACf,WAAe,IACf,OAAe,EACf,cAAe,UAChB,UACE,EACE,CAAA,CAEJ,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,MAAO,CACX,WAAe,mBACf,SAAe,KACf,WAAe,IACf,MAAe,uBACf,WAAe,2BACf,QAAe,UACf,aAAe,GACf,cAAe,YACf,cAAe,SACf,WAAe,SAChB,UACE,EACI,CAAA,CAEL,GAGL,IACC,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,WAAY,EAAG,UACzE,EACG,CAAA,CAEJ,GAGL,IACC,EAAA,EAAA,KAAC,IAAD,CAAG,MAAO,CACR,WAAa,mBACb,SAAa,GACb,MAAa,0BACb,WAAa,KACb,OAAa,EACb,SAAa,IACd,UACE,EACC,CAAA,EAIN,EAAA,EAAA,KAAC,MAAD,CAAK,MAAO,CACV,UAAa,GACb,OAAa,EACb,WAAa,kBACd,CAAI,CAAA,CACD"}
|