@maskingtech/designsystem 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
- # Design System | Masking Technology
1
+ # Masking Technology Design System (MTDS)
2
2
 
3
- Simple design system used for our internal projects.
3
+ A simple, customizable design system that wraps common CSS features into elements and turns standard HTML elements into interactive components. Currently, only React is supported.
4
+
5
+ <img width="100%" alt="Example design" src="assets/example.png">
4
6
 
5
7
  ## Installation
6
8
 
@@ -8,521 +10,18 @@ Simple design system used for our internal projects.
8
10
  npm install @maskingtech/designsystem
9
11
  ```
10
12
 
11
- ## Basic elements
12
-
13
- ### Avatar
14
-
15
- A rounded image element.
16
-
17
- Properties:
18
-
19
- - **source** - string (required)
20
- - **title** - string (optional)
21
- - **alt** - string (optional)
22
- - **width** - string (optional)
23
- - **height** - string (optional)
24
- - **fit** - `fill` | `contain` | `cover` | `none` | `scale-down` (optional, default `contain`)
25
-
26
- Example:
27
-
28
- ```tsx
29
- import { Avatar } from '@maskingtech/designsystem';
30
-
31
- <Avatar
32
- source='http://example.com/avatar.png'
33
- title='My avatar'
34
- alt='My avatar'
35
- width='100px'
36
- />
37
- ```
38
-
39
- ### Border
40
-
41
- A bordered container element.
42
-
43
- Properties:
44
-
45
- - **type** - `normal`| `dashed` | `dotted` (optional, default `normal`)
46
- - **size** - `large` | `medium` | `small` (optional, default `large`)
47
- - **padding** - `large` | `medium` | `small` | `none` (optional, default `large`)
48
-
49
- Example:
50
-
51
- ```tsx
52
- import { Border } from '@maskingtech/designsystem';
53
-
54
- <Border size='small' padding='small'>
55
- <p>This is the bordered content</p>
56
- </Border>
57
- ```
58
-
59
- ### Button
60
-
61
- A clickable input element styled as a button.
62
-
63
- Properties:
64
-
65
- - **type** - `submit` | `primary` | `secondary` | `disabled` (optional, default `primary`)
66
- - **size** - `large` | `medium` | `small` (optional, default `medium`)
67
- - **text** - string (required)
68
- - **onClick** - `() => void` (optional)
69
-
70
- Example:
71
-
72
- ```tsx
73
- import { Button } from '@maskingtech.designsystem';
74
-
75
- <Button type='primary' size='medium' text='Save' onClick={() => console.log('clicked')} />
76
- ```
77
-
78
- ### Cell
79
-
80
- A layout cell that can be fixed or fluid.
81
-
82
- Properties:
83
-
84
- - **sizing** - `fixed` | `fluid` (optional, default `fluid`)
85
- - **children** - ReactNode
86
-
87
- Example:
88
-
89
- ```tsx
90
- import { Cell } from '@maskingtech.designsystem';
91
-
92
- <Cell sizing='fixed'>Fixed content</Cell>
93
- ```
94
-
95
- ### ClickArea
96
-
97
- A wrapper element that handles clicks and optional padding.
98
-
99
- Properties:
100
-
101
- - **padding** - `large` | `medium` | `small` | `none` (optional, default `none`)
102
- - **onClick** - `() => void` (optional)
103
- - **children** - ReactNode (optional)
104
-
105
- Example:
106
-
107
- ```tsx
108
- import { ClickArea } from '@maskingtech.designsystem';
109
-
110
- <ClickArea padding='small' onClick={() => alert('clicked')}>Clickable content</ClickArea>
111
- ```
112
-
113
- ### Column
114
-
115
- A vertical layout container with alignment and gap options.
116
-
117
- Properties:
118
-
119
- - **alignX** - `left` | `center` | `right` | `stretch` (optional, default `left`)
120
- - **alignY** - `top` | `center` | `bottom` | `justify` (optional, default `top`)
121
- - **gap** - `large` | `medium` | `small` | `none` (optional, default `medium`)
122
- - **wrap** - `wrap` | `nowrap` (optional, default `nowrap`)
123
- - **children** - ReactNode
124
-
125
- Example:
126
-
127
- ```tsx
128
- import { Column } from '@maskingtech.designsystem';
129
-
130
- <Column alignX='center' gap='small'>
131
- <div>Item 1</div>
132
- <div>Item 2</div>
133
- </Column>
134
- ```
135
-
136
- ### Form
137
-
138
- A form wrapper that prevents default submit and forwards the form element via a handler.
139
-
140
- Properties:
141
-
142
- - **children** - ReactNode
143
- - **submitHandler** - `(form: HTMLFormElement) => void` (optional)
144
-
145
- Example:
146
-
147
- ```tsx
148
- import { Form } from '@maskingtech.designsystem';
149
-
150
- <Form submitHandler={(form) => console.log('submit', form)}>
151
- {/* inputs here */}
152
- </Form>
153
- ```
154
-
155
- ### Grid
156
-
157
- A grid layout with preset column layouts and gaps.
158
-
159
- Properties:
160
-
161
- - **layout** - `two-columns` | `three-columns` | `four-columns` (required)
162
- - **gap** - `large` | `medium` | `small` | `none` (optional, default `medium`)
163
- - **children** - ReactNode
164
-
165
- Example:
166
-
167
- ```tsx
168
- import { Grid } from '@maskingtech.designsystem';
169
-
170
- <Grid layout='three-columns' gap='small'>
171
- <div>1</div>
172
- <div>2</div>
173
- <div>3</div>
174
- </Grid>
175
- ```
176
-
177
- ### Icon
178
-
179
- A simple icon span using a set of predefined icon types.
180
-
181
- Properties:
182
-
183
- - **type** - one of the supported icon identifiers (e.g. `attachment`, `bookmark`, `close`, `user`, `search`, etc.) (required)
184
-
185
- Example:
186
-
187
- ```tsx
188
- import { Icon } from '@maskingtech.designsystem';
189
-
190
- <Icon type='search' />
191
- ```
192
-
193
- ### Image
194
-
195
- A styled image element.
196
-
197
- Properties:
198
-
199
- - **source** - string (required)
200
- - **title** - string (optional)
201
- - **alt** - string (optional)
202
- - **width** - string (optional)
203
- - **height** - string (optional)
204
- - **fit** - `fill` | `contain` | `cover` | `none` | `scale-down` (optional, default `contain`)
205
-
206
- Example:
207
-
208
- ```tsx
209
- import { Image } from '@maskingtech.designsystem';
210
-
211
- <Image source='http://example.com/photo.jpg' alt='Example' width='200px' fit='cover' />
212
- ```
213
-
214
- ### Input
215
-
216
- A labeled input wrapper that composes `Label` with an input element (`TextBox`, `TextArea` or `Select`).
217
-
218
- Properties:
219
-
220
- - **label** - `ReactElement<LabelProps>` (required)
221
- - **element** - `ReactElement<TextBoxProps | TextAreaProps | SelectProps>` (required)
13
+ ## Usage
222
14
 
223
- Example:
15
+ To activate it, its root element needs to be added to the application.
224
16
 
225
17
  ```tsx
