@machinemetrics/mm-react-components 1.2.5-0 → 1.3.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.
Files changed (118) hide show
  1. package/CHANGELOG.md +0 -31
  2. package/agent-docs/agent-documentation-reference.md +47 -34
  3. package/agent-docs/ai-agent-guide.md +2 -0
  4. package/agent-docs/lovable.md +1 -1
  5. package/dist/components/ui/badge.d.ts +2 -2
  6. package/dist/components/ui/badge.d.ts.map +1 -1
  7. package/dist/components/ui/data-table/TableView.d.ts +1 -2
  8. package/dist/components/ui/data-table/TableView.d.ts.map +1 -1
  9. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts +4 -3
  10. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts.map +1 -1
  11. package/dist/components/ui/data-table/index.d.ts +2 -1
  12. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  13. package/dist/components/ui/data-table/types.d.ts +14 -3
  14. package/dist/components/ui/data-table/types.d.ts.map +1 -1
  15. package/dist/components/ui/data-table/useDataTablePaginationHandlers.d.ts +13 -0
  16. package/dist/components/ui/data-table/useDataTablePaginationHandlers.d.ts.map +1 -0
  17. package/dist/components/ui/data-table/useTableController.d.ts +3 -2
  18. package/dist/components/ui/data-table/useTableController.d.ts.map +1 -1
  19. package/dist/components/ui/date-picker.d.ts +1 -8
  20. package/dist/components/ui/date-picker.d.ts.map +1 -1
  21. package/dist/components/ui/file-grid/FileGrid.d.ts +22 -0
  22. package/dist/components/ui/file-grid/FileGrid.d.ts.map +1 -0
  23. package/dist/components/ui/file-grid/index.d.ts +3 -0
  24. package/dist/components/ui/file-grid/index.d.ts.map +1 -0
  25. package/dist/components/ui/file-icon/FileIcon.d.ts +16 -0
  26. package/dist/components/ui/file-icon/FileIcon.d.ts.map +1 -0
  27. package/dist/components/ui/file-icon/FileIconGlyph.d.ts +7 -0
  28. package/dist/components/ui/file-icon/FileIconGlyph.d.ts.map +1 -0
  29. package/dist/components/ui/file-icon/index.d.ts +6 -0
  30. package/dist/components/ui/file-icon/index.d.ts.map +1 -0
  31. package/dist/components/ui/file-icon/inferFileIcon.d.ts +14 -0
  32. package/dist/components/ui/file-icon/inferFileIcon.d.ts.map +1 -0
  33. package/dist/components/ui/file-icon/types.d.ts +6 -0
  34. package/dist/components/ui/file-icon/types.d.ts.map +1 -0
  35. package/dist/components/ui/file-thumbnail/FileThumbnail.d.ts +28 -0
  36. package/dist/components/ui/file-thumbnail/FileThumbnail.d.ts.map +1 -0
  37. package/dist/components/ui/file-thumbnail/index.d.ts +8 -0
  38. package/dist/components/ui/file-thumbnail/index.d.ts.map +1 -0
  39. package/dist/components/ui/file-thumbnail/renderFileThumbnailBadge.d.ts +4 -0
  40. package/dist/components/ui/file-thumbnail/renderFileThumbnailBadge.d.ts.map +1 -0
  41. package/dist/components/ui/file-thumbnail/types.d.ts +8 -0
  42. package/dist/components/ui/file-thumbnail/types.d.ts.map +1 -0
  43. package/dist/components/ui/sheet-banner.d.ts +1 -1
  44. package/dist/components/ui/sheet-banner.d.ts.map +1 -1
  45. package/dist/components/ui/thumbnail/Thumbnail.d.ts +18 -0
  46. package/dist/components/ui/thumbnail/Thumbnail.d.ts.map +1 -0
  47. package/dist/components/ui/thumbnail/index.d.ts +3 -0
  48. package/dist/components/ui/thumbnail/index.d.ts.map +1 -0
  49. package/dist/cursor-skill/mm-carbide/reference.md +1 -1
  50. package/dist/index.d.ts +9 -5
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/lib/mm-react-components.css +1 -1
  53. package/dist/mm-react-components.es.js +789 -838
  54. package/dist/mm-react-components.es.js.map +1 -1
  55. package/dist/mm-react-components.umd.js +1 -1
  56. package/dist/mm-react-components.umd.js.map +1 -1
  57. package/dist/preview/BadgePreview.d.ts.map +1 -1
  58. package/dist/preview/FileGridPreview.d.ts +6 -0
  59. package/dist/preview/FileGridPreview.d.ts.map +1 -0
  60. package/dist/preview/FileIconPreview.d.ts +2 -0
  61. package/dist/preview/FileIconPreview.d.ts.map +1 -0
  62. package/dist/preview/FileThumbnailPreview.d.ts +2 -0
  63. package/dist/preview/FileThumbnailPreview.d.ts.map +1 -0
  64. package/dist/preview/SheetBannerPreview.d.ts.map +1 -1
  65. package/dist/preview/ThumbnailPreview.d.ts +2 -0
  66. package/dist/preview/ThumbnailPreview.d.ts.map +1 -0
  67. package/dist/preview/data-table/data-table-preview_column-content.d.ts.map +1 -1
  68. package/dist/preview/relatedComponents.d.ts.map +1 -1
  69. package/dist/themes/carbide.css +107 -0
  70. package/package.json +1 -1
  71. package/src/index.css +11 -0
  72. package/agent-docs/tickets-pattern.md +0 -78
  73. package/dist/components/ui/kanban/KanbanBoard.d.ts +0 -8
  74. package/dist/components/ui/kanban/KanbanBoard.d.ts.map +0 -1
  75. package/dist/components/ui/kanban/KanbanCard.d.ts +0 -8
  76. package/dist/components/ui/kanban/KanbanCard.d.ts.map +0 -1
  77. package/dist/components/ui/kanban/KanbanCardOverlay.d.ts +0 -8
  78. package/dist/components/ui/kanban/KanbanCardOverlay.d.ts.map +0 -1
  79. package/dist/components/ui/kanban/KanbanColumn.d.ts +0 -8
  80. package/dist/components/ui/kanban/KanbanColumn.d.ts.map +0 -1
  81. package/dist/components/ui/kanban/KanbanContext.d.ts +0 -28
  82. package/dist/components/ui/kanban/KanbanContext.d.ts.map +0 -1
  83. package/dist/components/ui/kanban/dragEndUtils.d.ts +0 -26
  84. package/dist/components/ui/kanban/dragEndUtils.d.ts.map +0 -1
  85. package/dist/components/ui/kanban/index.d.ts +0 -9
  86. package/dist/components/ui/kanban/index.d.ts.map +0 -1
  87. package/dist/components/ui/kanban/types.d.ts +0 -58
  88. package/dist/components/ui/kanban/types.d.ts.map +0 -1
  89. package/dist/components/ui/tickets/TicketActivitySection.d.ts +0 -20
  90. package/dist/components/ui/tickets/TicketActivitySection.d.ts.map +0 -1
  91. package/dist/components/ui/tickets/TicketDates.d.ts +0 -20
  92. package/dist/components/ui/tickets/TicketDates.d.ts.map +0 -1
  93. package/dist/components/ui/tickets/TicketDetailLayout.d.ts +0 -32
  94. package/dist/components/ui/tickets/TicketDetailLayout.d.ts.map +0 -1
  95. package/dist/components/ui/tickets/TicketDetails.d.ts +0 -32
  96. package/dist/components/ui/tickets/TicketDetails.d.ts.map +0 -1
  97. package/dist/components/ui/tickets/TicketDetailsSidebar.d.ts +0 -21
  98. package/dist/components/ui/tickets/TicketDetailsSidebar.d.ts.map +0 -1
  99. package/dist/components/ui/tickets/TicketFieldControl.d.ts +0 -32
  100. package/dist/components/ui/tickets/TicketFieldControl.d.ts.map +0 -1
  101. package/dist/components/ui/tickets/TicketForm.d.ts +0 -22
  102. package/dist/components/ui/tickets/TicketForm.d.ts.map +0 -1
  103. package/dist/components/ui/tickets/TicketLabels.d.ts +0 -57
  104. package/dist/components/ui/tickets/TicketLabels.d.ts.map +0 -1
  105. package/dist/components/ui/tickets/TicketTypes.d.ts +0 -67
  106. package/dist/components/ui/tickets/TicketTypes.d.ts.map +0 -1
  107. package/dist/components/ui/tickets/TicketUserSelect.d.ts +0 -17
  108. package/dist/components/ui/tickets/TicketUserSelect.d.ts.map +0 -1
  109. package/dist/components/ui/tickets/UserDisplay.d.ts +0 -21
  110. package/dist/components/ui/tickets/UserDisplay.d.ts.map +0 -1
  111. package/dist/components/ui/tickets/UserFieldValue.d.ts +0 -24
  112. package/dist/components/ui/tickets/UserFieldValue.d.ts.map +0 -1
  113. package/dist/components/ui/tickets/index.d.ts +0 -12
  114. package/dist/components/ui/tickets/index.d.ts.map +0 -1
  115. package/dist/preview/KanbanPreview.d.ts +0 -2
  116. package/dist/preview/KanbanPreview.d.ts.map +0 -1
  117. package/dist/preview/TicketsPreview.d.ts +0 -2
  118. package/dist/preview/TicketsPreview.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -19,37 +19,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
