asterui 0.12.26 → 0.12.27

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 (163) hide show
  1. package/dist/components/Descriptions.d.ts +35 -3
  2. package/dist/components/Empty.d.ts +10 -1
  3. package/dist/components/Image.d.ts +13 -1
  4. package/dist/components/List.d.ts +74 -8
  5. package/dist/components/Table.d.ts +64 -10
  6. package/dist/components/Timeline.d.ts +62 -7
  7. package/dist/index.d.ts +4 -6
  8. package/dist/index.js +148 -150
  9. package/dist/index.js.map +1 -1
  10. package/dist/index10.js +1 -1
  11. package/dist/index100.js +5 -32
  12. package/dist/index100.js.map +1 -1
  13. package/dist/index101.js +13 -5
  14. package/dist/index101.js.map +1 -1
  15. package/dist/index102.js +43 -11
  16. package/dist/index102.js.map +1 -1
  17. package/dist/index103.js +11 -44
  18. package/dist/index103.js.map +1 -1
  19. package/dist/index104.js +12 -10
  20. package/dist/index104.js.map +1 -1
  21. package/dist/index105.js +7 -14
  22. package/dist/index105.js.map +1 -1
  23. package/dist/index106.js +12 -7
  24. package/dist/index106.js.map +1 -1
  25. package/dist/index107.js +29 -11
  26. package/dist/index107.js.map +1 -1
  27. package/dist/index108.js +16 -29
  28. package/dist/index108.js.map +1 -1
  29. package/dist/index109.js +31 -16
  30. package/dist/index109.js.map +1 -1
  31. package/dist/index110.js +517 -30
  32. package/dist/index110.js.map +1 -1
  33. package/dist/index111.js +45 -515
  34. package/dist/index111.js.map +1 -1
  35. package/dist/index22.js +1 -1
  36. package/dist/index23.js +127 -93
  37. package/dist/index23.js.map +1 -1
  38. package/dist/index39.js +162 -115
  39. package/dist/index39.js.map +1 -1
  40. package/dist/index40.js +398 -40
  41. package/dist/index40.js.map +1 -1
  42. package/dist/index41.js +132 -389
  43. package/dist/index41.js.map +1 -1
  44. package/dist/index42.js +252 -91
  45. package/dist/index42.js.map +1 -1
  46. package/dist/index43.js +143 -247
  47. package/dist/index43.js.map +1 -1
  48. package/dist/index44.js +15 -154
  49. package/dist/index44.js.map +1 -1
  50. package/dist/index45.js +17 -15
  51. package/dist/index45.js.map +1 -1
  52. package/dist/index46.js +136 -16
  53. package/dist/index46.js.map +1 -1
  54. package/dist/index47.js +118 -133
  55. package/dist/index47.js.map +1 -1
  56. package/dist/index48.js +35 -13
  57. package/dist/index48.js.map +1 -1
  58. package/dist/index49.js +34 -35
  59. package/dist/index49.js.map +1 -1
  60. package/dist/index50.js +81 -34
  61. package/dist/index50.js.map +1 -1
  62. package/dist/index51.js +166 -71
  63. package/dist/index51.js.map +1 -1
  64. package/dist/index52.js +144 -167
  65. package/dist/index52.js.map +1 -1
  66. package/dist/index53.js +11 -152
  67. package/dist/index53.js.map +1 -1
  68. package/dist/index54.js +55 -10
  69. package/dist/index54.js.map +1 -1
  70. package/dist/index55.js +12 -55
  71. package/dist/index55.js.map +1 -1
  72. package/dist/index56.js +7 -14
  73. package/dist/index56.js.map +1 -1
  74. package/dist/index57.js +333 -6
  75. package/dist/index57.js.map +1 -1
  76. package/dist/index58.js +47 -334
  77. package/dist/index58.js.map +1 -1
  78. package/dist/index59.js +122 -47
  79. package/dist/index59.js.map +1 -1
  80. package/dist/index60.js +108 -120
  81. package/dist/index60.js.map +1 -1
  82. package/dist/index61.js +167 -107
  83. package/dist/index61.js.map +1 -1
  84. package/dist/index62.js +29 -167
  85. package/dist/index62.js.map +1 -1
  86. package/dist/index63.js +120 -30
  87. package/dist/index63.js.map +1 -1
  88. package/dist/index64.js +80 -116
  89. package/dist/index64.js.map +1 -1
  90. package/dist/index65.js +19 -85
  91. package/dist/index65.js.map +1 -1
  92. package/dist/index66.js +73 -19
  93. package/dist/index66.js.map +1 -1
  94. package/dist/index67.js +54 -71
  95. package/dist/index67.js.map +1 -1
  96. package/dist/index68.js +44 -56
  97. package/dist/index68.js.map +1 -1
  98. package/dist/index69.js +49 -42
  99. package/dist/index69.js.map +1 -1
  100. package/dist/index70.js +121 -50
  101. package/dist/index70.js.map +1 -1
  102. package/dist/index71.js +102 -118
  103. package/dist/index71.js.map +1 -1
  104. package/dist/index72.js +72 -105
  105. package/dist/index72.js.map +1 -1
  106. package/dist/index73.js +67 -73
  107. package/dist/index73.js.map +1 -1
  108. package/dist/index74.js +19 -66
  109. package/dist/index74.js.map +1 -1
  110. package/dist/index75.js +55 -18
  111. package/dist/index75.js.map +1 -1
  112. package/dist/index76.js +251 -55
  113. package/dist/index76.js.map +1 -1
  114. package/dist/index77.js +22 -254
  115. package/dist/index77.js.map +1 -1
  116. package/dist/index78.js +31 -22
  117. package/dist/index78.js.map +1 -1
  118. package/dist/index79.js +93 -30
  119. package/dist/index79.js.map +1 -1
  120. package/dist/index80.js +626 -86
  121. package/dist/index80.js.map +1 -1
  122. package/dist/index81.js +73 -322
  123. package/dist/index81.js.map +1 -1
  124. package/dist/index82.js +39 -79
  125. package/dist/index82.js.map +1 -1
  126. package/dist/index83.js +23 -40
  127. package/dist/index83.js.map +1 -1
  128. package/dist/index84.js +207 -23
  129. package/dist/index84.js.map +1 -1
  130. package/dist/index85.js +148 -199
  131. package/dist/index85.js.map +1 -1
  132. package/dist/index86.js +152 -147
  133. package/dist/index86.js.map +1 -1
  134. package/dist/index87.js +143 -156
  135. package/dist/index87.js.map +1 -1
  136. package/dist/index88.js +35 -65
  137. package/dist/index88.js.map +1 -1
  138. package/dist/index89.js +234 -35
  139. package/dist/index89.js.map +1 -1
  140. package/dist/index90.js +31 -231
  141. package/dist/index90.js.map +1 -1
  142. package/dist/index91.js +210 -34
  143. package/dist/index91.js.map +1 -1
  144. package/dist/index92.js +418 -187
  145. package/dist/index92.js.map +1 -1
  146. package/dist/index93.js +686 -376
  147. package/dist/index93.js.map +1 -1
  148. package/dist/index94.js +165 -738
  149. package/dist/index94.js.map +1 -1
  150. package/dist/index95.js +253 -173
  151. package/dist/index95.js.map +1 -1
  152. package/dist/index96.js +64 -256
  153. package/dist/index96.js.map +1 -1
  154. package/dist/index97.js +121 -61
  155. package/dist/index97.js.map +1 -1
  156. package/dist/index98.js +14 -126
  157. package/dist/index98.js.map +1 -1
  158. package/dist/index99.js +31 -12
  159. package/dist/index99.js.map +1 -1
  160. package/package.json +1 -1
  161. package/dist/components/Indicator.d.ts +0 -7
  162. package/dist/index112.js +0 -53
  163. package/dist/index112.js.map +0 -1
