@ktjs/mui 0.20.2 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,1199 +1,2970 @@
1
- // Cached native methods for performance optimization
2
- const $isArray = Array.isArray;
3
- const $isThenable = (o) => typeof o === 'object' && o !== null && typeof o.then === 'function';
4
-
5
- // Error handling utilities
6
- const $throw = (message) => {
7
- throw new Error('@ktjs/shared: ' + message);
8
- };
9
-
10
- // DOM manipulation utilities
11
- // # dom natives
12
- /**
13
- * & Remove `bind` because it is shockingly slower than wrapper
14
- * & `window.document` is safe because it is not configurable and its setter is undefined
15
- */
16
- const $appendChild = HTMLElement.prototype.appendChild;
17
- const originAppend = HTMLElement.prototype.append;
18
- const $append = // for ie 9/10/11
19
- typeof originAppend === 'function'
20
- ? originAppend
21
- : function (...nodes) {
22
- if (nodes.length < 50) {
23
- for (let i = 0; i < nodes.length; i++) {
24
- const node = nodes[i];
25
- if (typeof node === 'string') {
26
- $appendChild.call(this, document.createTextNode(node));
27
- }
28
- else {
29
- $appendChild.call(this, node);
30
- }
31
- }
32
- }
33
- else {
34
- const fragment = document.createDocumentFragment();
35
- for (let i = 0; i < nodes.length; i++) {
36
- const node = nodes[i];
37
- if (typeof node === 'string') {
38
- $appendChild.call(fragment, document.createTextNode(node));
39
- }
40
- else {
41
- $appendChild.call(fragment, node);
42
- }
43
- }
44
- $appendChild.call(this, fragment);
45
- }
46
- };
47
- const { get: $buttonDisabledGetter$2, set: $buttonDisabledSetter$2 } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
48
-
49
- // Shared utilities and cached native methods for kt.js framework
50
- // Re-export all utilities
51
- Object.defineProperty(window, '@ktjs/shared', { value: '0.20.0' });
52
-
53
- const booleanHandler = (element, key, value) => {
54
- if (key in element) {
55
- element[key] = !!value;
56
- }
57
- else {
58
- element.setAttribute(key, value);
59
- }
60
- };
61
- const valueHandler = (element, key, value) => {
62
- if (key in element) {
63
- element[key] = value;
64
- }
65
- else {
66
- element.setAttribute(key, value);
67
- }
68
- };
69
- // Attribute handlers map for optimized lookup
70
- const handlers = {
71
- checked: booleanHandler,
72
- selected: booleanHandler,
73
- value: valueHandler,
74
- valueAsDate: valueHandler,
75
- valueAsNumber: valueHandler,
76
- defaultValue: valueHandler,
77
- defaultChecked: booleanHandler,
78
- defaultSelected: booleanHandler,
79
- disabled: booleanHandler,
80
- readOnly: booleanHandler,
81
- multiple: booleanHandler,
82
- required: booleanHandler,
83
- autofocus: booleanHandler,
84
- open: booleanHandler,
85
- controls: booleanHandler,
86
- autoplay: booleanHandler,
87
- loop: booleanHandler,
88
- muted: booleanHandler,
89
- defer: booleanHandler,
90
- async: booleanHandler,
91
- hidden: (element, _key, value) => (element.hidden = !!value),
92
- };
93
-
94
- const defaultHandler = (element, key, value) => element.setAttribute(key, value);
95
- function attrIsObject(element, attr) {
96
- const classValue = attr.class || attr.className;
97
- if (classValue !== undefined) {
98
- element.setAttribute('class', classValue);
99
- }
100
- const style = attr.style;
101
- if (style) {
102
- if (typeof style === 'string') {
103
- element.setAttribute('style', style);
104
- }
105
- else if (typeof style === 'object') {
106
- for (const key in style) {
107
- element.style[key] = style[key];
108
- }
109
- }
110
- }
111
- for (const key in attr) {
112
- if (key === 'class' ||
113
- key === 'className' ||
114
- key === 'style' ||
115
- key === 'children' ||
116
- key === 'k-if' ||
117
- key === 'ref') {
118
- continue;
119
- }
120
- const o = attr[key];
121
- // normal event handler
122
- if (key.startsWith('on:')) {
123
- element.addEventListener(key.slice(3), o); // chop off the `on:`
124
- }
125
- // normal attributes
126
- else {
127
- (handlers[key] || defaultHandler)(element, key, o);
128
- }
129
- }
130
- }
131
- function applyAttr(element, attr) {
132
- if (!attr) {
133
- return;
134
- }
135
- if (typeof attr === 'object' && attr !== null) {
136
- attrIsObject(element, attr);
137
- }
138
- else {
139
- throw new Error('kt.js: attr must be an object.');
140
- }
141
- }
142
-
143
- function apdSingle(element, c) {
144
- // & JSX should ignore false, undefined, and null
145
- if (c === false || c === undefined || c === null) {
146
- return;
147
- }
148
- if (typeof c === 'object' && c !== null && 'isKT' in c) {
149
- $append.call(element, c.value);
150
- }
151
- else {
152
- $append.call(element, c);
153
- // Handle KTFor anchor
154
- const list = c.__kt_for_list__;
155
- if ($isArray(list)) {
156
- apd(element, list);
157
- }
158
- }
159
- }
160
- function apd(element, c) {
161
- if ($isThenable(c)) {
162
- c.then((r) => apd(element, r));
163
- }
164
- else if ($isArray(c)) {
165
- for (let i = 0; i < c.length; i++) {
166
- // & might be thenable here too
167
- const ci = c[i];
168
- if ($isThenable(ci)) {
169
- const comment = document.createComment('ktjs-promise-placeholder');
170
- $append.call(element, comment);
171
- ci.then((awaited) => comment.replaceWith(awaited));
172
- }
173
- else {
174
- apdSingle(element, ci);
175
- }
176
- }
177
- }
178
- else {
179
- // & here is thened, so must be a simple elementj
180
- apdSingle(element, c);
181
- }
182
- }
183
- function applyContent(element, content) {
184
- if ($isArray(content)) {
185
- for (let i = 0; i < content.length; i++) {
186
- apd(element, content[i]);
187
- }
188
- }
189
- else {
190
- apd(element, content);
191
- }
192
- }
193
-
194
- document.createElement('div');
195
- const htmlCreator = (tag) => document.createElement(tag);
196
- const svgCreator = (tag) => document.createElementNS('http://www.w3.org/2000/svg', tag);
197
- const mathMLCreator = (tag) => document.createElementNS('http://www.w3.org/1998/Math/MathML', tag);
198
- let creator = htmlCreator;
199
- // # consts
200
- const SVG_ATTR_FLAG = '__kt_svg__';
201
- const MATHML_ATTR_FLAG = '__kt_mathml__';
202
- /**
203
- * Create an enhanced HTMLElement.
204
- * - Only supports HTMLElements, **NOT** SVGElements or other Elements.
205
- * @param tag tag of an `HTMLElement`
206
- * @param attr attribute object or className
207
- * @param content a string or an array of HTMLEnhancedElement as child nodes
208
- *
209
- * ## About
210
- * @package @ktjs/core
211
- * @author Kasukabe Tsumugi <futami16237@gmail.com>
212
- * @version 0.20.3 (Last Update: 2026.02.01 18:38:02.198)
213
- * @license MIT
214
- * @link https://github.com/baendlorel/kt.js
215
- * @link https://baendlorel.github.io/ Welcome to my site!
216
- * @description Core functionality for kt.js - DOM manipulation utilities with JSX/TSX support
217
- * @copyright Copyright (c) 2026 Kasukabe Tsumugi. All rights reserved.
218
- */
219
- const h = (tag, attr, content) => {
220
- if (typeof tag !== 'string') {
221
- $throw('tagName must be a string.');
222
- }
223
- if (attr) {
224
- if (SVG_ATTR_FLAG in attr) {
225
- delete attr[SVG_ATTR_FLAG];
226
- creator = svgCreator;
227
- }
228
- else if (MATHML_ATTR_FLAG in attr) {
229
- delete attr[MATHML_ATTR_FLAG];
230
- creator = mathMLCreator;
231
- }
232
- else {
233
- creator = htmlCreator;
234
- }
235
- }
236
- // * start creating the element
237
- const element = creator(tag);
238
- // * Handle content
239
- applyAttr(element, attr);
240
- applyContent(element, content);
241
- // if (tag === 'svg') {
242
- // tempWrapper.innerHTML = element.outerHTML;
243
- // return tempWrapper.firstChild as HTML<T>;
244
- // }
245
- // if (tag === 'math') {
246
- // tempWrapper.innerHTML = element.outerHTML;
247
- // return tempWrapper.firstChild as HTML<T>;
248
- // }
249
- return element;
250
- };
251
-
252
- const dummyRef = { value: null };
253
- /**
254
- * @param tag html tag or function component
255
- * @param props properties/attributes
256
- */
257
- function jsx(tag, props) {
258
- const ref = props.ref?.isKT ? props.ref : dummyRef;
259
- let el;
260
- if ('k-if' in props && !props['k-if']) {
261
- // & make comment placeholder in case that ref might be redrawn later
262
- el = document.createComment('k-if');
263
- ref.value = el;
264
- return el;
265
- }
266
- // Handle function components
267
- if (typeof tag === 'function') {
268
- el = tag(props);
269
- }
270
- else {
271
- el = h(tag, props, props.children);
272
- }
273
- ref.value = el;
274
- return el;
275
- }
276
- /**
277
- * JSX runtime for React 17+ automatic runtime
278
- * This is called when using jsx: "react-jsx" or "react-jsxdev"
279
- */
280
- const jsxs = jsx;
281
-
282
- // Cached native methods for performance optimization
283
- const $defines = Object.defineProperties;
284
-
285
- // String manipulation utilities
286
- /**
287
- * Default empty function
288
- */
289
- const $emptyFn = (() => true);
290
- const { get: $buttonDisabledGetter$1, set: $buttonDisabledSetter$1 } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
291
- // # DOM utilities
292
- const parseStyle = (style) => {
293
- if (typeof style === 'string') {
294
- return style;
295
- }
296
- if (style && typeof style === 'object') {
297
- return Object.entries(style)
298
- .map(([key, value]) => {
299
- // Convert camelCase to kebab-case
300
- const cssKey = key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
301
- return `${cssKey}: ${value}`;
302
- })
303
- .join('; ');
304
- }
305
- return '';
306
- };
307
- const generateHandler = (props, key) => {
308
- const handler = props[key];
309
- if (typeof handler === 'function') {
310
- return handler;
311
- }
312
- else if (handler && typeof handler === 'object' && handler.isKT) {
313
- return (value) => (handler.value = value);
314
- }
315
- return $emptyFn;
316
- };
317
-
318
- // Shared utilities and cached native methods for kt.js framework
319
- // Re-export all utilities
320
- Object.defineProperty(window, '@ktjs/shared', { value: '0.20.0' });
321
-
322
- function Alert(props) {
323
- const { children, severity = 'info', variant = 'standard', icon, 'kt:close': onClose } = props;
324
- const classes = `mui-alert mui-alert-${severity} mui-alert-${variant} ${props.class ? props.class : ''}`;
325
- // Icon SVG paths for different severities
326
- const getIcon = () => {
327
- if (icon === false) {
328
- return null;
329
- }
330
- if (icon) {
331
- return icon;
332
- }
333
- const iconSize = '22px';
334
- const iconClass = 'mui-alert-icon';
335
- switch (severity) {
336
- case 'success':
337
- 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" }) }));
338
- case 'error':
339
- 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" }) }));
340
- case 'warning':
341
- 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" }) }));
342
- case 'info':
343
- default:
344
- 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" }) }));
345
- }
346
- };
347
- const alertIcon = getIcon();
348
- 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" }) }) })] }));
349
- return alert;
350
- }
351
-
352
- /**
353
- * Button component - mimics MUI Button appearance and behavior
354
- */
355
- function Button(props) {
356
- let { children, variant = 'text', color = 'primary', size = 'medium', disabled = false, fullWidth = false, iconOnly = false, startIcon, endIcon, type = 'button', 'on:click': onClick = $emptyFn, } = props;
357
- const classes = [
358
- 'mui-button',
359
- `mui-button-${variant}`,
360
- `mui-button-${variant}-${color}`,
361
- `mui-button-size-${size}`,
362
- fullWidth ? 'mui-button-fullwidth' : '',
363
- iconOnly ? 'mui-button-icon-only' : '',
364
- disabled ? 'mui-button-disabled' : '',
365
- props.class ? props.class : '',
366
- ].join(' ');
367
- const rippleContainer = jsx("span", { class: "mui-button-ripple" });
368
- const handleClick = (e) => {
369
- if (disabled) {
370
- e.preventDefault();
371
- return;
372
- }
373
- // Create ripple effect
374
- const button = e.currentTarget;
375
- if (rippleContainer) {
376
- const rect = button.getBoundingClientRect();
377
- const size = Math.max(rect.width, rect.height);
378
- const x = e.clientX - rect.left - size / 2;
379
- const y = e.clientY - rect.top - size / 2;
380
- const ripple = document.createElement('span');
381
- ripple.style.width = ripple.style.height = `${size}px`;
382
- ripple.style.left = `${x}px`;
383
- ripple.style.top = `${y}px`;
384
- ripple.classList.add('mui-button-ripple-effect');
385
- rippleContainer.appendChild(ripple);
386
- // Remove ripple after animation
387
- setTimeout(() => ripple.remove(), 600);
388
- }
389
- onClick(e);
390
- };
391
- const container = (jsxs("button", { class: classes, style: parseStyle(props.style), type: type, disabled: disabled, "on:click": handleClick, children: [startIcon && jsx("span", { class: "mui-button-start-icon", children: startIcon }), jsx("span", { class: "mui-button-label", children: children }), endIcon && jsx("span", { class: "mui-button-end-icon", children: endIcon }), rippleContainer] }));
392
- $defines(container, {
393
- disabled: {
394
- get: $buttonDisabledGetter$1,
395
- set: function (value) {
396
- $buttonDisabledSetter$1.call(this, value);
397
- this.classList.toggle('mui-button-disabled', value);
398
- },
399
- },
400
- });
401
- return container;
402
- }
403
-
404
- /**
405
- * Checkbox component - mimics MUI Checkbox appearance and behavior
406
- */
407
- function Checkbox(props) {
408
- const toggleIcon = (checked, indeterminate) => {
409
- if (indeterminate) {
410
- uncheckedIcon.style.display = 'none';
411
- checkedIcon.style.display = 'none';
412
- indeterminateIcon.style.display = '';
413
- }
414
- else {
415
- uncheckedIcon.style.display = checked ? 'none' : '';
416
- checkedIcon.style.display = checked ? '' : 'none';
417
- indeterminateIcon.style.display = 'none';
418
- }
419
- };
420
- // Handle change
421
- const handleChange = () => {
422
- if (disabled) {
423
- return;
424
- }
425
- checked = inputEl.checked;
426
- indeterminate = false;
427
- toggleIcon(checked, indeterminate);
428
- onChange(checked, value);
429
- };
430
- let { checked = false, value = '', label = '', size = 'medium', disabled = false, color = 'primary', indeterminate = false, } = props;
431
- const onChange = generateHandler(props, 'kt:change');
432
- const inputEl = (jsx("input", { type: "checkbox", class: "mui-checkbox-input", checked: checked, value: value, disabled: disabled, "on:change": handleChange }));
433
- // Unchecked icon
434
- const uncheckedIcon = (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" }) }) }));
435
- // Checked icon
436
- const checkedIcon = (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" }) }) }));
437
- // Indeterminate icon
438
- const indeterminateIcon = (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" }) }) }));
439
- // Initialize icon state
440
- toggleIcon(checked, indeterminate);
441
- const container = (jsxs("label", { class: `mui-checkbox-wrapper mui-checkbox-size-${size} ${disabled ? 'mui-checkbox-disabled' : ''} mui-checkbox-color-${color}`, children: [inputEl, jsxs("span", { class: "mui-checkbox-icon", children: [uncheckedIcon, checkedIcon, indeterminateIcon] }), jsx("span", { "k-if": label, class: "mui-checkbox-label", children: label })] }));
442
- $defines(container, {
443
- checked: {
444
- get() {
445
- return checked;
446
- },
447
- set(newChecked) {
448
- checked = newChecked;
449
- indeterminate = false;
450
- inputEl.checked = checked;
451
- toggleIcon(checked, indeterminate);
452
- },
453
- },
454
- value: {
455
- get() {
456
- return value;
457
- },
458
- set(newValue) {
459
- value = newValue;
460
- inputEl.value = value;
461
- },
462
- },
463
- disabled: {
464
- get() {
465
- return disabled;
466
- },
467
- set(newDisabled) {
468
- disabled = Boolean(newDisabled);
469
- inputEl.disabled = disabled;
470
- container.classList.toggle('mui-checkbox-disabled', disabled);
471
- },
472
- },
473
- });
474
- return container;
475
- }
476
- /**
477
- * CheckboxGroup component - groups multiple checkboxes together
478
- */
479
- function CheckboxGroup(props) {
480
- let { value = [], size = 'medium', row = false } = props;
481
- const onChange = generateHandler(props, 'kt:change');
482
- let selectedValues = new Set(value);
483
- const changeHandler = (checked, checkboxValue) => {
484
- if (checked) {
485
- selectedValues.add(checkboxValue);
486
- }
487
- else {
488
- selectedValues.delete(checkboxValue);
489
- }
490
- onChange(Array.from(selectedValues));
491
- };
492
- const checkboxes = props.options.map((o) => {
493
- o.size = size;
494
- o.checked = selectedValues.has(o.value);
495
- const originalChange = generateHandler(o, 'kt:change');
496
- if (originalChange) {
497
- o['kt:change'] = (checked, value) => {
498
- originalChange(checked, value);
499
- changeHandler(checked, value);
500
- };
501
- }
502
- else {
503
- o['kt:change'] = changeHandler;
504
- }
505
- return Checkbox(o);
506
- });
507
- const container = (jsx("div", { class: `mui-checkbox-group ${row ? 'mui-checkbox-group-row' : ''} ${props.class ? props.class : ''}`, style: props.style ? props.style : '', role: "group", children: checkboxes }));
508
- $defines(container, {
509
- value: {
510
- get() {
511
- return Array.from(selectedValues);
512
- },
513
- set(newValues) {
514
- selectedValues = new Set(newValues);
515
- for (let i = 0; i < checkboxes.length; i++) {
516
- const checkbox = checkboxes[i];
517
- checkbox.checked = selectedValues.has(checkbox.value);
518
- }
519
- },
520
- },
521
- disabled: {
522
- get() {
523
- return checkboxes.map((cb) => cb.disabled);
524
- },
525
- set(newDisabled) {
526
- for (let i = 0; i < checkboxes.length; i++) {
527
- const checkbox = checkboxes[i];
528
- checkbox.disabled = Boolean(newDisabled);
529
- }
530
- },
531
- },
532
- disableAll: {
533
- value: () => {
534
- for (let i = 0; i < checkboxes.length; i++) {
535
- checkboxes[i].disabled = true;
536
- }
537
- },
538
- },
539
- enableAll: {
540
- value: () => {
541
- for (let i = 0; i < checkboxes.length; i++) {
542
- checkboxes[i].disabled = false;
543
- }
544
- },
545
- },
546
- });
547
- return container;
548
- }
549
-
550
- /**
551
- * Dialog component - mimics MUI Dialog appearance and behavior
552
- * Only handles open/close state, title and content are passed as props
553
- */
554
- function Dialog(props) {
555
- let { open = false, 'kt:close': onClose = $emptyFn, title, children, actions, maxWidth = 'sm', fullWidth = false, } = props;
556
- // Handle ESC key - store handler for cleanup
557
- const keyDownHandler = (e) => {
558
- if (e.key === 'Escape') {
559
- open = false;
560
- onClose();
561
- }
562
- };
563
- const handleBackdropClick = (e) => {
564
- if (e.target === container) {
565
- onClose();
566
- }
567
- };
568
- // Backdrop element
569
- const container = (jsx("div", { class: `kt-dialog-backdrop ${open ? 'kt-dialog-backdrop-open' : ''}`, "on:click": handleBackdropClick, style: { display: open ? 'flex' : 'none' }, children: jsxs("div", { class: `kt-dialog-paper ${maxWidth ? `kt-dialog-maxWidth-${maxWidth}` : ''} ${fullWidth ? 'kt-dialog-fullWidth' : ''}`, "on:click": (e) => e.stopPropagation(), children: [jsx("div", { "k-if": title, class: "kt-dialog-title", children: jsx("h2", { children: title }) }), jsx("div", { "k-if": children, class: "kt-dialog-content", children: children }), jsx("div", { "k-if": actions, class: "kt-dialog-actions", children: actions })] }) }));
570
- document.addEventListener('keydown', keyDownHandler);
571
- // Store cleanup function
572
- const originalRemove = container.remove;
573
- container.remove = () => {
574
- if (keyDownHandler) {
575
- document.removeEventListener('keydown', keyDownHandler);
576
- }
577
- return originalRemove.call(container);
578
- };
579
- $defines(container, {
580
- open: {
581
- get: () => open,
582
- set: (isOpen) => {
583
- if (isOpen === open) {
584
- return;
585
- }
586
- open = isOpen;
587
- if (isOpen) {
588
- // Opening: set display first, then add class with double RAF for animation
589
- container.style.display = 'flex';
590
- setTimeout(() => container.classList.add('kt-dialog-backdrop-open'), 50);
591
- }
592
- else {
593
- container.classList.remove('kt-dialog-backdrop-open');
594
- setTimeout(() => {
595
- if (!open) {
596
- container.style.display = 'none';
597
- }
598
- }, 225);
599
- }
600
- },
601
- },
602
- });
603
- return container;
604
- }
605
-
606
- /**
607
- * FormLabel component - mimics MUI FormLabel appearance and behavior
608
- */
609
- function FormLabel(props) {
610
- const { children, required = false, error = false, disabled = false, focused = false, filled = false, component = 'label', htmlFor, } = props;
611
- const classes = [
612
- 'mui-form-label',
613
- error && 'mui-form-label-error',
614
- disabled && 'mui-form-label-disabled',
615
- focused && 'mui-form-label-focused',
616
- filled && 'mui-form-label-filled',
617
- ]
618
- .filter(Boolean)
619
- .join(' ');
620
- const labelProps = {
621
- class: classes,
622
- };
623
- if (htmlFor) {
624
- labelProps.for = htmlFor;
625
- }
626
- 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: " *" })] }));
627
- return element;
628
- }
629
-
630
- // Cached native methods for performance optimization
631
- const { get: $buttonDisabledGetter, set: $buttonDisabledSetter } = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'disabled');
632
-
633
- // Shared utilities and cached native methods for kt.js framework
634
- // Re-export all utilities
635
- Object.defineProperty(window, '@ktjs/shared', { value: '0.20.0' });
636
-
637
- document.createElement('div');
638
-
639
- class KTRef {
640
- /**
641
- * Indicates that this is a KTRef instance
642
- */
643
- isKT = true;
644
- /**
645
- * @internal
646
- */
647
- _value;
648
- /**
649
- * @internal
650
- */
651
- _onChanges;
652
- constructor(_value, _onChanges) {
653
- this._value = _value;
654
- this._onChanges = _onChanges;
655
- }
656
- /**
657
- * If new value and old value are both nodes, the old one will be replaced in the DOM
658
- */
659
- get value() {
660
- return this._value;
661
- }
662
- set value(newValue) {
663
- if (newValue === this._value) {
664
- return;
665
- }
666
- // replace the old node with the new one in the DOM if both are nodes
667
- if (this._value instanceof Node && newValue instanceof Node) {
668
- if (newValue.contains(this._value)) {
669
- this._value.remove();
670
- }
671
- this._value.replaceWith(newValue);
672
- }
673
- const oldValue = this._value;
674
- this._value = newValue;
675
- for (let i = 0; i < this._onChanges.length; i++) {
676
- this._onChanges[i](newValue, oldValue);
677
- }
678
- }
679
- addOnChange(callback) {
680
- this._onChanges.push(callback);
681
- }
682
- removeOnChange(callback) {
683
- for (let i = this._onChanges.length - 1; i >= 0; i--) {
684
- if (this._onChanges[i] === callback) {
685
- this._onChanges.splice(i, 1);
686
- return true;
687
- }
688
- }
689
- return false;
690
- }
691
- }
692
- /**
693
- * Reference to the created HTML element.
694
- * - can alse be used to store normal values, but it is not reactive.
695
- * @param value mostly an HTMLElement
696
- */
697
- function ref(value, onChange) {
698
- return new KTRef(value, []);
699
- }
700
- /**
701
- * A helper to create redrawable elements
702
- * ```tsx
703
- * export function MyComponent() {
704
- * let aa = 10;
705
- * // ...
706
- * // aa might be changed
707
- * return createRedrawable(() => <div>{aa}</div>);
708
- * }
709
- * ```
710
- * Then the returned element has a `redraw` method to redraw itself with new values.
711
- * @param creator a simple creator function that returns an element
712
- * @returns created element's ref
713
- */
714
- function createRedrawable(creator) {
715
- const elRef = ref();
716
- const redraw = () => {
717
- elRef.value = creator(); // ref setter automatically calls replaceWith
718
- elRef.redraw = redraw;
719
- return elRef.value;
720
- };
721
- redraw();
722
- return elRef;
723
- }
724
-
725
- /**
726
- * LinearProgress component - mimics MUI LinearProgress appearance and behavior
727
- */
728
- function LinearProgress(props) {
729
- let { variant = 'indeterminate', progress: value = 0, color = 'primary' } = props;
730
- const classes = [
731
- 'mui-linear-progress',
732
- `mui-linear-progress-${color}`,
733
- `mui-linear-progress-${variant}`,
734
- props.class ? props.class : '',
735
- ].join(' ');
736
- const styleString = parseStyle(props.style);
737
- // Calculate progress percentage
738
- let progressValue = Math.min(Math.max(value, 0), 100);
739
- const barRef = ref();
740
- const container = (jsx("div", { class: classes, style: styleString, role: "progressbar", "aria-valuenow": progressValue, children: jsx("div", { ref: barRef, class: "mui-linear-progress-bar", style: variant === 'determinate' ? `width: ${progressValue}%` : '' }) }));
741
- $defines(container, {
742
- progress: {
743
- get() {
744
- return progressValue;
745
- },
746
- set(newValue) {
747
- progressValue = Math.min(Math.max(newValue, 0), 100);
748
- if (variant === 'determinate') {
749
- barRef.value.style.width = `${progressValue}%`;
750
- }
751
- },
752
- },
753
- });
754
- return container;
755
- }
756
-
757
- /**
758
- * TextField component - mimics MUI TextField appearance and behavior
759
- */
760
- function TextField(props) {
761
- let { label = '', placeholder = '', value = '', type = 'text', disabled = false, readonly = false, required = false, error = false, helperText = '', fullWidth = false, multiline = false, rows = 3, size = 'medium', } = props;
762
- const onInput = generateHandler(props, 'kt:input');
763
- const onInputTrim = generateHandler(props, 'kt-trim:input');
764
- const onChange = generateHandler(props, 'kt:change');
765
- const onChangeTrim = generateHandler(props, 'kt-trim:change');
766
- const onBlur = generateHandler(props, 'kt:blur');
767
- const onFocus = generateHandler(props, 'kt:focus');
768
- const updateContainerClass = () => {
769
- container.className = [
770
- 'mui-textfield-root',
771
- `mui-textfield-size-${size}`,
772
- isFocused ? 'mui-textfield-focused' : '',
773
- error ? 'mui-textfield-error' : '',
774
- disabled ? 'mui-textfield-disabled' : '',
775
- fullWidth ? 'mui-textfield-fullwidth' : '',
776
- label && inputEl.value ? 'mui-textfield-has-value' : '',
777
- label ? '' : 'mui-textfield-no-label',
778
- ].join(' ');
779
- };
780
- const handleInput = () => {
781
- updateContainerClass();
782
- if (type === 'number') {
783
- const v = Number(inputEl.value);
784
- onInput(v);
785
- onInputTrim(v);
786
- }
787
- else {
788
- onInput(inputEl.value);
789
- onInputTrim(inputEl.value.trim());
790
- }
791
- };
792
- const handleChange = () => {
793
- updateContainerClass();
794
- if (type === 'number') {
795
- const v = Number(inputEl.value);
796
- onChange(v);
797
- onChangeTrim(v);
798
- }
799
- else {
800
- onChange(inputEl.value);
801
- onChangeTrim(inputEl.value.trim());
802
- }
803
- };
804
- const handleFocus = () => {
805
- isFocused = true;
806
- updateContainerClass();
807
- onFocus(inputEl.value);
808
- };
809
- const handleBlur = () => {
810
- isFocused = false;
811
- updateContainerClass();
812
- onBlur(inputEl.value);
813
- };
814
- const handleWrapperMouseDown = (e) => {
815
- if (disabled) {
816
- return;
817
- }
818
- const target = e.target;
819
- if (!target || target === inputEl) {
820
- return;
821
- }
822
- setTimeout(() => inputEl.focus(), 0);
823
- };
824
- const getPlaceholder = () => (label && !isFocused && !value ? '' : placeholder);
825
- let isFocused = false;
826
- const inputEl = multiline
827
- ? (jsx("textarea", { class: "mui-textfield-input", placeholder: getPlaceholder(), value: value, disabled: disabled, readOnly: readonly, required: required, rows: rows, "on:input": handleInput, "on:change": handleChange, "on:focus": handleFocus, "on:blur": handleBlur }))
828
- : (jsx("input", { type: type, class: "mui-textfield-input", placeholder: getPlaceholder(), value: value, disabled: disabled, readOnly: readonly, required: required, "on:input": handleInput, "on:change": handleChange, "on:focus": handleFocus, "on:blur": handleBlur }));
829
- const helperTextEl = jsx("p", { class: "mui-textfield-helper-text", children: helperText });
830
- const wrapperRef = createRedrawable(() => (jsxs("div", { class: "mui-textfield-wrapper", "on:mousedown": handleWrapperMouseDown, children: [jsxs("label", { "k-if": label, class: "mui-textfield-label", children: [label, required && jsx("span", { class: "mui-textfield-required", children: "*" })] }), jsx("div", { class: "mui-textfield-input-wrapper", children: inputEl }), jsx("fieldset", { class: "mui-textfield-fieldset", children: jsx("legend", { "k-if": label, class: "mui-textfield-legend", children: jsxs("span", { children: [label, required && '*'] }) }) })] })));
831
- const container = (jsxs("div", { class: 'mui-textfield-root ' + (props.class ? props.class : ''), style: parseStyle(props.style), children: [wrapperRef, helperTextEl] }));
832
- // Initialize classes
833
- setTimeout(() => updateContainerClass(), 0);
834
- $defines(container, {
835
- value: {
836
- get() {
837
- return inputEl.value;
838
- },
839
- set(newValue) {
840
- inputEl.value = newValue;
841
- updateContainerClass();
842
- },
843
- },
844
- label: {
845
- get() {
846
- return label;
847
- },
848
- set(newLabel) {
849
- label = newLabel;
850
- wrapperRef.redraw(); // label takes too much and should be redrawn
851
- updateContainerClass();
852
- },
853
- },
854
- placeholder: {
855
- get() {
856
- return placeholder;
857
- },
858
- set(newPlaceholder) {
859
- placeholder = newPlaceholder;
860
- inputEl.placeholder = getPlaceholder();
861
- },
862
- },
863
- type: {
864
- get() {
865
- return type;
866
- },
867
- set(newType) {
868
- type = newType || 'text';
869
- inputEl.type = type;
870
- },
871
- },
872
- disabled: {
873
- get() {
874
- return disabled;
875
- },
876
- set(val) {
877
- disabled = !!val;
878
- inputEl.disabled = disabled;
879
- container.classList.toggle('mui-textfield-disabled', disabled);
880
- },
881
- },
882
- readonly: {
883
- get() {
884
- return readonly;
885
- },
886
- set(val) {
887
- readonly = Boolean(val);
888
- inputEl.readOnly = readonly;
889
- },
890
- },
891
- error: {
892
- get() {
893
- return error;
894
- },
895
- set(val) {
896
- error = Boolean(val);
897
- container.classList.toggle('mui-textfield-error', error);
898
- },
899
- },
900
- helperText: {
901
- get() {
902
- return helperText;
903
- },
904
- set(text) {
905
- helperTextEl.textContent = text;
906
- helperTextEl.style.display = text ? 'block' : 'none';
907
- },
908
- },
909
- });
910
- return container;
911
- }
912
-
913
- /**
914
- * Radio component - mimics MUI Radio appearance and behavior
915
- */
916
- function Radio(props) {
917
- const onChange = generateHandler(props, 'kt:change');
918
- const toggleIcon = (checked) => {
919
- uncheckedIcon.style.display = checked ? 'none' : '';
920
- checkedIcon.style.display = checked ? '' : 'none';
921
- };
922
- // Handle change
923
- const handleChange = () => {
924
- if (disabled) {
925
- return;
926
- }
927
- checked = input.checked;
928
- toggleIcon(checked);
929
- onChange(checked, value);
930
- };
931
- let { checked = false, value = '', label: text = '', size = 'small', disabled = false, color = 'primary' } = props;
932
- const input = (jsx("input", { type: "radio", class: "mui-radio-input", checked: checked, value: value, disabled: disabled, "on:change": handleChange }));
933
- 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" }) }) }));
934
- 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" }) }) }));
935
- // initialize icon state
936
- toggleIcon(checked);
937
- 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 })] }));
938
- $defines(container, {
939
- value: {
940
- get() {
941
- return value;
942
- },
943
- },
944
- checked: {
945
- get() {
946
- return checked;
947
- },
948
- set(newChecked) {
949
- checked = newChecked;
950
- input.checked = checked;
951
- toggleIcon(checked);
952
- },
953
- },
954
- });
955
- return container;
956
- }
957
- /**
958
- * RadioGroup component - groups multiple radios together
959
- */
960
- function RadioGroup(props) {
961
- let { value = '', size = 'small', row = false } = props;
962
- const onChange = generateHandler(props, 'kt:change');
963
- const changeHandler = (checked, value) => {
964
- if (checked) {
965
- onChange(value);
966
- }
967
- radios.forEach((radio) => (radio.checked = radio.value === value));
968
- };
969
- const radios = props.options.map((o) => {
970
- o.size = size;
971
- o.checked = value === o.value;
972
- const originalChange = o['kt:change'];
973
- if (originalChange) {
974
- o['kt:change'] = (checked, newValue) => {
975
- originalChange(checked, newValue);
976
- changeHandler(checked, newValue);
977
- };
978
- }
979
- else {
980
- o['kt:change'] = changeHandler;
981
- }
982
- return Radio(o);
983
- });
984
- const container = (jsx("div", { class: `mui-radio-group ${row ? 'mui-radio-group-row' : ''} ${props.class ?? ''}`, style: parseStyle(props.style), role: "radiogroup", children: radios }));
985
- $defines(container, {
986
- value: {
987
- get() {
988
- return value;
989
- },
990
- set(newValue) {
991
- value = newValue;
992
- radios.forEach((radio) => (radio.checked = radio.value === value));
993
- },
994
- },
995
- });
996
- return container;
997
- }
998
-
999
- /**
1000
- * Select component - mimics MUI Select appearance and behavior
1001
- */
1002
- function Select(props) {
1003
- let { value = '', options = [], label = '', placeholder = '', size = 'medium', fullWidth = false, disabled = false, } = props;
1004
- const onChange = generateHandler(props, 'kt:change');
1005
- let isOpen = false;
1006
- let isFocused = false;
1007
- const selectRef = ref();
1008
- const selectLabelRef = ref();
1009
- // Toggle dropdown
1010
- const toggleMenu = () => {
1011
- if (disabled) {
1012
- return;
1013
- }
1014
- isOpen = !isOpen;
1015
- updateMenu();
1016
- };
1017
- // Update menu visibility
1018
- const updateMenu = () => {
1019
- if (isOpen) {
1020
- menu.value.style.display = 'block';
1021
- void menu.value.offsetHeight; // & Trigger reflow to enable animation
1022
- }
1023
- else {
1024
- // Hide after animation completes
1025
- setTimeout(() => {
1026
- if (!isOpen) {
1027
- menu.value.style.display = 'none';
1028
- }
1029
- }, 200);
1030
- }
1031
- menu.value.classList.toggle('mui-select-menu-open', isOpen);
1032
- selectRef.value.classList.toggle('mui-select-open', isOpen);
1033
- };
1034
- // Handle option click
1035
- const handleOptionClick = (newValue) => {
1036
- value = newValue;
1037
- isOpen = false;
1038
- onChange(value);
1039
- updateMenu();
1040
- updateLabelState();
1041
- valueDisplay.redraw();
1042
- setTimeout(() => menu.redraw(), 200);
1043
- };
1044
- // Close menu when clicking outside
1045
- const handleClickOutside = (e) => {
1046
- if (!selectRef.value.contains(e.target)) {
1047
- isOpen = false;
1048
- updateMenu();
1049
- }
1050
- };
1051
- // Handle focus
1052
- const handleFocus = () => {
1053
- isFocused = true;
1054
- updateLabelState();
1055
- };
1056
- const handleBlur = () => {
1057
- isFocused = false;
1058
- updateLabelState();
1059
- };
1060
- // Update label focused state
1061
- const updateLabelState = () => {
1062
- selectLabelRef.value.classList?.toggle('focused', isFocused || !!value);
1063
- };
1064
- const valueDisplay = createRedrawable(() => {
1065
- const o = options.find((opt) => opt.value === value);
1066
- let inner;
1067
- if (o === undefined) {
1068
- inner = jsx("span", { class: "mui-select-placeholder", children: placeholder || '\u00a0' });
1069
- }
1070
- else {
1071
- inner = o.label;
1072
- }
1073
- return jsx("div", { class: "mui-select-display", children: inner });
1074
- });
1075
- const menu = createRedrawable(() => {
1076
- return (jsx("div", { class: "mui-select-menu", style: "display: none;", children: options.map((option) => (jsx("div", { class: `mui-select-option ${option.value === value ? 'selected' : ''}`, "on:click": () => handleOptionClick(option.value), children: option.label }))) }));
1077
- });
1078
- // Create container
1079
- const container = (jsxs("div", { ref: selectRef, class: `mui-select-wrapper mui-select-size-${size} ${props.class ?? ''} ${fullWidth ? 'mui-select-fullWidth' : ''} ${disabled ? 'mui-select-disabled' : ''}`, style: parseStyle(props.style), children: [jsx("label", { "k-if": label, ref: selectLabelRef, class: `mui-select-label ${value || isFocused ? 'focused' : ''}`, children: label }), jsxs("div", { class: "mui-select-control mui-select-outlined", "on:click": toggleMenu, "on:focus": handleFocus, "on:blur": handleBlur, tabIndex: disabled ? -1 : 0, children: [valueDisplay, jsx("input", { type: "hidden", value: value }), jsx("fieldset", { class: "mui-select-fieldset", children: jsx("legend", { children: jsx("span", { children: label }) }) }), 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] }));
1080
- $defines(container, {
1081
- value: {
1082
- get: () => value,
1083
- set: (newValue) => {
1084
- value = newValue;
1085
- updateLabelState();
1086
- valueDisplay.redraw();
1087
- menu.redraw();
1088
- },
1089
- },
1090
- disabled: {
1091
- get: () => disabled,
1092
- set: (newDisabled) => {
1093
- disabled = newDisabled;
1094
- if (disabled) {
1095
- isOpen = false;
1096
- updateMenu();
1097
- }
1098
- container.classList.toggle('mui-select-disabled', disabled);
1099
- },
1100
- },
1101
- });
1102
- // Add global click listener
1103
- setTimeout(() => {
1104
- document.removeEventListener('click', handleClickOutside);
1105
- document.addEventListener('click', handleClickOutside);
1106
- updateLabelState();
1107
- }, 0);
1108
- return container;
1109
- }
1110
-
1111
- function DownloadIcon(props) {
1112
- 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" }) }));
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 j(e,r,i){return e.replace(r,i)}function R(e,r){return e.indexOf(r)}function M(e,r){return 0|e.charCodeAt(r)}function T(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,G=0,U=0,V="";function q(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 F(e,r){return E(q("",null,null,"",null,null,0),e,{length:-e.length},r)}function _(){return U=G>0?M(V,--G):0,B--,10===U&&(B=1,H--),U}function N(){return U=G<P?M(V,G++):0,B++,10===U&&(B=1,H++),U}function Y(){return M(V,G)}function X(){return G}function Z(e,r){return T(V,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(V=e),G=0,[]}function Q(e){return V="",e}function ee(e){return I(Z(G-1,oe(91===e?e+2:40===e?e+1:e)))}function re(e){for(;(U=Y())&&U<33;)N();return J(e)>2||J(U)>3?"":" "}function ie(e,r){for(;--r&&N()&&!(U<48||U>102||U>57&&U<65||U>70&&U<97););return Z(e,X()+(r<6&&32==Y()&&32==N()))}function oe(e){for(;N();)switch(U){case e:return G;case 34:case 39:34!==e&&39!==e&&oe(U);break;case 40:41===e&&oe(e);break;case 92:N()}return G}function te(e,r){for(;N()&&e+U!==57&&(e+U!==84||47!==Y()););return"/*"+Z(r,G-1)+"*"+A(47===e?e:N())}function ae(e){for(;!J(Y());)N();return Z(e,G)}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=N()){case 40:if(108!=b&&58==M(z,d-1)){-1!=R(z+=j(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(N(),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=j(z,/\f/g,"")),m>0&&O(z)-d&&D(m>32?ue(z+";",o,i,d-1):ue(j(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===M(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==_())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(N())),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=T(e,d+1,d=L(x=n[b])),v=e;h<m;++h)(v=I(x>0?p[h]+" "+f:j(f,/&\f/g,p[h])))&&(c[g++]=v);return q(e,r,i,0===t?C:l,c,s,u)}function se(e,r,i){return q(e,r,i,z,A(U),T(e,2,-2),0)}function ue(e,r,i,o){return q(e,r,i,$,T(e,0,o),T(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);)N();return Z(e,G)},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(G-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=N());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^M(e,0)?(((r<<2^M(e,0))<<2^M(e,1))<<2^M(e,2))<<2^M(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+j(e,/(\w+).+(:[^]+)/,y+"box-$1$2"+k+"flex-$1$2")+e;case 5443:return y+e+k+"flex-item-"+j(e,/flex-|-self/,"")+e;case 4675:return y+e+k+"flex-line-pack"+j(e,/align-content|flex-|-self/,"")+e;case 5548:return y+e+k+j(e,"shrink","negative")+e;case 5292:return y+e+k+j(e,"basis","preferred-size")+e;case 6060:return y+"box-"+j(e,"-grow","")+y+e+k+j(e,"grow","positive")+e;case 4554:return y+j(e,/([^-])(transform)/g,"$1"+y+"$2")+e;case 6187:return j(j(j(e,/(zoom-|grab)/,y+"$1"),/(image-set)/,y+"$1"),e,"")+e;case 5495:case 3959:return j(e,/(image-set\([^]*)/,y+"$1$`$1");case 4968:return j(j(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 j(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(M(e,r+1)){case 109:if(45!==M(e,r+4))break;case 102:return j(e,/(.+:)(.+)-([^]+)/,"$1"+y+"$2-$3$1"+w+(108==M(e,r+3)?"$3":"$2-$3"))+e;case 115:return~R(e,"stretch")?we(j(e,"stretch","fill-available"),r)+e:e}break;case 4949:if(115!==M(e,r+1))break;case 6444:switch(M(e,O(e)-3-(~R(e,"!important")&&10))){case 107:return j(e,":",":"+y)+e;case 101:return j(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+y+(45===M(e,14)?"inline-":"")+"box$3$1"+y+"$2$3$1"+k+"$2box$3")+e}break;case 5936:switch(M(e,r+11)){case 114:return y+e+k+j(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return y+e+k+j(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return y+e+k+j(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([F(e,{value:j(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([F(e,{props:[j(r,/:(read-\w+)/,":-moz-$1")]})],o);case"::placeholder":return de([F(e,{props:[j(r,/:(plac\w+)/,":"+y+"input-$1")]}),F(e,{props:[j(r,/:(plac\w+)/,":-moz-$1")]}),F(e,{props:[j(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)},je=function(e){return null!=e&&"boolean"!=typeof e},Re=be(function(e){return Ie(e)?e:e.replace(Ae,"-$&").toLowerCase()}),Me=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 Te(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+=Te(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]+"}":je(l)&&(o+=Re(a)+":"+Me(a,l)+";")}else if(!Array.isArray(n)||"string"!=typeof n[0]||null!=r&&void 0!==r[n[0]]){var c=Te(e,r,n);switch(a){case"animation":case"animationName":o+=Re(a)+":"+c+";";break;default:o+=a+"{"+c+"}"}}else for(var s=0;s<n.length;s++)je(n[s])&&(o+=Re(a)+":"+Me(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+=Te(i,r,a)):t+=a[0];for(var n=1;n<e.length;n++){if(t+=Te(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 Ge(e,r,i){var o=[],t=Be(e,o,i);return o.length<2?i:t+r(o)}var Ue=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},Ve=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 Ge(r.registered,i,Ue(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:Ge.bind(null,r.registered,i)}}({key:"css"}),qe=Ve.injectGlobal;qe`
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
+ `,qe`
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 Fe=(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])},_e={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 Ne(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(_e[a.value]||_e.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 Fe(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))}),Fe(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 j=A.remove;return A.remove=()=>(document.removeEventListener("click",E),document.removeEventListener("keydown",I),j.call(A)),Fe(A,i,["on:click","on:select"]),A}qe`
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
+ `,qe`
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
+ `,qe`
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
+ `;function Ze(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=u("span",{class:"mui-checkbox-icon-unchecked",children:u("svg",{viewBox:"0 0 24 24",children:u("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"})})}),y=u("span",{class:"mui-checkbox-icon-checked",children:u("svg",{viewBox:"0 0 24 24",children:u("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"})})}),z=u("span",{class:"mui-checkbox-icon-indeterminate",children:u("svg",{viewBox:"0 0 24 24",children:u("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"})})}),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}}}),Fe($,r,["on:change"]),$}function Je(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=Ze({...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(),Fe(y,i,["on:change"]),y}function Ke(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)),Fe(k,i,["on:close"]),k}function Qe(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 Fe(c,e),c}function er(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}}}),Fe(m,r),m}function rr(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(M.value)},v=()=>{l.value=!1,a(M.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),j=d(i.size??"medium"),R=d(i.placeholder??"").toComputed(e=>!z.value||l.value||c(y.value)?e:"",[z,l,y]),M=w?u("textarea",{"k-model":y,class:"mui-textfield-input",placeholder:R,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:R,disabled:C,readOnly:$,required:S,"on:input":b,"on:change":g,"on:focus":f,"on:blur":v});y.addOnChange(e=>M.value=e);const T=d(e(i.style)),O=d(i.class??""),W=p(()=>["mui-textfield-root",`mui-textfield-size-${j.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(" "),[j,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:T,children:[s("div",{class:"mui-textfield-wrapper","on:mousedown":e=>{if(C.value)return;const r=e.target;r&&r!==M&&setTimeout(()=>M.focus(),0)},children:[D,u("div",{class:"mui-textfield-input-wrapper",children:M}),u("fieldset",{class:"mui-textfield-fieldset",children:H})]}),u("p",{class:"mui-textfield-helper-text",children:A})]});return Fe(B,i,["on:input","on:change","on:focus","on:blur"]),B}function ir(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=u("span",{class:"mui-radio-icon-unchecked",children:u("svg",{viewBox:"0 0 24 24",children:u("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"})})}),v=u("span",{class:"mui-radio-icon-checked",children:u("svg",{viewBox:"0 0 24 24",children:u("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"})})});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)}}}),Fe(k,o),k}function or(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,ir(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)}}}),Fe(h,o),h}function tr(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})})}),u("svg",{class:"mui-select-icon",focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"24",height:"24",children:u("path",{d:"M7 10l5 5 5-5Z",fill:"currentColor"})})]}),L]});return L.notify(),setTimeout(()=>{document.removeEventListener("click",C),document.addEventListener("click",C)},0),Fe(A,i),A}function ar(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 Fe(s,r),s}function nr(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}qe`
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
+ `,qe`
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
+ `,qe`
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
+ `,qe`
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
+ `,qe`
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
+ `,qe`
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
+ `,qe`
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
+ `,qe`
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
+ `,qe`
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 lr=u("span",{class:"mui-pill-delete-mark","aria-hidden":"true",children:"×"});function cr(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??lr})]});return Fe(v,i,["on:click","on:delete"]),v}qe`
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%;
2829
+ }
2830
+
2831
+ .mui-badge-overlap-rectangular.mui-badge-anchor-top-right {
2832
+ top: 0;
2833
+ right: 0;
1113
2834
  }
1114
2835
 
1115
- function CompressIcon(props) {
1116
- 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;
1117
2839
  }
1118
2840
 
1119
- function SubtitlesIcon(props) {
1120
- 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;
1121
2844
  }
1122
2845
 
1123
- function SettingsIcon(props) {
1124
- 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;
1125
2849
  }
1126
2850
 
1127
- function NewReleasesIcon(props) {
1128
- 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%;
1129
2854
  }
1130
2855
 
1131
- function FolderOpenIcon(props) {
1132
- 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%;
1133
2859
  }
1134
2860
 
1135
- function PlayArrowIcon(props) {
1136
- 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%;
1137
2864
  }
1138
2865
 
1139
- function ContentPasteIcon(props) {
1140
- 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%;
1141
2869
  }
1142
2870
 
1143
- function DeleteIcon(props) {
1144
- 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);
1145
2874
  }
1146
2875
 
1147
- function StopIcon(props) {
1148
- 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;
1149
2879
  }
1150
2880
 
1151
- function FileOpenIcon(props) {
1152
- 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;
1153
2884
  }
1154
2885
 
1155
- function ColorLensIcon(props) {
1156
- 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;
1157
2889
  }
1158
2890
 
1159
- function WallpaperIcon(props) {
1160
- 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;
1161
2894
  }
1162
2895
 
1163
- function ExpandMoreIcon(props) {
1164
- 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;
1165
2899
  }
1166
2900
 
1167
- function SaveIcon(props) {
1168
- 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;
1169
2904
  }
1170
2905
 
1171
- function UploadFileIcon(props) {
1172
- 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;
1173
2909
  }
1174
2910
 
1175
- function VideoFileIcon(props) {
1176
- 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 sr={vertical:"top",horizontal:"right"};function ur(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??sr),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??sr.vertical,r=g.value?.horizontal??sr.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 Fe(k,r),k}qe`
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;
1177
2922
  }
1178
2923
 
1179
- function QueuePlayNextIcon(props) {
1180
- 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;
1181
2926
  }
1182
2927
 
1183
- function MenuIcon(props) {
1184
- 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;
1185
2932
  }
1186
2933
 
1187
- function HomeIcon(props) {
1188
- 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;
1189
2955
  }
1190
2956
 
1191
- function ContentCopyIcon(props) {
1192
- 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);
1193
2960
  }
1194
2961
 
1195
- function SelectAllIcon(props) {
1196
- 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
+ }
1197
2967
  }
1198
2968
 
1199
- export { Alert, Button, Checkbox, CheckboxGroup, ColorLensIcon, CompressIcon, ContentCopyIcon, ContentPasteIcon, DeleteIcon, Dialog, DownloadIcon, ExpandMoreIcon, FileOpenIcon, FolderOpenIcon, FormLabel, HomeIcon, LinearProgress, MenuIcon, NewReleasesIcon, PlayArrowIcon, QueuePlayNextIcon, Radio, RadioGroup, SaveIcon, Select, SelectAllIcon, SettingsIcon, StopIcon, SubtitlesIcon, TextField, UploadFileIcon, VideoFileIcon, WallpaperIcon };
2969
+ `;const dr={vertical:"top",horizontal:"left"},pr={vertical:"top",horizontal:"left"},mr=(e,r)=>"center"===r?e/2:"bottom"===r?e:0,br=(e,r)=>"center"===r?e/2:"right"===r?e:0;function xr(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(),j.setAttribute("aria-hidden",String(!e)),e)return R.style.display="block",R.classList.add("mui-popover-rendered"),void(m=window.setTimeout(()=>{m=0,v.value&&R.classList.add("mui-popover-open")},0));R.classList.remove("mui-popover-open"),b=window.setTimeout(()=>{b=0,v.value||(R.style.display="none",R.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??dr,h),y=d(i.transformOrigin??pr,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=j.getBoundingClientRect(),r=k.value,i=r?r.getBoundingClientRect():{width:0,height:0,top:window.innerHeight/2,left:window.innerWidth/2},o=w.value??dr,t=y.value??pr;let n=i.top+mr(i.height,o.vertical)-mr(e.height,t.vertical),s=i.left+br(i.width,o.horizontal)-br(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),j.style.top=`${l(n)}px`,j.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&&(j.contains(r)||k.value?.contains(r)||A("backdropClick"))},I=e=>{"Escape"===e.key&&A("escapeKeyDown")},j=u("div",{class:$,style:S,role:"dialog","aria-hidden":!v.value,children:i.children}),R=u("div",{class:"mui-popover-root "+(v.value?"mui-popover-open mui-popover-rendered":""),style:v.value?"display: block;":"display: none;",children:j});document.addEventListener("mousedown",E),document.addEventListener("keydown",I),window.addEventListener("resize",h),window.addEventListener("scroll",h,!0),f(v.value),v.value&&h();const M=R.remove;return R.remove=()=>(x(),g&&clearTimeout(g),document.removeEventListener("mousedown",E),document.removeEventListener("keydown",I),window.removeEventListener("resize",h),window.removeEventListener("scroll",h,!0),M.call(R)),Fe(R,i,["on:close"]),R}export{Ne as Alert,ur as Badge,Ye as Button,ar as Card,Ze as Checkbox,Je as CheckboxGroup,Ke as Dialog,Xe as DropdownButton,Qe as FormLabel,er as LinearProgress,cr as Pill,xr as Popover,ir as Radio,or as RadioGroup,tr as Select,nr as Switch,rr as TextField};
2970
+ //# sourceMappingURL=index.mjs.map