@schandlergarcia/sf-web-components 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +2 -0
  2. package/dist/components/library/heroui/Input.d.ts +5 -1
  3. package/dist/components/library/heroui/Input.js +0 -1
  4. package/dist/components/library/heroui/Input.js.map +1 -1
  5. package/dist/components/library/heroui/Kbd.d.ts +6 -5
  6. package/dist/components/library/heroui/Kbd.js +4 -5
  7. package/dist/components/library/heroui/Kbd.js.map +1 -1
  8. package/dist/components/library/heroui/Skeleton.d.ts +8 -5
  9. package/dist/components/library/heroui/Skeleton.js +4 -5
  10. package/dist/components/library/heroui/Skeleton.js.map +1 -1
  11. package/dist/components/library/heroui/Toast.d.ts +6 -3
  12. package/dist/components/library/heroui/Toast.js +3 -4
  13. package/dist/components/library/heroui/Toast.js.map +1 -1
  14. package/dist/components/library/ui/Chip.d.ts +18 -7
  15. package/dist/components/library/ui/Chip.js +11 -12
  16. package/dist/components/library/ui/Chip.js.map +1 -1
  17. package/dist/components/library/ui/Container.d.ts +12 -13
  18. package/dist/components/library/ui/Container.js +16 -17
  19. package/dist/components/library/ui/Container.js.map +1 -1
  20. package/dist/components/library/ui/FieldGroup.d.ts +4 -5
  21. package/dist/components/library/ui/FieldGroup.js +4 -5
  22. package/dist/components/library/ui/FieldGroup.js.map +1 -1
  23. package/dist/components/library/ui/Text.d.ts +24 -10
  24. package/dist/components/library/ui/Text.js +20 -23
  25. package/dist/components/library/ui/Text.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/components/library/heroui/Input.tsx +10 -0
  28. package/src/components/library/heroui/Kbd.tsx +11 -0
  29. package/src/components/library/heroui/Skeleton.tsx +14 -0
  30. package/src/components/library/heroui/{Toast.jsx → Toast.tsx} +5 -2
  31. package/src/components/library/ui/{Chip.jsx → Chip.tsx} +11 -7
  32. package/src/components/library/ui/{Container.jsx → Container.tsx} +13 -4
  33. package/src/components/library/ui/{FieldGroup.jsx → FieldGroup.tsx} +4 -2
  34. package/src/components/library/ui/{Text.jsx → Text.tsx} +19 -12
  35. package/src/components/library/heroui/Input.jsx +0 -6
  36. package/src/components/library/heroui/Kbd.jsx +0 -8
  37. package/src/components/library/heroui/Skeleton.jsx +0 -8
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Reusable Salesforce web components library with Tailwind CSS v4 and shadcn/ui components.
4
4
 
5
+ **🎯 TypeScript Migration in Progress** (v1.4.0): Core UI components now have full TypeScript support with exported prop interfaces. See `docs/TYPESCRIPT_MIGRATION.md` for status and contribution guide.
6
+
5
7
  ## Installation
6
8
 