package/dist/index72.js CHANGED
@@ -1,110 +1,77 @@
1
- import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
- const m = {
3
- success: /* @__PURE__ */ e(
4
- "svg",
5
- {
6
- className: "w-16 h-16 text-success",
7
- fill: "none",
8
- viewBox: "0 0 24 24",
9
- stroke: "currentColor",
10
- children: /* @__PURE__ */ e(
11
- "path",
12
- {
13
- strokeLinecap: "round",
14
- strokeLinejoin: "round",
15
- strokeWidth: 2,
16
- d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
17
- }
18
- )
1
+ import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
+ import { forwardRef as N, useRef as y } from "react";
3
+ const R = N(
4
+ ({
5
+ size: e,
6
+ color: r,
7
+ status: o,
8
+ ghost: b = !1,
9
+ bordered: p = !0,
10
+ floatingLabel: a,
11
+ addonBefore: l,
12
+ addonAfter: t,
13
+ className: i = "",
14
+ children: f,
15
+ ...m
16
+ }, w) => {
17
+ const h = y(null), u = w || h, c = {
18
+ xs: "select-xs",
19
+ sm: "select-sm",
20
+ md: "select-md",
21
+ lg: "select-lg",
22
+ xl: "select-xl"
23
+ }, d = o ? {
24
+ error: "select-error",
25
+ warning: "select-warning"
26
+ }[o] : r ? {
27
+ neutral: "select-neutral",
28
+ primary: "select-primary",
29
+ secondary: "select-secondary",
30
+ accent: "select-accent",
31
+ info: "select-info",
32
+ success: "select-success",
33
+ warning: "select-warning",
34
+ error: "select-error"
35
+ }[r] : "", g = l || t, j = g ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", i].filter(Boolean).join(" ") : [
36
+ "select",
37
+ "w-full",
38
+ p && "select-bordered",
39
+ b && "select-ghost",
40
+ e && c[e],
41
+ d,
42
+ i
43
+ ].filter(Boolean).join(" "), x = /* @__PURE__ */ s("select", { ref: u, className: j, ...m, children: f });
44
+ if (a) {
45
+ const n = [
46
+ "floating-label",
47
+ e && c[e]
48
+ ].filter(Boolean).join(" ");
49
+ return /* @__PURE__ */ C("label", { className: n, children: [
50
+ /* @__PURE__ */ s("select", { ref: u, className: "select select-bordered w-full", ...m, children: f }),
51
+ /* @__PURE__ */ s("span", { children: a })
52
+ ] });
19
53
  }
20
- ),
21
- error: /* @__PURE__ */ e(
22
- "svg",
23
- {
24
- className: "w-16 h-16 text-error",
25
- fill: "none",
26
- viewBox: "0 0 24 24",
27
- stroke: "currentColor",
28
- children: /* @__PURE__ */ e(
29
- "path",
30
- {
31
- strokeLinecap: "round",
32
- strokeLinejoin: "round",
33
- strokeWidth: 2,
34
- d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
35
- }
36
- )
54
+ if (g) {
55
+ const n = [
56
+ "select",
57
+ "select-bordered",
58
+ "flex",
59
+ "items-center",
60
+ "gap-2",
61
+ e && c[e],
62
+ d
63
+ ].filter(Boolean).join(" ");
64
+ return /* @__PURE__ */ C("label", { className: n, children: [
65
+ l && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: l }),
66
+ x,
67
+ t && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: t })
68
+ ] });
37
69
  }
38
- ),
39
- info: /* @__PURE__ */ e(
40
- "svg",
41
- {
42
- className: "w-16 h-16 text-info",
43
- fill: "none",
44
- viewBox: "0 0 24 24",
45
- stroke: "currentColor",
46
- children: /* @__PURE__ */ e(
47
- "path",
48
- {
49
- strokeLinecap: "round",
50
- strokeLinejoin: "round",
51
- strokeWidth: 2,
52
- d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
53
- }
54
- )
55
- }
56
- ),
57
- warning: /* @__PURE__ */ e(
58
- "svg",
59
- {
60
- className: "w-16 h-16 text-warning",
61
- fill: "none",
62
- viewBox: "0 0 24 24",
63
- stroke: "currentColor",
64
- children: /* @__PURE__ */ e(
65
- "path",
66
- {
67
- strokeLinecap: "round",
68
- strokeLinejoin: "round",
69
- strokeWidth: 2,
70
- d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
71
- }
72
- )
73
- }
74
- ),
75
- 404: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "404" }),
76
- 403: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "403" }),
77
- 500: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "500" })
78
- }, x = ({
79
- status: t = "info",
80
- title: n,
81
- subTitle: s,
82
- icon: o,
83
- extra: r,
84
- children: l,
85
- className: i = "",
86
- ...c
87
- }) => {
88
- const a = o !== void 0 ? o : m[t];
89
- return /* @__PURE__ */ d(
90
- "div",
91
- {
92
- className: `w-full flex flex-col items-center justify-center text-center p-8 ${i}`,
93
- "data-status": t,
94
- ...c,
95
- children: [
96
- a && /* @__PURE__ */ e("div", { className: "mb-6", children: a }),
97
- n && /* @__PURE__ */ e("div", { className: "text-2xl font-semibold mb-2 text-base-content", children: n }),
98
- s && /* @__PURE__ */ e("div", { className: "text-base text-base-content/70 mb-6 max-w-md", children: s }),
99
- l && /* @__PURE__ */ e("div", { className: "mb-6 max-w-2xl", children: l }),
100
- r && /* @__PURE__ */ e("div", { className: "flex gap-2", children: r })
101
- ]
102
- }
103
- );
104
- };
105
- x.displayName = "Result";
70
+ return x;
71
+ }
72
+ );
73
+ R.displayName = "Select";
106
74
  export {
107
- x as Result,
108
- x as default
75
+ R as Select
109
76
  };
