@ktjs/mui 0.20.2 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,1575 +1,276 @@
1
- interface KTMuiAlertProps {
2
- class?: string;
3
- style?: string | Partial<CSSStyleDeclaration>;
4
- children: string | HTMLElement | JSX.Element | Array<string | HTMLElement | JSX.Element>;
5
- severity?: 'error' | 'warning' | 'info' | 'success';
6
- variant?: 'standard' | 'filled' | 'outlined';
7
- icon?: HTMLElement | false;
8
- 'kt:close'?: () => void;
9
- }
10
- declare function Alert(props: KTMuiAlertProps): JSX.Element;
1
+ import { KTReactive, KTRawContent, KTMaybeReactive as KTMaybeReactive$1, JSX } from '@ktjs/core';
11
2
 
12
- interface KTMuiButtonProps {
13
- class?: string;
14
- style?: string | Partial<CSSStyleDeclaration>;
15
- children?: string | HTMLElement | JSX.Element;
16
- variant?: 'contained' | 'outlined' | 'text';
17
- color?: 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success';
18
- size?: 'small' | 'medium' | 'large';
19
- disabled?: boolean;
20
- fullWidth?: boolean;
21
- iconOnly?: boolean;
22
- startIcon?: HTMLElement | JSX.Element;
23
- endIcon?: HTMLElement | JSX.Element;
24
- type?: 'button' | 'submit' | 'reset';
25
- 'on:click'?: (event: Event) => void;
3
+ interface KTMuiProps {
4
+ class?: string | KTReactive<string>;
5
+ style?: string | Partial<CSSStyleDeclaration> | KTReactive<string> | KTReactive<Partial<CSSStyleDeclaration>>;
6
+ children?: KTRawContent;
26
7
  }
27
- /**
28
- * Button component - mimics MUI Button appearance and behavior
29
- */
30
- declare function Button(props: KTMuiButtonProps): JSX.Element;
31
8
 
32
- type otherstring = string & {};
9
+ type KTMaybeReactive<T> = T | KTReactive<T>;
33
10
 
34
- type RefChangeHandler<T> = (newValue: T, oldValue: T) => void;
35
- declare class KTRef<T> {
11
+ interface KTMuiAlertProps extends KTMuiProps {
12
+ children: NonNullable<KTMuiProps['children']>;
36
13
  /**
37
- * Indicates that this is a KTRef instance
14
+ * The severity of the alert. It defines the color and icon used in the alert.
15
+ * - 'error': Red color, error icon.
16
+ * - 'warning': Orange color, warning icon.
17
+ * - 'info': Blue color, info icon.
18
+ * - 'success': Green color, success icon.
19
+ * @default 'info'
38
20
  */
39
- isKT: boolean;
40
- constructor(_value: T, _onChanges: Array<RefChangeHandler<T>>);
21
+ severity?: KTMaybeReactive$1<'error' | 'warning' | 'info' | 'success'>;
41
22
  /**
42
- * If new value and old value are both nodes, the old one will be replaced in the DOM
23
+ * The variant to use. It defines the style of the alert.
24
+ * - 'standard': The default style of the alert.
25
+ * - 'filled': A filled version of the alert with a background color.
26
+ * - 'outlined': An outlined version of the alert with a border.
27
+ * @default 'standard'
43
28
  */
44
- get value(): T;
45
- set value(newValue: T);
46
- addOnChange(callback: RefChangeHandler<T>): void;
47
- removeOnChange(callback: RefChangeHandler<T>): boolean;
29
+ variant?: KTMaybeReactive$1<'standard' | 'filled' | 'outlined'>;
30
+ /**
31
+ * The icon to display in the alert. It can be a custom icon or a boolean value.
32
+ * - If `true`, the default icon based on the severity will be displayed.
33
+ * - If `false`, no icon will be displayed.
34
+ * - If a custom JSX element is provided, it will be used as the icon.
35
+ * @default true
36
+ */
37
+ icon?: KTMaybeReactive$1<JSX.Element | boolean>;
38
+ /**
39
+ * The size of the icon. It can be any valid CSS size value (e.g., '24px', '1.5em', '2rem').
40
+ * - This prop is **only** applicable when the `icon` prop is set to `true`.
41
+ */
42
+ iconSize?: KTMaybeReactive$1<string>;
43
+ /**
44
+ * Callback fired when the component requests to be closed. If provided, a close icon button will be displayed.
45
+ */
46
+ 'on:close'?: () => void;
48
47
  }
48
+ declare function Alert(props: KTMuiAlertProps): JSX.Element;
49
49
 
50
- type SingleContent = KTRef<any> | HTMLElement | Element | Node | string | number | boolean | null | undefined;
51
- type KTAvailableContent = SingleContent | KTAvailableContent[];
52
- type KTRawContent = KTAvailableContent | Promise<KTAvailableContent>;
53
-
50
+ interface KTMuiButtonProps extends KTMuiProps {
51
+ variant?: KTMaybeReactive<'contained' | 'outlined' | 'text'>;
52
+ color?: KTMaybeReactive<'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success'>;
53
+ size?: KTMaybeReactive<'small' | 'medium' | 'large'>;
54
+ disabled?: KTMaybeReactive<boolean>;
55
+ fullWidth?: KTMaybeReactive<boolean>;
56
+ iconOnly?: KTMaybeReactive<boolean>;
57
+ startIcon?: KTMaybeReactive<JSX.Element>;
58
+ endIcon?: KTMaybeReactive<JSX.Element>;
59
+ type?: KTMaybeReactive<'button' | 'submit' | 'reset'>;
60
+ 'on:click'?: (e: MouseEvent) => void;
61
+ 'on:dblclick'?: (e: MouseEvent) => void;
62
+ }
54
63
  /**
55
- * Used to create enhanced HTML elements
64
+ * Button component - mimics MUI Button appearance and behavior
56
65
  */
57
- interface KTBaseAttribute {
58
- [k: string]: any;
59
-
60
- // # kt-specific attributes
61
- ref?: KTRef<JSX.Element>;
62
- 'k-if'?: any;
63
-
64
- // # normal HTML attributes
65
- id?: string;
66
- class?: string;
67
- className?: string;
68
- style?: string | Partial<CSSStyleDeclaration>;
69
-
70
- type?:
71
- | 'text'
72
- | 'password'
73
- | 'email'
74
- | 'number'
75
- | 'tel'
76
- | 'url'
77
- | 'search'
78
- | 'date'
79
- | 'datetime-local'
80
- | 'time'
81
- | 'month'
82
- | 'week'
83
- | 'color'
84
- | 'range'
85
- | 'file'
86
- | 'checkbox'
87
- | 'radio'
88
- | 'hidden'
89
- | 'submit'
90
- | 'reset'
91
- | 'button'
92
- | 'image'
93
- | otherstring;
94
- for?: string;
95
-
96
- name?: string;
97
- title?: string;
98
- placeholder?: string;
99
- contenteditable?: boolean;
100
- value?: any;
101
- valueAsDate?: Date;
102
- valueAsNumber?: number;
103
- label?: string;
104
- disabled?: boolean;
105
-
106
- min?: string | number;
107
- max?: string | number;
108
- step?: string | number;
109
-
110
- selected?: boolean;
111
- checked?: boolean;
112
-
113
- action?: string;
114
- method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
115
- }
116
-
117
- type KTPrefixedEventHandlers = {
118
- [EventName in keyof HTMLElementEventMap as `on:${EventName}`]?: (ev: HTMLElementEventMap[EventName]) => void;
119
- };
120
-
121
- type KTAttribute = KTBaseAttribute & KTPrefixedEventHandlers;
122
-
123
- // Base events available to all HTML elements
124
- interface BaseAttr {
125
- [k: string]: any;
126
-
127
- // # base attributes
128
- class?: string;
129
- className?: string;
130
- style?: string | Partial<CSSStyleDeclaration>;
131
-
132
- // # Events
133
- // Mouse events
134
- 'on:click'?: (ev: PointerEvent) => void;
135
- 'on:dblclick'?: (ev: PointerEvent) => void;
136
- 'on:mousedown'?: (ev: PointerEvent) => void;
137
- 'on:mouseup'?: (ev: MouseEvent) => void;
138
- 'on:mousemove'?: (ev: MouseEvent) => void;
139
- 'on:mouseenter'?: (ev: MouseEvent) => void;
140
- 'on:mouseleave'?: (ev: MouseEvent) => void;
141
- 'on:mouseover'?: (ev: MouseEvent) => void;
142
- 'on:mouseout'?: (ev: MouseEvent) => void;
143
- 'on:contextmenu'?: (ev: PointerEvent) => void;
144
-
145
- // Keyboard events
146
- 'on:keydown'?: (ev: KeyboardEvent) => void;
147
- 'on:keyup'?: (ev: KeyboardEvent) => void;
148
- 'on:keypress'?: (ev: KeyboardEvent) => void;
149
-
150
- // Focus events
151
- 'on:focus'?: (ev: FocusEvent) => void;
152
- 'on:blur'?: (ev: FocusEvent) => void;
153
- 'on:focusin'?: (ev: FocusEvent) => void;
154
- 'on:focusout'?: (ev: FocusEvent) => void;
155
-
156
- // Input events
157
- 'on:input'?: (ev: Event) => void;
158
- 'on:change'?: (ev: Event) => void;
159
- 'on:beforeinput'?: (ev: InputEvent) => void;
160
-
161
- // Drag events
162
- 'on:drag'?: (ev: DragEvent) => void;
163
- 'on:dragstart'?: (ev: DragEvent) => void;
164
- 'on:dragend'?: (ev: DragEvent) => void;
165
- 'on:dragenter'?: (ev: DragEvent) => void;
166
- 'on:dragleave'?: (ev: DragEvent) => void;
167
- 'on:dragover'?: (ev: DragEvent) => void;
168
- 'on:drop'?: (ev: DragEvent) => void;
169
-
170
- // Clipboard events
171
- 'on:copy'?: (ev: ClipboardEvent) => void;
172
- 'on:cut'?: (ev: ClipboardEvent) => void;
173
- 'on:paste'?: (ev: ClipboardEvent) => void;
174
-
175
- // Touch events
176
- 'on:touchstart'?: (ev: TouchEvent) => void;
177
- 'on:touchmove'?: (ev: TouchEvent) => void;
178
- 'on:touchend'?: (ev: TouchEvent) => void;
179
- 'on:touchcancel'?: (ev: TouchEvent) => void;
180
-
181
- // Wheel event
182
- 'on:wheel'?: (ev: WheelEvent) => void;
183
-
184
- // Animation events
185
- 'on:animationstart'?: (ev: AnimationEvent) => void;
186
- 'on:animationend'?: (ev: AnimationEvent) => void;
187
- 'on:animationiteration'?: (ev: AnimationEvent) => void;
188
-
189
- // Transition events
190
- 'on:transitionstart'?: (ev: TransitionEvent) => void;
191
- 'on:transitionend'?: (ev: TransitionEvent) => void;
192
- 'on:transitionrun'?: (ev: TransitionEvent) => void;
193
- 'on:transitioncancel'?: (ev: TransitionEvent) => void;
194
-
195
- // Pointer events
196
- 'on:pointerdown'?: (ev: PointerEvent) => void;
197
- 'on:pointerup'?: (ev: PointerEvent) => void;
198
- 'on:pointermove'?: (ev: PointerEvent) => void;
199
- 'on:pointerenter'?: (ev: PointerEvent) => void;
200
- 'on:pointerleave'?: (ev: PointerEvent) => void;
201
- 'on:pointerover'?: (ev: PointerEvent) => void;
202
- 'on:pointerout'?: (ev: PointerEvent) => void;
203
- 'on:pointercancel'?: (ev: PointerEvent) => void;
204
- 'on:gotpointercapture'?: (ev: PointerEvent) => void;
205
- 'on:lostpointercapture'?: (ev: PointerEvent) => void;
206
-
207
- // Selection events
208
- 'on:select'?: (ev: Event) => void;
209
- 'on:selectstart'?: (ev: Event) => void;
210
-
211
- // Scroll event
212
- 'on:scroll'?: (ev: Event) => void;
213
-
214
- // Resize event
215
- 'on:resize'?: (ev: UIEvent) => void;
216
- }
217
-
218
- // Form-specific events
219
- interface FormElementEvents {
220
- 'on:submit'?: (ev: SubmitEvent) => void;
221
- 'on:reset'?: (ev: Event) => void;
222
- 'on:invalid'?: (ev: Event) => void;
223
- }
224
-
225
- // Media-specific events
226
- interface MediaElementEvents {
227
- 'on:play'?: (ev: Event) => void;
228
- 'on:pause'?: (ev: Event) => void;
229
- 'on:playing'?: (ev: Event) => void;
230
- 'on:ended'?: (ev: Event) => void;
231
- 'on:canplay'?: (ev: Event) => void;
232
- 'on:canplaythrough'?: (ev: Event) => void;
233
- 'on:durationchange'?: (ev: Event) => void;
234
- 'on:emptied'?: (ev: Event) => void;
235
- 'on:loadeddata'?: (ev: Event) => void;
236
- 'on:loadedmetadata'?: (ev: Event) => void;
237
- 'on:loadstart'?: (ev: Event) => void;
238
- 'on:progress'?: (ev: ProgressEvent) => void;
239
- 'on:ratechange'?: (ev: Event) => void;
240
- 'on:seeked'?: (ev: Event) => void;
241
- 'on:seeking'?: (ev: Event) => void;
242
- 'on:stalled'?: (ev: Event) => void;
243
- 'on:suspend'?: (ev: Event) => void;
244
- 'on:timeupdate'?: (ev: Event) => void;
245
- 'on:volumechange'?: (ev: Event) => void;
246
- 'on:waiting'?: (ev: Event) => void;
247
- 'on:abort'?: (ev: UIEvent) => void;
248
- 'on:error'?: (ev: ErrorEvent) => void;
249
- }
250
-
251
- // Details-specific events
252
- interface DetailsElementEvents {
253
- 'on:toggle'?: (ev: Event) => void;
254
- }
255
-
256
- // Dialog-specific events
257
- interface DialogElementEvents {
258
- 'on:cancel'?: (ev: Event) => void;
259
- 'on:close'?: (ev: Event) => void;
260
- }
261
-
262
- // Image-specific events
263
- interface ImageElementEvents {
264
- 'on:load'?: (ev: Event) => void;
265
- 'on:error'?: (ev: ErrorEvent) => void;
266
- }
267
-
268
- interface AttributesMap {
269
- // Anchor element
270
- a: BaseAttr & {
271
- download?: string;
272
- href?: string;
273
- hreflang?: string;
274
- ping?: string;
275
- referrerpolicy?:
276
- | 'no-referrer'
277
- | 'no-referrer-when-downgrade'
278
- | 'origin'
279
- | 'origin-when-cross-origin'
280
- | 'same-origin'
281
- | 'strict-origin'
282
- | 'strict-origin-when-cross-origin'
283
- | 'unsafe-url';
284
- rel?: string;
285
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
286
- type?: string;
287
- };
288
-
289
- // Area element
290
- area: BaseAttr & {
291
- alt?: string;
292
- coords?: string;
293
- download?: string;
294
- href?: string;
295
- ping?: string;
296
- referrerpolicy?:
297
- | 'no-referrer'
298
- | 'no-referrer-when-downgrade'
299
- | 'origin'
300
- | 'origin-when-cross-origin'
301
- | 'same-origin'
302
- | 'strict-origin'
303
- | 'strict-origin-when-cross-origin'
304
- | 'unsafe-url';
305
- rel?: string;
306
- shape?: 'rect' | 'circle' | 'poly' | 'default';
307
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
308
- };
309
-
310
- // Audio element
311
- audio: BaseAttr &
312
- MediaElementEvents & {
313
- autoplay?: boolean;
314
- controls?: boolean;
315
- crossorigin?: 'anonymous' | 'use-credentials' | '';
316
- loop?: boolean;
317
- muted?: boolean;
318
- preload?: 'none' | 'metadata' | 'auto' | '';
319
- src?: string;
320
- };
321
-
322
- // Base element
323
- base: BaseAttr & {
324
- href?: string;
325
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
326
- };
327
-
328
- // Body element
329
- body: BaseAttr & {};
330
-
331
- // BR element
332
- br: BaseAttr & {};
333
-
334
- // Button element
335
- button: BaseAttr & {
336
- disabled?: boolean;
337
- form?: string;
338
- formaction?: string;
339
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
340
- formmethod?: 'get' | 'post' | 'dialog';
341
- formnovalidate?: boolean;
342
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
343
- name?: string;
344
- type?: 'submit' | 'reset' | 'button';
345
- value?: string;
346
- };
347
-
348
- // Canvas element
349
- canvas: BaseAttr & {
350
- height?: number | string;
351
- width?: number | string;
352
- };
353
-
354
- // Table caption element
355
- caption: BaseAttr & {};
356
-
357
- // Col element
358
- col: BaseAttr & {
359
- span?: number | string;
360
- };
361
-
362
- // Colgroup element
363
- colgroup: BaseAttr & {
364
- span?: number | string;
365
- };
366
-
367
- // Data element
368
- data: BaseAttr & {
369
- value?: string;
370
- };
371
-
372
- // Datalist element
373
- datalist: BaseAttr & {};
374
-
375
- // Del element
376
- del: BaseAttr & {
377
- cite?: string;
378
- datetime?: string;
379
- };
380
-
381
- // Details element
382
- details: BaseAttr &
383
- DetailsElementEvents & {
384
- open?: boolean;
385
- };
386
-
387
- // Dialog element
388
- dialog: BaseAttr &
389
- DialogElementEvents & {
390
- open?: boolean;
391
- };
392
-
393
- // Embed element
394
- embed: BaseAttr & {
395
- height?: number | string;
396
- src?: string;
397
- type?: string;
398
- width?: number | string;
399
- };
400
-
401
- // Fieldset element
402
- fieldset: BaseAttr & {
403
- disabled?: boolean;
404
- form?: string;
405
- name?: string;
406
- };
407
-
408
- // Form element
409
- form: BaseAttr &
410
- FormElementEvents & {
411
- 'accept-charset'?: string;
412
- action?: string;
413
- autocomplete?: 'on' | 'off';
414
- enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
415
- method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
416
-
417
- name?: string;
418
- novalidate?: boolean;
419
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
420
- };
421
-
422
- // Head element
423
- head: BaseAttr & {};
424
-
425
- // HR element
426
- hr: BaseAttr & {};
427
-
428
- // HTML element
429
- html: BaseAttr & {};
430
-
431
- // IFrame element
432
- iframe: BaseAttr &
433
- ImageElementEvents & {
434
- allow?: string;
435
- allowfullscreen?: boolean;
436
- allowpaymentrequest?: boolean;
437
- height?: number | string;
438
- loading?: 'eager' | 'lazy';
439
- name?: string;
440
- referrerpolicy?:
441
- | 'no-referrer'
442
- | 'no-referrer-when-downgrade'
443
- | 'origin'
444
- | 'origin-when-cross-origin'
445
- | 'same-origin'
446
- | 'strict-origin'
447
- | 'strict-origin-when-cross-origin'
448
- | 'unsafe-url';
449
- sandbox?: string;
450
- src?: string;
451
- srcdoc?: string;
452
- width?: number | string;
453
- };
454
-
455
- // Image element
456
- img: BaseAttr &
457
- ImageElementEvents & {
458
- alt?: string;
459
- crossorigin?: 'anonymous' | 'use-credentials' | '';
460
- decoding?: 'sync' | 'async' | 'auto';
461
- height?: number | string;
462
- ismap?: boolean;
463
- loading?: 'eager' | 'lazy';
464
- referrerpolicy?:
465
- | 'no-referrer'
466
- | 'no-referrer-when-downgrade'
467
- | 'origin'
468
- | 'origin-when-cross-origin'
469
- | 'same-origin'
470
- | 'strict-origin'
471
- | 'strict-origin-when-cross-origin'
472
- | 'unsafe-url';
473
- sizes?: string;
474
- src?: string;
475
- srcset?: string;
476
- usemap?: string;
477
- width?: number | string;
478
- };
479
-
480
- // Input element
481
- input: BaseAttr & {
482
- accept?: string;
483
- alt?: string;
484
- autocomplete?: string;
485
- checked?: boolean;
486
- dirname?: string;
487
- disabled?: boolean;
488
- form?: string;
489
- formaction?: string;
490
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
491
- formmethod?: 'get' | 'post';
492
- formnovalidate?: boolean;
493
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
494
- height?: number | string;
495
- list?: string;
496
- max?: number | string;
497
- maxlength?: number | string;
498
- min?: number | string;
499
- minlength?: number | string;
500
- multiple?: boolean;
501
- name?: string;
502
- pattern?: string;
503
- placeholder?: string;
504
- readonly?: boolean;
505
- required?: boolean;
506
- size?: number | string;
507
- src?: string;
508
- step?: number | string;
509
- type?:
510
- | 'button'
511
- | 'checkbox'
512
- | 'color'
513
- | 'date'
514
- | 'datetime-local'
515
- | 'email'
516
- | 'file'
517
- | 'hidden'
518
- | 'image'
519
- | 'month'
520
- | 'number'
521
- | 'password'
522
- | 'radio'
523
- | 'range'
524
- | 'reset'
525
- | 'search'
526
- | 'submit'
527
- | 'tel'
528
- | 'text'
529
- | 'time'
530
- | 'url'
531
- | 'week';
532
- value?: string;
533
- width?: number | string;
534
- };
535
-
536
- // Ins element
537
- ins: BaseAttr & {
538
- cite?: string;
539
- datetime?: string;
540
- };
541
-
542
- // Label element
543
- label: BaseAttr & {
544
- for?: string;
545
- };
546
-
547
- // Legend element
548
- legend: BaseAttr & {};
549
-
550
- // LI element
551
- li: BaseAttr & {
552
- value?: number | string;
553
- };
554
-
555
- // Link element
556
- link: BaseAttr &
557
- ImageElementEvents & {
558
- as?: string;
559
- crossorigin?: 'anonymous' | 'use-credentials' | '';
560
- disabled?: boolean;
561
- href?: string;
562
- hreflang?: string;
563
- imagesizes?: string;
564
- imagesrcset?: string;
565
- integrity?: string;
566
- media?: string;
567
- referrerpolicy?:
568
- | 'no-referrer'
569
- | 'no-referrer-when-downgrade'
570
- | 'origin'
571
- | 'origin-when-cross-origin'
572
- | 'same-origin'
573
- | 'strict-origin'
574
- | 'strict-origin-when-cross-origin'
575
- | 'unsafe-url';
576
- rel?: string;
577
- sizes?: string;
578
- type?: string;
579
- };
580
-
581
- // Map element
582
- map: BaseAttr & {
583
- name?: string;
584
- };
585
-
586
- // Menu element
587
- menu: BaseAttr & {};
588
-
589
- // Meta element
590
- meta: BaseAttr & {
591
- charset?: string;
592
- content?: string;
593
- 'http-equiv'?: 'content-security-policy' | 'content-type' | 'default-style' | 'refresh' | string;
594
- name?: string;
595
- };
596
-
597
- // Meter element
598
- meter: BaseAttr & {
599
- form?: string;
600
- high?: number | string;
601
- low?: number | string;
602
- max?: number | string;
603
- min?: number | string;
604
- optimum?: number | string;
605
- value?: number | string;
606
- };
607
-
608
- // Object element
609
- object: BaseAttr &
610
- ImageElementEvents & {
611
- data?: string;
612
- form?: string;
613
- height?: number | string;
614
- name?: string;
615
- type?: string;
616
- usemap?: string;
617
- width?: number | string;
618
- };
619
-
620
- // OL element
621
- ol: BaseAttr & {
622
- reversed?: boolean;
623
- start?: number | string;
624
- type?: '1' | 'a' | 'A' | 'i' | 'I';
625
- };
626
-
627
- // Optgroup element
628
- optgroup: BaseAttr & {
629
- disabled?: boolean;
630
- label?: string;
631
- };
632
-
633
- // Option element
634
- option: BaseAttr & {
635
- disabled?: boolean;
636
- label?: string;
637
- selected?: boolean;
638
- value?: string;
639
- };
640
-
641
- // Output element
642
- output: BaseAttr & {
643
- for?: string;
644
- form?: string;
645
- name?: string;
646
- };
647
-
648
- // Picture element
649
- picture: BaseAttr & {};
650
-
651
- // Pre element
652
- pre: BaseAttr & {};
653
-
654
- // Progress element
655
- progress: BaseAttr & {
656
- max?: number | string;
657
- value?: number | string;
658
- };
659
-
660
- // Quote element (q and blockquote)
661
- q: BaseAttr & {
662
- cite?: string;
663
- };
664
-
665
- blockquote: BaseAttr & {
666
- cite?: string;
667
- };
668
-
669
- // Script element
670
- script: BaseAttr &
671
- ImageElementEvents & {
672
- async?: boolean;
673
- crossorigin?: 'anonymous' | 'use-credentials' | '';
674
- defer?: boolean;
675
- integrity?: string;
676
- nomodule?: boolean;
677
- referrerpolicy?:
678
- | 'no-referrer'
679
- | 'no-referrer-when-downgrade'
680
- | 'origin'
681
- | 'origin-when-cross-origin'
682
- | 'same-origin'
683
- | 'strict-origin'
684
- | 'strict-origin-when-cross-origin'
685
- | 'unsafe-url';
686
- src?: string;
687
- type?: string;
688
- };
689
-
690
- // Select element
691
- select: BaseAttr & {
692
- autocomplete?: string;
693
- disabled?: boolean;
694
- form?: string;
695
- multiple?: boolean;
696
- name?: string;
697
- required?: boolean;
698
- size?: number | string;
699
- };
700
-
701
- // Slot element
702
- slot: BaseAttr & {
703
- name?: string;
704
- };
705
-
706
- // Source element
707
- source: BaseAttr & {
708
- height?: number | string;
709
- media?: string;
710
- sizes?: string;
711
- src?: string;
712
- srcset?: string;
713
- type?: string;
714
- width?: number | string;
715
- };
716
-
717
- // Style element
718
- style: BaseAttr &
719
- ImageElementEvents & {
720
- media?: string;
721
- };
722
-
723
- // Table element
724
- table: BaseAttr & {};
725
-
726
- // Table body/footer/header elements
727
- tbody: BaseAttr & {};
728
-
729
- tfoot: BaseAttr & {};
730
-
731
- thead: BaseAttr & {};
732
-
733
- // Table cell elements
734
- td: BaseAttr & {
735
- colspan?: number | string;
736
- headers?: string;
737
- rowspan?: number | string;
738
- };
739
-
740
- th: BaseAttr & {
741
- abbr?: string;
742
- colspan?: number | string;
743
- headers?: string;
744
- rowspan?: number | string;
745
- scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
746
- };
747
-
748
- // Template element
749
- template: BaseAttr & {};
66
+ declare function Button(props: KTMuiButtonProps): JSX.Element;
750
67
 
751
- // Textarea element
752
- textarea: BaseAttr & {
753
- autocomplete?: string;
754
- cols?: number | string;
755
- dirname?: string;
68
+ interface KTMuiDropdownButtonOption {
69
+ value: string;
70
+ label: string | JSX.Element;
756
71
  disabled?: boolean;
757
- form?: string;
758
- maxlength?: number | string;
759
- minlength?: number | string;
760
- name?: string;
761
- placeholder?: string;
762
- readonly?: boolean;
763
- required?: boolean;
764
- rows?: number | string;
765
- wrap?: 'hard' | 'soft' | 'off';
766
- };
767
-
768
- // Time element
769
- time: BaseAttr & {
770
- datetime?: string;
771
- };
772
-
773
- // Title element
774
- title: BaseAttr & {};
775
-
776
- // TR element
777
- tr: BaseAttr & {};
778
-
779
- // Track element
780
- track: BaseAttr & {
781
- default?: boolean;
782
- kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
783
- label?: string;
784
- src?: string;
785
- srclang?: string;
786
- };
787
-
788
- // UL element
789
- ul: BaseAttr & {};
790
-
791
- // Video element
792
- video: BaseAttr &
793
- MediaElementEvents & {
794
- autoplay?: boolean;
795
- controls?: boolean;
796
- crossorigin?: 'anonymous' | 'use-credentials' | '';
797
- height?: number | string;
798
- loop?: boolean;
799
- muted?: boolean;
800
- playsinline?: boolean;
801
- poster?: string;
802
- preload?: 'none' | 'metadata' | 'auto' | '';
803
- src?: string;
804
- width?: number | string;
805
- };
806
-
807
- // Generic HTMLElement (no specific attributes beyond BaseEvent)
808
- abbr: BaseAttr & {};
809
- address: BaseAttr & {};
810
- article: BaseAttr & {};
811
- aside: BaseAttr & {};
812
- b: BaseAttr & {};
813
- bdi: BaseAttr & {};
814
- bdo: BaseAttr & {};
815
- cite: BaseAttr & {};
816
- code: BaseAttr & {};
817
- dd: BaseAttr & {};
818
- dfn: BaseAttr & {};
819
- div: BaseAttr & {};
820
- dl: BaseAttr & {};
821
- dt: BaseAttr & {};
822
- em: BaseAttr & {};
823
- figcaption: BaseAttr & {};
824
- figure: BaseAttr & {};
825
- footer: BaseAttr & {};
826
- h1: BaseAttr & {};
827
- h2: BaseAttr & {};
828
- h3: BaseAttr & {};
829
- h4: BaseAttr & {};
830
- h5: BaseAttr & {};
831
- h6: BaseAttr & {};
832
- header: BaseAttr & {};
833
- hgroup: BaseAttr & {};
834
- i: BaseAttr & {};
835
- kbd: BaseAttr & {};
836
- main: BaseAttr & {};
837
- mark: BaseAttr & {};
838
- nav: BaseAttr & {};
839
- noscript: BaseAttr & {};
840
- p: BaseAttr & {};
841
- rp: BaseAttr & {};
842
- rt: BaseAttr & {};
843
- ruby: BaseAttr & {};
844
- s: BaseAttr & {};
845
- samp: BaseAttr & {};
846
- search: BaseAttr & {};
847
- section: BaseAttr & {};
848
- small: BaseAttr & {};
849
- span: BaseAttr & {};
850
- strong: BaseAttr & {};
851
- sub: BaseAttr & {};
852
- summary: BaseAttr & {};
853
- sup: BaseAttr & {};
854
- u: BaseAttr & {};
855
- var: BaseAttr & {};
856
- wbr: BaseAttr & {};
857
-
858
- svg: BaseAttr & {
859
- class?: string;
860
- style?: string | Partial<CSSStyleDeclaration>;
861
- width?: number | string;
862
- height?: number | string;
863
- viewBox?: string;
864
- xmlns?: string;
865
- fill?: string;
866
- stroke?: string;
867
- strokeWidth?: number | string;
868
- strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';
869
- strokeLinejoin?: 'miter' | 'round' | 'bevel' | 'inherit';
870
- strokeDasharray?: string;
871
- strokeDashoffset?: number | string;
872
- opacity?: number | string;
873
- preserveAspectRatio?: string;
874
- transform?: string;
875
- x?: number | string;
876
- y?: number | string;
877
- rx?: number | string;
878
- ry?: number | string;
879
- r?: number | string;
880
- cx?: number | string;
881
- cy?: number | string;
882
- d?: string;
883
- points?: string;
884
- pathLength?: number | string;
885
- viewbox?: string;
886
- role?: string;
887
- focusable?: boolean | 'true' | 'false';
888
- xlinkHref?: string; // legacy xlink:href
889
- };
890
72
  }
891
-
892
- interface SVGAttributesMap {
893
- a: AttributesMap['svg'] & { href?: string; x?: number | string; y?: number | string };
894
- animate: AttributesMap['svg'] & {
895
- attributeName?: string;
896
- from?: string | number;
897
- to?: string | number;
898
- dur?: string;
899
- repeatCount?: string | number;
900
- };
901
- animateMotion: AttributesMap['svg'] & { path?: string; dur?: string; rotate?: string };
902
- animateTransform: AttributesMap['svg'] & { type?: string; from?: string; to?: string; dur?: string };
903
- circle: AttributesMap['svg'] & { cx?: number | string; cy?: number | string; r?: number | string };
904
- clipPath: AttributesMap['svg'] & { clipPathUnits?: 'userSpaceOnUse' | 'objectBoundingBox' };
905
- defs: AttributesMap['svg'];
906
- desc: AttributesMap['svg'];
907
- ellipse: AttributesMap['svg'] & {
908
- cx?: number | string;
909
- cy?: number | string;
910
- rx?: number | string;
911
- ry?: number | string;
912
- };
913
-
914
- // Filter primitives (provide common props)
915
- feBlend: AttributesMap['svg'] & { in?: string; in2?: string; mode?: string };
916
- feColorMatrix: AttributesMap['svg'] & {
917
- type?: 'matrix' | 'saturate' | 'hueRotate' | 'luminanceToAlpha';
918
- values?: string;
919
- };
920
- feComponentTransfer: AttributesMap['svg'] & {};
921
- feComposite: AttributesMap['svg'] & {
922
- in?: string;
923
- in2?: string;
924
- operator?: string;
925
- k1?: number | string;
926
- k2?: number | string;
927
- k3?: number | string;
928
- k4?: number | string;
929
- };
930
- feConvolveMatrix: AttributesMap['svg'] & {
931
- order?: string | number;
932
- kernelMatrix?: string;
933
- divisor?: string | number;
934
- bias?: string | number;
935
- };
936
- feDiffuseLighting: AttributesMap['svg'] & {};
937
- feDisplacementMap: AttributesMap['svg'] & {
938
- in?: string;
939
- in2?: string;
940
- scale?: number | string;
941
- xChannelSelector?: string;
942
- yChannelSelector?: string;
943
- };
944
- feDistantLight: AttributesMap['svg'] & { azimuth?: number | string; elevation?: number | string };
945
- feDropShadow: AttributesMap['svg'] & {
946
- dx?: number | string;
947
- dy?: number | string;
948
- stdDeviation?: number | string;
949
- floodColor?: string;
950
- floodOpacity?: number | string;
951
- };
952
- feFlood: AttributesMap['svg'] & { floodColor?: string; floodOpacity?: number | string };
953
- feFuncA: AttributesMap['svg'] & {};
954
- feFuncB: AttributesMap['svg'] & {};
955
- feFuncG: AttributesMap['svg'] & {};
956
- feFuncR: AttributesMap['svg'] & {};
957
- feGaussianBlur: AttributesMap['svg'] & { stdDeviation?: number | string; edgeMode?: string };
958
- feImage: AttributesMap['svg'] & { href?: string };
959
- feMerge: AttributesMap['svg'] & {};
960
- feMergeNode: AttributesMap['svg'] & { in?: string };
961
- feMorphology: AttributesMap['svg'] & { operator?: 'erode' | 'dilate'; radius?: number | string };
962
- feOffset: AttributesMap['svg'] & { dx?: number | string; dy?: number | string };
963
- fePointLight: AttributesMap['svg'] & { x?: number | string; y?: number | string; z?: number | string };
964
- feSpecularLighting: AttributesMap['svg'] & {
965
- specularConstant?: number | string;
966
- specularExponent?: number | string;
967
- surfaceScale?: number | string;
968
- };
969
- feSpotLight: AttributesMap['svg'] & {
970
- x?: number | string;
971
- y?: number | string;
972
- z?: number | string;
973
- pointsAtX?: number | string;
974
- pointsAtY?: number | string;
975
- pointsAtZ?: number | string;
976
- specularExponent?: number | string;
977
- limitingConeAngle?: number | string;
978
- };
979
- feTile: AttributesMap['svg'] & {};
980
- feTurbulence: AttributesMap['svg'] & {
981
- baseFrequency?: number | string;
982
- numOctaves?: number | string;
983
- seed?: number | string;
984
- stitchTiles?: string;
985
- type?: 'fractalNoise' | 'turbulence';
986
- };
987
-
988
- filter: AttributesMap['svg'] & {
989
- x?: number | string;
990
- y?: number | string;
991
- width?: number | string;
992
- height?: number | string;
993
- filterUnits?: string;
994
- primitiveUnits?: string;
995
- };
996
- foreignObject: AttributesMap['svg'] & {
997
- x?: number | string;
998
- y?: number | string;
999
- width?: number | string;
1000
- height?: number | string;
1001
- };
1002
- g: AttributesMap['svg'];
1003
- image: AttributesMap['svg'] & {
1004
- href?: string;
1005
- x?: number | string;
1006
- y?: number | string;
1007
- width?: number | string;
1008
- height?: number | string;
1009
- };
1010
- line: AttributesMap['svg'] & {
1011
- x1?: number | string;
1012
- y1?: number | string;
1013
- x2?: number | string;
1014
- y2?: number | string;
1015
- };
1016
- linearGradient: AttributesMap['svg'] & {
1017
- x1?: number | string;
1018
- y1?: number | string;
1019
- x2?: number | string;
1020
- y2?: number | string;
1021
- gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
1022
- gradientTransform?: string;
1023
- };
1024
- marker: AttributesMap['svg'] & {
1025
- markerUnits?: string;
1026
- markerWidth?: number | string;
1027
- markerHeight?: number | string;
1028
- refX?: number | string;
1029
- refY?: number | string;
1030
- orient?: string;
1031
- };
1032
- mask: AttributesMap['svg'] & {
1033
- maskUnits?: string;
1034
- maskContentUnits?: string;
1035
- x?: number | string;
1036
- y?: number | string;
1037
- width?: number | string;
1038
- height?: number | string;
1039
- };
1040
- metadata: AttributesMap['svg'];
1041
- mpath: AttributesMap['svg'] & { href?: string };
1042
- path: AttributesMap['svg'] & { d?: string; pathLength?: number | string };
1043
- pattern: AttributesMap['svg'] & {
1044
- patternUnits?: string;
1045
- patternContentUnits?: string;
1046
- width?: number | string;
1047
- height?: number | string;
1048
- x?: number | string;
1049
- y?: number | string;
1050
- };
1051
- polygon: AttributesMap['svg'] & { points?: string };
1052
- polyline: AttributesMap['svg'] & { points?: string };
1053
- radialGradient: AttributesMap['svg'] & {
1054
- cx?: number | string;
1055
- cy?: number | string;
1056
- r?: number | string;
1057
- fx?: number | string;
1058
- fy?: number | string;
1059
- gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
1060
- gradientTransform?: string;
1061
- };
1062
- rect: AttributesMap['svg'] & {
1063
- x?: number | string;
1064
- y?: number | string;
1065
- width?: number | string;
1066
- height?: number | string;
1067
- rx?: number | string;
1068
- ry?: number | string;
1069
- };
1070
- script: AttributesMap['svg'] & { href?: string; type?: string };
1071
- set: AttributesMap['svg'] & { attributeName?: string; to?: string | number; begin?: string; dur?: string };
1072
- stop: AttributesMap['svg'] & { offset?: number | string; stopColor?: string; stopOpacity?: number | string };
1073
- style: AttributesMap['svg'] & { media?: string };
1074
- svg: AttributesMap['svg'];
1075
- switch: AttributesMap['svg'];
1076
- symbol: AttributesMap['svg'] & { viewBox?: string; preserveAspectRatio?: string };
1077
- text: AttributesMap['svg'] & {
1078
- x?: number | string;
1079
- y?: number | string;
1080
- dx?: number | string;
1081
- dy?: number | string;
1082
- textLength?: number | string;
1083
- };
1084
- textPath: AttributesMap['svg'] & { href?: string; startOffset?: number | string };
1085
- title: AttributesMap['svg'];
1086
- tspan: AttributesMap['svg'] & {
1087
- x?: number | string;
1088
- y?: number | string;
1089
- dx?: number | string;
1090
- dy?: number | string;
1091
- };
1092
- use: AttributesMap['svg'] & {
1093
- href?: string;
1094
- x?: number | string;
1095
- y?: number | string;
1096
- width?: number | string;
1097
- height?: number | string;
1098
- };
1099
- view: AttributesMap['svg'] & { viewBox?: string; preserveAspectRatio?: string };
1100
- }
1101
-
1102
- declare global {
1103
- namespace JSX {
1104
- type Element = HTMLElementTagNameMap[keyof HTMLElementTagNameMap];
1105
-
1106
- interface IntrinsicElements {
1107
- [k: string]: AttributesMap['div']; // Allow any element with div attributes as fallback
1108
-
1109
- // Document-level & metadata
1110
- html: AttributesMap['html'];
1111
- head: AttributesMap['head'];
1112
- title: AttributesMap['title'];
1113
- base: AttributesMap['base'];
1114
- link: AttributesMap['link'];
1115
- meta: AttributesMap['meta'];
1116
-
1117
- // Sectioning
1118
- body: AttributesMap['body'];
1119
- header: AttributesMap['header'];
1120
- footer: AttributesMap['footer'];
1121
- nav: AttributesMap['nav'];
1122
- main: AttributesMap['main'];
1123
- section: AttributesMap['section'];
1124
- article: AttributesMap['article'];
1125
- aside: AttributesMap['aside'];
1126
-
1127
- // Headings
1128
- h1: AttributesMap['h1'];
1129
- h2: AttributesMap['h2'];
1130
- h3: AttributesMap['h3'];
1131
- h4: AttributesMap['h4'];
1132
- h5: AttributesMap['h5'];
1133
- h6: AttributesMap['h6'];
1134
-
1135
- // Text content
1136
- p: AttributesMap['p'];
1137
- pre: AttributesMap['pre'];
1138
- code: AttributesMap['code'];
1139
- strong: AttributesMap['strong'];
1140
- small: AttributesMap['small'];
1141
- em: AttributesMap['em'];
1142
- br: AttributesMap['br'];
1143
- i: AttributesMap['i'];
1144
-
1145
- // Lists
1146
- ul: AttributesMap['ul'];
1147
- ol: AttributesMap['ol'];
1148
- li: AttributesMap['li'];
1149
-
1150
- // Tables
1151
- table: AttributesMap['table'];
1152
- thead: AttributesMap['thead'];
1153
- tbody: AttributesMap['tbody'];
1154
- tfoot: AttributesMap['tfoot'];
1155
- tr: AttributesMap['tr'];
1156
- th: AttributesMap['th'];
1157
- td: AttributesMap['td'];
1158
-
1159
- // Forms
1160
- form: AttributesMap['form'];
1161
- label: AttributesMap['label'];
1162
- input: AttributesMap['input'];
1163
- textarea: AttributesMap['textarea'];
1164
- select: AttributesMap['select'];
1165
- option: AttributesMap['option'];
1166
- optgroup: AttributesMap['optgroup'];
1167
- button: AttributesMap['button'];
1168
- fieldset: AttributesMap['fieldset'];
1169
- legend: AttributesMap['legend'];
1170
- datalist: AttributesMap['datalist'];
1171
- output: AttributesMap['output'];
1172
-
1173
- // Media & embedded
1174
- img: AttributesMap['img'];
1175
- picture: AttributesMap['picture'];
1176
- source: AttributesMap['source'];
1177
- audio: AttributesMap['audio'];
1178
- video: AttributesMap['video'];
1179
- track: AttributesMap['track'];
1180
- iframe: AttributesMap['iframe'];
1181
- embed: AttributesMap['embed'];
1182
- object: AttributesMap['object'];
1183
- canvas: AttributesMap['canvas'];
1184
-
1185
- // Interactive & misc
1186
- a: AttributesMap['a'] & SVGAttributesMap['a'];
1187
- area: AttributesMap['area'];
1188
- map: AttributesMap['map'];
1189
- details: AttributesMap['details'];
1190
- dialog: AttributesMap['dialog'];
1191
- summary: AttributesMap['summary'];
1192
- slot: AttributesMap['slot'];
1193
-
1194
- // Scripting & styles
1195
- script: AttributesMap['script'];
1196
- style: AttributesMap['style'];
1197
-
1198
- // Semantic & phrasing
1199
- figure: AttributesMap['figure'];
1200
- figcaption: AttributesMap['figcaption'];
1201
- blockquote: AttributesMap['blockquote'];
1202
- q: AttributesMap['q'];
1203
-
1204
- // Generic elements
1205
- div: AttributesMap['div'];
1206
- span: AttributesMap['span'];
1207
- address: AttributesMap['address'];
1208
- abbr: AttributesMap['abbr'];
1209
- b: AttributesMap['b'];
1210
- cite: AttributesMap['cite'];
1211
- dl: AttributesMap['dl'];
1212
- dt: AttributesMap['dt'];
1213
- dd: AttributesMap['dd'];
1214
- hr: AttributesMap['hr'];
1215
-
1216
- // SVG
1217
- svg: AttributesMap['svg'];
1218
- // a: SVGAttributesMap['a'];
1219
- animate: SVGAttributesMap['animate'];
1220
- animateMotion: SVGAttributesMap['animateMotion'];
1221
- animateTransform: SVGAttributesMap['animateTransform'];
1222
- circle: SVGAttributesMap['circle'];
1223
- clipPath: SVGAttributesMap['clipPath'];
1224
- defs: SVGAttributesMap['defs'];
1225
- desc: SVGAttributesMap['desc'];
1226
- ellipse: SVGAttributesMap['ellipse'];
1227
- feBlend: SVGAttributesMap['feBlend'];
1228
- feColorMatrix: SVGAttributesMap['feColorMatrix'];
1229
- feComponentTransfer: SVGAttributesMap['feComponentTransfer'];
1230
- feComposite: SVGAttributesMap['feComposite'];
1231
- feConvolveMatrix: SVGAttributesMap['feConvolveMatrix'];
1232
- feDiffuseLighting: SVGAttributesMap['feDiffuseLighting'];
1233
- feDisplacementMap: SVGAttributesMap['feDisplacementMap'];
1234
- feDistantLight: SVGAttributesMap['feDistantLight'];
1235
- feDropShadow: SVGAttributesMap['feDropShadow'];
1236
- feFlood: SVGAttributesMap['feFlood'];
1237
- feFuncA: SVGAttributesMap['feFuncA'];
1238
- feFuncB: SVGAttributesMap['feFuncB'];
1239
- feFuncG: SVGAttributesMap['feFuncG'];
1240
- feFuncR: SVGAttributesMap['feFuncR'];
1241
- feGaussianBlur: SVGAttributesMap['feGaussianBlur'];
1242
- feImage: SVGAttributesMap['feImage'];
1243
- feMerge: SVGAttributesMap['feMerge'];
1244
- feMergeNode: SVGAttributesMap['feMergeNode'];
1245
- feMorphology: SVGAttributesMap['feMorphology'];
1246
- feOffset: SVGAttributesMap['feOffset'];
1247
- fePointLight: SVGAttributesMap['fePointLight'];
1248
- feSpecularLighting: SVGAttributesMap['feSpecularLighting'];
1249
- feSpotLight: SVGAttributesMap['feSpotLight'];
1250
- feTile: SVGAttributesMap['feTile'];
1251
- feTurbulence: SVGAttributesMap['feTurbulence'];
1252
- filter: SVGAttributesMap['filter'];
1253
- foreignObject: SVGAttributesMap['foreignObject'];
1254
- g: SVGAttributesMap['g'];
1255
- image: SVGAttributesMap['image'];
1256
- line: SVGAttributesMap['line'];
1257
- linearGradient: SVGAttributesMap['linearGradient'];
1258
- marker: SVGAttributesMap['marker'];
1259
- mask: SVGAttributesMap['mask'];
1260
- metadata: SVGAttributesMap['metadata'];
1261
- mpath: SVGAttributesMap['mpath'];
1262
- path: SVGAttributesMap['path'];
1263
- pattern: SVGAttributesMap['pattern'];
1264
- polygon: SVGAttributesMap['polygon'];
1265
- polyline: SVGAttributesMap['polyline'];
1266
- radialGradient: SVGAttributesMap['radialGradient'];
1267
- rect: SVGAttributesMap['rect'];
1268
- set: SVGAttributesMap['set'];
1269
- stop: SVGAttributesMap['stop'];
1270
- switch: SVGAttributesMap['switch'];
1271
- symbol: SVGAttributesMap['symbol'];
1272
- text: SVGAttributesMap['text'];
1273
- textPath: SVGAttributesMap['textPath'];
1274
- tspan: SVGAttributesMap['tspan'];
1275
- use: SVGAttributesMap['use'];
1276
- view: SVGAttributesMap['view'];
1277
-
1278
- // 'svg:svg': AttributesMap['svg'];
1279
- // 'svg:a': SVGAttributesMap['a'];
1280
- // 'svg:animate': SVGAttributesMap['animate'];
1281
- // 'svg:animateMotion': SVGAttributesMap['animateMotion'];
1282
- // 'svg:animateTransform': SVGAttributesMap['animateTransform'];
1283
- // 'svg:circle': SVGAttributesMap['circle'];
1284
- // 'svg:clipPath': SVGAttributesMap['clipPath'];
1285
- // 'svg:defs': SVGAttributesMap['defs'];
1286
- // 'svg:desc': SVGAttributesMap['desc'];
1287
- // 'svg:ellipse': SVGAttributesMap['ellipse'];
1288
- // 'svg:feBlend': SVGAttributesMap['feBlend'];
1289
- // 'svg:feColorMatrix': SVGAttributesMap['feColorMatrix'];
1290
- // 'svg:feComponentTransfer': SVGAttributesMap['feComponentTransfer'];
1291
- // 'svg:feComposite': SVGAttributesMap['feComposite'];
1292
- // 'svg:feConvolveMatrix': SVGAttributesMap['feConvolveMatrix'];
1293
- // 'svg:feDiffuseLighting': SVGAttributesMap['feDiffuseLighting'];
1294
- // 'svg:feDisplacementMap': SVGAttributesMap['feDisplacementMap'];
1295
- // 'svg:feDistantLight': SVGAttributesMap['feDistantLight'];
1296
- // 'svg:feDropShadow': SVGAttributesMap['feDropShadow'];
1297
- // 'svg:feFlood': SVGAttributesMap['feFlood'];
1298
- // 'svg:feFuncA': SVGAttributesMap['feFuncA'];
1299
- // 'svg:feFuncB': SVGAttributesMap['feFuncB'];
1300
- // 'svg:feFuncG': SVGAttributesMap['feFuncG'];
1301
- // 'svg:feFuncR': SVGAttributesMap['feFuncR'];
1302
- // 'svg:feGaussianBlur': SVGAttributesMap['feGaussianBlur'];
1303
- // 'svg:feImage': SVGAttributesMap['feImage'];
1304
- // 'svg:feMerge': SVGAttributesMap['feMerge'];
1305
- // 'svg:feMergeNode': SVGAttributesMap['feMergeNode'];
1306
- // 'svg:feMorphology': SVGAttributesMap['feMorphology'];
1307
- // 'svg:feOffset': SVGAttributesMap['feOffset'];
1308
- // 'svg:fePointLight': SVGAttributesMap['fePointLight'];
1309
- // 'svg:feSpecularLighting': SVGAttributesMap['feSpecularLighting'];
1310
- // 'svg:feSpotLight': SVGAttributesMap['feSpotLight'];
1311
- // 'svg:feTile': SVGAttributesMap['feTile'];
1312
- // 'svg:feTurbulence': SVGAttributesMap['feTurbulence'];
1313
- // 'svg:filter': SVGAttributesMap['filter'];
1314
- // 'svg:foreignObject': SVGAttributesMap['foreignObject'];
1315
- // 'svg:g': SVGAttributesMap['g'];
1316
- // 'svg:image': SVGAttributesMap['image'];
1317
- // 'svg:line': SVGAttributesMap['line'];
1318
- // 'svg:linearGradient': SVGAttributesMap['linearGradient'];
1319
- // 'svg:marker': SVGAttributesMap['marker'];
1320
- // 'svg:mask': SVGAttributesMap['mask'];
1321
- // 'svg:metadata': SVGAttributesMap['metadata'];
1322
- // 'svg:mpath': SVGAttributesMap['mpath'];
1323
- // 'svg:path': SVGAttributesMap['path'];
1324
- // 'svg:pattern': SVGAttributesMap['pattern'];
1325
- // 'svg:polygon': SVGAttributesMap['polygon'];
1326
- // 'svg:polyline': SVGAttributesMap['polyline'];
1327
- // 'svg:radialGradient': SVGAttributesMap['radialGradient'];
1328
- // 'svg:rect': SVGAttributesMap['rect'];
1329
- // 'svg:set': SVGAttributesMap['set'];
1330
- // 'svg:stop': SVGAttributesMap['stop'];
1331
- // 'svg:switch': SVGAttributesMap['switch'];
1332
- // 'svg:symbol': SVGAttributesMap['symbol'];
1333
- // 'svg:text': SVGAttributesMap['text'];
1334
- // 'svg:textPath': SVGAttributesMap['textPath'];
1335
- // 'svg:tspan': SVGAttributesMap['tspan'];
1336
- // 'svg:use': SVGAttributesMap['use'];
1337
- // 'svg:view': SVGAttributesMap['view'];
1338
- }
1339
-
1340
- interface IntrinsicAttributes {
1341
- ref?: KTRef<any>;
1342
- 'k-if'?: any;
1343
- children?: KTRawContent;
1344
- }
1345
-
1346
- interface ElementChildrenAttribute {
1347
- children: {};
1348
- }
1349
- }
1350
- }
1351
-
1352
- interface KTMuiCheckboxProps {
1353
- value: string;
1354
- label?: string | JSX.Element | HTMLElement;
1355
- checked?: boolean;
1356
- size?: 'small' | 'medium';
1357
- 'kt:change'?: ((checked: boolean, value: string) => void) | KTRef<boolean>;
1358
- disabled?: boolean;
1359
- color?: 'primary' | 'secondary' | 'default' | 'success' | 'error' | 'warning';
1360
- indeterminate?: boolean;
73
+ interface KTMuiDropdownButtonProps extends KTMuiProps {
74
+ /**
75
+ * The label for the dropdown button - can be a string or a JSX element
76
+ */
77
+ label?: KTMaybeReactive<string | JSX.Element>;
78
+ /**
79
+ * The options for the dropdown menu - array of objects with `value`, `label` and optional `disabled`
80
+ */
81
+ options: KTMaybeReactive<KTMuiDropdownButtonOption[]>;
82
+ /**
83
+ * The variant to use - 'contained', 'outlined' or 'text'
84
+ */
85
+ variant?: KTMaybeReactive<'contained' | 'outlined' | 'text'>;
86
+ /**
87
+ * The color to use - 'primary', 'secondary', 'error', 'warning', 'info' or 'success'
88
+ */
89
+ color?: KTMaybeReactive<'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success'>;
90
+ /**
91
+ * The size of the button - 'small', 'medium' or 'large'
92
+ */
93
+ size?: KTMaybeReactive<'small' | 'medium' | 'large'>;
94
+ /**
95
+ * Whether the button is disabled
96
+ */
97
+ disabled?: KTMaybeReactive<boolean>;
98
+ /**
99
+ * Whether the button should take the full width of its container
100
+ */
101
+ fullWidth?: KTMaybeReactive<boolean>;
102
+ 'on:click'?: (event: MouseEvent) => void;
103
+ 'on:select'?: (value: string, option: KTMuiDropdownButtonOption) => void;
1361
104
  }
1362
-
1363
- interface KTMuiCheckboxGroupProps {
1364
- class?: string;
1365
- style?: string;
1366
- value?: string[];
1367
- size?: 'small' | 'medium';
1368
- options: KTMuiCheckboxProps[];
1369
- 'kt:change'?: ((values: string[]) => void) | KTRef<string[]>;
1370
- row?: boolean;
105
+ type KTMuiDropdownButton = JSX.Element & {};
106
+ /**
107
+ * DropdownButton component - mimics MUI Dropdown Button appearance and behavior
108
+ */
109
+ declare function DropdownButton(props: KTMuiDropdownButtonProps): KTMuiDropdownButton;
110
+
111
+ interface KTMuiCheckboxProps extends Omit<KTMuiProps, 'children'> {
112
+ value?: KTMaybeReactive$1<string>;
113
+ label?: KTMaybeReactive$1<string | JSX.Element | HTMLElement>;
114
+ size?: KTMaybeReactive$1<'small' | 'medium'>;
115
+ disabled?: KTMaybeReactive$1<boolean>;
116
+ color?: KTMaybeReactive$1<'primary' | 'secondary' | 'default' | 'success' | 'error' | 'warning'>;
117
+ indeterminate?: KTMaybeReactive$1<boolean>;
118
+ 'on:change'?: (checked: boolean, value: string) => void;
1371
119
  }
1372
-
1373
120
  type KTMuiCheckbox = JSX.Element & {
1374
- checked: boolean;
1375
- value: string;
1376
- disabled: boolean;
1377
- };
1378
-
1379
- type KTMuiCheckboxGroup = JSX.Element & {
1380
- value: string[];
1381
- disabled: boolean[];
1382
- disableAll: () => void;
1383
- enableAll: () => void;
121
+ checked: boolean;
122
+ value: string;
123
+ disabled: boolean;
1384
124
  };
1385
-
1386
125
  /**
1387
- * Checkbox component - mimics MUI Checkbox appearance and behavior
126
+ * Create a checkbox component.
127
+ * @param props normal props
128
+ * @param onChangeForGroup onchange event only for checkbox group
1388
129
  */
1389
- declare function Checkbox(props: KTMuiCheckboxProps): KTMuiCheckbox;
130
+ declare function Checkbox(props: KTMuiCheckboxProps, onChangeForGroup?: (checked: boolean, value: string) => void): KTMuiCheckbox;
131
+
132
+ interface KTMuiCheckboxGroupProps extends Omit<KTMuiProps, 'children'> {
133
+ size?: KTMaybeReactive$1<'small' | 'medium'>;
134
+ options: KTMaybeReactive$1<Array<Omit<KTMuiCheckboxProps, 'value'> & {
135
+ value: string;
136
+ }>>;
137
+ row?: KTMaybeReactive$1<boolean>;
138
+ 'on:change'?: (values: string[]) => void;
139
+ }
140
+ type KTMuiCheckboxGroup = JSX.Element & {};
1390
141
  /**
1391
142
  * CheckboxGroup component - groups multiple checkboxes together
1392
143
  */
1393
144
  declare function CheckboxGroup(props: KTMuiCheckboxGroupProps): KTMuiCheckboxGroup;
1394
145
 
1395
- interface KTMuiDialogProps {
1396
- open?: boolean;
1397
- 'kt:close'?: () => void;
1398
- title?: string;
1399
- children?: HTMLElement | HTMLElement[] | JSX.Element | JSX.Element[] | string;
1400
- actions?: HTMLElement | HTMLElement[];
1401
- maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;
1402
- fullWidth?: boolean;
1403
- }
1404
- type KTMuiDialog = JSX.Element & {
146
+ type DialogSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;
147
+ interface KTMuiDialogProps extends Omit<KTMuiProps, 'children'> {
1405
148
  /**
1406
149
  * Controls whether the dialog is open or closed
150
+ * - Provide a `KTReactive` to make it reactive
1407
151
  */
1408
- open: boolean;
1409
- };
152
+ open?: KTMaybeReactive$1<boolean>;
153
+ title?: string;
154
+ children?: JSX.Element | JSX.Element[] | string | KTMaybeReactive$1<string> | KTMaybeReactive$1<JSX.Element> | KTMaybeReactive$1<JSX.Element[]>;
155
+ actions?: KTMaybeReactive$1<HTMLElement | HTMLElement[]>;
156
+ size?: KTMaybeReactive$1<DialogSize>;
157
+ fullWidth?: KTMaybeReactive$1<boolean>;
158
+ 'on:close'?: () => void;
159
+ }
160
+ type KTMuiDialog = JSX.Element;
1410
161
  /**
1411
162
  * Dialog component - mimics MUI Dialog appearance and behavior
1412
163
  * Only handles open/close state, title and content are passed as props
1413
164
  */
1414
165
  declare function Dialog(props: KTMuiDialogProps): KTMuiDialog;
1415
166
 
1416
- interface FormLabelProps {
167
+ interface KTMuiFormLabelProps extends Omit<KTMuiProps, 'children'> {
1417
168
  children: string | HTMLElement | JSX.Element;
1418
- required?: boolean;
1419
- error?: boolean;
1420
- disabled?: boolean;
1421
- focused?: boolean;
1422
- filled?: boolean;
169
+ /**
170
+ * If `true`, the label will indicate that the input is required by displaying an asterisk (*).
171
+ */
172
+ required?: KTMaybeReactive$1<boolean>;
173
+ /**
174
+ * If `true`, the label will be displayed in an error state.
175
+ */
176
+ error?: KTMaybeReactive$1<boolean>;
177
+ /**
178
+ * If `true`, the label will be displayed in a disabled state.
179
+ */
180
+ disabled?: KTMaybeReactive$1<boolean>;
181
+ /**
182
+ * If `true`, the label will be displayed in a focused state.
183
+ */
184
+ focused?: KTMaybeReactive$1<boolean>;
185
+ /**
186
+ * If `true`, the label will be displayed in a filled state (used when the associated input has a value).
187
+ */
188
+ filled?: KTMaybeReactive$1<boolean>;
189
+ /**
190
+ * The component used for the root node. Either 'label' or 'legend'.
191
+ * - Not reactive
192
+ */
1423
193
  component?: 'label' | 'legend';
1424
- htmlFor?: string;
194
+ htmlFor?: KTMaybeReactive$1<string>;
1425
195
  }
1426
196
  /**
1427
197
  * FormLabel component - mimics MUI FormLabel appearance and behavior
1428
198
  */
1429
- declare function FormLabel(props: FormLabelProps): JSX.Element;
199
+ declare function FormLabel(props: KTMuiFormLabelProps): JSX.Element;
1430
200
 
1431
- interface LinearProgressProps {
1432
- class?: string;
1433
- style?: string | Partial<CSSStyleDeclaration>;
1434
- variant?: 'determinate' | 'indeterminate';
1435
- progress?: number;
1436
- color?: 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success';
1437
- }
1438
- type KTMuiLinearProgress = JSX.Element & {
201
+ interface LinearProgressProps extends KTMuiProps {
202
+ /**
203
+ * The variant to use.
204
+ * - `determinate` - Use when the progress is a specific value.
205
+ * - `indeterminate` - Use when the progress is unknown.
206
+ * Default is `indeterminate`.
207
+ */
208
+ variant?: KTMaybeReactive$1<'determinate' | 'indeterminate'>;
209
+ /**
210
+ * The value of the progress indicator for the determinate variant. Value between 0 and 100.
211
+ */
212
+ value?: KTMaybeReactive$1<number>;
1439
213
  /**
1440
- * Reactive property to get or set the current progress value (0-100)
214
+ * The color of the component. It supports those theme colors that make sense for this component.
1441
215
  */
1442
- progress: number;
216
+ color?: KTMaybeReactive$1<'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success'>;
217
+ }
218
+ type KTMuiLinearProgress = JSX.Element & {
219
+ value: number;
1443
220
  };
1444
- /**
1445
- * LinearProgress component - mimics MUI LinearProgress appearance and behavior
1446
- */
1447
221
  declare function LinearProgress(props: LinearProgressProps): KTMuiLinearProgress;
1448
222
 
1449
223
  type ChangeHandler<T = string> = (value: T, ...args: any[]) => void;
1450
224
 
1451
225
  type InputTypes = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';
1452
-
1453
- interface KTMuiTextFieldProps<T extends InputTypes = 'text'> {
1454
- class?: string;
1455
- style?: string | Partial<CSSStyleDeclaration>;
1456
- label?: string;
1457
- placeholder?: string;
1458
- value?: any;
1459
- type?: T;
1460
- disabled?: boolean;
1461
- readonly?: boolean;
1462
- required?: boolean;
1463
- error?: boolean;
1464
- helperText?: string;
1465
- fullWidth?: boolean;
1466
- multiline?: boolean;
1467
- rows?: number;
1468
- size?: 'small' | 'medium';
1469
- 'kt:input'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
1470
- 'kt-trim:input'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
1471
- 'kt:change'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
1472
- 'kt-trim:change'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
1473
- 'kt:blur'?: () => void;
1474
- 'kt:focus'?: () => void;
226
+ interface KTMuiTextFieldProps<T extends InputTypes = 'text'> extends KTMuiProps {
227
+ 'k-model'?: T extends 'number' ? KTReactive<number> : KTReactive<string>;
228
+ label?: KTMaybeReactive<string>;
229
+ placeholder?: KTMaybeReactive<string>;
230
+ value?: any;
231
+ type?: KTMaybeReactive<T>;
232
+ disabled?: KTMaybeReactive<boolean>;
233
+ readOnly?: KTMaybeReactive<boolean>;
234
+ required?: KTMaybeReactive<boolean>;
235
+ error?: KTMaybeReactive<boolean>;
236
+ helperText?: KTMaybeReactive<string>;
237
+ fullWidth?: KTMaybeReactive<boolean>;
238
+ multiline?: boolean;
239
+ rows?: KTMaybeReactive<number>;
240
+ size?: 'small' | 'medium' | KTReactive<'small' | 'medium'>;
241
+ 'on:input'?: ChangeHandler<T extends 'number' ? number : T extends 'date' ? Date : string>;
242
+ 'on:change'?: ChangeHandler<T extends 'number' ? number : T extends 'date' ? Date : string>;
243
+ 'on:blur'?: () => void;
244
+ 'on:focus'?: () => void;
1475
245
  }
246
+ type KTMuiTextField = JSX.Element;
247
+ declare function TextField<T extends InputTypes = 'text'>(props: KTMuiTextFieldProps<T>): KTMuiTextField;
1476
248
 
1477
- type KTMuiTextField = JSX.Element & {
1478
- /**
1479
- * Reactive `value` of the input field
1480
- */
1481
- value: string;
1482
-
1483
- /**
1484
- * Reactive `label` of the input field
1485
- */
1486
- label: string;
1487
-
1488
- /**
1489
- * Reactive `placeholder` of the input field
1490
- */
1491
- placeholder: string;
1492
-
1493
- /**
1494
- * Reactive `type` of the input field
1495
- */
1496
- type: string;
1497
-
1498
- /**
1499
- * Reactive `disabled` state of the input field
1500
- */
1501
- disabled: boolean;
1502
-
1503
- /**
1504
- * Reactive `readonly` state of the input field
1505
- */
1506
- readonly: boolean;
1507
-
1508
- /**
1509
- * `required` state of the input field
1510
- * @readonly
1511
- */
1512
- readonly required: boolean;
1513
-
1514
- /**
1515
- * Reactive `error` state of the input field
1516
- */
1517
- error: boolean;
1518
-
1519
- /**
1520
- * Reactive `helperText` of the input field
1521
- */
1522
- helperText: string;
1523
- };
1524
-
1525
- /**
1526
- * TextField component - mimics MUI TextField appearance and behavior
1527
- */
1528
- declare function TextField<T extends InputTypes>(props: KTMuiTextFieldProps<T>): KTMuiTextField;
1529
-
1530
- interface KTMuiRadioProps {
1531
- class?: string;
1532
- style?: string | Partial<CSSStyleDeclaration>;
1533
- value: string;
1534
- label: string | JSX.Element | HTMLElement;
1535
- checked?: boolean;
1536
- size?: 'small' | 'medium';
1537
- 'kt:change'?: (checked: boolean, value: string) => void;
1538
- disabled?: boolean;
1539
- color?: 'primary' | 'secondary' | 'default';
249
+ interface KTMuiRadioProps extends KTMuiProps {
250
+ value: string;
251
+ label: string | JSX.Element | HTMLElement | KTReactive<string | JSX.Element | HTMLElement>;
252
+ checked?: boolean;
253
+ size?: 'small' | 'medium';
254
+ 'on:change'?: (checked: boolean, value: string) => void;
255
+ disabled?: boolean;
256
+ color?: 'primary' | 'secondary' | 'default';
1540
257
  }
1541
-
1542
- interface KTMuiRadioGroupProps {
1543
- class?: string;
1544
- style?: string | Partial<CSSStyleDeclaration>;
1545
- value?: string;
1546
- name?: string;
1547
- size?: 'small' | 'medium';
1548
- options: KTMuiRadioProps[];
1549
- 'kt:change'?: ((value: string) => void) | KTRef<string>;
1550
- 'kt:click'?: (checked: boolean) => void;
1551
- row?: boolean;
258
+ interface KTMuiRadioGroupProps extends KTMuiProps {
259
+ value?: string;
260
+ name?: string;
261
+ size?: 'small' | 'medium';
262
+ options: KTMuiRadioProps[];
263
+ 'on:change'?: (value: string) => void;
264
+ 'on:click'?: (checked: boolean) => void;
265
+ row?: boolean;
1552
266
  }
1553
-
1554
267
  type KTMuiRadio = JSX.Element & {
1555
- /**
1556
- * The value of the radio button
1557
- * @readonly
1558
- */
1559
- readonly value: string;
1560
-
1561
- /**
1562
- * Reactive checked state of the radio button
1563
- */
1564
- checked: boolean;
268
+ readonly value: string;
269
+ checked: boolean;
1565
270
  };
1566
271
  type KTMuiRadioGroup = JSX.Element & {
1567
- /**
1568
- * Reactive checked state of the radio button
1569
- */
1570
- value: string;
272
+ value: string;
1571
273
  };
1572
-
1573
274
  /**
1574
275
  * Radio component - mimics MUI Radio appearance and behavior
1575
276
  */
@@ -1581,78 +282,138 @@ declare function RadioGroup(props: KTMuiRadioGroupProps): KTMuiRadioGroup;
1581
282
 
1582
283
  interface KTMuiSelectOption {
1583
284
  value: string;
1584
- label: string;
285
+ label: string | JSX.Element;
1585
286
  }
1586
- interface KTMuiSelectProps {
1587
- class?: string;
1588
- style?: string | Partial<CSSStyleDeclaration>;
1589
- size?: 'small' | 'medium';
1590
- value?: string;
1591
- options: KTMuiSelectOption[];
1592
- label?: string;
1593
- placeholder?: string;
1594
- 'kt:change'?: (value: string) => void;
1595
- fullWidth?: boolean;
1596
- disabled?: boolean;
287
+ interface KTMuiSelectProps extends KTMuiProps {
288
+ size?: KTMaybeReactive$1<'small' | 'medium'>;
289
+ value?: KTMaybeReactive$1<string>;
290
+ options: KTMaybeReactive$1<KTMuiSelectOption[]>;
291
+ label?: KTMaybeReactive$1<string>;
292
+ placeholder?: KTMaybeReactive$1<string>;
293
+ fullWidth?: KTMaybeReactive$1<boolean>;
294
+ disabled?: KTMaybeReactive$1<boolean>;
295
+ 'on:change'?: (value: string) => void;
1597
296
  }
1598
- type KTMuiSelect = JSX.Element & {
1599
- /**
1600
- * Reactive `value` of the select component
1601
- */
1602
- value: string;
1603
- /**
1604
- * Reactive `disabled` state of the select component
1605
- */
1606
- disabled: boolean;
1607
- };
297
+ type KTMuiSelect = JSX.Element & {};
1608
298
  /**
1609
299
  * Select component - mimics MUI Select appearance and behavior
1610
300
  */
1611
301
  declare function Select(props: KTMuiSelectProps): KTMuiSelect;
1612
302
 
1613
- declare function DownloadIcon(props: KTAttribute): JSX.Element;
1614
-
1615
- declare function CompressIcon(props: KTAttribute): JSX.Element;
1616
-
1617
- declare function SubtitlesIcon(props: KTAttribute): JSX.Element;
1618
-
1619
- declare function SettingsIcon(props: KTAttribute): JSX.Element;
1620
-
1621
- declare function NewReleasesIcon(props: KTAttribute): JSX.Element;
1622
-
1623
- declare function FolderOpenIcon(props: KTAttribute): JSX.Element;
1624
-
1625
- declare function PlayArrowIcon(props: KTAttribute): JSX.Element;
1626
-
1627
- declare function ContentPasteIcon(props: KTAttribute): JSX.Element;
1628
-
1629
- declare function DeleteIcon(props: KTAttribute): JSX.Element;
1630
-
1631
- declare function StopIcon(props: KTAttribute): JSX.Element;
1632
-
1633
- declare function FileOpenIcon(props: KTAttribute): JSX.Element;
1634
-
1635
- declare function ColorLensIcon(props: KTAttribute): JSX.Element;
1636
-
1637
- declare function WallpaperIcon(props: KTAttribute): JSX.Element;
1638
-
1639
- declare function ExpandMoreIcon(props: KTAttribute): JSX.Element;
1640
-
1641
- declare function SaveIcon(props: KTAttribute): JSX.Element;
1642
-
1643
- declare function UploadFileIcon(props: KTAttribute): JSX.Element;
1644
-
1645
- declare function VideoFileIcon(props: KTAttribute): JSX.Element;
1646
-
1647
- declare function QueuePlayNextIcon(props: KTAttribute): JSX.Element;
1648
-
1649
- declare function MenuIcon(props: KTAttribute): JSX.Element;
1650
-
1651
- declare function HomeIcon(props: KTAttribute): JSX.Element;
1652
-
1653
- declare function ContentCopyIcon(props: KTAttribute): JSX.Element;
303
+ interface KTMuiCardProps extends KTMuiProps {
304
+ variant?: 'elevation' | 'outlined' | 'contained';
305
+ elevation?: number | KTReactive<number>;
306
+ square?: boolean | KTReactive<boolean>;
307
+ raised?: boolean | KTReactive<boolean>;
308
+ 'on:click'?: (event: PointerEvent) => void;
309
+ }
310
+ type KTMuiCard = JSX.Element & {};
311
+ /**
312
+ * Card component - mimics MUI Card appearance and behavior
313
+ */
314
+ declare function Card(props: KTMuiCardProps): KTMuiCard;
315
+
316
+ interface KTMuiSwitchProps extends KTMuiProps {
317
+ value?: KTMaybeReactive$1<string>;
318
+ label?: KTMaybeReactive$1<string>;
319
+ disabled?: KTMaybeReactive$1<boolean>;
320
+ color?: KTMaybeReactive$1<'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success'>;
321
+ size?: KTMaybeReactive$1<'small' | 'medium' | 'large'>;
322
+ 'on:change'?: (checked: boolean, value?: string) => void;
323
+ }
324
+ type KTMuiSwitch = JSX.Element & {};
325
+ /**
326
+ * Switch component - mimics MUI Switch appearance and behavior
327
+ */
328
+ declare function Switch(props: KTMuiSwitchProps): KTMuiSwitch;
329
+
330
+ type PillColor = 'default' | 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success';
331
+ type PillVariant = 'filled' | 'outlined';
332
+ type PillSize = 'small' | 'medium';
333
+ interface KTMuiPillProps extends KTMuiProps {
334
+ label?: KTMaybeReactive$1<string>;
335
+ icon?: KTMaybeReactive$1<HTMLElement | JSX.Element>;
336
+ deleteIcon?: KTMaybeReactive$1<HTMLElement | JSX.Element>;
337
+ color?: KTMaybeReactive$1<PillColor>;
338
+ variant?: KTMaybeReactive$1<PillVariant>;
339
+ size?: KTMaybeReactive$1<PillSize>;
340
+ clickable?: KTMaybeReactive$1<boolean>;
341
+ disabled?: KTMaybeReactive$1<boolean>;
342
+ autoRemoveOnDelete?: KTMaybeReactive$1<boolean>;
343
+ 'on:click'?: (event: MouseEvent) => void;
344
+ 'on:delete'?: (event: MouseEvent) => void | boolean;
345
+ }
346
+ type KTMuiPill = JSX.Element & {};
347
+ /**
348
+ * Pill component - mimics MUI chip/pill appearance and behavior
349
+ */
350
+ declare function Pill(props: KTMuiPillProps): KTMuiPill;
351
+
352
+ type BadgeColor = 'default' | 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success';
353
+ type BadgeVariant = 'standard' | 'dot';
354
+ type BadgeOverlap = 'rectangular' | 'circular';
355
+ type BadgeContent = string | number;
356
+ interface KTMuiBadgeAnchorOrigin {
357
+ vertical: 'top' | 'bottom';
358
+ horizontal: 'left' | 'right';
359
+ }
360
+ interface KTMuiBadgeProps extends KTMuiProps {
361
+ badgeContent?: BadgeContent | KTReactive<number> | KTReactive<string>;
362
+ max?: KTMaybeReactive$1<number>;
363
+ showZero?: KTMaybeReactive$1<boolean>;
364
+ invisible?: KTMaybeReactive$1<boolean>;
365
+ color?: KTMaybeReactive$1<BadgeColor>;
366
+ variant?: KTMaybeReactive$1<BadgeVariant>;
367
+ overlap?: KTMaybeReactive$1<BadgeOverlap>;
368
+ anchorOrigin?: KTMaybeReactive$1<KTMuiBadgeAnchorOrigin>;
369
+ }
370
+ type KTMuiBadge = JSX.Element & {};
371
+ /**
372
+ * Badge component - mimics MUI Badge appearance and behavior
373
+ */
374
+ declare function Badge(props: KTMuiBadgeProps): KTMuiBadge;
1654
375
 
1655
- declare function SelectAllIcon(props: KTAttribute): JSX.Element;
376
+ type PopoverVerticalOrigin = 'top' | 'center' | 'bottom';
377
+ type PopoverHorizontalOrigin = 'left' | 'center' | 'right';
378
+ interface KTMuiPopoverOrigin {
379
+ vertical: PopoverVerticalOrigin;
380
+ horizontal: PopoverHorizontalOrigin;
381
+ }
382
+ type KTMuiPopoverCloseReason = 'backdropClick' | 'escapeKeyDown';
383
+ interface KTMuiPopoverProps extends KTMuiProps {
384
+ /**
385
+ * Indicates whether the popover is open.
386
+ */
387
+ open?: KTMaybeReactive$1<boolean>;
388
+ /**
389
+ * The DOM element used as the anchor of the popover. The popover will appear next to this element.
390
+ */
391
+ anchorEl?: HTMLElement | null | KTReactive<HTMLElement | null>;
392
+ /**
393
+ * Defines which part of the anchor element to align the popover with.
394
+ */
395
+ anchorOrigin?: KTMaybeReactive$1<KTMuiPopoverOrigin>;
396
+ /**
397
+ * Defines which part of the popover to align with the anchor element.
398
+ */
399
+ transformOrigin?: KTMaybeReactive$1<KTMuiPopoverOrigin>;
400
+ /**
401
+ * The margin between the popover and the edge of the screen.
402
+ * This is used to prevent the popover from being positioned in a way that it would be inaccessible to users, such as being off-screen.
403
+ */
404
+ marginThreshold?: KTMaybeReactive$1<number>;
405
+ /**
406
+ * The elevation of the popover, which affects the shadow depth.
407
+ * It can be a value between 0 and 24.
408
+ */
409
+ elevation?: KTMaybeReactive$1<number>;
410
+ 'on:close'?: (reason: KTMuiPopoverCloseReason) => void;
411
+ }
412
+ type KTMuiPopover = JSX.Element & {};
413
+ /**
414
+ * Popover component - mimics MUI Popover appearance and behavior
415
+ */
416
+ declare function Popover(props: KTMuiPopoverProps): KTMuiPopover;
1656
417
 
1657
- export { Alert, Button, Checkbox, CheckboxGroup, ColorLensIcon, CompressIcon, ContentCopyIcon, ContentPasteIcon, DeleteIcon, Dialog, DownloadIcon, ExpandMoreIcon, FileOpenIcon, FolderOpenIcon, FormLabel, HomeIcon, LinearProgress, MenuIcon, NewReleasesIcon, PlayArrowIcon, QueuePlayNextIcon, Radio, RadioGroup, SaveIcon, Select, SelectAllIcon, SettingsIcon, StopIcon, SubtitlesIcon, TextField, UploadFileIcon, VideoFileIcon, WallpaperIcon };
1658
- export type { KTMuiDialog, KTMuiLinearProgress, KTMuiRadio, KTMuiRadioGroup, KTMuiRadioProps, KTMuiSelectProps, KTMuiTextField, KTMuiTextFieldProps };
418
+ export { Alert, Badge, Button, Card, Checkbox, CheckboxGroup, Dialog, DropdownButton, FormLabel, LinearProgress, Pill, Popover, Radio, RadioGroup, Select, Switch, TextField };
419
+ export type { KTMuiBadge, KTMuiBadgeAnchorOrigin, KTMuiBadgeProps, KTMuiCard, KTMuiCardProps, KTMuiCheckbox, KTMuiCheckboxGroup, KTMuiCheckboxGroupProps, KTMuiCheckboxProps, KTMuiDialog, KTMuiDropdownButton, KTMuiDropdownButtonOption, KTMuiDropdownButtonProps, KTMuiLinearProgress, KTMuiPill, KTMuiPillProps, KTMuiPopover, KTMuiPopoverCloseReason, KTMuiPopoverOrigin, KTMuiPopoverProps, KTMuiRadio, KTMuiRadioGroup, KTMuiRadioProps, KTMuiSelect, KTMuiSelectOption, KTMuiSelectProps, KTMuiSwitch, KTMuiSwitchProps, KTMuiTextField, KTMuiTextFieldProps };