@true-tech-team/react-components 0.0.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 (108) hide show
  1. package/README.md +586 -0
  2. package/index.css +1 -0
  3. package/index.d.ts +15 -0
  4. package/index.js +1 -0
  5. package/index.mjs +5224 -0
  6. package/lib/assets/icons/index.d.ts +105 -0
  7. package/lib/components/buttons/Button/Button.d.ts +49 -0
  8. package/lib/components/buttons/Button/index.d.ts +3 -0
  9. package/lib/components/buttons/IconButton/IconButton.d.ts +48 -0
  10. package/lib/components/buttons/IconButton/index.d.ts +3 -0
  11. package/lib/components/buttons/index.d.ts +2 -0
  12. package/lib/components/display/Icon/Icon.d.ts +43 -0
  13. package/lib/components/display/Icon/index.d.ts +3 -0
  14. package/lib/components/display/index.d.ts +1 -0
  15. package/lib/components/forms/FormBuilder/FormBuilder.d.ts +109 -0
  16. package/lib/components/forms/FormBuilder/hooks/index.d.ts +2 -0
  17. package/lib/components/forms/FormBuilder/hooks/useFormState.d.ts +5 -0
  18. package/lib/components/forms/FormBuilder/hooks/useFormValidation.d.ts +11 -0
  19. package/lib/components/forms/FormBuilder/index.d.ts +4 -0
  20. package/lib/components/forms/FormBuilder/types.d.ts +193 -0
  21. package/lib/components/forms/index.d.ts +1 -0
  22. package/lib/components/index.d.ts +50 -0
  23. package/lib/components/inputs/Autocomplete/Autocomplete.d.ts +109 -0
  24. package/lib/components/inputs/Autocomplete/index.d.ts +2 -0
  25. package/lib/components/inputs/Checkbox/Checkbox.d.ts +85 -0
  26. package/lib/components/inputs/Checkbox/index.d.ts +2 -0
  27. package/lib/components/inputs/ColorPicker/ColorPicker.d.ts +82 -0
  28. package/lib/components/inputs/ColorPicker/index.d.ts +2 -0
  29. package/lib/components/inputs/DatePicker/DatePicker.d.ts +81 -0
  30. package/lib/components/inputs/DatePicker/index.d.ts +2 -0
  31. package/lib/components/inputs/DateRangePicker/DateRangePicker.d.ts +115 -0
  32. package/lib/components/inputs/DateRangePicker/index.d.ts +2 -0
  33. package/lib/components/inputs/FilePicker/FilePicker.d.ts +101 -0
  34. package/lib/components/inputs/FilePicker/index.d.ts +2 -0
  35. package/lib/components/inputs/Input/Input.d.ts +171 -0
  36. package/lib/components/inputs/Input/index.d.ts +3 -0
  37. package/lib/components/inputs/NumberInput/NumberInput.d.ts +18 -0
  38. package/lib/components/inputs/NumberInput/index.d.ts +2 -0
  39. package/lib/components/inputs/PhoneInput/PhoneInput.d.ts +87 -0
  40. package/lib/components/inputs/PhoneInput/index.d.ts +2 -0
  41. package/lib/components/inputs/Radio/Radio.d.ts +45 -0
  42. package/lib/components/inputs/Radio/RadioGroup.d.ts +88 -0
  43. package/lib/components/inputs/Radio/index.d.ts +4 -0
  44. package/lib/components/inputs/Rating/Rating.d.ts +22 -0
  45. package/lib/components/inputs/Rating/index.d.ts +2 -0
  46. package/lib/components/inputs/Select/Select.d.ts +142 -0
  47. package/lib/components/inputs/Select/index.d.ts +2 -0
  48. package/lib/components/inputs/Slider/Slider.d.ts +29 -0
  49. package/lib/components/inputs/Slider/index.d.ts +2 -0
  50. package/lib/components/inputs/TagInput/TagInput.d.ts +101 -0
  51. package/lib/components/inputs/TagInput/index.d.ts +2 -0
  52. package/lib/components/inputs/Textarea/Textarea.d.ts +90 -0
  53. package/lib/components/inputs/Textarea/index.d.ts +2 -0
  54. package/lib/components/inputs/Toggle/Toggle.d.ts +69 -0
  55. package/lib/components/inputs/Toggle/index.d.ts +2 -0
  56. package/lib/components/inputs/index.d.ts +16 -0
  57. package/lib/components/overlays/Dropdown/Dropdown.d.ts +84 -0
  58. package/lib/components/overlays/Dropdown/index.d.ts +2 -0
  59. package/lib/components/overlays/Menu/Menu.d.ts +70 -0
  60. package/lib/components/overlays/Menu/MenuContext.d.ts +68 -0
  61. package/lib/components/overlays/Menu/MenuDivider.d.ts +10 -0
  62. package/lib/components/overlays/Menu/MenuGroup.d.ts +20 -0
  63. package/lib/components/overlays/Menu/MenuItem.d.ts +42 -0
  64. package/lib/components/overlays/Menu/MenuList.d.ts +16 -0
  65. package/lib/components/overlays/Menu/index.d.ts +12 -0
  66. package/lib/components/overlays/Popover/Popover.d.ts +74 -0
  67. package/lib/components/overlays/Popover/index.d.ts +2 -0
  68. package/lib/components/overlays/Portal/Portal.d.ts +24 -0
  69. package/lib/components/overlays/Portal/index.d.ts +2 -0
  70. package/lib/components/overlays/Tooltip/Tooltip.d.ts +51 -0
  71. package/lib/components/overlays/Tooltip/index.d.ts +2 -0
  72. package/lib/components/overlays/index.d.ts +5 -0
  73. package/lib/contexts/ThemeContext/ThemeContext.d.ts +40 -0
  74. package/lib/contexts/ThemeContext/index.d.ts +2 -0
  75. package/lib/contexts/index.d.ts +2 -0
  76. package/lib/decorators/ComponentDecorator/ComponentDecorator.d.ts +57 -0
  77. package/lib/decorators/ComponentDecorator/index.d.ts +3 -0
  78. package/lib/decorators/index.d.ts +2 -0
  79. package/lib/hooks/index.d.ts +11 -0
  80. package/lib/hooks/useClickOutside/index.d.ts +1 -0
  81. package/lib/hooks/useClickOutside/useClickOutside.d.ts +9 -0
  82. package/lib/hooks/useDebounce/index.d.ts +1 -0
  83. package/lib/hooks/useDebounce/useDebounce.d.ts +10 -0
  84. package/lib/hooks/useEscapeKey/index.d.ts +1 -0
  85. package/lib/hooks/useEscapeKey/useEscapeKey.d.ts +9 -0
  86. package/lib/hooks/useFocusTrap/index.d.ts +1 -0
  87. package/lib/hooks/useFocusTrap/useFocusTrap.d.ts +8 -0
  88. package/lib/hooks/useHover/index.d.ts +2 -0
  89. package/lib/hooks/useHover/useHover.d.ts +59 -0
  90. package/lib/hooks/usePopoverPosition/index.d.ts +2 -0
  91. package/lib/hooks/usePopoverPosition/usePopoverPosition.d.ts +58 -0
  92. package/lib/hooks/usePortal/index.d.ts +2 -0
  93. package/lib/hooks/usePortal/usePortal.d.ts +23 -0
  94. package/lib/hooks/useTheme/index.d.ts +1 -0
  95. package/lib/providers/GlobalProvider/GlobalProvider.d.ts +56 -0
  96. package/lib/providers/GlobalProvider/index.d.ts +3 -0
  97. package/lib/providers/index.d.ts +2 -0
  98. package/lib/types/component.types.d.ts +129 -0
  99. package/lib/types/index.d.ts +2 -0
  100. package/lib/types/theme.types.d.ts +139 -0
  101. package/lib/utils/colorUtils.d.ts +71 -0
  102. package/lib/utils/dateUtils.d.ts +91 -0
  103. package/lib/utils/dom.d.ts +50 -0
  104. package/lib/utils/index.d.ts +5 -0
  105. package/lib/utils/positioning.d.ts +59 -0
  106. package/lib/utils/theme-utils.d.ts +105 -0
  107. package/lib/utils/validation.d.ts +120 -0
  108. package/package.json +55 -0
