@codemonster-ru/vueiconify 0.7.0 → 1.0.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/LICENSE.md CHANGED
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,275 @@
1
+ # VueIconify
2
+
3
+ [![npm version](https://img.shields.io/npm/v/%40codemonster-ru%2Fvueiconify?logo=npm)](https://www.npmjs.com/package/@codemonster-ru/vueiconify)
4
+ [![npm downloads/week](https://img.shields.io/npm/dw/%40codemonster-ru%2Fvueiconify?logo=npm)](https://www.npmjs.com/package/@codemonster-ru/vueiconify)
5
+ [![License](https://img.shields.io/npm/l/%40codemonster-ru%2Fvueiconify)](./LICENSE.md)
6
+
7
+ Lightweight Vue 3 icon library with a single generic `VueIconify` wrapper.
8
+
9
+ The current direction is `solid`-first: new icons are created and refined as `solid`, while the small existing `regular` layer is kept as an experimental secondary style.
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ npm install @codemonster-ru/vueiconify
15
+ ```
16
+
17
+ Peer dependency:
18
+
19
+ ```bash
20
+ npm install vue
21
+ ```
22
+
23
+ Minimum supported Vue version: `3.5.0`.
24
+
25
+ ## Usage
26
+
27
+ Generic icon component:
28
+
29
+ ```vue
30
+ <script setup lang="ts">
31
+ import { VueIconify, icons } from '@codemonster-ru/vueiconify';
32
+ </script>
33
+
34
+ <template>
35
+ <VueIconify :icon="icons.calendar" />
36
+ <VueIconify :icon="icons.shield" :size="24" />
37
+ <VueIconify :icon="icons.circleNotch" spin />
38
+ <VueIconify icon="warning" width="24" height="24" aria-label="Warning" />
39
+ </template>
40
+ ```
41
+
42
+ Category-oriented example:
43
+
44
+ ```vue
45
+ <script setup lang="ts">
46
+ import { VueIconify, icons } from '@codemonster-ru/vueiconify';
47
+ </script>
48
+
49
+ <template>
50
+ <VueIconify :icon="icons.arrowLeft" />
51
+ <VueIconify :icon="icons.copy" />
52
+ <VueIconify :icon="icons.folder" />
53
+ <VueIconify :icon="icons.info" />
54
+ </template>
55
+ ```
56
+
57
+ ## API
58
+
59
+ ### `VueIconify`
60
+
61
+ Props:
62
+
63
+ - `icon: string` - icon name or imported token from `icons` (recommended). Invalid values fall back to `moon`.
64
+ - `style: 'solid' | 'regular'` - visual variant for icons that provide a regular version. Falls back to `solid` when the requested variant is unavailable.
65
+ - `size: string | number` - sets both `width` and `height`. Default: `16`.
66
+ - `spin: boolean` - applies continuous rotation animation.
67
+
68
+ Existing dual-style icons:
69
+
70
+ - `bars`
71
+ - `check`
72
+ - `xmark`
73
+ - `calendar`
74
+ - `bell`
75
+ - `mail`
76
+ - `message`
77
+ - `user`
78
+ - `lock`
79
+ - `gear`
80
+
81
+ Attributes:
82
+
83
+ - Standard Vue attributes are forwarded to the rendered SVG component, including `class`, `style`, `width`, `height`, `role`, and `aria-*`.
84
+ - Explicit `width` and `height` attributes can still be used when you need non-square sizing.
85
+
86
+ Supported icon names:
87
+
88
+ <!-- generated-category-summary:start -->
89
+
90
+ - **Movement**: 17 icons
91
+ - **Editing And Commands**: 21 icons
92
+ - **Interface Objects**: 42 icons
93
+ - **Status And Messaging**: 19 icons
94
+
95
+ <!-- generated-category-summary:end -->
96
+
97
+ <!-- generated-icon-names:start -->
98
+
99
+ Movement:
100
+
101
+ - `arrowDown`
102
+ - `arrowLeft`
103
+ - `arrowRight`
104
+ - `arrowUp`
105
+ - `bars`
106
+ - `caretDown`
107
+ - `caretLeft`
108
+ - `caretRight`
109
+ - `caretUp`
110
+ - `chevronDown`
111
+ - `chevronLeft`
112
+ - `chevronRight`
113
+ - `chevronUp`
114
+ - `collapse`
115
+ - `columns`
116
+ - `expand`
117
+ - `grid`
118
+
119
+ Editing And Commands:
120
+
121
+ - `check`
122
+ - `clipboard`
123
+ - `copy`
124
+ - `download`
125
+ - `ellipsis`
126
+ - `externalLink`
127
+ - `filter`
128
+ - `funnelX`
129
+ - `link`
130
+ - `logIn`
131
+ - `logOut`
132
+ - `minus`
133
+ - `pencil`
134
+ - `plus`
135
+ - `refresh`
136
+ - `send`
137
+ - `sliders`
138
+ - `sort`
139
+ - `trash`
140
+ - `upload`
141
+ - `xmark`
142
+
143
+ Interface Objects:
144
+
145
+ - `archive`
146
+ - `bell`
147
+ - `bookmark`
148
+ - `briefcase`
149
+ - `building`
150
+ - `calendar`
151
+ - `chartBar`
152
+ - `cloud`
153
+ - `code`
154
+ - `cpu`
155
+ - `creditCard`
156
+ - `database`
157
+ - `file`
158
+ - `fileText`
159
+ - `folder`
160
+ - `folderOpen`
161
+ - `gear`
162
+ - `globe`
163
+ - `hardDrive`
164
+ - `heart`
165
+ - `house`
166
+ - `inbox`
167
+ - `key`
168
+ - `layers`
169
+ - `lock`
170
+ - `magnifyingGlass`
171
+ - `mail`
172
+ - `message`
173
+ - `phone`
174
+ - `plug`
175
+ - `receipt`
176
+ - `server`
177
+ - `star`
178
+ - `terminal`
179
+ - `unlock`
180
+ - `user`
181
+ - `userCheck`
182
+ - `userMinus`
183
+ - `userPlus`
184
+ - `users`
185
+ - `share`
186
+ - `wallet`
187
+
188
+ Status And Messaging:
189
+
190
+ - `activity`
191
+ - `alertCircle`
192
+ - `ban`
193
+ - `checkCircle`
194
+ - `circleHalf`
195
+ - `circleNotch`
196
+ - `clock`
197
+ - `eye`
198
+ - `eyeSlash`
199
+ - `history`
200
+ - `info`
201
+ - `moon`
202
+ - `question`
203
+ - `rotateRight`
204
+ - `shield`
205
+ - `sparkles`
206
+ - `sun`
207
+ - `warning`
208
+ - `xCircle`
209
+
210
+ <!-- generated-icon-names:end -->
211
+
212
+ ## Available Exports
213
+
214
+ Primary exports:
215
+
216
+ <!-- generated-exports:start -->
217
+
218
+ - `VueIconify`
219
+ - `icons`
220
+
221
+ <!-- generated-exports:end -->
222
+
223
+ ## Design Principles
224
+
225
+ - Icons follow a custom UI-solid style built for compact product interfaces.
226
+ - Shapes use soft geometry, large negative space, and readable silhouettes at `16px` and `20px`.
227
+ - The set avoids tracing or reproducing third-party icon paths and keeps its own proportions and corner treatment.
228
+ - New icons should be checked for optical balance, consistent thickness, and clear meaning before merge.
229
+
230
+ ## Core Set
231
+
232
+ - The preferred starter set for product UIs is defined in [`src/lib/iconCore.json`](./src/lib/iconCore.json).
233
+ - It is intentionally smaller than the full pack and biased toward SaaS/admin dashboards, forms, tables, auth, billing, messaging, and infrastructure views.
234
+ - Semantic guidance for near-duplicates lives in [`docs/icon-audit.md`](./docs/icon-audit.md).
235
+
236
+ The public API intentionally uses a single rendering entry point:
237
+
238
+ - use `VueIconify` for rendering
239
+ - pass icon tokens from `icons` to the `icon` prop
240
+
241
+ ## Development
242
+
243
+ ```bash
244
+ npm ci
245
+ npm run create-icon -- alertTriangle feedback
246
+ npm run generate
247
+ npm run validate-icons
248
+ npm run lint
249
+ npm run typecheck
250
+ npm run build
251
+ npm run smoke
252
+ npm run render
253
+ ```
254
+
255
+ `npm run create-icon -- <iconName> <categoryId>` scaffolds a new `solid` icon component, registers it in `src/lib/iconMeta.json`, and seeds title/keyword metadata in `src/lib/iconCatalog.json`.
256
+
257
+ `npm run validate-icons` fails if metadata, catalog entries, generated exports, `icons.json`, or README blocks are out of sync.
258
+
259
+ `npm run render` mounts a few public icons through Vue SSR to catch runtime regressions in the published bundle.
260
+
261
+ ## Releases
262
+
263
+ - Create a changeset with `npm run changeset` for every user-facing change.
264
+ - Merge changesets into `main` and let the release workflow open or update the version PR.
265
+ - When the version PR is merged, Changesets publishes to npm and creates the GitHub Release automatically.
266
+
267
+ ## Showcase
268
+
269
+ - `npm run dev` starts the local showcase.
270
+ - `npm run build:showcase` builds the demo app.
271
+ - The showcase is local-only for now and can later be embedded into your own site.
272
+
273
+ ## License
274
+
275
+ [MIT](./LICENSE.md)
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .cm-icon_animations_spin[data-v-e8b1cecb]{animation-name:cm-spin-e8b1cecb;animation-delay:0s;animation-duration:2s;animation-direction:normal;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes cm-spin-e8b1cecb{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
1
+ .vif-icon_animations_spin[data-v-33e2b5c9]{animation-name:vif-spin-33e2b5c9;animation-delay:0s;animation-duration:2s;animation-direction:normal;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes vif-spin-33e2b5c9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}