@draekien/create-d9-app 0.0.5 → 0.0.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.
Files changed (44) hide show
  1. package/README.md +212 -5
  2. package/dist/index.js +57 -34
  3. package/package.json +18 -2
  4. package/templates/base/.agents/skills/hugeicons/SKILL.md +335 -0
  5. package/templates/base/.agents/skills/hugeicons/references/icon-list-flutter.md +4552 -0
  6. package/templates/base/.agents/skills/hugeicons/references/icon-list.md +5476 -0
  7. package/templates/base/.agents/skills/motion/SKILL.md +75 -0
  8. package/templates/base/.agents/skills/motion/best-practices/base-ui.md +106 -0
  9. package/templates/base/.agents/skills/motion/best-practices/css-or-motion.md +20 -0
  10. package/templates/base/.agents/skills/motion/best-practices/index.md +95 -0
  11. package/templates/base/.agents/skills/motion/best-practices/motion.md +25 -0
  12. package/templates/base/.agents/skills/motion/best-practices/react.md +102 -0
  13. package/templates/base/.agents/skills/motion/best-practices/vue.md +37 -0
  14. package/templates/base/.agents/skills/motion/codex/index.md +95 -0
  15. package/templates/base/.agents/skills/motion/css-spring/index.md +70 -0
  16. package/templates/base/.agents/skills/motion/performance-audit/index.md +44 -0
  17. package/templates/base/.agents/skills/motion/transition-preview/index.md +51 -0
  18. package/templates/base/.agents/skills/turborepo/SKILL.md +26 -0
  19. package/templates/base/.agents/skills/upgrade-dependencies/SKILL.md +45 -11
  20. package/templates/base/.claude/agents/motion-reviewer.md +50 -0
  21. package/templates/base/.claude/skills/hugeicons/SKILL.md +335 -0
  22. package/templates/base/.claude/skills/hugeicons/references/icon-list-flutter.md +4552 -0
  23. package/templates/base/.claude/skills/hugeicons/references/icon-list.md +5476 -0
  24. package/templates/base/.claude/skills/motion/SKILL.md +75 -0
  25. package/templates/base/.claude/skills/motion/best-practices/base-ui.md +106 -0
  26. package/templates/base/.claude/skills/motion/best-practices/css-or-motion.md +20 -0
  27. package/templates/base/.claude/skills/motion/best-practices/index.md +95 -0
  28. package/templates/base/.claude/skills/motion/best-practices/motion.md +25 -0
  29. package/templates/base/.claude/skills/motion/best-practices/react.md +102 -0
  30. package/templates/base/.claude/skills/motion/best-practices/vue.md +37 -0
  31. package/templates/base/.claude/skills/motion/codex/index.md +95 -0
  32. package/templates/base/.claude/skills/motion/css-spring/index.md +70 -0
  33. package/templates/base/.claude/skills/motion/performance-audit/index.md +44 -0
  34. package/templates/base/.claude/skills/motion/transition-preview/index.md +51 -0
  35. package/templates/base/.claude/skills/turborepo/SKILL.md +26 -0
  36. package/templates/base/.claude/skills/upgrade-dependencies/SKILL.md +45 -11
  37. package/templates/base/_gitignore +36 -1
  38. package/templates/base/apps/web/public/favicon.svg +1 -0
  39. package/templates/base/apps/web/src/router.tsx +3 -1
  40. package/templates/base/apps/web/src/routes/__root.tsx +4 -1
  41. package/templates/base/package.json +1 -1
  42. package/templates/base/skills-lock.json +19 -1
  43. package/templates/integrations.json +22 -0
  44. package/templates/optional/motion-cursor-rule/.cursor/rules/motion.mdc +14 -0
