asterui 0.12.62 → 0.12.64

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 (127) hide show
  1. package/dist/components/Anchor.d.ts +2 -0
  2. package/dist/components/Anchor.js +79 -75
  3. package/dist/components/Anchor.js.map +1 -1
  4. package/dist/components/Autocomplete.d.ts +1 -0
  5. package/dist/components/Autocomplete.js +115 -110
  6. package/dist/components/Autocomplete.js.map +1 -1
  7. package/dist/components/Breadcrumb.d.ts +4 -2
  8. package/dist/components/Breadcrumb.js +54 -29
  9. package/dist/components/Breadcrumb.js.map +1 -1
  10. package/dist/components/Button.d.ts +5 -1
  11. package/dist/components/Button.js +117 -107
  12. package/dist/components/Button.js.map +1 -1
  13. package/dist/components/Chart.d.ts +1 -0
  14. package/dist/components/Chart.js +31 -30
  15. package/dist/components/Chart.js.map +1 -1
  16. package/dist/components/Chat.d.ts +1 -0
  17. package/dist/components/Chat.js +32 -30
  18. package/dist/components/Chat.js.map +1 -1
  19. package/dist/components/Collapse.js +58 -56
  20. package/dist/components/Collapse.js.map +1 -1
  21. package/dist/components/Command.d.ts +5 -2
  22. package/dist/components/Command.js +262 -233
  23. package/dist/components/Command.js.map +1 -1
  24. package/dist/components/ContextMenu.d.ts +4 -0
  25. package/dist/components/ContextMenu.js +149 -130
  26. package/dist/components/ContextMenu.js.map +1 -1
  27. package/dist/components/DatePicker.d.ts +19 -1
  28. package/dist/components/DatePicker.js +266 -87
  29. package/dist/components/DatePicker.js.map +1 -1
  30. package/dist/components/Dock.d.ts +2 -0
  31. package/dist/components/Dock.js +70 -46
  32. package/dist/components/Dock.js.map +1 -1
  33. package/dist/components/FileInput.d.ts +1 -0
  34. package/dist/components/FileInput.js +26 -26
  35. package/dist/components/FileInput.js.map +1 -1
  36. package/dist/components/Filter.d.ts +1 -0
  37. package/dist/components/Filter.js +43 -40
  38. package/dist/components/Filter.js.map +1 -1
  39. package/dist/components/Flex.d.ts +1 -0
  40. package/dist/components/Flex.js +43 -42
  41. package/dist/components/Flex.js.map +1 -1
  42. package/dist/components/FloatButton.d.ts +3 -0
  43. package/dist/components/FloatButton.js +178 -127
  44. package/dist/components/FloatButton.js.map +1 -1
  45. package/dist/components/Input.d.ts +1 -0
  46. package/dist/components/Input.js +201 -184
  47. package/dist/components/Input.js.map +1 -1
  48. package/dist/components/Loading.d.ts +1 -0
  49. package/dist/components/Loading.js +40 -37
  50. package/dist/components/Loading.js.map +1 -1
  51. package/dist/components/Masonry.d.ts +1 -0
  52. package/dist/components/Masonry.js +45 -42
  53. package/dist/components/Masonry.js.map +1 -1
  54. package/dist/components/Mention.d.ts +1 -0
  55. package/dist/components/Mention.js +95 -91
  56. package/dist/components/Mention.js.map +1 -1
  57. package/dist/components/Menu.d.ts +1 -1
  58. package/dist/components/Menu.js +99 -93
  59. package/dist/components/Menu.js.map +1 -1
  60. package/dist/components/Modal.js +26 -17
  61. package/dist/components/Modal.js.map +1 -1
  62. package/dist/components/MonthCalendar.d.ts +1 -0
  63. package/dist/components/MonthCalendar.js +104 -97
  64. package/dist/components/MonthCalendar.js.map +1 -1
  65. package/dist/components/Notification.js +53 -45
  66. package/dist/components/Notification.js.map +1 -1
  67. package/dist/components/QRCode.d.ts +1 -0
  68. package/dist/components/QRCode.js +84 -55
  69. package/dist/components/QRCode.js.map +1 -1
  70. package/dist/components/RadialProgress.d.ts +1 -0
  71. package/dist/components/RadialProgress.js +19 -17
  72. package/dist/components/RadialProgress.js.map +1 -1
  73. package/dist/components/Range.d.ts +1 -0
  74. package/dist/components/Range.js +45 -43
  75. package/dist/components/Range.js.map +1 -1
  76. package/dist/components/Rating.d.ts +4 -2
  77. package/dist/components/Rating.js +83 -79
  78. package/dist/components/Rating.js.map +1 -1
  79. package/dist/components/Responsive.d.ts +4 -2
  80. package/dist/components/Responsive.js +10 -9
  81. package/dist/components/Responsive.js.map +1 -1
  82. package/dist/components/Result.d.ts +1 -0
  83. package/dist/components/Result.js +24 -22
  84. package/dist/components/Result.js.map +1 -1
  85. package/dist/components/Select.d.ts +1 -0
  86. package/dist/components/Select.js +72 -62
  87. package/dist/components/Select.js.map +1 -1
  88. package/dist/components/Splitter.d.ts +2 -0
  89. package/dist/components/Splitter.js +137 -131
  90. package/dist/components/Splitter.js.map +1 -1
  91. package/dist/components/Stat.d.ts +4 -2
  92. package/dist/components/Stat.js +19 -18
  93. package/dist/components/Stat.js.map +1 -1
  94. package/dist/components/Steps.d.ts +4 -2
  95. package/dist/components/Steps.js +56 -52
  96. package/dist/components/Steps.js.map +1 -1
  97. package/dist/components/Tabs.js +69 -57
  98. package/dist/components/Tabs.js.map +1 -1
  99. package/dist/components/TextRotate.d.ts +1 -0
  100. package/dist/components/TextRotate.js +14 -12
  101. package/dist/components/TextRotate.js.map +1 -1
  102. package/dist/components/Textarea.d.ts +1 -0
  103. package/dist/components/Textarea.js +31 -30
  104. package/dist/components/Textarea.js.map +1 -1
  105. package/dist/components/ThemeController.d.ts +6 -3
  106. package/dist/components/ThemeController.js +101 -92
  107. package/dist/components/ThemeController.js.map +1 -1
  108. package/dist/components/Tooltip.js +38 -35
  109. package/dist/components/Tooltip.js.map +1 -1
  110. package/dist/components/Transfer.js +130 -121
  111. package/dist/components/Transfer.js.map +1 -1
  112. package/dist/components/TreeSelect.js +49 -48
  113. package/dist/components/TreeSelect.js.map +1 -1
  114. package/dist/components/Typography.d.ts +10 -5
  115. package/dist/components/Typography.js +84 -81
  116. package/dist/components/Typography.js.map +1 -1
  117. package/dist/components/VirtualList.d.ts +2 -1
  118. package/dist/components/VirtualList.js +40 -36
  119. package/dist/components/VirtualList.js.map +1 -1
  120. package/dist/components/Watermark.d.ts +1 -0
  121. package/dist/components/Watermark.js +74 -71
  122. package/dist/components/Watermark.js.map +1 -1
  123. package/dist/components/WeekCalendar.d.ts +1 -0
  124. package/dist/components/WeekCalendar.js +91 -76
  125. package/dist/components/WeekCalendar.js.map +1 -1
  126. package/dist/index.d.ts +1 -1
  127. package/package.json +1 -1
@@ -2,6 +2,7 @@ import { default as React } from 'react';
2
2
  export interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {
3
3
  children: React.ReactNode;
4
4
  vertical?: boolean;
5
+ 'data-testid'?: string;
5
6
  }
6
7
  export interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
7
8
  title?: React.ReactNode;
@@ -9,9 +10,10 @@ export interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 't
9
10
  desc?: React.ReactNode;
10
11
  figure?: React.ReactNode;
11
12
  actions?: React.ReactNode;
13
+ 'data-testid'?: string;
12
14
  }
13
- declare function StatsRoot({ children, className, vertical, ...rest }: StatsProps): import("react/jsx-runtime").JSX.Element;
14
- declare function StatItem({ title, value, desc, figure, actions, className, ...rest }: StatProps): import("react/jsx-runtime").JSX.Element;
15
+ declare function StatsRoot({ children, className, vertical, 'data-testid': testId, ...rest }: StatsProps): import("react/jsx-runtime").JSX.Element;
16
+ declare function StatItem({ title, value, desc, figure, actions, className, 'data-testid': testId, ...rest }: StatProps): import("react/jsx-runtime").JSX.Element;
15
17
  export declare const Stats: typeof StatsRoot & {
16
18
  Stat: typeof StatItem;
17
19
  };
