iwgt 2.4.11 → 2.4.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.
package/dist/server.js CHANGED
@@ -18,16 +18,30 @@ import commonjsReference from './data/references/commonjs-reference.json' with {
18
18
  import collectionsMenuPatterns from './data/references/collections-menu-patterns.json' with { type: 'json' };
19
19
  import librariesApiReference from './data/references/libraries-api-reference.json' with { type: 'json' };
20
20
  import javascriptGuide from './data/references/javascript-guide.json' with { type: 'json' };
21
+ import settingsTypesReference from './data/references/settings-types.json' with { type: 'json' };
21
22
  // Импорт модулей
22
23
  import { generateWidgetFiles } from './generators/index.js';
23
24
  import * as tools from './tools/index.js';
24
25
  import * as utils from './utils/index.js';
26
+ import { createSetting } from './utils/settings.js';
27
+ // Функция для преобразования SettingsField[] в Setting[]
28
+ function convertSettingsFieldToSetting(field) {
29
+ if (!field.label) {
30
+ throw new Error(`Поле label обязательно для настройки ${field.name}`);
31
+ }
32
+ return createSetting({
33
+ type: field.type,
34
+ name: field.name,
35
+ label: field.label,
36
+ ...field
37
+ });
38
+ }
25
39
  export class WidgetServer {
26
40
  server;
27
41
  constructor() {
28
42
  this.server = new Server({
29
43
  name: 'insales-widgets',
30
- version: '2.4.11',
44
+ version: '2.4.13',
31
45
  }, {
32
46
  capabilities: {
33
47
  tools: {},
@@ -59,7 +73,14 @@ export class WidgetServer {
59
73
  - sliders (слайдеры), banner (баннеры), benefits (преимущества)
60
74
  - products-cards (карточки товаров), collection-products (товары категории)
61
75
  - navigation (навигация), forms (формы), text (текстовые блоки)
62
- - и другие - используйте get_category_info для получения полного списка`,
76
+ - и другие - используйте get_category_info для получения полного списка
77
+
78
+ ПАРАМЕТРЫ:
79
+ - description (string): описание виджета
80
+ - category (string, опционально): категория виджета
81
+ - type (string, опционально): simple_widget_type или block_list_widget_type
82
+ - handle (string, опционально): уникальный handle виджета
83
+ - cleanMode (boolean, опционально): если true, генерирует файлы без служебных комментариев`,
63
84
  inputSchema: {
64
85
  type: 'object',
65
86
  properties: {
@@ -80,6 +101,10 @@ export class WidgetServer {
80
101
  type: 'string',
81
102
  description: 'Handle виджета (например: my_promo_slider). Опционально - сгенерируется автоматически',
82
103
  },
104
+ cleanMode: {
105
+ type: 'boolean',
106
+ description: 'Если true, генерирует файлы без служебных комментариев (ВАЖНО, КРИТИЧЕСКИ ВАЖНО и т.д.)',
107
+ },
83
108
  },
84
109
  required: ['description'],
85
110
  },
@@ -281,6 +306,23 @@ export class WidgetServer {
281
306
  },
282
307
  },
283
308
  },
309
+ {
310
+ name: 'get_settings_types_reference',
311
+ description: 'Получить справочник типов настроек виджетов InSales. Включает описание всех доступных типов настроек, их параметры, примеры использования и валидацию.',
312
+ inputSchema: {
313
+ type: 'object',
314
+ properties: {
315
+ type: {
316
+ type: 'string',
317
+ description: 'Конкретный тип настройки для получения детальной информации (text, number, checkbox, select, color и т.д.)',
318
+ },
319
+ search: {
320
+ type: 'string',
321
+ description: 'Поиск по типам настроек по названию или описанию',
322
+ },
323
+ },
324
+ },
325
+ },
284
326
  ],
285
327
  }));
286
328
  // Список ресурсов
@@ -598,6 +640,15 @@ export class WidgetServer {
598
640
  },
599
641
  ],
600
642
  };
643
+ case 'get_settings_types_reference':
644
+ return {
645
+ content: [
646
+ {
647
+ type: 'text',
648
+ text: JSON.stringify(this.getSettingsTypesReference(args || {}), null, 2),
649
+ },
650
+ ],
651
+ };
601
652
  default:
602
653
  throw new Error(`Unknown tool: ${name}`);
