@14ch/svelte-ui 0.0.12 → 0.0.13

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.
Files changed (86) hide show
  1. package/dist/assets/styles/variables.scss +0 -6
  2. package/dist/components/Button.svelte +75 -73
  3. package/dist/components/Button.svelte.d.ts +2 -2
  4. package/dist/components/Checkbox.svelte +78 -77
  5. package/dist/components/Checkbox.svelte.d.ts +4 -4
  6. package/dist/components/CheckboxGroup.svelte +42 -26
  7. package/dist/components/CheckboxGroup.svelte.d.ts +2 -2
  8. package/dist/components/ColorPicker.svelte +63 -61
  9. package/dist/components/ColorPicker.svelte.d.ts +2 -2
  10. package/dist/components/Combobox.svelte +71 -76
  11. package/dist/components/Combobox.svelte.d.ts +2 -2
  12. package/dist/components/ConfirmDialog.svelte +24 -22
  13. package/dist/components/ConfirmDialog.svelte.d.ts +2 -2
  14. package/dist/components/Datepicker.svelte +121 -81
  15. package/dist/components/Datepicker.svelte.d.ts +6 -4
  16. package/dist/components/DatepickerCalendar.svelte +23 -18
  17. package/dist/components/DatepickerCalendar.svelte.d.ts +2 -2
  18. package/dist/components/Dialog.svelte +30 -28
  19. package/dist/components/Dialog.svelte.d.ts +2 -2
  20. package/dist/components/Drawer.svelte +31 -29
  21. package/dist/components/Drawer.svelte.d.ts +2 -2
  22. package/dist/components/Fab.svelte +56 -54
  23. package/dist/components/Fab.svelte.d.ts +2 -2
  24. package/dist/components/FileUploader.svelte +51 -49
  25. package/dist/components/FileUploader.svelte.d.ts +2 -2
  26. package/dist/components/Icon.svelte +29 -27
  27. package/dist/components/Icon.svelte.d.ts +2 -2
  28. package/dist/components/IconButton.svelte +81 -79
  29. package/dist/components/IconButton.svelte.d.ts +2 -2
  30. package/dist/components/ImageUploader.svelte +53 -51
  31. package/dist/components/ImageUploader.svelte.d.ts +2 -2
  32. package/dist/components/ImageUploaderPreview.svelte +33 -20
  33. package/dist/components/ImageUploaderPreview.svelte.d.ts +2 -2
  34. package/dist/components/Input.svelte +97 -93
  35. package/dist/components/Input.svelte.d.ts +2 -2
  36. package/dist/components/LoadingSpinner.svelte +14 -13
  37. package/dist/components/LoadingSpinner.svelte.d.ts +2 -2
  38. package/dist/components/Modal.svelte +26 -24
  39. package/dist/components/Modal.svelte.d.ts +2 -2
  40. package/dist/components/Pagination.svelte +20 -28
  41. package/dist/components/Pagination.svelte.d.ts +2 -2
  42. package/dist/components/Popup.svelte +46 -46
  43. package/dist/components/Popup.svelte.d.ts +3 -3
  44. package/dist/components/PopupMenu.svelte +90 -90
  45. package/dist/components/PopupMenu.svelte.d.ts +2 -2
  46. package/dist/components/PopupMenuButton.svelte +61 -61
  47. package/dist/components/PopupMenuButton.svelte.d.ts +2 -2
  48. package/dist/components/Radio.svelte +64 -63
  49. package/dist/components/Radio.svelte.d.ts +2 -2
  50. package/dist/components/RadioGroup.svelte +38 -26
  51. package/dist/components/RadioGroup.svelte.d.ts +2 -2
  52. package/dist/components/SegmentedControl.svelte +71 -69
  53. package/dist/components/SegmentedControl.svelte.d.ts +4 -4
  54. package/dist/components/Select.svelte +65 -65
  55. package/dist/components/Select.svelte.d.ts +2 -2
  56. package/dist/components/Slider.svelte +65 -64
  57. package/dist/components/Slider.svelte.d.ts +5 -5
  58. package/dist/components/Snackbar.svelte +10 -9
  59. package/dist/components/Snackbar.svelte.d.ts +2 -2
  60. package/dist/components/SnackbarItem.svelte +28 -28
  61. package/dist/components/SnackbarItem.svelte.d.ts +2 -2
  62. package/dist/components/Switch.svelte +62 -62
  63. package/dist/components/Switch.svelte.d.ts +4 -4
  64. package/dist/components/Tab.svelte +31 -20
  65. package/dist/components/Tab.svelte.d.ts +3 -2
  66. package/dist/components/TabItem.svelte +20 -19
  67. package/dist/components/TabItem.svelte.d.ts +2 -2
  68. package/dist/components/Textarea.svelte +82 -82
  69. package/dist/components/Textarea.svelte.d.ts +5 -5
  70. package/dist/components/skeleton/Skeleton.svelte +16 -14
  71. package/dist/components/skeleton/Skeleton.svelte.d.ts +2 -2
  72. package/dist/components/skeleton/SkeletonAvatar.svelte +9 -5
  73. package/dist/components/skeleton/SkeletonAvatar.svelte.d.ts +2 -2
  74. package/dist/components/skeleton/SkeletonBox.svelte +11 -11
  75. package/dist/components/skeleton/SkeletonBox.svelte.d.ts +2 -2
  76. package/dist/components/skeleton/SkeletonButton.svelte +10 -5
  77. package/dist/components/skeleton/SkeletonButton.svelte.d.ts +2 -2
  78. package/dist/components/skeleton/SkeletonHeading.svelte +8 -11
  79. package/dist/components/skeleton/SkeletonHeading.svelte.d.ts +2 -2
  80. package/dist/components/skeleton/SkeletonMedia.svelte +10 -6
  81. package/dist/components/skeleton/SkeletonMedia.svelte.d.ts +2 -2
  82. package/dist/components/skeleton/SkeletonText.svelte +9 -13
  83. package/dist/components/skeleton/SkeletonText.svelte.d.ts +2 -2
  84. package/dist/index.d.ts +41 -0
  85. package/dist/utils/formatText.js +4 -1
  86. package/package.json +1 -1