7
9
  ```bash
@@ -1 +1,5 @@
1
- export default function HeroUIInput(props: any): import("react/jsx-runtime").JSX.Element;
1
+ import type { InputProps } from "@heroui/react";
2
+ export interface HeroUIInputProps extends InputProps {
3
+ }
4
+ export default function HeroUIInput(props: HeroUIInputProps): import("react/jsx-runtime").JSX.Element;
5
+ export type { InputProps };
@@ -1,5 +1,4 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import "react";
3
2
  import { Input as o } from "@heroui/react";
4
3
  function u(r) {
5
4
  return /* @__PURE__ */ t(o, { ...r });
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../src/components/library/heroui/Input.jsx"],"sourcesContent":["import React from \"react\";\nimport { Input } from \"@heroui/react\";\n\nexport default function HeroUIInput(props) {\n return <Input {...props} />;\n}\n"],"names":["HeroUIInput","props","jsx","Input"],"mappings":";;;AAGA,SAAwBA,EAAYC,GAAO;AACzC,SAAO,gBAAAC,EAACC,GAAA,EAAO,GAAGF,EAAA,CAAO;AAC3B;"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/components/library/heroui/Input.tsx"],"sourcesContent":["import { Input } from \"@heroui/react\";\nimport type { InputProps } from \"@heroui/react\";\n\nexport interface HeroUIInputProps extends InputProps {}\n\nexport default function HeroUIInput(props: HeroUIInputProps) {\n return <Input {...props} />;\n}\n\nexport type { InputProps };\n"],"names":["HeroUIInput","props","jsx","Input"],"mappings":";;AAKA,SAAwBA,EAAYC,GAAyB;AAC3D,SAAO,gBAAAC,EAACC,GAAA,EAAO,GAAGF,EAAA,CAAO;AAC3B;"}
@@ -1,6 +1,7 @@
1
- export default function HeroUIKbd({ children, ...props }: {
2
- [x: string]: any;
3
- children: any;
4
- }): import("react/jsx-runtime").JSX.Element;
5
- export { Kbd };
6
1
  import { Kbd } from "@heroui/react";
2
+ import type { KbdProps } from "@heroui/react";
3
+ export interface HeroUIKbdProps extends KbdProps {
4
+ }
5
+ export default function HeroUIKbd({ children, ...props }: HeroUIKbdProps): import("react/jsx-runtime").JSX.Element;
6
+ export { Kbd };
7
+ export type { KbdProps };
@@ -1,12 +1,11 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import "react";
3
- import { Kbd as m } from "@heroui/react";
4
- import { Kbd as n } from "@heroui/react";
2
+ import { Kbd as e } from "@heroui/react";
3
+ import { Kbd as i } from "@heroui/react";
5
4
  function d({ children: r, ...o }) {
6
- return /* @__PURE__ */ t(m, { ...o, children: r });
5
+ return /* @__PURE__ */ t(e, { ...o, children: r });
7
6
  }
8
7
  export {
9
- n as Kbd,
8
+ i as Kbd,
10
9
  d as default
11
10
  };
12
11
  //# sourceMappingURL=Kbd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Kbd.js","sources":["../../../../src/components/library/heroui/Kbd.jsx"],"sourcesContent":["import React from \"react\";\nimport { Kbd } from \"@heroui/react\";\n\nexport default function HeroUIKbd({ children, ...props }) {\n return <Kbd {...props}>{children}</Kbd>;\n}\n\nexport { Kbd };\n"],"names":["HeroUIKbd","children","props","jsx","Kbd"],"mappings":";;;;AAGA,SAAwBA,EAAU,EAAE,UAAAC,GAAU,GAAGC,KAAS;AACxD,SAAO,gBAAAC,EAACC,GAAA,EAAK,GAAGF,GAAQ,UAAAD,EAAA,CAAS;AACnC;"}
1
+ {"version":3,"file":"Kbd.js","sources":["../../../../src/components/library/heroui/Kbd.tsx"],"sourcesContent":["import { Kbd } from \"@heroui/react\";\nimport type { KbdProps } from \"@heroui/react\";\n\nexport interface HeroUIKbdProps extends KbdProps {}\n\nexport default function HeroUIKbd({ children, ...props }: HeroUIKbdProps) {\n return <Kbd {...props}>{children}</Kbd>;\n}\n\nexport { Kbd };\nexport type { KbdProps };\n"],"names":["HeroUIKbd","children","props","jsx","Kbd"],"mappings":";;;AAKA,SAAwBA,EAAU,EAAE,UAAAC,GAAU,GAAGC,KAAyB;AACxE,SAAO,gBAAAC,EAACC,GAAA,EAAK,GAAGF,GAAQ,UAAAD,EAAA,CAAS;AACnC;"}
@@ -1,6 +1,9 @@
1
- export default function HeroUISkeleton({ children, ...props }: {
2
- [x: string]: any;
3
- children: any;
4
- }): import("react/jsx-runtime").JSX.Element;
5
- export { Skeleton };
1
+ import type { ReactNode } from "react";
6
2
  import { Skeleton } from "@heroui/react";
3
+ import type { SkeletonProps } from "@heroui/react";
4
+ export interface HeroUISkeletonProps extends SkeletonProps {
5
+ children?: ReactNode;
6
+ }
7
+ export default function HeroUISkeleton({ children, ...props }: HeroUISkeletonProps): import("react/jsx-runtime").JSX.Element;
8
+ export { Skeleton };
9
+ export type { SkeletonProps };
@@ -1,12 +1,11 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import "react";
3
2
  import { Skeleton as t } from "@heroui/react";
4
- import { Skeleton as k } from "@heroui/react";
5
- function p({ children: o, ...e }) {
3
+ import { Skeleton as i } from "@heroui/react";
4
+ function m({ children: o, ...e }) {
6
5
  return /* @__PURE__ */ r(t, { ...e, children: o });
7
6
  }
8
7
  export {
9
- k as Skeleton,
10
- p as default
8
+ i as Skeleton,
9
+ m as default
11
10
  };
12
11
  //# sourceMappingURL=Skeleton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","sources":["../../../../src/components/library/heroui/Skeleton.jsx"],"sourcesContent":["import React from \"react\";\nimport { Skeleton } from \"@heroui/react\";\n\nexport default function HeroUISkeleton({ children, ...props }) {\n return <Skeleton {...props}>{children}</Skeleton>;\n}\n\nexport { Skeleton };\n"],"names":["HeroUISkeleton","children","props","jsx","Skeleton"],"mappings":";;;;AAGA,SAAwBA,EAAe,EAAE,UAAAC,GAAU,GAAGC,KAAS;AAC7D,SAAO,gBAAAC,EAACC,GAAA,EAAU,GAAGF,GAAQ,UAAAD,EAAA,CAAS;AACxC;"}
1
+ {"version":3,"file":"Skeleton.js","sources":["../../../../src/components/library/heroui/Skeleton.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Skeleton } from \"@heroui/react\";\nimport type { SkeletonProps } from \"@heroui/react\";\n\nexport interface HeroUISkeletonProps extends SkeletonProps {\n children?: ReactNode;\n}\n\nexport default function HeroUISkeleton({ children, ...props }: HeroUISkeletonProps) {\n return <Skeleton {...props}>{children}</Skeleton>;\n}\n\nexport { Skeleton };\nexport type { SkeletonProps };\n"],"names":["HeroUISkeleton","children","props","jsx","Skeleton"],"mappings":";;;AAQA,SAAwBA,EAAe,EAAE,UAAAC,GAAU,GAAGC,KAA8B;AAClF,SAAO,gBAAAC,EAACC,GAAA,EAAU,GAAGF,GAAQ,UAAAD,EAAA,CAAS;AACxC;"}
@@ -1,3 +1,5 @@
1
+ import { Toast, toast } from "@heroui/react";
2
+ import type { ToastProps } from "@heroui/react";
1
3
  /**
2
4
  * HeroUI v3 Toast — notification system.
3
5
  *
@@ -15,7 +17,8 @@
15
17
  * Toast.Title, Toast.Description, Toast.ActionButton,
16
18
  * Toast.CloseButton
17
19
  */
18
- export default function HeroUIToast(props: any): import("react/jsx-runtime").JSX.Element;
19
- import { Toast } from "@heroui/react";
20
- import { toast } from "@heroui/react";
20
+ export interface HeroUIToastProps extends ToastProps {
21
+ }
22
+ export default function HeroUIToast(props: HeroUIToastProps): import("react/jsx-runtime").JSX.Element;
21
23
  export { Toast, toast };
24
+ export type { ToastProps };
@@ -1,13 +1,12 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import "react";
3
2
  import { Toast as r } from "@heroui/react";
4
- import { Toast as i, toast as n } from "@heroui/react";
3
+ import { Toast as p, toast as i } from "@heroui/react";
5
4
  function e(o) {
6
5
  return /* @__PURE__ */ t(r, { ...o });
7
6
  }
8
7
  export {
9
- i as Toast,
8
+ p as Toast,
10
9
  e as default,
11
- n as toast
10
+ i as toast
12
11
  };
13
12
  //# sourceMappingURL=Toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sources":["../../../../src/components/library/heroui/Toast.jsx"],"sourcesContent":["import React from \"react\";\nimport { Toast, toast } from \"@heroui/react\";\n\n/**\n * HeroUI v3 Toast — notification system.\n *\n * SETUP: Add <Toast.Provider /> to your app root (_app.js).\n *\n * Then call the `toast` function from anywhere:\n * toast(\"Event created\");\n * toast.success(\"Saved!\");\n * toast.warning(\"Check settings\");\n * toast.danger(\"Something failed\");\n * toast.promise(asyncFn(), { loading: \"…\", success: \"Done\", error: \"Failed\" });\n *\n * Sub-components via dot notation on the named `Toast` export:\n * Toast.Provider, Toast.Indicator, Toast.Content,\n * Toast.Title, Toast.Description, Toast.ActionButton,\n * Toast.CloseButton\n */\nexport default function HeroUIToast(props) {\n return <Toast {...props} />;\n}\n\nexport { Toast, toast };\n"],"names":["HeroUIToast","props","jsx","Toast"],"mappings":";;;;AAoBA,SAAwBA,EAAYC,GAAO;AACzC,SAAO,gBAAAC,EAACC,GAAA,EAAO,GAAGF,EAAA,CAAO;AAC3B;"}
1
+ {"version":3,"file":"Toast.js","sources":["../../../../src/components/library/heroui/Toast.tsx"],"sourcesContent":["import { Toast, toast } from \"@heroui/react\";\nimport type { ToastProps } from \"@heroui/react\";\n\n/**\n * HeroUI v3 Toast — notification system.\n *\n * SETUP: Add <Toast.Provider /> to your app root (_app.js).\n *\n * Then call the `toast` function from anywhere:\n * toast(\"Event created\");\n * toast.success(\"Saved!\");\n * toast.warning(\"Check settings\");\n * toast.danger(\"Something failed\");\n * toast.promise(asyncFn(), { loading: \"…\", success: \"Done\", error: \"Failed\" });\n *\n * Sub-components via dot notation on the named `Toast` export:\n * Toast.Provider, Toast.Indicator, Toast.Content,\n * Toast.Title, Toast.Description, Toast.ActionButton,\n * Toast.CloseButton\n */\nexport interface HeroUIToastProps extends ToastProps {}\n\nexport default function HeroUIToast(props: HeroUIToastProps) {\n return <Toast {...props} />;\n}\n\nexport { Toast, toast };\nexport type { ToastProps };\n"],"names":["HeroUIToast","props","jsx","Toast"],"mappings":";;;AAsBA,SAAwBA,EAAYC,GAAyB;AAC3D,SAAO,gBAAAC,EAACC,GAAA,EAAO,GAAGF,EAAA,CAAO;AAC3B;"}
@@ -1,7 +1,18 @@
1
- export default function UIChip({ tone, size, className, children, ...rest }: {
2
- [x: string]: any;
3
- tone?: string | undefined;
4
- size?: string | undefined;
5
- className?: string | undefined;
6
- children: any;
7
- }): import("react/jsx-runtime").JSX.Element;
1
+ import * as React from "react";
2
+ declare const TONE_STYLES: {
3
+ readonly neutral: "border-slate-200/80 bg-white/60 text-slate-700 ring-black/5 hover:bg-white/80 dark:border-slate-800/80 dark:bg-slate-950/30 dark:text-slate-200 dark:ring-white/10 dark:hover:bg-slate-900/50";
4
+ readonly primary: "border-brand-200/80 bg-brand-50/70 text-brand-800 ring-brand-900/5 hover:bg-brand-50 dark:border-brand-900/40 dark:bg-brand-950/25 dark:text-brand-200 dark:ring-brand-300/10 dark:hover:bg-brand-950/35";
5
+ readonly success: "border-emerald-200/80 bg-emerald-50/70 text-emerald-800 ring-emerald-900/5 hover:bg-emerald-50 dark:border-emerald-900/40 dark:bg-emerald-950/20 dark:text-emerald-200 dark:ring-emerald-300/10 dark:hover:bg-emerald-950/30";
6
+ readonly warning: "border-amber-200/80 bg-amber-50/70 text-amber-900 ring-amber-900/5 hover:bg-amber-50 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-200 dark:ring-amber-300/10 dark:hover:bg-amber-950/30";
7
+ readonly danger: "border-rose-200/80 bg-rose-50/70 text-rose-900 ring-rose-900/5 hover:bg-rose-50 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200 dark:ring-rose-300/10 dark:hover:bg-rose-950/30";
8
+ };
9
+ declare const SIZE_STYLES: {
10
+ readonly xs: "px-2 py-0.5 text-[11px]";
11
+ readonly sm: "px-2.5 py-1 text-xs";
12
+ };
13
+ export interface UIChipProps extends React.HTMLAttributes<HTMLSpanElement> {
14
+ tone?: keyof typeof TONE_STYLES;
15
+ size?: keyof typeof SIZE_STYLES;
16
+ }
17
+ export default function UIChip({ tone, size, className, children, ...rest }: UIChipProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -1,31 +1,30 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import "react";
3
- const r = {
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ const o = {
4
3
  neutral: "border-slate-200/80 bg-white/60 text-slate-700 ring-black/5 hover:bg-white/80 dark:border-slate-800/80 dark:bg-slate-950/30 dark:text-slate-200 dark:ring-white/10 dark:hover:bg-slate-900/50",
5
4
  primary: "border-brand-200/80 bg-brand-50/70 text-brand-800 ring-brand-900/5 hover:bg-brand-50 dark:border-brand-900/40 dark:bg-brand-950/25 dark:text-brand-200 dark:ring-brand-300/10 dark:hover:bg-brand-950/35",
6
5
  success: "border-emerald-200/80 bg-emerald-50/70 text-emerald-800 ring-emerald-900/5 hover:bg-emerald-50 dark:border-emerald-900/40 dark:bg-emerald-950/20 dark:text-emerald-200 dark:ring-emerald-300/10 dark:hover:bg-emerald-950/30",
7
6
  warning: "border-amber-200/80 bg-amber-50/70 text-amber-900 ring-amber-900/5 hover:bg-amber-50 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-200 dark:ring-amber-300/10 dark:hover:bg-amber-950/30",
8
7
  danger: "border-rose-200/80 bg-rose-50/70 text-rose-900 ring-rose-900/5 hover:bg-rose-50 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200 dark:ring-rose-300/10 dark:hover:bg-rose-950/30"
9
- }, e = {
8
+ }, n = {
10
9
  xs: "px-2 py-0.5 text-[11px]",
11
10
  sm: "px-2.5 py-1 text-xs"
12
11
  };
13
- function l({ tone: a = "neutral", size: d = "xs", className: b = "", children: t, ...o }) {
14
- return /* @__PURE__ */ n(
12
+ function g({ tone: r = "neutral", size: e = "xs", className: a = "", children: d, ...b }) {
13
+ return /* @__PURE__ */ t(
15
14
  "span",
16
15
  {
17
16
  className: [
18
17
  "inline-flex items-center gap-1 rounded-full border font-semibold shadow-sm ring-1 transition",
19
- e[d] ?? e.xs,
20
- r[a] ?? r.neutral,
21
- b
18
+ n[e],
19
+ o[r],
20
+ a
22
21
  ].filter(Boolean).join(" "),
23
- ...o,
24
- children: t
22
+ ...b,
23
+ children: d
25
24
  }
26
25
  );
27
26
  }
28
27
  export {
29
- l as default
28
+ g as default
30
29
  };
31
30
  //# sourceMappingURL=Chip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.js","sources":["../../../../src/components/library/ui/Chip.jsx"],"sourcesContent":["import React from \"react\";\n\nconst TONE_STYLES = {\n neutral:\n \"border-slate-200/80 bg-white/60 text-slate-700 ring-black/5 hover:bg-white/80 dark:border-slate-800/80 dark:bg-slate-950/30 dark:text-slate-200 dark:ring-white/10 dark:hover:bg-slate-900/50\",\n primary:\n \"border-brand-200/80 bg-brand-50/70 text-brand-800 ring-brand-900/5 hover:bg-brand-50 dark:border-brand-900/40 dark:bg-brand-950/25 dark:text-brand-200 dark:ring-brand-300/10 dark:hover:bg-brand-950/35\",\n success:\n \"border-emerald-200/80 bg-emerald-50/70 text-emerald-800 ring-emerald-900/5 hover:bg-emerald-50 dark:border-emerald-900/40 dark:bg-emerald-950/20 dark:text-emerald-200 dark:ring-emerald-300/10 dark:hover:bg-emerald-950/30\",\n warning:\n \"border-amber-200/80 bg-amber-50/70 text-amber-900 ring-amber-900/5 hover:bg-amber-50 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-200 dark:ring-amber-300/10 dark:hover:bg-amber-950/30\",\n danger:\n \"border-rose-200/80 bg-rose-50/70 text-rose-900 ring-rose-900/5 hover:bg-rose-50 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200 dark:ring-rose-300/10 dark:hover:bg-rose-950/30\"\n};\n\nconst SIZE_STYLES = {\n xs: \"px-2 py-0.5 text-[11px]\",\n sm: \"px-2.5 py-1 text-xs\"\n};\n\nexport default function UIChip({ tone = \"neutral\", size = \"xs\", className = \"\", children, ...rest }) {\n return (\n <span\n className={[\n \"inline-flex items-center gap-1 rounded-full border font-semibold shadow-sm ring-1 transition\",\n SIZE_STYLES[size] ?? SIZE_STYLES.xs,\n TONE_STYLES[tone] ?? TONE_STYLES.neutral,\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </span>\n );\n}\n\n"],"names":["TONE_STYLES","SIZE_STYLES","UIChip","tone","size","className","children","rest","jsx"],"mappings":";;AAEA,MAAMA,IAAc;AAAA,EAClB,SACE;AAAA,EACF,SACE;AAAA,EACF,SACE;AAAA,EACF,SACE;AAAA,EACF,QACE;AACJ,GAEMC,IAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,SAAwBC,EAAO,EAAE,MAAAC,IAAO,WAAW,MAAAC,IAAO,MAAM,WAAAC,IAAY,IAAI,UAAAC,GAAU,GAAGC,KAAQ;AACnG,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAP,EAAYG,CAAI,KAAKH,EAAY;AAAA,QACjCD,EAAYG,CAAI,KAAKH,EAAY;AAAA,QACjCK;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"Chip.js","sources":["../../../../src/components/library/ui/Chip.tsx"],"sourcesContent":["import * as React from \"react\";\n\nconst TONE_STYLES = {\n neutral:\n \"border-slate-200/80 bg-white/60 text-slate-700 ring-black/5 hover:bg-white/80 dark:border-slate-800/80 dark:bg-slate-950/30 dark:text-slate-200 dark:ring-white/10 dark:hover:bg-slate-900/50\",\n primary:\n \"border-brand-200/80 bg-brand-50/70 text-brand-800 ring-brand-900/5 hover:bg-brand-50 dark:border-brand-900/40 dark:bg-brand-950/25 dark:text-brand-200 dark:ring-brand-300/10 dark:hover:bg-brand-950/35\",\n success:\n \"border-emerald-200/80 bg-emerald-50/70 text-emerald-800 ring-emerald-900/5 hover:bg-emerald-50 dark:border-emerald-900/40 dark:bg-emerald-950/20 dark:text-emerald-200 dark:ring-emerald-300/10 dark:hover:bg-emerald-950/30\",\n warning:\n \"border-amber-200/80 bg-amber-50/70 text-amber-900 ring-amber-900/5 hover:bg-amber-50 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-200 dark:ring-amber-300/10 dark:hover:bg-amber-950/30\",\n danger:\n \"border-rose-200/80 bg-rose-50/70 text-rose-900 ring-rose-900/5 hover:bg-rose-50 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200 dark:ring-rose-300/10 dark:hover:bg-rose-950/30\"\n} as const;\n\nconst SIZE_STYLES = {\n xs: \"px-2 py-0.5 text-[11px]\",\n sm: \"px-2.5 py-1 text-xs\"\n} as const;\n\nexport interface UIChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n tone?: keyof typeof TONE_STYLES;\n size?: keyof typeof SIZE_STYLES;\n}\n\nexport default function UIChip({ tone = \"neutral\", size = \"xs\", className = \"\", children, ...rest }: UIChipProps) {\n return (\n <span\n className={[\n \"inline-flex items-center gap-1 rounded-full border font-semibold shadow-sm ring-1 transition\",\n SIZE_STYLES[size],\n TONE_STYLES[tone],\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </span>\n );\n}\n"],"names":["TONE_STYLES","SIZE_STYLES","UIChip","tone","size","className","children","rest","jsx"],"mappings":";AAEA,MAAMA,IAAc;AAAA,EAClB,SACE;AAAA,EACF,SACE;AAAA,EACF,SACE;AAAA,EACF,SACE;AAAA,EACF,QACE;AACJ,GAEMC,IAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AACN;AAOA,SAAwBC,EAAO,EAAE,MAAAC,IAAO,WAAW,MAAAC,IAAO,MAAM,WAAAC,IAAY,IAAI,UAAAC,GAAU,GAAGC,KAAqB;AAChH,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAP,EAAYG,CAAI;AAAA,QAChBJ,EAAYG,CAAI;AAAA,QAChBE;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,13 +1,12 @@
1
- export default function UIContainer({ title, subtitle, description, actions, empty, emptyText, emptyIcon, emptyHeight, className, style, children }: {
2
- title: any;
3
- subtitle: any;
4
- description: any;
5
- actions: any;
6
- empty?: boolean | undefined;
7
- emptyText?: string | undefined;
8
- emptyIcon: any;
9
- emptyHeight?: number | undefined;
10
- className?: string | undefined;
11
- style: any;
12
- children: any;
13
- }): import("react/jsx-runtime").JSX.Element;
1
+ import * as React from "react";
2
+ export interface UIContainerProps extends React.HTMLAttributes<HTMLElement> {
3
+ title?: string;
4
+ subtitle?: string;
5
+ description?: string;
6
+ actions?: React.ReactNode;
7
+ empty?: boolean;
8
+ emptyText?: string;
9
+ emptyIcon?: React.ReactNode;
10
+ emptyHeight?: number;
11
+ }
12
+ export default function UIContainer({ title, subtitle, description, actions, empty, emptyText, emptyIcon, emptyHeight, className, style, children }: UIContainerProps): import("react/jsx-runtime").JSX.Element;
@@ -1,42 +1,41 @@
1
1
  import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
- import "react";
3
- import i from "./Text.js";
4
- function N({
2
+ import d from "./Text.js";
3
+ function g({
5
4
  title: r,
6
5
  subtitle: a,
7
- description: m,
6
+ description: n,
8
7
  actions: l,
9
- empty: n = !1,
8
+ empty: m = !1,
10
9
  emptyText: c = "Nothing here yet.",
11
- emptyIcon: d,
12
- emptyHeight: o = 160,
13
- className: h = "",
10
+ emptyIcon: i,
11
+ emptyHeight: h = 160,
12
+ className: o = "",
14
13
  style: f,
15
14
  children: u
16
15
  }) {
17
- const t = a ?? m;
18
- return /* @__PURE__ */ s("section", { className: h, style: f, children: [
16
+ const t = a ?? n;
17
+ return /* @__PURE__ */ s("section", { className: o, style: f, children: [
19
18
  (r || t || l) && /* @__PURE__ */ s("div", { className: "mb-4 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between", children: [
20
19
  /* @__PURE__ */ s("div", { className: "min-w-0", children: [
21
- r && /* @__PURE__ */ e(i, { as: "h2", size: "lg", weight: "bold", className: "truncate", children: r }),
22
- t && /* @__PURE__ */ e(i, { as: "p", size: "sm", muted: !0, className: "mt-1", children: t })
20
+ r && /* @__PURE__ */ e(d, { as: "h2", size: "lg", weight: "bold", className: "truncate", children: r }),
21
+ t && /* @__PURE__ */ e(d, { as: "p", size: "sm", muted: !0, className: "mt-1", children: t })
23
22
  ] }),
24
23
  l && /* @__PURE__ */ e("div", { className: "flex shrink-0 items-center gap-2", children: l })
25
24
  ] }),
26
- n ? /* @__PURE__ */ s(
25
+ m ? /* @__PURE__ */ s(
27
26
  "div",
28
27
  {
29
28
  className: "flex w-full flex-col items-center justify-center rounded-2xl border border-dashed border-slate-300 bg-slate-50 px-6 text-center dark:border-slate-700 dark:bg-slate-900/40",
30
- style: { minHeight: o },
29
+ style: { minHeight: h },
31
30
  children: [
32
- d ? /* @__PURE__ */ e("div", { className: "mb-2", children: d }) : null,
33
- /* @__PURE__ */ e(i, { size: "sm", muted: !0, children: c })
31
+ i ? /* @__PURE__ */ e("div", { className: "mb-2", children: i }) : null,
32
+ /* @__PURE__ */ e(d, { size: "sm", muted: !0, children: c })
34
33
  ]
35
34
  }
36
35
  ) : u
37
36
  ] });
38
37
  }
39
38
  export {
40
- N as default
39
+ g as default
41
40
  };
42
41
  //# sourceMappingURL=Container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sources":["../../../../src/components/library/ui/Container.jsx"],"sourcesContent":["import React from \"react\";\nimport UIText from \"./Text\";\n\nexport default function UIContainer({\n title,\n subtitle,\n description,\n actions,\n empty = false,\n emptyText = \"Nothing here yet.\",\n emptyIcon,\n emptyHeight = 160,\n className = \"\",\n style,\n children\n}) {\n const sub = subtitle ?? description;\n\n return (\n <section className={className} style={style}>\n {(title || sub || actions) && (\n <div className=\"mb-4 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between\">\n <div className=\"min-w-0\">\n {title && (\n <UIText as=\"h2\" size=\"lg\" weight=\"bold\" className=\"truncate\">\n {title}\n </UIText>\n )}\n {sub && (\n <UIText as=\"p\" size=\"sm\" muted className=\"mt-1\">\n {sub}\n </UIText>\n )}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </div>\n )}\n\n {empty ? (\n <div\n className=\"flex w-full flex-col items-center justify-center rounded-2xl border border-dashed border-slate-300 bg-slate-50 px-6 text-center dark:border-slate-700 dark:bg-slate-900/40\"\n style={{ minHeight: emptyHeight }}\n >\n {emptyIcon ? <div className=\"mb-2\">{emptyIcon}</div> : null}\n <UIText size=\"sm\" muted>\n {emptyText}\n </UIText>\n </div>\n ) : (\n children\n )}\n </section>\n );\n}\n\n\n"],"names":["UIContainer","title","subtitle","description","actions","empty","emptyText","emptyIcon","emptyHeight","className","style","children","sub","jsxs","jsx","UIText"],"mappings":";;;AAGA,SAAwBA,EAAY;AAAA,EAClC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AACF,GAAG;AACD,QAAMC,IAAMV,KAAYC;AAExB,SACE,gBAAAU,EAAC,WAAA,EAAQ,WAAAJ,GAAsB,OAAAC,GAC3B,UAAA;AAAA,KAAAT,KAASW,KAAOR,MAChB,gBAAAS,EAAC,OAAA,EAAI,WAAU,wEACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,WACZ,UAAA;AAAA,QAAAZ,KACC,gBAAAa,EAACC,GAAA,EAAO,IAAG,MAAK,MAAK,MAAK,QAAO,QAAO,WAAU,YAC/C,UAAAd,EAAA,CACH;AAAA,QAEDW,KACC,gBAAAE,EAACC,GAAA,EAAO,IAAG,KAAI,MAAK,MAAK,OAAK,IAAC,WAAU,QACtC,UAAAH,EAAA,CACH;AAAA,MAAA,GAEJ;AAAA,MACCR,KAAW,gBAAAU,EAAC,OAAA,EAAI,WAAU,oCAAoC,UAAAV,EAAA,CAAQ;AAAA,IAAA,GACzE;AAAA,IAGDC,IACC,gBAAAQ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,WAAWL,EAAA;AAAA,QAEnB,UAAA;AAAA,UAAAD,IAAY,gBAAAO,EAAC,OAAA,EAAI,WAAU,QAAQ,aAAU,IAAS;AAAA,4BACtDC,GAAA,EAAO,MAAK,MAAK,OAAK,IACpB,UAAAT,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAGFK;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"Container.js","sources":["../../../../src/components/library/ui/Container.tsx"],"sourcesContent":["import * as React from \"react\";\nimport UIText from \"./Text\";\n\nexport interface UIContainerProps extends React.HTMLAttributes<HTMLElement> {\n title?: string;\n subtitle?: string;\n description?: string;\n actions?: React.ReactNode;\n empty?: boolean;\n emptyText?: string;\n emptyIcon?: React.ReactNode;\n emptyHeight?: number;\n}\n\nexport default function UIContainer({\n title,\n subtitle,\n description,\n actions,\n empty = false,\n emptyText = \"Nothing here yet.\",\n emptyIcon,\n emptyHeight = 160,\n className = \"\",\n style,\n children\n}: UIContainerProps) {\n const sub = subtitle ?? description;\n\n return (\n <section className={className} style={style}>\n {(title || sub || actions) && (\n <div className=\"mb-4 flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between\">\n <div className=\"min-w-0\">\n {title && (\n <UIText as=\"h2\" size=\"lg\" weight=\"bold\" className=\"truncate\">\n {title}\n </UIText>\n )}\n {sub && (\n <UIText as=\"p\" size=\"sm\" muted className=\"mt-1\">\n {sub}\n </UIText>\n )}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </div>\n )}\n\n {empty ? (\n <div\n className=\"flex w-full flex-col items-center justify-center rounded-2xl border border-dashed border-slate-300 bg-slate-50 px-6 text-center dark:border-slate-700 dark:bg-slate-900/40\"\n style={{ minHeight: emptyHeight }}\n >\n {emptyIcon ? <div className=\"mb-2\">{emptyIcon}</div> : null}\n <UIText size=\"sm\" muted>\n {emptyText}\n </UIText>\n </div>\n ) : (\n children\n )}\n </section>\n );\n}\n"],"names":["UIContainer","title","subtitle","description","actions","empty","emptyText","emptyIcon","emptyHeight","className","style","children","sub","jsxs","jsx","UIText"],"mappings":";;AAcA,SAAwBA,EAAY;AAAA,EAClC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,UAAAC;AACF,GAAqB;AACnB,QAAMC,IAAMV,KAAYC;AAExB,SACE,gBAAAU,EAAC,WAAA,EAAQ,WAAAJ,GAAsB,OAAAC,GAC3B,UAAA;AAAA,KAAAT,KAASW,KAAOR,MAChB,gBAAAS,EAAC,OAAA,EAAI,WAAU,wEACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,WACZ,UAAA;AAAA,QAAAZ,KACC,gBAAAa,EAACC,GAAA,EAAO,IAAG,MAAK,MAAK,MAAK,QAAO,QAAO,WAAU,YAC/C,UAAAd,EAAA,CACH;AAAA,QAEDW,KACC,gBAAAE,EAACC,GAAA,EAAO,IAAG,KAAI,MAAK,MAAK,OAAK,IAAC,WAAU,QACtC,UAAAH,EAAA,CACH;AAAA,MAAA,GAEJ;AAAA,MACCR,KAAW,gBAAAU,EAAC,OAAA,EAAI,WAAU,oCAAoC,UAAAV,EAAA,CAAQ;AAAA,IAAA,GACzE;AAAA,IAGDC,IACC,gBAAAQ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,WAAWL,EAAA;AAAA,QAEnB,UAAA;AAAA,UAAAD,IAAY,gBAAAO,EAAC,OAAA,EAAI,WAAU,QAAQ,aAAU,IAAS;AAAA,4BACtDC,GAAA,EAAO,MAAK,MAAK,OAAK,IACpB,UAAAT,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAGFK;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1,5 +1,4 @@
1
- export default function FieldGroup({ className, children, ...rest }: {
2
- [x: string]: any;
3
- className?: string | undefined;
4
- children: any;
5
- }): import("react/jsx-runtime").JSX.Element;
1
+ import * as React from "react";
2
+ export interface FieldGroupProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ }
4
+ export default function FieldGroup({ className, children, ...rest }: FieldGroupProps): import("react/jsx-runtime").JSX.Element;
@@ -1,19 +1,18 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import "react";
3
- function a({ className: o = "", children: e, ...l }) {
2
+ function f({ className: e = "", children: o, ...l }) {
4
3
  return /* @__PURE__ */ r(
5
4
  "div",
6
5
  {
7
6
  className: [
8
7
  "flex flex-col gap-1.5",
9
- o
8
+ e
10
9
  ].filter(Boolean).join(" "),
11
10
  ...l,
12
- children: e
11
+ children: o
13
12
  }
14
13
  );
15
14
  }
16
15
  export {
17
- a as default
16
+ f as default
18
17
  };
19
18
  //# sourceMappingURL=FieldGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroup.js","sources":["../../../../src/components/library/ui/FieldGroup.jsx"],"sourcesContent":["import React from \"react\";\n\nexport default function FieldGroup({ className = \"\", children, ...rest }) {\n return (\n <div\n className={[\n \"flex flex-col gap-1.5\",\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"],"names":["FieldGroup","className","children","rest","jsx"],"mappings":";;AAEA,SAAwBA,EAAW,EAAE,WAAAC,IAAY,IAAI,UAAAC,GAAU,GAAGC,KAAQ;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAH;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"FieldGroup.js","sources":["../../../../src/components/library/ui/FieldGroup.tsx"],"sourcesContent":["import * as React from \"react\";\n\nexport interface FieldGroupProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport default function FieldGroup({ className = \"\", children, ...rest }: FieldGroupProps) {\n return (\n <div\n className={[\n \"flex flex-col gap-1.5\",\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"],"names":["FieldGroup","className","children","rest","jsx"],"mappings":";AAIA,SAAwBA,EAAW,EAAE,WAAAC,IAAY,IAAI,UAAAC,GAAU,GAAGC,KAAyB;AACzF,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAH;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,10 +1,24 @@
1
- export default function UIText({ as: Comp, size, weight, muted, style, className, children, ...rest }: {
2
- [x: string]: any;
3
- as?: string | undefined;
4
- size?: string | undefined;
5
- weight?: string | undefined;
6
- muted?: boolean | undefined;
7
- style: any;
8
- className?: string | undefined;
9
- children: any;
10
- }): import("react/jsx-runtime").JSX.Element;
1
+ import * as React from "react";
2
+ declare const SIZE_CLASSES: {
3
+ readonly xs: "text-xs";
4
+ readonly sm: "text-sm";
5
+ readonly md: "text-base";
6
+ readonly lg: "text-lg";
7
+ readonly xl: "text-xl";
8
+ readonly xxl: "text-2xl";
9
+ };
10
+ declare const WEIGHT_CLASSES: {
11
+ readonly regular: "font-normal";
12
+ readonly medium: "font-medium";
13
+ readonly bold: "font-semibold";
14
+ };
15
+ export interface UITextProps<T extends React.ElementType = "span"> {
16
+ as?: T;
17
+ size?: keyof typeof SIZE_CLASSES;
18
+ weight?: keyof typeof WEIGHT_CLASSES;
19
+ muted?: boolean;
20
+ className?: string;
21
+ children?: React.ReactNode;
22
+ }
23
+ export default function UIText<T extends React.ElementType = "span">({ as, size, weight, muted, className, children, ...rest }: UITextProps<T> & Omit<React.ComponentPropsWithoutRef<T>, keyof UITextProps<T>>): import("react/jsx-runtime").JSX.Element;
24
+ export {};
@@ -1,43 +1,40 @@
1
- import { jsx as d } from "react/jsx-runtime";
2
- import "react";
3
- const t = {
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ const n = {
4
3
  xs: "text-xs",
5
4
  sm: "text-sm",
6
5
  md: "text-base",
7
6
  lg: "text-lg",
8
7
  xl: "text-xl",
9
8
  xxl: "text-2xl"
10
- }, e = {
9
+ }, r = {
11
10
  regular: "font-normal",
12
11
  medium: "font-medium",
13
12
  bold: "font-semibold"
14
13
  };
15
- function u({
16
- as: l = "span",
17
- size: x = "md",
18
- weight: a = "regular",
19
- muted: s = !1,
20
- style: o,
21
- className: r = "",
22
- children: m,
23
- ...n
14
+ function i({
15
+ as: t,
16
+ size: e = "md",
17
+ weight: l = "regular",
18
+ muted: x = !1,
19
+ className: s = "",
20
+ children: o,
21
+ ...a
24
22
  }) {
25
- return /* @__PURE__ */ d(
26
- l,
23
+ return /* @__PURE__ */ m(
24
+ t || "span",
27
25
  {
28
- style: o,
29
26
  className: [
30
- t[x] ?? t.md,
31
- e[a] ?? e.regular,
32
- s ? "text-slate-600 dark:text-slate-300" : "text-slate-900 dark:text-slate-50",
33
- r
27
+ n[e],
28
+ r[l],
29
+ x ? "text-slate-600 dark:text-slate-300" : "text-slate-900 dark:text-slate-50",
30
+ s
34
31
  ].filter(Boolean).join(" "),
35
- ...n,
36
- children: m
32
+ ...a,
33
+ children: o
37
34
  }
38
35
  );
39
36
  }
40
37
  export {
41
- u as default
38
+ i as default
42
39
  };
43
40
  //# sourceMappingURL=Text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sources":["../../../../src/components/library/ui/Text.jsx"],"sourcesContent":["import React from \"react\";\n\nconst SIZE_CLASSES = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\"\n};\n\nconst WEIGHT_CLASSES = {\n regular: \"font-normal\",\n medium: \"font-medium\",\n bold: \"font-semibold\"\n};\n\nexport default function UIText({\n as: Comp = \"span\",\n size = \"md\",\n weight = \"regular\",\n muted = false,\n style,\n className = \"\",\n children,\n ...rest\n}) {\n return (\n <Comp\n style={style}\n className={[\n SIZE_CLASSES[size] ?? SIZE_CLASSES.md,\n WEIGHT_CLASSES[weight] ?? WEIGHT_CLASSES.regular,\n muted ? \"text-slate-600 dark:text-slate-300\" : \"text-slate-900 dark:text-slate-50\",\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </Comp>\n );\n}\n\n\n"],"names":["SIZE_CLASSES","WEIGHT_CLASSES","UIText","Comp","size","weight","muted","style","className","children","rest","jsx"],"mappings":";;AAEA,MAAMA,IAAe;AAAA,EACnB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP,GAEMC,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AACR;AAEA,SAAwBC,EAAO;AAAA,EAC7B,IAAIC,IAAO;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,GAAGC;AACL,GAAG;AACD,SACE,gBAAAC;AAAA,IAACR;AAAA,IAAA;AAAA,MACC,OAAAI;AAAA,MACA,WAAW;AAAA,QACTP,EAAaI,CAAI,KAAKJ,EAAa;AAAA,QACnCC,EAAeI,CAAM,KAAKJ,EAAe;AAAA,QACzCK,IAAQ,uCAAuC;AAAA,QAC/CE;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"Text.js","sources":["../../../../src/components/library/ui/Text.tsx"],"sourcesContent":["import * as React from \"react\";\n\nconst SIZE_CLASSES = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n xxl: \"text-2xl\"\n} as const;\n\nconst WEIGHT_CLASSES = {\n regular: \"font-normal\",\n medium: \"font-medium\",\n bold: \"font-semibold\"\n} as const;\n\nexport interface UITextProps<T extends React.ElementType = \"span\"> {\n as?: T;\n size?: keyof typeof SIZE_CLASSES;\n weight?: keyof typeof WEIGHT_CLASSES;\n muted?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport default function UIText<T extends React.ElementType = \"span\">({\n as,\n size = \"md\",\n weight = \"regular\",\n muted = false,\n className = \"\",\n children,\n ...rest\n}: UITextProps<T> & Omit<React.ComponentPropsWithoutRef<T>, keyof UITextProps<T>>) {\n const Comp = as || \"span\";\n\n return (\n <Comp\n className={[\n SIZE_CLASSES[size],\n WEIGHT_CLASSES[weight],\n muted ? \"text-slate-600 dark:text-slate-300\" : \"text-slate-900 dark:text-slate-50\",\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </Comp>\n );\n}\n"],"names":["SIZE_CLASSES","WEIGHT_CLASSES","UIText","as","size","weight","muted","className","children","rest","jsx"],"mappings":";AAEA,MAAMA,IAAe;AAAA,EACnB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP,GAEMC,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AACR;AAWA,SAAwBC,EAA6C;AAAA,EACnE,IAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,GAAGC;AACL,GAAmF;AAGjF,SACE,gBAAAC;AAAA,IAHWP,KAAM;AAAA,IAGhB;AAAA,MACC,WAAW;AAAA,QACTH,EAAaI,CAAI;AAAA,QACjBH,EAAeI,CAAM;AAAA,QACrBC,IAAQ,uCAAuC;AAAA,QAC/CC;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schandlergarcia/sf-web-components",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Reusable Salesforce web components library with Tailwind CSS v4 and shadcn/ui",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,10 @@
1
+ import { Input } from "@heroui/react";
2
+ import type { InputProps } from "@heroui/react";
3
+
4
+ export interface HeroUIInputProps extends InputProps {}
5
+
6
+ export default function HeroUIInput(props: HeroUIInputProps) {
7
+ return <Input {...props} />;
8
+ }
9
+
10
+ export type { InputProps };
@@ -0,0 +1,11 @@
1
+ import { Kbd } from "@heroui/react";
2
+ import type { KbdProps } from "@heroui/react";
3
+
4
+ export interface HeroUIKbdProps extends KbdProps {}
5
+
6
+ export default function HeroUIKbd({ children, ...props }: HeroUIKbdProps) {
7
+ return <Kbd {...props}>{children}</Kbd>;
8
+ }
9
+
10
+ export { Kbd };
11
+ export type { KbdProps };
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ import { Skeleton } from "@heroui/react";
3
+ import type { SkeletonProps } from "@heroui/react";
4
+
5
+ export interface HeroUISkeletonProps extends SkeletonProps {
6
+ children?: ReactNode;
7
+ }
8
+
9
+ export default function HeroUISkeleton({ children, ...props }: HeroUISkeletonProps) {
10
+ return <Skeleton {...props}>{children}</Skeleton>;
11
+ }
12
+
13
+ export { Skeleton };
14
+ export type { SkeletonProps };
@@ -1,5 +1,5 @@
1
- import React from "react";
2
1
  import { Toast, toast } from "@heroui/react";
2
+ import type { ToastProps } from "@heroui/react";
3
3
 
4
4
  /**
5
5
  * HeroUI v3 Toast — notification system.
@@ -18,8 +18,11 @@ import { Toast, toast } from "@heroui/react";
18
18
  * Toast.Title, Toast.Description, Toast.ActionButton,
19
19
  * Toast.CloseButton
20
20
  */
21
- export default function HeroUIToast(props) {
21
+ export interface HeroUIToastProps extends ToastProps {}
22
+
23
+ export default function HeroUIToast(props: HeroUIToastProps) {
22
24
  return <Toast {...props} />;
23
25
  }
24
26
 
25
27
  export { Toast, toast };
28
+ export type { ToastProps };
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import * as React from "react";
2
2
 
3
3
  const TONE_STYLES = {
4
4
  neutral:
@@ -11,20 +11,25 @@ const TONE_STYLES = {
11
11
  "border-amber-200/80 bg-amber-50/70 text-amber-900 ring-amber-900/5 hover:bg-amber-50 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-200 dark:ring-amber-300/10 dark:hover:bg-amber-950/30",
12
12
  danger:
13
13
  "border-rose-200/80 bg-rose-50/70 text-rose-900 ring-rose-900/5 hover:bg-rose-50 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200 dark:ring-rose-300/10 dark:hover:bg-rose-950/30"
14
- };
14
+ } as const;
15
15
 
16
16
  const SIZE_STYLES = {
17
17
  xs: "px-2 py-0.5 text-[11px]",
18
18
  sm: "px-2.5 py-1 text-xs"
19
- };
19
+ } as const;
20
20
 
21
- export default function UIChip({ tone = "neutral", size = "xs", className = "", children, ...rest }) {
21
+ export interface UIChipProps extends React.HTMLAttributes<HTMLSpanElement> {
22
+ tone?: keyof typeof TONE_STYLES;
23
+ size?: keyof typeof SIZE_STYLES;
24
+ }
25
+
26
+ export default function UIChip({ tone = "neutral", size = "xs", className = "", children, ...rest }: UIChipProps) {
22
27
  return (
23
28
  <span
24
29
  className={[
25
30
  "inline-flex items-center gap-1 rounded-full border font-semibold shadow-sm ring-1 transition",
26
- SIZE_STYLES[size] ?? SIZE_STYLES.xs,
27
- TONE_STYLES[tone] ?? TONE_STYLES.neutral,
31
+ SIZE_STYLES[size],
32
+ TONE_STYLES[tone],
28
33
  className
29
34
  ]
30
35
  .filter(Boolean)
@@ -35,4 +40,3 @@ export default function UIChip({ tone = "neutral", size = "xs", className = "",
35
40
  </span>
36
41
  );
37
42
  }
38
-
@@ -1,6 +1,17 @@
1
- import React from "react";
1
+ import * as React from "react";
2
2
  import UIText from "./Text";
3
3
 
4
+ export interface UIContainerProps extends React.HTMLAttributes<HTMLElement> {
5
+ title?: string;
6
+ subtitle?: string;
7
+ description?: string;
8
+ actions?: React.ReactNode;
9
+ empty?: boolean;
10
+ emptyText?: string;
11
+ emptyIcon?: React.ReactNode;
12
+ emptyHeight?: number;
13
+ }
14
+
4
15
  export default function UIContainer({
5
16
  title,
6
17
  subtitle,
@@ -13,7 +24,7 @@ export default function UIContainer({
13
24
  className = "",
14
25
  style,
15
26
  children
16
- }) {
27
+ }: UIContainerProps) {
17
28
  const sub = subtitle ?? description;
18
29
 
19
30
  return (
@@ -52,5 +63,3 @@ export default function UIContainer({
52
63
  </section>
53
64
  );
54
65
  }
55
-
56
-
@@ -1,6 +1,8 @@
1
- import React from "react";
1
+ import * as React from "react";
2
2
 
3
- export default function FieldGroup({ className = "", children, ...rest }) {
3
+ export interface FieldGroupProps extends React.HTMLAttributes<HTMLDivElement> {}
4
+
5
+ export default function FieldGroup({ className = "", children, ...rest }: FieldGroupProps) {
4
6
  return (
5
7
  <div
6
8
  className={[
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import * as React from "react";
2
2
 
3
3
  const SIZE_CLASSES = {
4
4
  xs: "text-xs",
@@ -7,30 +7,39 @@ const SIZE_CLASSES = {
7
7
  lg: "text-lg",
8
8
  xl: "text-xl",
9
9
  xxl: "text-2xl"
10
- };
10
+ } as const;
11
11
 
12
12
  const WEIGHT_CLASSES = {
13
13
  regular: "font-normal",
14
14
  medium: "font-medium",
15
15
  bold: "font-semibold"
16
- };
16
+ } as const;
17
17
 
18
- export default function UIText({
19
- as: Comp = "span",
18
+ export interface UITextProps<T extends React.ElementType = "span"> {
19
+ as?: T;
20
+ size?: keyof typeof SIZE_CLASSES;
21
+ weight?: keyof typeof WEIGHT_CLASSES;
22
+ muted?: boolean;
23
+ className?: string;
24
+ children?: React.ReactNode;
25
+ }
26
+
27
+ export default function UIText<T extends React.ElementType = "span">({
28
+ as,
20
29
  size = "md",
21
30
  weight = "regular",
22
31
  muted = false,
23
- style,
24
32
  className = "",
25
33
  children,
26
34
  ...rest
27
- }) {
35
+ }: UITextProps<T> & Omit<React.ComponentPropsWithoutRef<T>, keyof UITextProps<T>>) {
36
+ const Comp = as || "span";
37
+
28
38
  return (
29
39
  <Comp
30
- style={style}
31
40
  className={[
32
- SIZE_CLASSES[size] ?? SIZE_CLASSES.md,
33
- WEIGHT_CLASSES[weight] ?? WEIGHT_CLASSES.regular,
41
+ SIZE_CLASSES[size],
42
+ WEIGHT_CLASSES[weight],
34
43
  muted ? "text-slate-600 dark:text-slate-300" : "text-slate-900 dark:text-slate-50",
35
44
  className
36
45
  ]
@@ -42,5 +51,3 @@ export default function UIText({
42
51
  </Comp>
43
52
  );
44
53
  }
45
-
46
-
@@ -1,6 +0,0 @@
1
- import React from "react";
2
- import { Input } from "@heroui/react";
3
-
4
- export default function HeroUIInput(props) {
5
- return <Input {...props} />;
6
- }
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- import { Kbd } from "@heroui/react";
3
-
4
- export default function HeroUIKbd({ children, ...props }) {
5
- return <Kbd {...props}>{children}</Kbd>;
6
- }
7
-
8
- export { Kbd };
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- import { Skeleton } from "@heroui/react";
3
-
4
- export default function HeroUISkeleton({ children, ...props }) {
5
- return <Skeleton {...props}>{children}</Skeleton>;
6
- }
7
-
8
- export { Skeleton };