mokkun 0.1.5 → 0.2.0

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 (137) hide show
  1. package/README.md +18 -6
  2. package/bin/cli.mjs +6 -6
  3. package/bin/viewer.html +78 -3
  4. package/dist/example.html +225 -0
  5. package/dist/mokkun.css +1 -1
  6. package/dist/mokkun.esm.js +14476 -9626
  7. package/dist/mokkun.esm.js.map +1 -1
  8. package/dist/mokkun.js +761 -363
  9. package/dist/mokkun.js.map +1 -1
  10. package/dist/types/lib.d.ts +109 -0
  11. package/dist/types/loader/file-loader.d.ts +118 -0
  12. package/dist/types/loader/index.d.ts +4 -0
  13. package/dist/types/parser/index.d.ts +5 -0
  14. package/dist/types/parser/key-normalizer.d.ts +24 -0
  15. package/dist/types/parser/v2/compile-expand.d.ts +23 -0
  16. package/dist/types/parser/v2/compile-field.d.ts +28 -0
  17. package/dist/types/parser/v2/compile-section.d.ts +6 -0
  18. package/dist/types/parser/v2/compile-v2.d.ts +14 -0
  19. package/dist/types/parser/v2/compile-warnings.d.ts +17 -0
  20. package/dist/types/parser/v2/file-spec.d.ts +24 -0
  21. package/dist/types/parser/v2/index.d.ts +5 -0
  22. package/dist/types/parser/v2/iso-date.d.ts +10 -0
  23. package/dist/types/parser/v2/parse-v2.d.ts +24 -0
  24. package/dist/types/parser/v2/validate-action.d.ts +11 -0
  25. package/dist/types/parser/v2/validate-app.d.ts +9 -0
  26. package/dist/types/parser/v2/validate-context.d.ts +41 -0
  27. package/dist/types/parser/v2/validate-field.d.ts +17 -0
  28. package/dist/types/parser/v2/validate-keys.d.ts +29 -0
  29. package/dist/types/parser/v2/validate-list.d.ts +5 -0
  30. package/dist/types/parser/v2/validate-v2.d.ts +6 -0
  31. package/dist/types/parser/v2/validate-view.d.ts +6 -0
  32. package/dist/types/parser/yaml-parser.d.ts +68 -0
  33. package/dist/types/renderer/action-handler.d.ts +76 -0
  34. package/dist/types/renderer/components/accordion-panel.d.ts +144 -0
  35. package/dist/types/renderer/components/action-buttons.d.ts +183 -0
  36. package/dist/types/renderer/components/alert-banner.d.ts +43 -0
  37. package/dist/types/renderer/components/app-header.d.ts +277 -0
  38. package/dist/types/renderer/components/app-navi.d.ts +167 -0
  39. package/dist/types/renderer/components/badge.d.ts +134 -0
  40. package/dist/types/renderer/components/browser.d.ts +134 -0
  41. package/dist/types/renderer/components/calendar.d.ts +198 -0
  42. package/dist/types/renderer/components/checkbox.d.ts +132 -0
  43. package/dist/types/renderer/components/chip.d.ts +120 -0
  44. package/dist/types/renderer/components/combobox.d.ts +217 -0
  45. package/dist/types/renderer/components/data-table.d.ts +186 -0
  46. package/dist/types/renderer/components/date-range-picker.d.ts +203 -0
  47. package/dist/types/renderer/components/definition-list.d.ts +165 -0
  48. package/dist/types/renderer/components/delete-confirm-dialog.d.ts +151 -0
  49. package/dist/types/renderer/components/dialog/action-dialog.d.ts +61 -0
  50. package/dist/types/renderer/components/dialog/base-dialog.d.ts +125 -0
  51. package/dist/types/renderer/components/dialog/dialog-types.d.ts +96 -0
  52. package/dist/types/renderer/components/disclosure.d.ts +118 -0
  53. package/dist/types/renderer/components/dropdown.d.ts +220 -0
  54. package/dist/types/renderer/components/duration-input.d.ts +154 -0
  55. package/dist/types/renderer/components/duration-picker.d.ts +108 -0
  56. package/dist/types/renderer/components/field-renderer.d.ts +22 -0
  57. package/dist/types/renderer/components/float-area.d.ts +196 -0
  58. package/dist/types/renderer/components/form-fields.d.ts +94 -0
  59. package/dist/types/renderer/components/form-section.d.ts +118 -0
  60. package/dist/types/renderer/components/google-map-embed.d.ts +88 -0
  61. package/dist/types/renderer/components/heading.d.ts +119 -0
  62. package/dist/types/renderer/components/image-uploader.d.ts +271 -0
  63. package/dist/types/renderer/components/index.d.ts +48 -0
  64. package/dist/types/renderer/components/information-panel.d.ts +139 -0
  65. package/dist/types/renderer/components/input.d.ts +222 -0
  66. package/dist/types/renderer/components/layout.d.ts +71 -0
  67. package/dist/types/renderer/components/line-clamp.d.ts +170 -0
  68. package/dist/types/renderer/components/loader.d.ts +104 -0
  69. package/dist/types/renderer/components/notification-bar.d.ts +251 -0
  70. package/dist/types/renderer/components/pagination.d.ts +167 -0
  71. package/dist/types/renderer/components/photo-manager-renderer.d.ts +9 -0
  72. package/dist/types/renderer/components/radio-button-panel.d.ts +152 -0
  73. package/dist/types/renderer/components/radio.d.ts +117 -0
  74. package/dist/types/renderer/components/repeater.d.ts +116 -0
  75. package/dist/types/renderer/components/response-message.d.ts +180 -0
  76. package/dist/types/renderer/components/search-input.d.ts +198 -0
  77. package/dist/types/renderer/components/section-nav.d.ts +151 -0
  78. package/dist/types/renderer/components/segmented-control.d.ts +143 -0
  79. package/dist/types/renderer/components/select.d.ts +98 -0
  80. package/dist/types/renderer/components/status-label.d.ts +146 -0
  81. package/dist/types/renderer/components/stepper.d.ts +123 -0
  82. package/dist/types/renderer/components/tabs.d.ts +185 -0
  83. package/dist/types/renderer/components/textarea.d.ts +173 -0
  84. package/dist/types/renderer/components/timeline.d.ts +146 -0
  85. package/dist/types/renderer/components/toggle.d.ts +109 -0
  86. package/dist/types/renderer/components/tooltip.d.ts +158 -0
  87. package/dist/types/renderer/components/wizard.d.ts +118 -0
  88. package/dist/types/renderer/layouts/index.d.ts +5 -0
  89. package/dist/types/renderer/layouts/shell.d.ts +7 -0
  90. package/dist/types/renderer/layouts/types.d.ts +34 -0
  91. package/dist/types/renderer/screen-renderer.d.ts +57 -0
  92. package/dist/types/renderer/utils/dom.d.ts +29 -0
  93. package/dist/types/renderer/utils/dummy-data.d.ts +13 -0
  94. package/dist/types/renderer/utils/field-helpers.d.ts +90 -0
  95. package/dist/types/renderer/utils/icons.d.ts +13 -0
  96. package/dist/types/renderer/utils/index.d.ts +6 -0
  97. package/dist/types/renderer-v2/actions.d.ts +30 -0
  98. package/dist/types/renderer-v2/app-shell.d.ts +15 -0
  99. package/dist/types/renderer-v2/condition.d.ts +19 -0
  100. package/dist/types/renderer-v2/context.d.ts +37 -0
  101. package/dist/types/renderer-v2/fields/choice.d.ts +12 -0
  102. package/dist/types/renderer-v2/fields/control-label.d.ts +57 -0
  103. package/dist/types/renderer-v2/fields/date.d.ts +6 -0
  104. package/dist/types/renderer-v2/fields/display.d.ts +22 -0
  105. package/dist/types/renderer-v2/fields/file-support.d.ts +15 -0
  106. package/dist/types/renderer-v2/fields/file.d.ts +9 -0
  107. package/dist/types/renderer-v2/fields/index.d.ts +20 -0
  108. package/dist/types/renderer-v2/fields/select.d.ts +17 -0
  109. package/dist/types/renderer-v2/fields/text.d.ts +26 -0
  110. package/dist/types/renderer-v2/fields/textarea.d.ts +5 -0
  111. package/dist/types/renderer-v2/fields/toggle.d.ts +6 -0
  112. package/dist/types/renderer-v2/icons.d.ts +35 -0
  113. package/dist/types/renderer-v2/index.d.ts +45 -0
  114. package/dist/types/renderer-v2/list-cells.d.ts +6 -0
  115. package/dist/types/renderer-v2/list-data.d.ts +53 -0
  116. package/dist/types/renderer-v2/mount-parts.d.ts +19 -0
  117. package/dist/types/renderer-v2/mount-repeat.d.ts +8 -0
  118. package/dist/types/renderer-v2/mount-section.d.ts +10 -0
  119. package/dist/types/renderer-v2/mount-visibility.d.ts +13 -0
  120. package/dist/types/renderer-v2/mount.d.ts +9 -0
  121. package/dist/types/renderer-v2/role.d.ts +15 -0
  122. package/dist/types/renderer-v2/section-fields.d.ts +11 -0
  123. package/dist/types/renderer-v2/section-list.d.ts +8 -0
  124. package/dist/types/renderer-v2/section-readonly.d.ts +8 -0
  125. package/dist/types/renderer-v2/section.d.ts +15 -0
  126. package/dist/types/renderer-v2/styles.d.ts +13 -0
  127. package/dist/types/renderer-v2/util.d.ts +28 -0
  128. package/dist/types/renderer-v2/view-state.d.ts +25 -0
  129. package/dist/types/renderer-v2/view.d.ts +8 -0
  130. package/dist/types/theme/index.d.ts +6 -0
  131. package/dist/types/theme/theme-manager.d.ts +102 -0
  132. package/dist/types/types/field-renderable.d.ts +40 -0
  133. package/dist/types/types/index.d.ts +7 -0
  134. package/dist/types/types/schema-v2.d.ts +270 -0
  135. package/dist/types/types/schema.d.ts +1712 -0
  136. package/dist/types/types/theme.d.ts +111 -0
  137. package/package.json +3 -1
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Textarea Component
3
+ * 複数行テキスト入力コンポーネント
4
+ *
5
+ * 機能:
6
+ * - 自動リサイズ
7
+ * - 文字数カウント
8
+ * - 最大文字数制限
9
+ * - 行数指定
10
+ * - バリデーション表示
11
+ *
12
+ * 参考: https://smarthr.design/products/components/textarea/
13
+ */
14
+ import type { TextareaField } from '../../types/schema';
15
+ /**
16
+ * Textareaの状態
17
+ */
18
+ export interface TextareaState {
19
+ /** 現在の値 */
20
+ value: string;
21
+ /** 無効化状態 */
22
+ disabled: boolean;
23
+ /** 読み取り専用状態 */
24
+ readonly: boolean;
25
+ /** エラー状態 */
26
+ error: boolean;
27
+ /** エラーメッセージ */
28
+ errorMessage?: string;
29
+ /** 文字数 */
30
+ characterCount: number;
31
+ }
32
+ /**
33
+ * Textareaのコールバック
34
+ */
35
+ export interface TextareaCallbacks {
36
+ /** 値変更時 */
37
+ onChange?: (value: string, state: TextareaState) => void;
38
+ /** 入力時 */
39
+ onInput?: (value: string, state: TextareaState) => void;
40
+ /** フォーカス時 */
41
+ onFocus?: (state: TextareaState) => void;
42
+ /** ブラー時 */
43
+ onBlur?: (state: TextareaState) => void;
44
+ }
45
+ /**
46
+ * Textareaの設定
47
+ */
48
+ export interface TextareaConfig {
49
+ /** 初期値 */
50
+ defaultValue?: string;
51
+ /** プレースホルダー */
52
+ placeholder?: string;
53
+ /** 行数 */
54
+ rows?: number;
55
+ /** 最小文字数 */
56
+ minLength?: number;
57
+ /** 最大文字数 */
58
+ maxLength?: number;
59
+ /** 必須フィールド */
60
+ required?: boolean;
61
+ /** 無効化 */
62
+ disabled?: boolean;
63
+ /** 読み取り専用 */
64
+ readonly?: boolean;
65
+ /** 自動リサイズ */
66
+ autoResize?: boolean;
67
+ /** 文字数カウント表示 */
68
+ showCount?: boolean;
69
+ /** リサイズ可能 */
70
+ resizable?: boolean;
71
+ /** name属性(フォーム用) */
72
+ name?: string;
73
+ /** ID */
74
+ id?: string;
75
+ /** エラーメッセージ */
76
+ errorMessage?: string;
77
+ }
78
+ /**
79
+ * Textareaコンポーネント
80
+ */
81
+ export declare class Textarea {
82
+ private config;
83
+ private state;
84
+ private callbacks;
85
+ private container;
86
+ private textareaElement?;
87
+ private instanceId;
88
+ constructor(container: HTMLElement, config?: TextareaConfig, callbacks?: TextareaCallbacks);
89
+ /**
90
+ * Textareaをレンダリング
91
+ */
92
+ render(): void;
93
+ /**
94
+ * 値を設定
95
+ */
96
+ setValue(value: string): void;
97
+ /**
98
+ * 値を取得
99
+ */
100
+ getValue(): string;
101
+ /**
102
+ * 無効化状態を設定
103
+ */
104
+ setDisabled(disabled: boolean): void;
105
+ /**
106
+ * 読み取り専用状態を設定
107
+ */
108
+ setReadonly(readonly: boolean): void;
109
+ /**
110
+ * エラー状態を設定
111
+ */
112
+ setError(error: boolean, errorMessage?: string): void;
113
+ /**
114
+ * クリア
115
+ */
116
+ clear(): void;
117
+ /**
118
+ * フォーカス
119
+ */
120
+ focus(): void;
121
+ /**
122
+ * ブラー
123
+ */
124
+ blur(): void;
125
+ /**
126
+ * バリデーション実行
127
+ */
128
+ validate(): boolean;
129
+ /**
130
+ * 現在の状態を取得
131
+ */
132
+ getState(): TextareaState;
133
+ /**
134
+ * 初期状態を作成
135
+ */
136
+ private createInitialState;
137
+ /**
138
+ * Textareaエレメントをレンダリング
139
+ */
140
+ private renderTextarea;
141
+ /**
142
+ * 文字数カウンターをレンダリング
143
+ */
144
+ private renderCounter;
145
+ /**
146
+ * カウンターの内容を更新
147
+ */
148
+ private updateCounterContent;
149
+ /**
150
+ * カウンターを更新
151
+ */
152
+ private updateCounter;
153
+ /**
154
+ * エラーメッセージをレンダリング
155
+ */
156
+ private renderError;
157
+ /**
158
+ * 自動リサイズ - 高さ調整
159
+ */
160
+ private adjustHeight;
161
+ /**
162
+ * テキストエリアフィールドをHTMLとしてレンダリング(静的メソッド)
163
+ * SSR/初期レンダリング用
164
+ *
165
+ * @param field - テキストエリアフィールド定義
166
+ * @returns 生成されたHTML文字列
167
+ */
168
+ static renderField(field: TextareaField): string;
169
+ }
170
+ /**
171
+ * Textareaを作成するファクトリ関数
172
+ */
173
+ export declare function createTextarea(container: HTMLElement, config?: TextareaConfig, callbacks?: TextareaCallbacks): Textarea;
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Timeline Component
3
+ * タイムラインコンポーネント
4
+ *
5
+ *
6
+ * - 日時表示(datetime / dateLabel)
7
+ * - 時間フォーマット(none / HH:mm:ss / HH:mm)
8
+ * - アイコンカスタマイズ
9
+ * - コンテンツのカスタマイズ
10
+ * - 接続線のスタイル
11
+ * - 現在のアイテム強調(current)
12
+ *
13
+ * @see https://smarthr.design/products/components/timeline/
14
+ */
15
+ import type { InputField } from '../../types/schema';
16
+ /**
17
+ * 時間表示フォーマット
18
+ * - none: 時間を表示しない
19
+ * - HH:mm:ss: 時:分:秒
20
+ * - HH:mm: 時:分
21
+ */
22
+ export type TimelineTimeFormat = 'none' | 'HH:mm:ss' | 'HH:mm';
23
+ /**
24
+ * ビルトインアイコンタイプ
25
+ */
26
+ export type TimelineIconType = 'circle' | 'dot' | 'check' | 'warning' | 'error' | 'info' | 'clock' | 'star' | 'user' | 'message';
27
+ /**
28
+ * タイムラインアイテムの設定
29
+ */
30
+ export interface TimelineItemConfig {
31
+ /** 日時(Date or ISO string) */
32
+ datetime: string | Date;
33
+ /** カスタム日付ラベル(表示用、datetimeの代わりに表示) */
34
+ dateLabel?: string;
35
+ /** 時間表示フォーマット */
36
+ timeFormat?: TimelineTimeFormat;
37
+ /** 日付サフィックスエリア(日付の後に表示される追加コンテンツ) */
38
+ dateSuffixArea?: string;
39
+ /** サイドアクションエリア(右側に表示されるアクションボタン等) */
40
+ sideActionArea?: string;
41
+ /** 現在のアイテム(強調表示) */
42
+ current?: boolean;
43
+ /** アイコン(ビルトインタイプまたはカスタムSVG) */
44
+ icon?: TimelineIconType | string;
45
+ /** アイコンの色(CSS color値) */
46
+ iconColor?: string;
47
+ /** コンテンツ(HTML文字列) */
48
+ content: string;
49
+ /** タイトル */
50
+ title?: string;
51
+ }
52
+ /**
53
+ * タイムラインの設定
54
+ */
55
+ export interface TimelineConfig {
56
+ /** タイムラインアイテム配列 */
57
+ items: TimelineItemConfig[];
58
+ }
59
+ /**
60
+ * タイムラインの状態
61
+ */
62
+ export interface TimelineState {
63
+ /** アイテム数 */
64
+ itemCount: number;
65
+ /** 現在のアイテムインデックス(-1 = なし) */
66
+ currentIndex: number;
67
+ }
68
+ /**
69
+ * タイムラインのコールバック
70
+ */
71
+ export interface TimelineCallbacks {
72
+ /** アイテムクリック時 */
73
+ onItemClick?: (index: number, event: MouseEvent) => void;
74
+ }
75
+ /**
76
+ * タイムラインコンポーネント
77
+ */
78
+ export declare class Timeline {
79
+ private config;
80
+ private container;
81
+ private callbacks;
82
+ private state;
83
+ private itemClickElements;
84
+ constructor(container: HTMLElement, config: TimelineConfig, callbacks?: TimelineCallbacks);
85
+ /**
86
+ * タイムラインをレンダリング
87
+ */
88
+ render(): void;
89
+ /**
90
+ * アイテムを追加
91
+ */
92
+ addItem(item: TimelineItemConfig): void;
93
+ /**
94
+ * アイテムを削除
95
+ */
96
+ removeItem(index: number): void;
97
+ /**
98
+ * アイテムを更新
99
+ */
100
+ updateItem(index: number, item: Partial<TimelineItemConfig>): void;
101
+ /**
102
+ * 現在の状態を取得
103
+ */
104
+ getState(): Readonly<TimelineState>;
105
+ /**
106
+ * アイテム数を取得
107
+ */
108
+ getItemCount(): number;
109
+ /**
110
+ * コンポーネントを破棄
111
+ */
112
+ destroy(): void;
113
+ /**
114
+ * 初期状態を作成
115
+ */
116
+ private createInitialState;
117
+ /**
118
+ * イベントハンドラーをクリーンアップ
119
+ */
120
+ private cleanup;
121
+ /**
122
+ * アイテムをレンダリング
123
+ */
124
+ private renderItem;
125
+ /**
126
+ * マーカーエリアをレンダリング
127
+ */
128
+ private renderMarkerArea;
129
+ /**
130
+ * コンテンツエリアをレンダリング
131
+ */
132
+ private renderContentArea;
133
+ /**
134
+ * ヘッダーをレンダリング
135
+ */
136
+ private renderHeader;
137
+ /**
138
+ * アイコンHTMLを取得
139
+ */
140
+ private getIconHtml;
141
+ static renderField(field: InputField): string;
142
+ }
143
+ /**
144
+ * タイムラインを作成
145
+ */
146
+ export declare function createTimeline(container: HTMLElement, config: TimelineConfig, callbacks?: TimelineCallbacks): Timeline;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Toggle Component
3
+ * トグルスイッチコンポーネント
4
+ *
5
+ * API follows standard conventions from Headless UI and Radix UI:
6
+ * - `checked` / `defaultChecked` for state
7
+ * - `data-state="checked|unchecked"` for styling
8
+ * - `data-disabled` when disabled
9
+ * - `role="switch"` with `aria-checked` for accessibility
10
+ * - `onCheckedChange` callback (Radix UI compatible)
11
+ */
12
+ import type { InputField } from '../../types/schema';
13
+ /**
14
+ * トグルの状態
15
+ */
16
+ export interface ToggleState {
17
+ /** チェック状態 */
18
+ checked: boolean;
19
+ /** 無効化状態 */
20
+ disabled: boolean;
21
+ }
22
+ /**
23
+ * トグルのコールバック
24
+ */
25
+ export interface ToggleCallbacks {
26
+ /** 状態変更時 */
27
+ onChange?: (checked: boolean, state: ToggleState) => void;
28
+ /** Radix UI互換: 状態変更時 */
29
+ onCheckedChange?: (checked: boolean) => void;
30
+ }
31
+ /**
32
+ * トグルの設定
33
+ */
34
+ export interface ToggleConfig {
35
+ /** 初期チェック状態 */
36
+ defaultChecked?: boolean;
37
+ /** 無効化 */
38
+ disabled?: boolean;
39
+ /** チェック時ラベル */
40
+ checkedLabel?: string;
41
+ /** 非チェック時ラベル */
42
+ uncheckedLabel?: string;
43
+ /** サイズ ( small/medium) */
44
+ size?: 'small' | 'medium' | 'large';
45
+ /** name属性(フォーム用) */
46
+ name?: string;
47
+ /** ラベル位置 () */
48
+ labelPosition?: 'left' | 'right';
49
+ }
50
+ /**
51
+ * トグルコンポーネント
52
+ */
53
+ export declare class Toggle {
54
+ private config;
55
+ private state;
56
+ private callbacks;
57
+ private container;
58
+ private instanceId;
59
+ constructor(container: HTMLElement, config?: ToggleConfig, callbacks?: ToggleCallbacks);
60
+ /**
61
+ * トグルをレンダリング
62
+ */
63
+ render(): void;
64
+ /**
65
+ * チェック状態を設定
66
+ */
67
+ setChecked(checked: boolean): void;
68
+ /**
69
+ * 状態をトグル
70
+ */
71
+ toggle(): void;
72
+ /**
73
+ * 無効化状態を設定
74
+ */
75
+ setDisabled(disabled: boolean): void;
76
+ /**
77
+ * 現在の状態を取得
78
+ */
79
+ getState(): ToggleState;
80
+ /**
81
+ * チェック状態を取得
82
+ */
83
+ isChecked(): boolean;
84
+ /**
85
+ * 無効化されているかどうかを取得
86
+ */
87
+ isDisabled(): boolean;
88
+ /**
89
+ * 初期状態を作成
90
+ */
91
+ private createInitialState;
92
+ /**
93
+ * トグルスイッチをレンダリング
94
+ */
95
+ private renderToggle;
96
+ /**
97
+ * ラベルをレンダリング
98
+ */
99
+ private renderLabel;
100
+ /**
101
+ * ToggleフィールドをHTMLとしてレンダリング(静的メソッド)
102
+ * SSR/初期レンダリング用
103
+ */
104
+ static renderField(field: InputField): string;
105
+ }
106
+ /**
107
+ * Toggleを作成するファクトリ関数
108
+ */
109
+ export declare function createToggle(container: HTMLElement, config?: ToggleConfig, callbacks?: ToggleCallbacks): Toggle;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Tooltip Component
3
+ * ツールチップコンポーネント
4
+ *
5
+ *
6
+ * - 位置指定(top/bottom/left/right)
7
+ * - 遅延表示(デフォルト300ms)
8
+ * - リッチコンテンツ対応(HTML/テキスト)
9
+ * - 矢印表示
10
+ * - `role="tooltip"` with `aria-describedby` for accessibility
11
+ */
12
+ import type { InputField } from '../../types/schema';
13
+ /**
14
+ * ツールチップの位置
15
+ */
16
+ export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
17
+ /**
18
+ * ツールチップの状態
19
+ */
20
+ export interface TooltipState {
21
+ /** 表示中かどうか */
22
+ visible: boolean;
23
+ /** ホバー中かどうか */
24
+ hovering: boolean;
25
+ }
26
+ /**
27
+ * ツールチップのコールバック
28
+ */
29
+ export interface TooltipCallbacks {
30
+ /** 表示時 */
31
+ onShow?: () => void;
32
+ /** 非表示時 */
33
+ onHide?: () => void;
34
+ }
35
+ /**
36
+ * ツールチップの設定
37
+ */
38
+ export interface TooltipConfig {
39
+ /** ツールチップのコンテンツ(テキストまたはHTML) */
40
+ content: string;
41
+ /** 位置(デフォルト: top) */
42
+ position?: TooltipPosition;
43
+ /** 遅延表示時間(ミリ秒、デフォルト: 300) */
44
+ delay?: number;
45
+ /** 矢印を表示するか(デフォルト: true) */
46
+ showArrow?: boolean;
47
+ /** HTMLコンテンツとして解釈するか(デフォルト: false) */
48
+ isHtml?: boolean;
49
+ /** 最大幅(デフォルト: 200px) */
50
+ maxWidth?: string;
51
+ /** 無効化 */
52
+ disabled?: boolean;
53
+ /** トリガー要素にdata-tooltip-triggerを追加するか */
54
+ markTrigger?: boolean;
55
+ }
56
+ /**
57
+ * ツールチップコンポーネント
58
+ */
59
+ export declare class Tooltip {
60
+ private config;
61
+ private state;
62
+ private callbacks;
63
+ private triggerElement;
64
+ private tooltipElement;
65
+ private instanceId;
66
+ private showTimeout;
67
+ private hideTimeout;
68
+ constructor(triggerElement: HTMLElement, config: TooltipConfig, callbacks?: TooltipCallbacks);
69
+ /**
70
+ * ツールチップを表示
71
+ */
72
+ show(): void;
73
+ /**
74
+ * ツールチップを非表示
75
+ */
76
+ hide(): void;
77
+ /**
78
+ * 即座にツールチップを表示(遅延なし)
79
+ */
80
+ showImmediate(): void;
81
+ /**
82
+ * 即座にツールチップを非表示(遅延なし)
83
+ */
84
+ hideImmediate(): void;
85
+ /**
86
+ * ツールチップのコンテンツを更新
87
+ */
88
+ setContent(content: string): void;
89
+ /**
90
+ * ツールチップの位置を更新
91
+ */
92
+ setPosition(position: TooltipPosition): void;
93
+ /**
94
+ * 無効化状態を設定
95
+ */
96
+ setDisabled(disabled: boolean): void;
97
+ /**
98
+ * ツールチップを破棄
99
+ */
100
+ destroy(): void;
101
+ /**
102
+ * 現在の状態を取得
103
+ */
104
+ getState(): TooltipState;
105
+ /**
106
+ * 表示中かどうかを取得
107
+ */
108
+ isVisible(): boolean;
109
+ /**
110
+ * 初期化
111
+ */
112
+ private initialize;
113
+ /**
114
+ * イベントリスナーを追加
115
+ */
116
+ private attachEventListeners;
117
+ /**
118
+ * イベントリスナーを削除
119
+ */
120
+ private removeEventListeners;
121
+ /**
122
+ * マウスエンターハンドラー
123
+ */
124
+ private handleMouseEnter;
125
+ /**
126
+ * マウスリーブハンドラー
127
+ */
128
+ private handleMouseLeave;
129
+ /**
130
+ * フォーカスハンドラー
131
+ */
132
+ private handleFocus;
133
+ /**
134
+ * ブラーハンドラー
135
+ */
136
+ private handleBlur;
137
+ /**
138
+ * ツールチップをレンダリング
139
+ */
140
+ private render;
141
+ /**
142
+ * ツールチップの位置を計算して設定
143
+ */
144
+ private positionTooltip;
145
+ /**
146
+ * ツールチップを削除
147
+ */
148
+ private removeTooltip;
149
+ /**
150
+ * ツールチップを即座に削除(アニメーションなし)
151
+ */
152
+ private removeTooltipImmediate;
153
+ static renderField(field: InputField): string;
154
+ }
155
+ /**
156
+ * Tooltipを作成するファクトリ関数
157
+ */
158
+ export declare function createTooltip(triggerElement: HTMLElement, config: TooltipConfig, callbacks?: TooltipCallbacks): Tooltip;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Wizard Component
3
+ * ウィザード/ステップインジケーター
4
+ *
5
+ */
6
+ import type { WizardConfig, WizardStep, InputField, StepperLayoutType, StepStatus, StepStatusWithText } from '../../types';
7
+ /**
8
+ * ウィザードの状態
9
+ */
10
+ export interface WizardState {
11
+ /** 現在のステップインデックス */
12
+ currentStep: number;
13
+ /** 総ステップ数 */
14
+ totalSteps: number;
15
+ /** 各ステップのデータ */
16
+ stepData: Record<string, Record<string, unknown>>;
17
+ /** スキップされたステップ */
18
+ skippedSteps: Set<number>;
19
+ /** 完了したステップ */
20
+ completedSteps: Set<number>;
21
+ /** 各ステップのステータス */
22
+ stepStatuses: Map<number, StepStatus | StepStatusWithText>;
23
+ /** レイアウトタイプ */
24
+ layout: StepperLayoutType;
25
+ }
26
+ /**
27
+ * ウィザードのコールバック
28
+ */
29
+ export interface WizardCallbacks {
30
+ /** ステップ変更時 */
31
+ onStepChange?: (step: number, state: WizardState) => void;
32
+ /** 完了時 */
33
+ onComplete?: (data: Record<string, Record<string, unknown>>) => void;
34
+ /** フィールドレンダラー */
35
+ renderFields?: (fields: InputField[], container: HTMLElement) => void;
36
+ /** バリデーション */
37
+ validateStep?: (stepIndex: number, stepId: string) => boolean;
38
+ /** ステップクリック時 */
39
+ onStepClick?: (stepIndex: number, state: WizardState) => void;
40
+ }
41
+ /**
42
+ * ウィザードコンポーネント
43
+ */
44
+ export declare class Wizard {
45
+ private config;
46
+ private state;
47
+ private callbacks;
48
+ private container;
49
+ constructor(config: WizardConfig, container: HTMLElement, callbacks?: WizardCallbacks);
50
+ /**
51
+ * ウィザードをレンダリング
52
+ */
53
+ render(): void;
54
+ /**
55
+ * 次のステップへ進む
56
+ */
57
+ nextStep(): boolean;
58
+ /**
59
+ * 前のステップへ戻る
60
+ */
61
+ previousStep(): boolean;
62
+ /**
63
+ * 特定のステップへジャンプ(完了済みのステップのみ)
64
+ */
65
+ goToStep(stepIndex: number): boolean;
66
+ /**
67
+ * 現在のステップをスキップ
68
+ */
69
+ skipStep(): boolean;
70
+ /**
71
+ * 現在の状態を取得
72
+ */
73
+ getState(): WizardState;
74
+ /**
75
+ * ステップデータを更新
76
+ */
77
+ updateStepData(stepId: string, data: Record<string, unknown>): void;
78
+ /**
79
+ * 現在のステップ設定を取得
80
+ */
81
+ getCurrentStepConfig(): WizardStep;
82
+ /**
83
+ * 初期状態を作成
84
+ */
85
+ private createInitialState;
86
+ /**
87
+ * レイアウトを設定
88
+ */
89
+ setLayout(layout: StepperLayoutType): void;
90
+ /**
91
+ * ステップのステータスを設定
92
+ */
93
+ setStepStatus(stepIndex: number, status: StepStatus | StepStatusWithText): void;
94
+ /**
95
+ * ステップのステータスを取得
96
+ */
97
+ getStepStatus(stepIndex: number): StepStatus | StepStatusWithText | undefined;
98
+ /**
99
+ * ステップインジケーターをレンダリング
100
+ */
101
+ private renderStepIndicator;
102
+ /**
103
+ * 個別のステップマーカーをレンダリング
104
+ */
105
+ private renderStepMarker;
106
+ /**
107
+ * ステップアイコンをレンダリング
108
+ */
109
+ private renderStepIcon;
110
+ /**
111
+ * ステップコンテンツをレンダリング
112
+ */
113
+ private renderStepContent;
114
+ /**
115
+ * ナビゲーションボタンをレンダリング
116
+ */
117
+ private renderNavigation;
118
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Screen Layout — 画面レイアウトは shell 固定
3
+ */
4
+ export { shellLayout } from './shell';
5
+ export type { ScreenLayout, LayoutHelpers, RenderedSection } from './types';