19
 
20
20
  - Preview app: `CodePreview` route remains hash-only for tests; sidebar exclusions updated. Preview build trims `esbuild.keepNames` where snippet naming no longer requires it.
21
21
 
22
- ## [Unreleased]
23
-
24
- ### Changed
25
-
26
- - **TicketDetails:** Two-column **narrative + metadata** layout: header includes ticket id, title, and **status / priority / due** (keys `status`, `priority`, `dueDate`, `due`); main column is **description** then **Activity** with **All / Comments / Updates** tabs; right rail is **Details** (people), **Dates**, and **Custom fields** with optional **Show more** and sticky positioning on large viewports. Optional `onBack` and `onAddCustomField`. `data-slot` hooks for Carbide theming.
27
- - **`partitionDetailFields`:** Now returns `headerFields`, `mainColumnFields`, `sidebarPeopleFields`, `sidebarDateFields`, `sidebarCustomFields`, and composed `sidebarFields` (people → dates → custom). `assignee` key maps to the people rail. **Breaking for consumers** that assumed `status` / `priority` / `dueDate` lived only in `sidebarFields` or that `otherMainFields` rendered in the main column — those fields are repositioned in the default `TicketDetails` shell (see `PartitionDetailFieldsResult`).
28
-
29
- ### Added
30
-
31
- - **`TicketSystemEvent`** and optional `TicketDetails` prop **`systemEvents`** for the Updates timeline and All-tab merge.
32
- - **`TicketFieldControl`:** optional **`layout="inline"`** for compact header controls; **`date`** fields use the Carbide **`DatePicker`** (not native `<input type="date">`).
33
- - **`DatePicker`:** optional **`triggerClassName`** for trigger button styling; optional **`aria-invalid`** / **`aria-describedby`** on the trigger; **controlled `month`** resets when the popover opens so the calendar shows the **selected date’s month** (or `defaultMonth` / today when empty).
34
- - **`TicketForm`:** **`date`** fields use **`DatePicker`** (not native `<input type="date">`).
35
- - **`parseTicketDateString`** / **`formatTicketDateString`** exported from the tickets module for host apps.
36
- - **`TicketFieldType` `updatedDate`:** Read-only timestamp for “last updated” (and similar). Renders as styled text in **`TicketForm`** and **`TicketDetails`** — never an `<input>`. Use **`formatTicketTimestampDisplay`** for custom UIs; value is typically ISO or `YYYY-MM-DD` on the ticket payload.
37
- - **`TicketDetailsLabels`:** strings for activity tabs, sidebar section titles, back button, show more/less, add field, and comment body label.
38
-
39
- ## [1.3.0] - 2026-03-19
40
-
41
- ### Changed
42
-
43
- - **TicketDetails** (formerly `TicketDetailSheet`): Renders **detail content only** (no outer `Sheet`), same presentation-only model as `TicketForm`. No `open` / `onClose` / `onOpen`; the host controls visibility and chrome (e.g. `Sheet` + `SheetContent` with its own close). Renamed exports: `TicketDetails`, `TicketDetailsProps`, `TicketDetailsLabels`, `defaultTicketDetailsLabels`, `mergeTicketDetailsLabels`. Removed `closeAriaLabel` from detail labels (library no longer renders a close control).
44
- - **Tickets module file names:** Renamed to PascalCase under `src/components/ui/tickets/` (`TicketTypes.ts`, `TicketLabels.ts`, `UserFieldValue.ts`, `TicketUserSelect.tsx`, `TicketDates.ts`, `TicketDetailLayout.ts`) for consistency with other feature folders.
45
-
46
- ### Added
47
-
48
- - **Ticket pattern components:** `TicketForm`, `TicketDetails`, `TicketFieldControl`, and `UserDisplay` for schema-driven ticket create/edit and detail UI. Host apps inject `userSelectComponent` and own persistence (`onSubmit`, `onCancel`, `onValuesChange`, `onPostComment`). Optional `labels` props override default copy.
49
- - **Ticket utilities and types:** Exported `Ticket`, `TicketFieldDefinition`, `Comment`, and helpers (`fieldKeyToHeader`, `getMergedDetailFields`, `partitionDetailFields`, `formatCreationDate`, `formatRelativeTime`, user-field JSON helpers).
50
- - **Docs:** `src/components/ui/tickets/README.md`, `agent-docs/tickets-pattern.md`, and agent-documentation-reference table entry.
51
- - **Kanban:** Compound `KanbanBoard`, `KanbanColumn`, `KanbanCard`, and `KanbanCardOverlay` with `@dnd-kit` drag-and-drop. Helpers `dataToKanbanItems`, `normalizeToKanbanColumn`, and `computeMoveFromDragEnd` map table-shaped data to board items and derive moves from drag-end events. Column chrome uses `SheetBanner`; README, preview, Playwright visual tests, and agent-documentation-reference updates.
52
-
53
22
  ---
