@machinemetrics/mm-react-components 1.3.1 → 1.4.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 (61) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/components/ui/data-table/TableView.d.ts.map +1 -1
  4. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts +9 -0
  5. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts.map +1 -1
  6. package/dist/components/ui/data-table/columnTypes/createColumn.d.ts.map +1 -1
  7. package/dist/components/ui/data-table/columnTypes/selectionColumn.d.ts.map +1 -1
  8. package/dist/components/ui/data-table/index.d.ts +2 -2
  9. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  10. package/dist/components/ui/data-table/metadata/ColumnRegistry.d.ts +7 -0
  11. package/dist/components/ui/data-table/metadata/ColumnRegistry.d.ts.map +1 -1
  12. package/dist/components/ui/data-table/parts/BatchActionsToolbar.d.ts +8 -3
  13. package/dist/components/ui/data-table/parts/BatchActionsToolbar.d.ts.map +1 -1
  14. package/dist/components/ui/data-table/parts/ColGroup.d.ts.map +1 -1
  15. package/dist/components/ui/data-table/parts/SortableHeader.d.ts +3 -1
  16. package/dist/components/ui/data-table/parts/SortableHeader.d.ts.map +1 -1
  17. package/dist/components/ui/data-table/parts/TableBody.d.ts.map +1 -1
  18. package/dist/components/ui/data-table/parts/TableHeader.d.ts +3 -1
  19. package/dist/components/ui/data-table/parts/TableHeader.d.ts.map +1 -1
  20. package/dist/components/ui/data-table/state/index.d.ts +1 -0
  21. package/dist/components/ui/data-table/state/index.d.ts.map +1 -1
  22. package/dist/components/ui/data-table/state/useContainerWidth.d.ts +10 -0
  23. package/dist/components/ui/data-table/state/useContainerWidth.d.ts.map +1 -0
  24. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts.map +1 -1
  25. package/dist/components/ui/data-table/toolbar/filters/FilterMenu.d.ts +10 -1
  26. package/dist/components/ui/data-table/toolbar/filters/FilterMenu.d.ts.map +1 -1
  27. package/dist/components/ui/data-table/types.d.ts +46 -0
  28. package/dist/components/ui/data-table/types.d.ts.map +1 -1
  29. package/dist/components/ui/data-table/useDragAndDrop.d.ts.map +1 -1
  30. package/dist/components/ui/data-table/utils.d.ts +13 -1
  31. package/dist/components/ui/data-table/utils.d.ts.map +1 -1
  32. package/dist/components/ui/dropdown-menu.d.ts +1 -0
  33. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  34. package/dist/components/ui/dropzone/index.d.ts.map +1 -1
  35. package/dist/components/ui/file-grid/FileGrid.d.ts +17 -1
  36. package/dist/components/ui/file-grid/FileGrid.d.ts.map +1 -1
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/lib/mm-react-components.css +1 -1
  40. package/dist/mm-react-components.es.js +425 -426
  41. package/dist/mm-react-components.es.js.map +1 -1
  42. package/dist/mm-react-components.umd.js +1 -1
  43. package/dist/mm-react-components.umd.js.map +1 -1
  44. package/dist/preview/ColorsPreview.d.ts +1 -1
  45. package/dist/preview/ColorsPreview.d.ts.map +1 -1
  46. package/dist/preview/DataTableLimitationsPreview.d.ts +2 -0
  47. package/dist/preview/DataTableLimitationsPreview.d.ts.map +1 -0
  48. package/dist/preview/DataTablePreview.d.ts +2 -2
  49. package/dist/preview/DataTablePreview.d.ts.map +1 -1
  50. package/dist/preview/DropzonePreview.d.ts.map +1 -1
  51. package/dist/preview/FileGridPreview.d.ts +0 -4
  52. package/dist/preview/FileGridPreview.d.ts.map +1 -1
  53. package/dist/preview/JobDocsPreview.d.ts +11 -0
  54. package/dist/preview/JobDocsPreview.d.ts.map +1 -0
  55. package/dist/preview/SonnerPreview.d.ts.map +1 -1
  56. package/dist/preview/data-table/data-table-preview_column-content.d.ts.map +1 -1
  57. package/dist/preview/page-header/PageHeaderPreview.d.ts.map +1 -1
  58. package/dist/scripts/init.cjs +3 -7
  59. package/dist/scripts/install-skill.cjs +0 -1
  60. package/dist/themes/carbide.css +30 -4
  61. package/package.json +5 -4
