poe-svelte-ui-lib 1.9.8 → 1.9.9

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Описание
4
4
 
5
- Аккордеон - это интерактивный UI-компонент, который позволяет скрывать и отображать содержимое в виде раскрывающегося блока. Компонент предоставляет возможность настройки внешнего вида, размеров, иконок, изображений фона и других параметров через систему пропсов.
5
+ Аккордеон - это UI-компонент, который позволяет скрывать и отображать содержимое в виде раскрывающегося блока. Компонент предоставляет возможность настройки внешнего вида, размеров, иконок, изображений фона и других параметров через систему пропсов.
6
6
 
7
7
  ## Пропсы
8
8
 
@@ -0,0 +1,184 @@
1
+ # Button Component
2
+
3
+ ## Описание
4
+
5
+ Кнопка - это интерактивный UI-компонент, который предоставляет возможность выполнения действий при клике. Компонент поддерживает настройку внешнего вида, иконок, информационных подсказок, горячих клавиш и другие параметры через систему пропсов.
6
+
7
+ ## Пропсы
8
+
9
+ | Название | Тип | По умолчанию | Описание |
10
+ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ |
11
+ | id | string | crypto.randomUUID() | Уникальный идентификатор компонента |
12
+ | wrapperClass | string | "" | Дополнительные CSS-классы для обертки компонента |
13
+ | componentClass | string | "" | CSS-классы для стилизации самой кнопки |
14
+ | disabled | boolean | false | Состояние отключения кнопки |
15
+ | content | { name?: string; info?: { text: string; side: "top" \| "bottom" \| "left" \| "right" }; icon?: ConstructorOfATypedSvelteComponent \| string \| null } | { name: "", info: { text: "", side: "top" }, icon: null } | Настройки содержимого кнопки |
16
+ | keyBind | { key?: string; ctrlKey?: boolean; shiftKey?: boolean; altKey?: boolean; metaKey?: boolean; showHint?: boolean } | { showHint: true } | Настройки горячих клавиш для активации кнопки |
17
+ | onClick | () => void | undefined | Обработчик клика по кнопке |
18
+
19
+ ### Вложенные типы
20
+
21
+ #### Content
22
+
23
+ | Название | Тип | По умолчанию | Описание |
24
+ | -------- | -------------------------------------------------------------- | ------------------------- | -------------------------------------------------------- |
25
+ | name | string | "" | Текст кнопки |
26
+ | info | { text: string; side: "top" \| "bottom" \| "left" \| "right" } | { text: "", side: "top" } | Информационная подсказка |
27
+ | icon | ConstructorOfATypedSvelteComponent \| string \| null | null | Иконка, отображаемая в кнопке (SVG строка или компонент) |
28
+
29
+ #### Info
30
+
31
+ | Название | Тип | По умолчанию | Описание |
32
+ | -------- | -------------------------------------- | ------------ | ------------------------------ |
33
+ | text | string | "" | Текст информационной подсказки |
34
+ | side | "top" \| "bottom" \| "left" \| "right" | "top" | Сторона отображения подсказки |
35
+
36
+ #### KeyBind
37
+
38
+ | Название | Тип | По умолчанию | Описание |
39
+ | -------- | ------- | ------------ | ------------------------------------------ |
40
+ | key | string | undefined | Клавиша для активации |
41
+ | ctrlKey | boolean | undefined | Требование нажатия Ctrl |
42
+ | shiftKey | boolean | undefined | Требование нажатия Shift |
43
+ | altKey | boolean | undefined | Требование нажатия Alt |
44
+ | metaKey | boolean | undefined | Требование нажатия Meta (Cmd на Mac) |
45
+ | showHint | boolean | true | Показывать ли подсказку о горячих клавишах |
46
+
47
+ ## События
48
+
49
+ | Название | Тип | Описание |
50
+ | -------- | ---------- | ----------------------------------------------------------------------- |
51
+ | onClick | () => void | Срабатывает при клике по кнопке или при активации через горячую клавишу |
52
+
53
+ ## Примеры
54
+
55
+ ### Базовое использование
56
+
57
+ ```svelte
58
+ <script>
59
+ import * as UI from "poe-svelte-ui-lib"
60
+
61
+ const handleClick = () => {
62
+ console.log("Кнопка нажата!")
63
+ }
64
+ </script>
65
+
66
+ <UI.Button content={{ name: "Button 1" }} componentClass="bg-red" onClick={handleClick} />
67
+ ```
68
+
69
+ ### Кнопка с информацией и иконкой
70
+
71
+ ```svelte
72
+ <script>
73
+ import * as UI from "poe-svelte-ui-lib"
74
+ import IconGripVerticalDual from "./appIcons/IconGripVerticalDual.svelte"
75
+
76
+ const handleClick = () => {
77
+ console.log("Кнопка с иконкой нажата!")
78
+ }
79
+ </script>
80
+
81
+ <UI.Button
82
+ content={{
83
+ name: "Button 2",
84
+ icon: IconGripVerticalDual,
85
+ info: { text: "Info for Icon Button", side: "right" },
86
+ }}
87
+ componentClass="bg-green h-12 rounded-3xl"
88
+ onClick={handleClick}
89
+ />
90
+ ```
91
+
92
+ ### Отключенная кнопка
93
+
94
+ ```svelte
95
+ <script>
96
+ import * as UI from "poe-svelte-ui-lib"
97
+ </script>
98
+
99
+ <UI.Button content={{ name: "Button 3" }} componentClass="bg-blue" disabled={true} />
100
+ ```
101
+
102
+ ### Кнопка только с иконкой
103
+
104
+ ```svelte
105
+ <script>
106
+ import * as UI from "poe-svelte-ui-lib"
107
+ import IconGripHorizontalUp from "./appIcons/IconGripHorizontalUp.svelte"
108
+
109
+ const handleClick = () => {
110
+ console.log("Кнопка с иконкой нажата!")
111
+ }
112
+ </script>
113
+
114
+ <div class="flex h-10 items-center justify-around">
115
+ <UI.Button content={{ icon: IconGripHorizontalUp }} wrapperClass="w-20 h-10" componentClass="bg-purple rounded-full" onClick={handleClick} />
116
+ </div>
117
+ ```
118
+
119
+ ## Внутренняя архитектура
120
+
121
+ ### Реактивность
122
+
123
+ - Переменная `showInfo` управляет видимостью информационной подсказки
124
+ - Переменная `svgSize` вычисляет размеры SVG иконки на основе классов
125
+ - Объект `tooltipConfig` содержит конфигурацию позиционирования подсказок
126
+
127
+ ### Сторы и зависимости
128
+
129
+ - Используется стор `twMerge` для объединения Tailwind CSS классов
130
+ - Применяется переход `fly` из `svelte/transition` для анимации подсказки
131
+ - Используется `onMount` для подписки и отписки от глобальных событий клавиатуры
132
+
133
+ ### Директивы
134
+
135
+ - `transition:fly` для анимации появления/скрытия информационной подсказки
136
+ - Обработчики `onmouseenter` и `onmouseleave` для показа/скрытия подсказки
137
+ - Обработчик `onclick` для активации кнопки
138
+
139
+ ### Слоты
140
+
141
+ - Компонент не использует внешних слотов
142
+
143
+ ## Конструктор свойств (ButtonProps.svelte)
144
+
145
+ ### Описание
146
+
147
+ Компонент `ButtonProps.svelte` предоставляет визуальный интерфейс для редактирования свойств кнопки. Поддерживает два режима отображения: для конструктора и для редактирования.
148
+
149
+ ### Пропсы конструктора
150
+
151
+ | Название | Тип | По умолчанию | Описание |
152
+ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------- |
153
+ | component | UIComponent & { properties: Partial<IButtonProps> } | - | Объект компонента с его свойствами |
154
+ | onPropertyChange | (updates: Partial<{ properties?: string \| object; name?: string; access?: string; eventHandler?: IUIComponentHandler }>) => void | - | Коллбэк для обновления свойств компонента |
155
+ | forConstructor | boolean | true | Режим отображения (для конструктора или редактирования) |
156
+
157
+ ### Особенности конструктора
158
+
159
+ - Предоставляет визуальные элементы управления для всех доступных свойств
160
+ - Включает модальное окно для выбора иконок из библиотеки
161
+ - Поддерживает настройку обработчика событий и аргументов
162
+ - Имеет различные наборы полей в зависимости от режима (`forConstructor`)
163
+ - Использует систему локализации через `$t('constructor.props.*')`
164
+ - Поддерживает валидацию вводимых данных через регулярные выражения
165
+
166
+ ## Заметки
167
+
168
+ ### Адаптивность
169
+
170
+ - Компонент использует Tailwind CSS для адаптивного дизайна
171
+ - Используются относительные единицы измерения для обеспечения масштабируемости
172
+ - Подсказки автоматически позиционируются в зависимости от стороны отображения
173
+
174
+ ### Ограничения
175
+
176
+ - При использовании только иконки (без текста) кнопка становится прозрачной без фона
177
+ - Горячие клавиши регистрируются глобально и могут конфликтовать с другими компонентами
178
+ - Подсказки не поддерживают HTML-разметку, отображают только текст
179
+
180
+ ### Производительность
181
+
182
+ - Компонент использует оптимизации Svelte для минимизации перерисовок
183
+ - Обработчики клавиатуры удаляются при размонтировании компонента
184
+ - Используется эффективное объединение классов через `twMerge`
@@ -0,0 +1,147 @@
1
+ # Carousel Component
2
+
3
+ ## Описание
4
+
5
+ Карусель - это интерактивный UI-компонент, который позволяет просматривать контент в виде прокручиваемой ленты с возможностью навигации по стрелкам.
6
+
7
+ ## Пропсы
8
+
9
+ | Название | Тип | По умолчанию | Описание |
10
+ | ------------ | --------------------------------- | -------------------------------- | ----------------------------------------------------------- |
11
+ | id | string | crypto.randomUUID() | Уникальный идентификатор компонента |
12
+ | wrapperClass | string | "" | Дополнительные CSS-классы для обертки компонента |
13
+ | label | { name?: string; class?: string } | { name: "", class: "text-left" } | Настройки заголовка карусели |
14
+ | scrollValue | number | 200 | Значение прокрутки при нажатии на стрелки (в пикселях) |
15
+ | children | Snippet | undefined | Слот для содержимого, которое будет отображаться в карусели |
16
+
17
+ ### Вложенные типы
18
+
19
+ #### Label
20
+
21
+ | Название | Тип | По умолчанию | Описание |
22
+ | -------- | ------ | ------------ | ------------------------------------------ |
23
+ | name | string | "" | Текст заголовка карусели |
24
+ | class | string | "text-left" | CSS-классы для стилизации текста заголовка |
25
+
26
+ ## События
27
+
28
+ Компонент не генерирует специфические события.
29
+
30
+ ## Примеры
31
+
32
+ ### Базовое использование
33
+
34
+ ```svelte
35
+ <script>
36
+ import * as UI from "poe-svelte-ui-lib"
37
+ </script>
38
+
39
+ <UI.Carousel scrollValue={200}>
40
+ <div class="w-90 min-w-90 h-20 bg-white p-2">
41
+ <div class="mr-2 flex flex-col items-end">
42
+ <h5 class="flex items-center whitespace-nowrap">COIV-REQE-J1U9-VCS7 |</h5>
43
+ <p class="flex w-fit text-sm whitespace-nowrap gap-0.5">10.00.000-00_00007C9E0000BDE300000718:B2</p>
44
+ </div>
45
+ </div>
46
+ <div class="w-90 min-w-90 h-20 bg-white p-2">
47
+ <div class="mr-2 flex flex-col items-end">
48
+ <h5 class="flex items-center whitespace-nowrap">COIV-REQE-J1U9-VCS7 |</h5>
49
+ <p class="flex w-fit text-sm whitespace-nowrap gap-0.5">10.00.000-00_00007C9E0000BDE300000718:B2</p>
50
+ </div>
51
+ </div>
52
+ <div class="w-90 min-w-90 h-20 bg-white p-2">
53
+ <div class="mr-2 flex flex-col items-end">
54
+ <h5 class="flex items-center whitespace-nowrap">COIV-REQE-J1U9-VCS7 |</h5>
55
+ <p class="flex w-fit text-sm whitespace-nowrap gap-0.5">10.00.000-00_00007C9E0000BDE300000718:B2</p>
56
+ </div>
57
+ </div>
58
+ </UI.Carousel>
59
+ ```
60
+
61
+ ### С заголовком
62
+
63
+ ```svelte
64
+ <script>
65
+ import * as UI from "poe-svelte-ui-lib"
66
+ </script>
67
+
68
+ <UI.Carousel label={{ name: "Карусель с заголовком" }} scrollValue={300}>
69
+ <div class="w-80 min-w-80 h-24 bg-blue-100 p-3 rounded-lg">
70
+ <p>Элемент 1</p>
71
+ </div>
72
+ <div class="w-80 min-w-80 h-24 bg-green-100 p-3 rounded-lg">
73
+ <p>Элемент 2</p>
74
+ </div>
75
+ <div class="w-80 min-w-80 h-24 bg-yellow-100 p-3 rounded-lg">
76
+ <p>Элемент 3</p>
77
+ </div>
78
+ <div class="w-80 min-w-80 h-24 bg-red-100 p-3 rounded-lg">
79
+ <p>Элемент 4</p>
80
+ </div>
81
+ </UI.Carousel>
82
+ ```
83
+
84
+ ### С настраиваемым классом обертки
85
+
86
+ ```svelte
87
+ <script>
88
+ import * as UI from "poe-svelte-ui-lib"
89
+ </script>
90
+
91
+ <UI.Carousel wrapperClass="my-4 mx-auto max-w-4xl" scrollValue={150}>
92
+ <div class="w-72 min-w-72 h-16 bg-purple-100 p-2 rounded-md">
93
+ <p>Контент 1</p>
94
+ </div>
95
+ <div class="w-72 min-w-72 h-16 bg-pink-100 p-2 rounded-md">
96
+ <p>Контент 2</p>
97
+ </div>
98
+ <div class="w-72 min-w-72 h-16 bg-indigo-100 p-2 rounded-md">
99
+ <p>Контент 3</p>
100
+ </div>
101
+ </UI.Carousel>
102
+ ```
103
+
104
+ ## Внутренняя архитектура
105
+
106
+ ### Реактивность
107
+
108
+ - Переменная `carouselRef` хранит ссылку на DOM-элемент карусели
109
+ - Переменная `isAtStart` отслеживает, находится ли карусель в начале прокрутки
110
+ - Переменная `isAtEnd` отслеживает, находится ли карусель в конце прокрутки
111
+ - Функция `updateScrollState` обновляет состояния `isAtStart` и `isAtEnd` при прокрутке
112
+
113
+ ### Сторы и зависимости
114
+
115
+ - Используется стор `twMerge` для объединения Tailwind CSS классов
116
+ - Применяется переход `slide` из `svelte/transition` для анимации стрелок навигации
117
+ - Используется `ResizeObserver` для отслеживания изменений размера
118
+
119
+ ### Директивы
120
+
121
+ - `bind:this={carouselRef}` для получения ссылки на элемент карусели
122
+ - `transition:slide` для анимации стрелок навигации
123
+ - `$effect` для установки и очистки обработчиков событий
124
+
125
+ ### Слоты
126
+
127
+ - `children` - слот для содержимого, которое отображается внутри карусели
128
+
129
+ ## Заметки
130
+
131
+ ### Адаптивность
132
+
133
+ - Компонент использует Tailwind CSS для адаптивного дизайна
134
+ - Стрелки навигации автоматически скрываются при достижении начала или конца карусели
135
+ - Используются относительные единицы измерения для обеспечения масштабируемости
136
+
137
+ ### Ограничения
138
+
139
+ - Для корректного отображения элементы внутри карусели должны иметь фиксированную ширину
140
+ - Компонент не поддерживает вертикальную прокрутку
141
+ - Значение `scrollValue` влияет на величину прокрутки при нажатии стрелок
142
+
143
+ ### Производительность
144
+
145
+ - Компонент использует оптимизации Svelte для минимизации перерисовок
146
+ - Обработчики событий и `ResizeObserver` корректно удаляются при размонтировании
147
+ - Используется эффективное объединение классов через `twMerge`
@@ -0,0 +1,141 @@
1
+ # ColorPicker Component
2
+
3
+ ## Описание
4
+
5
+ Палитра - это интерактивный UI-компонент, который позволяет выбирать цвета с помощью HSV-палитры и настройки яркости. Компонент поддерживает два режима работы: цветовой (HSV) и белый (градации серого), а также предоставляет превью цвета, его RGB и HEX значения.
6
+
7
+ ## Пропсы
8
+
9
+ | Название | Тип | По умолчанию | Описание |
10
+ | ------------ | --------------------------------- | ----------------------- | ---------------------------------------------------------------- |
11
+ | id | string | crypto.randomUUID() | Уникальный идентификатор компонента |
12
+ | readonly | boolean | false | Режим только для чтения (без возможности изменения цвета) |
13
+ | wrapperClass | string | "" | Дополнительные CSS-классы для обертки компонента |
14
+ | label | { name?: string; class?: string } | { name: "", class: "" } | Настройки заголовка компонента |
15
+ | value | [number, number, number] | [0, 0, 0] | Начальное значение цвета в формате RGB (массив из 3 чисел 0-255) |
16
+ | onChange | () => void | () => {} | Обработчик изменения цвета |
17
+
18
+ ### Вложенные типы
19
+
20
+ #### Label
21
+
22
+ | Название | Тип | По умолчанию | Описание |
23
+ | -------- | ------ | ------------ | ------------------------------------------ |
24
+ | name | string | "" | Текст заголовка компонента |
25
+ | class | string | "" | CSS-классы для стилизации текста заголовка |
26
+
27
+ ## События
28
+
29
+ | Название | Тип | Описание |
30
+ | -------- | ---------------------------------- | ------------------------------------------------------------- |
31
+ | onChange | ([number, number, number]) => void | Срабатывает при изменении цвета, передает массив RGB значений |
32
+
33
+ ## Примеры
34
+
35
+ ### Базовое использование
36
+
37
+ ```svelte
38
+ <script>
39
+ import * as UI from "poe-svelte-ui-lib"
40
+
41
+ let selectedColor = [186, 25, 255]
42
+
43
+ const handleColorChange = (newColor) => {
44
+ selectedColor = newColor
45
+ console.log("Новый цвет:", newColor)
46
+ }
47
+ </script>
48
+
49
+ <UI.ColorPicker label={{ name: "Выбор цвета из палитры" }} bind:value={selectedColor} onChange={handleColorChange} />
50
+ ```
51
+
52
+ ### С начальным значением
53
+
54
+ ```svelte
55
+ <script>
56
+ import * as UI from "poe-svelte-ui-lib"
57
+
58
+ const handleColorChange = (newColor) => {
59
+ console.log("Цвет изменен:", newColor)
60
+ }
61
+ </script>
62
+
63
+ <UI.ColorPicker value={[255, 100, 50]} onChange={handleColorChange} />
64
+ ```
65
+
66
+ ### Только для чтения
67
+
68
+ ```svelte
69
+ <script>
70
+ import * as UI from "poe-svelte-ui-lib"
71
+ </script>
72
+
73
+ <UI.ColorPicker value={[0, 255, 128]} readonly={true} label={{ name: "Просмотр цвета" }} />
74
+ ```
75
+
76
+ ## Внутренняя архитектура
77
+
78
+ ### Реактивность
79
+
80
+ - Переменная `hsv` хранит текущее значение цвета в формате HSV
81
+ - Переменные `huePointer`, `brightnessPointer` и `whiteValue` отслеживают положение слайдеров
82
+ - Переменная `mode` определяет текущий режим (hsv или white)
83
+ - Функция `hsvToRgb` конвертирует HSV в RGB формат
84
+ - `$effect` синхронизирует входное значение RGB с внутренним состоянием HSV
85
+
86
+ ### Сторы и зависимости
87
+
88
+ - Используется стор `twMerge` для объединения Tailwind CSS классов
89
+ - Используются математические функции для конвертации цветовых пространств
90
+
91
+ ### Директивы
92
+
93
+ - `bind:this` для получения ссылок на DOM-элементы
94
+ - Обработчики `onmousedown` для перетаскивания слайдеров
95
+ - `$derived` для вычисления цвета превью и HEX значения
96
+
97
+ ### Слоты
98
+
99
+ - Компонент не использует внешних слотов
100
+
101
+ ## Конструктор свойств (ColorPickerProps.svelte)
102
+
103
+ ### Описание
104
+
105
+ Компонент `ColorPickerProps.svelte` предоставляет визуальный интерфейс для редактирования свойств компонента выбора цвета. Поддерживает два режима отображения: для конструктора и для редактирования.
106
+
107
+ ### Пропсы конструктора
108
+
109
+ | Название | Тип | По умолчанию | Описание |
110
+ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------- |
111
+ | component | UIComponent & { properties: Partial<IColorPickerProps> } | - | Объект компонента с его свойствами |
112
+ | onPropertyChange | (updates: Partial<{ properties?: string \| object; name?: string; access?: string; eventHandler?: IUIComponentHandler }>) => void | - | Коллбэк для обновления свойств компонента |
113
+ | forConstructor | boolean | true | Режим отображения (для конструктора или редактирования) |
114
+
115
+ ### Особенности конструктора
116
+
117
+ - Предоставляет визуальные элементы управления для всех доступных свойств
118
+ - Поддерживает настройку начального цвета через три числовых поля (RGB)
119
+ - Использует общие сниппеты для настройки различных параметров
120
+ - Имеет различные наборы полей в зависимости от режима (`forConstructor`)
121
+ - Использует систему локализации через `$t('constructor.props.*')`
122
+
123
+ ## Заметки
124
+
125
+ ### Адаптивность
126
+
127
+ - Компонент использует Tailwind CSS для адаптивного дизайна
128
+ - Превью цвета автоматически изменяет цвет текста для лучшей читаемости
129
+ - Используются относительные единицы измерения для обеспечения масштабируемости
130
+
131
+ ### Ограничения
132
+
133
+ - Входное значение `value` должно быть массивом из 3 чисел в диапазоне 0-255
134
+ - Компонент автоматически определяет режим (HSV/белый) на основе входного значения
135
+ - При работе в режиме белого цвета все три компонента RGB имеют одинаковое значение
136
+
137
+ ### Производительность
138
+
139
+ - Компонент использует оптимизации Svelte для минимизации перерисовок
140
+ - Вычисления цветовых преобразований происходят только при необходимости
141
+ - Используется эффективное объединение классов через `twMerge`
@@ -7,25 +7,28 @@
7
7
  component,