package/README.md ADDED
@@ -0,0 +1,586 @@
1
+ # @true-tech-team/ui-components
2
+
3
+ A comprehensive React component library built with TypeScript, SCSS Modules, and featuring a robust theming system with dark/light mode support.
4
+
5
+ ## Features
6
+
7
+ - 🎨 **Comprehensive Theming** - 37 color families with 10 shades each (370+ colors)
8
+ - 🌓 **Dark/Light Mode** - Built-in theme switching with CSS variables
9
+ - 📏 **4px Grid System** - Consistent spacing throughout
10
+ - 🎯 **Type-Safe** - Full TypeScript support with comprehensive types
11
+ - 🧩 **Component Library** - Reusable, customizable components
12
+ - 🎭 **Icon System** - SVG-based icons with easy customization
13
+ - 🛠️ **Utility Classes** - 500+ utility classes for rapid development
14
+ - 📦 **Tree-Shakeable** - Optimized bundle sizes
15
+ - ♿ **Accessible** - Built with accessibility in mind
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @true-tech-team/ui-components
21
+ ```
22
+
23
+ ## Quick Start
24
+
25
+ ### Wrap your app with GlobalProvider
26
+
27
+ ```tsx
28
+ import { GlobalProvider } from '@true-tech-team/ui-components';
29
+
30
+ function App() {
31
+ return (
32
+ <GlobalProvider themeConfig={{ mode: 'light' }}>
33
+ <YourApp />
34
+ </GlobalProvider>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ### Use components
40
+
41
+ ```tsx
42
+ import { Button, Icon } from '@true-tech-team/ui-components';
43
+
44
+ function MyComponent() {
45
+ return (
46
+ <div>
47
+ <Button variant="primary" size="md">
48
+ Click me
49
+ </Button>
50
+
51
+ <Button
52
+ variant="outline"
53
+ startIcon={<Icon name="check" size={16} />}
54
+ >
55
+ Save
56
+ </Button>
57
+ </div>
58
+ );
59
+ }
60
+ ```
61
+
62
+ ## Components
63
+
64
+ ### Buttons
65
+
66
+ #### Button
67
+ Versatile button component with multiple variants and sizes.
68
+
69
+ ```tsx
70
+ <Button variant="primary" size="md" onClick={() => console.log('clicked')}>
71
+ Click me
72
+ </Button>
73
+
74
+ <Button variant="outline" startIcon={<Icon name="check" />}>
75
+ With Icon
76
+ </Button>
77
+ ```
78
+
79
+ **Variants:** primary, secondary, outline, ghost
80
+ **Sizes:** sm, md, lg
81
+
82
+ #### IconButton
83
+ Button component optimized for icon-only display.
84
+
85
+ ```tsx
86
+ <IconButton aria-label="Close" size="md">
87
+ <Icon name="close" />
88
+ </IconButton>
89
+ ```
90
+
91
+ ### Display
92
+
93
+ #### Icon
94
+ SVG-based icon system with customizable size and color.
95
+
96
+ ```tsx
97
+ <Icon name="check" size={24} color="var(--theme-primary)" />
98
+ ```
99
+
100
+ **Available icons:** chevron-down, chevron-up, chevron-left, chevron-right, close, check, info, warning, error, eye, eye-off
101
+
102
+ ### Inputs
103
+
104
+ #### Input
105
+ Text input with validation, formatting, and various configurations.
106
+
107
+ ```tsx
108
+ <Input
109
+ label="Email"
110
+ type="email"
111
+ placeholder="Enter your email"
112
+ validation={(value) => value.includes('@') ? { valid: true } : { valid: false, message: 'Invalid email' }}
113
+ />
114
+ ```
115
+
116
+ #### Autocomplete
117
+ Input with dropdown suggestions and filtering.
118
+
119
+ ```tsx
120
+ <Autocomplete
121
+ options={[
122
+ { value: '1', label: 'Option 1' },
123
+ { value: '2', label: 'Option 2' }
124
+ ]}
125
+ placeholder="Search..."
126
+ />
127
+ ```
128
+
129
+ #### Select
130
+ Dropdown select component with search and custom rendering.
131
+
132
+ ```tsx
133
+ <Select
134
+ options={[
135
+ { value: 'us', label: 'United States' },
136
+ { value: 'ca', label: 'Canada' }
137
+ ]}
138
+ placeholder="Select country"
139
+ />
140
+ ```
141
+
142
+ #### Checkbox
143
+ Checkbox input with labels and indeterminate state.
144
+
145
+ ```tsx
146
+ <Checkbox label="Accept terms" checked={accepted} onChange={setAccepted} />
147
+ ```
148
+
149
+ #### Radio & RadioGroup
150
+ Radio button inputs with group management.
151
+
152
+ ```tsx
153
+ <RadioGroup value={selected} onChange={setSelected}>
154
+ <Radio value="option1" label="Option 1" />
155
+ <Radio value="option2" label="Option 2" />
156
+ </RadioGroup>
157
+ ```
158
+
159
+ #### Toggle
160
+ Switch/toggle component for boolean states.
161
+
162
+ ```tsx
163
+ <Toggle checked={enabled} onChange={setEnabled} label="Enable feature" />
164
+ ```
165
+
166
+ #### Textarea
167
+ Multi-line text input with auto-resize.
168
+
169
+ ```tsx
170
+ <Textarea
171
+ label="Description"
172
+ placeholder="Enter description"
173
+ rows={4}
174
+ maxLength={500}
175
+ />
176
+ ```
177
+
178
+ #### NumberInput
179
+ Numeric input with increment/decrement controls.
180
+
181
+ ```tsx
182
+ <NumberInput
183
+ label="Quantity"
184
+ min={0}
185
+ max={100}
186
+ step={1}
187
+ value={quantity}
188
+ onChange={setQuantity}
189
+ />
190
+ ```
191
+
192
+ #### PhoneInput
193
+ International phone number input with country selection.
194
+
195
+ ```tsx
196
+ <PhoneInput
197
+ value={phone}
198
+ onChange={setPhone}
199
+ defaultCountry="US"
200
+ />
201
+ ```
202
+
203
+ #### Slider
204
+ Range slider with marks and custom formatting.
205
+
206
+ ```tsx
207
+ <Slider
208
+ min={0}
209
+ max={100}
210
+ value={volume}
211
+ onChange={setVolume}
212
+ marks={[0, 25, 50, 75, 100]}
213
+ />
214
+ ```
215
+
216
+ #### Rating
217
+ Star rating input component.
218
+
219
+ ```tsx
220
+ <Rating value={rating} onChange={setRating} max={5} />
221
+ ```
222
+
223
+ #### TagInput
224
+ Input for managing multiple tags.
225
+
226
+ ```tsx
227
+ <TagInput
228
+ tags={tags}
229
+ onChange={setTags}
230
+ placeholder="Add tag..."
231
+ />
232
+ ```
233
+
234
+ #### FilePicker
235
+ File upload component with drag-and-drop support.
236
+
237
+ ```tsx
238
+ <FilePicker
239
+ accept=".pdf,.doc,.docx"
240
+ maxSize={5 * 1024 * 1024}
241
+ onChange={(files) => console.log(files)}
242
+ />
243
+ ```
244
+
245
+ #### ColorPicker
246
+ Color selection with multiple format support (hex, rgb, hsl).
247
+
248
+ ```tsx
249
+ <ColorPicker
250
+ value={color}
251
+ onChange={setColor}
252
+ format="hex"
253
+ />
254
+ ```
255
+
256
+ #### DatePicker
257
+ Single date selection with calendar interface.
258
+
259
+ ```tsx
260
+ <DatePicker
261
+ value={date}
262
+ onChange={setDate}
263
+ minDate={new Date()}
264
+ />
265
+ ```
266
+
267
+ #### DateRangePicker
268
+ Date range selection with presets.
269
+
270
+ ```tsx
271
+ <DateRangePicker
272
+ startDate={startDate}
273
+ endDate={endDate}
274
+ onChange={(start, end) => {
275
+ setStartDate(start);
276
+ setEndDate(end);
277
+ }}
278
+ presets={[
279
+ { label: 'Last 7 days', value: { start: -7, end: 0 } }
280
+ ]}
281
+ />
282
+ ```
283
+
284
+ ### Overlays
285
+
286
+ #### Portal
287
+ Render children in a different part of the DOM.
288
+
289
+ ```tsx
290
+ <Portal>
291
+ <div>This renders at document.body</div>
292
+ </Portal>
293
+ ```
294
+
295
+ #### Popover
296
+ Floating content positioned relative to a trigger.
297
+
298
+ ```tsx
299
+ <Popover
300
+ trigger={<Button>Open Popover</Button>}
301
+ content={<div>Popover content</div>}
302
+ />
303
+ ```
304
+
305
+ #### Tooltip
306
+ Hover tooltip with customizable positioning.
307
+
308
+ ```tsx
309
+ <Tooltip content="Helpful information" position="top">
310
+ <Button>Hover me</Button>
311
+ </Tooltip>
312
+ ```
313
+
314
+ #### Dropdown
315
+ Dropdown menu with trigger and content.
316
+
317
+ ```tsx
318
+ <Dropdown
319
+ trigger={<Button>Options</Button>}
320
+ content={
321
+ <MenuList>
322
+ <MenuItem>Action 1</MenuItem>
323
+ <MenuItem>Action 2</MenuItem>
324
+ </MenuList>
325
+ }
326
+ />
327
+ ```
328
+
329
+ #### Menu
330
+ Flexible menu system with items, groups, and dividers.
331
+
332
+ ```tsx
333
+ <Menu>
334
+ <MenuList>
335
+ <MenuItem onClick={() => console.log('Edit')}>Edit</MenuItem>
336
+ <MenuItem onClick={() => console.log('Delete')}>Delete</MenuItem>
337
+ <MenuDivider />
338
+ <MenuGroup label="More options">
339
+ <MenuItem>Settings</MenuItem>
340
+ </MenuGroup>
341
+ </MenuList>
342
+ </Menu>
343
+ ```
344
+
345
+ ### Forms
346
+
347
+ #### FormBuilder
348
+ Dynamic form builder with validation and state management.
349
+
350
+ ```tsx
351
+ <FormBuilder
352
+ fields={[
353
+ {
354
+ name: 'email',
355
+ label: 'Email',
356
+ type: 'email',
357
+ required: true,
358
+ validation: { pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/ }
359
+ },
360
+ {
361
+ name: 'password',
362
+ label: 'Password',
363
+ type: 'password',
364
+ required: true
365
+ }
366
+ ]}
367
+ onSubmit={(values) => console.log(values)}
368
+ />
369
+ ```
370
+
371
+ ## Theming
372
+
373
+ ### Theme Configuration
374
+
375
+ The library includes a comprehensive theming system with 37 color families and 10 shades each, providing 370+ colors out of the box.
376
+
377
+ ```tsx
378
+ import { GlobalProvider } from '@true-tech-team/ui-components';
379
+
380
+ function App() {
381
+ return (
382
+ <GlobalProvider
383
+ themeConfig={{
384
+ mode: 'light',
385
+ // Optional: override theme values
386
+ overrides: {
387
+ colors: {
388
+ primary: '#007bff'
389
+ }
390
+ }
391
+ }}
392
+ >
393
+ <YourApp />
394
+ </GlobalProvider>
395
+ );
396
+ }
397
+ ```
398
+
399
+ ### Toggle Theme
400
+
401
+ ```tsx
402
+ import { useTheme } from '@true-tech-team/ui-components';
403
+
404
+ function ThemeToggle() {
405
+ const { mode, toggleMode } = useTheme();
406
+ return <button onClick={toggleMode}>Current: {mode}</button>;
407
+ }
408
+ ```
409
+
410
+ ### CSS Variables
411
+
412
+ All theme values are exposed as CSS variables for easy customization:
413
+
414
+ ```css
415
+ .custom-element {
416
+ color: var(--theme-primary);
417
+ background: var(--theme-surface);
418
+ border-radius: var(--theme-radius-md);
419
+ padding: var(--theme-spacing-4);
420
+ }
421
+ ```
422
+
423
+ ### Utility Classes
424
+
425
+ **Spacing (4px grid):**
426
+ ```html
427
+ <div class="m-4 p-2">Margin 16px, Padding 8px</div>
428
+ <div class="mt-2 mb-4 px-6">Margin top 8px, bottom 16px, padding x 24px</div>
429
+ ```
430
+
431
+ **Flexbox:**
432
+ ```html
433
+ <div class="flex items-center justify-between gap-4">...</div>
434
+ <div class="flex-col items-start">...</div>
435
+ ```
436
+
437
+ **Grid:**
438
+ ```html
439
+ <div class="grid grid-cols-3 gap-4">...</div>
440
+ ```
441
+
442
+ **Colors:**
443
+ ```html
444
+ <div class="bg-primary text-on-primary">...</div>
445
+ <div class="bg-surface text-on-surface">...</div>
446
+ ```
447
+
448
+ **Typography:**
449
+ ```html
450
+ <h1 class="text-2xl font-bold">Heading</h1>
451
+ <p class="text-sm text-secondary">Small text</p>
452
+ ```
453
+
454
+ ## Utility Functions
455
+
456
+ ### Theme Utils
457
+
458
+ ```tsx
459
+ import { getThemeValue, setThemeValue, pxToRem, gridSpacing } from '@true-tech-team/ui-components';
460
+
461
+ // Get theme values
462
+ const primaryColor = getThemeValue('--theme-primary');
463
+
464
+ // Convert pixels to rem
465
+ const remValue = pxToRem(16); // '1rem'
466
+
467
+ // Grid-based spacing
468
+ const spacing = gridSpacing(4); // '16px' (4 * 4px grid)
469
+ ```
470
+
471
+ ### Color Utils
472
+
473
+ ```tsx
474
+ import {
475
+ hexToRgb,
476
+ rgbToHsl,
477
+ isLightColor,
478
+ getBrightness
479
+ } from '@true-tech-team/ui-components';
480
+
481
+ const rgb = hexToRgb('#ff0000'); // { r: 255, g: 0, b: 0 }
482
+ const hsl = rgbToHsl(255, 0, 0); // { h: 0, s: 100, l: 50 }
483
+ const isLight = isLightColor('#ffffff'); // true
484
+ ```
485
+
486
+ ### Date Utils
487
+
488
+ ```tsx
489
+ import {
490
+ formatDate,
491
+ getDaysInMonth,
492
+ isDateInRange,
493
+ addDays
494
+ } from '@true-tech-team/ui-components';
495
+
496
+ const formatted = formatDate(new Date(), 'YYYY-MM-DD');
497
+ const daysInMonth = getDaysInMonth(2024, 0); // January 2024
498
+ const inRange = isDateInRange(date, startDate, endDate);
499
+ const futureDate = addDays(new Date(), 7);
500
+ ```
501
+
502
+ ### Validation Utils
503
+
504
+ ```tsx
505
+ import { validators, combineValidators } from '@true-tech-team/ui-components';
506
+
507
+ const emailValidator = validators.email();
508
+ const requiredValidator = validators.required('This field is required');
509
+ const combined = combineValidators([requiredValidator, emailValidator]);
510
+
511
+ const result = combined('test@example.com');
512
+ ```
513
+
514
+ ## Development
515
+
516
+ ### Building
517
+
518
+ ```bash
519
+ # Build library for production
520
+ nx build ui-components --configuration=production
521
+
522
+ # Build for development
523
+ nx build ui-components --configuration=development
524
+ ```
525
+
526
+ The build output will be in `dist/libs/ui-components/`.
527
+
528
+ ### Testing
529
+
530
+ ```bash
531
+ # Run tests
532
+ nx test ui-components
533
+
534
+ # Run tests in watch mode
535
+ nx test ui-components --watch
536
+
537
+ # Run tests with coverage
538
+ nx test ui-components --coverage
539
+ ```
540
+
541
+ ### Linting
542
+
543
+ ```bash
544
+ # Lint
545
+ nx lint ui-components
546
+
547
+ # Lint and fix
548
+ nx lint ui-components --fix
549
+ ```
550
+
551
+ ### Storybook
552
+
553
+ View and interact with all components in Storybook:
554
+
555
+ ```bash
556
+ # Start Storybook dev server
557
+ nx storybook ui-components
558
+
559
+ # Build Storybook static site
560
+ nx build-storybook ui-components
561
+ ```
562
+
563
+ Storybook will be available at [http://localhost:6006](http://localhost:6006).
564
+
565
+ ## Browser Support
566
+
567
+ - Chrome (latest)
568
+ - Firefox (latest)
569
+ - Safari (latest)
570
+ - Edge (latest)
571
+
572
+ ## TypeScript
573
+
574
+ This library is written in TypeScript and includes type definitions. All components, props, and utilities are fully typed for the best development experience.
575
+
576
+ ## Contributing
577
+
578
+ Contributions are welcome! Please ensure all tests pass and follow the existing code style.
579
+
580
+ ## Repository
581
+
582
+ [https://github.com/true-tech-team/true-tech-team](https://github.com/true-tech-team/true-tech-team)
583
+
584
+ ## License
585
+
586
+ MIT