110
77
  //# sourceMappingURL=index72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index72.js","sources":["../src/components/Result.tsx"],"sourcesContent":["import React from 'react'\n\nexport type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500'\n\nexport interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n status?: ResultStatus\n title?: React.ReactNode\n subTitle?: React.ReactNode\n icon?: React.ReactNode\n extra?: React.ReactNode\n children?: React.ReactNode\n}\n\nconst defaultIcons: Record<ResultStatus, React.ReactNode> = {\n success: (\n <svg\n className=\"w-16 h-16 text-success\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"w-16 h-16 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"w-16 h-16 text-info\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"w-16 h-16 text-warning\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n ),\n '404': (\n <div className=\"text-6xl font-bold text-base-content/40\">404</div>\n ),\n '403': (\n <div className=\"text-6xl font-bold text-base-content/40\">403</div>\n ),\n '500': (\n <div className=\"text-6xl font-bold text-base-content/40\">500</div>\n ),\n}\n\nexport const Result: React.FC<ResultProps> = ({\n status = 'info',\n title,\n subTitle,\n icon,\n extra,\n children,\n className = '',\n ...rest\n}) => {\n const displayIcon = icon !== undefined ? icon : defaultIcons[status]\n\n return (\n <div\n className={`w-full flex flex-col items-center justify-center text-center p-8 ${className}`}\n data-status={status}\n {...rest}\n >\n {displayIcon && <div className=\"mb-6\">{displayIcon}</div>}\n\n {title && (\n <div className=\"text-2xl font-semibold mb-2 text-base-content\">\n {title}\n </div>\n )}\n\n {subTitle && (\n <div className=\"text-base text-base-content/70 mb-6 max-w-md\">\n {subTitle}\n </div>\n )}\n\n {children && <div className=\"mb-6 max-w-2xl\">{children}</div>}\n\n {extra && <div className=\"flex gap-2\">{extra}</div>}\n </div>\n )\n}\n\nResult.displayName = 'Result'\n\nexport default Result\n"],"names":["defaultIcons","jsx","Result","status","title","subTitle","icon","extra","children","className","rest","displayIcon","jsxs"],"mappings":";AAaA,MAAMA,IAAsD;AAAA,EAC1D,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,OACE,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,MACE,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,SACE,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,KACE,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,OAAG;AAAA,EAE9D,KACE,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,OAAG;AAAA,EAE9D,KACE,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,MAAA,CAAG;AAEhE,GAEaC,IAAgC,CAAC;AAAA,EAC5C,QAAAC,IAAS;AAAA,EACT,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAcL,MAAS,SAAYA,IAAON,EAAaG,CAAM;AAEnE,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,oEAAoEH,CAAS;AAAA,MACxF,eAAaN;AAAA,MACZ,GAAGO;AAAA,MAEH,UAAA;AAAA,QAAAC,KAAe,gBAAAV,EAAC,OAAA,EAAI,WAAU,QAAQ,UAAAU,GAAY;AAAA,QAElDP,KACC,gBAAAH,EAAC,OAAA,EAAI,WAAU,iDACZ,UAAAG,GACH;AAAA,QAGDC,KACC,gBAAAJ,EAAC,OAAA,EAAI,WAAU,gDACZ,UAAAI,GACH;AAAA,QAGDG,KAAY,gBAAAP,EAAC,OAAA,EAAI,WAAU,kBAAkB,UAAAO,GAAS;AAAA,QAEtDD,KAAS,gBAAAN,EAAC,OAAA,EAAI,WAAU,cAAc,UAAAM,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnD;AAEAL,EAAO,cAAc;"}