603
654
  }
@@ -624,6 +675,10 @@ export class WidgetServer {
624
675
  if (!categoryData) {
625
676
  throw new Error(`Неизвестная категория: ${category}`);
626
677
  }
678
+ // Преобразуем SettingsField[] в Setting[]
679
+ const convertedCommonSettings = categoryData.commonSettings
680
+ .filter((s) => (s.frequency || 0) > 0.5)
681
+ .map(convertSettingsFieldToSetting);
627
682
  // Генерируем или валидируем handle
628
683
  let handle = params.handle || utils.generateHandle(description);
629
684
  if (params.handle) {
@@ -646,10 +701,11 @@ export class WidgetServer {
646
701
  description,
647
702
  blockTemplate,
648
703
  libraries: categoryData.libraries,
649
- commonSettings: categoryData.commonSettings.filter(s => (s.frequency || 0) > 0.5),
704
+ commonSettings: convertedCommonSettings,
650
705
  };
651
706
  // Генерация содержимого файлов
652
- const files = generateWidgetFiles(config);
707
+ const cleanMode = params.cleanMode === true; // По умолчанию false для обратной совместимости
708
+ const files = generateWidgetFiles(config, cleanMode);
653
709
  // Форматируем вывод для AI-агента
654
710
  let output = `✅ Виджет создан успешно!\n\n`;
655
711
  output += `📦 Handle: ${handle}\n`;
@@ -694,6 +750,45 @@ export class WidgetServer {
694
750
  ],
695
751
  };
696
752
  }
753
+ /**
754
+ * Получить справочник типов настроек виджетов
755
+ */
756
+ getSettingsTypesReference(params) {
757
+ const { type, search } = params;
758
+ // Если указан конкретный тип, возвращаем только его
759
+ if (type) {
760
+ const typeData = settingsTypesReference.types[type];
761
+ if (!typeData) {
762
+ throw new Error(`Тип настройки "${type}" не найден. Доступные типы: ${Object.keys(settingsTypesReference.types).join(', ')}`);
763
+ }
764
+ return {
765
+ type,
766
+ ...typeData
767
+ };
768
+ }
769
+ // Если указан поиск, фильтруем результаты
770
+ if (search) {
771
+ const types = settingsTypesReference.types;
772
+ const filteredTypes = {};
773
+ for (const [typeName, typeData] of Object.entries(types)) {
774
+ const searchLower = search.toLowerCase();
775
+ const matchesSearch = typeName.toLowerCase().includes(searchLower) ||
776
+ typeData.description?.toLowerCase().includes(searchLower) ||
777
+ typeData.parameters?.some((p) => p.name?.toLowerCase().includes(searchLower) ||
778
+ p.description?.toLowerCase().includes(searchLower));
779
+ if (matchesSearch) {
780
+ filteredTypes[typeName] = typeData;
781
+ }
782
+ }
783
+ return {
784
+ search,
785
+ types: filteredTypes,
786
+ totalFound: Object.keys(filteredTypes).length
787
+ };
788
+ }
789
+ // Возвращаем полный справочник
790
+ return settingsTypesReference;
791
+ }
697
792
  /**
698
793
  * Подключить внешний транспорт (например, SSE)
699
794
  */
@@ -148,7 +148,12 @@ export function getLiquidFilters(args = {}) {
148
148
  export function getCommonJSAPI(args = {}) {
149
149
  const { category, module, search } = args;
150
150
  const data = commonjsApiComplete;
151
- let modules = data.modules || [];
151
+ // Получаем модули из global_modules
152
+ const globalModules = data.global_modules || {};
153
+ let modules = Object.keys(globalModules).map(key => ({
154
+ name: key,
155
+ ...globalModules[key]
156
+ }));
152
157
  if (module) {
153
158
  modules = modules.filter((mod) => mod.name === module);
154
159
  }
@@ -159,16 +164,20 @@ export function getCommonJSAPI(args = {}) {
159
164
  const searchLower = search.toLowerCase();
160
165
  modules = modules.filter((mod) => mod.name.toLowerCase().includes(searchLower) ||
161
166
  mod.description?.toLowerCase().includes(searchLower) ||
162
- mod.methods?.some((m) => m.name.toLowerCase().includes(searchLower)));
167
+ (mod.methods && Object.keys(mod.methods).some((methodName) => methodName.toLowerCase().includes(searchLower))) ||
168
+ (mod.events && Object.keys(mod.events).some((eventName) => eventName.toLowerCase().includes(searchLower))));
163
169
  }
164
170
  return {
165
171
  total: modules.length,
166
172
  modules: modules.map((mod) => ({
167
173
  name: mod.name,
168
174
  description: mod.description,
169
- category: mod.category,
170
- methods: mod.methods || [],
171
- events: mod.events || []
175
+ global_access: mod.global_access,
176
+ type: mod.type,
177
+ declarative: mod.declarative,
178
+ methods: mod.methods || {},
179
+ events: mod.events || {},
180
+ data_attributes: mod.data_attributes || {}
172
181
  }))
173
182
  };
174
183
  }
