voiptime-components 1.23.5 → 1.23.7

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/README.md CHANGED
@@ -29,3 +29,67 @@ git push origin main
29
29
  генерування іконок
30
30
  npm run generate-icons
31
31
 
32
+ # Іконки з Figma (src/icon-groups)
33
+
34
+ Іконки згруповані за розділами з Figma-файлу
35
+ [VT_icons_base](https://www.figma.com/design/6VQ3TVEZ2eEew06yQdjPFK/VT_icons_base--Copy-).
36
+ Кожна група — окрема папка в `src/icon-groups/<група>/`, назва іконки = префікс групи + назва:
37
+
38
+ ```
39
+ src/icon-groups/
40
+ left-menu/LeftMenuCrmIcon.vue → <VIcon name="left_menu_crm" />
41
+ phone/PhoneHangupIcon.vue → <VIcon name="phone_hangup" />
42
+ index.ts ← генерується автоматично, не редагувати
43
+ ```
44
+
45
+ Однотонні іконки використовують `currentColor`, тому колір задається через `color`
46
+ (`<VIcon name="filter_save" color="#a82525" />`). Багатоколірні (месенджери, прапори, no-data,
47
+ `phone_answer_call`, `phone_hangup_call`) зберігають оригінальні кольори.
48
+
49
+ Старі іконки з `src/icons` (`arrowDown`, `filterSave`, ...) теж працюють у `VIcon`, але вони deprecated —
50
+ для нового коду використовуйте іконки з груп. Усі доступні іконки — в демо, розділ **Icon Groups** (`npm run dev`).
51
+
52
+ ## Налаштування токена Figma (один раз)
53
+
54
+ 1. Figma → Settings → Security → Personal access tokens → Generate new token, scope **File content: Read-only**.
55
+ 2. Створіть у корені проєкту файл `.env.local` (він у `.gitignore`):
56
+
57
+ ```
58
+ FIGMA_TOKEN=figd_xxxxxxxxxxxxxxxx
59
+ ```
60
+
61
+ ## Скрипти
62
+
63
+ | Команда | Що робить |
64
+ |---|---|
65
+ | `npm run fetch-icons` | Завантажує структуру файлу та SVG з Figma, оновлює кеш `.figma-cache`, перегенеровує `src/icon-groups` та `index.ts` |
66
+ | `npm run fetch-icons:offline` | Те саме, але з кешу `.figma-cache`, без запитів до Figma |
67
+ | `npm run generate-icon-groups` | Тільки перегенеровує `src/icon-groups/index.ts` з наявних `.vue` файлів |
68
+
69
+ ## Як оновити іконки, коли дизайнер змінив Figma
70
+
71
+ 1. Переконайтесь, що є `.env.local` з `FIGMA_TOKEN`.
72
+ 2. Запустіть `npm run fetch-icons`.
73
+ 3. Якщо скрипт повідомляє про **іконки без групи** — додайте новий фрейм Figma у `groups` в
74
+ `scripts/icon-groups.config.cjs` і запустіть `npm run fetch-icons:offline`.
75
+ 4. Якщо скрипт повідомляє про **дублікати назв** — додайте перейменування у `rename` і запустіть
76
+ `npm run fetch-icons:offline`.
77
+ 5. Перевірте результат у демо (`npm run dev` → Icon Groups) та `git diff src/icon-groups`.
78
+ 6. Закомітьте зміни (`feat: оновлено іконки` / `fix: ...`).
79
+
80
+ > ⚠️ Figma має жорсткі ліміти на експорт (для деяких типів місць — кілька запитів на кілька днів).
81
+ > Якщо отримали `перевищено ліміт запитів, повторіть через N хв` — дочекайтесь або використайте токен
82
+ > акаунта з Dev/Full seat. Через це структура файлу та SVG кешуються у `.figma-cache` (не в git):
83
+ > **для зміни груп і назв Figma не потрібна** — достатньо `npm run fetch-icons:offline`.
84
+ > Кеш є тільки локально: на новій машині перший запуск має бути `npm run fetch-icons`.
85
+
86
+ ## Конфігурація `scripts/icon-groups.config.cjs`
87
+
88
+ - `groups` — групи: `folder` (папка та префікс назви), `frames` (фрейми Figma, з яких беруться іконки),
89
+ `strip` (слова, які прибираються з початку назви: `messageEdit` → `message_edit`, а не `message_message_edit`),
90
+ `multicolor` / `multicolorIcons` — не замінювати кольори на `currentColor`.
91
+ - `rename` — ручні назви у форматі `'<папка>/<назва у Figma>': '<назва без префікса>'`
92
+ (наприклад `'player/forword': 'forward'` → `player_forward`).
93
+ - `skipColors` — іконки з цими кольорами пропускаються (сірий `#828282` у легенді дизайнера —
94
+ «не знаю, чи потрібні»).
95
+
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/datepicker/VDatePicker.vue"],"names":[],"mappings":";AA89CE,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAigE9G,wBASG"}
1
+ {"version":3,"file":"VDatePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/datepicker/VDatePicker.vue"],"names":[],"mappings":";AAw/CE,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiiE9G,wBASG"}
@@ -1 +1 @@
1
- {"version":3,"file":"VInput.vue.d.ts","sourceRoot":"","sources":["../../../src/components/input/VInput.vue"],"names":[],"mappings":";AA8sBE,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAw4B5E,wBASG"}
1
+ {"version":3,"file":"VInput.vue.d.ts","sourceRoot":"","sources":["../../../src/components/input/VInput.vue"],"names":[],"mappings":";AA4uBE,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAs6B5E,wBASG"}
@@ -1 +1 @@
1
- {"version":3,"file":"VSelect.vue.d.ts","sourceRoot":"","sources":["../../../src/components/select/VSelect.vue"],"names":[],"mappings":";AAsyCE,OAAO,KAAK,EAIV,cAAc,EACd,aAAa,EACd,MAAM,2BAA2B,CAAC;AA0iDrC,QAAA,IAAI,OAAO;;CAAU,EAAE,QAAQ,IAAiC,CAAE;AAClE,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC7C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAwFhD,QAAA,MAAM,eAAe;wDAhpDnB,CAhsCiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAy1FjB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAa1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"VSelect.vue.d.ts","sourceRoot":"","sources":["../../../src/components/select/VSelect.vue"],"names":[],"mappings":";AAyzCE,OAAO,KAAK,EAIV,cAAc,EACd,aAAa,EACd,MAAM,2BAA2B,CAAC;AAyjDrC,QAAA,IAAI,OAAO;;CAAU,EAAE,QAAQ,IAAiC,CAAE;AAClE,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC7C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AA8FhD,QAAA,MAAM,eAAe;wDArqDnB,CAntCiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAi4FjB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAa1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VTimePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/timepicker/VTimePicker.vue"],"names":[],"mappings":";AA6qCE,OAAO,EAOL,KAAK,eAAe,EAKpB,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;;;;;;sBAsGV,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAu5C9C,wBASG"}
1
+ {"version":3,"file":"VTimePicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/timepicker/VTimePicker.vue"],"names":[],"mappings":";AAusCE,OAAO,EAOL,KAAK,eAAe,EAKpB,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;;;;;;sBAsGV,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAy7C9C,wBASG"}
@@ -1,5 +1,8 @@
1
1
  import { Ref } from 'vue';
