@lax-wp/design-system 0.1.0 → 0.1.1

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 (35) hide show
  1. package/README.md +526 -16
  2. package/dist/components/data-display/badge/Badge.d.ts +44 -0
  3. package/dist/components/data-display/banner/Banner.d.ts +41 -0
  4. package/dist/components/data-display/code-editor/CodeEditor.d.ts +4 -0
  5. package/dist/components/data-display/code-editor/JsonGrid.d.ts +14 -0
  6. package/dist/components/data-display/code-editor/Tabs.d.ts +12 -0
  7. package/dist/components/data-display/pdf-viewer/PdfViewer.d.ts +45 -0
  8. package/dist/components/data-display/popper/Popper.d.ts +57 -0
  9. package/dist/components/data-display/status-color-mapping/StatusColorMapping.d.ts +29 -0
  10. package/dist/components/data-display/typography/Typography.d.ts +15 -0
  11. package/dist/components/feedback/toast/Toast.d.ts +29 -0
  12. package/dist/components/forms/checkbox/Checkbox.d.ts +55 -0
  13. package/dist/components/forms/color-picker/ColorPicker.d.ts +60 -0
  14. package/dist/components/forms/creatable-select/CreatableSelect.d.ts +92 -0
  15. package/dist/components/forms/currency-input/CurrencyInputField.d.ts +73 -0
  16. package/dist/components/forms/currency-input/currency.constant.d.ts +6 -0
  17. package/dist/components/forms/date-range/DateRange.d.ts +72 -0
  18. package/dist/components/forms/debounce-input/DebounceInputField.d.ts +76 -0
  19. package/dist/components/forms/input-field/InputField.d.ts +62 -0
  20. package/dist/components/forms/percentage-input/PercentageInputField.d.ts +75 -0
  21. package/dist/components/forms/text-field/TextField.d.ts +48 -0
  22. package/dist/components/forms/toggle/Toggle.d.ts +71 -0
  23. package/dist/components/tooltip/Tooltip.d.ts +13 -0
  24. package/dist/design-system.css +1 -0
  25. package/dist/hooks/useOutsideClick.d.ts +28 -0
  26. package/dist/hooks/usePythonSyntax.d.ts +28 -0
  27. package/dist/hooks/useTheme.d.ts +6 -0
  28. package/dist/index.d.ts +48 -0
  29. package/dist/index.es.js +25703 -4806
  30. package/dist/index.umd.js +225 -31
  31. package/dist/services/monacoManager.d.ts +28 -0
  32. package/dist/types/index.d.ts +66 -0
  33. package/dist/utils/messageConstants.d.ts +16 -0
  34. package/dist/utils/utilities.d.ts +13 -0
  35. package/package.json +40 -13
package/README.md CHANGED
@@ -1,11 +1,521 @@
1
- # React + TypeScript + Vite
1
+ # LAX Web Portal Design System
2
2
 
3
- This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
3
+ A comprehensive React + TypeScript design system built with Vite, providing reusable UI components for the LAX web portal applications. Features a complete set of form components, data display elements, and interactive controls with full TypeScript support, accessibility features, and dark mode compatibility.
4
4
 
5
- Currently, two official plugins are available:
5
+ ## 🎨 Features
6
6
 
