@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.
Files changed (72) hide show
  1. package/dist/react-ui/index.js +8 -1
  2. package/dist/react-ui/primitives/index.js +5 -0
  3. package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts +103 -0
  4. package/dist/react-ui/primitives/waapi/Gooey/Gooey.types.d.ts.map +1 -0
  5. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts +10 -0
  6. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.d.ts.map +1 -0
  7. package/dist/react-ui/primitives/waapi/Gooey/GooeyCanvas.js +59 -0
  8. package/dist/react-ui/primitives/waapi/Gooey/GooeyFilter.d.ts +7 -0
  9. package/dist/react-ui/primitives/waapi/Gooey/GooeyFilter.d.ts.map +1 -0
  10. package/dist/react-ui/primitives/waapi/Gooey/GooeyFilter.js +78 -0
  11. package/dist/react-ui/primitives/waapi/Gooey/MorphPath.d.ts +7 -0
  12. package/dist/react-ui/primitives/waapi/Gooey/MorphPath.d.ts.map +1 -0
  13. package/dist/react-ui/primitives/waapi/Gooey/MorphPath.js +51 -0
  14. package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts +87 -0
  15. package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.d.ts.map +1 -0
  16. package/dist/react-ui/primitives/waapi/Gooey/gooey-utils.js +177 -0
  17. package/dist/react-ui/primitives/waapi/Gooey/index.d.ts +28 -0
  18. package/dist/react-ui/primitives/waapi/Gooey/index.d.ts.map +1 -0
  19. package/dist/react-ui/primitives/waapi/Gooey/index.js +5 -0
  20. package/dist/react-ui/primitives/waapi/Gooey/useMorphPath.d.ts +7 -0
  21. package/dist/react-ui/primitives/waapi/Gooey/useMorphPath.d.ts.map +1 -0
  22. package/dist/react-ui/primitives/waapi/Gooey/useMorphPath.js +47 -0
  23. package/dist/react-ui/primitives/waapi/index.d.ts +2 -0
  24. package/dist/react-ui/primitives/waapi/index.d.ts.map +1 -1
  25. package/dist/react-ui/primitives/waapi/index.js +6 -0
  26. package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts +26 -16
  27. package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts.map +1 -1
  28. package/dist/react-ui/ui/DataCard/DataCard.styles.js +36 -74
  29. package/dist/react-ui/ui/DataCard/DataCard.types.d.ts +50 -70
  30. package/dist/react-ui/ui/DataCard/DataCard.types.d.ts.map +1 -1
  31. package/dist/react-ui/ui/DataCard/index.d.ts +24 -93
  32. package/dist/react-ui/ui/DataCard/index.d.ts.map +1 -1
  33. package/dist/react-ui/ui/DataCard/index.js +76 -118
  34. package/dist/react-ui/ui/DynamicToggle/DynamicToggle-Cm6-VceQ.css +304 -0
  35. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.css +303 -0
  36. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.js +0 -0
  37. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts +35 -0
  38. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.d.ts.map +1 -0
  39. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.styles.js +67 -0
  40. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts +138 -0
  41. package/dist/react-ui/ui/DynamicToggle/DynamicToggle.types.d.ts.map +1 -0
  42. package/dist/react-ui/ui/DynamicToggle/index.d.ts +31 -0
  43. package/dist/react-ui/ui/DynamicToggle/index.d.ts.map +1 -0
  44. package/dist/react-ui/ui/DynamicToggle/index.js +188 -0
  45. package/dist/react-ui/ui/Switch/index.js +1 -1
  46. package/dist/react-ui/ui/index.d.ts +1 -0
  47. package/dist/react-ui/ui/index.d.ts.map +1 -1
  48. package/dist/react-ui/ui/index.js +2 -0
  49. package/package.json +2 -2
  50. package/src/css.d.ts +1 -0
  51. package/src/react-ui/primitives/waapi/Gooey/Gooey.types.ts +123 -0
  52. package/src/react-ui/primitives/waapi/Gooey/GooeyCanvas.tsx +80 -0
  53. package/src/react-ui/primitives/waapi/Gooey/GooeyFilter.tsx +77 -0
  54. package/src/react-ui/primitives/waapi/Gooey/MorphPath.tsx +58 -0
  55. package/src/react-ui/primitives/waapi/Gooey/gooey-utils.ts +244 -0
  56. package/src/react-ui/primitives/waapi/Gooey/index.ts +50 -0
  57. package/src/react-ui/primitives/waapi/Gooey/useMorphPath.ts +48 -0
  58. package/src/react-ui/primitives/waapi/index.ts +23 -0
  59. package/src/react-ui/ui/DataCard/DataCard.styles.ts +45 -101
  60. package/src/react-ui/ui/DataCard/DataCard.types.ts +52 -73
  61. package/src/react-ui/ui/DataCard/index.tsx +118 -184
  62. package/src/react-ui/ui/DynamicToggle/DynamicToggle.css +303 -0
  63. package/src/react-ui/ui/DynamicToggle/DynamicToggle.styles.ts +85 -0
  64. package/src/react-ui/ui/DynamicToggle/DynamicToggle.types.ts +174 -0
  65. package/src/react-ui/ui/DynamicToggle/index.tsx +294 -0
  66. package/src/react-ui/ui/DynamicToggle/prototype-v7.html +615 -0
  67. package/src/react-ui/ui/DynamicToggle/prototype.html +419 -0
  68. package/src/react-ui/ui/Switch/index.tsx +1 -1
  69. package/src/react-ui/ui/index.ts +3 -0
  70. /package/dist/react-ui/blocks/Terminal/panel/{terminal-filter-dropdown.module-CNVWCefU.css → terminal-filter-dropdown.module-C6oDcFBS.css} +0 -0
  71. /package/dist/react-ui/blocks/Terminal/panel/{terminal-session-tabs.module-cmyJ11jP.css → terminal-session-tabs.module-D_-sgyza.css} +0 -0
  72. /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 regions for: DataCard component family.
