@mdigital_ui/ui 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/README.md +296 -0
- package/dist/accordion/index.js +5 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/badge/index.js +5 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/button/index.js +6 -0
- package/dist/button/index.js.map +1 -0
- package/dist/card/index.js +4 -0
- package/dist/card/index.js.map +1 -0
- package/dist/carousel/index.js +3 -0
- package/dist/carousel/index.js.map +1 -0
- package/dist/cascader/index.js +4 -0
- package/dist/cascader/index.js.map +1 -0
- package/dist/chart/index.js +4 -0
- package/dist/chart/index.js.map +1 -0
- package/dist/checkbox/index.js +5 -0
- package/dist/checkbox/index.js.map +1 -0
- package/dist/checkbox-group/index.js +4 -0
- package/dist/checkbox-group/index.js.map +1 -0
- package/dist/chunk-2JGAYDZR.js +181 -0
- package/dist/chunk-2JGAYDZR.js.map +1 -0
- package/dist/chunk-3PFA3YG6.js +228 -0
- package/dist/chunk-3PFA3YG6.js.map +1 -0
- package/dist/chunk-4OMLQCUV.js +96 -0
- package/dist/chunk-4OMLQCUV.js.map +1 -0
- package/dist/chunk-4P5EMRFI.js +298 -0
- package/dist/chunk-4P5EMRFI.js.map +1 -0
- package/dist/chunk-5UEWVFF6.js +212 -0
- package/dist/chunk-5UEWVFF6.js.map +1 -0
- package/dist/chunk-5VCGW53O.js +332 -0
- package/dist/chunk-5VCGW53O.js.map +1 -0
- package/dist/chunk-75XESYGN.js +49 -0
- package/dist/chunk-75XESYGN.js.map +1 -0
- package/dist/chunk-7AEGBABZ.js +1102 -0
- package/dist/chunk-7AEGBABZ.js.map +1 -0
- package/dist/chunk-AOITJRSV.js +134 -0
- package/dist/chunk-AOITJRSV.js.map +1 -0
- package/dist/chunk-AWPKZYHT.js +152 -0
- package/dist/chunk-AWPKZYHT.js.map +1 -0
- package/dist/chunk-BNILRB4T.js +37 -0
- package/dist/chunk-BNILRB4T.js.map +1 -0
- package/dist/chunk-BP434VYV.js +448 -0
- package/dist/chunk-BP434VYV.js.map +1 -0
- package/dist/chunk-C7SXY3ZV.js +65 -0
- package/dist/chunk-C7SXY3ZV.js.map +1 -0
- package/dist/chunk-CLLQDCDR.js +560 -0
- package/dist/chunk-CLLQDCDR.js.map +1 -0
- package/dist/chunk-CWHFK7ZC.js +128 -0
- package/dist/chunk-CWHFK7ZC.js.map +1 -0
- package/dist/chunk-D3JWPGCA.js +123 -0
- package/dist/chunk-D3JWPGCA.js.map +1 -0
- package/dist/chunk-DOKTHDG3.js +55 -0
- package/dist/chunk-DOKTHDG3.js.map +1 -0
- package/dist/chunk-DPOSWW22.js +126 -0
- package/dist/chunk-DPOSWW22.js.map +1 -0
- package/dist/chunk-E2CYDDYC.js +39 -0
- package/dist/chunk-E2CYDDYC.js.map +1 -0
- package/dist/chunk-EYTOKUBM.js +401 -0
- package/dist/chunk-EYTOKUBM.js.map +1 -0
- package/dist/chunk-FGWSUPVW.js +356 -0
- package/dist/chunk-FGWSUPVW.js.map +1 -0
- package/dist/chunk-FPOXTCYV.js +166 -0
- package/dist/chunk-FPOXTCYV.js.map +1 -0
- package/dist/chunk-FTJOSVTY.js +104 -0
- package/dist/chunk-FTJOSVTY.js.map +1 -0
- package/dist/chunk-FYHQDFKE.js +164 -0
- package/dist/chunk-FYHQDFKE.js.map +1 -0
- package/dist/chunk-H2HIBD5Y.js +158 -0
- package/dist/chunk-H2HIBD5Y.js.map +1 -0
- package/dist/chunk-J3G5WWGR.js +53 -0
- package/dist/chunk-J3G5WWGR.js.map +1 -0
- package/dist/chunk-JZCHZ4B3.js +487 -0
- package/dist/chunk-JZCHZ4B3.js.map +1 -0
- package/dist/chunk-KBCBVH7B.js +51 -0
- package/dist/chunk-KBCBVH7B.js.map +1 -0
- package/dist/chunk-KNQ7UQ2W.js +143 -0
- package/dist/chunk-KNQ7UQ2W.js.map +1 -0
- package/dist/chunk-KTBPIEP2.js +102 -0
- package/dist/chunk-KTBPIEP2.js.map +1 -0
- package/dist/chunk-L3SP7GHC.js +1023 -0
- package/dist/chunk-L3SP7GHC.js.map +1 -0
- package/dist/chunk-LBJG2UWT.js +100 -0
- package/dist/chunk-LBJG2UWT.js.map +1 -0
- package/dist/chunk-MLDX3Z67.js +470 -0
- package/dist/chunk-MLDX3Z67.js.map +1 -0
- package/dist/chunk-NNSS366W.js +331 -0
- package/dist/chunk-NNSS366W.js.map +1 -0
- package/dist/chunk-OQANRZPV.js +197 -0
- package/dist/chunk-OQANRZPV.js.map +1 -0
- package/dist/chunk-OW5A5IIF.js +175 -0
- package/dist/chunk-OW5A5IIF.js.map +1 -0
- package/dist/chunk-R225A5II.js +187 -0
- package/dist/chunk-R225A5II.js.map +1 -0
- package/dist/chunk-ROR4E6IE.js +119 -0
- package/dist/chunk-ROR4E6IE.js.map +1 -0
- package/dist/chunk-RPAQAZTI.js +54 -0
- package/dist/chunk-RPAQAZTI.js.map +1 -0
- package/dist/chunk-RQBXZKTH.js +452 -0
- package/dist/chunk-RQBXZKTH.js.map +1 -0
- package/dist/chunk-S5XJXU52.js +178 -0
- package/dist/chunk-S5XJXU52.js.map +1 -0
- package/dist/chunk-SAVE5ACL.js +324 -0
- package/dist/chunk-SAVE5ACL.js.map +1 -0
- package/dist/chunk-SERJ3TZE.js +640 -0
- package/dist/chunk-SERJ3TZE.js.map +1 -0
- package/dist/chunk-SK5ECBBK.js +175 -0
- package/dist/chunk-SK5ECBBK.js.map +1 -0
- package/dist/chunk-SOV4PE3P.js +218 -0
- package/dist/chunk-SOV4PE3P.js.map +1 -0
- package/dist/chunk-W7BQYIXF.js +687 -0
- package/dist/chunk-W7BQYIXF.js.map +1 -0
- package/dist/chunk-XMAH5PDW.js +59 -0
- package/dist/chunk-XMAH5PDW.js.map +1 -0
- package/dist/chunk-XOBGEMQY.js +94 -0
- package/dist/chunk-XOBGEMQY.js.map +1 -0
- package/dist/chunk-YNNAOXU5.js +57 -0
- package/dist/chunk-YNNAOXU5.js.map +1 -0
- package/dist/chunk-YZVSDRJD.js +253 -0
- package/dist/chunk-YZVSDRJD.js.map +1 -0
- package/dist/collapse/index.js +4 -0
- package/dist/collapse/index.js.map +1 -0
- package/dist/command/index.js +5 -0
- package/dist/command/index.js.map +1 -0
- package/dist/date-picker/index.js +5 -0
- package/dist/date-picker/index.js.map +1 -0
- package/dist/descriptions/index.js +4 -0
- package/dist/descriptions/index.js.map +1 -0
- package/dist/drawer/index.js +4 -0
- package/dist/drawer/index.js.map +1 -0
- package/dist/dropdown/index.js +5 -0
- package/dist/dropdown/index.js.map +1 -0
- package/dist/empty/index.js +4 -0
- package/dist/empty/index.js.map +1 -0
- package/dist/fetching-overlay/index.js +5 -0
- package/dist/fetching-overlay/index.js.map +1 -0
- package/dist/image/index.js +4 -0
- package/dist/image/index.js.map +1 -0
- package/dist/index.d.ts +2672 -0
- package/dist/index.js +976 -0
- package/dist/index.js.map +1 -0
- package/dist/input/index.js +5 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input-group/index.js +4 -0
- package/dist/input-group/index.js.map +1 -0
- package/dist/input-otp/index.js +4 -0
- package/dist/input-otp/index.js.map +1 -0
- package/dist/input-password/index.js +6 -0
- package/dist/input-password/index.js.map +1 -0
- package/dist/kbd/index.js +4 -0
- package/dist/kbd/index.js.map +1 -0
- package/dist/modal/index.js +4 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/multi-select/index.js +5 -0
- package/dist/multi-select/index.js.map +1 -0
- package/dist/notification/index.js +4 -0
- package/dist/notification/index.js.map +1 -0
- package/dist/pagination/index.js +4 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/popover/index.js +4 -0
- package/dist/popover/index.js.map +1 -0
- package/dist/progress/index.js +4 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/radio/index.js +4 -0
- package/dist/radio/index.js.map +1 -0
- package/dist/radio-group/index.js +4 -0
- package/dist/radio-group/index.js.map +1 -0
- package/dist/rating/index.js +4 -0
- package/dist/rating/index.js.map +1 -0
- package/dist/ribbon/index.js +4 -0
- package/dist/ribbon/index.js.map +1 -0
- package/dist/select/index.js +6 -0
- package/dist/select/index.js.map +1 -0
- package/dist/skeleton/index.js +4 -0
- package/dist/skeleton/index.js.map +1 -0
- package/dist/slider/index.js +4 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/spinner/index.js +4 -0
- package/dist/spinner/index.js.map +1 -0
- package/dist/stepper/index.js +4 -0
- package/dist/stepper/index.js.map +1 -0
- package/dist/styles/base.css +161 -0
- package/dist/styles/global.css +633 -0
- package/dist/styles/themes/dark.css +84 -0
- package/dist/styles/themes/light.css +84 -0
- package/dist/switch/index.js +4 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/table/index.js +12 -0
- package/dist/table/index.js.map +1 -0
- package/dist/tabs/index.js +5 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/textarea/index.js +4 -0
- package/dist/textarea/index.js.map +1 -0
- package/dist/toggle/index.js +4 -0
- package/dist/toggle/index.js.map +1 -0
- package/dist/toggle-group/index.js +4 -0
- package/dist/toggle-group/index.js.map +1 -0
- package/dist/tooltip/index.js +4 -0
- package/dist/tooltip/index.js.map +1 -0
- package/dist/transfer/index.js +6 -0
- package/dist/transfer/index.js.map +1 -0
- package/dist/tree/index.js +4 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree-select/index.js +6 -0
- package/dist/tree-select/index.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { getAccordionColorClass } from './chunk-5UEWVFF6.js';
|
|
2
|
+
import { cn, iconSizes } from './chunk-YNNAOXU5.js';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { ChevronDown } from 'lucide-react';
|
|
5
|
+
import React, { useState } from 'react';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var accordionHeaderVariants = cva(
|
|
9
|
+
"flex items-center justify-between w-full text-left font-medium transition-all cursor-pointer",
|
|
10
|
+
{
|
|
11
|
+
variants: {
|
|
12
|
+
size: {
|
|
13
|
+
xs: "px-3 py-2 text-xs",
|
|
14
|
+
sm: "px-4 py-2.5 text-sm",
|
|
15
|
+
md: "px-5 py-3 text-base",
|
|
16
|
+
lg: "px-6 py-4 text-lg"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
size: "md"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
var accordionContentVariants = cva("overflow-hidden transition-all", {
|
|
25
|
+
variants: {
|
|
26
|
+
size: {
|
|
27
|
+
xs: "px-3 pb-2 text-xs",
|
|
28
|
+
sm: "px-4 pb-2.5 text-sm",
|
|
29
|
+
md: "px-5 pb-3 text-base",
|
|
30
|
+
lg: "px-6 pb-4 text-lg"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
size: "md"
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var Accordion = React.memo(
|
|
38
|
+
({
|
|
39
|
+
items,
|
|
40
|
+
color = "default",
|
|
41
|
+
size = "md",
|
|
42
|
+
variant = "default",
|
|
43
|
+
defaultActiveKey,
|
|
44
|
+
activeKey: controlledActiveKey,
|
|
45
|
+
onChange,
|
|
46
|
+
multiple = false,
|
|
47
|
+
className
|
|
48
|
+
}) => {
|
|
49
|
+
const [internalActiveKey, setInternalActiveKey] = useState(defaultActiveKey || (multiple ? [] : ""));
|
|
50
|
+
const activeKey = controlledActiveKey !== void 0 ? controlledActiveKey : internalActiveKey;
|
|
51
|
+
const isActive = (key) => {
|
|
52
|
+
if (Array.isArray(activeKey)) {
|
|
53
|
+
return activeKey.includes(key);
|
|
54
|
+
}
|
|
55
|
+
return activeKey === key;
|
|
56
|
+
};
|
|
57
|
+
const handleToggle = (key) => {
|
|
58
|
+
let newActiveKey;
|
|
59
|
+
if (multiple) {
|
|
60
|
+
const currentKeys = Array.isArray(activeKey) ? activeKey : [];
|
|
61
|
+
newActiveKey = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
|
|
62
|
+
} else {
|
|
63
|
+
newActiveKey = activeKey === key ? "" : key;
|
|
64
|
+
}
|
|
65
|
+
if (controlledActiveKey === void 0) {
|
|
66
|
+
setInternalActiveKey(newActiveKey);
|
|
67
|
+
}
|
|
68
|
+
onChange?.(newActiveKey);
|
|
69
|
+
};
|
|
70
|
+
return /* @__PURE__ */ jsx("div", { className: cn("w-full space-y-2", className), children: items.map((item) => {
|
|
71
|
+
const active = isActive(item.key);
|
|
72
|
+
return /* @__PURE__ */ jsxs(
|
|
73
|
+
"div",
|
|
74
|
+
{
|
|
75
|
+
className: cn(
|
|
76
|
+
getAccordionColorClass(color, variant),
|
|
77
|
+
"rounded-lg border transition-all",
|
|
78
|
+
item.disabled && "opacity-50 cursor-not-allowed"
|
|
79
|
+
),
|
|
80
|
+
children: [
|
|
81
|
+
/* @__PURE__ */ jsxs(
|
|
82
|
+
"button",
|
|
83
|
+
{
|
|
84
|
+
type: "button",
|
|
85
|
+
onClick: () => !item.disabled && handleToggle(item.key),
|
|
86
|
+
disabled: item.disabled,
|
|
87
|
+
className: cn(
|
|
88
|
+
accordionHeaderVariants({ size }),
|
|
89
|
+
item.disabled && "cursor-not-allowed"
|
|
90
|
+
),
|
|
91
|
+
children: [
|
|
92
|
+
/* @__PURE__ */ jsx("span", { children: item.title }),
|
|
93
|
+
/* @__PURE__ */ jsx(
|
|
94
|
+
ChevronDown,
|
|
95
|
+
{
|
|
96
|
+
className: cn(
|
|
97
|
+
"transition-transform duration-300 ease-out",
|
|
98
|
+
active && "rotate-180",
|
|
99
|
+
iconSizes[size]
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
"div",
|
|
108
|
+
{
|
|
109
|
+
className: cn(
|
|
110
|
+
"grid transition-[grid-template-rows] duration-300 ease-out",
|
|
111
|
+
active ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
112
|
+
),
|
|
113
|
+
children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: cn(accordionContentVariants({ size })), children: item.content }) })
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
item.key
|
|
119
|
+
);
|
|
120
|
+
}) });
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
Accordion.displayName = "Accordion";
|
|
124
|
+
var accordion_default = Accordion;
|
|
125
|
+
|
|
126
|
+
export { accordion_default };
|
|
127
|
+
//# sourceMappingURL=chunk-CWHFK7ZC.js.map
|
|
128
|
+
//# sourceMappingURL=chunk-CWHFK7ZC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/accordion/index.tsx"],"names":[],"mappings":"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","file":"chunk-CWHFK7ZC.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { ChevronDown } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { cn, iconSizes } from '../utils'\nimport { getAccordionColorClass } from '../variants'\nimport type { AccordionProps } from './types'\n\nconst accordionHeaderVariants = cva(\n 'flex items-center justify-between w-full text-left font-medium transition-all cursor-pointer',\n {\n variants: {\n size: {\n xs: 'px-3 py-2 text-xs',\n sm: 'px-4 py-2.5 text-sm',\n md: 'px-5 py-3 text-base',\n lg: 'px-6 py-4 text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst accordionContentVariants = cva('overflow-hidden transition-all', {\n variants: {\n size: {\n xs: 'px-3 pb-2 text-xs',\n sm: 'px-4 pb-2.5 text-sm',\n md: 'px-5 pb-3 text-base',\n lg: 'px-6 pb-4 text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst Accordion = React.memo<AccordionProps>(\n ({\n items,\n color = 'default',\n size = 'md',\n variant = 'default',\n defaultActiveKey,\n activeKey: controlledActiveKey,\n onChange,\n multiple = false,\n className,\n }) => {\n const [internalActiveKey, setInternalActiveKey] = useState<\n string | string[]\n >(defaultActiveKey || (multiple ? [] : ''))\n\n const activeKey =\n controlledActiveKey !== undefined\n ? controlledActiveKey\n : internalActiveKey\n\n const isActive = (key: string) => {\n if (Array.isArray(activeKey)) {\n return activeKey.includes(key)\n }\n return activeKey === key\n }\n\n const handleToggle = (key: string) => {\n let newActiveKey: string | string[]\n\n if (multiple) {\n const currentKeys = Array.isArray(activeKey) ? activeKey : []\n newActiveKey = currentKeys.includes(key)\n ? currentKeys.filter((k) => k !== key)\n : [...currentKeys, key]\n } else {\n newActiveKey = activeKey === key ? '' : key\n }\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(newActiveKey)\n }\n onChange?.(newActiveKey)\n }\n\n return (\n <div className={cn('w-full space-y-2', className)}>\n {items.map((item) => {\n const active = isActive(item.key)\n\n return (\n <div\n key={item.key}\n className={cn(\n getAccordionColorClass(color, variant),\n 'rounded-lg border transition-all',\n item.disabled && 'opacity-50 cursor-not-allowed',\n )}\n >\n <button\n type=\"button\"\n onClick={() => !item.disabled && handleToggle(item.key)}\n disabled={item.disabled}\n className={cn(\n accordionHeaderVariants({ size }),\n item.disabled && 'cursor-not-allowed',\n )}\n >\n <span>{item.title}</span>\n <ChevronDown\n className={cn(\n 'transition-transform duration-300 ease-out',\n active && 'rotate-180',\n iconSizes[size],\n )}\n />\n </button>\n <div\n className={cn(\n 'grid transition-[grid-template-rows] duration-300 ease-out',\n active ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',\n )}\n >\n <div className=\"overflow-hidden\">\n <div className={cn(accordionContentVariants({ size }))}>\n {item.content}\n </div>\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n },\n)\n\nAccordion.displayName = 'Accordion'\n\nexport type * from './types'\nexport default Accordion\n"]}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { cn } from './chunk-YNNAOXU5.js';
|
|
2
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var tooltipContentVariants = cva(
|
|
8
|
+
"z-50 overflow-hidden rounded px-3 py-1.5 text-sm animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
size: {
|
|
12
|
+
xs: "text-xs px-2 py-1",
|
|
13
|
+
sm: "text-sm px-2.5 py-1",
|
|
14
|
+
md: "text-base px-3 py-1.5",
|
|
15
|
+
lg: "text-lg px-4 py-2"
|
|
16
|
+
},
|
|
17
|
+
color: {
|
|
18
|
+
default: "bg-text-primary text-background",
|
|
19
|
+
primary: "bg-primary text-primary-text",
|
|
20
|
+
secondary: "bg-secondary text-secondary-text",
|
|
21
|
+
accent: "bg-accent text-accent-text",
|
|
22
|
+
success: "bg-success text-success-text",
|
|
23
|
+
error: "bg-error text-error-text",
|
|
24
|
+
warning: "bg-warning text-warning-text",
|
|
25
|
+
info: "bg-info text-info-text"
|
|
26
|
+
},
|
|
27
|
+
variant: {
|
|
28
|
+
solid: "",
|
|
29
|
+
soft: "border"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
compoundVariants: [
|
|
33
|
+
{
|
|
34
|
+
variant: "soft",
|
|
35
|
+
color: "default",
|
|
36
|
+
className: "bg-surface text-text-primary border-border"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
variant: "soft",
|
|
40
|
+
color: "primary",
|
|
41
|
+
className: "bg-primary/20 text-primary border-primary/30"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
variant: "soft",
|
|
45
|
+
color: "secondary",
|
|
46
|
+
className: "bg-secondary/20 text-secondary border-secondary/30"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
variant: "soft",
|
|
50
|
+
color: "accent",
|
|
51
|
+
className: "bg-accent/20 text-accent border-accent/30"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
variant: "soft",
|
|
55
|
+
color: "success",
|
|
56
|
+
className: "bg-success/20 text-success border-success/30"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
variant: "soft",
|
|
60
|
+
color: "error",
|
|
61
|
+
className: "bg-error/20 text-error border-error/30"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
variant: "soft",
|
|
65
|
+
color: "warning",
|
|
66
|
+
className: "bg-warning/20 text-warning border-warning/30"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
variant: "soft",
|
|
70
|
+
color: "info",
|
|
71
|
+
className: "bg-info/20 text-info border-info/30"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
defaultVariants: {
|
|
75
|
+
size: "sm",
|
|
76
|
+
color: "default",
|
|
77
|
+
variant: "solid"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
var TooltipProvider = TooltipPrimitive.Provider;
|
|
82
|
+
var Tooltip = React.memo(
|
|
83
|
+
({
|
|
84
|
+
content,
|
|
85
|
+
children,
|
|
86
|
+
color = "default",
|
|
87
|
+
size = "sm",
|
|
88
|
+
variant = "solid",
|
|
89
|
+
side = "top",
|
|
90
|
+
align = "center",
|
|
91
|
+
delayDuration = 200,
|
|
92
|
+
disabled = false,
|
|
93
|
+
className,
|
|
94
|
+
...props
|
|
95
|
+
}) => {
|
|
96
|
+
if (disabled) {
|
|
97
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
98
|
+
}
|
|
99
|
+
return /* @__PURE__ */ jsxs(TooltipPrimitive.Root, { delayDuration, children: [
|
|
100
|
+
/* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { asChild: true, children }),
|
|
101
|
+
/* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
102
|
+
TooltipPrimitive.Content,
|
|
103
|
+
{
|
|
104
|
+
side,
|
|
105
|
+
align,
|
|
106
|
+
className: cn(
|
|
107
|
+
tooltipContentVariants({ size, color, variant }),
|
|
108
|
+
className
|
|
109
|
+
),
|
|
110
|
+
sideOffset: 4,
|
|
111
|
+
...props,
|
|
112
|
+
children: content
|
|
113
|
+
}
|
|
114
|
+
) })
|
|
115
|
+
] });
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
Tooltip.displayName = "Tooltip";
|
|
119
|
+
var tooltip_default = Tooltip;
|
|
120
|
+
|
|
121
|
+
export { TooltipProvider, tooltip_default };
|
|
122
|
+
//# sourceMappingURL=chunk-D3JWPGCA.js.map
|
|
123
|
+
//# sourceMappingURL=chunk-D3JWPGCA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tooltip/index.tsx"],"names":[],"mappings":";;;;;;AAOA,IAAM,sBAAA,GAAyB,GAAA;AAAA,EAC7B,6UAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,uBAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,iCAAA;AAAA,QACT,OAAA,EAAS,8BAAA;AAAA,QACT,SAAA,EAAW,kCAAA;AAAA,QACX,MAAA,EAAQ,4BAAA;AAAA,QACR,OAAA,EAAS,8BAAA;AAAA,QACT,KAAA,EAAO,0BAAA;AAAA,QACP,OAAA,EAAS,8BAAA;AAAA,QACT,IAAA,EAAM;AAAA,OACR;AAAA,MACA,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,EAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,WAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,OAAA,EAAS,MAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,eAAA,GAAmC,gBAAA,CAAA;AAUhD,IAAM,UAAU,KAAA,CAAM,IAAA;AAAA,EACpB,CAAC;AAAA,IACC,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,IAAA;AAAA,IACP,OAAA,GAAU,OAAA;AAAA,IACV,IAAA,GAAO,KAAA;AAAA,IACP,KAAA,GAAQ,QAAA;AAAA,IACR,aAAA,GAAgB,GAAA;AAAA,IAChB,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,uCAAU,QAAA,EAAS,CAAA;AAAA,IACrB;AAEA,IAAA,uBACE,IAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,aAAA,EACrB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,OAAA,EAAO,IAAA,EAAE,QAAA,EAAS,CAAA;AAAA,sBAC5C,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,QAAkB,gBAAA,CAAA,OAAA;AAAA,QAAjB;AAAA,UACC,IAAA;AAAA,UACA,KAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,CAAA;AAAA,YAC/C;AAAA,WACF;AAAA,UACA,UAAA,EAAY,CAAA;AAAA,UACX,GAAG,KAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAGtB,IAAO,eAAA,GAAQ","file":"chunk-D3JWPGCA.js","sourcesContent":["import * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { TooltipProps } from './types'\n\nconst tooltipContentVariants = cva(\n 'z-50 overflow-hidden rounded px-3 py-1.5 text-sm animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n {\n variants: {\n size: {\n xs: 'text-xs px-2 py-1',\n sm: 'text-sm px-2.5 py-1',\n md: 'text-base px-3 py-1.5',\n lg: 'text-lg px-4 py-2',\n },\n color: {\n default: 'bg-text-primary text-background',\n primary: 'bg-primary text-primary-text',\n secondary: 'bg-secondary text-secondary-text',\n accent: 'bg-accent text-accent-text',\n success: 'bg-success text-success-text',\n error: 'bg-error text-error-text',\n warning: 'bg-warning text-warning-text',\n info: 'bg-info text-info-text',\n },\n variant: {\n solid: '',\n soft: 'border',\n },\n },\n compoundVariants: [\n {\n variant: 'soft',\n color: 'default',\n className: 'bg-surface text-text-primary border-border',\n },\n {\n variant: 'soft',\n color: 'primary',\n className: 'bg-primary/20 text-primary border-primary/30',\n },\n {\n variant: 'soft',\n color: 'secondary',\n className: 'bg-secondary/20 text-secondary border-secondary/30',\n },\n {\n variant: 'soft',\n color: 'accent',\n className: 'bg-accent/20 text-accent border-accent/30',\n },\n {\n variant: 'soft',\n color: 'success',\n className: 'bg-success/20 text-success border-success/30',\n },\n {\n variant: 'soft',\n color: 'error',\n className: 'bg-error/20 text-error border-error/30',\n },\n {\n variant: 'soft',\n color: 'warning',\n className: 'bg-warning/20 text-warning border-warning/30',\n },\n {\n variant: 'soft',\n color: 'info',\n className: 'bg-info/20 text-info border-info/30',\n },\n ],\n defaultVariants: {\n size: 'sm',\n color: 'default',\n variant: 'solid',\n },\n },\n)\n\nexport const TooltipProvider = TooltipPrimitive.Provider\n\nexport type {\n TooltipProps,\n TooltipProviderProps,\n TooltipColor,\n TooltipSize,\n TooltipVariant,\n} from './types'\n\nconst Tooltip = React.memo<TooltipProps>(\n ({\n content,\n children,\n color = 'default',\n size = 'sm',\n variant = 'solid',\n side = 'top',\n align = 'center',\n delayDuration = 200,\n disabled = false,\n className,\n ...props\n }) => {\n if (disabled) {\n return <>{children}</>\n }\n\n return (\n <TooltipPrimitive.Root delayDuration={delayDuration}>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n className={cn(\n tooltipContentVariants({ size, color, variant }),\n className,\n )}\n sideOffset={4}\n {...props}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n )\n },\n)\n\nTooltip.displayName = 'Tooltip'\n\nexport type * from './types'\nexport default Tooltip\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { cn } from './chunk-YNNAOXU5.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var RadioGroup = React.memo(
|
|
6
|
+
({
|
|
7
|
+
label,
|
|
8
|
+
helperText,
|
|
9
|
+
error,
|
|
10
|
+
orientation = "vertical",
|
|
11
|
+
className,
|
|
12
|
+
children,
|
|
13
|
+
ref,
|
|
14
|
+
...props
|
|
15
|
+
}) => {
|
|
16
|
+
return /* @__PURE__ */ jsxs(
|
|
17
|
+
"div",
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
className: cn("w-full", className),
|
|
21
|
+
role: "radiogroup",
|
|
22
|
+
...props,
|
|
23
|
+
children: [
|
|
24
|
+
label && /* @__PURE__ */ jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-secondary", children: label }) }),
|
|
25
|
+
/* @__PURE__ */ jsx(
|
|
26
|
+
"div",
|
|
27
|
+
{
|
|
28
|
+
className: cn(
|
|
29
|
+
"flex",
|
|
30
|
+
orientation === "vertical" ? "flex-col gap-2" : "flex-row flex-wrap gap-4"
|
|
31
|
+
),
|
|
32
|
+
children
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
(helperText || error) && /* @__PURE__ */ jsx(
|
|
36
|
+
"p",
|
|
37
|
+
{
|
|
38
|
+
className: cn(
|
|
39
|
+
"mt-2 text-xs",
|
|
40
|
+
error ? "text-error" : "text-text-secondary"
|
|
41
|
+
),
|
|
42
|
+
children: error || helperText
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
RadioGroup.displayName = "RadioGroup";
|
|
51
|
+
var radio_group_default = RadioGroup;
|
|
52
|
+
|
|
53
|
+
export { RadioGroup, radio_group_default };
|
|
54
|
+
//# sourceMappingURL=chunk-DOKTHDG3.js.map
|
|
55
|
+
//# sourceMappingURL=chunk-DOKTHDG3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/radio-group/index.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,aAAa,KAAA,CAAM,IAAA;AAAA,EAC9B,CAAC;AAAA,IACC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QACjC,IAAA,EAAK,YAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA,CAAC,SAAI,SAAA,EAAU,MAAA,EACb,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA,EACF,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,MAAA;AAAA,gBACA,WAAA,KAAgB,aACZ,gBAAA,GACA;AAAA,eACN;AAAA,cAEC;AAAA;AAAA,WACH;AAAA,UAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,cAAA;AAAA,gBACA,QAAQ,YAAA,GAAe;AAAA,eACzB;AAAA,cAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAGzB,IAAO,mBAAA,GAAQ","file":"chunk-DOKTHDG3.js","sourcesContent":["import React from 'react'\n\nimport { cn } from '../utils'\nimport type { RadioGroupProps } from './types'\n\nexport const RadioGroup = React.memo<RadioGroupProps>(\n ({\n label,\n helperText,\n error,\n orientation = 'vertical',\n className,\n children,\n ref,\n ...props\n }) => {\n return (\n <div\n ref={ref}\n className={cn('w-full', className)}\n role=\"radiogroup\"\n {...props}\n >\n {label && (\n <div className=\"mb-2\">\n <span className=\"text-sm font-medium text-text-secondary\">\n {label}\n </span>\n </div>\n )}\n <div\n className={cn(\n 'flex',\n orientation === 'vertical'\n ? 'flex-col gap-2'\n : 'flex-row flex-wrap gap-4',\n )}\n >\n {children}\n </div>\n {(helperText || error) && (\n <p\n className={cn(\n 'mt-2 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nRadioGroup.displayName = 'RadioGroup'\n\nexport type * from './types'\nexport default RadioGroup\n"]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { cn } from './chunk-YNNAOXU5.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { jsxs } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var inactiveHoverClasses = {
|
|
7
|
+
default: "text-text-secondary hover:text-text-primary hover:bg-surface",
|
|
8
|
+
primary: "text-text-secondary hover:text-primary hover:bg-primary/10",
|
|
9
|
+
secondary: "text-text-secondary hover:text-secondary hover:bg-secondary/10",
|
|
10
|
+
accent: "text-text-secondary hover:text-accent hover:bg-accent/10",
|
|
11
|
+
success: "text-text-secondary hover:text-success hover:bg-success/10",
|
|
12
|
+
error: "text-text-secondary hover:text-error hover:bg-error/10",
|
|
13
|
+
warning: "text-text-secondary hover:text-warning hover:bg-warning/10",
|
|
14
|
+
info: "text-text-secondary hover:text-info hover:bg-info/10"
|
|
15
|
+
};
|
|
16
|
+
var activeSolidClasses = {
|
|
17
|
+
default: "bg-border text-text-primary",
|
|
18
|
+
primary: "bg-primary text-background",
|
|
19
|
+
secondary: "bg-secondary text-background",
|
|
20
|
+
accent: "bg-accent text-background",
|
|
21
|
+
success: "bg-success text-background",
|
|
22
|
+
error: "bg-error text-background",
|
|
23
|
+
warning: "bg-warning text-background",
|
|
24
|
+
info: "bg-info text-background"
|
|
25
|
+
};
|
|
26
|
+
var activeSoftClasses = {
|
|
27
|
+
default: "bg-border/20 text-text-primary",
|
|
28
|
+
primary: "bg-primary/20 text-primary",
|
|
29
|
+
secondary: "bg-secondary/20 text-secondary",
|
|
30
|
+
accent: "bg-accent/20 text-accent",
|
|
31
|
+
success: "bg-success/20 text-success",
|
|
32
|
+
error: "bg-error/20 text-error",
|
|
33
|
+
warning: "bg-warning/20 text-warning",
|
|
34
|
+
info: "bg-info/20 text-info"
|
|
35
|
+
};
|
|
36
|
+
var activeDefaultClasses = {
|
|
37
|
+
default: "bg-surface text-text-primary",
|
|
38
|
+
primary: "border-primary bg-primary/10 text-primary",
|
|
39
|
+
secondary: "border-secondary bg-secondary/10 text-secondary",
|
|
40
|
+
accent: "border-accent bg-accent/10 text-accent",
|
|
41
|
+
success: "border-success bg-success/10 text-success",
|
|
42
|
+
error: "border-error bg-error/10 text-error",
|
|
43
|
+
warning: "border-warning bg-warning/10 text-warning",
|
|
44
|
+
info: "border-info bg-info/10 text-info"
|
|
45
|
+
};
|
|
46
|
+
var getToggleClasses = (color, variant, isActive) => {
|
|
47
|
+
const toggleColor = color;
|
|
48
|
+
if (!isActive) {
|
|
49
|
+
return inactiveHoverClasses[toggleColor] || inactiveHoverClasses.default;
|
|
50
|
+
}
|
|
51
|
+
if (variant === "solid") {
|
|
52
|
+
return activeSolidClasses[toggleColor] || activeSolidClasses.default;
|
|
53
|
+
}
|
|
54
|
+
if (variant === "soft") {
|
|
55
|
+
return activeSoftClasses[toggleColor] || activeSoftClasses.default;
|
|
56
|
+
}
|
|
57
|
+
return activeDefaultClasses[toggleColor] || activeDefaultClasses.default;
|
|
58
|
+
};
|
|
59
|
+
var singleToggleVariants = cva(
|
|
60
|
+
"inline-flex items-center gap-2 font-medium transition-colors cursor-pointer border rounded-md",
|
|
61
|
+
{
|
|
62
|
+
variants: {
|
|
63
|
+
size: {
|
|
64
|
+
xs: "text-xs px-2 py-1",
|
|
65
|
+
sm: "text-sm px-3 py-1.5",
|
|
66
|
+
md: "text-base px-4 py-2",
|
|
67
|
+
lg: "text-lg px-5 py-2.5"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
defaultVariants: {
|
|
71
|
+
size: "md"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
var getSingleToggleClasses = (color, variant, isPressed) => {
|
|
76
|
+
return getToggleClasses(color, variant, isPressed);
|
|
77
|
+
};
|
|
78
|
+
var Toggle = React.memo(
|
|
79
|
+
({
|
|
80
|
+
pressed: controlledPressed,
|
|
81
|
+
defaultPressed = false,
|
|
82
|
+
color = "primary",
|
|
83
|
+
size = "md",
|
|
84
|
+
variant = "default",
|
|
85
|
+
onChange,
|
|
86
|
+
disabled = false,
|
|
87
|
+
icon,
|
|
88
|
+
children,
|
|
89
|
+
className
|
|
90
|
+
}) => {
|
|
91
|
+
const [internalPressed, setInternalPressed] = useState(defaultPressed);
|
|
92
|
+
const pressed = controlledPressed !== void 0 ? controlledPressed : internalPressed;
|
|
93
|
+
const handleClick = () => {
|
|
94
|
+
if (disabled) return;
|
|
95
|
+
const newPressed = !pressed;
|
|
96
|
+
if (controlledPressed === void 0) {
|
|
97
|
+
setInternalPressed(newPressed);
|
|
98
|
+
}
|
|
99
|
+
onChange?.(newPressed);
|
|
100
|
+
};
|
|
101
|
+
return /* @__PURE__ */ jsxs(
|
|
102
|
+
"button",
|
|
103
|
+
{
|
|
104
|
+
className: cn(
|
|
105
|
+
singleToggleVariants({ size }),
|
|
106
|
+
getSingleToggleClasses(color, variant, pressed),
|
|
107
|
+
"border",
|
|
108
|
+
disabled && "opacity-50 cursor-not-allowed",
|
|
109
|
+
className
|
|
110
|
+
),
|
|
111
|
+
onClick: handleClick,
|
|
112
|
+
disabled,
|
|
113
|
+
children: [
|
|
114
|
+
icon,
|
|
115
|
+
children
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
Toggle.displayName = "Toggle";
|
|
122
|
+
var toggle_default = Toggle;
|
|
123
|
+
|
|
124
|
+
export { toggle_default };
|
|
125
|
+
//# sourceMappingURL=chunk-DPOSWW22.js.map
|
|
126
|
+
//# sourceMappingURL=chunk-DPOSWW22.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/toggle/index.tsx"],"names":[],"mappings":"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","file":"chunk-DPOSWW22.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React, { useState } from 'react'\n\nimport { cn } from '../utils'\nimport type { SingleToggleProps } from './types'\n\n// Inactive hover states for each color\nconst inactiveHoverClasses = {\n default: 'text-text-secondary hover:text-text-primary hover:bg-surface',\n primary: 'text-text-secondary hover:text-primary hover:bg-primary/10',\n secondary: 'text-text-secondary hover:text-secondary hover:bg-secondary/10',\n accent: 'text-text-secondary hover:text-accent hover:bg-accent/10',\n success: 'text-text-secondary hover:text-success hover:bg-success/10',\n error: 'text-text-secondary hover:text-error hover:bg-error/10',\n warning: 'text-text-secondary hover:text-warning hover:bg-warning/10',\n info: 'text-text-secondary hover:text-info hover:bg-info/10',\n} as const\n\n// Active solid variant classes\nconst activeSolidClasses = {\n default: 'bg-border text-text-primary',\n primary: 'bg-primary text-background',\n secondary: 'bg-secondary text-background',\n accent: 'bg-accent text-background',\n success: 'bg-success text-background',\n error: 'bg-error text-background',\n warning: 'bg-warning text-background',\n info: 'bg-info text-background',\n} as const\n\n// Active soft variant classes\nconst activeSoftClasses = {\n default: 'bg-border/20 text-text-primary',\n primary: 'bg-primary/20 text-primary',\n secondary: 'bg-secondary/20 text-secondary',\n accent: 'bg-accent/20 text-accent',\n success: 'bg-success/20 text-success',\n error: 'bg-error/20 text-error',\n warning: 'bg-warning/20 text-warning',\n info: 'bg-info/20 text-info',\n} as const\n\n// Active default variant classes\nconst activeDefaultClasses = {\n default: 'bg-surface text-text-primary',\n primary: 'border-primary bg-primary/10 text-primary',\n secondary: 'border-secondary bg-secondary/10 text-secondary',\n accent: 'border-accent bg-accent/10 text-accent',\n success: 'border-success bg-success/10 text-success',\n error: 'border-error bg-error/10 text-error',\n warning: 'border-warning bg-warning/10 text-warning',\n info: 'border-info bg-info/10 text-info',\n} as const\n\ntype ToggleColor = keyof typeof inactiveHoverClasses\n\nconst getToggleClasses = (\n color: string,\n variant: string,\n isActive: boolean,\n) => {\n const toggleColor = color as ToggleColor\n\n if (!isActive) {\n return inactiveHoverClasses[toggleColor] || inactiveHoverClasses.default\n }\n\n // Active state\n if (variant === 'solid') {\n return activeSolidClasses[toggleColor] || activeSolidClasses.default\n }\n if (variant === 'soft') {\n return activeSoftClasses[toggleColor] || activeSoftClasses.default\n }\n return activeDefaultClasses[toggleColor] || activeDefaultClasses.default\n}\n\nconst singleToggleVariants = cva(\n 'inline-flex items-center gap-2 font-medium transition-colors cursor-pointer border rounded-md',\n {\n variants: {\n size: {\n xs: 'text-xs px-2 py-1',\n sm: 'text-sm px-3 py-1.5',\n md: 'text-base px-4 py-2',\n lg: 'text-lg px-5 py-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\n// Single toggle uses the same class logic as toggle group\nconst getSingleToggleClasses = (\n color: string,\n variant: string,\n isPressed: boolean,\n) => {\n return getToggleClasses(color, variant, isPressed)\n}\n\nconst Toggle = React.memo<SingleToggleProps>(\n ({\n pressed: controlledPressed,\n defaultPressed = false,\n color = 'primary',\n size = 'md',\n variant = 'default',\n onChange,\n disabled = false,\n icon,\n children,\n className,\n }) => {\n const [internalPressed, setInternalPressed] = useState(defaultPressed)\n\n const pressed =\n controlledPressed !== undefined ? controlledPressed : internalPressed\n\n const handleClick = () => {\n if (disabled) return\n\n const newPressed = !pressed\n if (controlledPressed === undefined) {\n setInternalPressed(newPressed)\n }\n onChange?.(newPressed)\n }\n\n return (\n <button\n className={cn(\n singleToggleVariants({ size }),\n getSingleToggleClasses(color, variant, pressed),\n 'border',\n disabled && 'opacity-50 cursor-not-allowed',\n className,\n )}\n onClick={handleClick}\n disabled={disabled}\n >\n {icon}\n {children}\n </button>\n )\n },\n)\n\nToggle.displayName = 'Toggle'\n\nexport type * from './types'\nexport default Toggle\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { input_default } from './chunk-2JGAYDZR.js';
|
|
2
|
+
import { iconSizes } from './chunk-YNNAOXU5.js';
|
|
3
|
+
import { Eye, EyeOff } from 'lucide-react';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var PasswordInput = React.memo(
|
|
8
|
+
({ visibilityToggle = true, size = "md", ref, ...props }) => {
|
|
9
|
+
const [showPassword, setShowPassword] = React.useState(false);
|
|
10
|
+
const toggleVisibility = React.useCallback(() => {
|
|
11
|
+
setShowPassword((prev) => !prev);
|
|
12
|
+
}, []);
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
input_default,
|
|
15
|
+
{
|
|
16
|
+
...props,
|
|
17
|
+
size,
|
|
18
|
+
ref,
|
|
19
|
+
type: showPassword ? "text" : "password",
|
|
20
|
+
rightIcon: visibilityToggle ? /* @__PURE__ */ jsx(
|
|
21
|
+
"button",
|
|
22
|
+
{
|
|
23
|
+
type: "button",
|
|
24
|
+
onClick: toggleVisibility,
|
|
25
|
+
className: "cursor-pointer hover:text-text-primary",
|
|
26
|
+
"aria-label": showPassword ? "Hide password" : "Show password",
|
|
27
|
+
children: showPassword ? /* @__PURE__ */ jsx(Eye, { className: iconSizes[size] }) : /* @__PURE__ */ jsx(EyeOff, { className: iconSizes[size] })
|
|
28
|
+
}
|
|
29
|
+
) : void 0
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
PasswordInput.displayName = "PasswordInput";
|
|
35
|
+
var input_password_default = input_default;
|
|
36
|
+
|
|
37
|
+
export { PasswordInput, input_password_default };
|
|
38
|
+
//# sourceMappingURL=chunk-E2CYDDYC.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-E2CYDDYC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/input-password/index.tsx"],"names":[],"mappings":";;;;;;AAOO,IAAM,gBAAgB,KAAA,CAAM,IAAA;AAAA,EACjC,CAAC,EAAE,gBAAA,GAAmB,IAAA,EAAM,OAAO,IAAA,EAAM,GAAA,EAAK,GAAG,KAAA,EAAM,KAAM;AAC3D,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,KAAA,CAAM,SAAS,KAAK,CAAA;AAE5D,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,WAAA,CAAY,MAAM;AAC/C,MAAA,eAAA,CAAgB,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAAA,IACjC,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,uBACE,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,IAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAA,EAAM,eAAe,MAAA,GAAS,UAAA;AAAA,QAC9B,WACE,gBAAA,mBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,gBAAA;AAAA,YACT,SAAA,EAAU,wCAAA;AAAA,YACV,YAAA,EAAY,eAAe,eAAA,GAAkB,eAAA;AAAA,YAG5C,QAAA,EAAA,YAAA,mBACC,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA,mBAEjC,GAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG;AAAA;AAAA,SAExC,GACE;AAAA;AAAA,KAER;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAG5B,IAAO,sBAAA,GAAQ","file":"chunk-E2CYDDYC.js","sourcesContent":["import { Eye, EyeOff } from 'lucide-react'\nimport React from 'react'\n\nimport Input from '../input'\nimport { iconSizes } from '../utils'\nimport type { PasswordInputProps } from './types'\n\nexport const PasswordInput = React.memo<PasswordInputProps>(\n ({ visibilityToggle = true, size = 'md', ref, ...props }) => {\n const [showPassword, setShowPassword] = React.useState(false)\n\n const toggleVisibility = React.useCallback(() => {\n setShowPassword((prev) => !prev)\n }, [])\n\n return (\n <Input\n {...props}\n size={size}\n ref={ref}\n type={showPassword ? 'text' : 'password'}\n rightIcon={\n visibilityToggle ? (\n <button\n type=\"button\"\n onClick={toggleVisibility}\n className=\"cursor-pointer hover:text-text-primary\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n // tabIndex={-1}\n >\n {showPassword ? (\n <Eye className={iconSizes[size]} />\n ) : (\n <EyeOff className={iconSizes[size]} />\n )}\n </button>\n ) : undefined\n }\n />\n )\n },\n)\n\nPasswordInput.displayName = 'PasswordInput'\n\nexport type * from './types'\nexport default Input\n"]}
|