@mks2508/mks-ui 0.5.4 → 0.5.8
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/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts +23 -4
- package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts +2 -2
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +292 -31
- package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts +7 -0
- package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.js +6 -1
- package/dist/react-ui/ui/DynamicToggle/{DynamicToggle-Cm6-VceQ.css → DynamicToggle-DJLwEkHr.css} +116 -51
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +116 -51
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts +1 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts.map +1 -1
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.js +9 -3
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +61 -31
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts.map +1 -1
- package/dist/react-ui/ui/DynamicToggle/index.d.ts +9 -3
- package/dist/react-ui/ui/DynamicToggle/index.d.ts.map +1 -1
- package/dist/react-ui/ui/DynamicToggle/index.js +68 -37
- package/package.json +52 -13
- package/src/assets/react.svg +0 -1
- package/src/core/index.ts +0 -7
- package/src/core/types.ts +0 -82
- package/src/css.d.ts +0 -7
- package/src/index.css +0 -129
- package/src/index.ts +0 -29
- package/src/react-ui/blocks/Terminal/ResttyAdapter.ts +0 -278
- package/src/react-ui/blocks/Terminal/Terminal.adapter.ts +0 -97
- package/src/react-ui/blocks/Terminal/Terminal.theme.restty.ts +0 -155
- package/src/react-ui/blocks/Terminal/Terminal.theme.ts +0 -80
- package/src/react-ui/blocks/Terminal/Terminal.types.ts +0 -438
- package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +0 -38
- package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +0 -254
- package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +0 -73
- package/src/react-ui/blocks/Terminal/TerminalPanel.tsx +0 -269
- package/src/react-ui/blocks/Terminal/TerminalRestty.tsx +0 -326
- package/src/react-ui/blocks/Terminal/TerminalXterm.tsx +0 -230
- package/src/react-ui/blocks/Terminal/XTermAdapter.ts +0 -163
- package/src/react-ui/blocks/Terminal/chrome.ts +0 -25
- package/src/react-ui/blocks/Terminal/components/LogLineBadges.tsx +0 -316
- package/src/react-ui/blocks/Terminal/components/SpecializedSyntaxHighlighter.tsx +0 -218
- package/src/react-ui/blocks/Terminal/components/SyntaxHighlight.tsx +0 -386
- package/src/react-ui/blocks/Terminal/components/TerminalLogBadge.tsx +0 -67
- package/src/react-ui/blocks/Terminal/components/index.ts +0 -10
- package/src/react-ui/blocks/Terminal/display.ts +0 -46
- package/src/react-ui/blocks/Terminal/hooks/index.ts +0 -22
- package/src/react-ui/blocks/Terminal/hooks/useTerminalSettings.ts +0 -229
- package/src/react-ui/blocks/Terminal/hooks/useTerminalWebSocket.ts +0 -292
- package/src/react-ui/blocks/Terminal/index.ts +0 -111
- package/src/react-ui/blocks/Terminal/panel/LogLinesViewer.tsx +0 -330
- package/src/react-ui/blocks/Terminal/panel/TerminalDebugPanel.tsx +0 -242
- package/src/react-ui/blocks/Terminal/panel/TerminalFilterDropdown.tsx +0 -202
- package/src/react-ui/blocks/Terminal/panel/TerminalFilterTabs.tsx +0 -140
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.tsx +0 -68
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanel.types.ts +0 -85
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelRestty.tsx +0 -383
- package/src/react-ui/blocks/Terminal/panel/TerminalInteractivePanelXterm.tsx +0 -439
- package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.tsx +0 -550
- package/src/react-ui/blocks/Terminal/panel/TerminalLogsPanel.types.ts +0 -259
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +0 -75
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +0 -266
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +0 -82
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelFooter.tsx +0 -112
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelHeader.tsx +0 -178
- package/src/react-ui/blocks/Terminal/panel/TerminalPanelToolbar.tsx +0 -203
- package/src/react-ui/blocks/Terminal/panel/TerminalSessionControl.tsx +0 -252
- package/src/react-ui/blocks/Terminal/panel/TerminalSessionTabs.tsx +0 -334
- package/src/react-ui/blocks/Terminal/panel/TerminalSettingsPopover.tsx +0 -261
- package/src/react-ui/blocks/Terminal/panel/TerminalThemeSelector.tsx +0 -248
- package/src/react-ui/blocks/Terminal/panel/index.ts +0 -72
- package/src/react-ui/blocks/Terminal/panel/terminal-filter-dropdown.module.css +0 -59
- package/src/react-ui/blocks/Terminal/panel/terminal-session-tabs.module.css +0 -59
- package/src/react-ui/blocks/Terminal/parsing/BadgeFormatter.ts +0 -180
- package/src/react-ui/blocks/Terminal/parsing/HttpLogParser.ts +0 -248
- package/src/react-ui/blocks/Terminal/parsing/LogParser.types.ts +0 -283
- package/src/react-ui/blocks/Terminal/parsing/LogParserService.ts +0 -686
- package/src/react-ui/blocks/Terminal/parsing/MultilineAggregator.ts +0 -466
- package/src/react-ui/blocks/Terminal/parsing/PersistentLogBuffer.ts +0 -343
- package/src/react-ui/blocks/Terminal/parsing/SyntaxHighlighter.ts +0 -167
- package/src/react-ui/blocks/Terminal/parsing/TableParser.ts +0 -348
- package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiColorMapper.ts +0 -251
- package/src/react-ui/blocks/Terminal/parsing/ansi/AnsiParser.ts +0 -390
- package/src/react-ui/blocks/Terminal/parsing/ansi/ansi.constants.ts +0 -320
- package/src/react-ui/blocks/Terminal/parsing/ansi/index.ts +0 -20
- package/src/react-ui/blocks/Terminal/parsing/index.ts +0 -69
- package/src/react-ui/blocks/Terminal/parsing/levels/LogLevel.types.ts +0 -68
- package/src/react-ui/blocks/Terminal/parsing/levels/LogLevelDetector.ts +0 -436
- package/src/react-ui/blocks/Terminal/parsing/levels/index.ts +0 -14
- package/src/react-ui/blocks/index.ts +0 -11
- package/src/react-ui/components/MorphingPopover/MorphingPopover.types.ts +0 -49
- package/src/react-ui/components/MorphingPopover/index.tsx +0 -186
- package/src/react-ui/components/MorphingPopover/morphing-popover.module.css +0 -153
- package/src/react-ui/components/index.ts +0 -9
- package/src/react-ui/hooks/Animation/UseAutoHeight.tsx +0 -123
- package/src/react-ui/hooks/DOM/UseIsInView.tsx +0 -44
- package/src/react-ui/hooks/Formatting/UseListFormat.ts +0 -134
- package/src/react-ui/hooks/State/UseControlledState.tsx +0 -57
- package/src/react-ui/hooks/State/UseDataState.tsx +0 -76
- package/src/react-ui/hooks/index.ts +0 -20
- package/src/react-ui/icons/index.ts +0 -12
- package/src/react-ui/icons/lucide-animated/activity.tsx +0 -109
- package/src/react-ui/icons/lucide-animated/arrow-down-to-line.tsx +0 -51
- package/src/react-ui/icons/lucide-animated/arrow-up.tsx +0 -50
- package/src/react-ui/icons/lucide-animated/bell-electric.tsx +0 -124
- package/src/react-ui/icons/lucide-animated/bell.tsx +0 -93
- package/src/react-ui/icons/lucide-animated/bot.tsx +0 -122
- package/src/react-ui/icons/lucide-animated/box.tsx +0 -117
- package/src/react-ui/icons/lucide-animated/check.tsx +0 -21
- package/src/react-ui/icons/lucide-animated/circle-check.tsx +0 -107
- package/src/react-ui/icons/lucide-animated/delete.tsx +0 -133
- package/src/react-ui/icons/lucide-animated/download.tsx +0 -99
- package/src/react-ui/icons/lucide-animated/edit-2.tsx +0 -21
- package/src/react-ui/icons/lucide-animated/globe.tsx +0 -23
- package/src/react-ui/icons/lucide-animated/home.tsx +0 -103
- package/src/react-ui/icons/lucide-animated/index.ts +0 -38
- package/src/react-ui/icons/lucide-animated/layers.tsx +0 -23
- package/src/react-ui/icons/lucide-animated/layout-panel-top.tsx +0 -143
- package/src/react-ui/icons/lucide-animated/list.tsx +0 -54
- package/src/react-ui/icons/lucide-animated/package.tsx +0 -24
- package/src/react-ui/icons/lucide-animated/palette.tsx +0 -25
- package/src/react-ui/icons/lucide-animated/plus.tsx +0 -92
- package/src/react-ui/icons/lucide-animated/refresh-cw.tsx +0 -24
- package/src/react-ui/icons/lucide-animated/rocket.tsx +0 -24
- package/src/react-ui/icons/lucide-animated/save.tsx +0 -23
- package/src/react-ui/icons/lucide-animated/search.tsx +0 -94
- package/src/react-ui/icons/lucide-animated/settings.tsx +0 -92
- package/src/react-ui/icons/lucide-animated/terminal.tsx +0 -46
- package/src/react-ui/icons/lucide-animated/trash-2.tsx +0 -25
- package/src/react-ui/icons/lucide-animated/trending-down.tsx +0 -151
- package/src/react-ui/icons/lucide-animated/trending-up.tsx +0 -150
- package/src/react-ui/icons/lucide-animated/type.tsx +0 -23
- package/src/react-ui/icons/lucide-animated/upload.tsx +0 -23
- package/src/react-ui/icons/lucide-animated/x.tsx +0 -102
- package/src/react-ui/index.ts +0 -30
- package/src/react-ui/lib/get-strict-context.tsx +0 -56
- package/src/react-ui/lib/icon-wrapper.tsx +0 -70
- package/src/react-ui/lib/index.ts +0 -9
- package/src/react-ui/lib/utils.ts +0 -24
- package/src/react-ui/primitives/AutoHeight/index.tsx +0 -74
- package/src/react-ui/primitives/CountingNumber/index.tsx +0 -147
- package/src/react-ui/primitives/Highlight/Highlight.types.ts +0 -136
- package/src/react-ui/primitives/Highlight/index.tsx +0 -577
- package/src/react-ui/primitives/Slot/index.tsx +0 -128
- package/src/react-ui/primitives/index.ts +0 -16
- package/src/react-ui/primitives/waapi/Gooey/Gooey.types.ts +0 -123
- package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +0 -80
- package/src/react-ui/primitives/waapi/Gooey/GooeyFilter.tsx +0 -77
- package/src/react-ui/primitives/waapi/Gooey/MorphPath.tsx +0 -58
- package/src/react-ui/primitives/waapi/Gooey/gooey-utils.ts +0 -244
- package/src/react-ui/primitives/waapi/Gooey/index.ts +0 -50
- package/src/react-ui/primitives/waapi/Gooey/useMorphPath.ts +0 -48
- package/src/react-ui/primitives/waapi/Morph/Morph.types.ts +0 -106
- package/src/react-ui/primitives/waapi/Morph/MorphContext.tsx +0 -21
- package/src/react-ui/primitives/waapi/Morph/index.tsx +0 -56
- package/src/react-ui/primitives/waapi/Morph/techniques/index.ts +0 -12
- package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +0 -89
- package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +0 -176
- package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +0 -87
- package/src/react-ui/primitives/waapi/Morph/useMorph.ts +0 -101
- package/src/react-ui/primitives/waapi/Reorder/Reorder.types.ts +0 -177
- package/src/react-ui/primitives/waapi/Reorder/index.tsx +0 -260
- package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +0 -47
- package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +0 -209
- package/src/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.ts +0 -104
- package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.ts +0 -14
- package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.ts +0 -84
- package/src/react-ui/primitives/waapi/SlidingNumber/index.tsx +0 -474
- package/src/react-ui/primitives/waapi/SlidingText/SlidingText.styles.ts +0 -32
- package/src/react-ui/primitives/waapi/SlidingText/SlidingText.types.ts +0 -69
- package/src/react-ui/primitives/waapi/SlidingText/index.tsx +0 -140
- package/src/react-ui/primitives/waapi/core/animationConstants.ts +0 -215
- package/src/react-ui/primitives/waapi/core/index.ts +0 -53
- package/src/react-ui/primitives/waapi/core/types.ts +0 -200
- package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +0 -430
- package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +0 -81
- package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +0 -138
- package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +0 -106
- package/src/react-ui/primitives/waapi/index.ts +0 -139
- package/src/react-ui/styles/animations.css +0 -369
- package/src/react-ui/ui/Accordion/Accordion.styles.ts +0 -72
- package/src/react-ui/ui/Accordion/Accordion.types.ts +0 -199
- package/src/react-ui/ui/Accordion/index.tsx +0 -362
- package/src/react-ui/ui/AlertDialog/AlertDialog.styles.ts +0 -38
- package/src/react-ui/ui/AlertDialog/AlertDialog.types.ts +0 -296
- package/src/react-ui/ui/AlertDialog/index.tsx +0 -540
- package/src/react-ui/ui/Badge/Badge.styles.ts +0 -43
- package/src/react-ui/ui/Badge/Badge.types.ts +0 -26
- package/src/react-ui/ui/Badge/index.tsx +0 -34
- package/src/react-ui/ui/Button/Button.styles.ts +0 -57
- package/src/react-ui/ui/Button/Button.types.ts +0 -63
- package/src/react-ui/ui/Button/index.tsx +0 -155
- package/src/react-ui/ui/Card/Card.styles.ts +0 -32
- package/src/react-ui/ui/Card/Card.types.ts +0 -39
- package/src/react-ui/ui/Card/index.tsx +0 -130
- package/src/react-ui/ui/Checkbox/Checkbox.styles.ts +0 -40
- package/src/react-ui/ui/Checkbox/Checkbox.types.ts +0 -98
- package/src/react-ui/ui/Checkbox/index.tsx +0 -233
- package/src/react-ui/ui/Combobox/Combobox.styles.ts +0 -34
- package/src/react-ui/ui/Combobox/Combobox.types.ts +0 -89
- package/src/react-ui/ui/Combobox/index.tsx +0 -331
- package/src/react-ui/ui/CornerBracket/CornerBracket.styles.ts +0 -38
- package/src/react-ui/ui/CornerBracket/CornerBracket.types.ts +0 -15
- package/src/react-ui/ui/CornerBracket/index.tsx +0 -49
- package/src/react-ui/ui/DataCard/DataCard.styles.ts +0 -94
- package/src/react-ui/ui/DataCard/DataCard.types.ts +0 -125
- package/src/react-ui/ui/DataCard/index.tsx +0 -340
- package/src/react-ui/ui/Dialog/Dialog.styles.ts +0 -59
- package/src/react-ui/ui/Dialog/Dialog.types.ts +0 -284
- package/src/react-ui/ui/Dialog/index.tsx +0 -452
- package/src/react-ui/ui/DropdownMenu/DropdownMenu.styles.ts +0 -35
- package/src/react-ui/ui/DropdownMenu/DropdownMenu.types.ts +0 -81
- package/src/react-ui/ui/DropdownMenu/index.tsx +0 -300
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.css +0 -303
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +0 -85
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +0 -174
- package/src/react-ui/ui/DynamicToggle/index.tsx +0 -294
- package/src/react-ui/ui/DynamicToggle/prototype-v7.html +0 -615
- package/src/react-ui/ui/DynamicToggle/prototype.html +0 -419
- package/src/react-ui/ui/Field/Field.styles.ts +0 -47
- package/src/react-ui/ui/Field/Field.types.ts +0 -60
- package/src/react-ui/ui/Field/index.tsx +0 -254
- package/src/react-ui/ui/Input/Input.styles.ts +0 -11
- package/src/react-ui/ui/Input/Input.types.ts +0 -10
- package/src/react-ui/ui/Input/index.tsx +0 -32
- package/src/react-ui/ui/InputGroup/InputGroup.styles.ts +0 -53
- package/src/react-ui/ui/InputGroup/InputGroup.types.ts +0 -44
- package/src/react-ui/ui/InputGroup/index.tsx +0 -149
- package/src/react-ui/ui/Label/Label.styles.ts +0 -10
- package/src/react-ui/ui/Label/Label.types.ts +0 -9
- package/src/react-ui/ui/Label/index.tsx +0 -27
- package/src/react-ui/ui/Menu/Menu.styles.ts +0 -71
- package/src/react-ui/ui/Menu/Menu.types.ts +0 -425
- package/src/react-ui/ui/Menu/index.tsx +0 -900
- package/src/react-ui/ui/Popover/Popover.styles.ts +0 -55
- package/src/react-ui/ui/Popover/Popover.types.ts +0 -261
- package/src/react-ui/ui/Popover/index.tsx +0 -422
- package/src/react-ui/ui/Progress/Progress.styles.ts +0 -36
- package/src/react-ui/ui/Progress/Progress.types.ts +0 -162
- package/src/react-ui/ui/Progress/index.tsx +0 -254
- package/src/react-ui/ui/Select/Select.styles.ts +0 -30
- package/src/react-ui/ui/Select/Select.types.ts +0 -51
- package/src/react-ui/ui/Select/index.tsx +0 -225
- package/src/react-ui/ui/Separator/Separator.styles.ts +0 -10
- package/src/react-ui/ui/Separator/Separator.types.ts +0 -10
- package/src/react-ui/ui/Separator/index.tsx +0 -37
- package/src/react-ui/ui/Switch/Switch.styles.ts +0 -50
- package/src/react-ui/ui/Switch/Switch.types.ts +0 -155
- package/src/react-ui/ui/Switch/index.tsx +0 -253
- package/src/react-ui/ui/Tabs/Tabs.css +0 -39
- package/src/react-ui/ui/Tabs/Tabs.styles.ts +0 -148
- package/src/react-ui/ui/Tabs/Tabs.types.ts +0 -255
- package/src/react-ui/ui/Tabs/index.tsx +0 -529
- package/src/react-ui/ui/TextFlow/TextFlow.styles.ts +0 -36
- package/src/react-ui/ui/TextFlow/TextFlow.types.ts +0 -118
- package/src/react-ui/ui/TextFlow/index.tsx +0 -276
- package/src/react-ui/ui/Textarea/Textarea.styles.ts +0 -10
- package/src/react-ui/ui/Textarea/Textarea.types.ts +0 -9
- package/src/react-ui/ui/Textarea/index.tsx +0 -27
- package/src/react-ui/ui/Tooltip/Tooltip.styles.ts +0 -43
- package/src/react-ui/ui/Tooltip/Tooltip.types.ts +0 -253
- package/src/react-ui/ui/Tooltip/index.tsx +0 -394
- package/src/react-ui/ui/index.ts +0 -41
- package/src/types/css-modules.d.ts +0 -18
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import type { Variants } from "motion/react";
|
|
4
|
-
import { motion, useAnimation } from "motion/react";
|
|
5
|
-
import type { HTMLAttributes } from "react";
|
|
6
|
-
import { forwardRef, useCallback, useImperativeHandle, useRef } from "react";
|
|
7
|
-
|
|
8
|
-
import { cn } from "@/react-ui/lib/utils";
|
|
9
|
-
|
|
10
|
-
export interface TrendingDownIconHandle {
|
|
11
|
-
startAnimation: () => void;
|
|
12
|
-
stopAnimation: () => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface TrendingDownIconProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
-
size?: number;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const SVG_VARIANTS: Variants = {
|
|
20
|
-
animate: {
|
|
21
|
-
x: 0,
|
|
22
|
-
y: 0,
|
|
23
|
-
translateX: [0, 2, 0],
|
|
24
|
-
translateY: [0, 2, 0],
|
|
25
|
-
transition: {
|
|
26
|
-
duration: 0.5,
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const PATH_VARIANTS: Variants = {
|
|
32
|
-
normal: {
|
|
33
|
-
opacity: 1,
|
|
34
|
-
pathLength: 1,
|
|
35
|
-
transition: {
|
|
36
|
-
duration: 0.4,
|
|
37
|
-
opacity: { duration: 0.1 },
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
animate: {
|
|
41
|
-
opacity: [0, 1],
|
|
42
|
-
pathLength: [0, 1],
|
|
43
|
-
pathOffset: [1, 0],
|
|
44
|
-
transition: {
|
|
45
|
-
duration: 0.4,
|
|
46
|
-
opacity: { duration: 0.1 },
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const ARROW_VARIANTS: Variants = {
|
|
52
|
-
normal: {
|
|
53
|
-
opacity: 1,
|
|
54
|
-
pathLength: 1,
|
|
55
|
-
transition: {
|
|
56
|
-
delay: 0.3,
|
|
57
|
-
duration: 0.3,
|
|
58
|
-
opacity: { duration: 0.1, delay: 0.3 },
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
animate: {
|
|
62
|
-
opacity: [0, 1],
|
|
63
|
-
pathLength: [0, 1],
|
|
64
|
-
pathOffset: [0.5, 0],
|
|
65
|
-
transition: {
|
|
66
|
-
delay: 0.3,
|
|
67
|
-
duration: 0.3,
|
|
68
|
-
opacity: { duration: 0.1, delay: 0.3 },
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
const TrendingDownIcon = forwardRef<
|
|
74
|
-
TrendingDownIconHandle,
|
|
75
|
-
TrendingDownIconProps
|
|
76
|
-
>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
|
|
77
|
-
const controls = useAnimation();
|
|
78
|
-
const isControlledRef = useRef(false);
|
|
79
|
-
|
|
80
|
-
useImperativeHandle(ref, () => {
|
|
81
|
-
isControlledRef.current = true;
|
|
82
|
-
|
|
83
|
-
return {
|
|
84
|
-
startAnimation: () => controls.start("animate"),
|
|
85
|
-
stopAnimation: () => controls.start("normal"),
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
const handleMouseEnter = useCallback(
|
|
90
|
-
(e: React.MouseEvent<HTMLDivElement>) => {
|
|
91
|
-
if (isControlledRef.current) {
|
|
92
|
-
onMouseEnter?.(e);
|
|
93
|
-
} else {
|
|
94
|
-
controls.start("animate");
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
[controls, onMouseEnter]
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
const handleMouseLeave = useCallback(
|
|
101
|
-
(e: React.MouseEvent<HTMLDivElement>) => {
|
|
102
|
-
if (isControlledRef.current) {
|
|
103
|
-
onMouseLeave?.(e);
|
|
104
|
-
} else {
|
|
105
|
-
controls.start("normal");
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
[controls, onMouseLeave]
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
return (
|
|
112
|
-
<div
|
|
113
|
-
className={cn(className)}
|
|
114
|
-
onMouseEnter={handleMouseEnter}
|
|
115
|
-
onMouseLeave={handleMouseLeave}
|
|
116
|
-
{...props}
|
|
117
|
-
>
|
|
118
|
-
<motion.svg
|
|
119
|
-
animate={controls}
|
|
120
|
-
fill="none"
|
|
121
|
-
height={size}
|
|
122
|
-
initial="normal"
|
|
123
|
-
stroke="currentColor"
|
|
124
|
-
strokeLinecap="round"
|
|
125
|
-
strokeLinejoin="round"
|
|
126
|
-
strokeWidth="2"
|
|
127
|
-
variants={SVG_VARIANTS}
|
|
128
|
-
viewBox="0 0 24 24"
|
|
129
|
-
width={size}
|
|
130
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
131
|
-
>
|
|
132
|
-
<motion.polyline
|
|
133
|
-
animate={controls}
|
|
134
|
-
initial="normal"
|
|
135
|
-
points="22 17 13.5 8.5 8.5 13.5 2 7"
|
|
136
|
-
variants={PATH_VARIANTS}
|
|
137
|
-
/>
|
|
138
|
-
<motion.polyline
|
|
139
|
-
animate={controls}
|
|
140
|
-
initial="normal"
|
|
141
|
-
points="16 17 22 17 22 11"
|
|
142
|
-
variants={ARROW_VARIANTS}
|
|
143
|
-
/>
|
|
144
|
-
</motion.svg>
|
|
145
|
-
</div>
|
|
146
|
-
);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
TrendingDownIcon.displayName = "TrendingDownIcon";
|
|
150
|
-
|
|
151
|
-
export { TrendingDownIcon };
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import type { Variants } from "motion/react";
|
|
4
|
-
import { motion, useAnimation } from "motion/react";
|
|
5
|
-
import type { HTMLAttributes } from "react";
|
|
6
|
-
import { forwardRef, useCallback, useImperativeHandle, useRef } from "react";
|
|
7
|
-
|
|
8
|
-
import { cn } from "@/react-ui/lib/utils";
|
|
9
|
-
|
|
10
|
-
export interface TrendingUpIconHandle {
|
|
11
|
-
startAnimation: () => void;
|
|
12
|
-
stopAnimation: () => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface TrendingUpIconProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
-
size?: number;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const SVG_VARIANTS: Variants = {
|
|
20
|
-
animate: {
|
|
21
|
-
x: 0,
|
|
22
|
-
y: 0,
|
|
23
|
-
translateX: [0, 2, 0],
|
|
24
|
-
translateY: [0, -2, 0],
|
|
25
|
-
transition: {
|
|
26
|
-
duration: 0.5,
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const PATH_VARIANTS: Variants = {
|
|
32
|
-
normal: {
|
|
33
|
-
opacity: 1,
|
|
34
|
-
pathLength: 1,
|
|
35
|
-
transition: {
|
|
36
|
-
duration: 0.4,
|
|
37
|
-
opacity: { duration: 0.1 },
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
animate: {
|
|
41
|
-
opacity: [0, 1],
|
|
42
|
-
pathLength: [0, 1],
|
|
43
|
-
pathOffset: [1, 0],
|
|
44
|
-
transition: {
|
|
45
|
-
duration: 0.4,
|
|
46
|
-
opacity: { duration: 0.1 },
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const ARROW_VARIANTS: Variants = {
|
|
52
|
-
normal: {
|
|
53
|
-
opacity: 1,
|
|
54
|
-
pathLength: 1,
|
|
55
|
-
transition: {
|
|
56
|
-
delay: 0.3,
|
|
57
|
-
duration: 0.3,
|
|
58
|
-
opacity: { duration: 0.1, delay: 0.3 },
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
animate: {
|
|
62
|
-
opacity: [0, 1],
|
|
63
|
-
pathLength: [0, 1],
|
|
64
|
-
pathOffset: [0.5, 0],
|
|
65
|
-
transition: {
|
|
66
|
-
delay: 0.3,
|
|
67
|
-
duration: 0.3,
|
|
68
|
-
opacity: { duration: 0.1, delay: 0.3 },
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
const TrendingUpIcon = forwardRef<TrendingUpIconHandle, TrendingUpIconProps>(
|
|
74
|
-
({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
|
|
75
|
-
const controls = useAnimation();
|
|
76
|
-
const isControlledRef = useRef(false);
|
|
77
|
-
|
|
78
|
-
useImperativeHandle(ref, () => {
|
|
79
|
-
isControlledRef.current = true;
|
|
80
|
-
|
|
81
|
-
return {
|
|
82
|
-
startAnimation: () => controls.start("animate"),
|
|
83
|
-
stopAnimation: () => controls.start("normal"),
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
const handleMouseEnter = useCallback(
|
|
88
|
-
(e: React.MouseEvent<HTMLDivElement>) => {
|
|
89
|
-
if (isControlledRef.current) {
|
|
90
|
-
onMouseEnter?.(e);
|
|
91
|
-
} else {
|
|
92
|
-
controls.start("animate");
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
[controls, onMouseEnter]
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const handleMouseLeave = useCallback(
|
|
99
|
-
(e: React.MouseEvent<HTMLDivElement>) => {
|
|
100
|
-
if (isControlledRef.current) {
|
|
101
|
-
onMouseLeave?.(e);
|
|
102
|
-
} else {
|
|
103
|
-
controls.start("normal");
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
[controls, onMouseLeave]
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
return (
|
|
110
|
-
<div
|
|
111
|
-
className={cn(className)}
|
|
112
|
-
onMouseEnter={handleMouseEnter}
|
|
113
|
-
onMouseLeave={handleMouseLeave}
|
|
114
|
-
{...props}
|
|
115
|
-
>
|
|
116
|
-
<motion.svg
|
|
117
|
-
animate={controls}
|
|
118
|
-
fill="none"
|
|
119
|
-
height={size}
|
|
120
|
-
initial="normal"
|
|
121
|
-
stroke="currentColor"
|
|
122
|
-
strokeLinecap="round"
|
|
123
|
-
strokeLinejoin="round"
|
|
124
|
-
strokeWidth="2"
|
|
125
|
-
variants={SVG_VARIANTS}
|
|
126
|
-
viewBox="0 0 24 24"
|
|
127
|
-
width={size}
|
|
128
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
129
|
-
>
|
|
130
|
-
<motion.polyline
|
|
131
|
-
animate={controls}
|
|
132
|
-
initial="normal"
|
|
133
|
-
points="22 7 13.5 15.5 8.5 10.5 2 17"
|
|
134
|
-
variants={PATH_VARIANTS}
|
|
135
|
-
/>
|
|
136
|
-
<motion.polyline
|
|
137
|
-
animate={controls}
|
|
138
|
-
initial="normal"
|
|
139
|
-
points="16 7 22 7 22 13"
|
|
140
|
-
variants={ARROW_VARIANTS}
|
|
141
|
-
/>
|
|
142
|
-
</motion.svg>
|
|
143
|
-
</div>
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
TrendingUpIcon.displayName = "TrendingUpIcon";
|
|
149
|
-
|
|
150
|
-
export { TrendingUpIcon };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type Icon
|
|
3
|
-
*
|
|
4
|
-
* Font/text/icon.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export function Type(props: React.SVGProps<SVGSVGElement>) {
|
|
8
|
-
return (
|
|
9
|
-
<svg
|
|
10
|
-
{...props}
|
|
11
|
-
viewBox="0 0 24 24"
|
|
12
|
-
fill="none"
|
|
13
|
-
stroke="currentColor"
|
|
14
|
-
strokeWidth="2"
|
|
15
|
-
strokeLinecap="round"
|
|
16
|
-
strokeLinejoin="round"
|
|
17
|
-
>
|
|
18
|
-
<polyline points="4 7 4 4 20 4 20 7" />
|
|
19
|
-
<line x1="9" x2="15" y1="20" y2="20" />
|
|
20
|
-
<line x1="12" x2="12" y1="4" y2="20" />
|
|
21
|
-
</svg>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Upload Icon
|
|
3
|
-
*
|
|
4
|
-
* Upload arrow icon.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export function Upload(props: React.SVGProps<SVGSVGElement>) {
|
|
8
|
-
return (
|
|
9
|
-
<svg
|
|
10
|
-
{...props}
|
|
11
|
-
viewBox="0 0 24 24"
|
|
12
|
-
fill="none"
|
|
13
|
-
stroke="currentColor"
|
|
14
|
-
strokeWidth="2"
|
|
15
|
-
strokeLinecap="round"
|
|
16
|
-
strokeLinejoin="round"
|
|
17
|
-
>
|
|
18
|
-
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
|
|
19
|
-
<polyline points="17 8 12 3 7 8" />
|
|
20
|
-
<line x1="12" x2="12" y1="3" y2="15" />
|
|
21
|
-
</svg>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import type { Variants } from "motion/react";
|
|
4
|
-
import { motion, useAnimation } from "motion/react";
|
|
5
|
-
import type { HTMLAttributes } from "react";
|
|
6
|
-
import { forwardRef, useCallback, useImperativeHandle, useRef } from "react";
|
|
7
|
-
|
|
8
|
-
import { cn } from "@/react-ui/lib/utils";
|
|
9
|
-
|
|
10
|
-
export interface XIconHandle {
|
|
11
|
-
startAnimation: () => void;
|
|
12
|
-
stopAnimation: () => void;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface XIconProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
-
size?: number;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const PATH_VARIANTS: Variants = {
|
|
20
|
-
normal: {
|
|
21
|
-
opacity: 1,
|
|
22
|
-
pathLength: 1,
|
|
23
|
-
},
|
|
24
|
-
animate: {
|
|
25
|
-
opacity: [0, 1],
|
|
26
|
-
pathLength: [0, 1],
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const XIcon = forwardRef<XIconHandle, XIconProps>(
|
|
31
|
-
({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
|
|
32
|
-
const controls = useAnimation();
|
|
33
|
-
const isControlledRef = useRef(false);
|
|
34
|
-
|
|
35
|
-
useImperativeHandle(ref, () => {
|
|
36
|
-
isControlledRef.current = true;
|
|
37
|
-
|
|
38
|
-
return {
|
|
39
|
-
startAnimation: () => controls.start("animate"),
|
|
40
|
-
stopAnimation: () => controls.start("normal"),
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
const handleMouseEnter = useCallback(
|
|
45
|
-
(e: React.MouseEvent<HTMLDivElement>) => {
|
|
46
|
-
if (isControlledRef.current) {
|
|
47
|
-
onMouseEnter?.(e);
|
|
48
|
-
} else {
|
|
49
|
-
controls.start("animate");
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
[controls, onMouseEnter]
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
const handleMouseLeave = useCallback(
|
|
56
|
-
(e: React.MouseEvent<HTMLDivElement>) => {
|
|
57
|
-
if (isControlledRef.current) {
|
|
58
|
-
onMouseLeave?.(e);
|
|
59
|
-
} else {
|
|
60
|
-
controls.start("normal");
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
[controls, onMouseLeave]
|
|
64
|
-
);
|
|
65
|
-
return (
|
|
66
|
-
<div
|
|
67
|
-
className={cn(className)}
|
|
68
|
-
onMouseEnter={handleMouseEnter}
|
|
69
|
-
onMouseLeave={handleMouseLeave}
|
|
70
|
-
{...props}
|
|
71
|
-
>
|
|
72
|
-
<svg
|
|
73
|
-
fill="none"
|
|
74
|
-
height={size}
|
|
75
|
-
stroke="currentColor"
|
|
76
|
-
strokeLinecap="round"
|
|
77
|
-
strokeLinejoin="round"
|
|
78
|
-
strokeWidth="2"
|
|
79
|
-
viewBox="0 0 24 24"
|
|
80
|
-
width={size}
|
|
81
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
82
|
-
>
|
|
83
|
-
<motion.path
|
|
84
|
-
animate={controls}
|
|
85
|
-
d="M18 6 6 18"
|
|
86
|
-
variants={PATH_VARIANTS}
|
|
87
|
-
/>
|
|
88
|
-
<motion.path
|
|
89
|
-
animate={controls}
|
|
90
|
-
d="m6 6 12 12"
|
|
91
|
-
transition={{ delay: 0.2 }}
|
|
92
|
-
variants={PATH_VARIANTS}
|
|
93
|
-
/>
|
|
94
|
-
</svg>
|
|
95
|
-
</div>
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
XIcon.displayName = "XIcon";
|
|
101
|
-
|
|
102
|
-
export { XIcon };
|
package/src/react-ui/index.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React components, hooks, icons, and utilities barrel export.
|
|
3
|
-
*
|
|
4
|
-
* @module @mks2508/mks-ui/react
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```tsx
|
|
8
|
-
* import { Button, Card, Dialog, CornerBracket } from '@mks2508/mks-ui/react';
|
|
9
|
-
* import { useAutoHeight, useControlledState } from '@mks2508/mks-ui/react';
|
|
10
|
-
* import { cn } from '@mks2508/mks-ui/react';
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
// Primitives (internal building blocks, re-exported for advanced use)
|
|
15
|
-
export * from './primitives';
|
|
16
|
-
|
|
17
|
-
// UI components (primary public API)
|
|
18
|
-
export * from './ui';
|
|
19
|
-
|
|
20
|
-
// Complex components (CSS modules, advanced patterns)
|
|
21
|
-
export * from './components';
|
|
22
|
-
|
|
23
|
-
// Custom hooks
|
|
24
|
-
export * from './hooks';
|
|
25
|
-
|
|
26
|
-
// Icons
|
|
27
|
-
export * from './icons';
|
|
28
|
-
|
|
29
|
-
// Utilities
|
|
30
|
-
export * from './lib';
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Creates a strict context pair — a Provider and a hook that throws
|
|
5
|
-
* if used outside the Provider.
|
|
6
|
-
*
|
|
7
|
-
* @param name - Display name for error messages
|
|
8
|
-
* @returns A tuple of [Provider, useSafeContext]
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* const [ThemeProvider, useTheme] = getStrictContext<IThemeContext>('ThemeProvider');
|
|
13
|
-
*
|
|
14
|
-
* function App() {
|
|
15
|
-
* return (
|
|
16
|
-
* <ThemeProvider value={{ mode: 'dark' }}>
|
|
17
|
-
* <MyComponent />
|
|
18
|
-
* </ThemeProvider>
|
|
19
|
-
* );
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
function getStrictContext<T>(
|
|
24
|
-
name?: string,
|
|
25
|
-
): readonly [
|
|
26
|
-
({
|
|
27
|
-
value,
|
|
28
|
-
children,
|
|
29
|
-
}: {
|
|
30
|
-
value: T;
|
|
31
|
-
children?: React.ReactNode;
|
|
32
|
-
}) => React.JSX.Element,
|
|
33
|
-
() => T,
|
|
34
|
-
] {
|
|
35
|
-
const Context = React.createContext<T | undefined>(undefined);
|
|
36
|
-
|
|
37
|
-
const Provider = ({
|
|
38
|
-
value,
|
|
39
|
-
children,
|
|
40
|
-
}: {
|
|
41
|
-
value: T;
|
|
42
|
-
children?: React.ReactNode;
|
|
43
|
-
}) => <Context.Provider value={value}>{children}</Context.Provider>;
|
|
44
|
-
|
|
45
|
-
const useSafeContext = () => {
|
|
46
|
-
const ctx = React.useContext(Context);
|
|
47
|
-
if (ctx === undefined) {
|
|
48
|
-
throw new Error(`useContext must be used within ${name ?? 'a Provider'}`);
|
|
49
|
-
}
|
|
50
|
-
return ctx;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
return [Provider, useSafeContext] as const;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export { getStrictContext };
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Icon Wrapper Component.
|
|
3
|
-
*
|
|
4
|
-
* Ensures consistent sizing across different icon types.
|
|
5
|
-
* Some icons use explicit size props, others use CSS classes.
|
|
6
|
-
*
|
|
7
|
-
* @module @mks2508/mks-ui/react/lib/icon-wrapper
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
'use client';
|
|
11
|
-
|
|
12
|
-
import type { HTMLAttributes } from 'react';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Icons that use explicit size prop instead of CSS classes.
|
|
16
|
-
* These icons have SVG elements with width/height attributes.
|
|
17
|
-
*/
|
|
18
|
-
const SIZEABLE_ICONS = new Set([
|
|
19
|
-
'DownloadIcon',
|
|
20
|
-
'EyeIcon',
|
|
21
|
-
'EyeOffIcon',
|
|
22
|
-
'SearchIcon',
|
|
23
|
-
'XIcon',
|
|
24
|
-
'DeleteIcon',
|
|
25
|
-
'TerminalIcon',
|
|
26
|
-
'PlusIcon',
|
|
27
|
-
]);
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Icon wrapper props interface.
|
|
31
|
-
*/
|
|
32
|
-
export interface IIconWrapperProps extends HTMLAttributes<HTMLDivElement> {
|
|
33
|
-
/**
|
|
34
|
-
* The icon component to render.
|
|
35
|
-
* Accepts ComponentType, ForwardRefExoticComponent, or any renderable component.
|
|
36
|
-
* Broad type needed for React 19 compatibility across duplicate @types/react copies.
|
|
37
|
-
*/
|
|
38
|
-
icon: React.ComponentType<any> | React.ExoticComponent<any>;
|
|
39
|
-
/** Size in pixels for icons that use size prop (default: 16) */
|
|
40
|
-
size?: number;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Icon wrapper that ensures consistent sizing across different icon types.
|
|
45
|
-
*
|
|
46
|
-
* Some icons from the UI package use explicit size props (width/height on SVG),
|
|
47
|
-
* while others use CSS classes (w-4 h-4). This wrapper detects the icon type
|
|
48
|
-
* and applies the appropriate sizing method.
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```tsx
|
|
52
|
-
* <IconWrapper icon={DownloadIcon} size={16} className="text-primary" />
|
|
53
|
-
* <IconWrapper icon={KeyIcon} className="text-muted-foreground" />
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
export function IconWrapper({
|
|
57
|
-
icon: Icon,
|
|
58
|
-
className,
|
|
59
|
-
size = 16,
|
|
60
|
-
...props
|
|
61
|
-
}: IIconWrapperProps) {
|
|
62
|
-
const iconName = (Icon as any).displayName || Icon.name || '';
|
|
63
|
-
const useSizeProp = SIZEABLE_ICONS.has(iconName);
|
|
64
|
-
|
|
65
|
-
if (useSizeProp) {
|
|
66
|
-
return <Icon size={size} className={className} {...props} />;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return <Icon className={className} {...props} />;
|
|
70
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React-specific utility functions barrel export.
|
|
3
|
-
*
|
|
4
|
-
* @module @mks2508/mks-ui/react/lib
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export { cn } from './utils';
|
|
8
|
-
export { getStrictContext } from './get-strict-context';
|
|
9
|
-
export { IconWrapper, type IIconWrapperProps } from './icon-wrapper';
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React-specific utility functions.
|
|
3
|
-
*
|
|
4
|
-
* @module @mks2508/mks-ui/react/lib/utils
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { type ClassValue, clsx } from 'clsx';
|
|
8
|
-
import { twMerge } from 'tailwind-merge';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Merge class names with Tailwind CSS class deduplication.
|
|
12
|
-
*
|
|
13
|
-
* @param inputs - Class values to merge
|
|
14
|
-
* @returns Merged and deduplicated class string
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* cn('px-2 py-1', 'px-4') // 'py-1 px-4'
|
|
19
|
-
* cn('bg-red-500', condition && 'bg-blue-500')
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export function cn(...inputs: ClassValue[]): string {
|
|
23
|
-
return twMerge(clsx(inputs));
|
|
24
|
-
}
|