@machinemetrics/mm-react-components 0.2.3-14 → 0.2.3-15

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 (36) hide show
  1. package/agent-docs/agent-documentation-reference.md +108 -0
  2. package/agent-docs/ai-agent-guide.md +5 -1
  3. package/agent-docs/ai-agent-init-guide.md +5 -1
  4. package/dist/components/ui/hero-metric-card/HeroMetricCard.d.ts +4 -0
  5. package/dist/components/ui/hero-metric-card/HeroMetricCard.d.ts.map +1 -0
  6. package/dist/components/ui/hero-metric-card/HeroMetricCardItem.d.ts +4 -0
  7. package/dist/components/ui/hero-metric-card/HeroMetricCardItem.d.ts.map +1 -0
  8. package/dist/components/ui/hero-metric-card/constants.d.ts +13 -0
  9. package/dist/components/ui/hero-metric-card/constants.d.ts.map +1 -0
  10. package/dist/components/ui/hero-metric-card/grid.d.ts +4 -0
  11. package/dist/components/ui/hero-metric-card/grid.d.ts.map +1 -0
  12. package/dist/components/ui/hero-metric-card/hooks.d.ts +6 -0
  13. package/dist/components/ui/hero-metric-card/hooks.d.ts.map +1 -0
  14. package/dist/components/ui/hero-metric-card/index.d.ts +5 -0
  15. package/dist/components/ui/hero-metric-card/index.d.ts.map +1 -0
  16. package/dist/components/ui/hero-metric-card/parsing.d.ts +11 -0
  17. package/dist/components/ui/hero-metric-card/parsing.d.ts.map +1 -0
  18. package/dist/components/ui/hero-metric-card/refs.d.ts +3 -0
  19. package/dist/components/ui/hero-metric-card/refs.d.ts.map +1 -0
  20. package/dist/components/ui/hero-metric-card/trend.d.ts +4 -0
  21. package/dist/components/ui/hero-metric-card/trend.d.ts.map +1 -0
  22. package/dist/components/ui/hero-metric-card/types.d.ts +60 -0
  23. package/dist/components/ui/hero-metric-card/types.d.ts.map +1 -0
  24. package/dist/components/ui/hero-metric-card/utils.d.ts +10 -0
  25. package/dist/components/ui/hero-metric-card/utils.d.ts.map +1 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/lib/mm-react-components.css +1 -1
  29. package/dist/mm-react-components.es.js +461 -2
  30. package/dist/mm-react-components.es.js.map +1 -1
  31. package/dist/mm-react-components.umd.js +10 -10
  32. package/dist/mm-react-components.umd.js.map +1 -1
  33. package/dist/preview/HeroMetricCardPreview.d.ts +2 -0
  34. package/dist/preview/HeroMetricCardPreview.d.ts.map +1 -0
  35. package/dist/themes/carbide.css +23 -3
  36. package/package.json +1 -1
@@ -6,10 +6,118 @@
6
6
  > - This `agent-docs/` folder with descriptive naming
7
7
  > - Package.json exports this folder as `./agent-docs`
8
8
 
