@dxtmisha/scripts 0.4.1 → 0.4.2

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dxtmisha/scripts",
3
3
  "private": false,
4
- "version": "0.4.1",
4
+ "version": "0.4.2",
5
5
  "type": "module",
6
6
  "description": "Development scripts and CLI tools for DXT UI projects - automated component generation, library building and project management tools",
7
7
  "keywords": [
@@ -15,6 +15,7 @@ import {
15
15
  UI_FILE_NAME_VITE,
16
16
  UI_FILE_NAME_VITE_WORKERS
17
17
  } from '../../config'
18
+ import { isFilled } from '@dxtmisha/functional'
18
19
 
19
20
  // Sample Vite config template path / Путь к шаблону Vite-конфига
20
21
  const FILE_VITE_SAMPLE = [__dirname, '..', '..', 'media', 'templates', 'viteComponentTemplateConfig.ts']
@@ -296,7 +297,7 @@ ${content}
296
297
  .replace('[stories]', this.storiesFile.read())
297
298
  .replace('[md]', this.mdFile.read())
298
299
  .replace(/\[wikiLanguage]/g, PropertiesConfig.getWikiLanguage())
299
- + ` ${this.prompt}`
300
+ + (isFilled(this.prompt) ? `Additional conditions (these conditions take priority): ${this.prompt}` : '')
300
301
  )
301
302
  }
302
303
 
@@ -1,6 +1,8 @@
1
1
  Нужно подготовить документацию для компонента на языке [wikiLanguage]. Следуй строго формату и требованиям ниже. Не добавляй ничего лишнего вне описанного.
2
2
  Стек Storybook 9.x, TypeScript, MDX.
3
3
 
4
+ компонент Canvas подключаеться из '@storybook/addon-docs/blocks'
5
+
4
6
  ====================================
5
7
  1) Изучи текущий код компонента
6
8
  ====================================
@@ -92,48 +94,83 @@ export interface IconPropsBasic<
92
94
  Краткое описание назначения слота. Можно маркированным списком выделить особенности.
93
95
  Если есть props, добавить описанике props. `props: any` - это значить что нету пропсов, его не надо писать.
94
96
  Если слотов несколько — каждый с подпунктом `###`.
97
+ Если возврашет просто VNode, не надо описывать.
98
+ Не надо что то в такой типе `Этот слот принимает любые VNode и не передает никаких свойств.`
99
+ Если нету события, не описывать блок событий.
100
+ Если нету слотов, не описывать блок слотов.
95
101
 
96
102
  Формат событий:
97
103
  ```
98
104
  ## События
99
105
  ### `имяСобытия`
100
106
  Описание когда и зачем испускается.
101
- ```ts
102
- // сигнатура обработчика
103
- ```
104
- ```
105
-
106
- Пример блока props для связанных свойств (использовать ТОЛЬКО если реально нужно):
107
- ```
108
- ## Свойства выделения текста
109
- ... (как в примере ниже)
110
- ```
111
107
 
112
108
  Пример описания слота (не вставляй дословно, адаптируй):
109
+ ### `suffix`
110
+
111
+ Слот для размещения контента в конце компонента, после основного содержимого.
112
+
113
+ **Возвращает:** `VNode` — элемент с классом `{className}__suffix` и атрибутом `data-event-type="suffix"`
114
+
115
+ ```html
116
+ <Component>
117
+ <template #suffix>
118
+ <Icon name="check" />
119
+ </template>
120
+ </Component>
113
121
  ```
114
- ### `prefix`
115
- Слот для размещения контента в начале компонента перед основным содержимым.
116
- - Подходит для иконок, индикаторов или меток
117
- - Не влияет на структуру
122
+
123
+ ### `control`
124
+
125
+ Слот для размещения элементов управления окном (кнопки закрытия, минимизации и т.д.).
126
+
127
+ **Параметры:**
128
+ - `props: WindowControlItem` — объект с данными управления окном
129
+
130
+ ```html
131
+ <Window>
132
+ <template #control="{ onclick, open }">
133
+ <button @click="onclick">
134
+ {{ open ? 'Закрыть' : 'Открыть' }}
135
+ </button>
136
+ </template>
137
+ </Window>
118
138
  ```
119
139
 
120
140
  Пример описания события (адаптируй под контекст):
121
- ```
122
- ### `click`
123
- Событие клика по корневой области компонента.
124
- ```ts
125
- function onClick(event: MouseEvent, value: EventClickValue) {
126
- // обработка
141
+ ### `window`
142
+
143
+ Событие срабатывает при изменении состояния окна (открытие/закрытие).
144
+
145
+ **Параметры:**
146
+ - `options: WindowEmitOptions` — объект с данными окна
147
+
148
+ **Структура WindowEmitOptions:**
149
+ - `id: string` — уникальный идентификатор окна
150
+ - `element: HTMLDivElement` — DOM элемент окна
151
+ - `control: HTMLElement` — DOM элемент управления
152
+ - `open: boolean` — состояние открытия окна (`true` - открыто, `false` - закрыто)
153
+
154
+ ```html
155
+ <script setup>
156
+ const handleWindow = (options) => {
157
+ console.log('ID окна:', options.id)
158
+ console.log('Окно открыто:', options.open)
159
+ console.log('Элемент окна:', options.element)
160
+ console.log('Элемент управления:', options.control)
127
161
  }
162
+ </script>
128
163
 
129
- type EventClickValue = {
130
- type: string
131
- value: any
132
- detail: Record<string, any> | undefined
133
- }
134
- ```
164
+ <template>
165
+ <Window @window="handleWindow">
166
+ <template #default>
167
+ <p>Содержимое окна</p>
168
+ </template>
169
+ </Window>
170
+ </template>
135
171
  ```
136
172
 
173
+
137
174
  Пример использования Canvas:
138
175
  <Canvas of={Chip.ChipSkeleton}/>
139
176
 
@@ -2,7 +2,6 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
6
  <title>@packages/library</title>
8
7
  </head>