@custmaz/layout-icons 0.1.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/CHANGELOG.md +31 -0
- package/LICENSE +21 -0
- package/README.md +148 -0
- package/dist/index.d.mts +67 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.js +334 -0
- package/dist/index.mjs +297 -0
- package/package.json +64 -0
- package/src/createIcon.tsx +45 -0
- package/src/iconLayout.tsx +70 -0
- package/src/icons/Card.tsx +28 -0
- package/src/icons/Grid.tsx +25 -0
- package/src/icons/Grid3x3.tsx +25 -0
- package/src/icons/HamburgerMenu.tsx +23 -0
- package/src/icons/Kebab.tsx +15 -0
- package/src/icons/Landscape.tsx +24 -0
- package/src/icons/List.tsx +32 -0
- package/src/icons/Masonry.tsx +18 -0
- package/src/icons/Meatballs.tsx +15 -0
- package/src/icons/Split.tsx +22 -0
- package/src/icons/Tall.tsx +22 -0
- package/src/index.tsx +14 -0
- package/src/types.ts +9 -0
- package/tsconfig.json +16 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
Initial release.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
A focused, customisable set of SVG icon components for representing layout and container structures in user interfaces.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
- Layout and container-oriented icons
|
|
14
|
+
- Outline and filled variants
|
|
15
|
+
- Consistent sizing and corner-radius control
|
|
16
|
+
- Sensible accessibility defaults with optional titles
|
|
17
|
+
- Lightweight, dependency-free SVG components
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Included Icons
|
|
21
|
+
- Grid (2×2)
|
|
22
|
+
- Grid3x3
|
|
23
|
+
- Masonry
|
|
24
|
+
- List
|
|
25
|
+
- Tall
|
|
26
|
+
- Landscape
|
|
27
|
+
- Card
|
|
28
|
+
- Split
|
|
29
|
+
- HamburgerMenu
|
|
30
|
+
- Kebab (three horizontal dots)
|
|
31
|
+
- Meatballs (three vertical dots)
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 custmaz
|
|
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,148 @@
|
|
|
1
|
+
# Layout Icons
|
|
2
|
+
|
|
3
|
+
A focused, customisable set of SVG icon components for representing layout and container structures in user interfaces.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Design Principles
|
|
8
|
+
|
|
9
|
+
This library is intentionally narrow in scope.
|
|
10
|
+
|
|
11
|
+
- Icons represent layout structure, not visual decoration
|
|
12
|
+
- All icons share a consistent grid, sizing, and corner-radius model
|
|
13
|
+
- Components are designed to scale, style, and customise
|
|
14
|
+
- Accessibility is supported via optional `title` props
|
|
15
|
+
|
|
16
|
+
See the [Changelog](./CHANGELOG.md) for details on versions and updates.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install @custmaz/layout-icons
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Maintainer
|
|
29
|
+
|
|
30
|
+
This library is currently maintained solely by the author.
|
|
31
|
+
External contributions are not accepted at this time to ensure consistency and quality.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
## Basic Usage
|
|
35
|
+
|
|
36
|
+
Import and use the icons in your React components:
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
import { List, HamburgerMenu, Card } from "@custmaz/layout-icons";
|
|
40
|
+
|
|
41
|
+
export function Example() {
|
|
42
|
+
return (
|
|
43
|
+
<div>
|
|
44
|
+
<List />
|
|
45
|
+
<HamburgerMenu />
|
|
46
|
+
<Card />
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
Icons inherit their colour from their parent element.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Customisation
|
|
56
|
+
|
|
57
|
+
All icons share a consistent set of props:
|
|
58
|
+
|
|
59
|
+
``` tsx
|
|
60
|
+
<Grid
|
|
61
|
+
size={32} // Width & height
|
|
62
|
+
strokeWidth={2} // Outline thickness
|
|
63
|
+
radius={4} // Corner rounding
|
|
64
|
+
variant="outline" // "outline" or "filled"
|
|
65
|
+
title="Grid layout" // Accessibility label
|
|
66
|
+
/>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
These props allow you to adjust scale, stroke weight, corner rounding, and visual style without changing the icon structure.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Props Reference
|
|
74
|
+
|
|
75
|
+
| Prop | Type | Default | Description |
|
|
76
|
+
|-------------|-----------------------------------|-----------|-----------------------------------------|
|
|
77
|
+
| size | number \| string | 24 | Width and height of the icon |
|
|
78
|
+
| strokeWidth | number | 0.8 | Stroke thickness (outline only) |
|
|
79
|
+
| radius | number | 1 | Corner radius |
|
|
80
|
+
| variant | "outline" \| "filled" | "outline" | Visual style |
|
|
81
|
+
| title | string | — | Enables accessibility |
|
|
82
|
+
|
|
83
|
+
> Note: Defaults are for version 0.1.0
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Theming
|
|
88
|
+
|
|
89
|
+
Icons are plain SVG elements and can be styled using standard CSS techniques.
|
|
90
|
+
|
|
91
|
+
``` tsx
|
|
92
|
+
<div style={{ color: "#1f2937" }}>
|
|
93
|
+
<Grid />
|
|
94
|
+
<Masonry />
|
|
95
|
+
</div>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Works with:
|
|
99
|
+
* CSS/SCSS
|
|
100
|
+
* CSS Modules
|
|
101
|
+
* Tailwind
|
|
102
|
+
* styled-components
|
|
103
|
+
* inline styles
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Accessibility
|
|
108
|
+
Icons are decorative by default.
|
|
109
|
+
|
|
110
|
+
To provide an accessible label, pass a `title` prop:
|
|
111
|
+
|
|
112
|
+
``` tsx
|
|
113
|
+
<Grid title="Grid layout" />
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This ensures that the icon is announced properly by screen readers.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Available Icons
|
|
121
|
+
|
|
122
|
+
#### Layout:
|
|
123
|
+
* Grid
|
|
124
|
+
* Grid3x3
|
|
125
|
+
* Masonry
|
|
126
|
+
* List
|
|
127
|
+
* Tall
|
|
128
|
+
* Landscape
|
|
129
|
+
* Split
|
|
130
|
+
* Card
|
|
131
|
+
|
|
132
|
+
#### Menus:
|
|
133
|
+
* HamburgerMenu
|
|
134
|
+
* Kebab (three horizontal dots)
|
|
135
|
+
* Meatballs (three vertical dots)
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Issues
|
|
140
|
+
|
|
141
|
+
Bug reports and feature requests can be filed on GitHub:
|
|
142
|
+
|
|
143
|
+
https://github.com/custmaz/layout-icons/issues
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
MIT
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
declare const Grid: {
|
|
5
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
6
|
+
displayName: string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
declare const Grid3x3: {
|
|
10
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
displayName: string;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
declare const Masonry: {
|
|
15
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
declare const List: {
|
|
20
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
displayName: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
declare const Tall: {
|
|
25
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
26
|
+
displayName: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
declare const Landscape: {
|
|
30
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
31
|
+
displayName: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
declare const Card: {
|
|
35
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
36
|
+
displayName: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
declare const Split: {
|
|
40
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
41
|
+
displayName: string;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
declare const HamburgerMenu: {
|
|
45
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
46
|
+
displayName: string;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
declare const Kebab: {
|
|
50
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
51
|
+
displayName: string;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
declare const Meatballs: {
|
|
55
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
56
|
+
displayName: string;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
interface IconProps extends React.SVGProps<SVGSVGElement> {
|
|
60
|
+
size?: number | string;
|
|
61
|
+
strokeWidth?: number;
|
|
62
|
+
radius?: number;
|
|
63
|
+
variant?: "outline" | "filled";
|
|
64
|
+
title?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { Card, Grid, Grid3x3, HamburgerMenu, type IconProps, Kebab, Landscape, List, Masonry, Meatballs, Split, Tall };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
declare const Grid: {
|
|
5
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
6
|
+
displayName: string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
declare const Grid3x3: {
|
|
10
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
displayName: string;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
declare const Masonry: {
|
|
15
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
declare const List: {
|
|
20
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
displayName: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
declare const Tall: {
|
|
25
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
26
|
+
displayName: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
declare const Landscape: {
|
|
30
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
31
|
+
displayName: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
declare const Card: {
|
|
35
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
36
|
+
displayName: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
declare const Split: {
|
|
40
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
41
|
+
displayName: string;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
declare const HamburgerMenu: {
|
|
45
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
46
|
+
displayName: string;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
declare const Kebab: {
|
|
50
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
51
|
+
displayName: string;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
declare const Meatballs: {
|
|
55
|
+
({ size, strokeWidth, radius, variant, title, ...props }: IconProps): react_jsx_runtime.JSX.Element;
|
|
56
|
+
displayName: string;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
interface IconProps extends React.SVGProps<SVGSVGElement> {
|
|
60
|
+
size?: number | string;
|
|
61
|
+
strokeWidth?: number;
|
|
62
|
+
radius?: number;
|
|
63
|
+
variant?: "outline" | "filled";
|
|
64
|
+
title?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { Card, Grid, Grid3x3, HamburgerMenu, type IconProps, Kebab, Landscape, List, Masonry, Meatballs, Split, Tall };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.tsx
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
Card: () => Card,
|
|
24
|
+
Grid: () => Grid,
|
|
25
|
+
Grid3x3: () => Grid3x3,
|
|
26
|
+
HamburgerMenu: () => HamburgerMenu,
|
|
27
|
+
Kebab: () => Kebab,
|
|
28
|
+
Landscape: () => Landscape,
|
|
29
|
+
List: () => List,
|
|
30
|
+
Masonry: () => Masonry,
|
|
31
|
+
Meatballs: () => Meatballs,
|
|
32
|
+
Split: () => Split,
|
|
33
|
+
Tall: () => Tall
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(index_exports);
|
|
36
|
+
|
|
37
|
+
// src/createIcon.tsx
|
|
38
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
39
|
+
function createIcon(name, render) {
|
|
40
|
+
const Icon = ({
|
|
41
|
+
size = 24,
|
|
42
|
+
strokeWidth = 0.8,
|
|
43
|
+
radius = 1,
|
|
44
|
+
variant = "outline",
|
|
45
|
+
title,
|
|
46
|
+
...props
|
|
47
|
+
}) => {
|
|
48
|
+
const ariaHidden = title == null ? true : void 0;
|
|
49
|
+
const role = title ? "img" : void 0;
|
|
50
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
51
|
+
"svg",
|
|
52
|
+
{
|
|
53
|
+
width: size,
|
|
54
|
+
height: size,
|
|
55
|
+
viewBox: "0 0 24 24",
|
|
56
|
+
fill: variant === "filled" ? "currentColor" : "none",
|
|
57
|
+
stroke: variant === "outline" ? "currentColor" : "none",
|
|
58
|
+
strokeWidth: variant === "outline" ? strokeWidth : void 0,
|
|
59
|
+
strokeLinecap: "round",
|
|
60
|
+
strokeLinejoin: "round",
|
|
61
|
+
focusable: "false",
|
|
62
|
+
"aria-hidden": ariaHidden,
|
|
63
|
+
role,
|
|
64
|
+
...props,
|
|
65
|
+
children: [
|
|
66
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: title }),
|
|
67
|
+
render({ radius, variant })
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
};
|
|
72
|
+
Icon.displayName = name;
|
|
73
|
+
return Icon;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// src/iconLayout.tsx
|
|
77
|
+
function repeat(count, render) {
|
|
78
|
+
return Array.from({ length: count }, (_, i) => render(i));
|
|
79
|
+
}
|
|
80
|
+
function horizontalStack(options) {
|
|
81
|
+
const { count, startX, gap, render } = options;
|
|
82
|
+
return repeat(count, (i) => {
|
|
83
|
+
const x = startX + i * gap;
|
|
84
|
+
return render(x, i);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function verticalStack(options) {
|
|
88
|
+
const { count, startY, gap, render } = options;
|
|
89
|
+
return repeat(count, (i) => {
|
|
90
|
+
const y = startY + i * gap;
|
|
91
|
+
return render(y, i);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function grid(options) {
|
|
95
|
+
const { rows, cols, startX, startY, cellSize, gap, render } = options;
|
|
96
|
+
return repeat(
|
|
97
|
+
rows,
|
|
98
|
+
(row) => repeat(cols, (col) => {
|
|
99
|
+
const x = startX + col * (cellSize + gap);
|
|
100
|
+
const y = startY + row * (cellSize + gap);
|
|
101
|
+
return render(x, y, row, col);
|
|
102
|
+
})
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/icons/Grid.tsx
|
|
107
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
108
|
+
var Grid = createIcon("Grid", ({ radius }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: grid({
|
|
109
|
+
rows: 2,
|
|
110
|
+
cols: 2,
|
|
111
|
+
startX: 2,
|
|
112
|
+
startY: 2,
|
|
113
|
+
cellSize: 7,
|
|
114
|
+
gap: 1.5,
|
|
115
|
+
render: (x, y, row, col) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
116
|
+
"rect",
|
|
117
|
+
{
|
|
118
|
+
x,
|
|
119
|
+
y,
|
|
120
|
+
width: 7,
|
|
121
|
+
height: 7,
|
|
122
|
+
rx: radius
|
|
123
|
+
},
|
|
124
|
+
`${row}-${col}`
|
|
125
|
+
)
|
|
126
|
+
}) }));
|
|
127
|
+
|
|
128
|
+
// src/icons/Grid3x3.tsx
|
|
129
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
130
|
+
var Grid3x3 = createIcon("Grid3x3", ({ radius }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: grid({
|
|
131
|
+
rows: 3,
|
|
132
|
+
cols: 3,
|
|
133
|
+
startX: 2,
|
|
134
|
+
startY: 2,
|
|
135
|
+
cellSize: 5,
|
|
136
|
+
gap: 1.5,
|
|
137
|
+
render: (x, y, row, col) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
138
|
+
"rect",
|
|
139
|
+
{
|
|
140
|
+
x,
|
|
141
|
+
y,
|
|
142
|
+
width: 5,
|
|
143
|
+
height: 5,
|
|
144
|
+
rx: radius
|
|
145
|
+
},
|
|
146
|
+
`${row}-${col}`
|
|
147
|
+
)
|
|
148
|
+
}) }));
|
|
149
|
+
|
|
150
|
+
// src/icons/Masonry.tsx
|
|
151
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
152
|
+
var Masonry = createIcon("Masonry", ({ radius }) => {
|
|
153
|
+
const blocks = [
|
|
154
|
+
{ x: 3, y: 3, width: 6, height: 18 },
|
|
155
|
+
{ x: 11, y: 3, width: 5, height: 10 },
|
|
156
|
+
{ x: 11, y: 15, width: 5, height: 6 },
|
|
157
|
+
{ x: 18, y: 3, width: 3, height: 18 }
|
|
158
|
+
];
|
|
159
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: blocks.map((props, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("rect", { ...props, rx: radius }, i)) });
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// src/icons/List.tsx
|
|
163
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
164
|
+
var List = createIcon("List", ({ radius }) => {
|
|
165
|
+
const rows = [
|
|
166
|
+
{ iconY: 4, textY: 5.5 },
|
|
167
|
+
{ iconY: 10, textY: 11.5 },
|
|
168
|
+
{ iconY: 16, textY: 17.5 }
|
|
169
|
+
];
|
|
170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: rows.map(({ iconY, textY }, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("g", { children: [
|
|
171
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
172
|
+
"rect",
|
|
173
|
+
{
|
|
174
|
+
x: 3,
|
|
175
|
+
y: iconY,
|
|
176
|
+
width: 5,
|
|
177
|
+
height: 5,
|
|
178
|
+
rx: radius
|
|
179
|
+
}
|
|
180
|
+
),
|
|
181
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
182
|
+
"rect",
|
|
183
|
+
{
|
|
184
|
+
x: 11,
|
|
185
|
+
y: textY,
|
|
186
|
+
width: 10,
|
|
187
|
+
height: 2,
|
|
188
|
+
rx: 1
|
|
189
|
+
}
|
|
190
|
+
)
|
|
191
|
+
] }, i)) });
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
// src/icons/Tall.tsx
|
|
195
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
196
|
+
var Tall = createIcon("Tall", ({ radius }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: horizontalStack({
|
|
197
|
+
count: 3,
|
|
198
|
+
startX: 3,
|
|
199
|
+
gap: 6.5,
|
|
200
|
+
render: (x, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
201
|
+
"rect",
|
|
202
|
+
{
|
|
203
|
+
x,
|
|
204
|
+
y: 3,
|
|
205
|
+
width: 5,
|
|
206
|
+
height: 18,
|
|
207
|
+
rx: radius
|
|
208
|
+
},
|
|
209
|
+
i
|
|
210
|
+
)
|
|
211
|
+
}) }));
|
|
212
|
+
|
|
213
|
+
// src/icons/Landscape.tsx
|
|
214
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
215
|
+
var Landscape = createIcon("Landscape", ({ radius }) => {
|
|
216
|
+
const rows = [
|
|
217
|
+
{ y: 3, height: 5 },
|
|
218
|
+
{ y: 10, height: 5 },
|
|
219
|
+
{ y: 17, height: 4 }
|
|
220
|
+
];
|
|
221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment, { children: rows.map(({ y, height }, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
222
|
+
"rect",
|
|
223
|
+
{
|
|
224
|
+
x: 3,
|
|
225
|
+
y,
|
|
226
|
+
width: 18,
|
|
227
|
+
height,
|
|
228
|
+
rx: radius
|
|
229
|
+
},
|
|
230
|
+
i
|
|
231
|
+
)) });
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// src/icons/Card.tsx
|
|
235
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
236
|
+
var Card = createIcon("Card", ({ radius, variant }) => {
|
|
237
|
+
const outerPadding = 4;
|
|
238
|
+
const size = 16;
|
|
239
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
240
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
241
|
+
"rect",
|
|
242
|
+
{
|
|
243
|
+
x: outerPadding,
|
|
244
|
+
y: outerPadding,
|
|
245
|
+
width: size,
|
|
246
|
+
height: size,
|
|
247
|
+
rx: radius + 1
|
|
248
|
+
}
|
|
249
|
+
),
|
|
250
|
+
variant === "outline" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
251
|
+
"rect",
|
|
252
|
+
{
|
|
253
|
+
x: 6,
|
|
254
|
+
y: 7,
|
|
255
|
+
width: 12,
|
|
256
|
+
height: 2,
|
|
257
|
+
rx: 1
|
|
258
|
+
}
|
|
259
|
+
)
|
|
260
|
+
] });
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// src/icons/Split.tsx
|
|
264
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
265
|
+
var Split = createIcon("Split", ({ radius }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children: horizontalStack({
|
|
266
|
+
count: 2,
|
|
267
|
+
startX: 3,
|
|
268
|
+
gap: 10,
|
|
269
|
+
render: (x, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
270
|
+
"rect",
|
|
271
|
+
{
|
|
272
|
+
x,
|
|
273
|
+
y: 3,
|
|
274
|
+
width: 8,
|
|
275
|
+
height: 18,
|
|
276
|
+
rx: radius
|
|
277
|
+
},
|
|
278
|
+
i
|
|
279
|
+
)
|
|
280
|
+
}) }));
|
|
281
|
+
|
|
282
|
+
// src/icons/HamburgerMenu.tsx
|
|
283
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
284
|
+
var HamburgerMenu = createIcon(
|
|
285
|
+
"HamburgerMenu",
|
|
286
|
+
({ radius }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: verticalStack({
|
|
287
|
+
count: 3,
|
|
288
|
+
startY: 5,
|
|
289
|
+
gap: 5.75,
|
|
290
|
+
render: (y, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
291
|
+
"rect",
|
|
292
|
+
{
|
|
293
|
+
x: 3,
|
|
294
|
+
y,
|
|
295
|
+
width: 18,
|
|
296
|
+
height: 2.5,
|
|
297
|
+
rx: radius
|
|
298
|
+
},
|
|
299
|
+
i
|
|
300
|
+
)
|
|
301
|
+
}) })
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
// src/icons/Kebab.tsx
|
|
305
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
306
|
+
var Kebab = createIcon("Kebab", () => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jsx_runtime11.Fragment, { children: horizontalStack({
|
|
307
|
+
count: 3,
|
|
308
|
+
startX: 6,
|
|
309
|
+
gap: 6,
|
|
310
|
+
render: (x, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", { cx: x, cy: 12, r: 1.5 }, i)
|
|
311
|
+
}) }));
|
|
312
|
+
|
|
313
|
+
// src/icons/Meatballs.tsx
|
|
314
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
315
|
+
var Meatballs = createIcon("Meatballs", () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_jsx_runtime12.Fragment, { children: verticalStack({
|
|
316
|
+
count: 3,
|
|
317
|
+
startY: 6,
|
|
318
|
+
gap: 6,
|
|
319
|
+
render: (y, i) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("circle", { cx: 12, cy: y, r: 1.5 }, i)
|
|
320
|
+
}) }));
|
|
321
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
322
|
+
0 && (module.exports = {
|
|
323
|
+
Card,
|
|
324
|
+
Grid,
|
|
325
|
+
Grid3x3,
|
|
326
|
+
HamburgerMenu,
|
|
327
|
+
Kebab,
|
|
328
|
+
Landscape,
|
|
329
|
+
List,
|
|
330
|
+
Masonry,
|
|
331
|
+
Meatballs,
|
|
332
|
+
Split,
|
|
333
|
+
Tall
|
|
334
|
+
});
|