@cyber-harbour/ui 2.2.43 → 3.0.0-fix-button-focus-visible.0

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 (67) hide show
  1. package/README.md +115 -205
  2. package/bin/switch-ui-lib.js +218 -106
  3. package/dist/Icons/index.d.mts +468 -0
  4. package/dist/Icons/index.d.ts +468 -0
  5. package/dist/Icons/index.js +2 -0
  6. package/dist/Icons/index.js.map +1 -0
  7. package/dist/Icons/index.mjs +2 -0
  8. package/dist/Icons/index.mjs.map +1 -0
  9. package/dist/PdfDriver-IRXY5HVF.js +2 -0
  10. package/dist/PdfDriver-IRXY5HVF.js.map +1 -0
  11. package/dist/PdfDriver-XCFXTEEH.mjs +2 -0
  12. package/dist/PdfDriver-XCFXTEEH.mjs.map +1 -0
  13. package/dist/chunk-47BJH42B.mjs +2 -0
  14. package/dist/chunk-47BJH42B.mjs.map +1 -0
  15. package/dist/chunk-47O3IYW3.js +3 -0
  16. package/dist/chunk-47O3IYW3.js.map +1 -0
  17. package/dist/chunk-4O4WHXDT.mjs +3 -0
  18. package/dist/chunk-4O4WHXDT.mjs.map +1 -0
  19. package/dist/chunk-7F6XMY63.mjs +3 -0
  20. package/dist/chunk-7F6XMY63.mjs.map +1 -0
  21. package/dist/chunk-7LHQWEWV.mjs +2 -0
  22. package/dist/chunk-7LHQWEWV.mjs.map +1 -0
  23. package/dist/chunk-AYDF3IFZ.js +2 -0
  24. package/dist/chunk-AYDF3IFZ.js.map +1 -0
  25. package/dist/chunk-HFG4KP6L.js +2 -0
  26. package/dist/chunk-HFG4KP6L.js.map +1 -0
  27. package/dist/chunk-JVDLOXO7.js +2 -0
  28. package/dist/chunk-JVDLOXO7.js.map +1 -0
  29. package/dist/chunk-NQZUCXJV.js +2 -0
  30. package/dist/chunk-NQZUCXJV.js.map +1 -0
  31. package/dist/chunk-QWPVIX2T.mjs +2 -0
  32. package/dist/chunk-QWPVIX2T.mjs.map +1 -0
  33. package/dist/chunk-S3RLHUDJ.js +3 -0
  34. package/dist/chunk-S3RLHUDJ.js.map +1 -0
  35. package/dist/chunk-XP4PPF7V.mjs +2 -0
  36. package/dist/chunk-XP4PPF7V.mjs.map +1 -0
  37. package/dist/index.d.mts +1646 -1871
  38. package/dist/index.d.ts +1646 -1871
  39. package/dist/index.js +8 -1690
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +8 -1690
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/styles/design-tokens.css +839 -0
  44. package/dist/styles/legacy-token-aliases.css +26 -0
  45. package/dist/styles/tailwind.css +477 -3
  46. package/dist/utils/index.d.mts +7 -0
  47. package/dist/utils/index.d.ts +7 -0
  48. package/dist/utils/index.js +2 -0
  49. package/dist/utils/index.js.map +1 -0
  50. package/dist/utils/index.mjs +2 -0
  51. package/dist/utils/index.mjs.map +1 -0
  52. package/dist/utils-jfCLo6l4.d.mts +26 -0
  53. package/dist/utils-jfCLo6l4.d.ts +26 -0
  54. package/package.json +65 -53
  55. package/dist/PdfDriver-54FN6DBI.js +0 -2
  56. package/dist/PdfDriver-54FN6DBI.js.map +0 -1
  57. package/dist/PdfDriver-AVC3OSKE.mjs +0 -2
  58. package/dist/PdfDriver-AVC3OSKE.mjs.map +0 -1
  59. package/dist/chunk-EGCG27KL.mjs +0 -3
  60. package/dist/chunk-EGCG27KL.mjs.map +0 -1
  61. package/dist/chunk-WRBRJBUL.js +0 -3
  62. package/dist/chunk-WRBRJBUL.js.map +0 -1
  63. package/dist/index.css +0 -3
  64. package/dist/index.css.map +0 -1
  65. package/dist/styles/tailwind.css.map +0 -1
  66. package/dist/styles/tailwind.d.mts +0 -2
  67. package/dist/styles/tailwind.d.ts +0 -2
