@libs-ui/icon-font 0.2.356-8 → 0.2.357-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.
package/README.md CHANGED
@@ -1,3 +1,380 @@
1
- # icon-font
1
+ # @libs-ui/icon-font
2
2
 
3
- This library was generated with [Nx](https://nx.dev).
3
+ > Bộ icon font nội bộ của libs-ui với 114 icon được thiết kế riêng cho hệ thống Mobio.
4
+
5
+ ## Giới thiệu
6
+
7
+ `@libs-ui/icon-font` cung cấp bộ icon font tùy chỉnh dưới dạng CSS class, cho phép sử dụng trực tiếp trên bất kỳ thẻ HTML nào mà không cần import component Angular. Icon được render thông qua pseudo-element `::before`, hỗ trợ kiểm soát kích thước và màu sắc bằng Tailwind hoặc CSS thuần.
8
+
9
+ ## Tính năng
10
+
11
+ - ✅ 114 icon được thiết kế riêng theo design system Mobio
12
+ - ✅ Sử dụng đơn giản bằng CSS class (`libs-ui-icon-*`)
13
+ - ✅ Kiểm soát kích thước qua `font-size` hoặc Tailwind (`text-[18px]`)
14
+ - ✅ Kiểm soát màu sắc qua `color` hoặc Tailwind (`text-blue-500`)
15
+ - ✅ Render qua pseudo-element `::before` — không ảnh hưởng DOM structure
16
+ - ✅ Font format đa dạng: EOT, TTF, WOFF, SVG — tương thích mọi trình duyệt
17
+ - ✅ Tích hợp sẵn với các component libs-ui (Button, Label, Notification…)
18
+
19
+ ## Khi nào sử dụng
20
+
21
+ - Hiển thị icon trong nút bấm, menu, badge, label, tiêu đề section
22
+ - Kết hợp với các component libs-ui qua prop `classIconLeft`, `classIconRight`
23
+ - Thay thế SVG inline khi cần icon đơn giản, nhẹ hơn
24
+ - Hiển thị icon trạng thái (success, warning, error, info) trong notification
25
+ - Các icon thao tác phổ biến: thêm, sửa, xóa, tìm kiếm, tải xuống, copy
26
+
27
+ ## Cài đặt
28
+
29
+ ```bash
30
+ npm install @libs-ui/icon-font
31
+ ```
32
+
33
+ ## Import CSS
34
+
35
+ Icon font **không có Angular component** — chỉ cần import file CSS một lần vào `styles.scss` của ứng dụng:
36
+
37
+ ```scss
38
+ // styles.scss (app root)
39
+ @import '@libs-ui/icon-font/assets/style.css';
40
+ ```
41
+
42
+ Sau đó dùng class trực tiếp trong HTML mà không cần import thêm gì vào component.
43
+
44
+ ## Ví dụ sử dụng
45
+
46
+ ### Ví dụ 1 — Icon cơ bản trên thẻ `<i>` hoặc `<span>`
47
+
48
+ ```html
49
+ <!-- Icon thêm mới -->
50
+ <i class="libs-ui-icon-add text-[20px] text-blue-500"></i>
51
+
52
+ <!-- Icon tìm kiếm -->
53
+ <span class="libs-ui-icon-search text-[16px] text-gray-500"></span>
54
+
55
+ <!-- Icon đóng -->
56
+ <i class="libs-ui-icon-close text-[14px]"></i>
57
+ ```
58
+
59
+ ### Ví dụ 2 — Icon kết hợp với nút bấm
60
+
61
+ ```html
62
+ <!-- Nút có icon bên trái -->
63
+ <button class="flex items-center gap-2 px-4 py-2 bg-blue-500 text-white rounded">
64
+ <i class="libs-ui-icon-add text-[16px]"></i>
65
+ <span>Thêm mới</span>
66
+ </button>
67
+
68
+ <!-- Nút có icon bên phải -->
69
+ <button class="flex items-center gap-2 px-4 py-2 border border-gray-300 rounded">
70
+ <span>Xem thêm</span>
71
+ <i class="libs-ui-icon-arrow-right text-[16px]"></i>
72
+ </button>
73
+ ```
74
+
75
+ ### Ví dụ 3 — Kiểm soát kích thước với Tailwind
76
+
77
+ ```html
78
+ <!-- Icon nhỏ (14px) -->
79
+ <i class="libs-ui-icon-check text-[14px] text-green-500"></i>
80
+
81
+ <!-- Icon trung bình (18px) -->
82
+ <i class="libs-ui-icon-calendar text-[18px] text-gray-600"></i>
83
+
84
+ <!-- Icon lớn (24px) -->
85
+ <i class="libs-ui-icon-search text-[24px] text-blue-600"></i>
86
+
87
+ <!-- Icon rất lớn (44px) — dùng cho hero section -->
88
+ <div class="libs-ui-icon-search text-[44px] text-[#c0c6d0]"></div>
89
+ ```
90
+
91
+ ### Ví dụ 4 — Kết hợp với libs-ui Button component
92
+
93
+ ```html
94
+ <!-- Icon trái -->
95
+ <libs_ui-components-buttons-button
96
+ [type]="'button-primary'"
97
+ [label]="'Thêm mới'"
98
+ [classIconLeft]="'libs-ui-icon-add'"
99
+ />
100
+
101
+ <!-- Icon phải -->
102
+ <libs_ui-components-buttons-button
103
+ [type]="'button-default'"
104
+ [label]="'Tiếp theo'"
105
+ [classIconRight]="'libs-ui-icon-arrow-right'"
106
+ />
107
+
108
+ <!-- Icon tải về -->
109
+ <libs_ui-components-buttons-button
110
+ [type]="'button-default'"
111
+ [label]="'Tải xuống'"
112
+ [classIconLeft]="'libs-ui-icon-download-outline'"
113
+ />
114
+ ```
115
+
116
+ ### Ví dụ 5 — Icon trạng thái (notification, alert)
117
+
118
+ ```html
119
+ <!-- Thành công -->
120
+ <span class="libs-ui-icon-check-circle-solid text-[18px] text-green-500"></span>
121
+
122
+ <!-- Cảnh báo -->
123
+ <span class="libs-ui-icon-alert-triangle-solid text-[18px] text-yellow-500"></span>
124
+
125
+ <!-- Lỗi -->
126
+ <span class="libs-ui-icon-close-circle-solid text-[18px] text-red-500"></span>
127
+
128
+ <!-- Thông tin -->
129
+ <span class="libs-ui-icon-tooltip-solid text-[18px] text-blue-500"></span>
130
+ ```
131
+
132
+ ### Ví dụ 6 — Icon với màu sắc tùy chỉnh qua CSS variable
133
+
134
+ ```html
135
+ <!-- Màu từ CSS variable -->
136
+ <i class="libs-ui-icon-edit-line" style="color: var(--libs-ui-color-active)"></i>
137
+
138
+ <!-- Màu từ Tailwind -->
139
+ <i class="libs-ui-icon-lock text-[16px] text-gray-400"></i>
140
+ ```
141
+
142
+ ## Danh sách icon đầy đủ (114 icons)
143
+
144
+ ### Thao tác cơ bản
145
+
146
+ | Class | Mô tả |
147
+ |---|---|
148
+ | `libs-ui-icon-add` | Thêm mới (dấu +) |
149
+ | `libs-ui-icon-close` | Đóng / Hủy |
150
+ | `libs-ui-icon-check` | Xác nhận / Tick |
151
+ | `libs-ui-icon-search` | Tìm kiếm |
152
+ | `libs-ui-icon-edit-line` | Chỉnh sửa (đường viền) |
153
+ | `libs-ui-icon-edit-solid` | Chỉnh sửa (solid) |
154
+ | `libs-ui-icon-remove` | Xóa |
155
+ | `libs-ui-icon-copy` | Sao chép |
156
+ | `libs-ui-icon-refresh` | Làm mới |
157
+ | `libs-ui-icon-reload` | Tải lại |
158
+
159
+ ### Điều hướng & Mũi tên
160
+
161
+ | Class | Mô tả |
162
+ |---|---|
163
+ | `libs-ui-icon-arrow-right` | Mũi tên phải |
164
+ | `libs-ui-icon-chevron-right` | Chevron phải |
165
+ | `libs-ui-icon-chevron-right-circle` | Chevron phải trong vòng tròn |
166
+ | `libs-ui-icon-chevron-right-double` | Chevron phải đôi |
167
+ | `libs-ui-icon-move-right` | Di chuyển phải |
168
+ | `libs-ui-icon-login` | Đăng nhập (đường viền) |
169
+ | `libs-ui-icon-login-solid` | Đăng nhập (solid) |
170
+ | `libs-ui-icon-logout-outline` | Đăng xuất (đường viền) |
171
+ | `libs-ui-icon-logout-solid` | Đăng xuất (solid) |
172
+
173
+ ### Trạng thái & Thông báo
174
+
175
+ | Class | Mô tả |
176
+ |---|---|
177
+ | `libs-ui-icon-check-circle-outline` | Thành công (đường viền) |
178
+ | `libs-ui-icon-check-circle-solid` | Thành công (solid) |
179
+ | `libs-ui-icon-check-double` | Xác nhận kép |
180
+ | `libs-ui-icon-close-circle-outline` | Lỗi / Hủy (đường viền) |
181
+ | `libs-ui-icon-close-circle-solid` | Lỗi / Hủy (solid) |
182
+ | `libs-ui-icon-alert-triangle-outline` | Cảnh báo (đường viền) |
183
+ | `libs-ui-icon-alert-triangle-solid` | Cảnh báo (solid) |
184
+ | `libs-ui-icon-tooltip-outline` | Thông tin (đường viền) |
185
+ | `libs-ui-icon-tooltip-solid` | Thông tin (solid) |
186
+ | `libs-ui-icon-banned` | Bị chặn / Cấm |
187
+
188
+ ### File & Tải lên/xuống
189
+
190
+ | Class | Mô tả |
191
+ |---|---|
192
+ | `libs-ui-icon-file` | File |
193
+ | `libs-ui-icon-file-upload` | Tải file lên |
194
+ | `libs-ui-icon-upload-outline` | Tải lên (đường viền) |
195
+ | `libs-ui-icon-upload-solid` | Tải lên (solid) |
196
+ | `libs-ui-icon-download-outline` | Tải xuống (đường viền) |
197
+ | `libs-ui-icon-download-solid` | Tải xuống (solid) |
198
+ | `libs-ui-icon-attachment` | Tệp đính kèm |
199
+ | `libs-ui-icon-link` | Liên kết |
200
+ | `libs-ui-icon-link-broken` | Liên kết bị gãy |
201
+
202
+ ### Hiển thị & Mắt
203
+
204
+ | Class | Mô tả |
205
+ |---|---|
206
+ | `libs-ui-icon-eye-outline` | Xem (đường viền) |
207
+ | `libs-ui-icon-eye-solid` | Xem (solid) |
208
+ | `libs-ui-icon-eye-slash-outline` | Ẩn (đường viền) |
209
+ | `libs-ui-icon-eye-slash-solid` | Ẩn (solid) |
210
+ | `libs-ui-icon-fullscreen-open` | Mở toàn màn hình |
211
+ | `libs-ui-icon-fullscreen-exit` | Thoát toàn màn hình |
212
+ | `libs-ui-icon-zoom-in` | Phóng to |
213
+ | `libs-ui-icon-zoom-out` | Thu nhỏ |
214
+
215
+ ### Trình soạn thảo (Editor)
216
+
217
+ | Class | Mô tả |
218
+ |---|---|
219
+ | `libs-ui-icon-editor-bold` | Chữ đậm |
220
+ | `libs-ui-icon-editor-italic` | Chữ nghiêng |
221
+ | `libs-ui-icon-editor-underlined` | Gạch chân |
222
+ | `libs-ui-icon-editor-strike-through` | Gạch ngang |
223
+ | `libs-ui-icon-editor-color-text` | Màu chữ |
224
+ | `libs-ui-icon-editor-color-background` | Màu nền chữ |
225
+ | `libs-ui-icon-align-left` | Căn trái |
226
+ | `libs-ui-icon-align-center` | Căn giữa |
227
+ | `libs-ui-icon-align-right` | Căn phải |
228
+ | `libs-ui-icon-align-justify` | Căn đều |
229
+ | `libs-ui-icon-indent-decrease` | Giảm thụt lề |
230
+ | `libs-ui-icon-indent-increase` | Tăng thụt lề |
231
+ | `libs-ui-icon-list-bulleted` | Danh sách chấm |
232
+ | `libs-ui-icon-list-numbered` | Danh sách số |
233
+ | `libs-ui-icon-quote` | Trích dẫn |
234
+ | `libs-ui-icon-code-snippet` | Đoạn mã |
235
+ | `libs-ui-icon-undo` | Hoàn tác |
236
+ | `libs-ui-icon-redo` | Làm lại |
237
+ | `libs-ui-icon-wrap` | Xuống dòng |
238
+ | `libs-ui-icon-unwrap` | Bỏ xuống dòng |
239
+
240
+ ### Bảng & Ô (Table/Cell)
241
+
242
+ | Class | Mô tả |
243
+ |---|---|
244
+ | `libs-ui-icon-table` | Bảng |
245
+ | `libs-ui-icon-row` | Hàng |
246
+ | `libs-ui-icon-merge-cell` | Gộp ô |
247
+ | `libs-ui-icon-split-cell` | Tách ô |
248
+ | `libs-ui-icon-merge-column` | Gộp cột |
249
+
250
+ ### Form Controls
251
+
252
+ | Class | Mô tả |
253
+ |---|---|
254
+ | `libs-ui-icon-checkbox-selected` | Checkbox đã chọn |
255
+ | `libs-ui-icon-checkbox-unselected` | Checkbox chưa chọn |
256
+ | `libs-ui-icon-checkbox-indeterminate` | Checkbox trung gian |
257
+ | `libs-ui-icon-radio-selected` | Radio đã chọn |
258
+ | `libs-ui-icon-radio-unselected` | Radio chưa chọn |
259
+
260
+ ### Media & Âm thanh
261
+
262
+ | Class | Mô tả |
263
+ |---|---|
264
+ | `libs-ui-icon-play-solid` | Phát |
265
+ | `libs-ui-icon-pause-solid` | Tạm dừng |
266
+ | `libs-ui-icon-stop-solid` | Dừng |
267
+ | `libs-ui-icon-speaker-on-outline` | Loa bật (đường viền) |
268
+ | `libs-ui-icon-speaker-on-solid` | Loa bật (solid) |
269
+ | `libs-ui-icon-speaker-off-outline` | Loa tắt (đường viền) |
270
+ | `libs-ui-icon-speaker-off-solid` | Loa tắt (solid) |
271
+ | `libs-ui-icon-video-outline` | Video |
272
+ | `libs-ui-icon-image-solid` | Hình ảnh |
273
+ | `libs-ui-icon-face-smile` | Biểu cảm / Emoji |
274
+
275
+ ### Chỉnh sửa ảnh (Image Editor)
276
+
277
+ | Class | Mô tả |
278
+ |---|---|
279
+ | `libs-ui-icon-customize-image-outline` | Tùy chỉnh ảnh |
280
+ | `libs-ui-icon-rotate-image-outline` | Xoay ảnh |
281
+ | `libs-ui-icon-flip-horizontal` | Lật ngang |
282
+ | `libs-ui-icon-flip-vertical` | Lật dọc |
283
+ | `libs-ui-icon-scale` | Tỷ lệ |
284
+ | `libs-ui-icon-scale-horizon` | Tỷ lệ ngang |
285
+ | `libs-ui-icon-scale-vertical` | Tỷ lệ dọc |
286
+
287
+ ### Tỷ lệ ảnh (Ratio)
288
+
289
+ | Class | Mô tả |
290
+ |---|---|
291
+ | `libs-ui-icon-ratio-1-1` | Tỷ lệ 1:1 |
292
+ | `libs-ui-icon-ratio-16-9` | Tỷ lệ 16:9 |
293
+ | `libs-ui-icon-ratio-9-16` | Tỷ lệ 9:16 |
294
+ | `libs-ui-icon-ratio-4-3` | Tỷ lệ 4:3 |
295
+ | `libs-ui-icon-ratio-3-4` | Tỷ lệ 3:4 |
296
+ | `libs-ui-icon-ratio-3-2` | Tỷ lệ 3:2 |
297
+ | `libs-ui-icon-ratio-2-3` | Tỷ lệ 2:3 |
298
+
299
+ ### Khác
300
+
301
+ | Class | Mô tả |
302
+ |---|---|
303
+ | `libs-ui-icon-calendar` | Lịch |
304
+ | `libs-ui-icon-clock` | Đồng hồ |
305
+ | `libs-ui-icon-lock` | Khóa |
306
+ | `libs-ui-icon-asterisk` | Dấu hoa thị |
307
+ | `libs-ui-icon-more-vertical` | Thêm tùy chọn (dọc) |
308
+ | `libs-ui-icon-arrange` | Sắp xếp |
309
+ | `libs-ui-icon-calculation` | Tính toán |
310
+ | `libs-ui-icon-divide` | Chia |
311
+ | `libs-ui-icon-minus` | Trừ / Thu nhỏ |
312
+ | `libs-ui-icon-pin-outline` | Ghim (đường viền) |
313
+ | `libs-ui-icon-pin-solid` | Ghim (solid) |
314
+ | `libs-ui-icon-send-solid` | Gửi |
315
+ | `libs-ui-icon-new-conversation` | Cuộc trò chuyện mới |
316
+ | `libs-ui-icon-task-list` | Danh sách nhiệm vụ |
317
+
318
+ ## Cách tùy chỉnh kích thước
319
+
320
+ Icon font sử dụng `font-size` để kiểm soát kích thước. Có thể dùng Tailwind hoặc class `before:text-*` để override:
321
+
322
+ ```html
323
+ <!-- Dùng Tailwind text-size (thay đổi toàn bộ element) -->
324
+ <i class="libs-ui-icon-search text-[16px]"></i>
325
+ <i class="libs-ui-icon-search text-[20px]"></i>
326
+ <i class="libs-ui-icon-search text-[24px]"></i>
327
+
328
+ <!-- Dùng before:text-* (chỉ thay đổi pseudo-element ::before) -->
329
+ <span class="libs-ui-icon-eye-outline before:text-[18px]"></span>
330
+ <span class="libs-ui-icon-file before:text-[18px] text-red-500"></span>
331
+ ```
332
+
333
+ ## Cách tùy chỉnh màu sắc
334
+
335
+ ```html
336
+ <!-- Màu qua Tailwind -->
337
+ <i class="libs-ui-icon-check-circle-solid text-green-500"></i>
338
+ <i class="libs-ui-icon-alert-triangle-solid text-yellow-500"></i>
339
+ <i class="libs-ui-icon-close-circle-solid text-red-500"></i>
340
+ <i class="libs-ui-icon-tooltip-solid text-blue-500"></i>
341
+
342
+ <!-- Màu qua CSS variable (theo design token libs-ui) -->
343
+ <i class="libs-ui-icon-edit-line" style="color: var(--libs-ui-color-active)"></i>
344
+
345
+ <!-- Kết hợp với hover -->
346
+ <button class="group flex items-center gap-1">
347
+ <i class="libs-ui-icon-edit-line text-[16px] text-gray-500 group-hover:text-blue-500 transition-colors"></i>
348
+ <span>Chỉnh sửa</span>
349
+ </button>
350
+ ```
351
+
352
+ ## Lưu ý quan trọng
353
+
354
+ ⚠️ **Chỉ import CSS một lần**: File `@libs-ui/icon-font/assets/style.css` chỉ cần import trong `styles.scss` toàn cục. Không import lại trong từng component.
355
+
356
+ ⚠️ **Không phải Angular Component**: Lib này không export Angular component hay directive — chỉ cung cấp CSS class. Không cần thêm vào `imports[]` của component.
357
+
358
+ ⚠️ **Kích thước mặc định**: Icon kế thừa `font-size` từ phần tử cha. Nên chỉ định rõ kích thước để tránh phụ thuộc vào cascade.
359
+
360
+ ⚠️ **Icon `libs-ui-icon-arrange`**: Icon này có màu `#9ca2ad` được hardcode trong CSS. Dùng thêm class màu để override nếu cần màu khác.
361
+
362
+ ⚠️ **Tương thích component**: Khi truyền icon cho các component libs-ui (Button, Label...) qua prop `classIconLeft`/`classIconRight`, truyền tên class đầy đủ kèm Tailwind modifier nếu cần:
363
+
364
+ ```html
365
+ <libs_ui-components-buttons-button
366
+ [classIconLeft]="'libs-ui-icon-add before:text-[16px]'"
367
+ />
368
+ ```
369
+
370
+ ## Demo
371
+
372
+ ```bash
373
+ npx nx serve core-ui
374
+ ```
375
+
376
+ Xem icon được sử dụng trong các component tại các demo route:
377
+ - `http://localhost:4500/buttons/button` — Button với icon
378
+ - `http://localhost:4500/label` — Label với icon
379
+ - `http://localhost:4500/dropdown` — Dropdown với icon tìm kiếm
380
+ - `http://localhost:4500/preview-file` — Preview file với icon
@@ -1,6 +1,6 @@
1
1
  Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures.
2
2
 
3
- To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/docs/#local-fonts
3
+ To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/docs#install
4
4
 
5
5
  You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects.
6
6