@mks2508/mks-ui 0.5.7 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react-ui/index.js +2 -2
- package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts +2 -0
- package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts +1 -1
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +173 -43
- package/dist/react-ui/ui/Dialog/Dialog.styles.d.ts.map +1 -1
- package/dist/react-ui/ui/Dialog/Dialog.styles.js +1 -0
- package/dist/react-ui/ui/Dialog/Dialog.types.d.ts +20 -1
- package/dist/react-ui/ui/Dialog/Dialog.types.d.ts.map +1 -1
- package/dist/react-ui/ui/Dialog/index.d.ts +28 -7
- package/dist/react-ui/ui/Dialog/index.d.ts.map +1 -1
- package/dist/react-ui/ui/Dialog/index.js +32 -5
- package/dist/react-ui/ui/DynamicToggle/{DynamicToggle-DOR3Ld-k.css → DynamicToggle-DJLwEkHr.css} +12 -19
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +12 -20
- 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 +7 -1
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +55 -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 +47 -34
- package/dist/react-ui/ui/index.js +1 -1
- 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 -141
- package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +0 -217
- 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 -253
- 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 -376
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +0 -85
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +0 -180
- package/src/react-ui/ui/DynamicToggle/index.tsx +0 -316
- package/src/react-ui/ui/DynamicToggle/prototype-v7-ios.html +0 -413
- package/src/react-ui/ui/DynamicToggle/prototype-v7.html +0 -615
- package/src/react-ui/ui/DynamicToggle/prototype-v8-gooey-safari.html +0 -560
- package/src/react-ui/ui/DynamicToggle/prototype-v8b-react-structure.html +0 -227
- 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,74 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import {
|
|
5
|
-
motion,
|
|
6
|
-
type HTMLMotionProps,
|
|
7
|
-
type LegacyAnimationControls,
|
|
8
|
-
type TargetAndTransition,
|
|
9
|
-
type Transition,
|
|
10
|
-
} from 'motion/react';
|
|
11
|
-
|
|
12
|
-
import { useAutoHeight } from '@/react-ui/hooks/Animation/UseAutoHeight';
|
|
13
|
-
import { Slot, type WithAsChild } from '@/react-ui/primitives/Slot';
|
|
14
|
-
|
|
15
|
-
/** Props for the AutoHeight primitive component. */
|
|
16
|
-
type IAutoHeightProps = WithAsChild<
|
|
17
|
-
{
|
|
18
|
-
children: React.ReactNode;
|
|
19
|
-
/** Dependency list to trigger re-measurement. */
|
|
20
|
-
deps?: React.DependencyList;
|
|
21
|
-
/** Motion animate target. */
|
|
22
|
-
animate?: TargetAndTransition | LegacyAnimationControls;
|
|
23
|
-
/** Motion transition config. */
|
|
24
|
-
transition?: Transition;
|
|
25
|
-
} & Omit<HTMLMotionProps<'div'>, 'animate'>
|
|
26
|
-
>;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* AutoHeight primitive — animates height changes of dynamic content.
|
|
30
|
-
* Uses ResizeObserver internally to track content height and Motion for animation.
|
|
31
|
-
*
|
|
32
|
-
* @param deps - Dependency list to trigger re-measurement
|
|
33
|
-
* @param transition - Motion spring/tween transition config
|
|
34
|
-
* @param asChild - Render as child element using Slot pattern
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```tsx
|
|
38
|
-
* <AutoHeight deps={[content]}>
|
|
39
|
-
* <div>{content}</div>
|
|
40
|
-
* </AutoHeight>
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
function AutoHeight({
|
|
44
|
-
children,
|
|
45
|
-
deps = [],
|
|
46
|
-
transition = {
|
|
47
|
-
type: 'spring',
|
|
48
|
-
stiffness: 300,
|
|
49
|
-
damping: 30,
|
|
50
|
-
bounce: 0,
|
|
51
|
-
restDelta: 0.01,
|
|
52
|
-
},
|
|
53
|
-
style,
|
|
54
|
-
animate,
|
|
55
|
-
asChild = false,
|
|
56
|
-
...props
|
|
57
|
-
}: IAutoHeightProps) {
|
|
58
|
-
const { ref, height } = useAutoHeight<HTMLDivElement>(deps);
|
|
59
|
-
|
|
60
|
-
const Comp = asChild ? Slot : motion.div;
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<Comp
|
|
64
|
-
style={{ overflow: 'hidden', ...style }}
|
|
65
|
-
animate={{ height, ...animate }}
|
|
66
|
-
transition={transition}
|
|
67
|
-
{...props}
|
|
68
|
-
>
|
|
69
|
-
<div ref={ref}>{children}</div>
|
|
70
|
-
</Comp>
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export { AutoHeight, type IAutoHeightProps };
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { useMotionValue, useSpring, type SpringOptions } from 'motion/react';
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
useIsInView,
|
|
8
|
-
type IUseIsInViewOptions,
|
|
9
|
-
} from '@/react-ui/hooks/DOM/UseIsInView';
|
|
10
|
-
|
|
11
|
-
/** Props for the CountingNumber primitive. */
|
|
12
|
-
type ICountingNumberProps = Omit<React.ComponentProps<'span'>, 'children'> & {
|
|
13
|
-
/** Target number to animate to. */
|
|
14
|
-
number: number;
|
|
15
|
-
/** Starting number (default: 0). */
|
|
16
|
-
fromNumber?: number;
|
|
17
|
-
/** Pad integer part with leading zeros. */
|
|
18
|
-
padStart?: boolean;
|
|
19
|
-
/** Decimal separator character. */
|
|
20
|
-
decimalSeparator?: string;
|
|
21
|
-
/** Number of decimal places to show. */
|
|
22
|
-
decimalPlaces?: number;
|
|
23
|
-
/** Spring transition options. */
|
|
24
|
-
transition?: SpringOptions;
|
|
25
|
-
/** Delay in ms before animation starts. */
|
|
26
|
-
delay?: number;
|
|
27
|
-
/** Start at target number instead of fromNumber. */
|
|
28
|
-
initiallyStable?: boolean;
|
|
29
|
-
} & IUseIsInViewOptions;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* CountingNumber primitive — animates a number from one value to another
|
|
33
|
-
* using spring physics. Supports decimal places, padding, and in-view triggers.
|
|
34
|
-
*
|
|
35
|
-
* @param number - Target number to animate to
|
|
36
|
-
* @param fromNumber - Starting number (default: 0)
|
|
37
|
-
* @param transition - Spring physics options
|
|
38
|
-
* @param inView - Only animate when in viewport
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```tsx
|
|
42
|
-
* <CountingNumber number={1234} transition={{ stiffness: 90, damping: 50 }} />
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```tsx
|
|
47
|
-
* <CountingNumber number={99.99} decimalPlaces={2} decimalSeparator="," inView inViewOnce />
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
function CountingNumber({
|
|
51
|
-
ref,
|
|
52
|
-
number,
|
|
53
|
-
fromNumber = 0,
|
|
54
|
-
padStart = false,
|
|
55
|
-
inView = false,
|
|
56
|
-
inViewMargin = '0px',
|
|
57
|
-
inViewOnce = true,
|
|
58
|
-
decimalSeparator = '.',
|
|
59
|
-
transition = { stiffness: 90, damping: 50 },
|
|
60
|
-
decimalPlaces = 0,
|
|
61
|
-
delay = 0,
|
|
62
|
-
initiallyStable = false,
|
|
63
|
-
...props
|
|
64
|
-
}: ICountingNumberProps) {
|
|
65
|
-
const { ref: localRef, isInView } = useIsInView(
|
|
66
|
-
ref as React.Ref<HTMLElement>,
|
|
67
|
-
{
|
|
68
|
-
inView,
|
|
69
|
-
inViewOnce,
|
|
70
|
-
inViewMargin,
|
|
71
|
-
},
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
const numberStr = number.toString();
|
|
75
|
-
const decimals =
|
|
76
|
-
typeof decimalPlaces === 'number'
|
|
77
|
-
? decimalPlaces
|
|
78
|
-
: numberStr.includes('.')
|
|
79
|
-
? (numberStr.split('.')[1]?.length ?? 0)
|
|
80
|
-
: 0;
|
|
81
|
-
|
|
82
|
-
const motionVal = useMotionValue(initiallyStable ? number : fromNumber);
|
|
83
|
-
const springVal = useSpring(motionVal, transition);
|
|
84
|
-
|
|
85
|
-
React.useEffect(() => {
|
|
86
|
-
const timeoutId = setTimeout(() => {
|
|
87
|
-
if (isInView) motionVal.set(number);
|
|
88
|
-
}, delay);
|
|
89
|
-
|
|
90
|
-
return () => clearTimeout(timeoutId);
|
|
91
|
-
}, [isInView, number, motionVal, delay]);
|
|
92
|
-
|
|
93
|
-
React.useEffect(() => {
|
|
94
|
-
const unsubscribe = springVal.on('change', (latest) => {
|
|
95
|
-
if (localRef.current) {
|
|
96
|
-
let formatted =
|
|
97
|
-
decimals > 0
|
|
98
|
-
? latest.toFixed(decimals)
|
|
99
|
-
: Math.round(latest).toString();
|
|
100
|
-
|
|
101
|
-
if (decimals > 0) {
|
|
102
|
-
formatted = formatted.replace('.', decimalSeparator);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (padStart) {
|
|
106
|
-
const finalIntLength = Math.floor(Math.abs(number)).toString().length;
|
|
107
|
-
const [intPart, fracPart] = formatted.split(decimalSeparator);
|
|
108
|
-
const paddedInt = intPart?.padStart(finalIntLength, '0') ?? '';
|
|
109
|
-
formatted = fracPart
|
|
110
|
-
? `${paddedInt}${decimalSeparator}${fracPart}`
|
|
111
|
-
: paddedInt;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
localRef.current.textContent = formatted;
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
return () => unsubscribe();
|
|
118
|
-
}, [springVal, decimals, padStart, number, decimalSeparator, localRef]);
|
|
119
|
-
|
|
120
|
-
const finalIntLength = Math.floor(Math.abs(number)).toString().length;
|
|
121
|
-
|
|
122
|
-
const formatValue = (val: number) => {
|
|
123
|
-
let out = decimals > 0 ? val.toFixed(decimals) : Math.round(val).toString();
|
|
124
|
-
if (decimals > 0) out = out.replace('.', decimalSeparator);
|
|
125
|
-
if (padStart) {
|
|
126
|
-
const [intPart, fracPart] = out.split(decimalSeparator);
|
|
127
|
-
const paddedInt = (intPart ?? '').padStart(finalIntLength, '0');
|
|
128
|
-
out = fracPart ? `${paddedInt}${decimalSeparator}${fracPart}` : paddedInt;
|
|
129
|
-
}
|
|
130
|
-
return out;
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
const zeroText = padStart
|
|
134
|
-
? '0'.padStart(finalIntLength, '0') +
|
|
135
|
-
(decimals > 0 ? decimalSeparator + '0'.repeat(decimals) : '')
|
|
136
|
-
: '0' + (decimals > 0 ? decimalSeparator + '0'.repeat(decimals) : '');
|
|
137
|
-
|
|
138
|
-
const initialText = initiallyStable ? formatValue(number) : zeroText;
|
|
139
|
-
|
|
140
|
-
return (
|
|
141
|
-
<span ref={localRef} data-slot="counting-number" {...props}>
|
|
142
|
-
{initialText}
|
|
143
|
-
</span>
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export { CountingNumber, type ICountingNumberProps };
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import type { Transition } from 'motion/react';
|
|
2
|
-
|
|
3
|
-
/** Mode for highlight tracking. */
|
|
4
|
-
export type HighlightMode = 'children' | 'parent';
|
|
5
|
-
|
|
6
|
-
/** Bounding rectangle offsets. */
|
|
7
|
-
export type Bounds = {
|
|
8
|
-
top: number;
|
|
9
|
-
left: number;
|
|
10
|
-
width: number;
|
|
11
|
-
height: number;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/** Internal context type for Highlight state. */
|
|
15
|
-
export type HighlightContextType<T extends string> = {
|
|
16
|
-
as?: keyof HTMLElementTagNameMap;
|
|
17
|
-
mode: HighlightMode;
|
|
18
|
-
activeValue: T | null;
|
|
19
|
-
setActiveValue: (value: T | null) => void;
|
|
20
|
-
setBounds: (bounds: DOMRect) => void;
|
|
21
|
-
clearBounds: () => void;
|
|
22
|
-
id: string;
|
|
23
|
-
hover: boolean;
|
|
24
|
-
click: boolean;
|
|
25
|
-
className?: string;
|
|
26
|
-
style?: React.CSSProperties;
|
|
27
|
-
activeClassName?: string;
|
|
28
|
-
setActiveClassName: (className: string) => void;
|
|
29
|
-
transition?: Transition;
|
|
30
|
-
disabled?: boolean;
|
|
31
|
-
enabled?: boolean;
|
|
32
|
-
exitDelay?: number;
|
|
33
|
-
forceUpdateBounds?: boolean;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
/** Base props shared by all Highlight variants. */
|
|
37
|
-
export type BaseHighlightProps<T extends React.ElementType = 'div'> = {
|
|
38
|
-
as?: T;
|
|
39
|
-
ref?: React.Ref<HTMLDivElement>;
|
|
40
|
-
mode?: HighlightMode;
|
|
41
|
-
value?: string | null;
|
|
42
|
-
defaultValue?: string | null;
|
|
43
|
-
onValueChange?: (value: string | null) => void;
|
|
44
|
-
className?: string;
|
|
45
|
-
style?: React.CSSProperties;
|
|
46
|
-
transition?: Transition;
|
|
47
|
-
hover?: boolean;
|
|
48
|
-
click?: boolean;
|
|
49
|
-
disabled?: boolean;
|
|
50
|
-
enabled?: boolean;
|
|
51
|
-
exitDelay?: number;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/** Props specific to parent mode. */
|
|
55
|
-
export type ParentModeHighlightProps = {
|
|
56
|
-
boundsOffset?: Partial<Bounds>;
|
|
57
|
-
containerClassName?: string;
|
|
58
|
-
forceUpdateBounds?: boolean;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
/** Controlled parent mode highlight props. */
|
|
62
|
-
export type ControlledParentModeHighlightProps<T extends React.ElementType = 'div'> =
|
|
63
|
-
BaseHighlightProps<T> &
|
|
64
|
-
ParentModeHighlightProps & {
|
|
65
|
-
mode: 'parent';
|
|
66
|
-
controlledItems: true;
|
|
67
|
-
children: React.ReactNode;
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
/** Controlled children mode highlight props. */
|
|
71
|
-
export type ControlledChildrenModeHighlightProps<T extends React.ElementType = 'div'> =
|
|
72
|
-
BaseHighlightProps<T> & {
|
|
73
|
-
mode?: 'children' | undefined;
|
|
74
|
-
controlledItems: true;
|
|
75
|
-
children: React.ReactNode;
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/** Uncontrolled parent mode highlight props. */
|
|
79
|
-
export type UncontrolledParentModeHighlightProps<T extends React.ElementType = 'div'> =
|
|
80
|
-
BaseHighlightProps<T> &
|
|
81
|
-
ParentModeHighlightProps & {
|
|
82
|
-
mode: 'parent';
|
|
83
|
-
controlledItems?: false;
|
|
84
|
-
itemsClassName?: string;
|
|
85
|
-
children: React.ReactElement | React.ReactElement[];
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
/** Uncontrolled children mode highlight props. */
|
|
89
|
-
export type UncontrolledChildrenModeHighlightProps<
|
|
90
|
-
T extends React.ElementType = 'div',
|
|
91
|
-
> = BaseHighlightProps<T> & {
|
|
92
|
-
mode?: 'children';
|
|
93
|
-
controlledItems?: false;
|
|
94
|
-
itemsClassName?: string;
|
|
95
|
-
children: React.ReactElement | React.ReactElement[];
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Props for the Highlight component.
|
|
100
|
-
* Discriminated union supporting controlled/uncontrolled + children/parent modes.
|
|
101
|
-
*/
|
|
102
|
-
export type IHighlightProps<T extends React.ElementType = 'div'> =
|
|
103
|
-
| ControlledParentModeHighlightProps<T>
|
|
104
|
-
| ControlledChildrenModeHighlightProps<T>
|
|
105
|
-
| UncontrolledParentModeHighlightProps<T>
|
|
106
|
-
| UncontrolledChildrenModeHighlightProps<T>;
|
|
107
|
-
|
|
108
|
-
/** Extended child props used internally by HighlightItem. */
|
|
109
|
-
export type ExtendedChildProps = React.ComponentProps<'div'> & {
|
|
110
|
-
id?: string;
|
|
111
|
-
ref?: React.Ref<HTMLElement>;
|
|
112
|
-
'data-active'?: string;
|
|
113
|
-
'data-value'?: string;
|
|
114
|
-
'data-disabled'?: boolean;
|
|
115
|
-
'data-highlight'?: boolean;
|
|
116
|
-
'data-slot'?: string;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Props for a HighlightItem within a Highlight container.
|
|
121
|
-
*/
|
|
122
|
-
export type IHighlightItemProps<T extends React.ElementType = 'div'> =
|
|
123
|
-
React.ComponentProps<T> & {
|
|
124
|
-
as?: T;
|
|
125
|
-
children: React.ReactElement;
|
|
126
|
-
id?: string;
|
|
127
|
-
value?: string;
|
|
128
|
-
className?: string;
|
|
129
|
-
style?: React.CSSProperties;
|
|
130
|
-
transition?: Transition;
|
|
131
|
-
activeClassName?: string;
|
|
132
|
-
disabled?: boolean;
|
|
133
|
-
exitDelay?: number;
|
|
134
|
-
asChild?: boolean;
|
|
135
|
-
forceUpdateBounds?: boolean;
|
|
136
|
-
};
|