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,196 @@
1
+ /**
2
+ * FloatArea Component
3
+ * フローティング領域コンポーネント
4
+ *
5
+ *
6
+ * https://smarthr.design/products/components/float-area/
7
+ *
8
+ * 機能:
9
+ * - primaryButton / secondaryButton / tertiaryButton の3ボタン構成
10
+ * - responseMessage(処理結果メッセージ)のサポート
11
+ * - 画面下部への固定表示
12
+ * - デスクトップ/モバイル対応レイアウト
13
+ * - z-index管理
14
+ *
15
+ * 用途:
16
+ * - フォーム送信ボタンの固定表示
17
+ * - モーダルUIのアクション領域
18
+ * - 設定画面のアクションビュー
19
+ */
20
+ import type { InputField } from '../../types/schema';
21
+ /**
22
+ * ボタン設定
23
+ */
24
+ export interface FloatAreaButton {
25
+ /** ボタンのラベル */
26
+ label: string;
27
+ /** ボタンのタイプ */
28
+ variant?: 'primary' | 'secondary' | 'danger' | 'text';
29
+ /** 無効状態 */
30
+ disabled?: boolean;
31
+ /** クリック時のコールバック */
32
+ onClick?: () => void;
33
+ }
34
+ /**
35
+ * レスポンスメッセージの種類
36
+ */
37
+ export type ResponseMessageType = 'success' | 'error' | 'warning' | 'info';
38
+ /**
39
+ * レスポンスメッセージ設定
40
+ */
41
+ export interface ResponseMessage {
42
+ /** メッセージ */
43
+ text: string;
44
+ /** メッセージの種類 */
45
+ type: ResponseMessageType;
46
+ }
47
+ /**
48
+ * フローティング領域の状態
49
+ */
50
+ export interface FloatAreaState {
51
+ /** 表示中かどうか */
52
+ visible: boolean;
53
+ /** z-index */
54
+ zIndex: number;
55
+ /** レスポンスメッセージ */
56
+ responseMessage: ResponseMessage | null;
57
+ }
58
+ /**
59
+ * フローティング領域のコールバック
60
+ */
61
+ export interface FloatAreaCallbacks {
62
+ /** プライマリボタンクリック時 */
63
+ onPrimaryClick?: () => void;
64
+ /** セカンダリボタンクリック時 */
65
+ onSecondaryClick?: () => void;
66
+ /** ターシャリボタンクリック時 */
67
+ onTertiaryClick?: () => void;
68
+ /** 表示時 */
69
+ onShow?: () => void;
70
+ /** 非表示時 */
71
+ onHide?: () => void;
72
+ }
73
+ /**
74
+ * フローティング領域の設定
75
+ */
76
+ export interface FloatAreaConfig {
77
+ /** プライマリボタン(必須) */
78
+ primaryButton: FloatAreaButton;
79
+ /** セカンダリボタン */
80
+ secondaryButton?: FloatAreaButton;
81
+ /** ターシャリボタン(左端に配置) */
82
+ tertiaryButton?: FloatAreaButton;
83
+ /** レスポンスメッセージ */
84
+ responseMessage?: ResponseMessage;
85
+ /** z-index(デフォルト: 500) */
86
+ zIndex?: number;
87
+ /** 下部からの距離(デフォルト: 24px) */
88
+ bottom?: string;
89
+ /** 最大幅(デフォルト: 800px) */
90
+ maxWidth?: string;
91
+ /** アクセシビリティ用ラベル */
92
+ ariaLabel?: string;
93
+ }
94
+ /**
95
+ * フローティング領域コンポーネント
96
+ */
97
+ export declare class FloatArea {
98
+ private config;
99
+ private state;
100
+ private callbacks;
101
+ private containerElement;
102
+ private floatAreaElement;
103
+ private instanceId;
104
+ constructor(containerElement: HTMLElement, config: FloatAreaConfig, callbacks?: FloatAreaCallbacks);
105
+ /**
106
+ * コンポーネントをレンダリング
107
+ */
108
+ render(): void;
109
+ /**
110
+ * フローティング領域を表示
111
+ */
112
+ show(): void;
113
+ /**
114
+ * フローティング領域を非表示
115
+ */
116
+ hide(): void;
117
+ /**
118
+ * 表示/非表示を切り替え
119
+ */
120
+ toggle(): void;
121
+ /**
122
+ * レスポンスメッセージを設定
123
+ */
124
+ setResponseMessage(message: ResponseMessage | null): void;
125
+ /**
126
+ * 成功メッセージを表示
127
+ */
128
+ showSuccess(text: string): void;
129
+ /**
130
+ * エラーメッセージを表示
131
+ */
132
+ showError(text: string): void;
133
+ /**
134
+ * メッセージをクリア
135
+ */
136
+ clearMessage(): void;
137
+ /**
138
+ * プライマリボタンを更新
139
+ */
140
+ updatePrimaryButton(button: Partial<FloatAreaButton>): void;
141
+ /**
142
+ * プライマリボタンの無効状態を設定
143
+ */
144
+ setPrimaryDisabled(disabled: boolean): void;
145
+ /**
146
+ * z-indexを設定
147
+ */
148
+ setZIndex(zIndex: number): void;
149
+ /**
150
+ * コンポーネントを破棄
151
+ */
152
+ destroy(): void;
153
+ /**
154
+ * 現在の状態を取得
155
+ */
156
+ getState(): FloatAreaState;
157
+ /**
158
+ * 表示中かどうかを取得
159
+ */
160
+ isVisible(): boolean;
161
+ /**
162
+ * フローティング領域要素を作成
163
+ */
164
+ private createFloatAreaElement;
165
+ /**
166
+ * ボタン要素を作成
167
+ */
168
+ private createButton;
169
+ /**
170
+ * レスポンスメッセージ要素を作成
171
+ */
172
+ private createResponseMessage;
173
+ /**
174
+ * メッセージタイプに応じたアイコンを取得
175
+ */
176
+ private getMessageIcon;
177
+ /**
178
+ * クラス名を構築
179
+ */
180
+ private buildClassName;
181
+ /**
182
+ * 表示状態を更新
183
+ */
184
+ private updateVisibility;
185
+ /**
186
+ * 要素を削除
187
+ */
188
+ private removeElement;
189
+ static renderField(field: InputField): string;
190
+ }
191
+ /**
192
+ * FloatAreaを作成するファクトリ関数
193
+ */
194
+ export declare function createFloatArea(containerElement: HTMLElement, config: FloatAreaConfig, callbacks?: FloatAreaCallbacks): FloatArea;
195
+ export type FloatAreaPosition = 'top' | 'bottom';
196
+ export type FloatAreaAlignment = 'left' | 'center' | 'right' | 'space-between';
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Form Field Renderers (Facade)
3
+ * 各フォームフィールドタイプのHTML生成
4
+ *
5
+ * このモジュールはファサードとして機能し、実際のレンダリングロジックは
6
+ * 各コンポーネントの静的renderFieldメソッドに委譲されます。
7
+ */
8
+ import type { InputField, TextField, NumberField, TextareaField, SelectField, MultiSelectField, ComboboxField, RadioGroupField, CheckboxGroupField, DatePickerField, TimePickerField, DurationPickerField, DurationInputField, FileUploadField, RepeaterField, GoogleMapEmbedField, ImageUploaderField, HeadingField } from '../../types/schema';
9
+ /**
10
+ * text → <input type="text">
11
+ * @deprecated Use Input.renderField instead
12
+ */
13
+ export declare function renderTextField(field: TextField): string;
14
+ /**
15
+ * number → <input type="number">
16
+ * @deprecated Use Input.renderField instead
17
+ */
18
+ export declare function renderNumberField(field: NumberField): string;
19
+ /**
20
+ * textarea → <textarea>
21
+ * @deprecated Use Textarea.renderField instead
22
+ */
23
+ export declare function renderTextareaField(field: TextareaField): string;
24
+ /**
25
+ * select → <select>
26
+ * @deprecated Use Select.renderField instead
27
+ */
28
+ export declare function renderSelectField(field: SelectField): string;
29
+ /**
30
+ * multi_select → <select multiple>
31
+ * @deprecated Use Select.renderField instead
32
+ */
33
+ export declare function renderMultiSelectField(field: MultiSelectField): string;
34
+ /**
35
+ * combobox → Combobox component container
36
+ * @deprecated Use Combobox.renderField instead
37
+ */
38
+ export declare function renderComboboxField(field: ComboboxField): string;
39
+ /**
40
+ * radio_group → <input type="radio"> × N
41
+ * @deprecated Use RadioButton.renderField instead
42
+ */
43
+ export declare function renderRadioGroupField(field: RadioGroupField): string;
44
+ /**
45
+ * checkbox_group → <input type="checkbox"> × N
46
+ * @deprecated Use Checkbox.renderField instead
47
+ */
48
+ export declare function renderCheckboxGroupField(field: CheckboxGroupField): string;
49
+ /**
50
+ * date_picker → <input type="date">
51
+ * @deprecated Use Input.renderField instead
52
+ */
53
+ export declare function renderDatePickerField(field: DatePickerField): string;
54
+ /**
55
+ * time_picker → <input type="time">
56
+ * @deprecated Use Input.renderField instead
57
+ */
58
+ export declare function renderTimePickerField(field: TimePickerField): string;
59
+ /**
60
+ * duration_picker → カスタム(時間:分 選択UI)
61
+ * @deprecated Use DurationPicker.renderField instead
62
+ */
63
+ export declare function renderDurationPickerField(field: DurationPickerField): string;
64
+ /**
65
+ * duration_input → <input type="number"> + 単位
66
+ * @deprecated Use DurationInput.renderField instead
67
+ */
68
+ export declare function renderDurationInputField(field: DurationInputField): string;
69
+ /**
70
+ * heading → 見出しフィールド
71
+ * @deprecated Use Heading.renderField instead
72
+ */
73
+ export declare function renderHeadingField(field: HeadingField): string;
74
+ /**
75
+ * file_upload → <input type="file">
76
+ */
77
+ export declare function renderFileUploadField(field: FileUploadField): string;
78
+ /**
79
+ * google_map_embed → Google Maps 埋め込みコンポーネント
80
+ */
81
+ export declare function renderGoogleMapEmbedFieldHtml(field: GoogleMapEmbedField): string;
82
+ /**
83
+ * image_uploader → 画像アップローダーコンポーネント
84
+ */
85
+ export declare function renderImageUploaderField(field: ImageUploaderField): string;
86
+ export declare function renderRepeaterFieldStatic(field: RepeaterField): string;
87
+ /**
88
+ * フィールドタイプに応じてレンダリング
89
+ */
90
+ export declare function renderField(field: InputField): string;
91
+ /**
92
+ * 複数のフィールドをレンダリング
93
+ */
94
+ export declare function renderFields(fields: InputField[]): string;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Form Section Component
3
+ * フォームセクションコンポーネント
4
+ * 統合フォーム内のセクションを構造化して表示する
5
+ */
6
+ import type { FormSection as FormSectionSchema, InputFieldRaw } from '../../types/schema';
7
+ /**
8
+ * フォームセクションの設定
9
+ */
10
+ export interface FormSectionConfig {
11
+ /** セクション名 */
12
+ sectionName: string;
13
+ /** アイコン(HTML文字列またはアイコンクラス) */
14
+ icon?: string;
15
+ /** 公開設定トグルを表示 */
16
+ publishToggle?: boolean;
17
+ /** 初期の公開設定状態 */
18
+ publishToggleInitial?: boolean;
19
+ /** 折りたたみ可能 */
20
+ collapsible?: boolean;
21
+ /** 初期の折りたたみ状態 */
22
+ collapsed?: boolean;
23
+ /** 入力フィールド */
24
+ fields?: InputFieldRaw[];
25
+ /** カスタムコンテンツ(HTML文字列) */
26
+ content?: string;
27
+ /** セクションの説明 */
28
+ description?: string;
29
+ }
30
+ /**
31
+ * フォームセクションの状態
32
+ */
33
+ export interface FormSectionState {
34
+ /** 公開設定状態 */
35
+ isPublished: boolean;
36
+ /** 折りたたみ状態 */
37
+ isCollapsed: boolean;
38
+ /** セクション名 */
39
+ sectionName: string;
40
+ }
41
+ /**
42
+ * フォームセクションのコールバック
43
+ */
44
+ export interface FormSectionCallbacks {
45
+ /** 公開設定変更時 */
46
+ onPublishToggle?: (isPublished: boolean, state: FormSectionState) => void;
47
+ /** 折りたたみ状態変更時 */
48
+ onCollapseToggle?: (isCollapsed: boolean, state: FormSectionState) => void;
49
+ /** フィールドレンダラー */
50
+ renderFields?: (fields: InputFieldRaw[], container: HTMLElement) => void;
51
+ }
52
+ /**
53
+ * フォームセクションコンポーネント
54
+ */
55
+ export declare class FormSection {
56
+ private config;
57
+ private state;
58
+ private callbacks;
59
+ private container;
60
+ private instanceId;
61
+ constructor(config: FormSectionConfig, container: HTMLElement, callbacks?: FormSectionCallbacks);
62
+ /**
63
+ * セクションをレンダリング
64
+ */
65
+ render(): void;
66
+ /**
67
+ * 公開設定を切り替え
68
+ */
69
+ setPublished(isPublished: boolean): void;
70
+ /**
71
+ * 公開設定を取得
72
+ */
73
+ isPublished(): boolean;
74
+ /**
75
+ * 折りたたみ状態を切り替え
76
+ */
77
+ setCollapsed(isCollapsed: boolean): void;
78
+ /**
79
+ * 折りたたみ状態を取得
80
+ */
81
+ isCollapsed(): boolean;
82
+ /**
83
+ * 折りたたみをトグル
84
+ */
85
+ toggleCollapsed(): void;
86
+ /**
87
+ * 現在の状態を取得
88
+ */
89
+ getState(): FormSectionState;
90
+ /**
91
+ * セクション名を取得
92
+ */
93
+ getSectionName(): string;
94
+ /**
95
+ * 初期状態を作成
96
+ */
97
+ private createInitialState;
98
+ /**
99
+ * ヘッダーをレンダリング
100
+ */
101
+ private renderHeader;
102
+ /**
103
+ * コンテンツをレンダリング
104
+ */
105
+ private renderContent;
106
+ }
107
+ /**
108
+ * FormSectionSchemaからFormSectionConfigに変換
109
+ */
110
+ export declare function createConfigFromSchema(schema: FormSectionSchema): FormSectionConfig;
111
+ /**
112
+ * 複数のセクションをレンダリング
113
+ */
114
+ export declare function renderFormSections(sections: FormSectionConfig[], container: HTMLElement, callbacks?: FormSectionCallbacks): FormSection[];
115
+ /**
116
+ * セクション間の区切り線を追加
117
+ */
118
+ export declare function renderFormSectionsWithDividers(sections: FormSectionConfig[], container: HTMLElement, callbacks?: FormSectionCallbacks): FormSection[];
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Google Map Embed Component
3
+ * Googleマップ埋め込みコンポーネント
4
+ */
5
+ import type { GoogleMapEmbedField } from '../../types/schema';
6
+ export interface GoogleMapEmbedState {
7
+ url: string;
8
+ isValid: boolean;
9
+ embedUrl: string | null;
10
+ errorMessage: string | null;
11
+ coordinates: {
12
+ lat: number;
13
+ lng: number;
14
+ } | null;
15
+ query: string | null;
16
+ }
17
+ export interface GoogleMapEmbedCallbacks {
18
+ onChange?: (state: GoogleMapEmbedState) => void;
19
+ }
20
+ /**
21
+ * Google Maps URL をバリデート
22
+ */
23
+ export declare function isValidGoogleMapsUrl(url: string): boolean;
24
+ /**
25
+ * URL から座標を抽出
26
+ */
27
+ export declare function extractCoordinates(url: string): {
28
+ lat: number;
29
+ lng: number;
30
+ } | null;
31
+ /**
32
+ * URL から検索クエリを抽出
33
+ */
34
+ export declare function extractQuery(url: string): string | null;
35
+ /**
36
+ * URL から Place ID を抽出
37
+ */
38
+ export declare function extractPlaceId(url: string): string | null;
39
+ /**
40
+ * Google Maps 埋め込み URL を生成
41
+ */
42
+ export declare function generateEmbedUrl(url: string, zoom?: number): string | null;
43
+ /**
44
+ * Google Maps 埋め込みコンポーネント
45
+ */
46
+ export declare class GoogleMapEmbed {
47
+ private field;
48
+ private container;
49
+ private callbacks;
50
+ private state;
51
+ private inputElement;
52
+ private previewContainer;
53
+ private errorElement;
54
+ constructor(field: GoogleMapEmbedField, container: HTMLElement, callbacks?: GoogleMapEmbedCallbacks, initialValue?: string);
55
+ private createInitialState;
56
+ /**
57
+ * コンポーネントをレンダリング
58
+ */
59
+ render(): void;
60
+ private createInputField;
61
+ private createOpenLink;
62
+ private handleInput;
63
+ private handleBlur;
64
+ private handlePaste;
65
+ private updateState;
66
+ private updateErrorDisplay;
67
+ private updatePreview;
68
+ private updateOpenLink;
69
+ /**
70
+ * 現在の状態を取得
71
+ */
72
+ getState(): GoogleMapEmbedState;
73
+ /**
74
+ * URL を設定
75
+ */
76
+ setUrl(url: string): void;
77
+ /**
78
+ * コンポーネントを破棄
79
+ */
80
+ destroy(): void;
81
+ }
82
+ /**
83
+ * Googleマップ埋め込みフィールドをレンダリング
84
+ */
85
+ export declare function renderGoogleMapEmbedField(field: GoogleMapEmbedField, container: HTMLElement, options?: {
86
+ value?: string;
87
+ onChange?: (fieldId: string, value: unknown) => void;
88
+ }): GoogleMapEmbed;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Heading Component
3
+ * 見出しコンポーネント
4
+ *
5
+ *
6
+ * - セマンティックレベル(h1-h6)と視覚的サイズの分離
7
+ * - アクセシビリティを考慮した構造
8
+ * - カラーバリエーション対応
9
+ * - テキスト配置オプション
10
+ */
11
+ import type { HeadingField } from '../../types/schema';
12
+ /**
13
+ * 見出しの状態
14
+ */
15
+ export interface HeadingState {
16
+ /** 見出しレベル */
17
+ level: 1 | 2 | 3 | 4 | 5 | 6;
18
+ /** 見出しテキスト */
19
+ text: string;
20
+ /** サイズバリアント */
21
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
22
+ /** テキスト配置 */
23
+ align?: 'left' | 'center' | 'right';
24
+ /** カラーバリエーション */
25
+ color?: 'default' | 'primary' | 'secondary' | 'muted' | 'danger' | 'success' | 'warning';
26
+ /** アイコン */
27
+ icon?: string;
28
+ }
29
+ /**
30
+ * 見出しのコールバック(拡張用)
31
+ */
32
+ export interface HeadingCallbacks {
33
+ /** クリック時(インタラクティブな見出しの場合) */
34
+ onClick?: (state: HeadingState) => void;
35
+ }
36
+ /**
37
+ * 見出しの設定
38
+ */
39
+ export interface HeadingConfig {
40
+ /** 見出しレベル(h1-h6) */
41
+ level: 1 | 2 | 3 | 4 | 5 | 6;
42
+ /** 見出しテキスト */
43
+ text: string;
44
+ /** サイズバリアント(デフォルト: levelに基づく) */
45
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
46
+ /** テキスト配置(デフォルト: left) */
47
+ align?: 'left' | 'center' | 'right';
48
+ /** カラーバリエーション(デフォルト: default) */
49
+ color?: 'default' | 'primary' | 'secondary' | 'muted' | 'danger' | 'success' | 'warning';
50
+ /** アイコン(オプション) */
51
+ icon?: string;
52
+ /** ID属性 */
53
+ id?: string;
54
+ /** カスタムCSSクラス */
55
+ className?: string;
56
+ }
57
+ /**
58
+ * 見出しコンポーネント
59
+ */
60
+ export declare class Heading {
61
+ private config;
62
+ private state;
63
+ private callbacks;
64
+ private container;
65
+ private instanceId;
66
+ constructor(container: HTMLElement, config: HeadingConfig, callbacks?: HeadingCallbacks);
67
+ /**
68
+ * 見出しをレンダリング
69
+ */
70
+ render(): void;
71
+ /**
72
+ * 見出しテキストを更新
73
+ */
74
+ setText(text: string): void;
75
+ /**
76
+ * 見出しレベルを更新
77
+ */
78
+ setLevel(level: 1 | 2 | 3 | 4 | 5 | 6): void;
79
+ /**
80
+ * サイズバリアントを更新
81
+ */
82
+ setSize(size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'): void;
83
+ /**
84
+ * テキスト配置を更新
85
+ */
86
+ setAlign(align: 'left' | 'center' | 'right'): void;
87
+ /**
88
+ * カラーバリエーションを更新
89
+ */
90
+ setColor(color: 'default' | 'primary' | 'secondary' | 'muted' | 'danger' | 'success' | 'warning'): void;
91
+ /**
92
+ * 現在の状態を取得
93
+ */
94
+ getState(): HeadingState;
95
+ /**
96
+ * 初期状態を作成
97
+ */
98
+ private createInitialState;
99
+ /**
100
+ * 見出し要素を作成
101
+ */
102
+ private createHeadingElement;
103
+ /**
104
+ * レベルに基づくデフォルトサイズを取得
105
+ */
106
+ private getDefaultSizeForLevel;
107
+ /**
108
+ * 見出しフィールドをHTMLとしてレンダリング(静的メソッド)
109
+ * SSR/初期レンダリング用
110
+ *
111
+ * @param field - 見出しフィールド定義
112
+ * @returns 生成されたHTML文字列
113
+ */
114
+ static renderField(field: HeadingField): string;
115
+ }
116
+ /**
117
+ * 見出しコンポーネントを作成
118
+ */
119
+ export declare function createHeading(container: HTMLElement, config: HeadingConfig, callbacks?: HeadingCallbacks): Heading;