@mks2508/mks-ui 0.5.1 → 0.5.4
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 +8 -1
- package/dist/react-ui/primitives/index.js +5 -0
- package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts +103 -0
- package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts +10 -0
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +59 -0
- package/dist/react-ui/primitives/waapi/Gooey/GooeyFilter.d.ts +7 -0
- package/dist/react-ui/primitives/waapi/Gooey/GooeyFilter.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/GooeyFilter.js +78 -0
- package/dist/react-ui/primitives/waapi/Gooey/MorphPath.d.ts +7 -0
- package/dist/react-ui/primitives/waapi/Gooey/MorphPath.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/MorphPath.js +51 -0
- package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts +87 -0
- package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.js +177 -0
- package/dist/react-ui/primitives/waapi/Gooey/index.d.ts +28 -0
- package/dist/react-ui/primitives/waapi/Gooey/index.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/index.js +5 -0
- package/dist/react-ui/primitives/waapi/Gooey/useMorphPath.d.ts +7 -0
- package/dist/react-ui/primitives/waapi/Gooey/useMorphPath.d.ts.map +1 -0
- package/dist/react-ui/primitives/waapi/Gooey/useMorphPath.js +47 -0
- package/dist/react-ui/primitives/waapi/index.d.ts +2 -0
- package/dist/react-ui/primitives/waapi/index.d.ts.map +1 -1
- package/dist/react-ui/primitives/waapi/index.js +6 -0
- package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts +26 -16
- package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts.map +1 -1
- package/dist/react-ui/ui/DataCard/DataCard.styles.js +36 -74
- package/dist/react-ui/ui/DataCard/DataCard.types.d.ts +50 -70
- package/dist/react-ui/ui/DataCard/DataCard.types.d.ts.map +1 -1
- package/dist/react-ui/ui/DataCard/index.d.ts +24 -93
- package/dist/react-ui/ui/DataCard/index.d.ts.map +1 -1
- package/dist/react-ui/ui/DataCard/index.js +76 -118
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle-Cm6-VceQ.css +304 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +303 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.js +0 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts +35 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts.map +1 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.js +67 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +138 -0
- package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts.map +1 -0
- package/dist/react-ui/ui/DynamicToggle/index.d.ts +31 -0
- package/dist/react-ui/ui/DynamicToggle/index.d.ts.map +1 -0
- package/dist/react-ui/ui/DynamicToggle/index.js +188 -0
- package/dist/react-ui/ui/Switch/index.js +1 -1
- package/dist/react-ui/ui/index.d.ts +1 -0
- package/dist/react-ui/ui/index.d.ts.map +1 -1
- package/dist/react-ui/ui/index.js +2 -0
- package/package.json +2 -2
- package/src/css.d.ts +1 -0
- package/src/react-ui/primitives/waapi/Gooey/Gooey.types.ts +123 -0
- package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +80 -0
- package/src/react-ui/primitives/waapi/Gooey/GooeyFilter.tsx +77 -0
- package/src/react-ui/primitives/waapi/Gooey/MorphPath.tsx +58 -0
- package/src/react-ui/primitives/waapi/Gooey/gooey-utils.ts +244 -0
- package/src/react-ui/primitives/waapi/Gooey/index.ts +50 -0
- package/src/react-ui/primitives/waapi/Gooey/useMorphPath.ts +48 -0
- package/src/react-ui/primitives/waapi/index.ts +23 -0
- package/src/react-ui/ui/DataCard/DataCard.styles.ts +45 -101
- package/src/react-ui/ui/DataCard/DataCard.types.ts +52 -73
- package/src/react-ui/ui/DataCard/index.tsx +118 -184
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.css +303 -0
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +85 -0
- package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +174 -0
- package/src/react-ui/ui/DynamicToggle/index.tsx +294 -0
- package/src/react-ui/ui/DynamicToggle/prototype-v7.html +615 -0
- package/src/react-ui/ui/DynamicToggle/prototype.html +419 -0
- package/src/react-ui/ui/Switch/index.tsx +1 -1
- package/src/react-ui/ui/index.ts +3 -0
- /package/dist/react-ui/blocks/Terminal/panel/{terminal-filter-dropdown.module-CNVWCefU.css → terminal-filter-dropdown.module-C6oDcFBS.css} +0 -0
- /package/dist/react-ui/blocks/Terminal/panel/{terminal-session-tabs.module-cmyJ11jP.css → terminal-session-tabs.module-D_-sgyza.css} +0 -0
- /package/dist/react-ui/components/MorphingPopover/{morphing-popover.module-BycNI8nU.css → morphing-popover.module-B1ftlaYj.css} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gooey — SVG-based morphing primitives for organic shape merging.
|
|
3
|
+
*
|
|
4
|
+
* Two techniques:
|
|
5
|
+
* - **Filter**: `GooeyCanvas` / `GooeyFilter` — SVG filter merges same-colored shapes
|
|
6
|
+
* - **Path**: `MorphPath` / `useMorphPath` — parametric SVG path with Bezier junctions
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* // Filter approach — automatic merge
|
|
11
|
+
* <GooeyCanvas height={40}>
|
|
12
|
+
* <div className="bg-card rounded-full h-10 w-64" />
|
|
13
|
+
* <div className="bg-card absolute bottom-full rounded-lg h-6 w-32" />
|
|
14
|
+
* </GooeyCanvas>
|
|
15
|
+
*
|
|
16
|
+
* // Path approach — precise control
|
|
17
|
+
* <svg><MorphPath pillWidth={260} bodyWidth={180} totalHeight={60} progress={0.5} fill="var(--card)" /></svg>
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @module @mks2508/mks-ui/react/primitives/waapi/Gooey
|
|
21
|
+
*/
|
|
22
|
+
export { GooeyFilter } from './GooeyFilter';
|
|
23
|
+
export { GooeyCanvas } from './GooeyCanvas';
|
|
24
|
+
export { MorphPath } from './MorphPath';
|
|
25
|
+
export { useMorphPath } from './useMorphPath';
|
|
26
|
+
export { GOOEY_DEFAULTS, computeBlur, buildColorMatrixValues, buildFilterString, memoizePath, morphPathDown, morphPathUp, morphPathDownMemo, morphPathUpMemo, } from './gooey-utils';
|
|
27
|
+
export type { IGooeyFilterProps, IGooeyCanvasProps, IMorphPathProps, IUseMorphPathOptions, } from './Gooey.types';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/Gooey/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EACL,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GOOEY_DEFAULTS, buildColorMatrixValues, buildFilterString, computeBlur, memoizePath, morphPathDown, morphPathUp } from "./gooey-utils.js";
|
|
2
|
+
import { GooeyFilter } from "./GooeyFilter.js";
|
|
3
|
+
import { GooeyCanvas } from "./GooeyCanvas.js";
|
|
4
|
+
import { useMorphPath } from "./useMorphPath.js";
|
|
5
|
+
import { MorphPath } from "./MorphPath.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IUseMorphPathOptions } from './Gooey.types';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a parametric SVG morph path from dimensions and progress.
|
|
4
|
+
*/
|
|
5
|
+
declare function useMorphPath({ pillWidth, bodyWidth, totalHeight, progress, pillHeight, direction, }: IUseMorphPathOptions): string;
|
|
6
|
+
export { useMorphPath };
|
|
7
|
+
//# sourceMappingURL=useMorphPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMorphPath.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/Gooey/useMorphPath.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;GAEG;AACH,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAuC,EACvC,SAAkB,GACnB,EAAE,oBAAoB,GAAG,MAAM,CAK/B;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { GOOEY_DEFAULTS, morphPathDown, morphPathUp } from "./gooey-utils.js";
|
|
4
|
+
import { useMemo } from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/react-ui/primitives/waapi/Gooey/useMorphPath.ts
|
|
7
|
+
/**
|
|
8
|
+
* useMorphPath — hook that generates a parametric SVG path d-string.
|
|
9
|
+
*
|
|
10
|
+
* Returns a memoized path for a pill shape morphing into a blob.
|
|
11
|
+
* Use with `<path d={path} />` in an SVG element.
|
|
12
|
+
*
|
|
13
|
+
* @param opts - Dimensions and progress
|
|
14
|
+
* @returns SVG path d-string
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* const path = useMorphPath({
|
|
19
|
+
* pillWidth: 260,
|
|
20
|
+
* bodyWidth: 180,
|
|
21
|
+
* totalHeight: 60,
|
|
22
|
+
* progress: expanded ? 1 : 0,
|
|
23
|
+
* direction: 'up',
|
|
24
|
+
* });
|
|
25
|
+
* return <svg><path d={path} fill="var(--card)" /></svg>;
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @module @mks2508/mks-ui/react/primitives/waapi/Gooey
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Generate a parametric SVG morph path from dimensions and progress.
|
|
32
|
+
*/
|
|
33
|
+
function useMorphPath({ pillWidth, bodyWidth, totalHeight, progress, pillHeight = GOOEY_DEFAULTS.PILL_HEIGHT, direction = "down" }) {
|
|
34
|
+
return useMemo(() => {
|
|
35
|
+
return (direction === "up" ? morphPathUp : morphPathDown)(pillWidth, bodyWidth, totalHeight, progress, pillHeight);
|
|
36
|
+
}, [
|
|
37
|
+
pillWidth,
|
|
38
|
+
bodyWidth,
|
|
39
|
+
totalHeight,
|
|
40
|
+
progress,
|
|
41
|
+
pillHeight,
|
|
42
|
+
direction
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { useMorphPath };
|
|
@@ -30,4 +30,6 @@ export { useMorphContext } from './Morph/MorphContext';
|
|
|
30
30
|
export { useFLIPClipPath } from './Morph/techniques/useFLIPClipPath';
|
|
31
31
|
export { useCSSGridMorph } from './Morph/techniques/useCSSGridMorph';
|
|
32
32
|
export { useViewTransitions } from './Morph/techniques/useViewTransitions';
|
|
33
|
+
export { GooeyFilter, GooeyCanvas, MorphPath, useMorphPath, GOOEY_DEFAULTS, computeBlur, buildColorMatrixValues, buildFilterString, morphPathDown, morphPathUp, } from './Gooey';
|
|
34
|
+
export type { IGooeyFilterProps, IGooeyCanvasProps, IMorphPathProps, IUseMorphPathOptions, } from './Gooey';
|
|
33
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/primitives/waapi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAGlD,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,QAAQ,CAAC;AAKhB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,mBAAmB,EACnB,cAAc,GACf,MAAM,qCAAqC,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAKzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAK5G,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/primitives/waapi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAGlD,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,QAAQ,CAAC;AAKhB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,mBAAmB,EACnB,cAAc,GACf,MAAM,qCAAqC,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAKzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAK5G,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAM3E,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
|
|
@@ -16,3 +16,9 @@ import { useCSSGridMorph } from "./Morph/techniques/useCSSGridMorph.js";
|
|
|
16
16
|
import { useViewTransitions } from "./Morph/techniques/useViewTransitions.js";
|
|
17
17
|
import { useMorph } from "./Morph/useMorph.js";
|
|
18
18
|
import { Morph } from "./Morph/index.js";
|
|
19
|
+
import { GOOEY_DEFAULTS, buildColorMatrixValues, buildFilterString, computeBlur, morphPathDown, morphPathUp } from "./Gooey/gooey-utils.js";
|
|
20
|
+
import { GooeyFilter } from "./Gooey/GooeyFilter.js";
|
|
21
|
+
import { GooeyCanvas } from "./Gooey/GooeyCanvas.js";
|
|
22
|
+
import { useMorphPath } from "./Gooey/useMorphPath.js";
|
|
23
|
+
import { MorphPath } from "./Gooey/MorphPath.js";
|
|
24
|
+
import "./Gooey/index.js";
|
|
@@ -1,17 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataCard style slots + CVA variants.
|
|
3
|
+
*
|
|
4
|
+
* Glassmorphism card for dashboard metrics/stats.
|
|
5
|
+
* Uses semantic CSS variables — theme-adaptive.
|
|
6
|
+
*
|
|
7
|
+
* @module @mks2508/mks-ui/react/ui/DataCard
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <DataCard variant="accent" size="default">
|
|
12
|
+
* <DataCardLabel title="Revenue" />
|
|
13
|
+
* <DataCardValue number={45678} unit="$" />
|
|
14
|
+
* </DataCard>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
1
17
|
import type { StyleSlots } from '../../../core/types';
|
|
2
18
|
/**
|
|
3
|
-
* Visual
|
|
4
|
-
* Each slot maps to: customizable visual region.
|
|
19
|
+
* Visual slots for DataCard component family.
|
|
5
20
|
*/
|
|
6
|
-
export type DataCardSlot = 'root' | 'bracket' | '
|
|
21
|
+
export type DataCardSlot = 'root' | 'bracket' | 'value' | 'label' | 'toggle' | 'actions';
|
|
7
22
|
/**
|
|
8
|
-
* Base style slots for
|
|
9
|
-
* Uses glassmorphism pattern from: Synthwave Dark design system.
|
|
23
|
+
* Base style slots for DataCard.
|
|
10
24
|
*/
|
|
11
25
|
export declare const dataCardStyles: StyleSlots<DataCardSlot>;
|
|
12
26
|
/**
|
|
13
|
-
* CVA variants for
|
|
14
|
-
*
|
|
27
|
+
* CVA variants for DataCard root.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* <DataCard variant="accent" size="compact" glass>...</DataCard>
|
|
32
|
+
* ```
|
|
15
33
|
*/
|
|
16
34
|
export declare const dataCardVariants: (props?: ({
|
|
17
35
|
size?: "default" | "compact" | "spacious" | null | undefined;
|
|
@@ -19,17 +37,9 @@ export declare const dataCardVariants: (props?: ({
|
|
|
19
37
|
glass?: boolean | null | undefined;
|
|
20
38
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
21
39
|
/**
|
|
22
|
-
*
|
|
40
|
+
* Bracket visibility animation CVA.
|
|
23
41
|
*/
|
|
24
42
|
export declare const bracketVariants: (props?: ({
|
|
25
43
|
animate?: boolean | null | undefined;
|
|
26
44
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
27
|
-
/**
|
|
28
|
-
* State-specific styles for DataCard interactions.
|
|
29
|
-
*/
|
|
30
|
-
export declare const dataCardStateStyles: {
|
|
31
|
-
hovered: string;
|
|
32
|
-
pressed: string;
|
|
33
|
-
disabled: string;
|
|
34
|
-
};
|
|
35
45
|
//# sourceMappingURL=DataCard.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCard.styles.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DataCard/DataCard.styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataCard.styles.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DataCard/DataCard.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,YAAY,CAOnD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;;;;8EA2B3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;8EAU1B,CAAC"}
|
|
@@ -2,86 +2,56 @@ import { cva } from "class-variance-authority";
|
|
|
2
2
|
|
|
3
3
|
//#region src/react-ui/ui/DataCard/DataCard.styles.ts
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* DataCard style slots + CVA variants.
|
|
6
|
+
*
|
|
7
|
+
* Glassmorphism card for dashboard metrics/stats.
|
|
8
|
+
* Uses semantic CSS variables — theme-adaptive.
|
|
9
|
+
*
|
|
10
|
+
* @module @mks2508/mks-ui/react/ui/DataCard
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <DataCard variant="accent" size="default">
|
|
15
|
+
* <DataCardLabel title="Revenue" />
|
|
16
|
+
* <DataCardValue number={45678} unit="$" />
|
|
17
|
+
* </DataCard>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Base style slots for DataCard.
|
|
7
22
|
*/
|
|
8
23
|
const dataCardStyles = {
|
|
9
24
|
root: "group/data-card relative isolate rounded-xl transition-all duration-300",
|
|
10
|
-
bracket: "absolute pointer-events-none transition-opacity duration-300",
|
|
11
|
-
header: "flex flex-col gap-1.5 px-5 pt-5 pb-2",
|
|
25
|
+
bracket: "absolute inset-0 pointer-events-none transition-opacity duration-300",
|
|
12
26
|
value: "flex items-baseline gap-1 tabular-nums tracking-tight",
|
|
13
27
|
label: "text-sm font-medium",
|
|
14
28
|
toggle: "flex items-center justify-between gap-3",
|
|
15
|
-
actions: "flex items-center gap-2"
|
|
16
|
-
footer: "mt-auto px-5 pb-4 pt-2"
|
|
29
|
+
actions: "flex items-center gap-2"
|
|
17
30
|
};
|
|
18
31
|
/**
|
|
19
|
-
* CVA variants for
|
|
20
|
-
*
|
|
32
|
+
* CVA variants for DataCard root.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```tsx
|
|
36
|
+
* <DataCard variant="accent" size="compact" glass>...</DataCard>
|
|
37
|
+
* ```
|
|
21
38
|
*/
|
|
22
39
|
const dataCardVariants = cva(dataCardStyles.root, {
|
|
23
40
|
variants: {
|
|
24
41
|
size: {
|
|
25
|
-
compact:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
footer: "px-3 pb-1.5 pt-1"
|
|
29
|
-
},
|
|
30
|
-
default: {
|
|
31
|
-
root: "p-4",
|
|
32
|
-
header: "gap-1.5 px-4 pt-4 pb-2",
|
|
33
|
-
footer: "px-4 pb-2 pt-2"
|
|
34
|
-
},
|
|
35
|
-
spacious: {
|
|
36
|
-
root: "p-6",
|
|
37
|
-
header: "gap-2 px-6 pt-6 pb-3",
|
|
38
|
-
footer: "px-6 pb-3 pt-2"
|
|
39
|
-
}
|
|
42
|
+
compact: "p-3",
|
|
43
|
+
default: "p-4",
|
|
44
|
+
spacious: "p-6"
|
|
40
45
|
},
|
|
41
46
|
variant: {
|
|
42
|
-
default:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"shadow-lg shadow-black/20"
|
|
48
|
-
].join(" "),
|
|
49
|
-
accent: [
|
|
50
|
-
"bg-cyan-500/10",
|
|
51
|
-
"backdrop-blur-lg",
|
|
52
|
-
"border border-cyan-400/30",
|
|
53
|
-
"hover:bg-cyan-500/20",
|
|
54
|
-
"shadow-cyan-500/20 shadow-lg"
|
|
55
|
-
].join(" "),
|
|
56
|
-
success: [
|
|
57
|
-
"bg-emerald-500/10",
|
|
58
|
-
"backdrop-blur-lg",
|
|
59
|
-
"border border-emerald-400/30",
|
|
60
|
-
"hover:bg-emerald-500/20",
|
|
61
|
-
"shadow-emerald-500/20 shadow-lg"
|
|
62
|
-
].join(" "),
|
|
63
|
-
warning: [
|
|
64
|
-
"bg-amber-500/10",
|
|
65
|
-
"backdrop-blur-lg",
|
|
66
|
-
"border border-amber-400/30",
|
|
67
|
-
"hover:bg-amber-500/20",
|
|
68
|
-
"shadow-amber-500/20 shadow-lg"
|
|
69
|
-
].join(" "),
|
|
70
|
-
destructive: [
|
|
71
|
-
"bg-red-500/10",
|
|
72
|
-
"backdrop-blur-lg",
|
|
73
|
-
"border border-red-400/30",
|
|
74
|
-
"hover:bg-red-500/20",
|
|
75
|
-
"shadow-red-500/20 shadow-lg"
|
|
76
|
-
].join(" ")
|
|
47
|
+
default: "bg-card/80 border border-border/50 shadow-lg shadow-black/10",
|
|
48
|
+
accent: "bg-accent/20 border border-accent/30 shadow-lg shadow-accent/10",
|
|
49
|
+
success: "bg-green-500/10 dark:bg-green-400/10 border border-green-500/30 dark:border-green-400/30 shadow-lg shadow-green-500/10",
|
|
50
|
+
warning: "bg-amber-500/10 dark:bg-amber-400/10 border border-amber-500/30 dark:border-amber-400/30 shadow-lg shadow-amber-500/10",
|
|
51
|
+
destructive: "bg-destructive/10 border border-destructive/30 shadow-lg shadow-destructive/10"
|
|
77
52
|
},
|
|
78
53
|
glass: {
|
|
79
|
-
true:
|
|
80
|
-
"backdrop-blur-lg",
|
|
81
|
-
"bg-white/10",
|
|
82
|
-
"border border-white/20",
|
|
83
|
-
"shadow-xl"
|
|
84
|
-
].join(" "),
|
|
54
|
+
true: "backdrop-blur-lg",
|
|
85
55
|
false: ""
|
|
86
56
|
}
|
|
87
57
|
},
|
|
@@ -92,7 +62,7 @@ const dataCardVariants = cva(dataCardStyles.root, {
|
|
|
92
62
|
}
|
|
93
63
|
});
|
|
94
64
|
/**
|
|
95
|
-
*
|
|
65
|
+
* Bracket visibility animation CVA.
|
|
96
66
|
*/
|
|
97
67
|
const bracketVariants = cva(dataCardStyles.bracket, {
|
|
98
68
|
variants: { animate: {
|
|
@@ -101,14 +71,6 @@ const bracketVariants = cva(dataCardStyles.bracket, {
|
|
|
101
71
|
} },
|
|
102
72
|
defaultVariants: { animate: true }
|
|
103
73
|
});
|
|
104
|
-
/**
|
|
105
|
-
* State-specific styles for DataCard interactions.
|
|
106
|
-
*/
|
|
107
|
-
const dataCardStateStyles = {
|
|
108
|
-
hovered: "scale-[1.02]",
|
|
109
|
-
pressed: "scale-[0.98]",
|
|
110
|
-
disabled: "opacity-50 pointer-events-none"
|
|
111
|
-
};
|
|
112
74
|
|
|
113
75
|
//#endregion
|
|
114
|
-
export {
|
|
76
|
+
export { dataCardStyles, dataCardVariants };
|
|
@@ -1,45 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataCard type definitions.
|
|
3
|
+
*
|
|
4
|
+
* @module @mks2508/mks-ui/react/ui/DataCard
|
|
5
|
+
*/
|
|
1
6
|
import type { VariantProps } from 'class-variance-authority';
|
|
2
|
-
import type { SlotOverrides } from '../../../core/types';
|
|
7
|
+
import type { SlotOverrides, IBaseConfig } from '../../../core/types';
|
|
3
8
|
import type { dataCardVariants, DataCardSlot } from './DataCard.styles';
|
|
4
9
|
export type { DataCardSlot } from './DataCard.styles';
|
|
5
|
-
/**
|
|
6
|
-
* Available visual variants for DataCard.
|
|
7
|
-
* - 'default' - Standard glassmorphism with neutral borders
|
|
8
|
-
* - 'accent' - Cyan accent with primary glow
|
|
9
|
-
* - 'success' - Green accent for positive data
|
|
10
|
-
* - 'warning' - Amber accent for warnings
|
|
11
|
-
* - 'destructive' - Red accent for critical data
|
|
12
|
-
*/
|
|
10
|
+
/** Visual variant names */
|
|
13
11
|
export type DataCardVariant = 'default' | 'accent' | 'success' | 'warning' | 'destructive';
|
|
14
|
-
/**
|
|
15
|
-
* Size variants affecting padding and spacing.
|
|
16
|
-
* - 'compact' - Dense layout for dashboards
|
|
17
|
-
* - 'default' - Standard balanced spacing
|
|
18
|
-
* - 'spacious' - More breathing room
|
|
19
|
-
*/
|
|
12
|
+
/** Size variant names */
|
|
20
13
|
export type DataCardSize = 'compact' | 'default' | 'spacious';
|
|
21
14
|
/**
|
|
22
15
|
* Interaction state for state-based styling.
|
|
23
|
-
* Similar to Button's IButtonState pattern.
|
|
24
16
|
*/
|
|
25
17
|
export interface IDataCardState {
|
|
26
|
-
/** Whether card
|
|
18
|
+
/** Whether card is hovered */
|
|
27
19
|
hovered: boolean;
|
|
28
|
-
/** Whether card is pressed
|
|
20
|
+
/** Whether card is pressed */
|
|
29
21
|
pressed: boolean;
|
|
30
|
-
/** Whether card is disabled
|
|
22
|
+
/** Whether card is disabled */
|
|
31
23
|
disabled: boolean;
|
|
32
24
|
}
|
|
33
25
|
/**
|
|
34
26
|
* Configuration for DataCard behavior and animation.
|
|
35
|
-
*
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* <DataCard config={{ animateBrackets: true, counterStiffness: 150 }}>...</DataCard>
|
|
31
|
+
* ```
|
|
36
32
|
*/
|
|
37
|
-
export interface IDataCardConfig {
|
|
38
|
-
/** Enable
|
|
33
|
+
export interface IDataCardConfig extends IBaseConfig {
|
|
34
|
+
/** Enable corner bracket hover animation (default: true) */
|
|
39
35
|
animateBrackets?: boolean;
|
|
40
|
-
/** Spring stiffness for
|
|
36
|
+
/** Spring stiffness for CountingNumber (default: 90) */
|
|
41
37
|
counterStiffness?: number;
|
|
42
|
-
/** Spring damping for
|
|
38
|
+
/** Spring damping for CountingNumber (default: 10) */
|
|
43
39
|
counterDamping?: number;
|
|
44
40
|
}
|
|
45
41
|
/**
|
|
@@ -48,88 +44,72 @@ export interface IDataCardConfig {
|
|
|
48
44
|
* @example
|
|
49
45
|
* ```tsx
|
|
50
46
|
* <DataCard variant="accent" size="default">
|
|
51
|
-
* <
|
|
52
|
-
* <
|
|
47
|
+
* <DataCardLabel title="Revenue" description="This month" />
|
|
48
|
+
* <DataCardValue number={45678} unit="$" />
|
|
53
49
|
* </DataCard>
|
|
54
50
|
* ```
|
|
55
51
|
*/
|
|
56
52
|
export interface IDataCardProps extends VariantProps<typeof dataCardVariants> {
|
|
57
|
-
/** Visual style variant
|
|
53
|
+
/** Visual style variant */
|
|
58
54
|
variant?: DataCardVariant;
|
|
59
|
-
/** Size variant affecting spacing
|
|
55
|
+
/** Size variant affecting spacing */
|
|
60
56
|
size?: DataCardSize;
|
|
61
|
-
/** Whether card is disabled
|
|
57
|
+
/** Whether card is disabled */
|
|
62
58
|
disabled?: boolean;
|
|
63
|
-
/** Override classes
|
|
59
|
+
/** Override classes per slot */
|
|
64
60
|
slots?: SlotOverrides<DataCardSlot>;
|
|
65
|
-
/**
|
|
61
|
+
/** Behavior/animation configuration */
|
|
66
62
|
config?: IDataCardConfig;
|
|
67
|
-
/** CSS class or
|
|
63
|
+
/** CSS class or state-based class function */
|
|
68
64
|
className?: string | ((state: IDataCardState) => string | undefined);
|
|
69
|
-
/** CSS styles or
|
|
65
|
+
/** CSS styles or state-based styles function */
|
|
70
66
|
style?: React.CSSProperties | ((state: IDataCardState) => React.CSSProperties | undefined);
|
|
71
|
-
/** Enable glassmorphism
|
|
67
|
+
/** Enable glassmorphism blur (default: true) */
|
|
72
68
|
glass?: boolean;
|
|
73
|
-
/** Show corner brackets (default: true)
|
|
69
|
+
/** Show corner brackets (default: true) */
|
|
74
70
|
showBrackets?: boolean;
|
|
75
|
-
/** Child elements
|
|
71
|
+
/** Child elements */
|
|
76
72
|
children?: React.ReactNode;
|
|
77
73
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Props for DataCardValue - displays animated number.
|
|
80
|
-
*/
|
|
74
|
+
/** Props for DataCardValue */
|
|
81
75
|
export interface IDataCardValueProps {
|
|
82
|
-
/** Target number to animate to
|
|
76
|
+
/** Target number to animate to */
|
|
83
77
|
number: number;
|
|
84
|
-
/** Label displayed above
|
|
78
|
+
/** Label displayed above number */
|
|
85
79
|
label?: string;
|
|
86
|
-
/** Unit/suffix
|
|
80
|
+
/** Unit/suffix after number */
|
|
87
81
|
unit?: string;
|
|
88
|
-
/** Decimal places
|
|
82
|
+
/** Decimal places (default: 0) */
|
|
89
83
|
decimalPlaces?: number;
|
|
90
|
-
/** Pad number with leading zeros
|
|
84
|
+
/** Pad number with leading zeros */
|
|
91
85
|
padStart?: boolean;
|
|
92
86
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Props for DataCardLabel - title/description text.
|
|
95
|
-
*/
|
|
87
|
+
/** Props for DataCardLabel */
|
|
96
88
|
export interface IDataCardLabelProps extends React.ComponentProps<'div'> {
|
|
97
|
-
/** Primary title text
|
|
89
|
+
/** Primary title text */
|
|
98
90
|
title?: string;
|
|
99
|
-
/** Secondary description
|
|
91
|
+
/** Secondary description */
|
|
100
92
|
description?: string;
|
|
101
93
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Props for DataCardToggle - interactive switch element.
|
|
104
|
-
*/
|
|
94
|
+
/** Props for DataCardToggle */
|
|
105
95
|
export interface IDataCardToggleProps {
|
|
106
|
-
/** Whether toggle is checked
|
|
96
|
+
/** Whether toggle is checked */
|
|
107
97
|
checked?: boolean;
|
|
108
|
-
/** Callback when toggle
|
|
98
|
+
/** Callback when toggle changes */
|
|
109
99
|
onCheckedChange?: (checked: boolean) => void;
|
|
110
|
-
/**
|
|
111
|
-
checkedIcon?: React.ReactNode;
|
|
112
|
-
/** Icon to show when unchecked (off). */
|
|
113
|
-
uncheckedIcon?: React.ReactNode;
|
|
114
|
-
/** Label for: toggle. */
|
|
100
|
+
/** Label for the toggle */
|
|
115
101
|
label?: string;
|
|
116
|
-
/** Override classes for toggle regions. */
|
|
117
|
-
slots?: SlotOverrides<DataCardSlot>;
|
|
118
102
|
}
|
|
119
|
-
/**
|
|
120
|
-
* Props for DataCardActions - action button container.
|
|
121
|
-
*/
|
|
103
|
+
/** Props for DataCardActions */
|
|
122
104
|
export interface IDataCardActionsProps extends React.ComponentProps<'div'> {
|
|
123
|
-
/**
|
|
105
|
+
/** Button alignment */
|
|
124
106
|
align?: 'start' | 'center' | 'end';
|
|
125
107
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Props for DataCardBracket - decorative corner element.
|
|
128
|
-
*/
|
|
108
|
+
/** Props for DataCardBracket */
|
|
129
109
|
export interface IDataCardBracketProps extends React.ComponentProps<'div'> {
|
|
130
|
-
/**
|
|
110
|
+
/** Corner position */
|
|
131
111
|
position: 'tl' | 'tr' | 'bl' | 'br';
|
|
132
|
-
/**
|
|
112
|
+
/** Variant override */
|
|
133
113
|
variant?: 'default' | 'accent';
|
|
134
114
|
}
|
|
135
115
|
//# sourceMappingURL=DataCard.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCard.types.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DataCard/DataCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DataCard.types.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DataCard/DataCard.types.ts"],"names":[],"mappings":"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"}
|