@14ch/svelte-ui 0.0.11 → 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 (89) hide show
  1. package/dist/assets/styles/variables.scss +0 -6
  2. package/dist/components/Button.svelte +82 -73
  3. package/dist/components/Button.svelte.d.ts +26 -25
  4. package/dist/components/Checkbox.svelte +86 -77
  5. package/dist/components/Checkbox.svelte.d.ts +26 -25
  6. package/dist/components/CheckboxGroup.svelte +43 -26
  7. package/dist/components/CheckboxGroup.svelte.d.ts +4 -3
  8. package/dist/components/ColorPicker.svelte +71 -61
  9. package/dist/components/ColorPicker.svelte.d.ts +28 -27
  10. package/dist/components/Combobox.svelte +79 -76
  11. package/dist/components/Combobox.svelte.d.ts +28 -27
  12. package/dist/components/ConfirmDialog.svelte +24 -22
  13. package/dist/components/ConfirmDialog.svelte.d.ts +2 -2
  14. package/dist/components/Datepicker.svelte +131 -84
  15. package/dist/components/Datepicker.svelte.d.ts +33 -30
  16. package/dist/components/DatepickerCalendar.svelte +24 -18
  17. package/dist/components/DatepickerCalendar.svelte.d.ts +7 -6
  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 +63 -54
  23. package/dist/components/Fab.svelte.d.ts +26 -25
  24. package/dist/components/FileUploader.svelte +59 -49
  25. package/dist/components/FileUploader.svelte.d.ts +14 -13
  26. package/dist/components/Icon.svelte +29 -27
  27. package/dist/components/Icon.svelte.d.ts +2 -2
  28. package/dist/components/IconButton.svelte +88 -79
  29. package/dist/components/IconButton.svelte.d.ts +26 -25
  30. package/dist/components/ImageUploader.svelte +61 -51
  31. package/dist/components/ImageUploader.svelte.d.ts +14 -13
  32. package/dist/components/ImageUploaderPreview.svelte +33 -20
  33. package/dist/components/ImageUploaderPreview.svelte.d.ts +2 -2
  34. package/dist/components/Input.svelte +105 -93
  35. package/dist/components/Input.svelte.d.ts +30 -29
  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 +48 -49
  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 +83 -76
  47. package/dist/components/PopupMenuButton.svelte.d.ts +26 -25
  48. package/dist/components/Radio.svelte +73 -63
  49. package/dist/components/Radio.svelte.d.ts +30 -28
  50. package/dist/components/RadioGroup.svelte +39 -26
  51. package/dist/components/RadioGroup.svelte.d.ts +4 -3
  52. package/dist/components/SegmentedControl.svelte +79 -69
  53. package/dist/components/SegmentedControl.svelte.d.ts +26 -25
  54. package/dist/components/Select.svelte +73 -65
  55. package/dist/components/Select.svelte.d.ts +27 -26
  56. package/dist/components/Slider.svelte +73 -64
  57. package/dist/components/Slider.svelte.d.ts +26 -25
  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 +70 -62
  63. package/dist/components/Switch.svelte.d.ts +26 -25
  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 +96 -95
  69. package/dist/components/Textarea.svelte.d.ts +27 -26
  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/types/eventHandlers.d.ts +9 -0
  86. package/dist/types/eventHandlers.js +2 -0
  87. package/dist/types/options.d.ts +1 -1
  88. package/dist/utils/formatText.js +4 -1
  89. package/package.json +5 -2
@@ -1,7 +1,8 @@
1
1
  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
