asterui 0.12.45 → 0.12.47

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 (50) hide show
  1. package/dist/components/Button.d.ts +0 -1
  2. package/dist/components/Button.js +8 -9
  3. package/dist/components/Button.js.map +1 -1
  4. package/dist/components/Checkbox.d.ts +4 -1
  5. package/dist/components/Checkbox.js +106 -77
  6. package/dist/components/Checkbox.js.map +1 -1
  7. package/dist/components/ConfigProvider.d.ts +59 -0
  8. package/dist/components/ConfigProvider.js +46 -0
  9. package/dist/components/ConfigProvider.js.map +1 -0
  10. package/dist/components/CopyButton.d.ts +3 -0
  11. package/dist/components/CopyButton.js +90 -64
  12. package/dist/components/CopyButton.js.map +1 -1
  13. package/dist/contexts/IconSizeContext.d.ts +2 -0
  14. package/dist/contexts/IconSizeContext.js +6 -0
  15. package/dist/contexts/IconSizeContext.js.map +1 -0
  16. package/dist/index.d.ts +10 -4
  17. package/dist/index.js +235 -208
  18. package/dist/index.js.map +1 -1
  19. package/dist/locale/de-DE.d.ts +3 -0
  20. package/dist/locale/de-DE.js +100 -0
  21. package/dist/locale/de-DE.js.map +1 -0
  22. package/dist/locale/en-CA.d.ts +3 -0
  23. package/dist/locale/en-CA.js +11 -0
  24. package/dist/locale/en-CA.js.map +1 -0
  25. package/dist/locale/en-GB.d.ts +3 -0
  26. package/dist/locale/en-GB.js +11 -0
  27. package/dist/locale/en-GB.js.map +1 -0
  28. package/dist/locale/en-US.d.ts +3 -0
  29. package/dist/locale/en-US.js +100 -0
  30. package/dist/locale/en-US.js.map +1 -0
  31. package/dist/locale/es-ES.d.ts +3 -0
  32. package/dist/locale/es-ES.js +100 -0
  33. package/dist/locale/es-ES.js.map +1 -0
  34. package/dist/locale/fr-FR.d.ts +3 -0
  35. package/dist/locale/fr-FR.js +100 -0
  36. package/dist/locale/fr-FR.js.map +1 -0
  37. package/dist/locale/index.d.ts +107 -0
  38. package/dist/locale/ja-JP.d.ts +3 -0
  39. package/dist/locale/ja-JP.js +100 -0
  40. package/dist/locale/ja-JP.js.map +1 -0
  41. package/dist/locale/ko-KR.d.ts +3 -0
  42. package/dist/locale/ko-KR.js +100 -0
  43. package/dist/locale/ko-KR.js.map +1 -0
  44. package/dist/locale/pt-BR.d.ts +3 -0
  45. package/dist/locale/pt-BR.js +100 -0
  46. package/dist/locale/pt-BR.js.map +1 -0
  47. package/dist/locale/zh-CN.d.ts +3 -0
  48. package/dist/locale/zh-CN.js +100 -0
  49. package/dist/locale/zh-CN.js.map +1 -0
  50. package/package.json +1 -1
