@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.
Files changed (96) hide show
  1. package/dist/index.cjs +1 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +19 -0
  4. package/dist/index10.cjs +2 -0
  5. package/dist/index10.cjs.map +1 -0
  6. package/dist/index10.js +289 -0
  7. package/dist/index10.js.map +1 -0
  8. package/dist/index11.cjs +2 -0
  9. package/dist/index11.cjs.map +1 -0
  10. package/dist/index11.js +52 -0
  11. package/dist/index11.js.map +1 -0
  12. package/dist/index12.cjs +2 -0
  13. package/dist/index12.cjs.map +1 -0
  14. package/dist/index12.js +133 -0
  15. package/dist/index12.js.map +1 -0
  16. package/dist/index13.cjs +2 -0
  17. package/dist/index13.cjs.map +1 -0
  18. package/dist/index13.js +150 -0
  19. package/dist/index13.js.map +1 -0
  20. package/dist/index14.cjs +2 -0
  21. package/dist/index14.cjs.map +1 -0
  22. package/dist/index14.js +100 -0
  23. package/dist/index14.js.map +1 -0
  24. package/dist/index15.cjs +2 -0
  25. package/dist/index15.cjs.map +1 -0
  26. package/dist/index15.js +35 -0
  27. package/dist/index15.js.map +1 -0
  28. package/dist/index16.cjs +2 -0
  29. package/dist/index16.cjs.map +1 -0
  30. package/dist/index16.js +330 -0
  31. package/dist/index16.js.map +1 -0
  32. package/dist/index17.cjs +2 -0
  33. package/dist/index17.cjs.map +1 -0
  34. package/dist/index17.js +114 -0
  35. package/dist/index17.js.map +1 -0
  36. package/dist/index18.cjs +2 -0
  37. package/dist/index18.cjs.map +1 -0
  38. package/dist/index18.js +110 -0
  39. package/dist/index18.js.map +1 -0
  40. package/dist/index19.cjs +2 -0
  41. package/dist/index19.cjs.map +1 -0
  42. package/dist/index19.js +24 -0
  43. package/dist/index19.js.map +1 -0
  44. package/dist/index2.cjs +2 -0
  45. package/dist/index2.cjs.map +1 -0
  46. package/dist/index2.js +90 -0
  47. package/dist/index2.js.map +1 -0
  48. package/dist/index3.cjs +2 -0
  49. package/dist/index3.cjs.map +1 -0
  50. package/dist/index3.js +71 -0
  51. package/dist/index3.js.map +1 -0
  52. package/dist/index4.cjs +2 -0
  53. package/dist/index4.cjs.map +1 -0
  54. package/dist/index4.js +32 -0
  55. package/dist/index4.js.map +1 -0
  56. package/dist/index5.cjs +2 -0
  57. package/dist/index5.cjs.map +1 -0
  58. package/dist/index5.js +27 -0
  59. package/dist/index5.js.map +1 -0
  60. package/dist/index6.cjs +2 -0
  61. package/dist/index6.cjs.map +1 -0
  62. package/dist/index6.js +23 -0
  63. package/dist/index6.js.map +1 -0
  64. package/dist/index7.cjs +2 -0
  65. package/dist/index7.cjs.map +1 -0
  66. package/dist/index7.js +82 -0
  67. package/dist/index7.js.map +1 -0
  68. package/dist/index8.cjs +2 -0
  69. package/dist/index8.cjs.map +1 -0
  70. package/dist/index8.js +93 -0
  71. package/dist/index8.js.map +1 -0
  72. package/dist/index9.cjs +2 -0
  73. package/dist/index9.cjs.map +1 -0
  74. package/dist/index9.js +99 -0
  75. package/dist/index9.js.map +1 -0
  76. package/dist/src/components/Badge.d.ts +9 -0
  77. package/dist/src/components/Button.d.ts +11 -0
  78. package/dist/src/components/Card.d.ts +9 -0
  79. package/dist/src/components/Checkbox.d.ts +22 -0
  80. package/dist/src/components/ConfirmDialog.d.ts +13 -0
  81. package/dist/src/components/DropdownMenu.d.ts +24 -0
  82. package/dist/src/components/EmptyState.d.ts +9 -0
  83. package/dist/src/components/Field.d.ts +24 -0
  84. package/dist/src/components/Input.d.ts +9 -0
  85. package/dist/src/components/Modal.d.ts +12 -0
  86. package/dist/src/components/PageHeader.d.ts +11 -0
  87. package/dist/src/components/PreviewBadge.d.ts +8 -0
  88. package/dist/src/components/Select.d.ts +32 -0
  89. package/dist/src/components/Skeleton.d.ts +21 -0
  90. package/dist/src/components/StatusPill.d.ts +7 -0
  91. package/dist/src/components/Table.d.ts +26 -0
  92. package/dist/src/components/Tag.d.ts +5 -0
  93. package/dist/src/components/Toast.d.ts +13 -0
  94. package/dist/src/index.d.ts +21 -0
  95. package/package.json +43 -0
  96. 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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}