7
- - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
8
- - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
7
+ - **📦 Comprehensive Component Library**: Form inputs, toggles, date ranges, currency fields, and more
8
+ - **📚 Storybook Documentation**: Interactive component documentation with live examples
9
+ - **🎯 TypeScript Support**: Full type safety with comprehensive interfaces and JSDoc
10
+ - **⚡ Fast Development**: Vite + HMR for lightning-fast development experience
11
+ - **🌙 Dark Mode**: Complete dark theme support across all components
12
+ - **♿ Accessibility**: ARIA attributes, keyboard navigation, and screen reader support
13
+ - **🎭 Animations**: Smooth transitions using Framer Motion
14
+ - **🔧 ESLint Configuration**: Consistent code quality and formatting
15
+ - **📱 Responsive Design**: Mobile-first responsive components
16
+ - **🎪 Interactive Stories**: Comprehensive Storybook examples with playgrounds
17
+
18
+ ## 📚 Component Library
19
+
20
+ ### Form Components
21
+
22
+ - **InputField**: Basic text input with validation
23
+ - **TextField**: Enhanced text input with additional features
24
+ - **CurrencyInputField**: Currency input with multi-currency support
25
+ - **PercentageInputField**: Percentage input with constraints and validation
26
+ - **DebounceInputField**: Debounced input for search and real-time scenarios
27
+ - **DateRange**: Date range picker with validation
28
+ - **Checkbox**: Customizable checkbox with multiple variants
29
+ - **Toggle**: Switch component with icons and flexible positioning
30
+ - **ColorPicker**: Color selection with multiple format support
31
+ - **CreatableSelect**: Enhanced select with creation capabilities
32
+
33
+ ### Data Display
34
+
35
+ - **Typography**: Consistent text styling component
36
+
37
+ ## 🚀 Getting Started
38
+
39
+ ### Prerequisites
40
+
41
+ - Node.js 18+
42
+ - npm or yarn package manager
43
+
44
+ ### Installation
45
+
46
+ ```bash
47
+ # Clone the repository
48
+ git clone <repository-url>
49
+ cd lax-wp-design-system
50
+
51
+ # Install dependencies
52
+ npm install
53
+ ```
54
+
55
+ ### Development
56
+
57
+ Start the development server with hot module replacement:
58
+
59
+ ```bash
60
+ npm run dev
61
+ ```
62
+
63
+ This will start the Vite development server at `http://localhost:5173`
64
+
65
+ ### Storybook
66
+
67
+ Run Storybook for interactive component documentation:
68
+
69
+ ```bash
70
+ npm run storybook
71
+ ```
72
+
73
+ Storybook will be available at `http://localhost:6006`
74
+
75
+ ### Build
76
+
77
+ Build the library for production:
78
+
79
+ ```bash
80
+ npm run build
81
+ ```
82
+
83
+ This generates:
84
+
85
+ - `dist/` - Built library files
86
+ - Type declarations for TypeScript support
87
+
88
+ ## 🔧 Local Development with Yalc
89
+
90
+ [Yalc](https://github.com/wclr/yalc) is a tool for working with npm packages locally. It's perfect for testing your design system changes in other React applications before publishing.
91
+
92
+ ### Installing Yalc
93
+
94
+ ```bash
95
+ # Install yalc globally
96
+ npm install -g yalc
97
+ ```
98
+
99
+ ### Setting Up the Design System for Local Development
100
+
101
+ 1. **Build and publish locally:**
102
+
103
+ ```bash
104
+ # In the design system directory
105
+ npm run build
106
+ yalc publish
107
+ ```
108
+
109
+ 2. **Watch for changes (optional):**
110
+
111
+ ```bash
112
+ # Run this in a separate terminal for auto-rebuild on changes
113
+ npm run build --watch
114
+ ```
115
+
116
+ ### Using the Design System in Another React App
117
+
118
+ 1. **Add the local package:**
119
+
120
+ ```bash
121
+ # In your React app directory
122
+ yalc add @lax-wp/design-system
123
+ npm install
124
+ ```
125
+
126
+ 2. **Import and use components:**
127
+
128
+ ```tsx
129
+ // In your React app
130
+ import {
131
+ CurrencyInputField,
132
+ Toggle,
133
+ DateRange,
134
+ DebounceInputField,
135
+ PercentageInputField,
136
+ ColorPicker,
137
+ Checkbox,
138
+ CreatableSelectField,
139
+ } from "@lax-wp/design-system";
140
+
141
+ function App() {
142
+ const [currency, setCurrency] = useState<number | null>(null);
143
+ const [isEnabled, setIsEnabled] = useState(false);
144
+
145
+ return (
146
+ <div className="p-6">
147
+ <CurrencyInputField
148
+ id="price"
149
+ label="Product Price"
150
+ value={currency}
151
+ onChange={(value, currencyCode) => setCurrency(value)}
152
+ allowCurrencyChange
153
+ required
154
+ />
155
+
156
+ <Toggle
157
+ id="notifications"
158
+ label="Enable Notifications"
159
+ checked={isEnabled}
160
+ onChange={setIsEnabled}
161
+ />
162
+ </div>
163
+ );
164
+ }
165
+ ```
166
+
167
+ 3. **Include Tailwind CSS:**
168
+ The design system uses Tailwind CSS. Make sure your React app has Tailwind configured with the same classes. Add to your `tailwind.config.js`:
169
+
170
+ ```js
171
+ module.exports = {
172
+ content: [
173
+ "./src/**/*.{js,jsx,ts,tsx}",
174
+ "./node_modules/@lax-wp/design-system/dist/**/*.{js,jsx,ts,tsx}",
175
+ ],
176
+ theme: {
177
+ extend: {
178
+ colors: {
179
+ primary: {
180
+ 50: "#eff6ff",
181
+ 500: "#3b82f6",
182
+ 600: "#2563eb",
183
+ // ... add your color palette
184
+ },
185
+ },
186
+ },
187
+ },
188
+ };
189
+ ```
190
+
191
+ ### Updating the Local Package
192
+
193
+ When you make changes to the design system:
194
+
195
+ 1. **Rebuild and update:**
196
+
197
+ ```bash
198
+ # In the design system directory
199
+ npm run build
200
+ yalc push
201
+ ```
202
+
203
+ 2. **The changes will be automatically updated in your React app!**
204
+
205
+ ### Removing the Local Package
206
+
207
+ When you're done with local development:
208
+
209
+ ```bash
210
+ # In your React app directory
211
+ yalc remove @lax-wp/design-system
212
+ npm install @lax-wp/design-system # Install from npm registry
213
+ ```
214
+
215
+ ## 📱 Usage Examples
216
+
217
+ ### Basic Form with Validation
218
+
219
+ ```tsx
220
+ import { useState } from "react";
221
+ import {
222
+ CurrencyInputField,
223
+ PercentageInputField,
224
+ DateRange,
225
+ Toggle,
226
+ type DateRangeValue,
227
+ } from "@lax-wp/design-system";
228
+
229
+ function PricingForm() {
230
+ const [price, setPrice] = useState<number | null>(null);
231
+ const [discount, setDiscount] = useState<number | null>(null);
232
+ const [dateRange, setDateRange] = useState<DateRangeValue>({
233
+ startDate: null,
234
+ endDate: null,
235
+ });
236
+ const [isActive, setIsActive] = useState(false);
237
+
238
+ const isValid =
239
+ price && price > 0 && dateRange.startDate && dateRange.endDate;
240
+
241
+ return (
242
+ <form className="space-y-4 max-w-md">
243
+ <CurrencyInputField
244
+ id="price"
245
+ label="Product Price"
246
+ value={price}
247
+ onChange={(value) => setPrice(value)}
248
+ currencyCode="USD"
249
+ allowCurrencyChange
250
+ required
251
+ message={price === null ? "Price is required" : undefined}
252
+ messageType={price === null ? "error" : "default"}
253
+ />
254
+
255
+ <PercentageInputField
256
+ id="discount"
257
+ label="Discount Rate"
258
+ value={discount}
259
+ onChange={setDiscount}
260
+ min={0}
261
+ max={50}
262
+ helpText="Maximum discount allowed is 50%"
263
+ />
264
+
265
+ <DateRange
266
+ id="validity"
267
+ label="Validity Period"
268
+ value={dateRange}
269
+ onChange={setDateRange}
270
+ required
271
+ minDate={new Date()}
272
+ />
273
+
274
+ <Toggle
275
+ id="active"
276
+ label="Activate Pricing"
277
+ checked={isActive}
278
+ onChange={setIsActive}
279
+ disabled={!isValid}
280
+ message={isValid ? "Ready to activate" : "Complete all fields first"}
281
+ messageType={isValid ? "success" : "info"}
282
+ />
283
+
284
+ <button
285
+ type="submit"
286
+ disabled={!isValid || !isActive}
287
+ className="w-full py-2 px-4 bg-blue-600 text-white rounded disabled:opacity-50"
288
+ >
289
+ Save Pricing
290
+ </button>
291
+ </form>
292
+ );
293
+ }
294
+ ```
295
+
296
+ ### Search with Debounced Input
297
+
298
+ ```tsx
299
+ import { useState } from "react";
300
+ import { DebounceInputField } from "@lax-wp/design-system";
301
+
302
+ function SearchExample() {
303
+ const [searchTerm, setSearchTerm] = useState("");
304
+ const [results, setResults] = useState<string[]>([]);
305
+
306
+ const handleSearch = async (term: string) => {
307
+ if (!term.trim()) {
308
+ setResults([]);
309
+ return;
310
+ }
311
+
312
+ // Simulate API call
313
+ const mockResults = await fetch(`/api/search?q=${term}`);
314
+ const data = await mockResults.json();
315
+ setResults(data);
316
+ };
317
+
318
+ return (
319
+ <div>
320
+ <DebounceInputField
321
+ id="search"
322
+ label="Search Products"
323
+ type="search"
324
+ value={searchTerm}
325
+ onChange={(value) => {
326
+ setSearchTerm(value);
327
+ handleSearch(value);
328
+ }}
329
+ debounceTimeout={300}
330
+ placeholder="Type to search..."
331
+ helpText="Results appear as you type"
332
+ />
333
+
334
+ <div className="mt-4">
335
+ {results.map((result, index) => (
336
+ <div key={index} className="p-2 border-b">
337
+ {result}
338
+ </div>
339
+ ))}
340
+ </div>
341
+ </div>
342
+ );
343
+ }
344
+ ```
345
+
346
+ ## 🎨 Theming and Customization
347
+
348
+ ### Using with Custom Themes
349
+
350
+ ```tsx
351
+ // Add custom CSS variables for theming
352
+ :root {
353
+ --primary-50: #eff6ff;
354
+ --primary-500: #3b82f6;
355
+ --primary-600: #2563eb;
356
+ --error-500: #ef4444;
357
+ --success-500: #10b981;
358
+ }
359
+
360
+ // Dark mode support
361
+ .dark {
362
+ --primary-50: #1e40af;
363
+ --primary-500: #60a5fa;
364
+ --primary-600: #3b82f6;
365
+ }
366
+ ```
367
+
368
+ ### Custom Component Styling
369
+
370
+ ```tsx
371
+ import { CurrencyInputField } from "@lax-wp/design-system";
372
+
373
+ function CustomStyledComponent() {
374
+ return (
375
+ <CurrencyInputField
376
+ id="custom"
377
+ label="Custom Styled Price"
378
+ wrapperClassName="bg-gradient-to-r from-blue-50 to-purple-50 p-4 rounded-lg"
379
+ inputClassName="border-2 border-purple-300 focus:border-purple-500"
380
+ labelClassName="text-purple-800 font-bold"
381
+ onChange={() => {}}
382
+ />
383
+ );
384
+ }
385
+ ```
386
+
387
+ ## 🔍 TypeScript Support
388
+
389
+ The design system is built with TypeScript and provides comprehensive type definitions:
390
+
391
+ ```tsx
392
+ import type {
393
+ CurrencyInputFieldProps,
394
+ DateRangeValue,
395
+ ToggleProps,
396
+ SelectOption,
397
+ } from "@lax-wp/design-system";
398
+
399
+ // All props are fully typed
400
+ const config: CurrencyInputFieldProps = {
401
+ id: "price",
402
+ label: "Price",
403
+ onChange: (value: number | null, currency: string) => {
404
+ // TypeScript knows the exact types here
405
+ console.log(`Price: ${value}, Currency: ${currency}`);
406
+ },
407
+ };
408
+
409
+ // Type-safe option handling
410
+ const options: SelectOption[] = [
411
+ { value: "option1", label: "Option 1" },
412
+ { value: "option2", label: "Option 2" },
413
+ ];
414
+ ```
415
+
416
+ ## 🧪 Testing
417
+
418
+ ### Running Tests
419
+
420
+ ```bash
421
+ # Run unit tests
422
+ npm run test
423
+
424
+ # Run tests in watch mode
425
+ npm run test:watch
426
+
427
+ # Run tests with coverage
428
+ npm run test:coverage
429
+ ```
430
+
431
+ ### Testing with Your Application
432
+
433
+ When using yalc for local development, you can test your changes immediately:
434
+
435
+ 1. Make changes to a component
436
+ 2. Run `npm run build && yalc push`
437
+ 3. Test in your React application
438
+ 4. Iterate quickly without publishing to npm
439
+
440
+ ## 📦 Publishing
441
+
442
+ ### Preparing for Release
443
+
444
+ 1. **Update version:**
445
+
446
+ ```bash
447
+ npm version patch # or minor/major
448
+ ```
449
+
450
+ 2. **Build and test:**
451
+
452
+ ```bash
453
+ npm run build
454
+ npm run test
455
+ npm run storybook:build
456
+ ```
457
+
458
+ 3. **Publish to npm:**
459
+
460
+ ```bash
461
+ npm publish
462
+ ```
463
+
464
+ ### Semantic Versioning
465
+
466
+ - **Patch (1.0.1)**: Bug fixes, small improvements
467
+ - **Minor (1.1.0)**: New components, backward-compatible features
468
+ - **Major (2.0.0)**: Breaking changes, API modifications
469
+
470
+ ## 🤝 Contributing
471
+
472
+ ### Development Workflow
473
+
474
+ 1. **Fork and clone** the repository
475
+ 2. **Create a feature branch:** `git checkout -b feature/new-component`
476
+ 3. **Make your changes** following the established patterns
477
+ 4. **Add tests and stories** for new components
478
+ 5. **Test locally** using yalc with your application
479
+ 6. **Submit a pull request** with clear description
480
+
481
+ ### Component Development Guidelines
482
+
483
+ - Follow existing patterns for props and structure
484
+ - Add comprehensive TypeScript types and JSDoc
485
+ - Include Storybook stories with multiple examples
486
+ - Ensure accessibility (ARIA attributes, keyboard navigation)
487
+ - Support dark mode with proper contrast
488
+ - Add animation support where appropriate
489
+ - Test with screen readers and keyboard-only navigation
490
+
491
+ ### Code Quality
492
+
493
+ ```bash
494
+ # Lint your code
495
+ npm run lint
496
+
497
+ # Fix linting issues
498
+ npm run lint:fix
499
+
500
+ # Check TypeScript
501
+ npm run type-check
502
+ ```
503
+
504
+ ## 📄 License
505
+
506
+ MIT License - see LICENSE file for details.
507
+
508
+ ## 🆘 Support
509
+
510
+ - **Issues**: Report bugs and request features via GitHub Issues
511
+ - **Documentation**: Check Storybook for component examples
512
+ - **Development**: Use yalc for local testing and development
513
+
514
+ ## 🔗 Related Projects
515
+
516
+ - **LAX Web Portal**: Main application using this design system
517
+ - **LAX Activity Logger**: Secondary application with shared components
518
+ - **LAX Flow Orchestrator**: Workflow management with design system integration
9
519
 
10
520
  ## Expanding the ESLint configuration
11
521
 
@@ -13,9 +523,9 @@ If you are developing a production application, we recommend updating the config
13
523
 
14
524
  ```js
15
525
  export default tseslint.config([
16
- globalIgnores(['dist']),
526
+ globalIgnores(["dist"]),
17
527
  {
18
- files: ['**/*.{ts,tsx}'],
528
+ files: ["**/*.{ts,tsx}"],
19
529
  extends: [
20
530
  // Other configs...
21
531
 
@@ -30,40 +540,40 @@ export default tseslint.config([
30
540
  ],
31
541
  languageOptions: {
32
542
  parserOptions: {
33
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
543
+ project: ["./tsconfig.node.json", "./tsconfig.app.json"],
34
544
  tsconfigRootDir: import.meta.dirname,
35
545
  },
36
546
  // other options...
37
547
  },
38
548
  },
39
- ])
549
+ ]);
40
550
  ```
41
551
 
42
552
  You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
43
553
 
44
554
  ```js
45
555
  // eslint.config.js
46
- import reactX from 'eslint-plugin-react-x'
47
- import reactDom from 'eslint-plugin-react-dom'
556
+ import reactX from "eslint-plugin-react-x";
557
+ import reactDom from "eslint-plugin-react-dom";
48
558
 
49
559
  export default tseslint.config([
50
- globalIgnores(['dist']),
560
+ globalIgnores(["dist"]),
51
561
  {
52
- files: ['**/*.{ts,tsx}'],
562
+ files: ["**/*.{ts,tsx}"],
53
563
  extends: [
54
564
  // Other configs...
55
565
  // Enable lint rules for React
56
- reactX.configs['recommended-typescript'],
566
+ reactX.configs["recommended-typescript"],
57
567
  // Enable lint rules for React DOM
58
568
  reactDom.configs.recommended,
59
569
  ],
60
570
  languageOptions: {
61
571
  parserOptions: {
62
- project: ['./tsconfig.node.json', './tsconfig.app.json'],
572
+ project: ["./tsconfig.node.json", "./tsconfig.app.json"],
63
573
  tsconfigRootDir: import.meta.dirname,
64
574
  },
65
575
  // other options...
66
576
  },
67
577
  },
68
- ])
578
+ ]);
69
579
  ```
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Available badge status options
3
+ */
4
+ export type BadgeStatus = "default" | "primary" | "warning" | "error" | "neutral" | "success" | "info";
5
+ /**
6
+ * Badge appearance variants
7
+ */
8
+ export type BadgeAppearance = "filled" | "outline";
9
+ /**
10
+ * Badge size variants
11
+ */
12
+ export type BadgeSize = "sm" | "md" | "lg";
13
+ /**
14
+ * Props for the Badge component
15
+ */
16
+ export interface BadgeProps {
17
+ /** The badge status/color variant */
18
+ status?: BadgeStatus;
19
+ /** The text content to display */
20
+ children: string;
21
+ /** Visual appearance style */
22
+ appearance?: BadgeAppearance;
23
+ /** Size variant */
24
+ size?: BadgeSize;
25
+ /** Additional CSS classes for the wrapper */
26
+ className?: string;
27
+ /** Whether to use rounded pill shape */
28
+ isRounded?: boolean;
29
+ /** Whether to capitalize the text */
30
+ capitalize?: boolean;
31
+ /** Custom aria-label for accessibility */
32
+ "aria-label"?: string;
33
+ }
34
+ /**
35
+ * Badge component displays small status indicators or labels
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <Badge status="success">Active</Badge>
40
+ * <Badge status="error" appearance="filled">Error</Badge>
41
+ * <Badge status="warning" size="sm" isRounded>Warning</Badge>
42
+ * ```
43
+ */
44
+ export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Available banner status options
3
+ */
4
+ export type BannerStatus = "success" | "error" | "warning" | "info" | "archived" | "canceled" | "queued" | "paused" | "awaiting_action" | "skipped" | "pending";
5
+ /**
6
+ * Props for the Banner component
7
+ */
8
+ export interface BannerProps {
9
+ /** The banner status/color variant */
10
+ status: BannerStatus;
11
+ /** The main content to display */
12
+ children: React.ReactNode;
13
+ /** Additional content to display on the right side */
14
+ additionalChildren?: React.ReactNode;
15
+ /** Component to render when expanded (for error status) */
16
+ ExpandedComponent?: React.ComponentType<{
17
+ children: React.ReactNode;
18
+ }>;
19
+ /** Whether the banner is expandable */
20
+ expandable?: boolean;
21
+ /** Custom icon to override default status icon */
22
+ icon?: React.ReactNode;
23
+ /** Additional CSS classes for the wrapper */
24
+ className?: string;
25
+ /** Callback when banner is clicked (if expandable) */
26
+ onClick?: () => void;
27
+ /** Custom aria-label for accessibility */
28
+ "aria-label"?: string;
29
+ }
30
+ /**
31
+ * Banner component displays important information with status-based styling
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <Banner status="success">Operation completed successfully</Banner>
36
+ * <Banner status="error" expandable ExpandedComponent={ErrorDetails}>
37
+ * Error occurred
38
+ * </Banner>
39
+ * ```
40
+ */
41
+ export declare const Banner: import("react").ForwardRefExoticComponent<BannerProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import { type CodeEditorProps } from '../../../types';
3
+ export type TTabKey = 'JSON' | 'Grid';
4
+ export declare const CodeEditor: FC<CodeEditorProps>;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export interface JsonGridProps {
3
+ isFullScreen: boolean;
4
+ allExpanded: boolean;
5
+ toggleAll: () => void;
6
+ isEditMode: boolean;
7
+ isDarkMode: boolean;
8
+ style: React.CSSProperties;
9
+ value: string;
10
+ onChange?: (value: string) => void;
11
+ setIsAddKeyModalOpen: (open: boolean) => void;
12
+ isAddKeyModalOpen: boolean;
13
+ }
14
+ export declare const JsonGrid: React.FC<JsonGridProps>;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface TabsProps<T extends string> {
3
+ variant?: 'default' | 'switch';
4
+ tabs: T[];
5
+ activeTab: T;
6
+ onTabClick: (tab: T) => void;
7
+ size?: 'sm' | 'md' | 'lg';
8
+ tabIcons?: Partial<Record<T, React.ReactNode>>;
9
+ height?: string;
10
+ className?: string;
11
+ }
12
+ export declare const Tabs: <T extends string>({ variant, tabs, activeTab, onTabClick, size, tabIcons, height, className }: TabsProps<T>) => import("react/jsx-runtime").JSX.Element;