@schandlergarcia/sf-web-components 1.3.1 → 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.
- package/.a4drules/features/command-center-dashboard-rule.md +1 -1
- package/.a4drules/skills/command-center-project/SKILL.md +4 -4
- package/.a4drules/skills/component-library/SKILL.md +4 -1
- package/README.md +2 -0
- package/dist/components/library/heroui/Input.d.ts +5 -1
- package/dist/components/library/heroui/Input.js +0 -1
- package/dist/components/library/heroui/Input.js.map +1 -1
- package/dist/components/library/heroui/Kbd.d.ts +6 -5
- package/dist/components/library/heroui/Kbd.js +4 -5
- package/dist/components/library/heroui/Kbd.js.map +1 -1
- package/dist/components/library/heroui/Skeleton.d.ts +8 -5
- package/dist/components/library/heroui/Skeleton.js +4 -5
- package/dist/components/library/heroui/Skeleton.js.map +1 -1
- package/dist/components/library/heroui/Toast.d.ts +6 -3
- package/dist/components/library/heroui/Toast.js +3 -4
- package/dist/components/library/heroui/Toast.js.map +1 -1
- package/dist/components/library/ui/Avatar.d.ts +22 -10
- package/dist/components/library/ui/Avatar.js +40 -17
- package/dist/components/library/ui/Avatar.js.map +1 -1
- package/dist/components/library/ui/Card.d.ts +23 -37
- package/dist/components/library/ui/Chip.d.ts +18 -7
- package/dist/components/library/ui/Chip.js +11 -12
- package/dist/components/library/ui/Chip.js.map +1 -1
- package/dist/components/library/ui/Container.d.ts +12 -13
- package/dist/components/library/ui/Container.js +16 -17
- package/dist/components/library/ui/Container.js.map +1 -1
- package/dist/components/library/ui/EmptyState.d.ts +34 -7
- package/dist/components/library/ui/EmptyState.js +5 -6
- package/dist/components/library/ui/EmptyState.js.map +1 -1
- package/dist/components/library/ui/FieldGroup.d.ts +4 -5
- package/dist/components/library/ui/FieldGroup.js +4 -5
- package/dist/components/library/ui/FieldGroup.js.map +1 -1
- package/dist/components/library/ui/Spinner.d.ts +21 -5
- package/dist/components/library/ui/Text.d.ts +24 -10
- package/dist/components/library/ui/Text.js +20 -23
- package/dist/components/library/ui/Text.js.map +1 -1
- package/dist/components/library/ui/UIInput.d.ts +4 -5
- package/dist/components/library/ui/UIInput.js +5 -6
- package/dist/components/library/ui/UIInput.js.map +1 -1
- package/dist/components/library/ui/alert.d.ts +23 -21
- package/dist/components/library/ui/alert.js +13 -14
- package/dist/components/library/ui/alert.js.map +1 -1
- package/dist/components/library/ui/card.js +24 -26
- package/dist/components/library/ui/card.js.map +1 -1
- package/dist/components/library/ui/checkbox.d.ts +4 -4
- package/dist/components/library/ui/checkbox.js +4 -5
- package/dist/components/library/ui/checkbox.js.map +1 -1
- package/dist/components/library/ui/label.d.ts +5 -7
- package/dist/components/library/ui/label.js +9 -10
- package/dist/components/library/ui/label.js.map +1 -1
- package/dist/components/library/ui/spinner.js +16 -17
- package/dist/components/library/ui/spinner.js.map +1 -1
- package/package.json +1 -1
- package/scripts/convert-to-typescript.sh +52 -0
- package/src/components/library/heroui/Input.tsx +10 -0
- package/src/components/library/heroui/Kbd.tsx +11 -0
- package/src/components/library/heroui/Skeleton.tsx +14 -0
- package/src/components/library/heroui/{Toast.jsx → Toast.tsx} +5 -2
- package/src/components/library/ui/{Alert.jsx → Alert.tsx} +17 -7
- package/src/components/library/ui/Avatar.tsx +68 -0
- package/src/components/library/ui/{Card.jsx → Card.tsx} +24 -10
- package/src/components/library/ui/{Checkbox.jsx → Checkbox.tsx} +4 -2
- package/src/components/library/ui/{Chip.jsx → Chip.tsx} +11 -7
- package/src/components/library/ui/{Container.jsx → Container.tsx} +13 -4
- package/src/components/library/ui/{EmptyState.jsx → EmptyState.tsx} +13 -10
- package/src/components/library/ui/{FieldGroup.jsx → FieldGroup.tsx} +4 -2
- package/src/components/library/ui/{Label.jsx → Label.tsx} +9 -8
- package/src/components/library/ui/{Spinner.jsx → Spinner.tsx} +12 -10
- package/src/components/library/ui/{Text.jsx → Text.tsx} +19 -12
- package/src/components/library/ui/{UIInput.jsx → UIInput.tsx} +5 -5
- package/src/components/library/heroui/Input.jsx +0 -6
- package/src/components/library/heroui/Kbd.jsx +0 -8
- package/src/components/library/heroui/Skeleton.jsx +0 -8
- package/src/components/library/ui/Avatar.jsx +0 -44
|
@@ -15,7 +15,7 @@ You MUST load the **command-center-builder** and **component-library** skills be
|
|
|
15
15
|
|
|
16
16
|
## Critical constraints
|
|
17
17
|
|
|
18
|
-
1. **File extension
|
|
18
|
+
1. **File extension should be `.tsx`** — TypeScript is preferred for type safety. Use `.jsx` only if types are not available.
|
|
19
19
|
|
|
20
20
|
2. **Use ONLY library components** from `@/components/library` for cards, charts, tables, lists. Never hand-roll HTML cards (`<div className="bg-white border rounded...">`).
|
|
21
21
|
|
|
@@ -32,10 +32,10 @@ src/
|
|
|
32
32
|
├── features/ # Feature modules (global-search)
|
|
33
33
|
│ └── global-search/ # Search API, components, hooks
|
|
34
34
|
├── components/
|
|
35
|
-
│ ├── library/ #
|
|
36
|
-
│ ├── workspace/ # ComponentRegistry
|
|
35
|
+
│ ├── library/ # Component library (.tsx/.jsx - TypeScript migration in progress)
|
|
36
|
+
│ ├── workspace/ # ComponentRegistry (schema renderer)
|
|
37
37
|
│ ├── pages/ # Dashboard pages (CommandCenter.tsx wraps active dashboard)
|
|
38
|
-
│ ├── ui/ # shadcn/ui components (button, card, dialog, etc.)
|
|
38
|
+
│ ├── ui/ # shadcn/ui components (button, card, dialog, etc.) - TypeScript
|
|
39
39
|
│ ├── alerts/ # StatusAlert (CVA + Lucide)
|
|
40
40
|
│ └── layouts/ # CardLayout (uses shadcn Card)
|
|
41
41
|
└── stubs/ # No-op stubs for standalone dev (sdk-data, webapp-experimental, agentforce)
|
|
@@ -81,7 +81,7 @@ Configured in both `vite.config.ts` and `tsconfig.json`:
|
|
|
81
81
|
|
|
82
82
|
- **Dashboard pages** go in `src/components/pages/`. Wire into `CommandCenter.tsx` by importing and rendering.
|
|
83
83
|
- **Outer app pages** go in `src/pages/` or `src/features/*/pages/`. Wire into `src/routes.tsx`.
|
|
84
|
-
- **TypeScript** for
|
|
84
|
+
- **TypeScript** preferred for all code (`.tsx`/`.ts`). Core UI components converted to TypeScript. Legacy `.jsx` files being migrated.
|
|
85
85
|
- **Component library** is a vendored copy from command-center-starter — not an npm package. Changes sync manually.
|
|
86
86
|
- Vite config has `loader: { '.js': 'jsx' }` in `optimizeDeps` to support the `.js`→JSX library files.
|
|
87
87
|
- **Reset script:** `npm run reset:command-center` wipes custom dashboards and restores blank canvas.
|
|
@@ -14,13 +14,16 @@ Vendored from command-center-starter. Do not modify library files.
|
|
|
14
14
|
|
|
15
15
|
## Import Pattern
|
|
16
16
|
|
|
17
|
-
```
|
|
17
|
+
```tsx
|
|
18
18
|
// Named imports from the barrel (preferred)
|
|
19
19
|
import { MetricCard, ChartCard, TableCard, ListCard } from "@/components/library";
|
|
20
20
|
|
|
21
21
|
// Default exports that need direct import
|
|
22
22
|
import useDataSource from "@/components/library/data/useDataSource";
|
|
23
23
|
import { useThemeMode } from "@/components/library/theme/AppThemeProvider";
|
|
24
|
+
|
|
25
|
+
// Import types (TypeScript)
|
|
26
|
+
import type { MetricCardProps } from "@/components/library";
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
---
|
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
|
-
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../../../src/components/library/heroui/Input.
|
|
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
|
|
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(
|
|
5
|
+
return /* @__PURE__ */ t(e, { ...o, children: r });
|
|
7
6
|
}
|
|
8
7
|
export {
|
|
9
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
5
|
-
function
|
|
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
|
-
|
|
10
|
-
|
|
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.
|
|
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
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
-
|
|
8
|
+
p as Toast,
|
|
10
9
|
e as default,
|
|
11
|
-
|
|
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.
|
|
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,10 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const SIZE_MAP: {
|
|
3
|
+
readonly xs: "h-6 w-6 text-[9px]";
|
|
4
|
+
readonly sm: "h-8 w-8 text-[10px]";
|
|
5
|
+
readonly md: "h-9 w-9 text-xs";
|
|
6
|
+
readonly lg: "h-11 w-11 text-sm";
|
|
7
|
+
};
|
|
8
|
+
declare const TONE_MAP: {
|
|
9
|
+
readonly slate: "bg-slate-800 text-white";
|
|
10
|
+
readonly brand: "bg-brand-500 text-white";
|
|
11
|
+
readonly neutral: "bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-200";
|
|
12
|
+
};
|
|
13
|
+
export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement | HTMLImageElement> {
|
|
14
|
+
src?: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
initials?: string;
|
|
17
|
+
icon?: React.ReactNode;
|
|
18
|
+
size?: keyof typeof SIZE_MAP;
|
|
19
|
+
tone?: keyof typeof TONE_MAP;
|
|
20
|
+
}
|
|
21
|
+
export default function Avatar({ src, name, initials, icon, size, tone, className, ...rest }: AvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -1,33 +1,56 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
1
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import * as u from "react";
|
|
3
|
+
const b = {
|
|
4
4
|
xs: "h-6 w-6 text-[9px]",
|
|
5
5
|
sm: "h-8 w-8 text-[10px]",
|
|
6
6
|
md: "h-9 w-9 text-xs",
|
|
7
7
|
lg: "h-11 w-11 text-sm"
|
|
8
|
-
},
|
|
8
|
+
}, d = {
|
|
9
9
|
slate: "bg-slate-800 text-white",
|
|
10
10
|
brand: "bg-brand-500 text-white",
|
|
11
11
|
neutral: "bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-200"
|
|
12
12
|
};
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
function h({
|
|
14
|
+
src: a,
|
|
15
|
+
name: t,
|
|
16
|
+
initials: o,
|
|
17
|
+
icon: i,
|
|
18
|
+
size: x = "sm",
|
|
19
|
+
tone: n = "slate",
|
|
20
|
+
className: e = "",
|
|
21
|
+
...r
|
|
22
|
+
}) {
|
|
23
|
+
const s = b[x];
|
|
24
|
+
if (a)
|
|
25
|
+
return /* @__PURE__ */ l(
|
|
17
26
|
"img",
|
|
18
27
|
{
|
|
19
|
-
src:
|
|
20
|
-
alt:
|
|
21
|
-
className: `${
|
|
22
|
-
...
|
|
28
|
+
src: a,
|
|
29
|
+
alt: t ?? "",
|
|
30
|
+
className: `${s} shrink-0 rounded-full border border-slate-200 object-cover dark:border-slate-800 ${e}`,
|
|
31
|
+
...r
|
|
23
32
|
}
|
|
24
33
|
);
|
|
25
|
-
if (
|
|
26
|
-
return /* @__PURE__ */
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
if (u.isValidElement(i))
|
|
35
|
+
return /* @__PURE__ */ l(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
className: `${s} ${d[n]} flex shrink-0 items-center justify-center rounded-full ${e}`,
|
|
39
|
+
...r,
|
|
40
|
+
children: i
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
const c = o ?? (t ? t.split(" ").map((f) => f[0]).join("").slice(0, 2).toUpperCase() : "?");
|
|
44
|
+
return /* @__PURE__ */ l(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
className: `${s} ${d[n]} flex shrink-0 items-center justify-center rounded-full font-bold ${e}`,
|
|
48
|
+
...r,
|
|
49
|
+
children: c
|
|
50
|
+
}
|
|
51
|
+
);
|
|
29
52
|
}
|
|
30
53
|
export {
|
|
31
|
-
|
|
54
|
+
h as default
|
|
32
55
|
};
|
|
33
56
|
//# sourceMappingURL=Avatar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/library/ui/Avatar.
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/library/ui/Avatar.tsx"],"sourcesContent":["import * as React from \"react\";\n\nconst SIZE_MAP = {\n xs: \"h-6 w-6 text-[9px]\",\n sm: \"h-8 w-8 text-[10px]\",\n md: \"h-9 w-9 text-xs\",\n lg: \"h-11 w-11 text-sm\",\n} as const;\n\nconst TONE_MAP = {\n slate: \"bg-slate-800 text-white\",\n brand: \"bg-brand-500 text-white\",\n neutral: \"bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-200\",\n} as const;\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement | HTMLImageElement> {\n src?: string;\n name?: string;\n initials?: string;\n icon?: React.ReactNode;\n size?: keyof typeof SIZE_MAP;\n tone?: keyof typeof TONE_MAP;\n}\n\nexport default function Avatar({\n src,\n name,\n initials,\n icon,\n size = \"sm\",\n tone = \"slate\",\n className = \"\",\n ...rest\n}: AvatarProps) {\n const sizeClass = SIZE_MAP[size];\n\n if (src) {\n return (\n <img\n src={src}\n alt={name ?? \"\"}\n className={`${sizeClass} shrink-0 rounded-full border border-slate-200 object-cover dark:border-slate-800 ${className}`}\n {...(rest as React.ImgHTMLAttributes<HTMLImageElement>)}\n />\n );\n }\n\n if (React.isValidElement(icon)) {\n return (\n <div\n className={`${sizeClass} ${TONE_MAP[tone]} flex shrink-0 items-center justify-center rounded-full ${className}`}\n {...(rest as React.HTMLAttributes<HTMLDivElement>)}\n >\n {icon}\n </div>\n );\n }\n\n const label = initials ?? (name ? name.split(\" \").map(w => w[0]).join(\"\").slice(0, 2).toUpperCase() : \"?\");\n return (\n <div\n className={`${sizeClass} ${TONE_MAP[tone]} flex shrink-0 items-center justify-center rounded-full font-bold ${className}`}\n {...(rest as React.HTMLAttributes<HTMLDivElement>)}\n >\n {label}\n </div>\n );\n}\n"],"names":["SIZE_MAP","TONE_MAP","Avatar","src","name","initials","icon","size","tone","className","rest","sizeClass","jsx","React","label","w"],"mappings":";;AAEA,MAAMA,IAAW;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAW;AAAA,EACf,OAAS;AAAA,EACT,OAAS;AAAA,EACT,SAAS;AACX;AAWA,SAAwBC,EAAO;AAAA,EAC7B,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAgB;AACd,QAAMC,IAAYX,EAASO,CAAI;AAE/B,MAAIJ;AACF,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAT;AAAA,QACA,KAAKC,KAAQ;AAAA,QACb,WAAW,GAAGO,CAAS,qFAAqFF,CAAS;AAAA,QACpH,GAAIC;AAAA,MAAA;AAAA,IAAA;AAKX,MAAIG,EAAM,eAAeP,CAAI;AAC3B,WACE,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,GAAGD,CAAS,IAAIV,EAASO,CAAI,CAAC,2DAA2DC,CAAS;AAAA,QAC5G,GAAIC;AAAA,QAEJ,UAAAJ;AAAA,MAAA;AAAA,IAAA;AAKP,QAAMQ,IAAQT,MAAaD,IAAOA,EAAK,MAAM,GAAG,EAAE,IAAI,CAAAW,MAAKA,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,YAAA,IAAgB;AACtG,SACE,gBAAAH;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAGD,CAAS,IAAIV,EAASO,CAAI,CAAC,qEAAqEC,CAAS;AAAA,MACtH,GAAIC;AAAA,MAEJ,UAAAI;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -1,37 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
export function Card({ className, children, ...rest }:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
export function
|
|
24
|
-
[x: string]: any;
|
|
25
|
-
className?: string | undefined;
|
|
26
|
-
children: any;
|
|
27
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
export function CardContent({ className, children, ...rest }: {
|
|
29
|
-
[x: string]: any;
|
|
30
|
-
className?: string | undefined;
|
|
31
|
-
children: any;
|
|
32
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
export function CardFooter({ className, children, ...rest }: {
|
|
34
|
-
[x: string]: any;
|
|
35
|
-
className?: string | undefined;
|
|
36
|
-
children: any;
|
|
37
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface UICardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
padding?: string;
|
|
4
|
+
}
|
|
5
|
+
export default function UICard({ children, padding, className, ...rest }: UICardProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
}
|
|
8
|
+
export declare function Card({ className, children, ...rest }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
}
|
|
11
|
+
export declare function CardHeader({ className, children, ...rest }: CardHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
|
13
|
+
}
|
|
14
|
+
export declare function CardTitle({ className, children, ...rest }: CardTitleProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {
|
|
16
|
+
}
|
|
17
|
+
export declare function CardDescription({ className, children, ...rest }: CardDescriptionProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
19
|
+
}
|
|
20
|
+
export declare function CardContent({ className, children, ...rest }: CardContentProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
22
|
+
}
|
|
23
|
+
export declare function CardFooter({ className, children, ...rest }: CardFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
2
|
-
|
|
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
|
-
},
|
|
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
|
|
14
|
-
return /* @__PURE__ */
|
|
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
|
|
20
|
-
r
|
|
21
|
-
|
|
18
|
+
n[e],
|
|
19
|
+
o[r],
|
|
20
|
+
a
|
|
22
21
|
].filter(Boolean).join(" "),
|
|
23
|
-
...
|
|
24
|
-
children:
|
|
22
|
+
...b,
|
|
23
|
+
children: d
|
|
25
24
|
}
|
|
26
25
|
);
|
|
27
26
|
}
|
|
28
27
|
export {
|
|
29
|
-
|
|
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.
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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 "
|
|
3
|
-
|
|
4
|
-
function N({
|
|
2
|
+
import d from "./Text.js";
|
|
3
|
+
function g({
|
|
5
4
|
title: r,
|
|
6
5
|
subtitle: a,
|
|
7
|
-
description:
|
|
6
|
+
description: n,
|
|
8
7
|
actions: l,
|
|
9
|
-
empty:
|
|
8
|
+
empty: m = !1,
|
|
10
9
|
emptyText: c = "Nothing here yet.",
|
|
11
|
-
emptyIcon:
|
|
12
|
-
emptyHeight:
|
|
13
|
-
className:
|
|
10
|
+
emptyIcon: i,
|
|
11
|
+
emptyHeight: h = 160,
|
|
12
|
+
className: o = "",
|
|
14
13
|
style: f,
|
|
15
14
|
children: u
|
|
16
15
|
}) {
|
|
17
|
-
const t = a ??
|
|
18
|
-
return /* @__PURE__ */ s("section", { className:
|
|
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(
|
|
22
|
-
t && /* @__PURE__ */ e(
|
|
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
|
-
|
|
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:
|
|
29
|
+
style: { minHeight: h },
|
|
31
30
|
children: [
|
|
32
|
-
|
|
33
|
-
/* @__PURE__ */ e(
|
|
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
|
-
|
|
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.
|
|
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;"}
|