@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/index70.js CHANGED
@@ -1,51 +1,112 @@
1
- import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as l } from "react";
3
- import { cn as a } from "./index3.js";
4
- const f = l(
5
- ({ className: d, label: e, error: t, helperText: s, id: i, ...c }, m) => {
6
- const o = i || (e == null ? void 0 : e.toLowerCase().replace(/\s+/g, "-"));
7
- return /* @__PURE__ */ n("div", { className: "w-full", children: [
8
- e && /* @__PURE__ */ r(
9
- "label",
10
- {
11
- htmlFor: o,
12
- className: "block text-sm font-medium text-slate-700 mb-1.5",
13
- children: e
14
- }
15
- ),
1
+ import { jsxs as s, jsx as r, Fragment as g } from "react/jsx-runtime";
2
+ import { cn as o } from "./index3.js";
3
+ import { Panel as v, PanelHeader as b, PanelTitle as D, PanelAction as y, PanelEmptyState as w } from "./index48.js";
4
+ import { Badge as h } from "./index17.js";
5
+ const N = (l) => {
6
+ if (!l) return null;
7
+ const a = new Date(l), n = /* @__PURE__ */ new Date(), i = Math.ceil((a.getTime() - n.getTime()) / (1e3 * 60 * 60 * 24));
8
+ return i < 0 ? { text: `Overdue by ${Math.abs(i)} days`, isOverdue: !0 } : i === 0 ? { text: "Due today", isOverdue: !0 } : i === 1 ? { text: "Due tomorrow", isOverdue: !1 } : i <= 7 ? { text: `Due in ${i} days`, isOverdue: !1 } : { text: `Due ${a.toLocaleDateString()}`, isOverdue: !1 };
9
+ }, z = ({
10
+ tasks: l,
11
+ title: a = "Tasks",
12
+ onTaskClick: n,
13
+ onViewAll: i,
14
+ onAddTask: d,
15
+ maxTasks: u = 5,
16
+ emptyMessage: x = "No tasks to display.",
17
+ className: f
18
+ }) => {
19
+ const c = [...l].filter((e) => e.status !== "completed").sort((e, t) => e.status === "overdue" && t.status !== "overdue" ? -1 : e.status !== "overdue" && t.status === "overdue" ? 1 : e.priority === "high" && t.priority !== "high" ? -1 : e.priority !== "high" && t.priority === "high" ? 1 : e.dueDate && t.dueDate ? new Date(e.dueDate).getTime() - new Date(t.dueDate).getTime() : 0).slice(0, u), m = l.filter((e) => e.status === "overdue").length;
20
+ return /* @__PURE__ */ s(v, { className: f, children: [
21
+ /* @__PURE__ */ s(b, { children: [
16
22
  /* @__PURE__ */ r(
17
- "textarea",
23
+ D,
18
24
  {
19
- ref: m,
20
- id: o,
21
- className: a(
22
- "w-full px-4 py-2.5 text-base min-h-[100px] resize-y",
23
- "bg-white border rounded-lg",
24
- "transition-colors duration-200",
25
- "placeholder:text-slate-400",
26
- "focus:outline-none focus:ring-2 focus:ring-offset-0",
27
- t ? "border-red-500 focus:border-red-500 focus:ring-red-500" : "border-slate-300 focus:border-primary-500 focus:ring-primary-500",
28
- "disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed",
29
- d
30
- ),
31
- ...c
25
+ badge: m > 0 ? /* @__PURE__ */ s(h, { variant: "danger", size: "sm", children: [
26
+ m,
27
+ " overdue"
28
+ ] }) : void 0,
29
+ children: a
32
30
  }
33
31
  ),
34
- (t || s) && /* @__PURE__ */ r(
35
- "p",
32
+ d && /* @__PURE__ */ r(y, { onClick: d, children: "+ Add Task" })
33
+ ] }),
34
+ c.length === 0 ? /* @__PURE__ */ r(w, { message: x }) : /* @__PURE__ */ s("div", { className: "flex flex-col gap-3", children: [
35
+ c.map((e) => {
36
+ const t = N(e.dueDate);
37
+ return /* @__PURE__ */ s(
38
+ "div",
39
+ {
40
+ className: o(
41
+ "flex items-start p-4",
42
+ "bg-white border border-slate-200 rounded-xl",
43
+ "transition-colors hover:bg-slate-50",
44
+ n && "cursor-pointer"
45
+ ),
46
+ onClick: () => n == null ? void 0 : n(e),
47
+ children: [
48
+ /* @__PURE__ */ s("div", { className: "flex-1 min-w-0", children: [
49
+ /* @__PURE__ */ r("h4", { className: "text-sm font-semibold text-slate-900 m-0 mb-1", children: e.title }),
50
+ e.description && /* @__PURE__ */ r("p", { className: "text-sm text-slate-500 m-0 mb-2 truncate", children: e.description }),
51
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-2 flex-wrap", children: [
52
+ t && /* @__PURE__ */ r(
53
+ "span",
54
+ {
55
+ className: o(
56
+ "text-xs",
57
+ t.isOverdue ? "text-red-500 font-semibold" : "text-slate-500"
58
+ ),
59
+ children: t.text
60
+ }
61
+ ),
62
+ e.meta && /* @__PURE__ */ s(g, { children: [
63
+ t && /* @__PURE__ */ r("span", { className: "text-slate-300", children: "•" }),
64
+ /* @__PURE__ */ r("span", { className: "text-xs text-slate-500", children: e.meta })
65
+ ] }),
66
+ e.priority === "high" && /* @__PURE__ */ r(h, { variant: "warning", size: "sm", children: "High Priority" })
67
+ ] })
68
+ ] }),
69
+ n && /* @__PURE__ */ r(
70
+ "button",
71
+ {
72
+ className: o(
73
+ "px-3 py-1.5 ml-3 flex-shrink-0",
74
+ "bg-white border border-slate-200 rounded-lg",
75
+ "text-xs font-medium text-slate-700",
76
+ "transition-colors hover:bg-slate-100 hover:border-slate-300"
77
+ ),
78
+ onClick: (p) => {
79
+ p.stopPropagation(), n(e);
80
+ },
81
+ children: "View"
82
+ }
83
+ )
84
+ ]
85
+ },
86
+ e.id
87
+ );
88
+ }),
89
+ l.length > u && i && /* @__PURE__ */ s(
90
+ "button",
36
91
  {
37
- className: a(
38
- "mt-1.5 text-sm",
39
- t ? "text-red-600" : "text-slate-500"
92
+ onClick: i,
93
+ className: o(
94
+ "w-full p-3 mt-2",
95
+ "bg-transparent border border-dashed border-slate-200 rounded-xl",
96
+ "text-sm text-slate-500",
97
+ "transition-colors hover:border-slate-400 hover:text-slate-700"
40
98
  ),
41
- children: t || s
99
+ children: [
100
+ "View all ",
101
+ l.length,
102
+ " tasks"
103
+ ]
42
104
  }
43
105
  )
44
- ] });
45
- }
46
- );
47
- f.displayName = "Textarea";
106
+ ] })
107
+ ] });
108
+ };
48
109
  export {
49
- f as Textarea
110
+ z as TaskList
50
111
  };
