@arolariu/components 0.1.2 → 0.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.
- package/DEBUGGING.md +396 -396
- package/LICENSE.md +21 -21
- package/changelog.md +120 -118
- package/dist/components/ui/accordion.d.ts +6 -6
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +20 -28
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +19 -13
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +40 -63
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/alert.d.ts +7 -8
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/alert.js +18 -21
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +1 -2
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui/aspect-ratio.js +1 -8
- package/dist/components/ui/aspect-ratio.js.map +1 -1
- package/dist/components/ui/avatar.d.ts +5 -5
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/avatar.js +17 -20
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/background-beams.d.ts.map +1 -1
- package/dist/components/ui/background-beams.js +6 -6
- package/dist/components/ui/background-beams.js.map +1 -1
- package/dist/components/ui/badge.d.ts +7 -7
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/badge.js +9 -12
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts +17 -9
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.js +32 -39
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/bubble-background.d.ts +1 -1
- package/dist/components/ui/bubble-background.d.ts.map +1 -1
- package/dist/components/ui/bubble-background.js +13 -13
- package/dist/components/ui/bubble-background.js.map +1 -1
- package/dist/components/ui/button-group.d.ts +13 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button-group.js +47 -0
- package/dist/components/ui/button-group.js.map +1 -0
- package/dist/components/ui/button.d.ts +8 -7
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +16 -15
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.js +22 -22
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.d.ts +7 -8
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/card.js +33 -46
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/carousel.d.ts +7 -8
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +30 -21
- package/dist/components/ui/carousel.js.map +1 -1
- package/dist/components/ui/chart.d.ts +37 -29
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/chart.js +29 -27
- package/dist/components/ui/chart.js.map +1 -1
- package/dist/components/ui/checkbox.d.ts +2 -2
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +11 -13
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/collapsible.d.ts +4 -5
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +3 -20
- package/dist/components/ui/collapsible.js.map +1 -1
- package/dist/components/ui/command.d.ts +79 -17
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/command.js +52 -77
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/context-menu.d.ts +23 -21
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/context-menu.js +60 -104
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/counting-number.d.ts +1 -1
- package/dist/components/ui/counting-number.d.ts.map +1 -1
- package/dist/components/ui/counting-number.js +4 -3
- package/dist/components/ui/counting-number.js.map +1 -1
- package/dist/components/ui/dialog.d.ts +17 -13
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +38 -66
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/dot-background.d.ts +10 -17
- package/dist/components/ui/dot-background.d.ts.map +1 -1
- package/dist/components/ui/dot-background.js +2 -2
- package/dist/components/ui/dot-background.js.map +1 -1
- package/dist/components/ui/drawer.d.ts +20 -11
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +37 -62
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +23 -21
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +65 -109
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/dropdrawer.d.ts +3 -3
- package/dist/components/ui/dropdrawer.d.ts.map +1 -1
- package/dist/components/ui/dropdrawer.js +13 -16
- package/dist/components/ui/dropdrawer.js.map +1 -1
- package/dist/components/ui/empty.d.ts +13 -0
- package/dist/components/ui/empty.d.ts.map +1 -0
- package/dist/components/ui/empty.js +65 -0
- package/dist/components/ui/empty.js.map +1 -0
- package/dist/components/ui/field.d.ts +25 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/field.js +135 -0
- package/dist/components/ui/field.js.map +1 -0
- package/dist/components/ui/fireworks-background.d.ts.map +1 -1
- package/dist/components/ui/fireworks-background.js +1 -1
- package/dist/components/ui/fireworks-background.js.map +1 -1
- package/dist/components/ui/flip-button.d.ts +1 -1
- package/dist/components/ui/flip-button.d.ts.map +1 -1
- package/dist/components/ui/flip-button.js +3 -3
- package/dist/components/ui/flip-button.js.map +1 -1
- package/dist/components/ui/form.d.ts +7 -8
- package/dist/components/ui/form.d.ts.map +1 -1
- package/dist/components/ui/form.js +29 -28
- package/dist/components/ui/form.js.map +1 -1
- package/dist/components/ui/gradient-background.d.ts +1 -1
- package/dist/components/ui/gradient-background.d.ts.map +1 -1
- package/dist/components/ui/gradient-background.js +2 -2
- package/dist/components/ui/gradient-background.js.map +1 -1
- package/dist/components/ui/gradient-text.d.ts +1 -1
- package/dist/components/ui/gradient-text.d.ts.map +1 -1
- package/dist/components/ui/gradient-text.js +5 -5
- package/dist/components/ui/gradient-text.js.map +1 -1
- package/dist/components/ui/highlight-text.d.ts +1 -1
- package/dist/components/ui/highlight-text.d.ts.map +1 -1
- package/dist/components/ui/highlight-text.js +3 -3
- package/dist/components/ui/highlight-text.js.map +1 -1
- package/dist/components/ui/hole-background.d.ts.map +1 -1
- package/dist/components/ui/hole-background.js +11 -10
- package/dist/components/ui/hole-background.js.map +1 -1
- package/dist/components/ui/hover-card.d.ts +5 -5
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/hover-card.js +12 -26
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/input-group.d.ts +17 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/input-group.js +91 -0
- package/dist/components/ui/input-group.js.map +1 -0
- package/dist/components/ui/input-otp.d.ts +31 -8
- package/dist/components/ui/input-otp.d.ts.map +1 -1
- package/dist/components/ui/input-otp.js +24 -27
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input.d.ts +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/input.js +7 -8
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/item.d.ts +24 -0
- package/dist/components/ui/item.d.ts.map +1 -0
- package/dist/components/ui/item.js +122 -0
- package/dist/components/ui/item.js.map +1 -0
- package/dist/components/ui/kbd.d.ts +5 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +21 -0
- package/dist/components/ui/kbd.js.map +1 -0
- package/dist/components/ui/label.d.ts +3 -2
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/label.js +9 -8
- package/dist/components/ui/label.js.map +1 -1
- package/dist/components/ui/menubar.d.ts +20 -18
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/menubar.js +75 -95
- package/dist/components/ui/menubar.js.map +1 -1
- package/dist/components/ui/navigation-menu.d.ts +11 -13
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +39 -58
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/pagination.d.ts +25 -10
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +33 -41
- package/dist/components/ui/pagination.js.map +1 -1
- package/dist/components/ui/popover.d.ts +6 -6
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +10 -26
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/progress.d.ts +2 -2
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +8 -10
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/radio-group.d.ts +3 -3
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +17 -20
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/resizable.d.ts +21 -6
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/resizable.js +9 -21
- package/dist/components/ui/resizable.js.map +1 -1
- package/dist/components/ui/ripple-button.d.ts +1 -1
- package/dist/components/ui/ripple-button.d.ts.map +1 -1
- package/dist/components/ui/ripple-button.js +4 -4
- package/dist/components/ui/ripple-button.js.map +1 -1
- package/dist/components/ui/scratcher.d.ts.map +1 -1
- package/dist/components/ui/scratcher.js +7 -5
- package/dist/components/ui/scratcher.js.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +3 -3
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.js +14 -18
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.d.ts +11 -13
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/select.js +55 -78
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/separator.d.ts +2 -2
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/separator.js +7 -8
- package/dist/components/ui/separator.js.map +1 -1
- package/dist/components/ui/sheet.d.ts +24 -12
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sheet.js +56 -68
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.d.ts +35 -39
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +115 -124
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js +2 -3
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/slider.d.ts +2 -2
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/slider.js +12 -31
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/sonner.d.ts +4 -2
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/sonner.js +8 -5
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/spinner.d.ts +4 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner.js +16 -0
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +8 -10
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/table.d.ts +9 -9
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/table.js +40 -49
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.d.ts +6 -6
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +18 -27
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.d.ts +1 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/textarea.js +7 -8
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toggle-group.d.ts +9 -4
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.js +12 -16
- package/dist/components/ui/toggle-group.js.map +1 -1
- package/dist/components/ui/toggle.d.ts +9 -6
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +8 -9
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/components/ui/tooltip.d.ts +6 -6
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/tooltip.js +14 -39
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/typewriter.d.ts.map +1 -1
- package/dist/components/ui/typewriter.js +9 -9
- package/dist/components/ui/typewriter.js.map +1 -1
- package/dist/hooks/useIsMobile.d.ts +2 -5
- package/dist/hooks/useIsMobile.d.ts.map +1 -1
- package/dist/hooks/useIsMobile.js +1 -1
- package/dist/hooks/useIsMobile.js.map +1 -1
- package/dist/hooks/useWindowSize.d.ts +0 -1
- package/dist/hooks/useWindowSize.d.ts.map +1 -1
- package/dist/hooks/useWindowSize.js +1 -1
- package/dist/hooks/useWindowSize.js.map +1 -1
- package/dist/index.css +841 -1128
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +43 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -5
- package/dist/lib/utilities.d.ts +9 -0
- package/dist/lib/utilities.d.ts.map +1 -0
- package/dist/lib/{utils.js → utilities.js} +1 -1
- package/dist/lib/utilities.js.map +1 -0
- package/package.json +121 -90
- package/{README.md → readme.md} +627 -627
- package/src/components/ui/accordion.tsx +55 -66
- package/src/components/ui/alert-dialog.tsx +124 -160
- package/src/components/ui/alert.tsx +56 -69
- package/src/components/ui/aspect-ratio.tsx +7 -12
- package/src/components/ui/avatar.tsx +43 -53
- package/src/components/ui/background-beams.tsx +145 -142
- package/src/components/ui/badge.tsx +39 -48
- package/src/components/ui/breadcrumb.tsx +94 -117
- package/src/components/ui/bubble-background.tsx +170 -189
- package/src/components/ui/button-group.tsx +69 -0
- package/src/components/ui/button.tsx +55 -61
- package/src/components/ui/calendar.tsx +175 -216
- package/src/components/ui/card.tsx +64 -97
- package/src/components/ui/carousel.tsx +216 -241
- package/src/components/ui/chart.tsx +293 -385
- package/src/components/ui/checkbox.tsx +27 -32
- package/src/components/ui/collapsible.tsx +11 -34
- package/src/components/ui/command.tsx +138 -184
- package/src/components/ui/context-menu.tsx +186 -255
- package/src/components/ui/counting-number.tsx +92 -108
- package/src/components/ui/dialog.tsx +106 -146
- package/src/components/ui/dot-background.tsx +153 -158
- package/src/components/ui/drawer.tsx +105 -141
- package/src/components/ui/dropdown-menu.tsx +188 -260
- package/src/components/ui/dropdrawer.tsx +865 -973
- package/src/components/ui/empty.tsx +86 -0
- package/src/components/ui/field.tsx +198 -0
- package/src/components/ui/fireworks-background.tsx +325 -378
- package/src/components/ui/flip-button.tsx +89 -110
- package/src/components/ui/form.tsx +144 -174
- package/src/components/ui/gradient-background.tsx +30 -43
- package/src/components/ui/gradient-text.tsx +62 -65
- package/src/components/ui/highlight-text.tsx +54 -71
- package/src/components/ui/hole-background.tsx +326 -361
- package/src/components/ui/hover-card.tsx +29 -44
- package/src/components/ui/input-group.tsx +145 -0
- package/src/components/ui/input-otp.tsx +66 -77
- package/src/components/ui/input.tsx +21 -22
- package/src/components/ui/item.tsx +163 -0
- package/src/components/ui/kbd.tsx +31 -0
- package/src/components/ui/label.tsx +23 -24
- package/src/components/ui/menubar.tsx +233 -279
- package/src/components/ui/navigation-menu.tsx +120 -171
- package/src/components/ui/pagination.tsx +92 -129
- package/src/components/ui/popover.tsx +33 -48
- package/src/components/ui/progress.tsx +24 -31
- package/src/components/ui/radio-group.tsx +43 -45
- package/src/components/ui/resizable.tsx +38 -56
- package/src/components/ui/ripple-button.tsx +90 -111
- package/src/components/ui/scratcher.tsx +167 -171
- package/src/components/ui/scroll-area.tsx +42 -58
- package/src/components/ui/select.tsx +145 -191
- package/src/components/ui/separator.tsx +26 -28
- package/src/components/ui/sheet.tsx +112 -145
- package/src/components/ui/sidebar.tsx +664 -729
- package/src/components/ui/skeleton.tsx +15 -19
- package/src/components/ui/slider.tsx +23 -63
- package/src/components/ui/sonner.tsx +36 -26
- package/src/components/ui/spinner.tsx +18 -0
- package/src/components/ui/switch.tsx +28 -31
- package/src/components/ui/table.tsx +93 -119
- package/src/components/ui/tabs.tsx +54 -66
- package/src/components/ui/textarea.tsx +21 -20
- package/src/components/ui/toggle-group.tsx +53 -73
- package/src/components/ui/toggle.tsx +44 -47
- package/src/components/ui/tooltip.tsx +32 -61
- package/src/components/ui/typewriter.tsx +173 -188
- package/src/hooks/useIsMobile.tsx +42 -45
- package/src/hooks/useWindowSize.tsx +66 -72
- package/src/index.css +67 -67
- package/src/index.ts +342 -408
- package/src/lib/utilities.ts +12 -0
- package/dist/lib/utils.d.ts +0 -7
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/src/lib/utils.ts +0 -10
package/DEBUGGING.md
CHANGED
|
@@ -1,396 +1,396 @@
|
|
|
1
|
-
# 🔍 Debugging Guide for @arolariu/components
|
|
2
|
-
|
|
3
|
-
This guide provides comprehensive information on debugging and troubleshooting the `@arolariu/components` package in your projects.
|
|
4
|
-
|
|
5
|
-
## 📋 Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Source Maps](#source-maps)
|
|
8
|
-
- [TypeScript Support](#typescript-support)
|
|
9
|
-
- [Browser DevTools Setup](#browser-devtools-setup)
|
|
10
|
-
- [IDE Configuration](#ide-configuration)
|
|
11
|
-
- [Common Issues](#common-issues)
|
|
12
|
-
- [Performance Debugging](#performance-debugging)
|
|
13
|
-
- [Component Introspection](#component-introspection)
|
|
14
|
-
- [Build Analysis](#build-analysis)
|
|
15
|
-
|
|
16
|
-
## 🗺️ Source Maps
|
|
17
|
-
|
|
18
|
-
All distribution files include source maps for optimal debugging experience:
|
|
19
|
-
|
|
20
|
-
### JavaScript Source Maps
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
dist/
|
|
24
|
-
├── button.js
|
|
25
|
-
├── button.js.map ✅ ESM source map
|
|
26
|
-
└── ...
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Benefits
|
|
30
|
-
|
|
31
|
-
- **Accurate stack traces** pointing to original TypeScript source
|
|
32
|
-
- **Breakpoint debugging** in original source files
|
|
33
|
-
- **CSS debugging** with original Tailwind source locations
|
|
34
|
-
- **Better error messages** with precise line numbers
|
|
35
|
-
|
|
36
|
-
## 📝 TypeScript Support
|
|
37
|
-
|
|
38
|
-
### Declaration Files
|
|
39
|
-
|
|
40
|
-
Every component includes comprehensive TypeScript declarations:
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
dist/types/
|
|
44
|
-
├── button.d.ts ✅ Type definitions
|
|
45
|
-
├── card.d.ts ✅ Component props
|
|
46
|
-
├── form.d.ts ✅ Form utilities
|
|
47
|
-
└── ...
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Source Access
|
|
51
|
-
|
|
52
|
-
Original TypeScript source is included for reference:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
src/
|
|
56
|
-
├── components/ui/
|
|
57
|
-
│ ├── button.tsx ✅ Original source
|
|
58
|
-
│ ├── card.tsx ✅ Implementation details
|
|
59
|
-
│ └── ...
|
|
60
|
-
├── hooks/
|
|
61
|
-
│ ├── use-mobile.ts ✅ Custom hooks
|
|
62
|
-
│ └── ...
|
|
63
|
-
└── lib/
|
|
64
|
-
├── utils.ts ✅ Utility functions
|
|
65
|
-
└── ...
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## 🌐 Browser DevTools Setup
|
|
69
|
-
|
|
70
|
-
### Chrome DevTools
|
|
71
|
-
|
|
72
|
-
1. Open DevTools (F12)
|
|
73
|
-
2. Go to **Settings** (⚙️)
|
|
74
|
-
3. Navigate to **Preferences** → **Sources**
|
|
75
|
-
4. Enable **"Enable JavaScript source maps"**
|
|
76
|
-
5. Enable **"Enable CSS source maps"**
|
|
77
|
-
|
|
78
|
-
### Firefox DevTools
|
|
79
|
-
|
|
80
|
-
1. Open DevTools (F12)
|
|
81
|
-
2. Go to **Settings** (⚙️)
|
|
82
|
-
3. Navigate to **Advanced Settings**
|
|
83
|
-
4. Check **"Enable Source Maps"**
|
|
84
|
-
|
|
85
|
-
### Safari DevTools
|
|
86
|
-
|
|
87
|
-
1. Open Web Inspector (⌘⌥I)
|
|
88
|
-
2. Go to **Web Inspector** → **Preferences**
|
|
89
|
-
3. Navigate to **Sources**
|
|
90
|
-
4. Enable **"Enable source maps"**
|
|
91
|
-
|
|
92
|
-
## 🛠️ IDE Configuration
|
|
93
|
-
|
|
94
|
-
### VS Code Setup
|
|
95
|
-
|
|
96
|
-
#### Launch Configuration
|
|
97
|
-
|
|
98
|
-
Create `.vscode/launch.json`:
|
|
99
|
-
|
|
100
|
-
```json
|
|
101
|
-
{
|
|
102
|
-
"version": "0.2.0",
|
|
103
|
-
"configurations": [
|
|
104
|
-
{
|
|
105
|
-
"type": "chrome",
|
|
106
|
-
"request": "launch",
|
|
107
|
-
"name": "Debug React App",
|
|
108
|
-
"url": "http://localhost:3000",
|
|
109
|
-
"webRoot": "${workspaceFolder}/src",
|
|
110
|
-
"sourceMapPathOverrides": {
|
|
111
|
-
"*": "${webRoot}/*",
|
|
112
|
-
"webpack:///src/*": "${webRoot}/*",
|
|
113
|
-
"webpack:///./*": "${webRoot}/*",
|
|
114
|
-
"webpack:///./~/*": "${webRoot}/node_modules/*",
|
|
115
|
-
"node_modules/@arolariu/components/src/*": "${webRoot}/node_modules/@arolariu/components/src/*"
|
|
116
|
-
},
|
|
117
|
-
"skipFiles": ["<node_internals>/**"]
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
#### Recommended Extensions
|
|
124
|
-
|
|
125
|
-
```json
|
|
126
|
-
// .vscode/extensions.json
|
|
127
|
-
{
|
|
128
|
-
"recommendations": [
|
|
129
|
-
"ms-vscode.vscode-typescript-next",
|
|
130
|
-
"bradlc.vscode-tailwindcss",
|
|
131
|
-
"ms-vscode.vscode-json",
|
|
132
|
-
"esbenp.prettier-vscode",
|
|
133
|
-
"wix.vscode-import-cost"
|
|
134
|
-
]
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### JetBrains IDEs (WebStorm, IntelliJ)
|
|
139
|
-
|
|
140
|
-
1. Go to **Settings** → **Build, Execution, Deployment** → **Debugger**
|
|
141
|
-
2. Enable **"Use JavaScript source maps"**
|
|
142
|
-
3. Configure **Source Maps** section:
|
|
143
|
-
- Check **"Process TypeScript files"**
|
|
144
|
-
- Set source map search locations
|
|
145
|
-
|
|
146
|
-
## 🐛 Common Issues
|
|
147
|
-
|
|
148
|
-
### Issue: Components Not Rendering
|
|
149
|
-
|
|
150
|
-
**Symptoms:**
|
|
151
|
-
|
|
152
|
-
- Components appear as empty divs
|
|
153
|
-
- No styling applied
|
|
154
|
-
- TypeScript errors about missing props
|
|
155
|
-
|
|
156
|
-
**Debugging Steps:**
|
|
157
|
-
|
|
158
|
-
```tsx
|
|
159
|
-
// 1. Check component import
|
|
160
|
-
import { Button } from "@arolariu/components/button";
|
|
161
|
-
|
|
162
|
-
// 2. Verify component props
|
|
163
|
-
<Button variant="default" size="md">
|
|
164
|
-
Click me
|
|
165
|
-
</Button>;
|
|
166
|
-
|
|
167
|
-
// 3. Inspect with React DevTools
|
|
168
|
-
// Look for component in React tree
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**Solution:**
|
|
172
|
-
|
|
173
|
-
```tsx
|
|
174
|
-
// ✅ Correct import and usage
|
|
175
|
-
import { Button } from "@arolariu/components/button";
|
|
176
|
-
|
|
177
|
-
export function MyComponent() {
|
|
178
|
-
return (
|
|
179
|
-
<Button variant="default" onClick={() => console.log("Clicked!")}>
|
|
180
|
-
My Button
|
|
181
|
-
</Button>
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Issue: Styling Conflicts
|
|
187
|
-
|
|
188
|
-
**Symptoms:**
|
|
189
|
-
|
|
190
|
-
- Components look different than expected
|
|
191
|
-
- CSS classes being overridden
|
|
192
|
-
- Tailwind styles not applying
|
|
193
|
-
|
|
194
|
-
**Debugging Steps:**
|
|
195
|
-
|
|
196
|
-
1. Open browser DevTools
|
|
197
|
-
2. Inspect component element
|
|
198
|
-
3. Check CSS cascade in **Styles** panel
|
|
199
|
-
4. Look for conflicting CSS rules
|
|
200
|
-
|
|
201
|
-
**Solutions:**
|
|
202
|
-
|
|
203
|
-
```css
|
|
204
|
-
/* Option 1: Use CSS specificity */
|
|
205
|
-
.my-custom-button {
|
|
206
|
-
@apply bg-blue-500 hover:bg-blue-600 !important;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/* Option 2: Use CSS layers */
|
|
210
|
-
@layer components {
|
|
211
|
-
.my-button-override {
|
|
212
|
-
background-color: theme("colors.blue.500");
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### Issue: TypeScript Errors
|
|
218
|
-
|
|
219
|
-
**Symptoms:**
|
|
220
|
-
|
|
221
|
-
- Red squiggly lines in IDE
|
|
222
|
-
- Type checking failures
|
|
223
|
-
- Missing prop definitions
|
|
224
|
-
|
|
225
|
-
**Debugging Steps:**
|
|
226
|
-
|
|
227
|
-
```tsx
|
|
228
|
-
// 1. Hover over component in IDE to see type info
|
|
229
|
-
import { Button } from "@arolariu/components/button";
|
|
230
|
-
|
|
231
|
-
// 2. Check available props
|
|
232
|
-
const buttonProps: React.ComponentProps<typeof Button> = {
|
|
233
|
-
variant: "default",
|
|
234
|
-
size: "md",
|
|
235
|
-
// ... other props
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
// 3. Use TypeScript utility types
|
|
239
|
-
type ButtonVariant = React.ComponentProps<typeof Button>["variant"];
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
## ⚡ Performance Debugging
|
|
243
|
-
|
|
244
|
-
### Bundle Analysis
|
|
245
|
-
|
|
246
|
-
#### Webpack Bundle Analyzer
|
|
247
|
-
|
|
248
|
-
```bash
|
|
249
|
-
# Install analyzer
|
|
250
|
-
npm install --save-dev webpack-bundle-analyzer
|
|
251
|
-
|
|
252
|
-
# Analyze your bundle
|
|
253
|
-
npx webpack-bundle-analyzer build/static/js/*.js
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
#### Import Cost Analysis
|
|
257
|
-
|
|
258
|
-
Install the "Import Cost" VS Code extension to see real-time import sizes:
|
|
259
|
-
|
|
260
|
-
```tsx
|
|
261
|
-
import { Button } from "@arolariu/components/button"; // ~3.2KB
|
|
262
|
-
import { Dialog } from "@arolariu/components/dialog"; // ~6.1KB
|
|
263
|
-
import { Chart } from "@arolariu/components/chart"; // ~12.4KB
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
### Tree Shaking Verification
|
|
267
|
-
|
|
268
|
-
```tsx
|
|
269
|
-
// ✅ Good: Tree-shakeable imports
|
|
270
|
-
import { Button } from "@arolariu/components/button";
|
|
271
|
-
import { Card } from "@arolariu/components/card";
|
|
272
|
-
|
|
273
|
-
// ❌ Avoid: Imports entire library
|
|
274
|
-
import { Button, Card } from "@arolariu/components";
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
### Performance Monitoring
|
|
278
|
-
|
|
279
|
-
```tsx
|
|
280
|
-
import { Profiler } from "react";
|
|
281
|
-
import { Button } from "@arolariu/components/button";
|
|
282
|
-
|
|
283
|
-
function onRenderCallback(id, phase, actualDuration) {
|
|
284
|
-
console.log(`${id} ${phase} took ${actualDuration}ms`);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
function App() {
|
|
288
|
-
return (
|
|
289
|
-
<Profiler id="Button" onRender={onRenderCallback}>
|
|
290
|
-
<Button>Click me</Button>
|
|
291
|
-
</Profiler>
|
|
292
|
-
);
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
## 🔍 Component Introspection
|
|
297
|
-
|
|
298
|
-
### Component Metadata
|
|
299
|
-
|
|
300
|
-
```tsx
|
|
301
|
-
import { Button } from "@arolariu/components/button";
|
|
302
|
-
|
|
303
|
-
// Check component display name
|
|
304
|
-
console.log(Button.displayName); // "Button"
|
|
305
|
-
|
|
306
|
-
// Access default props (if any)
|
|
307
|
-
console.log(Button.defaultProps);
|
|
308
|
-
|
|
309
|
-
// Check if component is forwardRef
|
|
310
|
-
console.log(Button.$$typeof); // Symbol(react.forward_ref)
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### Variant Inspection
|
|
314
|
-
|
|
315
|
-
```tsx
|
|
316
|
-
import { buttonVariants } from "@arolariu/components/button";
|
|
317
|
-
|
|
318
|
-
// Inspect available variants
|
|
319
|
-
console.log("Button variants:", {
|
|
320
|
-
variant: Object.keys(buttonVariants.variants.variant),
|
|
321
|
-
size: Object.keys(buttonVariants.variants.size),
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
// Get computed classes for specific variant
|
|
325
|
-
const classes = buttonVariants({
|
|
326
|
-
variant: "destructive",
|
|
327
|
-
size: "lg",
|
|
328
|
-
});
|
|
329
|
-
console.log("Button classes:", classes);
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
### Props Validation
|
|
333
|
-
|
|
334
|
-
```tsx
|
|
335
|
-
import { Button } from "@arolariu/components/button";
|
|
336
|
-
import type { ButtonProps } from "@arolariu/components/button";
|
|
337
|
-
|
|
338
|
-
// Create type-safe props object
|
|
339
|
-
const buttonProps: ButtonProps = {
|
|
340
|
-
variant: "default",
|
|
341
|
-
size: "md",
|
|
342
|
-
disabled: false,
|
|
343
|
-
// TypeScript will validate these props
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
// Use props with component
|
|
347
|
-
<Button {...buttonProps}>My Button</Button>;
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
## 📊 Build Analysis
|
|
351
|
-
|
|
352
|
-
### Development Build Analysis
|
|
353
|
-
|
|
354
|
-
```bash
|
|
355
|
-
# Build with analysis
|
|
356
|
-
npm run build -- --analyze
|
|
357
|
-
|
|
358
|
-
# Or use webpack-bundle-analyzer directly
|
|
359
|
-
npx webpack-bundle-analyzer build/static/js/*.js
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### Production Optimization Check
|
|
363
|
-
|
|
364
|
-
```tsx
|
|
365
|
-
// Check if components are properly optimized
|
|
366
|
-
import { Button } from "@arolariu/components/button";
|
|
367
|
-
|
|
368
|
-
// This should only include Button-related code
|
|
369
|
-
// Use browser DevTools Network tab to verify
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
### Source Map Validation
|
|
373
|
-
|
|
374
|
-
```bash
|
|
375
|
-
# Check if source maps are present
|
|
376
|
-
ls node_modules/@arolariu/components/dist/**/*.map
|
|
377
|
-
|
|
378
|
-
# Validate source map content
|
|
379
|
-
cat node_modules/@arolariu/components/dist/esm/button.js.map
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
## 🆘 Getting Help
|
|
383
|
-
|
|
384
|
-
If you encounter issues not covered in this guide:
|
|
385
|
-
|
|
386
|
-
1. **Check the source code**: Browse `node_modules/@arolariu/components/src/`
|
|
387
|
-
2. **Inspect the built files**: Look at `node_modules/@arolariu/components/dist/`
|
|
388
|
-
3. **Use browser DevTools**: Leverage source maps for debugging
|
|
389
|
-
4. **Create an issue**: [GitHub Issues](https://github.com/arolariu/arolariu.ro/issues)
|
|
390
|
-
|
|
391
|
-
## 📚 Additional Resources
|
|
392
|
-
|
|
393
|
-
- [React DevTools](https://reactjs.org/blog/2019/08/15/new-react-devtools.html)
|
|
394
|
-
- [Chrome DevTools Source Maps](https://developer.chrome.com/docs/devtools/javascript/source-maps/)
|
|
395
|
-
- [TypeScript Debugging](https://code.visualstudio.com/docs/typescript/typescript-debugging)
|
|
396
|
-
- [Webpack Bundle Analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer)
|
|
1
|
+
# 🔍 Debugging Guide for @arolariu/components
|
|
2
|
+
|
|
3
|
+
This guide provides comprehensive information on debugging and troubleshooting the `@arolariu/components` package in your projects.
|
|
4
|
+
|
|
5
|
+
## 📋 Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Source Maps](#source-maps)
|
|
8
|
+
- [TypeScript Support](#typescript-support)
|
|
9
|
+
- [Browser DevTools Setup](#browser-devtools-setup)
|
|
10
|
+
- [IDE Configuration](#ide-configuration)
|
|
11
|
+
- [Common Issues](#common-issues)
|
|
12
|
+
- [Performance Debugging](#performance-debugging)
|
|
13
|
+
- [Component Introspection](#component-introspection)
|
|
14
|
+
- [Build Analysis](#build-analysis)
|
|
15
|
+
|
|
16
|
+
## 🗺️ Source Maps
|
|
17
|
+
|
|
18
|
+
All distribution files include source maps for optimal debugging experience:
|
|
19
|
+
|
|
20
|
+
### JavaScript Source Maps
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
dist/
|
|
24
|
+
├── button.js
|
|
25
|
+
├── button.js.map ✅ ESM source map
|
|
26
|
+
└── ...
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Benefits
|
|
30
|
+
|
|
31
|
+
- **Accurate stack traces** pointing to original TypeScript source
|
|
32
|
+
- **Breakpoint debugging** in original source files
|
|
33
|
+
- **CSS debugging** with original Tailwind source locations
|
|
34
|
+
- **Better error messages** with precise line numbers
|
|
35
|
+
|
|
36
|
+
## 📝 TypeScript Support
|
|
37
|
+
|
|
38
|
+
### Declaration Files
|
|
39
|
+
|
|
40
|
+
Every component includes comprehensive TypeScript declarations:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
dist/types/
|
|
44
|
+
├── button.d.ts ✅ Type definitions
|
|
45
|
+
├── card.d.ts ✅ Component props
|
|
46
|
+
├── form.d.ts ✅ Form utilities
|
|
47
|
+
└── ...
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Source Access
|
|
51
|
+
|
|
52
|
+
Original TypeScript source is included for reference:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
src/
|
|
56
|
+
├── components/ui/
|
|
57
|
+
│ ├── button.tsx ✅ Original source
|
|
58
|
+
│ ├── card.tsx ✅ Implementation details
|
|
59
|
+
│ └── ...
|
|
60
|
+
├── hooks/
|
|
61
|
+
│ ├── use-mobile.ts ✅ Custom hooks
|
|
62
|
+
│ └── ...
|
|
63
|
+
└── lib/
|
|
64
|
+
├── utils.ts ✅ Utility functions
|
|
65
|
+
└── ...
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 🌐 Browser DevTools Setup
|
|
69
|
+
|
|
70
|
+
### Chrome DevTools
|
|
71
|
+
|
|
72
|
+
1. Open DevTools (F12)
|
|
73
|
+
2. Go to **Settings** (⚙️)
|
|
74
|
+
3. Navigate to **Preferences** → **Sources**
|
|
75
|
+
4. Enable **"Enable JavaScript source maps"**
|
|
76
|
+
5. Enable **"Enable CSS source maps"**
|
|
77
|
+
|
|
78
|
+
### Firefox DevTools
|
|
79
|
+
|
|
80
|
+
1. Open DevTools (F12)
|
|
81
|
+
2. Go to **Settings** (⚙️)
|
|
82
|
+
3. Navigate to **Advanced Settings**
|
|
83
|
+
4. Check **"Enable Source Maps"**
|
|
84
|
+
|
|
85
|
+
### Safari DevTools
|
|
86
|
+
|
|
87
|
+
1. Open Web Inspector (⌘⌥I)
|
|
88
|
+
2. Go to **Web Inspector** → **Preferences**
|
|
89
|
+
3. Navigate to **Sources**
|
|
90
|
+
4. Enable **"Enable source maps"**
|
|
91
|
+
|
|
92
|
+
## 🛠️ IDE Configuration
|
|
93
|
+
|
|
94
|
+
### VS Code Setup
|
|
95
|
+
|
|
96
|
+
#### Launch Configuration
|
|
97
|
+
|
|
98
|
+
Create `.vscode/launch.json`:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"version": "0.2.0",
|
|
103
|
+
"configurations": [
|
|
104
|
+
{
|
|
105
|
+
"type": "chrome",
|
|
106
|
+
"request": "launch",
|
|
107
|
+
"name": "Debug React App",
|
|
108
|
+
"url": "http://localhost:3000",
|
|
109
|
+
"webRoot": "${workspaceFolder}/src",
|
|
110
|
+
"sourceMapPathOverrides": {
|
|
111
|
+
"*": "${webRoot}/*",
|
|
112
|
+
"webpack:///src/*": "${webRoot}/*",
|
|
113
|
+
"webpack:///./*": "${webRoot}/*",
|
|
114
|
+
"webpack:///./~/*": "${webRoot}/node_modules/*",
|
|
115
|
+
"node_modules/@arolariu/components/src/*": "${webRoot}/node_modules/@arolariu/components/src/*"
|
|
116
|
+
},
|
|
117
|
+
"skipFiles": ["<node_internals>/**"]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Recommended Extensions
|
|
124
|
+
|
|
125
|
+
```json
|
|
126
|
+
// .vscode/extensions.json
|
|
127
|
+
{
|
|
128
|
+
"recommendations": [
|
|
129
|
+
"ms-vscode.vscode-typescript-next",
|
|
130
|
+
"bradlc.vscode-tailwindcss",
|
|
131
|
+
"ms-vscode.vscode-json",
|
|
132
|
+
"esbenp.prettier-vscode",
|
|
133
|
+
"wix.vscode-import-cost"
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### JetBrains IDEs (WebStorm, IntelliJ)
|
|
139
|
+
|
|
140
|
+
1. Go to **Settings** → **Build, Execution, Deployment** → **Debugger**
|
|
141
|
+
2. Enable **"Use JavaScript source maps"**
|
|
142
|
+
3. Configure **Source Maps** section:
|
|
143
|
+
- Check **"Process TypeScript files"**
|
|
144
|
+
- Set source map search locations
|
|
145
|
+
|
|
146
|
+
## 🐛 Common Issues
|
|
147
|
+
|
|
148
|
+
### Issue: Components Not Rendering
|
|
149
|
+
|
|
150
|
+
**Symptoms:**
|
|
151
|
+
|
|
152
|
+
- Components appear as empty divs
|
|
153
|
+
- No styling applied
|
|
154
|
+
- TypeScript errors about missing props
|
|
155
|
+
|
|
156
|
+
**Debugging Steps:**
|
|
157
|
+
|
|
158
|
+
```tsx
|
|
159
|
+
// 1. Check component import
|
|
160
|
+
import { Button } from "@arolariu/components/button";
|
|
161
|
+
|
|
162
|
+
// 2. Verify component props
|
|
163
|
+
<Button variant="default" size="md">
|
|
164
|
+
Click me
|
|
165
|
+
</Button>;
|
|
166
|
+
|
|
167
|
+
// 3. Inspect with React DevTools
|
|
168
|
+
// Look for component in React tree
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Solution:**
|
|
172
|
+
|
|
173
|
+
```tsx
|
|
174
|
+
// ✅ Correct import and usage
|
|
175
|
+
import { Button } from "@arolariu/components/button";
|
|
176
|
+
|
|
177
|
+
export function MyComponent() {
|
|
178
|
+
return (
|
|
179
|
+
<Button variant="default" onClick={() => console.log("Clicked!")}>
|
|
180
|
+
My Button
|
|
181
|
+
</Button>
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Issue: Styling Conflicts
|
|
187
|
+
|
|
188
|
+
**Symptoms:**
|
|
189
|
+
|
|
190
|
+
- Components look different than expected
|
|
191
|
+
- CSS classes being overridden
|
|
192
|
+
- Tailwind styles not applying
|
|
193
|
+
|
|
194
|
+
**Debugging Steps:**
|
|
195
|
+
|
|
196
|
+
1. Open browser DevTools
|
|
197
|
+
2. Inspect component element
|
|
198
|
+
3. Check CSS cascade in **Styles** panel
|
|
199
|
+
4. Look for conflicting CSS rules
|
|
200
|
+
|
|
201
|
+
**Solutions:**
|
|
202
|
+
|
|
203
|
+
```css
|
|
204
|
+
/* Option 1: Use CSS specificity */
|
|
205
|
+
.my-custom-button {
|
|
206
|
+
@apply bg-blue-500 hover:bg-blue-600 !important;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* Option 2: Use CSS layers */
|
|
210
|
+
@layer components {
|
|
211
|
+
.my-button-override {
|
|
212
|
+
background-color: theme("colors.blue.500");
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Issue: TypeScript Errors
|
|
218
|
+
|
|
219
|
+
**Symptoms:**
|
|
220
|
+
|
|
221
|
+
- Red squiggly lines in IDE
|
|
222
|
+
- Type checking failures
|
|
223
|
+
- Missing prop definitions
|
|
224
|
+
|
|
225
|
+
**Debugging Steps:**
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
// 1. Hover over component in IDE to see type info
|
|
229
|
+
import { Button } from "@arolariu/components/button";
|
|
230
|
+
|
|
231
|
+
// 2. Check available props
|
|
232
|
+
const buttonProps: React.ComponentProps<typeof Button> = {
|
|
233
|
+
variant: "default",
|
|
234
|
+
size: "md",
|
|
235
|
+
// ... other props
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// 3. Use TypeScript utility types
|
|
239
|
+
type ButtonVariant = React.ComponentProps<typeof Button>["variant"];
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## ⚡ Performance Debugging
|
|
243
|
+
|
|
244
|
+
### Bundle Analysis
|
|
245
|
+
|
|
246
|
+
#### Webpack Bundle Analyzer
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
# Install analyzer
|
|
250
|
+
npm install --save-dev webpack-bundle-analyzer
|
|
251
|
+
|
|
252
|
+
# Analyze your bundle
|
|
253
|
+
npx webpack-bundle-analyzer build/static/js/*.js
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
#### Import Cost Analysis
|
|
257
|
+
|
|
258
|
+
Install the "Import Cost" VS Code extension to see real-time import sizes:
|
|
259
|
+
|
|
260
|
+
```tsx
|
|
261
|
+
import { Button } from "@arolariu/components/button"; // ~3.2KB
|
|
262
|
+
import { Dialog } from "@arolariu/components/dialog"; // ~6.1KB
|
|
263
|
+
import { Chart } from "@arolariu/components/chart"; // ~12.4KB
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Tree Shaking Verification
|
|
267
|
+
|
|
268
|
+
```tsx
|
|
269
|
+
// ✅ Good: Tree-shakeable imports
|
|
270
|
+
import { Button } from "@arolariu/components/button";
|
|
271
|
+
import { Card } from "@arolariu/components/card";
|
|
272
|
+
|
|
273
|
+
// ❌ Avoid: Imports entire library
|
|
274
|
+
import { Button, Card } from "@arolariu/components";
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Performance Monitoring
|
|
278
|
+
|
|
279
|
+
```tsx
|
|
280
|
+
import { Profiler } from "react";
|
|
281
|
+
import { Button } from "@arolariu/components/button";
|
|
282
|
+
|
|
283
|
+
function onRenderCallback(id, phase, actualDuration) {
|
|
284
|
+
console.log(`${id} ${phase} took ${actualDuration}ms`);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
function App() {
|
|
288
|
+
return (
|
|
289
|
+
<Profiler id="Button" onRender={onRenderCallback}>
|
|
290
|
+
<Button>Click me</Button>
|
|
291
|
+
</Profiler>
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## 🔍 Component Introspection
|
|
297
|
+
|
|
298
|
+
### Component Metadata
|
|
299
|
+
|
|
300
|
+
```tsx
|
|
301
|
+
import { Button } from "@arolariu/components/button";
|
|
302
|
+
|
|
303
|
+
// Check component display name
|
|
304
|
+
console.log(Button.displayName); // "Button"
|
|
305
|
+
|
|
306
|
+
// Access default props (if any)
|
|
307
|
+
console.log(Button.defaultProps);
|
|
308
|
+
|
|
309
|
+
// Check if component is forwardRef
|
|
310
|
+
console.log(Button.$$typeof); // Symbol(react.forward_ref)
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Variant Inspection
|
|
314
|
+
|
|
315
|
+
```tsx
|
|
316
|
+
import { buttonVariants } from "@arolariu/components/button";
|
|
317
|
+
|
|
318
|
+
// Inspect available variants
|
|
319
|
+
console.log("Button variants:", {
|
|
320
|
+
variant: Object.keys(buttonVariants.variants.variant),
|
|
321
|
+
size: Object.keys(buttonVariants.variants.size),
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
// Get computed classes for specific variant
|
|
325
|
+
const classes = buttonVariants({
|
|
326
|
+
variant: "destructive",
|
|
327
|
+
size: "lg",
|
|
328
|
+
});
|
|
329
|
+
console.log("Button classes:", classes);
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### Props Validation
|
|
333
|
+
|
|
334
|
+
```tsx
|
|
335
|
+
import { Button } from "@arolariu/components/button";
|
|
336
|
+
import type { ButtonProps } from "@arolariu/components/button";
|
|
337
|
+
|
|
338
|
+
// Create type-safe props object
|
|
339
|
+
const buttonProps: ButtonProps = {
|
|
340
|
+
variant: "default",
|
|
341
|
+
size: "md",
|
|
342
|
+
disabled: false,
|
|
343
|
+
// TypeScript will validate these props
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
// Use props with component
|
|
347
|
+
<Button {...buttonProps}>My Button</Button>;
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## 📊 Build Analysis
|
|
351
|
+
|
|
352
|
+
### Development Build Analysis
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# Build with analysis
|
|
356
|
+
npm run build -- --analyze
|
|
357
|
+
|
|
358
|
+
# Or use webpack-bundle-analyzer directly
|
|
359
|
+
npx webpack-bundle-analyzer build/static/js/*.js
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### Production Optimization Check
|
|
363
|
+
|
|
364
|
+
```tsx
|
|
365
|
+
// Check if components are properly optimized
|
|
366
|
+
import { Button } from "@arolariu/components/button";
|
|
367
|
+
|
|
368
|
+
// This should only include Button-related code
|
|
369
|
+
// Use browser DevTools Network tab to verify
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Source Map Validation
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
# Check if source maps are present
|
|
376
|
+
ls node_modules/@arolariu/components/dist/**/*.map
|
|
377
|
+
|
|
378
|
+
# Validate source map content
|
|
379
|
+
cat node_modules/@arolariu/components/dist/esm/button.js.map
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
## 🆘 Getting Help
|
|
383
|
+
|
|
384
|
+
If you encounter issues not covered in this guide:
|
|
385
|
+
|
|
386
|
+
1. **Check the source code**: Browse `node_modules/@arolariu/components/src/`
|
|
387
|
+
2. **Inspect the built files**: Look at `node_modules/@arolariu/components/dist/`
|
|
388
|
+
3. **Use browser DevTools**: Leverage source maps for debugging
|
|
389
|
+
4. **Create an issue**: [GitHub Issues](https://github.com/arolariu/arolariu.ro/issues)
|
|
390
|
+
|
|
391
|
+
## 📚 Additional Resources
|
|
392
|
+
|
|
393
|
+
- [React DevTools](https://reactjs.org/blog/2019/08/15/new-react-devtools.html)
|
|
394
|
+
- [Chrome DevTools Source Maps](https://developer.chrome.com/docs/devtools/javascript/source-maps/)
|
|
395
|
+
- [TypeScript Debugging](https://code.visualstudio.com/docs/typescript/typescript-debugging)
|
|
396
|
+
- [Webpack Bundle Analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer)
|