@machinemetrics/mm-react-components 0.1.1-1 → 0.2.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 (222) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +246 -0
  3. package/dist/App.d.ts +3 -0
  4. package/dist/App.d.ts.map +1 -0
  5. package/dist/components/ui/accordion.d.ts +10 -0
  6. package/dist/components/ui/accordion.d.ts.map +1 -0
  7. package/dist/components/ui/badge.d.ts +10 -0
  8. package/dist/components/ui/badge.d.ts.map +1 -0
  9. package/dist/components/ui/button.d.ts +11 -0
  10. package/dist/components/ui/button.d.ts.map +1 -0
  11. package/dist/components/ui/calendar.d.ts +9 -0
  12. package/dist/components/ui/calendar.d.ts.map +1 -0
  13. package/dist/components/ui/checkbox.d.ts +5 -0
  14. package/dist/components/ui/checkbox.d.ts.map +1 -0
  15. package/dist/components/ui/collapsible.d.ts +7 -0
  16. package/dist/components/ui/collapsible.d.ts.map +1 -0
  17. package/dist/components/ui/data-table/TableView.d.ts +3 -0
  18. package/dist/components/ui/data-table/TableView.d.ts.map +1 -0
  19. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts +10 -0
  20. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts.map +1 -0
  21. package/dist/components/ui/data-table/cards/RowCard.d.ts +9 -0
  22. package/dist/components/ui/data-table/cards/RowCard.d.ts.map +1 -0
  23. package/dist/components/ui/data-table/cards/index.d.ts +2 -0
  24. package/dist/components/ui/data-table/cards/index.d.ts.map +1 -0
  25. package/dist/components/ui/data-table/columnTypes/badgeColumn.d.ts +16 -0
  26. package/dist/components/ui/data-table/columnTypes/badgeColumn.d.ts.map +1 -0
  27. package/dist/components/ui/data-table/columnTypes/createColumn.d.ts +8 -0
  28. package/dist/components/ui/data-table/columnTypes/createColumn.d.ts.map +1 -0
  29. package/dist/components/ui/data-table/columnTypes/dateColumn.d.ts +13 -0
  30. package/dist/components/ui/data-table/columnTypes/dateColumn.d.ts.map +1 -0
  31. package/dist/components/ui/data-table/columnTypes/index.d.ts +8 -0
  32. package/dist/components/ui/data-table/columnTypes/index.d.ts.map +1 -0
  33. package/dist/components/ui/data-table/columnTypes/multiBadgeColumn.d.ts +16 -0
  34. package/dist/components/ui/data-table/columnTypes/multiBadgeColumn.d.ts.map +1 -0
  35. package/dist/components/ui/data-table/columnTypes/numericColumn.d.ts +15 -0
  36. package/dist/components/ui/data-table/columnTypes/numericColumn.d.ts.map +1 -0
  37. package/dist/components/ui/data-table/columnTypes/selectionColumn.d.ts +10 -0
  38. package/dist/components/ui/data-table/columnTypes/selectionColumn.d.ts.map +1 -0
  39. package/dist/components/ui/data-table/columnTypes/textColumn.d.ts +13 -0
  40. package/dist/components/ui/data-table/columnTypes/textColumn.d.ts.map +1 -0
  41. package/dist/components/ui/data-table/index.d.ts +14 -0
  42. package/dist/components/ui/data-table/index.d.ts.map +1 -0
  43. package/dist/components/ui/data-table/metadata/ColumnRegistry.d.ts +90 -0
  44. package/dist/components/ui/data-table/metadata/ColumnRegistry.d.ts.map +1 -0
  45. package/dist/components/ui/data-table/metadata/alignment.d.ts +8 -0
  46. package/dist/components/ui/data-table/metadata/alignment.d.ts.map +1 -0
  47. package/dist/components/ui/data-table/pagination.d.ts +9 -0
  48. package/dist/components/ui/data-table/pagination.d.ts.map +1 -0
  49. package/dist/components/ui/data-table/state/index.d.ts +3 -0
  50. package/dist/components/ui/data-table/state/index.d.ts.map +1 -0
  51. package/dist/components/ui/data-table/state/useBreakpoint.d.ts +2 -0
  52. package/dist/components/ui/data-table/state/useBreakpoint.d.ts.map +1 -0
  53. package/dist/components/ui/data-table/state/useDataTableState.d.ts +19 -0
  54. package/dist/components/ui/data-table/state/useDataTableState.d.ts.map +1 -0
  55. package/dist/components/ui/data-table/tokens.d.ts +10 -0
  56. package/dist/components/ui/data-table/tokens.d.ts.map +1 -0
  57. package/dist/components/ui/data-table/toolbar/ColumnVisibilityMenu.d.ts +8 -0
  58. package/dist/components/ui/data-table/toolbar/ColumnVisibilityMenu.d.ts.map +1 -0
  59. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts +15 -0
  60. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts.map +1 -0
  61. package/dist/components/ui/data-table/toolbar/MenuHeader.d.ts +8 -0
  62. package/dist/components/ui/data-table/toolbar/MenuHeader.d.ts.map +1 -0
  63. package/dist/components/ui/data-table/toolbar/SortMenu.d.ts +7 -0
  64. package/dist/components/ui/data-table/toolbar/SortMenu.d.ts.map +1 -0
  65. package/dist/components/ui/data-table/toolbar/filters/DateRangeFilter.d.ts +5 -0
  66. package/dist/components/ui/data-table/toolbar/filters/DateRangeFilter.d.ts.map +1 -0
  67. package/dist/components/ui/data-table/toolbar/filters/FilterMenu.d.ts +10 -0
  68. package/dist/components/ui/data-table/toolbar/filters/FilterMenu.d.ts.map +1 -0
  69. package/dist/components/ui/data-table/toolbar/filters/InlineDateRangePicker.d.ts +10 -0
  70. package/dist/components/ui/data-table/toolbar/filters/InlineDateRangePicker.d.ts.map +1 -0
  71. package/dist/components/ui/data-table/toolbar/filters/NumericRangeFilter.d.ts +5 -0
  72. package/dist/components/ui/data-table/toolbar/filters/NumericRangeFilter.d.ts.map +1 -0
  73. package/dist/components/ui/data-table/toolbar/filters/SelectFilter.d.ts +6 -0
  74. package/dist/components/ui/data-table/toolbar/filters/SelectFilter.d.ts.map +1 -0
  75. package/dist/components/ui/data-table/toolbar/filters/TextFilter.d.ts +5 -0
  76. package/dist/components/ui/data-table/toolbar/filters/TextFilter.d.ts.map +1 -0
  77. package/dist/components/ui/data-table/toolbar/filters/index.d.ts +9 -0
  78. package/dist/components/ui/data-table/toolbar/filters/index.d.ts.map +1 -0
  79. package/dist/components/ui/data-table/toolbar/filters/types.d.ts +26 -0
  80. package/dist/components/ui/data-table/toolbar/filters/types.d.ts.map +1 -0
  81. package/dist/components/ui/data-table/toolbar/filters/useColumnFilters.d.ts +5 -0
  82. package/dist/components/ui/data-table/toolbar/filters/useColumnFilters.d.ts.map +1 -0
  83. package/dist/components/ui/data-table/toolbar/index.d.ts +5 -0
  84. package/dist/components/ui/data-table/toolbar/index.d.ts.map +1 -0
  85. package/dist/components/ui/data-table/types.d.ts +40 -0
  86. package/dist/components/ui/data-table/types.d.ts.map +1 -0
  87. package/dist/components/ui/data-table/useTableController.d.ts +29 -0
  88. package/dist/components/ui/data-table/useTableController.d.ts.map +1 -0
  89. package/dist/components/ui/data-table/utils.d.ts +3 -0
  90. package/dist/components/ui/data-table/utils.d.ts.map +1 -0
  91. package/dist/components/ui/date-range-picker.d.ts +9 -0
  92. package/dist/components/ui/date-range-picker.d.ts.map +1 -0
  93. package/dist/components/ui/dialog.d.ts +16 -0
  94. package/dist/components/ui/dialog.d.ts.map +1 -0
  95. package/dist/components/ui/drawer.d.ts +16 -0
  96. package/dist/components/ui/drawer.d.ts.map +1 -0
  97. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  98. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  99. package/dist/components/ui/dropzone/index.d.ts +25 -0
  100. package/dist/components/ui/dropzone/index.d.ts.map +1 -0
  101. package/dist/components/ui/input.d.ts +5 -0
  102. package/dist/components/ui/input.d.ts.map +1 -0
  103. package/dist/components/ui/label.d.ts +5 -0
  104. package/dist/components/ui/label.d.ts.map +1 -0
  105. package/dist/components/ui/page-header/index.d.ts +3 -0
  106. package/dist/components/ui/page-header/index.d.ts.map +1 -0
  107. package/dist/components/ui/page-header/page-header-types.d.ts +44 -0
  108. package/dist/components/ui/page-header/page-header-types.d.ts.map +1 -0
  109. package/dist/components/ui/page-header/page-header.d.ts +5 -0
  110. package/dist/components/ui/page-header/page-header.d.ts.map +1 -0
  111. package/dist/components/ui/popover.d.ts +8 -0
  112. package/dist/components/ui/popover.d.ts.map +1 -0
  113. package/dist/components/ui/progress.d.ts +5 -0
  114. package/dist/components/ui/progress.d.ts.map +1 -0
  115. package/dist/components/ui/radio-group.d.ts +6 -0
  116. package/dist/components/ui/radio-group.d.ts.map +1 -0
  117. package/dist/components/ui/search-input.d.ts +7 -0
  118. package/dist/components/ui/search-input.d.ts.map +1 -0
  119. package/dist/components/ui/select.d.ts +16 -0
  120. package/dist/components/ui/select.d.ts.map +1 -0
  121. package/dist/components/ui/sheet.d.ts +14 -0
  122. package/dist/components/ui/sheet.d.ts.map +1 -0
  123. package/dist/components/ui/skeleton.d.ts +4 -0
  124. package/dist/components/ui/skeleton.d.ts.map +1 -0
  125. package/dist/components/ui/slider.d.ts +15 -0
  126. package/dist/components/ui/slider.d.ts.map +1 -0
  127. package/dist/components/ui/switch.d.ts +5 -0
  128. package/dist/components/ui/switch.d.ts.map +1 -0
  129. package/dist/components/ui/table/Table.d.ts +21 -0
  130. package/dist/components/ui/table/Table.d.ts.map +1 -0
  131. package/dist/components/ui/table/index.d.ts +2 -0
  132. package/dist/components/ui/table/index.d.ts.map +1 -0
  133. package/dist/components/ui/table.d.ts +11 -0
  134. package/dist/components/ui/table.d.ts.map +1 -0
  135. package/dist/components/ui/tabs.d.ts +15 -0
  136. package/dist/components/ui/tabs.d.ts.map +1 -0
  137. package/dist/components/ui/toggle.d.ts +10 -0
  138. package/dist/components/ui/toggle.d.ts.map +1 -0
  139. package/dist/components/ui/tooltip.d.ts +8 -0
  140. package/dist/components/ui/tooltip.d.ts.map +1 -0
  141. package/dist/docs/TAILWIND_SETUP.md +332 -0
  142. package/dist/index.css +536 -0
  143. package/dist/index.d.ts +30 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/lib/page-header-utils.d.ts +2 -0
  146. package/dist/lib/page-header-utils.d.ts.map +1 -0
  147. package/dist/lib/theme-utils.d.ts +104 -0
  148. package/dist/lib/theme-utils.d.ts.map +1 -0
  149. package/dist/lib/utils.d.ts +3 -0
  150. package/dist/lib/utils.d.ts.map +1 -0
  151. package/dist/main.d.ts +3 -0
  152. package/dist/main.d.ts.map +1 -0
  153. package/dist/mm-react-components.es.js +33709 -26
  154. package/dist/mm-react-components.es.js.map +1 -0
  155. package/dist/mm-react-components.umd.js +71 -1
  156. package/dist/mm-react-components.umd.js.map +1 -0
  157. package/dist/preview/AccordionPreview.d.ts +2 -0
  158. package/dist/preview/AccordionPreview.d.ts.map +1 -0
  159. package/dist/preview/BadgePreview.d.ts +2 -0
  160. package/dist/preview/BadgePreview.d.ts.map +1 -0
  161. package/dist/preview/ButtonPreview.d.ts +2 -0
  162. package/dist/preview/ButtonPreview.d.ts.map +1 -0
  163. package/dist/preview/CalendarPreview.d.ts +2 -0
  164. package/dist/preview/CalendarPreview.d.ts.map +1 -0
  165. package/dist/preview/CheckboxPreview.d.ts +2 -0
  166. package/dist/preview/CheckboxPreview.d.ts.map +1 -0
  167. package/dist/preview/CollapsiblePreview.d.ts +2 -0
  168. package/dist/preview/CollapsiblePreview.d.ts.map +1 -0
  169. package/dist/preview/DataTablePreview.d.ts +9 -0
  170. package/dist/preview/DataTablePreview.d.ts.map +1 -0
  171. package/dist/preview/DateRangePickerPreview.d.ts +2 -0
  172. package/dist/preview/DateRangePickerPreview.d.ts.map +1 -0
  173. package/dist/preview/DialogPreview.d.ts +2 -0
  174. package/dist/preview/DialogPreview.d.ts.map +1 -0
  175. package/dist/preview/DrawerPreview.d.ts +2 -0
  176. package/dist/preview/DrawerPreview.d.ts.map +1 -0
  177. package/dist/preview/DropdownMenuPreview.d.ts +2 -0
  178. package/dist/preview/DropdownMenuPreview.d.ts.map +1 -0
  179. package/dist/preview/DropzonePreview.d.ts +2 -0
  180. package/dist/preview/DropzonePreview.d.ts.map +1 -0
  181. package/dist/preview/InputPreview.d.ts +2 -0
  182. package/dist/preview/InputPreview.d.ts.map +1 -0
  183. package/dist/preview/LabelPreview.d.ts +2 -0
  184. package/dist/preview/LabelPreview.d.ts.map +1 -0
  185. package/dist/preview/PopoverPreview.d.ts +2 -0
  186. package/dist/preview/PopoverPreview.d.ts.map +1 -0
  187. package/dist/preview/ProgressPreview.d.ts +2 -0
  188. package/dist/preview/ProgressPreview.d.ts.map +1 -0
  189. package/dist/preview/RadioGroupPreview.d.ts +2 -0
  190. package/dist/preview/RadioGroupPreview.d.ts.map +1 -0
  191. package/dist/preview/SelectPreview.d.ts +2 -0
  192. package/dist/preview/SelectPreview.d.ts.map +1 -0
  193. package/dist/preview/SheetPreview.d.ts +2 -0
  194. package/dist/preview/SheetPreview.d.ts.map +1 -0
  195. package/dist/preview/SkeletonPreview.d.ts +2 -0
  196. package/dist/preview/SkeletonPreview.d.ts.map +1 -0
  197. package/dist/preview/SliderPreview.d.ts +2 -0
  198. package/dist/preview/SliderPreview.d.ts.map +1 -0
  199. package/dist/preview/SwitchPreview.d.ts +2 -0
  200. package/dist/preview/SwitchPreview.d.ts.map +1 -0
  201. package/dist/preview/TablePreview.d.ts +2 -0
  202. package/dist/preview/TablePreview.d.ts.map +1 -0
  203. package/dist/preview/TabsPreview.d.ts +2 -0
  204. package/dist/preview/TabsPreview.d.ts.map +1 -0
  205. package/dist/preview/TogglePreview.d.ts +2 -0
  206. package/dist/preview/TogglePreview.d.ts.map +1 -0
  207. package/dist/preview/TooltipPreview.d.ts +2 -0
  208. package/dist/preview/TooltipPreview.d.ts.map +1 -0
  209. package/dist/preview/data-table/data-table-preview_column-content.d.ts +18 -0
  210. package/dist/preview/data-table/data-table-preview_column-content.d.ts.map +1 -0
  211. package/dist/preview/page-header/PageHeaderPreview.d.ts +3 -0
  212. package/dist/preview/page-header/PageHeaderPreview.d.ts.map +1 -0
  213. package/dist/tailwind.config.export.js +153 -0
  214. package/dist/themes/carbide.css +1257 -0
  215. package/docs/TAILWIND_SETUP.md +332 -0
  216. package/package.json +119 -15
  217. package/scripts/README.md +171 -0
  218. package/scripts/chakra-to-shadcn-migrator/README.md +107 -0
  219. package/scripts/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js +1135 -0
  220. package/src/index.css +536 -0
  221. package/src/themes/carbide.css +1257 -0
  222. package/tailwind.config.export.js +153 -0
