@elsapiens/sdk 0.1.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/README.md ADDED
@@ -0,0 +1,349 @@
1
+ # @elsapiens/sdk
2
+
3
+ The complete elSapiens SDK - a unified package that re-exports all sub-packages.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @elsapiens/sdk
9
+ # or
10
+ pnpm add @elsapiens/sdk
11
+ ```
12
+
13
+ This single package includes:
14
+ - `@elsapiens/utils` - Utility functions
15
+ - `@elsapiens/styles` - CSS and Tailwind preset
16
+ - `@elsapiens/ui` - UI components (50+)
17
+ - `@elsapiens/services` - API and backend services
18
+ - `@elsapiens/providers` - React context providers
19
+ - `@elsapiens/hooks` - Custom React hooks
20
+ - `@elsapiens/layout` - Layout components
21
+ - `@elsapiens/shell` - Shell/wrapper components
22
+ - `@elsapiens/help` - Help system components
23
+
24
+ ## Quick Start
25
+
26
+ ```tsx
27
+ import {
28
+ SDKProvider,
29
+ AppShell,
30
+ Button,
31
+ Card,
32
+ CardHeader,
33
+ CardTitle,
34
+ CardContent,
35
+ useToast,
36
+ } from '@elsapiens/sdk';
37
+ import '@elsapiens/sdk/styles';
38
+
39
+ const config = {
40
+ app: { name: 'My App' },
41
+ auth: { enabled: true, authUrl: '/api/auth' },
42
+ api: { baseUrl: '/api/v1' },
43
+ };
44
+
45
+ function App() {
46
+ return (
47
+ <SDKProvider config={config}>
48
+ <AppShell navItems={navItems}>
49
+ <Dashboard />
50
+ </AppShell>
51
+ </SDKProvider>
52
+ );
53
+ }
54
+
55
+ function Dashboard() {
56
+ const { toast } = useToast();
57
+
58
+ return (
59
+ <div className="p-6">
60
+ <Card>
61
+ <CardHeader>
62
+ <CardTitle>Welcome</CardTitle>
63
+ </CardHeader>
64
+ <CardContent>
65
+ <Button onClick={() => toast.success('Hello!')}>
66
+ Click Me
67
+ </Button>
68
+ </CardContent>
69
+ </Card>
70
+ </div>
71
+ );
72
+ }
73
+ ```
74
+
75
+ ## Import Paths
76
+
77
+ ### Default Import (All Exports)
78
+
79
+ ```tsx
80
+ import {
81
+ // Utils
82
+ cn,
83
+ formatCurrency,
84
+ formatDate,
85
+ debounce,
86
+
87
+ // UI Components
88
+ Button,
89
+ Input,
90
+ Card,
91
+ Modal,
92
+ Table,
93
+ LineChart,
94
+
95
+ // Services
96
+ createApiClient,
97
+ createAuthService,
98
+
99
+ // Providers
100
+ SDKProvider,
101
+ ThemeProvider,
102
+ useTheme,
103
+
104
+ // Hooks
105
+ useApp,
106
+ useFileUpload,
107
+ useToast,
108
+
109
+ // Layout
110
+ AppShell,
111
+ Sidebar,
112
+ PageHeader,
113
+
114
+ // Shell
115
+ AuthGuard,
116
+ ErrorBoundary,
117
+
118
+ // Help
119
+ HelpIcon,
120
+ HelpPanel,
121
+ } from '@elsapiens/sdk';
122
+ ```
123
+
124
+ ### Sub-path Imports (Tree-Shaking)
125
+
126
+ For smaller bundle sizes, import from specific sub-paths:
127
+
128
+ ```tsx
129
+ // UI components only
130
+ import { Button, Card, Modal } from '@elsapiens/sdk/ui';
131
+
132
+ // Layout components only
133
+ import { AppShell, Sidebar } from '@elsapiens/sdk/layout';
134
+
135
+ // Shell components only
136
+ import { AuthGuard, ErrorBoundary } from '@elsapiens/sdk/shell';
137
+
138
+ // Help components only
139
+ import { HelpIcon, HelpPanel } from '@elsapiens/sdk/help';
140
+
141
+ // Providers only
142
+ import { SDKProvider, useTheme } from '@elsapiens/sdk/providers';
143
+
144
+ // Hooks only
145
+ import { useApp, useFileUpload } from '@elsapiens/sdk/hooks';
146
+
147
+ // Services only
148
+ import { createApiClient } from '@elsapiens/sdk/services';
149
+
150
+ // Utils only
151
+ import { cn, formatCurrency } from '@elsapiens/sdk/utils';
152
+
153
+ // Styles
154
+ import '@elsapiens/sdk/styles';
155
+ ```
156
+
157
+ ## Package Contents
158
+
159
+ ### Utils (`@elsapiens/sdk/utils`)
160
+
161
+ ```tsx
162
+ // CSS utilities
163
+ cn(...classes)
164
+
165
+ // Formatters
166
+ formatCurrency(value, currency?, locale?)
167
+ formatNumber(value, options?)
168
+ formatDate(date, format?)
169
+ formatRelativeTime(date)
170
+ formatFileSize(bytes)
171
+
172
+ // Validators
173
+ isEmail(value)
174
+ isUrl(value)
175
+ required(message?)
176
+ email(message?)
177
+ compose(...validators)
178
+
179
+ // Keyboard
180
+ parseShortcut(shortcut)
181
+ matchesShortcut(event, shortcut)
182
+ formatShortcut(shortcut)
183
+
184
+ // Utilities
185
+ debounce(fn, delay)
186
+ throttle(fn, interval)
187
+ ```
188
+
189
+ ### UI Components (`@elsapiens/sdk/ui`)
190
+
191
+ **Form:** Button, Input, Textarea, Select, SearchableSelect, MultiSelect, DatePicker, TimePicker, Toggle, Checkbox, RadioGroup, Slider, FileUpload
192
+
193
+ **Display:** Card, Badge, Avatar, Table, Progress, Skeleton, Tabs, Stepper
194
+
195
+ **Interaction:** Modal, Toast, Tooltip, Popover
196
+
197
+ **Charts:** LineChart, AreaChart, BarChart, PieChart, DonutChart, Sparkline
198
+
199
+ ### Services (`@elsapiens/sdk/services`)
200
+
201
+ ```tsx
202
+ createApiClient(config)
203
+ createAuthService(config)
204
+ createHealthCheck(config)
205
+ createShortcutManager()
206
+ createHelpRegistry()
207
+ createGeolocationService()
208
+ createLogger(name)
209
+ ```
210
+
211
+ ### Providers (`@elsapiens/sdk/providers`)
212
+
213
+ ```tsx
214
+ SDKProvider
215
+ ThemeProvider → useTheme()
216
+ AuthProvider → useAuth()
217
+ OrganizationProvider → useOrganization()
218
+ ShortcutProvider → useShortcuts()
219
+ HelpProvider → useHelp()
220
+ ```
221
+
222
+ ### Hooks (`@elsapiens/sdk/hooks`)
223
+
224
+ ```tsx
225
+ useApp()
226
+ useFileUpload(options)
227
+ useTimezone()
228
+ useToast()
229
+ useTheme()
230
+ useAuth()
231
+ useOrganization()
232
+ useShortcuts()
233
+ useHelp()
234
+ ```
235
+
236
+ ### Layout (`@elsapiens/sdk/layout`)
237
+
238
+ ```tsx
239
+ AppShell
240
+ Sidebar
241
+ TopBar
242
+ PageHeader
243
+ PageTransition
244
+ UserInfo
245
+ ```
246
+
247
+ ### Shell (`@elsapiens/sdk/shell`)
248
+
249
+ ```tsx
250
+ AuthGuard
251
+ ErrorBoundary
252
+ OrgSwitcher
253
+ AppSelector
254
+ ServicesDownPage
255
+ ```
256
+
257
+ ### Help (`@elsapiens/sdk/help`)
258
+
259
+ ```tsx
260
+ HelpIcon
261
+ HelpTooltip
262
+ HelpPanel
263
+ HelpSearch
264
+ ShortcutHelpPanel
265
+ ```
266
+
267
+ ## Configuration
268
+
269
+ ```tsx
270
+ import { SDKProvider } from '@elsapiens/sdk';
271
+ import type { SDKConfig } from '@elsapiens/sdk';
272
+
273
+ const config: SDKConfig = {
274
+ app: {
275
+ name: 'My Application',
276
+ logo: '/logo.svg',
277
+ version: '1.0.0',
278
+ },
279
+
280
+ auth: {
281
+ enabled: true,
282
+ authUrl: '/api/auth',
283
+ tokenKey: 'auth_token',
284
+ },
285
+
286
+ api: {
287
+ baseUrl: '/api/v1',
288
+ timeout: 30000,
289
+ },
290
+
291
+ theme: {
292
+ defaultTheme: 'system', // 'light' | 'dark' | 'system'
293
+ },
294
+
295
+ features: {
296
+ darkMode: true,
297
+ shortcuts: true,
298
+ help: true,
299
+ },
300
+ };
301
+
302
+ <SDKProvider config={config}>
303
+ <App />
304
+ </SDKProvider>
305
+ ```
306
+
307
+ ## Tailwind Configuration
308
+
309
+ ```js
310
+ // tailwind.config.js
311
+ import elsapiensPreset from '@elsapiens/sdk/styles/tailwind-preset';
312
+
313
+ export default {
314
+ presets: [elsapiensPreset],
315
+ content: [
316
+ './src/**/*.{js,ts,jsx,tsx}',
317
+ './node_modules/@elsapiens/**/*.{js,ts,jsx,tsx}',
318
+ ],
319
+ };
320
+ ```
321
+
322
+ ## Peer Dependencies
323
+
324
+ ```json
325
+ {
326
+ "react": "^18.2.0",
327
+ "react-dom": "^18.2.0",
328
+ "react-router-dom": "^6.0.0"
329
+ }
330
+ ```
331
+
332
+ ## Individual Packages
333
+
334
+ If you only need specific functionality, install individual packages:
335
+
336
+ ```bash
337
+ # Core utilities and styles
338
+ npm install @elsapiens/utils @elsapiens/styles
339
+
340
+ # UI components only
341
+ npm install @elsapiens/ui @elsapiens/utils
342
+
343
+ # Full SDK
344
+ npm install @elsapiens/sdk
345
+ ```
346
+
347
+ ## License
348
+
349
+ MIT
package/dist/help.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/help';
package/dist/help.js ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/help';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/hooks';
package/dist/hooks.js ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/hooks';
@@ -0,0 +1,8 @@
1
+ export * from '@elsapiens/utils';
2
+ export * from '@elsapiens/ui';
3
+ export * from '@elsapiens/services';
4
+ export * from '@elsapiens/providers';
5
+ export * from '@elsapiens/hooks';
6
+ export { AppShell, AppShellProps, PageTransition, PageTransitionProps, Sidebar, SidebarProps, TopBar, TopBarProps, UserInfo, UserInfoProps } from '@elsapiens/layout';
7
+ export * from '@elsapiens/shell';
8
+ export * from '@elsapiens/help';
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from '@elsapiens/utils';
2
+ export * from '@elsapiens/ui';
3
+ export * from '@elsapiens/services';
4
+ export * from '@elsapiens/providers';
5
+ export * from '@elsapiens/hooks';
6
+ export { AppShell, PageTransition, Sidebar, TopBar, UserInfo } from '@elsapiens/layout';
7
+ export * from '@elsapiens/shell';
8
+ export * from '@elsapiens/help';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/layout';
package/dist/layout.js ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/layout';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/providers';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/providers';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/services';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/services';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/shell';
package/dist/shell.js ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/shell';
package/dist/ui.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/ui';
package/dist/ui.js ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/ui';
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/utils';
package/dist/utils.js ADDED
@@ -0,0 +1 @@
1
+ export * from '@elsapiens/utils';
package/package.json ADDED
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "@elsapiens/sdk",
3
+ "version": "0.1.0",
4
+ "description": "elSapiens SDK - Complete React component library for micro-frontend applications",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": {
13
+ "types": "./dist/index.d.ts",
14
+ "default": "./dist/index.js"
15
+ }
16
+ },
17
+ "./ui": {
18
+ "import": {
19
+ "types": "./dist/ui.d.ts",
20
+ "default": "./dist/ui.js"
21
+ }
22
+ },
23
+ "./layout": {
24
+ "import": {
25
+ "types": "./dist/layout.d.ts",
26
+ "default": "./dist/layout.js"
27
+ }
28
+ },
29
+ "./shell": {
30
+ "import": {
31
+ "types": "./dist/shell.d.ts",
32
+ "default": "./dist/shell.js"
33
+ }
34
+ },
35
+ "./help": {
36
+ "import": {
37
+ "types": "./dist/help.d.ts",
38
+ "default": "./dist/help.js"
39
+ }
40
+ },
41
+ "./providers": {
42
+ "import": {
43
+ "types": "./dist/providers.d.ts",
44
+ "default": "./dist/providers.js"
45
+ }
46
+ },
47
+ "./hooks": {
48
+ "import": {
49
+ "types": "./dist/hooks.d.ts",
50
+ "default": "./dist/hooks.js"
51
+ }
52
+ },
53
+ "./services": {
54
+ "import": {
55
+ "types": "./dist/services.d.ts",
56
+ "default": "./dist/services.js"
57
+ }
58
+ },
59
+ "./utils": {
60
+ "import": {
61
+ "types": "./dist/utils.d.ts",
62
+ "default": "./dist/utils.js"
63
+ }
64
+ },
65
+ "./styles": "@elsapiens/styles",
66
+ "./package.json": "./package.json"
67
+ },
68
+ "files": [
69
+ "dist"
70
+ ],
71
+ "dependencies": {
72
+ "@elsapiens/utils": "0.1.0",
73
+ "@elsapiens/ui": "0.1.0",
74
+ "@elsapiens/providers": "0.1.0",
75
+ "@elsapiens/services": "0.1.0",
76
+ "@elsapiens/hooks": "0.1.0",
77
+ "@elsapiens/help": "0.1.0",
78
+ "@elsapiens/layout": "0.1.0",
79
+ "@elsapiens/shell": "0.1.0",
80
+ "@elsapiens/styles": "0.1.0"
81
+ },
82
+ "devDependencies": {
83
+ "@types/react": "^18.2.47",
84
+ "@types/react-dom": "^18.2.18",
85
+ "tsup": "^8.0.1",
86
+ "typescript": "^5.3.3"
87
+ },
88
+ "peerDependencies": {
89
+ "react": "^18.2.0",
90
+ "react-dom": "^18.2.0",
91
+ "react-router-dom": "^6.21.0"
92
+ },
93
+ "peerDependenciesMeta": {
94
+ "react-router-dom": {
95
+ "optional": true
96
+ }
97
+ },
98
+ "scripts": {
99
+ "build": "tsup --config tsup.config.ts",
100
+ "dev": "tsup --config tsup.config.ts --watch",
101
+ "clean": "rm -rf dist",
102
+ "typecheck": "tsc --noEmit"
103
+ }
104
+ }