4
- * Each slot maps to: customizable visual region.
19
+ * Visual slots for DataCard component family.
5
20
  */
6
- export type DataCardSlot = 'root' | 'bracket' | 'header' | 'value' | 'label' | 'toggle' | 'actions' | 'footer';
21
+ export type DataCardSlot = 'root' | 'bracket' | 'value' | 'label' | 'toggle' | 'actions';
7
22
  /**
8
- * Base style slots for: DataCard.
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: DataCard root.
14
- * Combines glassmorphism with Synthwave Dark color scheme.
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
- * CVA variants for bracket visibility animation.
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":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,CAAC;AAEb;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,YAAY,CAgBnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;8EAiF3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;8EAU1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC"}
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
- * Base style slots for: DataCard.
6
- * Uses glassmorphism pattern from: Synthwave Dark design system.
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: DataCard root.
20
- * Combines glassmorphism with Synthwave Dark color scheme.
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
- root: "p-3",
27
- header: "gap-1 px-3 pt-3 pb-1.5",
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
- "bg-white/5",
44
- "backdrop-blur-lg",
45
- "border border-white/10",
46
- "hover:bg-white/10",
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
- * CVA variants for bracket visibility animation.
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 { dataCardStateStyles, dataCardStyles, dataCardVariants };
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 content is hovered. */
18
+ /** Whether card is hovered */
27
19
  hovered: boolean;
28
- /** Whether card is pressed/active. */
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
- * Extends IBaseConfig with card-specific settings.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * <DataCard config={{ animateBrackets: true, counterStiffness: 150 }}>...</DataCard>
31
+ * ```
36
32
  */
37
- export interface IDataCardConfig {
38
- /** Enable/disable corner bracket animations. */
33
+ export interface IDataCardConfig extends IBaseConfig {
34
+ /** Enable corner bracket hover animation (default: true) */
39
35
  animateBrackets?: boolean;
40
- /** Spring stiffness for number counter. */
36
+ /** Spring stiffness for CountingNumber (default: 90) */
41
37
  counterStiffness?: number;
42
- /** Spring damping for number counter. */
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
- * <DataCardValue number={1234} />
52
- * <DataCardToggle />
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 for card visual regions. */
59
+ /** Override classes per slot */
64
60
  slots?: SlotOverrides<DataCardSlot>;
65
- /** Behavioral and animation configuration. */
61
+ /** Behavior/animation configuration */
66
62
  config?: IDataCardConfig;
67
- /** CSS class or function returning class based on card state. */
63
+ /** CSS class or state-based class function */
68
64
  className?: string | ((state: IDataCardState) => string | undefined);
69
- /** CSS styles or function returning styles based on card state. */
65
+ /** CSS styles or state-based styles function */
70
66
  style?: React.CSSProperties | ((state: IDataCardState) => React.CSSProperties | undefined);
71
- /** Enable glassmorphism effect (default: true). */
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: number. */
78
+ /** Label displayed above number */
85
79
  label?: string;
86
- /** Unit/suffix displayed after: number. */
80
+ /** Unit/suffix after number */
87
81
  unit?: string;
88
- /** Decimal places for precision. */
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 text. */
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 state changes. */
98
+ /** Callback when toggle changes */
109
99
  onCheckedChange?: (checked: boolean) => void;
110
- /** Icon to show when checked (on). */
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
- /** Alignment of action buttons. */
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
- /** Position of: bracket. */
110
+ /** Corner position */
131
111
  position: 'tl' | 'tr' | 'bl' | 'br';
132
- /** Optional variant override for: this bracket. */
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":"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"}
1
+ {"version":3,"file":"DataCard.types.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/ui/DataCard/DataCard.types.ts"],"names":[],"mappings":"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"}