@@ -0,0 +1,332 @@
1
+ # Tailwind CSS Setup for MM React Components
2
+
3
+ This guide shows how to configure Tailwind CSS in your consuming application to get the same styling as the component preview interface.
4
+
5
+ ## Quick Setup
6
+
7
+ ### 1. Install Dependencies
8
+
9
+ ```bash
10
+ npm install @machinemetrics/mm-react-components tailwindcss postcss autoprefixer
11
+ ```
12
+
13
+ ### 2. Copy Tailwind Configuration
14
+
15
+ Copy the `tailwind.config.export.js` file to your project and rename it to `tailwind.config.js`:
16
+
17
+ ```bash
18
+ cp node_modules/@machinemetrics/mm-react-components/tailwind.config.export.js tailwind.config.js
19
+ ```
20
+
21
+ ### 3. Import Theme CSS
22
+
23
+ Add the theme imports to your main CSS file:
24
+
25
+ ```css
26
+ /* Import base theme */
27
+ @import '@machinemetrics/mm-react-components/themes/base';
28
+
29
+ /* Import Carbide theme (optional) */
30
+ @import '@machinemetrics/mm-react-components/themes/carbide';
31
+ ```
32
+
33
+ ### 4. Configure PostCSS
34
+
35
+ Create or update your `postcss.config.js`:
36
+
37
+ ```javascript
38
+ export default {
39
+ plugins: {
40
+ tailwindcss: {},
41
+ autoprefixer: {},
42
+ },
43
+ };
44
+ ```
45
+
46
+ ## Complete Setup Example
47
+
48
+ ### package.json
49
+
50
+ ```json
51
+ {
52
+ "dependencies": {
53
+ "@machinemetrics/mm-react-components": "^0.2.1",
54
+ "tailwindcss": "^3.4.17",
55
+ "postcss": "^8.4.35",
56
+ "autoprefixer": "^10.4.17"
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### tailwind.config.js
62
+
63
+ ```javascript
64
+ /** @type {import('tailwindcss').Config} */
65
+ export default {
66
+ content: [
67
+ './src/**/*.{js,ts,jsx,tsx}',
68
+ './node_modules/@machinemetrics/mm-react-components/dist/**/*.{js,ts,jsx,tsx}',
69
+ ],
70
+ theme: {
71
+ extend: {
72
+ colors: {
73
+ background: 'var(--background)',
74
+ foreground: 'var(--foreground)',
75
+ card: 'var(--card)',
76
+ 'card-foreground': 'var(--card-foreground)',
77
+ popover: 'var(--popover)',
78
+ 'popover-foreground': 'var(--popover-foreground)',
79
+ primary: 'var(--primary)',
80
+ 'primary-foreground': 'var(--primary-foreground)',
81
+ secondary: 'var(--secondary)',
82
+ 'secondary-foreground': 'var(--secondary-foreground)',
83
+ muted: 'var(--muted)',
84
+ 'muted-foreground': 'var(--muted-foreground)',
85
+ accent: 'var(--accent)',
86
+ 'accent-foreground': 'var(--accent-foreground)',
87
+ destructive: 'var(--destructive)',
88
+ 'destructive-foreground': 'var(--destructive-foreground)',
89
+ border: 'var(--border)',
90
+ input: 'var(--input)',
91
+ 'bg-input': 'var(--bg-input)',
92
+ 'border-input': 'var(--border-input)',
93
+ ring: 'var(--ring)',
94
+ // Chart colors for data visualization
95
+ 'chart-1': 'var(--chart-1)',
96
+ 'chart-2': 'var(--chart-2)',
97
+ 'chart-3': 'var(--chart-3)',
98
+ 'chart-4': 'var(--chart-4)',
99
+ 'chart-5': 'var(--chart-5)',
100
+ // Sidebar colors
101
+ sidebar: 'var(--sidebar)',
102
+ 'sidebar-foreground': 'var(--sidebar-foreground)',
103
+ 'sidebar-primary': 'var(--sidebar-primary)',
104
+ 'sidebar-primary-foreground': 'var(--sidebar-primary-foreground)',
105
+ 'sidebar-accent': 'var(--sidebar-accent)',
106
+ 'sidebar-accent-foreground': 'var(--sidebar-accent-foreground)',
107
+ 'sidebar-border': 'var(--sidebar-border)',
108
+ 'sidebar-ring': 'var(--sidebar-ring)',
109
+ },
110
+ borderRadius: {
111
+ sm: 'var(--radius-sm)',
112
+ md: 'var(--radius-md)',
113
+ lg: 'var(--radius-lg)',
114
+ xl: 'var(--radius-xl)',
115
+ },
116
+ fontFamily: {
117
+ sans: [
118
+ 'Noto Sans',
119
+ 'Inter',
120
+ 'ui-sans-serif',
121
+ 'system-ui',
122
+ '-apple-system',
123
+ 'BlinkMacSystemFont',
124
+ 'Segoe UI',
125
+ 'Roboto',
126
+ 'Helvetica Neue',
127
+ 'Arial',
128
+ 'sans-serif',
129
+ 'Apple Color Emoji',
130
+ 'Segoe UI Emoji',
131
+ 'Segoe UI Symbol',
132
+ 'Noto Color Emoji',
133
+ ],
134
+ mono: [
135
+ 'Inconsolata',
136
+ 'ui-monospace',
137
+ 'SFMono-Regular',
138
+ 'Menlo',
139
+ 'Monaco',
140
+ 'Consolas',
141
+ 'Liberation Mono',
142
+ 'Courier New',
143
+ 'monospace',
144
+ ],
145
+ },
146
+ fontWeight: {
147
+ normal: '400',
148
+ medium: '500',
149
+ semibold: '600',
150
+ bold: 'var(--font-weight-bold)',
151
+ },
152
+ spacing: {
153
+ sidebar: '16rem', // 256px for sidebar width
154
+ },
155
+ animation: {
156
+ 'fade-in': 'fadeIn 0.2s ease-in-out',
157
+ 'slide-in': 'slideIn 0.3s ease-out',
158
+ },
159
+ keyframes: {
160
+ fadeIn: {
161
+ '0%': { opacity: '0' },
162
+ '100%': { opacity: '1' },
163
+ },
164
+ slideIn: {
165
+ '0%': { transform: 'translateX(-10px)', opacity: '0' },
166
+ '100%': { transform: 'translateX(0)', opacity: '1' },
167
+ },
168
+ },
169
+ },
170
+ },
171
+ plugins: [
172
+ function ({ addUtilities, theme }) {
173
+ const newUtilities = {
174
+ '.preview-sidebar': {
175
+ width: '16rem',
176
+ minHeight: '100vh',
177
+ backgroundColor: 'var(--muted)',
178
+ borderRight: '1px solid var(--border)',
179
+ padding: '1rem',
180
+ },
181
+ '.preview-main': {
182
+ flex: '1',
183
+ minWidth: '0',
184
+ padding: '2rem',
185
+ },
186
+ '.preview-card': {
187
+ backgroundColor: 'var(--card)',
188
+ border: '1px solid var(--border)',
189
+ borderRadius: 'var(--radius-lg)',
190
+ padding: '1.5rem',
191
+ },
192
+ '.preview-nav-item': {
193
+ width: '100%',
194
+ textAlign: 'left',
195
+ padding: '0.75rem',
196
+ borderRadius: '0.375rem',
197
+ fontSize: '0.875rem',
198
+ fontWeight: '500',
199
+ transition: 'colors 0.2s ease-in-out',
200
+ '&:hover': {
201
+ backgroundColor: 'var(--muted)',
202
+ color: 'var(--foreground)',
203
+ },
204
+ '&.active': {
205
+ backgroundColor: 'var(--primary)',
206
+ color: 'var(--primary-foreground)',
207
+ },
208
+ },
209
+ };
210
+ addUtilities(newUtilities);
211
+ },
212
+ ],
213
+ };
214
+ ```
215
+
216
+ ### src/index.css
217
+
218
+ ```css
219
+ @import '@machinemetrics/mm-react-components/themes/base';
220
+ @import '@machinemetrics/mm-react-components/themes/carbide';
221
+ @import 'tailwindcss';
222
+ ```
223
+
224
+ ### postcss.config.js
225
+
226
+ ```javascript
227
+ export default {
228
+ plugins: {
229
+ tailwindcss: {},
230
+ autoprefixer: {},
231
+ },
232
+ };
233
+ ```
234
+
235
+ ## Component Preview Interface
236
+
237
+ To recreate the component preview interface from the library, use these utility classes:
238
+
239
+ ```tsx
240
+ // Main layout container
241
+ <div className="min-h-screen bg-background flex">
242
+ {/* Left Navigation Sidebar */}
243
+ <div className="preview-sidebar">
244
+ <h1 className="text-xl font-bold text-foreground mb-6">MM Components</h1>
245
+
246
+ {/* Theme Toggles */}
247
+ <div className="mb-6 space-y-3">
248
+ {/* Add your theme toggle components here */}
249
+ </div>
250
+
251
+ {/* Component Navigation */}
252
+ <nav className="space-y-2">
253
+ <button className="preview-nav-item active">Button</button>
254
+ <button className="preview-nav-item">Input</button>
255
+ {/* Add more component navigation items */}
256
+ </nav>
257
+ </div>
258
+
259
+ {/* Main Preview Pane */}
260
+ <div className="preview-main">
261
+ <div>
262
+ <div className="mb-6">
263
+ <h2 className="text-2xl font-semibold text-foreground capitalize">
264
+ Component Name
265
+ </h2>
266
+ <p className="text-muted-foreground mt-1">
267
+ Preview and test the component
268
+ </p>
269
+ </div>
270
+ <div className="preview-card">{/* Your component preview content */}</div>
271
+ </div>
272
+ </div>
273
+ </div>
274
+ ```
275
+
276
+ ## Theme Customization
277
+
278
+ ### Using Base Theme Only
279
+
280
+ ```css
281
+ @import '@machinemetrics/mm-react-components/themes/base';
282
+ ```
283
+
284
+ ### Using Carbide Theme
285
+
286
+ ```css
287
+ @import '@machinemetrics/mm-react-components/themes/base';
288
+ @import '@machinemetrics/mm-react-components/themes/carbide';
289
+ ```
290
+
291
+ ### Custom Theme Overrides
292
+
293
+ You can override theme variables in your CSS:
294
+
295
+ ```css
296
+ :root {
297
+ --primary: #your-custom-color;
298
+ --background: #your-custom-background;
299
+ /* Override other variables as needed */
300
+ }
301
+ ```
302
+
303
+ ## Available Utility Classes
304
+
305
+ The exported configuration includes these custom utility classes:
306
+
307
+ - `.preview-sidebar` - Sidebar styling
308
+ - `.preview-main` - Main content area styling
309
+ - `.preview-card` - Component preview card styling
310
+ - `.preview-nav-item` - Navigation item styling
311
+
312
+ ## Color System
313
+
314
+ The configuration includes a comprehensive color system:
315
+
316
+ - **Semantic Colors**: `background`, `foreground`, `primary`, `secondary`, etc.
317
+ - **Chart Colors**: `chart-1` through `chart-5` for data visualization
318
+ - **Sidebar Colors**: Complete sidebar color system
319
+ - **Input Colors**: Specialized input styling colors
320
+
321
+ ## Typography
322
+
323
+ - **Sans Font**: Noto Sans (primary), Inter, system fonts
324
+ - **Mono Font**: Inconsolata (primary), system monospace fonts
325
+ - **Font Weights**: Normal (400), Medium (500), Semibold (600), Bold (700)
326
+
327
+ ## Animation
328
+
329
+ - **Fade In**: `animate-fade-in`
330
+ - **Slide In**: `animate-slide-in`
331
+
332
+ This configuration ensures your consuming application will have the same professional styling as the component preview interface.
package/package.json CHANGED
@@ -1,29 +1,133 @@
1
1
  {
2
2
  "name": "@machinemetrics/mm-react-components",
3
- "version": "0.1.1-1",
3
+ "version": "0.2.3-0",
4
4
  "license": "MIT",
5
- "module": "dist/mm-react-components.es.js",
6
- "source": "src/index.js",
7
5
  "type": "module",
6
+ "main": "dist/mm-react-components.umd.js",
7
+ "module": "dist/mm-react-components.es.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/mm-react-components.es.js",
13
+ "require": "./dist/mm-react-components.umd.js"
14
+ },
15
+ "./styles": "./dist/style.css",
16
+ "./themes/base": "./dist/index.css",
17
+ "./themes/carbide": "./dist/themes/carbide.css",
18
+ "./tailwind.config": "./tailwind.config.export.js",
19
+ "./docs/tailwind-setup": "./docs/TAILWIND_SETUP.md"
20
+ },
8
21
  "engines": {
9
22
  "node": ">=20"
10
23
  },
24
+ "bin": {
25
+ "chakra-to-shadcn": "scripts/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js"
26
+ },
11
27
  "scripts": {
12
- "build": "vite build",
13
- "start": "vite build --watch"
28
+ "build": "vite build --mode production && tsc --project tsconfig.build.json",
29
+ "build:dev": "vite build --mode development",
30
+ "dev": "vite",
31
+ "preview": "vite preview",
32
+ "lint": "eslint . --max-warnings 0",
33
+ "lint:fix": "eslint . --fix",
34
+ "type-check": "tsc --noEmit",
35
+ "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
36
+ "format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
37
+ "test": "playwright test",
38
+ "test:ui": "playwright test --ui",
39
+ "test:headed": "playwright test --headed",
40
+ "test:visual": "playwright test --config=playwright.config.ts",
41
+ "test:visual:ui": "playwright test --config=playwright.config.ts --ui",
42
+ "test:visual:update": "playwright test --config=playwright.config.ts --update-snapshots",
43
+ "test:visual:ci": "playwright test --config=playwright.config.ts --reporter=github",
44
+ "update-components": "tsx scripts/update-components.ts",
45
+ "update-components:bash": "./scripts/update-components.sh",
46
+ "update-components:full": "tsx scripts/update-components.ts && tsx scripts/apply-customizations.ts",
47
+ "apply-customizations": "tsx scripts/apply-customizations.ts",
48
+ "generate-visual-tests": "npx tsx scripts/generate-visual-tests.ts",
49
+ "generate-visual-tests:overwrite": "npx tsx scripts/generate-visual-tests.ts --overwrite",
50
+ "create-component": "tsx scripts/create-component.ts",
51
+ "migrate:chakra-to-shadcn": "node scripts/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js --project . --config scripts/chakra-to-shadcn-migrator/chakra-to-shadcn.config.json",
52
+ "shadcn:add": "shadcn add",
53
+ "shadcn:diff": "shadcn diff",
54
+ "shadcn:init": "shadcn init",
55
+ "ci:setup": "npm run test:visual:update",
56
+ "ci:check": "npm run build && npm run test:visual",
57
+ "prepublishOnly": "npm run type-check && npm run lint && npm run build",
58
+ "clean": "rm -rf dist dev-dist"
14
59
  },
15
- "devDependencies": {
16
- "prettier": "^3.3.3",
17
- "vite": "^6.1.0"
60
+ "dependencies": {
61
+ "@dnd-kit/core": "6.3.1",
62
+ "@dnd-kit/modifiers": "9.0.0",
63
+ "@dnd-kit/sortable": "10.0.0",
64
+ "@dnd-kit/utilities": "3.2.2",
65
+ "@radix-ui/react-accordion": "^1.2.12",
66
+ "@radix-ui/react-checkbox": "^1.3.3",
67
+ "@radix-ui/react-collapsible": "^1.1.12",
68
+ "@radix-ui/react-dialog": "^1.1.15",
69
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
70
+ "@radix-ui/react-label": "^2.1.7",
71
+ "@radix-ui/react-popover": "^1.1.15",
72
+ "@radix-ui/react-progress": "^1.1.7",
73
+ "@radix-ui/react-radio-group": "^1.3.8",
74
+ "@radix-ui/react-select": "^2.2.6",
75
+ "@radix-ui/react-slider": "^1.3.6",
76
+ "@radix-ui/react-slot": "^1.2.3",
77
+ "@radix-ui/react-switch": "^1.2.6",
78
+ "@radix-ui/react-tabs": "^1.1.13",
79
+ "@radix-ui/react-toggle": "^1.1.10",
80
+ "@radix-ui/react-tooltip": "^1.2.8",
81
+ "@tanstack/react-table": "^8.21.3",
82
+ "@tanstack/react-virtual": "3.13.12",
83
+ "class-variance-authority": "^0.7.1",
84
+ "clsx": "^2.1.1",
85
+ "date-fns": "^4.1.0",
86
+ "lucide-react": "^0.544.0",
87
+ "react": "^19.1.1",
88
+ "react-day-picker": "^9.11.0",
89
+ "react-dom": "^19.1.1",
90
+ "react-dropzone": "14.3.8",
91
+ "tailwind-merge": "^3.3.1",
92
+ "tw-animate-css": "^1.3.8",
93
+ "vaul": "^1.1.2"
18
94
  },
19
- "peerDependencies": {
20
- "@chakra-ui/react": "^2.10.5",
21
- "react": ">=16.0.0",
22
- "react-dom": ">=16.0.0",
23
- "react-router-dom": "^6.29.0",
24
- "styled-components": ">=4.0.0"
95
+ "devDependencies": {
96
+ "@eslint/js": "^9.33.0",
97
+ "@playwright/test": "^1.55.0",
98
+ "@tailwindcss/vite": "^4.1.13",
99
+ "@types/node": "^24.5.0",
100
+ "@types/react": "^19.1.10",
101
+ "@types/react-dom": "^19.1.7",
102
+ "@types/react-table": "^7.7.20",
103
+ "@typescript-eslint/eslint-plugin": "^8.43.0",
104
+ "@typescript-eslint/parser": "^8.43.0",
105
+ "@vitejs/plugin-react": "^5.0.0",
106
+ "eslint": "^9.33.0",
107
+ "eslint-config-prettier": "^10.1.8",
108
+ "eslint-plugin-jsx-a11y": "^6.10.2",
109
+ "eslint-plugin-prettier": "^5.5.4",
110
+ "eslint-plugin-react": "^7.37.5",
111
+ "eslint-plugin-react-hooks": "^5.2.0",
112
+ "eslint-plugin-react-refresh": "^0.4.20",
113
+ "globals": "^16.3.0",
114
+ "playwright": "^1.55.0",
115
+ "prettier": "^3.6.2",
116
+ "tailwindcss": "^4.1.13",
117
+ "terser": "^5.44.0",
118
+ "tsx": "^4.19.2",
119
+ "typescript": "~5.8.3",
120
+ "typescript-eslint": "^8.39.1",
121
+ "vite": "^7.1.2"
25
122
  },
26
123
  "files": [
27
- "dist"
124
+ "dist",
125
+ "src/index.css",
126
+ "src/themes",
127
+ "tailwind.config.export.js",
128
+ "docs/TAILWIND_SETUP.md",
129
+ "README.md",
130
+ "CHANGELOG.md",
131
+ "LICENSE"
28
132
  ]
29
133
  }
@@ -0,0 +1,171 @@
1
+ # Scripts Directory
2
+
3
+ This directory contains scripts for maintaining shadcn/ui components and visual regression tests.
4
+
5
+ ## Component Creation Script
6
+
7
+ ### Create New Component
8
+
9
+ ```bash
10
+ npm run create-component <component-name>
11
+ ```
12
+
13
+ Creates a new shadcn/ui component with automatic linting, formatting, and preview generation.
14
+
15
+ **Options:**
16
+
17
+ - `--skip-preview` - Skip generating preview component
18
+ - `--skip-lint` - Skip running ESLint fixes
19
+ - `--skip-format` - Skip running Prettier formatting
20
+ - `--skip-tests` - Skip generating Playwright tests
21
+ - `--help` - Show help message
22
+
23
+ **Examples:**
24
+
25
+ ```bash
26
+ npm run create-component card
27
+ npm run create-component dialog --skip-preview
28
+ npm run create-component select --skip-lint --skip-format
29
+ npm run create-component button --skip-tests
30
+ ```
31
+
32
+ **Workflow:**
33
+
34
+ 1. Add component using shadcn CLI
35
+ 2. Apply ESLint fixes (unless --skip-lint)
36
+ 3. Apply Prettier formatting (unless --skip-format)
37
+ 4. Generate preview component (unless --skip-preview)
38
+ 5. Generate Playwright tests (unless --skip-tests)
39
+ 6. Update main index.ts exports
40
+
41
+ ## Component Update Scripts
42
+
43
+ ### TypeScript Version
44
+
45
+ ```bash
46
+ npm run update-components
47
+ ```
48
+
49
+ ### Bash Version
50
+
51
+ ```bash
52
+ npm run update-components:bash
53
+ ```
54
+
55
+ ## Visual Test Generation Scripts
56
+
57
+ ### Generate Missing Tests (Default)
58
+
59
+ ```bash
60
+ npm run generate-visual-tests
61
+ ```
62
+
63
+ Only generates tests for components that don't have test files yet. Existing tests are preserved.
64
+
65
+ ### Generate All Tests (Overwrite)
66
+
67
+ ```bash
68
+ npm run generate-visual-tests:overwrite
69
+ ```
70
+
71
+ Regenerates all test files, overwriting existing ones. Useful after template changes or major updates.
72
+
73
+ ## What the Component Update Scripts Do
74
+
75
+ Both component update scripts will:
76
+
77
+ 1. **Scan** `src/components/ui/` for all installed components
78
+ 2. **Filter** out custom components (like `theme-toggle`)
79
+ 3. **Update** each remaining component using `npx shadcn@latest add <component> --yes --overwrite`
80
+ 4. **Report** a summary of what was updated, skipped, or failed
81
+
82
+ The scripts automatically discover components from your folder - no need to maintain a hardcoded list!
83
+
84
+ ## What the Visual Test Generation Scripts Do
85
+
86
+ The visual test generation script will:
87
+
88
+ 1. **Scan** all preview routes in `src/App.tsx` for component previews
89
+ 2. **Check** existing test files in `tests/visual/`
90
+ 3. **Generate** Playwright test files using TypeScript templates from `scripts/templates/`
91
+ 4. **Smart Wait Logic**: Automatically adds table-specific wait conditions for data table components
92
+ 5. **Skip or Overwrite**: Either skip existing tests (default) or overwrite them (with `--overwrite`)
93
+ 6. **Report** a summary of generated, skipped, and total test files
94
+
95
+ ### Generated Test Types
96
+
97
+ Each component gets tests for:
98
+
99
+ - **Main Component Screenshot**: Captures the component in its default state
100
+ - **Mobile Responsive Screenshot**: Tests the component at mobile viewport (375x667)
101
+
102
+ ## Features
103
+
104
+ ### Component Creation Script
105
+
106
+ - ✅ **Smart Component Detection**: Automatically detects component structure and exports
107
+ - ✅ **Intelligent Preview Generation**: Creates appropriate preview components based on component type
108
+ - ✅ **Special Component Handling**: Custom preview templates for complex components (card, dialog, etc.)
109
+ - ✅ **Automatic Linting**: Applies ESLint fixes after component creation
110
+ - ✅ **Automatic Formatting**: Applies Prettier formatting for consistent code style
111
+ - ✅ **Playwright Test Generation**: Automatically generates visual regression tests
112
+ - ✅ **Export Management**: Automatically updates index.ts with new component exports
113
+ - ✅ **Error Handling**: Comprehensive error handling with detailed progress reporting
114
+ - ✅ **Flexible Options**: Skip any step with command-line flags
115
+ - ✅ **Help Documentation**: Built-in help with usage examples
116
+
117
+ ### Component Update Scripts
118
+
119
+ - ✅ **Auto-Discovery**: Automatically finds all components in your `ui/` folder
120
+ - ✅ **Smart Filtering**: Skips custom components automatically
121
+ - ✅ **CLI Validation**: Let shadcn CLI determine if components are valid/updatable
122
+ - ✅ **Detailed Progress**: Shows real-time updates and comprehensive summary
123
+ - ✅ **Error Handling**: Reports failures and continues with other components
124
+ - ✅ **Overwrite**: Uses `--overwrite` flag to ensure components are properly updated
125
+
126
+ ### Visual Test Generation Scripts
127
+
128
+ - ✅ **TypeScript Templates**: Uses proper `.ts` template files for full linting and type-checking
129
+ - ✅ **Smart Generation**: Only generates missing tests by default, preserves existing customizations
130
+ - ✅ **Overwrite Mode**: `--overwrite` flag regenerates all tests when needed
131
+ - ✅ **Dynamic Wait Logic**: Automatically adapts wait conditions for data tables vs regular components
132
+ - ✅ **Mobile Testing**: Includes responsive testing at mobile viewport sizes
133
+ - ✅ **Route Auto-Discovery**: Automatically finds all component preview routes
134
+
135
+ ## Custom Components
136
+
137
+ Components listed in `CUSTOM_COMPONENTS` will be skipped during updates:
138
+
139
+ - `theme-toggle` - Custom component, not from shadcn/ui
140
+
141
+ To add more custom components to skip, edit the `CUSTOM_COMPONENTS` array in either script.
142
+
143
+ ## Requirements
144
+
145
+ ### TypeScript Version
146
+
147
+ - `tsx` package (included in devDependencies)
148
+ - Node.js
149
+
150
+ ### Bash Version
151
+
152
+ - Bash shell
153
+ - `npx` command available
154
+
155
+ ## Help
156
+
157
+ Both scripts support `--help` flag:
158
+
159
+ ```bash
160
+ npm run update-components -- --help
161
+ ./scripts/update-components.sh --help
162
+ ```
163
+
164
+ ## Troubleshooting
165
+
166
+ If updates fail:
167
+
168
+ 1. Ensure you have internet connection
169
+ 2. Make sure `npx` can access the shadcn CLI
170
+ 3. Check that `src/components/ui/` directory exists
171
+ 4. Verify you're in the project root directory