- type $$ComponentProps = {
4
+ import type { FocusHandler, KeyboardHandler, MouseHandler, TouchHandler, PointerHandler } from '../types/eventHandlers';
5
+ export type IconButtonProps = {
5
6
  children: Snippet;
6
7
  buttonAttributes?: HTMLButtonAttributes | undefined;
7
8
  type?: 'button' | 'submit' | 'reset' | null | undefined;
@@ -30,31 +31,31 @@ type $$ComponentProps = {
30
31
  ariaDescribedby?: string;
31
32
  ariaPressed?: boolean;
32
33
  reducedMotion?: boolean;
33
- onfocus?: Function;
34
- onblur?: Function;
35
- onkeydown?: Function;
36
- onkeyup?: Function;
37
- onclick?: Function;
38
- onmousedown?: Function;
39
- onmouseup?: Function;
40
- onmouseenter?: Function;
41
- onmouseleave?: Function;
42
- onmouseover?: Function;
43
- onmouseout?: Function;
44
- oncontextmenu?: Function;
45
- onauxclick?: Function;
46
- ontouchstart?: Function;
47
- ontouchend?: Function;
48
- ontouchmove?: Function;
49
- ontouchcancel?: Function;
50
- onpointerdown?: Function;
51
- onpointerup?: Function;
52
- onpointerenter?: Function;
53
- onpointerleave?: Function;
54
- onpointermove?: Function;
55
- onpointercancel?: Function;
34
+ onfocus?: FocusHandler;
35
+ onblur?: FocusHandler;
36
+ onkeydown?: KeyboardHandler;
37
+ onkeyup?: KeyboardHandler;
38
+ onclick?: MouseHandler;
39
+ onmousedown?: MouseHandler;
40
+ onmouseup?: MouseHandler;
41
+ onmouseenter?: MouseHandler;
42
+ onmouseleave?: MouseHandler;
43
+ onmouseover?: MouseHandler;
44
+ onmouseout?: MouseHandler;
45
+ oncontextmenu?: MouseHandler;
46
+ onauxclick?: MouseHandler;
47
+ ontouchstart?: TouchHandler;
48
+ ontouchend?: TouchHandler;
49
+ ontouchmove?: TouchHandler;
50
+ ontouchcancel?: TouchHandler;
51
+ onpointerdown?: PointerHandler;
52
+ onpointerup?: PointerHandler;
53
+ onpointerenter?: PointerHandler;
54
+ onpointerleave?: PointerHandler;
55
+ onpointermove?: PointerHandler;
56
+ onpointercancel?: PointerHandler;
56
57
  [key: string]: any;
57
58
  };
58
- declare const IconButton: import("svelte").Component<$$ComponentProps, {}, "">;
59
+ declare const IconButton: import("svelte").Component<IconButtonProps, {}, "">;
59
60
  type IconButton = ReturnType<typeof IconButton>;
60
61
  export default IconButton;
@@ -8,10 +8,70 @@
8
8
  import { onDestroy } from 'svelte';
9
9
  import ImageUploaderPreview from './ImageUploaderPreview.svelte';
10
10
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
11
+ import type {
12
+ BivariantValueHandler,
13
+ FocusHandler,
14
+ KeyboardHandler,
15
+ MouseHandler,
16
+ TouchHandler,
17
+ PointerHandler
18
+ } from '../types/eventHandlers';
11
19
 
12
20
  // =========================================================================
13
21
  // Props, States & Constants
14
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
+
15
75
  let {
16
76
  // 基本プロパティ
17
77
  value = $bindable(),
@@ -64,57 +124,7 @@
64
124
  // ポインターイベント
65
125
  onpointerenter = () => {}, // No params for type inference
66
126
  onpointerleave = () => {} // No params for type inference
67
- }: {
68
- // 基本プロパティ
69
- value: FileList | null | undefined;
70
- multiple?: boolean;
71
- maxFileSize?: number;
72
- placeholder?: string;
73
-
74
- // HTML属性系
75
- id?: string;
76
- accept?: string;
77
-
78
- // スタイル/レイアウト
79
- width?: string | number;
80
- height?: string | number;
81
- rounded?: boolean;
82
- previewStyle?: 'plain' | 'framed';
83
- previewAdaptive?: boolean;
84
-
85
- // アイコン系
86
- icon?: string;
87
- iconSize?: number;
88
- iconFilled?: boolean;
89
- iconWeight?: IconWeight;
90
- iconGrade?: IconGrade;
91
- iconOpticalSize?: IconOpticalSize;
92
- iconVariant?: IconVariant;
93
- removeFileAriaLabel?: string;
94
-
95
- // 入力イベント
96
- onchange?: (value: FileList | null | undefined) => void;
97
-
98
- // フォーカスイベント
99
- onfocus?: Function; // No params for type inference
100
- onblur?: Function; // No params for type inference
101
-
102
- // キーボードイベント
103
- onkeydown?: Function; // No params for type inference
104
- onkeyup?: Function; // No params for type inference
105
-
106
- // マウスイベント
107
- onmouseenter?: Function; // No params for type inference
108
- onmouseleave?: Function; // No params for type inference
109
-
110
- // タッチイベント
111
- ontouchstart?: Function; // No params for type inference
112
- ontouchend?: Function; // No params for type inference
113
-
114
- // ポインターイベント
115
- onpointerenter?: Function; // No params for type inference
116
- onpointerleave?: Function; // No params for type inference
117
- } = $props();
127
+ }: ImageUploaderProps = $props();
118
128
 
119
129
  let dropAreaRef: HTMLButtonElement;
120
130
  let fileInputRef: HTMLInputElement;
@@ -1,5 +1,6 @@
1
1
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
2
- type $$ComponentProps = {
2
+ import type { BivariantValueHandler, FocusHandler, KeyboardHandler, MouseHandler, TouchHandler, PointerHandler } from '../types/eventHandlers';
3
+ export type ImageUploaderProps = {
3
4
  value: FileList | null | undefined;
4
5
  multiple?: boolean;
5
6
  maxFileSize?: number;
@@ -19,19 +20,19 @@ type $$ComponentProps = {
19
20
  iconOpticalSize?: IconOpticalSize;
20
21
  iconVariant?: IconVariant;
21
22
  removeFileAriaLabel?: string;
22
- onchange?: (value: FileList | null | undefined) => void;
23
- onfocus?: Function;
24
- onblur?: Function;
25
- onkeydown?: Function;
26
- onkeyup?: Function;
27
- onmouseenter?: Function;
28
- onmouseleave?: Function;
29
- ontouchstart?: Function;
30
- ontouchend?: Function;
31
- onpointerenter?: Function;
32
- onpointerleave?: Function;
23
+ onchange?: BivariantValueHandler<FileList | null | undefined>;
24
+ onfocus?: FocusHandler;
25
+ onblur?: FocusHandler;
26
+ onkeydown?: KeyboardHandler;
27
+ onkeyup?: KeyboardHandler;
28
+ onmouseenter?: MouseHandler;
29
+ onmouseleave?: MouseHandler;
30
+ ontouchstart?: TouchHandler;
31
+ ontouchend?: TouchHandler;
32
+ onpointerenter?: PointerHandler;
33
+ onpointerleave?: PointerHandler;
33
34
  };
34
- declare const ImageUploader: import("svelte").Component<$$ComponentProps, {
35
+ declare const ImageUploader: import("svelte").Component<ImageUploaderProps, {
35
36
  reset: () => void;
36
37
  }, "value">;
37
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;
@@ -8,10 +8,111 @@
8
8
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
9
9
  import { t } from '../i18n';
10
10
  import { convertToHtmlWithLink } from '../utils/formatText';
11
+ import type {
12
+ FocusHandler,
13
+ KeyboardHandler,
14
+ MouseHandler,
15
+ TouchHandler,
16
+ PointerHandler,
17
+ BivariantValueHandler
18
+ } from '../types/eventHandlers';
11
19
 
12
20
  // =========================================================================
13
21
  // Props, States & Constants
14
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
+
15
116
  let {
16
117
  // 基本プロパティ
17
118
  name,
@@ -104,98 +205,7 @@
104
205
 
105
206
  // その他
106
207
  ...restProps
107
- }: {
108
- // 基本プロパティ
109
- name?: string;
110
- value: string | number;
111
-
112
- // HTML属性系
113
- id?: string | null;
114
- type?: 'text' | 'password' | 'email' | 'tel' | 'url' | 'number';
115
- tabindex?: number | null;
116
- maxlength?: number | null;
117
- pattern?: string | null;
118
- min?: number | null;
119
- max?: number | null;
120
- step?: number | null;
121
- size?: number | null;
122
- autocomplete?: HTMLInputElement['autocomplete'] | null;
123
- spellcheck?: boolean | null;
124
- inputAttributes?: HTMLInputAttributes | undefined;
125
-
126
- // スタイル/レイアウト
127
- inline?: boolean;
128
- focusStyle?: 'background' | 'outline' | 'none';
129
- placeholder?: string;
130
- fullWidth?: boolean;
131
- width?: string | number | null;
132
- minWidth?: string | number | null;
133
- maxWidth?: string | number | null;
134
- rounded?: boolean;
135
- customStyle?: string;
136
-
137
- // アイコン関連
138
- rightIcon?: string;
139
- leftIcon?: string;
140
- leftIconAriaLabel?: string;
141
- rightIconAriaLabel?: string;
142
- iconFilled?: boolean;
143
- iconWeight?: IconWeight;
144
- iconGrade?: IconGrade;
145
- iconOpticalSize?: IconOpticalSize;
146
- iconVariant?: IconVariant;
147
-
148
- // 状態/動作
149
- disabled?: boolean;
150
- readonly?: boolean;
151
- required?: boolean;
152
- clearable?: boolean;
153
- linkify?: boolean;
154
-
155
- // フォーカスイベント
156
- onfocus?: Function; // No params for type inference
157
- onblur?: Function; // No params for type inference
158
-
159
- // キーボードイベント
160
- onkeydown?: Function; // No params for type inference
161
- onkeyup?: Function; // No params for type inference
162
-
163
- // マウスイベント
164
- onclick?: Function; // No params for type inference
165
- onmousedown?: Function; // No params for type inference
166
- onmouseup?: Function; // No params for type inference
167
- onmouseenter?: Function; // No params for type inference
168
- onmouseleave?: Function; // No params for type inference
169
- onmouseover?: Function; // No params for type inference
170
- onmouseout?: Function; // No params for type inference
171
- oncontextmenu?: Function; // No params for type inference
172
- onauxclick?: Function; // No params for type inference
173
-
174
- // タッチイベント
175
- ontouchstart?: Function; // No params for type inference
176
- ontouchend?: Function; // No params for type inference
177
- ontouchmove?: Function; // No params for type inference
178
- ontouchcancel?: Function; // No params for type inference
179
-
180
- // ポインターイベント
181
- onpointerdown?: Function; // No params for type inference
182
- onpointerup?: Function; // No params for type inference
183
- onpointerenter?: Function; // No params for type inference
184
- onpointerleave?: Function; // No params for type inference
185
- onpointermove?: Function; // No params for type inference
186
- onpointercancel?: Function; // No params for type inference
187
-
188
- // 入力イベント
189
- onchange?: (value: string | number) => void;
190
- oninput?: (value: string | number) => void;
191
-
192
- // アイコンイベント
193
- onRightIconClick?: Function; // No params for type inference
194
- onLeftIconClick?: Function; // No params for type inference
195
-
196
- // その他
197
- [key: string]: any;
198
- } = $props();
208
+ }: InputProps = $props();
199
209
 
200
210
  let ref: HTMLInputElement | undefined = $state();
201
211
  let isFocused: boolean = $state(false);
@@ -962,7 +972,9 @@
962
972
  }
963
973
 
964
974
  input[readonly] {
965
- 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. */
966
978
  cursor: default;
967
979
  }
968
980
  </style>
@@ -1,6 +1,7 @@
1
1
  import type { HTMLInputAttributes } from 'svelte/elements';
2
2
  import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
3
- type $$ComponentProps = {
3
+ import type { FocusHandler, KeyboardHandler, MouseHandler, TouchHandler, PointerHandler, BivariantValueHandler } from '../types/eventHandlers';
4
+ export type InputProps = {
4
5
  name?: string;
5
6
  value: string | number;
6
7
  id?: string | null;
@@ -38,36 +39,36 @@ type $$ComponentProps = {
38
39
  required?: boolean;
39
40
  clearable?: boolean;
40
41
  linkify?: boolean;
41
- onfocus?: Function;
42
- onblur?: Function;
43
- onkeydown?: Function;
44
- onkeyup?: Function;
45
- onclick?: Function;
46
- onmousedown?: Function;
47
- onmouseup?: Function;
48
- onmouseenter?: Function;
49
- onmouseleave?: Function;
50
- onmouseover?: Function;
51
- onmouseout?: Function;
52
- oncontextmenu?: Function;
53
- onauxclick?: Function;
54
- ontouchstart?: Function;
55
- ontouchend?: Function;
56
- ontouchmove?: Function;
57
- ontouchcancel?: Function;
58
- onpointerdown?: Function;
59
- onpointerup?: Function;
60
- onpointerenter?: Function;
61
- onpointerleave?: Function;
62
- onpointermove?: Function;
63
- onpointercancel?: Function;
64
- onchange?: (value: string | number) => void;
65
- oninput?: (value: string | number) => void;
66
- onRightIconClick?: Function;
67
- onLeftIconClick?: Function;
42
+ onfocus?: FocusHandler;
43
+ onblur?: FocusHandler;
44
+ onkeydown?: KeyboardHandler;
45
+ onkeyup?: KeyboardHandler;
46
+ onclick?: MouseHandler;
47
+ onmousedown?: MouseHandler;
48
+ onmouseup?: MouseHandler;
49
+ onmouseenter?: MouseHandler;
50
+ onmouseleave?: MouseHandler;
51
+ onmouseover?: MouseHandler;
52
+ onmouseout?: MouseHandler;
53
+ oncontextmenu?: MouseHandler;
54
+ onauxclick?: MouseHandler;
55
+ ontouchstart?: TouchHandler;
56
+ ontouchend?: TouchHandler;
57
+ ontouchmove?: TouchHandler;
58
+ ontouchcancel?: TouchHandler;
59
+ onpointerdown?: PointerHandler;
60
+ onpointerup?: PointerHandler;
61
+ onpointerenter?: PointerHandler;
62
+ onpointerleave?: PointerHandler;
63
+ onpointermove?: PointerHandler;
64
+ onpointercancel?: PointerHandler;
65
+ onchange?: BivariantValueHandler<string | number>;
66
+ oninput?: BivariantValueHandler<string | number>;
67
+ onRightIconClick?: MouseHandler;
68
+ onLeftIconClick?: MouseHandler;
68
69
  [key: string]: any;
69
70
  };
70
- declare const Input: import("svelte").Component<$$ComponentProps, {
71
+ declare const Input: import("svelte").Component<InputProps, {
71
72
  focus: () => void;
72
73
  }, "value">;
73
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;