@14ch/svelte-ui 0.0.36 → 0.0.38

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.
@@ -30,13 +30,17 @@
30
30
 
31
31
  // HTML属性系
32
32
  id?: string;
33
+
33
34
  // スタイル/レイアウト
34
35
  /** Radio button size. @default 'medium' */
35
36
  size?: 'small' | 'medium' | 'large';
37
+ customStyle?: string;
36
38
 
37
39
  // 状態/動作
38
40
  /** Disables this radio button. @default false */
39
41
  disabled?: boolean;
42
+ /** Stretches the radio to fill its container width. @default false */
43
+ fullWidth?: boolean;
40
44
  required?: boolean;
41
45
 
42
46
  // ARIA/アクセシビリティ
@@ -97,9 +101,11 @@
97
101
 
98
102
  // スタイル/レイアウト
99
103
  size = 'medium',
104
+ customStyle = '',
100
105
 
101
106
  // 状態/動作
102
107
  disabled = false,
108
+ fullWidth = false,
103
109
  required = false,
104
110
 
105
111
  // ARIA/アクセシビリティ
@@ -310,13 +316,19 @@
310
316
  const isChecked: boolean = $derived(currentValue === value);
311
317
 
312
318
  const containerClasses = $derived(
313
- ['radio', `radio--${size}`, disabled && 'radio--disabled', reducedMotion && 'radio--no-motion']
319
+ [
320
+ 'radio',
321
+ `radio--${size}`,
322
+ disabled && 'radio--disabled',
323
+ fullWidth && 'radio--full-width',
324
+ reducedMotion && 'radio--no-motion'
325
+ ]
314
326
  .filter(Boolean)
315
327
  .join(' ')
316
328
  );
317
329
  </script>
318
330
 
319
- <div class={containerClasses} data-testid="radio">
331
+ <label class={containerClasses} style={customStyle} data-testid="radio">
320
332
  <input
321
333
  type="radio"
322
334
  checked={isChecked}
@@ -352,14 +364,14 @@
352
364
  onchange={handleChange}
353
365
  {...restProps}
354
366
  />
355
- <label for={id} class="radio__icon"></label>
367
+ <span class="radio__icon"></span>
356
368
 
357
369
  {#if children}
358
- <label for={id} class="radio__label">
370
+ <span class="radio__label">
359
371
  {@render children()}
360
- </label>
372
+ </span>
361
373
  {/if}
362
- </div>
374
+ </label>
363
375
 
364
376
  <style>
365
377
  /* =============================================
@@ -368,11 +380,12 @@
368
380
 
369
381
  .radio {
370
382
  display: inline-flex;
371
- align-items: center;
383
+ align-items: flex-start;
372
384
  width: fit-content;
373
385
  min-height: var(--svelte-ui-radio-min-height);
374
386
  vertical-align: top;
375
387
  contain: layout;
388
+ cursor: pointer;
376
389
  }
377
390
 
378
391
  .radio input[type='radio'] {
@@ -382,20 +395,18 @@
382
395
  margin: 0;
383
396
  line-height: 1px;
384
397
  opacity: 0;
385
- cursor: pointer;
386
398
  }
387
399
 
388
400
  /* Label */
389
401
  .radio__label {
390
402
  display: block;
391
403
  padding-left: var(--svelte-ui-radio-gap);
392
- white-space: nowrap;
393
404
  font-size: inherit;
394
405
  color: inherit;
395
406
  line-height: var(--svelte-ui-radio-line-height);
396
- cursor: pointer;
397
407
  text-box-trim: trim-both;
398
408
  text-box-edge: cap alphabetic;
409
+ margin-block: calc((var(--svelte-ui-radio-min-height) - 1cap) / 2);
399
410
  }
400
411
 
401
412
  /* Icon */
@@ -404,11 +415,11 @@
404
415
  display: flex;
405
416
  align-items: center;
406
417
  width: var(--svelte-ui-radio-size);
407
- white-space: nowrap;
418
+ height: var(--svelte-ui-radio-size);
408
419
  font-size: inherit;
409
420
  color: inherit;
410
- cursor: pointer;
411
- min-height: var(--svelte-ui-radio-min-height);
421
+ flex-shrink: 0;
422
+ margin-block: calc((var(--svelte-ui-radio-min-height) - var(--svelte-ui-radio-size)) / 2);
412
423
  }
