@vsn-ux/ngx-gaia 0.9.2 → 0.9.4

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/DOCS.md ADDED
@@ -0,0 +1,951 @@
1
+ # ngx-gaia
2
+
3
+ Angular component library providing common Gaia UI components built with Angular 20+ features including signals and new input syntax. Components use `ga-` prefix and require `@angular/cdk`, `@vsn-ux/gaia-styles`, and `lucide-angular` dependencies.
4
+
5
+ ## Alert
6
+
7
+ Alert components for displaying contextual information with optional progress indicators and dismissal functionality.
8
+
9
+ **Angular module: GaAlertModule**
10
+
11
+ ### `<ga-alert>`
12
+
13
+ Alert component for displaying notifications and contextual information.
14
+
15
+ #### Inputs:
16
+
17
+ - `variant: GaAlertVariant` - Alert type ('brand' | 'information' | 'error' | 'warning' | 'success', default: 'brand')
18
+ - `icon: GaIconData` - Custom icon override
19
+ - `dismissible: boolean` - Show dismiss button (default: false)
20
+ - `progress: number | 'indeterminate'` - Progress value 0-100 or indeterminate state
21
+ - `progressLabel: string` - Accessible label for progress bar
22
+ - `progressLabelledBy: string` - ID of element labeling progress bar
23
+
24
+ #### Outputs:
25
+
26
+ - `dismiss()` - Emitted when dismiss button is clicked
27
+
28
+ ### `<ga-alert-title>`
29
+
30
+ Alert title component for structured alert content.
31
+
32
+ ### `<ga-alert-title-actions>`
33
+
34
+ Alert title actions component for action buttons in alert header.
35
+
36
+ ### GaAlertI18n
37
+
38
+ Service for alert internationalization.
39
+
40
+ #### Methods:
41
+
42
+ - `dismissLabel: string` - Label for dismiss button
43
+
44
+ ### Providers:
45
+
46
+ - `provideGaAlertI18n(value: GaAlertI18n | (() => GaAlertI18n))` - Configure alert i18n labels
47
+
48
+ ### Examples:
49
+
50
+ ```html
51
+ <ga-alert variant="success" [dismissible]="true" (dismiss)="onDismiss()">
52
+ <ga-alert-title>Success!</ga-alert-title>
53
+ Operation completed successfully.
54
+ </ga-alert>
55
+
56
+ <ga-alert
57
+ variant="information"
58
+ [progress]="75"
59
+ progressLabel="Loading progress"
60
+ >
61
+ Processing data...
62
+ </ga-alert>
63
+ ```
64
+
65
+ ## Badge
66
+
67
+ Badge component for displaying status indicators and labels.
68
+
69
+ **Angular module: GaBadgeModule**
70
+
71
+ ### `<ga-badge>`
72
+
73
+ #### Inputs:
74
+
75
+ - `variant: 'default' | 'default-inverted' | 'information' | 'error' | 'warning' | 'success' | 'muted' | 'disabled'` - Badge variant (default: 'default')
76
+ - `type: 'text' | 'dot'` - Badge type (default: 'text')
77
+
78
+ ### Examples:
79
+
80
+ Badge variants
81
+
82
+ ```html
83
+ <ga-badge variant="information" type="text">42</ga-badge>
84
+ <ga-badge variant="error" type="dot"></ga-badge>
85
+ ```
86
+
87
+ ## Button
88
+
89
+ Button directives for interactive elements with loading states and variants.
90
+
91
+ **Angular module: GaButtonModule**
92
+
93
+ ### `[gaButton]`
94
+
95
+ Button directive for styling button and anchor elements.
96
+
97
+ #### Inputs:
98
+
99
+ - `gaButton: GaButtonType` - Button variant ('primary' | 'secondary' | 'ghost' | 'transparent')
100
+ - `gaButtonLoading: boolean` - Show loading state (default: false)
101
+ - `gaButtonLoadingLabel: string` - Loading state label
102
+ - `disabled: boolean` - Disabled state
103
+
104
+ ### `[gaIconButton]`
105
+
106
+ Icon button directive for buttons with icons.
107
+
108
+ #### Inputs:
109
+
110
+ - `gaIconButton: GaIconData` - Icon to display (required)
111
+ - `gaIconButtonVariant: GaIconButtonVariant` - Button variant (default: 'secondary')
112
+ - `gaIconButtonLoading: boolean` - Show loading state (default: false)
113
+ - `gaIconButtonLoadingLabel: string` - Loading state label
114
+ - `disabled: boolean` - Disabled state
115
+
116
+ ### GaButtonI18n
117
+
118
+ Service for button internationalization.
119
+
120
+ #### Methods:
121
+
122
+ - `loadingLabel: string` - Default loading label
123
+
124
+ ### Providers:
125
+
126
+ - `provideGaButtonI18n(value: GaButtonI18n | (() => GaButtonI18n))` - Configure button i18n labels
127
+
128
+ ### Examples:
129
+
130
+ ```html
131
+ <button gaButton="primary">Primary Button</button>
132
+ <button gaButton="secondary" [gaButtonLoading]="isLoading">Save</button>
133
+ <button [gaIconButton]="PlusIcon" gaIconButtonVariant="primary">Add</button>
134
+ ```
135
+
136
+ ## Card
137
+
138
+ Card component for grouping related content.
139
+
140
+ **Angular module: GaCardModule**
141
+
142
+ ### `<ga-card>`
143
+
144
+ #### Inputs:
145
+
146
+ - `selectable: boolean` - Can be selected (default: false)
147
+ - `selected: boolean` - Is selected (default: false)
148
+ - `disabled: boolean` - Disabled state (default: false)
149
+
150
+ ### Examples:
151
+
152
+ Selectable card
153
+
154
+ ```html
155
+ <ga-card selectable [selected]="isSelected">
156
+ <h3>Card Title</h3>
157
+ <p>Card content</p>
158
+ </ga-card>
159
+ ```
160
+
161
+ ## Checkbox
162
+
163
+ Checkbox component for boolean selections.
164
+
165
+ **Angular module: GaCheckboxModule**
166
+
167
+ ### `<ga-checkbox>`
168
+
169
+ #### Inputs:
170
+
171
+ - `value: string | null` - Input value (default: null)
172
+ - `checked: boolean` - Checked state (default: false)
173
+ - `indeterminate: boolean` - Indeterminate state (default: false)
174
+ - `name: string | null` - Input name (default: null)
175
+ - `id: string | null` - Input ID (default: null)
176
+ - `disabled: boolean` - Disabled state (default: false)
177
+ - `required: boolean` - Required field (default: false)
178
+
179
+ #### Outputs:
180
+
181
+ - `change(value: boolean)` - Change event
182
+
183
+ ### Examples:
184
+
185
+ Basic checkbox
186
+
187
+ ```html
188
+ <ga-checkbox [(checked)]="isChecked">Accept terms</ga-checkbox>
189
+ <ga-checkbox [(ngModel)]="value" [indeterminate]="someChecked"
190
+ >Select all</ga-checkbox
191
+ >
192
+ ```
193
+
194
+ ## Datepicker
195
+
196
+ Comprehensive datepicker with input integration, toggles, and multiple value adapters.
197
+
198
+ **Angular module: GaDatepickerModule**
199
+
200
+ ### `<ga-datepicker>`
201
+
202
+ Inline datepicker component for date selection.
203
+
204
+ #### Inputs:
205
+
206
+ - `value: any` - Selected date value (model binding)
207
+ - `min: any` - Minimum selectable date
208
+ - `max: any` - Maximum selectable date
209
+
210
+ #### Outputs:
211
+
212
+ - `valueChange(value: any)` - Emitted when date is selected
213
+
214
+ ### `[gaDatepicker]`
215
+
216
+ Input directive for datepicker integration.
217
+
218
+ #### Inputs:
219
+
220
+ - `gaDatepicker: GaDatepickerComponent` - Associated datepicker instance
221
+ - `min: any` - Minimum date constraint
222
+ - `max: any` - Maximum date constraint
223
+
224
+ ### `<ga-datepicker-toggle>`
225
+
226
+ Toggle button component for opening datepicker.
227
+
228
+ #### Inputs:
229
+
230
+ - `for: GaDatepickerComponent` - Associated datepicker instance
231
+
232
+ ### GaDatepickerI18n
233
+
234
+ Service for datepicker internationalization.
235
+
236
+ #### Methods:
237
+
238
+ - `weekDays: string[]` - Week day labels
239
+ - `monthNames: string[]` - Full month names
240
+ - `monthNamesShort: string[]` - Abbreviated month names
241
+
242
+ ### GaDatepickerParserFormatter
243
+
244
+ Service for parsing and formatting date strings.
245
+
246
+ #### Methods:
247
+
248
+ - `parse(value: string): any` - Parse string to date value
249
+ - `format(value: any): string` - Format date value to string
250
+
251
+ ### GaDatepickerValueAdapter
252
+
253
+ Abstract service for converting between external and internal date representations.
254
+
255
+ ### Value Adapters:
256
+
257
+ - `GaDateStructAdapter` - Works with `{year, month, day}` objects
258
+ - `GaDateNativeUtcAdapter` - Works with native Date objects in UTC
259
+ - `GaDateNativeUtcIsoAdapter` - Works with ISO date strings
260
+
261
+ ### Providers:
262
+
263
+ - `provideGaDatepickerI18n(value: GaDatepickerI18n)` - Configure datepicker i18n
264
+ - `provideGaDatepickerParserFormatter(value: GaDatepickerParserFormatter)` - Configure parser/formatter
265
+ - `provideGaDatepickerValueAdapter<T>(value: GaDatepickerValueAdapter<T>)` - Configure value adapter
266
+
267
+ ### Examples:
268
+
269
+ ```html
270
+ <ga-datepicker
271
+ [(value)]="selectedDate"
272
+ [min]="minDate"
273
+ [max]="maxDate"
274
+ ></ga-datepicker>
275
+
276
+ <ga-form-field>
277
+ <label gaFieldLabel>Select Date</label>
278
+ <input gaInput [gaDatepicker]="picker" [(ngModel)]="date" />
279
+ <ga-datepicker-toggle [for]="picker"></ga-datepicker-toggle>
280
+ </ga-form-field>
281
+ <ga-datepicker #picker></ga-datepicker>
282
+ ```
283
+
284
+ ## Form Field
285
+
286
+ Form field components for creating accessible form inputs with labels and error handling.
287
+
288
+ **Angular module: GaFormFieldModule**
289
+
290
+ ### `<ga-form-field>`
291
+
292
+ Form field wrapper component.
293
+
294
+ ### `<ga-label>`
295
+
296
+ Form label component.
297
+
298
+ #### Inputs:
299
+
300
+ - `state: string` - Additional state text
301
+ - `definition: string | TemplateRef` - Help text or template
302
+
303
+ ### `<ga-info>`
304
+
305
+ Information text component.
306
+
307
+ ### `[gaFormControl]`
308
+
309
+ Form control directive.
310
+
311
+ ### `[gaError]`
312
+
313
+ Error template directive.
314
+
315
+ ### `[gaFormControlErrors]`
316
+
317
+ Custom errors directive for adding client-side validation errors.
318
+
319
+ #### Inputs:
320
+
321
+ - `gaFormControlErrors: ValidationErrors` - Custom validation errors (required)
322
+
323
+ ### `[gaLabelledByFormField]`
324
+
325
+ Directive for connecting form controls to form field labels.
326
+
327
+ #### Inputs:
328
+
329
+ - `aria-labelledby: string | null` - Override aria-labelledby attribute
330
+
331
+ ### Examples:
332
+
333
+ Complete form field
334
+
335
+ ```html
336
+ <ga-form-field>
337
+ <ga-label state="(optional)" definition="Help text">Field Label</ga-label>
338
+ <input gaFormControl gaInput [(ngModel)]="value" required />
339
+ <ga-info>Additional information</ga-info>
340
+ <ng-template gaError="required">This field is required</ng-template>
341
+ </ga-form-field>
342
+ ```
343
+
344
+ Custom validation errors
345
+
346
+ ```html
347
+ <ga-form-field>
348
+ <ga-label>Password</ga-label>
349
+ <input
350
+ gaFormControl
351
+ gaInput
352
+ [gaFormControlErrors]="{ weakPassword: isPasswordWeak ? 'Password too weak' : null }"
353
+ [(ngModel)]="password"
354
+ />
355
+ <ng-template gaError="weakPassword" let-error>{{ error }}</ng-template>
356
+ </ga-form-field>
357
+ ```
358
+
359
+ Form control with custom labelling
360
+
361
+ ```html
362
+ <input gaInput gaLabelledByFormField [(ngModel)]="value" />
363
+ ```
364
+
365
+ ## Icon
366
+
367
+ Icon component for displaying Lucide icons.
368
+
369
+ **Angular module: GaIconModule**
370
+
371
+ ### `<ga-icon>`
372
+
373
+ #### Inputs:
374
+
375
+ - `icon: GaIconData | string` - Lucide icon (required)
376
+ - `size: string | number` - Icon size (default: 24)
377
+ - `color: string` - Icon color
378
+ - `strokeWidth: number` - Stroke width
379
+
380
+ ### Examples:
381
+
382
+ Icon with custom styling
383
+
384
+ ```html
385
+ <ga-icon [icon]="icons.Settings" size="32" color="var(--ga-color-primary)" />
386
+ ```
387
+
388
+ ## Input
389
+
390
+ Input components and directives for text input fields.
391
+
392
+ **Angular module: GaInputModule**
393
+
394
+ ### `[gaInput]`
395
+
396
+ Input directive for styling input elements.
397
+
398
+ #### Inputs:
399
+
400
+ - `id: string` - Element ID
401
+ - `disabled: boolean` - Disabled state
402
+ - `invalid: boolean` - Invalid state styling
403
+
404
+ ### `<ga-input>`
405
+
406
+ Input component wrapper.
407
+
408
+ ### Examples:
409
+
410
+ ```html
411
+ <input gaInput type="text" placeholder="Enter text" [(ngModel)]="value" />
412
+
413
+ <ga-input>
414
+ <input type="text" placeholder="Wrapped input" [(ngModel)]="value" />
415
+ </ga-input>
416
+ ```
417
+
418
+ ## Link
419
+
420
+ Link directive for styled navigation links.
421
+
422
+ **Angular module: GaLinkModule**
423
+
424
+ ### `[gaLink]`
425
+
426
+ Link directive.
427
+
428
+ #### Inputs:
429
+
430
+ - `gaLink: 'inline' | ''` - Link variant (default: '')
431
+ - `gaLinkSize: 'small' | 'medium' | 'large'` - Link size (default: 'medium')
432
+ - `gaLinkDisabled: boolean` - Disabled state (default: false)
433
+ - `gaLinkLeadingIcon: GaIconData | string` - Leading icon (default: '')
434
+ - `gaLinkTrailingIcon: GaIconData | string` - Trailing icon (default: '')
435
+
436
+ ### Examples:
437
+
438
+ Link variants
439
+
440
+ ```html
441
+ <a gaLink href="/page">Standard link</a>
442
+ <a gaLink="inline" href="/page">Inline link</a>
443
+ <a gaLink [gaLinkTrailingIcon]="icons.ExternalLink" href="/external"
444
+ >External</a
445
+ >
446
+ ```
447
+
448
+ ## Menu
449
+
450
+ Menu components for dropdown navigation and actions.
451
+
452
+ **Angular module: GaMenuModule**
453
+
454
+ ### `<ga-menu>`
455
+
456
+ Menu container component.
457
+
458
+ ### `<ga-menu-title>`
459
+
460
+ Menu title component.
461
+
462
+ ### `[gaMenuItem]`
463
+
464
+ Menu item directive.
465
+
466
+ #### Inputs:
467
+
468
+ - `gaMenuItemIcon: GaIconData` - Item icon
469
+ - `gaMenuItemDescription: string` - Item description
470
+ - `gaMenuItemShortcut: string` - Keyboard shortcut
471
+
472
+ ### `<ga-menu-separator>`
473
+
474
+ Menu separator component.
475
+
476
+ ### `<ga-menu-trigger-icon>`
477
+
478
+ Trigger icon component.
479
+
480
+ ### `[gaMenuTrigger]`
481
+
482
+ Menu trigger directive.
483
+
484
+ #### Inputs:
485
+
486
+ - `gaMenuTrigger: TemplateRef` - Menu template (required)
487
+
488
+ #### Outputs:
489
+
490
+ - `gaMenuOpened()` - Opened event
491
+ - `gaMenuClosed()` - Closed event
492
+
493
+ ### Examples:
494
+
495
+ Menu with trigger
496
+
497
+ ```html
498
+ <button gaButton [gaMenuTrigger]="menu">Menu <ga-menu-trigger-icon /></button>
499
+ <ng-template #menu>
500
+ <ga-menu>
501
+ <ga-menu-title>Actions</ga-menu-title>
502
+ <button gaMenuItem [gaMenuItemIcon]="icons.Edit">Edit</button>
503
+ <ga-menu-separator />
504
+ <button gaMenuItem [gaMenuItemIcon]="icons.Trash2">Delete</button>
505
+ </ga-menu>
506
+ </ng-template>
507
+ ```
508
+
509
+ ## Modal
510
+
511
+ Modal service and components for creating overlay dialogs.
512
+
513
+ **Angular module: GaModalModule**
514
+
515
+ ### `<ga-modal>`
516
+
517
+ Base modal component for creating dialog content.
518
+
519
+ #### Inputs:
520
+
521
+ - `data: any` - Modal data passed from service
522
+
523
+ #### Outputs:
524
+
525
+ - `afterClosed(): Observable<any>` - Emitted when modal closes
526
+
527
+ #### Methods:
528
+
529
+ - `close(result?: any): void` - Close the modal with optional result
530
+
531
+ ### `<ga-modal-header>`
532
+
533
+ Modal header component.
534
+
535
+ ### `<ga-modal-content>`
536
+
537
+ Modal content component for main dialog content.
538
+
539
+ ### `<ga-modal-description>`
540
+
541
+ Modal description component for additional context.
542
+
543
+ ### `<ga-modal-actions>`
544
+
545
+ Modal actions component for buttons and controls.
546
+
547
+ ### GaModalService
548
+
549
+ Service for opening and managing modals.
550
+
551
+ #### Methods:
552
+
553
+ - `open<T>(component: ComponentType<T>, data?: any): T` - Open modal with component
554
+ - `closeAll(): void` - Close all open modals
555
+
556
+ ### GaModalRef
557
+
558
+ Reference to an opened modal instance.
559
+
560
+ #### Methods:
561
+
562
+ - `close(result?: any): void` - Close the modal
563
+
564
+ ### GaModalI18n
565
+
566
+ Service for modal internationalization.
567
+
568
+ ### Providers:
569
+
570
+ - `provideGaModalI18n(value: GaModalI18n)` - Configure modal i18n
571
+ - `provideGaModalOptions(options: GaModalOptions)` - Configure modal options
572
+
573
+ ### Examples:
574
+
575
+ ```html
576
+ <ga-modal>
577
+ <ga-modal-header>Confirm Action</ga-modal-header>
578
+ <ga-modal-content>Are you sure you want to proceed?</ga-modal-content>
579
+ <ga-modal-actions>
580
+ <button gaButton="secondary" (click)="close()">Cancel</button>
581
+ <button gaButton="primary" (click)="confirm()">Confirm</button>
582
+ </ga-modal-actions>
583
+ </ga-modal>
584
+ ```
585
+
586
+ ```typescript
587
+ constructor(private modalService: GaModalService) {}
588
+
589
+ openDialog() {
590
+ const modal = this.modalService.open(ConfirmModalComponent, {
591
+ message: 'Are you sure?'
592
+ });
593
+ }
594
+ ```
595
+
596
+ ## Radio
597
+
598
+ Radio button components for single-choice selections.
599
+
600
+ **Angular module: GaRadioModule**
601
+
602
+ ### `<ga-radio-group>`
603
+
604
+ Radio group component.
605
+
606
+ #### Inputs:
607
+
608
+ - `value: any` - Selected value
609
+
610
+ #### Outputs:
611
+
612
+ - `change(value: any)` - Change event
613
+
614
+ ### `<ga-radio-button>`
615
+
616
+ Radio button component.
617
+
618
+ #### Inputs:
619
+
620
+ - `value: any` - Button value
621
+
622
+ ### Examples:
623
+
624
+ Radio group
625
+
626
+ ```html
627
+ <ga-radio-group [(value)]="selectedValue">
628
+ <ga-radio-button value="option1">Option 1</ga-radio-button>
629
+ <ga-radio-button value="option2">Option 2</ga-radio-button>
630
+ <ga-radio-button value="option3">Option 3</ga-radio-button>
631
+ </ga-radio-group>
632
+ ```
633
+
634
+ ## Segmented Control
635
+
636
+ Segmented control components for grouped button selections.
637
+
638
+ **Angular module: GaSegmentedControlModule**
639
+
640
+ ### `<ga-segmented-control>`
641
+
642
+ Segmented control container component.
643
+
644
+ #### Inputs:
645
+
646
+ - `selected: any` - Selected value
647
+
648
+ #### Outputs:
649
+
650
+ - `change(value: any)` - Change event
651
+
652
+ ### `<ga-segmented-control-text-button>`
653
+
654
+ Text button component.
655
+
656
+ #### Inputs:
657
+
658
+ - `value: any` - Button value
659
+
660
+ ### `<ga-segmented-control-icon-button>`
661
+
662
+ Icon button component.
663
+
664
+ #### Inputs:
665
+
666
+ - `value: any` - Button value
667
+ - `icon: GaIconData` - Button icon
668
+
669
+ ### Examples:
670
+
671
+ Text buttons
672
+
673
+ ```html
674
+ <ga-segmented-control [(selected)]="view">
675
+ <ga-segmented-control-text-button value="list"
676
+ >List</ga-segmented-control-text-button
677
+ >
678
+ <ga-segmented-control-text-button value="grid"
679
+ >Grid</ga-segmented-control-text-button
680
+ >
681
+ </ga-segmented-control>
682
+ ```
683
+
684
+ Icon buttons
685
+
686
+ ```html
687
+ <ga-segmented-control [(selected)]="view">
688
+ <ga-segmented-control-icon-button [icon]="icons.List" value="list"
689
+ >List</ga-segmented-control-icon-button
690
+ >
691
+ <ga-segmented-control-icon-button [icon]="icons.Grid" value="grid"
692
+ >Grid</ga-segmented-control-icon-button
693
+ >
694
+ </ga-segmented-control>
695
+ ```
696
+
697
+ ## Select
698
+
699
+ Select components for dropdown selections with search and multi-select capabilities.
700
+
701
+ **Angular module: GaSelectModule**
702
+
703
+ ### `<ga-select>`
704
+
705
+ Select component.
706
+
707
+ #### Inputs:
708
+
709
+ - `value: any` - Selected value (single/multiple)
710
+ - `placeholder: string` - Placeholder text
711
+ - `canSelectNullable: boolean` - Allow null selection
712
+ - `compareWith: (a: any, b: any) => boolean` - Value comparison function
713
+ - `leftIcon: GaIconData` - Left icon
714
+ - `multiple: boolean` - Multiple selection
715
+ - `searchable: boolean` - Enable search
716
+ - `clearable: boolean` - Show clear button
717
+ - `textValue: string` - Search text (searchable mode)
718
+
719
+ ### `<ga-select-dropdown>`
720
+
721
+ Dropdown container component.
722
+
723
+ #### Inputs:
724
+
725
+ - `loading: boolean` - Loading state
726
+
727
+ ### `<ga-option>`
728
+
729
+ Option component.
730
+
731
+ #### Inputs:
732
+
733
+ - `value: any` - Option value
734
+ - `withInput: boolean` - Include input
735
+ - `typeaheadLabel: string` - Typeahead label
736
+ - `hidden: boolean` - Hidden state
737
+
738
+ ### `<ga-optgroup>`
739
+
740
+ Option group component.
741
+
742
+ #### Inputs:
743
+
744
+ - `label: string` - Group label
745
+
746
+ ### `<ga-select-value>`
747
+
748
+ Custom trigger value display component.
749
+
750
+ ### `<ga-select-dropdown-spinner>`
751
+
752
+ Loading spinner component.
753
+
754
+ ### Providers:
755
+
756
+ - `provideGaSelectI18n` - Configure clear button label
757
+
758
+ ### Examples:
759
+
760
+ Basic select
761
+
762
+ ```html
763
+ <ga-select placeholder="Choose option" [(value)]="selected">
764
+ <ga-select-dropdown>
765
+ <ga-option value="1">Option 1</ga-option>
766
+ <ga-option value="2">Option 2</ga-option>
767
+ </ga-select-dropdown>
768
+ </ga-select>
769
+ ```
770
+
771
+ Multi-select
772
+
773
+ ```html
774
+ <ga-select multiple [(value)]="selectedItems">
775
+ <ga-select-dropdown>
776
+ <ga-option value="1">Item 1</ga-option>
777
+ <ga-option value="2">Item 2</ga-option>
778
+ </ga-select-dropdown>
779
+ </ga-select>
780
+ ```
781
+
782
+ Searchable select
783
+
784
+ ```html
785
+ <ga-select searchable clearable [(textValue)]="searchText" [(value)]="selected">
786
+ <ga-select-dropdown>
787
+ <ga-option *ngFor="let item of filteredItems" [value]="item"
788
+ >{{ item.name }}</ga-option
789
+ >
790
+ </ga-select-dropdown>
791
+ </ga-select>
792
+ ```
793
+
794
+ Select with groups
795
+
796
+ ```html
797
+ <ga-select [(value)]="selected">
798
+ <ga-select-dropdown>
799
+ <ga-optgroup label="Group 1">
800
+ <ga-option value="1">Option 1</ga-option>
801
+ </ga-optgroup>
802
+ <ga-optgroup label="Group 2">
803
+ <ga-option value="2">Option 2</ga-option>
804
+ </ga-optgroup>
805
+ </ga-select-dropdown>
806
+ </ga-select>
807
+ ```
808
+
809
+ i18n configuration
810
+
811
+ ```typescript
812
+ provideGaSelectI18n({ clearLabel: 'Clear selection' });
813
+ ```
814
+
815
+ ## Spinner
816
+
817
+ Spinner component for loading indicators.
818
+
819
+ **Angular module: GaSpinnerModule**
820
+
821
+ ### `<ga-spinner>`
822
+
823
+ #### Inputs:
824
+
825
+ - `size: number` - Size in pixels (default: 32)
826
+
827
+ ### Examples:
828
+
829
+ Custom sized spinner
830
+
831
+ ```html
832
+ <ga-spinner size="48" />
833
+ ```
834
+
835
+ ## Switch
836
+
837
+ Switch component for boolean toggle controls.
838
+
839
+ **Angular module: GaSwitchModule**
840
+
841
+ ### `<ga-switch>`
842
+
843
+ #### Inputs:
844
+
845
+ - `label: string` - Switch label (default: '')
846
+ - `checked: boolean` - Checked state (default: false)
847
+ - `disabled: boolean` - Disabled state (default: false)
848
+
849
+ #### Outputs:
850
+
851
+ - `checkedChange(value: boolean)` - Change event
852
+
853
+ ### Examples:
854
+
855
+ Switch with label
856
+
857
+ ```html
858
+ <ga-switch label="Enable notifications" [(checked)]="enabled" />
859
+ <ga-switch [(ngModel)]="value" label="Dark mode" />
860
+ ```
861
+
862
+ ## Text Area
863
+
864
+ Text area directive for multi-line text input.
865
+
866
+ **Angular module: GaTextAreaModule**
867
+
868
+ ### `[gaTextArea]`
869
+
870
+ Text area directive.
871
+
872
+ #### Inputs:
873
+
874
+ - `invalid: boolean` - Invalid state
875
+
876
+ ### Examples:
877
+
878
+ Basic text area
879
+
880
+ ```html
881
+ <textarea gaTextArea rows="5" placeholder="Enter text"></textarea>
882
+ ```
883
+
884
+ Text area in form field
885
+
886
+ ```html
887
+ <ga-form-field>
888
+ <ga-label>Description</ga-label>
889
+ <textarea gaFormControl gaTextArea [(ngModel)]="description"></textarea>
890
+ </ga-form-field>
891
+ ```
892
+
893
+ ## Tooltip
894
+
895
+ Tooltip directive and component for contextual information overlays.
896
+
897
+ **Angular module: GaTooltipModule**
898
+
899
+ ### `[gaTooltip]`
900
+
901
+ Tooltip directive for contextual information overlays.
902
+
903
+ #### Inputs:
904
+
905
+ - `gaTooltip: string | TemplateRef<any>` - Tooltip content
906
+ - `gaTooltipDisabled: boolean` - Disable tooltip (default: false)
907
+ - `gaTooltipControlMode: 'hover' | 'click' | 'none'` - Control mode (default: 'hover')
908
+ - `gaTooltipShowControlMode: 'hover' | 'click' | 'none'` - Show control mode
909
+ - `gaTooltipHideControlMode: 'hover' | 'click' | 'none'` - Hide control mode
910
+ - `gaTooltipOffsetSize: number` - Offset from target (default: 5)
911
+ - `gaTooltipPlacement: GaTooltipPlacement` - Preferred placement (default: 'right-center')
912
+
913
+ #### Methods:
914
+
915
+ - `show(): void` - Show tooltip programmatically
916
+ - `hide(): void` - Hide tooltip programmatically
917
+ - `toggle(): void` - Toggle tooltip visibility
918
+
919
+ ### `<ga-tooltip>`
920
+
921
+ Tooltip component for rendering tooltip content.
922
+
923
+ ### Examples:
924
+
925
+ ```html
926
+ <button gaTooltip="This is a tooltip">Hover me</button>
927
+ <span [gaTooltip]="tooltipContent" gaTooltipPlacement="top-center"
928
+ >Top tooltip</span
929
+ >
930
+ <button gaTooltip="Click tooltip" gaTooltipControlMode="click">Click me</button>
931
+ ```
932
+
933
+ ## Utils
934
+
935
+ Utility tokens and providers for configuring library behavior.
936
+
937
+ ### Providers:
938
+
939
+ - `provideGaBaseFontSize` - Configure base font size for rem calculations
940
+
941
+ ### Tokens:
942
+
943
+ - `GA_BASE_FONT_SIZE` - Base font size injection token
944
+
945
+ ### Examples:
946
+
947
+ Base font size configuration
948
+
949
+ ```typescript
950
+ provideGaBaseFontSize(14); // Use 14px as base instead of default 16px
951
+ ```