mokkun 0.1.5 → 0.1.6

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 (85) hide show
  1. package/README.md +18 -6
  2. package/bin/cli.mjs +6 -6
  3. package/bin/viewer.html +2 -2
  4. package/dist/mokkun.css +1 -1
  5. package/dist/mokkun.esm.js +4898 -2913
  6. package/dist/mokkun.esm.js.map +1 -1
  7. package/dist/mokkun.js +359 -322
  8. package/dist/mokkun.js.map +1 -1
  9. package/dist/types/lib.d.ts +80 -0
  10. package/dist/types/loader/file-loader.d.ts +114 -0
  11. package/dist/types/loader/index.d.ts +4 -0
  12. package/dist/types/parser/index.d.ts +4 -0
  13. package/dist/types/parser/key-normalizer.d.ts +24 -0
  14. package/dist/types/parser/yaml-parser.d.ts +58 -0
  15. package/dist/types/renderer/action-handler.d.ts +76 -0
  16. package/dist/types/renderer/components/accordion-panel.d.ts +144 -0
  17. package/dist/types/renderer/components/action-buttons.d.ts +183 -0
  18. package/dist/types/renderer/components/alert-banner.d.ts +43 -0
  19. package/dist/types/renderer/components/app-header.d.ts +277 -0
  20. package/dist/types/renderer/components/app-navi.d.ts +167 -0
  21. package/dist/types/renderer/components/badge.d.ts +134 -0
  22. package/dist/types/renderer/components/browser.d.ts +134 -0
  23. package/dist/types/renderer/components/calendar.d.ts +198 -0
  24. package/dist/types/renderer/components/checkbox.d.ts +132 -0
  25. package/dist/types/renderer/components/chip.d.ts +120 -0
  26. package/dist/types/renderer/components/combobox.d.ts +217 -0
  27. package/dist/types/renderer/components/data-table.d.ts +186 -0
  28. package/dist/types/renderer/components/date-range-picker.d.ts +203 -0
  29. package/dist/types/renderer/components/definition-list.d.ts +165 -0
  30. package/dist/types/renderer/components/delete-confirm-dialog.d.ts +151 -0
  31. package/dist/types/renderer/components/dialog/action-dialog.d.ts +61 -0
  32. package/dist/types/renderer/components/dialog/base-dialog.d.ts +125 -0
  33. package/dist/types/renderer/components/dialog/dialog-types.d.ts +96 -0
  34. package/dist/types/renderer/components/disclosure.d.ts +118 -0
  35. package/dist/types/renderer/components/dropdown.d.ts +220 -0
  36. package/dist/types/renderer/components/duration-input.d.ts +154 -0
  37. package/dist/types/renderer/components/duration-picker.d.ts +108 -0
  38. package/dist/types/renderer/components/field-renderer.d.ts +22 -0
  39. package/dist/types/renderer/components/float-area.d.ts +196 -0
  40. package/dist/types/renderer/components/form-fields.d.ts +94 -0
  41. package/dist/types/renderer/components/form-section.d.ts +118 -0
  42. package/dist/types/renderer/components/google-map-embed.d.ts +88 -0
  43. package/dist/types/renderer/components/heading.d.ts +119 -0
  44. package/dist/types/renderer/components/image-uploader.d.ts +271 -0
  45. package/dist/types/renderer/components/index.d.ts +48 -0
  46. package/dist/types/renderer/components/information-panel.d.ts +139 -0
  47. package/dist/types/renderer/components/input.d.ts +222 -0
  48. package/dist/types/renderer/components/layout.d.ts +71 -0
  49. package/dist/types/renderer/components/line-clamp.d.ts +170 -0
  50. package/dist/types/renderer/components/loader.d.ts +104 -0
  51. package/dist/types/renderer/components/notification-bar.d.ts +251 -0
  52. package/dist/types/renderer/components/pagination.d.ts +167 -0
  53. package/dist/types/renderer/components/photo-manager-renderer.d.ts +9 -0
  54. package/dist/types/renderer/components/radio-button-panel.d.ts +152 -0
  55. package/dist/types/renderer/components/radio.d.ts +117 -0
  56. package/dist/types/renderer/components/repeater.d.ts +116 -0
  57. package/dist/types/renderer/components/response-message.d.ts +180 -0
  58. package/dist/types/renderer/components/search-input.d.ts +198 -0
  59. package/dist/types/renderer/components/section-nav.d.ts +151 -0
  60. package/dist/types/renderer/components/segmented-control.d.ts +143 -0
  61. package/dist/types/renderer/components/select.d.ts +98 -0
  62. package/dist/types/renderer/components/status-label.d.ts +146 -0
  63. package/dist/types/renderer/components/stepper.d.ts +123 -0
  64. package/dist/types/renderer/components/tabs.d.ts +185 -0
  65. package/dist/types/renderer/components/textarea.d.ts +173 -0
  66. package/dist/types/renderer/components/timeline.d.ts +146 -0
  67. package/dist/types/renderer/components/toggle.d.ts +109 -0
  68. package/dist/types/renderer/components/tooltip.d.ts +158 -0
  69. package/dist/types/renderer/components/wizard.d.ts +118 -0
  70. package/dist/types/renderer/layouts/index.d.ts +5 -0
  71. package/dist/types/renderer/layouts/shell.d.ts +7 -0
  72. package/dist/types/renderer/layouts/types.d.ts +34 -0
  73. package/dist/types/renderer/screen-renderer.d.ts +53 -0
  74. package/dist/types/renderer/utils/dom.d.ts +29 -0
  75. package/dist/types/renderer/utils/dummy-data.d.ts +13 -0
  76. package/dist/types/renderer/utils/field-helpers.d.ts +90 -0
  77. package/dist/types/renderer/utils/icons.d.ts +13 -0
  78. package/dist/types/renderer/utils/index.d.ts +6 -0
  79. package/dist/types/theme/index.d.ts +6 -0
  80. package/dist/types/theme/theme-manager.d.ts +102 -0
  81. package/dist/types/types/field-renderable.d.ts +40 -0
  82. package/dist/types/types/index.d.ts +6 -0
  83. package/dist/types/types/schema.d.ts +1701 -0
  84. package/dist/types/types/theme.d.ts +111 -0
  85. package/package.json +3 -1
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Disclosure Component
3
+ * 開閉コンテンツコンポーネント
4
+ *
5
+ *
6
+ * https://smarthr.design/products/components/disclosure/
7
+ *
8
+ * 機能:
9
+ * - 開閉トリガー(クリック)
10
+ * - スムーズなアニメーション
11
+ * - アイコン回転
12
+ * - デフォルト展開状態
13
+ * - キーボード操作対応
14
+ * - アクセシビリティ対応(ARIA属性)
15
+ *
16
+ * 用途:
17
+ * - 「もっと見る」機能
18
+ * - 補足情報の表示切り替え
19
+ * - AccordionPanelより軽量な単独使用
20
+ */
21
+ import type { InputField } from '../../types/schema';
22
+ /**
23
+ * Disclosureの状態
24
+ */
25
+ export interface DisclosureState {
26
+ /** 展開中かどうか */
27
+ isOpen: boolean;
28
+ }
29
+ /**
30
+ * Disclosureのコールバック
31
+ */
32
+ export interface DisclosureCallbacks {
33
+ /** 展開時 */
34
+ onOpen?: () => void;
35
+ /** 折りたたみ時 */
36
+ onClose?: () => void;
37
+ /** 開閉状態変更時 */
38
+ onChange?: (isOpen: boolean) => void;
39
+ }
40
+ /**
41
+ * Disclosureの設定
42
+ */
43
+ export interface DisclosureConfig {
44
+ /** トリガーのラベル(閉じているとき) */
45
+ triggerLabel: string;
46
+ /** トリガーのラベル(開いているとき、オプション) */
47
+ triggerLabelOpen?: string;
48
+ /** コンテンツ(HTML文字列またはHTMLElement) */
49
+ content: string | HTMLElement;
50
+ /** デフォルトで展開(デフォルト: false) */
51
+ defaultOpen?: boolean;
52
+ /** ID属性 */
53
+ id?: string;
54
+ /** カスタムCSSクラス */
55
+ className?: string;
56
+ /** 閉じた状態でもDOMに存在させるか(デフォルト: false) */
57
+ visuallyHidden?: boolean;
58
+ }
59
+ /**
60
+ * Disclosureコンポーネント
61
+ */
62
+ export declare class Disclosure {
63
+ private config;
64
+ private state;
65
+ private callbacks;
66
+ private container;
67
+ private instanceId;
68
+ private triggerElement;
69
+ private contentWrapper;
70
+ private contentElement;
71
+ constructor(container: HTMLElement, config: DisclosureConfig, callbacks?: DisclosureCallbacks);
72
+ /**
73
+ * Disclosureをレンダリング
74
+ */
75
+ render(): void;
76
+ /**
77
+ * 展開する
78
+ */
79
+ open(): void;
80
+ /**
81
+ * 折りたたむ
82
+ */
83
+ close(): void;
84
+ /**
85
+ * 開閉を切り替え
86
+ */
87
+ toggle(): void;
88
+ /**
89
+ * 展開状態を確認
90
+ */
91
+ isOpen(): boolean;
92
+ /**
93
+ * 現在の状態を取得
94
+ */
95
+ getState(): DisclosureState;
96
+ /**
97
+ * コンテンツを更新
98
+ */
99
+ setContent(content: string | HTMLElement): void;
100
+ /**
101
+ * トリガーラベルを更新
102
+ */
103
+ setTriggerLabel(label: string, labelOpen?: string): void;
104
+ /**
105
+ * コンポーネントを破棄
106
+ */
107
+ destroy(): void;
108
+ private renderTrigger;
109
+ private renderIcon;
110
+ private renderContent;
111
+ private updateUI;
112
+ private getCurrentLabel;
113
+ static renderField(field: InputField): string;
114
+ }
115
+ /**
116
+ * Disclosureを作成
117
+ */
118
+ export declare function createDisclosure(container: HTMLElement, config: DisclosureConfig, callbacks?: DisclosureCallbacks): Disclosure;
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Dropdown Component
3
+ * ドロップダウンコンポーネント
4
+ *
5
+ * 3つのバリアント:
6
+ * - MenuButton: アクションメニュー
7
+ * - FilterDropdown: フィルター操作
8
+ * - SortDropdown: 並び替え操作
9
+ */
10
+ import type { InputField } from '../../types/schema';
11
+ /**
12
+ * ドロップダウンメニュー項目の基本型
13
+ */
14
+ interface BaseMenuItem {
15
+ /** 項目ID */
16
+ id: string;
17
+ /** 項目ラベル */
18
+ label: string;
19
+ /** アイコン(オプション) */
20
+ icon?: string;
21
+ /** 無効化 */
22
+ disabled?: boolean;
23
+ }
24
+ /**
25
+ * アクションメニュー項目
26
+ */
27
+ export interface ActionMenuItem extends BaseMenuItem {
28
+ type: 'action';
29
+ /** クリック時のハンドラー */
30
+ onAction?: (id: string) => void;
31
+ }
32
+ /**
33
+ * 区切り線
34
+ */
35
+ export interface DividerMenuItem {
36
+ type: 'divider';
37
+ /** 一意なID(必須) */
38
+ id: string;
39
+ }
40
+ /**
41
+ * フィルター項目
42
+ */
43
+ export interface FilterMenuItem extends BaseMenuItem {
44
+ type: 'filter';
45
+ /** フィルター値 */
46
+ value: string;
47
+ /** 選択状態 */
48
+ selected?: boolean;
49
+ }
50
+ /**
51
+ * ソート項目
52
+ */
53
+ export interface SortMenuItem extends BaseMenuItem {
54
+ type: 'sort';
55
+ /** ソートフィールド */
56
+ field: string;
57
+ /** ソート方向 */
58
+ direction?: 'asc' | 'desc';
59
+ }
60
+ /**
61
+ * 全てのメニュー項目のユニオン型
62
+ */
63
+ export type MenuItem = ActionMenuItem | DividerMenuItem | FilterMenuItem | SortMenuItem;
64
+ /**
65
+ * ドロップダウンのバリアント
66
+ */
67
+ export type DropdownVariant = 'menu' | 'filter' | 'sort';
68
+ /**
69
+ * ドロップダウンの配置
70
+ */
71
+ export type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
72
+ /**
73
+ * ドロップダウンの状態
74
+ */
75
+ export interface DropdownState {
76
+ /** 開閉状態 */
77
+ isOpen: boolean;
78
+ /** メニュー項目 */
79
+ items: MenuItem[];
80
+ /** 選択されたフィルター(FilterDropdown用) */
81
+ selectedFilters?: string[];
82
+ /** 現在のソート(SortDropdown用) */
83
+ currentSort?: {
84
+ field: string;
85
+ direction: 'asc' | 'desc';
86
+ };
87
+ /** フォーカスされている項目のインデックス */
88
+ focusedIndex: number;
89
+ }
90
+ /**
91
+ * ドロップダウンのコールバック
92
+ */
93
+ export interface DropdownCallbacks {
94
+ /** 開閉状態変更時 */
95
+ onOpenChange?: (isOpen: boolean) => void;
96
+ /** メニュー項目選択時 */
97
+ onSelect?: (item: MenuItem) => void;
98
+ /** フィルター適用時(FilterDropdown用) */
99
+ onApply?: (selectedFilters: string[]) => void;
100
+ /** フィルタークリア時(FilterDropdown用) */
101
+ onReset?: () => void;
102
+ /** ソート変更時(SortDropdown用) */
103
+ onSortChange?: (field: string, direction: 'asc' | 'desc') => void;
104
+ }
105
+ /**
106
+ * ドロップダウンの設定
107
+ */
108
+ export interface DropdownConfig {
109
+ /** バリアント */
110
+ variant?: DropdownVariant;
111
+ /** トリガーボタンのラベル */
112
+ triggerLabel: string;
113
+ /** トリガーボタンのアイコン */
114
+ triggerIcon?: string;
115
+ /** メニュー項目 */
116
+ items: MenuItem[];
117
+ /** 配置 */
118
+ placement?: DropdownPlacement;
119
+ /** トリガーサイズ */
120
+ triggerSize?: 's' | 'default';
121
+ /** アイコンのみのトリガー */
122
+ onlyIconTrigger?: boolean;
123
+ /** 初期開閉状態 */
124
+ defaultOpen?: boolean;
125
+ /** フィルター状態(FilterDropdown用) */
126
+ isFiltered?: boolean;
127
+ /** モーダル表示(モバイル用、将来実装) */
128
+ useModal?: boolean;
129
+ }
130
+ /**
131
+ * ドロップダウンコンポーネント
132
+ */
133
+ export declare class Dropdown {
134
+ private config;
135
+ private state;
136
+ private callbacks;
137
+ private container;
138
+ private instanceId;
139
+ private triggerElement;
140
+ private contentElement;
141
+ private clickOutsideHandler;
142
+ private keyboardHandler;
143
+ constructor(container: HTMLElement, config: DropdownConfig, callbacks?: DropdownCallbacks);
144
+ /**
145
+ * ドロップダウンをレンダリング
146
+ */
147
+ render(): void;
148
+ /**
149
+ * 開閉状態を切り替え
150
+ */
151
+ toggle(): void;
152
+ /**
153
+ * 開く
154
+ */
155
+ open(): void;
156
+ /**
157
+ * 閉じる
158
+ */
159
+ close(): void;
160
+ /**
161
+ * 開閉状態を設定
162
+ */
163
+ setOpen(isOpen: boolean): void;
164
+ /**
165
+ * 状態を取得
166
+ */
167
+ getState(): DropdownState;
168
+ /**
169
+ * メニュー項目を更新
170
+ */
171
+ setItems(items: MenuItem[]): void;
172
+ /**
173
+ * コンポーネントを破棄
174
+ */
175
+ destroy(): void;
176
+ private createInitialState;
177
+ private renderTrigger;
178
+ private renderContent;
179
+ private renderMenuContent;
180
+ private renderFilterContent;
181
+ private renderMenuItem;
182
+ private renderFilterItem;
183
+ private renderDivider;
184
+ private handleItemClick;
185
+ private handleFilterChange;
186
+ private handleFilterApply;
187
+ private handleFilterReset;
188
+ private handleClickOutside;
189
+ private handleKeyboard;
190
+ /**
191
+ * 初回オープン時のフォーカス設定(再レンダリングなし)
192
+ */
193
+ private initializeFocus;
194
+ private focusFirstItem;
195
+ private focusLastItem;
196
+ private focusNextItem;
197
+ private focusPreviousItem;
198
+ private setFocusedIndex;
199
+ private selectFocusedItem;
200
+ private attachEventListeners;
201
+ private detachEventListeners;
202
+ static renderField(field: InputField): string;
203
+ }
204
+ /**
205
+ * ドロップダウンを作成(ファクトリー関数)
206
+ */
207
+ export declare function createDropdown(container: HTMLElement, config: DropdownConfig, callbacks?: DropdownCallbacks): Dropdown;
208
+ /**
209
+ * メニューボタンを作成
210
+ */
211
+ export declare function createMenuButton(container: HTMLElement, config: Omit<DropdownConfig, 'variant'>, callbacks?: DropdownCallbacks): Dropdown;
212
+ /**
213
+ * フィルタードロップダウンを作成
214
+ */
215
+ export declare function createFilterDropdown(container: HTMLElement, config: Omit<DropdownConfig, 'variant'>, callbacks?: DropdownCallbacks): Dropdown;
216
+ /**
217
+ * ソートドロップダウンを作成
218
+ */
219
+ export declare function createSortDropdown(container: HTMLElement, config: Omit<DropdownConfig, 'variant'>, callbacks?: DropdownCallbacks): Dropdown;
220
+ export {};
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Duration Input Component
3
+ * 期間入力コンポーネント(数値入力 + 単位表示)
4
+ *
5
+ * 機能:
6
+ * - 数値入力による期間指定
7
+ * - 単位ラベル表示
8
+ * - バリデーション
9
+ * - アクセシビリティ対応
10
+ */
11
+ import type { DurationInputField } from '../../types/schema';
12
+ /**
13
+ * 表示単位
14
+ */
15
+ export type DisplayUnit = 'hours' | 'minutes' | 'seconds';
16
+ /**
17
+ * Duration Inputの状態
18
+ */
19
+ export interface DurationInputState {
20
+ /** 現在の値(表示単位での数値) */
21
+ value: number;
22
+ /** 無効化状態 */
23
+ disabled: boolean;
24
+ /** 読み取り専用状態 */
25
+ readonly: boolean;
26
+ /** エラー状態 */
27
+ error: boolean;
28
+ /** エラーメッセージ */
29
+ errorMessage?: string;
30
+ }
31
+ /**
32
+ * Duration Inputのコールバック
33
+ */
34
+ export interface DurationInputCallbacks {
35
+ /** 値変更時 */
36
+ onChange?: (value: number, state: DurationInputState) => void;
37
+ /** フォーカス時 */
38
+ onFocus?: (state: DurationInputState) => void;
39
+ /** ブラー時 */
40
+ onBlur?: (state: DurationInputState) => void;
41
+ }
42
+ /**
43
+ * Duration Inputの設定
44
+ */
45
+ export interface DurationInputConfig {
46
+ /** 初期値 */
47
+ defaultValue?: number;
48
+ /** 表示単位 */
49
+ displayUnit?: DisplayUnit;
50
+ /** 最小値 */
51
+ min?: number;
52
+ /** 最大値 */
53
+ max?: number;
54
+ /** 無効化 */
55
+ disabled?: boolean;
56
+ /** 読み取り専用 */
57
+ readonly?: boolean;
58
+ /** 必須 */
59
+ required?: boolean;
60
+ /** name属性 */
61
+ name?: string;
62
+ /** ID */
63
+ id?: string;
64
+ /** プレースホルダー */
65
+ placeholder?: string;
66
+ }
67
+ /**
68
+ * 期間入力コンポーネント
69
+ */
70
+ export declare class DurationInput {
71
+ private config;
72
+ private state;
73
+ private callbacks;
74
+ private container;
75
+ private instanceId;
76
+ private inputElement;
77
+ constructor(container: HTMLElement, config?: DurationInputConfig, callbacks?: DurationInputCallbacks);
78
+ /**
79
+ * Duration Inputをレンダリング
80
+ */
81
+ render(): void;
82
+ /**
83
+ * 値を設定
84
+ */
85
+ setValue(value: number): void;
86
+ /**
87
+ * 値を取得
88
+ */
89
+ getValue(): number;
90
+ /**
91
+ * エラー状態を設定
92
+ */
93
+ setError(error: boolean, errorMessage?: string): void;
94
+ /**
95
+ * 無効化状態を設定
96
+ */
97
+ setDisabled(disabled: boolean): void;
98
+ /**
99
+ * 読み取り専用状態を設定
100
+ */
101
+ setReadonly(readonly: boolean): void;
102
+ /**
103
+ * フォーカス
104
+ */
105
+ focus(): void;
106
+ /**
107
+ * ブラー
108
+ */
109
+ blur(): void;
110
+ /**
111
+ * 現在の状態を取得
112
+ */
113
+ getState(): DurationInputState;
114
+ /**
115
+ * 初期状態を作成
116
+ */
117
+ private createInitialState;
118
+ /**
119
+ * 入力グループをレンダリング
120
+ */
121
+ private renderInputGroup;
122
+ /**
123
+ * 入力フィールドをレンダリング
124
+ */
125
+ private renderInput;
126
+ /**
127
+ * エラーメッセージをレンダリング
128
+ */
129
+ private renderError;
130
+ /**
131
+ * 入力イベント
132
+ */
133
+ private handleInput;
134
+ /**
135
+ * フォーカスイベント
136
+ */
137
+ private handleFocus;
138
+ /**
139
+ * ブラーイベント
140
+ */
141
+ private handleBlur;
142
+ /**
143
+ * Duration Inputフィールドを HTMLとしてレンダリング(静的メソッド)
144
+ * SSR/初期レンダリング用
145
+ *
146
+ * @param field - Duration Inputフィールド定義
147
+ * @returns 生成されたHTML文字列
148
+ */
149
+ static renderField(field: DurationInputField): string;
150
+ }
151
+ /**
152
+ * Duration Inputを作成するファクトリ関数
153
+ */
154
+ export declare function createDurationInput(container: HTMLElement, config?: DurationInputConfig, callbacks?: DurationInputCallbacks): DurationInput;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Duration Picker Component
3
+ * 期間選択コンポーネント(時間:分 等の選択UI)
4
+ *
5
+ * 機能:
6
+ * - 複数の時間単位(日/時間/分/秒)からの選択
7
+ * - 柔軟な単位設定
8
+ * - アクセシビリティ対応
9
+ */
10
+ import type { DurationPickerField } from '../../types/schema';
11
+ /**
12
+ * 時間単位
13
+ */
14
+ export type DurationUnit = 'days' | 'hours' | 'minutes' | 'seconds';
15
+ /**
16
+ * Duration Pickerの状態
17
+ */
18
+ export interface DurationPickerState {
19
+ /** 各単位の値 */
20
+ values: Record<DurationUnit, number>;
21
+ /** 無効化状態 */
22
+ disabled: boolean;
23
+ }
24
+ /**
25
+ * Duration Pickerのコールバック
26
+ */
27
+ export interface DurationPickerCallbacks {
28
+ /** 値変更時 */
29
+ onChange?: (values: Record<DurationUnit, number>, state: DurationPickerState) => void;
30
+ }
31
+ /**
32
+ * Duration Pickerの設定
33
+ */
34
+ export interface DurationPickerConfig {
35
+ /** 使用する単位 */
36
+ units: DurationUnit[];
37
+ /** 初期値 */
38
+ defaultValues?: Partial<Record<DurationUnit, number>>;
39
+ /** 無効化 */
40
+ disabled?: boolean;
41
+ /** name属性プレフィックス */
42
+ name?: string;
43
+ /** ID */
44
+ id?: string;
45
+ }
46
+ /**
47
+ * 期間選択コンポーネント
48
+ */
49
+ export declare class DurationPicker {
50
+ private config;
51
+ private state;
52
+ private callbacks;
53
+ private container;
54
+ private instanceId;
55
+ constructor(container: HTMLElement, config: DurationPickerConfig, callbacks?: DurationPickerCallbacks);
56
+ /**
57
+ * Duration Pickerをレンダリング
58
+ */
59
+ render(): void;
60
+ /**
61
+ * 値を設定
62
+ */
63
+ setValue(unit: DurationUnit, value: number): void;
64
+ /**
65
+ * 全ての値を設定
66
+ */
67
+ setValues(values: Partial<Record<DurationUnit, number>>): void;
68
+ /**
69
+ * 値を取得
70
+ */
71
+ getValue(unit: DurationUnit): number;
72
+ /**
73
+ * 全ての値を取得
74
+ */
75
+ getValues(): Record<DurationUnit, number>;
76
+ /**
77
+ * 無効化状態を設定
78
+ */
79
+ setDisabled(disabled: boolean): void;
80
+ /**
81
+ * 現在の状態を取得
82
+ */
83
+ getState(): DurationPickerState;
84
+ /**
85
+ * 初期状態を作成
86
+ */
87
+ private createInitialState;
88
+ /**
89
+ * 単位セレクターをレンダリング
90
+ */
91
+ private renderUnitSelector;
92
+ /**
93
+ * 単位ごとの最大値を取得
94
+ */
95
+ private getMaxForUnit;
96
+ /**
97
+ * Duration Pickerフィールドを HTMLとしてレンダリング(静的メソッド)
98
+ * SSR/初期レンダリング用
99
+ *
100
+ * @param field - Duration Pickerフィールド定義
101
+ * @returns 生成されたHTML文字列
102
+ */
103
+ static renderField(field: DurationPickerField): string;
104
+ }
105
+ /**
106
+ * Duration Pickerを作成するファクトリ関数
107
+ */
108
+ export declare function createDurationPicker(container: HTMLElement, config: DurationPickerConfig, callbacks?: DurationPickerCallbacks): DurationPicker;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Field Renderer
3
+ * フィールドレンダリングユーティリティ
4
+ */
5
+ import type { InputField } from '../../types';
6
+ /**
7
+ * フィールドをレンダリングするオプション
8
+ */
9
+ export interface RenderFieldOptions {
10
+ /** 値 */
11
+ value?: unknown;
12
+ /** 変更時コールバック */
13
+ onChange?: (fieldId: string, value: unknown) => void;
14
+ /** ネストレベル(リピーター用) */
15
+ nestLevel?: number;
16
+ /** アイテムID(リピーター内のフィールド用) */
17
+ itemId?: string;
18
+ }
19
+ /**
20
+ * フィールドをレンダリング
21
+ */
22
+ export declare function renderField(field: InputField, container: HTMLElement, options?: RenderFieldOptions): void;