413
424
 
414
425
  .radio__icon::before,
@@ -453,13 +464,19 @@
453
464
  /* =============================================
454
465
  * Status
455
466
  * ============================================= */
467
+ .radio--full-width {
468
+ width: 100%;
469
+ }
470
+
471
+ .radio--full-width .radio__label {
472
+ flex: 1;
473
+ }
474
+
456
475
  .radio--disabled {
457
476
  opacity: var(--svelte-ui-button-disabled-opacity);
458
477
  }
459
478
 
460
- .radio--disabled input[type='radio'],
461
- .radio--disabled .radio__icon,
462
- .radio--disabled .radio__label {
479
+ .radio--disabled {
463
480
  cursor: not-allowed;
464
481
  }
465
482
 
@@ -493,7 +510,12 @@
493
510
 
494
511
  .radio--small .radio__icon {
495
512
  width: var(--svelte-ui-radio-size-sm);
496
- min-height: var(--svelte-ui-radio-min-height-sm);
513
+ height: var(--svelte-ui-radio-size-sm);
514
+ margin-block: calc((var(--svelte-ui-radio-min-height-sm) - var(--svelte-ui-radio-size-sm)) / 2);
515
+ }
516
+
517
+ .radio--small .radio__label {
518
+ margin-block: calc((var(--svelte-ui-radio-min-height-sm) - 1cap) / 2);
497
519
  }
498
520
 
499
521
  .radio--small .radio__icon::after {
@@ -517,7 +539,12 @@
517
539
 
518
540
  .radio--large .radio__icon {
519
541
  width: var(--svelte-ui-radio-size-lg);
520
- min-height: var(--svelte-ui-radio-min-height-lg);
542
+ height: var(--svelte-ui-radio-size-lg);
543
+ margin-block: calc((var(--svelte-ui-radio-min-height-lg) - var(--svelte-ui-radio-size-lg)) / 2);
544
+ }
545
+
546
+ .radio--large .radio__label {
547
+ margin-block: calc((var(--svelte-ui-radio-min-height-lg) - 1cap) / 2);
521
548
  }
522
549
 
523
550
  .radio--large .radio__icon::after {
@@ -13,8 +13,11 @@ export type RadioProps = {
13
13
  id?: string;
14
14
  /** Radio button size. @default 'medium' */
15
15
  size?: 'small' | 'medium' | 'large';
16
+ customStyle?: string;
16
17
  /** Disables this radio button. @default false */
17
18
  disabled?: boolean;
19
+ /** Stretches the radio to fill its container width. @default false */
20
+ fullWidth?: boolean;
18
21
  required?: boolean;
19
22
  /** Disables animations for users who prefer reduced motion. @default false */
20
23
  reducedMotion?: boolean;
@@ -26,9 +26,12 @@
26
26
  // スタイル/レイアウト
27
27
  /** @default 'medium' */
28
28
  size?: 'small' | 'medium' | 'large';
29
+ customStyle?: string;
29
30
 
30
31
  // 状態/動作
31
32
  disabled?: boolean;
33
+ /** Stretches the switch to fill its container width. @default false */
34
+ fullWidth?: boolean;
32
35
  required?: boolean;
33
36
 
34
37
  // ARIA/アクセシビリティ
@@ -87,9 +90,11 @@
87
90
 
88
91
  // スタイル/レイアウト
89
92
  size = 'medium',
93
+ customStyle = '',
90
94
 
91
95
  // 状態/動作
92
96
  disabled = false,
97
+ fullWidth = false,
93
98
  required = false,
94
99
 
95
100
  // ARIA/アクセシビリティ
@@ -271,14 +276,16 @@
271
276
  };
272
277
  </script>
273
278
 
274
- <div
279
+ <label
275
280
  class="switch"
276
281
  class:switch--small={size === 'small'}
277
282
  class:switch--medium={size === 'medium'}
278
283
  class:switch--large={size === 'large'}
279
284
  class:switch--disabled={disabled}
285
+ class:switch--full-width={fullWidth}
280
286
  class:switch--checked={value}
281
287
  class:switch--reduced-motion={reducedMotion}
288
+ style={customStyle}
282
289
  data-testid="switch"
283
290
  >
284
291
  <input
@@ -316,16 +323,16 @@
316
323
  {...restProps}
317
324
  />
318
325
 
319
- <label for={id} class="switch__track">
326
+ <span class="switch__track">
320
327
  <span class="switch-thumb"></span>
321
- </label>
328
+ </span>
322
329
 
323
- <label for={id} class="switch__label" class:switch__label--disabled={disabled}>
330
+ <span class="switch__label" class:switch__label--disabled={disabled}>
324
331
  {#if children}
325
332
  {@render children()}
326
333
  {/if}
327
- </label>
328
- </div>
334
+ </span>
335
+ </label>
329
336
 
330
337
  <style>@charset "UTF-8";
331
338
  /* =============================================
@@ -333,9 +340,19 @@
333
340
  * ============================================= */
334
341
  .switch {
335
342
  display: inline-flex;
336
- align-items: center;
343
+ align-items: flex-start;
337
344
  width: fit-content;
345
+ min-height: var(--svelte-ui-switch-min-height);
338
346
  contain: layout;
347
+ cursor: pointer;
348
+ }
349
+
350
+ .switch--full-width {
351
+ width: 100%;
352
+ }
353
+
354
+ .switch--full-width .switch__label {
355
+ flex: 1;
339
356
  }
340
357
 
341
358
  .switch--disabled {
@@ -358,15 +375,13 @@
358
375
  .switch__label {
359
376
  display: block;
360
377
  padding-left: var(--svelte-ui-switch-gap);
361
- white-space: nowrap;
362
378
  line-height: var(--svelte-ui-checkbox-line-height);
363
- cursor: pointer;
364
379
  text-box-trim: trim-both;
365
380
  text-box-edge: cap alphabetic;
366
381
  user-select: none;
382
+ margin-block: calc((var(--svelte-ui-switch-min-height) - 1cap) / 2);
367
383
  }
368
384
  .switch__label--disabled {
369
- cursor: not-allowed;
370
385
  opacity: 0.5;
371
386
  }
372
387
 
@@ -378,7 +393,7 @@
378
393
  border-radius: var(--switch-border-radius);
379
394
  transition: background-color var(--svelte-ui-transition-duration) ease, filter var(--svelte-ui-transition-duration) ease;
380
395
  flex-shrink: 0;
381
- cursor: pointer;
396
+ margin-block: calc((var(--svelte-ui-switch-min-height) - var(--switch-height, var(--svelte-ui-switch-height))) / 2);
382
397
  }
383
398
  .switch--checked .switch__track {
384
399
  background-color: var(--switch-active-color, var(--svelte-ui-switch-active-color));
@@ -412,6 +427,15 @@
412
427
  --switch-thumb-margin: var(--svelte-ui-switch-thumb-margin);
413
428
  --switch-border-radius: var(--svelte-ui-switch-border-radius);
414
429
  --switch-thumb-border-radius: var(--svelte-ui-switch-thumb-border-radius);
430
+ min-height: var(--svelte-ui-switch-min-height-sm);
431
+ }
432
+
433
+ .switch--small .switch__track {
434
+ margin-block: calc((var(--svelte-ui-switch-min-height-sm) - var(--svelte-ui-switch-height-sm)) / 2);
435
+ }
436
+
437
+ .switch--small .switch__label {
438
+ margin-block: calc((var(--svelte-ui-switch-min-height-sm) - 1cap) / 2);
415
439
  }
416
440
 
417
441
  .switch--medium {
@@ -430,6 +454,15 @@
430
454
  --switch-thumb-margin: var(--svelte-ui-switch-thumb-margin);
431
455
  --switch-border-radius: var(--svelte-ui-switch-border-radius);
432
456
  --switch-thumb-border-radius: var(--svelte-ui-switch-thumb-border-radius);
457
+ min-height: var(--svelte-ui-switch-min-height-lg);
458
+ }
459
+
460
+ .switch--large .switch__track {
461
+ margin-block: calc((var(--svelte-ui-switch-min-height-lg) - var(--svelte-ui-switch-height-lg)) / 2);
462
+ }
463
+
464
+ .switch--large .switch__label {
465
+ margin-block: calc((var(--svelte-ui-switch-min-height-lg) - 1cap) / 2);
433
466
  }
434
467
 
435
468
  /* =============================================
@@ -448,12 +481,30 @@
448
481
  .switch {
449
482
  min-height: var(--svelte-ui-touch-target);
450
483
  }
484
+ .switch__track {
485
+ margin-block: calc((var(--svelte-ui-touch-target) - var(--switch-height, var(--svelte-ui-switch-height))) / 2);
486
+ }
487
+ .switch__label {
488
+ margin-block: calc((var(--svelte-ui-touch-target) - 1cap) / 2);
489
+ }
451
490
  .switch--small {
452
491
  min-height: var(--svelte-ui-touch-target-sm);
453
492
  }
493
+ .switch--small .switch__track {
494
+ margin-block: calc((var(--svelte-ui-touch-target-sm) - var(--switch-height, var(--svelte-ui-switch-height-sm))) / 2);
495
+ }
496
+ .switch--small .switch__label {
497
+ margin-block: calc((var(--svelte-ui-touch-target-sm) - 1cap) / 2);
498
+ }
454
499
  .switch--large {
455
500
  min-height: var(--svelte-ui-touch-target-lg);
456
501
  }
502
+ .switch--large .switch__track {
503
+ margin-block: calc((var(--svelte-ui-touch-target-lg) - var(--switch-height, var(--svelte-ui-switch-height-lg))) / 2);
504
+ }
505
+ .switch--large .switch__label {
506
+ margin-block: calc((var(--svelte-ui-touch-target-lg) - 1cap) / 2);
507
+ }
457
508
  }
458
509
  .switch--reduced-motion * {
459
510
  transition: none !important;
@@ -7,7 +7,10 @@ export type SwitchProps = {
7
7
  id?: string;
8
8
  /** @default 'medium' */
9
9
  size?: 'small' | 'medium' | 'large';
10
+ customStyle?: string;
10
11
  disabled?: boolean;
12
+ /** Stretches the switch to fill its container width. @default false */
13
+ fullWidth?: boolean;
11
14
  required?: boolean;
12
15
  /** Disables animations for accessibility. @default false */
13
16
  reducedMotion?: boolean;
@@ -699,12 +699,6 @@
699
699
  transition: none;
700
700
  overflow-y: auto;
701
701
  overflow-x: hidden;
702
- scrollbar-width: none; /* Firefox */
703
- -ms-overflow-style: none; /* IE and Edge */
704
-
705
- &::-webkit-scrollbar {
706
- display: none; /* Chrome, Safari, Opera */
707
- }
708
702
 
709
703
  &::before {
710
704
  content: '';
@@ -715,6 +709,20 @@
715
709
  }
716
710
  }
717
711
 
712
+ /* display-text: スクロールバーの幅を確保しつつ透明にする(textarea と幅を一致させる) */
713
+ .textarea__display-text {
714
+ scrollbar-color: transparent transparent;
715
+ }
716
+
717
+ /* link-text: 絶対配置のオーバーレイなのでスクロールバーを完全に非表示 */
718
+ .textarea__link-text {
719
+ scrollbar-width: none;
720
+
721
+ &::-webkit-scrollbar {
722
+ display: none;
723
+ }
724
+ }
725
+
718
726
  /* クリック可能なリンク用オーバーレイ */
719
727
  .textarea__link-text {
720
728
  position: absolute;
@@ -33,6 +33,10 @@ export declare const TRANSLATIONS: {
33
33
  readonly select: {
34
34
  readonly accessibleName: "Select option";
35
35
  };
36
+ readonly multiSelect: {
37
+ readonly accessibleName: "Select options";
38
+ readonly placeholder: "Select options";
39
+ };
36
40
  readonly slider: {
37
41
  readonly accessibleName: "Slider";
38
42
  };
@@ -88,6 +92,10 @@ export declare const TRANSLATIONS: {
88
92
  readonly select: {
89
93
  readonly accessibleName: "選択";
90
94
  };
95
+ readonly multiSelect: {
96
+ readonly accessibleName: "複数選択";
97
+ readonly placeholder: "選択してください";
98
+ };
91
99
  readonly slider: {
92
100
  readonly accessibleName: "スライダー";
93
101
  };
@@ -143,6 +151,10 @@ export declare const TRANSLATIONS: {
143
151
  readonly select: {
144
152
  readonly accessibleName: "Choisir une option";
145
153
  };
154
+ readonly multiSelect: {
155
+ readonly accessibleName: "Sélectionner des options";
156
+ readonly placeholder: "Sélectionnez des options";
157
+ };
146
158
  readonly slider: {
147
159
  readonly accessibleName: "Curseur";
148
160
  };
@@ -198,6 +210,10 @@ export declare const TRANSLATIONS: {
198
210
  readonly select: {
199
211
  readonly accessibleName: "Option auswählen";
200
212
  };
213
+ readonly multiSelect: {
214
+ readonly accessibleName: "Optionen auswählen";
215
+ readonly placeholder: "Bitte wählen";
216
+ };
201
217
  readonly slider: {
202
218
  readonly accessibleName: "Schieberegler";
203
219
  };
@@ -253,6 +269,10 @@ export declare const TRANSLATIONS: {
253
269
  readonly select: {
254
270
  readonly accessibleName: "Seleccionar opción";
255
271
  };
272
+ readonly multiSelect: {
273
+ readonly accessibleName: "Seleccionar opciones";
274
+ readonly placeholder: "Seleccione opciones";
275
+ };
256
276
  readonly slider: {
257
277
  readonly accessibleName: "Control deslizante";
258
278
  };
@@ -308,6 +328,10 @@ export declare const TRANSLATIONS: {
308
328
  readonly select: {
309
329
  readonly accessibleName: "选择";
310
330
  };
331
+ readonly multiSelect: {
332
+ readonly accessibleName: "多选";
333
+ readonly placeholder: "请选择";
334
+ };
311
335
  readonly slider: {
312
336
  readonly accessibleName: "滑块";
313
337
  };
@@ -31,6 +31,10 @@ export declare const de: {
31
31
  readonly select: {
32
32
  readonly accessibleName: "Option auswählen";
33
33
  };
34
+ readonly multiSelect: {
35
+ readonly accessibleName: "Optionen auswählen";
36
+ readonly placeholder: "Bitte wählen";
37
+ };
34
38
  readonly slider: {
35
39
  readonly accessibleName: "Schieberegler";
36
40
  };
@@ -31,6 +31,10 @@ export const de = {
31
31
  select: {
32
32
  accessibleName: 'Option auswählen'
33
33
  },
34
+ multiSelect: {
35
+ accessibleName: 'Optionen auswählen',
36
+ placeholder: 'Bitte wählen'
37
+ },
34
38
  slider: {
35
39
  accessibleName: 'Schieberegler'
36
40
  },
@@ -31,6 +31,10 @@ export declare const en: {
31
31
  readonly select: {
32
32
  readonly accessibleName: "Select option";
33
33
  };
34
+ readonly multiSelect: {
35
+ readonly accessibleName: "Select options";
36
+ readonly placeholder: "Select options";
37
+ };
34
38
  readonly slider: {
35
39
  readonly accessibleName: "Slider";
36
40
  };
@@ -31,6 +31,10 @@ export const en = {
31
31
  select: {
32
32
  accessibleName: 'Select option'
33
33
  },
34
+ multiSelect: {
35
+ accessibleName: 'Select options',
36
+ placeholder: 'Select options'
37
+ },
34
38
  slider: {
35
39
  accessibleName: 'Slider'
36
40
  },
@@ -31,6 +31,10 @@ export declare const es: {
31
31
  readonly select: {
32
32
  readonly accessibleName: "Seleccionar opción";
33
33
  };
34
+ readonly multiSelect: {
35
+ readonly accessibleName: "Seleccionar opciones";
36
+ readonly placeholder: "Seleccione opciones";
37
+ };
34
38
  readonly slider: {
35
39
  readonly accessibleName: "Control deslizante";
36
40
  };
@@ -31,6 +31,10 @@ export const es = {
31
31
  select: {
32
32
  accessibleName: 'Seleccionar opción'
33
33
  },
34
+ multiSelect: {
35
+ accessibleName: 'Seleccionar opciones',
36
+ placeholder: 'Seleccione opciones'
37
+ },
34
38
  slider: {
35
39
  accessibleName: 'Control deslizante'
36
40
  },
@@ -31,6 +31,10 @@ export declare const fr: {
31
31
  readonly select: {
32
32
  readonly accessibleName: "Choisir une option";
33
33
  };
34
+ readonly multiSelect: {
35
+ readonly accessibleName: "Sélectionner des options";
36
+ readonly placeholder: "Sélectionnez des options";
37
+ };
34
38
  readonly slider: {
35
39
  readonly accessibleName: "Curseur";
36
40
  };
@@ -31,6 +31,10 @@ export const fr = {
31
31
  select: {
32
32
  accessibleName: 'Choisir une option'
33
33
  },
34
+ multiSelect: {
35
+ accessibleName: 'Sélectionner des options',
36
+ placeholder: 'Sélectionnez des options'
37
+ },
34
38
  slider: {
35
39
  accessibleName: 'Curseur'
36
40
  },
@@ -31,6 +31,10 @@ export declare const ja: {
31
31
  readonly select: {
32
32
  readonly accessibleName: "選択";
33
33
  };
34
+ readonly multiSelect: {
35
+ readonly accessibleName: "複数選択";
36
+ readonly placeholder: "選択してください";
37
+ };
34
38
  readonly slider: {
35
39
  readonly accessibleName: "スライダー";
36
40
  };
@@ -31,6 +31,10 @@ export const ja = {
31
31
  select: {
32
32
  accessibleName: '選択'
33
33
  },
34
+ multiSelect: {
35
+ accessibleName: '複数選択',
36
+ placeholder: '選択してください'
37
+ },
34
38
  slider: {
35
39
  accessibleName: 'スライダー'
36
40
  },
@@ -31,6 +31,10 @@ export declare const zhCn: {
31
31
  readonly select: {
32
32
  readonly accessibleName: "选择";
33
33
  };
34
+ readonly multiSelect: {
35
+ readonly accessibleName: "多选";
36
+ readonly placeholder: "请选择";
37
+ };
34
38
  readonly slider: {
35
39
  readonly accessibleName: "滑块";
36
40
  };
@@ -31,6 +31,10 @@ export const zhCn = {
31
31
  select: {
32
32
  accessibleName: '选择'
33
33
  },
34
+ multiSelect: {
35
+ accessibleName: '多选',
36
+ placeholder: '请选择'
37
+ },
34
38
  slider: {
35
39
  accessibleName: '滑块'
36
40
  },
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export { default as ImageUploader } from './components/ImageUploader.svelte';
16
16
  export { default as Input } from './components/Input.svelte';
17
17
  export { default as LoadingSpinner } from './components/LoadingSpinner.svelte';
18
18
  export { default as Modal } from './components/Modal.svelte';
19
+ export { default as MultiSelect } from './components/MultiSelect.svelte';
19
20
  export { default as Pagination } from './components/Pagination.svelte';
20
21
  export { default as Popup } from './components/Popup.svelte';
21
22
  export { default as PopupMenu } from './components/PopupMenu.svelte';
@@ -55,6 +56,7 @@ export type { ImageUploaderPreviewProps } from './components/ImageUploaderPrevie
55
56
  export type { InputProps } from './components/Input.svelte';
56
57
  export type { LoadingSpinnerProps } from './components/LoadingSpinner.svelte';
57
58
  export type { ModalProps } from './components/Modal.svelte';
59
+ export type { MultiSelectProps } from './components/MultiSelect.svelte';
58
60
  export type { PaginationProps } from './components/Pagination.svelte';
59
61
  export type { PopupProps } from './components/Popup.svelte';
60
62
  export type { PopupMenuProps } from './components/PopupMenu.svelte';
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ export { default as ImageUploader } from './components/ImageUploader.svelte';
17
17
  export { default as Input } from './components/Input.svelte';
18
18
  export { default as LoadingSpinner } from './components/LoadingSpinner.svelte';
19
19
  export { default as Modal } from './components/Modal.svelte';
20
+ export { default as MultiSelect } from './components/MultiSelect.svelte';
20
21
  export { default as Pagination } from './components/Pagination.svelte';
21
22
  export { default as Popup } from './components/Popup.svelte';
22
23
  export { default as PopupMenu } from './components/PopupMenu.svelte';
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@14ch/svelte-ui",
3
3
  "description": "Modern Svelte UI components library with TypeScript support",
4
4
  "private": false,
5
- "version": "0.0.36",
5
+ "version": "0.0.38",
6
6
  "type": "module",
7
7
  "keywords": [
8
8
  "svelte",