226
- import { Input, Label, TextBox } from '@maskingtech.designsystem';
18
+ import { DesignSystem } from '@maskingtech/designsystem';
227
19
 
228
- <Input label={<Label value='Name' />} element={<TextBox name='name' />} />
229
- ```
230
-
231
- ### Label
232
-
233
- Simple text label for inputs.
234
-
235
- Properties:
20
+ import '@maskingtech/designsystem/style.css';
236
21
 
237
- - **value** - string (required)
238
-
239
- Example:
240
-
241
- ```tsx
242
- import { Label } from '@maskingtech.designsystem';
243
-
244
- <Label value='Email' />
245
- ```
246
-
247
- ### Link
248
-
249
- A styled anchor element.
250
-
251
- Properties:
252
-
253
- - **url** - string (optional)
254
- - **target** - string (optional)
255
- - **children** - ReactNode
256
-
257
- Example:
258
-
259
- ```tsx
260
- import { Link } from '@maskingtech.designsystem';
261
-
262
- <Link url='https://example.com' target='_blank'>Visit</Link>
22
+ <DesignSystem>
23
+ {/* elements and components here */}
24
+ </DesignSystem>
263
25
  ```
264
26
 
265
- ### Modal
266
-
267
- A modal dialog built on the native `<dialog>` element.
268
-
269
- Properties:
270
-
271
- - **open** - boolean (required)
272
- - **sizing** - `full` | `content` (optional, default `content`)
273
- - **children** - ReactNode (optional)
274
-
275
- Example:
276
-
277
- ```tsx
278
- import { Modal } from '@maskingtech.designsystem';
279
-
280
- <Modal open={true} sizing='content'>
281
- <p>Modal content</p>
282
- </Modal>
283
- ```
284
-
285
- ### Panel
286
-
287
- A versatile container for contextual content (alerts, messages, etc.).
288
-
289
- Properties:
290
-
291
- - **type** - `normal` | `alert` | `warning` | `success` | `error` | `transparent` (optional, default `normal`)
292
- - **padding** - `large` | `medium` | `small` (optional, default `large`)
293
- - **children** - ReactNode (optional)
294
-
295
- Example:
296
-
297
- ```tsx
298
- import { Panel } from '@maskingtech.designsystem';
299
-
300
- <Panel type='warning' padding='small'>Check this out</Panel>
301
- ```
302
-
303
- ### Paragraph
304
-
305
- Styled paragraph element.
306
-
307
- Properties:
308
-
309
- - **size** - `large` | `medium` | `small` (optional, default `medium`)
310
- - **children** - ReactNode
311
-
312
- Example:
313
-
314
- ```tsx
315
- import { Paragraph } from '@maskingtech.designsystem';
316
-
317
- <Paragraph size='small'>A short paragraph.</Paragraph>
318
- ```
319
-
320
- ### Row
321
-
322
- A horizontal layout container with alignment and gap options.
323
-
324
- Properties:
325
-
326
- - **alignX** - `left` | `center` | `right` | `justify` (optional, default `left`)
327
- - **alignY** - `top` | `center` | `bottom` | `stretch` (optional, default `top`)
328
- - **gap** - `large` | `medium` | `small` | `none` (optional, default `medium`)
329
- - **wrap** - `wrap` | `nowrap` (optional, default `nowrap`)
330
- - **children** - ReactNode
331
-
332
- Example:
333
-
334
- ```tsx
335
- import { Row } from '@maskingtech.designsystem';
336
-
337
- <Row alignX='center' gap='large'>
338
- <div>Left</div>
339
- <div>Right</div>
340
- </Row>
341
- ```
342
-
343
- ### Ruler
344
-
345
- A decorative divider either horizontal or vertical.
346
-
347
- Properties:
348
-
349
- - **direction** - `horizontal` | `vertical` (required)
350
- - **size** - `small` | `medium` | `large` (optional, default `medium`)
351
-
352
- Example:
353
-
354
- ```tsx
355
- import { Ruler } from '@maskingtech.designsystem';
356
-
357
- <Ruler direction='horizontal' />
358
- ```
359
-
360
- ### Select
361
-
362
- A styled select element that accepts a `Map` of options.
363
-
364
- Properties:
365
-
366
- - **name** - string (required)
367
- - **options** - `Map<string, string>` (required)
368
- - **value** - string (optional)
369
- - **size** - `large` | `medium` | `small` (optional, default `medium`)
370
- - **onChange** - `ChangeEventHandler<HTMLSelectElement>` (optional)
371
-
372
- Example:
373
-
374
- ```tsx
375
- import { Select } from '@maskingtech.designsystem';
376
-
377
- const options = new Map([['a', 'Option A'], ['b', 'Option B']]);
378
-
379
- <Select name='example' options={options} />
380
- ```
381
-
382
- ### Spinner
383
-
384
- A small loading indicator.
385
-
386
- Properties:
387
-
388
- - **active** - boolean (optional, default `true`)
389
-
390
- Example:
391
-
392
- ```tsx
393
- import { Spinner } from '@maskingtech.designsystem';
394
-
395
- <Spinner active={true} />
396
- ```
397
-
398
- ### Text
399
-
400
- Inline text element with variants for type, size and weight.
401
-
402
- Properties:
403
-
404
- - **value** - string (required)
405
- - **type** - `primary` | `secondary` (optional, default `primary`)
406
- - **size** - `large` | `medium` | `small` (optional, default `medium`)
407
- - **weight** - `light` | `normal` | `bold` (optional, default `normal`)
408
- - **wrap** - `none` | `normal` | `break-word` (optional, default `none`)
409
-
410
- Example:
411
-
412
- ```tsx
413
- import { Text } from '@maskingtech.designsystem';
414
-
415
- <Text value='Label' type='secondary' size='small' />
416
- ```
417
-
418
- ### TextArea
419
-
420
- A multiline text input.
421
-
422
- Properties:
423
-
424
- - **name** - string (required)
425
- - **placeholder** - string (optional)
426
- - **value** - string (optional)
427
- - **size** - `large` | `medium` | `small` (optional, default `medium`)
428
- - **rows** - number (optional)
429
- - **limit** - number (optional)
430
- - **onChange** - `ChangeEventHandler<HTMLTextAreaElement>` (optional)
431
-
432
- Example:
433
-
434
- ```tsx
435
- import { TextArea } from '@maskingtech.designsystem';
436
-
437
- <TextArea name='message' placeholder='Write...' rows={4} />
438
- ```
439
-
440
- ### TextBox
441
-
442
- A single-line text input.
443
-
444
- Properties:
445
-
446
- - **name** - string (required)
447
- - **placeholder** - string (optional)
448
- - **value** - string (optional)
449
- - **limit** - number (optional)
450
- - **pattern** - string (optional)
451
- - **title** - string (optional)
452
- - **size** - `large` | `medium` | `small` (optional, default `medium`)
453
- - **required** - boolean (optional)
454
- - **onChange** - `ChangeEventHandler<HTMLInputElement>` (optional)
455
-
456
- Example:
457
-
458
- ```tsx
459
- import { TextBox } from '@maskingtech.designsystem';
460
-
461
- <TextBox name='firstName' placeholder='First name' />
462
- ```
463
-
464
- ### Title
465
-
466
- Heading element that maps `size` to `h1`/`h2`/`h3`.
467
-
468
- Properties:
469
-
470
- - **size** - `large` | `medium` | `small` (optional, default `large`)
471
- - **children** - ReactNode
472
-
473
- Example:
474
-
475
- ```tsx
476
- import { Title } from '@maskingtech.designsystem';
477
-
478
- <Title size='medium'>Section title</Title>
479
- ```
480
-
481
- ## Components
482
-
483
- ### Dropdown
484
-
485
- Simple selection dropdown (custom UI) that accepts a `Map` of options.
486
-
487
- Properties:
488
-
489
- - **options** - `Map<string, string>` (required)
490
- - **selected** - string (optional, key of the selected option)
491
- - **onChange** - `(oldKey: string, newKey: string) => void` (optional)
492
-
493
- Example:
494
-
495
- ```tsx
496
- import { Dropdown } from '@maskingtech.designsystem';
497
-
498
- const opts = new Map([['a','A'],['b','B']]);
499
- <Dropdown options={opts} selected='a' onChange={(o,n)=>console.log(o,n)} />
500
- ```
501
-
502
- ### Tabs / Tab
503
-
504
- Tabs provide a tabbed navigation. Use `Tab` elements as children of `Tabs`.
505
-
506
- `Tabs` Properties:
507
-
508
- - **separator** - ReactNode (optional)
509
- - **selectedId** - string (optional)
510
- - **children** - one or more `Tab` elements (required)
511
- - **onChange** - `(newId: string, oldId?: string) => void` (optional)
512
-
513
- `Tab` Properties:
514
-
515
- - **id** - string (required)
516
- - **title** - ReactNode (required)
517
- - **children** - ReactNode (required)
518
-
519
- Example:
520
-
521
- ```tsx
522
- import { Tabs, Tab } from '@maskingtech.designsystem';
523
-
524
- <Tabs selectedId='tab1' onChange={(n,o)=>console.log(n,o)}>
525
- <Tab id='tab1' title='First'>First content</Tab>
526
- <Tab id='tab2' title='Second'>Second content</Tab>
527
- </Tabs>
528
- ```
27
+ The list of elements, components, and customization options can be found in the [documentation](docs/README.md).
package/dist/mtds.css CHANGED
@@ -1 +1 @@
1
- .ds .selection{--background-color: transparent;--background-color-options: var(--color-primary-background);--background-color-options-hover: var(--color-background-hover);--arrow-color: var(--color-alert-foreground);--border-color: var(--color-border);display:inline-block;position:relative;min-width:fit-content;cursor:pointer}.ds .selection .text{background-color:var(--background-color);padding:.8em 2em .8em 0}.ds .selection .text:after{content:"";position:absolute;right:.7em;top:1.2em;border:.45em solid transparent;border-color:var(--arrow-color) transparent transparent transparent}.ds .selection .text.active:after{top:.8em;border-color:transparent transparent var(--arrow-color) transparent}.ds .selection .options{position:absolute;min-width:fit-content;white-space:nowrap;text-align:left;background-color:var(--background-color-options);border:.1em solid var(--border-color)}.ds .selection .options .option{padding:.8em 2em .8em .8em;background:var(--color-primary-background);cursor:pointer}.ds .selection .options .option:hover{background-color:var(--background-color-options-hover)}.ds .tabs{--margin: var(--margin-container);--foreground-color: var(--color-primary-foreground);--font-size-nav: 1.1em;--background-color-nav-item: transparent;--background-color-nav-item-active: var(--background-color-nav-item);--background-color-nav-item-hover: var(--color-background-hover);--padding-nav-item: .5em 1em;--margin-separator: .2em 0 1em 0;display:flex;flex-direction:column;margin:var(--margin)}.ds .tabs .nav{display:flex;flex-direction:row;justify-content:center;color:var(--foreground-color);font-size:var(--font-size-nav)}.ds .tabs .nav .item{background:var(--background-color-nav-item);cursor:pointer;padding:var(--padding-nav-item);width:100%;text-align:center}.ds .tabs .nav .item:hover,.ds .tabs .nav .item.active:hover{background:var(--background-color-nav-item-hover)}.ds .tabs .nav .item.active{background:var(--background-color-nav-item-active);font-weight:var(--font-weight-bold)}.ds .tabs .separator{margin:var(--margin-separator)}.ds .avatar{border-radius:50%}.ds .avatar.fit-fill{object-fit:fill}.ds .avatar.fit-contain{object-fit:contain}.ds .avatar.fit-cover{object-fit:cover}.ds .avatar.fit-none{object-fit:none}.ds .avatar.fit-scale-down{object-fit:scale-down}.ds .border{--border-radius: 0;--margin: 0;--color: var(--color-border);--size-large: .3em;--size-medium: .2em;--size-small: .1em;--padding-large: 2em;--padding-medium: 1.5em;--padding-small: 1em;border-color:var(--color);border-radius:var(--border-radius);margin:var(--margin);min-width:0}.ds .border.type-normal{border-style:solid}.ds .border.type-dashed{border-style:dashed}.ds .border.type-dotted{border-style:dotted}.ds .border.size-large{border-width:var(--size-large)}.ds .border.size-medium{border-width:var(--size-medium)}.ds .border.size-small{border-width:var(--size-small)}.ds .border.padding-none{padding:0}.ds .border.padding-small{padding:var(--padding-small)}.ds .border.padding-medium{padding:var(--padding-medium)}.ds .border.padding-large{padding:var(--padding-large)}.ds .button{--margin: 0em;--padding-small: .2em 2.2em;--padding-medium: .5em 2.2em;--padding-large: .9em 2.2em;--border-radius: 2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);--primary-background-color: var(--color-primary-action-background);--primary-foreground-color: var(--color-primary-action-foreground);--secondary-background-color: var(--color-secondary-action-background);--secondary-foreground-color: var(--color-secondary-action-foreground);--disabled-background-color: transparent;border-radius:var(--border-radius);border:0;cursor:pointer;margin:var(--margin);text-align:center;width:fit-content;font-family:inherit;font-size:inherit}.ds .button.size-small{padding:var(--padding-small)}.ds .button.size-medium{padding:var(--padding-medium)}.ds .button.size-large{padding:var(--padding-large)}.ds .button.type-primary,.ds .button.type-submit{background-color:var(--primary-background-color);color:var(--primary-foreground-color);font-weight:var(--font-weight-bold)}.ds .button.type-primary:hover,.ds .button.type-submit:hover{background-color:color-mix(in srgb,black 10%,var(--primary-background-color))}.ds .button.type-primary:focus{background-color:color-mix(in srgb,black 20%,var(--primary-background-color))}.ds .button.type-secondary{background-color:var(--secondary-background-color);color:var(--secondary-foreground-color);font-weight:var(--font-weight-normal)}.ds .button.type-secondary:hover{background-color:color-mix(in srgb,black 10%,var(--secondary-background-color))}.ds .button.type-secondary:focus{background-color:color-mix(in srgb,black 20%,var(--secondary-background-color))}.ds .button.type-disabled{background-color:var(--disabled-background-color);border-color:var(--border-color);border-style:var(--border-style);border-width:var(--border-width);font-weight:var(--font-weight-light);cursor:default}.ds .cell.sizing-fixed{flex-grow:0;flex-shrink:0;overflow:hidden}.ds .cell.sizing-fluid{flex-grow:1;flex-shrink:1;overflow:auto}.ds .clickarea{--margin: 0;--padding-large: 2em;--padding-medium: 1.5em;--padding-small: 1em;--padding-none: 0;cursor:pointer;display:inline-block;margin:var(--margin);padding:var(--padding)}.ds .clickarea.padding-none{padding:var(--padding-none)}.ds .clickarea.padding-small{padding:var(--padding-small)}.ds .clickarea.padding-medium{padding:var(--padding-medium)}.ds .clickarea.padding-large{padding:var(--padding-large)}.ds .column{--gap-small: .4em;--gap-medium: 1em;--gap-large: 2em;display:flex;flex-direction:column;min-width:0;width:100%}.ds .column>div,.ds .column>h1,.ds .column>h2,.ds .column>h3,.ds .column>p,.ds .column>form,.ds .column>label,.ds .column>input,.ds .column>textarea,.ds .column>select{margin:0}.ds .column.align-y-top{justify-content:flex-start}.ds .column.align-y-center{justify-content:center}.ds .column.align-y-bottom{justify-content:flex-end}.ds .column.align-y-justify{justify-content:space-between}.ds .column.align-x-left{align-items:flex-start}.ds .column.align-x-center{align-items:center}.ds .column.align-x-right{align-items:flex-end}.ds .column.align-x-stretch{align-items:stretch}.ds .column.gap-small{gap:var(--gap-small)}.ds .column.gap-medium{gap:var(--gap-medium)}.ds .column.gap-large{gap:var(--gap-large)}.ds .column.wrap-nowrap{flex-wrap:nowrap}.ds .column.wrap-wrap{flex-wrap:wrap}.ds .form{--margin: var(--margin-container);margin:var(--margin);min-width:0}.ds .grid{--gap-small: .5em;--gap-medium: 1em;--gap-large: 2em;display:grid;min-width:0}.ds .grid>div,.ds .grid>h1,.ds .grid>h2,.ds .grid>h3,.ds .grid>p,.ds .grid>form,.ds .grid>label,.ds .grid>input,.ds .grid>textarea,.ds .grid>select{margin:0}.ds .grid.layout-two-columns{grid-template-columns:1fr 1fr}.ds .grid.layout-three-columns{grid-template-columns:1fr 1fr 1fr}.ds .grid.layout-four-columns{grid-template-columns:1fr 1fr 1fr 1fr}.ds .grid.gap-small{grid-gap:var(--gap-small)}.ds .grid.gap-medium{grid-gap:var(--gap-medium)}.ds .grid.gap-large{grid-gap:var(--gap-large)}.ds .icon{--icon-attachment: "📎";--icon-bookmark: "🔖";--icon-box: "☐";--icon-box-checked: "☑";--icon-box-crossed: "☒";--icon-calendar: "📅";--icon-caution: "☡";--icon-check: "✓";--icon-clock: "🕔";--icon-close: "✕";--icon-cloud: "☁";--icon-comment: "💬";--icon-diamond: "♦";--icon-eye: "👁";--icon-flag: "⚑";--icon-heart: "♥";--icon-home: "⌂";--icon-info: "ℹ";--icon-lock: "🔒";--icon-mail: "✉";--icon-music: "♫";--icon-phone: "☎";--icon-piece: "☮";--icon-plus: "➕";--icon-question: "❓";--icon-rain: "⛆";--icon-recycle: "♻";--icon-search: "🔍";--icon-settings: "⚙";--icon-star: "★";--icon-sun: "☀";--icon-tag: "🏷";--icon-trash: "🗑";--icon-umbrella: "☂";--icon-unlock: "🔓";--icon-user: "👤";--icon-video: "🎬";--icon-warning: "⚠";--icon-yinyang: "☯"}.ds .icon.attachment:before{content:var(--icon-attachment)}.ds .icon.bookmark:before{content:var(--icon-bookmark)}.ds .icon.box:before{content:var(--icon-box)}.ds .icon.box-checked:before{content:var(--icon-box-checked)}.ds .icon.box-crossed:before{content:var(--icon-box-crossed)}.ds .icon.calendar:before{content:var(--icon-calendar)}.ds .icon.caution:before{content:var(--icon-caution)}.ds .icon.check:before{content:var(--icon-check)}.ds .icon.clock:before{content:var(--icon-clock)}.ds .icon.close:before{content:var(--icon-close)}.ds .icon.cloud:before{content:var(--icon-cloud)}.ds .icon.comment:before{content:var(--icon-comment)}.ds .icon.diamond:before{content:var(--icon-diamond)}.ds .icon.eye:before{content:var(--icon-eye)}.ds .icon.flag:before{content:var(--icon-flag)}.ds .icon.heart:before{content:var(--icon-heart)}.ds .icon.home:before{content:var(--icon-home)}.ds .icon.info:before{content:var(--icon-info)}.ds .icon.lock:before{content:var(--icon-lock)}.ds .icon.mail:before{content:var(--icon-mail)}.ds .icon.music:before{content:var(--icon-music)}.ds .icon.phone:before{content:var(--icon-phone)}.ds .icon.piece:before{content:var(--icon-piece)}.ds .icon.plus:before{content:var(--icon-plus)}.ds .icon.question:before{content:var(--icon-question)}.ds .icon.rain:before{content:var(--icon-rain)}.ds .icon.recycle:before{content:var(--icon-recycle)}.ds .icon.search:before{content:var(--icon-search)}.ds .icon.settings:before{content:var(--icon-settings)}.ds .icon.star:before{content:var(--icon-star)}.ds .icon.sun:before{content:var(--icon-sun)}.ds .icon.tag:before{content:var(--icon-tag)}.ds .icon.trash:before{content:var(--icon-trash)}.ds .icon.umbrella:before{content:var(--icon-umbrella)}.ds .icon.unlock:before{content:var(--icon-unlock)}.ds .icon.user:before{content:var(--icon-user)}.ds .icon.video:before{content:var(--icon-video)}.ds .icon.warning:before{content:var(--icon-warning)}.ds .icon.yinyang:before{content:var(--icon-yinyang)}.ds .image.fit-fill{object-fit:fill}.ds .image.fit-contain{object-fit:contain}.ds .image.fit-cover{object-fit:cover}.ds .image.fit-none{object-fit:none}.ds .image.fit-scale-down{object-fit:scale-down}.ds .input{--margin: 0 0 1em 0;--gap: .5em;display:flex;flex-direction:column;gap:var(--gap);margin:var(--margin)}.ds .input .label{font-weight:var(--font-weight-medium)}.ds .label{--margin: 0;margin:var(--margin)}.ds .link{--color: var(--color-primary-foreground);--color-hover: var(--color-primary-foreground);--text-decoration: dotted underline;--text-decoration-hover: underline;color:var(--color);text-decoration:var(--text-decoration)}.ds .link:hover{color:var(--color-hover);text-decoration:var(--text-decoration-hover)}.ds .modal{border:0;padding:0;min-width:0}.ds .modal.sizing-full{width:100%}.ds .modal.sizing-content{width:fit-content}.ds .panel{--border-radius: 0;--margin: 0 0 1.5em 0;--padding-large: 2em;--padding-medium: 1.5em;--padding-small: 1em;--alert-background-color: var(--color-alert-background);--alert-foreground-color: var(--color-alert-foreground);--error-background-color: var(--color-error-background);--error-foreground-color: var(--color-error-foreground);--normal-background-color: var(--color-secondary-background);--normal-foreground-color: var(--color-primary-foreground);--success-background-color: var(--color-success-background);--success-foreground-color: var(--color-success-foreground);--warning-background-color: var(--color-warning-background);--warning-foreground-color: var(--color-warning-foreground);border-radius:var(--border-radius);padding:var(--padding);margin:var(--margin);min-width:0}.ds .panel.type-alert{background-color:var(--alert-background-color);color:var(--alert-foreground-color)}.ds .panel.type-error{background-color:var(--error-background-color);color:var(--error-foreground-color)}.ds .panel.type-normal{background-color:var(--normal-background-color);color:var(--normal-foreground-color)}.ds .panel.type-success{background-color:var(--success-background-color);color:var(--success-foreground-color)}.ds .panel.type-warning{background-color:var(--warning-background-color);color:var(--warning-foreground-color)}.ds .panel.type-transparent{background-color:transparent}.ds .panel.padding-small{padding:var(--padding-small)}.ds .panel.padding-medium{padding:var(--padding-medium)}.ds .panel.padding-large{padding:var(--padding-large)}.ds .paragraph{--margin: var(--margin-container);--line-height: 1.5em;--font-size-large: 1.5em;--font-size-medium: 1em;--font-size-small: .75em;margin:var(--margin);line-height:var(--line-height);min-width:0}.ds .paragraph.size-large{font-size:var(--font-size-large)}.ds .paragraph.size-medium{font-size:var(--font-size-medium)}.ds .paragraph.size-small{font-size:var(--font-size-small)}.ds .row{--gap-small: .4em;--gap-medium: 1em;--gap-large: 2em;display:flex;flex-direction:row;min-width:0;height:100%}.ds .row>div,.ds .row>h1,.ds .row>h2,.ds .row>h3,.ds .row>p,.ds .row>form,.ds .row>label,.ds .row>input,.ds .row>textarea,.ds .row>select{margin:0}.ds .row.align-x-left{justify-content:flex-start}.ds .row.align-x-center{justify-content:center}.ds .row.align-x-right{justify-content:flex-end}.ds .row.align-x-justify{justify-content:space-between}.ds .row.align-y-top{align-items:flex-start}.ds .row.align-y-center{align-items:center}.ds .row.align-y-bottom{align-items:flex-end}.ds .row.align-y-stretch{align-items:stretch}.ds .row.gap-small{gap:var(--gap-small)}.ds .row.gap-medium{gap:var(--gap-medium)}.ds .row.gap-large{gap:var(--gap-large)}.ds .row.wrap-nowrap{flex-wrap:nowrap}.ds .row.wrap-wrap{flex-wrap:wrap}.ds .ruler{--border-width-small: .1rem;--border-width-medium: .2rem;--border-width-large: .3rem;--color: var(--color-border);background-color:var(--color)}.ds .ruler.direction-horizontal{width:100%}.ds .ruler.direction-horizontal.size-small{height:var(--border-width-small)}.ds .ruler.direction-horizontal.size-medium{height:var(--border-width-medium)}.ds .ruler.direction-horizontal.size-large{height:var(--border-width-large)}.ds .ruler.direction-vertical{height:100%}.ds .ruler.direction-vertical.size-small{width:var(--border-width-small)}.ds .ruler.direction-vertical.size-medium{width:var(--border-width-medium)}.ds .ruler.direction-vertical.size-large{width:var(--border-width-large)}.ds .select{--margin: 0;--padding-small: .4em;--padding-medium: .8em;--padding-large: 1.2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);margin:var(--margin);padding:var(--padding);border-style:var(--border-style);border-width:var(--border-width);border-color:var(--border-color);background-color:var(--color-input-background);font-family:inherit;font-size:inherit}.ds .select:focus-visible{outline-color:color-mix(in srgb,black 10%,var(--border-color))}.ds .select.size-small{padding:var(--padding-small)}.ds .select.size-medium{padding:var(--padding-medium)}.ds .select.size-large{padding:var(--padding-large)}.ds .spinner{--color: var(--color-border);--size: 2em;--speed: 1.2s;--thickness: .3em;display:inline-block;width:var(--size);height:var(--size)}.ds .spinner:after{content:" ";display:block;width:var(--size);height:var(--size);border-radius:50%;border:var(--thickness) solid var(--color);border-color:transparent var(--color) transparent var(--color)}.ds .spinner.active:after{animation:ds-spinner var(--speed) linear infinite}@keyframes ds-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ds .text{--primary-color: var(--color-primary-foreground);--secondary-color: var(--color-secondary-foreground);display:inline-block}.ds .text.type-primary{color:var(--primary-color)}.ds .text.type-secondary{color:var(--secondary-color)}.ds .text.size-small{font-size:.9em}.ds .text.size-medium{font-size:1em}.ds .text.size-large{font-size:1.2em}.ds .text.weight-light{font-weight:var(--font-weight-light)}.ds .text.weight-normal{font-weight:var(--font-weight-normal)}.ds .text.weight-bold{font-weight:var(--font-weight-bold)}.ds .text.wrap-none{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ds .text.wrap-normal{white-space:normal}.ds .text.wrap-break-word{word-wrap:break-word}.ds .textarea{--margin: 0;--padding-small: .4em;--padding-medium: .8em;--padding-large: 1.2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);margin:var(--margin);padding:var(--padding);border-style:var(--border-style);border-width:var(--border-width);border-color:var(--border-color);background-color:var(--color-input-background);font-family:inherit;font-size:inherit;resize:vertical;width:100%}.ds .textarea:focus-visible{outline-color:color-mix(in srgb,black 10%,var(--border-color))}.ds .textarea.size-small{padding:var(--padding-small)}.ds .textarea.size-medium{padding:var(--padding-medium)}.ds .textarea.size-large{padding:var(--padding-large)}.ds .textbox{--margin: 0;--padding-small: .4em;--padding-medium: .8em;--padding-large: 1.2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);margin:var(--margin);border-style:var(--border-style);border-width:var(--border-width);border-color:var(--border-color);background-color:var(--color-input-background);font-family:inherit;font-size:inherit}.ds .textbox:focus-visible{outline-color:color-mix(in srgb,black 10%,var(--border-color))}.ds .textbox.size-small{padding:var(--padding-small)}.ds .textbox.size-medium{padding:var(--padding-medium)}.ds .textbox.size-large{padding:var(--padding-large)}.ds .title{--margin: 0 0 .8em 0;--font-size-large: 2em;--font-size-medium: 1.5em;--font-size-small: 1em;margin:var(--margin)}.ds .title.size-large{font-size:var(--font-size-large)}.ds .title.size-medium{font-size:var(--font-size-medium)}.ds .title.size-small{font-size:var(--font-size-small)}
1
+ .mtds{--font-family: sans-serif;--font-size: 16px;--font-weight-extra-light: 200;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semi-bold: 600;--font-weight-bold: 700;--color-background: transparent;--color-background-hover: #efefef;--color-foreground: #000000;--color-border: #b7b7b7;--color-primary-background: #ffffff;--color-primary-foreground: #000000;--color-secondary-background: #f3f3f3;--color-secondary-foreground: #666666;--color-primary-action-background: #cccccc;--color-primary-action-foreground: #000000;--color-secondary-action-background: #f3f3f3;--color-secondary-action-foreground: #000000;--color-input-background: #ffffff;--color-input-foreground: #000000;--color-alert-background: #d9d9d9;--color-alert-foreground: #666666;--color-error-background: #666666;--color-error-foreground: #f3f3f3;--color-warning-background: #999999;--color-warning-foreground: #f3f3f3;--color-success-background: #efefef;--color-success-foreground: #666666;--margin-container: 0 0 1.2em 0;--width-border: .05em;font-family:var(--font-family);font-size:var(--font-size);background-color:var(--color-background);color:var(--color-foreground);font-weight:var(--font-weight-light)}.mtds *{box-sizing:border-box}.mtds *:is(:last-child){margin-bottom:0}.mtds .dropdown{--background-color: transparent;--background-color-options: var(--color-primary-background);--background-color-options-hover: var(--color-background-hover);--arrow-color: var(--color-alert-foreground);--border-color: var(--color-border);display:inline-block;position:relative;min-width:fit-content;cursor:pointer}.mtds .dropdown .text{background-color:var(--background-color);padding:.8em 2em .8em 0}.mtds .dropdown .text:after{content:"";position:absolute;right:.7em;top:1.2em;border:.45em solid transparent;border-color:var(--arrow-color) transparent transparent transparent}.mtds .dropdown .text.active:after{top:.8em;border-color:transparent transparent var(--arrow-color) transparent}.mtds .dropdown .options{position:absolute;min-width:fit-content;white-space:nowrap;text-align:left;background-color:var(--background-color-options);border:.1em solid var(--border-color)}.mtds .dropdown .options .option{padding:.8em 2em .8em .8em;background:var(--color-primary-background);cursor:pointer}.mtds .dropdown .options .option:hover{background-color:var(--background-color-options-hover)}.mtds .tabs{--margin: var(--margin-container);--foreground-color: var(--color-primary-foreground);--font-size-nav: 1.1em;--background-color-nav-item: transparent;--background-color-nav-item-active: var(--background-color-nav-item);--background-color-nav-item-hover: var(--color-background-hover);--padding-nav-item: .5em 1em;--margin-separator: .2em 0 1em 0;display:flex;flex-direction:column;margin:var(--margin)}.mtds .tabs .nav{display:flex;flex-direction:row;justify-content:center;color:var(--foreground-color);font-size:var(--font-size-nav)}.mtds .tabs .nav .item{background:var(--background-color-nav-item);cursor:pointer;padding:var(--padding-nav-item);width:100%;text-align:center}.mtds .tabs .nav .item:hover,.mtds .tabs .nav .item.active:hover{background:var(--background-color-nav-item-hover)}.mtds .tabs .nav .item.active{background:var(--background-color-nav-item-active);font-weight:var(--font-weight-bold)}.mtds .tabs .separator{margin:var(--margin-separator)}.mtds .avatar{border-radius:50%}.mtds .avatar.fit-fill{object-fit:fill}.mtds .avatar.fit-contain{object-fit:contain}.mtds .avatar.fit-cover{object-fit:cover}.mtds .avatar.fit-none{object-fit:none}.mtds .avatar.fit-scale-down{object-fit:scale-down}.mtds .border{--border-radius: 0;--margin: 0;--color: var(--color-border);--size-large: .3em;--size-medium: .2em;--size-small: .1em;--padding-large: 2em;--padding-medium: 1.5em;--padding-small: 1em;border-color:var(--color);border-radius:var(--border-radius);margin:var(--margin);min-width:0}.mtds .border.type-normal{border-style:solid}.mtds .border.type-dashed{border-style:dashed}.mtds .border.type-dotted{border-style:dotted}.mtds .border.size-large{border-width:var(--size-large)}.mtds .border.size-medium{border-width:var(--size-medium)}.mtds .border.size-small{border-width:var(--size-small)}.mtds .border.padding-none{padding:0}.mtds .border.padding-small{padding:var(--padding-small)}.mtds .border.padding-medium{padding:var(--padding-medium)}.mtds .border.padding-large{padding:var(--padding-large)}.mtds .button{--margin: 0;--border-radius: 2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);--size-small: .2em 2.2em;--size-medium: .5em 2.2em;--size-large: .9em 2.2em;--type-primary-background-color: var(--color-primary-action-background);--type-primary-foreground-color: var(--color-primary-action-foreground);--type-secondary-background-color: var(--color-secondary-action-background);--type-secondary-foreground-color: var(--color-secondary-action-foreground);--type-disabled-background-color: transparent;border-radius:var(--border-radius);border:0;cursor:pointer;margin:var(--margin);text-align:center;width:fit-content;font-family:inherit;font-size:inherit}.mtds .button.size-small{padding:var(--size-small)}.mtds .button.size-medium{padding:var(--size-medium)}.mtds .button.size-large{padding:var(--size-large)}.mtds .button.type-primary,.mtds .button.type-submit{background-color:var(--type-primary-background-color);color:var(--type-primary-foreground-color);font-weight:var(--font-weight-bold)}.mtds .button.type-primary:hover,.mtds .button.type-submit:hover{background-color:color-mix(in srgb,black 10%,var(--type-primary-background-color))}.mtds .button.type-primary:focus{background-color:color-mix(in srgb,black 20%,var(--type-primary-background-color))}.mtds .button.type-secondary{background-color:var(--type-secondary-background-color);color:var(--type-secondary-foreground-color);font-weight:var(--font-weight-normal)}.mtds .button.type-secondary:hover{background-color:color-mix(in srgb,black 10%,var(--type-secondary-background-color))}.mtds .button.type-secondary:focus{background-color:color-mix(in srgb,black 20%,var(--type-secondary-background-color))}.mtds .button.type-disabled{background-color:var(--type-disabled-background-color);border-color:var(--border-color);border-style:var(--border-style);border-width:var(--border-width);font-weight:var(--font-weight-light);cursor:default}.mtds .cell.sizing-fixed{flex-grow:0;flex-shrink:0;overflow:hidden}.mtds .cell.sizing-fluid{flex-grow:1;flex-shrink:1;overflow:auto}.mtds .clickarea{--margin: 0;--padding-large: 2em;--padding-medium: 1.5em;--padding-small: 1em;--padding-none: 0;cursor:pointer;display:inline-block;margin:var(--margin);padding:var(--padding)}.mtds .clickarea.padding-none{padding:var(--padding-none)}.mtds .clickarea.padding-small{padding:var(--padding-small)}.mtds .clickarea.padding-medium{padding:var(--padding-medium)}.mtds .clickarea.padding-large{padding:var(--padding-large)}.mtds .column{--gap-small: .4em;--gap-medium: 1em;--gap-large: 2em;display:flex;flex-direction:column;min-width:0;width:100%}.mtds .column>div,.mtds .column>h1,.mtds .column>h2,.mtds .column>h3,.mtds .column>p,.mtds .column>form,.mtds .column>label,.mtds .column>input,.mtds .column>textarea,.mtds .column>select{margin:0}.mtds .column.align-y-top{justify-content:flex-start}.mtds .column.align-y-center{justify-content:center}.mtds .column.align-y-bottom{justify-content:flex-end}.mtds .column.align-y-justify{justify-content:space-between}.mtds .column.align-x-left{align-items:flex-start}.mtds .column.align-x-center{align-items:center}.mtds .column.align-x-right{align-items:flex-end}.mtds .column.align-x-stretch{align-items:stretch}.mtds .column.gap-small{gap:var(--gap-small)}.mtds .column.gap-medium{gap:var(--gap-medium)}.mtds .column.gap-large{gap:var(--gap-large)}.mtds .column.wrap-nowrap{flex-wrap:nowrap}.mtds .column.wrap-wrap{flex-wrap:wrap}.mtds .form{--margin: var(--margin-container);margin:var(--margin);min-width:0}.mtds .grid{--gap-small: .5em;--gap-medium: 1em;--gap-large: 2em;display:grid;min-width:0}.mtds .grid>div,.mtds .grid>h1,.mtds .grid>h2,.mtds .grid>h3,.mtds .grid>p,.mtds .grid>form,.mtds .grid>label,.mtds .grid>input,.mtds .grid>textarea,.mtds .grid>select{margin:0}.mtds .grid.layout-two-columns{grid-template-columns:1fr 1fr}.mtds .grid.layout-three-columns{grid-template-columns:1fr 1fr 1fr}.mtds .grid.layout-four-columns{grid-template-columns:1fr 1fr 1fr 1fr}.mtds .grid.gap-small{grid-gap:var(--gap-small)}.mtds .grid.gap-medium{grid-gap:var(--gap-medium)}.mtds .grid.gap-large{grid-gap:var(--gap-large)}.mtds .icon{--icon-attachment: "📎";--icon-bookmark: "🔖";--icon-box: "☐";--icon-box-checked: "☑";--icon-box-crossed: "☒";--icon-calendar: "📅";--icon-caution: "☡";--icon-check: "✓";--icon-clock: "🕔";--icon-close: "✕";--icon-cloud: "☁";--icon-comment: "💬";--icon-diamond: "♦";--icon-eye: "👁";--icon-flag: "⚑";--icon-heart: "♥";--icon-home: "⌂";--icon-info: "ℹ";--icon-lock: "🔒";--icon-mail: "✉";--icon-music: "♫";--icon-phone: "☎";--icon-piece: "☮";--icon-plus: "➕";--icon-question: "❓";--icon-rain: "⛆";--icon-recycle: "♻";--icon-search: "🔍";--icon-settings: "⚙";--icon-star: "★";--icon-sun: "☀";--icon-tag: "🏷";--icon-trash: "🗑";--icon-umbrella: "☂";--icon-unlock: "🔓";--icon-user: "👤";--icon-video: "🎬";--icon-warning: "⚠";--icon-yinyang: "☯"}.mtds .icon.attachment:before{content:var(--icon-attachment)}.mtds .icon.bookmark:before{content:var(--icon-bookmark)}.mtds .icon.box:before{content:var(--icon-box)}.mtds .icon.box-checked:before{content:var(--icon-box-checked)}.mtds .icon.box-crossed:before{content:var(--icon-box-crossed)}.mtds .icon.calendar:before{content:var(--icon-calendar)}.mtds .icon.caution:before{content:var(--icon-caution)}.mtds .icon.check:before{content:var(--icon-check)}.mtds .icon.clock:before{content:var(--icon-clock)}.mtds .icon.close:before{content:var(--icon-close)}.mtds .icon.cloud:before{content:var(--icon-cloud)}.mtds .icon.comment:before{content:var(--icon-comment)}.mtds .icon.diamond:before{content:var(--icon-diamond)}.mtds .icon.eye:before{content:var(--icon-eye)}.mtds .icon.flag:before{content:var(--icon-flag)}.mtds .icon.heart:before{content:var(--icon-heart)}.mtds .icon.home:before{content:var(--icon-home)}.mtds .icon.info:before{content:var(--icon-info)}.mtds .icon.lock:before{content:var(--icon-lock)}.mtds .icon.mail:before{content:var(--icon-mail)}.mtds .icon.music:before{content:var(--icon-music)}.mtds .icon.phone:before{content:var(--icon-phone)}.mtds .icon.piece:before{content:var(--icon-piece)}.mtds .icon.plus:before{content:var(--icon-plus)}.mtds .icon.question:before{content:var(--icon-question)}.mtds .icon.rain:before{content:var(--icon-rain)}.mtds .icon.recycle:before{content:var(--icon-recycle)}.mtds .icon.search:before{content:var(--icon-search)}.mtds .icon.settings:before{content:var(--icon-settings)}.mtds .icon.star:before{content:var(--icon-star)}.mtds .icon.sun:before{content:var(--icon-sun)}.mtds .icon.tag:before{content:var(--icon-tag)}.mtds .icon.trash:before{content:var(--icon-trash)}.mtds .icon.umbrella:before{content:var(--icon-umbrella)}.mtds .icon.unlock:before{content:var(--icon-unlock)}.mtds .icon.user:before{content:var(--icon-user)}.mtds .icon.video:before{content:var(--icon-video)}.mtds .icon.warning:before{content:var(--icon-warning)}.mtds .icon.yinyang:before{content:var(--icon-yinyang)}.mtds .image.fit-fill{object-fit:fill}.mtds .image.fit-contain{object-fit:contain}.mtds .image.fit-cover{object-fit:cover}.mtds .image.fit-none{object-fit:none}.mtds .image.fit-scale-down{object-fit:scale-down}.mtds .input{--margin: 0 0 1em 0;--gap: .5em;display:flex;flex-direction:column;gap:var(--gap);margin:var(--margin)}.mtds .input .label{font-weight:var(--font-weight-medium)}.mtds .label{--margin: 0;margin:var(--margin)}.mtds .link{--color: var(--color-primary-foreground);--color-hover: var(--color-primary-foreground);--text-decoration: dotted underline;--text-decoration-hover: underline;color:var(--color);text-decoration:var(--text-decoration)}.mtds .link:hover{color:var(--color-hover);text-decoration:var(--text-decoration-hover)}.mtds .modal{border:0;padding:0;min-width:0}.mtds .modal.sizing-full{width:100%}.mtds .modal.sizing-content{width:fit-content}.mtds .panel{--border-radius: 0;--margin: 0 0 1.5em 0;--padding-large: 2em;--padding-medium: 1.5em;--padding-small: 1em;--type-alert-background-color: var(--color-alert-background);--type-alert-foreground-color: var(--color-alert-foreground);--type-error-background-color: var(--color-error-background);--type-error-foreground-color: var(--color-error-foreground);--type-normal-background-color: var(--color-secondary-background);--type-normal-foreground-color: var(--color-primary-foreground);--type-success-background-color: var(--color-success-background);--type-success-foreground-color: var(--color-success-foreground);--type-warning-background-color: var(--color-warning-background);--type-warning-foreground-color: var(--color-warning-foreground);border-radius:var(--border-radius);padding:var(--padding);margin:var(--margin);min-width:0}.mtds .panel.type-alert{background-color:var(--type-alert-background-color);color:var(--type-alert-foreground-color)}.mtds .panel.type-error{background-color:var(--type-error-background-color);color:var(--type-error-foreground-color)}.mtds .panel.type-normal{background-color:var(--type-normal-background-color);color:var(--type-normal-foreground-color)}.mtds .panel.type-success{background-color:var(--type-success-background-color);color:var(--type-success-foreground-color)}.mtds .panel.type-warning{background-color:var(--type-warning-background-color);color:var(--type-warning-foreground-color)}.mtds .panel.type-transparent{background-color:transparent}.mtds .panel.padding-small{padding:var(--padding-small)}.mtds .panel.padding-medium{padding:var(--padding-medium)}.mtds .panel.padding-large{padding:var(--padding-large)}.mtds .paragraph{--margin: var(--margin-container);--line-height: 1.5em;--size-large: 1.5em;--size-medium: 1em;--size-small: .75em;margin:var(--margin);line-height:var(--line-height);min-width:0}.mtds .paragraph.size-large{font-size:var(--size-large)}.mtds .paragraph.size-medium{font-size:var(--size-medium)}.mtds .paragraph.size-small{font-size:var(--size-small)}.mtds .row{--gap-small: .4em;--gap-medium: 1em;--gap-large: 2em;display:flex;flex-direction:row;min-width:0;height:100%}.mtds .row>div,.mtds .row>h1,.mtds .row>h2,.mtds .row>h3,.mtds .row>p,.mtds .row>form,.mtds .row>label,.mtds .row>input,.mtds .row>textarea,.mtds .row>select{margin:0}.mtds .row.align-x-left{justify-content:flex-start}.mtds .row.align-x-center{justify-content:center}.mtds .row.align-x-right{justify-content:flex-end}.mtds .row.align-x-justify{justify-content:space-between}.mtds .row.align-y-top{align-items:flex-start}.mtds .row.align-y-center{align-items:center}.mtds .row.align-y-bottom{align-items:flex-end}.mtds .row.align-y-stretch{align-items:stretch}.mtds .row.gap-small{gap:var(--gap-small)}.mtds .row.gap-medium{gap:var(--gap-medium)}.mtds .row.gap-large{gap:var(--gap-large)}.mtds .row.wrap-nowrap{flex-wrap:nowrap}.mtds .row.wrap-wrap{flex-wrap:wrap}.mtds .ruler{--size-small: .1rem;--size-medium: .2rem;--size-large: .3rem;--color: var(--color-border);background-color:var(--color)}.mtds .ruler.direction-horizontal{width:100%}.mtds .ruler.direction-horizontal.size-small{height:var(--size-small)}.mtds .ruler.direction-horizontal.size-medium{height:var(--size-medium)}.mtds .ruler.direction-horizontal.size-large{height:var(--size-large)}.mtds .ruler.direction-vertical{height:100%}.mtds .ruler.direction-vertical.size-small{width:var(--size-small)}.mtds .ruler.direction-vertical.size-medium{width:var(--size-medium)}.mtds .ruler.direction-vertical.size-large{width:var(--size-large)}.mtds .select{--margin: 0;--size-small: .4em;--size-medium: .8em;--size-large: 1.2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);margin:var(--margin);padding:var(--padding);border-style:var(--border-style);border-width:var(--border-width);border-color:var(--border-color);background-color:var(--color-input-background);font-family:inherit;font-size:inherit}.mtds .select:focus-visible{outline-color:color-mix(in srgb,black 10%,var(--border-color))}.mtds .select.size-small{padding:var(--size-small)}.mtds .select.size-medium{padding:var(--size-medium)}.mtds .select.size-large{padding:var(--size-large)}.mtds .spinner{--color: var(--color-border);--size: 2em;--speed: 1.2s;--thickness: .3em;display:inline-block;width:var(--size);height:var(--size)}.mtds .spinner:after{content:" ";display:block;width:var(--size);height:var(--size);border-radius:50%;border:var(--thickness) solid var(--color);border-color:transparent var(--color) transparent var(--color)}.mtds .spinner.active:after{animation:ds-spinner var(--speed) linear infinite}@keyframes ds-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mtds .text{--primary-color: var(--color-primary-foreground);--secondary-color: var(--color-secondary-foreground);--size-small: .9em;--size-medium: 1em;--size-large: 1.2em;display:inline-block}.mtds .text.type-primary{color:var(--primary-color)}.mtds .text.type-secondary{color:var(--secondary-color)}.mtds .text.size-small{font-size:var(--size-small)}.mtds .text.size-medium{font-size:var(--size-medium)}.mtds .text.size-large{font-size:var(--size-large)}.mtds .text.weight-light{font-weight:var(--font-weight-light)}.mtds .text.weight-normal{font-weight:var(--font-weight-normal)}.mtds .text.weight-bold{font-weight:var(--font-weight-bold)}.mtds .text.wrap-none{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mtds .text.wrap-normal{white-space:normal}.mtds .text.wrap-break-word{word-wrap:break-word}.mtds .textarea{--margin: 0;--size-small: .4em;--size-medium: .8em;--size-large: 1.2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);margin:var(--margin);padding:var(--padding);border-style:var(--border-style);border-width:var(--border-width);border-color:var(--border-color);background-color:var(--color-input-background);font-family:inherit;font-size:inherit;resize:vertical;width:100%}.mtds .textarea:focus-visible{outline-color:color-mix(in srgb,black 10%,var(--border-color))}.mtds .textarea.size-small{padding:var(--size-small)}.mtds .textarea.size-medium{padding:var(--size-medium)}.mtds .textarea.size-large{padding:var(--size-large)}.mtds .textbox{--margin: 0;--size-small: .4em;--size-medium: .8em;--size-large: 1.2em;--border-style: solid;--border-color: var(--color-border);--border-width: var(--width-border);margin:var(--margin);border-style:var(--border-style);border-width:var(--border-width);border-color:var(--border-color);background-color:var(--color-input-background);font-family:inherit;font-size:inherit}.mtds .textbox:focus-visible{outline-color:color-mix(in srgb,black 10%,var(--border-color))}.mtds .textbox.size-small{padding:var(--size-small)}.mtds .textbox.size-medium{padding:var(--size-medium)}.mtds .textbox.size-large{padding:var(--size-large)}.mtds .title{--margin: 0 0 .8em 0;--size-large: 2em;--size-medium: 1.5em;--size-small: 1em;margin:var(--margin)}.mtds .title.size-large{font-size:var(--size-large)}.mtds .title.size-medium{font-size:var(--size-medium)}.mtds .title.size-small{font-size:var(--size-small)}