@codady/icax 0.0.5 → 0.0.6
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 +600 -0
- package/dist/icax.cjs.js +412 -24
- package/dist/icax.cjs.min.js +4 -4
- package/dist/icax.esm.js +412 -24
- package/dist/icax.esm.min.js +4 -4
- package/dist/icax.umd.js +412 -24
- package/dist/icax.umd.min.js +4 -4
- package/package.json +10 -7
- package/script-note.js +2 -2
- package/src/icax.js +268 -9
- package/src/icax.ts +289 -13
- package/src/icaxArrowDown.js +3 -0
- package/src/icaxArrowDown.ts +14 -0
- package/src/icaxArrowDownCircle.js +4 -0
- package/src/icaxArrowDownCircle.ts +13 -0
- package/src/icaxArrowDownSquare.js +4 -0
- package/src/icaxArrowDownSquare.ts +14 -0
- package/src/icaxArrowDownSquircle.js +4 -0
- package/src/icaxArrowDownSquircle.ts +14 -0
- package/src/icaxArrowEnd.js +3 -0
- package/src/icaxArrowEnd.ts +12 -0
- package/src/icaxArrowEndCircle.js +4 -0
- package/src/icaxArrowEndCircle.ts +12 -0
- package/src/icaxArrowEndDown.js +3 -0
- package/src/icaxArrowEndDown.ts +13 -0
- package/src/icaxArrowEndSquare.js +4 -0
- package/src/icaxArrowEndSquare.ts +13 -0
- package/src/icaxArrowEndSquircle.js +4 -0
- package/src/icaxArrowEndSquircle.ts +13 -0
- package/src/icaxArrowEndUp.js +3 -0
- package/src/icaxArrowEndUp.ts +13 -0
- package/src/icaxArrowStart.js +3 -0
- package/src/icaxArrowStart.ts +12 -0
- package/src/icaxArrowStartCircle.js +4 -0
- package/src/icaxArrowStartCircle.ts +12 -0
- package/src/icaxArrowStartDown.js +3 -0
- package/src/icaxArrowStartDown.ts +12 -0
- package/src/icaxArrowStartSquare.js +4 -0
- package/src/icaxArrowStartSquare.ts +13 -0
- package/src/icaxArrowStartSquircle.js +4 -0
- package/src/icaxArrowStartSquircle.ts +13 -0
- package/src/icaxArrowStartUp.js +3 -0
- package/src/icaxArrowStartUp.ts +13 -0
- package/src/icaxArrowUp.js +3 -0
- package/src/icaxArrowUp.ts +12 -0
- package/src/icaxArrowUpCircle.js +4 -0
- package/src/icaxArrowUpCircle.ts +12 -0
- package/src/icaxArrowUpSquare.js +4 -0
- package/src/icaxArrowUpSquare.ts +14 -0
- package/src/icaxArrowUpSquircle.js +4 -0
- package/src/icaxArrowUpSquircle.ts +15 -0
- package/src/icaxBubble.js +4 -0
- package/src/icaxBubble.ts +17 -0
- package/src/icaxCheck.js +1 -1
- package/src/icaxCheck.ts +1 -1
- package/src/icaxCheckCircle.js +4 -0
- package/src/icaxCheckCircle.ts +14 -0
- package/src/icaxCheckFlower.js +4 -0
- package/src/icaxCheckFlower.ts +15 -0
- package/src/icaxCheckSquare.js +4 -0
- package/src/icaxCheckSquare.ts +14 -0
- package/src/icaxCircle.js +2 -1
- package/src/icaxCircle.ts +2 -1
- package/src/icaxClose.js +1 -1
- package/src/icaxClose.ts +1 -1
- package/src/icaxCloseCircle.js +4 -0
- package/src/icaxCloseCircle.ts +12 -0
- package/src/icaxCloseSquare.js +4 -0
- package/src/icaxCloseSquare.ts +13 -0
- package/src/icaxCode.js +3 -0
- package/src/icaxCodeH.js +3 -0
- package/src/icaxCodeH.ts +14 -0
- package/src/icaxCodeHCircle.js +4 -0
- package/src/icaxCodeHCircle.ts +15 -0
- package/src/icaxCodeV.js +3 -0
- package/src/icaxCodeV.ts +14 -0
- package/src/icaxCodeVCircle.js +4 -0
- package/src/icaxCodeVCircle.ts +13 -0
- package/src/icaxCollapse.js +3 -0
- package/src/icaxCollapse.ts +12 -0
- package/src/icaxCollapseH.js +3 -0
- package/src/icaxCollapseH.ts +13 -0
- package/src/icaxCollapseV.js +3 -0
- package/src/icaxCollapseV.ts +13 -0
- package/src/icaxCompactDown.js +3 -0
- package/src/icaxCompactDown.ts +16 -0
- package/src/icaxCompactEnd.js +3 -0
- package/src/icaxCompactEnd.ts +12 -0
- package/src/icaxCompactStart.js +3 -0
- package/src/icaxCompactStart.ts +13 -0
- package/src/icaxCompactUp.js +3 -0
- package/src/icaxCompactUp.ts +16 -0
- package/src/icaxCornerDownEnd.js +3 -0
- package/src/icaxCornerDownEnd.ts +13 -0
- package/src/icaxCornerDownStart.js +3 -0
- package/src/icaxCornerDownStart.ts +13 -0
- package/src/icaxCornerEndDown.js +3 -0
- package/src/icaxCornerEndDown.ts +14 -0
- package/src/icaxCornerEndUp.js +3 -0
- package/src/icaxCornerEndUp.ts +14 -0
- package/src/icaxCornerStartDown.js +3 -0
- package/src/icaxCornerStartDown.ts +14 -0
- package/src/icaxCornerStartUp.js +3 -0
- package/src/icaxCornerStartUp.ts +14 -0
- package/src/icaxCornerUpEnd.js +3 -0
- package/src/icaxCornerUpEnd.ts +13 -0
- package/src/icaxCornerUpStart.js +3 -0
- package/src/icaxCornerUpStart.ts +13 -0
- package/src/icaxDivide.js +1 -1
- package/src/icaxDivide.ts +1 -1
- package/src/icaxDown.js +1 -1
- package/src/icaxDown.ts +1 -1
- package/src/icaxDownCircle.js +4 -0
- package/src/icaxDownCircle.ts +15 -0
- package/src/icaxDownSquare.js +4 -0
- package/src/icaxDownSquare.ts +12 -0
- package/src/icaxDownSquircle.js +4 -0
- package/src/icaxDownSquircle.ts +13 -0
- package/src/icaxDownload.js +3 -0
- package/src/icaxDownload.ts +13 -0
- package/src/icaxEnd.js +3 -0
- package/src/icaxEnd.ts +11 -0
- package/src/icaxEndCircle.js +4 -0
- package/src/icaxEndCircle.ts +12 -0
- package/src/icaxEndSquare.js +4 -0
- package/src/icaxEndSquare.ts +13 -0
- package/src/icaxEndSquircle.js +4 -0
- package/src/icaxEndSquircle.ts +13 -0
- package/src/icaxExpand.js +3 -0
- package/src/icaxExpand.ts +13 -0
- package/src/icaxExpandH.js +3 -0
- package/src/icaxExpandH.ts +14 -0
- package/src/icaxExpandV.js +3 -0
- package/src/icaxExpandV.ts +13 -0
- package/src/icaxFlower.js +4 -0
- package/src/icaxFlower.ts +15 -0
- package/src/icaxForvward.js +3 -0
- package/src/icaxForward.js +3 -0
- package/src/icaxForward.ts +16 -0
- package/src/icaxInfo.js +3 -0
- package/src/icaxInfo.ts +13 -0
- package/src/icaxInfoCircle.ts +13 -0
- package/src/icaxIssue.js +3 -0
- package/src/icaxIssue.ts +13 -0
- package/src/icaxIssueCircle.js +4 -0
- package/src/icaxIssueCircle.ts +13 -0
- package/src/icaxLogin.js +3 -0
- package/src/icaxLogin.ts +14 -0
- package/src/icaxLogout.js +3 -0
- package/src/icaxLogout.ts +14 -0
- package/src/icaxLongDown.js +3 -0
- package/src/icaxLongDown.ts +13 -0
- package/src/icaxLongEnd.js +3 -0
- package/src/icaxLongEnd.ts +13 -0
- package/src/icaxLongStart.js +3 -0
- package/src/icaxLongStart.ts +13 -0
- package/src/icaxLongUp.js +3 -0
- package/src/icaxLongUp.ts +13 -0
- package/src/icaxMinus.js +1 -1
- package/src/icaxMinus.ts +1 -1
- package/src/icaxMinusCircle.js +4 -0
- package/src/icaxMinusCircle.ts +12 -0
- package/src/icaxMinusSquare.js +4 -0
- package/src/icaxMinusSquare.ts +12 -0
- package/src/icaxMute.js +4 -0
- package/src/icaxMute.ts +17 -0
- package/src/icaxNext.js +3 -0
- package/src/icaxNext.ts +16 -0
- package/src/icaxPause.js +3 -0
- package/src/icaxPause.ts +16 -0
- package/src/icaxPauseCircle.js +4 -0
- package/src/icaxPauseCircle.ts +14 -0
- package/src/icaxPercent.js +1 -1
- package/src/icaxPercent.ts +1 -1
- package/src/icaxPlay - /345/211/257/346/234/254.js" +3 -0
- package/src/icaxPlay.js +3 -0
- package/src/icaxPlay.ts +14 -0
- package/src/icaxPlayCircle.js +4 -0
- package/src/icaxPlayCircle.ts +14 -0
- package/src/icaxPlus.js +1 -1
- package/src/icaxPlus.ts +1 -1
- package/src/icaxPlusCircle.js +4 -0
- package/src/icaxPlusCircle.ts +12 -0
- package/src/icaxPlusSquare.js +4 -0
- package/src/icaxPlusSquare.ts +13 -0
- package/src/icaxPrev.js +3 -0
- package/src/icaxPrev.ts +16 -0
- package/src/icaxRefresh.js +3 -0
- package/src/icaxRefresh.ts +13 -0
- package/src/icaxRepeat.js +3 -0
- package/src/icaxRepeat.ts +16 -0
- package/src/icaxRewind.js +3 -0
- package/src/icaxRewind.ts +16 -0
- package/src/icaxRotateCcw.js +3 -0
- package/src/icaxRotateCcw.ts +13 -0
- package/src/icaxRotateCw.js +3 -0
- package/src/icaxRotateCw.ts +13 -0
- package/src/icaxSearch.js +4 -0
- package/src/icaxSearch.ts +14 -0
- package/src/icaxSearchCircle.js +4 -0
- package/src/icaxSearchCircle.ts +15 -0
- package/src/icaxSearchSquare.js +4 -0
- package/src/icaxSearchSquare.ts +16 -0
- package/src/icaxShuffle.js +3 -0
- package/src/icaxShuffle.ts +16 -0
- package/src/icaxSquare.js +2 -1
- package/src/icaxSquare.ts +2 -1
- package/src/icaxSquircle.js +4 -0
- package/src/icaxSquircle.ts +13 -0
- package/src/icaxStart.js +3 -0
- package/src/icaxStart.ts +11 -0
- package/src/icaxStartCircle.js +4 -0
- package/src/icaxStartCircle.ts +12 -0
- package/src/icaxStartSqaure.js +4 -0
- package/src/icaxStartSqaure.ts +13 -0
- package/src/icaxStartSquircle.js +4 -0
- package/src/icaxStartSquircle.ts +13 -0
- package/src/icaxStopCircle.js +4 -0
- package/src/icaxStopCircle.ts +14 -0
- package/src/icaxSwapH.js +3 -0
- package/src/icaxSwapH.ts +14 -0
- package/src/icaxSwapV.js +3 -0
- package/src/icaxSwapV.ts +16 -0
- package/src/icaxTriangleDown.js +3 -0
- package/src/icaxTriangleDown.ts +13 -0
- package/src/icaxTriangleDownSquircle.js +4 -0
- package/src/icaxTriangleDownSquircle.ts +14 -0
- package/src/icaxTriangleEnd.js +3 -0
- package/src/icaxTriangleEnd.ts +13 -0
- package/src/icaxTriangleEndSquircle.js +4 -0
- package/src/icaxTriangleEndSquircle.ts +14 -0
- package/src/icaxTriangleStart.js +3 -0
- package/src/icaxTriangleStart.ts +13 -0
- package/src/icaxTriangleStartSquircle.js +4 -0
- package/src/icaxTriangleStartSquircle.ts +14 -0
- package/src/icaxTriangleUp.js +3 -0
- package/src/icaxTriangleUp.ts +13 -0
- package/src/icaxTriangleUpSquircle.js +4 -0
- package/src/icaxTriangleUpSquircle.ts +14 -0
- package/src/icaxTurnDown.js +3 -0
- package/src/icaxTurnDown.ts +13 -0
- package/src/icaxTurnEnd.js +3 -0
- package/src/icaxTurnEnd.ts +13 -0
- package/src/icaxTurnStart.js +3 -0
- package/src/icaxTurnStart.ts +13 -0
- package/src/icaxTurnUp.js +3 -0
- package/src/icaxTurnUp.ts +13 -0
- package/src/icaxUp.js +1 -1
- package/src/icaxUp.ts +1 -1
- package/src/icaxUpCircle.js +5 -0
- package/src/icaxUpCircle.ts +13 -0
- package/src/icaxUpSquare.js +5 -0
- package/src/icaxUpSquare.ts +13 -0
- package/src/icaxUpSquircle.js +5 -0
- package/src/icaxUpSquircle.ts +14 -0
- package/src/icaxUpload.js +3 -0
- package/src/icaxUpload.ts +13 -0
- package/src/icaxVolume.js +4 -0
- package/src/icaxVolume.ts +17 -0
- package/src/icaxVolume1.js +4 -0
- package/src/icaxVolume1.ts +17 -0
- package/src/icaxVolume2.js +4 -0
- package/src/icaxVolume2.ts +17 -0
- package/src/icaxWarn.js +3 -0
- package/src/icaxWarn.ts +13 -0
- package/src/icaxWarnCircle.js +3 -0
- package/src/icaxWarnCircle.ts +13 -0
- package/src/icaxZoomIn.js +4 -0
- package/src/icaxZoomIn.ts +14 -0
- package/src/icaxZoomOut.js +4 -0
- package/src/icaxZoomOut.ts +14 -0
- package/src/icaxinfoCircle.js +4 -0
- package/src/rtlStyle.js +2 -2
- package/src/rtlStyle.ts +2 -2
- package/src/shapeBubble.js +2 -0
- package/src/shapeBubble.ts +5 -0
- package/src/shapeCircle.js +2 -0
- package/src/shapeCircle.ts +2 -0
- package/src/shapeFlower.js +2 -0
- package/src/shapeFlower.ts +5 -0
- package/src/shapeSearch.js +2 -0
- package/src/shapeSearch.ts +3 -0
- package/src/shapeSquare.js +2 -0
- package/src/shapeSquare.ts +2 -0
- package/src/shapeSquircle.js +2 -0
- package/src/shapeSquircle.ts +4 -0
- package/src/shapeVolume.js +2 -0
- package/src/shapeVolume.ts +7 -0
- package/src/wrap.js +5 -4
- package/src/wrap.ts +6 -3
- package/types/icax.d.ts +3 -1
- package/src/icaxClipboard - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxClose - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxCopy - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxDivide - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxLeft - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxLeft.js +0 -3
- package/src/icaxLeft.ts +0 -11
- package/src/icaxMinus - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxPercent - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxPlus - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxRight - /345/211/257/346/234/254.js" +0 -3
- package/src/icaxRight.js +0 -3
- package/src/icaxRight.ts +0 -11
- package/src/icaxSquare - /345/211/257/346/234/254.js" +0 -3
package/README.md
CHANGED
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
# Icax - Lightweight SVG Icon Component System
|
|
2
|
+
|
|
3
|
+
## 🌟 Introduction
|
|
4
|
+
|
|
5
|
+
**Icax** is a lightweight, high-performance SVG icon component system designed for modern web applications. It offers over 100 carefully crafted icons, supports complete style customization, and is specially optimized for RTL (right-to-left) layout support.
|
|
6
|
+
|
|
7
|
+
## ✨ Core Features
|
|
8
|
+
|
|
9
|
+
### 🎯 **Comprehensive Icon Library**
|
|
10
|
+
- **Basic Shapes**: Circle, square, squircle (rounded square), flower, bubble
|
|
11
|
+
- **Directional Indicators**: Arrows in all directions, start/end icons
|
|
12
|
+
- **Interactive Operations**: Check, close, plus/minus, expand/collapse
|
|
13
|
+
- **Media Controls**: Play, pause, volume control, forward/rewind
|
|
14
|
+
- **File Operations**: Upload, download, copy, clipboard
|
|
15
|
+
- **Status Feedback**: Warning, info, issue, search
|
|
16
|
+
- **Special Arrows**: Long arrows, compact arrows, turn arrows, corner arrows
|
|
17
|
+
|
|
18
|
+
### 🎨 **Fully Customizable**
|
|
19
|
+
- **Size**: Any size (default: 1em)
|
|
20
|
+
- **Color**: Supports any color value (default: currentColor)
|
|
21
|
+
- **Stroke**: Adjustable thickness, line cap, line join
|
|
22
|
+
- **CSS Classes**: Add custom CSS classes
|
|
23
|
+
- **RTL Support**: Automatic mirroring for RTL layouts
|
|
24
|
+
|
|
25
|
+
### 🚀 **Zero Dependencies**
|
|
26
|
+
- Pure JavaScript implementation
|
|
27
|
+
- No external dependencies
|
|
28
|
+
- Tiny file size (~20KB gzipped)
|
|
29
|
+
|
|
30
|
+
### 🌐 **Universal Compatibility**
|
|
31
|
+
- Works with any frontend framework (React, Vue, Angular, etc.)
|
|
32
|
+
- Supports CommonJS, ES6 modules, and UMD
|
|
33
|
+
- Compatible with all modern browsers
|
|
34
|
+
|
|
35
|
+
## 📦 Installation
|
|
36
|
+
|
|
37
|
+
### npm/yarn/pnpm
|
|
38
|
+
```bash
|
|
39
|
+
npm install @codady/icax
|
|
40
|
+
# or
|
|
41
|
+
yarn add @codady/icax
|
|
42
|
+
# or
|
|
43
|
+
pnpm add @codady/icax
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### CDN
|
|
47
|
+
```html
|
|
48
|
+
<script src="https://unpkg.com/@codady/icax"></script>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 🚀 Quick Start
|
|
52
|
+
|
|
53
|
+
### Basic Usage
|
|
54
|
+
```javascript
|
|
55
|
+
// ES6 Module
|
|
56
|
+
import { icax } from '@codady/icax';
|
|
57
|
+
|
|
58
|
+
// Get SVG string
|
|
59
|
+
const checkIcon = icax.check();
|
|
60
|
+
const arrowIcon = icax.arrowStart({ size: '24px', color: '#007bff' });
|
|
61
|
+
|
|
62
|
+
// Insert into HTML
|
|
63
|
+
document.getElementById('icon-container').innerHTML = checkIcon;
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### With Custom Options
|
|
67
|
+
```javascript
|
|
68
|
+
const customIcon = icax.checkCircle({
|
|
69
|
+
size: '2em',
|
|
70
|
+
color: 'green',
|
|
71
|
+
thickness: 3,
|
|
72
|
+
linecap: 'square',
|
|
73
|
+
linejoin: 'miter',
|
|
74
|
+
classes: 'my-icon custom-class'
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 📖 API Reference
|
|
79
|
+
|
|
80
|
+
### Icon Functions
|
|
81
|
+
All icons follow the same pattern:
|
|
82
|
+
```javascript
|
|
83
|
+
icax.iconName(options)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Options Object
|
|
87
|
+
| Parameter | Type | Default | Description |
|
|
88
|
+
|-----------|------|---------|-------------|
|
|
89
|
+
| `size` | string | '1em' | Icon dimensions (width and height) |
|
|
90
|
+
| `color` | string | 'currentColor' | Stroke color |
|
|
91
|
+
| `thickness` | number | 2 | Stroke width in pixels |
|
|
92
|
+
| `linecap` | string | 'round' | Stroke line cap (butt, round, square) |
|
|
93
|
+
| `linejoin` | string | 'round' | Stroke line join (miter, round, bevel) |
|
|
94
|
+
| `classes` | string/array | '' | Additional CSS classes |
|
|
95
|
+
|
|
96
|
+
### Available Icons (Categories)
|
|
97
|
+
|
|
98
|
+
#### Basic Shapes
|
|
99
|
+
```javascript
|
|
100
|
+
icax.square() // Square icon
|
|
101
|
+
icax.circle() // Circle icon
|
|
102
|
+
icax.squircle() // Rounded square
|
|
103
|
+
icax.flower() // Flower shape
|
|
104
|
+
icax.bubble() // Speech bubble
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### Directional Arrows
|
|
108
|
+
```javascript
|
|
109
|
+
// Simple arrows
|
|
110
|
+
icax.start() // Left arrow
|
|
111
|
+
icax.end() // Right arrow
|
|
112
|
+
icax.up() // Up arrow
|
|
113
|
+
icax.down() // Down arrow
|
|
114
|
+
|
|
115
|
+
// With shapes
|
|
116
|
+
icax.startCircle() // Left arrow in circle
|
|
117
|
+
icax.endSquare() // Right arrow in square
|
|
118
|
+
icax.upSquircle() // Up arrow in squircle
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Interactive Icons
|
|
122
|
+
```javascript
|
|
123
|
+
icax.check() // Check mark
|
|
124
|
+
icax.close() // Close/X icon
|
|
125
|
+
icax.plus() // Plus sign
|
|
126
|
+
icax.minus() // Minus sign
|
|
127
|
+
icax.copy() // Copy icon
|
|
128
|
+
icax.clipboard() // Clipboard
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
#### Media Controls
|
|
132
|
+
```javascript
|
|
133
|
+
icax.play() // Play button
|
|
134
|
+
icax.pause() // Pause button
|
|
135
|
+
icax.volume() // Volume icon
|
|
136
|
+
icax.volume1() // Volume 1 bar
|
|
137
|
+
icax.volume2() // Volume 2 bars
|
|
138
|
+
icax.mute() // Mute icon
|
|
139
|
+
icax.prev() // Previous track
|
|
140
|
+
icax.next() // Next track
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Status & Feedback
|
|
144
|
+
```javascript
|
|
145
|
+
icax.info() // Info icon
|
|
146
|
+
icax.warn() // Warning icon
|
|
147
|
+
icax.issue() // Issue/help icon
|
|
148
|
+
icax.search() // Search icon
|
|
149
|
+
icax.zoomIn() // Zoom in
|
|
150
|
+
icax.zoomOut() // Zoom out
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### File Operations
|
|
154
|
+
```javascript
|
|
155
|
+
icax.upload() // Upload icon
|
|
156
|
+
icax.download() // Download icon
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## 🎨 Styling Examples
|
|
160
|
+
|
|
161
|
+
### Using CSS Variables
|
|
162
|
+
```css
|
|
163
|
+
:root {
|
|
164
|
+
--icon-color: #333;
|
|
165
|
+
--icon-size: 24px;
|
|
166
|
+
--icon-thickness: 2;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.icon {
|
|
170
|
+
color: var(--icon-color);
|
|
171
|
+
font-size: var(--icon-size);
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
```javascript
|
|
176
|
+
const icon = icax.check({
|
|
177
|
+
color: 'var(--icon-color)',
|
|
178
|
+
size: 'var(--icon-size)',
|
|
179
|
+
thickness: 'var(--icon-thickness)'
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Dynamic Theming
|
|
184
|
+
```javascript
|
|
185
|
+
function getIcon(theme) {
|
|
186
|
+
return icax.checkCircle({
|
|
187
|
+
color: theme === 'dark' ? '#ffffff' : '#000000',
|
|
188
|
+
size: theme === 'compact' ? '16px' : '24px'
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 🌍 RTL Support
|
|
194
|
+
|
|
195
|
+
Icax automatically handles RTL layouts:
|
|
196
|
+
```html
|
|
197
|
+
<html dir="rtl">
|
|
198
|
+
<!-- Icons will automatically mirror when needed -->
|
|
199
|
+
</html>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Manual RTL control:
|
|
203
|
+
```javascript
|
|
204
|
+
// Some icons have built-in RTL awareness
|
|
205
|
+
icax.start() // Will mirror in RTL mode
|
|
206
|
+
icax.end() // Will mirror in RTL mode
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 🔧 Advanced Usage
|
|
210
|
+
|
|
211
|
+
### React Component Example
|
|
212
|
+
```jsx
|
|
213
|
+
import React from 'react';
|
|
214
|
+
import { icax } from '@codady/icax';
|
|
215
|
+
|
|
216
|
+
const Icon = ({ name, ...props }) => {
|
|
217
|
+
const iconHtml = icax[name](props);
|
|
218
|
+
return <div dangerouslySetInnerHTML={{ __html: iconHtml }} />;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// Usage
|
|
222
|
+
<Icon name="check" size="32px" color="green" />
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Vue Component Example
|
|
226
|
+
```vue
|
|
227
|
+
<template>
|
|
228
|
+
<div v-html="iconSvg"></div>
|
|
229
|
+
</template>
|
|
230
|
+
|
|
231
|
+
<script>
|
|
232
|
+
import { icax } from '@codady/icax';
|
|
233
|
+
|
|
234
|
+
export default {
|
|
235
|
+
props: {
|
|
236
|
+
name: String,
|
|
237
|
+
size: { type: String, default: '1em' },
|
|
238
|
+
color: { type: String, default: 'currentColor' }
|
|
239
|
+
},
|
|
240
|
+
computed: {
|
|
241
|
+
iconSvg() {
|
|
242
|
+
return icax[this.name]({
|
|
243
|
+
size: this.size,
|
|
244
|
+
color: this.color
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
</script>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Batch Processing
|
|
253
|
+
```javascript
|
|
254
|
+
// Generate multiple icons with same style
|
|
255
|
+
const iconConfig = {
|
|
256
|
+
size: '20px',
|
|
257
|
+
color: '#666',
|
|
258
|
+
thickness: 1.5
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
const icons = {
|
|
262
|
+
check: icax.check(iconConfig),
|
|
263
|
+
close: icax.close(iconConfig),
|
|
264
|
+
plus: icax.plus(iconConfig)
|
|
265
|
+
};
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## 📊 Performance
|
|
269
|
+
|
|
270
|
+
- **File Size**: ~20KB (gzipped)
|
|
271
|
+
- **Render Speed**: Instant SVG generation
|
|
272
|
+
- **Memory Usage**: Minimal, no runtime overhead
|
|
273
|
+
- **Tree Shaking**: Fully supported
|
|
274
|
+
|
|
275
|
+
## 📄 License
|
|
276
|
+
|
|
277
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
278
|
+
|
|
279
|
+
This software supports the MIT License, allowing free learning and commercial use, but please retain the terms 'Icax' and 'ICAX' within the software.
|
|
280
|
+
|
|
281
|
+
## 🔗 Links
|
|
282
|
+
|
|
283
|
+
- **Official Website**: [https://icax.axui.cn](https://icax.axui.cn)
|
|
284
|
+
- **GitHub Repository**: [https://github.com/codady/icax](https://github.com/codady/icax)
|
|
285
|
+
- **Gitee Repository**: [https://gitee.com/codady/icax](https://gitee.com/codady/icax)
|
|
286
|
+
- **NPM Package**: [https://www.npmjs.com/package/@codady/icax](https://www.npmjs.com/package/@codady/icax)
|
|
287
|
+
- **Issue Tracker**:
|
|
288
|
+
- GitHub: [https://github.com/codady/icax/issues](https://github.com/codady/icax/issues)
|
|
289
|
+
- Gitee: [https://gitee.com/codady/icax/issues](https://gitee.com/codady/icax/issues)
|
|
290
|
+
- **Support**: QQ Group: 952502085
|
|
291
|
+
|
|
292
|
+
## 🙏 Acknowledgments
|
|
293
|
+
|
|
294
|
+
Thanks to all contributors and the open-source community for making this project possible.
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
**Icax** - Making beautiful, customizable SVG icons simple and accessible for everyone.
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
# Icax - 轻量级SVG图标组件系统
|
|
303
|
+
|
|
304
|
+
## 🌟 简介
|
|
305
|
+
|
|
306
|
+
**Icax** 是一个轻量级、高性能的SVG图标组件系统,专为现代Web应用设计。它提供了100多个精心设计的图标,支持完全自定义样式,并特别优化了RTL(从右到左)布局支持。
|
|
307
|
+
|
|
308
|
+
## ✨ 核心特性
|
|
309
|
+
|
|
310
|
+
### 🎯 **全面的图标库**
|
|
311
|
+
- **基础形状**:圆形、方形、圆角方形(squircle)、花朵、气泡等
|
|
312
|
+
- **方向指示**:上下左右箭头、开始结束图标
|
|
313
|
+
- **交互操作**:勾选、关闭、加减、展开折叠
|
|
314
|
+
- **多媒体控制**:播放、暂停、音量控制、快进快退
|
|
315
|
+
- **文件操作**:上传、下载、复制、剪贴板
|
|
316
|
+
- **状态反馈**:警告、信息、问题、搜索
|
|
317
|
+
- **特殊箭头**:长箭头、紧凑箭头、转向箭头、角落箭头
|
|
318
|
+
|
|
319
|
+
### 🎨 **完全可定制**
|
|
320
|
+
- **尺寸**:任意大小(默认1em)
|
|
321
|
+
- **颜色**:支持任何颜色值(默认currentColor)
|
|
322
|
+
- **描边**:可调粗细、端点样式、连接样式
|
|
323
|
+
- **CSS类**:添加自定义CSS类
|
|
324
|
+
- **RTL支持**:自动镜像支持RTL布局
|
|
325
|
+
|
|
326
|
+
### 🚀 **零依赖**
|
|
327
|
+
- 纯JavaScript实现
|
|
328
|
+
- 无外部依赖
|
|
329
|
+
- 极小的文件体积(约20KB gzip后)
|
|
330
|
+
|
|
331
|
+
### 🌐 **通用兼容性**
|
|
332
|
+
- 适用于任何前端框架(React、Vue、Angular等)
|
|
333
|
+
- 支持CommonJS、ES6模块和UMD
|
|
334
|
+
- 兼容所有现代浏览器
|
|
335
|
+
|
|
336
|
+
## 📦 安装
|
|
337
|
+
|
|
338
|
+
### npm/yarn/pnpm
|
|
339
|
+
```bash
|
|
340
|
+
npm install @codady/icax
|
|
341
|
+
# 或
|
|
342
|
+
yarn add @codady/icax
|
|
343
|
+
# 或
|
|
344
|
+
pnpm add @codady/icax
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### CDN
|
|
348
|
+
```html
|
|
349
|
+
<script src="https://unpkg.com/@codady/icax"></script>
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
## 🚀 快速开始
|
|
353
|
+
|
|
354
|
+
### 基础用法
|
|
355
|
+
```javascript
|
|
356
|
+
// ES6模块
|
|
357
|
+
import { icax } from '@codady/icax';
|
|
358
|
+
|
|
359
|
+
// 获取SVG字符串
|
|
360
|
+
const checkIcon = icax.check();
|
|
361
|
+
const arrowIcon = icax.arrowStart({ size: '24px', color: '#007bff' });
|
|
362
|
+
|
|
363
|
+
// 插入到HTML
|
|
364
|
+
document.getElementById('icon-container').innerHTML = checkIcon;
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 自定义选项
|
|
368
|
+
```javascript
|
|
369
|
+
const customIcon = icax.checkCircle({
|
|
370
|
+
size: '2em',
|
|
371
|
+
color: 'green',
|
|
372
|
+
thickness: 3,
|
|
373
|
+
linecap: 'square',
|
|
374
|
+
linejoin: 'miter',
|
|
375
|
+
classes: 'my-icon custom-class'
|
|
376
|
+
});
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## 📖 API参考
|
|
380
|
+
|
|
381
|
+
### 图标函数
|
|
382
|
+
所有图标都遵循相同的模式:
|
|
383
|
+
```javascript
|
|
384
|
+
icax.iconName(options)
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### 选项对象
|
|
388
|
+
| 参数 | 类型 | 默认值 | 描述 |
|
|
389
|
+
|------|------|--------|------|
|
|
390
|
+
| `size` | string | '1em' | 图标尺寸(宽高相同) |
|
|
391
|
+
| `color` | string | 'currentColor' | 描边颜色 |
|
|
392
|
+
| `thickness` | number | 2 | 描边宽度(像素) |
|
|
393
|
+
| `linecap` | string | 'round' | 描边端点样式 |
|
|
394
|
+
| `linejoin` | string | 'round' | 描边连接样式 |
|
|
395
|
+
| `classes` | string/array | '' | 额外的CSS类 |
|
|
396
|
+
|
|
397
|
+
### 可用图标(分类)
|
|
398
|
+
|
|
399
|
+
#### 基础形状
|
|
400
|
+
```javascript
|
|
401
|
+
icax.square() // 正方形图标
|
|
402
|
+
icax.circle() // 圆形图标
|
|
403
|
+
icax.squircle() // 圆角方形
|
|
404
|
+
icax.flower() // 花朵形状
|
|
405
|
+
icax.bubble() // 对话气泡
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
#### 方向箭头
|
|
409
|
+
```javascript
|
|
410
|
+
// 简单箭头
|
|
411
|
+
icax.start() // 左箭头
|
|
412
|
+
icax.end() // 右箭头
|
|
413
|
+
icax.up() // 上箭头
|
|
414
|
+
icax.down() // 下箭头
|
|
415
|
+
|
|
416
|
+
// 带形状的箭头
|
|
417
|
+
icax.startCircle() // 圆形中的左箭头
|
|
418
|
+
icax.endSquare() // 方形中的右箭头
|
|
419
|
+
icax.upSquircle() // 圆角方形中的上箭头
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
#### 交互图标
|
|
423
|
+
```javascript
|
|
424
|
+
icax.check() // 勾选标记
|
|
425
|
+
icax.close() // 关闭/X图标
|
|
426
|
+
icax.plus() // 加号
|
|
427
|
+
icax.minus() // 减号
|
|
428
|
+
icax.copy() // 复制图标
|
|
429
|
+
icax.clipboard() // 剪贴板
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
#### 媒体控制
|
|
433
|
+
```javascript
|
|
434
|
+
icax.play() // 播放按钮
|
|
435
|
+
icax.pause() // 暂停按钮
|
|
436
|
+
icax.volume() // 音量图标
|
|
437
|
+
icax.volume1() // 音量1格
|
|
438
|
+
icax.volume2() // 音量2格
|
|
439
|
+
icax.mute() // 静音图标
|
|
440
|
+
icax.prev() // 上一曲
|
|
441
|
+
icax.next() // 下一曲
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
#### 状态反馈
|
|
445
|
+
```javascript
|
|
446
|
+
icax.info() // 信息图标
|
|
447
|
+
icax.warn() // 警告图标
|
|
448
|
+
icax.issue() // 问题/帮助图标
|
|
449
|
+
icax.search() // 搜索图标
|
|
450
|
+
icax.zoomIn() // 放大
|
|
451
|
+
icax.zoomOut() // 缩小
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
#### 文件操作
|
|
455
|
+
```javascript
|
|
456
|
+
icax.upload() // 上传图标
|
|
457
|
+
icax.download() // 下载图标
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## 🎨 样式示例
|
|
461
|
+
|
|
462
|
+
### 使用CSS变量
|
|
463
|
+
```css
|
|
464
|
+
:root {
|
|
465
|
+
--icon-color: #333;
|
|
466
|
+
--icon-size: 24px;
|
|
467
|
+
--icon-thickness: 2;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
.icon {
|
|
471
|
+
color: var(--icon-color);
|
|
472
|
+
font-size: var(--icon-size);
|
|
473
|
+
}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
```javascript
|
|
477
|
+
const icon = icax.check({
|
|
478
|
+
color: 'var(--icon-color)',
|
|
479
|
+
size: 'var(--icon-size)',
|
|
480
|
+
thickness: 'var(--icon-thickness)'
|
|
481
|
+
});
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### 动态主题
|
|
485
|
+
```javascript
|
|
486
|
+
function getIcon(theme) {
|
|
487
|
+
return icax.checkCircle({
|
|
488
|
+
color: theme === 'dark' ? '#ffffff' : '#000000',
|
|
489
|
+
size: theme === 'compact' ? '16px' : '24px'
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
## 🌍 RTL支持
|
|
495
|
+
|
|
496
|
+
Icax自动处理RTL布局:
|
|
497
|
+
```html
|
|
498
|
+
<html dir="rtl">
|
|
499
|
+
<!-- 图标会在需要时自动镜像 -->
|
|
500
|
+
</html>
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
手动RTL控制:
|
|
504
|
+
```javascript
|
|
505
|
+
// 一些图标内置了RTL感知
|
|
506
|
+
icax.start() // 在RTL模式下会镜像
|
|
507
|
+
icax.end() // 在RTL模式下会镜像
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
## 🔧 高级用法
|
|
511
|
+
|
|
512
|
+
### React组件示例
|
|
513
|
+
```jsx
|
|
514
|
+
import React from 'react';
|
|
515
|
+
import { icax } from '@codady/icax';
|
|
516
|
+
|
|
517
|
+
const Icon = ({ name, ...props }) => {
|
|
518
|
+
const iconHtml = icax[name](props);
|
|
519
|
+
return <div dangerouslySetInnerHTML={{ __html: iconHtml }} />;
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
// 使用
|
|
523
|
+
<Icon name="check" size="32px" color="green" />
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
### Vue组件示例
|
|
527
|
+
```vue
|
|
528
|
+
<template>
|
|
529
|
+
<div v-html="iconSvg"></div>
|
|
530
|
+
</template>
|
|
531
|
+
|
|
532
|
+
<script>
|
|
533
|
+
import { icax } from '@codady/icax';
|
|
534
|
+
|
|
535
|
+
export default {
|
|
536
|
+
props: {
|
|
537
|
+
name: String,
|
|
538
|
+
size: { type: String, default: '1em' },
|
|
539
|
+
color: { type: String, default: 'currentColor' }
|
|
540
|
+
},
|
|
541
|
+
computed: {
|
|
542
|
+
iconSvg() {
|
|
543
|
+
return icax[this.name]({
|
|
544
|
+
size: this.size,
|
|
545
|
+
color: this.color
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
</script>
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### 批量处理
|
|
554
|
+
```javascript
|
|
555
|
+
// 用相同样式生成多个图标
|
|
556
|
+
const iconConfig = {
|
|
557
|
+
size: '20px',
|
|
558
|
+
color: '#666',
|
|
559
|
+
thickness: 1.5
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
const icons = {
|
|
563
|
+
check: icax.check(iconConfig),
|
|
564
|
+
close: icax.close(iconConfig),
|
|
565
|
+
plus: icax.plus(iconConfig)
|
|
566
|
+
};
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
## 📊 性能
|
|
570
|
+
|
|
571
|
+
- **文件大小**:约20KB(gzip后)
|
|
572
|
+
- **渲染速度**:即时SVG生成
|
|
573
|
+
- **内存使用**:最小化,无运行时开销
|
|
574
|
+
- **Tree Shaking**:完全支持
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
## 📄 许可证
|
|
578
|
+
|
|
579
|
+
MIT许可证 - 详见[LICENSE](LICENSE)。
|
|
580
|
+
|
|
581
|
+
本软件支持MIT许可证,允许免费学习和商业使用,但请在软件中保留'Icax'和'ICAX'字样。
|
|
582
|
+
|
|
583
|
+
## 🔗 链接
|
|
584
|
+
|
|
585
|
+
- **官方网站**:[https://icax.axui.cn](https://icax.axui.cn)
|
|
586
|
+
- **GitHub仓库**:[https://github.com/codady/icax](https://github.com/codady/icax)
|
|
587
|
+
- **Gitee仓库**:[https://gitee.com/codady/icax](https://gitee.com/codady/icax)
|
|
588
|
+
- **NPM包**:[https://www.npmjs.com/package/@codady/icax](https://www.npmjs.com/package/@codady/icax)
|
|
589
|
+
- **问题跟踪**:
|
|
590
|
+
- GitHub:[https://github.com/codady/icax/issues](https://github.com/codady/icax/issues)
|
|
591
|
+
- Gitee:[https://gitee.com/codady/icax/issues](https://gitee.com/codady/icax/issues)
|
|
592
|
+
- **Support**: QQ 群: 952502085
|
|
593
|
+
|
|
594
|
+
## 🙏 致谢
|
|
595
|
+
|
|
596
|
+
感谢所有贡献者和开源社区,使这个项目成为可能。
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
**Icax** - 让美观、可定制的SVG图标对每个人都变得简单易用。
|