@schemavaults/ui 0.16.1 → 0.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/banner/banner.d.ts +24 -0
- package/dist/components/ui/banner/banner.js +47 -0
- package/dist/components/ui/banner/banner.js.map +1 -0
- package/dist/components/ui/banner/index.d.ts +2 -0
- package/dist/components/ui/banner/index.js +2 -0
- package/dist/components/ui/banner/index.js.map +1 -0
- package/dist/components/ui/index.d.ts +2 -0
- package/dist/components/ui/index.js +1 -0
- package/dist/components/ui/index.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactElement, type ReactNode, type Ref } from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
export declare const bannerVariantIds: ["info", "success", "warning", "destructive"];
|
|
4
|
+
export type BannerVariantId = (typeof bannerVariantIds)[number];
|
|
5
|
+
declare const bannerVariants: (props?: ({
|
|
6
|
+
variant?: "destructive" | "warning" | "info" | "success" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
export interface BannerProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
9
|
+
ref?: Ref<HTMLDivElement>;
|
|
10
|
+
/** Whether the banner can be dismissed via a close button. Defaults to false. */
|
|
11
|
+
dismissible?: boolean;
|
|
12
|
+
/** Callback fired when the banner is dismissed. */
|
|
13
|
+
onDismiss?: () => void;
|
|
14
|
+
/** Override the default icon. Pass `null` to hide the icon entirely. */
|
|
15
|
+
icon?: ReactNode | null;
|
|
16
|
+
/** Optional action element (e.g. a Button) rendered on the right side. */
|
|
17
|
+
action?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
declare function Banner({ className, variant, dismissible, onDismiss, icon, action, children, ref, ...props }: BannerProps): ReactElement | null;
|
|
20
|
+
declare namespace Banner {
|
|
21
|
+
var displayName: string;
|
|
22
|
+
}
|
|
23
|
+
export { Banner, bannerVariants };
|
|
24
|
+
export default Banner;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useCallback, } from "react";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { X, Info, CheckCircle, AlertTriangle, AlertOctagon } from "lucide-react";
|
|
6
|
+
import { cn } from "../../../lib/utils";
|
|
7
|
+
export const bannerVariantIds = [
|
|
8
|
+
"info",
|
|
9
|
+
"success",
|
|
10
|
+
"warning",
|
|
11
|
+
"destructive",
|
|
12
|
+
];
|
|
13
|
+
const bannerVariants = cva("relative flex w-full items-center gap-3 border px-4 py-3 text-sm [&>svg]:shrink-0", {
|
|
14
|
+
variants: {
|
|
15
|
+
variant: {
|
|
16
|
+
info: "border-primary/30 bg-primary/10 text-primary-foreground dark:bg-primary/15 dark:text-foreground [&>svg]:text-primary",
|
|
17
|
+
success: "border-green-500/30 bg-green-500/10 text-green-900 dark:bg-green-500/15 dark:text-green-100 [&>svg]:text-green-600 dark:[&>svg]:text-green-400",
|
|
18
|
+
warning: "border-warning/30 bg-warning/10 text-warning-foreground [&>svg]:text-warning",
|
|
19
|
+
destructive: "border-destructive/30 bg-destructive/10 text-destructive dark:bg-destructive/15 dark:text-destructive-foreground [&>svg]:text-destructive",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
defaultVariants: {
|
|
23
|
+
variant: "info",
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
const defaultIcons = {
|
|
27
|
+
info: _jsx(Info, { className: "size-4" }),
|
|
28
|
+
success: _jsx(CheckCircle, { className: "size-4" }),
|
|
29
|
+
warning: _jsx(AlertTriangle, { className: "size-4" }),
|
|
30
|
+
destructive: _jsx(AlertOctagon, { className: "size-4" }),
|
|
31
|
+
};
|
|
32
|
+
function Banner({ className, variant = "info", dismissible = false, onDismiss, icon, action, children, ref, ...props }) {
|
|
33
|
+
const [dismissed, setDismissed] = useState(false);
|
|
34
|
+
const handleDismiss = useCallback(() => {
|
|
35
|
+
setDismissed(true);
|
|
36
|
+
onDismiss?.();
|
|
37
|
+
}, [onDismiss]);
|
|
38
|
+
if (dismissed) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const resolvedIcon = icon === null ? null : icon ?? defaultIcons[variant ?? "info"];
|
|
42
|
+
return (_jsxs("div", { ref: ref, role: "status", "data-slot": "banner", className: cn(bannerVariants({ variant }), className), ...props, children: [resolvedIcon, _jsx("div", { className: "flex-1 min-w-0", children: children }), action && _jsx("div", { className: "shrink-0", children: action }), dismissible && (_jsx("button", { type: "button", "aria-label": "Dismiss banner", onClick: handleDismiss, className: "shrink-0 rounded-sm p-0.5 opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx(X, { className: "size-4" }) }))] }));
|
|
43
|
+
}
|
|
44
|
+
Banner.displayName = "Banner";
|
|
45
|
+
export { Banner, bannerVariants };
|
|
46
|
+
export default Banner;
|
|
47
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../../src/components/ui/banner/banner.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAKL,QAAQ,EACR,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,SAAS;IACT,SAAS;IACT,aAAa;CACc,CAAC;AAI9B,MAAM,cAAc,GAAG,GAAG,CACxB,mFAAmF,EACnF;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,sHAAsH;YAC5H,OAAO,EACL,gJAAgJ;YAClJ,OAAO,EACL,8EAA8E;YAChF,WAAW,EACT,2IAA2I;SACpG;KAC5C;IACD,eAAe,EAAE;QACf,OAAO,EAAE,MAAM;KAChB;CACF,CACF,CAAC;AAEF,MAAM,YAAY,GAA0C;IAC1D,IAAI,EAAE,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,GAAG;IACjC,OAAO,EAAE,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,GAAG;IAC3C,OAAO,EAAE,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,GAAG;IAC7C,WAAW,EAAE,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,GAAG;CACjD,CAAC;AAgBF,SAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,GAAG,MAAM,EAChB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACI;IACZ,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAS,EAAE;QAC3C,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,SAAS,EAAE,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAChB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAEjE,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,eACH,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KACjD,KAAK,aAER,YAAY,EAEb,cAAK,SAAS,EAAC,gBAAgB,YAAE,QAAQ,GAAO,EAE/C,MAAM,IAAI,cAAK,SAAS,EAAC,UAAU,YAAE,MAAM,GAAO,EAElD,WAAW,IAAI,CACd,iBACE,IAAI,EAAC,QAAQ,gBACF,gBAAgB,EAC3B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,mJAAmJ,YAE7J,KAAC,CAAC,IAAC,SAAS,EAAC,QAAQ,GAAG,GACjB,CACV,IACG,CACP,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AAElC,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/banner/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schemavaults/ui",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"description": "React.js UI components for SchemaVaults frontend applications",
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/schemavaults/ui.git"
|
|
10
10
|
},
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"react": "^19.2.5",
|
|
13
|
+
"react-dom": "^19.2.5"
|
|
14
|
+
},
|
|
11
15
|
"dependencies": {
|
|
12
16
|
"@emotion/is-prop-valid": "1.4.0",
|
|
13
17
|
"@hookform/resolvers": "3.9.0",
|
|
@@ -40,8 +44,6 @@
|
|
|
40
44
|
"framer-motion": "12.23.24",
|
|
41
45
|
"lucide-react": "0.575.0",
|
|
42
46
|
"next-themes": "0.4.6",
|
|
43
|
-
"react": "19.2.4",
|
|
44
|
-
"react-dom": "19.2.4",
|
|
45
47
|
"react-hook-form": "7.58.1",
|
|
46
48
|
"tailwind-merge": "3.0.2"
|
|
47
49
|
},
|