@@ -18,6 +18,86 @@
18
18
  // =========================================================================
19
19
  // Props, States & Constants
20
20
  // =========================================================================
21
+ export type IconButtonProps = {
22
+ // Snippet
23
+ children: Snippet;
24
+
25
+ // HTML属性系
26
+ buttonAttributes?: HTMLButtonAttributes | undefined;
27
+ type?: 'button' | 'submit' | 'reset' | null | undefined;
28
+ tabindex?: number | null;
29
+
30
+ // スタイル/レイアウト
31
+ customStyle?: HTMLButtonAttributes['style'];
32
+ variant?: 'ghost' | 'filled' | 'outlined' | 'glass';
33
+ size?: number;
34
+ fontSize?: number;
35
+ color?: string;
36
+ rounded?: boolean;
37
+
38
+ // アイコン関連
39
+ icon?: string;
40
+ iconFilled?: boolean;
41
+ iconWeight?: IconWeight;
42
+ iconGrade?: IconGrade;
43
+ iconOpticalSize?: IconOpticalSize;
44
+ iconVariant?: IconVariant;
45
+
46
+ // バッジ関連
47
+ hasBadge?: boolean;
48
+ badgeCount?: number;
49
+ badgeVariant?: 'dot' | 'count';
50
+ badgeColor?: string;
51
+ badgeMax?: number;
52
+
53
+ // 状態/動作
54
+ disabled?: boolean;
55
+ loading?: boolean;
56
+ pressed?: boolean;
57
+
58
+ // ARIA/アクセシビリティ
59
+ ariaLabel: string;
60
+ ariaDescribedby?: string;
61
+ ariaPressed?: boolean;
62
+ reducedMotion?: boolean;
63
+
64
+ // フォーカスイベント
65
+ onfocus?: FocusHandler;
66
+ onblur?: FocusHandler;
67
+
68
+ // キーボードイベント
69
+ onkeydown?: KeyboardHandler;
70
+ onkeyup?: KeyboardHandler;
71
+
72
+ // マウスイベント
73
+ onclick?: MouseHandler;
74
+ onmousedown?: MouseHandler;
75
+ onmouseup?: MouseHandler;
76
+ onmouseenter?: MouseHandler;
77
+ onmouseleave?: MouseHandler;
78
+ onmouseover?: MouseHandler;
79
+ onmouseout?: MouseHandler;
80
+ oncontextmenu?: MouseHandler;
81
+ onauxclick?: MouseHandler;
82
+
83
+ // タッチイベント
84
+ ontouchstart?: TouchHandler;
85
+ ontouchend?: TouchHandler;
86
+ ontouchmove?: TouchHandler;
87
+ ontouchcancel?: TouchHandler;
88
+
89
+ // ポインターイベント
90
+ onpointerdown?: PointerHandler;
91
+ onpointerup?: PointerHandler;
92
+ onpointerenter?: PointerHandler;
93
+ onpointerleave?: PointerHandler;
94
+ onpointermove?: PointerHandler;
95
+ onpointercancel?: PointerHandler;
96
+
97
+ // その他
98
+ [key: string]: any;
99
+ };
100
+
21
101
  let {
22
102
  // 基本プロパティ
23
103
  children,
@@ -96,85 +176,7 @@
96
176
 
97
177
  // その他
98
178
  ...restProps
99
- }: {
100
- // Snippet
101
- children: Snippet;
102
-
103
- // HTML属性系
104
- buttonAttributes?: HTMLButtonAttributes | undefined;
105
- type?: 'button' | 'submit' | 'reset' | null | undefined;
106
- tabindex?: number | null;
107
-
108
- // スタイル/レイアウト
109
- customStyle?: HTMLButtonAttributes['style'];
110
- variant?: 'ghost' | 'filled' | 'outlined' | 'glass';
111
- size?: number;
112
- fontSize?: number;
113
- color?: string;
114
- rounded?: boolean;
115
-
116
- // アイコン関連
117
- icon?: string;
118
- iconFilled?: boolean;
119
- iconWeight?: IconWeight;
120
- iconGrade?: IconGrade;
121
- iconOpticalSize?: IconOpticalSize;
122
- iconVariant?: IconVariant;
123
-
124
- // バッジ関連
125
- hasBadge?: boolean;
126
- badgeCount?: number;
127
- badgeVariant?: 'dot' | 'count';
128
- badgeColor?: string;
129
- badgeMax?: number;
130
-
131
- // 状態/動作
132
- disabled?: boolean;
133
- loading?: boolean;
134
- pressed?: boolean;
135
-
136
- // ARIA/アクセシビリティ
137
- ariaLabel: string;
138
- ariaDescribedby?: string;
139
- ariaPressed?: boolean;
140
- reducedMotion?: boolean;
141
-
142
- // フォーカスイベント
143
- onfocus?: FocusHandler;
144
- onblur?: FocusHandler;
145
-
146
- // キーボードイベント
147
- onkeydown?: KeyboardHandler;
148
- onkeyup?: KeyboardHandler;
149
-
150
- // マウスイベント
151
- onclick?: MouseHandler;
152
- onmousedown?: MouseHandler;
153
- onmouseup?: MouseHandler;
154
- onmouseenter?: MouseHandler;
155
- onmouseleave?: MouseHandler;
156
- onmouseover?: MouseHandler;
157
- onmouseout?: MouseHandler;
158
- oncontextmenu?: MouseHandler;
159
- onauxclick?: MouseHandler;
160
-
161
- // タッチイベント
162
- ontouchstart?: TouchHandler;
163
- ontouchend?: TouchHandler;
164
- ontouchmove?: TouchHandler;
165
- ontouchcancel?: TouchHandler;
166
-
167
- // ポインターイベント
168
- onpointerdown?: PointerHandler;
169
- onpointerup?: PointerHandler;
170
- onpointerenter?: PointerHandler;
171
- onpointerleave?: PointerHandler;
172
- onpointermove?: PointerHandler;
173
- onpointercancel?: PointerHandler;
174
-
175
- // その他
176
- [key: string]: any;
177
- } = $props();
179
+ }: IconButtonProps = $props();
178
180
 
