@for-the-people-initiative/design-system 1.3.2 → 1.3.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.
@@ -0,0 +1,1982 @@
1
+ // For the People Design System — TypeScript Interfaces
2
+ // Auto-generated component prop, emit, and slot interfaces
3
+
4
+ // ============================================================
5
+ // Common Types
6
+ // ============================================================
7
+
8
+ export type Size = 'sm' | 'md' | 'lg'
9
+ export type Severity = 'success' | 'info' | 'warn' | 'error'
10
+ export type Position = 'top' | 'bottom' | 'left' | 'right'
11
+ export type Orientation = 'horizontal' | 'vertical'
12
+ export type SelectionMode = 'single' | 'multiple' | 'checkbox'
13
+
14
+ export interface MenuItem {
15
+ key?: string | number
16
+ label?: string
17
+ icon?: string
18
+ url?: string
19
+ target?: string
20
+ command?: (event: { originalEvent: Event; item: MenuItem }) => void
21
+ items?: MenuItem[]
22
+ disabled?: boolean
23
+ separator?: boolean
24
+ active?: boolean
25
+ badge?: string | number
26
+ description?: string
27
+ [key: string]: unknown
28
+ }
29
+
30
+ export interface TreeNode {
31
+ key?: string
32
+ label?: string
33
+ children?: TreeNode[]
34
+ [key: string]: unknown
35
+ }
36
+
37
+ // ============================================================
38
+ // Alert
39
+ // ============================================================
40
+
41
+ export interface AlertProps {
42
+ severity?: Severity
43
+ title?: string
44
+ closable?: boolean
45
+ icon?: string
46
+ }
47
+
48
+ export interface AlertEmits {
49
+ (e: 'close'): void
50
+ }
51
+
52
+ // ============================================================
53
+ // AppBar
54
+ // ============================================================
55
+
56
+ export interface AppBarProps {
57
+ fixed?: boolean
58
+ elevated?: boolean
59
+ transparent?: boolean
60
+ color?: string
61
+ }
62
+
63
+ // ============================================================
64
+ // CommandPalette
65
+ // ============================================================
66
+
67
+ export interface CommandPaletteCommand {
68
+ id: string
69
+ label: string
70
+ icon?: string
71
+ shortcut?: string
72
+ group?: string
73
+ action?: () => void
74
+ }
75
+
76
+ export interface CommandPaletteProps {
77
+ commands: CommandPaletteCommand[]
78
+ placeholder?: string
79
+ open?: boolean
80
+ }
81
+
82
+ export interface CommandPaletteEmits {
83
+ (e: 'select', command: CommandPaletteCommand): void
84
+ (e: 'close'): void
85
+ (e: 'update:open', value: boolean): void
86
+ }
87
+
88
+ // ============================================================
89
+ // DatePicker
90
+ // ============================================================
91
+
92
+ export interface DatePickerProps {
93
+ modelValue?: Date | null
94
+ placeholder?: string
95
+ format?: string
96
+ minDate?: Date | null
97
+ maxDate?: Date | null
98
+ disabled?: boolean
99
+ locale?: string
100
+ }
101
+
102
+ export interface DatePickerEmits {
103
+ (e: 'update:modelValue', value: Date | null): void
104
+ }
105
+
106
+ // ============================================================
107
+ // Form
108
+ // ============================================================
109
+
110
+ export interface FormProps {
111
+ layout?: 'vertical' | 'horizontal'
112
+ labelWidth?: string
113
+ }
114
+
115
+ export interface FormFieldProps {
116
+ label?: string
117
+ error?: string
118
+ hint?: string
119
+ required?: boolean
120
+ htmlFor?: string
121
+ }
122
+
123
+ export interface FormEmits {
124
+ (e: 'submit', event: Event): void
125
+ }
126
+
127
+ // ============================================================
128
+ // Accordion
129
+ // ============================================================
130
+
131
+ export interface AccordionProps {
132
+ activeIndex?: number | number[] | null
133
+ multiple?: boolean
134
+ }
135
+
136
+ export interface AccordionEmits {
137
+ (e: 'update:activeIndex', value: number | number[] | null): void
138
+ (e: 'tab-open', payload: { index: number }): void
139
+ (e: 'tab-close', payload: { index: number }): void
140
+ }
141
+
142
+ export interface AccordionTabProps {
143
+ header?: string
144
+ isDisabled?: boolean
145
+ }
146
+
147
+ // ============================================================
148
+ // AtmosphericBackground
149
+ // ============================================================
150
+
151
+ export interface AtmosphericBackgroundProps {
152
+ variant?: 'default' | 'vibrant' | 'dark' | 'subtle'
153
+ particles?: boolean
154
+ particleCount?: number
155
+ staticStarCount?: number
156
+ clusterCount?: number
157
+ starsPerCluster?: number
158
+ particleColor?: string
159
+ parallax?: boolean
160
+ }
161
+
162
+ // ============================================================
163
+ // AutoComplete
164
+ // ============================================================
165
+
166
+ export interface AutoCompleteProps {
167
+ ariaDescribedby?: string
168
+ modelValue?: string | number | object | unknown[] | null
169
+ suggestions?: unknown[]
170
+ optionLabel?: string
171
+ optionValue?: string
172
+ placeholder?: string
173
+ multiple?: boolean
174
+ minLength?: number
175
+ delay?: number
176
+ size?: Size
177
+ isDisabled?: boolean
178
+ isInvalid?: boolean
179
+ isLoading?: boolean
180
+ dropdown?: boolean
181
+ completeOnFocus?: boolean
182
+ }
183
+
184
+ export interface AutoCompleteEmits {
185
+ (e: 'update:modelValue', value: unknown): void
186
+ (e: 'complete', payload: { query: string }): void
187
+ (e: 'select', payload: { value: unknown }): void
188
+ (e: 'unselect', payload: { value: unknown }): void
189
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
190
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
191
+ (e: 'clear'): void
192
+ }
193
+
194
+ // ============================================================
195
+ // Avatar
196
+ // ============================================================
197
+
198
+ export interface AvatarProps {
199
+ label?: string
200
+ icon?: string
201
+ image?: string
202
+ size?: 'small' | 'medium' | 'large' | 'xlarge'
203
+ shape?: 'square' | 'circle'
204
+ ariaLabel?: string
205
+ }
206
+
207
+ export interface AvatarEmits {
208
+ (e: 'error', event: Event): void
209
+ }
210
+
211
+ // ============================================================
212
+ // Badge
213
+ // ============================================================
214
+
215
+ export interface BadgeProps {
216
+ ariaLabel?: string
217
+ value?: string | number | null
218
+ size?: Size
219
+ severity?: 'primary' | 'success' | 'warning' | 'danger' | 'info'
220
+ }
221
+
222
+ // ============================================================
223
+ // BlockUI
224
+ // ============================================================
225
+
226
+ export interface BlockUIProps {
227
+ blocked?: boolean
228
+ fullScreen?: boolean
229
+ showSpinner?: boolean
230
+ autoZIndex?: boolean
231
+ baseZIndex?: number
232
+ }
233
+
234
+ export interface BlockUIEmits {
235
+ (e: 'block'): void
236
+ (e: 'unblock'): void
237
+ }
238
+
239
+ // ============================================================
240
+ // Breadcrumb
241
+ // ============================================================
242
+
243
+ export interface BreadcrumbItem {
244
+ label?: string
245
+ icon?: string
246
+ url?: string
247
+ command?: (event: { originalEvent: Event; item: BreadcrumbItem }) => void
248
+ }
249
+
250
+ export interface BreadcrumbProps {
251
+ model?: BreadcrumbItem[]
252
+ home?: BreadcrumbItem
253
+ }
254
+
255
+ // ============================================================
256
+ // Button
257
+ // ============================================================
258
+
259
+ export interface ButtonProps {
260
+ label?: string
261
+ icon?: string
262
+ iconPos?: 'left' | 'right'
263
+ size?: Size
264
+ variant?: 'primary' | 'secondary' | 'outlined' | 'text'
265
+ pill?: boolean
266
+ isDisabled?: boolean
267
+ isLoading?: boolean
268
+ }
269
+
270
+ // ============================================================
271
+ // Calendar
272
+ // ============================================================
273
+
274
+ export interface CalendarProps {
275
+ modelValue?: Date | Date[] | null
276
+ placeholder?: string
277
+ dateFormat?: string
278
+ selectionMode?: 'single' | 'range'
279
+ minDate?: Date | null
280
+ maxDate?: Date | null
281
+ inline?: boolean
282
+ showTodayButton?: boolean
283
+ size?: Size
284
+ isDisabled?: boolean
285
+ isInvalid?: boolean
286
+ }
287
+
288
+ export interface CalendarEmits {
289
+ (e: 'update:modelValue', value: Date | Date[] | null): void
290
+ (e: 'select', payload: { value: Date }): void
291
+ (e: 'show'): void
292
+ (e: 'hide'): void
293
+ }
294
+
295
+ // ============================================================
296
+ // Card
297
+ // ============================================================
298
+
299
+ export interface CardProps {
300
+ variant?: 'default' | 'highlighted'
301
+ }
302
+
303
+ // ============================================================
304
+ // Carousel
305
+ // ============================================================
306
+
307
+ export interface CarouselProps {
308
+ ariaLabel?: string
309
+ items?: unknown[]
310
+ numVisible?: number
311
+ numScroll?: number
312
+ circular?: boolean
313
+ autoplay?: boolean
314
+ autoplayInterval?: number
315
+ showNavigators?: boolean
316
+ showIndicators?: boolean
317
+ orientation?: Orientation
318
+ }
319
+
320
+ export interface CarouselEmits {
321
+ (e: 'update:page', value: number): void
322
+ }
323
+
324
+ // ============================================================
325
+ // Chart
326
+ // ============================================================
327
+
328
+ export type ChartType = 'bar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea' | 'scatter' | 'bubble'
329
+
330
+ export interface ChartProps {
331
+ type?: ChartType
332
+ data?: object | null
333
+ options?: object | null
334
+ plugins?: unknown[]
335
+ title?: string | null
336
+ isLoading?: boolean
337
+ width?: number | string | null
338
+ height?: number | string | null
339
+ }
340
+
341
+ export interface ChartEmits {
342
+ (e: 'select', payload: { originalEvent: Event; element: unknown; dataset: unknown; datasetIndex: number; index: number; value: unknown }): void
343
+ (e: 'loaded', chart: unknown): void
344
+ }
345
+
346
+ // ============================================================
347
+ // Checkbox
348
+ // ============================================================
349
+
350
+ export interface CheckboxProps {
351
+ modelValue?: boolean
352
+ label?: string
353
+ name?: string
354
+ value?: string | number | boolean | object
355
+ size?: Size
356
+ isDisabled?: boolean
357
+ isInvalid?: boolean
358
+ indeterminate?: boolean
359
+ }
360
+
361
+ export interface CheckboxEmits {
362
+ (e: 'update:modelValue', value: boolean): void
363
+ (e: 'change', payload: { checked: boolean; originalEvent: Event }): void
364
+ }
365
+
366
+ // ============================================================
367
+ // Chip
368
+ // ============================================================
369
+
370
+ export interface ChipProps {
371
+ label?: string
372
+ icon?: string
373
+ image?: string
374
+ removable?: boolean
375
+ }
376
+
377
+ export interface ChipEmits {
378
+ (e: 'remove', event: Event): void
379
+ }
380
+
381
+ // ============================================================
382
+ // ColorPicker
383
+ // ============================================================
384
+
385
+ export interface ColorPickerProps {
386
+ modelValue?: string
387
+ presetColors?: string[]
388
+ inline?: boolean
389
+ size?: Size
390
+ isDisabled?: boolean
391
+ }
392
+
393
+ export interface ColorPickerEmits {
394
+ (e: 'update:modelValue', value: string): void
395
+ (e: 'change', payload: { value: string }): void
396
+ }
397
+
398
+ // ============================================================
399
+ // Column
400
+ // ============================================================
401
+
402
+ export interface ColumnProps {
403
+ field?: string | null
404
+ header?: string | null
405
+ footer?: string | null
406
+ sortable?: boolean
407
+ sortField?: string | null
408
+ filterField?: string | null
409
+ filterable?: boolean
410
+ width?: string | null
411
+ minWidth?: string | null
412
+ maxWidth?: string | null
413
+ align?: 'left' | 'center' | 'right'
414
+ headerAlign?: 'left' | 'center' | 'right' | null
415
+ footerAlign?: 'left' | 'center' | 'right' | null
416
+ frozen?: boolean
417
+ hidden?: boolean
418
+ expander?: boolean
419
+ selectionMode?: 'single' | 'multiple' | null
420
+ rowspan?: number
421
+ colspan?: number
422
+ }
423
+
424
+ // ============================================================
425
+ // ColumnGroup
426
+ // ============================================================
427
+
428
+ export interface ColumnGroupProps {
429
+ type?: 'header' | 'footer'
430
+ }
431
+
432
+ // ============================================================
433
+ // ConfirmDialog
434
+ // ============================================================
435
+
436
+ export interface ConfirmDialogProps {
437
+ visible?: boolean
438
+ header?: string
439
+ message?: string
440
+ icon?: 'warning' | 'danger' | 'info' | ''
441
+ acceptLabel?: string
442
+ rejectLabel?: string
443
+ dismissableMask?: boolean
444
+ closeOnEscape?: boolean
445
+ }
446
+
447
+ export interface ConfirmDialogEmits {
448
+ (e: 'update:visible', value: boolean): void
449
+ (e: 'accept'): void
450
+ (e: 'reject'): void
451
+ }
452
+
453
+ // ============================================================
454
+ // ConfirmPopup
455
+ // ============================================================
456
+
457
+ export interface ConfirmPopupProps {
458
+ target?: HTMLElement | string | null
459
+ message?: string
460
+ acceptLabel?: string
461
+ rejectLabel?: string
462
+ showIcon?: boolean
463
+ position?: Position
464
+ }
465
+
466
+ export interface ConfirmPopupEmits {
467
+ (e: 'accept'): void
468
+ (e: 'reject'): void
469
+ }
470
+
471
+ // ============================================================
472
+ // ContextMenu
473
+ // ============================================================
474
+
475
+ export interface ContextMenuProps {
476
+ model?: MenuItem[]
477
+ global?: boolean
478
+ popup?: boolean
479
+ showArrow?: boolean
480
+ highlightTrigger?: boolean
481
+ appendTo?: string
482
+ }
483
+
484
+ export interface ContextMenuEmits {
485
+ (e: 'show', event: Event): void
486
+ (e: 'hide'): void
487
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
488
+ }
489
+
490
+ // ============================================================
491
+ // DataTable
492
+ // ============================================================
493
+
494
+ export interface DataTableColumn {
495
+ field: string
496
+ header: string
497
+ sortable?: boolean
498
+ width?: string
499
+ [key: string]: unknown
500
+ }
501
+
502
+ export interface DataTableProps {
503
+ value?: unknown[]
504
+ columns?: DataTableColumn[]
505
+ striped?: boolean
506
+ hoverable?: boolean
507
+ paginator?: boolean
508
+ rows?: number
509
+ sortField?: string | null
510
+ sortOrder?: 1 | -1
511
+ }
512
+
513
+ export interface DataTableEmits {
514
+ (e: 'sort', payload: { sortField: string; sortOrder: number }): void
515
+ (e: 'page', payload: { page: number }): void
516
+ }
517
+
518
+ // ============================================================
519
+ // DataView
520
+ // ============================================================
521
+
522
+ export interface DataViewProps {
523
+ value?: unknown[]
524
+ layout?: 'list' | 'grid'
525
+ gridColumns?: number
526
+ paginator?: boolean
527
+ rows?: number
528
+ showLayoutSwitcher?: boolean
529
+ }
530
+
531
+ export interface DataViewEmits {
532
+ (e: 'update:layout', value: 'list' | 'grid'): void
533
+ (e: 'page', payload: { page: number }): void
534
+ }
535
+
536
+ // ============================================================
537
+ // Dialog
538
+ // ============================================================
539
+
540
+ export interface DialogProps {
541
+ visible?: boolean
542
+ header?: string
543
+ closable?: boolean
544
+ modal?: boolean
545
+ draggable?: boolean
546
+ dismissableMask?: boolean
547
+ closeOnEscape?: boolean
548
+ size?: 'sm' | 'md' | 'lg' | 'xl'
549
+ }
550
+
551
+ export interface DialogEmits {
552
+ (e: 'update:visible', value: boolean): void
553
+ (e: 'show'): void
554
+ (e: 'hide'): void
555
+ }
556
+
557
+ // ============================================================
558
+ // Divider
559
+ // ============================================================
560
+
561
+ export interface DividerProps {
562
+ layout?: Orientation
563
+ type?: 'solid' | 'dashed' | 'dotted'
564
+ align?: 'left' | 'center' | 'right' | 'top' | 'bottom'
565
+ }
566
+
567
+ // ============================================================
568
+ // Dock
569
+ // ============================================================
570
+
571
+ export interface DockItem {
572
+ key?: string | number
573
+ label?: string
574
+ icon?: string
575
+ command?: (event: { originalEvent: Event; item: DockItem }) => void
576
+ disabled?: boolean
577
+ active?: boolean
578
+ [key: string]: unknown
579
+ }
580
+
581
+ export interface DockProps {
582
+ model?: DockItem[]
583
+ position?: Position
584
+ magnification?: boolean
585
+ magnificationScale?: number
586
+ showTooltips?: boolean
587
+ }
588
+
589
+ export interface DockEmits {
590
+ (e: 'item-click', payload: { originalEvent: Event; item: DockItem }): void
591
+ }
592
+
593
+ // ============================================================
594
+ // Drawer
595
+ // ============================================================
596
+
597
+ export interface DrawerProps {
598
+ visible?: boolean
599
+ header?: string
600
+ position?: Position
601
+ size?: 'sm' | 'md' | 'lg' | 'xl'
602
+ closable?: boolean
603
+ dismissable?: boolean
604
+ closeOnEscape?: boolean
605
+ blockScroll?: boolean
606
+ }
607
+
608
+ export interface DrawerEmits {
609
+ (e: 'update:visible', value: boolean): void
610
+ (e: 'show'): void
611
+ (e: 'hide'): void
612
+ }
613
+
614
+ // ============================================================
615
+ // Dropdown
616
+ // ============================================================
617
+
618
+ export interface DropdownProps {
619
+ ariaDescribedby?: string
620
+ modelValue?: string | number | object | null
621
+ options?: unknown[]
622
+ optionLabel?: string
623
+ optionValue?: string
624
+ filter?: boolean
625
+ placeholder?: string
626
+ size?: Size
627
+ isDisabled?: boolean
628
+ isInvalid?: boolean
629
+ }
630
+
631
+ export interface DropdownEmits {
632
+ (e: 'update:modelValue', value: unknown): void
633
+ (e: 'change', payload: { value: unknown; originalEvent?: Event }): void
634
+ (e: 'show'): void
635
+ (e: 'hide'): void
636
+ (e: 'filter', payload: { value: string; originalEvent: Event }): void
637
+ }
638
+
639
+ // ============================================================
640
+ // Editor
641
+ // ============================================================
642
+
643
+ export interface EditorProps {
644
+ modelValue?: string
645
+ placeholder?: string
646
+ isDisabled?: boolean
647
+ isInvalid?: boolean
648
+ }
649
+
650
+ export interface EditorEmits {
651
+ (e: 'update:modelValue', value: string): void
652
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
653
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
654
+ (e: 'change', payload: { value: string }): void
655
+ }
656
+
657
+ // ============================================================
658
+ // FieldSet
659
+ // ============================================================
660
+
661
+ export interface FieldSetProps {
662
+ legend?: string
663
+ toggleable?: boolean
664
+ collapsed?: boolean
665
+ }
666
+
667
+ export interface FieldSetEmits {
668
+ (e: 'update:collapsed', value: boolean): void
669
+ (e: 'toggle', payload: { collapsed: boolean }): void
670
+ }
671
+
672
+ // ============================================================
673
+ // FileUpload
674
+ // ============================================================
675
+
676
+ export interface FileUploadProps {
677
+ accept?: string
678
+ multiple?: boolean
679
+ maxFileSize?: number | null
680
+ maxFiles?: number | null
681
+ isDisabled?: boolean
682
+ }
683
+
684
+ export interface FileUploadEmits {
685
+ (e: 'select', files: File[]): void
686
+ (e: 'remove', file: File): void
687
+ (e: 'error', payload: { type: 'size' | 'limit'; file: File; maxSize?: number; maxFiles?: number }): void
688
+ }
689
+
690
+ // ============================================================
691
+ // Galleria
692
+ // ============================================================
693
+
694
+ export interface GalleriaItem {
695
+ src?: string
696
+ thumbnail?: string
697
+ alt?: string
698
+ title?: string
699
+ description?: string
700
+ [key: string]: unknown
701
+ }
702
+
703
+ export interface GalleriaProps {
704
+ items?: any[]
705
+ activeIndex?: number
706
+ fullscreen?: boolean
707
+ showThumbnails?: boolean
708
+ showItemNavigators?: boolean
709
+ showIndicators?: boolean
710
+ showCounter?: boolean
711
+ showFullscreenThumbnails?: boolean
712
+ enableZoom?: boolean
713
+ circular?: boolean
714
+ autoplay?: boolean
715
+ autoplayInterval?: number
716
+ thumbnailsPosition?: Position
717
+ transition?: 'fade' | 'slide' | 'none'
718
+ }
719
+
720
+ export interface GalleriaEmits {
721
+ (e: 'update:activeIndex', value: number): void
722
+ (e: 'show'): void
723
+ (e: 'hide'): void
724
+ }
725
+
726
+ // ============================================================
727
+ // Image
728
+ // ============================================================
729
+
730
+ export interface ImageProps {
731
+ src: string
732
+ alt?: string
733
+ width?: number | string
734
+ height?: number | string
735
+ preview?: boolean
736
+ }
737
+
738
+ export interface ImageEmits {
739
+ (e: 'show'): void
740
+ (e: 'hide'): void
741
+ (e: 'error', event: Event): void
742
+ (e: 'load', event: Event): void
743
+ }
744
+
745
+ // ============================================================
746
+ // ImageCompare
747
+ // ============================================================
748
+
749
+ export interface ImageCompareProps {
750
+ initialPosition?: number
751
+ ariaLabel?: string
752
+ ariaLabelledBy?: string
753
+ }
754
+
755
+ export interface ImageCompareEmits {
756
+ (e: 'change', value: number): void
757
+ }
758
+
759
+ // ============================================================
760
+ // InPlace
761
+ // ============================================================
762
+
763
+ export interface InPlaceProps {
764
+ active?: boolean
765
+ disabled?: boolean
766
+ closable?: boolean
767
+ }
768
+
769
+ export interface InPlaceEmits {
770
+ (e: 'update:active', value: boolean): void
771
+ (e: 'open'): void
772
+ (e: 'close'): void
773
+ }
774
+
775
+ // ============================================================
776
+ // InlineMessage
777
+ // ============================================================
778
+
779
+ export interface InlineMessageProps {
780
+ severity?: Severity
781
+ icon?: boolean
782
+ }
783
+
784
+ // ============================================================
785
+ // InputChips
786
+ // ============================================================
787
+
788
+ export interface InputChipsProps {
789
+ modelValue?: string[]
790
+ separator?: string | RegExp | null
791
+ allowDuplicate?: boolean
792
+ max?: number | null
793
+ placeholder?: string
794
+ size?: Size
795
+ isDisabled?: boolean
796
+ isInvalid?: boolean
797
+ }
798
+
799
+ export interface InputChipsEmits {
800
+ (e: 'update:modelValue', value: string[]): void
801
+ (e: 'add', payload: { value: string; chips: string[] }): void
802
+ (e: 'remove', payload: { value: string; chips: string[] }): void
803
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
804
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
805
+ }
806
+
807
+ // ============================================================
808
+ // InputGroup
809
+ // ============================================================
810
+
811
+ export interface InputGroupProps {
812
+ fluid?: boolean
813
+ }
814
+
815
+ // ============================================================
816
+ // InputGroupAddon
817
+ // ============================================================
818
+
819
+ export interface InputGroupAddonProps {
820
+ size?: Size
821
+ }
822
+
823
+ // ============================================================
824
+ // InputIcon
825
+ // ============================================================
826
+
827
+ export interface InputIconProps {
828
+ size?: Size
829
+ position?: 'left' | 'right'
830
+ }
831
+
832
+ // ============================================================
833
+ // InputMask
834
+ // ============================================================
835
+
836
+ export interface InputMaskProps {
837
+ modelValue?: string
838
+ mask: string
839
+ slotChar?: string
840
+ autoClear?: boolean
841
+ placeholder?: string
842
+ name?: string
843
+ size?: Size
844
+ isDisabled?: boolean
845
+ isInvalid?: boolean
846
+ }
847
+
848
+ export interface InputMaskEmits {
849
+ (e: 'update:modelValue', value: string): void
850
+ (e: 'complete', payload: { value: string; maskedValue: string }): void
851
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
852
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
853
+ }
854
+
855
+ // ============================================================
856
+ // InputNumber
857
+ // ============================================================
858
+
859
+ export interface InputNumberProps {
860
+ modelValue?: number | null
861
+ min?: number | null
862
+ max?: number | null
863
+ step?: number
864
+ placeholder?: string
865
+ name?: string
866
+ size?: Size
867
+ showButtons?: boolean
868
+ isDisabled?: boolean
869
+ isInvalid?: boolean
870
+ locale?: string
871
+ minFractionDigits?: number
872
+ maxFractionDigits?: number
873
+ }
874
+
875
+ export interface InputNumberEmits {
876
+ (e: 'update:modelValue', value: number | null): void
877
+ (e: 'change', payload: { value: number | null }): void
878
+ }
879
+
880
+ // ============================================================
881
+ // InputOtp
882
+ // ============================================================
883
+
884
+ export interface InputOtpProps {
885
+ modelValue?: string
886
+ length?: number
887
+ mask?: boolean
888
+ maskChar?: string
889
+ integerOnly?: boolean
890
+ separator?: number
891
+ isDisabled?: boolean
892
+ isInvalid?: boolean
893
+ autoFocus?: boolean
894
+ }
895
+
896
+ export interface InputOtpEmits {
897
+ (e: 'update:modelValue', value: string): void
898
+ (e: 'change', payload: { value: string }): void
899
+ (e: 'complete', payload: { value: string }): void
900
+ }
901
+
902
+ // ============================================================
903
+ // InputSwitch
904
+ // ============================================================
905
+
906
+ export interface InputSwitchProps {
907
+ modelValue?: boolean
908
+ label?: string
909
+ name?: string
910
+ size?: Size
911
+ isDisabled?: boolean
912
+ }
913
+
914
+ export interface InputSwitchEmits {
915
+ (e: 'update:modelValue', value: boolean): void
916
+ (e: 'change', payload: { value: boolean; originalEvent: Event }): void
917
+ }
918
+
919
+ // ============================================================
920
+ // InputText
921
+ // ============================================================
922
+
923
+ export interface InputTextProps {
924
+ ariaDescribedby?: string
925
+ modelValue?: string | number
926
+ type?: 'text' | 'password' | 'email' | 'tel' | 'url' | 'search' | 'number'
927
+ placeholder?: string
928
+ name?: string
929
+ size?: Size
930
+ isDisabled?: boolean
931
+ isInvalid?: boolean
932
+ }
933
+
934
+ export interface InputTextEmits {
935
+ (e: 'update:modelValue', value: string | number): void
936
+ (e: 'input', payload: { value: string; originalEvent: Event }): void
937
+ (e: 'change', payload: { value: string; originalEvent: Event }): void
938
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
939
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
940
+ }
941
+
942
+ // ============================================================
943
+ // Knob
944
+ // ============================================================
945
+
946
+ export interface KnobProps {
947
+ modelValue?: number
948
+ min?: number
949
+ max?: number
950
+ step?: number
951
+ size?: Size
952
+ strokeWidth?: number
953
+ showValue?: boolean
954
+ valueTemplate?: string
955
+ isDisabled?: boolean
956
+ }
957
+
958
+ export interface KnobEmits {
959
+ (e: 'update:modelValue', value: number): void
960
+ (e: 'change', payload: { value: number }): void
961
+ }
962
+
963
+ // ============================================================
964
+ // Lightbox
965
+ // ============================================================
966
+
967
+ export interface LightboxImage {
968
+ src: string
969
+ thumbnail?: string
970
+ alt?: string
971
+ [key: string]: unknown
972
+ }
973
+
974
+ export interface LightboxProps {
975
+ images?: (string | LightboxImage)[]
976
+ visible?: boolean
977
+ activeIndex?: number
978
+ showThumbnails?: boolean
979
+ showCounter?: boolean
980
+ closeOnClickOutside?: boolean
981
+ zoom?: boolean
982
+ }
983
+
984
+ export interface LightboxEmits {
985
+ (e: 'update:visible', value: boolean): void
986
+ (e: 'update:activeIndex', value: number): void
987
+ (e: 'show'): void
988
+ (e: 'hide'): void
989
+ }
990
+
991
+ // ============================================================
992
+ // ListBox
993
+ // ============================================================
994
+
995
+ export interface ListBoxProps {
996
+ modelValue?: string | number | object | unknown[] | null
997
+ options?: unknown[]
998
+ optionLabel?: string
999
+ optionValue?: string
1000
+ multiple?: boolean
1001
+ filter?: boolean
1002
+ isDisabled?: boolean
1003
+ }
1004
+
1005
+ export interface ListBoxEmits {
1006
+ (e: 'update:modelValue', value: unknown): void
1007
+ (e: 'change', payload: { value: unknown; originalEvent?: Event }): void
1008
+ (e: 'filter', payload: { value: string; originalEvent: Event }): void
1009
+ }
1010
+
1011
+ // ============================================================
1012
+ // MegaMenu
1013
+ // ============================================================
1014
+
1015
+ export interface MegaMenuProps {
1016
+ model?: MenuItem[]
1017
+ orientation?: Orientation
1018
+ }
1019
+
1020
+ export interface MegaMenuEmits {
1021
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1022
+ }
1023
+
1024
+ // ============================================================
1025
+ // Menu
1026
+ // ============================================================
1027
+
1028
+ export interface MenuProps {
1029
+ model?: MenuItem[]
1030
+ popup?: boolean
1031
+ }
1032
+
1033
+ export interface MenuEmits {
1034
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1035
+ (e: 'show'): void
1036
+ (e: 'hide'): void
1037
+ }
1038
+
1039
+ // ============================================================
1040
+ // MenuBar
1041
+ // ============================================================
1042
+
1043
+ export interface MenuBarProps {
1044
+ model?: MenuItem[]
1045
+ }
1046
+
1047
+ export interface MenuBarEmits {
1048
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1049
+ }
1050
+
1051
+ // ============================================================
1052
+ // Message
1053
+ // ============================================================
1054
+
1055
+ export interface MessageProps {
1056
+ severity?: Severity
1057
+ closable?: boolean
1058
+ icon?: boolean
1059
+ life?: number | null
1060
+ }
1061
+
1062
+ export interface MessageEmits {
1063
+ (e: 'close'): void
1064
+ (e: 'life-end'): void
1065
+ }
1066
+
1067
+ // ============================================================
1068
+ // MeterGroup
1069
+ // ============================================================
1070
+
1071
+ export interface MeterGroupValue {
1072
+ value: number
1073
+ label?: string
1074
+ color?: 'primary' | 'success' | 'warning' | 'danger' | string
1075
+ }
1076
+
1077
+ export interface MeterGroupProps {
1078
+ values: MeterGroupValue[]
1079
+ max?: number
1080
+ orientation?: Orientation
1081
+ showLabels?: boolean
1082
+ }
1083
+
1084
+ // ============================================================
1085
+ // MultiSelect
1086
+ // ============================================================
1087
+
1088
+ export interface MultiSelectProps {
1089
+ modelValue?: unknown[]
1090
+ options?: unknown[]
1091
+ optionLabel?: string
1092
+ optionValue?: string
1093
+ placeholder?: string
1094
+ filter?: boolean
1095
+ display?: 'comma' | 'chip'
1096
+ size?: Size
1097
+ isDisabled?: boolean
1098
+ isInvalid?: boolean
1099
+ }
1100
+
1101
+ export interface MultiSelectEmits {
1102
+ (e: 'update:modelValue', value: unknown[]): void
1103
+ (e: 'change', payload: { value: unknown[] }): void
1104
+ }
1105
+
1106
+ // ============================================================
1107
+ // OrderList
1108
+ // ============================================================
1109
+
1110
+ export interface OrderListProps {
1111
+ modelValue?: any[]
1112
+ header?: string
1113
+ dataKey?: string | null
1114
+ itemKey?: string | null
1115
+ multiple?: boolean
1116
+ }
1117
+
1118
+ export interface OrderListEmits {
1119
+ (e: 'update:modelValue', value: unknown[]): void
1120
+ (e: 'reorder', payload: { value: unknown[] }): void
1121
+ (e: 'selection-change', payload: { selection: unknown[] }): void
1122
+ }
1123
+
1124
+ // ============================================================
1125
+ // OrganizationChart
1126
+ // ============================================================
1127
+
1128
+ export interface OrganizationChartProps {
1129
+ value?: object | null
1130
+ selectionMode?: 'single' | 'multiple'
1131
+ selectedKeys?: Record<string, boolean>
1132
+ expandedKeys?: Record<string, boolean>
1133
+ collapsible?: boolean
1134
+ }
1135
+
1136
+ export interface OrganizationChartEmits {
1137
+ (e: 'update:selectedKeys', value: Record<string, boolean>): void
1138
+ (e: 'update:expandedKeys', value: Record<string, boolean>): void
1139
+ (e: 'node-select', payload: { node: object }): void
1140
+ (e: 'node-unselect', payload: { node: object }): void
1141
+ (e: 'node-expand', payload: { node: object }): void
1142
+ (e: 'node-collapse', payload: { node: object }): void
1143
+ }
1144
+
1145
+ // ============================================================
1146
+ // OverlayPanel
1147
+ // ============================================================
1148
+
1149
+ export interface OverlayPanelProps {
1150
+ visible?: boolean
1151
+ appendTo?: string
1152
+ dismissable?: boolean
1153
+ showCloseIcon?: boolean
1154
+ }
1155
+
1156
+ export interface OverlayPanelEmits {
1157
+ (e: 'update:visible', value: boolean): void
1158
+ (e: 'show'): void
1159
+ (e: 'hide'): void
1160
+ }
1161
+
1162
+ // ============================================================
1163
+ // Paginator
1164
+ // ============================================================
1165
+
1166
+ export interface PaginatorProps {
1167
+ totalRecords: number
1168
+ rows?: number
1169
+ first?: number
1170
+ rowsPerPageOptions?: number[]
1171
+ pageLinkSize?: number
1172
+ showFirstLast?: boolean
1173
+ showInfo?: boolean
1174
+ }
1175
+
1176
+ export interface PaginatorEmits {
1177
+ (e: 'update:first', value: number): void
1178
+ (e: 'update:rows', value: number): void
1179
+ (e: 'page', payload: { page: number; first: number; rows: number; pageCount: number }): void
1180
+ }
1181
+
1182
+ // ============================================================
1183
+ // Panel
1184
+ // ============================================================
1185
+
1186
+ export interface PanelProps {
1187
+ header?: string
1188
+ toggleable?: boolean
1189
+ collapsed?: boolean
1190
+ }
1191
+
1192
+ export interface PanelEmits {
1193
+ (e: 'update:collapsed', value: boolean): void
1194
+ (e: 'toggle', payload: { collapsed: boolean }): void
1195
+ }
1196
+
1197
+ // ============================================================
1198
+ // PanelMenu
1199
+ // ============================================================
1200
+
1201
+ export interface PanelMenuProps {
1202
+ model?: MenuItem[]
1203
+ expandedKeys?: Record<number, boolean>
1204
+ multiple?: boolean
1205
+ }
1206
+
1207
+ export interface PanelMenuEmits {
1208
+ (e: 'update:expandedKeys', value: Record<number, boolean>): void
1209
+ (e: 'panel-open', payload: { index: number; panel: MenuItem }): void
1210
+ (e: 'panel-close', payload: { index: number; panel: MenuItem }): void
1211
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1212
+ }
1213
+
1214
+ // ============================================================
1215
+ // ParticleBackground
1216
+ // ============================================================
1217
+
1218
+ export interface ParticleBackgroundProps {
1219
+ particleCount?: number
1220
+ staticStarCount?: number
1221
+ clusterCount?: number
1222
+ starsPerCluster?: number
1223
+ particleColor?: string
1224
+ minSize?: number
1225
+ maxSize?: number
1226
+ speed?: number
1227
+ twinkle?: boolean
1228
+ parallax?: boolean
1229
+ fixed?: boolean
1230
+ }
1231
+
1232
+ // ============================================================
1233
+ // PickList
1234
+ // ============================================================
1235
+
1236
+ export interface PickListProps {
1237
+ source?: unknown[]
1238
+ target?: unknown[]
1239
+ sourceHeader?: string
1240
+ targetHeader?: string
1241
+ dataKey?: string | null
1242
+ labelKey?: string
1243
+ isDisabled?: boolean
1244
+ }
1245
+
1246
+ export interface PickListEmits {
1247
+ (e: 'update:source', value: unknown[]): void
1248
+ (e: 'update:target', value: unknown[]): void
1249
+ (e: 'move-to-target', payload: { items: unknown[] }): void
1250
+ (e: 'move-to-source', payload: { items: unknown[] }): void
1251
+ }
1252
+
1253
+ // ============================================================
1254
+ // PopOver
1255
+ // ============================================================
1256
+
1257
+ export interface PopOverProps {
1258
+ visible?: boolean
1259
+ trigger?: 'hover' | 'click'
1260
+ position?: Position
1261
+ showDelay?: number
1262
+ hideDelay?: number
1263
+ disabled?: boolean
1264
+ }
1265
+
1266
+ export interface PopOverEmits {
1267
+ (e: 'update:visible', value: boolean): void
1268
+ (e: 'show'): void
1269
+ (e: 'hide'): void
1270
+ }
1271
+
1272
+ // ============================================================
1273
+ // ProgressBar
1274
+ // ============================================================
1275
+
1276
+ export interface ProgressBarProps {
1277
+ value?: number
1278
+ showValue?: boolean
1279
+ mode?: 'determinate' | 'indeterminate'
1280
+ }
1281
+
1282
+ // ============================================================
1283
+ // ProgressSpinner
1284
+ // ============================================================
1285
+
1286
+ export interface ProgressSpinnerProps {
1287
+ strokeWidth?: number | string
1288
+ fill?: string
1289
+ animationDuration?: string
1290
+ }
1291
+
1292
+ // ============================================================
1293
+ // RadioButton
1294
+ // ============================================================
1295
+
1296
+ export interface RadioButtonProps {
1297
+ modelValue?: string | number | boolean | object | null
1298
+ value: string | number | boolean | object
1299
+ label?: string
1300
+ name?: string
1301
+ size?: Size
1302
+ isDisabled?: boolean
1303
+ isInvalid?: boolean
1304
+ }
1305
+
1306
+ export interface RadioButtonEmits {
1307
+ (e: 'update:modelValue', value: string | number | boolean | object): void
1308
+ (e: 'change', payload: { value: string | number | boolean | object; originalEvent: Event }): void
1309
+ }
1310
+
1311
+ // ============================================================
1312
+ // Rating
1313
+ // ============================================================
1314
+
1315
+ export interface RatingProps {
1316
+ ariaLabel?: string
1317
+ modelValue?: number | null
1318
+ stars?: number
1319
+ readonly?: boolean
1320
+ isDisabled?: boolean
1321
+ cancel?: boolean
1322
+ }
1323
+
1324
+ export interface RatingEmits {
1325
+ (e: 'update:modelValue', value: number | null): void
1326
+ (e: 'change', payload: { value: number | null }): void
1327
+ }
1328
+
1329
+ // ============================================================
1330
+ // Row
1331
+ // ============================================================
1332
+
1333
+ export interface RowProps {
1334
+ isSelected?: boolean
1335
+ isStriped?: boolean
1336
+ isHoverable?: boolean
1337
+ }
1338
+
1339
+ // ============================================================
1340
+ // ScrollPanel
1341
+ // ============================================================
1342
+
1343
+ export interface ScrollPanelProps {
1344
+ style?: Record<string, string | number> | string
1345
+ step?: number
1346
+ }
1347
+
1348
+ // ============================================================
1349
+ // ScrollTop
1350
+ // ============================================================
1351
+
1352
+ export interface ScrollTopProps {
1353
+ threshold?: number
1354
+ behavior?: 'smooth' | 'auto' | 'instant'
1355
+ target?: string
1356
+ }
1357
+
1358
+ export interface ScrollTopEmits {
1359
+ (e: 'click'): void
1360
+ }
1361
+
1362
+ // ============================================================
1363
+ // Select
1364
+ // ============================================================
1365
+
1366
+ export interface SelectProps {
1367
+ ariaDescribedby?: string
1368
+ modelValue?: string | number | boolean | object | null
1369
+ options?: unknown[]
1370
+ optionLabel?: string
1371
+ optionValue?: string
1372
+ placeholder?: string
1373
+ name?: string
1374
+ size?: Size
1375
+ isDisabled?: boolean
1376
+ isInvalid?: boolean
1377
+ }
1378
+
1379
+ export interface SelectEmits {
1380
+ (e: 'update:modelValue', value: unknown): void
1381
+ (e: 'change', payload: { value: unknown; originalEvent: Event }): void
1382
+ }
1383
+
1384
+ // ============================================================
1385
+ // SelectButton
1386
+ // ============================================================
1387
+
1388
+ export interface SelectButtonProps {
1389
+ modelValue?: string | number | object | unknown[] | null
1390
+ options: unknown[]
1391
+ optionLabel?: string | ((option: unknown) => string) | null
1392
+ optionValue?: string | ((option: unknown) => unknown) | null
1393
+ optionDisabled?: string | ((option: unknown) => boolean) | null
1394
+ multiple?: boolean
1395
+ allowEmpty?: boolean
1396
+ isDisabled?: boolean
1397
+ ariaLabel?: string
1398
+ }
1399
+
1400
+ export interface SelectButtonEmits {
1401
+ (e: 'update:modelValue', value: unknown): void
1402
+ (e: 'change', payload: { originalEvent: Event; value: unknown }): void
1403
+ }
1404
+
1405
+ // ============================================================
1406
+ // Sidebar
1407
+ // ============================================================
1408
+
1409
+ export interface SidebarProps {
1410
+ visible?: boolean
1411
+ header?: string
1412
+ position?: 'left' | 'right'
1413
+ fullScreen?: boolean
1414
+ closable?: boolean
1415
+ dismissable?: boolean
1416
+ closeOnEscape?: boolean
1417
+ blockScroll?: boolean
1418
+ }
1419
+
1420
+ export interface SidebarEmits {
1421
+ (e: 'update:visible', value: boolean): void
1422
+ (e: 'show'): void
1423
+ (e: 'hide'): void
1424
+ }
1425
+
1426
+ // ============================================================
1427
+ // Skeleton
1428
+ // ============================================================
1429
+
1430
+ export interface SkeletonProps {
1431
+ shape?: 'rectangle' | 'circle'
1432
+ width?: string | null
1433
+ height?: string | null
1434
+ borderRadius?: string | null
1435
+ animation?: 'wave' | 'none'
1436
+ }
1437
+
1438
+ // ============================================================
1439
+ // Slider
1440
+ // ============================================================
1441
+
1442
+ export interface SliderProps {
1443
+ ariaLabel?: string
1444
+ ariaDescribedby?: string
1445
+ modelValue?: number
1446
+ min?: number
1447
+ max?: number
1448
+ step?: number
1449
+ name?: string
1450
+ isDisabled?: boolean
1451
+ }
1452
+
1453
+ export interface SliderEmits {
1454
+ (e: 'update:modelValue', value: number): void
1455
+ (e: 'change', payload: { value: number; originalEvent: Event }): void
1456
+ }
1457
+
1458
+ // ============================================================
1459
+ // SpeedDial
1460
+ // ============================================================
1461
+
1462
+ export interface SpeedDialItem {
1463
+ label?: string
1464
+ icon?: string
1465
+ command?: (event: { originalEvent: Event; item: SpeedDialItem }) => void
1466
+ [key: string]: unknown
1467
+ }
1468
+
1469
+ export interface SpeedDialProps {
1470
+ model?: SpeedDialItem[]
1471
+ direction?: 'up' | 'down' | 'left' | 'right'
1472
+ type?: 'linear' | 'circle' | 'semi-circle' | 'quarter-circle'
1473
+ radius?: number
1474
+ showLabels?: boolean
1475
+ openOnHover?: boolean
1476
+ }
1477
+
1478
+ export interface SpeedDialEmits {
1479
+ (e: 'click', item: SpeedDialItem): void
1480
+ (e: 'show'): void
1481
+ (e: 'hide'): void
1482
+ }
1483
+
1484
+ // ============================================================
1485
+ // SplitButton
1486
+ // ============================================================
1487
+
1488
+ export interface SplitButtonProps {
1489
+ label?: string
1490
+ icon?: string
1491
+ model?: MenuItem[]
1492
+ severity?: 'primary' | 'secondary' | 'outlined'
1493
+ size?: Size
1494
+ isDisabled?: boolean
1495
+ }
1496
+
1497
+ export interface SplitButtonEmits {
1498
+ (e: 'click', event: Event): void
1499
+ }
1500
+
1501
+ // ============================================================
1502
+ // Splitter
1503
+ // ============================================================
1504
+
1505
+ export interface SplitterProps {
1506
+ layout?: Orientation
1507
+ gutterSize?: number
1508
+ stateKey?: string | null
1509
+ stateStorage?: 'local' | 'session'
1510
+ }
1511
+
1512
+ export interface SplitterEmits {
1513
+ (e: 'resizestart', payload: { originalEvent: Event; sizes: number[] }): void
1514
+ (e: 'resize', payload: { originalEvent: Event; sizes: number[] }): void
1515
+ (e: 'resizeend', payload: { originalEvent: Event; sizes: number[] }): void
1516
+ }
1517
+
1518
+ // ============================================================
1519
+ // SplitterPanel
1520
+ // ============================================================
1521
+
1522
+ export interface SplitterPanelProps {
1523
+ size?: number
1524
+ minSize?: number
1525
+ }
1526
+
1527
+ // ============================================================
1528
+ // Steps
1529
+ // ============================================================
1530
+
1531
+ export interface StepItem {
1532
+ label: string
1533
+ disabled?: boolean
1534
+ [key: string]: unknown
1535
+ }
1536
+
1537
+ export interface StepsProps {
1538
+ model?: StepItem[]
1539
+ activeIndex?: number
1540
+ isReadonly?: boolean
1541
+ }
1542
+
1543
+ export interface StepsEmits {
1544
+ (e: 'update:activeIndex', value: number): void
1545
+ (e: 'step-click', payload: { originalEvent: Event; item: StepItem; index: number }): void
1546
+ }
1547
+
1548
+ // ============================================================
1549
+ // TabMenu
1550
+ // ============================================================
1551
+
1552
+ export interface TabMenuProps {
1553
+ model?: MenuItem[]
1554
+ activeIndex?: number
1555
+ }
1556
+
1557
+ export interface TabMenuEmits {
1558
+ (e: 'update:activeIndex', value: number): void
1559
+ (e: 'tab-change', payload: { originalEvent: Event; item: MenuItem; index: number }): void
1560
+ }
1561
+
1562
+ // ============================================================
1563
+ // Tabs
1564
+ // ============================================================
1565
+
1566
+ export interface TabsProps {
1567
+ activeIndex?: number
1568
+ ariaLabel?: string
1569
+ }
1570
+
1571
+ export interface TabsEmits {
1572
+ (e: 'update:activeIndex', value: number): void
1573
+ (e: 'tabChange', payload: { originalEvent: Event; index: number }): void
1574
+ (e: 'tabClick', payload: { originalEvent: Event; index: number }): void
1575
+ }
1576
+
1577
+ // ============================================================
1578
+ // TabPanel
1579
+ // ============================================================
1580
+
1581
+ export interface TabPanelProps {
1582
+ header: string
1583
+ disabled?: boolean
1584
+ }
1585
+
1586
+ // ============================================================
1587
+ // Tag
1588
+ // ============================================================
1589
+
1590
+ export interface TagProps {
1591
+ value?: string | null
1592
+ color?: 'brand' | 'accent' | 'neutral' | 'success' | 'warning' | 'danger' | 'info'
1593
+ icon?: string | null
1594
+ rounded?: boolean
1595
+ }
1596
+
1597
+ // ============================================================
1598
+ // Terminal
1599
+ // ============================================================
1600
+
1601
+ export interface TerminalProps {
1602
+ prompt?: string
1603
+ welcomeMessage?: string | null
1604
+ ariaLabel?: string
1605
+ }
1606
+
1607
+ export interface TerminalEmits {
1608
+ (e: 'command', text: string, callback: (response: string) => void): void
1609
+ }
1610
+
1611
+ // ============================================================
1612
+ // Textarea
1613
+ // ============================================================
1614
+
1615
+ export interface TextareaProps {
1616
+ ariaDescribedby?: string
1617
+ modelValue?: string
1618
+ rows?: number | string
1619
+ cols?: number | string
1620
+ placeholder?: string
1621
+ isDisabled?: boolean
1622
+ isInvalid?: boolean
1623
+ autoResize?: boolean
1624
+ }
1625
+
1626
+ export interface TextareaEmits {
1627
+ (e: 'update:modelValue', value: string): void
1628
+ (e: 'input', payload: { value: string; originalEvent: Event }): void
1629
+ }
1630
+
1631
+ // ============================================================
1632
+ // TieredMenu
1633
+ // ============================================================
1634
+
1635
+ export interface TieredMenuProps {
1636
+ model?: MenuItem[]
1637
+ popup?: boolean
1638
+ }
1639
+
1640
+ export interface TieredMenuEmits {
1641
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1642
+ (e: 'show', event: Event): void
1643
+ (e: 'hide'): void
1644
+ }
1645
+
1646
+ // ============================================================
1647
+ // TieredMenuSub
1648
+ // ============================================================
1649
+
1650
+ export interface TieredMenuSubProps {
1651
+ items?: MenuItem[]
1652
+ }
1653
+
1654
+ export interface TieredMenuSubEmits {
1655
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1656
+ }
1657
+
1658
+ // ============================================================
1659
+ // Timeline
1660
+ // ============================================================
1661
+
1662
+ export interface TimelineEvent {
1663
+ color?: 'primary' | 'success' | 'warning' | 'danger' | string
1664
+ [key: string]: unknown
1665
+ }
1666
+
1667
+ export interface TimelineProps {
1668
+ value: TimelineEvent[]
1669
+ align?: 'left' | 'right' | 'alternate'
1670
+ layout?: Orientation
1671
+ }
1672
+
1673
+ // ============================================================
1674
+ // Toast
1675
+ // ============================================================
1676
+
1677
+ export type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center'
1678
+
1679
+ export interface ToastMessage {
1680
+ severity?: 'default' | Severity
1681
+ summary?: string
1682
+ detail?: string
1683
+ closable?: boolean
1684
+ life?: number
1685
+ group?: string | null
1686
+ [key: string]: unknown
1687
+ }
1688
+
1689
+ export interface ToastProps {
1690
+ position?: ToastPosition
1691
+ group?: string | null
1692
+ showIcon?: boolean
1693
+ showProgress?: boolean
1694
+ }
1695
+
1696
+ // ============================================================
1697
+ // ToggleButton
1698
+ // ============================================================
1699
+
1700
+ export interface ToggleButtonProps {
1701
+ modelValue?: boolean
1702
+ onLabel?: string
1703
+ offLabel?: string
1704
+ onIcon?: string
1705
+ offIcon?: string
1706
+ size?: Size
1707
+ isDisabled?: boolean
1708
+ }
1709
+
1710
+ export interface ToggleButtonEmits {
1711
+ (e: 'update:modelValue', value: boolean): void
1712
+ (e: 'change', payload: { value: boolean; originalEvent: Event }): void
1713
+ }
1714
+
1715
+ // ============================================================
1716
+ // ToggleSwitch
1717
+ // ============================================================
1718
+
1719
+ export interface ToggleSwitchProps {
1720
+ modelValue?: boolean
1721
+ name?: string
1722
+ isDisabled?: boolean
1723
+ }
1724
+
1725
+ export interface ToggleSwitchEmits {
1726
+ (e: 'update:modelValue', value: boolean): void
1727
+ (e: 'change', payload: { value: boolean; originalEvent: Event }): void
1728
+ }
1729
+
1730
+ // ============================================================
1731
+ // Toolbar
1732
+ // ============================================================
1733
+
1734
+ // Toolbar has no props — it's a slot-only layout component
1735
+ export interface ToolbarProps {}
1736
+
1737
+ // ============================================================
1738
+ // Tooltip
1739
+ // ============================================================
1740
+
1741
+ export interface TooltipProps {
1742
+ content: string
1743
+ position?: Position
1744
+ showDelay?: number
1745
+ hideDelay?: number
1746
+ disabled?: boolean
1747
+ }
1748
+
1749
+ // ============================================================
1750
+ // Tree
1751
+ // ============================================================
1752
+
1753
+ export interface TreeProps {
1754
+ modelValue?: string | number | (string | number)[] | null
1755
+ nodes?: TreeNode[]
1756
+ expandedKeys?: (string | number)[]
1757
+ selectionMode?: 'single' | 'multiple' | 'checkbox' | null
1758
+ filter?: boolean
1759
+ labelField?: string
1760
+ keyField?: string
1761
+ childrenField?: string
1762
+ isDisabled?: boolean
1763
+ }
1764
+
1765
+ export interface TreeEmits {
1766
+ (e: 'update:modelValue', value: unknown): void
1767
+ (e: 'update:expandedKeys', value: (string | number)[]): void
1768
+ (e: 'node-select', payload: { node: TreeNode; key: string | number; selectedKeys?: (string | number)[] }): void
1769
+ (e: 'node-expand', payload: { node: TreeNode; key: string | number }): void
1770
+ (e: 'node-collapse', payload: { node: TreeNode; key: string | number }): void
1771
+ (e: 'filter', payload: { value: string }): void
1772
+ }
1773
+
1774
+ // ============================================================
1775
+ // TreeSelect
1776
+ // ============================================================
1777
+
1778
+ export interface TreeSelectProps {
1779
+ modelValue?: string | number | (string | number)[] | object | null
1780
+ options?: TreeNode[]
1781
+ selectionMode?: 'single' | 'checkbox'
1782
+ placeholder?: string
1783
+ filter?: boolean
1784
+ labelField?: string
1785
+ keyField?: string
1786
+ childrenField?: string
1787
+ size?: Size
1788
+ isDisabled?: boolean
1789
+ isInvalid?: boolean
1790
+ }
1791
+
1792
+ export interface TreeSelectEmits {
1793
+ (e: 'update:modelValue', value: unknown): void
1794
+ (e: 'change', payload: { value: unknown; node?: TreeNode }): void
1795
+ }
1796
+
1797
+ // ============================================================
1798
+ // TreeTable
1799
+ // ============================================================
1800
+
1801
+ export interface TreeTableColumn {
1802
+ field: string
1803
+ header: string
1804
+ style?: Record<string, string>
1805
+ [key: string]: unknown
1806
+ }
1807
+
1808
+ export interface TreeTableProps {
1809
+ modelValue?: string | number | (string | number)[] | null
1810
+ nodes?: TreeNode[]
1811
+ columns?: TreeTableColumn[]
1812
+ expandedKeys?: (string | number)[]
1813
+ selectionMode?: 'single' | 'multiple' | 'checkbox' | null
1814
+ keyField?: string
1815
+ childrenField?: string
1816
+ striped?: boolean
1817
+ isDisabled?: boolean
1818
+ }
1819
+
1820
+ export interface TreeTableEmits {
1821
+ (e: 'update:modelValue', value: unknown): void
1822
+ (e: 'update:expandedKeys', value: (string | number)[]): void
1823
+ (e: 'node-select', payload: { node: TreeNode; key: string | number; selectedKeys?: (string | number)[] }): void
1824
+ (e: 'node-expand', payload: { node: TreeNode; key: string | number }): void
1825
+ (e: 'node-collapse', payload: { node: TreeNode; key: string | number }): void
1826
+ }
1827
+
1828
+ // ============================================================
1829
+ // VirtualScroller
1830
+ // ============================================================
1831
+
1832
+ export interface VirtualScrollerProps {
1833
+ items?: unknown[]
1834
+ itemSize?: number
1835
+ scrollHeight?: string
1836
+ orientation?: Orientation
1837
+ numToleratedItems?: number
1838
+ loading?: boolean
1839
+ striped?: boolean
1840
+ showBorder?: boolean
1841
+ dataKey?: string | null
1842
+ }
1843
+
1844
+ export interface VirtualScrollerEmits {
1845
+ (e: 'scroll', payload: { originalEvent: Event; scrollPosition: number }): void
1846
+ (e: 'scroll-index-change', payload: { first: number; last: number }): void
1847
+ }
1848
+
1849
+ // ============================================================
1850
+ // Website Components
1851
+ // ============================================================
1852
+
1853
+ // Hero
1854
+ export interface HeroProps {
1855
+ title?: string
1856
+ subtitle?: string
1857
+ alignment?: 'left' | 'center' | 'right'
1858
+ backgroundImage?: string
1859
+ overlay?: boolean
1860
+ fullHeight?: boolean
1861
+ }
1862
+
1863
+ // FeatureGrid
1864
+ export interface FeatureItem {
1865
+ icon?: string
1866
+ title: string
1867
+ description: string
1868
+ }
1869
+
1870
+ export interface FeatureGridProps {
1871
+ columns?: 2 | 3 | 4
1872
+ features?: FeatureItem[]
1873
+ variant?: 'card' | 'minimal' | 'icon-top'
1874
+ }
1875
+
1876
+ // PricingTable
1877
+ export interface PricingCardProps {
1878
+ name: string
1879
+ price: string | number
1880
+ currency?: string
1881
+ interval?: 'month' | 'year'
1882
+ features?: string[]
1883
+ highlighted?: boolean
1884
+ ctaLabel?: string
1885
+ ctaAction?: () => void
1886
+ }
1887
+
1888
+ export interface PricingTableProps {
1889
+ plans?: PricingCardProps[]
1890
+ columns?: 2 | 3 | 4
1891
+ }
1892
+
1893
+ // Testimonial
1894
+ export interface TestimonialProps {
1895
+ quote: string
1896
+ author: string
1897
+ role?: string
1898
+ company?: string
1899
+ avatar?: string
1900
+ rating?: number
1901
+ variant?: 'card' | 'minimal'
1902
+ }
1903
+
1904
+ // Footer
1905
+ export interface FooterLink {
1906
+ label: string
1907
+ href: string
1908
+ }
1909
+
1910
+ export interface FooterColumn {
1911
+ title: string
1912
+ links: FooterLink[]
1913
+ }
1914
+
1915
+ export interface FooterSocialLink {
1916
+ label: string
1917
+ href: string
1918
+ icon: string
1919
+ }
1920
+
1921
+ export interface FooterProps {
1922
+ columns?: FooterColumn[]
1923
+ logo?: string
1924
+ copyright?: string
1925
+ socialLinks?: FooterSocialLink[]
1926
+ }
1927
+
1928
+ // Section
1929
+ export interface SectionProps {
1930
+ title?: string
1931
+ subtitle?: string
1932
+ variant?: 'default' | 'muted' | 'accent' | 'dark'
1933
+ padding?: 'sm' | 'md' | 'lg' | 'xl'
1934
+ id?: string
1935
+ }
1936
+
1937
+ // CTA
1938
+ export interface CTAProps {
1939
+ title?: string
1940
+ description?: string
1941
+ variant?: 'banner' | 'card' | 'inline'
1942
+ alignment?: 'left' | 'center' | 'right'
1943
+ }
1944
+
1945
+ // LogoCloud
1946
+ export interface LogoItem {
1947
+ src: string
1948
+ alt: string
1949
+ href?: string
1950
+ }
1951
+
1952
+ export interface LogoCloudProps {
1953
+ logos?: LogoItem[]
1954
+ title?: string
1955
+ grayscale?: boolean
1956
+ columns?: number
1957
+ }
1958
+
1959
+ // Stats
1960
+ export interface StatItem {
1961
+ value: string | number
1962
+ label: string
1963
+ prefix?: string
1964
+ suffix?: string
1965
+ icon?: string
1966
+ }
1967
+
1968
+ export interface StatsProps {
1969
+ stats?: StatItem[]
1970
+ columns?: 2 | 3 | 4
1971
+ }
1972
+
1973
+ // FAQ
1974
+ export interface FAQItem {
1975
+ question: string
1976
+ answer: string
1977
+ }
1978
+
1979
+ export interface FAQProps {
1980
+ items?: FAQItem[]
1981
+ variant?: 'default' | 'separated' | 'bordered'
1982
+ }