@axtec/components 0.1.7 → 0.1.10

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 (158) hide show
  1. package/README.md +1 -0
  2. package/dist/components/AgentChat/AgentChat.d.ts +32 -0
  3. package/dist/components/AgentChat/index.d.ts +1 -0
  4. package/dist/components/AgentPanel/AgentPanel.d.ts +44 -0
  5. package/dist/components/AgentPanel/index.d.ts +1 -0
  6. package/dist/components/OptionDivider/OptionDivider.d.ts +2 -1
  7. package/dist/components/index.d.ts +2 -0
  8. package/dist/index.css +1 -1
  9. package/dist/index.js +161 -157
  10. package/dist/index.js.map +1 -1
  11. package/dist/index10.js +77 -99
  12. package/dist/index10.js.map +1 -1
  13. package/dist/index11.js +91 -36
  14. package/dist/index11.js.map +1 -1
  15. package/dist/index12.js +97 -75
  16. package/dist/index12.js.map +1 -1
  17. package/dist/index13.js +38 -24
  18. package/dist/index13.js.map +1 -1
  19. package/dist/index14.js +76 -16
  20. package/dist/index14.js.map +1 -1
  21. package/dist/index15.js +24 -38
  22. package/dist/index15.js.map +1 -1
  23. package/dist/index16.js +18 -72
  24. package/dist/index16.js.map +1 -1
  25. package/dist/index17.js +36 -47
  26. package/dist/index17.js.map +1 -1
  27. package/dist/index18.js +73 -13
  28. package/dist/index18.js.map +1 -1
  29. package/dist/index19.js +47 -151
  30. package/dist/index19.js.map +1 -1
  31. package/dist/index20.js +12 -17
  32. package/dist/index20.js.map +1 -1
  33. package/dist/index21.js +148 -40
  34. package/dist/index21.js.map +1 -1
  35. package/dist/index22.js +18 -50
  36. package/dist/index22.js.map +1 -1
  37. package/dist/index23.js +41 -74
  38. package/dist/index23.js.map +1 -1
  39. package/dist/index24.js +46 -216
  40. package/dist/index24.js.map +1 -1
  41. package/dist/index25.js +73 -46
  42. package/dist/index25.js.map +1 -1
  43. package/dist/index26.js +212 -70
  44. package/dist/index26.js.map +1 -1
  45. package/dist/index27.js +51 -23
  46. package/dist/index27.js.map +1 -1
  47. package/dist/index28.js +74 -74
  48. package/dist/index28.js.map +1 -1
  49. package/dist/index29.js +19 -28
  50. package/dist/index29.js.map +1 -1
  51. package/dist/index3.js +2 -2
  52. package/dist/index30.js +62 -76
  53. package/dist/index30.js.map +1 -1
  54. package/dist/index31.js +28 -55
  55. package/dist/index31.js.map +1 -1
  56. package/dist/index32.js +87 -40
  57. package/dist/index32.js.map +1 -1
  58. package/dist/index33.js +57 -45
  59. package/dist/index33.js.map +1 -1
  60. package/dist/index34.js +40 -47
  61. package/dist/index34.js.map +1 -1
  62. package/dist/index35.js +47 -27
  63. package/dist/index35.js.map +1 -1
  64. package/dist/index36.js +52 -54
  65. package/dist/index36.js.map +1 -1
  66. package/dist/index37.js +28 -49
  67. package/dist/index37.js.map +1 -1
  68. package/dist/index38.js +54 -13
  69. package/dist/index38.js.map +1 -1
  70. package/dist/index39.js +46 -79
  71. package/dist/index39.js.map +1 -1
  72. package/dist/index40.js +13 -49
  73. package/dist/index40.js.map +1 -1
  74. package/dist/index41.js +80 -17
  75. package/dist/index41.js.map +1 -1
  76. package/dist/index42.js +48 -33
  77. package/dist/index42.js.map +1 -1
  78. package/dist/index43.js +17 -11
  79. package/dist/index43.js.map +1 -1
  80. package/dist/index44.js +34 -15
  81. package/dist/index44.js.map +1 -1
  82. package/dist/index45.js +16 -89
  83. package/dist/index45.js.map +1 -1
  84. package/dist/index46.js +15 -69
  85. package/dist/index46.js.map +1 -1
  86. package/dist/index47.js +85 -116
  87. package/dist/index47.js.map +1 -1
  88. package/dist/index48.js +69 -40
  89. package/dist/index48.js.map +1 -1
  90. package/dist/index49.js +120 -42
  91. package/dist/index49.js.map +1 -1
  92. package/dist/index5.js +1 -1
  93. package/dist/index50.js +39 -55
  94. package/dist/index50.js.map +1 -1
  95. package/dist/index51.js +39 -11
  96. package/dist/index51.js.map +1 -1
  97. package/dist/index52.js +53 -62
  98. package/dist/index52.js.map +1 -1
  99. package/dist/index53.js +16 -54
  100. package/dist/index53.js.map +1 -1
  101. package/dist/index54.js +64 -36
  102. package/dist/index54.js.map +1 -1
  103. package/dist/index55.js +54 -66
  104. package/dist/index55.js.map +1 -1
  105. package/dist/index56.js +37 -22
  106. package/dist/index56.js.map +1 -1
  107. package/dist/index57.js +63 -101
  108. package/dist/index57.js.map +1 -1
  109. package/dist/index58.js +16 -67
  110. package/dist/index58.js.map +1 -1
  111. package/dist/index59.js +99 -213
  112. package/dist/index59.js.map +1 -1
  113. package/dist/index6.js +1 -1
  114. package/dist/index60.js +67 -62
  115. package/dist/index60.js.map +1 -1
  116. package/dist/index61.js +206 -224
  117. package/dist/index61.js.map +1 -1
  118. package/dist/index62.js +62 -96
  119. package/dist/index62.js.map +1 -1
  120. package/dist/index63.js +233 -33
  121. package/dist/index63.js.map +1 -1
  122. package/dist/index64.js +98 -14
  123. package/dist/index64.js.map +1 -1
  124. package/dist/index65.js +35 -59
  125. package/dist/index65.js.map +1 -1
  126. package/dist/index66.js +16 -59
  127. package/dist/index66.js.map +1 -1
  128. package/dist/index67.js +57 -72
  129. package/dist/index67.js.map +1 -1
  130. package/dist/index68.js +58 -106
  131. package/dist/index68.js.map +1 -1
  132. package/dist/index69.js +70 -43
  133. package/dist/index69.js.map +1 -1
  134. package/dist/index7.js +157 -69
  135. package/dist/index7.js.map +1 -1
  136. package/dist/index70.js +101 -40
  137. package/dist/index70.js.map +1 -1
  138. package/dist/index71.js +44 -72
  139. package/dist/index71.js.map +1 -1
  140. package/dist/index72.js +47 -53
  141. package/dist/index72.js.map +1 -1
  142. package/dist/index73.js +70 -62
  143. package/dist/index73.js.map +1 -1
  144. package/dist/index74.js +46 -28
  145. package/dist/index74.js.map +1 -1
  146. package/dist/index75.js +67 -13
  147. package/dist/index75.js.map +1 -1
  148. package/dist/index76.js +35 -2263
  149. package/dist/index76.js.map +1 -1
  150. package/dist/index77.js +17 -0
  151. package/dist/index77.js.map +1 -0
  152. package/dist/index78.js +2267 -0
  153. package/dist/index78.js.map +1 -0
  154. package/dist/index8.js +377 -70
  155. package/dist/index8.js.map +1 -1
  156. package/dist/index9.js +60 -77
  157. package/dist/index9.js.map +1 -1
  158. package/package.json +1 -1
