@dehlwes/icons 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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Luis Dehlwes
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,192 @@
1
+ # @dehlwes/icons
2
+
3
+ A modern, high-quality icon package with stroke-based, scalable SVG icons and the dehlwes brand assets.
4
+
5
+ ## Design Philosophy
6
+
7
+ **@dehlwes/icons** follows modern UI icon standards with:
8
+
9
+ - **Outline-style** (stroke-based) icons for flexible theming
10
+ - **2px stroke weight** for optimal clarity at all sizes
11
+ - **24×24 grid system** with ~20×20 active drawing area
12
+ - **Round caps and joins** for a friendly, accessible appearance
13
+ - **Consistent visual language** across all icons and brand assets
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @dehlwes/icons
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ### Basic Import
24
+
25
+ ```jsx
26
+ import { Home, DehlwesLogo, DehlwesWordmark } from '@dehlwes/icons';
27
+
28
+ function App() {
29
+ return (
30
+ <div>
31
+ <Home size={24} />
32
+ <DehlwesLogo size={32} />
33
+ <DehlwesWordmark size={120} />
34
+ </div>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ### Tree-shaking Support
40
+
41
+ Import only the icons you need:
42
+
43
+ ```jsx
44
+ import { Home } from '@dehlwes/icons';
45
+ // Only Home icon is bundled
46
+ ```
47
+
48
+ ## Available Icons
49
+
50
+ ### UI Icons
51
+
52
+ - **`Home`** - Clean house outline with centered roof and door
53
+
54
+ ### Brand Assets
55
+
56
+ - **`DehlwesWordmark`** - Primary brand wordmark in lowercase
57
+ - **`DehlwesLogo`** - Compact 'd' monogram for avatars/favicons
58
+
59
+ ## Props
60
+
61
+ All icons accept these common props:
62
+
63
+ ```typescript
64
+ interface IconProps {
65
+ size?: number | string; // Default: 24 (Home/Logo) or 120 (Wordmark)
66
+ className?: string; // CSS classes
67
+ title?: string; // Accessibility title
68
+ }
69
+ ```
70
+
71
+ ## Design Guidelines
72
+
73
+ ### Grid System
74
+
75
+ - **Canvas:** 24×24px
76
+ - **Active Area:** ~20×20px (10% margin from edges)
77
+ - **Stroke Width:** 2px consistent
78
+ - **Line Caps:** Round
79
+ - **Line Joins:** Round
80
+
81
+ ### Sizing Recommendations
82
+
83
+ | Use Case | Size | Example |
84
+ |----------|------|---------|
85
+ | Small UI controls | 16px | Buttons, form elements |
86
+ | Standard UI | 20-24px | Navigation, toolbars |
87
+ | Large UI | 32px+ | Headers, focal points |
88
+ | Wordmark | 100-150px | Branding, logos |
89
+
90
+ ### Color & Theming
91
+
92
+ Icons inherit the current text color (`currentColor`):
93
+
94
+ ```css
95
+ .icon-primary { color: #3b82f6; }
96
+ .icon-secondary { color: #6b7280; }
97
+ .dark .icon { color: #f9fafb; }
98
+ ```
99
+
100
+ ### Accessibility
101
+
102
+ - All icons include semantic `title` elements
103
+ - Use `aria-label` for meaningful icons
104
+ - Hide decorative icons: `aria-hidden="true"`
105
+
106
+ ```jsx
107
+ {/* Meaningful icon */}
108
+ <Home title="Go to homepage" />
109
+
110
+ {/* Decorative icon */}
111
+ <DehlwesLogo aria-hidden="true" />
112
+ ```
113
+
114
+ ### Clearspace
115
+
116
+ **Wordmark:** Maintain minimum clearspace equal to the x-height around the wordmark.
117
+
118
+ **Logomark:** Maintain minimum 4px clearspace around the logo at 24px size (scale proportionally).
119
+
120
+ ## Design Specs
121
+
122
+ ### Home Icon Blueprint
123
+
124
+ - House outline with gabled roof
125
+ - Roof peak centered, ~40-45° angle
126
+ - Optional door rectangle
127
+ - No interior details under 2px
128
+ - Maintains clarity at 16px minimum
129
+
130
+ ### Brand Asset Specifications
131
+
132
+ **Wordmark:**
133
+ - Lowercase "dehlwes" in geometric sans-serif style
134
+ - Consistent 2px stroke weight
135
+ - Aspect ratio: ~4:1 (width:height)
136
+
137
+ **Logo:**
138
+ - Simplified 'd' monogram
139
+ - Circle + vertical stem construction
140
+ - Same 2px stroke as icon system
141
+ - Perfect square aspect ratio
142
+
143
+ ## Examples
144
+
145
+ ### Navigation
146
+
147
+ ```jsx
148
+ <nav>
149
+ <DehlwesLogo size={28} />
150
+ <ul>
151
+ <li><Home size={20} /> Dashboard</li>
152
+ </ul>
153
+ </nav>
154
+ ```
155
+
156
+ ### Theme Integration
157
+
158
+ ```jsx
159
+ // With Tailwind CSS
160
+ <Home className="w-6 h-6 text-blue-600" />
161
+
162
+ // With styled-components
163
+ const StyledIcon = styled(Home)`
164
+ color: ${props => props.theme.primary};
165
+ transition: color 0.2s ease;
166
+ `;
167
+ ```
168
+
169
+ ### Responsive Branding
170
+
171
+ ```jsx
172
+ // Mobile: compact logo
173
+ <DehlwesLogo size={24} className="md:hidden" />
174
+
175
+ // Desktop: full wordmark
176
+ <DehlwesWordmark size={120} className="hidden md:block" />
177
+ ```
178
+
179
+ ## License
180
+
181
+ MIT
182
+
183
+ ## Contributing
184
+
185
+ Icons should follow the established design system:
186
+ - 2px stroke weight
187
+ - Round caps/joins
188
+ - 24×24 grid with 10% margin
189
+ - Minimal details for scalability
190
+ - Consistent visual language
191
+
192
+ For new icons or modifications, please ensure they pass the "squint test" at 16px size and maintain optical balance within the grid system.
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { IconProps } from './Home';
3
+ export declare const DehlwesLogo: React.FC<IconProps>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { IconProps } from './Home';
3
+ export declare const DehlwesWordmark: React.FC<IconProps>;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface IconProps {
3
+ size?: number | string;
4
+ className?: string;
5
+ title?: string;
6
+ }
7
+ export declare const Home: React.FC<IconProps>;
@@ -0,0 +1,4 @@
1
+ export { Home } from './icons/Home';
2
+ export { DehlwesWordmark } from './icons/DehlwesWordmark';
3
+ export { DehlwesLogo } from './icons/DehlwesLogo';
4
+ export type { IconProps } from './icons/Home';
@@ -0,0 +1,19 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+
3
+ var Home = function (_a) {
4
+ var _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.title, title = _d === void 0 ? 'Home' : _d;
5
+ return (jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: className, role: "img", "aria-label": title, children: [jsx("title", { children: title }), jsx("path", { d: "M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }), jsx("path", { d: "M9 22V12h6v10" })] }));
6
+ };
7
+
8
+ var DehlwesWordmark = function (_a) {
9
+ var _b = _a.size, size = _b === void 0 ? 120 : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.title, title = _d === void 0 ? 'dehlwes' : _d;
10
+ return (jsxs("svg", { width: size, height: typeof size === 'number' ? size * 0.25 : '30', viewBox: "0 0 120 30", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: className, role: "img", "aria-label": title, children: [jsx("title", { children: title }), jsx("circle", { cx: "11", cy: "18", r: "6" }), jsx("path", { d: "M17 6v18" }), jsx("circle", { cx: "30", cy: "18", r: "6" }), jsx("path", { d: "M24 18h12" }), jsx("path", { d: "M42 6v18M42 15h8M50 9v15" }), jsx("path", { d: "M58 6v18" }), jsx("path", { d: "M66 9v15l4-12 4 12V9" }), jsx("circle", { cx: "86", cy: "18", r: "6" }), jsx("path", { d: "M80 18h12" }), jsx("path", { d: "M98 12c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4 1.8-4 4 1.8 4 4 4 4-1.8 4-4" })] }));
11
+ };
12
+
13
+ var DehlwesLogo = function (_a) {
14
+ var _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.title, title = _d === void 0 ? 'dehlwes logo' : _d;
15
+ return (jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: className, role: "img", "aria-label": title, children: [jsx("title", { children: title }), jsx("circle", { cx: "12", cy: "12", r: "8" }), jsx("path", { d: "M20 4v16" })] }));
16
+ };
17
+
18
+ export { DehlwesLogo, DehlwesWordmark, Home };
19
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/icons/Home.tsx","../src/icons/DehlwesWordmark.tsx","../src/icons/DehlwesLogo.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface IconProps {\n size?: number | string;\n className?: string;\n title?: string;\n}\n\nexport const Home: React.FC<IconProps> = ({ \n size = 24, \n className = '', \n title = 'Home' \n}) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n role=\"img\"\n aria-label={title}\n >\n <title>{title}</title>\n {/* House outline with centered roof */}\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n {/* Door */}\n <path d=\"M9 22V12h6v10\" />\n </svg>\n );\n};","import React from 'react';\nimport { IconProps } from './Home';\n\nexport const DehlwesWordmark: React.FC<IconProps> = ({ \n size = 120, \n className = '', \n title = 'dehlwes' \n}) => {\n return (\n <svg\n width={size}\n height={typeof size === 'number' ? size * 0.25 : '30'} // Maintain aspect ratio for wordmark\n viewBox=\"0 0 120 30\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n role=\"img\"\n aria-label={title}\n >\n <title>{title}</title>\n {/* d */}\n <circle cx=\"11\" cy=\"18\" r=\"6\" />\n <path d=\"M17 6v18\" />\n \n {/* e */}\n <circle cx=\"30\" cy=\"18\" r=\"6\" />\n <path d=\"M24 18h12\" />\n \n {/* h */}\n <path d=\"M42 6v18M42 15h8M50 9v15\" />\n \n {/* l */}\n <path d=\"M58 6v18\" />\n \n {/* w */}\n <path d=\"M66 9v15l4-12 4 12V9\" />\n \n {/* e */}\n <circle cx=\"86\" cy=\"18\" r=\"6\" />\n <path d=\"M80 18h12\" />\n \n {/* s */}\n <path d=\"M98 12c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4 1.8-4 4 1.8 4 4 4 4-1.8 4-4\" />\n </svg>\n );\n};","import React from 'react';\nimport { IconProps } from './Home';\n\nexport const DehlwesLogo: React.FC<IconProps> = ({ \n size = 24, \n className = '', \n title = 'dehlwes logo' \n}) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n role=\"img\"\n aria-label={title}\n >\n <title>{title}</title>\n {/* Circle part of 'd' */}\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n {/* Stem of 'd' */}\n <path d=\"M20 4v16\" />\n </svg>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;AAQO,IAAM,IAAI,GAAwB,UAAC,EAIzC,EAAA;AAHC,IAAA,IAAA,EAAA,GAAA,EAAA,CAAA,IAAS,EAAT,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACT,iBAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACd,EAAA,GAAA,EAAA,CAAA,KAAc,EAAd,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,MAAM,GAAA,EAAA;AAEd,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAC,KAAK,EAAA,YAAA,EACE,KAAK,EAAA,QAAA,EAAA,CAEjBC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAQ,KAAK,EAAA,CAAS,EAEtBA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,gDAAgD,EAAA,CAAG,EAE3DA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,eAAe,EAAA,CAAG,CAAA,EAAA,CACtB;AAEV;;AC/BO,IAAM,eAAe,GAAwB,UAAC,EAIpD,EAAA;AAHC,IAAA,IAAA,EAAA,GAAA,EAAA,CAAA,IAAU,EAAV,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,GAAG,GAAA,EAAA,EACV,iBAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACd,EAAA,GAAA,EAAA,CAAA,KAAiB,EAAjB,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,SAAS,GAAA,EAAA;AAEjB,IAAA,QACED,IAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EACrD,OAAO,EAAC,YAAY,EACpB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAC,KAAK,EAAA,YAAA,EACE,KAAK,EAAA,QAAA,EAAA,CAEjBC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAQ,KAAK,EAAA,CAAS,EAEtBA,GAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAA,CAAG,EAChCA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,UAAU,GAAG,EAGrBA,GAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAA,CAAG,EAChCA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,WAAW,EAAA,CAAG,EAGtBA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,0BAA0B,EAAA,CAAG,EAGrCA,cAAM,CAAC,EAAC,UAAU,EAAA,CAAG,EAGrBA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,sBAAsB,EAAA,CAAG,EAGjCA,GAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAA,CAAG,EAChCA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,WAAW,EAAA,CAAG,EAGtBA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,0EAA0E,EAAA,CAAG,CAAA,EAAA,CACjF;AAEV;;AC7CO,IAAM,WAAW,GAAwB,UAAC,EAIhD,EAAA;AAHC,IAAA,IAAA,EAAA,GAAA,EAAA,CAAA,IAAS,EAAT,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACT,iBAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACd,EAAA,GAAA,EAAA,CAAA,KAAsB,EAAtB,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,cAAc,GAAA,EAAA;AAEtB,IAAA,QACED,IAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAC,KAAK,EAAA,YAAA,EACE,KAAK,EAAA,QAAA,EAAA,CAEjBC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAQ,KAAK,EAAA,CAAS,EAEtBA,GAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAA,CAAG,EAEhCA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,UAAU,EAAA,CAAG,CAAA,EAAA,CACjB;AAEV;;;;"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ var Home = function (_a) {
6
+ var _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.title, title = _d === void 0 ? 'Home' : _d;
7
+ return (jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: className, role: "img", "aria-label": title, children: [jsxRuntime.jsx("title", { children: title }), jsxRuntime.jsx("path", { d: "M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }), jsxRuntime.jsx("path", { d: "M9 22V12h6v10" })] }));
8
+ };
9
+
10
+ var DehlwesWordmark = function (_a) {
11
+ var _b = _a.size, size = _b === void 0 ? 120 : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.title, title = _d === void 0 ? 'dehlwes' : _d;
12
+ return (jsxRuntime.jsxs("svg", { width: size, height: typeof size === 'number' ? size * 0.25 : '30', viewBox: "0 0 120 30", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: className, role: "img", "aria-label": title, children: [jsxRuntime.jsx("title", { children: title }), jsxRuntime.jsx("circle", { cx: "11", cy: "18", r: "6" }), jsxRuntime.jsx("path", { d: "M17 6v18" }), jsxRuntime.jsx("circle", { cx: "30", cy: "18", r: "6" }), jsxRuntime.jsx("path", { d: "M24 18h12" }), jsxRuntime.jsx("path", { d: "M42 6v18M42 15h8M50 9v15" }), jsxRuntime.jsx("path", { d: "M58 6v18" }), jsxRuntime.jsx("path", { d: "M66 9v15l4-12 4 12V9" }), jsxRuntime.jsx("circle", { cx: "86", cy: "18", r: "6" }), jsxRuntime.jsx("path", { d: "M80 18h12" }), jsxRuntime.jsx("path", { d: "M98 12c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4 1.8-4 4 1.8 4 4 4 4-1.8 4-4" })] }));
13
+ };
14
+
15
+ var DehlwesLogo = function (_a) {
16
+ var _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.className, className = _c === void 0 ? '' : _c, _d = _a.title, title = _d === void 0 ? 'dehlwes logo' : _d;
17
+ return (jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: className, role: "img", "aria-label": title, children: [jsxRuntime.jsx("title", { children: title }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "8" }), jsxRuntime.jsx("path", { d: "M20 4v16" })] }));
18
+ };
19
+
20
+ exports.DehlwesLogo = DehlwesLogo;
21
+ exports.DehlwesWordmark = DehlwesWordmark;
22
+ exports.Home = Home;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/icons/Home.tsx","../src/icons/DehlwesWordmark.tsx","../src/icons/DehlwesLogo.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface IconProps {\n size?: number | string;\n className?: string;\n title?: string;\n}\n\nexport const Home: React.FC<IconProps> = ({ \n size = 24, \n className = '', \n title = 'Home' \n}) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n role=\"img\"\n aria-label={title}\n >\n <title>{title}</title>\n {/* House outline with centered roof */}\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n {/* Door */}\n <path d=\"M9 22V12h6v10\" />\n </svg>\n );\n};","import React from 'react';\nimport { IconProps } from './Home';\n\nexport const DehlwesWordmark: React.FC<IconProps> = ({ \n size = 120, \n className = '', \n title = 'dehlwes' \n}) => {\n return (\n <svg\n width={size}\n height={typeof size === 'number' ? size * 0.25 : '30'} // Maintain aspect ratio for wordmark\n viewBox=\"0 0 120 30\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n role=\"img\"\n aria-label={title}\n >\n <title>{title}</title>\n {/* d */}\n <circle cx=\"11\" cy=\"18\" r=\"6\" />\n <path d=\"M17 6v18\" />\n \n {/* e */}\n <circle cx=\"30\" cy=\"18\" r=\"6\" />\n <path d=\"M24 18h12\" />\n \n {/* h */}\n <path d=\"M42 6v18M42 15h8M50 9v15\" />\n \n {/* l */}\n <path d=\"M58 6v18\" />\n \n {/* w */}\n <path d=\"M66 9v15l4-12 4 12V9\" />\n \n {/* e */}\n <circle cx=\"86\" cy=\"18\" r=\"6\" />\n <path d=\"M80 18h12\" />\n \n {/* s */}\n <path d=\"M98 12c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4 1.8-4 4 1.8 4 4 4 4-1.8 4-4\" />\n </svg>\n );\n};","import React from 'react';\nimport { IconProps } from './Home';\n\nexport const DehlwesLogo: React.FC<IconProps> = ({ \n size = 24, \n className = '', \n title = 'dehlwes logo' \n}) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n role=\"img\"\n aria-label={title}\n >\n <title>{title}</title>\n {/* Circle part of 'd' */}\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n {/* Stem of 'd' */}\n <path d=\"M20 4v16\" />\n </svg>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@dehlwes/icons",
3
+ "version": "1.0.0",
4
+ "description": "A modern, high-quality icon package with stroke-based, scalable SVG icons and the dehlwes brand assets",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "src",
11
+ "LICENSE",
12
+ "README.md"
13
+ ],
14
+ "scripts": {
15
+ "build": "rollup -c",
16
+ "build:watch": "rollup -c -w",
17
+ "dev": "rollup -c -w",
18
+ "clean": "rm -rf dist",
19
+ "prepublishOnly": "npm run clean && npm run build"
20
+ },
21
+ "keywords": [
22
+ "icons",
23
+ "svg",
24
+ "react",
25
+ "typescript",
26
+ "dehlwes",
27
+ "ui",
28
+ "components",
29
+ "outline",
30
+ "stroke"
31
+ ],
32
+ "author": "Luis Dehlwes",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/dehlwes/icons"
37
+ },
38
+ "peerDependencies": {
39
+ "react": ">=16.8.0"
40
+ },
41
+ "devDependencies": {
42
+ "@rollup/plugin-typescript": "^11.1.5",
43
+ "@types/react": "^18.2.37",
44
+ "rollup": "^4.6.1",
45
+ "rollup-plugin-peer-deps-external": "^2.2.4",
46
+ "tslib": "^2.8.1",
47
+ "typescript": "^5.2.2"
48
+ },
49
+ "sideEffects": false,
50
+ "exports": {
51
+ ".": {
52
+ "import": "./dist/index.esm.js",
53
+ "require": "./dist/index.js",
54
+ "types": "./dist/index.d.ts"
55
+ },
56
+ "./package.json": "./package.json"
57
+ }
58
+ }
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { IconProps } from './Home';
3
+
4
+ export const DehlwesLogo: React.FC<IconProps> = ({
5
+ size = 24,
6
+ className = '',
7
+ title = 'dehlwes logo'
8
+ }) => {
9
+ return (
10
+ <svg
11
+ width={size}
12
+ height={size}
13
+ viewBox="0 0 24 24"
14
+ fill="none"
15
+ stroke="currentColor"
16
+ strokeWidth={2}
17
+ strokeLinecap="round"
18
+ strokeLinejoin="round"
19
+ className={className}
20
+ role="img"
21
+ aria-label={title}
22
+ >
23
+ <title>{title}</title>
24
+ {/* Circle part of 'd' */}
25
+ <circle cx="12" cy="12" r="8" />
26
+ {/* Stem of 'd' */}
27
+ <path d="M20 4v16" />
28
+ </svg>
29
+ );
30
+ };
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { IconProps } from './Home';
3
+
4
+ export const DehlwesWordmark: React.FC<IconProps> = ({
5
+ size = 120,
6
+ className = '',
7
+ title = 'dehlwes'
8
+ }) => {
9
+ return (
10
+ <svg
11
+ width={size}
12
+ height={typeof size === 'number' ? size * 0.25 : '30'} // Maintain aspect ratio for wordmark
13
+ viewBox="0 0 120 30"
14
+ fill="none"
15
+ stroke="currentColor"
16
+ strokeWidth={2}
17
+ strokeLinecap="round"
18
+ strokeLinejoin="round"
19
+ className={className}
20
+ role="img"
21
+ aria-label={title}
22
+ >
23
+ <title>{title}</title>
24
+ {/* d */}
25
+ <circle cx="11" cy="18" r="6" />
26
+ <path d="M17 6v18" />
27
+
28
+ {/* e */}
29
+ <circle cx="30" cy="18" r="6" />
30
+ <path d="M24 18h12" />
31
+
32
+ {/* h */}
33
+ <path d="M42 6v18M42 15h8M50 9v15" />
34
+
35
+ {/* l */}
36
+ <path d="M58 6v18" />
37
+
38
+ {/* w */}
39
+ <path d="M66 9v15l4-12 4 12V9" />
40
+
41
+ {/* e */}
42
+ <circle cx="86" cy="18" r="6" />
43
+ <path d="M80 18h12" />
44
+
45
+ {/* s */}
46
+ <path d="M98 12c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4 1.8-4 4 1.8 4 4 4 4-1.8 4-4" />
47
+ </svg>
48
+ );
49
+ };
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+
3
+ export interface IconProps {
4
+ size?: number | string;
5
+ className?: string;
6
+ title?: string;
7
+ }
8
+
9
+ export const Home: React.FC<IconProps> = ({
10
+ size = 24,
11
+ className = '',
12
+ title = 'Home'
13
+ }) => {
14
+ return (
15
+ <svg
16
+ width={size}
17
+ height={size}
18
+ viewBox="0 0 24 24"
19
+ fill="none"
20
+ stroke="currentColor"
21
+ strokeWidth={2}
22
+ strokeLinecap="round"
23
+ strokeLinejoin="round"
24
+ className={className}
25
+ role="img"
26
+ aria-label={title}
27
+ >
28
+ <title>{title}</title>
29
+ {/* House outline with centered roof */}
30
+ <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
31
+ {/* Door */}
32
+ <path d="M9 22V12h6v10" />
33
+ </svg>
34
+ );
35
+ };
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { Home } from './icons/Home';
2
+ export { DehlwesWordmark } from './icons/DehlwesWordmark';
3
+ export { DehlwesLogo } from './icons/DehlwesLogo';
4
+ export type { IconProps } from './icons/Home';