9
+ ## Library Foundation
10
+
11
+ **@machinemetrics/mm-react-components** is a **traditional npm package** built on **[shadcn/ui](https://ui.shadcn.com/)** components (Radix UI + Tailwind CSS) with the Carbide industrial theme.
12
+
13
+ **What this means for you:**
14
+
15
+ - ✅ **Standard npm install**: `npm install @machinemetrics/mm-react-components`
16
+ - ✅ **Import components**: `import { Button, DataTable } from '@machinemetrics/mm-react-components'`
17
+ - ✅ **Pre-packaged & themed**: All components ready with Carbide industrial design
18
+ - ✅ **Zero-config option**: Pre-compiled CSS included (no build tools required)
19
+ - ✅ **Accessible & typed**: Full TypeScript support with Radix UI accessibility
20
+
21
+ ### Key Technologies
22
+
23
+ - **React 19**: Latest React with modern patterns
24
+ - **TypeScript 5**: Strict type safety throughout
25
+ - **Tailwind CSS v4**: Modern CSS-first configuration (pre-compiled in distributed CSS)
26
+ - **Radix UI**: Headless, accessible component primitives
27
+ - **shadcn/ui**: Component foundation and patterns
28
+ - **Carbide**: Industrial design system for manufacturing contexts
29
+
9
30
  ## Overview
10
31
 
11
32
  This directory contains comprehensive documentation and tools for AI agents working with the MachineMetrics React Components library. The documentation is organized into two main categories: **Initialization Setup** and **Chakra UI Migration**.
12
33
 
34
+ ## Component Quick Reference
35
+
36
+ ### Core Components (shadcn/ui based)
37
+
38
+ | Component | Exports | Description |
39
+ | --------------- | ------------------------------ | ----------------------------------------- |
40
+ | **Button** | `Button`, `buttonVariants` | Primary interactive element with variants |
41
+ | **Input** | `Input` | Text input field |
42
+ | **SearchInput** | `SearchInput` | Search-specific input with icon |
43
+ | **Label** | `Label` | Form label component |
44
+ | **Checkbox** | `Checkbox` | Checkbox input |
45
+ | **RadioGroup** | `RadioGroup`, `RadioGroupItem` | Radio button groups |
46
+ | **Switch** | `Switch` | Toggle switch control |
47
+ | **Slider** | `Slider`, `LabeledSlider` | Range slider with optional label |
48
+ | **Toggle** | `Toggle` | Toggle button |
49
+ | **Textarea** | `Textarea` | Multi-line text input |
50
+
51
+ ### Layout & Navigation
52
+
53
+ | Component | Exports | Description |
54
+ | -------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
55
+ | **Card** | `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter` | Content container with sections |
56
+ | **Separator** | `Separator` | Visual divider |
57
+ | **Tabs** | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` | Tabbed interface |
58
+ | **Breadcrumb** | `Breadcrumb`, `BreadcrumbList`, `BreadcrumbItem`, `BreadcrumbLink`, `BreadcrumbPage`, `BreadcrumbSeparator`, `BreadcrumbEllipsis` | Navigation breadcrumbs |
59
+ | **PageHeader** | `PageHeader` (+ types) | Application page header with actions/tabs |
60
+
61
+ ### Overlays & Modals
62
+
63
+ | Component | Exports | Description |
64
+ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
65
+ | **Dialog** | `Dialog`, `DialogClose`, `DialogContent`, `DialogDescription`, `DialogFooter`, `DialogHeader`, `DialogOverlay`, `DialogPortal`, `DialogTitle`, `DialogTrigger` | Modal dialog |
66
+ | **AlertDialog** | `AlertDialog`, `AlertDialogPortal`, `AlertDialogOverlay`, `AlertDialogTrigger`, `AlertDialogContent`, `AlertDialogHeader`, `AlertDialogFooter`, `AlertDialogTitle`, `AlertDialogDescription`, `AlertDialogAction`, `AlertDialogCancel` | Confirmation dialog |
67
+ | **Sheet** | `Sheet`, `SheetTrigger`, `SheetClose`, `SheetContent`, `SheetHeader`, `SheetFooter`, `SheetTitle`, `SheetDescription` | Slide-out panel |
68
+ | **Drawer** | `Drawer`, `DrawerTrigger`, `DrawerClose`, `DrawerPortal`, `DrawerOverlay`, `DrawerContent`, `DrawerHeader`, `DrawerFooter`, `DrawerTitle`, `DrawerDescription`, `DrawerHandle` | Bottom drawer (mobile-friendly) |
69
+ | **Popover** | `Popover`, `PopoverTrigger`, `PopoverContent` | Floating content container |
70
+ | **Tooltip** | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` | Hover tooltips |
71
+
72
+ ### Menus & Dropdowns
73
+
74
+ | Component | Exports | Description |
75
+ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
76
+ | **DropdownMenu** | `DropdownMenu`, `DropdownMenuPortal`, `DropdownMenuTrigger`, `DropdownMenuContent`, `DropdownMenuGroup`, `DropdownMenuLabel`, `DropdownMenuItem`, `DropdownMenuCheckboxItem`, `DropdownMenuRadioGroup`, `DropdownMenuRadioItem`, `DropdownMenuSeparator`, `DropdownMenuShortcut`, `DropdownMenuSub`, `DropdownMenuSubTrigger`, `DropdownMenuSubContent` | Dropdown menu system |
77
+ | **Select** | `Select`, `SelectContent`, `SelectGroup`, `SelectItem`, `SelectLabel`, `SelectScrollDownButton`, `SelectScrollUpButton`, `SelectSeparator`, `SelectTrigger`, `SelectValue` | Select dropdown |
78
+
79
+ ### Data Display
80
+
81
+ | Component | Exports | Description |
82
+ | ------------ | -------------------------------------------------------------------------------------------------------- | ------------------------- |
83
+ | **Badge** | `Badge`, `badgeVariants` | Status/label badges |
84
+ | **Avatar** | `Avatar`, `AvatarImage`, `AvatarFallback` | User avatar with fallback |
85
+ | **Alert** | `Alert`, `AlertTitle`, `AlertDescription` | Alert messages |
86
+ | **Table** | `Table`, `TableHeader`, `TableBody`, `TableFooter`, `TableHead`, `TableRow`, `TableCell`, `TableCaption` | Basic table structure |
87
+ | **Skeleton** | `Skeleton` | Loading placeholder |
88
+ | **Progress** | `Progress` | Progress bar |
89
+
90
+ ### Advanced Components
91
+
92
+ | Component | Exports | Description |
93
+ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
94
+ | **DataTable** | `DataTable`, `DataTablePagination`, `ResponsiveTable`, `TABLE_TOKENS`, column creators, hooks, toolbar, CSV export (+ types) | Full-featured data table with sorting, filtering, pagination |
95
+ | **HeroMetricCard** | `HeroMetricCard`, `HeroMetricCardItem` (+ types) | Metrics dashboard card with trends |
96
+ | **Calendar** | `Calendar` | Date picker calendar |
97
+ | **DateRangePicker** | `DateRangePicker` | Date range selection |
98
+ | **Dropzone** | `Dropzone`, `DropzoneContent`, `DropzoneEmptyState` | File upload drag-drop |
99
+ | **Chart** | `ChartContainer`, `ChartTooltip`, `ChartTooltipContent`, `ChartLegend`, `ChartLegendContent`, `ChartStyle` (+ `ChartConfig` type) | Recharts integration |
100
+
101
+ ### Interactive Elements
102
+
103
+ | Component | Exports | Description |
104
+ | --------------- | ------------------------------------------------------------------------------------------------------------- | ---------------------------- |
105
+ | **Accordion** | `Accordion`, `AccordionItem`, `AccordionTrigger`, `AccordionContent` | Collapsible sections |
106
+ | **Collapsible** | `Collapsible`, `CollapsibleTrigger`, `CollapsibleContent` | Simple collapse/expand |
107
+ | **Form** | `useFormField`, `Form`, `FormItem`, `FormLabel`, `FormControl`, `FormDescription`, `FormMessage`, `FormField` | React Hook Form integration |
108
+ | **Toaster** | `Toaster` | Toast notifications (Sonner) |
109
+
110
+ ### Utilities
111
+
112
+ | Export | Description |
113
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
114
+ | `cn` | Class name utility for merging Tailwind classes |
115
+ | **Theme Utils** | `activateCarbideTheme`, `deactivateCarbideTheme`, `toggleCarbideTheme`, `isCarbideThemeActive`, `activateDarkMode`, `deactivateDarkMode`, `toggleDarkMode`, `isDarkModeActive` |
116
+
117
+ ### Total: 40+ Components
118
+
119
+ All components follow shadcn/ui patterns with Carbide theme integration for industrial/manufacturing contexts.
120
+
13
121
  ## Directory Structure
14
122
 
15
123
  ```
@@ -2,7 +2,11 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- This guide provides AI agents with comprehensive instructions for migrating Chakra UI components to the MachineMetrics React Components library. It includes automated script usage, manual conversion procedures, and troubleshooting guidance.
5
+ This guide provides AI agents with comprehensive instructions for migrating Chakra UI components to the MachineMetrics React Components library.
6
+
7
+ **Important:** MachineMetrics React Components is built on **[shadcn/ui](https://ui.shadcn.com/)**, which uses Radix UI primitives and Tailwind CSS. This means you're migrating from Chakra UI → shadcn/ui-based components with the Carbide industrial theme.
8
+
9
+ This guide includes automated script usage, manual conversion procedures, and troubleshooting guidance.
6
10
 
7
11
  ## Quick Start
8
12
 
@@ -11,7 +11,11 @@
11
11
 
12
12
  ## Overview
13
13
 
14
- This guide provides AI agents with comprehensive instructions for setting up the MachineMetrics React Components library. The library uses a **ZERO-CONFIG** approach - no build tools, no configuration files, just install and use.
14
+ This guide provides AI agents with comprehensive instructions for setting up the MachineMetrics React Components library.
15
+
16
+ **Library Foundation:** Built on **[shadcn/ui](https://ui.shadcn.com/)** - re-usable components using Radix UI and Tailwind CSS, enhanced with the Carbide industrial theme.
17
+
18
+ The library uses a **ZERO-CONFIG** approach - no build tools, no configuration files, just install and use.
15
19
 
16
20
  ## Quick Start
17
21
 
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { HeroMetricCardProps } from './types';
3
+ export declare const HeroMetricCard: React.ForwardRefExoticComponent<HeroMetricCardProps & React.RefAttributes<HTMLDivElement>>;
4
+ //# sourceMappingURL=HeroMetricCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroMetricCard.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/HeroMetricCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AAyCjB,eAAO,MAAM,cAAc,4FA4J1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { InternalItemProps } from './types';
3
+ export declare const HeroMetricCardItem: React.ForwardRefExoticComponent<InternalItemProps & React.RefAttributes<HTMLButtonElement | HTMLDivElement>>;
4
+ //# sourceMappingURL=HeroMetricCardItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroMetricCardItem.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/HeroMetricCardItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA2IjD,eAAO,MAAM,kBAAkB,8GAwG9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const HERO_METRIC_CONSTANTS: {
2
+ readonly MIN_ITEM_WIDTH: 160;
3
+ readonly MIN_ITEMS: 1;
4
+ readonly MAX_ITEMS: 6;
5
+ readonly WRAPPED_GAP_DEFAULT: "gap-4";
6
+ readonly UNWRAPPED_GAP: "gap-0";
7
+ readonly PADDING_INTERACTIVE: "px-3";
8
+ readonly PADDING_STATIC: "px-6";
9
+ readonly CONTAINER_PADDING_Y: "py-4";
10
+ readonly CONTAINER_PADDING_X: "px-0";
11
+ };
12
+ export declare const GRID_COLS_MAP: Record<number, string>;
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;;;;;;;;CAUxB,CAAC;AAEX,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ColumnConfig } from './types';
2
+ export declare function getGridColsClass(n?: number): string | undefined;
3
+ export declare function resolveGridClasses(columns?: number | ColumnConfig): string;
4
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/grid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,wBAAgB,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,MAAM,CAW1E"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Hook to detect if items have wrapped to multiple rows based on container width
4
+ */
5
+ export declare function useWrappedDetection(itemCount: number, containerRef: React.RefObject<HTMLDivElement | null>, children?: React.ReactNode): boolean;
6
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GACzB,OAAO,CAwBT"}
@@ -0,0 +1,5 @@
1
+ export { HeroMetricCard } from './HeroMetricCard';
2
+ export { HeroMetricCardItem } from './HeroMetricCardItem';
3
+ export type { HeroMetricCardMode, HeroMetricCardItemProps, HeroMetricCardProps, TrendComparisonValue, ColumnConfig, } from './types';
4
+ export { HERO_METRIC_CONSTANTS } from './constants';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Parse a percentage value from various input formats */
2
+ export declare function parsePercent(value: unknown): number | undefined;
3
+ /** Parse a count value from various input formats */
4
+ export declare function parseCount(value: unknown): number | undefined;
5
+ /**
6
+ * Parse a duration in minutes from various input formats (e.g., "1h 12m", "72m", "1.2")
7
+ */
8
+ export declare function parseMinutes(value: unknown, unit?: string): number | undefined;
9
+ /** Format duration in minutes to human-readable string (e.g., "1h 12m", "5m 30s") */
10
+ export declare function formatDuration(mins: number): string;
11
+ //# sourceMappingURL=parsing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/parsing.ts"],"names":[],"mappings":"AAUA,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE/D;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CA6BpB;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD"}
@@ -0,0 +1,3 @@
1
+ import type { Ref, RefCallback } from 'react';
2
+ export declare function mergeRefs<T>(...refs: Array<Ref<T> | undefined>): RefCallback<T>;
3
+ //# sourceMappingURL=refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,wBAAgB,SAAS,CAAC,CAAC,EACzB,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GACjC,WAAW,CAAC,CAAC,CAAC,CAWhB"}
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TrendComparisonValue, ComputedTrend, HeroMetricCardItemProps } from './types';
3
+ export declare function computeTrend(value: ReactNode, unit: string | undefined, trendComparisonValue: TrendComparisonValue | undefined, higherIsBetter?: boolean, numericValue?: HeroMetricCardItemProps['numericValue']): ComputedTrend | undefined;
4
+ //# sourceMappingURL=trend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/trend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAuCjB,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,EACtD,cAAc,GAAE,OAAc,EAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC,cAAc,CAAC,GACrD,aAAa,GAAG,SAAS,CA2B3B"}
@@ -0,0 +1,60 @@
1
+ import * as React from 'react';
2
+ export type HeroMetricCardMode = 'static' | 'button' | 'filter';
3
+ export interface TrendComparisonValue {
4
+ value: number;
5
+ kind: 'count' | 'percent' | 'duration-minutes';
6
+ }
7
+ export interface TrendData {
8
+ value: React.ReactNode;
9
+ direction: 'up' | 'down' | 'neutral';
10
+ }
11
+ export interface ComputedTrend {
12
+ direction: 'up' | 'down' | 'neutral';
13
+ text: string;
14
+ colorIntent: 'success' | 'destructive' | 'neutral';
15
+ }
16
+ export interface HeroMetricCardItemProps {
17
+ id?: string;
18
+ label: string;
19
+ value: React.ReactNode;
20
+ unit?: string;
21
+ /**
22
+ * Optional normalized numeric value used for trend calculations.
23
+ * When provided, parsing of `value` is skipped for accuracy and performance.
24
+ */
25
+ numericValue?: number;
26
+ trendComparisonValue?: TrendComparisonValue;
27
+ higherIsBetter?: boolean;
28
+ caption?: string;
29
+ tooltip?: React.ReactNode;
30
+ icon?: React.ReactNode;
31
+ onClick?: () => void;
32
+ className?: string;
33
+ }
34
+ export interface ColumnConfig {
35
+ base?: number;
36
+ md?: number;
37
+ lg?: number;
38
+ }
39
+ export interface HeroMetricCardProps {
40
+ children?: React.ReactNode;
41
+ items?: ReadonlyArray<HeroMetricCardItemProps>;
42
+ mode?: HeroMetricCardMode;
43
+ activeId?: string | null;
44
+ defaultActiveId?: string | null;
45
+ onActiveChange?: (id: string | null) => void;
46
+ columns?: number | ColumnConfig;
47
+ showTrends?: boolean;
48
+ loading?: boolean;
49
+ className?: string;
50
+ 'data-testid'?: string;
51
+ }
52
+ export interface InternalItemProps extends HeroMetricCardItemProps {
53
+ interactive?: boolean;
54
+ pressed?: boolean;
55
+ onActivate?: () => void;
56
+ 'data-variant'?: HeroMetricCardMode;
57
+ 'data-state'?: 'active' | 'unfocused' | 'default';
58
+ loading?: boolean;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,kBAAkB,CAAC;CAChD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,10 @@
1
+ export { parsePercent, parseMinutes, parseCount, formatDuration, } from './parsing';
2
+ export { computeTrend } from './trend';
3
+ export { getGridColsClass, resolveGridClasses } from './grid';
4
+ export { mergeRefs } from './refs';
5
+ export type { ColumnConfig } from './types';
6
+ export { cn } from '@/lib/utils';
7
+ import type { ReactNode } from 'react';
8
+ export declare function formatNumber(value: ReactNode): ReactNode;
9
+ export declare function warnIfEmpty(items: unknown[], componentName: string): void;
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/hero-metric-card/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAGxD;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAMzE"}
package/dist/index.d.ts CHANGED
@@ -42,4 +42,6 @@ export { Toaster } from './components/ui/sonner';
42
42
  export { Separator } from './components/ui/separator';
43
43
  export { Avatar, AvatarImage, AvatarFallback } from './components/ui/avatar';
44
44
  export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, } from './components/ui/breadcrumb';
45
+ export { HeroMetricCard, HeroMetricCardItem, } from './components/ui/hero-metric-card';
46
+ export type { HeroMetricCardItemProps, HeroMetricCardProps, HeroMetricCardMode, } from './components/ui/hero-metric-card';
45
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}