@vinyasa/icons 1.0.18

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/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # @vinyasa/icons
2
+
3
+ A curated set of icon components built on [`lucide-react`](https://lucide.dev/), each sized at `1em` by default so it scales automatically with the surrounding font size (e.g. dropped straight into `@vinyasa/button`'s `leadingIcon`/`trailingIcon` slots).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @vinyasa/icons react react-dom
9
+ ```
10
+
11
+ No dependency on `@vinyasa/tokens` — icons are plain presentational SVG wrappers, no theming involved.
12
+
13
+ ## Usage
14
+
15
+ ```tsx
16
+ import { PlusIcon } from '@vinyasa/icons';
17
+ import { Button } from '@vinyasa/button';
18
+
19
+ <Button leadingIcon={<PlusIcon />}>Add item</Button>;
20
+ ```
21
+
22
+ Icons inherit `currentColor` (lucide's own default), so they automatically match whatever text color is active — no per-icon color prop needed inside a themed component like Button.
23
+
24
+ Override size, color, or stroke width like any `lucide-react` icon — an explicit prop always wins over the `1em` default:
25
+
26
+ ```tsx
27
+ <PlusIcon size={24} color="red" strokeWidth={1.5} />
28
+ ```
29
+
30
+ ## Available icons
31
+
32
+ `AlertTriangleIcon`, `ArrowLeftIcon`, `ArrowRightIcon`, `CheckIcon`, `CheckCircleIcon`, `ChevronDownIcon`, `ChevronLeftIcon`, `ChevronRightIcon`, `ChevronUpIcon`, `CopyIcon`, `ExternalLinkIcon`, `EyeIcon`, `EyeOffIcon`, `InfoIcon`, `MenuIcon`, `MinusIcon`, `PencilIcon`, `PlusIcon`, `SearchIcon`, `SettingsIcon`, `TrashIcon`, `UserIcon`, `XIcon`.
33
+
34
+ See the `Foundations/Icons` Storybook gallery for a visual reference.
35
+
36
+ ## Adding a new icon
37
+
38
+ This is a deliberately curated subset of `lucide-react`'s full icon set, not a re-export of all of it. To add one:
39
+
40
+ ```ts
41
+ // src/icons/index.ts
42
+ import { Star } from 'lucide-react';
43
+ import { createIcon } from '../createIcon';
44
+
45
+ export const StarIcon = createIcon(Star);
46
+ ```
47
+
48
+ Then re-export it from `src/index.ts`. `createIcon` is also exported publicly for wrapping any other `lucide-react` icon with the same `1em`-default behavior, without adding it to this package's curated set:
49
+
50
+ ```tsx
51
+ import { Star } from 'lucide-react';
52
+ import { createIcon } from '@vinyasa/icons';
53
+
54
+ const StarIcon = createIcon(Star);
55
+ ```
56
+
57
+ ## Development
58
+
59
+ From the repository root:
60
+
61
+ ```bash
62
+ pnpm --filter @vinyasa/icons build
63
+ pnpm --filter @vinyasa/icons test
64
+ pnpm --filter @vinyasa/icons lint
65
+ pnpm storybook # Foundations/Icons
66
+ ```
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ AlertTriangleIcon: ()=>AlertTriangleIcon,
32
+ ArrowLeftIcon: ()=>ArrowLeftIcon,
33
+ ArrowRightIcon: ()=>ArrowRightIcon,
34
+ CheckCircleIcon: ()=>CheckCircleIcon,
35
+ CheckIcon: ()=>CheckIcon,
36
+ ChevronDownIcon: ()=>ChevronDownIcon,
37
+ ChevronLeftIcon: ()=>ChevronLeftIcon,
38
+ ChevronRightIcon: ()=>ChevronRightIcon,
39
+ ChevronUpIcon: ()=>ChevronUpIcon,
40
+ CopyIcon: ()=>CopyIcon,
41
+ ExternalLinkIcon: ()=>ExternalLinkIcon,
42
+ EyeIcon: ()=>EyeIcon,
43
+ EyeOffIcon: ()=>EyeOffIcon,
44
+ InfoIcon: ()=>InfoIcon,
45
+ MenuIcon: ()=>MenuIcon,
46
+ MinusIcon: ()=>MinusIcon,
47
+ PencilIcon: ()=>PencilIcon,
48
+ PlusIcon: ()=>PlusIcon,
49
+ SearchIcon: ()=>SearchIcon,
50
+ SettingsIcon: ()=>SettingsIcon,
51
+ TrashIcon: ()=>TrashIcon,
52
+ UserIcon: ()=>UserIcon,
53
+ XIcon: ()=>XIcon,
54
+ createIcon: ()=>createIcon
55
+ });
56
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
57
+ const external_react_namespaceObject = require("react");
58
+ function _define_property(obj, key, value) {
59
+ if (key in obj) Object.defineProperty(obj, key, {
60
+ value: value,
61
+ enumerable: true,
62
+ configurable: true,
63
+ writable: true
64
+ });
65
+ else obj[key] = value;
66
+ return obj;
67
+ }
68
+ function _object_spread(target) {
69
+ for(var i = 1; i < arguments.length; i++){
70
+ var source = null != arguments[i] ? arguments[i] : {};
71
+ var ownKeys = Object.keys(source);
72
+ if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
73
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
74
+ }));
75
+ ownKeys.forEach(function(key) {
76
+ _define_property(target, key, source[key]);
77
+ });
78
+ }
79
+ return target;
80
+ }
81
+ const createIcon = (LucideIcon)=>{
82
+ const Icon = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)((props, ref)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(LucideIcon, _object_spread({
83
+ ref: ref,
84
+ size: "1em"
85
+ }, props)));
86
+ Icon.displayName = LucideIcon.displayName;
87
+ return Icon;
88
+ };
89
+ const external_lucide_react_namespaceObject = require("lucide-react");
90
+ const AlertTriangleIcon = createIcon(external_lucide_react_namespaceObject.AlertTriangle);
91
+ const ArrowLeftIcon = createIcon(external_lucide_react_namespaceObject.ArrowLeft);
92
+ const ArrowRightIcon = createIcon(external_lucide_react_namespaceObject.ArrowRight);
93
+ const CheckIcon = createIcon(external_lucide_react_namespaceObject.Check);
94
+ const CheckCircleIcon = createIcon(external_lucide_react_namespaceObject.CheckCircle2);
95
+ const ChevronDownIcon = createIcon(external_lucide_react_namespaceObject.ChevronDown);
96
+ const ChevronLeftIcon = createIcon(external_lucide_react_namespaceObject.ChevronLeft);
97
+ const ChevronRightIcon = createIcon(external_lucide_react_namespaceObject.ChevronRight);
98
+ const ChevronUpIcon = createIcon(external_lucide_react_namespaceObject.ChevronUp);
99
+ const CopyIcon = createIcon(external_lucide_react_namespaceObject.Copy);
100
+ const ExternalLinkIcon = createIcon(external_lucide_react_namespaceObject.ExternalLink);
101
+ const EyeIcon = createIcon(external_lucide_react_namespaceObject.Eye);
102
+ const EyeOffIcon = createIcon(external_lucide_react_namespaceObject.EyeOff);
103
+ const InfoIcon = createIcon(external_lucide_react_namespaceObject.Info);
104
+ const MenuIcon = createIcon(external_lucide_react_namespaceObject.Menu);
105
+ const MinusIcon = createIcon(external_lucide_react_namespaceObject.Minus);
106
+ const PencilIcon = createIcon(external_lucide_react_namespaceObject.Pencil);
107
+ const PlusIcon = createIcon(external_lucide_react_namespaceObject.Plus);
108
+ const SearchIcon = createIcon(external_lucide_react_namespaceObject.Search);
109
+ const SettingsIcon = createIcon(external_lucide_react_namespaceObject.Settings);
110
+ const TrashIcon = createIcon(external_lucide_react_namespaceObject.Trash2);
111
+ const UserIcon = createIcon(external_lucide_react_namespaceObject.User);
112
+ const XIcon = createIcon(external_lucide_react_namespaceObject.X);
113
+ exports.AlertTriangleIcon = __webpack_exports__.AlertTriangleIcon;
114
+ exports.ArrowLeftIcon = __webpack_exports__.ArrowLeftIcon;
115
+ exports.ArrowRightIcon = __webpack_exports__.ArrowRightIcon;
116
+ exports.CheckCircleIcon = __webpack_exports__.CheckCircleIcon;
117
+ exports.CheckIcon = __webpack_exports__.CheckIcon;
118
+ exports.ChevronDownIcon = __webpack_exports__.ChevronDownIcon;
119
+ exports.ChevronLeftIcon = __webpack_exports__.ChevronLeftIcon;
120
+ exports.ChevronRightIcon = __webpack_exports__.ChevronRightIcon;
121
+ exports.ChevronUpIcon = __webpack_exports__.ChevronUpIcon;
122
+ exports.CopyIcon = __webpack_exports__.CopyIcon;
123
+ exports.ExternalLinkIcon = __webpack_exports__.ExternalLinkIcon;
124
+ exports.EyeIcon = __webpack_exports__.EyeIcon;
125
+ exports.EyeOffIcon = __webpack_exports__.EyeOffIcon;
126
+ exports.InfoIcon = __webpack_exports__.InfoIcon;
127
+ exports.MenuIcon = __webpack_exports__.MenuIcon;
128
+ exports.MinusIcon = __webpack_exports__.MinusIcon;
129
+ exports.PencilIcon = __webpack_exports__.PencilIcon;
130
+ exports.PlusIcon = __webpack_exports__.PlusIcon;
131
+ exports.SearchIcon = __webpack_exports__.SearchIcon;
132
+ exports.SettingsIcon = __webpack_exports__.SettingsIcon;
133
+ exports.TrashIcon = __webpack_exports__.TrashIcon;
134
+ exports.UserIcon = __webpack_exports__.UserIcon;
135
+ exports.XIcon = __webpack_exports__.XIcon;
136
+ exports.createIcon = __webpack_exports__.createIcon;
137
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
138
+ "AlertTriangleIcon",
139
+ "ArrowLeftIcon",
140
+ "ArrowRightIcon",
141
+ "CheckCircleIcon",
142
+ "CheckIcon",
143
+ "ChevronDownIcon",
144
+ "ChevronLeftIcon",
145
+ "ChevronRightIcon",
146
+ "ChevronUpIcon",
147
+ "CopyIcon",
148
+ "ExternalLinkIcon",
149
+ "EyeIcon",
150
+ "EyeOffIcon",
151
+ "InfoIcon",
152
+ "MenuIcon",
153
+ "MinusIcon",
154
+ "PencilIcon",
155
+ "PlusIcon",
156
+ "SearchIcon",
157
+ "SettingsIcon",
158
+ "TrashIcon",
159
+ "UserIcon",
160
+ "XIcon",
161
+ "createIcon"
162
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
163
+ Object.defineProperty(exports, '__esModule', {
164
+ value: true
165
+ });
@@ -0,0 +1,4 @@
1
+ import type { LucideProps } from 'lucide-react';
2
+ import { type ComponentType } from 'react';
3
+ export type IconProps = LucideProps;
4
+ export declare const createIcon: (LucideIcon: ComponentType<LucideProps>) => import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
@@ -0,0 +1,23 @@
1
+ export declare const AlertTriangleIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
2
+ export declare const ArrowLeftIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
3
+ export declare const ArrowRightIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
4
+ export declare const CheckIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
5
+ export declare const CheckCircleIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
6
+ export declare const ChevronDownIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
7
+ export declare const ChevronLeftIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
8
+ export declare const ChevronRightIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
9
+ export declare const ChevronUpIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
10
+ export declare const CopyIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
11
+ export declare const ExternalLinkIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
12
+ export declare const EyeIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
13
+ export declare const EyeOffIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
14
+ export declare const InfoIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
15
+ export declare const MenuIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
16
+ export declare const MinusIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
17
+ export declare const PencilIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
18
+ export declare const PlusIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
19
+ export declare const SearchIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
20
+ export declare const SettingsIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
21
+ export declare const TrashIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
22
+ export declare const UserIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
23
+ export declare const XIcon: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
@@ -0,0 +1,2 @@
1
+ export { createIcon, type IconProps } from './createIcon';
2
+ export { AlertTriangleIcon, ArrowLeftIcon, ArrowRightIcon, CheckIcon, CheckCircleIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CopyIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, InfoIcon, MenuIcon, MinusIcon, PencilIcon, PlusIcon, SearchIcon, SettingsIcon, TrashIcon, UserIcon, XIcon, } from './icons';
@@ -0,0 +1,36 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { AlertTriangle, ArrowLeft, ArrowRight, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Copy, ExternalLink, Eye, EyeOff, Info, Menu, Minus, Pencil, Plus, Search, Settings, Trash2, User, X } from "lucide-react";
4
+ const createIcon = (LucideIcon)=>{
5
+ const Icon = /*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ jsx(LucideIcon, {
6
+ ref: ref,
7
+ size: "1em",
8
+ ...props
9
+ }));
10
+ Icon.displayName = LucideIcon.displayName;
11
+ return Icon;
12
+ };
13
+ const AlertTriangleIcon = createIcon(AlertTriangle);
14
+ const ArrowLeftIcon = createIcon(ArrowLeft);
15
+ const ArrowRightIcon = createIcon(ArrowRight);
16
+ const CheckIcon = createIcon(Check);
17
+ const CheckCircleIcon = createIcon(CheckCircle2);
18
+ const ChevronDownIcon = createIcon(ChevronDown);
19
+ const ChevronLeftIcon = createIcon(ChevronLeft);
20
+ const ChevronRightIcon = createIcon(ChevronRight);
21
+ const ChevronUpIcon = createIcon(ChevronUp);
22
+ const CopyIcon = createIcon(Copy);
23
+ const ExternalLinkIcon = createIcon(ExternalLink);
24
+ const EyeIcon = createIcon(Eye);
25
+ const EyeOffIcon = createIcon(EyeOff);
26
+ const InfoIcon = createIcon(Info);
27
+ const MenuIcon = createIcon(Menu);
28
+ const MinusIcon = createIcon(Minus);
29
+ const PencilIcon = createIcon(Pencil);
30
+ const PlusIcon = createIcon(Plus);
31
+ const SearchIcon = createIcon(Search);
32
+ const SettingsIcon = createIcon(Settings);
33
+ const TrashIcon = createIcon(Trash2);
34
+ const UserIcon = createIcon(User);
35
+ const XIcon = createIcon(X);
36
+ export { AlertTriangleIcon, ArrowLeftIcon, ArrowRightIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CopyIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, InfoIcon, MenuIcon, MinusIcon, PencilIcon, PlusIcon, SearchIcon, SettingsIcon, TrashIcon, UserIcon, XIcon, createIcon };
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@vinyasa/icons",
3
+ "version": "1.0.18",
4
+ "private": false,
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "files": [
8
+ "dist",
9
+ "!dist/**/*.map",
10
+ "!dist/**/__test__/**",
11
+ "!dist/**/__story__/**",
12
+ "!dist/**/*.test.d.ts",
13
+ "!dist/**/*.stories.d.ts"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "main": "./dist/cjs/index.cjs",
19
+ "module": "./dist/esm/index.js",
20
+ "types": "./dist/esm/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/esm/index.d.ts",
24
+ "import": "./dist/esm/index.js",
25
+ "require": "./dist/cjs/index.cjs",
26
+ "default": "./dist/esm/index.js"
27
+ },
28
+ "./package.json": "./package.json"
29
+ },
30
+ "peerDependencies": {
31
+ "react": "^18.0.0 || ^19.0.0",
32
+ "react-dom": "^18.0.0 || ^19.0.0"
33
+ },
34
+ "dependencies": {
35
+ "lucide-react": "^1.41.0"
36
+ },
37
+ "devDependencies": {
38
+ "@rsbuild/plugin-react": "^2.1.0",
39
+ "@rslib/core": "^0.23.1",
40
+ "@storybook/react-vite": "^10.4.6",
41
+ "@types/node": "^26.0.1",
42
+ "@types/react": "^19.0.0",
43
+ "typescript": "^5.7.3",
44
+ "@vinyasa/tokens": "1.0.18"
45
+ },
46
+ "scripts": {
47
+ "build": "rslib build && node ../../scripts/postbuild-package.mjs",
48
+ "typecheck": "tsc --noEmit -p tsconfig.json",
49
+ "lint": "eslint --config ../../configs/eslint.config.mjs src/**/*.{ts,tsx} --ignore-pattern src/**/__story__/** --ignore-pattern src/**/__test__/**",
50
+ "lint:fix": "eslint --config ../../configs/eslint.config.mjs src/**/*.{ts,tsx} --ignore-pattern src/**/__story__/** --ignore-pattern src/**/__test__/** --fix",
51
+ "format": "prettier . --config ../../configs/prettier.config.json --ignore-path ../../configs/.prettierignore --write",
52
+ "format:check": "prettier . --config ../../configs/prettier.config.json --ignore-path ../../configs/.prettierignore --check",
53
+ "test": "vitest run --config vitest.config.ts",
54
+ "test:watch": "vitest --config vitest.config.ts",
55
+ "test:coverage": "vitest run --config vitest.config.ts --coverage",
56
+ "pack:check": "npm pack --dry-run"
57
+ }
58
+ }