@ktjs/mui 0.23.2 → 0.24.2

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