package/README.md CHANGED
@@ -1,301 +1,211 @@
1
- # Початок роботи з Cyber Harbor UI Kit
1
+ # Cyber Harbour UI Kit
2
2
 
3
- ## Розробка
3
+ React UI component library built with Tailwind CSS 4, class-variance-authority, and a custom Material-style icon set.
4
4
 
5
- ### Встановлення
5
+ ## Installation
6
6
 
7
7
  ```bash
8
- npm install
8
+ npm install @cyber-harbour/ui
9
9
  ```
10
10
 
11
- ### Збірка бібліотеки
12
-
13
- Бібліотека збирається за допомогою tsup, що забезпечує оптимізовані збірки для форматів ESM та CommonJS.
11
+ ### Peer dependencies
14
12
 
15
13
  ```bash
16
- # Розробка з режимом відстеження
17
- npm run dev
18
-
19
- # Продакшн збірка
20
- npm run build
21
-
22
- # Збірка без мінімізації
23
- npm run build:dev
24
-
25
- # Перевірка типів без збірки
26
- npm run type-check
14
+ npm install tailwindcss react-tiny-popover
27
15
  ```
28
16
 
29
- ### Результат збірки
17
+ FileViewer additionally requires: `react-pdf`, `d3`, `date-fns`, `@codemirror/lang-*`, `@uiw/react-codemirror`.
30
18
 
31
- При збірці бібліотеки в папці `dist` генерується наступне:
19
+ ## Usage
32
20
 
33
- - ESM модулі (`.mjs` файли)
34
- - CommonJS модулі (`.js` файли)
35
- - TypeScript файли декларацій (`.d.ts` та `.d.mts`)
36
- - Source maps
21
+ ### Import styles
37
22
 
38
- ### Storybook
23
+ The library exports source Tailwind CSS (with `@theme` tokens, not compiled output). Your project must have its own Tailwind CSS 4 pipeline to compile it.
39
24
 