51
112
  //# sourceMappingURL=index70.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index70.js","sources":["../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef, type TextareaHTMLAttributes } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n label?: string\n error?: string\n helperText?: string\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, label, error, helperText, id, ...props }, ref) => {\n const textareaId = id || label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n htmlFor={textareaId}\n className=\"block text-sm font-medium text-slate-700 mb-1.5\"\n >\n {label}\n </label>\n )}\n <textarea\n ref={ref}\n id={textareaId}\n className={cn(\n 'w-full px-4 py-2.5 text-base min-h-[100px] resize-y',\n 'bg-white border rounded-lg',\n 'transition-colors duration-200',\n 'placeholder:text-slate-400',\n 'focus:outline-none focus:ring-2 focus:ring-offset-0',\n error\n ? 'border-red-500 focus:border-red-500 focus:ring-red-500'\n : 'border-slate-300 focus:border-primary-500 focus:ring-primary-500',\n 'disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed',\n className\n )}\n {...props}\n />\n {(error || helperText) && (\n <p\n className={cn(\n 'mt-1.5 text-sm',\n error ? 'text-red-600' : 'text-slate-500'\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n"],"names":["Textarea","forwardRef","className","label","error","helperText","id","props","ref","textareaId","jsxs","jsx","cn"],"mappings":";;;AASO,MAAMA,IAAWC;AAAA,EACtB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,OAAAC,GAAO,YAAAC,GAAY,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AAC9D,UAAMC,IAAaH,MAAMH,KAAA,gBAAAA,EAAO,cAAc,QAAQ,QAAQ;AAE9D,WACE,gBAAAO,EAAC,OAAA,EAAI,WAAU,UACZ,UAAA;AAAA,MAAAP,KACC,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASF;AAAA,UACT,WAAU;AAAA,UAET,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAH;AAAA,UACA,IAAIC;AAAA,UACJ,WAAWG;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAR,IACI,2DACA;AAAA,YACJ;AAAA,YACAF;AAAA,UAAA;AAAA,UAED,GAAGK;AAAA,QAAA;AAAA,MAAA;AAAA,OAEJH,KAASC,MACT,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC;AAAA,YACT;AAAA,YACAR,IAAQ,iBAAiB;AAAA,UAAA;AAAA,UAG1B,UAAAA,KAASC;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,GAEJ;AAAA,EAEJ;AACF;AAEAL,EAAS,cAAc;"}