@@ -0,0 +1,335 @@
1
+ ---
2
+ name: hugeicons
3
+ description: Use and find Hugeicons icons in any framework — React, Vue, Svelte, SolidJS, Angular, React Native, and Flutter. Covers installation, rendering, props, icon naming, and the full icon catalog. Use whenever a project depends on @hugeicons/*, @hugeicons-pro/*, or the Flutter hugeicons package and you need to add, render, or pick an icon.
4
+ ---
5
+
6
+ # Hugeicons
7
+
8
+ Hugeicons is an SVG icon library with one rendering package per framework plus a shared icon
9
+ set. This skill covers **all** official packages. Work in three steps: detect the framework,
10
+ render with its component, then pick icon names from the right catalog.
11
+
12
+ > ## ⚠️ Read this first: grep the icon lists, never read them whole
13
+ >
14
+ > The reference files under `references/` list **thousands** of icons and run tens of thousands
15
+ > of tokens each. **Never open one in full** — always `grep` for a keyword and copy the exact
16
+ > match:
17
+ >
18
+ > ```bash
19
+ > grep -i search references/icon-list.md # JS frameworks
20
+ > grep -i home references/icon-list-flutter.md # Flutter
21
+ > ```
22
+ >
23
+ > Do **not** rely on memory for icon names — a guessed name may not exist, or may exist but be
24
+ > the wrong glyph (e.g. `LeftToRightBlockQuoteIcon` is quote marks, not the bracket you wanted).
25
+ > Grep, confirm, copy.
26
+
27
+ ## 1. Detect the framework
28
+
29
+ Check the project's manifest and match the installed package:
30
+
31
+ | Framework | Detect by | Component |
32
+ |-----------|-----------|-----------|
33
+ | React | `@hugeicons/react` in package.json | `HugeiconsIcon` |
34
+ | Vue | `@hugeicons/vue` in package.json | `HugeiconsIcon` |
35
+ | Svelte | `@hugeicons/svelte` in package.json | `HugeiconsIcon` |
36
+ | SolidJS | `@hugeicons/solid-js` in package.json | `HugeiconsIcon` |
37
+ | Angular | `@hugeicons/angular` in package.json | `hugeicons-icon` |
38
+ | React Native | `@hugeicons/react-native` in package.json | `HugeiconsIcon` |
39
+ | Flutter | `hugeicons` in pubspec.yaml | `HugeIcon` |
40
+
41
+ If more than one matches (e.g. a monorepo), use the one for the file you are editing.
42
+
43
+ ## 2. Two architectures
44
+
45
+ - **JS frameworks (React, Vue, Svelte, SolidJS, Angular, React Native)** — the `@hugeicons/*` package is a *renderer only*. Icons are
46
+ **named exports** imported from a separate package, `@hugeicons/core-free-icons` (free).
47
+ The same icon names work across all six frameworks.
48
+ - **Flutter** — the `hugeicons` package *bundles* the icon data. Icons are `HugeIcons.*`
49
+ constants of type `List<List<dynamic>>` (SVG path data, **not** Flutter `IconData`), rendered
50
+ with `HugeIcon` — never Flutter's `Icon`.
51
+
52
+ ## 3. Install & render (per framework)
53
+
54
+ > **Keep generated code minimal:** `icon` is the only required prop. Don't write props that just
55
+ > repeat the component's default value (e.g. `size={24}`, `color="currentColor"`,
56
+ > `strokeWidth={1.5}`) — pass a prop only when overriding a default. The defaults are listed in
57
+ > each props table below.
58
+
59
+ ### React
60
+
61
+ Install:
62
+
63
+ ```bash
64
+ npm install @hugeicons/react @hugeicons/core-free-icons
65
+ ```
66
+
67
+ Render:
68
+
69
+ ```jsx
70
+ import { HugeiconsIcon } from '@hugeicons/react';
71
+ import { Search01Icon } from '@hugeicons/core-free-icons';
72
+
73
+ function App() {
74
+ // Only `icon` is required; pass other props only to override a default.
75
+ return <HugeiconsIcon icon={Search01Icon} />;
76
+ }
77
+ ```
78
+
79
+ Props:
80
+
81
+ | Prop | Type | Default | Description |
82
+ |------|------|---------|-------------|
83
+ | `icon` | `IconSvgElement` | Required | The main icon to display (a named export from an icon package) |
84
+ | `altIcon` | `IconSvgElement` | - | Alternative icon for states, interactions, or dynamic swapping |
85
+ | `showAlt` | `boolean` | false | When true, displays `altIcon` instead of `icon` |
86
+ | `size` | `number \| string` | 24 | Icon size in pixels |
87
+ | `color` | `string` | currentColor | Icon color (any CSS color value) |
88
+ | `strokeWidth` | `number` | 1.5 | Width of the icon strokes |
89
+ | `absoluteStrokeWidth` | `boolean` | false | When true, stroke width is scaled relative to icon size |
90
+ | `primaryColor` | `string` | - | Primary color for multicolor Pro icons (Bulk, Duotone, Twotone) |
91
+ | `secondaryColor` | `string` | - | Secondary color for multicolor Pro icons |
92
+ | `disableSecondaryOpacity` | `boolean` | false | Disables default opacity applied to the secondary color |
93
+ | `className` | `string` | - | Additional CSS classes |
94
+
95
+ ### Vue
96
+
97
+ Install:
98
+
99
+ ```bash
100
+ npm install @hugeicons/vue @hugeicons/core-free-icons
101
+ ```
102
+
103
+ Render:
104
+
105
+ ```vue
106
+ <script setup>
107
+ import { HugeiconsIcon } from '@hugeicons/vue'
108
+ import { Search01Icon } from '@hugeicons/core-free-icons'
109
+ </script>
110
+
111
+ <template>
112
+ <!-- Only :icon is required; pass other props only to override a default. -->
113
+ <HugeiconsIcon :icon="Search01Icon" />
114
+ </template>
115
+ ```
116
+
117
+ Props:
118
+
119
+ | Prop | Type | Default | Description |
120
+ |------|------|---------|-------------|
121
+ | `icon` | `IconSvgObject` | Required | The main icon to display (a named export from an icon package) |
122
+ | `altIcon` | `IconSvgObject` | - | Alternative icon for states, interactions, or animations |
123
+ | `showAlt` | `boolean` | false | When true, displays `altIcon` instead of `icon` |
124
+ | `size` | `number` | 24 | Icon size in pixels |
125
+ | `color` | `string` | currentColor | Icon color (any CSS color value) |
126
+ | `strokeWidth` | `number` | 1.5 | Width of the icon strokes |
127
+ | `class` | `string` | - | Additional CSS classes |
128
+
129
+ ### Svelte
130
+
131
+ Install:
132
+
133
+ ```bash
134
+ npm install @hugeicons/svelte @hugeicons/core-free-icons
135
+ ```
136
+
137
+ Render:
138
+
139
+ ```svelte
140
+ <script>
141
+ import { HugeiconsIcon } from '@hugeicons/svelte'
142
+ import { Search01Icon } from '@hugeicons/core-free-icons'
143
+ </script>
144
+
145
+ <!-- Only icon is required; pass other props only to override a default. -->
146
+ <HugeiconsIcon icon={Search01Icon} />
147
+ ```
148
+
149
+ Props:
150
+
151
+ | Prop | Type | Default | Description |
152
+ |------|------|---------|-------------|
153
+ | `icon` | `IconSvgObject` | Required | The main icon to display (a named export from an icon package) |
154
+ | `altIcon` | `IconSvgObject` | - | Alternative icon for states, interactions, or animations |
155
+ | `showAlt` | `boolean` | false | When true, displays `altIcon` instead of `icon` |
156
+ | `size` | `number` | 24 | Icon size in pixels |
157
+ | `color` | `string` | currentColor | Icon color (any CSS color value) |
158
+ | `strokeWidth` | `number` | 1.5 | Width of the icon strokes |
159
+ | `class` | `string` | - | Additional CSS classes |
160
+
161
+ ### SolidJS
162
+
163
+ Install:
164
+
165
+ ```bash
166
+ npm install @hugeicons/solid-js @hugeicons/core-free-icons
167
+ ```
168
+
169
+ > **Note:** The package is `@hugeicons/solid-js` — not `@hugeicons/solid`. "Solid" is also an icon
170
+ > style (`@hugeicons-pro/core-solid-*`), so don't confuse the two.
171
+
172
+ Render:
173
+
174
+ ```jsx
175
+ import { HugeiconsIcon } from '@hugeicons/solid-js';
176
+ import { Search01Icon } from '@hugeicons/core-free-icons';
177
+
178
+ function App() {
179
+ // Only `icon` is required; pass other props only to override a default.
180
+ return <HugeiconsIcon icon={Search01Icon} />;
181
+ }
182
+ ```
183
+
184
+ Props:
185
+
186
+ | Prop | Type | Default | Description |
187
+ |------|------|---------|-------------|
188
+ | `icon` | `IconSvgElement` | Required | The main icon to display (a named export from an icon package) |
189
+ | `altIcon` | `IconSvgElement` | - | Alternative icon for states, interactions, or dynamic swapping |
190
+ | `showAlt` | `boolean` | false | When true, displays `altIcon` instead of `icon` |
191
+ | `size` | `number \| string` | 24 | Icon size in pixels |
192
+ | `color` | `string` | currentColor | Icon color (any CSS color value) |
193
+ | `strokeWidth` | `number` | 1.5 | Width of the icon strokes |
194
+ | `absoluteStrokeWidth` | `boolean` | false | When true, stroke width is scaled relative to icon size |
195
+ | `primaryColor` | `string` | - | Primary color for multicolor Pro icons (Bulk, Duotone, Twotone) |
196
+ | `secondaryColor` | `string` | - | Secondary color for multicolor Pro icons |
197
+ | `disableSecondaryOpacity` | `boolean` | false | Disables default opacity applied to the secondary color |
198
+ | `class` | `string` | - | Additional CSS classes |
199
+
200
+ ### Angular
201
+
202
+ Install:
203
+
204
+ ```bash
205
+ npm install @hugeicons/angular @hugeicons/core-free-icons
206
+ ```
207
+
208
+ > **Note:** The component is `HugeiconsIconComponent`, rendered via the `<hugeicons-icon>` selector. Import the icon in the component class and bind it with `[icon]`.
209
+
210
+ Render:
211
+
212
+ ```typescript
213
+ // example.component.ts
214
+ import { Component } from '@angular/core'
215
+ import { HugeiconsIconComponent } from '@hugeicons/angular'
216
+ import { Search01Icon } from '@hugeicons/core-free-icons'
217
+
218
+ @Component({
219
+ selector: 'app-example',
220
+ standalone: true,
221
+ imports: [HugeiconsIconComponent],
222
+ // Only [icon] is required; bind other props only to override a default.
223
+ template: `<hugeicons-icon [icon]="searchIcon" />`,
224
+ })
225
+ export class ExampleComponent {
226
+ searchIcon = Search01Icon
227
+ }
228
+ ```
229
+
230
+ Props:
231
+
232
+ | Prop | Type | Default | Description |
233
+ |------|------|---------|-------------|
234
+ | `icon` | `IconSvgObject` | Required | The main icon to display (a named export from an icon package) |
235
+ | `altIcon` | `IconSvgObject` | - | Alternative icon for states, interactions, or animations |
236
+ | `showAlt` | `boolean` | false | When true, displays `altIcon` instead of `icon` |
237
+ | `size` | `number` | 24 | Icon size in pixels |
238
+ | `color` | `string` | currentColor | Icon color (any CSS color value) |
239
+ | `strokeWidth` | `number` | 1.5 | Width of the icon strokes |
240
+ | `class` | `string` | - | Additional CSS classes |
241
+
242
+ ### React Native
243
+
244
+ Install:
245
+
246
+ ```bash
247
+ npm install @hugeicons/react-native @hugeicons/core-free-icons
248
+ ```
249
+
250
+ > **Note:** Color defaults to `#000000` (not `currentColor`) because React Native has no CSS color inheritance.
251
+
252
+ Render:
253
+
254
+ ```jsx
255
+ import { HugeiconsIcon } from '@hugeicons/react-native'
256
+ import { Search01Icon } from '@hugeicons/core-free-icons'
257
+
258
+ export default function App() {
259
+ // Only `icon` is required; pass other props only to override a default.
260
+ return <HugeiconsIcon icon={Search01Icon} />
261
+ }
262
+ ```
263
+
264
+ Props:
265
+
266
+ | Prop | Type | Default | Description |
267
+ |------|------|---------|-------------|
268
+ | `icon` | `IconSvgObject` | Required | The main icon to display (a named export from an icon package) |
269
+ | `altIcon` | `IconSvgObject` | - | Alternative icon for states, interactions, or animations |
270
+ | `showAlt` | `boolean` | false | When true, displays `altIcon` instead of `icon` |
271
+ | `size` | `number` | 24 | Icon size in pixels |
272
+ | `color` | `string` | #000000 | Icon color (color string) |
273
+ | `strokeWidth` | `number` | 1.5 | Width of the icon strokes |
274
+
275
+ ### Flutter
276
+
277
+ Install:
278
+
279
+ ```bash
280
+ flutter pub add hugeicons
281
+ ```
282
+
283
+ > **Note:** Flutter bundles the icon data directly: `HugeIcons.*` constants are `List<List<dynamic>>` SVG path data, not `IconData`. Render with `HugeIcon`, never Flutter's `Icon`.
284
+
285
+ Render:
286
+
287
+ ```dart
288
+ import 'package:hugeicons/hugeicons.dart';
289
+
290
+ // Only `icon` is required; color and size fall back to the ambient IconTheme.
291
+ // Pass color/size only to override those defaults.
292
+ HugeIcon(
293
+ icon: HugeIcons.strokeRoundedHome01,
294
+ color: Colors.black,
295
+ )
296
+ ```
297
+
298
+ Props:
299
+
300
+ | Prop | Type | Default | Description |
301
+ |------|------|---------|-------------|
302
+ | `icon` | `List<List<dynamic>>` | Required | The icon data (a `HugeIcons.*` constant) — NOT a Flutter `IconData` |
303
+ | `color` | `Color` | IconTheme color | Icon color; falls back to the ambient `IconTheme` |
304
+ | `size` | `double` | 24.0 | Icon size in logical pixels; falls back to `IconTheme` size |
305
+ | `strokeWidth` | `double` | - | Stroke thickness for stroke-style icons |
306
+
307
+
308
+ ## 4. Find an icon
309
+
310
+ - **React, Vue, Svelte, SolidJS, Angular, React Native** — PascalCase named exports ending in `Icon` (e.g. `Search01Icon`, `Home01Icon`,
311
+ `Notification03Icon`). Number words are spelled out: `1st-bracket` → `FirstBracketIcon`,
312
+ `3d-view` → `ThreeDViewIcon`. Import from `@hugeicons/core-free-icons`.
313
+ Full list: [references/icon-list.md](references/icon-list.md) (5,471 icons).
314
+ - **Flutter** — `HugeIcons.strokeRounded<Name>` constants (e.g. `HugeIcons.strokeRoundedSearch01`).
315
+ Full list: [references/icon-list-flutter.md](references/icon-list-flutter.md) (4,547 icons).
316
+
317
+ **Grep these files — don't read them whole** (see the warning at the top). Search for a term,
318
+ copy the **exact** matching name, and don't guess: many icons have numbered variants (`01`, `02`,
319
+ `03`) — pick the one that best fits.
320
+
321
+ ## 5. Free vs Pro icons
322
+
323
+ - **Free** (default): `@hugeicons/core-free-icons` — 6,000+ stroke-rounded icons. Suggest only these
324
+ unless the user has a Pro license.
325
+ - **Pro** (license required, authenticated install): `@hugeicons-pro/core-stroke-rounded`, `@hugeicons-pro/core-stroke-sharp`, `@hugeicons-pro/core-stroke-standard`, `@hugeicons-pro/core-solid-rounded`, `@hugeicons-pro/core-solid-sharp`, `@hugeicons-pro/core-solid-standard`, `@hugeicons-pro/core-bulk-rounded`, `@hugeicons-pro/core-duotone-rounded`, `@hugeicons-pro/core-duotone-standard`, `@hugeicons-pro/core-twotone-rounded`.
326
+
327
+ Never suggest a Pro-only icon to a free user — the import will fail.
328
+
329
+ ## Troubleshooting
330
+
331
+ - **Icon not rendering**: confirm `icon` is a valid export/constant and not null.
332
+ - **JS import fails**: the name is misspelled or Pro-only. Check the exact export in
333
+ `references/icon-list.md`.
334
+ - **Flutter type error expecting `IconData`**: wrong type — Hugeicons constants are
335
+ `List<List<dynamic>>`. Render with `HugeIcon`, not `Icon`.