40
- Ви можете запустити Storybook для розробки та тестування компонентів:
25
+ See [Vite SPA](#vite-spa-react) or [Next.js](#nextjs) setup sections below for full configuration.
41
26
 
42
- ```bash
43
- npm run storybook
44
- ```
45
-
46
- Для збірки Storybook:
27
+ ### Import components
47
28
 
48
- ```bash
49
- npm run build-storybook
29
+ ```tsx
30
+ import { Button2, Panel, TextInput2 } from '@cyber-harbour/ui';
31
+ import { SearchIcon, ChevronDownIcon } from '@cyber-harbour/ui/Icons2';
32
+ import { cn, useEscapeLayer, useOutclickLayer } from '@cyber-harbour/ui/utils';
50
33
  ```
51
34
 
52
- ## Оптимізації збірки
53
-
54
- Проект використовує різні оптимізації для ефективної збірки:
55
-
56
- ### Продакшн режим
57
-
58
- - Мінімізація вихідних файлів
59
- - Tree shaking для видалення невикористаного коду
60
- - Видалення console logs
61
- - Source maps для налагодження
62
-
63
- ### Режим розробки
64
-
65
- - Режим відстеження для автоматичної перебудови при змінах
66
- - Вбудовані source maps для легшого налагодження
67
- - Без мінімізації для швидшої збірки
68
- - Без генерації типів для швидкості
35
+ | Subpath | Contents |
36
+ |---|---|
37
+ | `@cyber-harbour/ui` | Components |
38
+ | `@cyber-harbour/ui/Icons2` | Custom Material-style SVG icons |
39
+ | `@cyber-harbour/ui/utils` | `cn`, hooks, `getFilesFromDataTransfer` |
40
+ | `@cyber-harbour/ui/styles` | Source Tailwind CSS with custom theme (requires consumer Tailwind pipeline) |
69
41
 
70
- ## Інструмент перемикання UI бібліотеки
42
+ ## Development
71
43
 
72
- Цей інструмент дозволяє легко перемикатися між локальною версією UI бібліотеки та версією з NPM.
73
-
74
- ### Використання
75
-
76
- #### Варіант 1: Через npx (рекомендований)
44
+ ### Setup
77
45
 
78
46
  ```bash
79
- npx @cyber-harbour/ui switch-ui-lib
80
- ```
81
-
82
- #### Варіант 2: Через npm скрипт
83
-
84
- Додайте скрипт в package.json вашого проекту:
85
-
86
- ```json
87
- {
88
- "scripts": {
89
- "switch-ui": "npx @cyber-harbour/ui switch-ui-lib"
90
- }
91
- }
47
+ npm install
92
48
  ```
93
49
 
94
- Потім запускайте:
50
+ ### Scripts
95
51
 
96
52
  ```bash
97
- npm run switch-ui
53
+ npm run dev # Watch mode
54
+ npm run build # Production build
55
+ npm run build:dev # Dev build (no minification)
56
+ npm run type:check # Type check
57
+ npm run test # Run tests
58
+ npm run storybook # Start Storybook
59
+ npm run build-storybook
98
60
  ```
99
61
 
100
- ### Налаштування
62
+ ### Build output
101
63
 
102
- #### Змінні середовища
64
+ The `dist` folder contains:
103
65
 
104
- Створіть файл `.env` або `.env.local` в корені вашого проекту:
66
+ - ESM modules (`.mjs`)
67
+ - CommonJS modules (`.js`)
68
+ - TypeScript declarations (`.d.ts`, `.d.mts`)
69
+ - Source maps
105
70
 
106
- ```bash
107
- UI_LIBRARY_PATH=/path/to/your/ui-kit
108
- ```
71
+ ## Integration
109
72
 
110
- Якщо змінна не встановлена, скрипт спробує знайти UI бібліотеку в папці `ui-kit` поруч з вашим проектом.
73
+ The library uses **Tailwind CSS 4** with CSS-based configuration. Styles are shipped as a prebuilt CSS file with custom color palette, shadows, and z-index tokens.
111
74
 
112
- #### Структура проектів
75
+ ### Dark mode
113
76
 
114
- Рекомендована структура:
77
+ Dark mode uses the `dark` CSS class. Add `class="dark"` to a parent element:
115
78
 
79
+ ```html
80
+ <html class="dark">
116
81
  ```
117
- projects/
118
- ├── ui-kit/ # UI бібліотека
119
- ├── my-app/ # Ваш проект
120
- └── another-app/ # Інший проект
121
- ```
122
-
123
- ### Що робить скрипт
124
-
125
- #### Локальна версія
126
-
127
- - Видаляє NPM версію пакету
128
- - Створює npm link для React та React DOM
129
- - Створює глобальний link для UI бібліотеки
130
- - Підключає локальну версію через npm link
131
-
132
- #### NPM версія
133
-
134
- - Видаляє всі npm links
135
- - Встановлює останню версію з NPM
136
-
137
- ### Залежності
138
82
 
139
- Скрипт потребує:
83
+ Components automatically adapt to dark mode.
140
84
 
141
- - `prompts` - для інтерактивного вибору
142
- - `dotenv` - для читання змінних середовища (опційно)
85
+ ### Vite SPA (React)
143
86
 
144
- Ці пакети автоматично встановлюються разом з UI бібліотекою.
145
-
146
- ### Усунення несправностей
147
-
148
- Відсутній лінк на бібліотеку після першого завантаження. Запустіть
87
+ 1. Install dependencies:
149
88
 
150
89
  ```bash
151
- npm link
90
+ npm install @tailwindcss/vite tailwindcss
152
91
  ```
153
92
 
154
- ---
155
-
156
- # 🔹 Інструкція інтеграції UI-kit у Next.js з Tailwind
93
+ 2. Add the Tailwind plugin to `vite.config.ts`:
157
94
 
158
- Цей UI-kit побудований на **TailwindCSS** і постачається з власною конфігурацією (`tailwind.config.js`).
159
- Щоб уникнути конфліктів і дозволити кастомізацію у проєкті, потрібно **мерджити** конфіг UI-kit із конфігом Next.js.
95
+ ```ts
96
+ import tailwindcss from '@tailwindcss/vite';
97
+ import { defineConfig } from 'vite';
98
+ import react from '@vitejs/plugin-react';
160
99
 
161
- ---
100
+ export default defineConfig({
101
+ plugins: [react(), tailwindcss()],
102
+ });
103
+ ```
162
104
 
163
- ## 1. Встановіть залежності
105
+ 3. Import library styles in your global CSS (`src/index.css`):
164
106
 
165
- У вашому Next.js-проєкті мають бути встановлені:
107
+ ```css
108
+ @import 'tailwindcss';
109
+ @import '@cyber-harbour/ui/styles';
166
110
 
167
- ```bash
168
- pnpm add tailwindcss postcss autoprefixer
111
+ @source "../node_modules/@cyber-harbour/ui/dist";
169
112
  ```
170
113
 
171
- ---
172
-
173
- ## 2. Створіть `tailwind.config.js` у Next.js
114
+ ### Next.js
174
115
 
175
- У корені вашого Next.js-проєкту створіть файл `tailwind.config.js` і підключіть конфіг із UI-kit.
176
- Ми будемо мерджити конфіги за допомогою `lodash.merge`:
116
+ 1. Install dependencies:
177
117
 
178
118
  ```bash
179
- pnpm add lodash.merge
119
+ npm install @tailwindcss/postcss tailwindcss
180
120
  ```
181
121
 
182
- **`tailwind.config.js`**
122
+ 2. Configure PostCSS in `postcss.config.mjs`:
183
123
 
184
124
  ```js
185
- const merge = require('lodash.merge');
186
- const uiKitConfig = require('ui-kit/tailwind.config.js'); // шлях до UI-kit пакета
187
-
188
- module.exports = merge({}, uiKitConfig, {
189
- content: [
190
- './pages/**/*.{js,ts,jsx,tsx}',
191
- './components/**/*.{js,ts,tsx}',
192
- './app/**/*.{js,ts,jsx,tsx}', // якщо використовуєте app router
193
- './node_modules/@cyber-harbour/ui/dist/**/*.{js,mjs', // важливо: UI-kit компоненти
194
- ],
195
- theme: {
196
- extend: {
197
- colors: {
198
- accent: '#f59e0b', // локальні кольори вашого проєкту
199
- },
200
- },
125
+ export default {
126
+ plugins: {
127
+ '@tailwindcss/postcss': {},
201
128
  },
202
- });
129
+ };
203
130
  ```
204
131
 
205
- ---
206
-
207
- ## 3. Підключіть Tailwind у глобальні стилі
208
-
209
- У вашому Next.js проєкті додайте у `globals.css` (або `app/globals.css`):
132
+ 3. Import library styles in your global CSS (`app/globals.css`):
210
133
 
211
134
  ```css
212
- @tailwind base;
213
- @tailwind components;
214
- @tailwind utilities;
215
- ```
216
-
217
- ---
135
+ @import 'tailwindcss';
136
+ @import '@cyber-harbour/ui/styles';
218
137
 
219
- ## 4. Використання компонентів із UI-kit
138
+ @source "../node_modules/@cyber-harbour/ui/dist";
139
+ ```
220
140
 
221
- Тепер ви можете імпортувати і використовувати компоненти з UI-kit у будь-яких файлах вашого Next.js-проєкту:
141
+ ### Example
222
142
 
223
143
  ```tsx
224
- import { Button } from 'ui-kit';
144
+ import { Button2, Panel } from '@cyber-harbour/ui';
145
+ import { SearchIcon } from '@cyber-harbour/ui/Icons2';
225
146
 
226
147
  export default function Page() {
227
148
  return (
228
- <div className="p-6">
229
- <Button variant="primary">Клікни мене</Button>
230
- </div>
149
+ <Panel as="section" className="p-6">
150
+ <Button2 type="primary" leftIcon={<SearchIcon />}>
151
+ Search
152
+ </Button2>
153
+ </Panel>
231
154
  );
232
155
  }
233
156
  ```
234
157
 
235
- ---
236
-
237
- ## 5. Кастомізація теми
158
+ ## FileViewer configuration
238
159
 
239
- Якщо потрібно змінити кольори, spacing чи інші токени —
240
- додавайте їх у секцію `theme.extend` вашого `tailwind.config.js`.
160
+ PDF preview requires copying the pdfjs-dist worker.
241
161
 
242
- ⚡️ Вони автоматично поєднаються з токенами з UI-kit.
162
+ ### Auto copy
243
163
 
244
- ---
164
+ Add the command to your `postinstall` script in `package.json` so the worker is copied automatically after every install:
245
165
 
246
- ## 6. Альтернатива підключення
247
-
248
- Додайте до вашого головного CSS файлу або entry point:
249
-
250
- ```css
251
- /* Імпорт скомпільованих Tailwind стилів з бібліотеки */
252
- @import '@cyber-harbour/ui/styles';
253
- ```
254
-
255
- Або в JS/TS файлі:
256
-
257
- ```js
258
- import '@cyber-harbour/ui/styles';
166
+ ```json
167
+ {
168
+ "scripts": {
169
+ "postinstall": "npx @cyber-harbour/ui copy-pdfjs"
170
+ }
171
+ }
259
172
  ```
260
173
 
261
- ---
262
-
263
- ## 7. FileViewer configuration
264
-
265
- Для роботи перегляду PDF потрібно скопіювати worker pdfjs-dist
266
-
267
- ### Автоматичне копіювання
174
+ Or run it manually:
268
175
 
269
176
  ```bash
270
177
  npx @cyber-harbour/ui copy-pdfjs
271
178
  ```
272
179
 
273
- ### Кастомна папка для worker'ів
180
+ ### Custom worker directory
274
181
 
275
182
  ```bash
276
183
  UI_LIBRARY_WORKERS_DIR=public/assets npx @cyber-harbour/ui copy-pdfjs
277
184
  ```
278
185
 
279
- ### Вирішення проблем
186
+ ## Switch UI library tool
280
187
 
281
- Якщо виникає помилка про відсутність PDF worker'а:
188
+ Switch between local and NPM versions of the library during development.
282
189
 
283
- 1. **Встановіть pdfjs-dist** у вашому проекті:
190
+ ```bash
191
+ npx @cyber-harbour/ui switch-ui-lib
192
+ ```
284
193
 
285
- ```bash
286
- npm install pdfjs-dist
287
- ```
194
+ ### Setup
288
195
 
289
- 2. **Або встановіть як peer dependency** та запустіть скрипт:
196
+ Set the path to your local UI kit via `.env` or `.env.local`:
197
+
198
+ ```bash
199
+ UI_LIBRARY_PATH=/path/to/your/ui-kit
200
+ ```
290
201
 
291
- ```bash
292
- npm install --save-peer pdfjs-dist
293
- npx @cyber-harbour/ui copy-pdfjs
294
- ```
202
+ If not set, the script looks for `ui-kit` folder next to your project.
295
203
 
296
- 3. **Перевірте структуру проекту**: скрипт шукає worker у наступних місцях:
297
- - `node_modules/pdfjs-dist/build/pdf.worker.min.mjs`
298
- - `node_modules/@cyber-harbour/ui/node_modules/pdfjs-dist/build/pdf.worker.min.mjs`
299
- - Інші можливі локації
204
+ ### Recommended project structure
300
205
 
301
- Скрипт автоматично знайде правильну локацію та скопіює worker до папки `public/workers/`.
206
+ ```
207
+ projects/
208
+ ui-kit/ # This library
209
+ my-app/ # Your project
210
+ another-app/ # Another project
211
+ ```