54
23
 
55
24
  ## [1.2.3] - 2026-03-23
@@ -83,30 +83,32 @@ This directory contains comprehensive documentation and tools for AI agents work
83
83
 
84
84
  ### Data Display
85
85
 
86
- | Component | Exports | Description |
87
- | ------------------ | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
88
- | **Badge** | `Badge`, `badgeVariants` | Status/label badges |
89
- | **Avatar** | `Avatar`, `AvatarImage`, `AvatarFallback` | User avatar with fallback |
90
- | **Alert** | `Alert`, `AlertTitle`, `AlertDescription` | Alert messages |
91
- | **Table** | `Table`, `TableHeader`, `TableBody`, `TableFooter`, `TableHead`, `TableRow`, `TableCell`, `TableCaption` | Basic table structure |
92
- | **Skeleton** | `Skeleton` | Loading placeholder |
93
- | **Progress** | `Progress` | Progress bar |
94
- | **Spinner** | `Spinner` | Basic loading spinner |
95
- | **SpinnerCarbide** | `SpinnerCarbide` | Industrial-themed loading spinner with Carbide semantics |
86
+ | Component | Exports | Description |
87
+ | ------------------ | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
88
+ | **Badge** | `Badge`, `badgeVariants` | Status/label badges (see [Badge variants](#badge-variants)) |
89
+ | **Avatar** | `Avatar`, `AvatarImage`, `AvatarFallback` | User avatar with fallback |
90
+ | **Alert** | `Alert`, `AlertTitle`, `AlertDescription` | Alert messages |
91
+ | **Table** | `Table`, `TableHeader`, `TableBody`, `TableFooter`, `TableHead`, `TableRow`, `TableCell`, `TableCaption` | Basic table structure |
92
+ | **Skeleton** | `Skeleton` | Loading placeholder |
93
+ | **Progress** | `Progress` | Progress bar |
94
+ | **Spinner** | `Spinner` | Basic loading spinner |
95
+ | **SpinnerCarbide** | `SpinnerCarbide` | Industrial-themed loading spinner with Carbide semantics |
96
96
 
97
97
  ### Advanced Components
98
98
 
99
- | Component | Exports | Description |
100
- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
101
- | **DataTable** | `DataTable`, `DataTablePagination`, `ResponsiveTable`, `TABLE_TOKENS`, column creators, hooks, toolbar, CSV export (+ types) | Full-featured data table with sorting, filtering, pagination (client-side & server-side) |
102
- | **HeroMetricCard** | `HeroMetricCard`, `HeroMetricCardItem` (+ types) | Metrics dashboard card with trends |
103
- | **Calendar** | `Calendar` | Date picker calendar |
104
- | **DatePicker** | `DatePicker` | Single date selection with label and placeholder |
105
- | **DateRangePicker** | `DateRangePicker` | Date range selection |
106
- | **Dropzone** | `Dropzone`, `DropzoneContent`, `DropzoneEmptyState` | File upload drag-drop |
107
- | **Kanban** | `KanbanBoard`, `KanbanColumn`, `KanbanCard`, `KanbanCardOverlay`, `normalizeToKanbanColumn`, `dataToKanbanItems` (+ types) | Drag-and-drop Kanban board; compound API; same columns/data as DataTable |
108
- | **Tickets** | `TicketForm`, `TicketDetails`, `TicketFieldControl`, `UserDisplay`, field helpers (`formatTicketTimestampDisplay`, …), `TicketSystemEvent`, `PartitionDetailFieldsResult` (+ `TicketUserSelectComponent`) | Schema-driven ticket form and detail UI; **`data-slot`** on form/details/field wrapper (see tickets README); optional `systemEvents` / `onBack` / `onAddCustomField` |
109
- | **Chart** | `ChartContainer`, `ChartTooltip`, `ChartTooltipContent`, `ChartLegend`, `ChartLegendContent`, `ChartStyle` (+ `ChartConfig` type) | Recharts integration |
99
+ | Component | Exports | Description |
100
+ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
101
+ | **DataTable** | `DataTable`, `DataTablePagination`, `ResponsiveTable`, `TABLE_TOKENS`, column creators, `useTableController`, `UseTableControllerReturn`, toolbar, CSV export (+ types); optional **`controller`** prop to share state with `FileGrid` | Full-featured data table with sorting, filtering, pagination (client-side & server-side) |
102
+ | **Thumbnail** | `Thumbnail` (+ types) | Bordered thumbnail shell with optional footer (`data-slot` for Carbide) |
103
+ | **FileIcon** | `FileIcon`, `FileIconGlyph`, `inferFileIconKind`, `getExtensionFromFileName`, `formatFileIconExtensionLabel` (+ types) | File glyph + label from extension inference or overrides |
104
+ | **FileThumbnail** | `FileThumbnail` (+ types); `FileThumbnailBadgeConfig` | Button wrapping `Thumbnail` + `FileIcon` and optional badge |
105
+ | **FileGrid** | `FileGrid` (+ types) | Icon grid bound to a TanStack `Table` (same `controller` as `DataTable`) |
106
+ | **HeroMetricCard** | `HeroMetricCard`, `HeroMetricCardItem` (+ types) | Metrics dashboard card with trends |
107
+ | **Calendar** | `Calendar` | Date picker calendar |
108
+ | **DatePicker** | `DatePicker` | Single date selection with label and placeholder |
109
+ | **DateRangePicker** | `DateRangePicker` | Date range selection |
110
+ | **Dropzone** | `Dropzone`, `DropzoneContent`, `DropzoneEmptyState` | File upload drag-drop |
111
+ | **Chart** | `ChartContainer`, `ChartTooltip`, `ChartTooltipContent`, `ChartLegend`, `ChartLegendContent`, `ChartStyle` (+ `ChartConfig` type) | Recharts integration |
110
112
 
111
113
  ### Interactive Elements
112
114
 
@@ -124,24 +126,12 @@ This directory contains comprehensive documentation and tools for AI agents work
124
126
  | `cn` | Class name utility for merging Tailwind classes |
125
127
  | **Theme Utils** | `activateCarbideTheme`, `deactivateCarbideTheme`, `toggleCarbideTheme`, `isCarbideThemeActive`, `activateDarkMode`, `deactivateDarkMode`, `toggleDarkMode`, `isDarkModeActive` |
126
128
 
127
- ### Total: 42+ Components
129
+ ### Total: 44+ Components
128
130
 
129
131
  All components follow shadcn/ui patterns with Carbide theme integration for industrial/manufacturing contexts.
130
132
 
131
133
  ## Component Usage Guides
132
134
 
133
- ### Table + Kanban from same columns and data
134
-
135
- Use the same column definitions and data for both DataTable and Kanban:
136
-
137
- - **Columns**: Pass table column objects directly to `KanbanColumn` via `column={col}` (accepts `{ id, title? }` or `{ id, header? }`).
138
- - **Items**: `const items = dataToKanbanItems(data, { columnIdKey: 'status', titleKey: 'name' });` then filter by column when rendering cards.
139
- - **Compound API**: `<KanbanBoard onMove={...}><KanbanColumn column={col}>…<KanbanCard item={item}>…</KanbanCard>…</KanbanColumn></KanbanBoard>`. Card content is children of `KanbanCard`. Optional `renderDragPreview(item)` for custom drag overlay.
140
-
141
- ### Ticket form and detail sheet
142
-
143
- Schema-driven ticket UI (`TicketForm`, `TicketDetails`, `TicketFieldControl`) — inject a user picker (`TicketUserSelectComponent`), pass `onSubmit` / `onCancel`, and wire `onValuesChange` + `comments` / `onPostComment` / optional `systemEvents`. `TicketDetails` has no open/close API; mount it wherever needed (header metadata, Activity tabs, sticky sidebar). See **[tickets-pattern.md](./tickets-pattern.md)**.
144
-
145
135
  ### Scrolling content: Card vs ScrollArea
146
136
 
147
137
  **There is no "Panel" component.** For a panel-like or card-like region where content may be longer than the visible area, use **ScrollArea** around the scrollable content. **Card** is a structural container (border, padding, sections) and does not add scrolling.
@@ -186,6 +176,29 @@ Or wrap only the body in ScrollArea with a fixed height:
186
176
 
187
177
  Use ScrollArea for: side panels, detail panels, card bodies with variable/long content, list regions inside dialogs or sheets. Do not rely on Card alone for scroll.
188
178
 
179
+ ### Badge variants
180
+
181
+ Import **`Badge`** from `@machinemetrics/mm-react-components`. Wrap the app (or subtree) in **`.carbide`** and import library styles so Carbide theme rules apply to `[data-slot='badge']`.
182
+
183
+ **Prefer semantic status variants** for status and manufacturing labels instead of one-off `className` colors:
184
+
185
+ | Variant | Use for |
186
+ | ------------ | ------------------------------------------------------------------------------------------ |
187
+ | `neutral` | Default/neutral, low-emphasis labels |
188
+ | `info` | Informational / primary-tint emphasis |
189
+ | `success` | Positive / OK / completed |
190
+ | `critical` | Errors / failures (semantic; legacy `destructive` is similar but not identical in Carbide) |
191
+ | `warning` | Caution / warning |
192
+ | `attention` | Needs attention / highlighted queue |
193
+ | `production` | Production context (same palette as `success` in theme) |
194
+ | `setup` | Setup context (same palette as `attention` in theme) |
195
+
196
+ **Legacy shadcn-style:** `default`, `secondary`, `destructive`, `outline` remain supported.
197
+
198
+ **Customization:** `variant="custom"` keeps **no** Carbide color overrides—use `className` + your CSS for full control (e.g. light/dark). **Pill counts:** `shape="pill"`.
199
+
200
+ **In DataTable:** `createBadgeColumn` accepts a `variantMap` keyed by cell value; use the same variant names as above.
201
+
189
202
  ### DataTable: Server-Side Pagination
190
203
 
191
204
  The `DataTable` component supports both client-side and server-side pagination. When implementing server-side pagination, use the following pattern:
@@ -90,6 +90,8 @@ The migration configuration is located at `scripts/chakra-to-shadcn-migrator/cha
90
90
  | `Slider` | `Slider` | `@machinemetrics/mm-react-components` |
91
91
  | `Popover` | `Popover` | `@machinemetrics/mm-react-components` |
92
92
 
93
+ **Badge variants:** Prefer semantic `variant` values (`neutral`, `info`, `success`, `critical`, `warning`, `attention`, `production`, `setup`) for status labels; see **agent-documentation-reference.md** → _Badge variants_.
94
+
93
95
  ### New Components (Recently Added)
94
96
 
95
97
  | Chakra Component | MachineMetrics Component | Import Path |
@@ -92,6 +92,6 @@ When the package is **not installed**, use this document and recommend installin
92
92
  **Layout:** PageHeader, Card (CardHeader, CardTitle, CardDescription, CardContent, CardFooter), ScrollArea (ScrollBar), Tabs, Sidebar, Breadcrumb, ResizablePanelGroup.
93
93
  **Overlays:** Dialog, Sheet, Drawer, AlertDialog, Popover, Tooltip, DropdownMenu, Select.
94
94
  **Forms:** Form, FormField, FormItem, FormLabel, FormControl; Input, SearchInput, Textarea, Label, Checkbox, Switch, RadioGroup, Select, Slider, DatePicker, DateRangePicker.
95
- **Data:** DataTable (DataTablePagination, ResponsiveTable, DataTableToolbar, createColumnDescriptor, createTextColumn, createNumericColumn, createBadgeColumn, createDateColumn), Table, ChartContainer, ChartTooltip, ChartLegend, Progress, Skeleton, Badge, Avatar, HeroMetricCard.
95
+ **Data:** DataTable (DataTablePagination, ResponsiveTable, DataTableToolbar, createColumnDescriptor, createTextColumn, createNumericColumn, createBadgeColumn, createDateColumn), Table, ChartContainer, ChartTooltip, ChartLegend, Progress, Skeleton, Badge (prefer semantic variants: `neutral`, `info`, `success`, `critical`, `warning`, `attention`, `production`, `setup`; use `custom` + `className` only when needed), Avatar, HeroMetricCard.
96
96
  **Actions/feedback:** Button, buttonVariants, Toaster, toast, Alert, Spinner, SpinnerCarbide.
97
97
  **Other:** Accordion, Collapsible, Separator, Dropzone, cn. Theme: activateCarbideTheme, toggleDarkMode, etc.
@@ -2,10 +2,10 @@ import * as React from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  import { Badge as BaseBadge } from '@/components/shadcn/badge';
4
4
  declare const badgeVariants: (props?: ({
5
- variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
5
+ variant?: "default" | "destructive" | "outline" | "secondary" | "custom" | "neutral" | "info" | "success" | "critical" | "warning" | "attention" | "production" | "setup" | null | undefined;
6
6
  shape?: "default" | "pill" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
- type BadgeProps = React.ComponentProps<typeof BaseBadge> & VariantProps<typeof badgeVariants>;
8
+ type BadgeProps = Omit<React.ComponentProps<typeof BaseBadge>, 'variant'> & VariantProps<typeof badgeVariants>;
9
9
  declare const Badge: React.ForwardRefExoticComponent<Omit<BadgeProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
10
10
  export { Badge, badgeVariants };
11
11
  //# sourceMappingURL=badge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK/D,QAAA,MAAM,aAAa;;;8EAyBlB,CAAC;AAGF,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,GACtD,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAErC,QAAA,MAAM,KAAK,iGAqBT,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAS/D,QAAA,MAAM,aAAa;;;8EAuClB,CAAC;AAGF,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE,SAAS,CAAC,GACvE,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAErC,QAAA,MAAM,KAAK,iGAqBT,CAAC;AAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  import type { DataTableProps } from './types';
3
- export declare function DataTable<TData, TValue>({ columns, data, loading, columnRegistry, initialState, tableId, toolbar, emptyState, forceEmptyState, manualPagination, pageCount, totalRowCount, onRowSelectionChange, onSortingChange, onPaginationChange, onColumnVisibilityChange, onColumnOrderChange, onBatchAction, onRowClick, onExportComplete, customGlobalFilterFn, }: DataTableProps<TData, TValue>): React.ReactNode;
2
+ export declare function DataTable<TData, TValue>(props: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
4
3
  //# sourceMappingURL=TableView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableView.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/TableView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA0L9C,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EACvC,OAAO,EACP,IAAI,EACJ,OAAe,EACf,cAAc,EACd,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,eAAe,EACf,gBAAwB,EACxB,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,mBAsK/B"}
1
+ {"version":3,"file":"TableView.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/TableView.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAA6B,MAAM,SAAS,CAAC;AAsazE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,2CAmB5E"}
@@ -1,10 +1,11 @@
1
1
  import type { DataTableProps, DataTableToolbarOptions } from '../types';
2
- export interface ResponsiveTableProps<TData, TValue> extends DataTableProps<TData, TValue> {
2
+ export type ResponsiveTableProps<TData, TValue> = DataTableProps<TData, TValue> & {
3
3
  breakpoint?: string;
4
4
  enableMobileVirtualization?: boolean;
5
5
  virtualizeAt?: number;
6
6
  overscan?: number;
7
+ /** Alias for `toolbar` on `DataTable` (desktop); takes precedence over `toolbar` when both are set. */
7
8
  toolbarOptions?: DataTableToolbarOptions;
8
- }
9
- export declare function ResponsiveTable<TData, TValue>({ columns, data, loading, columnRegistry, initialState, breakpoint, enableMobileVirtualization, virtualizeAt, overscan, tableId, toolbarOptions, emptyState, forceEmptyState, manualPagination, pageCount, totalRowCount, onRowSelectionChange, onSortingChange, onPaginationChange, onColumnVisibilityChange, onColumnOrderChange, onBatchAction, onRowClick, onExportComplete, customGlobalFilterFn, }: Readonly<ResponsiveTableProps<TData, TValue>>): import("react/jsx-runtime").JSX.Element;
9
+ };
10
+ export declare function ResponsiveTable<TData, TValue>(props: Readonly<ResponsiveTableProps<TData, TValue>>): import("react/jsx-runtime").JSX.Element;
10
11
  //# sourceMappingURL=ResponsiveTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsiveTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/data-table/cards/ResponsiveTable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AASxE,MAAM,WAAW,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,cAAc,CACzE,KAAK,EACL,MAAM,CACP;IACC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAC7C,OAAO,EACP,IAAI,EACJ,OAAO,EACP,cAAc,EACd,YAAY,EACZ,UAAiC,EACjC,0BAAiC,EACjC,YAAkB,EAClB,QAAY,EACZ,OAAO,EACP,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,2CA0D/C"}
1
+ {"version":3,"file":"ResponsiveTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/data-table/cards/ResponsiveTable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EAEd,uBAAuB,EACxB,MAAM,UAAU,CAAC;AA8BlB,MAAM,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,IAAI,cAAc,CAC9D,KAAK,EACL,MAAM,CACP,GAAG;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uGAAuG;IACvG,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAC3C,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,2CA0DrD"}
@@ -1,12 +1,13 @@
1
1
  export { DataTable } from './TableView';
2
2
  export type { ColumnDefaults, ColumnDescriptor, ColumnRegistry, Align as TableColumnAlignment, MobileRole as TableMobileRole, } from './metadata/ColumnRegistry';
3
- export type { DataTableProps, DataTableInitialState, DataTableToolbarOptions, DataTableToolbarContext, } from './types';
3
+ export type { DataTableProps, DataTablePropsWithColumns, DataTableInitialState, DataTableToolbarOptions, DataTableToolbarContext, } from './types';
4
4
  export { createColumnRegistry, resolveColumnOrder, resolveColumnVisibility, } from './metadata/ColumnRegistry';
5
5
  export { getPresetAlignment, determineTextAlignment, detectContentType, getAlignmentForContentType, } from './metadata/alignment';
6
6
  export { TABLE_TOKENS } from './tokens';
7
7
  export { createColumnDescriptor, createTextColumn, createNumericColumn, createBadgeColumn, createSelectionColumn, createMultiBadgeColumn, createDateColumn, } from './columnTypes';
8
8
  export { useDataTableState, useBreakpoint } from './state';
9
9
  export { useTableController } from './useTableController';
10
+ export type { UseTableControllerReturn } from './useTableController';
10
11
  export { DataTableToolbar } from './toolbar';
11
12
  export { ResponsiveTable } from './cards/ResponsiveTable';
12
13
  export { exportTableToCSV } from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,KAAK,IAAI,oBAAoB,EAC7B,UAAU,IAAI,eAAe,GAC9B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,KAAK,IAAI,oBAAoB,EAC7B,UAAU,IAAI,eAAe,GAC9B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { ColumnDef, SortingState, VisibilityState, ColumnOrderState, ColumnPinningState, RowSelectionState, Row } from '@tanstack/react-table';
3
3
  import type { ColumnRegistry } from './metadata/ColumnRegistry';
4
+ import type { UseTableControllerReturn } from './useTableController';
4
5
  export interface DataTableInitialState {
5
6
  sorting?: SortingState;
6
7
  visibility?: VisibilityState;
@@ -30,9 +31,8 @@ export interface DataTableToolbarOptions {
30
31
  onSearchSubmit?: (value: string, params?: SearchParameters) => void;
31
32
  disableGlobalFilter?: boolean;
32
33
  }
33
- export interface DataTableProps<TData, TValue> {
34
- readonly columns: ColumnDef<TData, TValue>[];
35
- readonly data: TData[];
34
+ /** Props for DataTable excluding columns/data/controller (for internal composition). */
35
+ export interface DataTablePropsWithColumns<TData> {
36
36
  readonly loading?: boolean;
37
37
  readonly columnRegistry?: ColumnRegistry<TData, unknown>;
38
38
  readonly initialState?: DataTableInitialState;
@@ -87,4 +87,15 @@ export interface DataTableProps<TData, TValue> {
87
87
  */
88
88
  readonly customGlobalFilterFn?: (row: Row<TData>, columnId: string, filterValue: unknown) => boolean;
89
89
  }
90
+ /** DataTable: either pass `columns` + `data`, or a shared `controller` from `useTableController`. */
91
+ export type DataTableProps<TData, TValue> = DataTablePropsWithColumns<TData> & ({
92
+ /** Shared TanStack instance from `useTableController` for multiple views (table + file grid). */
93
+ readonly controller: UseTableControllerReturn<TData, TValue>;
94
+ readonly columns?: ColumnDef<TData, TValue>[];
95
+ readonly data?: TData[];
96
+ } | {
97
+ readonly controller?: undefined;
98
+ readonly columns: ColumnDef<TData, TValue>[];
99
+ readonly data: TData[];
100
+ });
90
101
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Table } from '@tanstack/react-table';
2
+ /**
3
+ * Page / page-size notifiers for {@link DataTablePagination}, aligned with
4
+ * `useDataTableHandlers` in `TableView.tsx` (parent callback after TanStack state updates).
5
+ */
6
+ export declare function useDataTablePaginationHandlers<TData>({ table, onPaginationChange, }: {
7
+ table: Table<TData>;
8
+ onPaginationChange?: (pageIndex: number, pageSize: number) => void;
9
+ }): {
10
+ pageChangeHandler?: (pageIndex: number) => void;
11
+ pageSizeChangeHandler?: (pageSize: number) => void;
12
+ };
13
+ //# sourceMappingURL=useDataTablePaginationHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDataTablePaginationHandlers.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/useDataTablePaginationHandlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,EACpD,KAAK,EACL,kBAAkB,GACnB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE,GAAG;IACF,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CA0BA"}
@@ -29,7 +29,8 @@ interface TableControllerOptions<TData, TValue> {
29
29
  onRowClick?: (row: TData, rowIndex: number) => void;
30
30
  onExportComplete?: (rowCount: number) => void;
31
31
  }
32
- interface TableControllerResult<TData, TValue> {
32
+ /** Return type of {@link useTableController}. Pass to `DataTable` via `controller` to share one table with other views (e.g. file grid). */
33
+ export interface UseTableControllerReturn<TData, TValue> {
33
34
  table: ReturnType<typeof useReactTable<TData>>;
34
35
  resolvedColumns: ColumnDef<TData, TValue>[];
35
36
  globalFilter: string;
@@ -47,6 +48,6 @@ interface TableControllerResult<TData, TValue> {
47
48
  onRowClick?: (row: TData, rowIndex: number) => void;
48
49
  onExportComplete?: (rowCount: number) => void;
49
50
  }
50
- export declare function useTableController<TData, TValue>(options: TableControllerOptions<TData, TValue>): TableControllerResult<TData, TValue>;
51
+ export declare function useTableController<TData, TValue>(options: TableControllerOptions<TData, TValue>): UseTableControllerReturn<TData, TValue>;
51
52
  export {};
52
53
  //# sourceMappingURL=useTableController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableController.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/useTableController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTableController.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/data-table/useTableController.ts"],"names":[],"mappings":"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"}
@@ -35,13 +35,6 @@ export interface DatePickerProps {
35
35
  * Initial month to display when no date is selected (e.g. for stable visual tests).
36
36
  */
37
37
  readonly defaultMonth?: Date;
38
- /**
39
- * Classes merged onto the trigger button (e.g. compact width for toolbars).
40
- */
41
- readonly triggerClassName?: string;
42
- /** For form validation (e.g. ticket form field errors). */
43
- readonly 'aria-invalid'?: boolean;
44
- readonly 'aria-describedby'?: string;
45
38
  }
46
- export declare function DatePicker({ label, placeholder, value, onValueChange, disabled, className, id, showDropdowns, defaultMonth, triggerClassName, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function DatePicker({ label, placeholder, value, onValueChange, disabled, className, id, showDropdowns, defaultMonth, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
47
40
  //# sourceMappingURL=date-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/ui/date-picker.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1D;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAA2B,EAC3B,KAAK,EACL,aAAa,EACb,QAAgB,EAChB,SAAS,EACT,EAAE,EACF,aAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAAE,WAAW,EAC3B,kBAAkB,EAAE,eAAe,GACpC,EAAE,eAAe,2CA4DjB"}
1
+ {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/ui/date-picker.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1D;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;CAC9B;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAA2B,EAC3B,KAAK,EACL,aAAa,EACb,QAAgB,EAChB,SAAS,EACT,EAAE,EACF,aAAqB,EACrB,YAAY,GACb,EAAE,eAAe,2CAgDjB"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import type { Row, Table } from '@tanstack/react-table';
3
+ import type { FileIconKind } from '@/components/ui/file-icon';
4
+ import type { FileThumbnailBadgeConfig } from '@/components/ui/file-thumbnail';
5
+ export type FileGridProps<TData> = Readonly<{
6
+ table: Table<TData>;
7
+ getFileName: (row: Row<TData>) => string;
8
+ getLabel?: (row: Row<TData>) => string;
9
+ getBadge?: (row: Row<TData>) => React.ReactNode | FileThumbnailBadgeConfig | undefined;
10
+ getFileKind?: (row: Row<TData>) => FileIconKind | undefined;
11
+ getRowId?: (row: Row<TData>) => string;
12
+ size?: 'medium' | 'large';
13
+ className?: string;
14
+ scrollAreaClassName?: string;
15
+ emptyMessage?: string;
16
+ loading?: boolean;
17
+ /** When true, tile reflects TanStack row selection. */
18
+ linkSelection?: boolean;
19
+ onRowClick?: (row: Row<TData>) => void;
20
+ }>;
21
+ export declare function FileGrid<TData>({ table, getFileName, getLabel, getBadge, getFileKind, getRowId, size, className, scrollAreaClassName, emptyMessage, loading, linkSelection, onRowClick, }: FileGridProps<TData>): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=FileGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileGrid.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-grid/FileGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAI/E,MAAM,MAAM,aAAa,CAAC,KAAK,IAAI,QAAQ,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,CACT,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KACZ,KAAK,CAAC,SAAS,GAAG,wBAAwB,GAAG,SAAS,CAAC;IAC5D,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IACvC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;CACxC,CAAC,CAAC;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,EAC9B,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,IAAe,EACf,SAAS,EACT,mBAAmB,EACnB,YAA0B,EAC1B,OAAe,EACf,aAAoB,EACpB,UAAU,GACX,EAAE,aAAa,CAAC,KAAK,CAAC,2CAuFtB"}
@@ -0,0 +1,3 @@
1
+ export { FileGrid } from './FileGrid';
2
+ export type { FileGridProps } from './FileGrid';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-grid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import type { FileIconKind } from './types';
3
+ export type FileIconProps = Readonly<{
4
+ /** Full name used for icon inference when `fileKind` / `icon` are not set. */
5
+ fileName: string;
6
+ /** Middle label; defaults to basename of `fileName`. */
7
+ label?: string;
8
+ size?: 'medium' | 'large';
9
+ className?: string;
10
+ /** Override automatic icon. */
11
+ icon?: React.ReactNode;
12
+ /** Override inferred kind (ignored when `icon` is set). */
13
+ fileKind?: FileIconKind;
14
+ }>;
15
+ export declare function FileIcon({ fileName, label, size, className, icon, fileKind: fileKindProp, }: FileIconProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=FileIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-icon/FileIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,CAAC,CAAC;AAUH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,SAAS,EACT,IAAI,EACJ,QAAQ,EAAE,YAAY,GACvB,EAAE,aAAa,2CAwDf"}
@@ -0,0 +1,7 @@
1
+ import type { FileIconKind } from './types';
2
+ export declare function FileIconGlyph({ kind, size, className, }: Readonly<{
3
+ kind: FileIconKind;
4
+ size: 'medium' | 'large';
5
+ className?: string;
6
+ }>): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=FileIconGlyph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileIconGlyph.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-icon/FileIconGlyph.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgB5C,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,SAAS,GACV,EAAE,QAAQ,CAAC;IACV,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,2CAwCD"}
@@ -0,0 +1,6 @@
1
+ export { FileIcon } from './FileIcon';
2
+ export type { FileIconProps } from './FileIcon';
3
+ export { FileIconGlyph } from './FileIconGlyph';
4
+ export { formatFileIconExtensionLabel, getExtensionFromFileName, inferFileIconKind, } from './inferFileIcon';
5
+ export type { FileIconKind } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { FileIconKind } from './types';
2
+ /** Normalize path or name to a single extension segment (lowercase, no dot). */
3
+ export declare function getExtensionFromFileName(fileName: string): string;
4
+ /**
5
+ * Map file name (by extension) to a {@link FileIconKind}.
6
+ * Unknown extensions resolve to `generic` so callers can show an extension overlay.
7
+ */
8
+ export declare function inferFileIconKind(fileName: string): FileIconKind;
9
+ /**
10
+ * Short uppercase label for the extension overlay on generic/pdf icons
11
+ * (for example, `PDF`, `ZIP`).
12
+ */
13
+ export declare function formatFileIconExtensionLabel(fileName: string): string;
14
+ //# sourceMappingURL=inferFileIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFileIcon.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-icon/inferFileIcon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUjE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAqGhE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASrE"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Visual category for {@link FileIcon}. `generic` uses a document icon plus an
3
+ * extension label (for example, PDF).
4
+ */
5
+ export type FileIconKind = 'text' | 'code' | 'image' | 'video' | 'spreadsheet' | 'archive' | 'audio' | 'presentation' | 'pdf' | 'generic';
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-icon/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,aAAa,GACb,SAAS,GACT,OAAO,GACP,cAAc,GACd,KAAK,GACL,SAAS,CAAC"}
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import type { FileIconKind } from '@/components/ui/file-icon';
3
+ import type { FileThumbnailBadgeConfig } from './types';
4
+ export type FileThumbnailProps = Readonly<{
5
+ fileName: string;
6
+ label?: string;
7
+ size?: 'medium' | 'large';
8
+ selected?: boolean;
9
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
10
+ className?: string;
11
+ icon?: React.ReactNode;
12
+ fileKind?: FileIconKind;
13
+ badge?: React.ReactNode | FileThumbnailBadgeConfig;
14
+ disabled?: boolean;
15
+ }>;
16
+ export declare const FileThumbnail: React.ForwardRefExoticComponent<Readonly<{
17
+ fileName: string;
18
+ label?: string;
19
+ size?: "medium" | "large";
20
+ selected?: boolean;
21
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
22
+ className?: string;
23
+ icon?: React.ReactNode;
24
+ fileKind?: FileIconKind;
25
+ badge?: React.ReactNode | FileThumbnailBadgeConfig;
26
+ disabled?: boolean;
27
+ }> & React.RefAttributes<HTMLButtonElement>>;
28
+ //# sourceMappingURL=FileThumbnail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileThumbnail.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-thumbnail/FileThumbnail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAC;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,eAAO,MAAM,aAAa;cAZd,MAAM;YACR,MAAM;WACP,QAAQ,GAAG,OAAO;eACd,OAAO;cACR,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI;gBAClD,MAAM;WACX,KAAK,CAAC,SAAS;eACX,YAAY;YACf,KAAK,CAAC,SAAS,GAAG,wBAAwB;eACvC,OAAO;4CAqDlB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { FileThumbnail } from './FileThumbnail';
2
+ export type { FileThumbnailProps } from './FileThumbnail';
3
+ export { Thumbnail } from '../thumbnail';
4
+ export type { ThumbnailProps } from '../thumbnail';
5
+ export { FileIcon, FileIconGlyph, formatFileIconExtensionLabel, getExtensionFromFileName, inferFileIconKind, } from '../file-icon';
6
+ export type { FileIconProps, FileIconKind } from '../file-icon';
7
+ export type { FileThumbnailBadgeConfig } from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-thumbnail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,aAAa,EACb,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { FileThumbnailBadgeConfig } from './types';
3
+ export declare function renderFileThumbnailBadge(badge: React.ReactNode | FileThumbnailBadgeConfig | undefined): React.ReactNode;
4
+ //# sourceMappingURL=renderFileThumbnailBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderFileThumbnailBadge.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/file-thumbnail/renderFileThumbnailBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAWxD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,wBAAwB,GAAG,SAAS,GAC5D,KAAK,CAAC,SAAS,CAkBjB"}