@@ -4,6 +4,6 @@ export declare const COLORS_SECTION_ORDER: readonly ["Carbide Palette", "Core",
4
4
  interface ColorsPreviewProps {
5
5
  section?: ColorsSection;
6
6
  }
7
- export default function ColorsPreview({ section }: ColorsPreviewProps): import("react/jsx-runtime").JSX.Element;
7
+ export default function ColorsPreview({ section }: Readonly<ColorsPreviewProps>): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=ColorsPreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorsPreview.d.ts","sourceRoot":"","sources":["../../src/preview/ColorsPreview.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,MAAM,GACN,SAAS,GACT,mBAAmB,GACnB,MAAM,GACN,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,MAAM,GACN,iBAAiB,CAAC;AAEtB,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,6JAaY,CAAC;AAE9C,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CA0GpE"}
1
+ {"version":3,"file":"ColorsPreview.d.ts","sourceRoot":"","sources":["../../src/preview/ColorsPreview.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,MAAM,GACN,SAAS,GACT,mBAAmB,GACnB,MAAM,GACN,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,MAAM,GACN,iBAAiB,CAAC;AAEtB,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,6JAaY,CAAC;AAE9C,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAaD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,kBAAkB,CAAC,2CAwF9E"}
@@ -0,0 +1,2 @@
1
+ export default function DataTableLimitationsPreview(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DataTableLimitationsPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTableLimitationsPreview.d.ts","sourceRoot":"","sources":["../../src/preview/DataTableLimitationsPreview.tsx"],"names":[],"mappings":"AAqPA,MAAM,CAAC,OAAO,UAAU,2BAA2B,4CAelD"}
@@ -1,9 +1,9 @@
1
- export type Profile = 'basic' | 'knowledge-hub' | 'server-pagination';
1
+ export type Profile = 'basic' | 'knowledge-hub' | 'server-pagination' | 'job-docs';
2
2
  type DataTablePreviewProps = {
3
3
  profile?: Profile;
4
4
  devForceLoading?: boolean;
5
5
  devForceEmpty?: boolean;
6
6
  };
7
- export default function DataTablePreview({ profile: controlledProfile, devForceLoading, devForceEmpty, }: DataTablePreviewProps): import("react/jsx-runtime").JSX.Element;
7
+ export default function DataTablePreview({ profile: controlledProfile, devForceLoading, devForceEmpty, }: Readonly<DataTablePreviewProps>): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=DataTablePreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTablePreview.d.ts","sourceRoot":"","sources":["../../src/preview/DataTablePreview.tsx"],"names":[],"mappings":"AAoKA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAEtE,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EAAE,iBAAiB,EAC1B,eAAuB,EACvB,aAAqB,GACtB,EAAE,qBAAqB,2CAmOvB"}
1
+ {"version":3,"file":"DataTablePreview.d.ts","sourceRoot":"","sources":["../../src/preview/DataTablePreview.tsx"],"names":[],"mappings":"AAqKA,MAAM,MAAM,OAAO,GACf,OAAO,GACP,eAAe,GACf,mBAAmB,GACnB,UAAU,CAAC;AAEf,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EAAE,iBAAiB,EAC1B,eAAuB,EACvB,aAAqB,GACtB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,2CAgPjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropzonePreview.d.ts","sourceRoot":"","sources":["../../src/preview/DropzonePreview.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,eAAe,4CAuEtC"}
1
+ {"version":3,"file":"DropzonePreview.d.ts","sourceRoot":"","sources":["../../src/preview/DropzonePreview.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,eAAe,4CAoGtC"}
@@ -1,6 +1,2 @@
1
- /**
2
- * Focus: `FileGrid` bound to the same TanStack `table` as `DataTable` via
3
- * `useTableController`. See FileThumbnail / FileIcon previews for tile variants.
4
- */
5
1
  export default function FileGridPreview(): import("react/jsx-runtime").JSX.Element;
6
2
  //# sourceMappingURL=FileGridPreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileGridPreview.d.ts","sourceRoot":"","sources":["../../src/preview/FileGridPreview.tsx"],"names":[],"mappings":"AAkGA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,4CA0DtC"}
1
+ {"version":3,"file":"FileGridPreview.d.ts","sourceRoot":"","sources":["../../src/preview/FileGridPreview.tsx"],"names":[],"mappings":"AA4KA,MAAM,CAAC,OAAO,UAAU,eAAe,4CAuItC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The Job Docs table itself — reused by the standalone preview and the Data
3
+ * Table preview's "Job Docs" tab. Accepts the preview dev controls so the tab's
4
+ * loading/empty selector drives it like the other profiles.
5
+ */
6
+ export declare function JobDocsTable({ loading, forceEmpty, }: Readonly<{
7
+ loading?: boolean;
8
+ forceEmpty?: boolean;
9
+ }>): import("react/jsx-runtime").JSX.Element;
10
+ export default function JobDocsPreview(): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=JobDocsPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobDocsPreview.d.ts","sourceRoot":"","sources":["../../src/preview/JobDocsPreview.tsx"],"names":[],"mappings":"AAgGA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAe,EACf,UAAkB,GACnB,EAAE,QAAQ,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,2CA8JvD;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,4CAgBrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SonnerPreview.d.ts","sourceRoot":"","sources":["../../src/preview/SonnerPreview.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,aAAa,4CAuNpC"}
1
+ {"version":3,"file":"SonnerPreview.d.ts","sourceRoot":"","sources":["../../src/preview/SonnerPreview.tsx"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,aAAa,4CA6MpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-preview_column-content.d.ts","sourceRoot":"","sources":["../../../src/preview/data-table/data-table-preview_column-content.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAcvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE;QAAE,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AA+NF,eAAO,MAAM,2BAA2B,2FAMrC,CAAC;AAEJ,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAAC,kBAAkB,CAAC,EAGT,CAAC"}
1
+ {"version":3,"file":"data-table-preview_column-content.d.ts","sourceRoot":"","sources":["../../../src/preview/data-table/data-table-preview_column-content.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAevD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE;QAAE,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AA4NF,eAAO,MAAM,2BAA2B,2FAMrC,CAAC;AAEJ,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAAC,kBAAkB,CAAC,EAG5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeaderPreview.d.ts","sourceRoot":"","sources":["../../../src/preview/page-header/PageHeaderPreview.tsx"],"names":[],"mappings":"AAeA,OAAO,2BAA2B,CAAC;AAQnC,MAAM,CAAC,OAAO,UAAU,iBAAiB,4CAyRxC"}
1
+ {"version":3,"file":"PageHeaderPreview.d.ts","sourceRoot":"","sources":["../../../src/preview/page-header/PageHeaderPreview.tsx"],"names":[],"mappings":"AAaA,OAAO,2BAA2B,CAAC;AAQnC,MAAM,CAAC,OAAO,UAAU,iBAAiB,4CAyRxC"}
@@ -7,7 +7,6 @@
7
7
  * (or npx @machinemetrics/mm-react-components)
8
8
  */
9
9
 
10
- /* eslint-disable no-undef, no-unused-vars */
11
10
 
12
11
  const { execSync } = require('child_process');
13
12
  const fs = require('fs');
@@ -41,9 +40,6 @@ function log(message, color = 'reset') {
41
40
  console.log(`${colors[color]}${message}${colors.reset}`);
42
41
  }
43
42
 
44
- function logWarning(message) {
45
- log(`⚠️ ${message}`, 'yellow');
46
- }
47
43
 
48
44
  function detectChakraUI() {
49
45
  const packageJsonPath = path.join(process.cwd(), 'package.json');
@@ -138,7 +134,7 @@ async function main() {
138
134
  if (scriptsVersion && scriptsVersion.includes('5.0')) {
139
135
  execSync('npm install react-scripts@^5.0.0', { stdio: 'inherit' });
140
136
  }
141
- } catch (_e) {
137
+ } catch {
142
138
  /* ignore */
143
139
  }
144
140
  log('React 19 — compatible', 'green');
@@ -149,7 +145,7 @@ async function main() {
149
145
  );
150
146
  log('React 18.2+ installed — compatible', 'green');
151
147
  }
152
- } catch (_error) {
148
+ } catch {
153
149
  log('React version check skipped', 'yellow');
154
150
  }
155
151
 
@@ -204,7 +200,7 @@ async function main() {
204
200
  if (fs.existsSync(installSkillPath)) {
205
201
  try {
206
202
  execSync(`node "${installSkillPath}"`, { stdio: 'inherit' });
207
- } catch (err) {
203
+ } catch {
208
204
  log(' Could not run skill installer.', 'yellow');
209
205
  log(
210
206
  ' You can install later: npx @machinemetrics/mm-react-components mm-install-skill [--target=<cursor|copilot|claude|gemini>] [--scope=project|user]',
@@ -22,7 +22,6 @@
22
22
  * gemini: .gemini/skills/mm-carbide | ~/.gemini/skills/mm-carbide (Gemini CLI)
23
23
  */
24
24
 
25
- /* eslint-disable no-undef */
26
25
 
27
26
  const fs = require('fs');
28
27
  const path = require('path');
@@ -1682,11 +1682,37 @@ tr
1682
1682
  /* =============================
1683
1683
  DATA TABLE: ALIGNMENT BASELINE FIX
1684
1684
  ============================= */
1685
- /* Unify left-aligned body cells to the sortable-header baseline (0.25rem) */
1685
+ /*
1686
+ * Unify body cells to the sortable-header baseline (0.25rem). Applies to every
1687
+ * data-table cell (matched by `[data-col-id]`), NOT only `.text-left` ones —
1688
+ * columns built from a plain `ColumnDef` (no `meta.align`) carry no alignment
1689
+ * class, so requiring `.text-left` left their body content at `px-4` (16px)
1690
+ * while the header was pinned to 0.25rem, reading misaligned. `select`/`actions`
1691
+ * keep their own fixed layout. Scoped to left/default-aligned columns
1692
+ * (`:not(.text-right):not(.text-center)`) so centered/right-aligned columns keep
1693
+ * symmetric padding — a plain `ColumnDef` carries no alignment class and is
1694
+ * treated as left, which is the case this targets.
1695
+ */
1686
1696
  .carbide
1687
- td.text-left[data-col-id]:not([data-col-id='select']):not(
1688
- [data-col-id='actions']
1689
- ) {
1697
+ td[data-col-id]:not([data-col-id='select']):not([data-col-id='actions']):not(
1698
+ .text-right
1699
+ ):not(.text-center) {
1700
+ padding-left: 0.25rem !important;
1701
+ }
1702
+
1703
+ /*
1704
+ * Pin the data-table header's left inset to the same 0.25rem baseline. The
1705
+ * shared TableHead ships `px-2` (8px), but body cells are unified to 0.25rem
1706
+ * (4px) above, so left-aligned header labels read 4px off from their column's
1707
+ * body content. Scoped to `[data-col-id]` so it only affects data-table headers
1708
+ * (select/actions headers carry no data-col-id and basic <Table> headers are
1709
+ * untouched). The ghost-button (-ml-3 px-3) and non-button label rules both net
1710
+ * to this inset, so the header label now shares the body's left edge. Scoped to
1711
+ * left/default-aligned headers so centered/right-aligned headers keep symmetric
1712
+ * insets (matching the body rule above).
1713
+ */
1714
+ .carbide
1715
+ th[data-slot='table-head'][data-col-id]:not(.text-right):not(.text-center) {
1690
1716
  padding-left: 0.25rem !important;
1691
1717
  }
1692
1718
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@machinemetrics/mm-react-components",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "description": "Industrial-grade React components for manufacturing applications",
5
5
  "keywords": [
6
6
  "react",
@@ -75,9 +75,9 @@
75
75
  "serve:static": "vite preview --config vite.preview.config.mjs",
76
76
  "dev": "vite",
77
77
  "preview": "vite preview",
78
- "lint": "eslint src/components/ui --report-unused-disable-directives --max-warnings 0",
79
- "lint:verify": "eslint src/components/ui --report-unused-disable-directives --max-warnings 0 --quiet",
80
- "lint:fix": "eslint src/components/ui --fix --report-unused-disable-directives --max-warnings 0",
78
+ "lint": "eslint src/components/ui src/hooks src/preview scripts --report-unused-disable-directives --max-warnings 0",
79
+ "lint:verify": "eslint src/components/ui src/hooks src/preview scripts --report-unused-disable-directives --max-warnings 0 --quiet",
80
+ "lint:fix": "eslint src/components/ui src/hooks src/preview scripts --fix --report-unused-disable-directives --max-warnings 0",
81
81
  "type-check": "tsc --noEmit",
82
82
  "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
83
83
  "format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
@@ -186,6 +186,7 @@
186
186
  "cheerio": "^1.2.0",
187
187
  "cross-env": "^10.1.0",
188
188
  "eslint": "^10.3.0",
189
+ "eslint-plugin-react-hooks": "^7.1.1",
189
190
  "eslint-plugin-react-refresh": "^0.5.2",
190
191
  "eslint-plugin-sonarjs": "^4.0.3",
191
192
  "globals": "^17.6.0",