1
+ {"version":3,"file":"index72.js","sources":["../src/components/Select.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** Text/element before select (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after select (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n className?: string\n children?: React.ReactNode\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n floatingLabel,\n addonBefore,\n addonAfter,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const innerRef = useRef<HTMLSelectElement>(null)\n const selectRef = (ref as React.RefObject<HTMLSelectElement>) || innerRef\n\n const sizeClasses = {\n xs: 'select-xs',\n sm: 'select-sm',\n md: 'select-md',\n lg: 'select-lg',\n xl: 'select-xl',\n }\n\n const colorClasses = {\n neutral: 'select-neutral',\n primary: 'select-primary',\n secondary: 'select-secondary',\n accent: 'select-accent',\n info: 'select-info',\n success: 'select-success',\n warning: 'select-warning',\n error: 'select-error',\n }\n\n const statusClasses = {\n error: 'select-error',\n warning: 'select-warning',\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons, the wrapper has the styling\n const hasExternalAddons = addonBefore || addonAfter\n\n const selectClasses = hasExternalAddons\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n 'select',\n 'w-full',\n bordered && 'select-bordered',\n ghost && 'select-ghost',\n size && sizeClasses[size],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Build the core select element\n const selectElement = (\n <select ref={selectRef} className={selectClasses} {...props}>\n {children}\n </select>\n )\n\n // Wrap with floating label if specified\n if (floatingLabel) {\n const floatingClasses = [\n 'floating-label',\n size && sizeClasses[size],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses}>\n <select ref={selectRef} className=\"select select-bordered w-full\" {...props}>\n {children}\n </select>\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons if specified\n if (hasExternalAddons) {\n const addonClasses = [\n 'select',\n 'select-bordered',\n 'flex',\n 'items-center',\n 'gap-2',\n size && sizeClasses[size],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses}>\n {addonBefore && <span className=\"text-base-content/70\">{addonBefore}</span>}\n {selectElement}\n {addonAfter && <span className=\"text-base-content/70\">{addonAfter}</span>}\n </label>\n )\n }\n\n return selectElement\n }\n)\n\nSelect.displayName = 'Select'\n"],"names":["Select","forwardRef","size","color","status","ghost","bordered","floatingLabel","addonBefore","addonAfter","className","children","props","ref","innerRef","useRef","selectRef","sizeClasses","effectiveColorClass","hasExternalAddons","selectClasses","selectElement","floatingClasses","jsxs","jsx","addonClasses"],"mappings":";;AAmBO,MAAMA,IAASC;AAAA,EACpB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC,IAAW;AAAA,IACX,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAWC,EAA0B,IAAI,GACzCC,IAAaH,KAA8CC,GAE3DG,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAoBAC,IAAsBd,IANN;AAAA,MACpB,OAAO;AAAA,MACP,SAAS;AAAA,IAAA,EAIwCA,CAAM,IAAKD,IAjBzC;AAAA,MACnB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA,EAS0EA,CAAK,IAAI,IAGtFgB,IAAoBX,KAAeC,GAEnCW,IAAgBD,IAClB,CAAC,QAAQ,kBAAkB,YAAY,gBAAgB,sBAAsBT,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAChH;AAAA,MACE;AAAA,MACA;AAAA,MACAJ,KAAY;AAAA,MACZD,KAAS;AAAA,MACTH,KAAQe,EAAYf,CAAI;AAAA,MACxBgB;AAAA,MACAR;AAAA,IAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAGxBW,sBACH,UAAA,EAAO,KAAKL,GAAW,WAAWI,GAAgB,GAAGR,GACnD,UAAAD,EAAA,CACH;AAIF,QAAIJ,GAAe;AACjB,YAAMe,IAAkB;AAAA,QACtB;AAAA,QACApB,KAAQe,EAAYf,CAAI;AAAA,MAAA,EACxB,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAqB,EAAC,SAAA,EAAM,WAAWD,GAChB,UAAA;AAAA,QAAA,gBAAAE,EAAC,YAAO,KAAKR,GAAW,WAAU,iCAAiC,GAAGJ,GACnE,UAAAD,GACH;AAAA,QACA,gBAAAa,EAAC,UAAM,UAAAjB,EAAA,CAAc;AAAA,MAAA,GACvB;AAAA,IAEJ;AAGA,QAAIY,GAAmB;AACrB,YAAMM,IAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAvB,KAAQe,EAAYf,CAAI;AAAA,QACxBgB;AAAA,MAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAK,EAAC,SAAA,EAAM,WAAWE,GACf,UAAA;AAAA,QAAAjB,KAAe,gBAAAgB,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAhB,GAAY;AAAA,QACnEa;AAAA,QACAZ,KAAc,gBAAAe,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAf,EAAA,CAAW;AAAA,MAAA,GACpE;AAAA,IAEJ;AAEA,WAAOY;AAAA,EACT;AACF;AAEArB,EAAO,cAAc;"}
package/dist/index73.js CHANGED
@@ -1,77 +1,71 @@
1
- import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
- import { forwardRef as N, useRef as y } from "react";
3
- const R = N(
4
- ({
5
- size: e,
6
- color: r,
7
- status: o,
8
- ghost: b = !1,
9
- bordered: p = !0,
10
- floatingLabel: a,
11
- addonBefore: l,
12
- addonAfter: t,
13
- className: i = "",
14
- children: f,
15
- ...m
16
- }, w) => {
17
- const h = y(null), u = w || h, c = {
18
- xs: "select-xs",
19
- sm: "select-sm",
20
- md: "select-md",
21
- lg: "select-lg",
22
- xl: "select-xl"
23
- }, d = o ? {
24
- error: "select-error",
25
- warning: "select-warning"
26
- }[o] : r ? {
27
- neutral: "select-neutral",
28
- primary: "select-primary",
29
- secondary: "select-secondary",
30
- accent: "select-accent",
31
- info: "select-info",
32
- success: "select-success",
33
- warning: "select-warning",
34
- error: "select-error"
35
- }[r] : "", g = l || t, j = g ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", i].filter(Boolean).join(" ") : [
36
- "select",
37
- "w-full",
38
- p && "select-bordered",
39
- b && "select-ghost",
40
- e && c[e],
41
- d,
42
- i
43
- ].filter(Boolean).join(" "), x = /* @__PURE__ */ s("select", { ref: u, className: j, ...m, children: f });
44
- if (a) {
45
- const n = [
46
- "floating-label",
47
- e && c[e]
48
- ].filter(Boolean).join(" ");
49
- return /* @__PURE__ */ C("label", { className: n, children: [
50
- /* @__PURE__ */ s("select", { ref: u, className: "select select-bordered w-full", ...m, children: f }),
51
- /* @__PURE__ */ s("span", { children: a })
52
- ] });
1
+ import { jsx as b, jsxs as h } from "react/jsx-runtime";
2
+ import { useState as p, useCallback as S, createContext as j, useContext as v } from "react";
3
+ const C = j(null), I = () => {
4
+ const e = v(C);
5
+ if (!e)
6
+ throw new Error("Segmented.Item must be used within a Segmented component");
7
+ return e;
8
+ }, V = {
9
+ xs: "btn-xs",
10
+ sm: "btn-sm",
11
+ md: "",
12
+ lg: "btn-lg"
13
+ }, k = ({
14
+ value: e,
15
+ disabled: o = !1,
16
+ icon: n,
17
+ children: l,
18
+ className: a = ""
19
+ }) => {
20
+ const { value: i, onChange: d, size: r, disabled: c } = I(), s = i === e, t = c || o, m = () => {
21
+ t || d?.(e);
22
+ }, u = [
23
+ "join-item",
24
+ "btn",
25
+ V[r],
26
+ s ? "btn-active" : "",
27
+ a
28
+ ].filter(Boolean).join(" ");
29
+ return /* @__PURE__ */ h(
30
+ "button",
31
+ {
32
+ type: "button",
33
+ className: u,
34
+ disabled: t,
35
+ onClick: m,
36
+ "aria-pressed": s,
37
+ "data-testid": `segmented-item-${e}`,
38
+ children: [
39
+ n && /* @__PURE__ */ b("span", { className: "mr-1", children: n }),
40
+ l
41
+ ]
53
42
  }
54
- if (g) {
55
- const n = [
56
- "select",
57
- "select-bordered",
58
- "flex",
59
- "items-center",
60
- "gap-2",
61
- e && c[e],
62
- d
63
- ].filter(Boolean).join(" ");
64
- return /* @__PURE__ */ C("label", { className: n, children: [
65
- l && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: l }),
66
- x,
67
- t && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: t })
68
- ] });
69
- }
70
- return x;
71
- }
72
- );
73
- R.displayName = "Select";
43
+ );
44
+ }, w = ({
45
+ value: e,
46
+ defaultValue: o,
47
+ onChange: n,
48
+ size: l = "md",
49
+ block: a = !1,
50
+ disabled: i = !1,
51
+ className: d = "",
52
+ children: r
53
+ }) => {
54
+ const [c, s] = p(o), t = e !== void 0, m = t ? e : c, u = S(
55
+ (g) => {
56
+ t || s(g), n?.(g);
57
+ },
58
+ [t, n]
59
+ ), f = {
60
+ value: m,
61
+ onChange: u,
62
+ size: l,
63
+ disabled: i
64
+ }, x = ["join", a ? "w-full [&>.join-item]:flex-1" : "", d].filter(Boolean).join(" ");
65
+ return /* @__PURE__ */ b(C.Provider, { value: f, children: /* @__PURE__ */ b("div", { className: x, role: "group", "data-testid": "segmented", children: r }) });
66
+ };
67
+ w.Item = k;
74
68
  export {
75
- R as Select
69
+ w as Segmented
76
70
  };