package/dist/index11.js CHANGED
@@ -1,42 +1,97 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import { cn as a } from "./index3.js";
3
- const n = {
4
- xs: "h-6 w-6 text-xs",
5
- sm: "h-8 w-8 text-sm",
6
- md: "h-10 w-10 text-base",
7
- lg: "h-12 w-12 text-lg",
8
- xl: "h-16 w-16 text-xl"
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { Fragment as s } from "react";
3
+ import { Transition as h, Dialog as p, TransitionChild as o, DialogPanel as v, DialogTitle as C } from "@headlessui/react";
4
+ import { InformationCircleIcon as y, ExclamationTriangleIcon as N, XCircleIcon as T, CheckCircleIcon as w } from "@heroicons/react/24/outline";
5
+ import { cn as i } from "./index3.js";
6
+ import { Button as I } from "./index19.js";
7
+ const F = {
8
+ success: {
9
+ icon: w,
10
+ iconClass: "text-green-600",
11
+ bgClass: "bg-green-100"
12
+ },
13
+ error: {
14
+ icon: T,
15
+ iconClass: "text-red-600",
16
+ bgClass: "bg-red-100"
17
+ },
18
+ warning: {
19
+ icon: N,
20
+ iconClass: "text-amber-600",
21
+ bgClass: "bg-amber-100"
22
+ },
23
+ info: {
24
+ icon: y,
25
+ iconClass: "text-blue-600",
26
+ bgClass: "bg-blue-100"
27
+ }
9
28
  };
10
- function d({
11
- src: r,
12
- alt: l,
13
- initials: e,
14
- size: s = "md",
15
- className: o
29
+ function B({
30
+ open: m,
31
+ onClose: l,
32
+ title: d,
33
+ message: n,
34
+ htmlMessage: c,
35
+ variant: x = "success",
36
+ confirmText: u = "OK",
37
+ onConfirm: t,
38
+ className: b
16
39
  }) {
17
- const m = e == null ? void 0 : e.slice(0, 2).toUpperCase();
18
- return /* @__PURE__ */ t(
19
- "div",
20
- {
21
- className: a(
22
- "relative inline-flex items-center justify-center",
23
- "rounded-full overflow-hidden",
24
- "bg-primary-100 text-primary-700 font-semibold",
25
- n[s],
26
- o
27
- ),
28
- children: r ? /* @__PURE__ */ t(
29
- "img",
30
- {
31
- src: r,
32
- alt: l || "Avatar",
33
- className: "h-full w-full object-cover"
34
- }
35
- ) : /* @__PURE__ */ t("span", { children: m })
36
- }
37
- );
40
+ const a = F[x], g = a.icon, f = () => {
41
+ t == null || t(), l();
42
+ };
43
+ return /* @__PURE__ */ e(h, { show: m, as: s, children: /* @__PURE__ */ r(p, { onClose: l, className: "relative z-50", children: [
44
+ /* @__PURE__ */ e(
45
+ o,
46
+ {
47
+ as: s,
48
+ enter: "ease-out duration-300",
49
+ enterFrom: "opacity-0",
50
+ enterTo: "opacity-100",
51
+ leave: "ease-in duration-200",
52
+ leaveFrom: "opacity-100",
53
+ leaveTo: "opacity-0",
54
+ children: /* @__PURE__ */ e("div", { className: "fixed inset-0 bg-black/50", "aria-hidden": "true" })
55
+ }
56
+ ),
57
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ e(
58
+ o,
59
+ {
60
+ as: s,
61
+ enter: "ease-out duration-300",
62
+ enterFrom: "opacity-0 scale-95",
63
+ enterTo: "opacity-100 scale-100",
64
+ leave: "ease-in duration-200",
65
+ leaveFrom: "opacity-100 scale-100",
66
+ leaveTo: "opacity-0 scale-95",
67
+ children: /* @__PURE__ */ r(
68
+ v,
69
+ {
70
+ className: i(
71
+ "w-full max-w-sm bg-white rounded-2xl shadow-xl p-6",
72
+ "transform transition-all",
73
+ b
74
+ ),
75
+ children: [
76
+ /* @__PURE__ */ e("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ e("div", { className: i("rounded-full p-3", a.bgClass), children: /* @__PURE__ */ e(g, { className: i("h-8 w-8", a.iconClass) }) }) }),
77
+ /* @__PURE__ */ e(C, { className: "text-lg font-semibold text-slate-900 text-center mb-2", children: d }),
78
+ n && /* @__PURE__ */ e("p", { className: "text-sm text-slate-600 text-center mb-6", children: n }),
79
+ c && /* @__PURE__ */ e(
80
+ "div",
81
+ {
82
+ className: "text-sm text-slate-600 text-center mb-6",
83
+ dangerouslySetInnerHTML: { __html: c }
84
+ }
85
+ ),
86
+ /* @__PURE__ */ e(I, { onClick: f, className: "w-full", children: u })
87
+ ]
88
+ }
89
+ )
90
+ }
91
+ ) })
92
+ ] }) });
38
93
  }
39
94
  export {
40
- d as Avatar
95
+ B as AlertModal
41
96
  };
42
97
  //# sourceMappingURL=index11.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index11.js","sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n initials?: string\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n className?: string\n}\n\nconst sizeStyles = {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n}\n\nexport function Avatar({\n src,\n alt,\n initials,\n size = 'md',\n className,\n}: AvatarProps) {\n const displayInitials = initials?.slice(0, 2).toUpperCase()\n\n return (\n <div\n className={cn(\n 'relative inline-flex items-center justify-center',\n 'rounded-full overflow-hidden',\n 'bg-primary-100 text-primary-700 font-semibold',\n sizeStyles[size],\n className\n )}\n >\n {src ? (\n <img\n src={src}\n alt={alt || 'Avatar'}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <span>{displayInitials}</span>\n )}\n </div>\n )\n}\n"],"names":["sizeStyles","Avatar","src","alt","initials","size","className","displayInitials","jsx","cn"],"mappings":";;AAUA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAASC,EAAO;AAAA,EACrB,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC;AACF,GAAgB;AACd,QAAMC,IAAkBH,KAAA,gBAAAA,EAAU,MAAM,GAAG,GAAG;AAE9C,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAT,EAAWK,CAAI;AAAA,QACfC;AAAA,MAAA;AAAA,MAGD,UAAAJ,IACC,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAN;AAAA,UACA,KAAKC,KAAO;AAAA,UACZ,WAAU;AAAA,QAAA;AAAA,MAAA,IAGZ,gBAAAK,EAAC,QAAA,EAAM,UAAAD,EAAA,CAAgB;AAAA,IAAA;AAAA,EAAA;AAI/B;"}
1
+ {"version":3,"file":"index11.js","sources":["../src/components/AlertModal/AlertModal.tsx"],"sourcesContent":["import { Fragment } from 'react'\nimport {\n Dialog,\n DialogPanel,\n DialogTitle,\n Transition,\n TransitionChild,\n} from '@headlessui/react'\nimport {\n CheckCircleIcon,\n ExclamationTriangleIcon,\n XCircleIcon,\n InformationCircleIcon,\n} from '@heroicons/react/24/outline'\nimport { cn } from '@/lib/utils'\nimport { Button } from '../Button/Button'\n\nexport type AlertModalVariant = 'success' | 'error' | 'warning' | 'info'\n\nexport interface AlertModalProps {\n open: boolean\n onClose: () => void\n title: string\n message?: string\n /** HTML content (use with caution) */\n htmlMessage?: string\n variant?: AlertModalVariant\n confirmText?: string\n onConfirm?: () => void\n className?: string\n}\n\nconst variantConfig: Record<\n AlertModalVariant,\n { icon: typeof CheckCircleIcon; iconClass: string; bgClass: string }\n> = {\n success: {\n icon: CheckCircleIcon,\n iconClass: 'text-green-600',\n bgClass: 'bg-green-100',\n },\n error: {\n icon: XCircleIcon,\n iconClass: 'text-red-600',\n bgClass: 'bg-red-100',\n },\n warning: {\n icon: ExclamationTriangleIcon,\n iconClass: 'text-amber-600',\n bgClass: 'bg-amber-100',\n },\n info: {\n icon: InformationCircleIcon,\n iconClass: 'text-blue-600',\n bgClass: 'bg-blue-100',\n },\n}\n\nexport function AlertModal({\n open,\n onClose,\n title,\n message,\n htmlMessage,\n variant = 'success',\n confirmText = 'OK',\n onConfirm,\n className,\n}: AlertModalProps) {\n const config = variantConfig[variant]\n const Icon = config.icon\n\n const handleConfirm = () => {\n onConfirm?.()\n onClose()\n }\n\n return (\n <Transition show={open} as={Fragment}>\n <Dialog onClose={onClose} className=\"relative z-50\">\n {/* Backdrop */}\n <TransitionChild\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black/50\" aria-hidden=\"true\" />\n </TransitionChild>\n\n {/* Modal */}\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <TransitionChild\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <DialogPanel\n className={cn(\n 'w-full max-w-sm bg-white rounded-2xl shadow-xl p-6',\n 'transform transition-all',\n className\n )}\n >\n {/* Icon */}\n <div className=\"flex justify-center mb-4\">\n <div className={cn('rounded-full p-3', config.bgClass)}>\n <Icon className={cn('h-8 w-8', config.iconClass)} />\n </div>\n </div>\n\n {/* Title */}\n <DialogTitle className=\"text-lg font-semibold text-slate-900 text-center mb-2\">\n {title}\n </DialogTitle>\n\n {/* Message */}\n {message && (\n <p className=\"text-sm text-slate-600 text-center mb-6\">\n {message}\n </p>\n )}\n {htmlMessage && (\n <div\n className=\"text-sm text-slate-600 text-center mb-6\"\n dangerouslySetInnerHTML={{ __html: htmlMessage }}\n />\n )}\n\n {/* Button */}\n <Button onClick={handleConfirm} className=\"w-full\">\n {confirmText}\n </Button>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </Transition>\n )\n}\n"],"names":["variantConfig","CheckCircleIcon","XCircleIcon","ExclamationTriangleIcon","InformationCircleIcon","AlertModal","open","onClose","title","message","htmlMessage","variant","confirmText","onConfirm","className","config","Icon","handleConfirm","jsx","Transition","Fragment","jsxs","Dialog","TransitionChild","DialogPanel","cn","DialogTitle","Button"],"mappings":";;;;;;AAgCA,MAAMA,IAGF;AAAA,EACF,SAAS;AAAA,IACP,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EAAA;AAAA,EAEX,OAAO;AAAA,IACL,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EAAA;AAAA,EAEX,SAAS;AAAA,IACP,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EAAA;AAAA,EAEX,MAAM;AAAA,IACJ,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,EAAA;AAEb;AAEO,SAASC,EAAW;AAAA,EACzB,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,aAAAC,IAAc;AAAA,EACd,WAAAC;AAAA,EACA,WAAAC;AACF,GAAoB;AAClB,QAAMC,IAASf,EAAcW,CAAO,GAC9BK,IAAOD,EAAO,MAEdE,IAAgB,MAAM;AAC1B,IAAAJ,KAAA,QAAAA,KACAN,EAAA;AAAA,EACF;AAEA,SACE,gBAAAW,EAACC,GAAA,EAAW,MAAMb,GAAM,IAAIc,GAC1B,UAAA,gBAAAC,EAACC,GAAA,EAAO,SAAAf,GAAkB,WAAU,iBAElC,UAAA;AAAA,IAAA,gBAAAW;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,IAAIH;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QAER,UAAA,gBAAAF,EAAC,OAAA,EAAI,WAAU,6BAA4B,eAAY,OAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,IAIhE,gBAAAA,EAAC,OAAA,EAAI,WAAU,sDACb,UAAA,gBAAAA;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,IAAIH;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QAER,UAAA,gBAAAC;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACA;AAAA,cACAX;AAAA,YAAA;AAAA,YAIF,UAAA;AAAA,cAAA,gBAAAI,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAA,EAAC,SAAI,WAAWO,EAAG,oBAAoBV,EAAO,OAAO,GACnD,UAAA,gBAAAG,EAACF,GAAA,EAAK,WAAWS,EAAG,WAAWV,EAAO,SAAS,GAAG,GACpD,EAAA,CACF;AAAA,cAGA,gBAAAG,EAACQ,GAAA,EAAY,WAAU,yDACpB,UAAAlB,GACH;AAAA,cAGCC,KACC,gBAAAS,EAAC,KAAA,EAAE,WAAU,2CACV,UAAAT,GACH;AAAA,cAEDC,KACC,gBAAAQ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,yBAAyB,EAAE,QAAQR,EAAA;AAAA,gBAAY;AAAA,cAAA;AAAA,gCAKlDiB,GAAA,EAAO,SAASV,GAAe,WAAU,UACvC,UAAAL,EAAA,CACH;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,EACF,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
package/dist/index12.js CHANGED
@@ -1,82 +1,104 @@
1
- import { jsxs as r, jsx as s } from "react/jsx-runtime";
2
- import { cn as h } from "./index3.js";
3
- import { Avatar as g } from "./index11.js";
4
- import { PhoneIcon as v, EnvelopeIcon as N, ChevronRightIcon as u } from "@heroicons/react/24/outline";
5
- import { Pill as b } from "./index48.js";
6
- import { AverageRating as w } from "./index13.js";
7
- const d = (e) => e.name ? e.name : [e.firstName, e.lastName].filter(Boolean).join(" ") || "Unknown", j = (e) => e.split(" ").map((t) => t[0]).slice(0, 2).join("").toUpperCase(), z = {
8
- sm: "sm",
9
- md: "md",
10
- lg: "lg"
11
- }, O = ({
12
- data: e,
13
- avatarSize: t = "md",
14
- showRole: n = !1,
15
- showRating: i = !1,
16
- showContactInfo: c = !1,
17
- showArrow: p = !1,
18
- onClick: l,
19
- className: f
1
+ import { jsxs as O, jsx as d } from "react/jsx-runtime";
2
+ import { useState as m, useRef as p, useEffect as h } from "react";
3
+ import { cn as b } from "./index3.js";
4
+ import { Input as N } from "./index35.js";
5
+ const L = ({
6
+ options: r,
7
+ value: a,
8
+ onChange: x,
9
+ onSearch: s,
10
+ label: y,
11
+ placeholder: D,
12
+ disabled: E = !1,
13
+ error: I,
14
+ debounceMs: g = 300,
15
+ className: C
20
16
  }) => {
21
- var m, o;
22
- const a = d(e), x = ((m = e.profile) == null ? void 0 : m.avatar) || e.avatar;
23
- return /* @__PURE__ */ r(
24
- "div",
25
- {
26
- className: h(
27
- "flex items-center gap-4 p-4",
28
- l && "cursor-pointer hover:bg-slate-50 rounded-lg transition-colors",
29
- f
30
- ),
31
- onClick: l,
32
- children: [
33
- /* @__PURE__ */ s(
34
- g,
35
- {
36
- src: x,
37
- initials: j(a),
38
- size: z[t]
39
- }
17
+ const [o, i] = m(""), [w, l] = m(!1), [u, c] = m(-1), f = p(null), n = p();
18
+ h(() => {
19
+ const e = r.find((t) => t.value === a);
20
+ e && i(e.label);
21
+ }, [a, r]), h(() => (n.current && clearTimeout(n.current), n.current = setTimeout(() => {
22
+ s == null || s(o);
23
+ }, g), () => {
24
+ n.current && clearTimeout(n.current);
25
+ }), [o, g, s]), h(() => {
26
+ const e = (t) => {
27
+ f.current && !f.current.contains(t.target) && l(!1);
28
+ };
29
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
30
+ }, []);
31
+ const v = (e) => {
32
+ i(e), l(!0), c(-1);
33
+ }, k = (e) => {
34
+ i(e.label), x(e.value, e.label), l(!1);
35
+ }, A = (e) => {
36
+ if (!w) {
37
+ (e.key === "ArrowDown" || e.key === "Enter") && l(!0);
38
+ return;
39
+ }
40
+ switch (e.key) {
41
+ case "ArrowDown":
42
+ e.preventDefault(), c(
43
+ (t) => t < r.length - 1 ? t + 1 : t
44
+ );
45
+ break;
46
+ case "ArrowUp":
47
+ e.preventDefault(), c((t) => t > 0 ? t - 1 : t);
48
+ break;
49
+ case "Enter":
50
+ e.preventDefault(), u >= 0 && r[u] && k(r[u]);
51
+ break;
52
+ case "Escape":
53
+ l(!1);
54
+ break;
55
+ }
56
+ };
57
+ return /* @__PURE__ */ O("div", { ref: f, className: b("relative", C), children: [
58
+ /* @__PURE__ */ d(
59
+ N,
60
+ {
61
+ label: y,
62
+ value: o,
63
+ onChange: (e) => v(e.target.value),
64
+ onFocus: () => l(!0),
65
+ onKeyDown: A,
66
+ placeholder: D,
67
+ disabled: E,
68
+ error: I
69
+ }
70
+ ),
71
+ w && r.length > 0 && /* @__PURE__ */ d(
72
+ "ul",
73
+ {
74
+ className: b(
75
+ "absolute z-50 w-full mt-1 py-1",
76
+ "bg-white border border-slate-200 rounded-lg shadow-lg",
77
+ "max-h-60 overflow-auto"
40
78
  ),
41
- /* @__PURE__ */ r("div", { className: "flex-1 min-w-0", children: [
42
- /* @__PURE__ */ s("h4", { className: "text-base font-semibold text-primary-500 truncate max-w-[280px]", children: a }),
43
- e.companyName && /* @__PURE__ */ s("p", { className: "text-xs text-slate-500 truncate max-w-[280px]", children: e.companyName }),
44
- (n || i) && /* @__PURE__ */ r("div", { className: "flex items-center gap-2 mt-1", children: [
45
- n && ((o = e.role) == null ? void 0 : o[0]) && /* @__PURE__ */ s(
46
- b,
47
- {
48
- label: e.role[0].charAt(0).toUpperCase() + e.role[0].slice(1),
49
- variant: "info",
50
- size: "sm"
51
- }
79
+ role: "listbox",
80
+ children: r.map((e, t) => /* @__PURE__ */ d(
81
+ "li",
82
+ {
83
+ role: "option",
84
+ "aria-selected": e.value === a,
85
+ onClick: () => k(e),
86
+ onMouseEnter: () => c(t),
87
+ className: b(
88
+ "px-4 py-2 cursor-pointer text-sm",
89
+ "transition-colors",
90
+ u === t && "bg-slate-100",
91
+ e.value === a && "text-primary-500 font-medium"
52
92
  ),
53
- i && /* @__PURE__ */ s(
54
- w,
55
- {
56
- average: e.averageRating || "0",
57
- numberOfRatings: e.ratingCount,
58
- showNumberOfRatings: !0,
59
- size: "sm"
60
- }
61
- )
62
- ] }),
63
- c && /* @__PURE__ */ r("div", { className: "flex items-center gap-6 mt-2", children: [
64
- (e.mobile || e.phone) && /* @__PURE__ */ r("div", { className: "flex items-center gap-2 text-sm text-slate-600", children: [
65
- /* @__PURE__ */ s(v, { className: "w-4 h-4" }),
66
- /* @__PURE__ */ s("span", { children: e.mobile || e.phone })
67
- ] }),
68
- e.email && /* @__PURE__ */ r("div", { className: "flex items-center gap-2 text-sm text-slate-600", children: [
69
- /* @__PURE__ */ s(N, { className: "w-4 h-4" }),
70
- /* @__PURE__ */ s("span", { children: e.email })
71
- ] })
72
- ] })
73
- ] }),
74
- p && /* @__PURE__ */ s(u, { className: "w-5 h-5 text-slate-400 flex-shrink-0" })
75
- ]
76
- }
77
- );
93
+ children: e.label
94
+ },
95
+ e.value
96
+ ))
97
+ }
98
+ )
99
+ ] });
78
100
  };
79
101
  export {
80
- O as AvatarCard
102
+ L as AutoComplete
81
103
  };
82
104
  //# sourceMappingURL=index12.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index12.js","sources":["../src/components/AvatarCard/AvatarCard.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { Avatar } from '../Avatar/Avatar'\nimport { ChevronRightIcon, EnvelopeIcon, PhoneIcon } from '@heroicons/react/24/outline'\nimport { Pill } from '../Pill/Pill'\nimport { AverageRating } from '../AverageRating/AverageRating'\n\nexport interface AvatarCardData {\n firstName?: string\n lastName?: string\n name?: string\n companyName?: string\n email?: string\n mobile?: string\n phone?: string\n role?: string[]\n averageRating?: number | string\n ratingCount?: number | string\n profile?: {\n avatar?: string\n }\n avatar?: string\n}\n\nexport interface AvatarCardProps {\n data: AvatarCardData\n avatarSize?: 'sm' | 'md' | 'lg'\n showRole?: boolean\n showRating?: boolean\n showContactInfo?: boolean\n showArrow?: boolean\n onClick?: () => void\n className?: string\n}\n\nconst getFullName = (data: AvatarCardData): string => {\n if (data.name) return data.name\n const parts = [data.firstName, data.lastName].filter(Boolean)\n return parts.join(' ') || 'Unknown'\n}\n\nconst getInitials = (name: string): string => {\n return name\n .split(' ')\n .map((word) => word[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n}\n\nconst avatarSizeMap = {\n sm: 'sm' as const,\n md: 'md' as const,\n lg: 'lg' as const,\n}\n\nexport const AvatarCard = ({\n data,\n avatarSize = 'md',\n showRole = false,\n showRating = false,\n showContactInfo = false,\n showArrow = false,\n onClick,\n className,\n}: AvatarCardProps) => {\n const contactName = getFullName(data)\n const avatar = data.profile?.avatar || data.avatar\n\n return (\n <div\n className={cn(\n 'flex items-center gap-4 p-4',\n onClick && 'cursor-pointer hover:bg-slate-50 rounded-lg transition-colors',\n className\n )}\n onClick={onClick}\n >\n <Avatar\n src={avatar}\n initials={getInitials(contactName)}\n size={avatarSizeMap[avatarSize]}\n />\n\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-base font-semibold text-primary-500 truncate max-w-[280px]\">\n {contactName}\n </h4>\n\n {data.companyName && (\n <p className=\"text-xs text-slate-500 truncate max-w-[280px]\">\n {data.companyName}\n </p>\n )}\n\n {(showRole || showRating) && (\n <div className=\"flex items-center gap-2 mt-1\">\n {showRole && data.role?.[0] && (\n <Pill\n label={data.role[0].charAt(0).toUpperCase() + data.role[0].slice(1)}\n variant=\"info\"\n size=\"sm\"\n />\n )}\n {showRating && (\n <AverageRating\n average={data.averageRating || '0'}\n numberOfRatings={data.ratingCount}\n showNumberOfRatings\n size=\"sm\"\n />\n )}\n </div>\n )}\n\n {showContactInfo && (\n <div className=\"flex items-center gap-6 mt-2\">\n {(data.mobile || data.phone) && (\n <div className=\"flex items-center gap-2 text-sm text-slate-600\">\n <PhoneIcon className=\"w-4 h-4\" />\n <span>{data.mobile || data.phone}</span>\n </div>\n )}\n {data.email && (\n <div className=\"flex items-center gap-2 text-sm text-slate-600\">\n <EnvelopeIcon className=\"w-4 h-4\" />\n <span>{data.email}</span>\n </div>\n )}\n </div>\n )}\n </div>\n\n {showArrow && (\n <ChevronRightIcon className=\"w-5 h-5 text-slate-400 flex-shrink-0\" />\n )}\n </div>\n )\n}\n"],"names":["getFullName","data","getInitials","name","word","avatarSizeMap","AvatarCard","avatarSize","showRole","showRating","showContactInfo","showArrow","onClick","className","contactName","avatar","_a","jsxs","cn","jsx","Avatar","_b","Pill","AverageRating","PhoneIcon","EnvelopeIcon","ChevronRightIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index12.js","sources":["../src/components/AutoComplete/AutoComplete.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from 'react'\nimport { cn } from '@/lib/utils'\nimport { Input } from '../Input/Input'\n\nexport interface AutoCompleteOption {\n value: string\n label: string\n}\n\nexport interface AutoCompleteProps {\n options: AutoCompleteOption[]\n value?: string\n onChange: (value: string, label: string) => void\n onSearch?: (query: string) => void\n label?: string\n placeholder?: string\n disabled?: boolean\n error?: string\n debounceMs?: number\n className?: string\n}\n\nexport const AutoComplete = ({\n options,\n value,\n onChange,\n onSearch,\n label,\n placeholder,\n disabled = false,\n error,\n debounceMs = 300,\n className,\n}: AutoCompleteProps) => {\n const [inputValue, setInputValue] = useState('')\n const [isOpen, setIsOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n const containerRef = useRef<HTMLDivElement>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout>>()\n\n // Sync input value with selected option\n useEffect(() => {\n const selectedOption = options.find((opt) => opt.value === value)\n if (selectedOption) {\n setInputValue(selectedOption.label)\n }\n }, [value, options])\n\n // Handle debounced search\n useEffect(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n\n debounceRef.current = setTimeout(() => {\n onSearch?.(inputValue)\n }, debounceMs)\n\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n }\n }, [inputValue, debounceMs, onSearch])\n\n // Handle click outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n const handleInputChange = (newValue: string) => {\n setInputValue(newValue)\n setIsOpen(true)\n setHighlightedIndex(-1)\n }\n\n const handleSelect = (option: AutoCompleteOption) => {\n setInputValue(option.label)\n onChange(option.value, option.label)\n setIsOpen(false)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (!isOpen) {\n if (event.key === 'ArrowDown' || event.key === 'Enter') {\n setIsOpen(true)\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n setHighlightedIndex((prev) =>\n prev < options.length - 1 ? prev + 1 : prev\n )\n break\n case 'ArrowUp':\n event.preventDefault()\n setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : prev))\n break\n case 'Enter':\n event.preventDefault()\n if (highlightedIndex >= 0 && options[highlightedIndex]) {\n handleSelect(options[highlightedIndex])\n }\n break\n case 'Escape':\n setIsOpen(false)\n break\n }\n }\n\n return (\n <div ref={containerRef} className={cn('relative', className)}>\n <Input\n label={label}\n value={inputValue}\n onChange={(e) => handleInputChange(e.target.value)}\n onFocus={() => setIsOpen(true)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n error={error}\n />\n\n {isOpen && options.length > 0 && (\n <ul\n className={cn(\n 'absolute z-50 w-full mt-1 py-1',\n 'bg-white border border-slate-200 rounded-lg shadow-lg',\n 'max-h-60 overflow-auto'\n )}\n role=\"listbox\"\n >\n {options.map((option, index) => (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={option.value === value}\n onClick={() => handleSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n className={cn(\n 'px-4 py-2 cursor-pointer text-sm',\n 'transition-colors',\n highlightedIndex === index && 'bg-slate-100',\n option.value === value && 'text-primary-500 font-medium'\n )}\n >\n {option.label}\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"names":["AutoComplete","options","value","onChange","onSearch","label","placeholder","disabled","error","debounceMs","className","inputValue","setInputValue","useState","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","containerRef","useRef","debounceRef","useEffect","selectedOption","opt","handleClickOutside","event","handleInputChange","newValue","handleSelect","option","handleKeyDown","prev","jsxs","cn","jsx","Input","index"],"mappings":"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"}
package/dist/index13.js CHANGED
@@ -1,28 +1,42 @@
1
- import { jsxs as a, jsx as o, Fragment as m } from "react/jsx-runtime";
2
- import { cn as t } from "./index3.js";
3
- import { StarIcon as x } from "@heroicons/react/24/solid";
4
- const d = {
5
- sm: { icon: "w-4 h-4", text: "text-sm" },
6
- md: { icon: "w-5 h-5", text: "text-base" },
7
- lg: { icon: "w-6 h-6", text: "text-lg" }
8
- }, g = ({
9
- average: i = "0",
10
- numberOfRatings: e,
11
- showNumberOfRatings: n = !1,
12
- size: r = "md",
13
- className: c
14
- }) => {
15
- const l = `${e} Rating${e === "1" || e === 1 ? "" : "s"}`, s = d[r];
16
- return /* @__PURE__ */ a("div", { className: t("flex items-center", c), children: [
17
- /* @__PURE__ */ o(x, { className: t(s.icon, "text-primary-500 mr-2") }),
18
- /* @__PURE__ */ o("span", { className: t(s.text, "font-semibold text-primary-500"), children: String(i) }),
19
- n && e !== void 0 && /* @__PURE__ */ a(m, { children: [
20
- /* @__PURE__ */ o("span", { className: t(s.text, "font-semibold text-slate-600 mx-2"), children: "•" }),
21
- /* @__PURE__ */ o("span", { className: t(s.text, "font-semibold text-slate-600"), children: l })
22
- ] })
23
- ] });
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { cn as a } from "./index3.js";
3
+ const n = {
4
+ xs: "h-6 w-6 text-xs",
5
+ sm: "h-8 w-8 text-sm",
6
+ md: "h-10 w-10 text-base",
7
+ lg: "h-12 w-12 text-lg",
8
+ xl: "h-16 w-16 text-xl"
24
9
  };
10
+ function d({
11
+ src: r,
12
+ alt: l,
13
+ initials: e,
14
+ size: s = "md",
15
+ className: o
16
+ }) {
17
+ const m = e == null ? void 0 : e.slice(0, 2).toUpperCase();
18
+ return /* @__PURE__ */ t(
19
+ "div",
20
+ {
21
+ className: a(
22
+ "relative inline-flex items-center justify-center",
23
+ "rounded-full overflow-hidden",
24
+ "bg-primary-100 text-primary-700 font-semibold",
25
+ n[s],
26
+ o
27
+ ),
28
+ children: r ? /* @__PURE__ */ t(
29
+ "img",
30
+ {
31
+ src: r,
32
+ alt: l || "Avatar",
33
+ className: "h-full w-full object-cover"
34
+ }
35
+ ) : /* @__PURE__ */ t("span", { children: m })
36
+ }
37
+ );
38
+ }
25
39
  export {
26
- g as AverageRating
40
+ d as Avatar
27
41
  };
28
42
  //# sourceMappingURL=index13.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index13.js","sources":["../src/components/AverageRating/AverageRating.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { StarIcon } from '@heroicons/react/24/solid'\n\nexport interface AverageRatingProps {\n average: string | number\n numberOfRatings?: string | number\n showNumberOfRatings?: boolean\n size?: 'sm' | 'md' | 'lg'\n className?: string\n}\n\nconst sizeStyles = {\n sm: { icon: 'w-4 h-4', text: 'text-sm' },\n md: { icon: 'w-5 h-5', text: 'text-base' },\n lg: { icon: 'w-6 h-6', text: 'text-lg' },\n}\n\nexport const AverageRating = ({\n average = '0',\n numberOfRatings,\n showNumberOfRatings = false,\n size = 'md',\n className,\n}: AverageRatingProps) => {\n const ratingsText = `${numberOfRatings} Rating${numberOfRatings === '1' || numberOfRatings === 1 ? '' : 's'}`\n const styles = sizeStyles[size]\n\n return (\n <div className={cn('flex items-center', className)}>\n <StarIcon className={cn(styles.icon, 'text-primary-500 mr-2')} />\n <span className={cn(styles.text, 'font-semibold text-primary-500')}>\n {String(average)}\n </span>\n {showNumberOfRatings && numberOfRatings !== undefined && (\n <>\n <span className={cn(styles.text, 'font-semibold text-slate-600 mx-2')}>\n •\n </span>\n <span className={cn(styles.text, 'font-semibold text-slate-600')}>\n {ratingsText}\n </span>\n </>\n )}\n </div>\n )\n}\n"],"names":["sizeStyles","AverageRating","average","numberOfRatings","showNumberOfRatings","size","className","ratingsText","styles","cn","jsx","StarIcon","jsxs","Fragment"],"mappings":";;;AAWA,MAAMA,IAAa;AAAA,EACjB,IAAI,EAAE,MAAM,WAAW,MAAM,UAAA;AAAA,EAC7B,IAAI,EAAE,MAAM,WAAW,MAAM,YAAA;AAAA,EAC7B,IAAI,EAAE,MAAM,WAAW,MAAM,UAAA;AAC/B,GAEaC,IAAgB,CAAC;AAAA,EAC5B,SAAAC,IAAU;AAAA,EACV,iBAAAC;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,MAAAC,IAAO;AAAA,EACP,WAAAC;AACF,MAA0B;AACxB,QAAMC,IAAc,GAAGJ,CAAe,UAAUA,MAAoB,OAAOA,MAAoB,IAAI,KAAK,GAAG,IACrGK,IAASR,EAAWK,CAAI;AAE9B,2BACG,OAAA,EAAI,WAAWI,EAAG,qBAAqBH,CAAS,GAC/C,UAAA;AAAA,IAAA,gBAAAI,EAACC,KAAS,WAAWF,EAAGD,EAAO,MAAM,uBAAuB,GAAG;AAAA,IAC/D,gBAAAE,EAAC,QAAA,EAAK,WAAWD,EAAGD,EAAO,MAAM,gCAAgC,GAC9D,UAAA,OAAON,CAAO,EAAA,CACjB;AAAA,IACCE,KAAuBD,MAAoB,UAC1C,gBAAAS,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAH,EAAC,UAAK,WAAWD,EAAGD,EAAO,MAAM,mCAAmC,GAAG,UAAA,KAEvE;AAAA,MACA,gBAAAE,EAAC,UAAK,WAAWD,EAAGD,EAAO,MAAM,8BAA8B,GAC5D,UAAAD,EAAA,CACH;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"index13.js","sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n initials?: string\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n className?: string\n}\n\nconst sizeStyles = {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n}\n\nexport function Avatar({\n src,\n alt,\n initials,\n size = 'md',\n className,\n}: AvatarProps) {\n const displayInitials = initials?.slice(0, 2).toUpperCase()\n\n return (\n <div\n className={cn(\n 'relative inline-flex items-center justify-center',\n 'rounded-full overflow-hidden',\n 'bg-primary-100 text-primary-700 font-semibold',\n sizeStyles[size],\n className\n )}\n >\n {src ? (\n <img\n src={src}\n alt={alt || 'Avatar'}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <span>{displayInitials}</span>\n )}\n </div>\n )\n}\n"],"names":["sizeStyles","Avatar","src","alt","initials","size","className","displayInitials","jsx","cn"],"mappings":";;AAUA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAASC,EAAO;AAAA,EACrB,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC;AACF,GAAgB;AACd,QAAMC,IAAkBH,KAAA,gBAAAA,EAAU,MAAM,GAAG,GAAG;AAE9C,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAT,EAAWK,CAAI;AAAA,QACfC;AAAA,MAAA;AAAA,MAGD,UAAAJ,IACC,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAN;AAAA,UACA,KAAKC,KAAO;AAAA,UACZ,WAAU;AAAA,QAAA;AAAA,MAAA,IAGZ,gBAAAK,EAAC,QAAA,EAAM,UAAAD,EAAA,CAAgB;AAAA,IAAA;AAAA,EAAA;AAI/B;"}
package/dist/index14.js CHANGED
@@ -1,22 +1,82 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import { cn as s } from "./index3.js";
3
- const c = {
4
- sm: "h-8",
5
- md: "h-10",
6
- lg: "h-14",
7
- xl: "h-20"
8
- };
9
- function l({ size: o = "md", className: t }) {
10
- return /* @__PURE__ */ m(
11
- "img",
1
+ import { jsxs as r, jsx as s } from "react/jsx-runtime";
2
+ import { cn as h } from "./index3.js";
3
+ import { Avatar as g } from "./index13.js";
4
+ import { PhoneIcon as v, EnvelopeIcon as N, ChevronRightIcon as u } from "@heroicons/react/24/outline";
5
+ import { Pill as b } from "./index50.js";
6
+ import { AverageRating as w } from "./index15.js";
7
+ const d = (e) => e.name ? e.name : [e.firstName, e.lastName].filter(Boolean).join(" ") || "Unknown", j = (e) => e.split(" ").map((t) => t[0]).slice(0, 2).join("").toUpperCase(), z = {
8
+ sm: "sm",
9
+ md: "md",
10
+ lg: "lg"
11
+ }, O = ({
12
+ data: e,
13
+ avatarSize: t = "md",
14
+ showRole: n = !1,
15
+ showRating: i = !1,
16
+ showContactInfo: c = !1,
17
+ showArrow: p = !1,
18
+ onClick: l,
19
+ className: f
20
+ }) => {
21
+ var m, o;
22
+ const a = d(e), x = ((m = e.profile) == null ? void 0 : m.avatar) || e.avatar;
23
+ return /* @__PURE__ */ r(
24
+ "div",
12
25
  {
13
- src: "/logos/axtec-logo.png",
14
- alt: "Axtec",
15
- className: s(c[o], "w-auto", t)
26
+ className: h(
27
+ "flex items-center gap-4 p-4",
28
+ l && "cursor-pointer hover:bg-slate-50 rounded-lg transition-colors",
29
+ f
30
+ ),
31
+ onClick: l,
32
+ children: [
33
+ /* @__PURE__ */ s(
34
+ g,
35
+ {
36
+ src: x,
37
+ initials: j(a),
38
+ size: z[t]
39
+ }
40
+ ),
41
+ /* @__PURE__ */ r("div", { className: "flex-1 min-w-0", children: [
42
+ /* @__PURE__ */ s("h4", { className: "text-base font-semibold text-primary-500 truncate max-w-[280px]", children: a }),
43
+ e.companyName && /* @__PURE__ */ s("p", { className: "text-xs text-slate-500 truncate max-w-[280px]", children: e.companyName }),
44
+ (n || i) && /* @__PURE__ */ r("div", { className: "flex items-center gap-2 mt-1", children: [
45
+ n && ((o = e.role) == null ? void 0 : o[0]) && /* @__PURE__ */ s(
46
+ b,
47
+ {
48
+ label: e.role[0].charAt(0).toUpperCase() + e.role[0].slice(1),
49
+ variant: "info",
50
+ size: "sm"
51
+ }
52
+ ),
53
+ i && /* @__PURE__ */ s(
54
+ w,
55
+ {
56
+ average: e.averageRating || "0",
57
+ numberOfRatings: e.ratingCount,
58
+ showNumberOfRatings: !0,
59
+ size: "sm"
60
+ }
61
+ )
62
+ ] }),
63
+ c && /* @__PURE__ */ r("div", { className: "flex items-center gap-6 mt-2", children: [
64
+ (e.mobile || e.phone) && /* @__PURE__ */ r("div", { className: "flex items-center gap-2 text-sm text-slate-600", children: [
65
+ /* @__PURE__ */ s(v, { className: "w-4 h-4" }),
66
+ /* @__PURE__ */ s("span", { children: e.mobile || e.phone })
67
+ ] }),
68
+ e.email && /* @__PURE__ */ r("div", { className: "flex items-center gap-2 text-sm text-slate-600", children: [
69
+ /* @__PURE__ */ s(N, { className: "w-4 h-4" }),
70
+ /* @__PURE__ */ s("span", { children: e.email })
71
+ ] })
72
+ ] })
73
+ ] }),
74
+ p && /* @__PURE__ */ s(u, { className: "w-5 h-5 text-slate-400 flex-shrink-0" })
75
+ ]
16
76
  }
17
77
  );
18
- }
78
+ };
19
79
  export {
20
- l as AxtecLogo
80
+ O as AvatarCard
21
81
  };
22
82
  //# sourceMappingURL=index14.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index14.js","sources":["../src/components/Logo/AxtecLogo.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface AxtecLogoProps {\n size?: 'sm' | 'md' | 'lg' | 'xl'\n className?: string\n}\n\nconst sizeStyles = {\n sm: 'h-8',\n md: 'h-10',\n lg: 'h-14',\n xl: 'h-20',\n}\n\nexport function AxtecLogo({ size = 'md', className }: AxtecLogoProps) {\n return (\n <img\n src=\"/logos/axtec-logo.png\"\n alt=\"Axtec\"\n className={cn(sizeStyles[size], 'w-auto', className)}\n />\n )\n}\n"],"names":["sizeStyles","AxtecLogo","size","className","jsx","cn"],"mappings":";;AAOA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAASC,EAAU,EAAE,MAAAC,IAAO,MAAM,WAAAC,KAA6B;AACpE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAI;AAAA,MACJ,KAAI;AAAA,MACJ,WAAWC,EAAGL,EAAWE,CAAI,GAAG,UAAUC,CAAS;AAAA,IAAA;AAAA,EAAA;AAGzD;"}
1
+ {"version":3,"file":"index14.js","sources":["../src/components/AvatarCard/AvatarCard.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { Avatar } from '../Avatar/Avatar'\nimport { ChevronRightIcon, EnvelopeIcon, PhoneIcon } from '@heroicons/react/24/outline'\nimport { Pill } from '../Pill/Pill'\nimport { AverageRating } from '../AverageRating/AverageRating'\n\nexport interface AvatarCardData {\n firstName?: string\n lastName?: string\n name?: string\n companyName?: string\n email?: string\n mobile?: string\n phone?: string\n role?: string[]\n averageRating?: number | string\n ratingCount?: number | string\n profile?: {\n avatar?: string\n }\n avatar?: string\n}\n\nexport interface AvatarCardProps {\n data: AvatarCardData\n avatarSize?: 'sm' | 'md' | 'lg'\n showRole?: boolean\n showRating?: boolean\n showContactInfo?: boolean\n showArrow?: boolean\n onClick?: () => void\n className?: string\n}\n\nconst getFullName = (data: AvatarCardData): string => {\n if (data.name) return data.name\n const parts = [data.firstName, data.lastName].filter(Boolean)\n return parts.join(' ') || 'Unknown'\n}\n\nconst getInitials = (name: string): string => {\n return name\n .split(' ')\n .map((word) => word[0])\n .slice(0, 2)\n .join('')\n .toUpperCase()\n}\n\nconst avatarSizeMap = {\n sm: 'sm' as const,\n md: 'md' as const,\n lg: 'lg' as const,\n}\n\nexport const AvatarCard = ({\n data,\n avatarSize = 'md',\n showRole = false,\n showRating = false,\n showContactInfo = false,\n showArrow = false,\n onClick,\n className,\n}: AvatarCardProps) => {\n const contactName = getFullName(data)\n const avatar = data.profile?.avatar || data.avatar\n\n return (\n <div\n className={cn(\n 'flex items-center gap-4 p-4',\n onClick && 'cursor-pointer hover:bg-slate-50 rounded-lg transition-colors',\n className\n )}\n onClick={onClick}\n >\n <Avatar\n src={avatar}\n initials={getInitials(contactName)}\n size={avatarSizeMap[avatarSize]}\n />\n\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-base font-semibold text-primary-500 truncate max-w-[280px]\">\n {contactName}\n </h4>\n\n {data.companyName && (\n <p className=\"text-xs text-slate-500 truncate max-w-[280px]\">\n {data.companyName}\n </p>\n )}\n\n {(showRole || showRating) && (\n <div className=\"flex items-center gap-2 mt-1\">\n {showRole && data.role?.[0] && (\n <Pill\n label={data.role[0].charAt(0).toUpperCase() + data.role[0].slice(1)}\n variant=\"info\"\n size=\"sm\"\n />\n )}\n {showRating && (\n <AverageRating\n average={data.averageRating || '0'}\n numberOfRatings={data.ratingCount}\n showNumberOfRatings\n size=\"sm\"\n />\n )}\n </div>\n )}\n\n {showContactInfo && (\n <div className=\"flex items-center gap-6 mt-2\">\n {(data.mobile || data.phone) && (\n <div className=\"flex items-center gap-2 text-sm text-slate-600\">\n <PhoneIcon className=\"w-4 h-4\" />\n <span>{data.mobile || data.phone}</span>\n </div>\n )}\n {data.email && (\n <div className=\"flex items-center gap-2 text-sm text-slate-600\">\n <EnvelopeIcon className=\"w-4 h-4\" />\n <span>{data.email}</span>\n </div>\n )}\n </div>\n )}\n </div>\n\n {showArrow && (\n <ChevronRightIcon className=\"w-5 h-5 text-slate-400 flex-shrink-0\" />\n )}\n </div>\n )\n}\n"],"names":["getFullName","data","getInitials","name","word","avatarSizeMap","AvatarCard","avatarSize","showRole","showRating","showContactInfo","showArrow","onClick","className","contactName","avatar","_a","jsxs","cn","jsx","Avatar","_b","Pill","AverageRating","PhoneIcon","EnvelopeIcon","ChevronRightIcon"],"mappings":"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"}