@for-the-people-initiative/design-system 1.3.1 → 1.3.3

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 (2) hide show
  1. package/package.json +2 -1
  2. package/src/types/index.ts +1950 -0
@@ -0,0 +1,1950 @@
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
+ circular?: boolean
711
+ autoplay?: boolean
712
+ autoplayInterval?: number
713
+ thumbnailsPosition?: Position
714
+ }
715
+
716
+ export interface GalleriaEmits {
717
+ (e: 'update:activeIndex', value: number): void
718
+ (e: 'show'): void
719
+ (e: 'hide'): void
720
+ }
721
+
722
+ // ============================================================
723
+ // Image
724
+ // ============================================================
725
+
726
+ export interface ImageProps {
727
+ src: string
728
+ alt?: string
729
+ width?: number | string
730
+ height?: number | string
731
+ preview?: boolean
732
+ }
733
+
734
+ export interface ImageEmits {
735
+ (e: 'show'): void
736
+ (e: 'hide'): void
737
+ (e: 'error', event: Event): void
738
+ (e: 'load', event: Event): void
739
+ }
740
+
741
+ // ============================================================
742
+ // ImageCompare
743
+ // ============================================================
744
+
745
+ export interface ImageCompareProps {
746
+ initialPosition?: number
747
+ ariaLabel?: string
748
+ ariaLabelledBy?: string
749
+ }
750
+
751
+ export interface ImageCompareEmits {
752
+ (e: 'change', value: number): void
753
+ }
754
+
755
+ // ============================================================
756
+ // InPlace
757
+ // ============================================================
758
+
759
+ export interface InPlaceProps {
760
+ active?: boolean
761
+ disabled?: boolean
762
+ closable?: boolean
763
+ }
764
+
765
+ export interface InPlaceEmits {
766
+ (e: 'update:active', value: boolean): void
767
+ (e: 'open'): void
768
+ (e: 'close'): void
769
+ }
770
+
771
+ // ============================================================
772
+ // InlineMessage
773
+ // ============================================================
774
+
775
+ export interface InlineMessageProps {
776
+ severity?: Severity
777
+ icon?: boolean
778
+ }
779
+
780
+ // ============================================================
781
+ // InputChips
782
+ // ============================================================
783
+
784
+ export interface InputChipsProps {
785
+ modelValue?: string[]
786
+ separator?: string | RegExp | null
787
+ allowDuplicate?: boolean
788
+ max?: number | null
789
+ placeholder?: string
790
+ size?: Size
791
+ isDisabled?: boolean
792
+ isInvalid?: boolean
793
+ }
794
+
795
+ export interface InputChipsEmits {
796
+ (e: 'update:modelValue', value: string[]): void
797
+ (e: 'add', payload: { value: string; chips: string[] }): void
798
+ (e: 'remove', payload: { value: string; chips: string[] }): void
799
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
800
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
801
+ }
802
+
803
+ // ============================================================
804
+ // InputGroup
805
+ // ============================================================
806
+
807
+ export interface InputGroupProps {
808
+ fluid?: boolean
809
+ }
810
+
811
+ // ============================================================
812
+ // InputGroupAddon
813
+ // ============================================================
814
+
815
+ export interface InputGroupAddonProps {
816
+ size?: Size
817
+ }
818
+
819
+ // ============================================================
820
+ // InputIcon
821
+ // ============================================================
822
+
823
+ export interface InputIconProps {
824
+ size?: Size
825
+ position?: 'left' | 'right'
826
+ }
827
+
828
+ // ============================================================
829
+ // InputMask
830
+ // ============================================================
831
+
832
+ export interface InputMaskProps {
833
+ modelValue?: string
834
+ mask: string
835
+ slotChar?: string
836
+ autoClear?: boolean
837
+ placeholder?: string
838
+ name?: string
839
+ size?: Size
840
+ isDisabled?: boolean
841
+ isInvalid?: boolean
842
+ }
843
+
844
+ export interface InputMaskEmits {
845
+ (e: 'update:modelValue', value: string): void
846
+ (e: 'complete', payload: { value: string; maskedValue: string }): void
847
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
848
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
849
+ }
850
+
851
+ // ============================================================
852
+ // InputNumber
853
+ // ============================================================
854
+
855
+ export interface InputNumberProps {
856
+ modelValue?: number | null
857
+ min?: number | null
858
+ max?: number | null
859
+ step?: number
860
+ placeholder?: string
861
+ name?: string
862
+ size?: Size
863
+ showButtons?: boolean
864
+ isDisabled?: boolean
865
+ isInvalid?: boolean
866
+ locale?: string
867
+ minFractionDigits?: number
868
+ maxFractionDigits?: number
869
+ }
870
+
871
+ export interface InputNumberEmits {
872
+ (e: 'update:modelValue', value: number | null): void
873
+ (e: 'change', payload: { value: number | null }): void
874
+ }
875
+
876
+ // ============================================================
877
+ // InputOtp
878
+ // ============================================================
879
+
880
+ export interface InputOtpProps {
881
+ modelValue?: string
882
+ length?: number
883
+ mask?: boolean
884
+ maskChar?: string
885
+ integerOnly?: boolean
886
+ separator?: number
887
+ isDisabled?: boolean
888
+ isInvalid?: boolean
889
+ autoFocus?: boolean
890
+ }
891
+
892
+ export interface InputOtpEmits {
893
+ (e: 'update:modelValue', value: string): void
894
+ (e: 'change', payload: { value: string }): void
895
+ (e: 'complete', payload: { value: string }): void
896
+ }
897
+
898
+ // ============================================================
899
+ // InputSwitch
900
+ // ============================================================
901
+
902
+ export interface InputSwitchProps {
903
+ modelValue?: boolean
904
+ label?: string
905
+ name?: string
906
+ size?: Size
907
+ isDisabled?: boolean
908
+ }
909
+
910
+ export interface InputSwitchEmits {
911
+ (e: 'update:modelValue', value: boolean): void
912
+ (e: 'change', payload: { value: boolean; originalEvent: Event }): void
913
+ }
914
+
915
+ // ============================================================
916
+ // InputText
917
+ // ============================================================
918
+
919
+ export interface InputTextProps {
920
+ ariaDescribedby?: string
921
+ modelValue?: string | number
922
+ type?: 'text' | 'password' | 'email' | 'tel' | 'url' | 'search' | 'number'
923
+ placeholder?: string
924
+ name?: string
925
+ size?: Size
926
+ isDisabled?: boolean
927
+ isInvalid?: boolean
928
+ }
929
+
930
+ export interface InputTextEmits {
931
+ (e: 'update:modelValue', value: string | number): void
932
+ (e: 'input', payload: { value: string; originalEvent: Event }): void
933
+ (e: 'change', payload: { value: string; originalEvent: Event }): void
934
+ (e: 'focus', payload: { originalEvent: FocusEvent }): void
935
+ (e: 'blur', payload: { originalEvent: FocusEvent }): void
936
+ }
937
+
938
+ // ============================================================
939
+ // Knob
940
+ // ============================================================
941
+
942
+ export interface KnobProps {
943
+ modelValue?: number
944
+ min?: number
945
+ max?: number
946
+ step?: number
947
+ size?: Size
948
+ strokeWidth?: number
949
+ showValue?: boolean
950
+ valueTemplate?: string
951
+ isDisabled?: boolean
952
+ }
953
+
954
+ export interface KnobEmits {
955
+ (e: 'update:modelValue', value: number): void
956
+ (e: 'change', payload: { value: number }): void
957
+ }
958
+
959
+ // ============================================================
960
+ // ListBox
961
+ // ============================================================
962
+
963
+ export interface ListBoxProps {
964
+ modelValue?: string | number | object | unknown[] | null
965
+ options?: unknown[]
966
+ optionLabel?: string
967
+ optionValue?: string
968
+ multiple?: boolean
969
+ filter?: boolean
970
+ isDisabled?: boolean
971
+ }
972
+
973
+ export interface ListBoxEmits {
974
+ (e: 'update:modelValue', value: unknown): void
975
+ (e: 'change', payload: { value: unknown; originalEvent?: Event }): void
976
+ (e: 'filter', payload: { value: string; originalEvent: Event }): void
977
+ }
978
+
979
+ // ============================================================
980
+ // MegaMenu
981
+ // ============================================================
982
+
983
+ export interface MegaMenuProps {
984
+ model?: MenuItem[]
985
+ orientation?: Orientation
986
+ }
987
+
988
+ export interface MegaMenuEmits {
989
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
990
+ }
991
+
992
+ // ============================================================
993
+ // Menu
994
+ // ============================================================
995
+
996
+ export interface MenuProps {
997
+ model?: MenuItem[]
998
+ popup?: boolean
999
+ }
1000
+
1001
+ export interface MenuEmits {
1002
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1003
+ (e: 'show'): void
1004
+ (e: 'hide'): void
1005
+ }
1006
+
1007
+ // ============================================================
1008
+ // MenuBar
1009
+ // ============================================================
1010
+
1011
+ export interface MenuBarProps {
1012
+ model?: MenuItem[]
1013
+ }
1014
+
1015
+ export interface MenuBarEmits {
1016
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1017
+ }
1018
+
1019
+ // ============================================================
1020
+ // Message
1021
+ // ============================================================
1022
+
1023
+ export interface MessageProps {
1024
+ severity?: Severity
1025
+ closable?: boolean
1026
+ icon?: boolean
1027
+ life?: number | null
1028
+ }
1029
+
1030
+ export interface MessageEmits {
1031
+ (e: 'close'): void
1032
+ (e: 'life-end'): void
1033
+ }
1034
+
1035
+ // ============================================================
1036
+ // MeterGroup
1037
+ // ============================================================
1038
+
1039
+ export interface MeterGroupValue {
1040
+ value: number
1041
+ label?: string
1042
+ color?: 'primary' | 'success' | 'warning' | 'danger' | string
1043
+ }
1044
+
1045
+ export interface MeterGroupProps {
1046
+ values: MeterGroupValue[]
1047
+ max?: number
1048
+ orientation?: Orientation
1049
+ showLabels?: boolean
1050
+ }
1051
+
1052
+ // ============================================================
1053
+ // MultiSelect
1054
+ // ============================================================
1055
+
1056
+ export interface MultiSelectProps {
1057
+ modelValue?: unknown[]
1058
+ options?: unknown[]
1059
+ optionLabel?: string
1060
+ optionValue?: string
1061
+ placeholder?: string
1062
+ filter?: boolean
1063
+ display?: 'comma' | 'chip'
1064
+ size?: Size
1065
+ isDisabled?: boolean
1066
+ isInvalid?: boolean
1067
+ }
1068
+
1069
+ export interface MultiSelectEmits {
1070
+ (e: 'update:modelValue', value: unknown[]): void
1071
+ (e: 'change', payload: { value: unknown[] }): void
1072
+ }
1073
+
1074
+ // ============================================================
1075
+ // OrderList
1076
+ // ============================================================
1077
+
1078
+ export interface OrderListProps {
1079
+ modelValue?: any[]
1080
+ header?: string
1081
+ dataKey?: string | null
1082
+ itemKey?: string | null
1083
+ multiple?: boolean
1084
+ }
1085
+
1086
+ export interface OrderListEmits {
1087
+ (e: 'update:modelValue', value: unknown[]): void
1088
+ (e: 'reorder', payload: { value: unknown[] }): void
1089
+ (e: 'selection-change', payload: { selection: unknown[] }): void
1090
+ }
1091
+
1092
+ // ============================================================
1093
+ // OrganizationChart
1094
+ // ============================================================
1095
+
1096
+ export interface OrganizationChartProps {
1097
+ value?: object | null
1098
+ selectionMode?: 'single' | 'multiple'
1099
+ selectedKeys?: Record<string, boolean>
1100
+ expandedKeys?: Record<string, boolean>
1101
+ collapsible?: boolean
1102
+ }
1103
+
1104
+ export interface OrganizationChartEmits {
1105
+ (e: 'update:selectedKeys', value: Record<string, boolean>): void
1106
+ (e: 'update:expandedKeys', value: Record<string, boolean>): void
1107
+ (e: 'node-select', payload: { node: object }): void
1108
+ (e: 'node-unselect', payload: { node: object }): void
1109
+ (e: 'node-expand', payload: { node: object }): void
1110
+ (e: 'node-collapse', payload: { node: object }): void
1111
+ }
1112
+
1113
+ // ============================================================
1114
+ // OverlayPanel
1115
+ // ============================================================
1116
+
1117
+ export interface OverlayPanelProps {
1118
+ visible?: boolean
1119
+ appendTo?: string
1120
+ dismissable?: boolean
1121
+ showCloseIcon?: boolean
1122
+ }
1123
+
1124
+ export interface OverlayPanelEmits {
1125
+ (e: 'update:visible', value: boolean): void
1126
+ (e: 'show'): void
1127
+ (e: 'hide'): void
1128
+ }
1129
+
1130
+ // ============================================================
1131
+ // Paginator
1132
+ // ============================================================
1133
+
1134
+ export interface PaginatorProps {
1135
+ totalRecords: number
1136
+ rows?: number
1137
+ first?: number
1138
+ rowsPerPageOptions?: number[]
1139
+ pageLinkSize?: number
1140
+ showFirstLast?: boolean
1141
+ showInfo?: boolean
1142
+ }
1143
+
1144
+ export interface PaginatorEmits {
1145
+ (e: 'update:first', value: number): void
1146
+ (e: 'update:rows', value: number): void
1147
+ (e: 'page', payload: { page: number; first: number; rows: number; pageCount: number }): void
1148
+ }
1149
+
1150
+ // ============================================================
1151
+ // Panel
1152
+ // ============================================================
1153
+
1154
+ export interface PanelProps {
1155
+ header?: string
1156
+ toggleable?: boolean
1157
+ collapsed?: boolean
1158
+ }
1159
+
1160
+ export interface PanelEmits {
1161
+ (e: 'update:collapsed', value: boolean): void
1162
+ (e: 'toggle', payload: { collapsed: boolean }): void
1163
+ }
1164
+
1165
+ // ============================================================
1166
+ // PanelMenu
1167
+ // ============================================================
1168
+
1169
+ export interface PanelMenuProps {
1170
+ model?: MenuItem[]
1171
+ expandedKeys?: Record<number, boolean>
1172
+ multiple?: boolean
1173
+ }
1174
+
1175
+ export interface PanelMenuEmits {
1176
+ (e: 'update:expandedKeys', value: Record<number, boolean>): void
1177
+ (e: 'panel-open', payload: { index: number; panel: MenuItem }): void
1178
+ (e: 'panel-close', payload: { index: number; panel: MenuItem }): void
1179
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1180
+ }
1181
+
1182
+ // ============================================================
1183
+ // ParticleBackground
1184
+ // ============================================================
1185
+
1186
+ export interface ParticleBackgroundProps {
1187
+ particleCount?: number
1188
+ staticStarCount?: number
1189
+ clusterCount?: number
1190
+ starsPerCluster?: number
1191
+ particleColor?: string
1192
+ minSize?: number
1193
+ maxSize?: number
1194
+ speed?: number
1195
+ twinkle?: boolean
1196
+ parallax?: boolean
1197
+ fixed?: boolean
1198
+ }
1199
+
1200
+ // ============================================================
1201
+ // PickList
1202
+ // ============================================================
1203
+
1204
+ export interface PickListProps {
1205
+ source?: unknown[]
1206
+ target?: unknown[]
1207
+ sourceHeader?: string
1208
+ targetHeader?: string
1209
+ dataKey?: string | null
1210
+ labelKey?: string
1211
+ isDisabled?: boolean
1212
+ }
1213
+
1214
+ export interface PickListEmits {
1215
+ (e: 'update:source', value: unknown[]): void
1216
+ (e: 'update:target', value: unknown[]): void
1217
+ (e: 'move-to-target', payload: { items: unknown[] }): void
1218
+ (e: 'move-to-source', payload: { items: unknown[] }): void
1219
+ }
1220
+
1221
+ // ============================================================
1222
+ // PopOver
1223
+ // ============================================================
1224
+
1225
+ export interface PopOverProps {
1226
+ visible?: boolean
1227
+ trigger?: 'hover' | 'click'
1228
+ position?: Position
1229
+ showDelay?: number
1230
+ hideDelay?: number
1231
+ disabled?: boolean
1232
+ }
1233
+
1234
+ export interface PopOverEmits {
1235
+ (e: 'update:visible', value: boolean): void
1236
+ (e: 'show'): void
1237
+ (e: 'hide'): void
1238
+ }
1239
+
1240
+ // ============================================================
1241
+ // ProgressBar
1242
+ // ============================================================
1243
+
1244
+ export interface ProgressBarProps {
1245
+ value?: number
1246
+ showValue?: boolean
1247
+ mode?: 'determinate' | 'indeterminate'
1248
+ }
1249
+
1250
+ // ============================================================
1251
+ // ProgressSpinner
1252
+ // ============================================================
1253
+
1254
+ export interface ProgressSpinnerProps {
1255
+ strokeWidth?: number | string
1256
+ fill?: string
1257
+ animationDuration?: string
1258
+ }
1259
+
1260
+ // ============================================================
1261
+ // RadioButton
1262
+ // ============================================================
1263
+
1264
+ export interface RadioButtonProps {
1265
+ modelValue?: string | number | boolean | object | null
1266
+ value: string | number | boolean | object
1267
+ label?: string
1268
+ name?: string
1269
+ size?: Size
1270
+ isDisabled?: boolean
1271
+ isInvalid?: boolean
1272
+ }
1273
+
1274
+ export interface RadioButtonEmits {
1275
+ (e: 'update:modelValue', value: string | number | boolean | object): void
1276
+ (e: 'change', payload: { value: string | number | boolean | object; originalEvent: Event }): void
1277
+ }
1278
+
1279
+ // ============================================================
1280
+ // Rating
1281
+ // ============================================================
1282
+
1283
+ export interface RatingProps {
1284
+ ariaLabel?: string
1285
+ modelValue?: number | null
1286
+ stars?: number
1287
+ readonly?: boolean
1288
+ isDisabled?: boolean
1289
+ cancel?: boolean
1290
+ }
1291
+
1292
+ export interface RatingEmits {
1293
+ (e: 'update:modelValue', value: number | null): void
1294
+ (e: 'change', payload: { value: number | null }): void
1295
+ }
1296
+
1297
+ // ============================================================
1298
+ // Row
1299
+ // ============================================================
1300
+
1301
+ export interface RowProps {
1302
+ isSelected?: boolean
1303
+ isStriped?: boolean
1304
+ isHoverable?: boolean
1305
+ }
1306
+
1307
+ // ============================================================
1308
+ // ScrollPanel
1309
+ // ============================================================
1310
+
1311
+ export interface ScrollPanelProps {
1312
+ style?: Record<string, string | number> | string
1313
+ step?: number
1314
+ }
1315
+
1316
+ // ============================================================
1317
+ // ScrollTop
1318
+ // ============================================================
1319
+
1320
+ export interface ScrollTopProps {
1321
+ threshold?: number
1322
+ behavior?: 'smooth' | 'auto' | 'instant'
1323
+ target?: string
1324
+ }
1325
+
1326
+ export interface ScrollTopEmits {
1327
+ (e: 'click'): void
1328
+ }
1329
+
1330
+ // ============================================================
1331
+ // Select
1332
+ // ============================================================
1333
+
1334
+ export interface SelectProps {
1335
+ ariaDescribedby?: string
1336
+ modelValue?: string | number | boolean | object | null
1337
+ options?: unknown[]
1338
+ optionLabel?: string
1339
+ optionValue?: string
1340
+ placeholder?: string
1341
+ name?: string
1342
+ size?: Size
1343
+ isDisabled?: boolean
1344
+ isInvalid?: boolean
1345
+ }
1346
+
1347
+ export interface SelectEmits {
1348
+ (e: 'update:modelValue', value: unknown): void
1349
+ (e: 'change', payload: { value: unknown; originalEvent: Event }): void
1350
+ }
1351
+
1352
+ // ============================================================
1353
+ // SelectButton
1354
+ // ============================================================
1355
+
1356
+ export interface SelectButtonProps {
1357
+ modelValue?: string | number | object | unknown[] | null
1358
+ options: unknown[]
1359
+ optionLabel?: string | ((option: unknown) => string) | null
1360
+ optionValue?: string | ((option: unknown) => unknown) | null
1361
+ optionDisabled?: string | ((option: unknown) => boolean) | null
1362
+ multiple?: boolean
1363
+ allowEmpty?: boolean
1364
+ isDisabled?: boolean
1365
+ ariaLabel?: string
1366
+ }
1367
+
1368
+ export interface SelectButtonEmits {
1369
+ (e: 'update:modelValue', value: unknown): void
1370
+ (e: 'change', payload: { originalEvent: Event; value: unknown }): void
1371
+ }
1372
+
1373
+ // ============================================================
1374
+ // Sidebar
1375
+ // ============================================================
1376
+
1377
+ export interface SidebarProps {
1378
+ visible?: boolean
1379
+ header?: string
1380
+ position?: 'left' | 'right'
1381
+ fullScreen?: boolean
1382
+ closable?: boolean
1383
+ dismissable?: boolean
1384
+ closeOnEscape?: boolean
1385
+ blockScroll?: boolean
1386
+ }
1387
+
1388
+ export interface SidebarEmits {
1389
+ (e: 'update:visible', value: boolean): void
1390
+ (e: 'show'): void
1391
+ (e: 'hide'): void
1392
+ }
1393
+
1394
+ // ============================================================
1395
+ // Skeleton
1396
+ // ============================================================
1397
+
1398
+ export interface SkeletonProps {
1399
+ shape?: 'rectangle' | 'circle'
1400
+ width?: string | null
1401
+ height?: string | null
1402
+ borderRadius?: string | null
1403
+ animation?: 'wave' | 'none'
1404
+ }
1405
+
1406
+ // ============================================================
1407
+ // Slider
1408
+ // ============================================================
1409
+
1410
+ export interface SliderProps {
1411
+ ariaLabel?: string
1412
+ ariaDescribedby?: string
1413
+ modelValue?: number
1414
+ min?: number
1415
+ max?: number
1416
+ step?: number
1417
+ name?: string
1418
+ isDisabled?: boolean
1419
+ }
1420
+
1421
+ export interface SliderEmits {
1422
+ (e: 'update:modelValue', value: number): void
1423
+ (e: 'change', payload: { value: number; originalEvent: Event }): void
1424
+ }
1425
+
1426
+ // ============================================================
1427
+ // SpeedDial
1428
+ // ============================================================
1429
+
1430
+ export interface SpeedDialItem {
1431
+ label?: string
1432
+ icon?: string
1433
+ command?: (event: { originalEvent: Event; item: SpeedDialItem }) => void
1434
+ [key: string]: unknown
1435
+ }
1436
+
1437
+ export interface SpeedDialProps {
1438
+ model?: SpeedDialItem[]
1439
+ direction?: 'up' | 'down' | 'left' | 'right'
1440
+ type?: 'linear' | 'circle' | 'semi-circle' | 'quarter-circle'
1441
+ radius?: number
1442
+ showLabels?: boolean
1443
+ openOnHover?: boolean
1444
+ }
1445
+
1446
+ export interface SpeedDialEmits {
1447
+ (e: 'click', item: SpeedDialItem): void
1448
+ (e: 'show'): void
1449
+ (e: 'hide'): void
1450
+ }
1451
+
1452
+ // ============================================================
1453
+ // SplitButton
1454
+ // ============================================================
1455
+
1456
+ export interface SplitButtonProps {
1457
+ label?: string
1458
+ icon?: string
1459
+ model?: MenuItem[]
1460
+ severity?: 'primary' | 'secondary' | 'outlined'
1461
+ size?: Size
1462
+ isDisabled?: boolean
1463
+ }
1464
+
1465
+ export interface SplitButtonEmits {
1466
+ (e: 'click', event: Event): void
1467
+ }
1468
+
1469
+ // ============================================================
1470
+ // Splitter
1471
+ // ============================================================
1472
+
1473
+ export interface SplitterProps {
1474
+ layout?: Orientation
1475
+ gutterSize?: number
1476
+ stateKey?: string | null
1477
+ stateStorage?: 'local' | 'session'
1478
+ }
1479
+
1480
+ export interface SplitterEmits {
1481
+ (e: 'resizestart', payload: { originalEvent: Event; sizes: number[] }): void
1482
+ (e: 'resize', payload: { originalEvent: Event; sizes: number[] }): void
1483
+ (e: 'resizeend', payload: { originalEvent: Event; sizes: number[] }): void
1484
+ }
1485
+
1486
+ // ============================================================
1487
+ // SplitterPanel
1488
+ // ============================================================
1489
+
1490
+ export interface SplitterPanelProps {
1491
+ size?: number
1492
+ minSize?: number
1493
+ }
1494
+
1495
+ // ============================================================
1496
+ // Steps
1497
+ // ============================================================
1498
+
1499
+ export interface StepItem {
1500
+ label: string
1501
+ disabled?: boolean
1502
+ [key: string]: unknown
1503
+ }
1504
+
1505
+ export interface StepsProps {
1506
+ model?: StepItem[]
1507
+ activeIndex?: number
1508
+ isReadonly?: boolean
1509
+ }
1510
+
1511
+ export interface StepsEmits {
1512
+ (e: 'update:activeIndex', value: number): void
1513
+ (e: 'step-click', payload: { originalEvent: Event; item: StepItem; index: number }): void
1514
+ }
1515
+
1516
+ // ============================================================
1517
+ // TabMenu
1518
+ // ============================================================
1519
+
1520
+ export interface TabMenuProps {
1521
+ model?: MenuItem[]
1522
+ activeIndex?: number
1523
+ }
1524
+
1525
+ export interface TabMenuEmits {
1526
+ (e: 'update:activeIndex', value: number): void
1527
+ (e: 'tab-change', payload: { originalEvent: Event; item: MenuItem; index: number }): void
1528
+ }
1529
+
1530
+ // ============================================================
1531
+ // Tabs
1532
+ // ============================================================
1533
+
1534
+ export interface TabsProps {
1535
+ activeIndex?: number
1536
+ ariaLabel?: string
1537
+ }
1538
+
1539
+ export interface TabsEmits {
1540
+ (e: 'update:activeIndex', value: number): void
1541
+ (e: 'tabChange', payload: { originalEvent: Event; index: number }): void
1542
+ (e: 'tabClick', payload: { originalEvent: Event; index: number }): void
1543
+ }
1544
+
1545
+ // ============================================================
1546
+ // TabPanel
1547
+ // ============================================================
1548
+
1549
+ export interface TabPanelProps {
1550
+ header: string
1551
+ disabled?: boolean
1552
+ }
1553
+
1554
+ // ============================================================
1555
+ // Tag
1556
+ // ============================================================
1557
+
1558
+ export interface TagProps {
1559
+ value?: string | null
1560
+ color?: 'brand' | 'accent' | 'neutral' | 'success' | 'warning' | 'danger' | 'info'
1561
+ icon?: string | null
1562
+ rounded?: boolean
1563
+ }
1564
+
1565
+ // ============================================================
1566
+ // Terminal
1567
+ // ============================================================
1568
+
1569
+ export interface TerminalProps {
1570
+ prompt?: string
1571
+ welcomeMessage?: string | null
1572
+ ariaLabel?: string
1573
+ }
1574
+
1575
+ export interface TerminalEmits {
1576
+ (e: 'command', text: string, callback: (response: string) => void): void
1577
+ }
1578
+
1579
+ // ============================================================
1580
+ // Textarea
1581
+ // ============================================================
1582
+
1583
+ export interface TextareaProps {
1584
+ ariaDescribedby?: string
1585
+ modelValue?: string
1586
+ rows?: number | string
1587
+ cols?: number | string
1588
+ placeholder?: string
1589
+ isDisabled?: boolean
1590
+ isInvalid?: boolean
1591
+ autoResize?: boolean
1592
+ }
1593
+
1594
+ export interface TextareaEmits {
1595
+ (e: 'update:modelValue', value: string): void
1596
+ (e: 'input', payload: { value: string; originalEvent: Event }): void
1597
+ }
1598
+
1599
+ // ============================================================
1600
+ // TieredMenu
1601
+ // ============================================================
1602
+
1603
+ export interface TieredMenuProps {
1604
+ model?: MenuItem[]
1605
+ popup?: boolean
1606
+ }
1607
+
1608
+ export interface TieredMenuEmits {
1609
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1610
+ (e: 'show', event: Event): void
1611
+ (e: 'hide'): void
1612
+ }
1613
+
1614
+ // ============================================================
1615
+ // TieredMenuSub
1616
+ // ============================================================
1617
+
1618
+ export interface TieredMenuSubProps {
1619
+ items?: MenuItem[]
1620
+ }
1621
+
1622
+ export interface TieredMenuSubEmits {
1623
+ (e: 'item-click', payload: { originalEvent: Event; item: MenuItem }): void
1624
+ }
1625
+
1626
+ // ============================================================
1627
+ // Timeline
1628
+ // ============================================================
1629
+
1630
+ export interface TimelineEvent {
1631
+ color?: 'primary' | 'success' | 'warning' | 'danger' | string
1632
+ [key: string]: unknown
1633
+ }
1634
+
1635
+ export interface TimelineProps {
1636
+ value: TimelineEvent[]
1637
+ align?: 'left' | 'right' | 'alternate'
1638
+ layout?: Orientation
1639
+ }
1640
+
1641
+ // ============================================================
1642
+ // Toast
1643
+ // ============================================================
1644
+
1645
+ export type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center'
1646
+
1647
+ export interface ToastMessage {
1648
+ severity?: 'default' | Severity
1649
+ summary?: string
1650
+ detail?: string
1651
+ closable?: boolean
1652
+ life?: number
1653
+ group?: string | null
1654
+ [key: string]: unknown
1655
+ }
1656
+
1657
+ export interface ToastProps {
1658
+ position?: ToastPosition
1659
+ group?: string | null
1660
+ showIcon?: boolean
1661
+ showProgress?: boolean
1662
+ }
1663
+
1664
+ // ============================================================
1665
+ // ToggleButton
1666
+ // ============================================================
1667
+
1668
+ export interface ToggleButtonProps {
1669
+ modelValue?: boolean
1670
+ onLabel?: string
1671
+ offLabel?: string
1672
+ onIcon?: string
1673
+ offIcon?: string
1674
+ size?: Size
1675
+ isDisabled?: boolean
1676
+ }
1677
+
1678
+ export interface ToggleButtonEmits {
1679
+ (e: 'update:modelValue', value: boolean): void
1680
+ (e: 'change', payload: { value: boolean; originalEvent: Event }): void
1681
+ }
1682
+
1683
+ // ============================================================
1684
+ // ToggleSwitch
1685
+ // ============================================================
1686
+
1687
+ export interface ToggleSwitchProps {
1688
+ modelValue?: boolean
1689
+ name?: string
1690
+ isDisabled?: boolean
1691
+ }
1692
+
1693
+ export interface ToggleSwitchEmits {
1694
+ (e: 'update:modelValue', value: boolean): void
1695
+ (e: 'change', payload: { value: boolean; originalEvent: Event }): void
1696
+ }
1697
+
1698
+ // ============================================================
1699
+ // Toolbar
1700
+ // ============================================================
1701
+
1702
+ // Toolbar has no props — it's a slot-only layout component
1703
+ export interface ToolbarProps {}
1704
+
1705
+ // ============================================================
1706
+ // Tooltip
1707
+ // ============================================================
1708
+
1709
+ export interface TooltipProps {
1710
+ content: string
1711
+ position?: Position
1712
+ showDelay?: number
1713
+ hideDelay?: number
1714
+ disabled?: boolean
1715
+ }
1716
+
1717
+ // ============================================================
1718
+ // Tree
1719
+ // ============================================================
1720
+
1721
+ export interface TreeProps {
1722
+ modelValue?: string | number | (string | number)[] | null
1723
+ nodes?: TreeNode[]
1724
+ expandedKeys?: (string | number)[]
1725
+ selectionMode?: 'single' | 'multiple' | 'checkbox' | null
1726
+ filter?: boolean
1727
+ labelField?: string
1728
+ keyField?: string
1729
+ childrenField?: string
1730
+ isDisabled?: boolean
1731
+ }
1732
+
1733
+ export interface TreeEmits {
1734
+ (e: 'update:modelValue', value: unknown): void
1735
+ (e: 'update:expandedKeys', value: (string | number)[]): void
1736
+ (e: 'node-select', payload: { node: TreeNode; key: string | number; selectedKeys?: (string | number)[] }): void
1737
+ (e: 'node-expand', payload: { node: TreeNode; key: string | number }): void
1738
+ (e: 'node-collapse', payload: { node: TreeNode; key: string | number }): void
1739
+ (e: 'filter', payload: { value: string }): void
1740
+ }
1741
+
1742
+ // ============================================================
1743
+ // TreeSelect
1744
+ // ============================================================
1745
+
1746
+ export interface TreeSelectProps {
1747
+ modelValue?: string | number | (string | number)[] | object | null
1748
+ options?: TreeNode[]
1749
+ selectionMode?: 'single' | 'checkbox'
1750
+ placeholder?: string
1751
+ filter?: boolean
1752
+ labelField?: string
1753
+ keyField?: string
1754
+ childrenField?: string
1755
+ size?: Size
1756
+ isDisabled?: boolean
1757
+ isInvalid?: boolean
1758
+ }
1759
+
1760
+ export interface TreeSelectEmits {
1761
+ (e: 'update:modelValue', value: unknown): void
1762
+ (e: 'change', payload: { value: unknown; node?: TreeNode }): void
1763
+ }
1764
+
1765
+ // ============================================================
1766
+ // TreeTable
1767
+ // ============================================================
1768
+
1769
+ export interface TreeTableColumn {
1770
+ field: string
1771
+ header: string
1772
+ style?: Record<string, string>
1773
+ [key: string]: unknown
1774
+ }
1775
+
1776
+ export interface TreeTableProps {
1777
+ modelValue?: string | number | (string | number)[] | null
1778
+ nodes?: TreeNode[]
1779
+ columns?: TreeTableColumn[]
1780
+ expandedKeys?: (string | number)[]
1781
+ selectionMode?: 'single' | 'multiple' | 'checkbox' | null
1782
+ keyField?: string
1783
+ childrenField?: string
1784
+ striped?: boolean
1785
+ isDisabled?: boolean
1786
+ }
1787
+
1788
+ export interface TreeTableEmits {
1789
+ (e: 'update:modelValue', value: unknown): void
1790
+ (e: 'update:expandedKeys', value: (string | number)[]): void
1791
+ (e: 'node-select', payload: { node: TreeNode; key: string | number; selectedKeys?: (string | number)[] }): void
1792
+ (e: 'node-expand', payload: { node: TreeNode; key: string | number }): void
1793
+ (e: 'node-collapse', payload: { node: TreeNode; key: string | number }): void
1794
+ }
1795
+
1796
+ // ============================================================
1797
+ // VirtualScroller
1798
+ // ============================================================
1799
+
1800
+ export interface VirtualScrollerProps {
1801
+ items?: unknown[]
1802
+ itemSize?: number
1803
+ scrollHeight?: string
1804
+ orientation?: Orientation
1805
+ numToleratedItems?: number
1806
+ loading?: boolean
1807
+ striped?: boolean
1808
+ showBorder?: boolean
1809
+ dataKey?: string | null
1810
+ }
1811
+
1812
+ export interface VirtualScrollerEmits {
1813
+ (e: 'scroll', payload: { originalEvent: Event; scrollPosition: number }): void
1814
+ (e: 'scroll-index-change', payload: { first: number; last: number }): void
1815
+ }
1816
+
1817
+ // ============================================================
1818
+ // Website Components
1819
+ // ============================================================
1820
+
1821
+ // Hero
1822
+ export interface HeroProps {
1823
+ title?: string
1824
+ subtitle?: string
1825
+ alignment?: 'left' | 'center' | 'right'
1826
+ backgroundImage?: string
1827
+ overlay?: boolean
1828
+ fullHeight?: boolean
1829
+ }
1830
+
1831
+ // FeatureGrid
1832
+ export interface FeatureItem {
1833
+ icon?: string
1834
+ title: string
1835
+ description: string
1836
+ }
1837
+
1838
+ export interface FeatureGridProps {
1839
+ columns?: 2 | 3 | 4
1840
+ features?: FeatureItem[]
1841
+ variant?: 'card' | 'minimal' | 'icon-top'
1842
+ }
1843
+
1844
+ // PricingTable
1845
+ export interface PricingCardProps {
1846
+ name: string
1847
+ price: string | number
1848
+ currency?: string
1849
+ interval?: 'month' | 'year'
1850
+ features?: string[]
1851
+ highlighted?: boolean
1852
+ ctaLabel?: string
1853
+ ctaAction?: () => void
1854
+ }
1855
+
1856
+ export interface PricingTableProps {
1857
+ plans?: PricingCardProps[]
1858
+ columns?: 2 | 3 | 4
1859
+ }
1860
+
1861
+ // Testimonial
1862
+ export interface TestimonialProps {
1863
+ quote: string
1864
+ author: string
1865
+ role?: string
1866
+ company?: string
1867
+ avatar?: string
1868
+ rating?: number
1869
+ variant?: 'card' | 'minimal'
1870
+ }
1871
+
1872
+ // Footer
1873
+ export interface FooterLink {
1874
+ label: string
1875
+ href: string
1876
+ }
1877
+
1878
+ export interface FooterColumn {
1879
+ title: string
1880
+ links: FooterLink[]
1881
+ }
1882
+
1883
+ export interface FooterSocialLink {
1884
+ label: string
1885
+ href: string
1886
+ icon: string
1887
+ }
1888
+
1889
+ export interface FooterProps {
1890
+ columns?: FooterColumn[]
1891
+ logo?: string
1892
+ copyright?: string
1893
+ socialLinks?: FooterSocialLink[]
1894
+ }
1895
+
1896
+ // Section
1897
+ export interface SectionProps {
1898
+ title?: string
1899
+ subtitle?: string
1900
+ variant?: 'default' | 'muted' | 'accent' | 'dark'
1901
+ padding?: 'sm' | 'md' | 'lg' | 'xl'
1902
+ id?: string
1903
+ }
1904
+
1905
+ // CTA
1906
+ export interface CTAProps {
1907
+ title?: string
1908
+ description?: string
1909
+ variant?: 'banner' | 'card' | 'inline'
1910
+ alignment?: 'left' | 'center' | 'right'
1911
+ }
1912
+
1913
+ // LogoCloud
1914
+ export interface LogoItem {
1915
+ src: string
1916
+ alt: string
1917
+ href?: string
1918
+ }
1919
+
1920
+ export interface LogoCloudProps {
1921
+ logos?: LogoItem[]
1922
+ title?: string
1923
+ grayscale?: boolean
1924
+ columns?: number
1925
+ }
1926
+
1927
+ // Stats
1928
+ export interface StatItem {
1929
+ value: string | number
1930
+ label: string
1931
+ prefix?: string
1932
+ suffix?: string
1933
+ icon?: string
1934
+ }
1935
+
1936
+ export interface StatsProps {
1937
+ stats?: StatItem[]
1938
+ columns?: 2 | 3 | 4
1939
+ }
1940
+
1941
+ // FAQ
1942
+ export interface FAQItem {
1943
+ question: string
1944
+ answer: string
1945
+ }
1946
+
1947
+ export interface FAQProps {
1948
+ items?: FAQItem[]
1949
+ variant?: 'default' | 'separated' | 'bordered'
1950
+ }