@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.mjs CHANGED
@@ -1,1413 +1,2970 @@
1
- // Shared constants
2
- // Empty for now - can be extended with framework-wide constants
3
- /**
4
- * Mark the attribute as SVG to handle special cases during rendering.
5
- */
6
- const $defines = Object.defineProperties;
7
- const $entries = Object.entries;
8
- const $random$2 = Math.random;
9
- const { get: $buttonDisabledGetter$2, set: $buttonDisabledSetter$2 } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
10
- const parseStyle = (style) => {
11
- if (!style) {
12
- return '';
13
- }
14
- if (typeof style === 'string') {
15
- return style;
16
- }
17
- if (style && typeof style === 'object') {
18
- if (style.isKT) {
19
- return parseStyle(style.value);
20
- }
21
- return $entries(style)
22
- .map((entry) => {
23
- const cssKey = entry[0].replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
24
- return `${cssKey}:${entry[1]}`;
25
- })
26
- .join(';');
27
- }
28
- return '';
29
- };
30
-
31
- // String manipulation utilities
32
- /**
33
- * Default empty function
34
- */
35
- const $emptyFn = (() => true);
36
-
37
- if (typeof Symbol === 'undefined') {
38
- window.Symbol = function Symbol(description) {
39
- return `@@SYMBOL_${description || ''}_${$random$2().toString(36).slice(2)}`;
40
- };
41
- }
42
-
43
- // Shared utilities and cached native methods for kt.js framework
44
- Object.defineProperty(window, '__ktjs__', { value: '0.23.4' });
45
-
46
- // Shared constants
47
- // Empty for now - can be extended with framework-wide constants
48
- /**
49
- * Mark the attribute as SVG to handle special cases during rendering.
50
- */
51
- const SVG_ATTR_FLAG = '__kt_svg__';
52
- /**
53
- * Mark the attribute as MathML to handle special cases during rendering.
54
- */
55
- const MATHML_ATTR_FLAG = '__kt_mathml__';
56
-
57
- // Cached native methods for performance optimization
58
- const $isArray = Array.isArray;
59
- const $random$1 = Math.random;
60
- const $isThenable = (o) => typeof o?.then === 'function';
61
-
62
- // DOM manipulation utilities
63
- // # dom natives
64
- const $isNode$1 = (x) => x?.nodeType > 0;
65
- /**
66
- * Safe replace `oldNode` With `newNode`
67
- */
68
- const $replaceNode$1 = (oldNode, newNode) => {
69
- if ($isNode$1(oldNode) && $isNode$1(newNode)) {
70
- if (newNode.contains(oldNode)) {
71
- newNode.remove();
72
- }
73
- oldNode.replaceWith(newNode);
74
- }
75
- };
76
- /**
77
- * & Remove `bind` because it is shockingly slower than wrapper
78
- * & `window.document` is safe because it is not configurable and its setter is undefined
79
- */
80
- const $appendChild = HTMLElement.prototype.appendChild;
81
- const originAppend = HTMLElement.prototype.append;
82
- const $append = // for ie 9/10/11
83
- typeof originAppend === 'function'
84
- ? originAppend
85
- : function (...nodes) {
86
- if (nodes.length < 50) {
87
- for (let i = 0; i < nodes.length; i++) {
88
- const node = nodes[i];
89
- if (typeof node === 'string') {
90
- $appendChild.call(this, document.createTextNode(node));
91
- }
92
- else {
93
- $appendChild.call(this, node);
94
- }
95
- }
96
- }
97
- else {
98
- const fragment = document.createDocumentFragment();
99
- for (let i = 0; i < nodes.length; i++) {
100
- const node = nodes[i];
101
- if (typeof node === 'string') {
102
- $appendChild.call(fragment, document.createTextNode(node));
103
- }
104
- else {
105
- $appendChild.call(fragment, node);
106
- }
107
- }
108
- $appendChild.call(this, fragment);
109
- }
110
- };
111
- const { get: $buttonDisabledGetter$1, set: $buttonDisabledSetter$1 } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
112
- /**
113
- * Used for `k-model`
114
- */
115
- const applyModel = (element, valueRef, propName, eventName) => {
116
- element[propName] = valueRef.value; // initialize
117
- valueRef.addOnChange((newValue) => (element[propName] = newValue));
118
- element.addEventListener(eventName, () => (valueRef.value = element[propName]));
119
- };
120
-
121
- if (typeof Symbol === 'undefined') {
122
- window.Symbol = function Symbol(description) {
123
- return `@@SYMBOL_${description || ''}_${$random$1().toString(36).slice(2)}`;
124
- };
125
- }
126
-
127
- // Shared utilities and cached native methods for kt.js framework
128
- Object.defineProperty(window, '__ktjs__', { value: '0.23.4' });
129
-
130
- const isKT$1 = (obj) => obj?.isKT;
131
- const isRef = (obj) => obj?.ktType === 1 /* KTReactiveType.REF */;
132
- const isComputed = (obj) => obj?.ktType === 2 /* KTReactiveType.COMPUTED */;
133
-
134
- const booleanHandler = (element, key, value) => {
135
- if (key in element) {
136
- element[key] = !!value;
137
- }
138
- else {
139
- element.setAttribute(key, value);
140
- }
141
- };
142
- const valueHandler = (element, key, value) => {
143
- if (key in element) {
144
- element[key] = value;
145
- }
146
- else {
147
- element.setAttribute(key, value);
148
- }
149
- };
150
- // Attribute handlers map for optimized lookup
151
- const handlers = {
152
- checked: booleanHandler,
153
- selected: booleanHandler,
154
- value: valueHandler,
155
- valueAsDate: valueHandler,
156
- valueAsNumber: valueHandler,
157
- defaultValue: valueHandler,
158
- defaultChecked: booleanHandler,
159
- defaultSelected: booleanHandler,
160
- disabled: booleanHandler,
161
- readOnly: booleanHandler,
162
- multiple: booleanHandler,
163
- required: booleanHandler,
164
- autofocus: booleanHandler,
165
- open: booleanHandler,
166
- controls: booleanHandler,
167
- autoplay: booleanHandler,
168
- loop: booleanHandler,
169
- muted: booleanHandler,
170
- defer: booleanHandler,
171
- async: booleanHandler,
172
- hidden: (element, _key, value) => (element.hidden = !!value),
173
- };
174
-
175
- const defaultHandler = (element, key, value) => element.setAttribute(key, value);
176
- const setElementStyle = (element, style) => {
177
- if (typeof style === 'string') {
178
- element.style.cssText = style;
179
- return;
180
- }
181
- for (const key in style) {
182
- element.style[key] = style[key];
183
- }
184
- };
185
- function attrIsObject(element, attr) {
186
- const classValue = attr.class || attr.className;
187
- if (classValue !== undefined) {
188
- if (isKT$1(classValue)) {
189
- element.setAttribute('class', classValue.value);
190
- classValue.addOnChange((v) => element.setAttribute('class', v));
191
- }
192
- else {
193
- element.setAttribute('class', classValue);
194
- }
195
- }
196
- const style = attr.style;
197
- if (style) {
198
- if (typeof style === 'string') {
199
- element.setAttribute('style', style);
200
- }
201
- else if (typeof style === 'object') {
202
- if (isKT$1(style)) {
203
- setElementStyle(element, style.value);
204
- style.addOnChange((v) => setElementStyle(element, v));
205
- }
206
- else {
207
- setElementStyle(element, style);
208
- }
209
- }
210
- }
211
- if ('k-html' in attr) {
212
- const html = attr['k-html'];
213
- if (isKT$1(html)) {
214
- element.innerHTML = html.value;
215
- html.addOnChange((v) => (element.innerHTML = v));
216
- }
217
- else {
218
- element.innerHTML = html;
219
- }
220
- }
221
- for (const key in attr) {
222
- if (key === 'k-if' ||
223
- key === 'k-model' ||
224
- key === 'ref' ||
225
- key === 'class' ||
226
- key === 'className' ||
227
- key === 'style' ||
228
- key === 'children' ||
229
- key === 'k-html') {
230
- continue;
231
- }
232
- const o = attr[key];
233
- // normal event handler
234
- if (key.startsWith('on:')) {
235
- element.addEventListener(key.slice(3), o); // chop off the `on:`
236
- }
237
- // normal attributes
238
- else {
239
- const handler = handlers[key] || defaultHandler;
240
- if (isKT$1(o)) {
241
- handler(element, key, o.value);
242
- o.addOnChange((v) => handler(element, key, v));
243
- }
244
- else {
245
- handler(element, key, o);
246
- }
247
- }
248
- }
249
- }
250
- function applyAttr(element, attr) {
251
- if (!attr) {
252
- return;
253
- }
254
- if (typeof attr === 'object' && attr !== null) {
255
- attrIsObject(element, attr);
256
- }
257
- else {
258
- throw new Error('[kt.js error] attr must be an object.');
259
- }
260
- }
261
-
262
- const assureNode = (o) => ($isNode$1(o) ? o : document.createTextNode(o));
263
- function apdSingle(element, c) {
264
- // & JSX should ignore false, undefined, and null
265
- if (c === false || c === undefined || c === null) {
266
- return;
267
- }
268
- if (isKT$1(c)) {
269
- let node = assureNode(c.value);
270
- $append.call(element, node);
271
- c.addOnChange((newValue, oldValue) => {
272
- if ($isNode$1(newValue) && $isNode$1(oldValue)) {
273
- // & this case is handled automically in `class KTRef`
274
- return;
275
- }
276
- const oldNode = node;
277
- node = assureNode(newValue);
278
- oldNode.replaceWith(node);
279
- });
280
- }
281
- else {
282
- $append.call(element, c);
283
- // Handle KTFor anchor
284
- const list = c.__kt_for_list__;
285
- if ($isArray(list)) {
286
- apd(element, list);
287
- }
288
- }
289
- }
290
- function apd(element, c) {
291
- if ($isThenable(c)) {
292
- c.then((r) => apd(element, r));
293
- }
294
- else if ($isArray(c)) {
295
- for (let i = 0; i < c.length; i++) {
296
- // & might be thenable here too
297
- const ci = c[i];
298
- if ($isThenable(ci)) {
299
- const comment = document.createComment('ktjs-promise-placeholder');
300
- $append.call(element, comment);
301
- ci.then((awaited) => comment.replaceWith(awaited));
302
- }
303
- else {
304
- apdSingle(element, ci);
305
- }
306
- }
307
- }
308
- else {
309
- // & here is thened, so must be a simple elementj
310
- apdSingle(element, c);
311
- }
312
- }
313
- function applyContent(element, content) {
314
- if ($isArray(content)) {
315
- for (let i = 0; i < content.length; i++) {
316
- apd(element, content[i]);
317
- }
318
- }
319
- else {
320
- apd(element, content);
321
- }
322
- }
323
-
324
- function applyKModel(element, valueRef) {
325
- if (!isKT$1(valueRef)) {
326
- console.warn('[kt.js warn]','k-model value must be a KTRef.');
327
- return;
328
- }
329
- if (element instanceof HTMLInputElement) {
330
- if (element.type === 'radio' || element.type === 'checkbox') {
331
- applyModel(element, valueRef, 'checked', 'change');
332
- }
333
- else {
334
- applyModel(element, valueRef, 'value', 'input');
335
- }
336
- }
337
- else if (element instanceof HTMLSelectElement) {
338
- applyModel(element, valueRef, 'value', 'change');
339
- }
340
- else if (element instanceof HTMLTextAreaElement) {
341
- applyModel(element, valueRef, 'value', 'input');
342
- }
343
- else {
344
- console.warn('[kt.js warn]','not supported element for k-model:');
345
- }
346
- }
347
-
348
- const htmlCreator = (tag) => document.createElement(tag);
349
- const svgCreator = (tag) => document.createElementNS('http://www.w3.org/2000/svg', tag);
350
- const mathMLCreator = (tag) => document.createElementNS('http://www.w3.org/1998/Math/MathML', tag);
351
- let creator = htmlCreator;
352
- /**
353
- * Create an enhanced HTMLElement.
354
- * - Only supports HTMLElements, **NOT** SVGElements or other Elements.
355
- * @param tag tag of an `HTMLElement`
356
- * @param attr attribute object or className
357
- * @param content a string or an array of HTMLEnhancedElement as child nodes
358
- *
359
- * ## About
360
- * @package @ktjs/core
361
- * @author Kasukabe Tsumugi <futami16237@gmail.com>
362
- * @version 0.26.9 (Last Update: 2026.02.09 00:03:34.324)
363
- * @license MIT
364
- * @link https://github.com/baendlorel/kt.js
365
- * @link https://baendlorel.github.io/ Welcome to my site!
366
- * @description Core functionality for kt.js - DOM manipulation utilities with JSX/TSX support
367
- * @copyright Copyright (c) 2026 Kasukabe Tsumugi. All rights reserved.
368
- */
369
- const h = (tag, attr, content) => {
370
- if (typeof tag !== 'string') {
371
- throw new Error('[kt.js error] tagName must be a string.');
372
- }
373
- if (attr) {
374
- if (SVG_ATTR_FLAG in attr) {
375
- delete attr[SVG_ATTR_FLAG];
376
- creator = svgCreator;
377
- }
378
- else if (MATHML_ATTR_FLAG in attr) {
379
- delete attr[MATHML_ATTR_FLAG];
380
- creator = mathMLCreator;
381
- }
382
- else {
383
- creator = htmlCreator;
384
- }
385
- }
386
- // * start creating the element
387
- const element = creator(tag);
388
- // * Handle content
389
- applyAttr(element, attr);
390
- applyContent(element, content);
391
- if (typeof attr === 'object' && attr !== null && 'k-model' in attr) {
392
- applyKModel(element, attr['k-model']);
393
- }
394
- return element;
395
- };
396
-
397
- const dummyRef = { value: null };
398
- const create = (tag, props) => {
399
- if (typeof tag === 'function') {
400
- return tag(props);
401
- }
402
- else {
403
- return h(tag, props, props.children);
404
- }
405
- };
406
- const placeholder = () => document.createComment('k-if');
407
- /**
408
- * @param tag html tag or function component
409
- * @param props properties/attributes
410
- */
411
- function jsx(tag, props) {
412
- if (isComputed(props.ref)) {
413
- throw new Error('[kt.js error] Cannot assign a computed value to an element.');
414
- }
415
- const maybeDummyRef = isRef(props.ref) ? props.ref : dummyRef;
416
- let el;
417
- if ('k-if' in props) {
418
- const kif = props['k-if'];
419
- let condition = kif; // assume boolean by default
420
- // Handle reactive k-if
421
- if (isKT$1(kif)) {
422
- kif.addOnChange((newValue, oldValue) => {
423
- if (newValue === oldValue) {
424
- return;
425
- }
426
- const oldEl = el;
427
- el = newValue ? create(tag, props) : placeholder();
428
- $replaceNode$1(oldEl, el);
429
- maybeDummyRef.value = el;
430
- });
431
- condition = kif.value;
432
- }
433
- if (!condition) {
434
- // & make comment placeholder in case that ref might be redrawn later
435
- el = placeholder();
436
- maybeDummyRef.value = el;
437
- return el;
438
- }
439
- }
440
- el = create(tag, props);
441
- maybeDummyRef.value = el;
442
- return el;
443
- }
444
- /**
445
- * JSX runtime for React 17+ automatic runtime
446
- * This is called when using jsx: "react-jsx" or "react-jsxdev"
447
- */
448
- const jsxs = jsx;
449
-
450
- function Alert(props) {
451
- const { children, severity = 'info', variant = 'standard', icon, 'on:close': onClose } = props;
452
- const classes = `mui-alert mui-alert-${severity} mui-alert-${variant} ${props.class ? props.class : ''}`;
453
- // Icon SVG paths for different severities
454
- const getIcon = () => {
455
- if (icon === false) {
456
- return null;
457
- }
458
- if (icon) {
459
- return icon;
460
- }
461
- const iconSize = '22px';
462
- const iconClass = 'mui-alert-icon';
463
- switch (severity) {
464
- case 'success':
465
- return (jsx("svg", { class: iconClass, viewBox: "0 0 24 24", width: iconSize, height: iconSize, children: jsx("path", { fill: "currentColor", d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" }) }));
466
- case 'error':
467
- return (jsx("svg", { class: iconClass, viewBox: "0 0 24 24", width: iconSize, height: iconSize, children: jsx("path", { fill: "currentColor", d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) }));
468
- case 'warning':
469
- return (jsx("svg", { class: iconClass, viewBox: "0 0 24 24", width: iconSize, height: iconSize, children: jsx("path", { fill: "currentColor", d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) }));
470
- case 'info':
471
- default:
472
- return (jsx("svg", { class: iconClass, viewBox: "0 0 24 24", width: iconSize, height: iconSize, children: jsx("path", { fill: "currentColor", d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" }) }));
473
- }
474
- };
475
- const alertIcon = getIcon();
476
- const alert = (jsxs("div", { class: classes, style: parseStyle(props.style), role: "alert", children: [alertIcon && jsx("div", { class: "mui-alert-icon-wrapper", children: alertIcon }), jsx("div", { class: "mui-alert-message", children: children }), jsx("button", { "k-if": onClose, class: "mui-alert-close", "on:click": onClose, "aria-label": "Close", children: jsx("svg", { viewBox: "0 0 24 24", width: "18px", height: "18px", children: jsx("path", { fill: "currentColor", d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) })] }));
477
- return alert;
478
- }
479
-
480
- // Shared constants
481
- // Empty for now - can be extended with framework-wide constants
482
- /**
483
- * Mark the attribute as SVG to handle special cases during rendering.
484
- */
485
- const $is = Object.is;
486
- const $random = Math.random;
487
-
488
- // DOM manipulation utilities
489
- // # dom natives
490
- const $isNode = (x) => x?.nodeType > 0;
491
- /**
492
- * Safe replace `oldNode` With `newNode`
493
- */
494
- const $replaceNode = (oldNode, newNode) => {
495
- if ($isNode(oldNode) && $isNode(newNode)) {
496
- if (newNode.contains(oldNode)) {
497
- newNode.remove();
498
- }
499
- oldNode.replaceWith(newNode);
500
- }
501
- };
502
- const { get: $buttonDisabledGetter, set: $buttonDisabledSetter } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
503
-
504
- if (typeof Symbol === 'undefined') {
505
- window.Symbol = function Symbol(description) {
506
- return `@@SYMBOL_${description || ''}_${$random().toString(36).slice(2)}`;
507
- };
508
- }
509
-
510
- // Shared utilities and cached native methods for kt.js framework
511
- Object.defineProperty(window, '__ktjs__', { value: '0.23.4' });
512
-
513
- const isKT = (obj) => obj?.isKT;
514
-
515
- class KTRef {
516
- /**
517
- * Indicates that this is a KTRef instance
518
- */
519
- isKT = true;
520
- ktType = 1 /* KTReactiveType.REF */;
521
- /**
522
- * @internal
523
- */
524
- _value;
525
- /**
526
- * @internal
527
- */
528
- _onChanges;
529
- constructor(_value, _onChanges) {
530
- this._value = _value;
531
- this._onChanges = _onChanges;
532
- }
533
- /**
534
- * If new value and old value are both nodes, the old one will be replaced in the DOM
535
- */
536
- get value() {
537
- return this._value;
538
- }
539
- set value(newValue) {
540
- if ($is(newValue, this._value)) {
541
- return;
542
- }
543
- const oldValue = this._value;
544
- $replaceNode(oldValue, newValue);
545
- this._value = newValue;
546
- for (let i = 0; i < this._onChanges.length; i++) {
547
- this._onChanges[i](newValue, oldValue);
548
- }
549
- }
550
- /**
551
- * Register a callback when the value changes
552
- * @param callback (newValue, oldValue) => xxx
553
- */
554
- addOnChange(callback) {
555
- if (typeof callback !== 'function') {
556
- throw new Error('[kt.js error] KTRef.addOnChange: callback must be a function');
557
- }
558
- this._onChanges.push(callback);
559
- }
560
- removeOnChange(callback) {
561
- for (let i = this._onChanges.length - 1; i >= 0; i--) {
562
- if (this._onChanges[i] === callback) {
563
- this._onChanges.splice(i, 1);
564
- return true;
565
- }
566
- }
567
- return false;
568
- }
569
- }
570
- /**
571
- * Reference to the created HTML element.
572
- * - **Only** respond to `ref.value` changes, not reactive to internal changes of the element.
573
- * - can alse be used to store normal values, but it is not reactive.
574
- * - if the value is already a `KTRef`, it will be returned **directly**.
575
- * @param value mostly an HTMLElement
576
- */
577
- function ref(value, onChange) {
578
- return new KTRef(value, onChange ? [onChange] : []);
579
- }
580
- function deref(value) {
581
- return isKT(value) ? value.value : value;
582
- }
583
- // # asserts
584
- /**
585
- * Assert k-model to be a ref object
586
- */
587
- const $modelOrRef = (props, defaultValue) => {
588
- // & props is an object. Won't use it in any other place
589
- if ('k-model' in props) {
590
- const kmodel = props['k-model'];
591
- if (!kmodel?.isKT) {
592
- throw new Error(`[kt.js error] k-model data must be a KTRef object, please use 'ref(...)' to wrap it.`);
593
- }
594
- return kmodel;
595
- }
596
- return ref(defaultValue);
597
- };
598
-
599
- class KTComputed {
600
- /**
601
- * Indicates that this is a KTRef instance
602
- */
603
- isKT = true;
604
- ktType = 2 /* KTReactiveType.COMPUTED */;
605
- /**
606
- * @internal
607
- */
608
- _calculator;
609
- /**
610
- * @internal
611
- */
612
- _value;
613
- /**
614
- * @internal
615
- */
616
- _onChanges = [];
617
- /**
618
- * @internal
619
- */
620
- _subscribe(reactives) {
621
- for (let i = 0; i < reactives.length; i++) {
622
- const reactive = reactives[i];
623
- reactive.addOnChange(() => {
624
- const oldValue = this._value;
625
- this._value = this._calculator();
626
- if (oldValue === this._value) {
627
- return;
628
- }
629
- $replaceNode(oldValue, this._value);
630
- for (let i = 0; i < this._onChanges.length; i++) {
631
- this._onChanges[i](this._value, oldValue);
632
- }
633
- });
634
- }
635
- }
636
- constructor(_calculator, reactives) {
637
- this._calculator = _calculator;
638
- this._value = _calculator();
639
- this._subscribe(reactives);
640
- }
641
- /**
642
- * If new value and old value are both nodes, the old one will be replaced in the DOM
643
- */
644
- get value() {
645
- return this._value;
646
- }
647
- set value(_newValue) {
648
- throw new Error('[kt.js error] KTComputed: cannot set value of a computed value');
649
- }
650
- /**
651
- * Register a callback when the value changes
652
- * @param callback (newValue, oldValue) => xxx
653
- */
654
- addOnChange(callback) {
655
- if (typeof callback !== 'function') {
656
- throw new Error('[kt.js error] KTRef.addOnChange: callback must be a function');
657
- }
658
- this._onChanges.push(callback);
659
- }
660
- /**
661
- * Unregister a callback
662
- * @param callback (newValue, oldValue) => xxx
663
- */
664
- removeOnChange(callback) {
665
- for (let i = this._onChanges.length - 1; i >= 0; i--) {
666
- if (this._onChanges[i] === callback) {
667
- this._onChanges.splice(i, 1);
668
- return true;
669
- }
670
- }
671
- return false;
672
- }
673
- }
674
- /**
675
- * Create a reactive computed value
676
- * @param computeFn
677
- * @param reactives refs and computeds that this computed depends on
678
- */
679
- function computed(computeFn, reactives) {
680
- if (reactives.some((v) => !isKT(v))) {
681
- throw new Error('[kt.js error] computed: all reactives must be KTRef or KTComputed instances');
682
- }
683
- return new KTComputed(computeFn, reactives);
684
- }
685
-
686
- const toReactive = (value, onChange) => {
687
- if (isKT(value)) {
688
- if (onChange) {
689
- value.addOnChange(onChange);
690
- }
691
- return value;
692
- }
693
- else {
694
- return ref(value, onChange);
695
- }
696
- };
697
-
698
- const registerPrefixedEventsForButton = (element, props) => {
699
- for (const key in props) {
700
- if (key.startsWith('on:') && key !== 'on:click' && key !== 'on:dblclick') {
701
- element.addEventListener(key.slice(3), props[key]);
702
- }
703
- }
704
- };
705
-
706
- /**
707
- * Button component - mimics MUI Button appearance and behavior
708
- */
709
- function Button(props) {
710
- let { children, variant = 'text', color = 'primary', size = 'medium', disabled = false, fullWidth = false, iconOnly = false, startIcon, endIcon, type = 'button', 'on:click': onClick = $emptyFn, // & must be bound because of the ripple effect
711
- } = props;
712
- const updateClass = () => {
713
- container.className = [
714
- 'mui-button',
715
- `mui-button-${variant}`,
716
- `mui-button-${variant}-${color}`,
717
- `mui-button-size-${size}`,
718
- fullWidth ? 'mui-button-fullwidth' : '',
719
- iconOnly ? 'mui-button-icon-only' : '',
720
- disabledRef.value ? 'mui-button-disabled' : '',
721
- props.class ? props.class : '',
722
- ].join(' ');
723
- };
724
- const disabledRef = toReactive(disabled, (v) => {
725
- container.disabled = v;
726
- updateClass();
727
- });
728
- const rippleContainer = jsx("span", { class: "mui-button-ripple" });
729
- const createRippleEffect = (mouseX, mouseY) => {
730
- const rect = container.getBoundingClientRect();
731
- const size = Math.max(rect.width, rect.height);
732
- const x = mouseX - rect.left - size / 2;
733
- const y = mouseY - rect.top - size / 2;
734
- const ripple = (jsx("span", { class: "mui-button-ripple-effect", style: `width:${size}px; height:${size}px; left:${x}px; top:${y}px;` }));
735
- rippleContainer.appendChild(ripple);
736
- setTimeout(() => ripple.remove(), 600); // Remove ripple after animation
737
- };
738
- const handleClick = (e) => {
739
- if (disabledRef.value) {
740
- e.preventDefault();
741
- return;
742
- }
743
- createRippleEffect(e.clientX, e.clientY);
744
- onClick(e);
745
- };
746
- const container = (jsxs("button", { style: parseStyle(props.style), type: type, disabled: disabledRef.value, "on:click": handleClick, children: [jsx("span", { "k-if": startIcon, class: "mui-button-start-icon", children: startIcon }), jsx("span", { class: "mui-button-label", children: children }), jsx("span", { "k-if": endIcon, class: "mui-button-end-icon", children: endIcon }), rippleContainer] }));
747
- const onDblclick = props['on:dblclick'];
748
- if (onDblclick) {
749
- container.addEventListener('dblclick', (e) => {
750
- if (disabledRef.value) {
751
- e.preventDefault();
752
- return;
753
- }
754
- createRippleEffect(e.clientX, e.clientY);
755
- onDblclick(e);
756
- });
757
- }
758
- registerPrefixedEventsForButton(container, props);
759
- // # initialize
760
- updateClass();
761
- return container;
762
- }
763
-
764
- const $ArrayPushUnique = (arr, item) => {
765
- if (!arr.includes(item)) {
766
- arr.push(item);
767
- }
768
- };
769
- const $ArrayDelete = (arr, item) => {
770
- const index = arr.indexOf(item);
771
- if (index > -1) {
772
- arr.splice(index, 1);
773
- }
774
- };
775
-
776
- const createUncheckedIcon = () => (jsx("span", { class: "mui-checkbox-icon-unchecked", children: jsx("svg", { viewBox: "0 0 24 24", children: jsx("path", { d: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" }) }) }));
777
- const createCheckedIcon = () => (jsx("span", { class: "mui-checkbox-icon-checked", children: jsx("svg", { viewBox: "0 0 24 24", children: jsx("path", { d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" }) }) }));
778
- const createIndeterminateIcon = () => (jsx("span", { class: "mui-checkbox-icon-indeterminate", children: jsx("svg", { viewBox: "0 0 24 24", children: jsx("path", { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z" }) }) }));
779
- /**
780
- * Checkbox component - mimics MUI Checkbox appearance and behavior
781
- */
782
- function Checkbox(props) {
783
- const toggleIcon = (checked, indeterminate) => {
784
- if (indeterminate) {
785
- uncheckedIcon.style.display = 'none';
786
- checkedIcon.style.display = 'none';
787
- indeterminateIcon.style.display = '';
788
- }
789
- else {
790
- uncheckedIcon.style.display = checked ? 'none' : '';
791
- checkedIcon.style.display = checked ? '' : 'none';
792
- indeterminateIcon.style.display = 'none';
793
- }
794
- };
795
- // Handle change
796
- const handleChange = () => {
797
- if (disabledRef.value) {
798
- return;
799
- }
800
- modelRef.value = inputEl.checked;
801
- interminateRef.value = false;
802
- toggleIcon(modelRef.value, interminateRef.value);
803
- onChange(modelRef.value, valueRef.value);
804
- };
805
- const onChange = props['on:change'] ?? $emptyFn;
806
- const labelRef = toReactive(props.label ?? '');
807
- const valueRef = toReactive(props.value ?? '');
808
- const interminateRef = toReactive(props.indeterminate ?? false);
809
- const colorRef = toReactive(props.color ?? 'primary');
810
- const sizeRef = toReactive(props.size ?? 'medium');
811
- const disabledRef = toReactive(props.disabled ?? false, (v) => {
812
- inputEl.disabled = v;
813
- container.classList.toggle('mui-checkbox-disabled', v);
814
- });
815
- const modelRef = $modelOrRef(props, props.checked ?? false);
816
- modelRef.addOnChange((newValue) => {
817
- inputEl.checked = newValue;
818
- toggleIcon(newValue, interminateRef.value);
819
- });
820
- const inputEl = (jsx("input", { type: "checkbox", class: "mui-checkbox-input", checked: modelRef.value, value: valueRef, disabled: disabledRef, "on:change": handleChange }));
821
- const uncheckedIcon = createUncheckedIcon();
822
- const checkedIcon = createCheckedIcon();
823
- const indeterminateIcon = createIndeterminateIcon();
824
- // Initialize icon state
825
- toggleIcon(modelRef.value, interminateRef.value);
826
- const classRef = computed(() => {
827
- return `mui-checkbox-wrapper mui-checkbox-size-${sizeRef.value} ${disabledRef.value ? 'mui-checkbox-disabled' : ''} mui-checkbox-color-${colorRef.value}`;
828
- }, [colorRef, disabledRef, sizeRef]);
829
- const container = (jsxs("label", { class: classRef, children: [inputEl, jsxs("span", { class: "mui-checkbox-icon", children: [uncheckedIcon, checkedIcon, indeterminateIcon] }), jsx("span", { "k-if": labelRef, class: "mui-checkbox-label", children: labelRef })] }));
830
- return container;
831
- }
832
- /**
833
- * CheckboxGroup component - groups multiple checkboxes together
834
- */
835
- function CheckboxGroup(props) {
836
- let { row = false, 'on:change': onChange = $emptyFn } = props;
837
- const changeHandler = (checked, checkboxValue) => {
838
- if (checked) {
839
- $ArrayPushUnique(modelRef.value, checkboxValue);
840
- }
841
- else {
842
- $ArrayDelete(modelRef.value, checkboxValue);
843
- }
844
- onChange(modelRef.value);
845
- };
846
- const rowRef = toReactive(props.row ?? true);
847
- const sizeRef = toReactive(props.size ?? 'medium');
848
- const modelRef = $modelOrRef(props, props.value ?? []);
849
- modelRef.addOnChange((newValues) => {
850
- for (let i = 0; i < checkboxes.value.length; i++) {
851
- const c = checkboxes.value[i];
852
- c.checked = newValues.includes(c.value);
853
- }
854
- });
855
- const customClassRef = toReactive(props.class ?? '');
856
- const classRef = computed(() => {
857
- return `mui-checkbox-group ${rowRef.value ? 'mui-checkbox-group-row' : ''} ${customClassRef.value}`;
858
- }, [rowRef, customClassRef]);
859
- const styleRef = toReactive(parseStyle(props.style ?? ''));
860
- const optionsRef = toReactive(props.options);
861
- const checkboxes = computed(() => {
862
- return optionsRef.value.map((o) => {
863
- o.size = sizeRef.value;
864
- o.checked = modelRef.value.includes(o.value);
865
- const originalChange = o['on:change'];
866
- if (originalChange) {
867
- if (typeof originalChange !== 'function') {
868
- throw new Error('[kt.js error] CheckboxGroup: handler must be a function');
869
- }
870
- o['on:change'] = (checked, value) => {
871
- originalChange(checked, value);
872
- changeHandler(checked, value);
873
- };
874
- }
875
- else {
876
- o['on:change'] = changeHandler;
877
- }
878
- return Checkbox(o);
879
- });
880
- }, [optionsRef, sizeRef]);
881
- console.log('checkboxes', checkboxes.value);
882
- const container = (jsx("div", { class: classRef, style: styleRef, role: "group", children: checkboxes }));
883
- return container;
884
- }
885
-
886
- /**
887
- * Dialog component - mimics MUI Dialog appearance and behavior
888
- * Only handles open/close state, title and content are passed as props
889
- */
890
- function Dialog(props) {
891
- let { 'on:close': onClose = $emptyFn, children, actions } = props;
892
- const titleRef = toReactive(props.title ?? '');
893
- const openRef = toReactive(props.open ?? false, (isOpen) => {
894
- if (isOpen) {
895
- // Opening: set display first, then add class with double RAF for animation
896
- container.style.display = 'flex';
897
- setTimeout(() => container.classList.add('kt-dialog-backdrop-open'), 50);
898
- }
899
- else {
900
- container.classList.remove('kt-dialog-backdrop-open');
901
- setTimeout(() => {
902
- if (!openRef.value) {
903
- container.style.display = 'none';
904
- }
905
- }, 225);
906
- }
907
- });
908
- const sizeRef = toReactive(props.size ?? 'sm');
909
- const fullWidthRef = toReactive(props.fullWidth ?? false);
910
- const classNameRef = computed(() => `kt-dialog-paper ${sizeRef.value ? `kt-dialog-maxWidth-${sizeRef.value}` : ''} ${fullWidthRef.value ? 'kt-dialog-fullWidth' : ''}`, [sizeRef, fullWidthRef]);
911
- // Handle ESC key - store handler for cleanup
912
- const keyDownHandler = (e) => {
913
- if (e.key === 'Escape') {
914
- openRef.value = false;
915
- onClose();
916
- }
917
- };
918
- const handleBackdropClick = (e) => {
919
- if (e.target === container) {
920
- onClose();
921
- }
922
- };
923
- // Backdrop element
924
- const container = (jsx("div", { class: `kt-dialog-backdrop ${openRef.value ? 'kt-dialog-backdrop-open' : ''}`, style: { display: openRef.value ? 'flex' : 'none' }, "on:click": handleBackdropClick, children: jsxs("div", { class: classNameRef, "on:click": (e) => e.stopPropagation(), children: [jsx("div", { "k-if": titleRef, class: "kt-dialog-title", children: jsx("h2", { children: titleRef }) }), jsx("div", { "k-if": children, class: "kt-dialog-content", children: children }), jsx("div", { "k-if": actions, class: "kt-dialog-actions", children: actions })] }) }));
925
- document.addEventListener('keydown', keyDownHandler);
926
- // Store cleanup function
927
- const originalRemove = container.remove;
928
- container.remove = () => {
929
- if (keyDownHandler) {
930
- document.removeEventListener('keydown', keyDownHandler);
931
- }
932
- return originalRemove.call(container);
933
- };
934
- return container;
935
- }
936
-
937
- /**
938
- * FormLabel component - mimics MUI FormLabel appearance and behavior
939
- */
940
- function FormLabel(props) {
941
- const { children, required = false, error = false, disabled = false, focused = false, filled = false, component = 'label', htmlFor, } = props;
942
- const classes = [
943
- 'mui-form-label',
944
- error && 'mui-form-label-error',
945
- disabled && 'mui-form-label-disabled',
946
- focused && 'mui-form-label-focused',
947
- filled && 'mui-form-label-filled',
948
- ]
949
- .filter(Boolean)
950
- .join(' ');
951
- const labelProps = {
952
- class: classes,
953
- };
954
- if (htmlFor) {
955
- labelProps.for = htmlFor;
956
- }
957
- const element = component === 'legend' ? (jsxs("legend", { ...labelProps, children: [children, required && jsx("span", { class: "mui-form-label-asterisk", children: " *" })] })) : (jsxs("label", { ...labelProps, children: [children, required && jsx("span", { class: "mui-form-label-asterisk", children: " *" })] }));
958
- return element;
959
- }
960
-
961
- function LinearProgress(props) {
962
- const valueRef = ref(props.progress ?? 0);
963
- const customClassRef = toReactive(props.class ?? '');
964
- const colorRef = toReactive(props.color ?? 'primary');
965
- const variantRef = toReactive(props.variant ?? 'indeterminate');
966
- const classRef = computed(() => {
967
- return `mui-linear-progress mui-linear-progress-${variantRef.value} mui-linear-progress-${colorRef.value} ${customClassRef.value}`;
968
- }, [customClassRef, colorRef, variantRef]);
969
- const styleRef = toReactive(props.style ?? '');
970
- const barLengthRef = computed(() => {
971
- return variantRef.value === 'determinate' ? `width: ${valueRef.value}%` : '';
972
- }, [variantRef, valueRef]);
973
- const container = (jsx("div", { class: classRef, style: styleRef, role: "progressbar", "aria-valuenow": valueRef, children: jsx("div", { class: "mui-linear-progress-bar", style: barLengthRef }) }));
974
- return container;
975
- }
976
-
977
- function TextField(props) {
978
- // # events
979
- const onInput = props['on:input'] ?? $emptyFn;
980
- const onInputTrim = props['on-trim:input'] ?? $emptyFn;
981
- const onChange = props['on:change'] ?? $emptyFn;
982
- const onChangeTrim = props['on-trim:change'] ?? $emptyFn;
983
- const onBlur = props['on:blur'] ?? $emptyFn;
984
- const onFocus = props['on:focus'] ?? $emptyFn;
985
- const isFocusedRef = ref(false);
986
- // # methods
987
- const handleInput = () => {
988
- if (inputType === 'number') {
989
- const v = Number(inputEl.value);
990
- modelRef.value = v;
991
- onInput(v);
992
- onInputTrim(v);
993
- }
994
- else {
995
- modelRef.value = inputEl.value;
996
- onInput(inputEl.value);
997
- onInputTrim(inputEl.value.trim());
998
- }
999
- };
1000
- const handleChange = () => {
1001
- if (inputType === 'number') {
1002
- const v = Number(inputEl.value);
1003
- modelRef.value = v;
1004
- onChange(v);
1005
- onChangeTrim(v);
1006
- }
1007
- else {
1008
- modelRef.value = inputEl.value;
1009
- onChange(inputEl.value);
1010
- onChangeTrim(inputEl.value.trim());
1011
- }
1012
- };
1013
- const handleFocus = () => {
1014
- isFocused.value = true;
1015
- onFocus(inputEl.value);
1016
- };
1017
- const handleBlur = () => {
1018
- isFocused.value = false;
1019
- onBlur(inputEl.value);
1020
- };
1021
- const handleWrapperMouseDown = (e) => {
1022
- if (disabledRef.value) {
1023
- return;
1024
- }
1025
- const target = e.target;
1026
- if (!target || target === inputEl) {
1027
- return;
1028
- }
1029
- setTimeout(() => inputEl.focus(), 0);
1030
- };
1031
- const getPlaceholder = () => (labelRef.value && !isFocused && !modelRef.value ? '' : placeholderRef.value);
1032
- // # non-refs
1033
- const inputType = deref(props.type ?? 'text');
1034
- const multiline = props.multiline;
1035
- // # refs
1036
- // Create refs for all reactive properties
1037
- const labelRef = toReactive(props.label ?? '');
1038
- const placeholderRef = toReactive(props.placeholder ?? '', () => (inputEl.placeholder = getPlaceholder()));
1039
- const disabledRef = toReactive(props.disabled ?? false);
1040
- const readOnlyRef = toReactive(props.readOnly ?? false);
1041
- const requiredRef = toReactive(props.required ?? false);
1042
- const errorRef = toReactive(props.error ?? false);
1043
- const helperTextRef = toReactive(props.helperText ?? '');
1044
- const fullWidthRef = toReactive(props.fullWidth ?? false);
1045
- const rowsRef = toReactive(props.rows ?? 3);
1046
- const sizeRef = toReactive(props.size ?? 'medium');
1047
- // k-model takes precedence over value prop for two-way binding
1048
- const modelRef = $modelOrRef(props, props.value ?? '');
1049
- // Add change listeners for reactive properties
1050
- // `k-if` changing triggers redrawing, no need to do this again
1051
- // // labelRef.addOnChange(() => {
1052
- // // wrapperRef.redraw();
1053
- // // updateContainerClass();
1054
- // // });
1055
- const isFocused = ref(false);
1056
- const inputEl = multiline
1057
- ? (jsx("textarea", { class: "mui-textfield-input", placeholder: getPlaceholder(), value: modelRef.value, disabled: disabledRef, readOnly: readOnlyRef, required: requiredRef, rows: rowsRef, "on:input": handleInput, "on:change": handleChange, "on:focus": handleFocus, "on:blur": handleBlur }))
1058
- : (jsx("input", { type: inputType, class: "mui-textfield-input", placeholder: getPlaceholder(), value: modelRef.value, disabled: disabledRef, readOnly: readOnlyRef, required: requiredRef, "on:input": handleInput, "on:change": handleChange, "on:focus": handleFocus, "on:blur": handleBlur }));
1059
- modelRef.addOnChange((newValue) => (inputEl.value = newValue));
1060
- const styleRef = toReactive(parseStyle(props.style ?? ''));
1061
- const customClassRef = toReactive(props.class ?? '');
1062
- const classRef = computed(() => {
1063
- const className = [
1064
- 'mui-textfield-root',
1065
- `mui-textfield-size-${sizeRef.value}`,
1066
- isFocusedRef.value ? 'mui-textfield-focused' : '',
1067
- errorRef.value ? 'mui-textfield-error' : '',
1068
- disabledRef.value ? 'mui-textfield-disabled' : '',
1069
- fullWidthRef.value ? 'mui-textfield-fullwidth' : '',
1070
- labelRef.value && inputEl.value ? 'mui-textfield-has-value' : '',
1071
- labelRef.value ? '' : 'mui-textfield-no-label',
1072
- customClassRef.value ? customClassRef.value : '',
1073
- ].join(' ');
1074
- return className;
1075
- }, [sizeRef, errorRef, disabledRef, fullWidthRef, labelRef, isFocusedRef, customClassRef]);
1076
- // if (multiline) {
1077
- // rowsRef.addOnChange((newRows) => ((inputEl as HTMLTextAreaElement).rows = newRows));
1078
- // }
1079
- const container = (jsxs("div", { class: classRef, style: styleRef, children: [jsxs("div", { class: "mui-textfield-wrapper", "on:mousedown": handleWrapperMouseDown, children: [jsxs("label", { class: "mui-textfield-label", children: [labelRef, jsx("span", { "k-if": requiredRef, class: "mui-textfield-required", children: "*" })] }), jsx("div", { class: "mui-textfield-input-wrapper", children: inputEl }), jsx("fieldset", { class: "mui-textfield-fieldset", children: jsx("legend", { class: "mui-textfield-legend", children: jsxs("span", { children: [labelRef, jsx("span", { "k-if": requiredRef, children: "*" })] }) }) })] }), jsx("p", { class: "mui-textfield-helper-text", children: helperTextRef })] }));
1080
- return container;
1081
- }
1082
-
1083
- /**
1084
- * Radio component - mimics MUI Radio appearance and behavior
1085
- */
1086
- function Radio(props) {
1087
- const onChange = props['on:change'] ?? $emptyFn;
1088
- const toggleIcon = (checked) => {
1089
- uncheckedIcon.style.display = checked ? 'none' : '';
1090
- checkedIcon.style.display = checked ? '' : 'none';
1091
- };
1092
- // Handle change
1093
- const handleChange = () => {
1094
- if (disabled) {
1095
- return;
1096
- }
1097
- checked = input.checked;
1098
- toggleIcon(checked);
1099
- onChange(checked, value);
1100
- };
1101
- let { checked = false, value = '', label: text = '', size = 'small', disabled = false, color = 'primary' } = props;
1102
- const valueRef = toReactive(props.value ?? '');
1103
- const disabledRef = toReactive(props.disabled ?? false);
1104
- const input = (jsx("input", { type: "radio", class: "mui-radio-input", checked: checked, value: valueRef, disabled: disabledRef, "on:change": handleChange }));
1105
- const uncheckedIcon = (jsx("span", { class: "mui-radio-icon-unchecked", children: jsx("svg", { viewBox: "0 0 24 24", children: jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" }) }) }));
1106
- const checkedIcon = (jsx("span", { class: "mui-radio-icon-checked", children: jsx("svg", { viewBox: "0 0 24 24", children: jsx("path", { d: "M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" }) }) }));
1107
- // initialize icon state
1108
- toggleIcon(checked);
1109
- const container = (jsxs("label", { class: `mui-radio-wrapper ${props.class ?? ''} mui-radio-size-${size} ${disabled ? 'mui-radio-disabled' : ''} mui-radio-color-${color}`, style: parseStyle(props.style), children: [input, jsxs("span", { class: "mui-radio-icon", children: [uncheckedIcon, checkedIcon] }), jsx("span", { class: "mui-radio-label", children: text })] }));
1110
- $defines(container, {
1111
- value: {
1112
- get() {
1113
- return value;
1114
- },
1115
- },
1116
- checked: {
1117
- get() {
1118
- return checked;
1119
- },
1120
- set(newChecked) {
1121
- checked = newChecked;
1122
- input.checked = checked;
1123
- toggleIcon(checked);
1124
- },
1125
- },
1126
- });
1127
- return container;
1128
- }
1129
- /**
1130
- * RadioGroup component - groups multiple radios together
1131
- */
1132
- function RadioGroup(props) {
1133
- let { value = '', size = 'small', row = false } = props;
1134
- const onChange = props['on:change'] ?? $emptyFn;
1135
- const changeHandler = (checked, value) => {
1136
- if (checked) {
1137
- onChange(value);
1138
- }
1139
- radios.forEach((radio) => (radio.checked = radio.value === value));
1140
- };
1141
- const radios = props.options.map((o) => {
1142
- o.size = size;
1143
- o.checked = value === o.value;
1144
- const originalChange = o['on:change'];
1145
- if (originalChange) {
1146
- o['on:change'] = (checked, newValue) => {
1147
- originalChange(checked, newValue);
1148
- changeHandler(checked, newValue);
1149
- };
1150
- }
1151
- else {
1152
- o['on:change'] = changeHandler;
1153
- }
1154
- return Radio(o);
1155
- });
1156
- const container = (jsx("div", { class: `mui-radio-group ${row ? 'mui-radio-group-row' : ''} ${props.class ?? ''}`, style: parseStyle(props.style), role: "radiogroup", children: radios }));
1157
- $defines(container, {
1158
- value: {
1159
- get() {
1160
- return value;
1161
- },
1162
- set(newValue) {
1163
- value = newValue;
1164
- radios.forEach((radio) => (radio.checked = radio.value === value));
1165
- },
1166
- },
1167
- });
1168
- return container;
1169
- }
1170
-
1171
- /**
1172
- * Select component - mimics MUI Select appearance and behavior
1173
- */
1174
- function Select(props) {
1175
- const onChange = props['on:change'] ?? $emptyFn;
1176
- // # refs
1177
- const isFocusedRef = ref(false);
1178
- const open = ref(false, (isOpen) => {
1179
- if (isOpen) {
1180
- menu.value.style.display = 'block';
1181
- void menu.value.offsetHeight; // & Trigger reflow to enable animation
1182
- }
1183
- else {
1184
- // Hide after animation completes
1185
- setTimeout(() => {
1186
- if (!isOpen) {
1187
- menu.value.style.display = 'none';
1188
- }
1189
- }, 200);
1190
- }
1191
- menu.value.classList.toggle('mui-select-menu-open', isOpen);
1192
- container.classList.toggle('mui-select-open', isOpen);
1193
- });
1194
- // # ref props
1195
- const placeholderRef = toReactive(props.placeholder ?? '');
1196
- const labelRef = toReactive(props.label ?? '');
1197
- const optionsRef = toReactive(props.options, (newOptions) => {
1198
- if (!newOptions.find((o) => o.value === modelRef.value)) {
1199
- onChange((modelRef.value = ''));
1200
- }
1201
- });
1202
- const disabledRef = toReactive(props.disabled ?? false, (v) => container.classList.toggle('mui-select-disabled', v));
1203
- const modelRef = $modelOrRef(props, props.value ?? '');
1204
- const styleRef = toReactive(parseStyle(props.style ?? ''));
1205
- const classRef = toReactive(props.class ?? '');
1206
- const sizeRef = toReactive(props.size ?? 'medium');
1207
- const fullwidthRef = toReactive(props.fullWidth ?? false);
1208
- const className = computed(() => {
1209
- return `mui-select-wrapper mui-select-size-${sizeRef.value} ${fullwidthRef.value ? 'mui-select-fullWidth' : ''} ${classRef.value} ${disabledRef.value ? 'mui-select-disabled' : ''}`;
1210
- }, [sizeRef, fullwidthRef, classRef, disabledRef]);
1211
- const label = computed(() => {
1212
- if (labelRef.value) {
1213
- return (jsx("label", { class: `mui-select-label ${modelRef.value || isFocusedRef.value || placeholderRef.value ? 'focused' : ''}`, children: labelRef }));
1214
- }
1215
- return '';
1216
- }, [labelRef, modelRef, isFocusedRef, placeholderRef]);
1217
- // Toggle dropdown
1218
- const toggleMenu = () => {
1219
- if (!disabledRef.value) {
1220
- open.value = !open.value;
1221
- }
1222
- };
1223
- // Handle option click
1224
- const handleOptionClick = (e) => {
1225
- const newValue = e.currentTarget.dataset.value;
1226
- modelRef.value = newValue;
1227
- onChange(newValue);
1228
- open.value = false;
1229
- };
1230
- // Close menu when clicking outside
1231
- const handleClickOutside = (e) => {
1232
- if (!container.contains(e.target)) {
1233
- open.value = false;
1234
- }
1235
- };
1236
- // Handle focus
1237
- const handleFocus = () => (isFocusedRef.value = true);
1238
- const handleBlur = () => (isFocusedRef.value = false);
1239
- const defaultEmpty = jsx("span", { class: "mui-select-placeholder", children: placeholderRef.value || '\u00a0' });
1240
- const displayedValue = computed(() => {
1241
- const o = optionsRef.value.find((item) => item.value === modelRef.value);
1242
- return jsx("div", { class: "mui-select-display", children: o?.label ?? defaultEmpty });
1243
- }, [modelRef]);
1244
- const menu = computed(() => {
1245
- return (jsxs("div", { class: "mui-select-menu", style: "display: none;", children: [optionsRef.value.map((o) => (jsx("div", { class: `mui-select-option ${o.value === modelRef.value ? 'selected' : ''}`, "data-value": o.value, "on:click": handleOptionClick, children: o.label }))), ' '] }));
1246
- }, [optionsRef, modelRef]);
1247
- // Create container
1248
- const container = (jsxs("div", { class: className, style: styleRef, children: [label, jsxs("div", { class: "mui-select-control mui-select-outlined", "on:click": toggleMenu, "on:focus": handleFocus, "on:blur": handleBlur, tabIndex: disabledRef.value ? -1 : 0, children: [displayedValue, jsx("input", { type: "hidden", value: modelRef }), jsx("fieldset", { class: "mui-select-fieldset", children: jsx("legend", { class: "mui-select-legend", children: jsx("span", { children: labelRef }) }) }), jsx("svg", { class: "mui-select-icon", focusable: "false", "aria-hidden": "true", viewBox: "0 0 24 24", width: "24", height: "24", children: jsx("path", { d: "M7 10l5 5 5-5Z", fill: "currentColor" }) })] }), menu] }));
1249
- // Add global click listener
1250
- setTimeout(() => {
1251
- document.removeEventListener('click', handleClickOutside);
1252
- document.addEventListener('click', handleClickOutside);
1253
- }, 0);
1254
- return container;
1255
- }
1256
-
1257
- /**
1258
- * Card component - mimics MUI Card appearance and behavior
1259
- */
1260
- function Card(props) {
1261
- // # ref props
1262
- const variantRef = toReactive(props.variant ?? 'elevation');
1263
- const elevationRef = toReactive(props.elevation ?? 1);
1264
- const squareRef = toReactive(props.square ?? false);
1265
- const raisedRef = toReactive(props.raised ?? false);
1266
- const styleRef = toReactive(parseStyle(props.style ?? ''));
1267
- const classRef = toReactive(props.class ?? '');
1268
- const className = computed(() => {
1269
- const base = 'mui-card';
1270
- const variantClass = `mui-card-${variantRef.value}`;
1271
- const elevationClass = variantRef.value === 'elevation' ? `mui-card-elevation-${Math.min(24, Math.max(0, elevationRef.value))}` : '';
1272
- const squareClass = squareRef.value ? 'mui-card-square' : '';
1273
- const raisedClass = raisedRef.value ? 'mui-card-raised' : '';
1274
- return `${base} ${variantClass} ${elevationClass} ${squareClass} ${raisedClass} ${classRef.value}`.trim().replace(/\s+/g, ' ');
1275
- }, [variantRef, elevationRef, squareRef, raisedRef, classRef]);
1276
- // Handle click
1277
- const handleClick = props['on:click'] ?? (() => { });
1278
- const container = (jsx("div", { class: className, style: styleRef, "on:click": handleClick, children: props.children }));
1279
- return container;
1280
- }
1281
-
1282
- /**
1283
- * Switch component - mimics MUI Switch appearance and behavior
1284
- */
1285
- function Switch(props) {
1286
- const onChange = props['on:change'] ?? $emptyFn;
1287
- // # ref props
1288
- const labelRef = toReactive(props.label ?? '');
1289
- const valueRef = toReactive(props.value ?? '');
1290
- const colorRef = toReactive(props.color ?? 'primary');
1291
- const sizeRef = toReactive(props.size ?? 'medium');
1292
- const disabledRef = toReactive(props.disabled ?? false, (v) => {
1293
- inputEl.disabled = v;
1294
- container.classList.toggle('mui-switch-disabled', v);
1295
- });
1296
- const modelRef = $modelOrRef(props, props.checked ?? false);
1297
- modelRef.addOnChange((newValue) => {
1298
- inputEl.checked = newValue;
1299
- track.classList.toggle('mui-switch-track-checked', newValue);
1300
- thumb.classList.toggle('mui-switch-thumb-checked', newValue);
1301
- });
1302
- const styleRef = toReactive(parseStyle(props.style ?? ''));
1303
- const classRef = toReactive(props.class ?? '');
1304
- const className = computed(() => {
1305
- return `mui-switch-wrapper mui-switch-size-${sizeRef.value} ${disabledRef.value ? 'mui-switch-disabled' : ''} mui-switch-color-${colorRef.value} ${classRef.value}`;
1306
- }, [colorRef, disabledRef, sizeRef, classRef]);
1307
- // Handle change
1308
- const handleChange = () => {
1309
- if (disabledRef.value) {
1310
- return;
1311
- }
1312
- modelRef.value = inputEl.checked;
1313
- onChange(modelRef.value, valueRef.value);
1314
- };
1315
- const inputEl = (jsx("input", { type: "checkbox", class: "mui-switch-input", checked: modelRef.value, value: valueRef, disabled: disabledRef, "on:change": handleChange }));
1316
- const track = jsx("span", { class: "mui-switch-track" });
1317
- const thumb = jsx("span", { class: "mui-switch-thumb" });
1318
- const container = (jsxs("label", { class: className, style: styleRef, children: [inputEl, jsxs("span", { class: "mui-switch-base", children: [track, thumb] }), jsx("span", { "k-if": labelRef, class: "mui-switch-label", children: labelRef })] }));
1319
- // Initialize state
1320
- track.classList.toggle('mui-switch-track-checked', modelRef.value);
1321
- thumb.classList.toggle('mui-switch-thumb-checked', modelRef.value);
1322
- return container;
1
+ import{$parseStyle as e,$emptyFn as r,$defines as i,$arrayPushUnique as o,$arrayDelete as t,$max as a,$min as n,$round as l,$clamp as c}from"@ktjs/shared";import{jsxs as s,jsx as u}from"@ktjs/core/jsx-runtime";import{toReactive as d,computed as p,ref as m,KTFor as b,$modelOrRef as x,effect as g,dereactive as h}from"@ktjs/core";import{ExpandMoreIcon as f}from"@ktjs/mui-icon";var v=function(){function e(e){var r=this;this._insertTag=function(e){var i;i=0===r.tags.length?r.insertionPoint?r.insertionPoint.nextSibling:r.prepend?r.container.firstChild:r.before:r.tags[r.tags.length-1].nextSibling,r.container.insertBefore(e,i),r.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var r=e.prototype;return r.hydrate=function(e){e.forEach(this._insertTag)},r.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var r=document.createElement("style");return r.setAttribute("data-emotion",e.key),void 0!==e.nonce&&r.setAttribute("nonce",e.nonce),r.appendChild(document.createTextNode("")),r.setAttribute("data-s",""),r}(this));var r=this.tags[this.tags.length-1];if(this.isSpeedy){var i=function(e){if(e.sheet)return e.sheet;for(var r=0;r<document.styleSheets.length;r++)if(document.styleSheets[r].ownerNode===e)return document.styleSheets[r]}(r);try{i.insertRule(e,i.cssRules.length)}catch(e){}}else r.appendChild(document.createTextNode(e));this.ctr++},r.flush=function(){this.tags.forEach(function(e){var r;return null==(r=e.parentNode)?void 0:r.removeChild(e)}),this.tags=[],this.ctr=0},e}(),k="-ms-",w="-moz-",y="-webkit-",z="comm",C="rule",$="decl",S="@keyframes",L=Math.abs,A=String.fromCharCode,E=Object.assign;function I(e){return e.trim()}function M(e,r,i){return e.replace(r,i)}function T(e,r){return e.indexOf(r)}function j(e,r){return 0|e.charCodeAt(r)}function R(e,r,i){return e.slice(r,i)}function O(e){return e.length}function W(e){return e.length}function D(e,r){return r.push(e),e}var H=1,B=1,P=0,N=0,G=0,U="";function V(e,r,i,o,t,a,n){return{value:e,root:r,parent:i,type:o,props:t,children:a,line:H,column:B,length:n,return:""}}function q(e,r){return E(V("",null,null,"",null,null,0),e,{length:-e.length},r)}function F(){return G=N>0?j(U,--N):0,B--,10===G&&(B=1,H--),G}function _(){return G=N<P?j(U,N++):0,B++,10===G&&(B=1,H++),G}function Y(){return j(U,N)}function X(){return N}function Z(e,r){return R(U,e,r)}function J(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function K(e){return H=B=1,P=O(U=e),N=0,[]}function Q(e){return U="",e}function ee(e){return I(Z(N-1,oe(91===e?e+2:40===e?e+1:e)))}function re(e){for(;(G=Y())&&G<33;)_();return J(e)>2||J(G)>3?"":" "}function ie(e,r){for(;--r&&_()&&!(G<48||G>102||G>57&&G<65||G>70&&G<97););return Z(e,X()+(r<6&&32==Y()&&32==_()))}function oe(e){for(;_();)switch(G){case e:return N;case 34:case 39:34!==e&&39!==e&&oe(G);break;case 40:41===e&&oe(e);break;case 92:_()}return N}function te(e,r){for(;_()&&e+G!==57&&(e+G!==84||47!==Y()););return"/*"+Z(r,N-1)+"*"+A(47===e?e:_())}function ae(e){for(;!J(Y());)_();return Z(e,N)}function ne(e){return Q(le("",null,null,null,[""],e=K(e),0,[0],e))}function le(e,r,i,o,t,a,n,l,c){for(var s=0,u=0,d=n,p=0,m=0,b=0,x=1,g=1,h=1,f=0,v="",k=t,w=a,y=o,z=v;g;)switch(b=f,f=_()){case 40:if(108!=b&&58==j(z,d-1)){-1!=T(z+=M(ee(f),"&","&\f"),"&\f")&&(h=-1);break}case 34:case 39:case 91:z+=ee(f);break;case 9:case 10:case 13:case 32:z+=re(b);break;case 92:z+=ie(X()-1,7);continue;case 47:switch(Y()){case 42:case 47:D(se(te(_(),X()),r,i),c);break;default:z+="/"}break;case 123*x:l[s++]=O(z)*h;case 125*x:case 59:case 0:switch(f){case 0:case 125:g=0;case 59+u:-1==h&&(z=M(z,/\f/g,"")),m>0&&O(z)-d&&D(m>32?ue(z+";",o,i,d-1):ue(M(z," ","")+";",o,i,d-2),c);break;case 59:z+=";";default:if(D(y=ce(z,r,i,s,u,t,l,v,k=[],w=[],d),a),123===f)if(0===u)le(z,r,y,y,k,a,d,l,w);else switch(99===p&&110===j(z,3)?100:p){case 100:case 108:case 109:case 115:le(e,y,y,o&&D(ce(e,y,y,0,0,t,l,v,t,k=[],d),w),t,w,d,l,o?k:w);break;default:le(z,y,y,y,[""],w,0,l,w)}}s=u=m=0,x=h=1,v=z="",d=n;break;case 58:d=1+O(z),m=b;default:if(x<1)if(123==f)--x;else if(125==f&&0==x++&&125==F())continue;switch(z+=A(f),f*x){case 38:h=u>0?1:(z+="\f",-1);break;case 44:l[s++]=(O(z)-1)*h,h=1;break;case 64:45===Y()&&(z+=ee(_())),p=Y(),u=d=O(v=z+=ae(X())),f++;break;case 45:45===b&&2==O(z)&&(x=0)}}return a}function ce(e,r,i,o,t,a,n,l,c,s,u){for(var d=t-1,p=0===t?a:[""],m=W(p),b=0,x=0,g=0;b<o;++b)for(var h=0,f=R(e,d+1,d=L(x=n[b])),v=e;h<m;++h)(v=I(x>0?p[h]+" "+f:M(f,/&\f/g,p[h])))&&(c[g++]=v);return V(e,r,i,0===t?C:l,c,s,u)}function se(e,r,i){return V(e,r,i,z,A(G),R(e,2,-2),0)}function ue(e,r,i,o){return V(e,r,i,$,R(e,0,o),R(e,o+1,-1),o)}function de(e,r){for(var i="",o=W(e),t=0;t<o;t++)i+=r(e[t],t,e,r)||"";return i}function pe(e,r,i,o){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case $:return e.return=e.return||e.value;case z:return"";case S:return e.return=e.value+"{"+de(e.children,o)+"}";case C:e.value=e.props.join(",")}return O(i=de(e.children,o))?e.return=e.value+"{"+i+"}":""}function me(e){var r=W(e);return function(i,o,t,a){for(var n="",l=0;l<r;l++)n+=e[l](i,o,t,a)||"";return n}}function be(e){var r=Object.create(null);return function(i){return void 0===r[i]&&(r[i]=e(i)),r[i]}}var xe="undefined"!=typeof document,ge=function(e,r,i){for(var o=0,t=0;o=t,t=Y(),38===o&&12===t&&(r[i]=1),!J(t);)_();return Z(e,N)},he=function(e,r){return Q(function(e,r){var i=-1,o=44;do{switch(J(o)){case 0:38===o&&12===Y()&&(r[i]=1),e[i]+=ge(N-1,r,i);break;case 2:e[i]+=ee(o);break;case 4:if(44===o){e[++i]=58===Y()?"&\f":"",r[i]=e[i].length;break}default:e[i]+=A(o)}}while(o=_());return e}(K(e),r))},fe=new WeakMap,ve=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var r=e.value,i=e.parent,o=e.column===i.column&&e.line===i.line;"rule"!==i.type;)if(!(i=i.parent))return;if((1!==e.props.length||58===r.charCodeAt(0)||fe.get(i))&&!o){fe.set(e,!0);for(var t=[],a=he(r,t),n=i.props,l=0,c=0;l<a.length;l++)for(var s=0;s<n.length;s++,c++)e.props[c]=t[l]?a[l].replace(/&\f/g,n[s]):n[s]+" "+a[l]}}},ke=function(e){if("decl"===e.type){var r=e.value;108===r.charCodeAt(0)&&98===r.charCodeAt(2)&&(e.return="",e.value="")}};function we(e,r){switch(function(e,r){return 45^j(e,0)?(((r<<2^j(e,0))<<2^j(e,1))<<2^j(e,2))<<2^j(e,3):0}(e,r)){case 5103:return y+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return y+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return y+e+w+e+k+e+e;case 6828:case 4268:return y+e+k+e+e;case 6165:return y+e+k+"flex-"+e+e;case 5187:return y+e+M(e,/(\w+).+(:[^]+)/,y+"box-$1$2"+k+"flex-$1$2")+e;case 5443:return y+e+k+"flex-item-"+M(e,/flex-|-self/,"")+e;case 4675:return y+e+k+"flex-line-pack"+M(e,/align-content|flex-|-self/,"")+e;case 5548:return y+e+k+M(e,"shrink","negative")+e;case 5292:return y+e+k+M(e,"basis","preferred-size")+e;case 6060:return y+"box-"+M(e,"-grow","")+y+e+k+M(e,"grow","positive")+e;case 4554:return y+M(e,/([^-])(transform)/g,"$1"+y+"$2")+e;case 6187:return M(M(M(e,/(zoom-|grab)/,y+"$1"),/(image-set)/,y+"$1"),e,"")+e;case 5495:case 3959:return M(e,/(image-set\([^]*)/,y+"$1$`$1");case 4968:return M(M(e,/(.+:)(flex-)?(.*)/,y+"box-pack:$3"+k+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+y+e+e;case 4095:case 3583:case 4068:case 2532:return M(e,/(.+)-inline(.+)/,y+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(O(e)-1-r>6)switch(j(e,r+1)){case 109:if(45!==j(e,r+4))break;case 102:return M(e,/(.+:)(.+)-([^]+)/,"$1"+y+"$2-$3$1"+w+(108==j(e,r+3)?"$3":"$2-$3"))+e;case 115:return~T(e,"stretch")?we(M(e,"stretch","fill-available"),r)+e:e}break;case 4949:if(115!==j(e,r+1))break;case 6444:switch(j(e,O(e)-3-(~T(e,"!important")&&10))){case 107:return M(e,":",":"+y)+e;case 101:return M(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+y+(45===j(e,14)?"inline-":"")+"box$3$1"+y+"$2$3$1"+k+"$2box$3")+e}break;case 5936:switch(j(e,r+11)){case 114:return y+e+k+M(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return y+e+k+M(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return y+e+k+M(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return y+e+k+e+e}return e}var ye,ze,Ce=xe?void 0:(ye=function(){return be(function(){return{}})},ze=new WeakMap,function(e){if(ze.has(e))return ze.get(e);var r=ye(e);return ze.set(e,r),r}),$e=[function(e,r,i,o){if(e.length>-1&&!e.return)switch(e.type){case $:e.return=we(e.value,e.length);break;case S:return de([q(e,{value:M(e.value,"@","@"+y)})],o);case C:if(e.length)return function(e,r){return e.map(r).join("")}(e.props,function(r){switch(function(e,r){return(e=r.exec(e))?e[0]:e}(r,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return de([q(e,{props:[M(r,/:(read-\w+)/,":-moz-$1")]})],o);case"::placeholder":return de([q(e,{props:[M(r,/:(plac\w+)/,":"+y+"input-$1")]}),q(e,{props:[M(r,/:(plac\w+)/,":-moz-$1")]}),q(e,{props:[M(r,/:(plac\w+)/,k+"input-$1")]})],o)}return""})}}],Se=function(e){var r=e.key;if(xe&&"css"===r){var i=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(i,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var o,t,a=e.stylisPlugins||$e,n={},l=[];xe&&(o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+r+' "]'),function(e){for(var r=e.getAttribute("data-emotion").split(" "),i=1;i<r.length;i++)n[r[i]]=!0;l.push(e)}));var c,s=[ve,ke];if(Ce){var u=[pe],d=me(s.concat(a,u)),p=Ce(a)(r),m=function(e,r){var i=r.name;return void 0===p[i]&&(p[i]=de(ne(e?e+"{"+r.styles+"}":r.styles),d)),p[i]};t=function(e,r,i,o){var t=r.name,a=m(e,r);return void 0===h.compat?(o&&(h.inserted[t]=!0),a):o?void(h.inserted[t]=a):a}}else{var b,x=[pe,(c=function(e){b.insert(e)},function(e){e.root||(e=e.return)&&c(e)})],g=me(s.concat(a,x));t=function(e,r,i,o){b=i,de(ne(e?e+"{"+r.styles+"}":r.styles),g),o&&(h.inserted[r.name]=!0)}}var h={key:r,sheet:new v({key:r,container:o,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:n,registered:{},insert:t};return h.sheet.hydrate(l),h};var Le={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},Ae=/[A-Z]|^ms/g,Ee=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Ie=function(e){return 45===e.charCodeAt(1)},Me=function(e){return null!=e&&"boolean"!=typeof e},Te=be(function(e){return Ie(e)?e:e.replace(Ae,"-$&").toLowerCase()}),je=function(e,r){switch(e){case"animation":case"animationName":if("string"==typeof r)return r.replace(Ee,function(e,r,i){return Oe={name:r,styles:i,next:Oe},r})}return 1===Le[e]||Ie(e)||"number"!=typeof r||0===r?r:r+"px"};function Re(e,r,i){if(null==i)return"";var o=i;if(void 0!==o.__emotion_styles)return o;switch(typeof i){case"boolean":return"";case"object":var t=i;if(1===t.anim)return Oe={name:t.name,styles:t.styles,next:Oe},t.name;var a=i;if(void 0!==a.styles){var n=a.next;if(void 0!==n)for(;void 0!==n;)Oe={name:n.name,styles:n.styles,next:Oe},n=n.next;return a.styles+";"}return function(e,r,i){var o="";if(Array.isArray(i))for(var t=0;t<i.length;t++)o+=Re(e,r,i[t])+";";else for(var a in i){var n=i[a];if("object"!=typeof n){var l=n;null!=r&&void 0!==r[l]?o+=a+"{"+r[l]+"}":Me(l)&&(o+=Te(a)+":"+je(a,l)+";")}else if(!Array.isArray(n)||"string"!=typeof n[0]||null!=r&&void 0!==r[n[0]]){var c=Re(e,r,n);switch(a){case"animation":case"animationName":o+=Te(a)+":"+c+";";break;default:o+=a+"{"+c+"}"}}else for(var s=0;s<n.length;s++)Me(n[s])&&(o+=Te(a)+":"+je(a,n[s])+";")}return o}(e,r,i)}var l=i;if(null==r)return l;var c=r[l];return void 0!==c?c:l}var Oe,We=/label:\s*([^\s;{]+)\s*(;|$)/g;function De(e,r,i){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var o=!0,t="";Oe=void 0;var a=e[0];null==a||void 0===a.raw?(o=!1,t+=Re(i,r,a)):t+=a[0];for(var n=1;n<e.length;n++){if(t+=Re(i,r,e[n]),o)t+=a[n]}We.lastIndex=0;for(var l,c="";null!==(l=We.exec(t));)c+="-"+l[1];var s=function(e){for(var r,i=0,o=0,t=e.length;t>=4;++o,t-=4)r=1540483477*(65535&(r=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+(59797*(r>>>16)<<16),i=1540483477*(65535&(r^=r>>>24))+(59797*(r>>>16)<<16)^1540483477*(65535&i)+(59797*(i>>>16)<<16);switch(t){case 3:i^=(255&e.charCodeAt(o+2))<<16;case 2:i^=(255&e.charCodeAt(o+1))<<8;case 1:i=1540483477*(65535&(i^=255&e.charCodeAt(o)))+(59797*(i>>>16)<<16)}return(((i=1540483477*(65535&(i^=i>>>13))+(59797*(i>>>16)<<16))^i>>>15)>>>0).toString(36)}(t)+c;return{name:s,styles:t,next:Oe}}var He="undefined"!=typeof document;function Be(e,r,i){var o="";return i.split(" ").forEach(function(i){void 0!==e[i]?r.push(e[i]+";"):i&&(o+=i+" ")}),o}function Pe(e,r){if(void 0===e.inserted[r.name])return e.insert("",r,e.sheet,!0)}function Ne(e,r,i){var o=[],t=Be(e,o,i);return o.length<2?i:t+r(o)}var Ge=function e(r){for(var i="",o=0;o<r.length;o++){var t=r[o];if(null!=t){var a=void 0;switch(typeof t){case"boolean":break;case"object":if(Array.isArray(t))a=e(t);else for(var n in a="",t)t[n]&&n&&(a&&(a+=" "),a+=n);break;default:a=t}a&&(i&&(i+=" "),i+=a)}}return i},Ue=function(e){var r=Se(e);r.sheet.speedy=function(e){this.isSpeedy=e},r.compat=!0;var i=function(){for(var e=arguments.length,i=new Array(e),o=0;o<e;o++)i[o]=arguments[o];var t=De(i,r.registered,void 0);return function(e,r){!function(e,r){var i=e.key+"-"+r.name;void 0===e.registered[i]&&(e.registered[i]=r.styles)}(e,r);var i=e.key+"-"+r.name;if(void 0===e.inserted[r.name]){var o="",t=r;do{var a=e.insert(r===t?"."+i:"",t,e.sheet,!0);He||void 0===a||(o+=a),t=t.next}while(void 0!==t);if(!He&&0!==o.length);}}(r,t),r.key+"-"+t.name};return{css:i,cx:function(){for(var e=arguments.length,o=new Array(e),t=0;t<e;t++)o[t]=arguments[t];return Ne(r.registered,i,Ge(o))},injectGlobal:function(){for(var e=arguments.length,i=new Array(e),o=0;o<e;o++)i[o]=arguments[o];var t=De(i,r.registered);Pe(r,t)},keyframes:function(){for(var e=arguments.length,i=new Array(e),o=0;o<e;o++)i[o]=arguments[o];var t=De(i,r.registered),a="animation-"+t.name;return Pe(r,{name:t.name,styles:"@keyframes "+a+"{"+t.styles+"}"}),a},hydrate:function(e){e.forEach(function(e){r.inserted[e]=!0})},flush:function(){r.registered={},r.inserted={},r.sheet.flush()},sheet:r.sheet,cache:r,getRegisteredStyles:Be.bind(null,r.registered),merge:Ne.bind(null,r.registered,i)}}({key:"css"}),Ve=Ue.injectGlobal;Ve`
2
+ /* Global UI Color Variables - MUI-like color palette */
3
+
4
+ :root {
5
+ /* Primary colors */
6
+ --kt-color-primary: rgb(25, 118, 210);
7
+ --kt-color-primary-light: rgb(66, 165, 245);
8
+ --kt-color-primary-dark: rgb(21, 101, 192);
9
+
10
+ /* Secondary colors */
11
+ --kt-color-secondary: rgb(156, 39, 176);
12
+ --kt-color-secondary-light: rgb(186, 104, 200);
13
+ --kt-color-secondary-dark: rgb(123, 31, 162);
14
+
15
+ /* Error colors */
16
+ --kt-color-error: rgb(211, 47, 47);
17
+ --kt-color-error-light: rgb(239, 83, 80);
18
+ --kt-color-error-dark: rgb(198, 40, 40);
19
+
20
+ /* Warning colors */
21
+ --kt-color-warning: rgb(237, 108, 2);
22
+ --kt-color-warning-light: rgb(255, 152, 0);
23
+ --kt-color-warning-dark: rgb(230, 81, 0);
24
+
25
+ /* Info colors */
26
+ --kt-color-info: rgb(2, 136, 209);
27
+ --kt-color-info-light: rgb(41, 182, 246);
28
+ --kt-color-info-dark: rgb(1, 87, 155);
29
+
30
+ /* Success colors */
31
+ --kt-color-success: rgb(46, 125, 50);
32
+ --kt-color-success-light: rgb(102, 187, 106);
33
+ --kt-color-success-dark: rgb(27, 94, 32);
34
+
35
+ /* Text colors */
36
+ --kt-color-text-primary: rgba(0, 0, 0, 0.87);
37
+ --kt-color-text-secondary: rgba(0, 0, 0, 0.6);
38
+ --kt-color-text-disabled: rgba(0, 0, 0, 0.38);
39
+
40
+ /* Background colors */
41
+ --kt-color-background-paper: rgb(255, 255, 255);
42
+ --kt-color-background-default: rgb(250, 250, 250);
43
+
44
+ /* Divider */
45
+ --kt-color-divider: rgba(0, 0, 0, 0.12);
46
+ }
47
+
48
+ /* Dark mode support */
49
+ @media (prefers-color-scheme: dark) {
50
+ :root {
51
+ /* Primary colors */
52
+ --kt-color-primary: rgb(144, 202, 249);
53
+ --kt-color-primary-light: rgb(179, 229, 252);
54
+ --kt-color-primary-dark: rgb(66, 165, 245);
55
+
56
+ /* Secondary colors */
57
+ --kt-color-secondary: rgb(206, 147, 216);
58
+ --kt-color-secondary-light: rgb(225, 190, 231);
59
+ --kt-color-secondary-dark: rgb(186, 104, 200);
60
+
61
+ /* Error colors */
62
+ --kt-color-error: rgb(244, 67, 54);
63
+ --kt-color-error-light: rgb(229, 115, 115);
64
+ --kt-color-error-dark: rgb(211, 47, 47);
65
+
66
+ /* Warning colors */
67
+ --kt-color-warning: rgb(255, 152, 0);
68
+ --kt-color-warning-light: rgb(255, 183, 77);
69
+ --kt-color-warning-dark: rgb(245, 124, 0);
70
+
71
+ /* Info colors */
72
+ --kt-color-info: rgb(41, 182, 246);
73
+ --kt-color-info-light: rgb(79, 195, 247);
74
+ --kt-color-info-dark: rgb(2, 136, 209);
75
+
76
+ /* Success colors */
77
+ --kt-color-success: rgb(102, 187, 106);
78
+ --kt-color-success-light: rgb(129, 199, 132);
79
+ --kt-color-success-dark: rgb(76, 175, 80);
80
+
81
+ /* Text colors */
82
+ --kt-color-text-primary: rgba(255, 255, 255, 0.87);
83
+ --kt-color-text-secondary: rgba(255, 255, 255, 0.6);
84
+ --kt-color-text-disabled: rgba(255, 255, 255, 0.38);
85
+
86
+ /* Background colors */
87
+ --kt-color-background-paper: rgb(18, 18, 18);
88
+ --kt-color-background-default: rgb(12, 12, 12);
89
+
90
+ /* Divider */
91
+ --kt-color-divider: rgba(255, 255, 255, 0.12);
92
+ }
93
+ }
94
+
95
+ `,Ve`
96
+ /* Alert Component Styles - Mimics MUI Alert */
97
+
98
+ .mui-alert {
99
+ display: flex;
100
+ padding: 6px 16px;
101
+ font-size: 0.875rem;
102
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
103
+ font-weight: 400;
104
+ line-height: 1.43;
105
+ border-radius: 4px;
106
+ letter-spacing: 0.01071em;
107
+ align-items: center;
108
+ gap: 12px;
109
+ position: relative;
110
+ }
111
+
112
+ .mui-alert-icon-wrapper {
113
+ display: flex;
114
+ opacity: 0.9;
115
+ padding: 7px 0;
116
+ font-size: 22px;
117
+ margin-right: -4px;
118
+ }
119
+
120
+ .mui-alert-icon {
121
+ flex-shrink: 0;
122
+ }
123
+
124
+ .mui-alert-message {
125
+ padding: 8px 0;
126
+ min-width: 0;
127
+ overflow: auto;
128
+ flex: 1;
129
+ }
130
+
131
+ .mui-alert-close {
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ background: none;
136
+ border: none;
137
+ cursor: pointer;
138
+ padding: 4px;
139
+ margin-left: auto;
140
+ margin-right: -8px;
141
+ border-radius: 4px;
142
+ opacity: 0.6;
143
+ transition:
144
+ opacity 0.3s,
145
+ background-color 0.3s;
146
+ }
147
+
148
+ .mui-alert-close:hover {
149
+ opacity: 1;
150
+ background-color: rgba(0, 0, 0, 0.04);
151
+ }
152
+
153
+ /* Standard Variant */
154
+ .mui-alert-standard.mui-alert-success {
155
+ color: rgb(30, 70, 32);
156
+ background-color: rgb(237, 247, 237);
157
+ }
158
+
159
+ .mui-alert-standard.mui-alert-info {
160
+ color: rgb(1, 67, 97);
161
+ background-color: rgb(229, 246, 253);
162
+ }
163
+
164
+ .mui-alert-standard.mui-alert-warning {
165
+ color: rgb(102, 60, 0);
166
+ background-color: rgb(255, 244, 229);
167
+ }
168
+
169
+ .mui-alert-standard.mui-alert-error {
170
+ color: rgb(95, 33, 32);
171
+ background-color: rgb(253, 237, 237);
172
+ }
173
+
174
+ /* Filled Variant */
175
+ .mui-alert-filled.mui-alert-success {
176
+ color: rgb(255, 255, 255);
177
+ background-color: rgb(46, 125, 50);
178
+ }
179
+
180
+ .mui-alert-filled.mui-alert-info {
181
+ color: rgb(255, 255, 255);
182
+ background-color: rgb(2, 136, 209);
183
+ }
184
+
185
+ .mui-alert-filled.mui-alert-warning {
186
+ color: rgb(255, 255, 255);
187
+ background-color: rgb(237, 108, 2);
188
+ }
189
+
190
+ .mui-alert-filled.mui-alert-error {
191
+ color: rgb(255, 255, 255);
192
+ background-color: rgb(211, 47, 47);
193
+ }
194
+
195
+ /* Outlined Variant */
196
+ .mui-alert-outlined.mui-alert-success {
197
+ color: rgb(30, 70, 32);
198
+ border: 1px solid rgb(46, 125, 50);
199
+ background-color: transparent;
200
+ }
201
+
202
+ .mui-alert-outlined.mui-alert-info {
203
+ color: rgb(1, 67, 97);
204
+ border: 1px solid rgb(2, 136, 209);
205
+ background-color: transparent;
206
+ }
207
+
208
+ .mui-alert-outlined.mui-alert-warning {
209
+ color: rgb(102, 60, 0);
210
+ border: 1px solid rgb(237, 108, 2);
211
+ background-color: transparent;
212
+ }
213
+
214
+ .mui-alert-outlined.mui-alert-error {
215
+ color: rgb(95, 33, 32);
216
+ border: 1px solid rgb(211, 47, 47);
217
+ background-color: transparent;
218
+ }
219
+
220
+ /* Dark mode support */
221
+ @media (prefers-color-scheme: dark) {
222
+ .mui-alert-standard.mui-alert-success {
223
+ color: rgb(183, 223, 185);
224
+ background-color: rgb(12, 19, 13);
225
+ }
226
+
227
+ .mui-alert-standard.mui-alert-info {
228
+ color: rgb(166, 213, 250);
229
+ background-color: rgb(7, 19, 24);
230
+ }
231
+
232
+ .mui-alert-standard.mui-alert-warning {
233
+ color: rgb(255, 213, 153);
234
+ background-color: rgb(25, 18, 7);
235
+ }
236
+
237
+ .mui-alert-standard.mui-alert-error {
238
+ color: rgb(244, 199, 199);
239
+ background-color: rgb(22, 11, 11);
240
+ }
241
+
242
+ .mui-alert-close:hover {
243
+ background-color: rgba(255, 255, 255, 0.08);
244
+ }
245
+ }
246
+
247
+ `;const qe=(e,r,i)=>{if(i)for(const o in r)o.startsWith("on:")&&!i.includes(o)&&e.addEventListener(o.slice(3),r[o]);else for(const i in r)i.startsWith("on:")&&e.addEventListener(i.slice(3),r[i])},Fe={success:(e,r)=>u("svg",{class:e,viewBox:"0 0 24 24",width:r,height:r,children:u("path",{fill:"currentColor",d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})}),error:(e,r)=>u("svg",{class:e,viewBox:"0 0 24 24",width:r,height:r,children:u("path",{fill:"currentColor",d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})}),warning:(e,r)=>u("svg",{class:e,viewBox:"0 0 24 24",width:r,height:r,children:u("path",{fill:"currentColor",d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})}),info:(e,r)=>u("svg",{class:e,viewBox:"0 0 24 24",width:r,height:r,children:u("path",{fill:"currentColor",d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"})})};function _e(r){const i=d(r.class??""),o=d(e(r.style)),t=d(r.children),a=d(r.severity??"info"),n=d(r.variant??"standard"),l=d(r.icon??!0),c=d(r.iconSize??"22px"),m=r["on:close"],b=p(()=>`mui-alert mui-alert-${a.value} mui-alert-${n.value} ${i.value?i.value:""}`,[a,n,i]),x=p(()=>{if(!1===l.value)return null;if(!0===l.value){return(Fe[a.value]||Fe.info)(c.value,"mui-alert-icon")}return l},[l,c,a]),g=s("div",{class:b,style:o,role:"alert",children:[x&&u("div",{class:"mui-alert-icon-wrapper",children:x}),u("div",{class:"mui-alert-message",children:t}),u("button",{"k-if":m,class:"mui-alert-close","on:click":m,"aria-label":"Close",children:u("svg",{viewBox:"0 0 24 24",width:"18px",height:"18px",children:u("path",{fill:"currentColor",d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})})})]});return qe(g,r),g}function Ye(i){const o=i["on:click"]??r,t=m(),a=m(),n=d(i.class??""),l=d(e(i.style)),c=d(i.variant??"text"),b=d(i.color??"primary"),x=d(i.size??"medium"),g=d(i.fullWidth??!1),h=d(i.iconOnly??!1),f=d(i.disabled??!1),v=p(()=>["mui-button",`mui-button-${c.value}`,`mui-button-${c.value}-${b.value}`,`mui-button-size-${x.value}`,g.value?"mui-button-fullwidth":"",h.value?"mui-button-icon-only":"",f.value?"mui-button-disabled":"",n.value].join(" "),[c,b,x,g,h,f,n]),k=(e,r)=>{const i=t.value,o=a.value;if(!i||!o)return;const n=i.getBoundingClientRect(),l=Math.max(n.width,n.height),c=e-n.left-l/2,s=r-n.top-l/2,d=u("span",{class:"mui-button-ripple-effect",style:`width:${l}px; height:${l}px; left:${c}px; top:${s}px;`});o.appendChild(d),setTimeout(()=>d.remove(),600)},w=s("button",{ref:t,class:v,style:l,type:d(i.type??"button"),disabled:f,"on:click":e=>{f.value?e.preventDefault():(k(e.clientX,e.clientY),o(e))},children:[u("span",{"k-if":i.startIcon,class:"mui-button-start-icon",children:i.startIcon}),u("span",{class:"mui-button-label",children:i.children}),u("span",{"k-if":i.endIcon,class:"mui-button-end-icon",children:i.endIcon}),u("span",{ref:a,class:"mui-button-ripple"})]}),y=i["on:dblclick"];return y&&w.addEventListener("dblclick",e=>{f.value?e.preventDefault():(k(e.clientX,e.clientY),y(e))}),qe(w,i,["on:dblclick","on:click"]),w}function Xe(i){const o=i["on:select"]??r,t=i["on:click"]??r,a=d(i.class??""),n=d(e(i.style)),l=m(!1),c=d(i.label??""),x=d(i.options),g=d(i.variant??"contained"),h=d(i.color??"primary"),v=d(i.size??"medium"),k=d(i.disabled??!1,e=>{e&&(l.value=!1)}),w=d(i.fullWidth??!1),y=p(()=>["mui-dropdown-button-wrapper",w.value?"mui-dropdown-button-fullwidth":"",k.value?"mui-dropdown-button-disabled":"",l.value?"mui-dropdown-button-open":"",a.value].join(" "),[w,k,l,a]),z=p(()=>["mui-button",`mui-button-${g.value}`,`mui-button-${g.value}-${h.value}`,`mui-button-size-${v.value}`,w.value?"mui-button-fullwidth":"","mui-dropdown-button-trigger"].join(" "),[g,h,v,w]),C=p(()=>"mui-dropdown-button-menu "+(l.value?"mui-dropdown-button-menu-open":""),[l]),$=()=>{l.value=!1},S=e=>{const r=e.currentTarget;if(!r)return;const i=r.dataset.value;if(!i)return;const t=x.value.find(e=>e.value===i);t&&!t.disabled&&(o(i,t),$())},L=x.toComputed(e=>e.map(e=>e.label instanceof Node?(e.label.removeEventListener("click",S),e.label.addEventListener("click",S),e):u("button",{type:"button",class:"mui-dropdown-button-option "+(e.disabled?"mui-dropdown-button-option-disabled":""),"data-value":e.value,disabled:e.disabled??!1,"on:click":S,role:"menuitem",children:e.label}))),A=s("div",{class:y,style:n,children:[s("button",{type:"button",class:z,disabled:k,"on:click":e=>{k.value?e.preventDefault():(l.value=!l.value,t(e))},"aria-haspopup":"menu","aria-expanded":l,children:[u("span",{class:"mui-button-label",children:c}),u("span",{class:"mui-dropdown-button-end-icon",children:u(f,{})})]}),u("div",{class:C,role:"menu",children:u(b,{list:L})})]}),E=e=>{const r=e.target;r&&(A.contains(r)||$())},I=e=>{"Escape"===e.key&&$()};document.addEventListener("click",E),document.addEventListener("keydown",I);const M=A.remove;return A.remove=()=>(document.removeEventListener("click",E),document.removeEventListener("keydown",I),M.call(A)),qe(A,i,["on:click","on:select"]),A}Ve`
248
+ /* Button Component Styles - MUI-like */
249
+
250
+ .mui-button {
251
+ display: inline-flex;
252
+ align-items: center;
253
+ justify-content: center;
254
+ position: relative;
255
+ box-sizing: border-box;
256
+ outline: 0;
257
+ border: 0;
258
+ margin: 0;
259
+ cursor: pointer;
260
+ user-select: none;
261
+ vertical-align: middle;
262
+ text-decoration: none;
263
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
264
+ font-weight: 500;
265
+ line-height: 1.75;
266
+ letter-spacing: 0.02857em;
267
+ min-width: 64px;
268
+ transition:
269
+ background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
270
+ box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
271
+ border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
272
+ color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
273
+ border-radius: 4px;
274
+ }
275
+
276
+ .mui-button:hover {
277
+ text-decoration: none;
278
+ }
279
+
280
+ .mui-button-fullwidth {
281
+ width: 100%;
282
+ }
283
+
284
+ .mui-button-disabled {
285
+ pointer-events: none;
286
+ cursor: default;
287
+ }
288
+
289
+ /* Button label */
290
+ .mui-button-label {
291
+ width: 100%;
292
+ display: inherit;
293
+ align-items: inherit;
294
+ justify-content: inherit;
295
+ }
296
+
297
+ /* Icons */
298
+ .mui-button-start-icon {
299
+ display: inherit;
300
+ margin-right: 8px;
301
+ margin-left: -4px;
302
+ }
303
+
304
+ .mui-button-end-icon {
305
+ display: inherit;
306
+ margin-left: 8px;
307
+ margin-right: -4px;
308
+ }
309
+
310
+ .mui-button-size-small .mui-button-start-icon {
311
+ margin-left: -2px;
312
+ }
313
+
314
+ .mui-button-size-small .mui-button-end-icon {
315
+ margin-right: -2px;
316
+ }
317
+
318
+ /* Size variants */
319
+ .mui-button-size-small {
320
+ padding: 4px 10px;
321
+ font-size: 0.8125rem;
322
+ }
323
+
324
+ .mui-button-size-medium {
325
+ padding: 6px 16px;
326
+ font-size: 0.875rem;
327
+ }
328
+
329
+ .mui-button-size-large {
330
+ padding: 8px 22px;
331
+ font-size: 0.9375rem;
332
+ }
333
+
334
+ /* Icon-only variant */
335
+ .mui-button-icon-only {
336
+ min-width: auto;
337
+ padding: 8px;
338
+ }
339
+
340
+ .mui-button-icon-only.mui-button-size-small {
341
+ padding: 5px;
342
+ }
343
+
344
+ .mui-button-icon-only.mui-button-size-medium {
345
+ padding: 8px;
346
+ }
347
+
348
+ .mui-button-icon-only.mui-button-size-large {
349
+ padding: 12px;
350
+ }
351
+
352
+ .mui-button-icon-only .mui-button-start-icon,
353
+ .mui-button-icon-only .mui-button-end-icon {
354
+ margin: 0;
355
+ }
356
+
357
+ /* Text variant */
358
+ .mui-button-text {
359
+ padding: 6px 8px;
360
+ }
361
+
362
+ .mui-button-text.mui-button-size-small {
363
+ padding: 4px 5px;
364
+ }
365
+
366
+ .mui-button-text.mui-button-size-large {
367
+ padding: 8px 11px;
368
+ }
369
+
370
+ /* Text variant - Primary */
371
+ .mui-button-text-primary {
372
+ color: #1976d2;
373
+ }
374
+
375
+ .mui-button-text-primary:hover {
376
+ background-color: rgba(25, 118, 210, 0.04);
377
+ }
378
+
379
+ /* Text variant - Secondary */
380
+ .mui-button-text-secondary {
381
+ color: #9c27b0;
382
+ }
383
+
384
+ .mui-button-text-secondary:hover {
385
+ background-color: rgba(156, 39, 176, 0.04);
386
+ }
387
+
388
+ /* Text variant - Error */
389
+ .mui-button-text-error {
390
+ color: #d32f2f;
391
+ }
392
+
393
+ .mui-button-text-error:hover {
394
+ background-color: rgba(211, 47, 47, 0.04);
395
+ }
396
+
397
+ /* Text variant - Warning */
398
+ .mui-button-text-warning {
399
+ color: #ed6c02;
400
+ }
401
+
402
+ .mui-button-text-warning:hover {
403
+ background-color: rgba(237, 108, 2, 0.04);
404
+ }
405
+
406
+ /* Text variant - Info */
407
+ .mui-button-text-info {
408
+ color: #0288d1;
409
+ }
410
+
411
+ .mui-button-text-info:hover {
412
+ background-color: rgba(2, 136, 209, 0.04);
413
+ }
414
+
415
+ /* Text variant - Success */
416
+ .mui-button-text-success {
417
+ color: #2e7d32;
418
+ }
419
+
420
+ .mui-button-text-success:hover {
421
+ background-color: rgba(46, 125, 50, 0.04);
422
+ }
423
+
424
+ /* Outlined variant */
425
+ .mui-button-outlined {
426
+ border: 1px solid rgba(25, 118, 210, 0.5);
427
+ padding: 5px 15px;
428
+ }
429
+
430
+ .mui-button-outlined.mui-button-size-small {
431
+ padding: 3px 9px;
432
+ }
433
+
434
+ .mui-button-outlined.mui-button-size-large {
435
+ padding: 7px 21px;
436
+ }
437
+
438
+ /* Outlined variant - Primary */
439
+ .mui-button-outlined-primary {
440
+ color: #1976d2;
441
+ border-color: rgba(25, 118, 210, 0.5);
442
+ }
443
+
444
+ .mui-button-outlined-primary:hover {
445
+ border-color: #1976d2;
446
+ background-color: rgba(25, 118, 210, 0.04);
447
+ }
448
+
449
+ /* Outlined variant - Secondary */
450
+ .mui-button-outlined-secondary {
451
+ color: #9c27b0;
452
+ border-color: rgba(156, 39, 176, 0.5);
453
+ }
454
+
455
+ .mui-button-outlined-secondary:hover {
456
+ border-color: #9c27b0;
457
+ background-color: rgba(156, 39, 176, 0.04);
458
+ }
459
+
460
+ /* Outlined variant - Error */
461
+ .mui-button-outlined-error {
462
+ color: #d32f2f;
463
+ border-color: rgba(211, 47, 47, 0.5);
464
+ }
465
+
466
+ .mui-button-outlined-error:hover {
467
+ border-color: #d32f2f;
468
+ background-color: rgba(211, 47, 47, 0.04);
469
+ }
470
+
471
+ /* Outlined variant - Warning */
472
+ .mui-button-outlined-warning {
473
+ color: #ed6c02;
474
+ border-color: rgba(237, 108, 2, 0.5);
475
+ }
476
+
477
+ .mui-button-outlined-warning:hover {
478
+ border-color: #ed6c02;
479
+ background-color: rgba(237, 108, 2, 0.04);
480
+ }
481
+
482
+ /* Outlined variant - Info */
483
+ .mui-button-outlined-info {
484
+ color: #0288d1;
485
+ border-color: rgba(2, 136, 209, 0.5);
486
+ }
487
+
488
+ .mui-button-outlined-info:hover {
489
+ border-color: #0288d1;
490
+ background-color: rgba(2, 136, 209, 0.04);
491
+ }
492
+
493
+ /* Outlined variant - Success */
494
+ .mui-button-outlined-success {
495
+ color: #2e7d32;
496
+ border-color: rgba(46, 125, 50, 0.5);
497
+ }
498
+
499
+ .mui-button-outlined-success:hover {
500
+ border-color: #2e7d32;
501
+ background-color: rgba(46, 125, 50, 0.04);
502
+ }
503
+
504
+ /* Contained variant - Primary */
505
+ .mui-button-contained-primary {
506
+ color: #fff;
507
+ background-color: #1976d2;
508
+ box-shadow:
509
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
510
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
511
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
512
+ }
513
+
514
+ .mui-button-contained-primary:hover {
515
+ background-color: #1565c0;
516
+ box-shadow:
517
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
518
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
519
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
520
+ }
521
+
522
+ .mui-button-contained-primary:active {
523
+ box-shadow:
524
+ 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
525
+ 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
526
+ 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
527
+ }
528
+
529
+ /* Contained variant - Secondary */
530
+ .mui-button-contained-secondary {
531
+ color: #fff;
532
+ background-color: #9c27b0;
533
+ box-shadow:
534
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
535
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
536
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
537
+ }
538
+
539
+ .mui-button-contained-secondary:hover {
540
+ background-color: #7b1fa2;
541
+ box-shadow:
542
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
543
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
544
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
545
+ }
546
+
547
+ /* Contained variant - Error */
548
+ .mui-button-contained-error {
549
+ color: #fff;
550
+ background-color: #d32f2f;
551
+ box-shadow:
552
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
553
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
554
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
555
+ }
556
+
557
+ .mui-button-contained-error:hover {
558
+ background-color: #c62828;
559
+ box-shadow:
560
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
561
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
562
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
563
+ }
564
+
565
+ /* Contained variant - Warning */
566
+ .mui-button-contained-warning {
567
+ color: #fff;
568
+ background-color: #ed6c02;
569
+ box-shadow:
570
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
571
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
572
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
573
+ }
574
+
575
+ .mui-button-contained-warning:hover {
576
+ background-color: #e65100;
577
+ box-shadow:
578
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
579
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
580
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
581
+ }
582
+
583
+ /* Contained variant - Info */
584
+ .mui-button-contained-info {
585
+ color: #fff;
586
+ background-color: #0288d1;
587
+ box-shadow:
588
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
589
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
590
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
591
+ }
592
+
593
+ .mui-button-contained-info:hover {
594
+ background-color: #01579b;
595
+ box-shadow:
596
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
597
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
598
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
599
+ }
600
+
601
+ /* Contained variant - Success */
602
+ .mui-button-contained-success {
603
+ color: #fff;
604
+ background-color: #2e7d32;
605
+ box-shadow:
606
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
607
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
608
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
609
+ }
610
+
611
+ .mui-button-contained-success:hover {
612
+ background-color: #1b5e20;
613
+ box-shadow:
614
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
615
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
616
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
617
+ }
618
+
619
+ /* Disabled states */
620
+ .mui-button-text.mui-button-disabled {
621
+ color: rgba(0, 0, 0, 0.26);
622
+ }
623
+
624
+ .mui-button-outlined.mui-button-disabled {
625
+ color: rgba(0, 0, 0, 0.26);
626
+ border-color: rgba(0, 0, 0, 0.12);
627
+ }
628
+
629
+ .mui-button-contained.mui-button-disabled {
630
+ color: rgba(0, 0, 0, 0.26);
631
+ background-color: rgba(0, 0, 0, 0.12);
632
+ box-shadow: none;
633
+ }
634
+
635
+ /* Ripple effect */
636
+ .mui-button-ripple {
637
+ position: absolute;
638
+ top: 0;
639
+ left: 0;
640
+ width: 100%;
641
+ height: 100%;
642
+ border-radius: inherit;
643
+ pointer-events: none;
644
+ overflow: hidden;
645
+ }
646
+
647
+ .mui-button-ripple-effect {
648
+ position: absolute;
649
+ background-color: currentColor;
650
+ opacity: 0.3;
651
+ border-radius: 50%;
652
+ transform: scale(0);
653
+ animation: mui-ripple-animation 600ms ease-out;
654
+ pointer-events: none;
655
+ }
656
+
657
+ @keyframes mui-ripple-animation {
658
+ to {
659
+ transform: scale(2);
660
+ opacity: 0;
661
+ }
662
+ }
663
+
664
+ /* Dark mode support */
665
+ @media (prefers-color-scheme: dark) {
666
+ .mui-button-text-primary {
667
+ color: #90caf9;
668
+ }
669
+
670
+ .mui-button-text-primary:hover {
671
+ background-color: rgba(144, 202, 249, 0.08);
672
+ }
673
+
674
+ .mui-button-text-secondary {
675
+ color: #ce93d8;
676
+ }
677
+
678
+ .mui-button-text-secondary:hover {
679
+ background-color: rgba(206, 147, 216, 0.08);
680
+ }
681
+
682
+ .mui-button-outlined-primary {
683
+ color: #90caf9;
684
+ border-color: rgba(144, 202, 249, 0.5);
685
+ }
686
+
687
+ .mui-button-outlined-primary:hover {
688
+ border-color: #90caf9;
689
+ background-color: rgba(144, 202, 249, 0.08);
690
+ }
691
+
692
+ .mui-button-outlined-secondary {
693
+ color: #ce93d8;
694
+ border-color: rgba(206, 147, 216, 0.5);
695
+ }
696
+
697
+ .mui-button-outlined-secondary:hover {
698
+ border-color: #ce93d8;
699
+ background-color: rgba(206, 147, 216, 0.08);
700
+ }
701
+
702
+ .mui-button-contained-primary {
703
+ background-color: #90caf9;
704
+ color: rgba(0, 0, 0, 0.87);
705
+ }
706
+
707
+ .mui-button-contained-primary:hover {
708
+ background-color: #42a5f5;
709
+ }
710
+
711
+ .mui-button-contained-secondary {
712
+ background-color: #ce93d8;
713
+ color: rgba(0, 0, 0, 0.87);
714
+ }
715
+
716
+ .mui-button-contained-secondary:hover {
717
+ background-color: #ab47bc;
718
+ }
719
+
720
+ .mui-button-text.mui-button-disabled {
721
+ color: rgba(255, 255, 255, 0.3);
722
+ }
723
+
724
+ .mui-button-outlined.mui-button-disabled {
725
+ color: rgba(255, 255, 255, 0.3);
726
+ border-color: rgba(255, 255, 255, 0.12);
727
+ }
728
+
729
+ .mui-button-contained.mui-button-disabled {
730
+ color: rgba(255, 255, 255, 0.3);
731
+ background-color: rgba(255, 255, 255, 0.12);
732
+ }
733
+ }
734
+
735
+ `,Ve`
736
+ .mui-dropdown-button-wrapper {
737
+ position: relative;
738
+ display: inline-flex;
739
+ flex-direction: column;
740
+ min-width: 120px;
741
+ }
742
+
743
+ .mui-dropdown-button-fullwidth {
744
+ width: 100%;
745
+ }
746
+
747
+ .mui-dropdown-button-fullwidth .mui-dropdown-button-trigger {
748
+ width: 100%;
749
+ }
750
+
751
+ .mui-dropdown-button-disabled {
752
+ pointer-events: none;
753
+ }
754
+
755
+ .mui-dropdown-button-trigger {
756
+ gap: 8px;
757
+ }
758
+
759
+ .mui-dropdown-button-end-icon {
760
+ display: inline-flex;
761
+ align-items: center;
762
+ justify-content: center;
763
+ font-size: 1.15em;
764
+ line-height: 1;
765
+ margin-right: -4px;
766
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
767
+ }
768
+
769
+ .mui-dropdown-button-open .mui-dropdown-button-end-icon {
770
+ transform: rotate(180deg);
771
+ }
772
+
773
+ .mui-dropdown-button-menu {
774
+ position: absolute;
775
+ top: calc(100% + 4px);
776
+ left: 0;
777
+ min-width: 100%;
778
+ z-index: 1300;
779
+ background-color: #fff;
780
+ border-radius: 4px;
781
+ box-shadow:
782
+ 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
783
+ 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
784
+ 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
785
+ padding: 6px 0;
786
+ display: none;
787
+ opacity: 0;
788
+ transform: scale(0.9) translateY(-4px);
789
+ transform-origin: top center;
790
+ transition:
791
+ opacity 150ms cubic-bezier(0.4, 0, 0.2, 1),
792
+ transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
793
+ }
794
+
795
+ .mui-dropdown-button-menu-open {
796
+ display: block;
797
+ opacity: 1;
798
+ transform: scale(1) translateY(0);
799
+ }
800
+
801
+ .mui-dropdown-button-option {
802
+ width: 100%;
803
+ border: 0;
804
+ background: transparent;
805
+ text-align: left;
806
+ padding: 8px 16px;
807
+ min-height: 36px;
808
+ font: inherit;
809
+ color: rgba(0, 0, 0, 0.87);
810
+ cursor: pointer;
811
+ transition: background-color 120ms cubic-bezier(0.4, 0, 0.2, 1);
812
+ }
813
+
814
+ .mui-dropdown-button-option:hover {
815
+ background-color: rgba(0, 0, 0, 0.04);
816
+ }
817
+
818
+ .mui-dropdown-button-option-disabled,
819
+ .mui-dropdown-button-option:disabled {
820
+ color: rgba(0, 0, 0, 0.38);
821
+ cursor: default;
822
+ }
823
+
824
+ .mui-dropdown-button-option-disabled:hover,
825
+ .mui-dropdown-button-option:disabled:hover {
826
+ background-color: transparent;
827
+ }
828
+
829
+ @media (prefers-color-scheme: dark) {
830
+ .mui-dropdown-button-menu {
831
+ background-color: #1f1f1f;
832
+ }
833
+
834
+ .mui-dropdown-button-option {
835
+ color: rgba(255, 255, 255, 0.9);
836
+ }
837
+
838
+ .mui-dropdown-button-option:hover {
839
+ background-color: rgba(255, 255, 255, 0.08);
840
+ }
841
+
842
+ .mui-dropdown-button-option-disabled,
843
+ .mui-dropdown-button-option:disabled {
844
+ color: rgba(255, 255, 255, 0.38);
845
+ }
846
+ }
847
+
848
+ `,Ve`
849
+ /* Checkbox Component Styles - MUI-like */
850
+
851
+ .mui-checkbox-wrapper {
852
+ display: inline-flex;
853
+ align-items: center;
854
+ cursor: pointer;
855
+ vertical-align: middle;
856
+ position: relative;
857
+ margin: -9px;
858
+ padding: 9px;
859
+ border-radius: 4px;
860
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
861
+ -webkit-tap-highlight-color: transparent;
862
+ }
863
+
864
+ .mui-checkbox-disabled {
865
+ cursor: default;
866
+ pointer-events: none;
867
+ opacity: 0.38;
868
+ }
869
+
870
+ /* Checkbox Input (hidden) */
871
+ .mui-checkbox-input {
872
+ position: absolute;
873
+ opacity: 0;
874
+ width: 100%;
875
+ height: 100%;
876
+ top: 0;
877
+ left: 0;
878
+ margin: 0;
879
+ padding: 0;
880
+ z-index: 1;
881
+ cursor: inherit;
882
+ }
883
+
884
+ /* Checkbox Icon Container */
885
+ .mui-checkbox-icon {
886
+ display: inline-flex;
887
+ align-items: center;
888
+ justify-content: center;
889
+ position: relative;
890
+ box-sizing: border-box;
891
+ background-color: transparent;
892
+ outline: 0;
893
+ border: 0;
894
+ margin: 0;
895
+ cursor: pointer;
896
+ user-select: none;
897
+ vertical-align: middle;
898
+ appearance: none;
899
+ text-decoration: none;
900
+ padding: 9px;
901
+ border-radius: 4px;
902
+ color: rgba(0, 0, 0, 0.6);
903
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
904
+ -webkit-tap-highlight-color: transparent;
905
+ }
906
+
907
+ /* Icon SVG */
908
+ .mui-checkbox-icon svg {
909
+ user-select: none;
910
+ width: 1em;
911
+ height: 1em;
912
+ display: inline-block;
913
+ fill: currentColor;
914
+ flex-shrink: 0;
915
+ transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
916
+ font-size: 1.5rem;
917
+ }
918
+
919
+ /* Size variants */
920
+ .mui-checkbox-size-small .mui-checkbox-icon {
921
+ padding: 5px;
922
+ }
923
+
924
+ .mui-checkbox-size-small .mui-checkbox-icon svg {
925
+ font-size: 1.25rem;
926
+ }
927
+
928
+ .mui-checkbox-size-medium .mui-checkbox-icon {
929
+ padding: 9px;
930
+ }
931
+
932
+ .mui-checkbox-size-medium .mui-checkbox-icon svg {
933
+ font-size: 1.5rem;
934
+ }
935
+
936
+ /* Icon states - controlled by display style in JSX */
937
+ .mui-checkbox-icon-unchecked {
938
+ display: flex;
939
+ }
940
+
941
+ .mui-checkbox-icon-checked {
942
+ display: flex;
943
+ }
944
+
945
+ .mui-checkbox-icon-indeterminate {
946
+ display: flex;
947
+ }
948
+
949
+ /* Color variants - Primary */
950
+ .mui-checkbox-color-primary .mui-checkbox-input:checked ~ .mui-checkbox-icon {
951
+ color: #1976d2;
952
+ }
953
+
954
+ /* Color variants - Secondary */
955
+ .mui-checkbox-color-secondary .mui-checkbox-input:checked ~ .mui-checkbox-icon {
956
+ color: #dc004e;
957
+ }
958
+
959
+ /* Color variants - Success */
960
+ .mui-checkbox-color-success .mui-checkbox-input:checked ~ .mui-checkbox-icon {
961
+ color: #2e7d32;
962
+ }
963
+
964
+ /* Color variants - Error */
965
+ .mui-checkbox-color-error .mui-checkbox-input:checked ~ .mui-checkbox-icon {
966
+ color: #d32f2f;
967
+ }
968
+
969
+ /* Color variants - Warning */
970
+ .mui-checkbox-color-warning .mui-checkbox-input:checked ~ .mui-checkbox-icon {
971
+ color: #ed6c02;
972
+ }
973
+
974
+ /* Color variants - Default */
975
+ .mui-checkbox-color-default .mui-checkbox-input:checked ~ .mui-checkbox-icon {
976
+ color: rgba(0, 0, 0, 0.87);
977
+ }
978
+
979
+ /* Checkbox Label */
980
+ .mui-checkbox-label {
981
+ margin-left: 8px;
982
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
983
+ font-size: 1rem;
984
+ line-height: 1.5;
985
+ letter-spacing: 0.00938em;
986
+ color: rgba(0, 0, 0, 0.87);
987
+ user-select: none;
988
+ }
989
+
990
+ /* Checkbox Group */
991
+ .mui-checkbox-group {
992
+ display: flex;
993
+ flex-direction: column;
994
+ flex-wrap: wrap;
995
+ }
996
+
997
+ .mui-checkbox-group-row {
998
+ flex-direction: row;
999
+ }
1000
+
1001
+ /* Ripple effect on click */
1002
+ .mui-checkbox-icon::after {
1003
+ content: '';
1004
+ position: absolute;
1005
+ top: 0;
1006
+ left: 0;
1007
+ right: 0;
1008
+ bottom: 0;
1009
+ border-radius: 4px;
1010
+ opacity: 0;
1011
+ background-color: currentColor;
1012
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
1013
+ display: none;
1014
+ }
1015
+
1016
+ .mui-checkbox-wrapper:active .mui-checkbox-icon::after {
1017
+ opacity: 0;
1018
+ }
1019
+
1020
+ /* Focus visible */
1021
+ .mui-checkbox-input:focus-visible ~ .mui-checkbox-icon {
1022
+ box-shadow: none;
1023
+ }
1024
+
1025
+ /* Dark mode support */
1026
+ @media (prefers-color-scheme: dark) {
1027
+ .mui-checkbox-icon {
1028
+ color: rgba(255, 255, 255, 0.7);
1029
+ }
1030
+
1031
+ .mui-checkbox-color-primary .mui-checkbox-input:checked ~ .mui-checkbox-icon {
1032
+ color: #90caf9;
1033
+ }
1034
+
1035
+ .mui-checkbox-color-secondary .mui-checkbox-input:checked ~ .mui-checkbox-icon {
1036
+ color: #f48fb1;
1037
+ }
1038
+
1039
+ .mui-checkbox-color-success .mui-checkbox-input:checked ~ .mui-checkbox-icon {
1040
+ color: #66bb6a;
1041
+ }
1042
+
1043
+ .mui-checkbox-color-error .mui-checkbox-input:checked ~ .mui-checkbox-icon {
1044
+ color: #f44336;
1045
+ }
1046
+
1047
+ .mui-checkbox-color-warning .mui-checkbox-input:checked ~ .mui-checkbox-icon {
1048
+ color: #ffa726;
1049
+ }
1050
+
1051
+ .mui-checkbox-color-default .mui-checkbox-input:checked ~ .mui-checkbox-icon {
1052
+ color: rgba(255, 255, 255, 0.87);
1053
+ }
1054
+
1055
+ .mui-checkbox-label {
1056
+ color: rgba(255, 255, 255, 0.87);
1057
+ }
1058
+
1059
+ .mui-checkbox-input:focus-visible ~ .mui-checkbox-icon {
1060
+ box-shadow: none;
1061
+ }
1062
+ }
1063
+
1064
+ `;const Ze=(()=>{const e=u("span",{class:"mui-checkbox-icon-unchecked"});return e.innerHTML='<svg viewBox="0 0 24 24">\n <path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path>\n </svg>',e})(),Je=(()=>{const e=u("span",{class:"mui-checkbox-icon-checked"});return e.innerHTML='<svg viewBox="0 0 24 24">\n <path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path>\n </svg>',e})(),Ke=(()=>{const e=u("span",{class:"mui-checkbox-icon-indeterminate"});return e.innerHTML='<svg viewBox="0 0 24 24">\n <path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"></path>\n </svg>',e})();function Qe(r,o){const t=d(r.class??""),a=d(e(r.style)),n=d(r.label??""),l=d(r.value??""),c=d(r.indeterminate??!1),m=d(r.color??"primary"),b=d(r.size??"medium"),h=d(r.disabled??!1),f=x(r,!1),v=u("input",{type:"checkbox",class:"mui-checkbox-input",checked:f,value:l,disabled:h,"on:change":()=>{h.value||(f.value=v.checked,c.value=!1)}}),k=r["on:change"];k&&v.addEventListener("change",()=>k(v.checked,l.value)),o&&v.addEventListener("change",()=>o(v.checked,l.value));const w=Ze.cloneNode(!0),y=Je.cloneNode(!0),z=Ke.cloneNode(!0),C=p(()=>`mui-checkbox-wrapper mui-checkbox-size-${b.value} ${h.value?"mui-checkbox-disabled":""} mui-checkbox-color-${m.value} ${t.value}`,[m,h,b,t]),$=s("label",{class:C,style:a,children:[v,s("span",{class:"mui-checkbox-icon",children:[w,y,z]}),u("span",{"k-if":n,class:"mui-checkbox-label",children:n})]});return g(()=>{c.value?(w.style.display="none",y.style.display="none",z.style.display=""):(w.style.display=f.value?"none":"",y.style.display=f.value?"":"none",z.style.display="none")},[f,c]),i($,{checked:{get:()=>f.value,set(e){f.value=e}},value:{get:()=>l.value,set(e){l.value=e}},disabled:{get:()=>h.value,set(e){h.value=e}}}),qe($,r,["on:change"]),$}function er(i){let{"on:change":a=r}=i;const n=d(i.class??""),l=d(e(i.style)),c=d(i.options),s=d(i.row??!0),m=d(i.size??"medium"),g=x(i,[]);let h=!1;g.addOnChange(e=>{if(h)h=!1;else for(let r=0;r<v.length;r++){const i=v[r];i.checked=e.includes(i.value)}});const f=p(()=>`mui-checkbox-group ${s.value?"mui-checkbox-group-row":""} ${n.value}`,[s,n]),v=[],k=(e,r)=>{const i=g.value.slice();e?o(g.value,r):t(g.value,r),a(g.value.slice(),i),h=!0,g.notify()},w=p(()=>(v.length=0,c.value.map(e=>{if(null!==e&&"object"==typeof e&&"value"in e&&"label"in e){const r=Qe({...e,size:m.value},k);return v.push(r),r}return e})),[c,m]),y=u("div",{class:f,style:l,role:"group",children:u(b,{list:w})});return g.notify(),qe(y,i,["on:change"]),y}function rr(i){let{"on:close":o=r,children:t,actions:a}=i;const n=d(i.class??""),l=d(e(i.style)),c=d(i.title??""),m=d(i.open??!1,e=>{e?(k.style.display="flex",setTimeout(()=>k.classList.add("kt-dialog-backdrop-open"),50)):(k.classList.remove("kt-dialog-backdrop-open"),setTimeout(()=>{m.value||(k.style.display="none")},225))}),b=d(i.size??"sm"),x=d(i.fullWidth??!1),g=p(()=>`kt-dialog-paper ${b.value?`kt-dialog-maxWidth-${b.value}`:""} ${x.value?"kt-dialog-fullWidth":""} ${n.value}`,[b,x,n]),h=m.toComputed(e=>"kt-dialog-backdrop "+(e?"kt-dialog-backdrop-open":"")),f=m.toComputed(e=>e?"display:flex":"display:none"),v=e=>{"Escape"===e.key&&(m.value=!1,o())},k=u("div",{class:h,style:f,"on:click":e=>{e.target===k&&o()},children:s("div",{class:g,style:l,"on:click":e=>e.stopPropagation(),children:[u("div",{"k-if":c,class:"kt-dialog-title",children:u("h2",{children:c})}),u("div",{"k-if":t,class:"kt-dialog-content",children:t}),u("div",{"k-if":a,class:"kt-dialog-actions",children:a})]})});document.addEventListener("keydown",v);const w=k.remove;return k.remove=()=>(v&&document.removeEventListener("keydown",v),w.call(k)),qe(k,i,["on:close"]),k}function ir(e){const r=d(e.required??!1),i=d(e.error??!1),o=d(e.disabled??!1),t=d(e.focused??!1),a=d(e.filled??!1),n=d(e.htmlFor??""),l={class:p(()=>["mui-form-label",i.value?"mui-form-label-error":"",o.value?"mui-form-label-disabled":"",t.value?"mui-form-label-focused":"",a.value?"mui-form-label-filled":""].join(" "),[i,o,t,a])};n&&(l.for=n);const c="legend"===e.component?s("legend",{...l,children:[e.children,u("span",{"k-if":r,class:"mui-form-label-asterisk",children:"*"})]}):s("label",{...l,children:[e.children,u("span",{"k-if":r,class:"mui-form-label-asterisk",children:"*"})]});return qe(c,e),c}function or(r){const o=d(r.class??""),t=d(e(r.style)),a=d(r.value??0),n=d(r.color??"primary"),l=d(r.variant??"indeterminate"),c=p(()=>`mui-linear-progress mui-linear-progress-${l.value} mui-linear-progress-${n.value} ${o.value}`,[o,n,l]),s=p(()=>"determinate"===l.value?`width: ${a.value}%`:"",[l,a]),m=u("div",{class:c,style:t,role:"progressbar","aria-valuenow":a,children:u("div",{class:"mui-linear-progress-bar",style:s})});return i(m,{value:{get:()=>a.value,set(e){a.value=e}}}),qe(m,r),m}function tr(i){const o=i["on:input"]??r,t=i["on:change"]??r,a=i["on:blur"]??r,n=i["on:focus"]??r,l=m(!1),c=e=>""!==e&&null!=e,b=()=>o(y.value),g=()=>t(y.value),f=()=>{l.value=!0,n(j.value)},v=()=>{l.value=!1,a(j.value)},k=h(i.type??"text"),w=i.multiline,y=x(i,i.value??""),z=d(i.label??""),C=d(i.disabled??!1),$=d(i.readOnly??!1),S=d(i.required??!1),L=d(i.error??!1),A=d(i.helperText??""),E=d(i.fullWidth??!1),I=d(i.rows??3),M=d(i.size??"medium"),T=d(i.placeholder??"").toComputed(e=>!z.value||l.value||c(y.value)?e:"",[z,l,y]),j=w?u("textarea",{"k-model":y,class:"mui-textfield-input",placeholder:T,disabled:C,readOnly:$,required:S,rows:I,"on:input":b,"on:change":g,"on:focus":f,"on:blur":v}):u("input",{"k-model":y,type:k,class:"mui-textfield-input",placeholder:T,disabled:C,readOnly:$,required:S,"on:input":b,"on:change":g,"on:focus":f,"on:blur":v});y.addOnChange(e=>j.value=e);const R=d(e(i.style)),O=d(i.class??""),W=p(()=>["mui-textfield-root",`mui-textfield-size-${M.value}`,l.value?"mui-textfield-focused":"",L.value?"mui-textfield-error":"",C.value?"mui-textfield-disabled":"",E.value?"mui-textfield-fullwidth":"",z.value&&c(y.value)?"mui-textfield-has-value":"",z.value?"":"mui-textfield-no-label",O.value?O.value:""].join(" "),[M,L,C,E,z,l,y,O]),D=p(()=>z.value?s("label",{class:"mui-textfield-label",children:[z,u("span",{"k-if":S,class:"mui-textfield-required",children:"*"})]}):"",[z,S]),H=p(()=>z.value?u("legend",{class:"mui-textfield-legend",children:s("span",{children:[z,u("span",{"k-if":S,children:"*"})]})}):"",[z,S]),B=s("div",{class:W,style:R,children:[s("div",{class:"mui-textfield-wrapper","on:mousedown":e=>{if(C.value)return;const r=e.target;r&&r!==j&&setTimeout(()=>j.focus(),0)},children:[D,u("div",{class:"mui-textfield-input-wrapper",children:j}),u("fieldset",{class:"mui-textfield-fieldset",children:H})]}),u("p",{class:"mui-textfield-helper-text",children:A})]});return qe(B,i,["on:input","on:change","on:focus","on:blur"]),B}Ve`
1065
+ /* Dialog Component Styles - MUI-like appearance */
1066
+
1067
+ .kt-dialog-backdrop {
1068
+ position: fixed;
1069
+ top: 0;
1070
+ left: 0;
1071
+ right: 0;
1072
+ bottom: 0;
1073
+ background-color: rgba(0, 0, 0, 0.5);
1074
+ z-index: 1300;
1075
+ display: flex;
1076
+ align-items: center;
1077
+ justify-content: center;
1078
+ opacity: 0;
1079
+ transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1);
1080
+ pointer-events: none;
1081
+ }
1082
+
1083
+ .kt-dialog-backdrop-open {
1084
+ opacity: 1;
1085
+ pointer-events: auto;
1086
+ }
1087
+
1088
+ .kt-dialog-paper {
1089
+ background-color: #fff;
1090
+ border-radius: 4px;
1091
+ box-shadow:
1092
+ 0px 11px 15px -7px rgba(0, 0, 0, 0.2),
1093
+ 0px 24px 38px 3px rgba(0, 0, 0, 0.14),
1094
+ 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
1095
+ display: flex;
1096
+ flex-direction: column;
1097
+ max-height: calc(100% - 64px);
1098
+ overflow-y: auto;
1099
+ transform: scale(0.8);
1100
+ transition: transform 225ms cubic-bezier(0.4, 0, 0.2, 1);
1101
+ }
1102
+
1103
+ .kt-dialog-backdrop-open .kt-dialog-paper {
1104
+ transform: scale(1);
1105
+ }
1106
+
1107
+ /* Max width variants */
1108
+ .kt-dialog-maxWidth-xs {
1109
+ max-width: 444px;
1110
+ width: 100%;
1111
+ }
1112
+
1113
+ .kt-dialog-maxWidth-sm {
1114
+ max-width: 600px;
1115
+ width: 100%;
1116
+ }
1117
+
1118
+ .kt-dialog-maxWidth-md {
1119
+ max-width: 960px;
1120
+ width: 100%;
1121
+ }
1122
+
1123
+ .kt-dialog-maxWidth-lg {
1124
+ max-width: 1280px;
1125
+ width: 100%;
1126
+ }
1127
+
1128
+ .kt-dialog-maxWidth-xl {
1129
+ max-width: 1920px;
1130
+ width: 100%;
1131
+ }
1132
+
1133
+ .kt-dialog-fullWidth {
1134
+ width: calc(100% - 64px);
1135
+ }
1136
+
1137
+ .kt-dialog-title {
1138
+ flex: 0 0 auto;
1139
+ margin: 0;
1140
+ padding: 24px 24px 20px;
1141
+ }
1142
+
1143
+ .kt-dialog-title h2 {
1144
+ margin: 0;
1145
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1146
+ font-weight: 500;
1147
+ font-size: 1.25rem;
1148
+ line-height: 1.6;
1149
+ letter-spacing: 0.0075em;
1150
+ color: rgba(0, 0, 0, 0.87);
1151
+ }
1152
+
1153
+ .kt-dialog-content {
1154
+ flex: 1 1 auto;
1155
+ padding: 20px 24px;
1156
+ overflow-y: auto;
1157
+ -webkit-overflow-scrolling: touch;
1158
+ color: rgba(0, 0, 0, 0.6);
1159
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1160
+ font-size: 1rem;
1161
+ line-height: 1.5;
1162
+ letter-spacing: 0.00938em;
1163
+ }
1164
+
1165
+ .kt-dialog-content:first-child {
1166
+ padding-top: 20px;
1167
+ }
1168
+
1169
+ .kt-dialog-actions {
1170
+ display: flex;
1171
+ align-items: center;
1172
+ justify-content: flex-end;
1173
+ flex: 0 0 auto;
1174
+ padding: 8px;
1175
+ gap: 8px;
1176
+ }
1177
+
1178
+ .kt-dialog-actions > * {
1179
+ margin: 0;
1180
+ }
1181
+
1182
+ /* Dark mode support */
1183
+ @media (prefers-color-scheme: dark) {
1184
+ .kt-dialog-paper {
1185
+ background-color: #1e1e1e;
1186
+ color: rgba(255, 255, 255, 0.87);
1187
+ }
1188
+
1189
+ .kt-dialog-title h2 {
1190
+ color: rgba(255, 255, 255, 0.87);
1191
+ }
1192
+
1193
+ .kt-dialog-content {
1194
+ color: rgba(255, 255, 255, 0.7);
1195
+ }
1196
+ }
1197
+
1198
+ `,Ve`
1199
+ /* FormLabel Component Styles - MUI-like */
1200
+
1201
+ .mui-form-label {
1202
+ color: rgba(0, 0, 0, 0.6);
1203
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1204
+ font-weight: 400;
1205
+ font-size: 1rem;
1206
+ line-height: 1.4375em;
1207
+ letter-spacing: 0.00938em;
1208
+ padding: 0;
1209
+ display: block;
1210
+ transform-origin: top left;
1211
+ white-space: nowrap;
1212
+ overflow: hidden;
1213
+ text-overflow: ellipsis;
1214
+ max-width: 100%;
1215
+ transition:
1216
+ color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,
1217
+ transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,
1218
+ max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
1219
+ }
1220
+
1221
+ /* Focused state */
1222
+ .mui-form-label-focused {
1223
+ color: #1976d2;
1224
+ }
1225
+
1226
+ /* Error state */
1227
+ .mui-form-label-error {
1228
+ color: #d32f2f;
1229
+ }
1230
+
1231
+ .mui-form-label-error.mui-form-label-focused {
1232
+ color: #d32f2f;
1233
+ }
1234
+
1235
+ /* Disabled state */
1236
+ .mui-form-label-disabled {
1237
+ color: rgba(0, 0, 0, 0.38);
1238
+ }
1239
+
1240
+ /* Filled state */
1241
+ .mui-form-label-filled {
1242
+ color: rgba(0, 0, 0, 0.6);
1243
+ }
1244
+
1245
+ .mui-form-label-filled.mui-form-label-focused {
1246
+ color: #1976d2;
1247
+ }
1248
+
1249
+ /* Required asterisk */
1250
+ .mui-form-label-asterisk {
1251
+ color: #d32f2f;
1252
+ }
1253
+
1254
+ /* Legend variant (for fieldset) */
1255
+ legend.mui-form-label {
1256
+ float: unset;
1257
+ width: auto;
1258
+ overflow: hidden;
1259
+ display: block;
1260
+ padding: 0;
1261
+ max-width: 100%;
1262
+ white-space: normal;
1263
+ margin-bottom: 8px;
1264
+ }
1265
+
1266
+ /* Dark mode support */
1267
+ @media (prefers-color-scheme: dark) {
1268
+ .mui-form-label {
1269
+ color: rgba(255, 255, 255, 0.7);
1270
+ }
1271
+
1272
+ .mui-form-label-focused {
1273
+ color: #90caf9;
1274
+ }
1275
+
1276
+ .mui-form-label-error {
1277
+ color: #f44336;
1278
+ }
1279
+
1280
+ .mui-form-label-error.mui-form-label-focused {
1281
+ color: #f44336;
1282
+ }
1283
+
1284
+ .mui-form-label-disabled {
1285
+ color: rgba(255, 255, 255, 0.38);
1286
+ }
1287
+
1288
+ .mui-form-label-filled {
1289
+ color: rgba(255, 255, 255, 0.7);
1290
+ }
1291
+
1292
+ .mui-form-label-filled.mui-form-label-focused {
1293
+ color: #90caf9;
1294
+ }
1295
+ }
1296
+
1297
+ `,Ve`
1298
+ /* LinearProgress Component Styles - Mimics MUI LinearProgress */
1299
+
1300
+ .mui-linear-progress {
1301
+ position: relative;
1302
+ display: block;
1303
+ width: 100%;
1304
+ height: 4px;
1305
+ overflow: hidden;
1306
+ background-color: rgba(0, 0, 0, 0.12);
1307
+ border-radius: 2px;
1308
+ }
1309
+
1310
+ .mui-linear-progress-bar {
1311
+ height: 100%;
1312
+ transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1313
+ transform-origin: left;
1314
+ }
1315
+
1316
+ /* Determinate variant */
1317
+ .mui-linear-progress-determinate .mui-linear-progress-bar {
1318
+ transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1319
+ }
1320
+
1321
+ /* Indeterminate variant animation */
1322
+ .mui-linear-progress-indeterminate .mui-linear-progress-bar {
1323
+ width: 100%;
1324
+ animation: mui-linear-progress-indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
1325
+ }
1326
+
1327
+ @keyframes mui-linear-progress-indeterminate {
1328
+ 0% {
1329
+ left: -35%;
1330
+ right: 100%;
1331
+ }
1332
+ 60% {
1333
+ left: 100%;
1334
+ right: -90%;
1335
+ }
1336
+ 100% {
1337
+ left: 100%;
1338
+ right: -90%;
1339
+ }
1340
+ }
1341
+
1342
+ /* Color variants */
1343
+ .mui-linear-progress-primary .mui-linear-progress-bar {
1344
+ background-color: rgb(25, 118, 210);
1345
+ }
1346
+
1347
+ .mui-linear-progress-secondary .mui-linear-progress-bar {
1348
+ background-color: rgb(156, 39, 176);
1349
+ }
1350
+
1351
+ .mui-linear-progress-error .mui-linear-progress-bar {
1352
+ background-color: rgb(211, 47, 47);
1353
+ }
1354
+
1355
+ .mui-linear-progress-warning .mui-linear-progress-bar {
1356
+ background-color: rgb(237, 108, 2);
1357
+ }
1358
+
1359
+ .mui-linear-progress-info .mui-linear-progress-bar {
1360
+ background-color: rgb(2, 136, 209);
1361
+ }
1362
+
1363
+ .mui-linear-progress-success .mui-linear-progress-bar {
1364
+ background-color: rgb(46, 125, 50);
1365
+ }
1366
+
1367
+ /* Dark mode support */
1368
+ @media (prefers-color-scheme: dark) {
1369
+ .mui-linear-progress {
1370
+ background-color: rgba(255, 255, 255, 0.12);
1371
+ }
1372
+
1373
+ .mui-linear-progress-primary .mui-linear-progress-bar {
1374
+ background-color: rgb(144, 202, 249);
1375
+ }
1376
+
1377
+ .mui-linear-progress-secondary .mui-linear-progress-bar {
1378
+ background-color: rgb(206, 147, 216);
1379
+ }
1380
+
1381
+ .mui-linear-progress-error .mui-linear-progress-bar {
1382
+ background-color: rgb(244, 67, 54);
1383
+ }
1384
+
1385
+ .mui-linear-progress-warning .mui-linear-progress-bar {
1386
+ background-color: rgb(255, 152, 0);
1387
+ }
1388
+
1389
+ .mui-linear-progress-info .mui-linear-progress-bar {
1390
+ background-color: rgb(41, 182, 246);
1391
+ }
1392
+
1393
+ .mui-linear-progress-success .mui-linear-progress-bar {
1394
+ background-color: rgb(102, 187, 106);
1395
+ }
1396
+ }
1397
+
1398
+ `,Ve`
1399
+ /* TextField Component Styles - MUI-like */
1400
+
1401
+ .mui-textfield-root {
1402
+ display: inline-flex;
1403
+ flex-direction: column;
1404
+ position: relative;
1405
+ min-width: 0;
1406
+ padding: 0;
1407
+ margin: 0;
1408
+ border: 0;
1409
+ vertical-align: top;
1410
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1411
+ }
1412
+
1413
+ .mui-textfield-fullwidth {
1414
+ width: 100%;
1415
+ }
1416
+
1417
+ /* Wrapper */
1418
+ .mui-textfield-wrapper {
1419
+ font-size: 1rem;
1420
+ line-height: 1.4375em;
1421
+ color: rgba(0, 0, 0, 0.87);
1422
+ box-sizing: border-box;
1423
+ cursor: text;
1424
+ display: inline-flex;
1425
+ align-items: center;
1426
+ position: relative;
1427
+ border-radius: 4px;
1428
+ }
1429
+
1430
+ /* Label */
1431
+ .mui-textfield-label {
1432
+ display: block;
1433
+ transform-origin: top left;
1434
+ white-space: nowrap;
1435
+ overflow: hidden;
1436
+ text-overflow: ellipsis;
1437
+ max-width: calc(133% - 32px);
1438
+ position: absolute;
1439
+ left: 0;
1440
+ top: 2px;
1441
+ transform: translate(14px, 16px) scale(1);
1442
+ transition:
1443
+ color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,
1444
+ transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,
1445
+ max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
1446
+ z-index: 1;
1447
+ pointer-events: none;
1448
+ color: rgba(0, 0, 0, 0.6);
1449
+ font-size: 1rem;
1450
+ line-height: 1;
1451
+ }
1452
+
1453
+ .mui-textfield-focused .mui-textfield-label,
1454
+ .mui-textfield-has-value .mui-textfield-label {
1455
+ transform: translate(14px, -9px) scale(0.75);
1456
+ max-width: calc(133% - 32px);
1457
+ }
1458
+
1459
+ .mui-textfield-focused .mui-textfield-label {
1460
+ color: #1976d2;
1461
+ }
1462
+
1463
+ .mui-textfield-error .mui-textfield-label {
1464
+ color: #d32f2f;
1465
+ }
1466
+
1467
+ .mui-textfield-disabled .mui-textfield-label {
1468
+ color: rgba(0, 0, 0, 0.38);
1469
+ }
1470
+
1471
+ .mui-textfield-required {
1472
+ color: #d32f2f;
1473
+ }
1474
+
1475
+ /* Size variants */
1476
+ .mui-textfield-size-small .mui-textfield-wrapper {
1477
+ font-size: 0.875rem;
1478
+ line-height: 1.4375em;
1479
+ }
1480
+
1481
+ .mui-textfield-size-small .mui-textfield-label {
1482
+ font-size: 0.875rem;
1483
+ transform: translate(14px, 9px) scale(1);
1484
+ }
1485
+
1486
+ .mui-textfield-size-small.mui-textfield-focused .mui-textfield-label,
1487
+ .mui-textfield-size-small.mui-textfield-has-value .mui-textfield-label {
1488
+ transform: translate(14px, -9px) scale(0.75);
1489
+ }
1490
+
1491
+ .mui-textfield-size-small .mui-textfield-input-wrapper {
1492
+ padding: 8.5px 14px;
1493
+ }
1494
+
1495
+ .mui-textfield-size-small .mui-textfield-input {
1496
+ font-size: 0.875rem;
1497
+ }
1498
+
1499
+ /* Input wrapper */
1500
+ .mui-textfield-input-wrapper {
1501
+ font: inherit;
1502
+ letter-spacing: inherit;
1503
+ color: currentColor;
1504
+ padding: 16.5px 14px;
1505
+ border: 0;
1506
+ box-sizing: content-box;
1507
+ background: none;
1508
+ height: auto;
1509
+ margin: 0;
1510
+ display: block;
1511
+ min-width: 0;
1512
+ width: 100%;
1513
+ position: relative;
1514
+ }
1515
+
1516
+ /* Input element */
1517
+ .mui-textfield-input {
1518
+ font: inherit;
1519
+ letter-spacing: inherit;
1520
+ color: currentColor;
1521
+ border: 0;
1522
+ box-sizing: content-box;
1523
+ background: none;
1524
+ height: 1.4375em;
1525
+ margin: 0;
1526
+ display: block;
1527
+ min-width: 0;
1528
+ width: 100%;
1529
+ padding: 0;
1530
+ outline: none;
1531
+ }
1532
+
1533
+ /* Textarea specific styles - override height */
1534
+ textarea.mui-textfield-input {
1535
+ height: auto !important;
1536
+ resize: none;
1537
+ overflow: auto;
1538
+ min-height: 1.4375em;
1539
+ }
1540
+
1541
+ .mui-textfield-input::placeholder {
1542
+ color: rgba(0, 0, 0, 0.42);
1543
+ opacity: 1;
1544
+ transition: opacity 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
1545
+ }
1546
+
1547
+ .mui-textfield-focused .mui-textfield-input::placeholder {
1548
+ opacity: 0.42;
1549
+ }
1550
+
1551
+ .mui-textfield-disabled .mui-textfield-input {
1552
+ color: rgba(0, 0, 0, 0.38);
1553
+ cursor: default;
1554
+ }
1555
+
1556
+ /* Fieldset (border) */
1557
+ .mui-textfield-fieldset {
1558
+ text-align: left;
1559
+ position: absolute;
1560
+ bottom: 0;
1561
+ right: 0;
1562
+ top: -5px;
1563
+ left: 0;
1564
+ margin: 0;
1565
+ padding: 0 8px;
1566
+ pointer-events: none;
1567
+ border-radius: inherit;
1568
+ border-style: solid;
1569
+ border-width: 1px;
1570
+ overflow: hidden;
1571
+ min-width: 0%;
1572
+ border-color: rgba(0, 0, 0, 0.23);
1573
+ transition: border-color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
1574
+ }
1575
+
1576
+ .mui-textfield-wrapper:hover .mui-textfield-fieldset {
1577
+ border-color: rgba(0, 0, 0, 0.87);
1578
+ }
1579
+
1580
+ .mui-textfield-focused .mui-textfield-fieldset {
1581
+ border-color: #1976d2;
1582
+ border-width: 2px;
1583
+ }
1584
+
1585
+ .mui-textfield-error .mui-textfield-fieldset {
1586
+ border-color: #d32f2f;
1587
+ }
1588
+
1589
+ .mui-textfield-error.mui-textfield-focused .mui-textfield-fieldset {
1590
+ border-color: #d32f2f;
1591
+ }
1592
+
1593
+ .mui-textfield-disabled .mui-textfield-fieldset {
1594
+ border-color: rgba(0, 0, 0, 0.26);
1595
+ }
1596
+
1597
+ /* No label variant - adjust fieldset position */
1598
+ .mui-textfield-no-label .mui-textfield-fieldset {
1599
+ top: 0;
1600
+ }
1601
+
1602
+ /* Legend (for label space) */
1603
+ .mui-textfield-legend {
1604
+ float: unset;
1605
+ width: auto;
1606
+ overflow: hidden;
1607
+ display: block;
1608
+ padding: 0;
1609
+ height: 11px;
1610
+ font-size: 0.75em;
1611
+ visibility: hidden;
1612
+ max-width: 0.01px;
1613
+ transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms;
1614
+ white-space: nowrap;
1615
+ }
1616
+
1617
+ .mui-textfield-legend > span {
1618
+ padding-left: 5px;
1619
+ padding-right: 5px;
1620
+ display: inline-block;
1621
+ opacity: 0;
1622
+ visibility: visible;
1623
+ }
1624
+
1625
+ .mui-textfield-focused .mui-textfield-legend,
1626
+ .mui-textfield-has-value .mui-textfield-legend {
1627
+ max-width: 100%;
1628
+ transition: max-width 100ms cubic-bezier(0, 0, 0.2, 1) 50ms;
1629
+ }
1630
+
1631
+ /* Helper text */
1632
+ .mui-textfield-helper-text {
1633
+ color: rgba(0, 0, 0, 0.6);
1634
+ font-size: 0.75rem;
1635
+ line-height: 1.66;
1636
+ letter-spacing: 0.03333em;
1637
+ text-align: left;
1638
+ margin: 3px 14px 0;
1639
+ }
1640
+
1641
+ .mui-textfield-error .mui-textfield-helper-text {
1642
+ color: #d32f2f;
1643
+ }
1644
+
1645
+ .mui-textfield-disabled .mui-textfield-helper-text {
1646
+ color: rgba(0, 0, 0, 0.38);
1647
+ }
1648
+
1649
+ /* Dark mode support */
1650
+ @media (prefers-color-scheme: dark) {
1651
+ .mui-textfield-wrapper {
1652
+ color: rgba(255, 255, 255, 0.87);
1653
+ }
1654
+
1655
+ .mui-textfield-label {
1656
+ color: rgba(255, 255, 255, 0.7);
1657
+ }
1658
+
1659
+ .mui-textfield-focused .mui-textfield-label {
1660
+ color: #90caf9;
1661
+ }
1662
+
1663
+ .mui-textfield-input::placeholder {
1664
+ color: rgba(255, 255, 255, 0.5);
1665
+ }
1666
+
1667
+ .mui-textfield-disabled .mui-textfield-input {
1668
+ color: rgba(255, 255, 255, 0.38);
1669
+ }
1670
+
1671
+ .mui-textfield-fieldset {
1672
+ border-color: rgba(255, 255, 255, 0.23);
1673
+ }
1674
+
1675
+ .mui-textfield-wrapper:hover .mui-textfield-fieldset {
1676
+ border-color: rgba(255, 255, 255, 0.87);
1677
+ }
1678
+
1679
+ .mui-textfield-focused .mui-textfield-fieldset {
1680
+ border-color: #90caf9;
1681
+ }
1682
+
1683
+ .mui-textfield-disabled .mui-textfield-fieldset {
1684
+ border-color: rgba(255, 255, 255, 0.26);
1685
+ }
1686
+
1687
+ .mui-textfield-helper-text {
1688
+ color: rgba(255, 255, 255, 0.7);
1689
+ }
1690
+
1691
+ .mui-textfield-disabled .mui-textfield-helper-text {
1692
+ color: rgba(255, 255, 255, 0.38);
1693
+ }
1694
+ }
1695
+
1696
+ `,Ve`
1697
+ /* Radio Component Styles - MUI-like */
1698
+
1699
+ .mui-radio-wrapper {
1700
+ display: inline-flex;
1701
+ align-items: center;
1702
+ cursor: pointer;
1703
+ vertical-align: middle;
1704
+ position: relative;
1705
+ margin: -9px;
1706
+ padding: 9px;
1707
+ border-radius: 4px;
1708
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
1709
+ }
1710
+
1711
+ .mui-radio-wrapper:hover {
1712
+ /* background-color: rgba(0, 0, 0, 0.04); */
1713
+ }
1714
+
1715
+ .mui-radio-disabled {
1716
+ cursor: default;
1717
+ pointer-events: none;
1718
+ opacity: 0.38;
1719
+ }
1720
+
1721
+ /* Radio Input (hidden) */
1722
+ .mui-radio-input {
1723
+ position: absolute;
1724
+ opacity: 0;
1725
+ width: 100%;
1726
+ height: 100%;
1727
+ top: 0;
1728
+ left: 0;
1729
+ margin: 0;
1730
+ padding: 0;
1731
+ z-index: 1;
1732
+ cursor: inherit;
1733
+ }
1734
+
1735
+ /* Radio Icon Container */
1736
+ .mui-radio-icon {
1737
+ display: inline-flex;
1738
+ align-items: center;
1739
+ justify-content: center;
1740
+ position: relative;
1741
+ box-sizing: border-box;
1742
+ background-color: transparent;
1743
+ outline: 0;
1744
+ border: 0;
1745
+ margin: 0;
1746
+ cursor: pointer;
1747
+ user-select: none;
1748
+ vertical-align: middle;
1749
+ appearance: none;
1750
+ text-decoration: none;
1751
+ padding: 9px;
1752
+ border-radius: 50%;
1753
+ color: rgba(0, 0, 0, 0.6);
1754
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
1755
+ }
1756
+
1757
+ /* Icon SVG */
1758
+ .mui-radio-icon svg {
1759
+ user-select: none;
1760
+ width: 1em;
1761
+ height: 1em;
1762
+ display: inline-block;
1763
+ fill: currentColor;
1764
+ flex-shrink: 0;
1765
+ transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
1766
+ font-size: 1.5rem;
1767
+ }
1768
+
1769
+ /* Size variants */
1770
+ .mui-radio-size-small .mui-radio-icon {
1771
+ padding: 5px;
1772
+ }
1773
+
1774
+ .mui-radio-size-small .mui-radio-icon svg {
1775
+ font-size: 1.25rem;
1776
+ }
1777
+
1778
+ .mui-radio-size-medium .mui-radio-icon {
1779
+ padding: 9px;
1780
+ }
1781
+
1782
+ .mui-radio-size-medium .mui-radio-icon svg {
1783
+ font-size: 1.5rem;
1784
+ }
1785
+
1786
+ /* Unchecked state - controlled by k-if in JSX */
1787
+ .mui-radio-icon-unchecked {
1788
+ display: flex;
1789
+ }
1790
+
1791
+ .mui-radio-icon-checked {
1792
+ display: flex;
1793
+ }
1794
+
1795
+ /* Color variants - Primary */
1796
+ .mui-radio-color-primary .mui-radio-input:checked ~ .mui-radio-icon {
1797
+ color: #1976d2;
1798
+ }
1799
+
1800
+ .mui-radio-color-primary:hover {
1801
+ /* background-color: rgba(25, 118, 210, 0.04); */
1802
+ }
1803
+
1804
+ /* Color variants - Secondary */
1805
+ .mui-radio-color-secondary .mui-radio-input:checked ~ .mui-radio-icon {
1806
+ color: #dc004e;
1807
+ }
1808
+
1809
+ .mui-radio-color-secondary:hover {
1810
+ /* background-color: rgba(220, 0, 78, 0.04); */
1811
+ }
1812
+
1813
+ /* Color variants - Default */
1814
+ .mui-radio-color-default .mui-radio-input:checked ~ .mui-radio-icon {
1815
+ color: rgba(0, 0, 0, 0.87);
1816
+ }
1817
+
1818
+ /* Radio Label */
1819
+ .mui-radio-label {
1820
+ margin-left: 8px;
1821
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1822
+ font-size: 1rem;
1823
+ line-height: 1.5;
1824
+ letter-spacing: 0.00938em;
1825
+ color: rgba(0, 0, 0, 0.87);
1826
+ user-select: none;
1827
+ }
1828
+
1829
+ /* Radio Group */
1830
+ .mui-radio-group {
1831
+ display: flex;
1832
+ flex-direction: column;
1833
+ flex-wrap: wrap;
1834
+ }
1835
+
1836
+ .mui-radio-group-row {
1837
+ flex-direction: row;
1838
+ }
1839
+
1840
+ /* Ripple effect on click */
1841
+ .mui-radio-icon::after {
1842
+ content: '';
1843
+ position: absolute;
1844
+ top: 0;
1845
+ left: 0;
1846
+ right: 0;
1847
+ bottom: 0;
1848
+ border-radius: 50%;
1849
+ opacity: 0;
1850
+ background-color: currentColor;
1851
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
1852
+ }
1853
+
1854
+ .mui-radio-wrapper:active .mui-radio-icon::after {
1855
+ opacity: 0.12;
1856
+ }
1857
+
1858
+ /* Focus visible */
1859
+ .mui-radio-input:focus-visible ~ .mui-radio-icon {
1860
+ box-shadow: 0 0 0 8px rgba(25, 118, 210, 0.12);
1861
+ }
1862
+
1863
+ /* Dark mode support */
1864
+ @media (prefers-color-scheme: dark) {
1865
+ .mui-radio-wrapper:hover {
1866
+ /* background-color: rgba(255, 255, 255, 0.08); */
1867
+ }
1868
+
1869
+ .mui-radio-icon {
1870
+ color: rgba(255, 255, 255, 0.7);
1871
+ }
1872
+
1873
+ .mui-radio-color-primary .mui-radio-input:checked ~ .mui-radio-icon {
1874
+ color: #90caf9;
1875
+ }
1876
+
1877
+ .mui-radio-color-primary:hover {
1878
+ background-color: rgba(144, 202, 249, 0.08);
1879
+ }
1880
+
1881
+ .mui-radio-color-secondary .mui-radio-input:checked ~ .mui-radio-icon {
1882
+ color: #f48fb1;
1883
+ }
1884
+
1885
+ .mui-radio-color-secondary:hover {
1886
+ background-color: rgba(244, 143, 177, 0.08);
1887
+ }
1888
+
1889
+ .mui-radio-color-default .mui-radio-input:checked ~ .mui-radio-icon {
1890
+ color: rgba(255, 255, 255, 0.87);
1891
+ }
1892
+
1893
+ .mui-radio-label {
1894
+ color: rgba(255, 255, 255, 0.87);
1895
+ }
1896
+
1897
+ .mui-radio-input:focus-visible ~ .mui-radio-icon {
1898
+ box-shadow: 0 0 0 8px rgba(144, 202, 249, 0.16);
1899
+ }
1900
+ }
1901
+
1902
+ `;const ar=(()=>{const e=u("span",{class:"mui-radio-icon-unchecked"});return e.innerHTML=' <svg viewBox="0 0 24 24">\n <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path>\n </svg>',e})(),nr=(()=>{const e=u("span",{class:"mui-radio-icon-checked"});return e.innerHTML='<svg viewBox="0 0 24 24">\n <path d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path>\n </svg>',e})(),lr=()=>nr.cloneNode(!0);function cr(o){const t=o["on:change"]??r,a=e=>{f.style.display=e?"none":"",v.style.display=e?"":"none"};let{checked:n=!1,value:l="",label:c="",size:p="small",disabled:m=!1,color:b="primary"}=o;const x=d(o.value??""),g=d(o.disabled??!1),h=u("input",{type:"radio",class:"mui-radio-input",checked:n,value:x,disabled:g,"on:change":()=>{m||(n=h.checked,a(n),t(n,l))}}),f=ar.cloneNode(!0),v=lr();a(n);const k=s("label",{class:`mui-radio-wrapper ${o.class??""} mui-radio-size-${p} ${m?"mui-radio-disabled":""} mui-radio-color-${b}`,style:e(o.style),children:[h,s("span",{class:"mui-radio-icon",children:[f,v]}),u("span",{class:"mui-radio-label",children:c})]});return i(k,{value:{get:()=>l},checked:{get:()=>n,set(e){n=e,h.checked=n,a(n)}}}),qe(k,o),k}function sr(o){const t=d(o.class??""),a=d(e(o.style)),n=d(o.value??""),l=d(o.size??"small"),c=d(o.row??!1),s=p(()=>`mui-radio-group ${c.value?"mui-radio-group-row":""} ${t.value}`,[t,c]),m=o["on:change"]??r,x=(e,r)=>{e&&(n.value=r,m(r)),g.value.forEach(e=>e.checked=e.value===r)},g=d(o.options).toComputed(e=>e.map(e=>{e.size=l.value,e.checked=n.value===e.value;const r=e["on:change"];return e["on:change"]=r?(e,i)=>{r(e,i),x(e,i)}:x,cr(e)})),h=u("div",{class:s,style:a,role:"radiogroup",children:u(b,{list:g})});return i(h,{value:{get:()=>n.value,set(e){n.value=e,g.value.forEach(e=>e.checked=e.value===n.value)}}}),qe(h,o),h}Ve`
1903
+ /* Select Component Styles - MUI-like */
1904
+
1905
+ .mui-select-wrapper {
1906
+ display: inline-flex;
1907
+ flex-direction: column;
1908
+ position: relative;
1909
+ min-width: 120px;
1910
+ margin: 8px 0;
1911
+ vertical-align: top;
1912
+ }
1913
+
1914
+ .mui-select-fullWidth {
1915
+ width: 100%;
1916
+ }
1917
+
1918
+ .mui-select-disabled {
1919
+ opacity: 0.6;
1920
+ pointer-events: none;
1921
+ }
1922
+
1923
+ /* Select Label */
1924
+ .mui-select-label {
1925
+ display: block;
1926
+ transform-origin: top left;
1927
+ white-space: nowrap;
1928
+ overflow: hidden;
1929
+ text-overflow: ellipsis;
1930
+ max-width: calc(100% - 24px);
1931
+ position: absolute;
1932
+ left: 0;
1933
+ top: 0;
1934
+ transform: translate(14px, 16px) scale(1);
1935
+ transition:
1936
+ color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,
1937
+ transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,
1938
+ max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
1939
+ z-index: 1;
1940
+ pointer-events: none;
1941
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1942
+ font-size: 1rem;
1943
+ line-height: 1.4375em;
1944
+ letter-spacing: 0.00938em;
1945
+ color: rgba(0, 0, 0, 0.6);
1946
+ }
1947
+
1948
+ .mui-select-label.focused {
1949
+ transform: translate(14px, -9px) scale(0.75);
1950
+ max-width: calc(133.33333% - 24px);
1951
+ color: #1976d2;
1952
+ }
1953
+
1954
+ /* Select Control */
1955
+ .mui-select-control {
1956
+ position: relative;
1957
+ cursor: pointer;
1958
+ user-select: none;
1959
+ display: flex;
1960
+ align-items: center;
1961
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
1962
+ font-size: 1rem;
1963
+ line-height: 1.4375em;
1964
+ letter-spacing: 0.00938em;
1965
+ color: rgba(0, 0, 0, 0.87);
1966
+ }
1967
+
1968
+ .mui-select-control:focus {
1969
+ outline: none;
1970
+ }
1971
+
1972
+ /* Size variants */
1973
+ .mui-select-size-small .mui-select-control {
1974
+ font-size: 0.875rem;
1975
+ line-height: 1.4375em;
1976
+ }
1977
+
1978
+ .mui-select-size-small .mui-select-label {
1979
+ font-size: 0.875rem;
1980
+ transform: translate(14px, 9px) scale(1);
1981
+ }
1982
+
1983
+ .mui-select-size-small .mui-select-label.focused {
1984
+ transform: translate(14px, -9px) scale(0.75);
1985
+ }
1986
+
1987
+ .mui-select-size-small .mui-select-outlined {
1988
+ padding: 8.5px 14px;
1989
+ padding-right: 32px;
1990
+ }
1991
+
1992
+ .mui-select-size-small .mui-select-display {
1993
+ font-size: 0.875rem;
1994
+ }
1995
+
1996
+ /* Outlined variant */
1997
+ .mui-select-outlined {
1998
+ border-radius: 4px;
1999
+ padding: 16.5px 14px;
2000
+ padding-right: 32px;
2001
+ }
2002
+
2003
+ .mui-select-outlined .mui-select-fieldset {
2004
+ text-align: left;
2005
+ position: absolute;
2006
+ bottom: 0;
2007
+ right: 0;
2008
+ top: -5px;
2009
+ left: 0;
2010
+ margin: 0;
2011
+ padding: 0 8px;
2012
+ pointer-events: none;
2013
+ border-radius: inherit;
2014
+ border-style: solid;
2015
+ border-width: 1px;
2016
+ overflow: hidden;
2017
+ min-width: 0%;
2018
+ border-color: rgba(0, 0, 0, 0.23);
2019
+ transition: border-color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms;
2020
+ }
2021
+
2022
+ .mui-select-outlined:hover .mui-select-fieldset {
2023
+ border-color: rgba(0, 0, 0, 0.87);
2024
+ }
2025
+
2026
+ .mui-select-wrapper.focused .mui-select-outlined .mui-select-fieldset,
2027
+ .mui-select-open .mui-select-fieldset {
2028
+ border-color: #1976d2 !important;
2029
+ border-width: 2px;
2030
+ }
2031
+
2032
+ .mui-select-fieldset legend {
2033
+ float: unset;
2034
+ width: auto;
2035
+ overflow: hidden;
2036
+ display: block;
2037
+ padding: 0;
2038
+ height: 11px;
2039
+ font-size: 0.75em;
2040
+ visibility: hidden;
2041
+ max-width: 0.01px;
2042
+ transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms;
2043
+ white-space: nowrap;
2044
+ }
2045
+
2046
+ .mui-select-label.focused ~ .mui-select-outlined .mui-select-fieldset legend {
2047
+ max-width: 100%;
2048
+ transition: max-width 100ms cubic-bezier(0, 0, 0.2, 1) 50ms;
2049
+ }
2050
+
2051
+ /* Select Display */
2052
+ .mui-select-display {
2053
+ flex: 1;
2054
+ min-width: 0;
2055
+ min-height: 1.4375em;
2056
+ line-height: 1.4375em;
2057
+ }
2058
+
2059
+ .mui-select-placeholder {
2060
+ color: rgba(0, 0, 0, 0.4);
2061
+ }
2062
+
2063
+ /* Select Icon */
2064
+ .mui-select-icon {
2065
+ position: absolute;
2066
+ right: 7px;
2067
+ top: calc(50% - 0.7em);
2068
+ pointer-events: none;
2069
+ color: rgba(0, 0, 0, 0.54);
2070
+ user-select: none;
2071
+ width: 24px;
2072
+ height: 24px;
2073
+ display: inline-block;
2074
+ fill: currentColor;
2075
+ flex-shrink: 0;
2076
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2077
+ }
2078
+
2079
+ .mui-select-open .mui-select-icon {
2080
+ transform: rotate(180deg);
2081
+ }
2082
+
2083
+ /* Select Menu */
2084
+ .mui-select-menu {
2085
+ position: absolute;
2086
+ top: 100%;
2087
+ left: 0;
2088
+ right: 0;
2089
+ z-index: 1300;
2090
+ margin-top: 4px;
2091
+ background-color: #fff;
2092
+ border-radius: 4px;
2093
+ box-shadow:
2094
+ 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
2095
+ 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
2096
+ 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
2097
+ max-height: 300px;
2098
+ overflow-y: auto;
2099
+ padding: 8px 0;
2100
+ display: none;
2101
+ opacity: 0;
2102
+ transform: scale(0.75) translateY(-8px);
2103
+ transform-origin: top center;
2104
+ transition:
2105
+ opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
2106
+ transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2107
+ }
2108
+
2109
+ .mui-select-menu-open {
2110
+ opacity: 1;
2111
+ transform: scale(1) translateY(0);
2112
+ }
2113
+
2114
+ /* Select Option */
2115
+ .mui-select-option {
2116
+ display: flex;
2117
+ justify-content: flex-start;
2118
+ align-items: center;
2119
+ position: relative;
2120
+ text-decoration: none;
2121
+ min-height: 42px;
2122
+ padding: 6px 16px;
2123
+ box-sizing: border-box;
2124
+ white-space: nowrap;
2125
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
2126
+ font-size: 1rem;
2127
+ line-height: 1.5;
2128
+ letter-spacing: 0.00938em;
2129
+ color: rgba(0, 0, 0, 0.87);
2130
+ cursor: pointer;
2131
+ user-select: none;
2132
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2133
+ }
2134
+
2135
+ .mui-select-option:hover {
2136
+ background-color: rgba(0, 0, 0, 0.04);
2137
+ }
2138
+
2139
+ .mui-select-option.selected {
2140
+ background-color: rgba(25, 118, 210, 0.08);
2141
+ font-weight: 500;
2142
+ }
2143
+
2144
+ .mui-select-option.selected:hover {
2145
+ background-color: rgba(25, 118, 210, 0.12);
2146
+ }
2147
+
2148
+ .mui-select-legend > span {
2149
+ padding-left: 5px;
2150
+ padding-right: 5px;
2151
+ display: inline-block;
2152
+ opacity: 0;
2153
+ visibility: visible;
2154
+ }
2155
+
2156
+ /* Dark mode support */
2157
+ @media (prefers-color-scheme: dark) {
2158
+ .mui-select-label {
2159
+ color: rgba(255, 255, 255, 0.7);
2160
+ }
2161
+
2162
+ .mui-select-label.focused {
2163
+ color: #90caf9;
2164
+ }
2165
+
2166
+ .mui-select-control {
2167
+ color: rgba(255, 255, 255, 0.87);
2168
+ }
2169
+
2170
+ .mui-select-outlined .mui-select-fieldset {
2171
+ border-color: rgba(255, 255, 255, 0.23);
2172
+ }
2173
+
2174
+ .mui-select-outlined:hover .mui-select-fieldset {
2175
+ border-color: rgba(255, 255, 255, 0.87);
2176
+ }
2177
+
2178
+ .mui-select-wrapper.focused .mui-select-outlined .mui-select-fieldset,
2179
+ .mui-select-open .mui-select-fieldset {
2180
+ border-color: #90caf9 !important;
2181
+ }
2182
+
2183
+ .mui-select-placeholder {
2184
+ color: rgba(255, 255, 255, 0.5);
2185
+ }
2186
+
2187
+ .mui-select-icon {
2188
+ color: rgba(255, 255, 255, 0.7);
2189
+ }
2190
+
2191
+ .mui-select-menu {
2192
+ background-color: #1e1e1e;
2193
+ }
2194
+
2195
+ .mui-select-option {
2196
+ color: rgba(255, 255, 255, 0.87);
2197
+ }
2198
+
2199
+ .mui-select-option:hover {
2200
+ background-color: rgba(255, 255, 255, 0.08);
2201
+ }
2202
+
2203
+ .mui-select-option.selected {
2204
+ background-color: rgba(144, 202, 249, 0.16);
2205
+ }
2206
+
2207
+ .mui-select-option.selected:hover {
2208
+ background-color: rgba(144, 202, 249, 0.24);
2209
+ }
2210
+ }
2211
+
2212
+ `;const ur=(()=>{const e=u("div",{});return e.innerHTML='<svg class="mui-select-icon" focusable="false" aria-hidden="true" viewBox="0 0 24 24" width="24" height="24">\n <path d="M7 10l5 5 5-5Z" fill="currentColor"></path>\n </svg>',e.firstElementChild})();function dr(i){const o=i["on:change"]??r,t=m(!1),a=m(!1,e=>{e?(L.value.style.display="block",L.value.offsetHeight):setTimeout(()=>{e||(L.value.style.display="none")},200),L.value.classList.toggle("mui-select-menu-open",e),A.classList.toggle("mui-select-open",e)}),n=d(i.placeholder??""),l=d(i.label??""),c=d(i.options,e=>{if(!e.find(e=>e?.value===g.value)){const e=g.value;g.value="",o(g.value,e)}}),b=d(i.disabled??!1,e=>A.classList.toggle("mui-select-disabled",e)),g=x(i,i.value??""),h=d(e(i.style)),f=d(i.class??""),v=d(i.size??"medium"),k=d(i.fullWidth??!1),w=p(()=>`mui-select-wrapper mui-select-size-${v.value} ${k.value?"mui-select-fullWidth":""} ${f.value} ${b.value?"mui-select-disabled":""}`,[v,k,f,b]),y=p(()=>l.value?u("label",{class:"mui-select-label "+(g.value||t.value||n.value?"focused":""),children:l}):"",[l,g,t,n]),z=e=>{const r=e.currentTarget.dataset.value;g.value=r,o(r),a.value=!1},C=e=>{A.contains(e.target)||(a.value=!1)},$=u("span",{class:"mui-select-placeholder",children:n.value||" "}),S=p(()=>{const e=c.value.find(e=>e?.value===g.value);return u("div",{class:"mui-select-display",children:e?.label??$})},[g]),L=p(()=>u("div",{class:"mui-select-menu",style:"display: none;",children:c.value.map(e=>{if(null!==e&&"object"==typeof e&&"value"in e&&"label"in e){return u("div",{class:"mui-select-option "+(e.value===g.value?"selected":""),"data-value":e.value,"on:click":z,children:e.label})}return e})}),[c,g]),A=s("div",{class:w,style:h,children:[y,s("div",{class:"mui-select-control mui-select-outlined","on:click":()=>{b.value||(a.value=!a.value)},"on:focus":()=>t.value=!0,"on:blur":()=>t.value=!1,tabIndex:b.value?-1:0,children:[S,u("input",{type:"hidden","k-model":g}),u("fieldset",{class:"mui-select-fieldset",children:u("legend",{class:"mui-select-legend",children:u("span",{children:l})})}),ur.cloneNode(!0)]}),L]});return L.notify(),setTimeout(()=>{document.removeEventListener("click",C),document.addEventListener("click",C)},0),qe(A,i),A}function pr(r){const i=d(r.class??""),o=d(e(r.style)),t=d(r.variant??"elevation"),a=d(r.elevation??1),n=d(r.square??!1),l=d(r.raised??!1),c=p(()=>["mui-card",`mui-card-${t.value}`,"elevation"===t.value?`mui-card-elevation-${Math.min(24,Math.max(0,a.value))}`:"",n.value?"mui-card-square":"",l.value?"mui-card-raised":"",i.value].join(" "),[t,a,n,l,i]),s=u("div",{class:c,style:o,"on:click":r["on:click"],children:r.children});return qe(s,r),s}function mr(i){const o=i["on:change"]??r,t=d(i.label??""),a=d(i.value??""),n=d(i.color??"primary"),l=d(i.size??"medium"),c=d(i.disabled??!1,e=>{f.disabled=e,w.classList.toggle("mui-switch-disabled",e)}),m=x(i,!1);m.addOnChange(e=>{f.checked=e,v.classList.toggle("mui-switch-track-checked",e),k.classList.toggle("mui-switch-thumb-checked",e)});const b=d(e(i.style)),g=d(i.class??""),h=p(()=>`mui-switch-wrapper mui-switch-size-${l.value} ${c.value?"mui-switch-disabled":""} mui-switch-color-${n.value} ${g.value}`,[n,c,l,g]),f=u("input",{type:"checkbox",class:"mui-switch-input",checked:m.value,value:a,disabled:c,"on:change":()=>{c.value||(m.value=f.checked,o(m.value,a.value))}}),v=u("span",{class:"mui-switch-track"}),k=u("span",{class:"mui-switch-thumb"}),w=s("label",{class:h,style:b,children:[f,s("span",{class:"mui-switch-base",children:[v,k]}),u("span",{"k-if":t,class:"mui-switch-label",children:t})]});return v.classList.toggle("mui-switch-track-checked",m.value),k.classList.toggle("mui-switch-thumb-checked",m.value),w}Ve`
2213
+ /* Card Component Styles - MUI-like */
2214
+
2215
+ .mui-card {
2216
+ position: relative;
2217
+ border-radius: 4px;
2218
+ background-color: #ffffff;
2219
+ color: rgba(0, 0, 0, 0.87);
2220
+ transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2221
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
2222
+ overflow: hidden;
2223
+ display: block;
2224
+ }
2225
+
2226
+ /* Variant: outlined */
2227
+ .mui-card-outlined {
2228
+ border: 1px solid rgba(0, 0, 0, 0.12);
2229
+ box-shadow: none;
2230
+ }
2231
+
2232
+ /* Variant: contained */
2233
+ .mui-card-contained {
2234
+ background-color: #f5f5f5;
2235
+ box-shadow: none;
2236
+ border: none;
2237
+ }
2238
+
2239
+ /* Elevation shadows */
2240
+ .mui-card-elevation-0 {
2241
+ box-shadow: none;
2242
+ }
2243
+ .mui-card-elevation-1 {
2244
+ box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),
2245
+ 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
2246
+ 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
2247
+ }
2248
+ .mui-card-elevation-2 {
2249
+ box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
2250
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
2251
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
2252
+ }
2253
+ .mui-card-elevation-3 {
2254
+ box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2),
2255
+ 0px 3px 4px 0px rgba(0, 0, 0, 0.14),
2256
+ 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
2257
+ }
2258
+ .mui-card-elevation-4 {
2259
+ box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
2260
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
2261
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
2262
+ }
2263
+ .mui-card-elevation-5 {
2264
+ box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
2265
+ 0px 5px 8px 0px rgba(0, 0, 0, 0.14),
2266
+ 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
2267
+ }
2268
+ .mui-card-elevation-6 {
2269
+ box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
2270
+ 0px 6px 10px 0px rgba(0, 0, 0, 0.14),
2271
+ 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
2272
+ }
2273
+ .mui-card-elevation-7 {
2274
+ box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2),
2275
+ 0px 7px 10px 1px rgba(0, 0, 0, 0.14),
2276
+ 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
2277
+ }
2278
+ .mui-card-elevation-8 {
2279
+ box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
2280
+ 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
2281
+ 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
2282
+ }
2283
+ .mui-card-elevation-9 {
2284
+ box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2),
2285
+ 0px 9px 12px 1px rgba(0, 0, 0, 0.14),
2286
+ 0px 3px 16px 2px rgba(0, 0, 0, 0.12);
2287
+ }
2288
+ .mui-card-elevation-10 {
2289
+ box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),
2290
+ 0px 10px 14px 1px rgba(0, 0, 0, 0.14),
2291
+ 0px 4px 18px 3px rgba(0, 0, 0, 0.12);
2292
+ }
2293
+ .mui-card-elevation-11 {
2294
+ box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2),
2295
+ 0px 11px 15px 1px rgba(0, 0, 0, 0.14),
2296
+ 0px 4px 20px 3px rgba(0, 0, 0, 0.12);
2297
+ }
2298
+ .mui-card-elevation-12 {
2299
+ box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2),
2300
+ 0px 12px 17px 2px rgba(0, 0, 0, 0.14),
2301
+ 0px 5px 22px 4px rgba(0, 0, 0, 0.12);
2302
+ }
2303
+ .mui-card-elevation-13 {
2304
+ box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2),
2305
+ 0px 13px 19px 2px rgba(0, 0, 0, 0.14),
2306
+ 0px 5px 24px 4px rgba(0, 0, 0, 0.12);
2307
+ }
2308
+ .mui-card-elevation-14 {
2309
+ box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2),
2310
+ 0px 14px 21px 2px rgba(0, 0, 0, 0.14),
2311
+ 0px 5px 26px 4px rgba(0, 0, 0, 0.12);
2312
+ }
2313
+ .mui-card-elevation-15 {
2314
+ box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2),
2315
+ 0px 15px 22px 2px rgba(0, 0, 0, 0.14),
2316
+ 0px 6px 28px 5px rgba(0, 0, 0, 0.12);
2317
+ }
2318
+ .mui-card-elevation-16 {
2319
+ box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2),
2320
+ 0px 16px 24px 2px rgba(0, 0, 0, 0.14),
2321
+ 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
2322
+ }
2323
+ .mui-card-elevation-17 {
2324
+ box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2),
2325
+ 0px 17px 26px 2px rgba(0, 0, 0, 0.14),
2326
+ 0px 6px 32px 5px rgba(0, 0, 0, 0.12);
2327
+ }
2328
+ .mui-card-elevation-18 {
2329
+ box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2),
2330
+ 0px 18px 28px 2px rgba(0, 0, 0, 0.14),
2331
+ 0px 7px 34px 6px rgba(0, 0, 0, 0.12);
2332
+ }
2333
+ .mui-card-elevation-19 {
2334
+ box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2),
2335
+ 0px 19px 29px 2px rgba(0, 0, 0, 0.14),
2336
+ 0px 7px 36px 6px rgba(0, 0, 0, 0.12);
2337
+ }
2338
+ .mui-card-elevation-20 {
2339
+ box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2),
2340
+ 0px 20px 31px 3px rgba(0, 0, 0, 0.14),
2341
+ 0px 8px 38px 7px rgba(0, 0, 0, 0.12);
2342
+ }
2343
+ .mui-card-elevation-21 {
2344
+ box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2),
2345
+ 0px 21px 33px 3px rgba(0, 0, 0, 0.14),
2346
+ 0px 8px 40px 7px rgba(0, 0, 0, 0.12);
2347
+ }
2348
+ .mui-card-elevation-22 {
2349
+ box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2),
2350
+ 0px 22px 35px 3px rgba(0, 0, 0, 0.14),
2351
+ 0px 8px 42px 7px rgba(0, 0, 0, 0.12);
2352
+ }
2353
+ .mui-card-elevation-23 {
2354
+ box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2),
2355
+ 0px 23px 36px 3px rgba(0, 0, 0, 0.14),
2356
+ 0px 9px 44px 8px rgba(0, 0, 0, 0.12);
2357
+ }
2358
+ .mui-card-elevation-24 {
2359
+ box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),
2360
+ 0px 24px 38px 3px rgba(0, 0, 0, 0.14),
2361
+ 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
2362
+ }
2363
+
2364
+ /* Square card (no border radius) */
2365
+ .mui-card-square {
2366
+ border-radius: 0;
2367
+ }
2368
+
2369
+ /* Raised card (hover effect) */
2370
+ .mui-card-raised {
2371
+ transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2372
+ }
2373
+ .mui-card-raised:hover {
2374
+ box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
2375
+ 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
2376
+ 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
2377
+ }
2378
+
2379
+ /* Dark mode support */
2380
+ @media (prefers-color-scheme: dark) {
2381
+ .mui-card {
2382
+ background-color: #1e1e1e;
2383
+ color: rgba(255, 255, 255, 0.87);
2384
+ }
2385
+
2386
+ .mui-card-outlined {
2387
+ border-color: rgba(255, 255, 255, 0.12);
2388
+ }
2389
+
2390
+ .mui-card-contained {
2391
+ background-color: #2d2d2d;
2392
+ }
2393
+ }
2394
+ `,Ve`
2395
+ /* Switch Component Styles - MUI-like */
2396
+
2397
+ .mui-switch-wrapper {
2398
+ display: inline-flex;
2399
+ align-items: center;
2400
+ position: relative;
2401
+ cursor: pointer;
2402
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
2403
+ user-select: none;
2404
+ vertical-align: middle;
2405
+ }
2406
+
2407
+ .mui-switch-input {
2408
+ position: absolute;
2409
+ opacity: 0;
2410
+ width: 0;
2411
+ height: 0;
2412
+ margin: 0;
2413
+ padding: 0;
2414
+ }
2415
+
2416
+ /* Switch base container */
2417
+ .mui-switch-base {
2418
+ position: relative;
2419
+ display: inline-block;
2420
+ flex-shrink: 0;
2421
+ vertical-align: middle;
2422
+ }
2423
+
2424
+ /* Track (background) */
2425
+ .mui-switch-track {
2426
+ display: block;
2427
+ border-radius: 7px;
2428
+ background-color: #b0b0b0;
2429
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2430
+ }
2431
+
2432
+ /* Thumb (circle) */
2433
+ .mui-switch-thumb {
2434
+ position: absolute;
2435
+ top: 50%;
2436
+ left: 0;
2437
+ transform: translate(0, -50%);
2438
+ background-color: #ffffff;
2439
+ border-radius: 50%;
2440
+ box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2),
2441
+ 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
2442
+ 0px 2px 1px -1px rgba(0, 0, 0, 0.12);
2443
+ transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
2444
+ }
2445
+
2446
+ /* Size variants */
2447
+ .mui-switch-size-small .mui-switch-track {
2448
+ width: 34px;
2449
+ height: 14px;
2450
+ }
2451
+ .mui-switch-size-small .mui-switch-thumb {
2452
+ width: 20px;
2453
+ height: 20px;
2454
+ }
2455
+ .mui-switch-size-small .mui-switch-thumb-checked {
2456
+ transform: translate(14px, -50%);
2457
+ }
2458
+
2459
+ .mui-switch-size-medium .mui-switch-track {
2460
+ width: 40px;
2461
+ height: 20px;
2462
+ }
2463
+ .mui-switch-size-medium .mui-switch-thumb {
2464
+ width: 24px;
2465
+ height: 24px;
2466
+ }
2467
+ .mui-switch-size-medium .mui-switch-thumb-checked {
2468
+ transform: translate(16px, -50%);
2469
+ }
2470
+
2471
+ .mui-switch-size-large .mui-switch-track {
2472
+ width: 50px;
2473
+ height: 24px;
2474
+ }
2475
+ .mui-switch-size-large .mui-switch-thumb {
2476
+ width: 30px;
2477
+ height: 30px;
2478
+ }
2479
+ .mui-switch-size-large .mui-switch-thumb-checked {
2480
+ transform: translate(20px, -50%);
2481
+ }
2482
+
2483
+ /* Checked state */
2484
+ .mui-switch-track-checked {
2485
+ background-color: #1976d2; /* primary default */
2486
+ }
2487
+
2488
+ /* Color variants */
2489
+ .mui-switch-color-primary .mui-switch-track-checked {
2490
+ background-color: #1976d2;
2491
+ }
2492
+ .mui-switch-color-secondary .mui-switch-track-checked {
2493
+ background-color: #dc004e;
2494
+ }
2495
+ .mui-switch-color-error .mui-switch-track-checked {
2496
+ background-color: #d32f2f;
2497
+ }
2498
+ .mui-switch-color-warning .mui-switch-track-checked {
2499
+ background-color: #ed6c02;
2500
+ }
2501
+ .mui-switch-color-info .mui-switch-track-checked {
2502
+ background-color: #0288d1;
2503
+ }
2504
+ .mui-switch-color-success .mui-switch-track-checked {
2505
+ background-color: #2e7d32;
2506
+ }
2507
+
2508
+ /* Disabled state */
2509
+ .mui-switch-disabled {
2510
+ opacity: 0.5;
2511
+ cursor: not-allowed;
2512
+ }
2513
+ .mui-switch-disabled .mui-switch-track {
2514
+ background-color: #e0e0e0;
2515
+ }
2516
+ .mui-switch-disabled .mui-switch-track-checked {
2517
+ background-color: #b0b0b0;
2518
+ }
2519
+
2520
+ /* Label */
2521
+ .mui-switch-label {
2522
+ margin-left: 8px;
2523
+ font-size: 1rem;
2524
+ line-height: 1.5;
2525
+ letter-spacing: 0.00938em;
2526
+ color: rgba(0, 0, 0, 0.87);
2527
+ }
2528
+
2529
+ /* Focus visible */
2530
+ .mui-switch-input:focus-visible ~ .mui-switch-base .mui-switch-thumb {
2531
+ outline: 2px solid #1976d2;
2532
+ outline-offset: 2px;
2533
+ }
2534
+
2535
+ /* Dark mode support */
2536
+ @media (prefers-color-scheme: dark) {
2537
+ .mui-switch-track {
2538
+ background-color: #5a5a5a;
2539
+ }
2540
+
2541
+ .mui-switch-track-checked {
2542
+ background-color: #90caf9; /* primary dark */
2543
+ }
2544
+
2545
+ .mui-switch-color-primary .mui-switch-track-checked {
2546
+ background-color: #90caf9;
2547
+ }
2548
+ .mui-switch-color-secondary .mui-switch-track-checked {
2549
+ background-color: #f48fb1;
2550
+ }
2551
+ .mui-switch-color-error .mui-switch-track-checked {
2552
+ background-color: #f44336;
2553
+ }
2554
+ .mui-switch-color-warning .mui-switch-track-checked {
2555
+ background-color: #ff9800;
2556
+ }
2557
+ .mui-switch-color-info .mui-switch-track-checked {
2558
+ background-color: #29b6f6;
2559
+ }
2560
+ .mui-switch-color-success .mui-switch-track-checked {
2561
+ background-color: #66bb6a;
2562
+ }
2563
+
2564
+ .mui-switch-disabled .mui-switch-track {
2565
+ background-color: #424242;
2566
+ }
2567
+ .mui-switch-disabled .mui-switch-track-checked {
2568
+ background-color: #5a5a5a;
2569
+ }
2570
+
2571
+ .mui-switch-label {
2572
+ color: rgba(255, 255, 255, 0.87);
2573
+ }
2574
+ }
2575
+ `,Ve`
2576
+ .mui-pill {
2577
+ box-sizing: border-box;
2578
+ display: inline-flex;
2579
+ align-items: center;
2580
+ max-width: 100%;
2581
+ gap: 6px;
2582
+ border: 1px solid transparent;
2583
+ border-radius: 999px;
2584
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
2585
+ font-size: 0.8125rem;
2586
+ font-weight: 500;
2587
+ line-height: 1.2;
2588
+ user-select: none;
2589
+ white-space: nowrap;
2590
+ transition:
2591
+ background-color 0.2s ease,
2592
+ border-color 0.2s ease,
2593
+ color 0.2s ease,
2594
+ box-shadow 0.2s ease,
2595
+ opacity 0.2s ease;
2596
+ }
2597
+
2598
+ .mui-pill-size-small {
2599
+ height: 24px;
2600
+ padding: 0 8px;
2601
+ font-size: 0.75rem;
2602
+ }
2603
+
2604
+ .mui-pill-size-medium {
2605
+ height: 32px;
2606
+ padding: 0 12px;
2607
+ }
2608
+
2609
+ .mui-pill-label {
2610
+ overflow: hidden;
2611
+ text-overflow: ellipsis;
2612
+ }
2613
+
2614
+ .mui-pill-icon {
2615
+ display: inline-flex;
2616
+ align-items: center;
2617
+ justify-content: center;
2618
+ }
2619
+
2620
+ .mui-pill-delete {
2621
+ display: inline-flex;
2622
+ align-items: center;
2623
+ justify-content: center;
2624
+ margin: 0 -4px 0 0;
2625
+ padding: 0;
2626
+ border: none;
2627
+ border-radius: 50%;
2628
+ width: 18px;
2629
+ height: 18px;
2630
+ background: transparent;
2631
+ color: inherit;
2632
+ opacity: 0.88;
2633
+ cursor: pointer;
2634
+ transition:
2635
+ opacity 0.2s ease,
2636
+ background-color 0.2s ease;
2637
+ }
2638
+
2639
+ .mui-pill-delete-mark {
2640
+ font-size: 14px;
2641
+ font-weight: 700;
2642
+ line-height: 1;
2643
+ transform: translateY(-0.5px);
2644
+ }
2645
+
2646
+ .mui-pill-delete:hover {
2647
+ opacity: 1;
2648
+ background: rgba(0, 0, 0, 0.1);
2649
+ }
2650
+
2651
+ .mui-pill-clickable {
2652
+ cursor: pointer;
2653
+ }
2654
+
2655
+ .mui-pill-clickable:hover {
2656
+ filter: brightness(0.96);
2657
+ }
2658
+
2659
+ .mui-pill-clickable:focus-visible {
2660
+ outline: 2px solid rgba(25, 118, 210, 0.4);
2661
+ outline-offset: 2px;
2662
+ }
2663
+
2664
+ .mui-pill-disabled {
2665
+ pointer-events: none;
2666
+ opacity: 0.45;
2667
+ }
2668
+
2669
+ .mui-pill-variant-filled.mui-pill-color-default {
2670
+ background: rgba(0, 0, 0, 0.08);
2671
+ color: rgba(0, 0, 0, 0.87);
2672
+ }
2673
+
2674
+ .mui-pill-variant-filled.mui-pill-color-primary {
2675
+ background: var(--kt-color-primary);
2676
+ color: #fff;
2677
+ }
2678
+
2679
+ .mui-pill-variant-filled.mui-pill-color-secondary {
2680
+ background: var(--kt-color-secondary);
2681
+ color: #fff;
2682
+ }
2683
+
2684
+ .mui-pill-variant-filled.mui-pill-color-error {
2685
+ background: var(--kt-color-error);
2686
+ color: #fff;
2687
+ }
2688
+
2689
+ .mui-pill-variant-filled.mui-pill-color-warning {
2690
+ background: var(--kt-color-warning);
2691
+ color: #fff;
2692
+ }
2693
+
2694
+ .mui-pill-variant-filled.mui-pill-color-info {
2695
+ background: var(--kt-color-info);
2696
+ color: #fff;
2697
+ }
2698
+
2699
+ .mui-pill-variant-filled.mui-pill-color-success {
2700
+ background: var(--kt-color-success);
2701
+ color: #fff;
2702
+ }
2703
+
2704
+ .mui-pill-variant-outlined {
2705
+ background: transparent;
2706
+ }
2707
+
2708
+ .mui-pill-variant-outlined.mui-pill-color-default {
2709
+ border-color: rgba(0, 0, 0, 0.3);
2710
+ color: rgba(0, 0, 0, 0.7);
2711
+ }
2712
+
2713
+ .mui-pill-variant-outlined.mui-pill-color-primary {
2714
+ border-color: var(--kt-color-primary);
2715
+ color: var(--kt-color-primary);
2716
+ }
2717
+
2718
+ .mui-pill-variant-outlined.mui-pill-color-secondary {
2719
+ border-color: var(--kt-color-secondary);
2720
+ color: var(--kt-color-secondary);
2721
+ }
2722
+
2723
+ .mui-pill-variant-outlined.mui-pill-color-error {
2724
+ border-color: var(--kt-color-error);
2725
+ color: var(--kt-color-error);
2726
+ }
2727
+
2728
+ .mui-pill-variant-outlined.mui-pill-color-warning {
2729
+ border-color: var(--kt-color-warning);
2730
+ color: var(--kt-color-warning);
2731
+ }
2732
+
2733
+ .mui-pill-variant-outlined.mui-pill-color-info {
2734
+ border-color: var(--kt-color-info);
2735
+ color: var(--kt-color-info);
2736
+ }
2737
+
2738
+ .mui-pill-variant-outlined.mui-pill-color-success {
2739
+ border-color: var(--kt-color-success);
2740
+ color: var(--kt-color-success);
2741
+ }
2742
+
2743
+ @media (prefers-color-scheme: dark) {
2744
+ .mui-pill-variant-filled.mui-pill-color-default {
2745
+ background: rgba(255, 255, 255, 0.14);
2746
+ color: rgba(255, 255, 255, 0.9);
2747
+ }
2748
+
2749
+ .mui-pill-variant-outlined.mui-pill-color-default {
2750
+ border-color: rgba(255, 255, 255, 0.35);
2751
+ color: rgba(255, 255, 255, 0.85);
2752
+ }
2753
+
2754
+ .mui-pill-delete:hover {
2755
+ background: rgba(255, 255, 255, 0.14);
2756
+ }
2757
+ }
2758
+
2759
+ `;const br=u("span",{class:"mui-pill-delete-mark","aria-hidden":"true",children:"×"});function xr(i){const o=i["on:click"]??r,t=i["on:delete"],a=d(i.label??""),n=d(i.color??"default"),l=d(i.variant??"filled"),c=d(i.size??"medium"),m=d(i.clickable??!!i["on:click"]),b=d(i.disabled??!1),x=d(i.autoRemoveOnDelete??!0),g=d(i.class??""),h=d(e(i.style)),f=p(()=>["mui-pill",`mui-pill-color-${n.value}`,`mui-pill-variant-${l.value}`,`mui-pill-size-${c.value}`,m.value?"mui-pill-clickable":"",b.value?"mui-pill-disabled":"",g.value].join(" "),[n,l,c,m,b,g]),v=s("span",{class:f,style:h,role:m.toComputed(e=>e?"button":"presentation"),tabIndex:p(()=>m.value&&!b.value?0:void 0,[m,b]),"on:click":e=>{m.value&&!b.value&&o(e)},"on:keydown":e=>{m.value&&!b.value&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),o(e)))},children:[u("span",{"k-if":i.icon,class:"mui-pill-icon",children:i.icon}),u("span",{class:"mui-pill-label",children:i.children??a}),u("button",{"k-if":t,class:"mui-pill-delete",type:"button",tabIndex:-1,"aria-label":"Delete","on:click":e=>{if(e.stopPropagation(),b.value||!t)return;const r=t(e);x.value&&!1!==r&&v.remove()},children:i.deleteIcon??br})]});return qe(v,i,["on:click","on:delete"]),v}Ve`
2760
+ .mui-badge-root {
2761
+ position: relative;
2762
+ display: inline-flex;
2763
+ flex-shrink: 0;
2764
+ vertical-align: middle;
2765
+ }
2766
+
2767
+ .mui-badge-content {
2768
+ display: inline-flex;
2769
+ align-items: center;
2770
+ }
2771
+
2772
+ .mui-badge-badge {
2773
+ --mui-badge-translate-x: 50%;
2774
+ --mui-badge-translate-y: -50%;
2775
+ position: absolute;
2776
+ box-sizing: border-box;
2777
+ display: inline-flex;
2778
+ align-items: center;
2779
+ justify-content: center;
2780
+ min-width: 20px;
2781
+ height: 20px;
2782
+ border-radius: 10px;
2783
+ padding: 0 6px;
2784
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
2785
+ font-size: 0.75rem;
2786
+ font-weight: 500;
2787
+ line-height: 1;
2788
+ white-space: nowrap;
2789
+ z-index: 1;
2790
+ pointer-events: none;
2791
+ transform: translate(var(--mui-badge-translate-x), var(--mui-badge-translate-y)) scale(1);
2792
+ transform-origin: center;
2793
+ transition:
2794
+ transform 300ms cubic-bezier(0.4, 0, 0.2, 1),
2795
+ opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
2796
+ }
2797
+
2798
+ .mui-badge-standard {
2799
+ min-width: 20px;
2800
+ height: 20px;
2801
+ }
2802
+
2803
+ .mui-badge-dot {
2804
+ min-width: 8px;
2805
+ width: 8px;
2806
+ height: 8px;
2807
+ padding: 0;
2808
+ border-radius: 4px;
2809
+ }
2810
+
2811
+ .mui-badge-overlap-circular.mui-badge-anchor-top-right {
2812
+ top: 14%;
2813
+ right: 14%;
2814
+ }
2815
+
2816
+ .mui-badge-overlap-circular.mui-badge-anchor-top-left {
2817
+ top: 14%;
2818
+ left: 14%;
2819
+ }
2820
+
2821
+ .mui-badge-overlap-circular.mui-badge-anchor-bottom-right {
2822
+ bottom: 14%;
2823
+ right: 14%;
2824
+ }
2825
+
2826
+ .mui-badge-overlap-circular.mui-badge-anchor-bottom-left {
2827
+ bottom: 14%;
2828
+ left: 14%;
1323
2829
  }
1324
2830
 
1325
- function DownloadIcon(props) {
1326
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" }) }));
2831
+ .mui-badge-overlap-rectangular.mui-badge-anchor-top-right {
2832
+ top: 0;
2833
+ right: 0;
1327
2834
  }
1328
2835
 
1329
- function CompressIcon(props) {
1330
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M4 9h16v2H4zm0 4h16v2H4zm8-9 4 4H8zm0 14 4-4H8z" }) }));
2836
+ .mui-badge-overlap-rectangular.mui-badge-anchor-top-left {
2837
+ top: 0;
2838
+ left: 0;
1331
2839
  }
1332
2840
 
1333
- function SubtitlesIcon(props) {
1334
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM4 12h4v2H4v-2zm10 6H4v-2h10v2zm6 0h-4v-2h4v2zm0-4H10v-2h10v2z" }) }));
2841
+ .mui-badge-overlap-rectangular.mui-badge-anchor-bottom-right {
2842
+ bottom: 0;
2843
+ right: 0;
1335
2844
  }
1336
2845
 
1337
- function SettingsIcon(props) {
1338
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.07.62-.07.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z" }) }));
2846
+ .mui-badge-overlap-rectangular.mui-badge-anchor-bottom-left {
2847
+ bottom: 0;
2848
+ left: 0;
1339
2849
  }
1340
2850
 
1341
- function NewReleasesIcon(props) {
1342
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "m23 12-2.44-2.79.34-3.69-3.61-.82-1.89-3.2L12 2.96 8.6 1.5 6.71 4.69 3.1 5.5l.34 3.7L1 12l2.44 2.79-.34 3.7 3.61.82L8.6 22.5l3.4-1.47 3.4 1.46 1.89-3.19 3.61-.82-.34-3.69L23 12zm-12.91 4.72-3.8-3.81 1.48-1.48 2.32 2.33 5.85-5.87 1.48 1.48-7.33 7.35z" }) }));
2851
+ .mui-badge-anchor-top-right {
2852
+ --mui-badge-translate-x: 50%;
2853
+ --mui-badge-translate-y: -50%;
1343
2854
  }
1344
2855
 
1345
- function FolderOpenIcon(props) {
1346
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }));
2856
+ .mui-badge-anchor-top-left {
2857
+ --mui-badge-translate-x: -50%;
2858
+ --mui-badge-translate-y: -50%;
1347
2859
  }
1348
2860
 
1349
- function PlayArrowIcon(props) {
1350
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M8 5v14l11-7z" }) }));
2861
+ .mui-badge-anchor-bottom-right {
2862
+ --mui-badge-translate-x: 50%;
2863
+ --mui-badge-translate-y: 50%;
1351
2864
  }
1352
2865
 
1353
- function ContentPasteIcon(props) {
1354
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M19 2h-4.18C14.4.84 13.3 0 12 0c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z" }) }));
2866
+ .mui-badge-anchor-bottom-left {
2867
+ --mui-badge-translate-x: -50%;
2868
+ --mui-badge-translate-y: 50%;
1355
2869
  }
1356
2870
 
1357
- function DeleteIcon(props) {
1358
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" }) }));
2871
+ .mui-badge-invisible {
2872
+ opacity: 0;
2873
+ transform: translate(var(--mui-badge-translate-x), var(--mui-badge-translate-y)) scale(0);
1359
2874
  }
1360
2875
 
1361
- function StopIcon(props) {
1362
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M6 6h12v12H6z" }) }));
2876
+ .mui-badge-color-default {
2877
+ background: #616161;
2878
+ color: #fff;
1363
2879
  }
1364
2880
 
1365
- function FileOpenIcon(props) {
1366
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H15l6-6V4c0-1.1-.9-2-2-2zm-1 7V3.5L18.5 9H13z" }) }));
2881
+ .mui-badge-color-primary {
2882
+ background: var(--kt-color-primary);
2883
+ color: #fff;
1367
2884
  }
1368
2885
 
1369
- function ColorLensIcon(props) {
1370
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12zm3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8zm5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8zm3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z" }) }));
2886
+ .mui-badge-color-secondary {
2887
+ background: var(--kt-color-secondary);
2888
+ color: #fff;
1371
2889
  }
1372
2890
 
1373
- function WallpaperIcon(props) {
1374
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M4 4h7V2H4c-1.1 0-2 .9-2 2v7h2V4zm6 9-4 5h12l-3-4-2.03 2.71L10 13zm7-4.5c0-.83-.67-1.5-1.5-1.5S14 7.67 14 8.5s.67 1.5 1.5 1.5S17 9.33 17 8.5zM20 2h-7v2h7v7h2V4c0-1.1-.9-2-2-2zm0 18h-7v2h7c1.1 0 2-.9 2-2v-7h-2v7zM4 13H2v7c0 1.1.9 2 2 2h7v-2H4v-7z" }) }));
2891
+ .mui-badge-color-error {
2892
+ background: var(--kt-color-error);
2893
+ color: #fff;
1375
2894
  }
1376
2895
 
1377
- function ExpandMoreIcon(props) {
1378
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z" }) }));
2896
+ .mui-badge-color-warning {
2897
+ background: var(--kt-color-warning);
2898
+ color: #fff;
1379
2899
  }
1380
2900
 
1381
- function SaveIcon(props) {
1382
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z" }) }));
2901
+ .mui-badge-color-info {
2902
+ background: var(--kt-color-info);
2903
+ color: #fff;
1383
2904
  }
1384
2905
 
1385
- function UploadFileIcon(props) {
1386
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z" }) }));
2906
+ .mui-badge-color-success {
2907
+ background: var(--kt-color-success);
2908
+ color: #fff;
1387
2909
  }
1388
2910
 
1389
- function VideoFileIcon(props) {
1390
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6zm10-7v-1.5l2 1.5-2 1.5V13H8v-2h8z" }) }));
2911
+ `;const gr={vertical:"top",horizontal:"right"};function hr(r){const i=d(r.class??""),o=d(e(r.style)),t=i.toComputed(e=>"mui-badge-root "+e),a=d(r.badgeContent??""),n=d(r.max??99),l=d(r.showZero??!1),c=d(r.invisible??!1),m=d(r.color??"default"),b=d(r.variant??"standard"),x=d(r.overlap??"rectangular"),g=d(r.anchorOrigin??gr),h=p(()=>{if("dot"===b.value)return"";const e=a.value;return"number"==typeof e?e>n.value?`${n.value}+`:`${e}`:e??""},[a,n,b]),f=p(()=>{if(c.value)return!0;if("dot"===b.value)return!1;const e=a.value;return""===e||null==e||(0===e||"0"===e)&&!l.value},[c,b,a,l]),v=p(()=>{const e=g.value?.vertical??gr.vertical,r=g.value?.horizontal??gr.horizontal;return["mui-badge-badge",`mui-badge-${b.value}`,`mui-badge-color-${m.value}`,`mui-badge-overlap-${x.value}`,`mui-badge-anchor-${e}-${r}`,f.value?"mui-badge-invisible":""].join(" ")},[b,m,x,g,f]),k=s("span",{class:t,style:o,children:[u("span",{class:"mui-badge-content",children:r.children}),u("span",{class:v,"aria-hidden":f,children:h})]});return qe(k,r),k}Ve`
2912
+ .mui-popover-root {
2913
+ position: fixed;
2914
+ inset: 0;
2915
+ z-index: 1300;
2916
+ pointer-events: none;
2917
+ opacity: 0;
2918
+ visibility: hidden;
2919
+ transition:
2920
+ opacity 180ms cubic-bezier(0.4, 0, 0.2, 1),
2921
+ visibility 0ms linear 180ms;
1391
2922
  }
1392
2923
 
1393
- function QueuePlayNextIcon(props) {
1394
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h2v-2H3V5h18v8h2V5c0-1.11-.9-2-2-2zm-8 7V7h-2v3H8v2h3v3h2v-3h3v-2h-3zm11 8-4.5 4.5L18 21l3-3-3-3 1.5-1.5L24 18z" }) }));
2924
+ .mui-popover-rendered {
2925
+ visibility: visible;
1395
2926
  }
1396
2927
 
1397
- function MenuIcon(props) {
1398
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" }) }));
2928
+ .mui-popover-open {
2929
+ opacity: 1;
2930
+ visibility: visible;
2931
+ transition-delay: 0ms;
1399
2932
  }
1400
2933
 
1401
- function HomeIcon(props) {
1402
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" }) }));
2934
+ .mui-popover-paper {
2935
+ position: fixed;
2936
+ top: 0;
2937
+ left: 0;
2938
+ box-sizing: border-box;
2939
+ min-width: 16px;
2940
+ max-width: calc(100vw - 32px);
2941
+ max-height: calc(100vh - 32px);
2942
+ overflow: auto;
2943
+ background: #fff;
2944
+ border-radius: 4px;
2945
+ color: rgba(0, 0, 0, 0.87);
2946
+ pointer-events: auto;
2947
+ outline: 0;
2948
+ transform-origin: top left;
2949
+ opacity: 0;
2950
+ transform: translateY(8px) scale(0.98);
2951
+ transition:
2952
+ opacity 180ms cubic-bezier(0.4, 0, 0.2, 1),
2953
+ transform 180ms cubic-bezier(0.2, 0, 0, 1);
2954
+ padding: 8px 0;
1403
2955
  }
1404
2956
 
1405
- function ContentCopyIcon(props) {
1406
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z" }) }));
2957
+ .mui-popover-open .mui-popover-paper {
2958
+ opacity: 1;
2959
+ transform: translateY(0) scale(1);
1407
2960
  }
1408
2961
 
1409
- function SelectAllIcon(props) {
1410
- return (jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "1em", height: "1em", ...props, children: jsx("path", { d: "M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" }) }));
2962
+ @media (prefers-color-scheme: dark) {
2963
+ .mui-popover-paper {
2964
+ background: #1f1f1f;
2965
+ color: rgba(255, 255, 255, 0.9);
2966
+ }
1411
2967
  }
1412
2968
 
1413
- 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 };
2969
+ `;const fr={vertical:"top",horizontal:"left"},vr={vertical:"top",horizontal:"left"},kr=(e,r)=>"center"===r?e/2:"bottom"===r?e:0,wr=(e,r)=>"center"===r?e/2:"right"===r?e:0;function yr(i){const o=i["on:close"]??r,t=d(i.class??""),s=d(e(i.style));let m=0,b=0;const x=()=>{m&&(clearTimeout(m),m=0),b&&(clearTimeout(b),b=0)};let g=0;const h=()=>{v.value&&(g&&clearTimeout(g),g=window.setTimeout(()=>{L(),g=0},0))},f=e=>{if(x(),M.setAttribute("aria-hidden",String(!e)),e)return T.style.display="block",T.classList.add("mui-popover-rendered"),void(m=window.setTimeout(()=>{m=0,v.value&&T.classList.add("mui-popover-open")},0));T.classList.remove("mui-popover-open"),b=window.setTimeout(()=>{b=0,v.value||(T.style.display="none",T.classList.remove("mui-popover-rendered"))},180)},v=d(i.open??!1,e=>{f(e),e&&h()}),k=d(i.anchorEl??null,h),w=d(i.anchorOrigin??fr,h),y=d(i.transformOrigin??vr,h),z=d(i.marginThreshold??16,h),C=d(i.elevation??8),$=p(()=>["mui-popover-paper",t.value].join(" ").trim(),[t]),S=p(()=>{const e=s.value;return`${e}${e?";":""}box-shadow:${(e=>{const r=a(0,n(24,e));return 0===r?"none":`0 ${a(1,l(r/2))}px ${l(3+1.4*r)}px rgba(0, 0, 0, 0.2), 0 ${a(1,l(r/3))}px ${l(2+.9*r)}px rgba(0, 0, 0, 0.14), 0 ${a(1,l(r/5))}px ${l(2+.6*r)}px rgba(0, 0, 0, 0.12)`})(C.value)}`},[s,C]),L=()=>{if(!v.value)return;const e=M.getBoundingClientRect(),r=k.value,i=r?r.getBoundingClientRect():{width:0,height:0,top:window.innerHeight/2,left:window.innerWidth/2},o=w.value??fr,t=y.value??vr;let n=i.top+kr(i.height,o.vertical)-kr(e.height,t.vertical),s=i.left+wr(i.width,o.horizontal)-wr(e.width,t.horizontal);const u=a(0,z.value);n=c(n,u,window.innerHeight-e.height-u),s=c(s,u,window.innerWidth-e.width-u),M.style.top=`${l(n)}px`,M.style.left=`${l(s)}px`},A=e=>{v.value&&(v.value=!1,o(e))},E=e=>{if(!v.value)return;const r=e.target;r&&(M.contains(r)||k.value?.contains(r)||A("backdropClick"))},I=e=>{"Escape"===e.key&&A("escapeKeyDown")},M=u("div",{class:$,style:S,role:"dialog","aria-hidden":!v.value,children:i.children}),T=u("div",{class:"mui-popover-root "+(v.value?"mui-popover-open mui-popover-rendered":""),style:v.value?"display: block;":"display: none;",children:M});document.addEventListener("mousedown",E),document.addEventListener("keydown",I),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0),f(v.value),v.value&&h();const j=T.remove;return T.remove=()=>(x(),g&&clearTimeout(g),document.removeEventListener("mousedown",E),document.removeEventListener("keydown",I),window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0),j.call(T)),qe(T,i,["on:close"]),T}export{_e as Alert,hr as Badge,Ye as Button,pr as Card,Qe as Checkbox,er as CheckboxGroup,rr as Dialog,Xe as DropdownButton,ir as FormLabel,or as LinearProgress,xr as Pill,yr as Popover,cr as Radio,sr as RadioGroup,dr as Select,mr as Switch,tr as TextField};
2970
+ //# sourceMappingURL=index.mjs.map