@versaur/react 1.0.7 → 1.0.9

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.
@@ -6,6 +6,8 @@ import { Badge as Badge_2 } from '@versaur/core/primitive';
6
6
  import { BadgeShape } from '@versaur/core/primitive';
7
7
  import { BadgeSize } from '@versaur/core/primitive';
8
8
  import { BadgeVariant } from '@versaur/core/primitive';
9
+ import { Banner as Banner_2 } from '@versaur/core/primitive';
10
+ import { BannerVariant } from '@versaur/core/primitive';
9
11
  import { Button as Button_2 } from '@versaur/core/primitive';
10
12
  import { ButtonHTMLAttributes } from 'react';
11
13
  import { ButtonSize } from '@versaur/core/primitive';
@@ -141,6 +143,44 @@ export { BadgeSize }
141
143
 
142
144
  export { BadgeVariant }
143
145
 
146
+ /**
147
+ * Banner component for displaying notifications and alerts
148
+ *
149
+ * @example
150
+ * ```tsx
151
+ * <Banner variant="danger" icon={<AlertIcon />} onDismiss={() => {}}>
152
+ * You need to complete your payment
153
+ * </Banner>
154
+ *
155
+ * <Banner variant="warning">
156
+ * This action cannot be undone
157
+ * </Banner>
158
+ * ```
159
+ */
160
+ export declare const Banner: ForwardRefExoticComponent<BannerProps & RefAttributes<HTMLDivElement>>;
161
+
162
+ export declare interface BannerProps extends HTMLAttributes<HTMLDivElement> {
163
+ /**
164
+ * Visual style variant
165
+ * @default 'info'
166
+ */
167
+ variant?: Banner_2.Variant;
168
+ /**
169
+ * Icon to display on the left side
170
+ */
171
+ icon?: ReactNode;
172
+ /**
173
+ * Callback when dismiss button is clicked
174
+ */
175
+ onDismiss?: () => void;
176
+ /**
177
+ * Banner content (text, icons, etc.)
178
+ */
179
+ children?: React.ReactNode;
180
+ }
181
+
182
+ export { BannerVariant }
183
+
144
184
  /**
145
185
  * Button component with data-attribute state machine pattern
146
186
  *
package/dist/primitive.js CHANGED
@@ -1,193 +1,207 @@
1
- import { jsxs as v, jsx as u } from "react/jsx-runtime";
2
- import { buttonStyles as j, headingStyles as R, textStyles as k, avatarStyles as I, loaderStyles as w, badgeStyles as K, dotStyles as O, kbdStyles as U } from "@versaur/core/primitive";
3
- import { LoaderIcon as S, UserIcon as q } from "@versaur/icons";
4
- import { forwardRef as p, useState as z } from "react";
5
- import { u as h } from "./use-data-attrs-iPFyfiKN.js";
6
- import { c as g } from "./cx-B9vmfsc1.js";
7
- import { I as A } from "./tooltip-M8EGI3lZ.js";
8
- import { B as et, H as st, T as rt } from "./tooltip-M8EGI3lZ.js";
9
- const C = p(
1
+ import { jsxs as x, jsx as c } from "react/jsx-runtime";
2
+ import { buttonStyles as k, headingStyles as R, textStyles as w, avatarStyles as S, loaderStyles as K, badgeStyles as z, bannerStyles as A, dotStyles as C, kbdStyles as O } from "@versaur/core/primitive";
3
+ import { LoaderIcon as T, UserIcon as U, XIcon as X } from "@versaur/icons";
4
+ import { forwardRef as u, useState as q } from "react";
5
+ import { u as b } from "./use-data-attrs-iPFyfiKN.js";
6
+ import { c as p } from "./cx-B9vmfsc1.js";
7
+ import { I as B, B as F } from "./tooltip-M8EGI3lZ.js";
8
+ import { H as nt, T as lt } from "./tooltip-M8EGI3lZ.js";
9
+ const G = u(
10
10
  ({
11
11
  variant: a = "primary",
12
- size: o = "medium",
12
+ size: r = "medium",
13
13
  loading: t = !1,
14
14
  disabled: e = !1,
15
- pressed: r = !1,
15
+ pressed: o = !1,
16
16
  leftIcon: s,
17
17
  rightIcon: n,
18
- children: i,
19
- type: c = "button",
20
- onClick: f,
21
- className: b,
22
- ...d
18
+ children: l,
19
+ type: d = "button",
20
+ onClick: y,
21
+ className: h,
22
+ ...m
23
23
  }, N) => {
24
- const y = !!s, l = !!n, x = !!i;
25
- let m;
26
- y && l && x ? m = "both-text" : y && x ? m = "left-text" : l && x ? m = "right-text" : y && l ? m = "both" : y ? m = "left" : l && (m = "right");
27
- const D = h({
24
+ const g = !!s, i = !!n, v = !!l;
25
+ let f;
26
+ g && i && v ? f = "both-text" : g && v ? f = "left-text" : i && v ? f = "right-text" : g && i ? f = "both" : g ? f = "left" : i && (f = "right");
27
+ const H = b({
28
28
  disabled: e || t,
29
29
  loading: t,
30
- size: o,
30
+ size: r,
31
31
  variant: a,
32
- ...m && { iconConfig: m }
33
- }), H = (B) => {
32
+ ...f && { iconConfig: f }
33
+ }), j = (I) => {
34
34
  if (e || t) {
35
- B.preventDefault();
35
+ I.preventDefault();
36
36
  return;
37
37
  }
38
- f == null || f(B);
38
+ y == null || y(I);
39
39
  };
40
- return /* @__PURE__ */ v(
40
+ return /* @__PURE__ */ x(
41
41
  "button",
42
42
  {
43
43
  ref: N,
44
- type: c,
45
- className: g(j.button, b),
46
- "aria-pressed": r ? "true" : void 0,
44
+ type: d,
45
+ className: p(k.button, h),
46
+ "aria-pressed": o ? "true" : void 0,
47
47
  "aria-busy": t ? "true" : void 0,
48
48
  "aria-disabled": e || t ? "true" : void 0,
49
- ...D,
50
- ...d,
51
- onClick: H,
49
+ ...H,
50
+ ...m,
51
+ onClick: j,
52
52
  children: [
53
- t ? /* @__PURE__ */ u(A, { as: S, "aria-label": "Loading", "data-loading-icon": "loader" }) : null,
53
+ t ? /* @__PURE__ */ c(B, { as: T, "aria-label": "Loading", "data-loading-icon": "loader" }) : null,
54
54
  s,
55
- i,
55
+ l,
56
56
  n
57
57
  ]
58
58
  }
59
59
  );
60
60
  }
