@c15t/dev-tools 0.0.1-rc.3
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/.turbo/turbo-build.log +56 -0
- package/.turbo/turbo-fmt.log +6 -0
- package/.turbo/turbo-lint.log +73 -0
- package/CHANGELOG.md +23 -0
- package/LICENSE.md +595 -0
- package/README.md +47 -0
- package/dist/components/error-state.cjs +126 -0
- package/dist/components/error-state.d.ts +6 -0
- package/dist/components/error-state.d.ts.map +1 -0
- package/dist/components/error-state.js +110 -0
- package/dist/components/header.cjs +88 -0
- package/dist/components/header.d.ts +8 -0
- package/dist/components/header.d.ts.map +1 -0
- package/dist/components/header.js +56 -0
- package/dist/components/ui/accordion.cjs +119 -0
- package/dist/components/ui/accordion.d.ts +34 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +84 -0
- package/dist/components/ui/alert.cjs +104 -0
- package/dist/components/ui/alert.d.ts +25 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +67 -0
- package/dist/components/ui/button.cjs +95 -0
- package/dist/components/ui/button.d.ts +28 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +55 -0
- package/dist/components/ui/card.cjs +120 -0
- package/dist/components/ui/card.d.ts +30 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +99 -0
- package/dist/components/ui/expandable-tabs.cjs +201 -0
- package/dist/components/ui/expandable-tabs.d.ts +29 -0
- package/dist/components/ui/expandable-tabs.d.ts.map +1 -0
- package/dist/components/ui/expandable-tabs.js +170 -0
- package/dist/components/ui/overlay.cjs +69 -0
- package/dist/components/ui/overlay.d.ts +7 -0
- package/dist/components/ui/overlay.d.ts.map +1 -0
- package/dist/components/ui/overlay.js +28 -0
- package/dist/components/ui/scroll-area.cjs +105 -0
- package/dist/components/ui/scroll-area.d.ts +19 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +74 -0
- package/dist/components/ui/switch.cjs +71 -0
- package/dist/components/ui/switch.d.ts +11 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +33 -0
- package/dist/components/ui/tooltip.cjs +75 -0
- package/dist/components/ui/tooltip.d.ts +16 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +38 -0
- package/dist/components/wrapper.cjs +197 -0
- package/dist/components/wrapper.d.ts +24 -0
- package/dist/components/wrapper.d.ts.map +1 -0
- package/dist/components/wrapper.js +165 -0
- package/dist/dev-tool.cjs +164 -0
- package/dist/dev-tool.d.ts +14 -0
- package/dist/dev-tool.d.ts.map +1 -0
- package/dist/dev-tool.js +110 -0
- package/dist/index.cjs +46 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/libs/utils.cjs +69 -0
- package/dist/libs/utils.d.ts +3 -0
- package/dist/libs/utils.d.ts.map +1 -0
- package/dist/libs/utils.js +8 -0
- package/dist/router/router.cjs +278 -0
- package/dist/router/router.d.ts +8 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +261 -0
- package/package.json +48 -0
- package/rslib.config.ts +28 -0
- package/src/components/error-state.tsx +44 -0
- package/src/components/header.tsx +28 -0
- package/src/components/ui/accordion.tsx +64 -0
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/button.tsx +56 -0
- package/src/components/ui/card.tsx +81 -0
- package/src/components/ui/expandable-tabs.tsx +174 -0
- package/src/components/ui/overlay.tsx +21 -0
- package/src/components/ui/scroll-area.tsx +52 -0
- package/src/components/ui/switch.tsx +28 -0
- package/src/components/ui/tooltip.tsx +32 -0
- package/src/components/wrapper.tsx +103 -0
- package/src/dev-tool.tsx +117 -0
- package/src/index.ts +3 -0
- package/src/libs/utils.ts +6 -0
- package/src/router/router.tsx +164 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
var __webpack_require__ = {};
|
|
4
|
+
(() => {
|
|
5
|
+
__webpack_require__.d = function (exports1, definition) {
|
|
6
|
+
for (var key in definition)
|
|
7
|
+
if (
|
|
8
|
+
__webpack_require__.o(definition, key) &&
|
|
9
|
+
!__webpack_require__.o(exports1, key)
|
|
10
|
+
)
|
|
11
|
+
Object.defineProperty(exports1, key, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: definition[key],
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
(() => {
|
|
18
|
+
__webpack_require__.o = function (obj, prop) {
|
|
19
|
+
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
20
|
+
};
|
|
21
|
+
})();
|
|
22
|
+
(() => {
|
|
23
|
+
__webpack_require__.r = function (exports1) {
|
|
24
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag)
|
|
25
|
+
Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module',
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true,
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
ExpandableTabs: () => ExpandableTabs,
|
|
37
|
+
});
|
|
38
|
+
const jsx_runtime_namespaceObject = require('react/jsx-runtime');
|
|
39
|
+
const react_namespaceObject = require('motion/react');
|
|
40
|
+
const external_react_namespaceObject = require('react');
|
|
41
|
+
const external_usehooks_ts_namespaceObject = require('usehooks-ts');
|
|
42
|
+
const utils_cjs_namespaceObject = require('../../libs/utils.cjs');
|
|
43
|
+
const buttonVariants = {
|
|
44
|
+
initial: {
|
|
45
|
+
gap: 0,
|
|
46
|
+
paddingLeft: '.5rem',
|
|
47
|
+
paddingRight: '.5rem',
|
|
48
|
+
},
|
|
49
|
+
animate: (isSelected) => ({
|
|
50
|
+
gap: isSelected ? '.5rem' : 0,
|
|
51
|
+
paddingLeft: isSelected ? '1rem' : '.5rem',
|
|
52
|
+
paddingRight: isSelected ? '1rem' : '.5rem',
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
const spanVariants = {
|
|
56
|
+
initial: {
|
|
57
|
+
width: 0,
|
|
58
|
+
opacity: 0,
|
|
59
|
+
},
|
|
60
|
+
animate: {
|
|
61
|
+
width: 'auto',
|
|
62
|
+
opacity: 1,
|
|
63
|
+
},
|
|
64
|
+
exit: {
|
|
65
|
+
width: 0,
|
|
66
|
+
opacity: 0,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
const transition = {
|
|
70
|
+
delay: 0.1,
|
|
71
|
+
type: 'spring',
|
|
72
|
+
bounce: 0,
|
|
73
|
+
duration: 0.6,
|
|
74
|
+
};
|
|
75
|
+
const Separator = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(() =>
|
|
76
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)('div', {
|
|
77
|
+
className: 'mx-1 h-[24px] w-[1.2px] bg-border',
|
|
78
|
+
'aria-hidden': 'true',
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
Separator.displayName = 'Separator';
|
|
82
|
+
const TabButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(
|
|
83
|
+
({ tab, index, isSelected, activeColor, onClick }) => {
|
|
84
|
+
const Icon = tab.icon;
|
|
85
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(
|
|
86
|
+
react_namespaceObject.motion.button,
|
|
87
|
+
{
|
|
88
|
+
variants: buttonVariants,
|
|
89
|
+
initial: false,
|
|
90
|
+
animate: 'animate',
|
|
91
|
+
custom: isSelected,
|
|
92
|
+
onClick: () => onClick(index),
|
|
93
|
+
transition: transition,
|
|
94
|
+
className: (0, utils_cjs_namespaceObject.cn)(
|
|
95
|
+
'relative flex flex-grow items-center justify-center rounded-xl px-4 py-2 font-medium text-sm transition-colors duration-300',
|
|
96
|
+
isSelected
|
|
97
|
+
? (0, utils_cjs_namespaceObject.cn)('bg-muted', activeColor)
|
|
98
|
+
: 'text-muted-foreground hover:bg-muted hover:text-foreground'
|
|
99
|
+
),
|
|
100
|
+
children: [
|
|
101
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Icon, {
|
|
102
|
+
size: 20,
|
|
103
|
+
}),
|
|
104
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
105
|
+
react_namespaceObject.AnimatePresence,
|
|
106
|
+
{
|
|
107
|
+
initial: false,
|
|
108
|
+
children:
|
|
109
|
+
isSelected &&
|
|
110
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
111
|
+
react_namespaceObject.motion.span,
|
|
112
|
+
{
|
|
113
|
+
variants: spanVariants,
|
|
114
|
+
initial: 'initial',
|
|
115
|
+
animate: 'animate',
|
|
116
|
+
exit: 'exit',
|
|
117
|
+
transition: transition,
|
|
118
|
+
className: 'overflow-hidden whitespace-nowrap',
|
|
119
|
+
children: tab.title,
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
],
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
);
|
|
129
|
+
TabButton.displayName = 'TabButton';
|
|
130
|
+
function ExpandableTabs({
|
|
131
|
+
tabs,
|
|
132
|
+
className,
|
|
133
|
+
activeColor = 'text-primary',
|
|
134
|
+
onChange,
|
|
135
|
+
}) {
|
|
136
|
+
const [selected, setSelected] = (0, external_react_namespaceObject.useState)(
|
|
137
|
+
0
|
|
138
|
+
);
|
|
139
|
+
const outsideClickRef = (0, external_react_namespaceObject.useRef)(null);
|
|
140
|
+
const handleInitialChange = (0,
|
|
141
|
+
external_react_namespaceObject.useCallback)(() => {
|
|
142
|
+
onChange?.(0);
|
|
143
|
+
}, [onChange]);
|
|
144
|
+
(0, external_react_namespaceObject.useEffect)(() => {
|
|
145
|
+
handleInitialChange();
|
|
146
|
+
}, [handleInitialChange]);
|
|
147
|
+
const handleOutsideClick = (0,
|
|
148
|
+
external_react_namespaceObject.useCallback)(() => {
|
|
149
|
+
setSelected(null);
|
|
150
|
+
onChange?.(null);
|
|
151
|
+
}, [onChange]);
|
|
152
|
+
(0, external_usehooks_ts_namespaceObject.useOnClickOutside)(
|
|
153
|
+
outsideClickRef,
|
|
154
|
+
handleOutsideClick
|
|
155
|
+
);
|
|
156
|
+
const handleSelect = (0, external_react_namespaceObject.useCallback)(
|
|
157
|
+
(index) => {
|
|
158
|
+
setSelected(index);
|
|
159
|
+
onChange?.(index);
|
|
160
|
+
},
|
|
161
|
+
[onChange]
|
|
162
|
+
);
|
|
163
|
+
const containerClassName = (0, external_react_namespaceObject.useMemo)(
|
|
164
|
+
() =>
|
|
165
|
+
(0, utils_cjs_namespaceObject.cn)(
|
|
166
|
+
'flex flex-wrap items-center gap-2 rounded-2xl border bg-background p-1 shadow-sm',
|
|
167
|
+
className
|
|
168
|
+
),
|
|
169
|
+
[className]
|
|
170
|
+
);
|
|
171
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)('div', {
|
|
172
|
+
ref: outsideClickRef,
|
|
173
|
+
className: containerClassName,
|
|
174
|
+
children: tabs.map((tab, index) =>
|
|
175
|
+
'separator' === tab.type
|
|
176
|
+
? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
177
|
+
Separator,
|
|
178
|
+
{},
|
|
179
|
+
`separator-${index}`
|
|
180
|
+
)
|
|
181
|
+
: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
182
|
+
TabButton,
|
|
183
|
+
{
|
|
184
|
+
tab: tab,
|
|
185
|
+
index: index,
|
|
186
|
+
isSelected: selected === index,
|
|
187
|
+
activeColor: activeColor,
|
|
188
|
+
onClick: handleSelect,
|
|
189
|
+
},
|
|
190
|
+
`${tab.title}-${index}`
|
|
191
|
+
)
|
|
192
|
+
),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
var __webpack_export_target__ = exports;
|
|
196
|
+
for (var __webpack_i__ in __webpack_exports__)
|
|
197
|
+
__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
198
|
+
if (__webpack_exports__.__esModule)
|
|
199
|
+
Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
200
|
+
value: true,
|
|
201
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { LucideIcon } from 'lucide-react';
|
|
2
|
+
interface Tab {
|
|
3
|
+
title: string;
|
|
4
|
+
icon: LucideIcon;
|
|
5
|
+
type?: never;
|
|
6
|
+
}
|
|
7
|
+
interface Separator {
|
|
8
|
+
type: 'separator';
|
|
9
|
+
title?: never;
|
|
10
|
+
icon?: never;
|
|
11
|
+
}
|
|
12
|
+
type TabItem = Tab | Separator;
|
|
13
|
+
interface ExpandableTabsProps {
|
|
14
|
+
tabs: TabItem[];
|
|
15
|
+
className?: string;
|
|
16
|
+
activeColor?: string;
|
|
17
|
+
onChange?: (index: number | null) => void;
|
|
18
|
+
}
|
|
19
|
+
declare const Separator: import('react').MemoExoticComponent<
|
|
20
|
+
() => import('react/jsx-runtime').JSX.Element
|
|
21
|
+
>;
|
|
22
|
+
export declare function ExpandableTabs({
|
|
23
|
+
tabs,
|
|
24
|
+
className,
|
|
25
|
+
activeColor,
|
|
26
|
+
onChange,
|
|
27
|
+
}: ExpandableTabsProps): import('react/jsx-runtime').JSX.Element;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=expandable-tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expandable-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/ui/expandable-tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,UAAU,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;CACb;AAED,UAAU,SAAS;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC;CACb;AAED,KAAK,OAAO,GAAG,GAAG,GAAG,SAAS,CAAC;AAE/B,UAAU,mBAAmB;IAC5B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAuBD,QAAA,MAAM,SAAS,oFAEb,CAAC;AAuDH,wBAAgB,cAAc,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,WAA4B,EAC5B,QAAQ,GACR,EAAE,mBAAmB,2CA4DrB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from 'react/jsx-runtime';
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__ from 'motion/react';
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react__ from 'react';
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE_usehooks_ts_2ed1521c__ from 'usehooks-ts';
|
|
6
|
+
import * as __WEBPACK_EXTERNAL_MODULE__libs_utils_js_eb00b89d__ from '../../libs/utils.js';
|
|
7
|
+
const buttonVariants = {
|
|
8
|
+
initial: {
|
|
9
|
+
gap: 0,
|
|
10
|
+
paddingLeft: '.5rem',
|
|
11
|
+
paddingRight: '.5rem',
|
|
12
|
+
},
|
|
13
|
+
animate: (isSelected) => ({
|
|
14
|
+
gap: isSelected ? '.5rem' : 0,
|
|
15
|
+
paddingLeft: isSelected ? '1rem' : '.5rem',
|
|
16
|
+
paddingRight: isSelected ? '1rem' : '.5rem',
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
const spanVariants = {
|
|
20
|
+
initial: {
|
|
21
|
+
width: 0,
|
|
22
|
+
opacity: 0,
|
|
23
|
+
},
|
|
24
|
+
animate: {
|
|
25
|
+
width: 'auto',
|
|
26
|
+
opacity: 1,
|
|
27
|
+
},
|
|
28
|
+
exit: {
|
|
29
|
+
width: 0,
|
|
30
|
+
opacity: 0,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
const transition = {
|
|
34
|
+
delay: 0.1,
|
|
35
|
+
type: 'spring',
|
|
36
|
+
bounce: 0,
|
|
37
|
+
duration: 0.6,
|
|
38
|
+
};
|
|
39
|
+
const Separator = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react__.memo)(
|
|
40
|
+
() =>
|
|
41
|
+
/*#__PURE__*/ (0,
|
|
42
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)('div', {
|
|
43
|
+
className: 'mx-1 h-[24px] w-[1.2px] bg-border',
|
|
44
|
+
'aria-hidden': 'true',
|
|
45
|
+
})
|
|
46
|
+
);
|
|
47
|
+
Separator.displayName = 'Separator';
|
|
48
|
+
const TabButton = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react__.memo)(
|
|
49
|
+
({ tab, index, isSelected, activeColor, onClick }) => {
|
|
50
|
+
const Icon = tab.icon;
|
|
51
|
+
return /*#__PURE__*/ (0,
|
|
52
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(
|
|
53
|
+
__WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__.motion.button,
|
|
54
|
+
{
|
|
55
|
+
variants: buttonVariants,
|
|
56
|
+
initial: false,
|
|
57
|
+
animate: 'animate',
|
|
58
|
+
custom: isSelected,
|
|
59
|
+
onClick: () => onClick(index),
|
|
60
|
+
transition: transition,
|
|
61
|
+
className: (0, __WEBPACK_EXTERNAL_MODULE__libs_utils_js_eb00b89d__.cn)(
|
|
62
|
+
'relative flex flex-grow items-center justify-center rounded-xl px-4 py-2 font-medium text-sm transition-colors duration-300',
|
|
63
|
+
isSelected
|
|
64
|
+
? (0, __WEBPACK_EXTERNAL_MODULE__libs_utils_js_eb00b89d__.cn)(
|
|
65
|
+
'bg-muted',
|
|
66
|
+
activeColor
|
|
67
|
+
)
|
|
68
|
+
: 'text-muted-foreground hover:bg-muted hover:text-foreground'
|
|
69
|
+
),
|
|
70
|
+
children: [
|
|
71
|
+
/*#__PURE__*/ (0,
|
|
72
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(Icon, {
|
|
73
|
+
size: 20,
|
|
74
|
+
}),
|
|
75
|
+
/*#__PURE__*/ (0,
|
|
76
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
77
|
+
__WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__.AnimatePresence,
|
|
78
|
+
{
|
|
79
|
+
initial: false,
|
|
80
|
+
children:
|
|
81
|
+
isSelected &&
|
|
82
|
+
/*#__PURE__*/ (0,
|
|
83
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
84
|
+
__WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__.motion.span,
|
|
85
|
+
{
|
|
86
|
+
variants: spanVariants,
|
|
87
|
+
initial: 'initial',
|
|
88
|
+
animate: 'animate',
|
|
89
|
+
exit: 'exit',
|
|
90
|
+
transition: transition,
|
|
91
|
+
className: 'overflow-hidden whitespace-nowrap',
|
|
92
|
+
children: tab.title,
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
],
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
TabButton.displayName = 'TabButton';
|
|
103
|
+
function ExpandableTabs({
|
|
104
|
+
tabs,
|
|
105
|
+
className,
|
|
106
|
+
activeColor = 'text-primary',
|
|
107
|
+
onChange,
|
|
108
|
+
}) {
|
|
109
|
+
const [selected, setSelected] = (0,
|
|
110
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useState)(0);
|
|
111
|
+
const outsideClickRef = (0, __WEBPACK_EXTERNAL_MODULE_react__.useRef)(null);
|
|
112
|
+
const handleInitialChange = (0,
|
|
113
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useCallback)(() => {
|
|
114
|
+
onChange?.(0);
|
|
115
|
+
}, [onChange]);
|
|
116
|
+
(0, __WEBPACK_EXTERNAL_MODULE_react__.useEffect)(() => {
|
|
117
|
+
handleInitialChange();
|
|
118
|
+
}, [handleInitialChange]);
|
|
119
|
+
const handleOutsideClick = (0,
|
|
120
|
+
__WEBPACK_EXTERNAL_MODULE_react__.useCallback)(() => {
|
|
121
|
+
setSelected(null);
|
|
122
|
+
onChange?.(null);
|
|
123
|
+
}, [onChange]);
|
|
124
|
+
(0, __WEBPACK_EXTERNAL_MODULE_usehooks_ts_2ed1521c__.useOnClickOutside)(
|
|
125
|
+
outsideClickRef,
|
|
126
|
+
handleOutsideClick
|
|
127
|
+
);
|
|
128
|
+
const handleSelect = (0, __WEBPACK_EXTERNAL_MODULE_react__.useCallback)(
|
|
129
|
+
(index) => {
|
|
130
|
+
setSelected(index);
|
|
131
|
+
onChange?.(index);
|
|
132
|
+
},
|
|
133
|
+
[onChange]
|
|
134
|
+
);
|
|
135
|
+
const containerClassName = (0, __WEBPACK_EXTERNAL_MODULE_react__.useMemo)(
|
|
136
|
+
() =>
|
|
137
|
+
(0, __WEBPACK_EXTERNAL_MODULE__libs_utils_js_eb00b89d__.cn)(
|
|
138
|
+
'flex flex-wrap items-center gap-2 rounded-2xl border bg-background p-1 shadow-sm',
|
|
139
|
+
className
|
|
140
|
+
),
|
|
141
|
+
[className]
|
|
142
|
+
);
|
|
143
|
+
return /*#__PURE__*/ (0,
|
|
144
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)('div', {
|
|
145
|
+
ref: outsideClickRef,
|
|
146
|
+
className: containerClassName,
|
|
147
|
+
children: tabs.map((tab, index) =>
|
|
148
|
+
'separator' === tab.type
|
|
149
|
+
? /*#__PURE__*/ (0,
|
|
150
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
151
|
+
Separator,
|
|
152
|
+
{},
|
|
153
|
+
`separator-${index}`
|
|
154
|
+
)
|
|
155
|
+
: /*#__PURE__*/ (0,
|
|
156
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
157
|
+
TabButton,
|
|
158
|
+
{
|
|
159
|
+
tab: tab,
|
|
160
|
+
index: index,
|
|
161
|
+
isSelected: selected === index,
|
|
162
|
+
activeColor: activeColor,
|
|
163
|
+
onClick: handleSelect,
|
|
164
|
+
},
|
|
165
|
+
`${tab.title}-${index}`
|
|
166
|
+
)
|
|
167
|
+
),
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
export { ExpandableTabs };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(() => {
|
|
4
|
+
__webpack_require__.d = function (exports1, definition) {
|
|
5
|
+
for (var key in definition)
|
|
6
|
+
if (
|
|
7
|
+
__webpack_require__.o(definition, key) &&
|
|
8
|
+
!__webpack_require__.o(exports1, key)
|
|
9
|
+
)
|
|
10
|
+
Object.defineProperty(exports1, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: definition[key],
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
(() => {
|
|
17
|
+
__webpack_require__.o = function (obj, prop) {
|
|
18
|
+
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
19
|
+
};
|
|
20
|
+
})();
|
|
21
|
+
(() => {
|
|
22
|
+
__webpack_require__.r = function (exports1) {
|
|
23
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag)
|
|
24
|
+
Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
25
|
+
value: 'Module',
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
28
|
+
value: true,
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
})();
|
|
32
|
+
var __webpack_exports__ = {};
|
|
33
|
+
__webpack_require__.r(__webpack_exports__);
|
|
34
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
35
|
+
Overlay: () => Overlay,
|
|
36
|
+
});
|
|
37
|
+
const jsx_runtime_namespaceObject = require('react/jsx-runtime');
|
|
38
|
+
const react_namespaceObject = require('motion/react');
|
|
39
|
+
const Overlay = ({ show }) =>
|
|
40
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
41
|
+
react_namespaceObject.AnimatePresence,
|
|
42
|
+
{
|
|
43
|
+
children:
|
|
44
|
+
show &&
|
|
45
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
46
|
+
react_namespaceObject.motion.div,
|
|
47
|
+
{
|
|
48
|
+
className:
|
|
49
|
+
'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 flex flex-col items-center justify-center overflow-y-auto bg-overlay p-4 backdrop-blur-[10px] data-[state=closed]:animate-out data-[state=open]:animate-in',
|
|
50
|
+
initial: {
|
|
51
|
+
opacity: 0,
|
|
52
|
+
},
|
|
53
|
+
animate: {
|
|
54
|
+
opacity: 1,
|
|
55
|
+
},
|
|
56
|
+
exit: {
|
|
57
|
+
opacity: 0,
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
var __webpack_export_target__ = exports;
|
|
64
|
+
for (var __webpack_i__ in __webpack_exports__)
|
|
65
|
+
__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
66
|
+
if (__webpack_exports__.__esModule)
|
|
67
|
+
Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
68
|
+
value: true,
|
|
69
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/components/ui/overlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,UAAU,YAAY;IACrB,IAAI,EAAE,OAAO,CAAC;CACd;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAapC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from 'react/jsx-runtime';
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__ from 'motion/react';
|
|
3
|
+
const Overlay = ({ show }) =>
|
|
4
|
+
/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
5
|
+
__WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__.AnimatePresence,
|
|
6
|
+
{
|
|
7
|
+
children:
|
|
8
|
+
show &&
|
|
9
|
+
/*#__PURE__*/ (0,
|
|
10
|
+
__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(
|
|
11
|
+
__WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__.motion.div,
|
|
12
|
+
{
|
|
13
|
+
className:
|
|
14
|
+
'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 flex flex-col items-center justify-center overflow-y-auto bg-overlay p-4 backdrop-blur-[10px] data-[state=closed]:animate-out data-[state=open]:animate-in',
|
|
15
|
+
initial: {
|
|
16
|
+
opacity: 0,
|
|
17
|
+
},
|
|
18
|
+
animate: {
|
|
19
|
+
opacity: 1,
|
|
20
|
+
},
|
|
21
|
+
exit: {
|
|
22
|
+
opacity: 0,
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
),
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
export { Overlay };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
var __webpack_require__ = {};
|
|
4
|
+
(() => {
|
|
5
|
+
__webpack_require__.d = function (exports1, definition) {
|
|
6
|
+
for (var key in definition)
|
|
7
|
+
if (
|
|
8
|
+
__webpack_require__.o(definition, key) &&
|
|
9
|
+
!__webpack_require__.o(exports1, key)
|
|
10
|
+
)
|
|
11
|
+
Object.defineProperty(exports1, key, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: definition[key],
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
(() => {
|
|
18
|
+
__webpack_require__.o = function (obj, prop) {
|
|
19
|
+
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
20
|
+
};
|
|
21
|
+
})();
|
|
22
|
+
(() => {
|
|
23
|
+
__webpack_require__.r = function (exports1) {
|
|
24
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag)
|
|
25
|
+
Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module',
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true,
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
ScrollArea: () => ScrollArea,
|
|
37
|
+
ScrollBar: () => ScrollBar,
|
|
38
|
+
});
|
|
39
|
+
const jsx_runtime_namespaceObject = require('react/jsx-runtime');
|
|
40
|
+
const react_scroll_area_namespaceObject = require('@radix-ui/react-scroll-area');
|
|
41
|
+
const external_react_namespaceObject = require('react');
|
|
42
|
+
const utils_cjs_namespaceObject = require('../../libs/utils.cjs');
|
|
43
|
+
const ScrollArea = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)(
|
|
44
|
+
({ className, children, ...props }, ref) =>
|
|
45
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(
|
|
46
|
+
react_scroll_area_namespaceObject.Root,
|
|
47
|
+
{
|
|
48
|
+
ref: ref,
|
|
49
|
+
className: (0, utils_cjs_namespaceObject.cn)(
|
|
50
|
+
'relative overflow-hidden',
|
|
51
|
+
className
|
|
52
|
+
),
|
|
53
|
+
...props,
|
|
54
|
+
children: [
|
|
55
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
56
|
+
react_scroll_area_namespaceObject.Viewport,
|
|
57
|
+
{
|
|
58
|
+
className: 'h-full w-full rounded-[inherit]',
|
|
59
|
+
children: children,
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ScrollBar, {}),
|
|
63
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
64
|
+
react_scroll_area_namespaceObject.Corner,
|
|
65
|
+
{}
|
|
66
|
+
),
|
|
67
|
+
],
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
);
|
|
71
|
+
ScrollArea.displayName = react_scroll_area_namespaceObject.Root.displayName;
|
|
72
|
+
const ScrollBar = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)(
|
|
73
|
+
({ className, orientation = 'vertical', ...props }, ref) =>
|
|
74
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
75
|
+
react_scroll_area_namespaceObject.ScrollAreaScrollbar,
|
|
76
|
+
{
|
|
77
|
+
ref: ref,
|
|
78
|
+
orientation: orientation,
|
|
79
|
+
className: (0, utils_cjs_namespaceObject.cn)(
|
|
80
|
+
'flex touch-none select-none transition-colors',
|
|
81
|
+
'vertical' === orientation &&
|
|
82
|
+
'h-full w-2.5 border-l border-l-transparent p-[1px]',
|
|
83
|
+
'horizontal' === orientation &&
|
|
84
|
+
'h-2.5 flex-col border-t border-t-transparent p-[1px]',
|
|
85
|
+
className
|
|
86
|
+
),
|
|
87
|
+
...props,
|
|
88
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
89
|
+
react_scroll_area_namespaceObject.ScrollAreaThumb,
|
|
90
|
+
{
|
|
91
|
+
className: 'relative flex-1 rounded-full bg-border',
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
);
|
|
97
|
+
ScrollBar.displayName =
|
|
98
|
+
react_scroll_area_namespaceObject.ScrollAreaScrollbar.displayName;
|
|
99
|
+
var __webpack_export_target__ = exports;
|
|
100
|
+
for (var __webpack_i__ in __webpack_exports__)
|
|
101
|
+
__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
102
|
+
if (__webpack_exports__.__esModule)
|
|
103
|
+
Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
104
|
+
value: true,
|
|
105
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
2
|
+
declare const ScrollArea: import('react').ForwardRefExoticComponent<
|
|
3
|
+
Omit<
|
|
4
|
+
ScrollAreaPrimitive.ScrollAreaProps &
|
|
5
|
+
import('react').RefAttributes<HTMLDivElement>,
|
|
6
|
+
'ref'
|
|
7
|
+
> &
|
|
8
|
+
import('react').RefAttributes<HTMLDivElement>
|
|
9
|
+
>;
|
|
10
|
+
declare const ScrollBar: import('react').ForwardRefExoticComponent<
|
|
11
|
+
Omit<
|
|
12
|
+
ScrollAreaPrimitive.ScrollAreaScrollbarProps &
|
|
13
|
+
import('react').RefAttributes<HTMLDivElement>,
|
|
14
|
+
'ref'
|
|
15
|
+
> &
|
|
16
|
+
import('react').RefAttributes<HTMLDivElement>
|
|
17
|
+
>;
|
|
18
|
+
export { ScrollArea, ScrollBar };
|
|
19
|
+
//# sourceMappingURL=scroll-area.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/ui/scroll-area.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AASnE,QAAA,MAAM,UAAU,6LAed,CAAC;AAGH,QAAA,MAAM,SAAS,sMAmBb,CAAC;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"}
|