179
181
  // =========================================================================
180
182
  // Methods
@@ -2,7 +2,7 @@ import type { Snippet } from 'svelte';
2
2
  import type { HTMLButtonAttributes } from 'svelte/elements';
3
3
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
4
4
  import type { FocusHandler, KeyboardHandler, MouseHandler, TouchHandler, PointerHandler } from '../types/eventHandlers';
5
- type $$ComponentProps = {
5
+ export type IconButtonProps = {
6
6
  children: Snippet;
7
7
  buttonAttributes?: HTMLButtonAttributes | undefined;
8
8
  type?: 'button' | 'submit' | 'reset' | null | undefined;
@@ -56,6 +56,6 @@ type $$ComponentProps = {
56
56
  onpointercancel?: PointerHandler;
57
57
  [key: string]: any;
58
58
  };
59
- declare const IconButton: import("svelte").Component<$$ComponentProps, {}, "">;
59
+ declare const IconButton: import("svelte").Component<IconButtonProps, {}, "">;
60
60
  type IconButton = ReturnType<typeof IconButton>;
61
61
  export default IconButton;
@@ -20,6 +20,58 @@
20
20
  // =========================================================================
21
21
  // Props, States & Constants
22
22
  // =========================================================================
23
+ export type ImageUploaderProps = {
24
+ // 基本プロパティ
25
+ value: FileList | null | undefined;
26
+ multiple?: boolean;
27
+ maxFileSize?: number;
28
+ placeholder?: string;
29
+
30
+ // HTML属性系
31
+ id?: string;
32
+ accept?: string;
33
+
34
+ // スタイル/レイアウト
35
+ width?: string | number;
36
+ height?: string | number;
37
+ rounded?: boolean;
38
+ previewStyle?: 'plain' | 'framed';
39
+ previewAdaptive?: boolean;
40
+
41
+ // アイコン系
42
+ icon?: string;
43
+ iconSize?: number;
44
+ iconFilled?: boolean;
45
+ iconWeight?: IconWeight;
46
+ iconGrade?: IconGrade;
47
+ iconOpticalSize?: IconOpticalSize;
48
+ iconVariant?: IconVariant;
49
+ removeFileAriaLabel?: string;
50
+
51
+ // 入力イベント
52
+ onchange?: BivariantValueHandler<FileList | null | undefined>;
53
+
54
+ // フォーカスイベント
55
+ onfocus?: FocusHandler;
56
+ onblur?: FocusHandler;
57
+
58
+ // キーボードイベント
59
+ onkeydown?: KeyboardHandler;
60
+ onkeyup?: KeyboardHandler;
61
+
62
+ // マウスイベント
63
+ onmouseenter?: MouseHandler;
64
+ onmouseleave?: MouseHandler;
65
+
66
+ // タッチイベント
67
+ ontouchstart?: TouchHandler;
68
+ ontouchend?: TouchHandler;
69
+
70
+ // ポインターイベント
71
+ onpointerenter?: PointerHandler;
72
+ onpointerleave?: PointerHandler;
73
+ };
74
+
23
75
  let {
24
76
  // 基本プロパティ
25
77
  value = $bindable(),
@@ -72,57 +124,7 @@
72
124
  // ポインターイベント
73
125
  onpointerenter = () => {}, // No params for type inference
74
126
  onpointerleave = () => {} // No params for type inference
75
- }: {
76
- // 基本プロパティ
77
- value: FileList | null | undefined;
78
- multiple?: boolean;
79
- maxFileSize?: number;
80
- placeholder?: string;
81
-
82
- // HTML属性系
83
- id?: string;
84
- accept?: string;
85
-
86
- // スタイル/レイアウト
87
- width?: string | number;
88
- height?: string | number;
89
- rounded?: boolean;
90
- previewStyle?: 'plain' | 'framed';
91
- previewAdaptive?: boolean;
92
-
93
- // アイコン系
94
- icon?: string;
95
- iconSize?: number;
96
- iconFilled?: boolean;
97
- iconWeight?: IconWeight;
98
- iconGrade?: IconGrade;
99
- iconOpticalSize?: IconOpticalSize;
100
- iconVariant?: IconVariant;
101
- removeFileAriaLabel?: string;
102
-
103
- // 入力イベント
104
- onchange?: BivariantValueHandler<FileList | null | undefined>;
105
-
106
- // フォーカスイベント
107
- onfocus?: FocusHandler;
108
- onblur?: FocusHandler;
109
-
110
- // キーボードイベント
111
- onkeydown?: KeyboardHandler;
112
- onkeyup?: KeyboardHandler;
113
-
114
- // マウスイベント
115
- onmouseenter?: MouseHandler;
116
- onmouseleave?: MouseHandler;
117
-
118
- // タッチイベント
119
- ontouchstart?: TouchHandler;
120
- ontouchend?: TouchHandler;
121
-
122
- // ポインターイベント
123
- onpointerenter?: PointerHandler;
124
- onpointerleave?: PointerHandler;
125
- } = $props();
127
+ }: ImageUploaderProps = $props();
126
128
 
127
129
  let dropAreaRef: HTMLButtonElement;
128
130
  let fileInputRef: HTMLInputElement;
@@ -1,6 +1,6 @@
1
1
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
2
2
  import type { BivariantValueHandler, FocusHandler, KeyboardHandler, MouseHandler, TouchHandler, PointerHandler } from '../types/eventHandlers';
3
- type $$ComponentProps = {
3
+ export type ImageUploaderProps = {
4
4
  value: FileList | null | undefined;
5
5
  multiple?: boolean;
6
6
  maxFileSize?: number;
@@ -32,7 +32,7 @@ type $$ComponentProps = {
32
32
  onpointerenter?: PointerHandler;
33
33
  onpointerleave?: PointerHandler;
34
34
  };
35
- declare const ImageUploader: import("svelte").Component<$$ComponentProps, {
35
+ declare const ImageUploader: import("svelte").Component<ImageUploaderProps, {
36
36
  reset: () => void;
37
37
  }, "value">;
38
38
  type ImageUploader = ReturnType<typeof ImageUploader>;
@@ -1,8 +1,34 @@
1
+ <!-- ImageUploaderPreview.svelte -->
2
+
1
3
  <script lang="ts">
2
4
  import { onDestroy } from 'svelte';
3
5
  import IconButton from './IconButton.svelte';
4
6
  import { getStyleFromNumber } from '../utils/style';
5
7
 
8
+ // =========================================================================
9
+ // Props, States & Constants
10
+ // =========================================================================
11
+ export type ImageUploaderPreviewProps = {
12
+ // 基本プロパティ
13
+ file: File;
14
+
15
+ // HTML属性系
16
+ id?: string;
17
+
18
+ // スタイル/レイアウト
19
+ width?: string | number;
20
+ height?: string | number;
21
+ previewAdaptive?: boolean;
22
+ rounded?: boolean;
23
+ previewStyle?: 'plain' | 'framed';
24
+
25
+ // ARIA/アクセシビリティ
26
+ removeFileAriaLabel?: string;
27
+
28
+ // 入力イベント
29
+ onRemove: () => void;
30
+ };
31
+
6
32
  let {
7
33
  // 基本プロパティ
8
34
  file,
@@ -22,29 +48,13 @@
22
48
 
23
49
  // 入力イベント
24
50
  onRemove
25
- }: {
26
- // 基本プロパティ
27
- file: File;
28
-
29
- // HTML属性系
30
- id?: string;
31
-
32
- // スタイル/レイアウト
33
- width?: string | number;
34
- height?: string | number;
35
- previewAdaptive?: boolean;
36
- rounded?: boolean;
37
- previewStyle?: 'plain' | 'framed';
38
-
39
- // ARIA/アクセシビリティ
40
- removeFileAriaLabel?: string;
41
-
42
- // 入力イベント
43
- onRemove: () => void;
44
- } = $props();
51
+ }: ImageUploaderPreviewProps = $props();
45
52
 
46
53
  let imageSizes = $state<Record<string, { width: number; height: number }>>({});
47
54
 
55
+ // =========================================================================
56
+ // Methods
57
+ // =========================================================================
48
58
  const getImageUrl = (file: File): string => {
49
59
  return URL.createObjectURL(file);
50
60
  };
@@ -67,6 +77,9 @@
67
77
  img.src = getImageUrl(file);
68
78
  };
69
79
 
80
+ // =========================================================================
81
+ // $derived
82
+ // =========================================================================
70
83
  // previewAdaptiveによる分岐を最初に行う
71
84
  const imageSizeStyle = $derived.by(() => {
72
85
  if (previewAdaptive) {
@@ -1,4 +1,4 @@
1
- type $$ComponentProps = {
1
+ export type ImageUploaderPreviewProps = {
2
2
  file: File;
3
3
  id?: string;
4
4
  width?: string | number;
@@ -9,6 +9,6 @@ type $$ComponentProps = {
9
9
  removeFileAriaLabel?: string;
10
10
  onRemove: () => void;
11
11
  };
12
- declare const ImageUploaderPreview: import("svelte").Component<$$ComponentProps, {}, "">;
12
+ declare const ImageUploaderPreview: import("svelte").Component<ImageUploaderPreviewProps, {}, "">;
13
13
  type ImageUploaderPreview = ReturnType<typeof ImageUploaderPreview>;
14
14
  export default ImageUploaderPreview;
@@ -20,6 +20,99 @@
20
20
  // =========================================================================
21
21
  // Props, States & Constants
22
22
  // =========================================================================
23
+ export type InputProps = {
24
+ // 基本プロパティ
25
+ name?: string;
26
+ value: string | number;
27
+
28
+ // HTML属性系
29
+ id?: string | null;
30
+ type?: 'text' | 'password' | 'email' | 'tel' | 'url' | 'number';
31
+ tabindex?: number | null;
32
+ maxlength?: number | null;
33
+ pattern?: string | null;
34
+ min?: number | null;
35
+ max?: number | null;
36
+ step?: number | null;
37
+ size?: number | null;
38
+ autocomplete?: HTMLInputElement['autocomplete'] | null;
39
+ spellcheck?: boolean | null;
40
+ inputAttributes?: HTMLInputAttributes | undefined;
41
+
42
+ // スタイル/レイアウト
43
+ inline?: boolean;
44
+ focusStyle?: 'background' | 'outline' | 'none';
45
+ placeholder?: string;
46
+ fullWidth?: boolean;
47
+ width?: string | number | null;
48
+ minWidth?: string | number | null;
49
+ maxWidth?: string | number | null;
50
+ rounded?: boolean;
51
+ customStyle?: string;
52
+
53
+ // アイコン関連
54
+ rightIcon?: string;
55
+ leftIcon?: string;
56
+ leftIconAriaLabel?: string;
57
+ rightIconAriaLabel?: string;
58
+ iconFilled?: boolean;
59
+ iconWeight?: IconWeight;
60
+ iconGrade?: IconGrade;
61
+ iconOpticalSize?: IconOpticalSize;
62
+ iconVariant?: IconVariant;
63
+
64
+ // 状態/動作
65
+ disabled?: boolean;
66
+ readonly?: boolean;
67
+ required?: boolean;
68
+ clearable?: boolean;
69
+ linkify?: boolean;
70
+
71
+ // フォーカスイベント
72
+ onfocus?: FocusHandler;
73
+ onblur?: FocusHandler;
74
+
75
+ // キーボードイベント
76
+ onkeydown?: KeyboardHandler;
77
+ onkeyup?: KeyboardHandler;
78
+
79
+ // マウスイベント
80
+ onclick?: MouseHandler;
81
+ onmousedown?: MouseHandler;
82
+ onmouseup?: MouseHandler;
83
+ onmouseenter?: MouseHandler;
84
+ onmouseleave?: MouseHandler;
85
+ onmouseover?: MouseHandler;
86
+ onmouseout?: MouseHandler;
87
+ oncontextmenu?: MouseHandler;
88
+ onauxclick?: MouseHandler;
89
+
90
+ // タッチイベント
91
+ ontouchstart?: TouchHandler;
92
+ ontouchend?: TouchHandler;
93
+ ontouchmove?: TouchHandler;
94
+ ontouchcancel?: TouchHandler;
95
+
96
+ // ポインターイベント
97
+ onpointerdown?: PointerHandler;
98
+ onpointerup?: PointerHandler;
99
+ onpointerenter?: PointerHandler;
100
+ onpointerleave?: PointerHandler;
101
+ onpointermove?: PointerHandler;
102
+ onpointercancel?: PointerHandler;
103
+
104
+ // 入力イベント
105
+ onchange?: BivariantValueHandler<string | number>;
106
+ oninput?: BivariantValueHandler<string | number>;
107
+
108
+ // アイコンイベント
109
+ onRightIconClick?: MouseHandler;
110
+ onLeftIconClick?: MouseHandler;
111
+
112
+ // その他
113
+ [key: string]: any;
114
+ };
115
+
23
116
  let {
24
117
  // 基本プロパティ
25
118
  name,
@@ -112,98 +205,7 @@
112
205
 
113
206
  // その他
114
207
  ...restProps
115
- }: {
116
- // 基本プロパティ
117
- name?: string;
118
- value: string | number;
119
-
120
- // HTML属性系
121
- id?: string | null;
122
- type?: 'text' | 'password' | 'email' | 'tel' | 'url' | 'number';
123
- tabindex?: number | null;
124
- maxlength?: number | null;
125
- pattern?: string | null;
126
- min?: number | null;
127
- max?: number | null;
128
- step?: number | null;
129
- size?: number | null;
130
- autocomplete?: HTMLInputElement['autocomplete'] | null;
131
- spellcheck?: boolean | null;
132
- inputAttributes?: HTMLInputAttributes | undefined;
133
-
134
- // スタイル/レイアウト
135
- inline?: boolean;
136
- focusStyle?: 'background' | 'outline' | 'none';
137
- placeholder?: string;
138
- fullWidth?: boolean;
139
- width?: string | number | null;
140
- minWidth?: string | number | null;
141
- maxWidth?: string | number | null;
142
- rounded?: boolean;
143
- customStyle?: string;
144
-
145
- // アイコン関連
146
- rightIcon?: string;
147
- leftIcon?: string;
148
- leftIconAriaLabel?: string;
149
- rightIconAriaLabel?: string;
150
- iconFilled?: boolean;
151
- iconWeight?: IconWeight;
152
- iconGrade?: IconGrade;
153
- iconOpticalSize?: IconOpticalSize;
154
- iconVariant?: IconVariant;
155
-
156
- // 状態/動作
157
- disabled?: boolean;
158
- readonly?: boolean;
159
- required?: boolean;
160
- clearable?: boolean;
161
- linkify?: boolean;
162
-
163
- // フォーカスイベント
164
- onfocus?: FocusHandler;
165
- onblur?: FocusHandler;
166
-
167
- // キーボードイベント
168
- onkeydown?: KeyboardHandler;
169
- onkeyup?: KeyboardHandler;
170
-
171
- // マウスイベント
172
- onclick?: MouseHandler;
173
- onmousedown?: MouseHandler;
174
- onmouseup?: MouseHandler;
175
- onmouseenter?: MouseHandler;
176
- onmouseleave?: MouseHandler;
177
- onmouseover?: MouseHandler;
178
- onmouseout?: MouseHandler;
179
- oncontextmenu?: MouseHandler;
180
- onauxclick?: MouseHandler;
181
-
182
- // タッチイベント
183
- ontouchstart?: TouchHandler;
184
- ontouchend?: TouchHandler;
185
- ontouchmove?: TouchHandler;
186
- ontouchcancel?: TouchHandler;
187
-
188
- // ポインターイベント
189
- onpointerdown?: PointerHandler;
190
- onpointerup?: PointerHandler;
191
- onpointerenter?: PointerHandler;
192
- onpointerleave?: PointerHandler;
193
- onpointermove?: PointerHandler;
194
- onpointercancel?: PointerHandler;
195
-
196
- // 入力イベント
197
- onchange?: BivariantValueHandler<string | number>;
198
- oninput?: BivariantValueHandler<string | number>;
199
-
200
- // アイコンイベント
201
- onRightIconClick?: MouseHandler;
202
- onLeftIconClick?: MouseHandler;
203
-
204
- // その他
205
- [key: string]: any;
206
- } = $props();
208
+ }: InputProps = $props();
207
209
 
208
210
  let ref: HTMLInputElement | undefined = $state();
209
211
  let isFocused: boolean = $state(false);
@@ -970,7 +972,9 @@
970
972
  }
971
973
 
972
974
  input[readonly] {
973
- background-color: var(--svelte-ui-input-readonly-bg);
975
+ /* Keep cursor behavior but do not add a special background.
976
+ * In this library, filled backgrounds are used to indicate editable fields,
977
+ * so readonly inputs intentionally have no extra background color. */
974
978
  cursor: default;
975
979
  }
976
980
  </style>
@@ -1,7 +1,7 @@
1
1
  import type { HTMLInputAttributes } from 'svelte/elements';
2
2
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
3
3
  import type { FocusHandler, KeyboardHandler, MouseHandler, TouchHandler, PointerHandler, BivariantValueHandler } from '../types/eventHandlers';
4
- type $$ComponentProps = {
4
+ export type InputProps = {
5
5
  name?: string;
6
6
  value: string | number;
7
7
  id?: string | null;
@@ -68,7 +68,7 @@ type $$ComponentProps = {
68
68
  onLeftIconClick?: MouseHandler;
69
69
  [key: string]: any;
70
70
  };
71
- declare const Input: import("svelte").Component<$$ComponentProps, {
71
+ declare const Input: import("svelte").Component<InputProps, {
72
72
  focus: () => void;
73
73
  }, "value">;
74
74
  type Input = ReturnType<typeof Input>;
@@ -1,10 +1,22 @@
1
1
  <!-- LoadingSpinner.svelte -->
2
2
 
3
3
  <script lang="ts">
4
- import { getStyleFromNumber } from '../utils/style';
5
4
  // =========================================================================
6
5
  // Props, States & Constants
7
6
  // =========================================================================
7
+ export type LoadingSpinnerProps = {
8
+ // スタイル/レイアウト
9
+ size?: number;
10
+ color?: string;
11
+ strokeWidth?: number;
12
+
13
+ // 状態/動作
14
+ speed?: number;
15
+
16
+ // ARIA/アクセシビリティ
17
+ reducedMotion?: boolean;
18
+ };
19
+
8
20
  let {
9
21
  // スタイル/レイアウト
10
22
  size = 32,
@@ -16,18 +28,7 @@
16
28
 
17
29
  // ARIA/アクセシビリティ
18
30
  reducedMotion = false
19
- }: {
20
- // スタイル/レイアウト
21
- size?: number;
22
- color?: string;
23
- strokeWidth?: number;
24
-
25
- // 状態/動作
26
- speed?: number;
27
-
28
- // ARIA/アクセシビリティ
29
- reducedMotion?: boolean;
30
- } = $props();
31
+ }: LoadingSpinnerProps = $props();
31
32
 
32
33
  // =========================================================================
33
34
  // $derived
@@ -1,10 +1,10 @@
1
- type $$ComponentProps = {
1
+ export type LoadingSpinnerProps = {
2
2
  size?: number;
3
3
  color?: string;
4
4
  strokeWidth?: number;
5
5
  speed?: number;
6
6
  reducedMotion?: boolean;
7
7
  };
8
- declare const LoadingSpinner: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ declare const LoadingSpinner: import("svelte").Component<LoadingSpinnerProps, {}, "">;
9
9
  type LoadingSpinner = ReturnType<typeof LoadingSpinner>;
10
10
  export default LoadingSpinner;