77
71
  //# sourceMappingURL=index73.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index73.js","sources":["../src/components/Select.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** Text/element before select (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after select (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n className?: string\n children?: React.ReactNode\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n floatingLabel,\n addonBefore,\n addonAfter,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const innerRef = useRef<HTMLSelectElement>(null)\n const selectRef = (ref as React.RefObject<HTMLSelectElement>) || innerRef\n\n const sizeClasses = {\n xs: 'select-xs',\n sm: 'select-sm',\n md: 'select-md',\n lg: 'select-lg',\n xl: 'select-xl',\n }\n\n const colorClasses = {\n neutral: 'select-neutral',\n primary: 'select-primary',\n secondary: 'select-secondary',\n accent: 'select-accent',\n info: 'select-info',\n success: 'select-success',\n warning: 'select-warning',\n error: 'select-error',\n }\n\n const statusClasses = {\n error: 'select-error',\n warning: 'select-warning',\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons, the wrapper has the styling\n const hasExternalAddons = addonBefore || addonAfter\n\n const selectClasses = hasExternalAddons\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n 'select',\n 'w-full',\n bordered && 'select-bordered',\n ghost && 'select-ghost',\n size && sizeClasses[size],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Build the core select element\n const selectElement = (\n <select ref={selectRef} className={selectClasses} {...props}>\n {children}\n </select>\n )\n\n // Wrap with floating label if specified\n if (floatingLabel) {\n const floatingClasses = [\n 'floating-label',\n size && sizeClasses[size],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses}>\n <select ref={selectRef} className=\"select select-bordered w-full\" {...props}>\n {children}\n </select>\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons if specified\n if (hasExternalAddons) {\n const addonClasses = [\n 'select',\n 'select-bordered',\n 'flex',\n 'items-center',\n 'gap-2',\n size && sizeClasses[size],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses}>\n {addonBefore && <span className=\"text-base-content/70\">{addonBefore}</span>}\n {selectElement}\n {addonAfter && <span className=\"text-base-content/70\">{addonAfter}</span>}\n </label>\n )\n }\n\n return selectElement\n }\n)\n\nSelect.displayName = 'Select'\n"],"names":["Select","forwardRef","size","color","status","ghost","bordered","floatingLabel","addonBefore","addonAfter","className","children","props","ref","innerRef","useRef","selectRef","sizeClasses","effectiveColorClass","hasExternalAddons","selectClasses","selectElement","floatingClasses","jsxs","jsx","addonClasses"],"mappings":";;AAmBO,MAAMA,IAASC;AAAA,EACpB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC,IAAW;AAAA,IACX,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAWC,EAA0B,IAAI,GACzCC,IAAaH,KAA8CC,GAE3DG,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAoBAC,IAAsBd,IANN;AAAA,MACpB,OAAO;AAAA,MACP,SAAS;AAAA,IAAA,EAIwCA,CAAM,IAAKD,IAjBzC;AAAA,MACnB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA,EAS0EA,CAAK,IAAI,IAGtFgB,IAAoBX,KAAeC,GAEnCW,IAAgBD,IAClB,CAAC,QAAQ,kBAAkB,YAAY,gBAAgB,sBAAsBT,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAChH;AAAA,MACE;AAAA,MACA;AAAA,MACAJ,KAAY;AAAA,MACZD,KAAS;AAAA,MACTH,KAAQe,EAAYf,CAAI;AAAA,MACxBgB;AAAA,MACAR;AAAA,IAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAGxBW,sBACH,UAAA,EAAO,KAAKL,GAAW,WAAWI,GAAgB,GAAGR,GACnD,UAAAD,EAAA,CACH;AAIF,QAAIJ,GAAe;AACjB,YAAMe,IAAkB;AAAA,QACtB;AAAA,QACApB,KAAQe,EAAYf,CAAI;AAAA,MAAA,EACxB,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAqB,EAAC,SAAA,EAAM,WAAWD,GAChB,UAAA;AAAA,QAAA,gBAAAE,EAAC,YAAO,KAAKR,GAAW,WAAU,iCAAiC,GAAGJ,GACnE,UAAAD,GACH;AAAA,QACA,gBAAAa,EAAC,UAAM,UAAAjB,EAAA,CAAc;AAAA,MAAA,GACvB;AAAA,IAEJ;AAGA,QAAIY,GAAmB;AACrB,YAAMM,IAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAvB,KAAQe,EAAYf,CAAI;AAAA,QACxBgB;AAAA,MAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAK,EAAC,SAAA,EAAM,WAAWE,GACf,UAAA;AAAA,QAAAjB,KAAe,gBAAAgB,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAhB,GAAY;AAAA,QACnEa;AAAA,QACAZ,KAAc,gBAAAe,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAf,EAAA,CAAW;AAAA,MAAA,GACpE;AAAA,IAEJ;AAEA,WAAOY;AAAA,EACT;AACF;AAEArB,EAAO,cAAc;"}
