@sudobility/components 2.0.3
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/README.md +169 -0
- package/dist/hooks/useClickOutside.d.ts +3 -0
- package/dist/hooks/useClickOutside.d.ts.map +1 -0
- package/dist/hooks/useCodeLoader.d.ts +8 -0
- package/dist/hooks/useCodeLoader.d.ts.map +1 -0
- package/dist/hooks/useCopyToClipboard.d.ts +64 -0
- package/dist/hooks/useCopyToClipboard.d.ts.map +1 -0
- package/dist/index.d.ts +1069 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +13064 -0
- package/dist/index.umd.js +67 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/ui/alert.d.ts +20 -0
- package/dist/ui/alert.d.ts.map +1 -0
- package/dist/ui/animated-section.d.ts +28 -0
- package/dist/ui/animated-section.d.ts.map +1 -0
- package/dist/ui/button.d.ts +13 -0
- package/dist/ui/button.d.ts.map +1 -0
- package/dist/ui/card.d.ts +39 -0
- package/dist/ui/card.d.ts.map +1 -0
- package/dist/ui/comparison-section.d.ts +58 -0
- package/dist/ui/comparison-section.d.ts.map +1 -0
- package/dist/ui/confirmation-dialog.d.ts +16 -0
- package/dist/ui/confirmation-dialog.d.ts.map +1 -0
- package/dist/ui/content-container.d.ts +15 -0
- package/dist/ui/content-container.d.ts.map +1 -0
- package/dist/ui/design-system-components.d.ts +53 -0
- package/dist/ui/design-system-components.d.ts.map +1 -0
- package/dist/ui/dropdown.d.ts +20 -0
- package/dist/ui/dropdown.d.ts.map +1 -0
- package/dist/ui/email-accounts-list.d.ts +27 -0
- package/dist/ui/email-accounts-list.d.ts.map +1 -0
- package/dist/ui/email-input-group.d.ts +53 -0
- package/dist/ui/email-input-group.d.ts.map +1 -0
- package/dist/ui/empty-state.d.ts +11 -0
- package/dist/ui/empty-state.d.ts.map +1 -0
- package/dist/ui/feature-card.d.ts +17 -0
- package/dist/ui/feature-card.d.ts.map +1 -0
- package/dist/ui/feature-grid.d.ts +52 -0
- package/dist/ui/feature-grid.d.ts.map +1 -0
- package/dist/ui/flex-container.d.ts +13 -0
- package/dist/ui/flex-container.d.ts.map +1 -0
- package/dist/ui/form-field-group.d.ts +58 -0
- package/dist/ui/form-field-group.d.ts.map +1 -0
- package/dist/ui/free-email-banner.d.ts +20 -0
- package/dist/ui/free-email-banner.d.ts.map +1 -0
- package/dist/ui/gradient-button.d.ts +15 -0
- package/dist/ui/gradient-button.d.ts.map +1 -0
- package/dist/ui/hero-banner-with-badge.d.ts +20 -0
- package/dist/ui/hero-banner-with-badge.d.ts.map +1 -0
- package/dist/ui/icon-container.d.ts +12 -0
- package/dist/ui/icon-container.d.ts.map +1 -0
- package/dist/ui/index.d.ts +110 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/input.d.ts +6 -0
- package/dist/ui/input.d.ts.map +1 -0
- package/dist/ui/internal-link-clusters.d.ts +65 -0
- package/dist/ui/internal-link-clusters.d.ts.map +1 -0
- package/dist/ui/label.d.ts +5 -0
- package/dist/ui/label.d.ts.map +1 -0
- package/dist/ui/loading-state.d.ts +11 -0
- package/dist/ui/loading-state.d.ts.map +1 -0
- package/dist/ui/logo.d.ts +15 -0
- package/dist/ui/logo.d.ts.map +1 -0
- package/dist/ui/metrics-grid.d.ts +20 -0
- package/dist/ui/metrics-grid.d.ts.map +1 -0
- package/dist/ui/modal.d.ts +38 -0
- package/dist/ui/modal.d.ts.map +1 -0
- package/dist/ui/no-content.d.ts +9 -0
- package/dist/ui/no-content.d.ts.map +1 -0
- package/dist/ui/page-container.d.ts +13 -0
- package/dist/ui/page-container.d.ts.map +1 -0
- package/dist/ui/process-steps.d.ts +18 -0
- package/dist/ui/process-steps.d.ts.map +1 -0
- package/dist/ui/section-badge.d.ts +11 -0
- package/dist/ui/section-badge.d.ts.map +1 -0
- package/dist/ui/section-header.d.ts +27 -0
- package/dist/ui/section-header.d.ts.map +1 -0
- package/dist/ui/section.d.ts +16 -0
- package/dist/ui/section.d.ts.map +1 -0
- package/dist/ui/select.d.ts +14 -0
- package/dist/ui/select.d.ts.map +1 -0
- package/dist/ui/smart-link.d.ts +23 -0
- package/dist/ui/smart-link.d.ts.map +1 -0
- package/dist/ui/spinner.d.ts +11 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/status-badge.d.ts +17 -0
- package/dist/ui/status-badge.d.ts.map +1 -0
- package/dist/ui/status-indicator.d.ts +10 -0
- package/dist/ui/status-indicator.d.ts.map +1 -0
- package/dist/ui/switch.d.ts +4 -0
- package/dist/ui/switch.d.ts.map +1 -0
- package/dist/ui/table-of-contents.d.ts +19 -0
- package/dist/ui/table-of-contents.d.ts.map +1 -0
- package/dist/ui/tabs.d.ts +7 -0
- package/dist/ui/tabs.d.ts.map +1 -0
- package/dist/ui/typography.d.ts +50 -0
- package/dist/ui/typography.d.ts.map +1 -0
- package/dist/ui/use-case-grid.d.ts +17 -0
- package/dist/ui/use-case-grid.d.ts.map +1 -0
- package/dist/ui/wallet-icon.d.ts +13 -0
- package/dist/ui/wallet-icon.d.ts.map +1 -0
- package/dist/ui/wallet-selection.d.ts +49 -0
- package/dist/ui/wallet-selection.d.ts.map +1 -0
- package/dist/utils/css-optimization.d.ts +81 -0
- package/dist/utils/css-optimization.d.ts.map +1 -0
- package/dist/utils/formatFileSize.d.ts +42 -0
- package/dist/utils/formatFileSize.d.ts.map +1 -0
- package/dist/utils/image-optimization.d.ts +75 -0
- package/dist/utils/image-optimization.d.ts.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/lazy-components.d.ts +54 -0
- package/dist/utils/lazy-components.d.ts.map +1 -0
- package/dist/utils/lazy-loading.d.ts +96 -0
- package/dist/utils/lazy-loading.d.ts.map +1 -0
- package/dist/utils/navigation.d.ts +133 -0
- package/dist/utils/navigation.d.ts.map +1 -0
- package/dist/utils/navigationHelpers.d.ts +89 -0
- package/dist/utils/navigationHelpers.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +250 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/treeShaking.d.ts +124 -0
- package/dist/utils/treeShaking.d.ts.map +1 -0
- package/dist/utils/walletBrowserDetection.d.ts +17 -0
- package/dist/utils/walletBrowserDetection.d.ts.map +1 -0
- package/package.json +149 -0
- package/vendor/@johnqh/design-system/colors.d.ts +1064 -0
- package/vendor/@johnqh/design-system/colors.d.ts.map +1 -0
- package/vendor/@johnqh/design-system/index.d.ts +123 -0
- package/vendor/@johnqh/design-system/index.d.ts.map +1 -0
- package/vendor/@johnqh/design-system/index.esm.js +3543 -0
- package/vendor/@johnqh/design-system/index.umd.js +1 -0
- package/vendor/@johnqh/design-system/package.json +9 -0
- package/vendor/@johnqh/design-system/simple-variants.d.ts +72 -0
- package/vendor/@johnqh/design-system/simple-variants.d.ts.map +1 -0
- package/vendor/@johnqh/design-system/tokens.d.ts +307 -0
- package/vendor/@johnqh/design-system/tokens.d.ts.map +1 -0
- package/vendor/@johnqh/design-system/typography.d.ts +112 -0
- package/vendor/@johnqh/design-system/typography.d.ts.map +1 -0
- package/vendor/@johnqh/design-system/variants.d.ts +35 -0
- package/vendor/@johnqh/design-system/variants.d.ts.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# @johnqh/mail-box-components
|
|
2
|
+
|
|
3
|
+
A comprehensive React component library and design system for building modern web applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎨 **Complete Design System** - Professional design tokens, colors, typography
|
|
8
|
+
- 🧩 **20+ UI Components** - Forms, modals, cards, alerts, and more
|
|
9
|
+
- ♿ **Accessibility First** - Built with Radix UI primitives
|
|
10
|
+
- 🌙 **Dark Mode Support** - Full dark/light theme support
|
|
11
|
+
- 📱 **Responsive Design** - Mobile-first approach
|
|
12
|
+
- 🎯 **TypeScript** - Fully typed with excellent IntelliSense
|
|
13
|
+
- 🎭 **Tailwind CSS** - Utility-first styling with customization
|
|
14
|
+
- ⚡ **Performance Optimized** - Tree-shakeable and lightweight
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
### Quick Start
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @johnqh/mail-box-components
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Required Peer Dependencies
|
|
25
|
+
|
|
26
|
+
The library requires these peer dependencies to be installed:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install react@^18.0.0 react-dom@^18.0.0 \
|
|
30
|
+
@heroicons/react@^2.0.0 \
|
|
31
|
+
@radix-ui/react-alert-dialog@^1.0.0 \
|
|
32
|
+
@radix-ui/react-dialog@^1.0.0 \
|
|
33
|
+
@radix-ui/react-label@^2.0.0 \
|
|
34
|
+
@radix-ui/react-select@^2.0.0 \
|
|
35
|
+
@radix-ui/react-slot@^1.0.0 \
|
|
36
|
+
@radix-ui/react-switch@^1.0.0 \
|
|
37
|
+
@radix-ui/react-tabs@^1.0.0 \
|
|
38
|
+
class-variance-authority@^0.7.0 \
|
|
39
|
+
clsx@^2.1.1 \
|
|
40
|
+
tailwind-merge@^3.0.0
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Optional Dependencies
|
|
44
|
+
|
|
45
|
+
Install these only if you need specific features:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# For internationalization (LanguageSelector, CodeBlock)
|
|
49
|
+
npm install react-i18next@^16.0.0 i18next@^25.0.0
|
|
50
|
+
|
|
51
|
+
# For routing (SmartLink, Breadcrumb)
|
|
52
|
+
npm install react-router-dom@^7.0.0
|
|
53
|
+
|
|
54
|
+
# For SEO/Meta tags (AIMeta)
|
|
55
|
+
npm install react-helmet-async@^2.0.0
|
|
56
|
+
|
|
57
|
+
# For social sharing (Breadcrumb sharing feature)
|
|
58
|
+
npm install react-share@^5.0.0
|
|
59
|
+
|
|
60
|
+
# For performance monitoring
|
|
61
|
+
npm install web-vitals@^5.0.0
|
|
62
|
+
|
|
63
|
+
# For additional icons
|
|
64
|
+
npm install lucide-react@^0.400.0
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Complete Installation (All Features)
|
|
68
|
+
|
|
69
|
+
To install everything at once:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm install @johnqh/mail-box-components \
|
|
73
|
+
react@^18.0.0 react-dom@^18.0.0 \
|
|
74
|
+
@heroicons/react@^2.0.0 \
|
|
75
|
+
@radix-ui/react-alert-dialog@^1.0.0 \
|
|
76
|
+
@radix-ui/react-dialog@^1.0.0 \
|
|
77
|
+
@radix-ui/react-label@^2.0.0 \
|
|
78
|
+
@radix-ui/react-select@^2.0.0 \
|
|
79
|
+
@radix-ui/react-slot@^1.0.0 \
|
|
80
|
+
@radix-ui/react-switch@^1.0.0 \
|
|
81
|
+
@radix-ui/react-tabs@^1.0.0 \
|
|
82
|
+
class-variance-authority@^0.7.0 \
|
|
83
|
+
clsx@^2.1.1 \
|
|
84
|
+
tailwind-merge@^3.0.0 \
|
|
85
|
+
react-i18next@^16.0.0 \
|
|
86
|
+
i18next@^25.0.0 \
|
|
87
|
+
react-router-dom@^7.0.0 \
|
|
88
|
+
react-helmet-async@^2.0.0 \
|
|
89
|
+
react-share@^5.0.0 \
|
|
90
|
+
web-vitals@^5.0.0 \
|
|
91
|
+
lucide-react@^0.400.0
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
> **Migrating from v1.x?** See [MIGRATION.md](./MIGRATION.md) for detailed upgrade instructions.
|
|
95
|
+
|
|
96
|
+
## Usage
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
import { Button, Card, Alert } from '@johnqh/mail-box-components'
|
|
100
|
+
|
|
101
|
+
function App() {
|
|
102
|
+
return (
|
|
103
|
+
<div>
|
|
104
|
+
<Card>
|
|
105
|
+
<Button variant="primary">Click me</Button>
|
|
106
|
+
<Alert variant="success">Success message</Alert>
|
|
107
|
+
</Card>
|
|
108
|
+
</div>
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Components
|
|
114
|
+
|
|
115
|
+
### Form Controls
|
|
116
|
+
- `Button` - Feature-rich button with variants and animations
|
|
117
|
+
- `Input` - Form input with validation states
|
|
118
|
+
- `Label` - Accessible form labels
|
|
119
|
+
- `Select` - Dropdown select component
|
|
120
|
+
- `Switch` - Toggle switch component
|
|
121
|
+
- `Tabs` - Tabbed interface component
|
|
122
|
+
|
|
123
|
+
### Layout & Display
|
|
124
|
+
- `Card` - Flexible card component
|
|
125
|
+
- `Modal` - Accessible modal dialogs
|
|
126
|
+
- `Alert` - Alert messages with multiple states
|
|
127
|
+
- `Spinner` - Loading spinners
|
|
128
|
+
- `LoadingState` - Comprehensive loading states
|
|
129
|
+
- `EmptyState` - Empty state placeholders
|
|
130
|
+
|
|
131
|
+
### Navigation
|
|
132
|
+
- `Breadcrumb` - SEO-optimized breadcrumbs
|
|
133
|
+
- `ConfirmationDialog` - Confirmation prompts
|
|
134
|
+
|
|
135
|
+
### Typography
|
|
136
|
+
- `Typography` - Text components (PageTitle, SectionTitle, BodyText, TextLink)
|
|
137
|
+
|
|
138
|
+
## Design System
|
|
139
|
+
|
|
140
|
+
The library includes a complete design system with:
|
|
141
|
+
|
|
142
|
+
- **Colors** - Semantic color palette with dark mode support
|
|
143
|
+
- **Typography** - Consistent text styles and hierarchy
|
|
144
|
+
- **Spacing** - Standardized spacing scale
|
|
145
|
+
- **Shadows** - Elevation system
|
|
146
|
+
- **Tokens** - Design tokens for consistency
|
|
147
|
+
|
|
148
|
+
## Development
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Install dependencies
|
|
152
|
+
npm install
|
|
153
|
+
|
|
154
|
+
# Start development server
|
|
155
|
+
npm run dev
|
|
156
|
+
|
|
157
|
+
# Build library
|
|
158
|
+
npm run build
|
|
159
|
+
|
|
160
|
+
# Run tests
|
|
161
|
+
npm test
|
|
162
|
+
|
|
163
|
+
# Lint code
|
|
164
|
+
npm run lint
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClickOutside.d.ts","sourceRoot":"","sources":["../../src/hooks/useClickOutside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7C,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACjE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,QAmBhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCodeLoader.d.ts","sourceRoot":"","sources":["../../src/hooks/useCodeLoader.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,mBAkChD,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export interface CopyToClipboardOptions {
|
|
2
|
+
successDuration?: number;
|
|
3
|
+
onSuccess?: (text: string) => void;
|
|
4
|
+
onError?: (error: Error) => void;
|
|
5
|
+
}
|
|
6
|
+
export interface CopyToClipboardResult {
|
|
7
|
+
copiedValue: string | null;
|
|
8
|
+
copyToClipboard: (text: string) => Promise<boolean>;
|
|
9
|
+
isCopied: (text: string) => boolean;
|
|
10
|
+
resetCopiedState: () => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Hook for managing copy-to-clipboard functionality with feedback
|
|
14
|
+
*
|
|
15
|
+
* Features:
|
|
16
|
+
* - Async clipboard API with fallback
|
|
17
|
+
* - Visual feedback state management
|
|
18
|
+
* - Automatic timeout for feedback reset
|
|
19
|
+
* - Error handling
|
|
20
|
+
* - Multiple copy tracking
|
|
21
|
+
*
|
|
22
|
+
* @param options - Configuration options
|
|
23
|
+
* @returns Object with copy function and state
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const { copyToClipboard, isCopied } = useCopyToClipboard({
|
|
27
|
+
* successDuration: 2000,
|
|
28
|
+
* onSuccess: (text) => console.log('Copied:', text)
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // In component
|
|
32
|
+
* <button onClick={() => copyToClipboard('Hello World')}>
|
|
33
|
+
* {isCopied('Hello World') ? '✓ Copied!' : 'Copy'}
|
|
34
|
+
* </button>
|
|
35
|
+
*/
|
|
36
|
+
export declare const useCopyToClipboard: (options?: CopyToClipboardOptions) => CopyToClipboardResult;
|
|
37
|
+
/**
|
|
38
|
+
* Hook for managing multiple copy states simultaneously
|
|
39
|
+
*
|
|
40
|
+
* Useful when you have multiple copyable items on the same page
|
|
41
|
+
* and want to track their individual copy states.
|
|
42
|
+
*
|
|
43
|
+
* @param options - Configuration options
|
|
44
|
+
* @returns Object with copy function and state management
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* const { copyToClipboard, isCopied } = useMultipleCopyToClipboard();
|
|
48
|
+
*
|
|
49
|
+
* // Each item has its own copy state
|
|
50
|
+
* <button onClick={() => copyToClipboard('code1', 'item1')}>
|
|
51
|
+
* {isCopied('item1') ? '✓ Copied!' : 'Copy'}
|
|
52
|
+
* </button>
|
|
53
|
+
* <button onClick={() => copyToClipboard('code2', 'item2')}>
|
|
54
|
+
* {isCopied('item2') ? '✓ Copied!' : 'Copy'}
|
|
55
|
+
* </button>
|
|
56
|
+
*/
|
|
57
|
+
export declare const useMultipleCopyToClipboard: (options?: CopyToClipboardOptions) => {
|
|
58
|
+
copiedStates: Record<string, boolean>;
|
|
59
|
+
copyToClipboard: (text: string, key: string) => Promise<boolean>;
|
|
60
|
+
isCopied: (key: string) => boolean;
|
|
61
|
+
resetCopiedState: (key?: string) => void;
|
|
62
|
+
};
|
|
63
|
+
export default useCopyToClipboard;
|
|
64
|
+
//# sourceMappingURL=useCopyToClipboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../src/hooks/useCopyToClipboard.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAS,sBAA2B,KACnC,qBAmEF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,0BAA0B,GACrC,UAAS,sBAA2B;;4BAOrB,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;oBA6C7C,MAAM,KAAG,OAAO;6BAMoB,MAAM;CAcnD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|