@@ -1,26 +1,27 @@
1
- import { jsx as t, jsxs as l } from "react/jsx-runtime";
2
- const d = "stats", r = "stats-horizontal", S = "stats-vertical", m = "stat", v = "stat-figure", h = "stat-title", N = "stat-value", u = "stat-desc", f = "stat-actions";
3
- function j({ children: s, className: a = "", vertical: c = !1, ...n }) {
4
- const e = [
5
- d,
6
- c ? S : r,
7
- a
1
+ import { jsx as t, jsxs as S } from "react/jsx-runtime";
2
+ const m = "stats", v = "stats-horizontal", u = "stats-vertical", h = "stat", N = "stat-figure", f = "stat-title", g = "stat-value", j = "stat-desc", $ = "stat-actions";
3
+ function x({ children: s, className: d = "", vertical: e = !1, "data-testid": i, ...c }) {
4
+ const n = [
5
+ m,
6
+ e ? u : v,
7
+ d
8
8
  ].filter(Boolean).join(" ");
9
- return /* @__PURE__ */ t("div", { className: e, ...n, children: s });
9
+ return /* @__PURE__ */ t("div", { className: n, "data-testid": i, ...c, children: s });
10
10
  }
11
- function x({ title: s, value: a, desc: c, figure: n, actions: e, className: i = "", ...o }) {
12
- return /* @__PURE__ */ l("div", { className: `${m} ${i}`, ...o, children: [
13
- n && /* @__PURE__ */ t("div", { className: v, children: n }),
14
- s && /* @__PURE__ */ t("div", { className: h, children: s }),
15
- a && /* @__PURE__ */ t("div", { className: N, children: a }),
16
- c && /* @__PURE__ */ t("div", { className: u, children: c }),
17
- e && /* @__PURE__ */ t("div", { className: f, children: e })
11
+ function p({ title: s, value: d, desc: e, figure: i, actions: c, className: n = "", "data-testid": o, ...l }) {
12
+ const a = (r) => o ? `${o}-${r}` : void 0;
13
+ return /* @__PURE__ */ S("div", { className: `${h} ${n}`, "data-testid": o, ...l, children: [
14
+ i && /* @__PURE__ */ t("div", { className: N, "data-testid": a("figure"), children: i }),
15
+ s && /* @__PURE__ */ t("div", { className: f, "data-testid": a("title"), children: s }),
16
+ d && /* @__PURE__ */ t("div", { className: g, "data-testid": a("value"), children: d }),
17
+ e && /* @__PURE__ */ t("div", { className: j, "data-testid": a("desc"), children: e }),
18
+ c && /* @__PURE__ */ t("div", { className: $, "data-testid": a("actions"), children: c })
18
19
  ] });
19
20
  }
20
- const p = Object.assign(j, {
21
- Stat: x
21
+ const T = Object.assign(x, {
22
+ Stat: p
22
23
  });
23
24
  export {
24
- p as Stats
25
+ T as Stats
25
26
  };
26
27
  //# sourceMappingURL=Stat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stat.js","sources":["../../src/components/Stat.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dStats = 'stats'\nconst dStatsHorizontal = 'stats-horizontal'\nconst dStatsVertical = 'stats-vertical'\nconst dStat = 'stat'\nconst dStatFigure = 'stat-figure'\nconst dStatTitle = 'stat-title'\nconst dStatValue = 'stat-value'\nconst dStatDesc = 'stat-desc'\nconst dStatActions = 'stat-actions'\n\nexport interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n vertical?: boolean\n}\n\nexport interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode\n value?: React.ReactNode\n desc?: React.ReactNode\n figure?: React.ReactNode\n actions?: React.ReactNode\n}\n\nfunction StatsRoot({ children, className = '', vertical = false, ...rest }: StatsProps) {\n const classes = [\n dStats,\n vertical ? dStatsVertical : dStatsHorizontal,\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} {...rest}>{children}</div>\n}\n\nfunction StatItem({ title, value, desc, figure, actions, className = '', ...rest }: StatProps) {\n return (\n <div className={`${dStat} ${className}`} {...rest}>\n {figure && <div className={dStatFigure}>{figure}</div>}\n {title && <div className={dStatTitle}>{title}</div>}\n {value && <div className={dStatValue}>{value}</div>}\n {desc && <div className={dStatDesc}>{desc}</div>}\n {actions && <div className={dStatActions}>{actions}</div>}\n </div>\n )\n}\n\nexport const Stats = Object.assign(StatsRoot, {\n Stat: StatItem,\n})\n"],"names":["dStats","dStatsHorizontal","dStatsVertical","dStat","dStatFigure","dStatTitle","dStatValue","dStatDesc","dStatActions","StatsRoot","children","className","vertical","rest","classes","StatItem","title","value","desc","figure","actions","jsxs","jsx","Stats"],"mappings":";AAGA,MAAMA,IAAS,SACTC,IAAmB,oBACnBC,IAAiB,kBACjBC,IAAQ,QACRC,IAAc,eACdC,IAAa,cACbC,IAAa,cACbC,IAAY,aACZC,IAAe;AAerB,SAASC,EAAU,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,UAAAC,IAAW,IAAO,GAAGC,KAAoB;AACtF,QAAMC,IAAU;AAAA,IACdd;AAAA,IACAY,IAAWV,IAAiBD;AAAA,IAC5BU;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,OAAA,EAAI,WAAWG,GAAU,GAAGD,GAAO,UAAAH,GAAS;AACtD;AAEA,SAASK,EAAS,EAAE,OAAAC,GAAO,OAAAC,GAAO,MAAAC,GAAM,QAAAC,GAAQ,SAAAC,GAAS,WAAAT,IAAY,IAAI,GAAGE,KAAmB;AAC7F,SACE,gBAAAQ,EAAC,SAAI,WAAW,GAAGlB,CAAK,IAAIQ,CAAS,IAAK,GAAGE,GAC1C,UAAA;AAAA,IAAAM,KAAU,gBAAAG,EAAC,OAAA,EAAI,WAAWlB,GAAc,UAAAe,GAAO;AAAA,IAC/CH,KAAS,gBAAAM,EAAC,OAAA,EAAI,WAAWjB,GAAa,UAAAW,GAAM;AAAA,IAC5CC,KAAS,gBAAAK,EAAC,OAAA,EAAI,WAAWhB,GAAa,UAAAW,GAAM;AAAA,IAC5CC,KAAQ,gBAAAI,EAAC,OAAA,EAAI,WAAWf,GAAY,UAAAW,GAAK;AAAA,IACzCE,KAAW,gBAAAE,EAAC,OAAA,EAAI,WAAWd,GAAe,UAAAY,EAAA,CAAQ;AAAA,EAAA,GACrD;AAEJ;AAEO,MAAMG,IAAQ,OAAO,OAAOd,GAAW;AAAA,EAC5C,MAAMM;AACR,CAAC;"}
1
+ {"version":3,"file":"Stat.js","sources":["../../src/components/Stat.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dStats = 'stats'\nconst dStatsHorizontal = 'stats-horizontal'\nconst dStatsVertical = 'stats-vertical'\nconst dStat = 'stat'\nconst dStatFigure = 'stat-figure'\nconst dStatTitle = 'stat-title'\nconst dStatValue = 'stat-value'\nconst dStatDesc = 'stat-desc'\nconst dStatActions = 'stat-actions'\n\nexport interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n vertical?: boolean\n 'data-testid'?: string\n}\n\nexport interface StatProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode\n value?: React.ReactNode\n desc?: React.ReactNode\n figure?: React.ReactNode\n actions?: React.ReactNode\n 'data-testid'?: string\n}\n\nfunction StatsRoot({ children, className = '', vertical = false, 'data-testid': testId, ...rest }: StatsProps) {\n const classes = [\n dStats,\n vertical ? dStatsVertical : dStatsHorizontal,\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} data-testid={testId} {...rest}>{children}</div>\n}\n\nfunction StatItem({ title, value, desc, figure, actions, className = '', 'data-testid': testId, ...rest }: StatProps) {\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n return (\n <div className={`${dStat} ${className}`} data-testid={testId} {...rest}>\n {figure && <div className={dStatFigure} data-testid={getTestId('figure')}>{figure}</div>}\n {title && <div className={dStatTitle} data-testid={getTestId('title')}>{title}</div>}\n {value && <div className={dStatValue} data-testid={getTestId('value')}>{value}</div>}\n {desc && <div className={dStatDesc} data-testid={getTestId('desc')}>{desc}</div>}\n {actions && <div className={dStatActions} data-testid={getTestId('actions')}>{actions}</div>}\n </div>\n )\n}\n\nexport const Stats = Object.assign(StatsRoot, {\n Stat: StatItem,\n})\n"],"names":["dStats","dStatsHorizontal","dStatsVertical","dStat","dStatFigure","dStatTitle","dStatValue","dStatDesc","dStatActions","StatsRoot","children","className","vertical","testId","rest","classes","jsx","StatItem","title","value","desc","figure","actions","getTestId","suffix","jsxs","Stats"],"mappings":";AAGA,MAAMA,IAAS,SACTC,IAAmB,oBACnBC,IAAiB,kBACjBC,IAAQ,QACRC,IAAc,eACdC,IAAa,cACbC,IAAa,cACbC,IAAY,aACZC,IAAe;AAiBrB,SAASC,EAAU,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,UAAAC,IAAW,IAAO,eAAeC,GAAQ,GAAGC,KAAoB;AAC7G,QAAMC,IAAU;AAAA,IACdf;AAAA,IACAY,IAAWV,IAAiBD;AAAA,IAC5BU;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SAAO,gBAAAK,EAAC,SAAI,WAAWD,GAAS,eAAaF,GAAS,GAAGC,GAAO,UAAAJ,GAAS;AAC3E;AAEA,SAASO,EAAS,EAAE,OAAAC,GAAO,OAAAC,GAAO,MAAAC,GAAM,QAAAC,GAAQ,SAAAC,GAAS,WAAAX,IAAY,IAAI,eAAeE,GAAQ,GAAGC,KAAmB;AACpH,QAAMS,IAAY,CAACC,MAAoBX,IAAS,GAAGA,CAAM,IAAIW,CAAM,KAAK;AACxE,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAW,GAAGtB,CAAK,IAAIQ,CAAS,IAAI,eAAaE,GAAS,GAAGC,GAC/D,UAAA;AAAA,IAAAO,KAAU,gBAAAL,EAAC,SAAI,WAAWZ,GAAa,eAAamB,EAAU,QAAQ,GAAI,UAAAF,EAAA,CAAO;AAAA,IACjFH,uBAAU,OAAA,EAAI,WAAWb,GAAY,eAAakB,EAAU,OAAO,GAAI,UAAAL,EAAA,CAAM;AAAA,IAC7EC,uBAAU,OAAA,EAAI,WAAWb,GAAY,eAAaiB,EAAU,OAAO,GAAI,UAAAJ,EAAA,CAAM;AAAA,IAC7EC,uBAAS,OAAA,EAAI,WAAWb,GAAW,eAAagB,EAAU,MAAM,GAAI,UAAAH,EAAA,CAAK;AAAA,IACzEE,uBAAY,OAAA,EAAI,WAAWd,GAAc,eAAae,EAAU,SAAS,GAAI,UAAAD,EAAA,CAAQ;AAAA,EAAA,GACxF;AAEJ;AAEO,MAAMI,IAAQ,OAAO,OAAOjB,GAAW;AAAA,EAC5C,MAAMQ;AACR,CAAC;"}
@@ -21,6 +21,7 @@ export interface StepsProps extends Omit<React.HTMLAttributes<HTMLUListElement>,
21
21
  vertical?: boolean;
22
22
  /** Callback when step is clicked */
23
23
  onChange?: (current: number) => void;
24
+ 'data-testid'?: string;
24
25
  }
25
26
  export interface StepProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'color' | 'title'> {
26
27
  /** Step title/label */
@@ -43,9 +44,10 @@ export interface StepProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, '
43
44
  _clickable?: boolean;
44
45
  /** Internal: click handler */
45
46
  _onClick?: (index: number) => void;
47
+ 'data-testid'?: string;
46
48
  }
47
- declare function StepsRoot({ children, items, current, direction, vertical, onChange, className, ...rest }: StepsProps): import("react/jsx-runtime").JSX.Element;
48
- declare function Step({ children, title, description, icon, color, dataContent, disabled, className, _index, _clickable, _onClick, ...rest }: StepProps): import("react/jsx-runtime").JSX.Element;
49
+ declare function StepsRoot({ children, items, current, direction, vertical, onChange, className, 'data-testid': testId, ...rest }: StepsProps): import("react/jsx-runtime").JSX.Element;
50
+ declare function Step({ children, title, description, icon, color, dataContent, disabled, className, _index, _clickable, _onClick, 'data-testid': testId, ...rest }: StepProps): import("react/jsx-runtime").JSX.Element;
49
51
  export declare const Steps: typeof StepsRoot & {
50
52
  Step: typeof Step;
51
53
  };
@@ -1,31 +1,32 @@
1
- import { jsx as a, jsxs as b } from "react/jsx-runtime";
2
- import C from "react";
3
- const k = "steps", N = "steps-vertical", j = "step", V = "step-neutral", h = "step-primary", E = "step-secondary", _ = "step-accent", g = "step-info", w = "step-success", B = "step-warning", R = "step-error", x = "step-disabled", A = {
4
- neutral: V,
5
- primary: h,
6
- secondary: E,
7
- accent: _,
8
- info: g,
9
- success: w,
10
- warning: B,
11
- error: R
1
+ import { jsx as p, jsxs as N } from "react/jsx-runtime";
2
+ import k from "react";
3
+ const j = "steps", V = "steps-vertical", g = "step", h = "step-neutral", E = "step-primary", _ = "step-secondary", $ = "step-accent", w = "step-info", B = "step-success", R = "step-warning", A = "step-error", D = "step-disabled", O = {
4
+ neutral: h,
5
+ primary: E,
6
+ secondary: _,
7
+ accent: $,
8
+ info: w,
9
+ success: B,
10
+ warning: R,
11
+ error: A
12
12
  };
13
- function D({
14
- children: i,
13
+ function P({
14
+ children: d,
15
15
  items: n,
16
16
  current: t,
17
- direction: p,
18
- vertical: d = !1,
17
+ direction: S,
18
+ vertical: u = !1,
19
19
  onChange: o,
20
- className: r = "",
21
- ...S
20
+ className: a = "",
21
+ "data-testid": c,
22
+ ...r
22
23
  }) {
23
- const l = [k, (p === "vertical" || d) && N, r].filter(Boolean).join(" ");
24
+ const i = [j, (S === "vertical" || u) && V, a].filter(Boolean).join(" "), v = (s) => c ? `${c}-${s}` : void 0;
24
25
  if (n && n.length > 0)
25
- return /* @__PURE__ */ a("ul", { className: l, ...S, children: n.map((s, e) => {
26
- const f = t !== void 0 && e < t, c = t !== void 0 && e === t, m = s.color || (f || c ? "primary" : void 0);
27
- return /* @__PURE__ */ a(
28
- v,
26
+ return /* @__PURE__ */ p("ul", { className: i, "data-testid": c, ...r, children: n.map((s, e) => {
27
+ const f = t !== void 0 && e < t, l = t !== void 0 && e === t, m = s.color || (f || l ? "primary" : void 0);
28
+ return /* @__PURE__ */ p(
29
+ b,
29
30
  {
30
31
  color: m,
31
32
  icon: s.icon,
@@ -35,63 +36,66 @@ function D({
35
36
  _index: e,
36
37
  _clickable: !!o && !s.disabled,
37
38
  _onClick: o,
38
- "aria-current": c ? "step" : void 0
39
+ "aria-current": l ? "step" : void 0,
40
+ "data-testid": v(`step-${s.key ?? e}`)
39
41
  },
40
42
  s.key ?? e
41
43
  );
42
44
  }) });
43
- const u = t !== void 0 ? C.Children.map(i, (s, e) => {
44
- if (C.isValidElement(s)) {
45
- const f = e < t, c = e === t, m = s.props.color || (f || c ? "primary" : void 0);
46
- return C.cloneElement(s, {
45
+ const C = t !== void 0 ? k.Children.map(d, (s, e) => {
46
+ if (k.isValidElement(s)) {
47
+ const f = e < t, l = e === t, m = s.props.color || (f || l ? "primary" : void 0);
48
+ return k.cloneElement(s, {
47
49
  color: m,
48
50
  _index: e,
49
51
  _clickable: !!o && !s.props.disabled,
50
52
  _onClick: o,
51
- "aria-current": c ? "step" : void 0
53
+ "aria-current": l ? "step" : void 0
52
54
  });
53
55
  }
54
56
  return s;
55
- }) : i;
56
- return /* @__PURE__ */ a("ul", { className: l, ...S, children: u });
57
+ }) : d;
58
+ return /* @__PURE__ */ p("ul", { className: i, "data-testid": c, ...r, children: C });
57
59
  }
58
- function v({
59
- children: i,
60
+ function b({
61
+ children: d,
60
62
  title: n,
61
63
  description: t,
62
- icon: p,
63
- color: d,
64
+ icon: S,
65
+ color: u,
64
66
  dataContent: o,
65
- disabled: r = !1,
66
- className: S = "",
67
- _index: y,
68
- _clickable: l,
69
- _onClick: u,
70
- ...s
67
+ disabled: a = !1,
68
+ className: c = "",
69
+ _index: r,
70
+ _clickable: y,
71
+ _onClick: i,
72
+ "data-testid": v,
73
+ ...C
71
74
  }) {
72
- const e = [j, d && A[d], r && x, S].filter(Boolean).join(" ");
73
- return /* @__PURE__ */ b(
75
+ const s = [g, u && O[u], a && D, c].filter(Boolean).join(" ");
76
+ return /* @__PURE__ */ N(
74
77
  "li",
75
78
  {
76
- className: e,
79
+ className: s,
77
80
  "data-content": o,
78
81
  onClick: () => {
79
- l && u && y !== void 0 && !r && u(y);
82
+ y && i && r !== void 0 && !a && i(r);
80
83
  },
81
- style: l && !r ? { cursor: "pointer" } : void 0,
82
- ...s,
84
+ style: y && !a ? { cursor: "pointer" } : void 0,
85
+ "data-testid": v,
86
+ ...C,
83
87
  children: [
84
- p && /* @__PURE__ */ a("span", { className: "step-icon", children: p }),
85
- n ?? i,
86
- t && /* @__PURE__ */ a("span", { className: "text-xs opacity-70 block", children: t })
88
+ S && /* @__PURE__ */ p("span", { className: "step-icon", children: S }),
89
+ n ?? d,
90
+ t && /* @__PURE__ */ p("span", { className: "text-xs opacity-70 block", children: t })
87
91
  ]
88
92
  }
89
93
  );
90
94
  }
91
- const P = Object.assign(D, {
92
- Step: v
95
+ const q = Object.assign(P, {
96
+ Step: b
93
97
  });
94
98
  export {
95
- P as Steps
99
+ q as Steps
96
100
  };
97
101
  //# sourceMappingURL=Steps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Steps.js","sources":["../../src/components/Steps.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dSteps = 'steps'\nconst dStepsVertical = 'steps-vertical'\nconst dStep = 'step'\nconst dStepNeutral = 'step-neutral'\nconst dStepPrimary = 'step-primary'\nconst dStepSecondary = 'step-secondary'\nconst dStepAccent = 'step-accent'\nconst dStepInfo = 'step-info'\nconst dStepSuccess = 'step-success'\nconst dStepWarning = 'step-warning'\nconst dStepError = 'step-error'\nconst dStepDisabled = 'step-disabled'\n\nexport type StepsDirection = 'horizontal' | 'vertical'\n\nexport interface StepItem {\n key?: string\n title: React.ReactNode\n description?: React.ReactNode\n icon?: React.ReactNode\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n disabled?: boolean\n}\n\nexport interface StepsProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onChange'> {\n /** Step items (compound pattern) */\n children?: React.ReactNode\n /** Step items (data-driven pattern) */\n items?: StepItem[]\n /** Current step index (0-based) */\n current?: number\n /** Layout direction */\n direction?: StepsDirection\n /** @deprecated Use direction=\"vertical\" instead */\n vertical?: boolean\n /** Callback when step is clicked */\n onChange?: (current: number) => void\n}\n\nexport interface StepProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'color' | 'title'> {\n /** Step title/label */\n children?: React.ReactNode\n /** Step title (alternative to children) */\n title?: React.ReactNode\n /** Step description */\n description?: React.ReactNode\n /** Step icon */\n icon?: React.ReactNode\n /** Step color */\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Custom content for step indicator */\n dataContent?: string\n /** Whether step is disabled */\n disabled?: boolean\n /** Internal: step index */\n _index?: number\n /** Internal: whether step is clickable */\n _clickable?: boolean\n /** Internal: click handler */\n _onClick?: (index: number) => void\n}\n\nconst colorClasses: Record<string, string> = {\n neutral: dStepNeutral,\n primary: dStepPrimary,\n secondary: dStepSecondary,\n accent: dStepAccent,\n info: dStepInfo,\n success: dStepSuccess,\n warning: dStepWarning,\n error: dStepError,\n}\n\nfunction StepsRoot({\n children,\n items,\n current,\n direction,\n vertical = false,\n onChange,\n className = '',\n ...rest\n}: StepsProps) {\n const isVertical = direction === 'vertical' || vertical\n\n const classes = [dSteps, isVertical && dStepsVertical, className]\n .filter(Boolean)\n .join(' ')\n\n // Render data-driven items if provided\n if (items && items.length > 0) {\n return (\n <ul className={classes} {...rest}>\n {items.map((item, index) => {\n const isCompleted = current !== undefined && index < current\n const isCurrent = current !== undefined && index === current\n const stepColor = item.color || ((isCompleted || isCurrent) ? 'primary' : undefined)\n\n return (\n <Step\n key={item.key ?? index}\n color={stepColor}\n icon={item.icon}\n title={item.title}\n description={item.description}\n disabled={item.disabled}\n _index={index}\n _clickable={!!onChange && !item.disabled}\n _onClick={onChange}\n aria-current={isCurrent ? 'step' : undefined}\n />\n )\n })}\n </ul>\n )\n }\n\n // For compound pattern, inject props into children if current is provided\n const processedChildren =\n current !== undefined\n ? React.Children.map(children, (child, index) => {\n if (React.isValidElement<StepProps>(child)) {\n const isCompleted = index < current\n const isCurrent = index === current\n const childColor = child.props.color || ((isCompleted || isCurrent) ? 'primary' : undefined)\n\n return React.cloneElement(child, {\n color: childColor,\n _index: index,\n _clickable: !!onChange && !child.props.disabled,\n _onClick: onChange,\n 'aria-current': isCurrent ? 'step' : undefined,\n } as Partial<StepProps>)\n }\n return child\n })\n : children\n\n return (\n <ul className={classes} {...rest}>\n {processedChildren}\n </ul>\n )\n}\n\nfunction Step({\n children,\n title,\n description,\n icon,\n color,\n dataContent,\n disabled = false,\n className = '',\n _index,\n _clickable,\n _onClick,\n ...rest\n}: StepProps) {\n const classes = [dStep, color && colorClasses[color], disabled && dStepDisabled, className]\n .filter(Boolean)\n .join(' ')\n\n const handleClick = () => {\n if (_clickable && _onClick && _index !== undefined && !disabled) {\n _onClick(_index)\n }\n }\n\n const displayContent = title ?? children\n\n return (\n <li\n className={classes}\n data-content={dataContent}\n onClick={handleClick}\n style={_clickable && !disabled ? { cursor: 'pointer' } : undefined}\n {...rest}\n >\n {icon && <span className=\"step-icon\">{icon}</span>}\n {displayContent}\n {description && <span className=\"text-xs opacity-70 block\">{description}</span>}\n </li>\n )\n}\n\nexport const Steps = Object.assign(StepsRoot, {\n Step,\n})\n"],"names":["dSteps","dStepsVertical","dStep","dStepNeutral","dStepPrimary","dStepSecondary","dStepAccent","dStepInfo","dStepSuccess","dStepWarning","dStepError","dStepDisabled","colorClasses","StepsRoot","children","items","current","direction","vertical","onChange","className","rest","classes","jsx","item","index","isCompleted","isCurrent","stepColor","Step","processedChildren","React","child","childColor","title","description","icon","color","dataContent","disabled","_index","_clickable","_onClick","jsxs","Steps"],"mappings":"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"}
1
+ {"version":3,"file":"Steps.js","sources":["../../src/components/Steps.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dSteps = 'steps'\nconst dStepsVertical = 'steps-vertical'\nconst dStep = 'step'\nconst dStepNeutral = 'step-neutral'\nconst dStepPrimary = 'step-primary'\nconst dStepSecondary = 'step-secondary'\nconst dStepAccent = 'step-accent'\nconst dStepInfo = 'step-info'\nconst dStepSuccess = 'step-success'\nconst dStepWarning = 'step-warning'\nconst dStepError = 'step-error'\nconst dStepDisabled = 'step-disabled'\n\nexport type StepsDirection = 'horizontal' | 'vertical'\n\nexport interface StepItem {\n key?: string\n title: React.ReactNode\n description?: React.ReactNode\n icon?: React.ReactNode\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n disabled?: boolean\n}\n\nexport interface StepsProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onChange'> {\n /** Step items (compound pattern) */\n children?: React.ReactNode\n /** Step items (data-driven pattern) */\n items?: StepItem[]\n /** Current step index (0-based) */\n current?: number\n /** Layout direction */\n direction?: StepsDirection\n /** @deprecated Use direction=\"vertical\" instead */\n vertical?: boolean\n /** Callback when step is clicked */\n onChange?: (current: number) => void\n 'data-testid'?: string\n}\n\nexport interface StepProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'color' | 'title'> {\n /** Step title/label */\n children?: React.ReactNode\n /** Step title (alternative to children) */\n title?: React.ReactNode\n /** Step description */\n description?: React.ReactNode\n /** Step icon */\n icon?: React.ReactNode\n /** Step color */\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Custom content for step indicator */\n dataContent?: string\n /** Whether step is disabled */\n disabled?: boolean\n /** Internal: step index */\n _index?: number\n /** Internal: whether step is clickable */\n _clickable?: boolean\n /** Internal: click handler */\n _onClick?: (index: number) => void\n 'data-testid'?: string\n}\n\nconst colorClasses: Record<string, string> = {\n neutral: dStepNeutral,\n primary: dStepPrimary,\n secondary: dStepSecondary,\n accent: dStepAccent,\n info: dStepInfo,\n success: dStepSuccess,\n warning: dStepWarning,\n error: dStepError,\n}\n\nfunction StepsRoot({\n children,\n items,\n current,\n direction,\n vertical = false,\n onChange,\n className = '',\n 'data-testid': testId,\n ...rest\n}: StepsProps) {\n const isVertical = direction === 'vertical' || vertical\n\n const classes = [dSteps, isVertical && dStepsVertical, className]\n .filter(Boolean)\n .join(' ')\n\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n\n // Render data-driven items if provided\n if (items && items.length > 0) {\n return (\n <ul className={classes} data-testid={testId} {...rest}>\n {items.map((item, index) => {\n const isCompleted = current !== undefined && index < current\n const isCurrent = current !== undefined && index === current\n const stepColor = item.color || ((isCompleted || isCurrent) ? 'primary' : undefined)\n\n return (\n <Step\n key={item.key ?? index}\n color={stepColor}\n icon={item.icon}\n title={item.title}\n description={item.description}\n disabled={item.disabled}\n _index={index}\n _clickable={!!onChange && !item.disabled}\n _onClick={onChange}\n aria-current={isCurrent ? 'step' : undefined}\n data-testid={getTestId(`step-${item.key ?? index}`)}\n />\n )\n })}\n </ul>\n )\n }\n\n // For compound pattern, inject props into children if current is provided\n const processedChildren =\n current !== undefined\n ? React.Children.map(children, (child, index) => {\n if (React.isValidElement<StepProps>(child)) {\n const isCompleted = index < current\n const isCurrent = index === current\n const childColor = child.props.color || ((isCompleted || isCurrent) ? 'primary' : undefined)\n\n return React.cloneElement(child, {\n color: childColor,\n _index: index,\n _clickable: !!onChange && !child.props.disabled,\n _onClick: onChange,\n 'aria-current': isCurrent ? 'step' : undefined,\n } as Partial<StepProps>)\n }\n return child\n })\n : children\n\n return (\n <ul className={classes} data-testid={testId} {...rest}>\n {processedChildren}\n </ul>\n )\n}\n\nfunction Step({\n children,\n title,\n description,\n icon,\n color,\n dataContent,\n disabled = false,\n className = '',\n _index,\n _clickable,\n _onClick,\n 'data-testid': testId,\n ...rest\n}: StepProps) {\n const classes = [dStep, color && colorClasses[color], disabled && dStepDisabled, className]\n .filter(Boolean)\n .join(' ')\n\n const handleClick = () => {\n if (_clickable && _onClick && _index !== undefined && !disabled) {\n _onClick(_index)\n }\n }\n\n const displayContent = title ?? children\n\n return (\n <li\n className={classes}\n data-content={dataContent}\n onClick={handleClick}\n style={_clickable && !disabled ? { cursor: 'pointer' } : undefined}\n data-testid={testId}\n {...rest}\n >\n {icon && <span className=\"step-icon\">{icon}</span>}\n {displayContent}\n {description && <span className=\"text-xs opacity-70 block\">{description}</span>}\n </li>\n )\n}\n\nexport const Steps = Object.assign(StepsRoot, {\n Step,\n})\n"],"names":["dSteps","dStepsVertical","dStep","dStepNeutral","dStepPrimary","dStepSecondary","dStepAccent","dStepInfo","dStepSuccess","dStepWarning","dStepError","dStepDisabled","colorClasses","StepsRoot","children","items","current","direction","vertical","onChange","className","testId","rest","classes","getTestId","suffix","jsx","item","index","isCompleted","isCurrent","stepColor","Step","processedChildren","React","child","childColor","title","description","icon","color","dataContent","disabled","_index","_clickable","_onClick","jsxs","Steps"],"mappings":";;AAGA,MAAMA,IAAS,SACTC,IAAiB,kBACjBC,IAAQ,QACRC,IAAe,gBACfC,IAAe,gBACfC,IAAiB,kBACjBC,IAAc,eACdC,IAAY,aACZC,IAAe,gBACfC,IAAe,gBACfC,IAAa,cACbC,IAAgB,iBAqDhBC,IAAuC;AAAA,EAC3C,SAAST;AAAA,EACT,SAASC;AAAA,EACT,WAAWC;AAAA,EACX,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,SAASC;AAAA,EACT,SAASC;AAAA,EACT,OAAOC;AACT;AAEA,SAASG,EAAU;AAAA,EACjB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,eAAeC;AAAA,EACf,GAAGC;AACL,GAAe;AAGb,QAAMC,IAAU,CAACvB,IAFEiB,MAAc,cAAcC,MAERjB,GAAgBmB,CAAS,EAC7D,OAAO,OAAO,EACd,KAAK,GAAG,GAELI,IAAY,CAACC,MAAoBJ,IAAS,GAAGA,CAAM,IAAII,CAAM,KAAK;AAGxE,MAAIV,KAASA,EAAM,SAAS;AAC1B,WACE,gBAAAW,EAAC,MAAA,EAAG,WAAWH,GAAS,eAAaF,GAAS,GAAGC,GAC9C,UAAAP,EAAM,IAAI,CAACY,GAAMC,MAAU;AAC1B,YAAMC,IAAcb,MAAY,UAAaY,IAAQZ,GAC/Cc,IAAYd,MAAY,UAAaY,MAAUZ,GAC/Ce,IAAYJ,EAAK,UAAWE,KAAeC,IAAa,YAAY;AAE1E,aACE,gBAAAJ;AAAA,QAACM;AAAA,QAAA;AAAA,UAEC,OAAOD;AAAA,UACP,MAAMJ,EAAK;AAAA,UACX,OAAOA,EAAK;AAAA,UACZ,aAAaA,EAAK;AAAA,UAClB,UAAUA,EAAK;AAAA,UACf,QAAQC;AAAA,UACR,YAAY,CAAC,CAACT,KAAY,CAACQ,EAAK;AAAA,UAChC,UAAUR;AAAA,UACV,gBAAcW,IAAY,SAAS;AAAA,UACnC,eAAaN,EAAU,QAAQG,EAAK,OAAOC,CAAK,EAAE;AAAA,QAAA;AAAA,QAV7CD,EAAK,OAAOC;AAAA,MAAA;AAAA,IAavB,CAAC,EAAA,CACH;AAKJ,QAAMK,IACJjB,MAAY,SACRkB,EAAM,SAAS,IAAIpB,GAAU,CAACqB,GAAOP,MAAU;AAC7C,QAAIM,EAAM,eAA0BC,CAAK,GAAG;AAC1C,YAAMN,IAAcD,IAAQZ,GACtBc,IAAYF,MAAUZ,GACtBoB,IAAaD,EAAM,MAAM,UAAWN,KAAeC,IAAa,YAAY;AAElF,aAAOI,EAAM,aAAaC,GAAO;AAAA,QAC/B,OAAOC;AAAA,QACP,QAAQR;AAAA,QACR,YAAY,CAAC,CAACT,KAAY,CAACgB,EAAM,MAAM;AAAA,QACvC,UAAUhB;AAAA,QACV,gBAAgBW,IAAY,SAAS;AAAA,MAAA,CAChB;AAAA,IACzB;AACA,WAAOK;AAAA,EACT,CAAC,IACDrB;AAEN,SACE,gBAAAY,EAAC,QAAG,WAAWH,GAAS,eAAaF,GAAS,GAAGC,GAC9C,UAAAW,EAAA,CACH;AAEJ;AAEA,SAASD,EAAK;AAAA,EACZ,UAAAlB;AAAA,EACA,OAAAuB;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAtB,IAAY;AAAA,EACZ,QAAAuB;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAexB;AAAA,EACf,GAAGC;AACL,GAAc;AACZ,QAAMC,IAAU,CAACrB,GAAOsC,KAAS5B,EAAa4B,CAAK,GAAGE,KAAY/B,GAAeS,CAAS,EACvF,OAAO,OAAO,EACd,KAAK,GAAG;AAUX,SACE,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWvB;AAAA,MACX,gBAAckB;AAAA,MACd,SAZgB,MAAM;AACxB,QAAIG,KAAcC,KAAYF,MAAW,UAAa,CAACD,KACrDG,EAASF,CAAM;AAAA,MAEnB;AAAA,MASI,OAAOC,KAAc,CAACF,IAAW,EAAE,QAAQ,cAAc;AAAA,MACzD,eAAarB;AAAA,MACZ,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAiB,KAAQ,gBAAAb,EAAC,QAAA,EAAK,WAAU,aAAa,UAAAa,GAAK;AAAA,QAXxBF,KAASvB;AAAA,QAa3BwB,KAAe,gBAAAZ,EAAC,QAAA,EAAK,WAAU,4BAA4B,UAAAY,EAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9E;AAEO,MAAMS,IAAQ,OAAO,OAAOlC,GAAW;AAAA,EAC5C,MAAAmB;AACF,CAAC;"}
@@ -1,65 +1,67 @@
1
- import { jsx as s, jsxs as d, Fragment as b } from "react/jsx-runtime";
2
- import h, { forwardRef as $, useState as X } from "react";
3
- import { useConfig as w } from "../providers/ConfigProvider.js";
4
- const D = "tabs", E = "tabs-box", F = "tabs-border", K = "tabs-lift", M = "tabs-xs", O = "tabs-sm", V = "tabs-md", q = "tabs-lg", G = "tabs-xl", H = "tab", I = "tab-active", J = "tab-disabled", Q = {
5
- box: E,
6
- border: F,
7
- lift: K
8
- }, U = {
9
- xs: M,
10
- sm: O,
11
- md: V,
12
- lg: q,
13
- xl: G
14
- }, W = $(function({
15
- children: x,
16
- items: a,
17
- activeKey: e,
18
- defaultActiveKey: g,
19
- onChange: p,
20
- variant: r,
21
- size: _,
22
- position: f = "top",
23
- "data-testid": n,
1
+ import { jsx as s, jsxs as l, Fragment as r } from "react/jsx-runtime";
2
+ import u, { forwardRef as w, useState as D, useId as E } from "react";
3
+ import { useConfig as F } from "../providers/ConfigProvider.js";
4
+ const K = "tabs", M = "tabs-box", O = "tabs-border", V = "tabs-lift", q = "tabs-xs", G = "tabs-sm", H = "tabs-md", J = "tabs-lg", Q = "tabs-xl", U = "tab", W = "tab-active", Y = "tab-disabled", Z = {
5
+ box: M,
6
+ border: O,
7
+ lift: V
8
+ }, tt = {
9
+ xs: q,
10
+ sm: G,
11
+ md: H,
12
+ lg: J,
13
+ xl: Q
14
+ }, st = w(function({
15
+ children: h,
16
+ items: n,
17
+ activeKey: o,
18
+ defaultActiveKey: x,
19
+ onChange: g,
20
+ variant: m,
21
+ size: p,
22
+ position: y = "top",
23
+ "data-testid": c,
24
24
  className: C = "",
25
25
  ...A
26
26
  }, j) {
27
- const { componentSize: S } = w(), m = _ ?? S, o = (t) => n ? `${n}-${t}` : void 0, B = h.Children.toArray(x).filter(
28
- (t) => h.isValidElement(t) && t.type === u
27
+ const { componentSize: S } = F(), T = p ?? S, d = (t) => c ? `${c}-${t}` : void 0, B = u.Children.toArray(h).filter(
28
+ (t) => u.isValidElement(t) && t.type === $
29
29
  ).map((t) => ({
30
30
  ...t.props,
31
31
  _key: t.key != null ? String(t.key) : ""
32
- })), c = a && a.length > 0 ? a.map((t) => ({
32
+ })), i = n && n.length > 0 ? n.map((t) => ({
33
33
  _key: t.key,
34
34
  tab: t.label,
35
35
  children: t.children,
36
36
  disabled: t.disabled,
37
37
  icon: t.icon
38
- })) : B, [N, P] = X(
39
- g || c[0]?._key || ""
40
- ), T = e !== void 0 ? e : N, R = (t) => {
41
- e === void 0 && P(t), p?.(t);
42
- }, z = [
43
- D,
44
- r && Q[r],
45
- m && U[m],
38
+ })) : B, [I, N] = D(
39
+ x || i[0]?._key || ""
40
+ ), k = o !== void 0 ? o : I, P = (t) => {
41
+ o === void 0 && N(t), g?.(t);
42
+ }, R = [
43
+ K,
44
+ m && Z[m],
45
+ T && tt[T],
46
46
  C
47
- ].filter(Boolean).join(" "), v = c.find((t) => t._key === T), y = /* @__PURE__ */ s("div", { role: "tablist", className: z, "data-testid": o("tablist"), children: c.map((t) => {
48
- const i = T === t._key, L = [
49
- H,
50
- i && I,
51
- t.disabled && J
47
+ ].filter(Boolean).join(" "), a = E(), e = i.find((t) => t._key === k), v = /* @__PURE__ */ s("div", { role: "tablist", className: R, "data-testid": d("tablist"), children: i.map((t) => {
48
+ const b = k === t._key, z = `${a}-tab-${t._key}`, L = `${a}-panel-${t._key}`, X = [
49
+ U,
50
+ b && W,
51
+ t.disabled && Y
52
52
  ].filter(Boolean).join(" ");
53
- return /* @__PURE__ */ d(
53
+ return /* @__PURE__ */ l(
54
54
  "button",
55
55
  {
56
56
  role: "tab",
57
- className: L,
58
- onClick: () => !t.disabled && R(t._key),
57
+ id: z,
58
+ className: X,
59
+ onClick: () => !t.disabled && P(t._key),
59
60
  disabled: t.disabled,
60
- "data-state": i ? "active" : "inactive",
61
- "data-testid": o(`tab-${t._key}`),
62
- "aria-selected": i,
61
+ "data-state": b ? "active" : "inactive",
62
+ "data-testid": d(`tab-${t._key}`),
63
+ "aria-selected": b,
64
+ "aria-controls": L,
63
65
  children: [
64
66
  t.icon && /* @__PURE__ */ s("span", { className: "mr-1", children: t.icon }),
65
67
  t.tab
@@ -67,22 +69,32 @@ const D = "tabs", E = "tabs-box", F = "tabs-border", K = "tabs-lift", M = "tabs-
67
69
  },
68
70
  t._key
69
71
  );
70
- }) }), k = v && /* @__PURE__ */ s("div", { className: f === "top" ? "mt-4" : "mb-4", role: "tabpanel", "data-testid": o("tabpanel"), children: v.children });
71
- return /* @__PURE__ */ s("div", { ref: j, "data-testid": n, ...A, children: f === "top" ? /* @__PURE__ */ d(b, { children: [
72
- y,
73
- k
74
- ] }) : /* @__PURE__ */ d(b, { children: [
75
- k,
76
- y
72
+ }) }), _ = e && /* @__PURE__ */ s(
73
+ "div",
74
+ {
75
+ className: y === "top" ? "mt-4" : "mb-4",
76
+ role: "tabpanel",
77
+ id: `${a}-panel-${e._key}`,
78
+ "aria-labelledby": `${a}-tab-${e._key}`,
79
+ "data-testid": d("tabpanel"),
80
+ children: e.children
81
+ }
82
+ );
83
+ return /* @__PURE__ */ s("div", { ref: j, "data-testid": c, ...A, children: y === "top" ? /* @__PURE__ */ l(r, { children: [
84
+ v,
85
+ _
86
+ ] }) : /* @__PURE__ */ l(r, { children: [
87
+ _,
88
+ v
77
89
  ] }) });
78
90
  });
79
- function u({ children: l }) {
80
- return /* @__PURE__ */ s(b, { children: l });
91
+ function $({ children: f }) {
92
+ return /* @__PURE__ */ s(r, { children: f });
81
93
  }
82
- const st = Object.assign(W, {
83
- Panel: u
94
+ const ot = Object.assign(st, {
95
+ Panel: $
84
96
  });
85
97
  export {
86
- st as Tabs
98
+ ot as Tabs
87
99
  };
88
100
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sources":["../../src/components/Tabs.tsx"],"sourcesContent":["import React, { useState, forwardRef } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dTabs = 'tabs'\nconst dTabsBox = 'tabs-box'\nconst dTabsBorder = 'tabs-border'\nconst dTabsLift = 'tabs-lift'\nconst dTabsXs = 'tabs-xs'\nconst dTabsSm = 'tabs-sm'\nconst dTabsMd = 'tabs-md'\nconst dTabsLg = 'tabs-lg'\nconst dTabsXl = 'tabs-xl'\nconst dTab = 'tab'\nconst dTabActive = 'tab-active'\nconst dTabDisabled = 'tab-disabled'\n\nexport type TabsVariant = 'box' | 'border' | 'lift'\nexport type TabsSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type TabsPosition = 'top' | 'bottom'\n\nexport interface TabItem {\n key: string\n label: React.ReactNode\n children?: React.ReactNode\n disabled?: boolean\n icon?: React.ReactNode\n}\n\nexport interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Tab panels (compound pattern) */\n children?: React.ReactNode\n /** Tab items (data-driven pattern) */\n items?: TabItem[]\n /** Current active tab key (controlled) */\n activeKey?: string\n /** Default active tab key (uncontrolled) */\n defaultActiveKey?: string\n /** Callback when tab changes */\n onChange?: (key: string) => void\n /** Visual style variant */\n variant?: TabsVariant\n /** Tab size */\n size?: TabsSize\n /** Tab position relative to content */\n position?: TabsPosition\n /** Test ID prefix for child elements */\n 'data-testid'?: string\n}\n\nexport interface TabPanelProps {\n /** Tab button label */\n tab: React.ReactNode\n /** Disable the tab */\n disabled?: boolean\n /** Tab panel content */\n children?: React.ReactNode\n /** Tab icon */\n icon?: React.ReactNode\n}\n\nconst variantClasses: Record<TabsVariant, string> = {\n box: dTabsBox,\n border: dTabsBorder,\n lift: dTabsLift,\n}\n\nconst sizeClasses: Record<TabsSize, string> = {\n xs: dTabsXs,\n sm: dTabsSm,\n md: dTabsMd,\n lg: dTabsLg,\n xl: dTabsXl,\n}\n\ninterface InternalPanelProps extends TabPanelProps {\n _key: string\n}\n\nconst TabsRoot = forwardRef<HTMLDivElement, TabsProps>(function TabsRoot(\n {\n children,\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n variant,\n size,\n position = 'top',\n 'data-testid': testId,\n className = '',\n ...rest\n },\n ref\n) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? (componentSize as TabsSize | undefined)\n\n // Helper for test IDs\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n // Get panels from children (compound pattern), extracting key from React element\n const panels = React.Children.toArray(children)\n .filter((child): child is React.ReactElement<TabPanelProps> =>\n React.isValidElement(child) && child.type === TabPanel\n )\n .map((child) => ({\n ...child.props,\n _key: child.key != null ? String(child.key) : '',\n }))\n\n // Convert items to panel-like structure if using data-driven pattern\n const effectivePanels: InternalPanelProps[] = items && items.length > 0\n ? items.map(item => ({\n _key: item.key,\n tab: item.label,\n children: item.children,\n disabled: item.disabled,\n icon: item.icon,\n }))\n : panels\n\n const [internalActiveKey, setInternalActiveKey] = useState(\n defaultActiveKey || effectivePanels[0]?._key || ''\n )\n const currentActiveKey = activeKey !== undefined ? activeKey : internalActiveKey\n\n const handleTabClick = (key: string) => {\n if (activeKey === undefined) {\n setInternalActiveKey(key)\n }\n onChange?.(key)\n }\n\n const classes = [\n dTabs,\n variant && variantClasses[variant],\n effectiveSize && sizeClasses[effectiveSize],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const activePanel = effectivePanels.find((panel) => panel._key === currentActiveKey)\n\n const tabList = (\n <div role=\"tablist\" className={classes} data-testid={getTestId('tablist')}>\n {effectivePanels.map((panel) => {\n const isActive = currentActiveKey === panel._key\n const tabClasses = [\n dTab,\n isActive && dTabActive,\n panel.disabled && dTabDisabled,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n key={panel._key}\n role=\"tab\"\n className={tabClasses}\n onClick={() => !panel.disabled && handleTabClick(panel._key)}\n disabled={panel.disabled}\n data-state={isActive ? 'active' : 'inactive'}\n data-testid={getTestId(`tab-${panel._key}`)}\n aria-selected={isActive}\n >\n {panel.icon && <span className=\"mr-1\">{panel.icon}</span>}\n {panel.tab}\n </button>\n )\n })}\n </div>\n )\n\n const content = activePanel && (\n <div className={position === 'top' ? 'mt-4' : 'mb-4'} role=\"tabpanel\" data-testid={getTestId('tabpanel')}>\n {activePanel.children}\n </div>\n )\n\n return (\n <div ref={ref} data-testid={testId} {...rest}>\n {position === 'top' ? (\n <>\n {tabList}\n {content}\n </>\n ) : (\n <>\n {content}\n {tabList}\n </>\n )}\n </div>\n )\n})\n\nfunction TabPanel({ children }: TabPanelProps) {\n // This component is only used for type checking and is not rendered directly\n // The actual rendering is done in TabsRoot\n return <>{children}</>\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n Panel: TabPanel,\n})\n"],"names":["dTabs","dTabsBox","dTabsBorder","dTabsLift","dTabsXs","dTabsSm","dTabsMd","dTabsLg","dTabsXl","dTab","dTabActive","dTabDisabled","variantClasses","sizeClasses","TabsRoot","forwardRef","children","items","activeKey","defaultActiveKey","onChange","variant","size","position","testId","className","rest","ref","componentSize","useConfig","effectiveSize","getTestId","suffix","panels","React","child","TabPanel","effectivePanels","item","internalActiveKey","setInternalActiveKey","useState","currentActiveKey","handleTabClick","key","classes","activePanel","panel","tabList","jsx","isActive","tabClasses","jsxs","content","Fragment","Tabs"],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.js","sources":["../../src/components/Tabs.tsx"],"sourcesContent":["import React, { useState, forwardRef, useId } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dTabs = 'tabs'\nconst dTabsBox = 'tabs-box'\nconst dTabsBorder = 'tabs-border'\nconst dTabsLift = 'tabs-lift'\nconst dTabsXs = 'tabs-xs'\nconst dTabsSm = 'tabs-sm'\nconst dTabsMd = 'tabs-md'\nconst dTabsLg = 'tabs-lg'\nconst dTabsXl = 'tabs-xl'\nconst dTab = 'tab'\nconst dTabActive = 'tab-active'\nconst dTabDisabled = 'tab-disabled'\n\nexport type TabsVariant = 'box' | 'border' | 'lift'\nexport type TabsSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type TabsPosition = 'top' | 'bottom'\n\nexport interface TabItem {\n key: string\n label: React.ReactNode\n children?: React.ReactNode\n disabled?: boolean\n icon?: React.ReactNode\n}\n\nexport interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Tab panels (compound pattern) */\n children?: React.ReactNode\n /** Tab items (data-driven pattern) */\n items?: TabItem[]\n /** Current active tab key (controlled) */\n activeKey?: string\n /** Default active tab key (uncontrolled) */\n defaultActiveKey?: string\n /** Callback when tab changes */\n onChange?: (key: string) => void\n /** Visual style variant */\n variant?: TabsVariant\n /** Tab size */\n size?: TabsSize\n /** Tab position relative to content */\n position?: TabsPosition\n /** Test ID prefix for child elements */\n 'data-testid'?: string\n}\n\nexport interface TabPanelProps {\n /** Tab button label */\n tab: React.ReactNode\n /** Disable the tab */\n disabled?: boolean\n /** Tab panel content */\n children?: React.ReactNode\n /** Tab icon */\n icon?: React.ReactNode\n}\n\nconst variantClasses: Record<TabsVariant, string> = {\n box: dTabsBox,\n border: dTabsBorder,\n lift: dTabsLift,\n}\n\nconst sizeClasses: Record<TabsSize, string> = {\n xs: dTabsXs,\n sm: dTabsSm,\n md: dTabsMd,\n lg: dTabsLg,\n xl: dTabsXl,\n}\n\ninterface InternalPanelProps extends TabPanelProps {\n _key: string\n}\n\nconst TabsRoot = forwardRef<HTMLDivElement, TabsProps>(function TabsRoot(\n {\n children,\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n variant,\n size,\n position = 'top',\n 'data-testid': testId,\n className = '',\n ...rest\n },\n ref\n) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? (componentSize as TabsSize | undefined)\n\n // Helper for test IDs\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n // Get panels from children (compound pattern), extracting key from React element\n const panels = React.Children.toArray(children)\n .filter((child): child is React.ReactElement<TabPanelProps> =>\n React.isValidElement(child) && child.type === TabPanel\n )\n .map((child) => ({\n ...child.props,\n _key: child.key != null ? String(child.key) : '',\n }))\n\n // Convert items to panel-like structure if using data-driven pattern\n const effectivePanels: InternalPanelProps[] = items && items.length > 0\n ? items.map(item => ({\n _key: item.key,\n tab: item.label,\n children: item.children,\n disabled: item.disabled,\n icon: item.icon,\n }))\n : panels\n\n const [internalActiveKey, setInternalActiveKey] = useState(\n defaultActiveKey || effectivePanels[0]?._key || ''\n )\n const currentActiveKey = activeKey !== undefined ? activeKey : internalActiveKey\n\n const handleTabClick = (key: string) => {\n if (activeKey === undefined) {\n setInternalActiveKey(key)\n }\n onChange?.(key)\n }\n\n const classes = [\n dTabs,\n variant && variantClasses[variant],\n effectiveSize && sizeClasses[effectiveSize],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const baseId = useId()\n const activePanel = effectivePanels.find((panel) => panel._key === currentActiveKey)\n\n const tabList = (\n <div role=\"tablist\" className={classes} data-testid={getTestId('tablist')}>\n {effectivePanels.map((panel) => {\n const isActive = currentActiveKey === panel._key\n const tabId = `${baseId}-tab-${panel._key}`\n const panelId = `${baseId}-panel-${panel._key}`\n const tabClasses = [\n dTab,\n isActive && dTabActive,\n panel.disabled && dTabDisabled,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n key={panel._key}\n role=\"tab\"\n id={tabId}\n className={tabClasses}\n onClick={() => !panel.disabled && handleTabClick(panel._key)}\n disabled={panel.disabled}\n data-state={isActive ? 'active' : 'inactive'}\n data-testid={getTestId(`tab-${panel._key}`)}\n aria-selected={isActive}\n aria-controls={panelId}\n >\n {panel.icon && <span className=\"mr-1\">{panel.icon}</span>}\n {panel.tab}\n </button>\n )\n })}\n </div>\n )\n\n const content = activePanel && (\n <div\n className={position === 'top' ? 'mt-4' : 'mb-4'}\n role=\"tabpanel\"\n id={`${baseId}-panel-${activePanel._key}`}\n aria-labelledby={`${baseId}-tab-${activePanel._key}`}\n data-testid={getTestId('tabpanel')}\n >\n {activePanel.children}\n </div>\n )\n\n return (\n <div ref={ref} data-testid={testId} {...rest}>\n {position === 'top' ? (\n <>\n {tabList}\n {content}\n </>\n ) : (\n <>\n {content}\n {tabList}\n </>\n )}\n </div>\n )\n})\n\nfunction TabPanel({ children }: TabPanelProps) {\n // This component is only used for type checking and is not rendered directly\n // The actual rendering is done in TabsRoot\n return <>{children}</>\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n Panel: TabPanel,\n})\n"],"names":["dTabs","dTabsBox","dTabsBorder","dTabsLift","dTabsXs","dTabsSm","dTabsMd","dTabsLg","dTabsXl","dTab","dTabActive","dTabDisabled","variantClasses","sizeClasses","TabsRoot","forwardRef","children","items","activeKey","defaultActiveKey","onChange","variant","size","position","testId","className","rest","ref","componentSize","useConfig","effectiveSize","getTestId","suffix","panels","React","child","TabPanel","effectivePanels","item","internalActiveKey","setInternalActiveKey","useState","currentActiveKey","handleTabClick","key","classes","baseId","useId","activePanel","panel","tabList","jsx","isActive","tabId","panelId","tabClasses","jsxs","content","Fragment","Tabs"],"mappings":"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"}
@@ -9,5 +9,6 @@ export interface TextRotateProps {
9
9
  centered?: boolean;
10
10
  /** Additional CSS classes */
11
11
  className?: string;
12
+ 'data-testid'?: string;
12
13
  }
13
14
  export declare const TextRotate: React.FC<TextRotateProps>;
@@ -1,26 +1,28 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- const c = "text-rotate", d = {
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ const l = "text-rotate", u = {
3
3
  6e3: "duration-6000",
4
4
  9e3: "duration-9000",
5
5
  12e3: "duration-12000",
6
6
  15e3: "duration-15000",
7
7
  18e3: "duration-18000"
8
- }, u = ({
9
- items: s,
10
- duration: e,
11
- centered: a = !1,
12
- className: n = ""
8
+ }, $ = ({
9
+ items: n,
10
+ duration: s,
11
+ centered: o = !1,
12
+ className: r = "",
13
+ "data-testid": t
13
14
  }) => {
14
- const r = e ? d[e] : "";
15
- return /* @__PURE__ */ t(
15
+ const d = s ? u[s] : "", c = (e) => t ? `${t}-${e}` : void 0;
16
+ return /* @__PURE__ */ a(
16
17
  "span",
17
18
  {
18
- className: `${c} ${r} ${a ? "justify-items-center" : ""} ${n}`.trim(),
19
- children: /* @__PURE__ */ t("span", { children: s.slice(0, 6).map((o, i) => /* @__PURE__ */ t("span", { children: o }, i)) })
19
+ className: `${l} ${d} ${o ? "justify-items-center" : ""} ${r}`.trim(),
20
+ "data-testid": t,
21
+ children: /* @__PURE__ */ a("span", { children: n.slice(0, 6).map((e, i) => /* @__PURE__ */ a("span", { "data-testid": c(`item-${i}`), children: e }, i)) })
20
22
  }
21
23
  );
22
24
  };
23
25
  export {
24
- u as TextRotate
26
+ $ as TextRotate
25
27
  };
26
28
  //# sourceMappingURL=TextRotate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextRotate.js","sources":["../../src/components/TextRotate.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dTextRotate = 'text-rotate'\n\nexport type TextRotateDuration = 6000 | 9000 | 12000 | 15000 | 18000\n\nconst durationClasses: Record<TextRotateDuration, string> = {\n 6000: 'duration-6000',\n 9000: 'duration-9000',\n 12000: 'duration-12000',\n 15000: 'duration-15000',\n 18000: 'duration-18000',\n}\n\nexport interface TextRotateProps {\n /** Text items to rotate through (max 6) */\n items: React.ReactNode[]\n /** Animation duration in ms (default 10000) */\n duration?: TextRotateDuration\n /** Center text horizontally */\n centered?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const TextRotate: React.FC<TextRotateProps> = ({\n items,\n duration,\n centered = false,\n className = '',\n}) => {\n const durationClass = duration ? durationClasses[duration] : ''\n\n return (\n <span\n className={`${dTextRotate} ${durationClass} ${centered ? 'justify-items-center' : ''} ${className}`.trim()}\n >\n <span>\n {items.slice(0, 6).map((item, index) => (\n <span key={index}>{item}</span>\n ))}\n </span>\n </span>\n )\n}\n"],"names":["dTextRotate","durationClasses","TextRotate","items","duration","centered","className","durationClass","jsx","item","index"],"mappings":";AAGA,MAAMA,IAAc,eAIdC,IAAsD;AAAA,EAC1D,KAAM;AAAA,EACN,KAAM;AAAA,EACN,MAAO;AAAA,EACP,MAAO;AAAA,EACP,MAAO;AACT,GAaaC,IAAwC,CAAC;AAAA,EACpD,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AACd,MAAM;AACJ,QAAMC,IAAgBH,IAAWH,EAAgBG,CAAQ,IAAI;AAE7D,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAGR,CAAW,IAAIO,CAAa,IAAIF,IAAW,yBAAyB,EAAE,IAAIC,CAAS,GAAG,KAAA;AAAA,MAEpG,4BAAC,QAAA,EACE,UAAAH,EAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAACM,GAAMC,MAC5B,gBAAAF,EAAC,QAAA,EAAkB,UAAAC,EAAA,GAARC,CAAa,CACzB,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"TextRotate.js","sources":["../../src/components/TextRotate.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dTextRotate = 'text-rotate'\n\nexport type TextRotateDuration = 6000 | 9000 | 12000 | 15000 | 18000\n\nconst durationClasses: Record<TextRotateDuration, string> = {\n 6000: 'duration-6000',\n 9000: 'duration-9000',\n 12000: 'duration-12000',\n 15000: 'duration-15000',\n 18000: 'duration-18000',\n}\n\nexport interface TextRotateProps {\n /** Text items to rotate through (max 6) */\n items: React.ReactNode[]\n /** Animation duration in ms (default 10000) */\n duration?: TextRotateDuration\n /** Center text horizontally */\n centered?: boolean\n /** Additional CSS classes */\n className?: string\n 'data-testid'?: string\n}\n\nexport const TextRotate: React.FC<TextRotateProps> = ({\n items,\n duration,\n centered = false,\n className = '',\n 'data-testid': testId,\n}) => {\n const durationClass = duration ? durationClasses[duration] : ''\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n\n return (\n <span\n className={`${dTextRotate} ${durationClass} ${centered ? 'justify-items-center' : ''} ${className}`.trim()}\n data-testid={testId}\n >\n <span>\n {items.slice(0, 6).map((item, index) => (\n <span key={index} data-testid={getTestId(`item-${index}`)}>{item}</span>\n ))}\n </span>\n </span>\n )\n}\n"],"names":["dTextRotate","durationClasses","TextRotate","items","duration","centered","className","testId","durationClass","getTestId","suffix","jsx","item","index"],"mappings":";AAGA,MAAMA,IAAc,eAIdC,IAAsD;AAAA,EAC1D,KAAM;AAAA,EACN,KAAM;AAAA,EACN,MAAO;AAAA,EACP,MAAO;AAAA,EACP,MAAO;AACT,GAcaC,IAAwC,CAAC;AAAA,EACpD,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,eAAeC;AACjB,MAAM;AACJ,QAAMC,IAAgBJ,IAAWH,EAAgBG,CAAQ,IAAI,IACvDK,IAAY,CAACC,MAAoBH,IAAS,GAAGA,CAAM,IAAIG,CAAM,KAAK;AAExE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAGX,CAAW,IAAIQ,CAAa,IAAIH,IAAW,yBAAyB,EAAE,IAAIC,CAAS,GAAG,KAAA;AAAA,MACpG,eAAaC;AAAA,MAEb,UAAA,gBAAAI,EAAC,UACE,UAAAR,EAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAACS,GAAMC,wBAC3B,QAAA,EAAiB,eAAaJ,EAAU,QAAQI,CAAK,EAAE,GAAI,UAAAD,KAAjDC,CAAsD,CAClE,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -5,5 +5,6 @@ export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTex
5
5
  ghost?: boolean;
6
6
  bordered?: boolean;
7
7
  className?: string;
8
+ 'data-testid'?: string;
8
9
  }
9
10
  export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;