8
8
  componentProps,
9
9
  examples,
10
+ props,
10
11
  codeText,
11
12
  forConstructor = $bindable(),
12
- }: { component: Snippet; componentProps: Snippet; examples?: Snippet; codeText: string; forConstructor: boolean } = $props()
13
+ }: { component: Snippet; componentProps: Snippet; examples?: Snippet; props?: Snippet; codeText: string; forConstructor: boolean } = $props()
13
14
 
14
15
  let isCopied = $state(false)
15
16
  let snippetOptions = [
16
17
  { id: crypto.randomUUID(), value: "overview", name: $t("library.overview") },
17
18
  { id: crypto.randomUUID(), value: "examples", name: $t("library.examples") },
19
+ { id: crypto.randomUUID(), value: "props", name: $t("library.props") },
18
20
  ]
19
21
 
20
22
  let mainSnippet: string | undefined = $state("overview")
21
23
 
22
24
  const renderCurrentSnippet = () => {
23
25
  if (mainSnippet === "examples" && examples) return examples
26
+ if (mainSnippet === "props" && props) return props
24
27
  else return overview
25
28
  }
26
29
  </script>
27
30
 
28
- {#if examples}
31
+ <div class="flex flex-col">
29
32
  <Select
30
33
  wrapperClass="w-1/2 mx-auto mb-3"
31
34
  type="buttons"
@@ -33,8 +36,10 @@
33
36
  value={snippetOptions.find((o) => o.value == mainSnippet)}
34
37
  onUpdate={(value) => (mainSnippet = (value as IOption<string>).value)}
35
38
  />
36
- {/if}
37
- {@render renderCurrentSnippet()()}
39
+ <div class="flex-1 whitespace-pre">
40
+ {@render renderCurrentSnippet()()}
41
+ </div>
42
+ </div>
38
43
 
39
44
  {#snippet overview()}
40
45
  <div class="flex w-full h-[calc(100vh-9rem)] flex-col">
@@ -53,7 +58,7 @@
53
58
  {@render componentProps()}
54
59
  <div class="relative mt-3">
55
60
  <button
56
- class="absolute top-2 right-3 flex cursor-pointer border-none bg-transparent"
61
+ class="absolute top-9 right-3 flex cursor-pointer border-none bg-transparent"
57
62
  onclick={(e) => {
58
63
  e.preventDefault()
59
64
  navigator.clipboard.writeText(codeText)
@@ -82,8 +87,7 @@
82
87
  {/if}
83
88
  </div>
84
89
  </button>
85
- <pre class="overflow-x-auto">{codeText}
86
- </pre>
90
+ <pre class="overflow-x-auto">{codeText}</pre>
87
91
  </div>
88
92
  </div>
89
93
  </div>
@@ -3,6 +3,7 @@ type $$ComponentProps = {
3
3
  component: Snippet;
4
4
  componentProps: Snippet;
5
5
  examples?: Snippet;
6
+ props?: Snippet;
6
7
  codeText: string;
7
8
  forConstructor: boolean;
8
9
  };