@@ -1,3 +1,5 @@
1
+ import type { Setting } from './settings.js';
2
+ export type { Setting, BaseSetting, TextSetting, NumberSetting, CheckboxSetting, SelectSetting, RangeSetting, ButtonGroupSetting, FileSetting, ColorSetting, BlogSetting, InfoSetting, CurrentPageDescriptionSetting, IconGroupSetting, LinkToWidgetSetting, ButtonSwitchSetting } from './settings.js';
1
3
  export interface WidgetInfo {
2
4
  widget_category_handle: string;
3
5
  widget_type: 'simple_widget_type' | 'block_list_widget_type';
@@ -33,7 +35,7 @@ export interface BlockField {
33
35
  name: string;
34
36
  }
35
37
  export interface CategoryData {
36
- commonSettings: SettingsField[];
38
+ commonSettings: Setting[];
37
39
  totalWidgets: number;
38
40
  libraries: string[];
39
41
  blockTemplates: string[];
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Типы настроек для виджетов InSales
3
+ * Сгенерировано на основе документации и анализа системных виджетов
4
+ */
5
+ export interface BaseSetting {
6
+ name: string;
7
+ label: string;
8
+ type: string;
9
+ value?: any;
10
+ help?: string;
11
+ general?: boolean;
12
+ general_position?: number;
13
+ general_label?: string;
14
+ enable_server_reload?: boolean;
15
+ hide_mobile?: boolean;
16
+ class?: string;
17
+ }
18
+ export interface TextSetting extends BaseSetting {
19
+ type: 'text';
20
+ value?: string;
21
+ placeholder?: string;
22
+ }
23
+ export interface RichTextSetting extends BaseSetting {
24
+ type: 'rich-text';
25
+ value?: string;
26
+ }
27
+ export interface NumberSetting extends BaseSetting {
28
+ type: 'number';
29
+ value?: number;
30
+ min?: number;
31
+ max?: number;
32
+ step?: number;
33
+ unit?: string;
34
+ with_btns?: boolean;
35
+ }
36
+ export interface CheckboxSetting extends BaseSetting {
37
+ type: 'checkbox';
38
+ value?: boolean;
39
+ }
40
+ export interface SelectSetting extends BaseSetting {
41
+ type: 'select';
42
+ value?: string;
43
+ options: Array<[string, string]> | Array<{
44
+ value: string;
45
+ text: string;
46
+ }>;
47
+ }
48
+ export interface RangeSetting extends BaseSetting {
49
+ type: 'range';
50
+ value?: number;
51
+ min?: number;
52
+ max?: number;
53
+ step?: number;
54
+ unit?: string;
55
+ with_btns?: boolean;
56
+ }
57
+ export interface ButtonGroupSetting extends BaseSetting {
58
+ type: 'button-group';
59
+ value?: string;
60
+ options: Array<{
61
+ value: string;
62
+ title: string;
63
+ icon?: string;
64
+ }>;
65
+ }
66
+ export interface FileSetting extends BaseSetting {
67
+ type: 'file';
68
+ value?: string | null;
69
+ 'with-generate-logo'?: boolean;
70
+ }
71
+ export interface ColorSetting extends BaseSetting {
72
+ type: 'color';
73
+ value?: string;
74
+ clearable?: boolean;
75
+ fallback?: string;
76
+ }
77
+ export interface BlogSetting extends BaseSetting {
78
+ type: 'blog';
79
+ value?: string | null;
80
+ edit_admin_link?: string;
81
+ }
82
+ export interface InfoSetting extends BaseSetting {
83
+ type: 'info';
84
+ value?: string;
85
+ }
86
+ export interface CurrentPageDescriptionSetting extends BaseSetting {
87
+ type: 'current-page-description';
88
+ value?: string;
89
+ }
90
+ export interface IconGroupSetting extends BaseSetting {
91
+ type: 'icon_group';
92
+ value?: string;
93
+ }
94
+ export interface LinkToWidgetSetting extends BaseSetting {
95
+ type: 'link-to-widget';
96
+ value?: string;
97
+ }
98
+ export interface ButtonSwitchSetting extends BaseSetting {
99
+ type: 'button_switch';
100
+ value?: boolean;
101
+ }
102
+ export type Setting = TextSetting | RichTextSetting | NumberSetting | CheckboxSetting | SelectSetting | RangeSetting | ButtonGroupSetting | FileSetting | ColorSetting | BlogSetting | InfoSetting | CurrentPageDescriptionSetting | IconGroupSetting | LinkToWidgetSetting | ButtonSwitchSetting;
103
+ export interface SettingGroup {
104
+ type: 'group';
105
+ name: string;
106
+ items: Setting[];
107
+ }
108
+ export interface SettingsForm {
109
+ [groupName: string]: SettingGroup[];
110
+ }
111
+ export interface SettingValidation {
112
+ isValid: boolean;
113
+ errors: Array<{
114
+ field: string;
115
+ message: string;
116
+ suggestion?: string;
117
+ }>;
118
+ }
119
+ export declare function validateSetting(setting: any): SettingValidation;
120
+ export declare const AVAILABLE_SETTING_TYPES: readonly ["text", "rich-text", "number", "checkbox", "select", "range", "button-group", "file", "color", "blog", "info", "current-page-description", "icon_group", "link-to-widget", "button_switch"];
121
+ export type SettingType = typeof AVAILABLE_SETTING_TYPES[number];
122
+ export declare function isValidSettingType(type: string): type is SettingType;
123
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Типы настроек для виджетов InSales
3
+ * Сгенерировано на основе документации и анализа системных виджетов
4
+ */
5
+ // Функция валидации настройки
6
+ export function validateSetting(setting) {
7
+ const errors = [];
8
+ // Проверяем обязательные поля
9
+ if (!setting.name) {
10
+ errors.push({ field: 'name', message: 'Поле name обязательно' });
11
+ }
12
+ if (!setting.label) {
13
+ errors.push({ field: 'label', message: 'Поле label обязательно' });
14
+ }
15
+ if (!setting.type) {
16
+ errors.push({ field: 'type', message: 'Поле type обязательно' });
17
+ }
18
+ // Проверяем специфичные для типа поля
19
+ if (setting.type === 'select' && !setting.options) {
20
+ errors.push({
21
+ field: 'options',
22
+ message: 'Для типа select обязательно поле options',
23
+ suggestion: 'Добавьте массив опций: [["Текст", "значение"], ...]'
24
+ });
25
+ }
26
+ if (setting.type === 'button-group' && !setting.options) {
27
+ errors.push({
28
+ field: 'options',
29
+ message: 'Для типа button-group обязательно поле options',
30
+ suggestion: 'Добавьте массив объектов: [{value: "val", title: "Title", icon: "icon"}]'
31
+ });
32
+ }
33
+ if ((setting.type === 'number' || setting.type === 'range') && setting.min !== undefined && setting.max !== undefined) {
34
+ if (setting.min >= setting.max) {
35
+ errors.push({
36
+ field: 'min/max',
37
+ message: 'min должно быть меньше max',
38
+ suggestion: 'Проверьте значения min и max'
39
+ });
40
+ }
41
+ }
42
+ return {
43
+ isValid: errors.length === 0,
44
+ errors
45
+ };
46
+ }
47
+ // Список всех доступных типов настроек (из документации + системные виджеты)
48
+ export const AVAILABLE_SETTING_TYPES = [
49
+ // Основные типы из документации
50
+ 'text',
51
+ 'rich-text',
52
+ 'number',
53
+ 'checkbox',
54
+ 'select',
55
+ 'range',
56
+ 'button-group',
57
+ 'file',
58
+ 'color',
59
+ 'blog',
60
+ // Дополнительные типы из системных виджетов
61
+ 'info',
62
+ 'current-page-description',
63
+ 'icon_group',
64
+ 'link-to-widget',
65
+ 'button_switch'
66
+ ];
67
+ // Проверка валидности типа настройки
68
+ export function isValidSettingType(type) {
69
+ return AVAILABLE_SETTING_TYPES.includes(type);
70
+ }
71
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Утилиты для создания настроек виджетов с валидацией
3
+ */
4
+ import type { Setting, TextSetting, NumberSetting, CheckboxSetting, SelectSetting, RangeSetting, ButtonGroupSetting, FileSetting, ColorSetting, BlogSetting, InfoSetting, CurrentPageDescriptionSetting, IconGroupSetting, LinkToWidgetSetting, ButtonSwitchSetting } from '../types/settings.js';
5
+ /**
6
+ * Создает текстовую настройку
7
+ */
8
+ export declare function createTextSetting(config: {
9
+ name: string;
10
+ label: string;
11
+ value?: string;
12
+ help?: string;
13
+ general?: boolean;
14
+ general_position?: number;
15
+ general_label?: string;
16
+ enable_server_reload?: boolean;
17
+ hide_mobile?: boolean;
18
+ class?: string;
19
+ placeholder?: string;
20
+ }): TextSetting;
21
+ /**
22
+ * Создает числовую настройку
23
+ */
24
+ export declare function createNumberSetting(config: {
25
+ name: string;
26
+ label: string;
27
+ value?: number;
28
+ min?: number;
29
+ max?: number;
30
+ step?: number;
31
+ unit?: string;
32
+ with_btns?: boolean;
33
+ help?: string;
34
+ general?: boolean;
35
+ general_position?: number;
36
+ general_label?: string;
37
+ enable_server_reload?: boolean;
38
+ hide_mobile?: boolean;
39
+ class?: string;
40
+ }): NumberSetting;
41
+ /**
42
+ * Создает настройку-чекбокс
43
+ */
44
+ export declare function createCheckboxSetting(config: {
45
+ name: string;
46
+ label: string;
47
+ value?: boolean;
48
+ help?: string;
49
+ general?: boolean;
50
+ general_position?: number;
51
+ general_label?: string;
52
+ enable_server_reload?: boolean;
53
+ hide_mobile?: boolean;
54
+ class?: string;
55
+ }): CheckboxSetting;
56
+ /**
57
+ * Создает настройку-селект
58
+ */
59
+ export declare function createSelectSetting(config: {
60
+ name: string;
61
+ label: string;
62
+ options: Array<[string, string]> | Array<{
63
+ value: string;
64
+ text: string;
65
+ }>;
66
+ value?: string;
67
+ help?: string;
68
+ general?: boolean;
69
+ general_position?: number;
70
+ general_label?: string;
71
+ enable_server_reload?: boolean;
72
+ hide_mobile?: boolean;
73
+ class?: string;
74
+ }): SelectSetting;
75
+ /**
76
+ * Создает настройку-ползунок
77
+ */
78
+ export declare function createRangeSetting(config: {
79
+ name: string;
80
+ label: string;
81
+ value?: number;
82
+ min?: number;
83
+ max?: number;
84
+ step?: number;
85
+ unit?: string;
86
+ with_btns?: boolean;
87
+ help?: string;
88
+ general?: boolean;
89
+ general_position?: number;
90
+ general_label?: string;
91
+ enable_server_reload?: boolean;
92
+ hide_mobile?: boolean;
93
+ class?: string;
94
+ }): RangeSetting;
95
+ /**
96
+ * Создает настройку-группу кнопок
97
+ */
98
+ export declare function createButtonGroupSetting(config: {
99
+ name: string;
100
+ label: string;
101
+ options: Array<{
102
+ value: string;
103
+ title: string;
104
+ icon?: string;
105
+ }>;
106
+ value?: string;
107
+ help?: string;
108
+ general?: boolean;
109
+ general_position?: number;
110
+ general_label?: string;
111
+ enable_server_reload?: boolean;
112
+ hide_mobile?: boolean;
113
+ class?: string;
114
+ }): ButtonGroupSetting;
115
+ /**
116
+ * Создает настройку-файл
117
+ */
118
+ export declare function createFileSetting(config: {
119
+ name: string;
120
+ label: string;
121
+ value?: string | null;
122
+ 'with-generate-logo'?: boolean;
123
+ help?: string;
124
+ general?: boolean;
125
+ general_position?: number;
126
+ general_label?: string;
127
+ enable_server_reload?: boolean;
128
+ hide_mobile?: boolean;
129
+ class?: string;
130
+ }): FileSetting;
131
+ /**
132
+ * Создает настройку-цвет
133
+ */
134
+ export declare function createColorSetting(config: {
135
+ name: string;
136
+ label: string;
137
+ value?: string;
138
+ clearable?: boolean;
139
+ fallback?: string;
140
+ help?: string;
141
+ general?: boolean;
142
+ general_position?: number;
143
+ general_label?: string;
144
+ enable_server_reload?: boolean;
145
+ hide_mobile?: boolean;
146
+ class?: string;
147
+ }): ColorSetting;
148
+ /**
149
+ * Создает настройку-блог
150
+ */
151
+ export declare function createBlogSetting(config: {
152
+ name: string;
153
+ label: string;
154
+ value?: string | null;
155
+ edit_admin_link?: string;
156
+ help?: string;
157
+ general?: boolean;
158
+ general_position?: number;
159
+ general_label?: string;
160
+ enable_server_reload?: boolean;
161
+ hide_mobile?: boolean;
162
+ class?: string;
163
+ }): BlogSetting;
164
+ /**
165
+ * Валидирует массив настроек
166
+ */
167
+ export declare function validateSettings(settings: Setting[]): {
168
+ isValid: boolean;
169
+ errors: Array<{
170
+ setting: string;
171
+ errors: string[];
172
+ }>;
173
+ };
174
+ /**
175
+ * Создает информационную настройку
176
+ */
177
+ export declare function createInfoSetting(config: {
178
+ name: string;
179
+ label: string;
180
+ value?: string;
181
+ help?: string;
182
+ general?: boolean;
183
+ general_position?: number;
184
+ general_label?: string;
185
+ enable_server_reload?: boolean;
186
+ hide_mobile?: boolean;
187
+ class?: string;
188
+ }): InfoSetting;
189
+ /**
190
+ * Создает настройку описания текущей страницы
191
+ */
192
+ export declare function createCurrentPageDescriptionSetting(config: {
193
+ name: string;
194
+ label: string;
195
+ value?: string;
196
+ help?: string;
197
+ general?: boolean;
198
+ general_position?: number;
199
+ general_label?: string;
200
+ enable_server_reload?: boolean;
201
+ hide_mobile?: boolean;
202
+ class?: string;
203
+ }): CurrentPageDescriptionSetting;
204
+ /**
205
+ * Создает настройку группы иконок
206
+ */
207
+ export declare function createIconGroupSetting(config: {
208
+ name: string;
209
+ label: string;
210
+ value?: string;
211
+ help?: string;
212
+ general?: boolean;
213
+ general_position?: number;
214
+ general_label?: string;
215
+ enable_server_reload?: boolean;
216
+ hide_mobile?: boolean;
217
+ class?: string;
218
+ }): IconGroupSetting;
219
+ /**
220
+ * Создает настройку ссылки на виджет
221
+ */
222
+ export declare function createLinkToWidgetSetting(config: {
223
+ name: string;
224
+ label: string;
225
+ value?: string;
226
+ help?: string;
227
+ general?: boolean;
228
+ general_position?: number;
229
+ general_label?: string;
230
+ enable_server_reload?: boolean;
231
+ hide_mobile?: boolean;
232
+ class?: string;
233
+ }): LinkToWidgetSetting;
234
+ /**
235
+ * Создает настройку переключателя кнопок
236
+ */
237
+ export declare function createButtonSwitchSetting(config: {
238
+ name: string;
239
+ label: string;
240
+ value?: boolean;
241
+ help?: string;
242
+ general?: boolean;
243
+ general_position?: number;
244
+ general_label?: string;
245
+ enable_server_reload?: boolean;
246
+ hide_mobile?: boolean;
247
+ class?: string;
248
+ }): ButtonSwitchSetting;
249
+ /**
250
+ * Создает настройку с автоматическим определением типа
251
+ */
252
+ export declare function createSetting(config: {
253
+ type: string;
254
+ name: string;
255
+ label: string;
256
+ [key: string]: any;
257
+ }): Setting;
258
+ //# sourceMappingURL=settings.d.ts.map