61
61
  );
62
- C.displayName = "Button";
63
- const F = p(
64
- ({ as: a = "h2", size: o, weight: t, intent: e, case: r, transform: s, children: n, className: i, ...c }, f) => {
65
- const b = a, d = h({
62
+ G.displayName = "Button";
63
+ const J = u(
64
+ ({ as: a = "h2", size: r, weight: t, intent: e, case: o, transform: s, children: n, className: l, ...d }, y) => {
65
+ const h = a, m = b({
66
66
  as: a,
67
- case: r,
67
+ case: o,
68
68
  intent: e,
69
- size: o,
69
+ size: r,
70
70
  transform: s,
71
71
  weight: t
72
72
  });
73
- return /* @__PURE__ */ u(b, { ref: f, className: g(R.heading, i), ...d, ...c, children: n });
73
+ return /* @__PURE__ */ c(h, { ref: y, className: p(R.heading, l), ...m, ...d, children: n });
74
74
  }
75
75
  );
76
- F.displayName = "Heading";
77
- const G = p(
78
- ({ as: a = "p", size: o, weight: t, intent: e, case: r, transform: s, children: n, className: i, ...c }, f) => {
79
- const b = a, d = h({
76
+ J.displayName = "Heading";
77
+ const M = u(
78
+ ({ as: a = "p", size: r, weight: t, intent: e, case: o, transform: s, children: n, className: l, ...d }, y) => {
79
+ const h = a, m = b({
80
80
  as: a,
81
- case: r,
81
+ case: o,
82
82
  intent: e,
83
- size: o,
83
+ size: r,
84
84
  transform: s,
85
85
  weight: t
86
86
  });
87
- return /* @__PURE__ */ u(b, { ref: f, className: g(k.text, i), ...d, ...c, children: n });
87
+ return /* @__PURE__ */ c(h, { ref: y, className: p(w.text, l), ...m, ...d, children: n });
88
88
  }
89
89
  );
90
- G.displayName = "Text";
91
- const T = p(
92
- ({ variant: a = "primary", size: o = "md", shape: t = "circle", children: e, className: r, ...s }, n) => {
93
- const i = h({ shape: t, size: o, variant: a }), c = e || /* @__PURE__ */ u(A, { as: q });
94
- return /* @__PURE__ */ u("span", { ref: n, className: g(I.avatar, r), role: "img", ...i, ...s, children: c });
90
+ M.displayName = "Text";
91
+ const L = u(
92
+ ({ variant: a = "primary", size: r = "md", shape: t = "circle", children: e, className: o, ...s }, n) => {
93
+ const l = b({ shape: t, size: r, variant: a }), d = e || /* @__PURE__ */ c(B, { as: U });
94
+ return /* @__PURE__ */ c("span", { ref: n, className: p(S.avatar, o), role: "img", ...l, ...s, children: d });
95
95
  }
96
96
  );
97
- T.displayName = "Avatar";
98
- const L = p(({ src: a, alt: o, onError: t, className: e, ...r }, s) => {
99
- const [n, i] = z(!1);
100
- return n ? null : /* @__PURE__ */ u(
97
+ L.displayName = "Avatar";
98
+ const D = u(({ src: a, alt: r, onError: t, className: e, ...o }, s) => {
99
+ const [n, l] = q(!1);
100
+ return n ? null : /* @__PURE__ */ c(
101
101
  "img",
102
102
  {
103
103
  ref: s,
104
- className: g(I["avatar-image"], e),
104
+ className: p(S["avatar-image"], e),
105
105
  src: a,
106
- alt: o,
107
- onError: (c) => {
108
- i(!0), t == null || t(c);
106
+ alt: r,
107
+ onError: (d) => {
108
+ l(!0), t == null || t(d);
109
109
  },
110
- ...r
110
+ ...o
111
111
  }
112
112
  );
113
113
  });
114
- L.displayName = "Avatar.Image";
115
- const W = Object.assign(T, {
116
- Image: L
117
- }), J = p(
118
- ({ type: a = "spinner", size: o = "sm", children: t, className: e, ...r }, s) => {
119
- const n = h({
120
- size: o,
114
+ D.displayName = "Avatar.Image";
115
+ const st = Object.assign(L, {
116
+ Image: D
117
+ }), P = u(
118
+ ({ type: a = "spinner", size: r = "sm", children: t, className: e, ...o }, s) => {
119
+ const n = b({
120
+ size: r,
121
121
  type: a
122
122
  });
123
- return /* @__PURE__ */ v("div", { ref: s, className: g(w.loader, e), ...n, ...r, children: [
124
- a === "spinner" && /* @__PURE__ */ u(A, { as: S, "aria-hidden": "true" }),
123
+ return /* @__PURE__ */ x("div", { ref: s, className: p(K.loader, e), ...n, ...o, children: [
124
+ a === "spinner" && /* @__PURE__ */ c(B, { as: T, "aria-hidden": "true" }),
125
125
  t
126
126
  ] });
127
127
  }
128
128
  );
129
- J.displayName = "Loader";
130
- const M = p(
129
+ P.displayName = "Loader";
130
+ const Q = u(
131
131
  ({
132
132
  variant: a = "primary",
133
- size: o = "medium",
133
+ size: r = "medium",
134
134
  shape: t = "rounded",
135
135
  iconLeft: e,
136
- iconRight: r,
136
+ iconRight: o,
137
137
  maxWidth: s,
138
138
  children: n,
139
- style: i,
140
- className: c,
141
- ...f
142
- }, b) => {
143
- const d = !!e, N = !!r, y = !!n;
144
- let l;
145
- d && N && y ? l = "both-text" : d && y ? l = "left-text" : N && y ? l = "right-text" : d && N ? l = "both" : d ? l = "left" : N && (l = "right");
146
- const x = h({
139
+ style: l,
140
+ className: d,
141
+ ...y
142
+ }, h) => {
143
+ const m = !!e, N = !!o, g = !!n;
144
+ let i;
145
+ m && N && g ? i = "both-text" : m && g ? i = "left-text" : N && g ? i = "right-text" : m && N ? i = "both" : m ? i = "left" : N && (i = "right");
146
+ const v = b({
147
147
  shape: t,
148
- size: o,
148
+ size: r,
149
149
  variant: a,
150
- ...l && { iconConfig: l }
151
- }), m = {
152
- ...i,
150
+ ...i && { iconConfig: i }
151
+ }), f = {
152
+ ...l,
153
153
  ...s && { "--vers-comp-badge-max-width": s }
154
154
  };
155
- return /* @__PURE__ */ v("div", { ref: b, className: g(K.badge, c), ...x, ...f, style: m, children: [
155
+ return /* @__PURE__ */ x("div", { ref: h, className: p(z.badge, d), ...v, ...y, style: f, children: [
156
156
  e,
157
157
  n,
158
- r
158
+ o
159
159
  ] });
160
160
  }
161
161
  );
162
- M.displayName = "Badge";
163
- const P = p(
164
- ({ variant: a = "primary", size: o = "medium", className: t, ...e }, r) => {
165
- const s = h({
166
- size: o,
162
+ Q.displayName = "Badge";
163
+ const V = u(
164
+ ({ variant: a = "info", icon: r, onDismiss: t, children: e, className: o, ...s }, n) => {
165
+ const l = b({
167
166
  variant: a
168
167
  });
169
- return /* @__PURE__ */ u("span", { ref: r, className: g(O.dot, t), ...s, ...e });
168
+ return /* @__PURE__ */ x("div", { ref: n, className: p(A.banner, o), ...l, ...s, children: [
169
+ r && /* @__PURE__ */ c("div", { className: A.icon, children: r }),
170
+ /* @__PURE__ */ c("div", { className: A.content, children: e }),
171
+ t && /* @__PURE__ */ c(F, { as: X, variant: "ghost", size: "small", onClick: t, "aria-label": "Dismiss banner" })
172
+ ] });
173
+ }
174
+ );
175
+ V.displayName = "Banner";
176
+ const Y = u(
177
+ ({ variant: a = "primary", size: r = "medium", className: t, ...e }, o) => {
178
+ const s = b({
179
+ size: r,
180
+ variant: a
181
+ });
182
+ return /* @__PURE__ */ c("span", { ref: o, className: p(C.dot, t), ...s, ...e });
170
183
  }
171
184
  );
172
- P.displayName = "Dot";
173
- const Q = p(
174
- ({ variant: a = "filled", size: o = "md", children: t, className: e, ...r }, s) => {
175
- const n = h({ size: o, variant: a });
176
- return /* @__PURE__ */ u("kbd", { ref: s, className: g(U.kbd, e), ...n, ...r, children: t });
185
+ Y.displayName = "Dot";
186
+ const Z = u(
187
+ ({ variant: a = "filled", size: r = "md", children: t, className: e, ...o }, s) => {
188
+ const n = b({ size: r, variant: a });
189
+ return /* @__PURE__ */ c("kbd", { ref: s, className: p(O.kbd, e), ...n, ...o, children: t });
177
190
  }
178
191
  );
179
- Q.displayName = "Kbd";
192
+ Z.displayName = "Kbd";
180
193
  export {
181
- W as Avatar,
182
- M as Badge,
183
- C as Button,
184
- et as ButtonIcon,
185
- P as Dot,
186
- F as Heading,
187
- st as Hr,
188
- A as Icon,
189
- Q as Kbd,
190
- J as Loader,
191
- G as Text,
192
- rt as Tooltip
194
+ st as Avatar,
195
+ Q as Badge,
196
+ V as Banner,
197
+ G as Button,
198
+ F as ButtonIcon,
199
+ Y as Dot,
200
+ J as Heading,
201
+ nt as Hr,
202
+ B as Icon,
203
+ Z as Kbd,
204
+ P as Loader,
205
+ M as Text,
206
+ lt as Tooltip
193
207
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versaur/react",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "React components for Versaur Design System",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,7 +48,7 @@
48
48
  "peerDependencies": {
49
49
  "react": "^18.0.0 || ^19.0.0",
50
50
  "react-dom": "^18.0.0 || ^19.0.0",
51
- "@versaur/core": "0.0.3",
51
+ "@versaur/core": "0.0.5",
52
52
  "@versaur/icons": "1.0.0"
53
53
  },
54
54
  "scripts": {