@@ -1,48 +1,68 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { useClipboard as z } from "../hooks/useClipboard.js";
3
- const W = () => /* @__PURE__ */ n(
4
- "svg",
5
- {
6
- className: "w-4 h-4",
7
- fill: "none",
8
- viewBox: "0 0 24 24",
9
- stroke: "currentColor",
10
- children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" })
11
- }
12
- ), E = () => /* @__PURE__ */ n(
13
- "svg",
14
- {
15
- className: "w-4 h-4",
16
- fill: "none",
17
- viewBox: "0 0 24 24",
18
- stroke: "currentColor",
19
- children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "m4.5 12.75 6 6 9-13.5" })
20
- }
21
- ), F = ({
22
- text: l,
23
- timeout: u = 2e3,
24
- color: t,
25
- variant: o,
26
- size: d = "md",
27
- shape: e,
28
- icon: b,
29
- copiedIcon: p,
30
- children: h,
31
- copiedChildren: m,
32
- onCopy: f,
33
- onError: C,
34
- showTooltip: k = !1,
35
- tooltipText: c = "Copy",
36
- copiedTooltipText: r = "Copied!",
37
- className: y = "",
38
- disabled: a,
39
- onClick: g,
40
- ...v
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { useContext as f } from "react";
3
+ import { useClipboard as M } from "../hooks/useClipboard.js";
4
+ import { IconSizeContext as r } from "../contexts/IconSizeContext.js";
5
+ const C = {
6
+ xs: "w-3.5 h-3.5",
7
+ sm: "w-3.5 h-3.5",
8
+ md: "w-4 h-4",
9
+ lg: "w-5 h-5",
10
+ xl: "w-6 h-6"
11
+ }, P = () => {
12
+ const o = f(r) ?? "md";
13
+ return /* @__PURE__ */ t(
14
+ "svg",
15
+ {
16
+ className: C[o],
17
+ fill: "none",
18
+ viewBox: "0 0 24 24",
19
+ stroke: "currentColor",
20
+ children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" })
21
+ }
22
+ );
23
+ }, V = () => {
24
+ const o = f(r) ?? "md";
25
+ return /* @__PURE__ */ t(
26
+ "svg",
27
+ {
28
+ className: C[o],
29
+ fill: "none",
30
+ viewBox: "0 0 24 24",
31
+ stroke: "currentColor",
32
+ children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "m4.5 12.75 6 6 9-13.5" })
33
+ }
34
+ );
35
+ }, p = {
36
+ "top-right": "absolute top-2 right-2",
37
+ "top-left": "absolute top-2 left-2",
38
+ "bottom-right": "absolute bottom-2 right-2",
39
+ "bottom-left": "absolute bottom-2 left-2"
40
+ }, A = ({
41
+ text: o,
42
+ timeout: g = 2e3,
43
+ color: c,
44
+ variant: a,
45
+ size: l = "md",
46
+ shape: i,
47
+ position: s,
48
+ icon: k,
49
+ copiedIcon: y,
50
+ children: v,
51
+ copiedChildren: w,
52
+ onCopy: x,
53
+ onError: I,
54
+ showTooltip: u = !1,
55
+ tooltipText: b = "Copy",
56
+ copiedTooltipText: d = "Copied!",
57
+ className: B = "",
58
+ disabled: m,
59
+ onClick: j,
60
+ ...z
41
61
  }) => {
42
- const { copy: w, copied: s } = z(u), x = async (q) => {
43
- if (g?.(q), a) return;
44
- await w(l) ? f?.() : C?.(new Error("Failed to copy to clipboard"));
45
- }, I = {
62
+ const { copy: N, copied: n } = M(g), L = async (e) => {
63
+ if (j?.(e), m) return;
64
+ await N(o) ? x?.() : I?.(new Error("Failed to copy to clipboard"));
65
+ }, q = {
46
66
  primary: "btn-primary",
47
67
  secondary: "btn-secondary",
48
68
  accent: "btn-accent",
@@ -51,46 +71,52 @@ const W = () => /* @__PURE__ */ n(
51
71
  warning: "btn-warning",
52
72
  error: "btn-error",
53
73
  neutral: "btn-neutral"
54
- }, B = {
74
+ }, S = {
55
75
  solid: "",
56
76
  outline: "btn-outline",
57
77
  dash: "btn-dash",
58
78
  soft: "btn-soft",
59
79
  ghost: "btn-ghost",
60
80
  link: "btn-link"
61
- }, N = {
81
+ }, W = {
62
82
  xs: "btn-xs",
63
83
  sm: "btn-sm",
64
84
  md: "",
65
85
  lg: "btn-lg",
66
86
  xl: "btn-xl"
67
- }, j = {
87
+ }, E = {
68
88
  square: "btn-square",
69
89
  circle: "btn-circle"
70
- }, L = [
90
+ }, F = [
71
91
  "btn",
72
- t && I[t],
73
- s && "btn-success",
74
- o && B[o],
75
- N[d],
76
- e && j[e],
77
- y
78
- ].filter(Boolean).join(" "), i = /* @__PURE__ */ n(
92
+ c && q[c],
93
+ n && "btn-success",
94
+ a && S[a],
95
+ W[l],
96
+ i && E[i],
97
+ // Only add position classes if not using tooltip (tooltip wrapper gets them instead)
98
+ !u && s && p[s],
99
+ B
100
+ ].filter(Boolean).join(" "), H = n ? w ?? (y ?? /* @__PURE__ */ t(V, {})) : v ?? (k ?? /* @__PURE__ */ t(P, {})), h = /* @__PURE__ */ t(
79
101
  "button",
80
102
  {
81
103
  type: "button",
82
- className: L,
83
- onClick: x,
84
- disabled: a,
85
- "aria-label": s ? r : c,
86
- ...v,
87
- children: s ? m ?? (p ?? /* @__PURE__ */ n(E, {})) : h ?? (b ?? /* @__PURE__ */ n(W, {}))
104
+ className: F,
105
+ onClick: L,
106
+ disabled: m,
107
+ "aria-label": n ? d : b,
108
+ ...z,
109
+ children: /* @__PURE__ */ t(r.Provider, { value: l, children: H })
88
110
  }
89
111
  );
90
- return k ? /* @__PURE__ */ n("div", { className: "tooltip", "data-tip": s ? r : c, children: i }) : i;
112
+ if (u) {
113
+ const e = ["tooltip", s && p[s]].filter(Boolean).join(" ");
114
+ return /* @__PURE__ */ t("div", { className: e, "data-tip": n ? d : b, children: h });
115
+ }
116
+ return h;
91
117
  };
92
- F.displayName = "CopyButton";
118
+ A.displayName = "CopyButton";
93
119
  export {
94
- F as CopyButton
120
+ A as CopyButton
95
121
  };
96
122
  //# sourceMappingURL=CopyButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","sources":["../../src/components/CopyButton.tsx"],"sourcesContent":["import React from 'react'\nimport { useClipboard } from '../hooks/useClipboard'\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onError'> {\n /** Text to copy to clipboard */\n text: string\n /** Duration in ms to show copied state */\n timeout?: number\n /** Button color */\n color?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral'\n /** Button style variant */\n variant?: 'solid' | 'outline' | 'dash' | 'soft' | 'ghost' | 'link'\n /** Button size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Button shape */\n shape?: 'square' | 'circle'\n /** Custom icon for default state */\n icon?: React.ReactNode\n /** Custom icon for copied state */\n copiedIcon?: React.ReactNode\n /** Custom content for default state (overrides icon) */\n children?: React.ReactNode\n /** Custom content for copied state */\n copiedChildren?: React.ReactNode\n /** Callback when copy succeeds */\n onCopy?: () => void\n /** Callback when copy fails */\n onError?: (error: Error) => void\n /** Show tooltip with copy status */\n showTooltip?: boolean\n /** Tooltip text for default state */\n tooltipText?: string\n /** Tooltip text for copied state */\n copiedTooltipText?: string\n}\n\nconst CopyIcon: React.FC = () => (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n)\n\nconst CheckIcon: React.FC = () => (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"m4.5 12.75 6 6 9-13.5\" />\n </svg>\n)\n\nexport const CopyButton: React.FC<CopyButtonProps> = ({\n text,\n timeout = 2000,\n color,\n variant,\n size = 'md',\n shape,\n icon,\n copiedIcon,\n children,\n copiedChildren,\n onCopy,\n onError,\n showTooltip = false,\n tooltipText = 'Copy',\n copiedTooltipText = 'Copied!',\n className = '',\n disabled,\n onClick,\n ...rest\n}) => {\n const { copy, copied } = useClipboard(timeout)\n\n const handleClick = async (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e)\n if (disabled) return\n\n const success = await copy(text)\n if (success) {\n onCopy?.()\n } else {\n onError?.(new Error('Failed to copy to clipboard'))\n }\n }\n\n const colorClasses = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n neutral: 'btn-neutral',\n }\n\n const variantClasses = {\n solid: '',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n }\n\n const sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n xl: 'btn-xl',\n }\n\n const shapeClasses = {\n square: 'btn-square',\n circle: 'btn-circle',\n }\n\n const classes = [\n 'btn',\n color && colorClasses[color],\n copied && 'btn-success',\n variant && variantClasses[variant],\n sizeClasses[size],\n shape && shapeClasses[shape],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const defaultIcon = icon ?? <CopyIcon />\n const successIcon = copiedIcon ?? <CheckIcon />\n\n const content = copied\n ? (copiedChildren ?? successIcon)\n : (children ?? defaultIcon)\n\n const button = (\n <button\n type=\"button\"\n className={classes}\n onClick={handleClick}\n disabled={disabled}\n aria-label={copied ? copiedTooltipText : tooltipText}\n {...rest}\n >\n {content}\n </button>\n )\n\n if (showTooltip) {\n return (\n <div className=\"tooltip\" data-tip={copied ? copiedTooltipText : tooltipText}>\n {button}\n </div>\n )\n }\n\n return button\n}\n\nCopyButton.displayName = 'CopyButton'\n"],"names":["CopyIcon","jsx","CheckIcon","CopyButton","text","timeout","color","variant","size","shape","icon","copiedIcon","children","copiedChildren","onCopy","onError","showTooltip","tooltipText","copiedTooltipText","className","disabled","onClick","rest","copy","copied","useClipboard","handleClick","e","colorClasses","variantClasses","sizeClasses","shapeClasses","classes","button"],"mappings":";;AAoCA,MAAMA,IAAqB,MACzB,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,MAAK;AAAA,IACL,SAAQ;AAAA,IACR,QAAO;AAAA,IAEP,UAAA,gBAAAA,EAAC,UAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAY,KAAI,GAAE,wHAAA,CAAwH;AAAA,EAAA;AAC/L,GAGIC,IAAsB,MAC1B,gBAAAD;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,MAAK;AAAA,IACL,SAAQ;AAAA,IACR,QAAO;AAAA,IAEP,UAAA,gBAAAA,EAAC,UAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAY,KAAI,GAAE,wBAAA,CAAwB;AAAA,EAAA;AAC/F,GAGWE,IAAwC,CAAC;AAAA,EACpD,MAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,aAAAC,IAAc;AAAA,EACd,mBAAAC,IAAoB;AAAA,EACpB,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,EAAE,MAAAC,GAAM,QAAAC,MAAWC,EAAapB,CAAO,GAEvCqB,IAAc,OAAOC,MAA2C;AAEpE,QADAN,IAAUM,CAAC,GACPP,EAAU;AAGd,IADgB,MAAMG,EAAKnB,CAAI,IAE7BU,IAAA,IAEAC,IAAU,IAAI,MAAM,6BAA6B,CAAC;AAAA,EAEtD,GAEMa,IAAe;AAAA,IACnB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,EAAA,GAGLC,IAAiB;AAAA,IACrB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,EAAA,GAGFC,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAe;AAAA,IACnB,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,GAGJC,IAAU;AAAA,IACd;AAAA,IACA1B,KAASsB,EAAatB,CAAK;AAAA,IAC3BkB,KAAU;AAAA,IACVjB,KAAWsB,EAAetB,CAAO;AAAA,IACjCuB,EAAYtB,CAAI;AAAA,IAChBC,KAASsB,EAAatB,CAAK;AAAA,IAC3BU;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GASLc,IACJ,gBAAAhC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW+B;AAAA,MACX,SAASN;AAAA,MACT,UAAAN;AAAA,MACA,cAAYI,IAASN,IAAoBD;AAAA,MACxC,GAAGK;AAAA,MAEH,UAbWE,IACXX,MAHeF,KAAc,gBAAAV,EAACC,GAAA,CAAA,CAAU,KAIxCU,MALeF,KAAQ,gBAAAT,EAACD,GAAA,CAAA,CAAS;AAAA,IAgBjC;AAAA,EAAA;AAIL,SAAIgB,IAEA,gBAAAf,EAAC,SAAI,WAAU,WAAU,YAAUuB,IAASN,IAAoBD,GAC7D,UAAAgB,EAAA,CACH,IAIGA;AACT;AAEA9B,EAAW,cAAc;"}
1
+ {"version":3,"file":"CopyButton.js","sources":["../../src/components/CopyButton.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport { useClipboard } from '../hooks/useClipboard'\nimport { IconSizeContext } from '../contexts/IconSizeContext'\n\nconst iconSizeClasses = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-3.5 h-3.5',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n xl: 'w-6 h-6',\n}\n\nexport type CopyButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onError'> {\n /** Text to copy to clipboard */\n text: string\n /** Duration in ms to show copied state */\n timeout?: number\n /** Button color */\n color?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral'\n /** Button style variant */\n variant?: 'solid' | 'outline' | 'dash' | 'soft' | 'ghost' | 'link'\n /** Button size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Button shape */\n shape?: 'square' | 'circle'\n /** Absolute position within parent (parent must have position: relative) */\n position?: CopyButtonPosition\n /** Custom icon for default state */\n icon?: React.ReactNode\n /** Custom icon for copied state */\n copiedIcon?: React.ReactNode\n /** Custom content for default state (overrides icon) */\n children?: React.ReactNode\n /** Custom content for copied state */\n copiedChildren?: React.ReactNode\n /** Callback when copy succeeds */\n onCopy?: () => void\n /** Callback when copy fails */\n onError?: (error: Error) => void\n /** Show tooltip with copy status */\n showTooltip?: boolean\n /** Tooltip text for default state */\n tooltipText?: string\n /** Tooltip text for copied state */\n copiedTooltipText?: string\n}\n\nconst CopyIcon: React.FC = () => {\n const size = useContext(IconSizeContext) ?? 'md'\n return (\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n )\n}\n\nconst CheckIcon: React.FC = () => {\n const size = useContext(IconSizeContext) ?? 'md'\n return (\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"m4.5 12.75 6 6 9-13.5\" />\n </svg>\n )\n}\n\nconst positionClasses: Record<CopyButtonPosition, string> = {\n 'top-right': 'absolute top-2 right-2',\n 'top-left': 'absolute top-2 left-2',\n 'bottom-right': 'absolute bottom-2 right-2',\n 'bottom-left': 'absolute bottom-2 left-2',\n}\n\nexport const CopyButton: React.FC<CopyButtonProps> = ({\n text,\n timeout = 2000,\n color,\n variant,\n size = 'md',\n shape,\n position,\n icon,\n copiedIcon,\n children,\n copiedChildren,\n onCopy,\n onError,\n showTooltip = false,\n tooltipText = 'Copy',\n copiedTooltipText = 'Copied!',\n className = '',\n disabled,\n onClick,\n ...rest\n}) => {\n const { copy, copied } = useClipboard(timeout)\n\n const handleClick = async (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e)\n if (disabled) return\n\n const success = await copy(text)\n if (success) {\n onCopy?.()\n } else {\n onError?.(new Error('Failed to copy to clipboard'))\n }\n }\n\n const colorClasses = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n neutral: 'btn-neutral',\n }\n\n const variantClasses = {\n solid: '',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n }\n\n const sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n xl: 'btn-xl',\n }\n\n const shapeClasses = {\n square: 'btn-square',\n circle: 'btn-circle',\n }\n\n const classes = [\n 'btn',\n color && colorClasses[color],\n copied && 'btn-success',\n variant && variantClasses[variant],\n sizeClasses[size],\n shape && shapeClasses[shape],\n // Only add position classes if not using tooltip (tooltip wrapper gets them instead)\n !showTooltip && position && positionClasses[position],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const defaultIcon = icon ?? <CopyIcon />\n const successIcon = copiedIcon ?? <CheckIcon />\n\n const content = copied\n ? (copiedChildren ?? successIcon)\n : (children ?? defaultIcon)\n\n const button = (\n <button\n type=\"button\"\n className={classes}\n onClick={handleClick}\n disabled={disabled}\n aria-label={copied ? copiedTooltipText : tooltipText}\n {...rest}\n >\n <IconSizeContext.Provider value={size}>\n {content}\n </IconSizeContext.Provider>\n </button>\n )\n\n if (showTooltip) {\n const tooltipClasses = ['tooltip', position && positionClasses[position]].filter(Boolean).join(' ')\n return (\n <div className={tooltipClasses} data-tip={copied ? copiedTooltipText : tooltipText}>\n {button}\n </div>\n )\n }\n\n return button\n}\n\nCopyButton.displayName = 'CopyButton'\n"],"names":["iconSizeClasses","CopyIcon","size","useContext","IconSizeContext","jsx","CheckIcon","positionClasses","CopyButton","text","timeout","color","variant","shape","position","icon","copiedIcon","children","copiedChildren","onCopy","onError","showTooltip","tooltipText","copiedTooltipText","className","disabled","onClick","rest","copy","copied","useClipboard","handleClick","colorClasses","variantClasses","sizeClasses","shapeClasses","classes","content","button","tooltipClasses"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2
+ export declare const IconSizeContext: import('react').Context<IconSize | undefined>;
@@ -0,0 +1,6 @@
1
+ import { createContext as o } from "react";
2
+ const e = o(void 0);
3
+ export {
4
+ e as IconSizeContext
5
+ };
6
+ //# sourceMappingURL=IconSizeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconSizeContext.js","sources":["../../src/contexts/IconSizeContext.ts"],"sourcesContent":["import { createContext } from 'react'\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport const IconSizeContext = createContext<IconSize | undefined>(undefined)\n"],"names":["IconSizeContext","createContext"],"mappings":";AAIO,MAAMA,IAAkBC,EAAoC,MAAS;"}
package/dist/index.d.ts CHANGED
@@ -12,10 +12,12 @@ export { Badge } from './components/Badge';
12
12
  export type { BadgeProps, BadgeRibbonProps, BadgePosition, BadgeStatus, BadgeType, BadgeVariant, BadgeSize } from './components/Badge';
13
13
  export { Breadcrumb } from './components/Breadcrumb';
14
14
  export type { BreadcrumbProps, BreadcrumbItemProps } from './components/Breadcrumb';
15
- export { Button, IconSizeContext } from './components/Button';
15
+ export { Button } from './components/Button';
16
16
  export type { ButtonProps } from './components/Button';
17
+ export { IconSizeContext } from './contexts/IconSizeContext';
18
+ export type { IconSize } from './contexts/IconSizeContext';
17
19
  export { CopyButton } from './components/CopyButton';
18
- export type { CopyButtonProps } from './components/CopyButton';
20
+ export type { CopyButtonProps, CopyButtonPosition } from './components/CopyButton';
19
21
  export { Checkbox } from './components/Checkbox';
20
22
  export type { CheckboxProps, CheckboxGroupProps, CheckboxOptionType, CheckboxSwapConfig } from './components/Checkbox';
21
23
  export { Chat } from './components/Chat';
@@ -24,10 +26,14 @@ export { ColorPicker } from './components/ColorPicker';
24
26
  export type { ColorPickerProps } from './components/ColorPicker';
25
27
  export { Card } from './components/Card';
26
28
  export type { CardProps, CardGridProps, CardMetaProps, CardSize, CardVariant, CardTabItem } from './components/Card';
27
- export { Cascader } from './components/Cascader';
28
- export type { CascaderProps, CascaderOption } from './components/Cascader';
29
29
  export { Carousel } from './components/Carousel';
30
30
  export type { CarouselProps, CarouselItemProps, CarouselRef, CarouselEffect, CarouselDotPlacement } from './components/Carousel';
31
+ export { Cascader } from './components/Cascader';
32
+ export type { CascaderProps, CascaderOption } from './components/Cascader';
33
+ export { ConfigProvider, useConfig, useLocale, useComponentLocale, ConfigContext } from './components/ConfigProvider';
34
+ export type { ConfigProviderProps, ConfigContextValue, ComponentSize, Direction } from './components/ConfigProvider';
35
+ export type { Locale } from './locale';
36
+ export { enUS, enGB, enCA, zhCN, esES, jaJP, ptBR, deDE, frFR, koKR } from './locale';
31
37
  export { Collapse } from './components/Collapse';
32
38
  export type { CollapseProps, CollapseItemType, CollapseSize, CollapseIconPosition, CollapseCollapsible } from './components/Collapse';
33
39
  export { Container } from './components/Container';