1
+ {"version":3,"file":"index73.js","sources":["../src/components/Segmented.tsx"],"sourcesContent":["import React, { useState, useCallback, createContext, useContext } from 'react'\n\nexport type SegmentedValue = string | number\n\ninterface SegmentedContextValue {\n value?: SegmentedValue\n onChange?: (value: SegmentedValue) => void\n size: 'xs' | 'sm' | 'md' | 'lg'\n disabled: boolean\n}\n\nconst SegmentedContext = createContext<SegmentedContextValue | null>(null)\n\nconst useSegmentedContext = () => {\n const context = useContext(SegmentedContext)\n if (!context) {\n throw new Error('Segmented.Item must be used within a Segmented component')\n }\n return context\n}\n\nexport interface SegmentedItemProps {\n /** Option value */\n value: SegmentedValue\n /** Disable this option */\n disabled?: boolean\n /** Icon to display before label */\n icon?: React.ReactNode\n /** Label content */\n children: React.ReactNode\n /** Additional CSS class */\n className?: string\n}\n\nconst sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n}\n\nconst SegmentedItem: React.FC<SegmentedItemProps> = ({\n value,\n disabled: itemDisabled = false,\n icon,\n children,\n className = '',\n}) => {\n const { value: selectedValue, onChange, size, disabled: groupDisabled } = useSegmentedContext()\n\n const isSelected = selectedValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onChange?.(value)\n }\n }\n\n const buttonClasses = [\n 'join-item',\n 'btn',\n sizeClasses[size],\n isSelected ? 'btn-active' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n type=\"button\"\n className={buttonClasses}\n disabled={isDisabled}\n onClick={handleClick}\n aria-pressed={isSelected}\n data-testid={`segmented-item-${value}`}\n >\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n </button>\n )\n}\n\nexport interface SegmentedProps {\n /** Currently selected value (controlled) */\n value?: SegmentedValue\n /** Default selected value (uncontrolled) */\n defaultValue?: SegmentedValue\n /** Callback when selection changes */\n onChange?: (value: SegmentedValue) => void\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Take full width of container */\n block?: boolean\n /** Disable all options */\n disabled?: boolean\n /** Additional CSS class */\n className?: string\n /** Segmented.Item children */\n children: React.ReactNode\n}\n\nexport const Segmented: React.FC<SegmentedProps> & { Item: typeof SegmentedItem } = ({\n value,\n defaultValue,\n onChange,\n size = 'md',\n block = false,\n disabled = false,\n className = '',\n children,\n}) => {\n const [internalValue, setInternalValue] = useState<SegmentedValue | undefined>(defaultValue)\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = useCallback(\n (newValue: SegmentedValue) => {\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n [isControlled, onChange]\n )\n\n const contextValue: SegmentedContextValue = {\n value: currentValue,\n onChange: handleChange,\n size,\n disabled,\n }\n\n const containerClasses = ['join', block ? 'w-full [&>.join-item]:flex-1' : '', className]\n .filter(Boolean)\n .join(' ')\n\n return (\n <SegmentedContext.Provider value={contextValue}>\n <div className={containerClasses} role=\"group\" data-testid=\"segmented\">\n {children}\n </div>\n </SegmentedContext.Provider>\n )\n}\n\nSegmented.Item = SegmentedItem\n"],"names":["SegmentedContext","createContext","useSegmentedContext","context","useContext","sizeClasses","SegmentedItem","value","itemDisabled","icon","children","className","selectedValue","onChange","size","groupDisabled","isSelected","isDisabled","handleClick","buttonClasses","jsxs","jsx","Segmented","defaultValue","block","disabled","internalValue","setInternalValue","useState","isControlled","currentValue","handleChange","useCallback","newValue","contextValue","containerClasses"],"mappings":";;AAWA,MAAMA,IAAmBC,EAA4C,IAAI,GAEnEC,IAAsB,MAAM;AAChC,QAAMC,IAAUC,EAAWJ,CAAgB;AAC3C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT,GAeME,IAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAA8C,CAAC;AAAA,EACnD,OAAAC;AAAA,EACA,UAAUC,IAAe;AAAA,EACzB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AACJ,QAAM,EAAE,OAAOC,GAAe,UAAAC,GAAU,MAAAC,GAAM,UAAUC,EAAA,IAAkBb,EAAA,GAEpEc,IAAaJ,MAAkBL,GAC/BU,IAAaF,KAAiBP,GAE9BU,IAAc,MAAM;AACxB,IAAKD,KACHJ,IAAWN,CAAK;AAAA,EAEpB,GAEMY,IAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACAd,EAAYS,CAAI;AAAA,IAChBE,IAAa,eAAe;AAAA,IAC5BL;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWD;AAAA,MACX,UAAUF;AAAA,MACV,SAASC;AAAA,MACT,gBAAcF;AAAA,MACd,eAAa,kBAAkBT,CAAK;AAAA,MAEnC,UAAA;AAAA,QAAAE,KAAQ,gBAAAY,EAAC,QAAA,EAAK,WAAU,QAAQ,UAAAZ,GAAK;AAAA,QACrCC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GAqBaY,IAAuE,CAAC;AAAA,EACnF,OAAAf;AAAA,EACA,cAAAgB;AAAA,EACA,UAAAV;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAU,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,WAAAd,IAAY;AAAA,EACZ,UAAAD;AACF,MAAM;AACJ,QAAM,CAACgB,GAAeC,CAAgB,IAAIC,EAAqCL,CAAY,GAErFM,IAAetB,MAAU,QACzBuB,IAAeD,IAAetB,IAAQmB,GAEtCK,IAAeC;AAAA,IACnB,CAACC,MAA6B;AAC5B,MAAKJ,KACHF,EAAiBM,CAAQ,GAE3BpB,IAAWoB,CAAQ;AAAA,IACrB;AAAA,IACA,CAACJ,GAAchB,CAAQ;AAAA,EAAA,GAGnBqB,IAAsC;AAAA,IAC1C,OAAOJ;AAAA,IACP,UAAUC;AAAA,IACV,MAAAjB;AAAA,IACA,UAAAW;AAAA,EAAA,GAGIU,IAAmB,CAAC,QAAQX,IAAQ,iCAAiC,IAAIb,CAAS,EACrF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAU,EAACrB,EAAiB,UAAjB,EAA0B,OAAOkC,GAChC,UAAA,gBAAAb,EAAC,OAAA,EAAI,WAAWc,GAAkB,MAAK,SAAQ,eAAY,aACxD,UAAAzB,GACH,GACF;AAEJ;AAEAY,EAAU,OAAOhB;"}
package/dist/index74.js CHANGED
@@ -1,71 +1,24 @@
1
- import { jsx as b, jsxs as h } from "react/jsx-runtime";
2
- import { useState as p, useCallback as S, createContext as j, useContext as v } from "react";
3
- const C = j(null), I = () => {
4
- const e = v(C);
5
- if (!e)
6
- throw new Error("Segmented.Item must be used within a Segmented component");
7
- return e;
8
- }, V = {
9
- xs: "btn-xs",
10
- sm: "btn-sm",
11
- md: "",
12
- lg: "btn-lg"
13
- }, k = ({
14
- value: e,
15
- disabled: o = !1,
16
- icon: n,
17
- children: l,
18
- className: a = ""
1
+ import { jsx as x } from "react/jsx-runtime";
2
+ const i = ({
3
+ width: s,
4
+ height: t,
5
+ circle: o = !1,
6
+ variant: l = "default",
7
+ className: n = "",
8
+ children: r,
9
+ style: f,
10
+ ...u
19
11
  }) => {
20
- const { value: i, onChange: d, size: r, disabled: c } = I(), s = i === e, t = c || o, m = () => {
21
- t || d?.(e);
22
- }, u = [
23
- "join-item",
24
- "btn",
25
- V[r],
26
- s ? "btn-active" : "",
27
- a
28
- ].filter(Boolean).join(" ");
29
- return /* @__PURE__ */ h(
30
- "button",
31
- {
32
- type: "button",
33
- className: u,
34
- disabled: t,
35
- onClick: m,
36
- "aria-pressed": s,
37
- "data-testid": `segmented-item-${e}`,
38
- children: [
39
- n && /* @__PURE__ */ b("span", { className: "mr-1", children: n }),
40
- l
41
- ]
42
- }
43
- );
44
- }, w = ({
45
- value: e,
46
- defaultValue: o,
47
- onChange: n,
48
- size: l = "md",
49
- block: a = !1,
50
- disabled: i = !1,
51
- className: d = "",
52
- children: r
53
- }) => {
54
- const [c, s] = p(o), t = e !== void 0, m = t ? e : c, u = S(
55
- (g) => {
56
- t || s(g), n?.(g);
57
- },
58
- [t, n]
59
- ), f = {
60
- value: m,
61
- onChange: u,
62
- size: l,
63
- disabled: i
64
- }, x = ["join", a ? "w-full [&>.join-item]:flex-1" : "", d].filter(Boolean).join(" ");
65
- return /* @__PURE__ */ b(C.Provider, { value: f, children: /* @__PURE__ */ b("div", { className: x, role: "group", "data-testid": "segmented", children: r }) });
12
+ const p = () => {
13
+ const e = ["skeleton"];
14
+ return l === "text" && e.push("skeleton-text"), o && e.push("rounded-full"), n && e.push(n), e.join(" ");
15
+ }, c = () => {
16
+ const e = {};
17
+ return s && (e.width = typeof s == "number" ? `${s}px` : s), t && (e.height = typeof t == "number" ? `${t}px` : t), Object.keys(e).length > 0 ? e : void 0;
18
+ };
19
+ return /* @__PURE__ */ x("div", { className: p(), style: { ...c(), ...f }, ...u, children: r });
66
20
  };
67
- w.Item = k;
68
21
  export {
69
- w as Segmented
22
+ i as Skeleton
70
23
  };
71
24
  //# sourceMappingURL=index74.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index74.js","sources":["../src/components/Segmented.tsx"],"sourcesContent":["import React, { useState, useCallback, createContext, useContext } from 'react'\n\nexport type SegmentedValue = string | number\n\ninterface SegmentedContextValue {\n value?: SegmentedValue\n onChange?: (value: SegmentedValue) => void\n size: 'xs' | 'sm' | 'md' | 'lg'\n disabled: boolean\n}\n\nconst SegmentedContext = createContext<SegmentedContextValue | null>(null)\n\nconst useSegmentedContext = () => {\n const context = useContext(SegmentedContext)\n if (!context) {\n throw new Error('Segmented.Item must be used within a Segmented component')\n }\n return context\n}\n\nexport interface SegmentedItemProps {\n /** Option value */\n value: SegmentedValue\n /** Disable this option */\n disabled?: boolean\n /** Icon to display before label */\n icon?: React.ReactNode\n /** Label content */\n children: React.ReactNode\n /** Additional CSS class */\n className?: string\n}\n\nconst sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n}\n\nconst SegmentedItem: React.FC<SegmentedItemProps> = ({\n value,\n disabled: itemDisabled = false,\n icon,\n children,\n className = '',\n}) => {\n const { value: selectedValue, onChange, size, disabled: groupDisabled } = useSegmentedContext()\n\n const isSelected = selectedValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onChange?.(value)\n }\n }\n\n const buttonClasses = [\n 'join-item',\n 'btn',\n sizeClasses[size],\n isSelected ? 'btn-active' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n type=\"button\"\n className={buttonClasses}\n disabled={isDisabled}\n onClick={handleClick}\n aria-pressed={isSelected}\n data-testid={`segmented-item-${value}`}\n >\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n </button>\n )\n}\n\nexport interface SegmentedProps {\n /** Currently selected value (controlled) */\n value?: SegmentedValue\n /** Default selected value (uncontrolled) */\n defaultValue?: SegmentedValue\n /** Callback when selection changes */\n onChange?: (value: SegmentedValue) => void\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Take full width of container */\n block?: boolean\n /** Disable all options */\n disabled?: boolean\n /** Additional CSS class */\n className?: string\n /** Segmented.Item children */\n children: React.ReactNode\n}\n\nexport const Segmented: React.FC<SegmentedProps> & { Item: typeof SegmentedItem } = ({\n value,\n defaultValue,\n onChange,\n size = 'md',\n block = false,\n disabled = false,\n className = '',\n children,\n}) => {\n const [internalValue, setInternalValue] = useState<SegmentedValue | undefined>(defaultValue)\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = useCallback(\n (newValue: SegmentedValue) => {\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n [isControlled, onChange]\n )\n\n const contextValue: SegmentedContextValue = {\n value: currentValue,\n onChange: handleChange,\n size,\n disabled,\n }\n\n const containerClasses = ['join', block ? 'w-full [&>.join-item]:flex-1' : '', className]\n .filter(Boolean)\n .join(' ')\n\n return (\n <SegmentedContext.Provider value={contextValue}>\n <div className={containerClasses} role=\"group\" data-testid=\"segmented\">\n {children}\n </div>\n </SegmentedContext.Provider>\n )\n}\n\nSegmented.Item = SegmentedItem\n"],"names":["SegmentedContext","createContext","useSegmentedContext","context","useContext","sizeClasses","SegmentedItem","value","itemDisabled","icon","children","className","selectedValue","onChange","size","groupDisabled","isSelected","isDisabled","handleClick","buttonClasses","jsxs","jsx","Segmented","defaultValue","block","disabled","internalValue","setInternalValue","useState","isControlled","currentValue","handleChange","useCallback","newValue","contextValue","containerClasses"],"mappings":";;AAWA,MAAMA,IAAmBC,EAA4C,IAAI,GAEnEC,IAAsB,MAAM;AAChC,QAAMC,IAAUC,EAAWJ,CAAgB;AAC3C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT,GAeME,IAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAA8C,CAAC;AAAA,EACnD,OAAAC;AAAA,EACA,UAAUC,IAAe;AAAA,EACzB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AACJ,QAAM,EAAE,OAAOC,GAAe,UAAAC,GAAU,MAAAC,GAAM,UAAUC,EAAA,IAAkBb,EAAA,GAEpEc,IAAaJ,MAAkBL,GAC/BU,IAAaF,KAAiBP,GAE9BU,IAAc,MAAM;AACxB,IAAKD,KACHJ,IAAWN,CAAK;AAAA,EAEpB,GAEMY,IAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACAd,EAAYS,CAAI;AAAA,IAChBE,IAAa,eAAe;AAAA,IAC5BL;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWD;AAAA,MACX,UAAUF;AAAA,MACV,SAASC;AAAA,MACT,gBAAcF;AAAA,MACd,eAAa,kBAAkBT,CAAK;AAAA,MAEnC,UAAA;AAAA,QAAAE,KAAQ,gBAAAY,EAAC,QAAA,EAAK,WAAU,QAAQ,UAAAZ,GAAK;AAAA,QACrCC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GAqBaY,IAAuE,CAAC;AAAA,EACnF,OAAAf;AAAA,EACA,cAAAgB;AAAA,EACA,UAAAV;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAU,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,WAAAd,IAAY;AAAA,EACZ,UAAAD;AACF,MAAM;AACJ,QAAM,CAACgB,GAAeC,CAAgB,IAAIC,EAAqCL,CAAY,GAErFM,IAAetB,MAAU,QACzBuB,IAAeD,IAAetB,IAAQmB,GAEtCK,IAAeC;AAAA,IACnB,CAACC,MAA6B;AAC5B,MAAKJ,KACHF,EAAiBM,CAAQ,GAE3BpB,IAAWoB,CAAQ;AAAA,IACrB;AAAA,IACA,CAACJ,GAAchB,CAAQ;AAAA,EAAA,GAGnBqB,IAAsC;AAAA,IAC1C,OAAOJ;AAAA,IACP,UAAUC;AAAA,IACV,MAAAjB;AAAA,IACA,UAAAW;AAAA,EAAA,GAGIU,IAAmB,CAAC,QAAQX,IAAQ,iCAAiC,IAAIb,CAAS,EACrF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAU,EAACrB,EAAiB,UAAjB,EAA0B,OAAOkC,GAChC,UAAA,gBAAAb,EAAC,OAAA,EAAI,WAAWc,GAAkB,MAAK,SAAQ,eAAY,aACxD,UAAAzB,GACH,GACF;AAEJ;AAEAY,EAAU,OAAOhB;"}
1
+ {"version":3,"file":"index74.js","sources":["../src/components/Skeleton.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: string | number\n height?: string | number\n circle?: boolean\n variant?: 'default' | 'text'\n children?: React.ReactNode\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width,\n height,\n circle = false,\n variant = 'default',\n className = '',\n children,\n style,\n ...rest\n}) => {\n const getClasses = () => {\n const classes = ['skeleton']\n\n if (variant === 'text') {\n classes.push('skeleton-text')\n }\n\n if (circle) {\n classes.push('rounded-full')\n }\n\n if (className) {\n classes.push(className)\n }\n\n return classes.join(' ')\n }\n\n const getStyles = () => {\n const styles: React.CSSProperties = {}\n\n if (width) {\n styles.width = typeof width === 'number' ? `${width}px` : width\n }\n\n if (height) {\n styles.height = typeof height === 'number' ? `${height}px` : height\n }\n\n return Object.keys(styles).length > 0 ? styles : undefined\n }\n\n return (\n <div className={getClasses()} style={{ ...getStyles(), ...style }} {...rest}>\n {children}\n </div>\n )\n}\n"],"names":["Skeleton","width","height","circle","variant","className","children","style","rest","getClasses","classes","getStyles","styles","jsx"],"mappings":";AAUO,MAAMA,IAAoC,CAAC;AAAA,EAChD,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAa,MAAM;AACvB,UAAMC,IAAU,CAAC,UAAU;AAE3B,WAAIN,MAAY,UACdM,EAAQ,KAAK,eAAe,GAG1BP,KACFO,EAAQ,KAAK,cAAc,GAGzBL,KACFK,EAAQ,KAAKL,CAAS,GAGjBK,EAAQ,KAAK,GAAG;AAAA,EACzB,GAEMC,IAAY,MAAM;AACtB,UAAMC,IAA8B,CAAA;AAEpC,WAAIX,MACFW,EAAO,QAAQ,OAAOX,KAAU,WAAW,GAAGA,CAAK,OAAOA,IAGxDC,MACFU,EAAO,SAAS,OAAOV,KAAW,WAAW,GAAGA,CAAM,OAAOA,IAGxD,OAAO,KAAKU,CAAM,EAAE,SAAS,IAAIA,IAAS;AAAA,EACnD;AAEA,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWJ,EAAA,GAAc,OAAO,EAAE,GAAGE,EAAA,GAAa,GAAGJ,EAAA,GAAU,GAAGC,GACpE,UAAAF,EAAA,CACH;AAEJ;"}