2
- export declare function useTruncatedLabel(labelRef: Ref<HTMLElement | undefined>, getText: () => string | undefined): {
2
+ export declare const isElementOverflowing: (el: HTMLElement) => boolean;
3
+ export declare const isAnyChildOverflowing: (el: HTMLElement) => boolean;
4
+ export declare const isInputPlaceholderOverflowing: (el: HTMLElement) => boolean;
5
+ export declare function useTruncatedLabel(labelRef: Ref<HTMLElement | undefined>, getText: () => string | undefined, isOverflowing?: (el: HTMLElement) => boolean): {
3
6
  isTruncated: Ref<boolean, boolean>;
4
7
  tooltipText: () => string;
5
8
  recheck: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useTruncatedLabel.d.ts","sourceRoot":"","sources":["../../src/composables/useTruncatedLabel.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS;;;;EA4C1G"}
1
+ {"version":3,"file":"useTruncatedLabel.d.ts","sourceRoot":"","sources":["../../src/composables/useTruncatedLabel.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAG5D,eAAO,MAAM,oBAAoB,OAAQ,WAAW,KAAG,OAA8C,CAAC;AAGtG,eAAO,MAAM,qBAAqB,OAAQ,WAAW,KAAG,OACuD,CAAC;AAKhH,eAAO,MAAM,6BAA6B,OAAQ,WAAW,KAAG,OAY/D,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,EACtC,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,EACjC,aAAa,GAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAA8B;;;;EA6CnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/directives/tooltip/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,KAAK,CAAC;AA6L7D,eAAO,MAAM,gBAAgB,EAAE,eAsH9B,CAAC"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/directives/tooltip/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,KAAK,CAAC;AAwM7D,eAAO,MAAM,gBAAgB,EAAE,eAiF9B,CAAC"}