@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 +21 -0
- package/README.md +192 -0
- package/dist/icons/DehlwesLogo.d.ts +3 -0
- package/dist/icons/DehlwesWordmark.d.ts +3 -0
- package/dist/icons/Home.d.ts +7 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.esm.js +19 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -0
- package/src/icons/DehlwesLogo.tsx +30 -0
- package/src/icons/DehlwesWordmark.tsx +49 -0
- package/src/icons/Home.tsx +35 -0
- package/src/index.ts +4 -0
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.
|
package/dist/index.d.ts
ADDED
|
@@ -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":"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"}
|
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