@axtec/components 0.1.0
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.
- package/dist/components/Accordion/Accordion.d.ts +12 -0
- package/dist/components/ActionBar/ActionBar.d.ts +10 -0
- package/dist/components/ActionBar/index.d.ts +1 -0
- package/dist/components/ActionLayout/ActionLayout.d.ts +15 -0
- package/dist/components/ActionLayout/index.d.ts +1 -0
- package/dist/components/Alert/Alert.d.ts +9 -0
- package/dist/components/AlertBox/AlertBox.d.ts +15 -0
- package/dist/components/AlertBox/index.d.ts +1 -0
- package/dist/components/AlertModal/AlertModal.d.ts +14 -0
- package/dist/components/AlertModal/index.d.ts +1 -0
- package/dist/components/AutoComplete/AutoComplete.d.ts +17 -0
- package/dist/components/AutoComplete/index.d.ts +1 -0
- package/dist/components/Avatar/Avatar.d.ts +8 -0
- package/dist/components/AvatarCard/AvatarCard.d.ts +27 -0
- package/dist/components/AvatarCard/index.d.ts +1 -0
- package/dist/components/AverageRating/AverageRating.d.ts +8 -0
- package/dist/components/AverageRating/index.d.ts +1 -0
- package/dist/components/Badge/Badge.d.ts +9 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -0
- package/dist/components/Button/Button.d.ts +9 -0
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +11 -0
- package/dist/components/ButtonGroup/index.d.ts +1 -0
- package/dist/components/Card/Card.d.ts +56 -0
- package/dist/components/Checkbox/Checkbox.d.ts +6 -0
- package/dist/components/ConfirmModal/ConfirmModal.d.ts +18 -0
- package/dist/components/ConfirmModal/index.d.ts +1 -0
- package/dist/components/DatePicker/DatePicker.d.ts +13 -0
- package/dist/components/DatePicker/index.d.ts +1 -0
- package/dist/components/Drawer/Drawer.d.ts +10 -0
- package/dist/components/Drawer/index.d.ts +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +21 -0
- package/dist/components/EmptyData/EmptyData.d.ts +9 -0
- package/dist/components/EmptyData/index.d.ts +1 -0
- package/dist/components/FileUploader/FileUploader.d.ts +10 -0
- package/dist/components/FileUploader/index.d.ts +1 -0
- package/dist/components/IconButton/IconButton.d.ts +7 -0
- package/dist/components/IconButton/index.d.ts +1 -0
- package/dist/components/Image/Image.d.ts +13 -0
- package/dist/components/Image/index.d.ts +1 -0
- package/dist/components/ImageGrid/ImageGrid.d.ts +19 -0
- package/dist/components/ImageGrid/index.d.ts +1 -0
- package/dist/components/ImageUploading/ImageUploading.d.ts +7 -0
- package/dist/components/ImageUploading/index.d.ts +1 -0
- package/dist/components/Input/Input.d.ts +7 -0
- package/dist/components/LinkButton/LinkButton.d.ts +15 -0
- package/dist/components/LinkButton/index.d.ts +1 -0
- package/dist/components/Loader/Loader.d.ts +6 -0
- package/dist/components/LoadingModal/LoadingModal.d.ts +6 -0
- package/dist/components/LoadingModal/index.d.ts +1 -0
- package/dist/components/Logo/AxtecLogo.d.ts +5 -0
- package/dist/components/Logo/MyHomeVaultLogo.d.ts +5 -0
- package/dist/components/Logo/index.d.ts +2 -0
- package/dist/components/LogoLoader/LogoLoader.d.ts +5 -0
- package/dist/components/LogoLoader/index.d.ts +1 -0
- package/dist/components/MenuText/MenuText.d.ts +7 -0
- package/dist/components/MenuText/index.d.ts +1 -0
- package/dist/components/Modal/Modal.d.ts +10 -0
- package/dist/components/MultiItemSelect/MultiItemSelect.d.ts +13 -0
- package/dist/components/MultiItemSelect/index.d.ts +1 -0
- package/dist/components/Notification/Notification.d.ts +11 -0
- package/dist/components/Notification/index.d.ts +1 -0
- package/dist/components/Pagination/Pagination.d.ts +8 -0
- package/dist/components/Panel/Panel.d.ts +40 -0
- package/dist/components/Panel/index.d.ts +1 -0
- package/dist/components/PhotoLibrary/PhotoLibrary.d.ts +14 -0
- package/dist/components/PhotoLibrary/index.d.ts +1 -0
- package/dist/components/Pill/Pill.d.ts +11 -0
- package/dist/components/Pill/index.d.ts +1 -0
- package/dist/components/Progress/Progress.d.ts +10 -0
- package/dist/components/QuickActions/QuickActions.d.ts +8 -0
- package/dist/components/QuickActions/index.d.ts +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +15 -0
- package/dist/components/Rating/Rating.d.ts +11 -0
- package/dist/components/Rating/index.d.ts +1 -0
- package/dist/components/Row/Row.d.ts +10 -0
- package/dist/components/Row/index.d.ts +1 -0
- package/dist/components/ScrollableModal/ScrollableModal.d.ts +17 -0
- package/dist/components/ScrollableModal/index.d.ts +1 -0
- package/dist/components/Select/Select.d.ts +16 -0
- package/dist/components/Skeleton/Skeleton.d.ts +18 -0
- package/dist/components/StatisticsChart/StatisticsChart.d.ts +43 -0
- package/dist/components/StatisticsChart/index.d.ts +1 -0
- package/dist/components/StatisticsLegend/StatisticsLegend.d.ts +22 -0
- package/dist/components/StatisticsLegend/index.d.ts +1 -0
- package/dist/components/StatusIndicator/StatusIndicator.d.ts +21 -0
- package/dist/components/StatusIndicator/index.d.ts +1 -0
- package/dist/components/StepList/StepList.d.ts +8 -0
- package/dist/components/StepList/index.d.ts +1 -0
- package/dist/components/TabView/TabView.d.ts +17 -0
- package/dist/components/TabView/index.d.ts +1 -0
- package/dist/components/Table/Table.d.ts +19 -0
- package/dist/components/Tabs/Tabs.d.ts +16 -0
- package/dist/components/TaskList/TaskList.d.ts +20 -0
- package/dist/components/TaskList/index.d.ts +1 -0
- package/dist/components/Textarea/Textarea.d.ts +7 -0
- package/dist/components/Toggle/Toggle.d.ts +10 -0
- package/dist/components/ToggleButton/ToggleButton.d.ts +8 -0
- package/dist/components/ToggleButton/index.d.ts +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +9 -0
- package/dist/components/TrendIndicator/TrendIndicator.d.ts +8 -0
- package/dist/components/TrendIndicator/index.d.ts +1 -0
- package/dist/components/Typography/CardHeading.d.ts +6 -0
- package/dist/components/Typography/PageHeading.d.ts +6 -0
- package/dist/components/Typography/SectionHeading.d.ts +10 -0
- package/dist/components/Typography/SubsectionHeading.d.ts +6 -0
- package/dist/components/Typography/Text.d.ts +10 -0
- package/dist/components/Typography/index.d.ts +5 -0
- package/dist/components/index.d.ts +62 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +153 -0
- package/dist/index.js.map +1 -0
- package/dist/index10.js +104 -0
- package/dist/index10.js.map +1 -0
- package/dist/index11.js +42 -0
- package/dist/index11.js.map +1 -0
- package/dist/index12.js +82 -0
- package/dist/index12.js.map +1 -0
- package/dist/index13.js +28 -0
- package/dist/index13.js.map +1 -0
- package/dist/index14.js +22 -0
- package/dist/index14.js.map +1 -0
- package/dist/index15.js +42 -0
- package/dist/index15.js.map +1 -0
- package/dist/index16.js +76 -0
- package/dist/index16.js.map +1 -0
- package/dist/index17.js +53 -0
- package/dist/index17.js.map +1 -0
- package/dist/index18.js +16 -0
- package/dist/index18.js.map +1 -0
- package/dist/index19.js +157 -0
- package/dist/index19.js.map +1 -0
- package/dist/index20.js +21 -0
- package/dist/index20.js.map +1 -0
- package/dist/index21.js +49 -0
- package/dist/index21.js.map +1 -0
- package/dist/index22.js +53 -0
- package/dist/index22.js.map +1 -0
- package/dist/index23.js +82 -0
- package/dist/index23.js.map +1 -0
- package/dist/index24.js +223 -0
- package/dist/index24.js.map +1 -0
- package/dist/index25.js +55 -0
- package/dist/index25.js.map +1 -0
- package/dist/index26.js +81 -0
- package/dist/index26.js.map +1 -0
- package/dist/index27.js +27 -0
- package/dist/index27.js.map +1 -0
- package/dist/index28.js +81 -0
- package/dist/index28.js.map +1 -0
- package/dist/index29.js +36 -0
- package/dist/index29.js.map +1 -0
- package/dist/index3.js +9 -0
- package/dist/index3.js.map +1 -0
- package/dist/index30.js +95 -0
- package/dist/index30.js.map +1 -0
- package/dist/index31.js +63 -0
- package/dist/index31.js.map +1 -0
- package/dist/index32.js +48 -0
- package/dist/index32.js.map +1 -0
- package/dist/index33.js +51 -0
- package/dist/index33.js.map +1 -0
- package/dist/index34.js +55 -0
- package/dist/index34.js.map +1 -0
- package/dist/index35.js +31 -0
- package/dist/index35.js.map +1 -0
- package/dist/index36.js +57 -0
- package/dist/index36.js.map +1 -0
- package/dist/index37.js +52 -0
- package/dist/index37.js.map +1 -0
- package/dist/index38.js +16 -0
- package/dist/index38.js.map +1 -0
- package/dist/index39.js +85 -0
- package/dist/index39.js.map +1 -0
- package/dist/index4.js +36 -0
- package/dist/index4.js.map +1 -0
- package/dist/index40.js +52 -0
- package/dist/index40.js.map +1 -0
- package/dist/index41.js +22 -0
- package/dist/index41.js.map +1 -0
- package/dist/index42.js +37 -0
- package/dist/index42.js.map +1 -0
- package/dist/index43.js +18 -0
- package/dist/index43.js.map +1 -0
- package/dist/index44.js +94 -0
- package/dist/index44.js.map +1 -0
- package/dist/index45.js +72 -0
- package/dist/index45.js.map +1 -0
- package/dist/index46.js +125 -0
- package/dist/index46.js.map +1 -0
- package/dist/index47.js +43 -0
- package/dist/index47.js.map +1 -0
- package/dist/index48.js +59 -0
- package/dist/index48.js.map +1 -0
- package/dist/index49.js +19 -0
- package/dist/index49.js.map +1 -0
- package/dist/index5.js +24 -0
- package/dist/index5.js.map +1 -0
- package/dist/index50.js +68 -0
- package/dist/index50.js.map +1 -0
- package/dist/index51.js +57 -0
- package/dist/index51.js.map +1 -0
- package/dist/index52.js +40 -0
- package/dist/index52.js.map +1 -0
- package/dist/index53.js +69 -0
- package/dist/index53.js.map +1 -0
- package/dist/index54.js +25 -0
- package/dist/index54.js.map +1 -0
- package/dist/index55.js +107 -0
- package/dist/index55.js.map +1 -0
- package/dist/index56.js +71 -0
- package/dist/index56.js.map +1 -0
- package/dist/index57.js +239 -0
- package/dist/index57.js.map +1 -0
- package/dist/index58.js +105 -0
- package/dist/index58.js.map +1 -0
- package/dist/index59.js +39 -0
- package/dist/index59.js.map +1 -0
- package/dist/index6.js +47 -0
- package/dist/index6.js.map +1 -0
- package/dist/index60.js +21 -0
- package/dist/index60.js.map +1 -0
- package/dist/index61.js +63 -0
- package/dist/index61.js.map +1 -0
- package/dist/index62.js +64 -0
- package/dist/index62.js.map +1 -0
- package/dist/index63.js +78 -0
- package/dist/index63.js.map +1 -0
- package/dist/index64.js +112 -0
- package/dist/index64.js.map +1 -0
- package/dist/index65.js +43 -0
- package/dist/index65.js.map +1 -0
- package/dist/index66.js +51 -0
- package/dist/index66.js.map +1 -0
- package/dist/index67.js +79 -0
- package/dist/index67.js.map +1 -0
- package/dist/index68.js +57 -0
- package/dist/index68.js.map +1 -0
- package/dist/index69.js +71 -0
- package/dist/index69.js.map +1 -0
- package/dist/index7.js +80 -0
- package/dist/index7.js.map +1 -0
- package/dist/index70.js +39 -0
- package/dist/index70.js.map +1 -0
- package/dist/index71.js +17 -0
- package/dist/index71.js.map +1 -0
- package/dist/index72.js +2267 -0
- package/dist/index72.js.map +1 -0
- package/dist/index8.js +82 -0
- package/dist/index8.js.map +1 -0
- package/dist/index9.js +97 -0
- package/dist/index9.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/logos/axtec-logo.png +0 -0
- package/dist/logos/mhv-icon.svg +5 -0
- package/dist/logos/mhv-logo.png +0 -0
- package/dist/logos/mhv-logo.svg +23 -0
- package/package.json +63 -0
package/dist/index62.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { cn as t } from "./index3.js";
|
|
3
|
+
function N({
|
|
4
|
+
columns: l,
|
|
5
|
+
data: h,
|
|
6
|
+
keyExtractor: p,
|
|
7
|
+
striped: i = !1,
|
|
8
|
+
hoverable: b = !0,
|
|
9
|
+
compact: s = !1,
|
|
10
|
+
className: n,
|
|
11
|
+
emptyMessage: x = "No data available"
|
|
12
|
+
}) {
|
|
13
|
+
return /* @__PURE__ */ e("div", { className: t("overflow-x-auto", n), children: /* @__PURE__ */ o("table", { className: "w-full text-left", children: [
|
|
14
|
+
/* @__PURE__ */ e("thead", { children: /* @__PURE__ */ e("tr", { className: "border-b border-slate-200 bg-slate-50", children: l.map((a) => /* @__PURE__ */ e(
|
|
15
|
+
"th",
|
|
16
|
+
{
|
|
17
|
+
className: t(
|
|
18
|
+
"font-semibold text-slate-700 text-sm",
|
|
19
|
+
s ? "px-4 py-2" : "px-6 py-3",
|
|
20
|
+
a.headerClassName
|
|
21
|
+
),
|
|
22
|
+
children: a.header
|
|
23
|
+
},
|
|
24
|
+
a.key
|
|
25
|
+
)) }) }),
|
|
26
|
+
/* @__PURE__ */ e("tbody", { children: h.length === 0 ? /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e(
|
|
27
|
+
"td",
|
|
28
|
+
{
|
|
29
|
+
colSpan: l.length,
|
|
30
|
+
className: t(
|
|
31
|
+
"text-center text-slate-500",
|
|
32
|
+
s ? "px-4 py-8" : "px-6 py-12"
|
|
33
|
+
),
|
|
34
|
+
children: x
|
|
35
|
+
}
|
|
36
|
+
) }) : h.map((a, d) => /* @__PURE__ */ e(
|
|
37
|
+
"tr",
|
|
38
|
+
{
|
|
39
|
+
className: t(
|
|
40
|
+
"border-b border-slate-100 transition-colors duration-150",
|
|
41
|
+
i && d % 2 === 1 && "bg-slate-50",
|
|
42
|
+
b && "hover:bg-slate-50"
|
|
43
|
+
),
|
|
44
|
+
children: l.map((r) => /* @__PURE__ */ e(
|
|
45
|
+
"td",
|
|
46
|
+
{
|
|
47
|
+
className: t(
|
|
48
|
+
"text-slate-900",
|
|
49
|
+
s ? "px-4 py-2" : "px-6 py-4",
|
|
50
|
+
r.className
|
|
51
|
+
),
|
|
52
|
+
children: r.render ? r.render(a, d) : a[r.key]
|
|
53
|
+
},
|
|
54
|
+
r.key
|
|
55
|
+
))
|
|
56
|
+
},
|
|
57
|
+
p(a, d)
|
|
58
|
+
)) })
|
|
59
|
+
] }) });
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
N as Table
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=index62.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index62.js","sources":["../src/components/Table/Table.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ReactNode } from 'react'\n\nexport interface TableColumn<T> {\n key: string\n header: string\n render?: (item: T, index: number) => ReactNode\n className?: string\n headerClassName?: string\n}\n\nexport interface TableProps<T> {\n columns: TableColumn<T>[]\n data: T[]\n keyExtractor: (item: T, index: number) => string | number\n striped?: boolean\n hoverable?: boolean\n compact?: boolean\n className?: string\n emptyMessage?: string\n}\n\nexport function Table<T>({\n columns,\n data,\n keyExtractor,\n striped = false,\n hoverable = true,\n compact = false,\n className,\n emptyMessage = 'No data available',\n}: TableProps<T>) {\n return (\n <div className={cn('overflow-x-auto', className)}>\n <table className=\"w-full text-left\">\n <thead>\n <tr className=\"border-b border-slate-200 bg-slate-50\">\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n 'font-semibold text-slate-700 text-sm',\n compact ? 'px-4 py-2' : 'px-6 py-3',\n column.headerClassName\n )}\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length}\n className={cn(\n 'text-center text-slate-500',\n compact ? 'px-4 py-8' : 'px-6 py-12'\n )}\n >\n {emptyMessage}\n </td>\n </tr>\n ) : (\n data.map((item, index) => (\n <tr\n key={keyExtractor(item, index)}\n className={cn(\n 'border-b border-slate-100 transition-colors duration-150',\n striped && index % 2 === 1 && 'bg-slate-50',\n hoverable && 'hover:bg-slate-50'\n )}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className={cn(\n 'text-slate-900',\n compact ? 'px-4 py-2' : 'px-6 py-4',\n column.className\n )}\n >\n {column.render\n ? column.render(item, index)\n : (item as Record<string, unknown>)[column.key] as ReactNode}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["Table","columns","data","keyExtractor","striped","hoverable","compact","className","emptyMessage","jsx","cn","jsxs","column","item","index"],"mappings":";;AAsBO,SAASA,EAAS;AAAA,EACvB,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,cAAAC,IAAe;AACjB,GAAkB;AAChB,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAG,mBAAmBH,CAAS,GAC7C,UAAA,gBAAAI,EAAC,SAAA,EAAM,WAAU,oBACf,UAAA;AAAA,IAAA,gBAAAF,EAAC,SAAA,EACC,4BAAC,MAAA,EAAG,WAAU,yCACX,UAAAR,EAAQ,IAAI,CAACW,MACZ,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAWC;AAAA,UACT;AAAA,UACAJ,IAAU,cAAc;AAAA,UACxBM,EAAO;AAAA,QAAA;AAAA,QAGR,UAAAA,EAAO;AAAA,MAAA;AAAA,MAPHA,EAAO;AAAA,IAAA,CASf,GACH,EAAA,CACF;AAAA,sBACC,SAAA,EACE,UAAAV,EAAK,WAAW,sBACd,MAAA,EACC,UAAA,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAASR,EAAQ;AAAA,QACjB,WAAWS;AAAA,UACT;AAAA,UACAJ,IAAU,cAAc;AAAA,QAAA;AAAA,QAGzB,UAAAE;AAAA,MAAA;AAAA,IAAA,GAEL,IAEAN,EAAK,IAAI,CAACW,GAAMC,MACd,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAWC;AAAA,UACT;AAAA,UACAN,KAAWU,IAAQ,MAAM,KAAK;AAAA,UAC9BT,KAAa;AAAA,QAAA;AAAA,QAGd,UAAAJ,EAAQ,IAAI,CAACW,MACZ,gBAAAH;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWC;AAAA,cACT;AAAA,cACAJ,IAAU,cAAc;AAAA,cACxBM,EAAO;AAAA,YAAA;AAAA,YAGR,UAAAA,EAAO,SACJA,EAAO,OAAOC,GAAMC,CAAK,IACxBD,EAAiCD,EAAO,GAAG;AAAA,UAAA;AAAA,UAT3CA,EAAO;AAAA,QAAA,CAWf;AAAA,MAAA;AAAA,MApBIT,EAAaU,GAAMC,CAAK;AAAA,IAAA,CAsBhC,EAAA,CAEL;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
package/dist/index63.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsxs as c, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { useState as u } from "react";
|
|
3
|
+
import { TabGroup as f, TabList as m, Tab as x, TabPanels as g, TabPanel as h } from "@headlessui/react";
|
|
4
|
+
import { cn as a } from "./index3.js";
|
|
5
|
+
function j({
|
|
6
|
+
items: t,
|
|
7
|
+
defaultIndex: i = 0,
|
|
8
|
+
onChange: l,
|
|
9
|
+
variant: r = "underline",
|
|
10
|
+
fullWidth: d = !1,
|
|
11
|
+
className: n
|
|
12
|
+
}) {
|
|
13
|
+
const [b, p] = u(i);
|
|
14
|
+
return /* @__PURE__ */ c(
|
|
15
|
+
f,
|
|
16
|
+
{
|
|
17
|
+
selectedIndex: b,
|
|
18
|
+
onChange: (e) => {
|
|
19
|
+
p(e), l == null || l(e);
|
|
20
|
+
},
|
|
21
|
+
className: n,
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ s(
|
|
24
|
+
m,
|
|
25
|
+
{
|
|
26
|
+
className: a(
|
|
27
|
+
"flex",
|
|
28
|
+
r === "underline" && "border-b border-slate-200 gap-0",
|
|
29
|
+
r === "pills" && "gap-2",
|
|
30
|
+
r === "boxed" && "bg-slate-100 p-1 rounded-lg gap-1"
|
|
31
|
+
),
|
|
32
|
+
children: t.map((e) => /* @__PURE__ */ s(
|
|
33
|
+
x,
|
|
34
|
+
{
|
|
35
|
+
disabled: e.disabled,
|
|
36
|
+
className: ({ selected: o }) => a(
|
|
37
|
+
"font-medium text-sm transition-colors duration-200",
|
|
38
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2",
|
|
39
|
+
d && "flex-1",
|
|
40
|
+
e.disabled && "opacity-50 cursor-not-allowed",
|
|
41
|
+
// Underline variant
|
|
42
|
+
r === "underline" && [
|
|
43
|
+
"px-4 py-3 -mb-px border-b-2",
|
|
44
|
+
o ? "border-primary-500 text-primary-600" : "border-transparent text-slate-500 hover:text-slate-700 hover:border-slate-300"
|
|
45
|
+
],
|
|
46
|
+
// Pills variant
|
|
47
|
+
r === "pills" && [
|
|
48
|
+
"px-4 py-2 rounded-lg",
|
|
49
|
+
o ? "bg-primary-500 text-white" : "text-slate-600 hover:bg-slate-100"
|
|
50
|
+
],
|
|
51
|
+
// Boxed variant
|
|
52
|
+
r === "boxed" && [
|
|
53
|
+
"px-4 py-2 rounded-md",
|
|
54
|
+
o ? "bg-white text-slate-900 shadow-sm" : "text-slate-600 hover:text-slate-900"
|
|
55
|
+
]
|
|
56
|
+
),
|
|
57
|
+
children: e.label
|
|
58
|
+
},
|
|
59
|
+
e.key
|
|
60
|
+
))
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
/* @__PURE__ */ s(g, { className: "mt-4", children: t.map((e) => /* @__PURE__ */ s(
|
|
64
|
+
h,
|
|
65
|
+
{
|
|
66
|
+
className: "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 rounded-lg",
|
|
67
|
+
children: e.content
|
|
68
|
+
},
|
|
69
|
+
e.key
|
|
70
|
+
)) })
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
j as Tabs
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=index63.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index63.js","sources":["../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'\nimport { cn } from '@/lib/utils'\nimport type { ReactNode } from 'react'\n\nexport interface TabItem {\n key: string\n label: string\n content: ReactNode\n disabled?: boolean\n}\n\nexport interface TabsProps {\n items: TabItem[]\n defaultIndex?: number\n onChange?: (index: number) => void\n variant?: 'underline' | 'pills' | 'boxed'\n fullWidth?: boolean\n className?: string\n}\n\nexport function Tabs({\n items,\n defaultIndex = 0,\n onChange,\n variant = 'underline',\n fullWidth = false,\n className,\n}: TabsProps) {\n const [selectedIndex, setSelectedIndex] = useState(defaultIndex)\n\n const handleChange = (index: number) => {\n setSelectedIndex(index)\n onChange?.(index)\n }\n\n return (\n <TabGroup\n selectedIndex={selectedIndex}\n onChange={handleChange}\n className={className}\n >\n <TabList\n className={cn(\n 'flex',\n variant === 'underline' && 'border-b border-slate-200 gap-0',\n variant === 'pills' && 'gap-2',\n variant === 'boxed' && 'bg-slate-100 p-1 rounded-lg gap-1'\n )}\n >\n {items.map((item) => (\n <Tab\n key={item.key}\n disabled={item.disabled}\n className={({ selected }) =>\n cn(\n 'font-medium text-sm transition-colors duration-200',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2',\n fullWidth && 'flex-1',\n item.disabled && 'opacity-50 cursor-not-allowed',\n\n // Underline variant\n variant === 'underline' && [\n 'px-4 py-3 -mb-px border-b-2',\n selected\n ? 'border-primary-500 text-primary-600'\n : 'border-transparent text-slate-500 hover:text-slate-700 hover:border-slate-300',\n ],\n\n // Pills variant\n variant === 'pills' && [\n 'px-4 py-2 rounded-lg',\n selected\n ? 'bg-primary-500 text-white'\n : 'text-slate-600 hover:bg-slate-100',\n ],\n\n // Boxed variant\n variant === 'boxed' && [\n 'px-4 py-2 rounded-md',\n selected\n ? 'bg-white text-slate-900 shadow-sm'\n : 'text-slate-600 hover:text-slate-900',\n ]\n )\n }\n >\n {item.label}\n </Tab>\n ))}\n </TabList>\n <TabPanels className=\"mt-4\">\n {items.map((item) => (\n <TabPanel\n key={item.key}\n className=\"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 rounded-lg\"\n >\n {item.content}\n </TabPanel>\n ))}\n </TabPanels>\n </TabGroup>\n )\n}\n"],"names":["Tabs","items","defaultIndex","onChange","variant","fullWidth","className","selectedIndex","setSelectedIndex","useState","jsxs","TabGroup","index","jsx","TabList","cn","item","Tab","selected","TabPanels","TabPanel"],"mappings":";;;;AAqBO,SAASA,EAAK;AAAA,EACnB,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,WAAAC;AACF,GAAc;AACZ,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAASP,CAAY;AAO/D,SACE,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAAJ;AAAA,MACA,UARiB,CAACK,MAAkB;AACtC,QAAAJ,EAAiBI,CAAK,GACtBT,KAAA,QAAAA,EAAWS;AAAA,MACb;AAAA,MAMI,WAAAN;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAO;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACAX,MAAY,eAAe;AAAA,cAC3BA,MAAY,WAAW;AAAA,cACvBA,MAAY,WAAW;AAAA,YAAA;AAAA,YAGxB,UAAAH,EAAM,IAAI,CAACe,MACV,gBAAAH;AAAA,cAACI;AAAA,cAAA;AAAA,gBAEC,UAAUD,EAAK;AAAA,gBACf,WAAW,CAAC,EAAE,UAAAE,EAAA,MACZH;AAAA,kBACE;AAAA,kBACA;AAAA,kBACAV,KAAa;AAAA,kBACbW,EAAK,YAAY;AAAA;AAAA,kBAGjBZ,MAAY,eAAe;AAAA,oBACzB;AAAA,oBACAc,IACI,wCACA;AAAA,kBAAA;AAAA;AAAA,kBAINd,MAAY,WAAW;AAAA,oBACrB;AAAA,oBACAc,IACI,8BACA;AAAA,kBAAA;AAAA;AAAA,kBAINd,MAAY,WAAW;AAAA,oBACrB;AAAA,oBACAc,IACI,sCACA;AAAA,kBAAA;AAAA,gBACN;AAAA,gBAIH,UAAAF,EAAK;AAAA,cAAA;AAAA,cAnCDA,EAAK;AAAA,YAAA,CAqCb;AAAA,UAAA;AAAA,QAAA;AAAA,0BAEFG,GAAA,EAAU,WAAU,QAClB,UAAAlB,EAAM,IAAI,CAACe,MACV,gBAAAH;AAAA,UAACO;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YAET,UAAAJ,EAAK;AAAA,UAAA;AAAA,UAHDA,EAAK;AAAA,QAAA,CAKb,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
package/dist/index64.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
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 "./index45.js";
|
|
4
|
+
import { Badge as h } from "./index15.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: [
|
|
22
|
+
/* @__PURE__ */ r(
|
|
23
|
+
D,
|
|
24
|
+
{
|
|
25
|
+
badge: m > 0 ? /* @__PURE__ */ s(h, { variant: "danger", size: "sm", children: [
|
|
26
|
+
m,
|
|
27
|
+
" overdue"
|
|
28
|
+
] }) : void 0,
|
|
29
|
+
children: a
|
|
30
|
+
}
|
|
31
|
+
),
|
|
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
|
+
/* @__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",
|
|
91
|
+
{
|
|
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"
|
|
98
|
+
),
|
|
99
|
+
children: [
|
|
100
|
+
"View all ",
|
|
101
|
+
l.length,
|
|
102
|
+
" tasks"
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
] })
|
|
107
|
+
] });
|
|
108
|
+
};
|
|
109
|
+
export {
|
|
110
|
+
z as TaskList
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=index64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index64.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 <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/index65.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { cn as s } from "./index3.js";
|
|
3
|
+
const n = {
|
|
4
|
+
body: "text-base",
|
|
5
|
+
"body-sm": "text-sm",
|
|
6
|
+
caption: "text-xs",
|
|
7
|
+
lead: "text-lg"
|
|
8
|
+
}, d = {
|
|
9
|
+
default: "text-slate-900",
|
|
10
|
+
muted: "text-slate-500",
|
|
11
|
+
primary: "text-primary-600",
|
|
12
|
+
danger: "text-red-600"
|
|
13
|
+
}, i = {
|
|
14
|
+
normal: "font-normal",
|
|
15
|
+
medium: "font-medium",
|
|
16
|
+
semibold: "font-semibold",
|
|
17
|
+
bold: "font-bold"
|
|
18
|
+
};
|
|
19
|
+
function b({
|
|
20
|
+
children: t,
|
|
21
|
+
variant: e = "body",
|
|
22
|
+
color: o = "default",
|
|
23
|
+
weight: m = "normal",
|
|
24
|
+
as: a = "p",
|
|
25
|
+
className: l
|
|
26
|
+
}) {
|
|
27
|
+
return /* @__PURE__ */ r(
|
|
28
|
+
a,
|
|
29
|
+
{
|
|
30
|
+
className: s(
|
|
31
|
+
n[e],
|
|
32
|
+
d[o],
|
|
33
|
+
i[m],
|
|
34
|
+
l
|
|
35
|
+
),
|
|
36
|
+
children: t
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
b as Text
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=index65.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index65.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'\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}\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: Component = 'p',\n className,\n}: TextProps) {\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","colorStyles","weightStyles","Text","children","variant","color","weight","Component","className","jsx","cn"],"mappings":";;AAYA,MAAMA,IAAgB;AAAA,EACpB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR,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,IAAIC,IAAY;AAAA,EAChB,WAAAC;AACF,GAAc;AACZ,SACE,gBAAAC;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,WAAWG;AAAA,QACTX,EAAcK,CAAO;AAAA,QACrBJ,EAAYK,CAAK;AAAA,QACjBJ,EAAaK,CAAM;AAAA,QACnBE;AAAA,MAAA;AAAA,MAGD,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
package/dist/index66.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
),
|
|
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";
|
|
48
|
+
export {
|
|
49
|
+
f as Textarea
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=index66.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index66.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/index67.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
}
|
|
20
|
+
};
|
|
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
|
|
29
|
+
}) {
|
|
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
|
+
}
|
|
71
|
+
),
|
|
72
|
+
n && /* @__PURE__ */ t(r.Description, { className: "text-sm text-slate-500", children: n })
|
|
73
|
+
] })
|
|
74
|
+
] }) });
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
p as Toggle
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=index67.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index67.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;"}
|
package/dist/index68.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
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
|
|
20
|
+
),
|
|
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
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
f as ToggleButton
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=index68.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index68.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;"}
|
package/dist/index69.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
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"
|
|
14
|
+
};
|
|
15
|
+
function T({
|
|
16
|
+
content: p,
|
|
17
|
+
children: u,
|
|
18
|
+
position: t = "top",
|
|
19
|
+
delay: b = 200,
|
|
20
|
+
className: d
|
|
21
|
+
}) {
|
|
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",
|
|
40
|
+
{
|
|
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
|
+
]
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
T as Tooltip
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=index69.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index69.js","sources":["../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface TooltipProps {\n content: ReactNode\n children: ReactNode\n position?: 'top' | 'bottom' | 'left' | 'right'\n delay?: number\n className?: string\n}\n\nconst positionStyles = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n}\n\nconst arrowStyles = {\n top: 'top-full left-1/2 -translate-x-1/2 border-t-slate-800 border-x-transparent border-b-transparent',\n bottom: 'bottom-full left-1/2 -translate-x-1/2 border-b-slate-800 border-x-transparent border-t-transparent',\n left: 'left-full top-1/2 -translate-y-1/2 border-l-slate-800 border-y-transparent border-r-transparent',\n right: 'right-full top-1/2 -translate-y-1/2 border-r-slate-800 border-y-transparent border-l-transparent',\n}\n\nexport function Tooltip({\n content,\n children,\n position = 'top',\n delay = 200,\n className,\n}: TooltipProps) {\n const [isVisible, setIsVisible] = useState(false)\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null)\n\n const showTooltip = () => {\n const id = setTimeout(() => setIsVisible(true), delay)\n setTimeoutId(id)\n }\n\n const hideTooltip = () => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n setTimeoutId(null)\n }\n setIsVisible(false)\n }\n\n return (\n <div\n className=\"relative inline-flex\"\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n onFocus={showTooltip}\n onBlur={hideTooltip}\n >\n {children}\n {isVisible && (\n <div\n className={cn(\n 'absolute z-50 px-3 py-1.5',\n 'bg-slate-800 text-white text-sm rounded-lg',\n 'whitespace-nowrap',\n 'animate-in fade-in-0 zoom-in-95 duration-150',\n positionStyles[position],\n className\n )}\n role=\"tooltip\"\n >\n {content}\n <span\n className={cn(\n 'absolute w-0 h-0 border-4',\n arrowStyles[position]\n )}\n />\n </div>\n )}\n </div>\n )\n}\n"],"names":["positionStyles","arrowStyles","Tooltip","content","children","position","delay","className","isVisible","setIsVisible","useState","timeoutId","setTimeoutId","showTooltip","id","hideTooltip","jsxs","cn","jsx"],"mappings":";;;AAWA,MAAMA,IAAiB;AAAA,EACrB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT,GAEMC,IAAc;AAAA,EAClB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT;AAEO,SAASC,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,WAAAC;AACF,GAAiB;AACf,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAA+C,IAAI,GAE/EG,IAAc,MAAM;AACxB,UAAMC,IAAK,WAAW,MAAML,EAAa,EAAI,GAAGH,CAAK;AACrD,IAAAM,EAAaE,CAAE;AAAA,EACjB,GAEMC,IAAc,MAAM;AACxB,IAAIJ,MACF,aAAaA,CAAS,GACtBC,EAAa,IAAI,IAEnBH,EAAa,EAAK;AAAA,EACpB;AAEA,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,cAAcH;AAAA,MACd,cAAcE;AAAA,MACd,SAASF;AAAA,MACT,QAAQE;AAAA,MAEP,UAAA;AAAA,QAAAX;AAAA,QACAI,KACC,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACAjB,EAAeK,CAAQ;AAAA,cACvBE;AAAA,YAAA;AAAA,YAEF,MAAK;AAAA,YAEJ,UAAA;AAAA,cAAAJ;AAAA,cACD,gBAAAe;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWD;AAAA,oBACT;AAAA,oBACAhB,EAAYI,CAAQ;AAAA,kBAAA;AAAA,gBACtB;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|