@versini/ui-button 7.1.5 → 7.1.6

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.
@@ -1,132 +1,32 @@
1
- import { jsx as o, Fragment as p, jsxs as r } from "react/jsx-runtime";
2
- import w, { useState as u, useEffect as f } from "react";
3
- import { ButtonIcon as _ } from "./ButtonIcon.js";
4
- import v from "clsx";
5
- const m = ({
6
- children: e,
7
- fill: c,
8
- viewBox: s,
9
- className: i,
10
- defaultViewBox: t,
11
- size: n,
12
- title: l,
13
- semantic: a = !1,
14
- ...d
15
- }) => {
16
- const h = v(n, i);
17
- return /* @__PURE__ */ o(p, { children: /* @__PURE__ */ r(
18
- "svg",
19
- {
20
- xmlns: "http://www.w3.org/2000/svg",
21
- className: h,
22
- viewBox: s || t,
23
- fill: c || "currentColor",
24
- role: "img",
25
- "aria-hidden": !a,
26
- focusable: !1,
27
- ...d,
28
- children: [
29
- l && a && /* @__PURE__ */ o("title", { children: l }),
30
- e
31
- ]
32
- }
33
- ) });
34
- };
35
- /*!
36
- @versini/ui-svgicon v4.2.0
37
- © 2025 gizmette.com
38
- */
39
- try {
40
- window.__VERSINI_UI_SVGICON__ || (window.__VERSINI_UI_SVGICON__ = {
41
- version: "4.2.0",
42
- buildTime: "05/17/2025 06:18 PM EDT",
43
- homepage: "https://github.com/aversini/ui-components",
44
- license: "MIT"
45
- });
46
- } catch {
47
- }
48
- const I = ({
49
- className: e,
50
- viewBox: c,
51
- title: s,
52
- monotone: i,
53
- ...t
54
- }) => /* @__PURE__ */ r(
55
- m,
56
- {
57
- defaultViewBox: "0 0 448 512",
58
- size: "size-5",
59
- viewBox: c,
60
- className: e,
61
- title: s || "Copied",
62
- ...t,
63
- children: [
64
- /* @__PURE__ */ o(
65
- "path",
66
- {
67
- d: "M0 96v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96m104 160c0-6.1 2.3-12.3 7-17 9.4-9.4 24.6-9.4 33.9 0l47 47 111-111c4.7-4.7 10.8-7 17-7s12.3 2.3 17 7c2.3 2.3 4.1 5 5.3 7.9.6 1.5 1 2.9 1.3 4.4.2 1.1.3 2.2.3 2.2.1 1.2.1 1.2.1 2.5-.1 1.5-.1 1.9-.1 2.3-.1.7-.2 1.5-.3 2.2-.3 1.5-.7 3-1.3 4.4-1.2 2.9-2.9 5.6-5.3 7.9l-128 128c-4.7 4.7-10.8 7-17 7s-12.3-2.3-17-7l-64-64c-4.7-4.7-7-10.8-7-17z",
68
- opacity: ".4"
69
- }
70
- ),
71
- /* @__PURE__ */ o("path", { d: "M337 175c9.4 9.4 9.4 24.6 0 33.9L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0z" })
72
- ]
73
- }
74
- ), x = ({
75
- className: e,
76
- viewBox: c,
77
- title: s,
78
- monotone: i,
79
- ...t
80
- }) => /* @__PURE__ */ o(
81
- m,
82
- {
83
- defaultViewBox: "0 0 512 512",
84
- size: "size-5",
85
- viewBox: c,
86
- className: e,
87
- title: s || "Copy",
88
- ...t,
89
- children: /* @__PURE__ */ o("path", { d: "M64 464h224c8.8 0 16-7.2 16-16v-64h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16m160-160h224c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16m-64-16V64c0-35.3 28.7-64 64-64h224c35.3 0 64 28.7 64 64v224c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64" })
90
- }
91
- );
92
- /*!
93
- @versini/ui-icons v4.10.0
94
- © 2025 gizmette.com
95
- */
96
- try {
97
- window.__VERSINI_UI_ICONS__ || (window.__VERSINI_UI_ICONS__ = {
98
- version: "4.10.0",
99
- buildTime: "05/17/2025 06:18 PM EDT",
100
- homepage: "https://github.com/aversini/ui-components",
101
- license: "MIT"
102
- });
103
- } catch {
104
- }
105
- const N = w.forwardRef(({ copyToClipboard: e, ...c }, s) => {
106
- const [i, t] = u(!1), n = () => {
107
- typeof e == "string" && (navigator.clipboard.writeText(e), t(!0)), typeof e == "function" && (navigator.clipboard.writeText(e()), t(!0));
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { IconCopied as f, IconCopy as p } from "@versini/ui-icons";
3
+ import l, { useState as c, useEffect as d } from "react";
4
+ import { ButtonIcon as m } from "./ButtonIcon.js";
5
+ const u = l.forwardRef(({ copyToClipboard: t, ...n }, s) => {
6
+ const [e, o] = c(!1), a = () => {
7
+ typeof t == "string" && (navigator.clipboard.writeText(t), o(!0)), typeof t == "function" && (navigator.clipboard.writeText(t()), o(!0));
108
8
  };
109
- return f(() => {
110
- let l;
111
- return i && (l = window.setTimeout(() => {
112
- t(!1);
9
+ return d(() => {
10
+ let r;
11
+ return e && (r = window.setTimeout(() => {
12
+ o(!1);
113
13
  }, 3e3)), () => {
114
- clearTimeout(l);
14
+ clearTimeout(r);
115
15
  };
116
- }, [i]), /* @__PURE__ */ o(
117
- _,
16
+ }, [e]), /* @__PURE__ */ i(
17
+ m,
118
18
  {
119
- ...c,
19
+ ...n,
120
20
  size: "small",
121
21
  ref: s,
122
- label: i ? "Copied to clipboard" : "Copy to clipboard",
123
- onClick: n,
124
- disabled: i,
125
- children: i ? /* @__PURE__ */ o(I, { size: "size-3" }) : /* @__PURE__ */ o(x, { size: "size-3" })
22
+ label: e ? "Copied to clipboard" : "Copy to clipboard",
23
+ onClick: a,
24
+ disabled: e,
25
+ children: e ? /* @__PURE__ */ i(f, { size: "size-3" }) : /* @__PURE__ */ i(p, { size: "size-3" })
126
26
  }
127
27
  );
128
28
  });
129
- N.displayName = "ButtonCopy";
29
+ u.displayName = "ButtonCopy";
130
30
  export {
131
- N as ButtonCopy
31
+ u as ButtonCopy
132
32
  };
@@ -1,169 +1,135 @@
1
- import { jsx as y, jsxs as U } from "react/jsx-runtime";
2
- import Y, { useRef as m, useCallback as J, useEffect as T, useMemo as j, useState as K, useLayoutEffect as D } from "react";
3
- import { BaseButton_private as Q } from "../../chunks/BaseButton.BpaKdSwW.js";
4
- import { getButtonClasses as V, TYPE_ICON as X, getIconClasses as Z, getButtonIconLabelClasses as z } from "../../chunks/utilities.CGmHp-Rn.js";
5
- function ee() {
6
- const t = m(!1);
7
- return T(() => (t.current = !0, () => {
8
- t.current = !1;
9
- }), []), J(() => t.current, []);
10
- }
11
- function te(t) {
12
- return j(() => t.every((r) => r == null) ? () => {
13
- } : (r) => {
14
- t.forEach((e) => {
15
- typeof e == "function" ? e(r) : e != null && (e.current = r);
16
- });
17
- }, [...t]);
18
- }
19
- const re = {
20
- x: 0,
21
- y: 0,
22
- width: 0,
23
- height: 0,
24
- top: 0,
25
- left: 0,
26
- bottom: 0,
27
- right: 0
28
- };
29
- function A(t) {
30
- const r = ee(), e = m(0), s = m(null), [p, C] = K(re), d = j(() => typeof ResizeObserver > "u" ? null : new ResizeObserver((w) => {
31
- const i = w[0];
32
- i && (cancelAnimationFrame(e.current), e.current = requestAnimationFrame(() => {
33
- s.current && r() && C(i.contentRect);
34
- }));
35
- }), [r]);
36
- return T(() => (s.current && d?.observe(s.current, t), () => {
37
- d?.disconnect(), e.current && cancelAnimationFrame(e.current);
38
- }), [d, t]), [s, p];
39
- }
40
- const b = {
1
+ import { jsx as u, jsxs as Y } from "react/jsx-runtime";
2
+ import { useResizeObserver as C, useMergeRefs as k } from "@versini/ui-hooks";
3
+ import q, { useRef as b, useLayoutEffect as v, useEffect as F } from "react";
4
+ import { BaseButton_private as J } from "../../chunks/BaseButton.BpaKdSwW.js";
5
+ import { getButtonClasses as K, TYPE_ICON as Q, getIconClasses as V, getButtonIconLabelClasses as X } from "../../chunks/utilities.CGmHp-Rn.js";
6
+ const p = {
41
7
  small: 24,
42
8
  // w-6
43
9
  medium: 32,
44
10
  // w-8
45
11
  large: 48
46
12
  // w-12
47
- }, ne = {
13
+ }, Z = {
48
14
  small: 16,
49
15
  // px-2 x 2
50
16
  medium: 24,
51
17
  // px-3 x 2
52
18
  large: 32
53
19
  // px-4 x 2
54
- }, ce = 2, se = 300, ue = Y.forwardRef(
20
+ }, z = 2, ee = 300, te = q.forwardRef(
55
21
  ({
56
- children: t,
57
- disabled: r = !1,
58
- mode: e = "system",
59
- focusMode: s = "system",
60
- fullWidth: p = !1,
61
- className: C,
62
- type: d = "button",
63
- raw: w = !1,
64
- noBorder: i = !1,
65
- "aria-label": F,
66
- label: H,
67
- size: u = "medium",
68
- labelRight: h,
69
- labelLeft: R,
70
- noBackground: S = !1,
22
+ children: m,
23
+ disabled: a = !1,
24
+ mode: o = "system",
25
+ focusMode: d = "system",
26
+ fullWidth: R = !1,
27
+ className: O,
28
+ type: A = "button",
29
+ raw: T = !1,
30
+ noBorder: I = !1,
31
+ "aria-label": E,
32
+ label: j,
33
+ size: r = "medium",
34
+ labelRight: f,
35
+ labelLeft: i,
36
+ noBackground: H = !1,
71
37
  align: W = "center",
72
38
  radius: _ = "large",
73
- variant: g = "secondary",
39
+ variant: x = "secondary",
74
40
  iconClassName: M,
75
- animated: l = !1,
41
+ animated: s = !1,
76
42
  ...P
77
- }, $) => {
78
- const k = V({
79
- type: X,
80
- mode: e,
81
- focusMode: s,
82
- fullWidth: p,
83
- disabled: r,
84
- raw: w,
85
- className: C,
86
- noBorder: i,
87
- size: u,
88
- labelRight: h,
89
- labelLeft: R,
90
- noBackground: S,
43
+ }, S) => {
44
+ const $ = K({
45
+ type: Q,
46
+ mode: o,
47
+ focusMode: d,
48
+ fullWidth: R,
49
+ disabled: a,
50
+ raw: T,
51
+ className: O,
52
+ noBorder: I,
53
+ size: r,
54
+ labelRight: f,
55
+ labelLeft: i,
56
+ noBackground: H,
91
57
  align: W,
92
58
  radius: _,
93
- variant: g,
94
- animated: l
95
- }), q = Z({ mode: e, raw: w, iconClassName: M, variant: g }), B = z({ animated: l }), G = "flex items-center justify-center relative w-full h-full overflow-hidden", [n, N] = A(), [c, v] = A(), [I, O] = A(), x = m(0), o = m(null), a = m(null), L = te([$, o]);
96
- return D(() => {
97
- I && I.current && l && (x.current = O.width + ne[u] + (i ? 0 : ce), o.current && !o.current.style.width && (o.current.style.width = `${b[u]}px`));
98
- }, [O, I, u, i, l]), D(() => {
99
- if (o && o.current && l) {
100
- let f = b[u];
101
- h && n && N.width > 0 ? f = N.width + x.current : R && c && v.width > 0 && (f = v.width + x.current), a.current && clearTimeout(a.current), f !== parseInt(o.current.style.width || "0", 10) && (n.current && (n.current.style.opacity = "0"), c.current && (c.current.style.opacity = "0"), o.current.style.width = `${f}px`, f > b[u] && (a.current = setTimeout(() => {
102
- n.current && h && (n.current.style.opacity = "1"), c.current && R && (c.current.style.opacity = "1"), a.current = null;
103
- }, se * 0.8))), f === b[u] && (n.current && (n.current.style.opacity = "0"), c.current && (c.current.style.opacity = "0"));
59
+ variant: x,
60
+ animated: s
61
+ }), G = V({ mode: o, raw: T, iconClassName: M, variant: x }), B = X({ animated: s }), L = "flex items-center justify-center relative w-full h-full overflow-hidden", [e, h] = C(), [t, w] = C(), [y, g] = C(), N = b(0), c = b(null), n = b(null), U = k([S, c]);
62
+ return v(() => {
63
+ y && y.current && s && (N.current = g.width + Z[r] + (I ? 0 : z), c.current && !c.current.style.width && (c.current.style.width = `${p[r]}px`));
64
+ }, [g, y, r, I, s]), v(() => {
65
+ if (c && c.current && s) {
66
+ let l = p[r];
67
+ f && e && h.width > 0 ? l = h.width + N.current : i && t && w.width > 0 && (l = w.width + N.current), n.current && clearTimeout(n.current), l !== parseInt(c.current.style.width || "0", 10) && (e.current && (e.current.style.opacity = "0"), t.current && (t.current.style.opacity = "0"), c.current.style.width = `${l}px`, l > p[r] && (n.current = setTimeout(() => {
68
+ e.current && f && (e.current.style.opacity = "1"), t.current && i && (t.current.style.opacity = "1"), n.current = null;
69
+ }, ee * 0.8))), l === p[r] && (e.current && (e.current.style.opacity = "0"), t.current && (t.current.style.opacity = "0"));
104
70
  }
105
71
  }, [
106
- N,
107
72
  h,
108
- n,
109
- v,
110
- R,
111
- c,
112
- u,
113
- l
114
- ]), T(() => () => {
115
- a.current && clearTimeout(a.current);
116
- }, []), /* @__PURE__ */ y(
117
- Q,
73
+ f,
74
+ e,
75
+ w,
76
+ i,
77
+ t,
78
+ r,
79
+ s
80
+ ]), F(() => () => {
81
+ n.current && clearTimeout(n.current);
82
+ }, []), /* @__PURE__ */ u(
83
+ J,
118
84
  {
119
- ref: L,
120
- className: k,
121
- disabled: r,
122
- type: d,
123
- "aria-label": F || H,
85
+ ref: U,
86
+ className: $,
87
+ disabled: a,
88
+ type: A,
89
+ "aria-label": E || j,
124
90
  ...P,
125
- children: /* @__PURE__ */ U("div", { className: G, children: [
126
- /* @__PURE__ */ y(
127
- E,
91
+ children: /* @__PURE__ */ Y("div", { className: L, children: [
92
+ /* @__PURE__ */ u(
93
+ D,
128
94
  {
129
- label: R,
130
- labelRef: c,
95
+ label: i,
96
+ labelRef: t,
131
97
  labelClass: B,
132
98
  labelInnerClass: "pr-2",
133
- initiallyHidden: l
99
+ initiallyHidden: s
134
100
  }
135
101
  ),
136
- /* @__PURE__ */ y("span", { ref: I, className: q, children: t }),
137
- /* @__PURE__ */ y(
138
- E,
102
+ /* @__PURE__ */ u("span", { ref: y, className: G, children: m }),
103
+ /* @__PURE__ */ u(
104
+ D,
139
105
  {
140
- label: h,
141
- labelRef: n,
106
+ label: f,
107
+ labelRef: e,
142
108
  labelClass: B,
143
109
  labelInnerClass: "pl-2",
144
- initiallyHidden: l
110
+ initiallyHidden: s
145
111
  }
146
112
  )
147
113
  ] })
148
114
  }
149
115
  );
150
116
  }
151
- ), E = ({
152
- labelRef: t,
153
- labelClass: r,
154
- label: e,
155
- labelInnerClass: s,
156
- initiallyHidden: p = !1
157
- }) => /* @__PURE__ */ y(
117
+ ), D = ({
118
+ labelRef: m,
119
+ labelClass: a,
120
+ label: o,
121
+ labelInnerClass: d,
122
+ initiallyHidden: R = !1
123
+ }) => /* @__PURE__ */ u(
158
124
  "span",
159
125
  {
160
- ref: t,
161
- className: r,
162
- style: p ? { opacity: 0 } : void 0,
163
- children: e && /* @__PURE__ */ y("span", { className: s, children: e })
126
+ ref: m,
127
+ className: a,
128
+ style: R ? { opacity: 0 } : void 0,
129
+ children: o && /* @__PURE__ */ u("span", { className: d, children: o })
164
130
  }
165
131
  );
166
- ue.displayName = "ButtonIcon";
132
+ te.displayName = "ButtonIcon";
167
133
  export {
168
- ue as ButtonIcon
134
+ te as ButtonIcon
169
135
  };
package/dist/index.js CHANGED
@@ -7,13 +7,13 @@ import { jsx as e } from "react/jsx-runtime";
7
7
  import n from "clsx";
8
8
  import m from "react";
9
9
  /*!
10
- @versini/ui-button v7.1.5
10
+ @versini/ui-button v7.1.6
11
11
  © 2025 gizmette.com
12
12
  */
13
13
  try {
14
14
  window.__VERSINI_UI_BUTTON__ || (window.__VERSINI_UI_BUTTON__ = {
15
- version: "7.1.5",
16
- buildTime: "08/23/2025 12:21 PM EDT",
15
+ version: "7.1.6",
16
+ buildTime: "09/01/2025 02:18 PM EDT",
17
17
  homepage: "https://github.com/aversini/ui-components",
18
18
  license: "MIT"
19
19
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/ui-button",
3
- "version": "7.1.5",
3
+ "version": "7.1.6",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -42,11 +42,11 @@
42
42
  },
43
43
  "devDependencies": {
44
44
  "@testing-library/jest-dom": "6.8.0",
45
- "@versini/ui-types": "../ui-types"
45
+ "@versini/ui-types": "5.0.7"
46
46
  },
47
47
  "dependencies": {
48
48
  "@tailwindcss/typography": "0.5.16",
49
- "@versini/ui-hooks": "../ui-hooks",
49
+ "@versini/ui-hooks": "4.7.8",
50
50
  "@versini/ui-icons": "4.10.0",
51
51
  "clsx": "2.1.1",
52
52
  "tailwindcss": "4.1.12"
@@ -54,5 +54,5 @@
54
54
  "sideEffects": [
55
55
  "**/*.css"
56
56
  ],
57
- "gitHead": "d568e20474c6c87f836c4cb6548f2cc0143a353c"
57
+ "gitHead": "c577149643ec36cad454587166e62410a77aed38"
58
58
  }