1
+ {"version":3,"file":"index70.js","sources":["../src/components/TaskList/TaskList.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport { Panel, PanelHeader, PanelTitle, PanelAction, PanelEmptyState } from '../Panel/Panel'\nimport { Badge } from '../Badge/Badge'\n\nexport interface Task {\n id: string\n title: string\n description?: string\n dueDate?: string\n priority?: 'high' | 'medium' | 'low'\n status?: 'pending' | 'overdue' | 'completed'\n meta?: string\n}\n\nexport interface TaskListProps {\n tasks: Task[]\n title?: string\n onTaskClick?: (task: Task) => void\n onViewAll?: () => void\n onAddTask?: () => void\n maxTasks?: number\n emptyMessage?: string\n className?: string\n}\n\nconst formatDueDate = (dateString?: string) => {\n if (!dateString) return null\n const date = new Date(dateString)\n const now = new Date()\n const diffDays = Math.ceil((date.getTime() - now.getTime()) / (1000 * 60 * 60 * 24))\n\n if (diffDays < 0) {\n return { text: `Overdue by ${Math.abs(diffDays)} days`, isOverdue: true }\n } else if (diffDays === 0) {\n return { text: 'Due today', isOverdue: true }\n } else if (diffDays === 1) {\n return { text: 'Due tomorrow', isOverdue: false }\n } else if (diffDays <= 7) {\n return { text: `Due in ${diffDays} days`, isOverdue: false }\n } else {\n return { text: `Due ${date.toLocaleDateString()}`, isOverdue: false }\n }\n}\n\nexport const TaskList = ({\n tasks,\n title = 'Tasks',\n onTaskClick,\n onViewAll,\n onAddTask,\n maxTasks = 5,\n emptyMessage = \"No tasks to display.\",\n className,\n}: TaskListProps) => {\n // Sort tasks: overdue first, then by priority, then by due date\n const sortedTasks = [...tasks]\n .filter((t) => t.status !== 'completed')\n .sort((a, b) => {\n if (a.status === 'overdue' && b.status !== 'overdue') return -1\n if (a.status !== 'overdue' && b.status === 'overdue') return 1\n if (a.priority === 'high' && b.priority !== 'high') return -1\n if (a.priority !== 'high' && b.priority === 'high') return 1\n if (a.dueDate && b.dueDate) {\n return new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime()\n }\n return 0\n })\n .slice(0, maxTasks)\n\n const overdueCount = tasks.filter((t) => t.status === 'overdue').length\n\n return (\n <Panel className={className}>\n <PanelHeader>\n <PanelTitle\n badge={\n overdueCount > 0 ? (\n <Badge variant=\"danger\" size=\"sm\">\n {overdueCount} overdue\n </Badge>\n ) : undefined\n }\n >\n {title}\n </PanelTitle>\n {onAddTask && (\n <PanelAction onClick={onAddTask}>\n + Add Task\n </PanelAction>\n )}\n </PanelHeader>\n\n {sortedTasks.length === 0 ? (\n <PanelEmptyState message={emptyMessage} />\n ) : (\n <div className=\"flex flex-col gap-3\">\n {sortedTasks.map((task) => {\n const dueInfo = formatDueDate(task.dueDate)\n return (\n <div\n key={task.id}\n className={cn(\n 'flex items-start p-4',\n 'bg-white border border-slate-200 rounded-xl',\n 'transition-colors hover:bg-slate-50',\n onTaskClick && 'cursor-pointer'\n )}\n onClick={() => onTaskClick?.(task)}\n >\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-sm font-semibold text-slate-900 m-0 mb-1\">\n {task.title}\n </h4>\n {task.description && (\n <p className=\"text-sm text-slate-500 m-0 mb-2 truncate\">\n {task.description}\n </p>\n )}\n <div className=\"flex items-center gap-2 flex-wrap\">\n {dueInfo && (\n <span\n className={cn(\n 'text-xs',\n dueInfo.isOverdue ? 'text-red-500 font-semibold' : 'text-slate-500'\n )}\n >\n {dueInfo.text}\n </span>\n )}\n {task.meta && (\n <>\n {dueInfo && <span className=\"text-slate-300\">•</span>}\n <span className=\"text-xs text-slate-500\">\n {task.meta}\n </span>\n </>\n )}\n {task.priority === 'high' && (\n <Badge variant=\"warning\" size=\"sm\">\n High Priority\n </Badge>\n )}\n </div>\n </div>\n {onTaskClick && (\n <button\n className={cn(\n 'px-3 py-1.5 ml-3 flex-shrink-0',\n 'bg-white border border-slate-200 rounded-lg',\n 'text-xs font-medium text-slate-700',\n 'transition-colors hover:bg-slate-100 hover:border-slate-300'\n )}\n onClick={(e) => {\n e.stopPropagation()\n onTaskClick(task)\n }}\n >\n View\n </button>\n )}\n </div>\n )\n })}\n\n {tasks.length > maxTasks && onViewAll && (\n <button\n onClick={onViewAll}\n className={cn(\n 'w-full p-3 mt-2',\n 'bg-transparent border border-dashed border-slate-200 rounded-xl',\n 'text-sm text-slate-500',\n 'transition-colors hover:border-slate-400 hover:text-slate-700'\n )}\n >\n View all {tasks.length} tasks\n </button>\n )}\n </div>\n )}\n </Panel>\n )\n}\n"],"names":["formatDueDate","dateString","date","now","diffDays","TaskList","tasks","title","onTaskClick","onViewAll","onAddTask","maxTasks","emptyMessage","className","sortedTasks","t","a","b","overdueCount","jsxs","Panel","PanelHeader","jsx","PanelTitle","Badge","PanelAction","PanelEmptyState","task","dueInfo","cn","Fragment","e"],"mappings":"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"}
package/dist/index71.js CHANGED
@@ -1,79 +1,51 @@
1
- import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
- import { Switch as r } from "@headlessui/react";
3
- import { cn as e } from "./index3.js";
4
- const f = {
5
- sm: {
6
- track: "h-5 w-9",
7
- thumb: "h-4 w-4",
8
- translate: "translate-x-4"
9
- },
10
- md: {
11
- track: "h-6 w-11",
12
- thumb: "h-5 w-5",
13
- translate: "translate-x-5"
14
- },
15
- lg: {
16
- track: "h-7 w-14",
17
- thumb: "h-6 w-6",
18
- translate: "translate-x-7"
19
- }
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { cn as r } from "./index3.js";
3
+ const d = {
4
+ body: "text-base",
5
+ "body-sm": "text-sm",
6
+ caption: "text-xs",
7
+ lead: "text-lg",
8
+ h1: "text-5xl font-light tracking-tight",
9
+ h2: "text-2xl font-semibold",
10
+ h3: "text-lg font-semibold"
11
+ }, i = {
12
+ h1: "h1",
13
+ h2: "h2",
14
+ h3: "h3"
15
+ }, x = {
16
+ default: "text-slate-900",
17
+ muted: "text-slate-500",
18
+ primary: "text-primary-600",
19
+ danger: "text-red-600"
20
+ }, f = {
21
+ normal: "font-normal",
22
+ medium: "font-medium",
23
+ semibold: "font-semibold",
24
+ bold: "font-bold"
20
25
  };
21
- function p({
22
- checked: s,
23
- onChange: m,
24
- label: a,
25
- description: n,
26
- disabled: o = !1,
27
- size: c = "md",
28
- className: u
26
+ function b({
27
+ children: e,
28
+ variant: t = "body",
29
+ color: o = "default",
30
+ weight: l = "normal",
31
+ as: n,
32
+ className: m
29
33
  }) {
30
- const l = f[c];
31
- return /* @__PURE__ */ t(r.Group, { children: /* @__PURE__ */ i("div", { className: e("flex items-start gap-3", u), children: [
32
- /* @__PURE__ */ t(
33
- r,
34
- {
35
- checked: s,
36
- onChange: m,
37
- disabled: o,
38
- className: e(
39
- "relative inline-flex flex-shrink-0 rounded-full",
40
- "border-2 border-transparent cursor-pointer",
41
- "transition-colors duration-200 ease-in-out",
42
- "focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2",
43
- s ? "bg-primary-500" : "bg-slate-200",
44
- o && "opacity-50 cursor-not-allowed",
45
- l.track
46
- ),
47
- children: /* @__PURE__ */ t(
48
- "span",
49
- {
50
- className: e(
51
- "pointer-events-none inline-block rounded-full",
52
- "bg-white shadow-sm ring-0",
53
- "transform transition duration-200 ease-in-out",
54
- s ? l.translate : "translate-x-0",
55
- l.thumb
56
- )
57
- }
58
- )
59
- }
60
- ),
61
- (a || n) && /* @__PURE__ */ i("div", { className: "flex flex-col", children: [
62
- a && /* @__PURE__ */ t(
63
- r.Label,
64
- {
65
- className: e(
66
- "text-sm font-medium text-slate-900",
67
- o && "opacity-50"
68
- ),
69
- children: a
70
- }
34
+ const s = n || i[t] || "p";
35
+ return /* @__PURE__ */ a(
36
+ s,
37
+ {
38
+ className: r(
39
+ d[t],
40
+ x[o],
41
+ f[l],
42
+ m
71
43
  ),
72
- n && /* @__PURE__ */ t(r.Description, { className: "text-sm text-slate-500", children: n })
73
- ] })
74
- ] }) });
44
+ children: e
45
+ }
46
+ );
75
47
  }
76
48
  export {
77
- p as Toggle
49
+ b as Text
78
50
  };
79
51
  //# sourceMappingURL=index71.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index71.js","sources":["../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import { Switch } from '@headlessui/react'\nimport { cn } from '@/lib/utils'\n\nexport interface ToggleProps {\n checked: boolean\n onChange: (checked: boolean) => void\n label?: string\n description?: string\n disabled?: boolean\n size?: 'sm' | 'md' | 'lg'\n className?: string\n}\n\nconst sizeStyles = {\n sm: {\n track: 'h-5 w-9',\n thumb: 'h-4 w-4',\n translate: 'translate-x-4',\n },\n md: {\n track: 'h-6 w-11',\n thumb: 'h-5 w-5',\n translate: 'translate-x-5',\n },\n lg: {\n track: 'h-7 w-14',\n thumb: 'h-6 w-6',\n translate: 'translate-x-7',\n },\n}\n\nexport function Toggle({\n checked,\n onChange,\n label,\n description,\n disabled = false,\n size = 'md',\n className,\n}: ToggleProps) {\n const styles = sizeStyles[size]\n\n return (\n <Switch.Group>\n <div className={cn('flex items-start gap-3', className)}>\n <Switch\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n className={cn(\n 'relative inline-flex flex-shrink-0 rounded-full',\n 'border-2 border-transparent cursor-pointer',\n 'transition-colors duration-200 ease-in-out',\n 'focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2',\n checked ? 'bg-primary-500' : 'bg-slate-200',\n disabled && 'opacity-50 cursor-not-allowed',\n styles.track\n )}\n >\n <span\n className={cn(\n 'pointer-events-none inline-block rounded-full',\n 'bg-white shadow-sm ring-0',\n 'transform transition duration-200 ease-in-out',\n checked ? styles.translate : 'translate-x-0',\n styles.thumb\n )}\n />\n </Switch>\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <Switch.Label\n className={cn(\n 'text-sm font-medium text-slate-900',\n disabled && 'opacity-50'\n )}\n >\n {label}\n </Switch.Label>\n )}\n {description && (\n <Switch.Description className=\"text-sm text-slate-500\">\n {description}\n </Switch.Description>\n )}\n </div>\n )}\n </div>\n </Switch.Group>\n )\n}\n"],"names":["sizeStyles","Toggle","checked","onChange","label","description","disabled","size","className","styles","jsx","Switch","jsxs","cn"],"mappings":";;;AAaA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,EAAA;AAAA,EAEb,IAAI;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,EAAA;AAAA,EAEb,IAAI;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,EAAA;AAEf;AAEO,SAASC,EAAO;AAAA,EACrB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,WAAAC;AACF,GAAgB;AACd,QAAMC,IAAST,EAAWO,CAAI;AAE9B,SACE,gBAAAG,EAACC,EAAO,OAAP,EACC,UAAA,gBAAAC,EAAC,SAAI,WAAWC,EAAG,0BAA0BL,CAAS,GACpD,UAAA;AAAA,IAAA,gBAAAE;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAAT;AAAA,QACA,UAAAC;AAAA,QACA,UAAAG;AAAA,QACA,WAAWO;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAX,IAAU,mBAAmB;AAAA,UAC7BI,KAAY;AAAA,UACZG,EAAO;AAAA,QAAA;AAAA,QAGT,UAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWG;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAX,IAAUO,EAAO,YAAY;AAAA,cAC7BA,EAAO;AAAA,YAAA;AAAA,UACT;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,KAEAL,KAASC,MACT,gBAAAO,EAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,MAAAR,KACC,gBAAAM;AAAA,QAACC,EAAO;AAAA,QAAP;AAAA,UACC,WAAWE;AAAA,YACT;AAAA,YACAP,KAAY;AAAA,UAAA;AAAA,UAGb,UAAAF;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJC,KACC,gBAAAK,EAACC,EAAO,aAAP,EAAmB,WAAU,0BAC3B,UAAAN,EAAA,CACH;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"index71.js","sources":["../src/components/Typography/Text.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ReactNode, ElementType } from 'react'\n\nexport interface TextProps {\n children: ReactNode\n variant?: 'body' | 'body-sm' | 'caption' | 'lead' | 'h1' | 'h2' | 'h3'\n color?: 'default' | 'muted' | 'primary' | 'danger'\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n as?: ElementType\n className?: string\n}\n\nconst variantStyles = {\n body: 'text-base',\n 'body-sm': 'text-sm',\n caption: 'text-xs',\n lead: 'text-lg',\n h1: 'text-5xl font-light tracking-tight',\n h2: 'text-2xl font-semibold',\n h3: 'text-lg font-semibold',\n}\n\nconst variantDefaults: Partial<Record<TextProps['variant'] & string, ElementType>> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n}\n\nconst colorStyles = {\n default: 'text-slate-900',\n muted: 'text-slate-500',\n primary: 'text-primary-600',\n danger: 'text-red-600',\n}\n\nconst weightStyles = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nexport function Text({\n children,\n variant = 'body',\n color = 'default',\n weight = 'normal',\n as,\n className,\n}: TextProps) {\n const Component = as || variantDefaults[variant!] || 'p'\n return (\n <Component\n className={cn(\n variantStyles[variant],\n colorStyles[color],\n weightStyles[weight],\n className\n )}\n >\n {children}\n </Component>\n )\n}\n"],"names":["variantStyles","variantDefaults","colorStyles","weightStyles","Text","children","variant","color","weight","as","className","Component","jsx","cn"],"mappings":";;AAYA,MAAMA,IAAgB;AAAA,EACpB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAA+E;AAAA,EACnF,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAc;AAAA,EAClB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACV,GAEMC,IAAe;AAAA,EACnB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AACR;AAEO,SAASC,EAAK;AAAA,EACnB,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,IAAAC;AAAA,EACA,WAAAC;AACF,GAAc;AACZ,QAAMC,IAAYF,KAAMR,EAAgBK,CAAQ,KAAK;AACrD,SACE,gBAAAM;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,WAAWE;AAAA,QACTb,EAAcM,CAAO;AAAA,QACrBJ,EAAYK,CAAK;AAAA,QACjBJ,EAAaK,CAAM;AAAA,QACnBE;AAAA,MAAA;AAAA,MAGD,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;"}
package/dist/index72.js CHANGED
@@ -1,57 +1,51 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { cn as o } from "./index3.js";
3
- const f = ({
4
- label: r,
5
- checked: t,
6
- onChange: s,
7
- disabled: n = !1,
8
- className: i
9
- }) => {
10
- const a = () => {
11
- n || s(!t);
12
- };
13
- return /* @__PURE__ */ l(
14
- "div",
15
- {
16
- className: o(
17
- "flex items-center justify-between gap-4",
18
- n && "opacity-50",
19
- i
1
+ import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
+ import { forwardRef as l } from "react";
3
+ import { cn as a } from "./index3.js";
4
+ const f = l(
5
+ ({ className: d, label: e, error: t, helperText: s, id: i, ...c }, m) => {
6
+ const o = i || (e == null ? void 0 : e.toLowerCase().replace(/\s+/g, "-"));
7
+ return /* @__PURE__ */ n("div", { className: "w-full", children: [
8
+ e && /* @__PURE__ */ r(
9
+ "label",
10
+ {
11
+ htmlFor: o,
12
+ className: "block text-sm font-medium text-slate-700 mb-1.5",
13
+ children: e
14
+ }
20
15
  ),
21
- children: [
22
- /* @__PURE__ */ e("span", { className: "text-sm text-slate-700", children: r }),
23
- /* @__PURE__ */ e(
24
- "button",
25
- {
26
- type: "button",
27
- role: "switch",
28
- "aria-checked": t,
29
- disabled: n,
30
- onClick: a,
31
- className: o(
32
- "relative inline-flex h-6 w-11 items-center rounded-full",
33
- "transition-colors duration-200 ease-in-out",
34
- "focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2",
35
- t ? "bg-primary-500" : "bg-slate-200",
36
- n ? "cursor-not-allowed" : "cursor-pointer"
37
- ),
38
- children: /* @__PURE__ */ e(
39
- "span",
40
- {
41
- className: o(
42
- "inline-block h-4 w-4 rounded-full bg-white shadow-sm",
43
- "transform transition-transform duration-200 ease-in-out",
44
- t ? "translate-x-6" : "translate-x-1"
45
- )
46
- }
47
- )
48
- }
49
- )
50
- ]
51
- }
52
- );
53
- };
16
+ /* @__PURE__ */ r(
17
+ "textarea",
18
+ {
19
+ ref: m,
20
+ id: o,
21
+ className: a(
22
+ "w-full px-4 py-2.5 text-base min-h-[100px] resize-y",
23
+ "bg-white border rounded-lg",
24
+ "transition-colors duration-200",
25
+ "placeholder:text-slate-400",
26
+ "focus:outline-none focus:ring-2 focus:ring-offset-0",
27
+ t ? "border-red-500 focus:border-red-500 focus:ring-red-500" : "border-slate-300 focus:border-primary-500 focus:ring-primary-500",
28
+ "disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed",
29
+ d
30
+ ),
31
+ ...c
32
+ }
33
+ ),
34
+ (t || s) && /* @__PURE__ */ r(
35
+ "p",
36
+ {
37
+ className: a(
38
+ "mt-1.5 text-sm",
39
+ t ? "text-red-600" : "text-slate-500"
40
+ ),
41
+ children: t || s
42
+ }
43
+ )
44
+ ] });
45
+ }
46
+ );
47
+ f.displayName = "Textarea";
54
48
  export {
55
- f as ToggleButton
49
+ f as Textarea
56
50
  };
57
51
  //# sourceMappingURL=index72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index72.js","sources":["../src/components/ToggleButton/ToggleButton.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface ToggleButtonProps {\n label: string\n checked: boolean\n onChange: (checked: boolean) => void\n disabled?: boolean\n className?: string\n}\n\nexport const ToggleButton = ({\n label,\n checked,\n onChange,\n disabled = false,\n className,\n}: ToggleButtonProps) => {\n const handleClick = () => {\n if (!disabled) {\n onChange(!checked)\n }\n }\n\n return (\n <div\n className={cn(\n 'flex items-center justify-between gap-4',\n disabled && 'opacity-50',\n className\n )}\n >\n <span className=\"text-sm text-slate-700\">\n {label}\n </span>\n\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={handleClick}\n className={cn(\n 'relative inline-flex h-6 w-11 items-center rounded-full',\n 'transition-colors duration-200 ease-in-out',\n 'focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2',\n checked ? 'bg-primary-500' : 'bg-slate-200',\n disabled ? 'cursor-not-allowed' : 'cursor-pointer'\n )}\n >\n <span\n className={cn(\n 'inline-block h-4 w-4 rounded-full bg-white shadow-sm',\n 'transform transition-transform duration-200 ease-in-out',\n checked ? 'translate-x-6' : 'translate-x-1'\n )}\n />\n </button>\n </div>\n )\n}\n"],"names":["ToggleButton","label","checked","onChange","disabled","className","handleClick","jsxs","cn","jsx"],"mappings":";;AAUO,MAAMA,IAAe,CAAC;AAAA,EAC3B,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC;AACF,MAAyB;AACvB,QAAMC,IAAc,MAAM;AACxB,IAAKF,KACHD,EAAS,CAACD,CAAO;AAAA,EAErB;AAEA,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAJ,KAAY;AAAA,QACZC;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAI,EAAC,QAAA,EAAK,WAAU,0BACb,UAAAR,GACH;AAAA,QAEA,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAK;AAAA,YACL,gBAAcP;AAAA,YACd,UAAAE;AAAA,YACA,SAASE;AAAA,YACT,WAAWE;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAN,IAAU,mBAAmB;AAAA,cAC7BE,IAAW,uBAAuB;AAAA,YAAA;AAAA,YAGpC,UAAA,gBAAAK;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWD;AAAA,kBACT;AAAA,kBACA;AAAA,kBACAN,IAAU,kBAAkB;AAAA,gBAAA;AAAA,cAC9B;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"index72.js","sources":["../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef, type TextareaHTMLAttributes } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n label?: string\n error?: string\n helperText?: string\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, label, error, helperText, id, ...props }, ref) => {\n const textareaId = id || label?.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n htmlFor={textareaId}\n className=\"block text-sm font-medium text-slate-700 mb-1.5\"\n >\n {label}\n </label>\n )}\n <textarea\n ref={ref}\n id={textareaId}\n className={cn(\n 'w-full px-4 py-2.5 text-base min-h-[100px] resize-y',\n 'bg-white border rounded-lg',\n 'transition-colors duration-200',\n 'placeholder:text-slate-400',\n 'focus:outline-none focus:ring-2 focus:ring-offset-0',\n error\n ? 'border-red-500 focus:border-red-500 focus:ring-red-500'\n : 'border-slate-300 focus:border-primary-500 focus:ring-primary-500',\n 'disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed',\n className\n )}\n {...props}\n />\n {(error || helperText) && (\n <p\n className={cn(\n 'mt-1.5 text-sm',\n error ? 'text-red-600' : 'text-slate-500'\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\n"],"names":["Textarea","forwardRef","className","label","error","helperText","id","props","ref","textareaId","jsxs","jsx","cn"],"mappings":";;;AASO,MAAMA,IAAWC;AAAA,EACtB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,OAAAC,GAAO,YAAAC,GAAY,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AAC9D,UAAMC,IAAaH,MAAMH,KAAA,gBAAAA,EAAO,cAAc,QAAQ,QAAQ;AAE9D,WACE,gBAAAO,EAAC,OAAA,EAAI,WAAU,UACZ,UAAA;AAAA,MAAAP,KACC,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASF;AAAA,UACT,WAAU;AAAA,UAET,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAQ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAH;AAAA,UACA,IAAIC;AAAA,UACJ,WAAWG;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAR,IACI,2DACA;AAAA,YACJ;AAAA,YACAF;AAAA,UAAA;AAAA,UAED,GAAGK;AAAA,QAAA;AAAA,MAAA;AAAA,OAEJH,KAASC,MACT,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC;AAAA,YACT;AAAA,YACAR,IAAQ,iBAAiB;AAAA,UAAA;AAAA,UAG1B,UAAAA,KAASC;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,GAEJ;AAAA,EAEJ;AACF;AAEAL,EAAS,cAAc;"}
package/dist/index73.js CHANGED
@@ -1,71 +1,79 @@
1
- import { jsxs as s, jsx as c } from "react/jsx-runtime";
2
- import { useState as n } from "react";
3
- import { cn as i } from "./index3.js";
4
- const x = {
5
- top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
6
- bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
7
- left: "right-full top-1/2 -translate-y-1/2 mr-2",
8
- right: "left-full top-1/2 -translate-y-1/2 ml-2"
9
- }, h = {
10
- top: "top-full left-1/2 -translate-x-1/2 border-t-slate-800 border-x-transparent border-b-transparent",
11
- bottom: "bottom-full left-1/2 -translate-x-1/2 border-b-slate-800 border-x-transparent border-t-transparent",
12
- left: "left-full top-1/2 -translate-y-1/2 border-l-slate-800 border-y-transparent border-r-transparent",
13
- right: "right-full top-1/2 -translate-y-1/2 border-r-slate-800 border-y-transparent border-l-transparent"
1
+ import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
+ import { Switch as r } from "@headlessui/react";
3
+ import { cn as e } from "./index3.js";
4
+ const f = {
5
+ sm: {
6
+ track: "h-5 w-9",
7
+ thumb: "h-4 w-4",
8
+ translate: "translate-x-4"
9
+ },
10
+ md: {
11
+ track: "h-6 w-11",
12
+ thumb: "h-5 w-5",
13
+ translate: "translate-x-5"
14
+ },
15
+ lg: {
16
+ track: "h-7 w-14",
17
+ thumb: "h-6 w-6",
18
+ translate: "translate-x-7"
19
+ }
14
20
  };
15
- function T({
16
- content: p,
17
- children: u,
18
- position: t = "top",
19
- delay: b = 200,
20
- className: d
21
+ function p({
22
+ checked: s,
23
+ onChange: m,
24
+ label: a,
25
+ description: n,
26
+ disabled: o = !1,
27
+ size: c = "md",
28
+ className: u
21
29
  }) {
22
- const [f, e] = n(!1), [r, o] = n(null), l = () => {
23
- const m = setTimeout(() => e(!0), b);
24
- o(m);
25
- }, a = () => {
26
- r && (clearTimeout(r), o(null)), e(!1);
27
- };
28
- return /* @__PURE__ */ s(
29
- "div",
30
- {
31
- className: "relative inline-flex",
32
- onMouseEnter: l,
33
- onMouseLeave: a,
34
- onFocus: l,
35
- onBlur: a,
36
- children: [
37
- u,
38
- f && /* @__PURE__ */ s(
39
- "div",
30
+ const l = f[c];
31
+ return /* @__PURE__ */ t(r.Group, { children: /* @__PURE__ */ i("div", { className: e("flex items-start gap-3", u), children: [
32
+ /* @__PURE__ */ t(
33
+ r,
34
+ {
35
+ checked: s,
36
+ onChange: m,
37
+ disabled: o,
38
+ className: e(
39
+ "relative inline-flex flex-shrink-0 rounded-full",
40
+ "border-2 border-transparent cursor-pointer",
41
+ "transition-colors duration-200 ease-in-out",
42
+ "focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2",
43
+ s ? "bg-primary-500" : "bg-slate-200",
44
+ o && "opacity-50 cursor-not-allowed",
45
+ l.track
46
+ ),
47
+ children: /* @__PURE__ */ t(
48
+ "span",
40
49
  {
41
- className: i(
42
- "absolute z-50 px-3 py-1.5",
43
- "bg-slate-800 text-white text-sm rounded-lg",
44
- "whitespace-nowrap",
45
- "animate-in fade-in-0 zoom-in-95 duration-150",
46
- x[t],
47
- d
48
- ),
49
- role: "tooltip",
50
- children: [
51
- p,
52
- /* @__PURE__ */ c(
53
- "span",
54
- {
55
- className: i(
56
- "absolute w-0 h-0 border-4",
57
- h[t]
58
- )
59
- }
60
- )
61
- ]
50
+ className: e(
51
+ "pointer-events-none inline-block rounded-full",
52
+ "bg-white shadow-sm ring-0",
53
+ "transform transition duration-200 ease-in-out",
54
+ s ? l.translate : "translate-x-0",
55
+ l.thumb
56
+ )
62
57
  }
63
58
  )
64
- ]
65
- }
66
- );
59
+ }
60
+ ),
61
+ (a || n) && /* @__PURE__ */ i("div", { className: "flex flex-col", children: [
62
+ a && /* @__PURE__ */ t(
63
+ r.Label,
64
+ {
65
+ className: e(
66
+ "text-sm font-medium text-slate-900",
67
+ o && "opacity-50"
68
+ ),
69
+ children: a
70
+ }
71
+ ),
72
+ n && /* @__PURE__ */ t(r.Description, { className: "text-sm text-slate-500", children: n })
73
+ ] })
74
+ ] }) });
67
75
  }
68
76
  export {
69
- T as Tooltip
77
+ p as Toggle
70
78
  };
71
79
  //# sourceMappingURL=index73.js.map