@thinkhuman/react-native-simple-icons 16.30.0 → 16.31.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/NOTICE.md CHANGED
@@ -3,3 +3,5 @@
3
3
  Icon data is generated from [`simple-icons`](https://github.com/simple-icons/simple-icons), which is licensed under CC0-1.0.
4
4
 
5
5
  Brand names and trademarks belong to their owners.
6
+
7
+ The website in `site/` is adapted from the [simpleicons.org website](https://github.com/simple-icons/simple-icons-website-rs), which is dedicated to the public domain under CC0-1.0.
package/README.md CHANGED
@@ -1,13 +1,21 @@
1
1
  <p align="center">
2
- <img src="./assets/simple-icons.svg" width="90" height="80" alt="Simple Icons">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/simple-icons-dark.svg">
4
+ <source media="(prefers-color-scheme: light)" srcset="./assets/simple-icons.svg">
5
+ <img src="./assets/simple-icons.svg" width="90" height="80" alt="Simple Icons">
6
+ </picture>
3
7
  </p>
4
8
 
5
- <h1 align="center">@thinkhuman/react-native-simple-icons</h1>
9
+ <h1 align="center">React Native Simple Icons</h1>
6
10
 
7
11
  <p align="center">
8
- React Native icon components generated from the upstream <a href="https://www.npmjs.com/package/simple-icons">simple-icons</a> package.
12
+ <a href="https://simpleicons.org">Simple Icons</a> for React Native and Expo: 3,400+ brand and logo icons as typed SVG components, updated automatically with every <a href="https://www.npmjs.com/package/simple-icons">simple-icons</a> release.
9
13
  </p>
10
14
 
15
+ <p align="center"><code>@thinkhuman/react-native-simple-icons</code></p>
16
+
17
+ <p align="center"><a href="https://thinkhumandotdev.github.io/react-native-simple-icons/"><strong>Browse all icons →</strong></a></p>
18
+
11
19
  <p align="center">
12
20
  <a href="https://www.npmjs.com/package/@thinkhuman/react-native-simple-icons"><img src="https://img.shields.io/npm/v/@thinkhuman/react-native-simple-icons.svg" alt="npm version"></a>
13
21
  <a href="https://github.com/ThinkHumanDotDev/react-native-simple-icons/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/ThinkHumanDotDev/react-native-simple-icons/ci.yml?branch=main" alt="CI status"></a>
@@ -20,165 +28,60 @@
20
28
  npm install @thinkhuman/react-native-simple-icons react-native-svg
21
29
  ```
22
30
 
31
+ Using Expo? Install `react-native-svg` with `npx expo install react-native-svg` so it matches your SDK.
32
+
23
33
  ## Usage
24
34
 
25
- ```tsx
26
- import { SiReact } from "@thinkhuman/react-native-simple-icons";
35
+ Find an icon on [simpleicons.org](https://simpleicons.org). Icons are exported as `Si` followed by the name run
36
+ together and the first letter capitalised, for instance:
27
37
 
28
- export function Example() {
29
- return <SiReact size={32} color="default" />;
30
- }
31
- ```
38
+ - [`Material Design`](https://simpleicons.org/?q=material%20design) is `SiMaterialdesign`
39
+ - [`GitHub Actions`](https://simpleicons.org/?q=github%20actions) is `SiGithubactions`
32
40
 
33
- ```tsx
34
- import { SiGithub } from "@thinkhuman/react-native-simple-icons";
35
-
36
- export function Example() {
37
- return <SiGithub size={24} color="#000" accessibilityLabel="GitHub" />;
38
- }
39
- ```
40
-
41
- Each icon exports its component and metadata:
41
+ ## Basic example
42
42
 
43
43
  ```tsx
44
- import { SiReact, SiReactHex, SiReactSlug, SiReactTitle } from "@thinkhuman/react-native-simple-icons";
45
- ```
46
-
47
- `color="default"` uses the brand color from `simple-icons`. The regular color default is `"black"` because React Native support for `"currentColor"` is not consistent across targets.
48
-
49
- ## API
50
-
51
- ```ts
52
- import type { SvgProps } from "react-native-svg";
53
-
54
- export type IconProps = Omit<SvgProps, "color"> & {
55
- size?: number | string;
56
- color?: string | "default";
57
- title?: string;
58
- };
59
- ```
60
-
61
- Icons render with `viewBox="0 0 24 24"`. Remaining props are passed to `Svg`.
62
-
63
- ## Generation
64
-
65
- Generate icons with:
66
-
67
- ```sh
68
- bun run generate:icons
69
- ```
70
-
71
- The generator imports all icon data from `simple-icons`, writes `src/icons`, writes `src/index.ts`, and records the processed version plus per-icon hashes in `src/simple-icons-manifest.json`.
72
-
73
- Generated output is deterministic. Running the generator twice with the same `simple-icons` version should not change files.
74
-
75
- ## Validation
76
-
77
- Run the full local check with:
44
+ import { SiReact } from "@thinkhuman/react-native-simple-icons";
78
45
 
79
- ```sh
80
- bun run validate
46
+ function BasicExample() {
47
+ return <SiReact color="#61DAFB" size={24} />;
48
+ }
81
49
  ```
82
50
 
83
- CI runs the generator, checks `git diff --exit-code`, then runs typecheck, tests, and build.
84
-
85
- ## Versioning
51
+ ## Change title
86
52
 
87
- The npm package version matches the processed `simple-icons` version (for example `16.19.0`). `bun run generate:icons` updates `package.json` and `src/simple-icons-manifest.json` together, so icon updates and the publishable version stay aligned.
53
+ Each icon has an accessibility label that defaults to the brand name.
88
54
 
89
- ## Updates
90
-
91
- `.github/workflows/update-icons.yml` runs every 3 days and can be started manually. It updates `simple-icons`, regenerates icons, classifies the changes, runs validation, and opens a PR when files changed.
92
-
93
- The update PR body includes the previous and new processed versions, added icons, removed icons, changed icons, suggested release type, and detected breaking changes.
94
-
95
- ## Expanding on this project
96
-
97
- Install dependencies with:
98
-
99
- ```sh
100
- bun install
55
+ ```tsx
56
+ // title defaults to "React"
57
+ <SiReact title="My title" size={24} />
101
58
  ```
102
59
 
103
- Use Bun for local development. The package is ESM-only and builds with `tsc` through `scripts/build-package.ts`.
104
-
105
- The following files are generated:
60
+ ## Use default color
106
61
 
107
- - `src/icons` contains one generated component per icon.
108
- - `src/index.ts` contains generated named exports.
109
- - `src/simple-icons-manifest.json` records the processed `simple-icons` version, component API hash, icon names, and per-icon hashes.
62
+ Set `color` to `default` to use the brand color.
110
63
 
111
- `dist` is the build output and should not be committed.
112
-
113
- Common commands:
114
-
115
- ```sh
116
- bun run generate:icons
117
- bun run classify:changes
118
- bun run typecheck
119
- bun run build
120
- bun run smoke:react-native
121
- bun run test
122
- bun run validate
64
+ ```tsx
65
+ <SiReact color="default" size={24} />
123
66
  ```
124
67
 
125
- `bun run smoke:react-native` builds the package, creates a temporary React Native fixture, imports the package through Metro, and bundles it. This catches package export and React Native resolution problems that a plain Node import cannot catch.
126
-
127
- To test the packed package in an app:
128
-
129
- ```sh
130
- bun run validate
131
- npm pack
132
- ```
68
+ ### Use default color as hex
133
69
 
134
- Install the generated `.tgz` file into a fresh Expo or React Native app, then test both root imports and per-icon imports:
70
+ Append `Hex` to the icon name to get the brand color as a hex string (without the `#`).
135
71
 
136
72
  ```tsx
137
- import { SiReact } from "@thinkhuman/react-native-simple-icons";
138
- import { SiYoutube } from "@thinkhuman/react-native-simple-icons/icons/SiYoutube";
139
- ```
73
+ import { SiReact, SiReactHex } from "@thinkhuman/react-native-simple-icons";
140
74
 
141
- Before publishing locally, run:
142
-
143
- ```sh
144
- bun run validate
145
- npm pack --dry-run
75
+ <SiReact color={`#${SiReactHex}`} size={24} />;
146
76
  ```
147
77
 
148
- `prepublishOnly` runs the same validation and dry-run pack check when you `npm publish` from your machine. The package publishes only `dist`, the manifest, README, license, notice, and package metadata.
149
-
150
- ### Automated publish (GitHub Actions)
151
-
152
- Pushes to `main` on the upstream repo run [`.github/workflows/publish.yml`](.github/workflows/publish.yml) when `package.json` has a version that is not already on npm. Merging an icon update (or running `generate:icons` after bumping `simple-icons`) sets the version automatically; CI validates, publishes to npm, and creates a matching GitHub release (`v16.19.0`, etc.) with icon change notes.
153
-
154
- Forks cannot trigger a publish: the workflow checks `github.repository`, only runs on `push` to `main` (never on `pull_request` / `pull_request_target`), and does not use shared Actions caches.
155
-
156
- **One-time setup** uses [npm Trusted Publishers](https://docs.npmjs.com/trusted-publishers) (OIDC). No `NPM_TOKEN` secret is stored in GitHub.
157
-
158
- 1. On [npm](https://www.npmjs.com/package/@thinkhuman/react-native-simple-icons) → **Settings** → **Publishing access** → **Add Trusted Publisher**:
159
- - Publisher: **GitHub Actions**
160
- - Organization or user: `ThinkHumanDotDev`
161
- - Repository: `react-native-simple-icons`
162
- - Workflow filename: `publish.yml`
163
- - Environment name: `npm`
164
- 2. On GitHub → **Settings → Environments** → **`npm`** (you already created this). Optionally add required reviewers or limit deployments to the `main` branch.
165
- 3. Push this repository to GitHub so the trusted publisher can match the workflow run.
166
-
167
- The publish job uses `environment: npm` and `id-token: write`; `actions/setup-node` exchanges the OIDC token with npm at publish time.
168
-
169
- You can also run the workflow manually from the Actions tab (`workflow_dispatch`).
170
-
171
- When `simple-icons` releases a new version, use the update workflow or run the same steps locally:
172
-
173
- ```sh
174
- bun add --dev --exact simple-icons@latest
175
- bun run generate:icons
176
- bun run classify:changes --markdown .github/update-summary.md --json .github/update-summary.json
177
- bun run validate
178
- ```
78
+ ## Versioning
179
79
 
180
- Commit generated icon updates separately from tooling or documentation changes when possible. A typical update commit only changes `bun.lock`, `package.json`, `src/icons`, `src/index.ts`, and `src/simple-icons-manifest.json`.
80
+ Versions match the [simple-icons](https://github.com/simple-icons/simple-icons/releases) release they are built
81
+ from, and new releases are picked up automatically. Missing or outdated icons are fixed
82
+ [upstream](https://github.com/simple-icons/simple-icons).
181
83
 
182
84
  ## License
183
85
 
184
- This package is MIT licensed. Icon data is generated from `simple-icons`, which is CC0-1.0.
86
+ MIT. Icon data comes from simple-icons (CC0-1.0); brand names and trademarks belong to their owners. Contributions
87
+ are welcome, see [CONTRIBUTING.md](CONTRIBUTING.md).
@@ -0,0 +1,4 @@
1
+ <svg role="img" width="90" height="80" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <title>Simple Icons</title>
3
+ <path fill="#ffffff" d="M18 6a6 6 0 10-6 6 6 6 0 015.35 9h1.5A7.5 7.5 0 0012 10.5 4.5 4.5 0 1116.5 6Zm-6-3a3 3 0 000 6 1 1 0 000-6m0 1.5a1.5 1.5 0 010 3 1 1 0 010-3M7.5 15v1.5H9v6H4.5V24h15v-1.5H15v-6h1.5V15Zm3 1.5h3v6h-3zm-6 1.5a7.5 7.5 0 00.7 3h1.5a6 6 0 01-.7-3Z"/>
4
+ </svg>
@@ -1,4 +1,4 @@
1
1
  <svg role="img" width="90" height="80" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
2
  <title>Simple Icons</title>
3
- <path d="M18 6a6 6 0 10-6 6 6 6 0 015.35 9h1.5A7.5 7.5 0 0012 10.5 4.5 4.5 0 1116.5 6Zm-6-3a3 3 0 000 6 1 1 0 000-6m0 1.5a1.5 1.5 0 010 3 1 1 0 010-3M7.5 15v1.5H9v6H4.5V24h15v-1.5H15v-6h1.5V15Zm3 1.5h3v6h-3zm-6 1.5a7.5 7.5 0 00.7 3h1.5a6 6 0 01-.7-3Z"/>
3
+ <path fill="#000000" d="M18 6a6 6 0 10-6 6 6 6 0 015.35 9h1.5A7.5 7.5 0 0012 10.5 4.5 4.5 0 1116.5 6Zm-6-3a3 3 0 000 6 1 1 0 000-6m0 1.5a1.5 1.5 0 010 3 1 1 0 010-3M7.5 15v1.5H9v6H4.5V24h15v-1.5H15v-6h1.5V15Zm3 1.5h3v6h-3zm-6 1.5a7.5 7.5 0 00.7 3h1.5a6 6 0 01-.7-3Z"/>
4
4
  </svg>
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import type { IconProps } from "../types.js";
3
+ export declare const SiAlphaxivHex = "9A2036";
4
+ export declare const SiAlphaxivTitle = "alphaXiv";
5
+ export declare const SiAlphaxivSlug = "alphaxiv";
6
+ export declare function SiAlphaxiv({ size, color, title, ...props }: IconProps): React.ReactElement;
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import { Path, Svg } from "react-native-svg";
3
+ export const SiAlphaxivHex = "9A2036";
4
+ export const SiAlphaxivTitle = "alphaXiv";
5
+ export const SiAlphaxivSlug = "alphaxiv";
6
+ export function SiAlphaxiv({ size = 24, color = "black", title, ...props }) {
7
+ const resolvedColor = color === "default" ? `#${SiAlphaxivHex}` : color;
8
+ return (React.createElement(Svg, { width: size, height: size, viewBox: "0 0 24 24", accessibilityLabel: title ?? SiAlphaxivTitle, ...props },
9
+ React.createElement(Path, { fill: resolvedColor, d: "M19.749 12.21 24 16.46l-1.827 1.821-4.248-4.23zm-10.6-8.626a4.03 4.03 0 0 1 3.09 1.12L15.4 7.867l-1.841 1.822-3.232-3.226A1.38 1.38 0 0 0 8.55 6.5l-6.725 6.722L0 11.399l6.84-6.837a4.06 4.06 0 0 1 2.309-.979m13.026.033L24 5.44 10.032 19.403c-3.823 3.204-8.805-1.788-5.58-5.598l5.361-5.356 1.825 1.824-5.274 5.271c-1.108 1.347.633 3.054 1.96 1.921z" })));
10
+ }
package/dist/index.d.ts CHANGED
@@ -107,6 +107,7 @@ export { SiAllegro, SiAllegroHex, SiAllegroSlug, SiAllegroTitle } from "./icons/
107
107
  export { SiAlliedmodders, SiAlliedmoddersHex, SiAlliedmoddersSlug, SiAlliedmoddersTitle } from "./icons/SiAlliedmodders.js";
108
108
  export { SiAlltrails, SiAlltrailsHex, SiAlltrailsSlug, SiAlltrailsTitle } from "./icons/SiAlltrails.js";
109
109
  export { SiAlmalinux, SiAlmalinuxHex, SiAlmalinuxSlug, SiAlmalinuxTitle } from "./icons/SiAlmalinux.js";
110
+ export { SiAlphaxiv, SiAlphaxivHex, SiAlphaxivSlug, SiAlphaxivTitle } from "./icons/SiAlphaxiv.js";
110
111
  export { SiAlpinedotjs, SiAlpinedotjsHex, SiAlpinedotjsSlug, SiAlpinedotjsTitle } from "./icons/SiAlpinedotjs.js";
111
112
  export { SiAlpinelinux, SiAlpinelinuxHex, SiAlpinelinuxSlug, SiAlpinelinuxTitle } from "./icons/SiAlpinelinux.js";
112
113
  export { SiAlternativeto, SiAlternativetoHex, SiAlternativetoSlug, SiAlternativetoTitle } from "./icons/SiAlternativeto.js";
package/dist/index.js CHANGED
@@ -106,6 +106,7 @@ export { SiAllegro, SiAllegroHex, SiAllegroSlug, SiAllegroTitle } from "./icons/
106
106
  export { SiAlliedmodders, SiAlliedmoddersHex, SiAlliedmoddersSlug, SiAlliedmoddersTitle } from "./icons/SiAlliedmodders.js";
107
107
  export { SiAlltrails, SiAlltrailsHex, SiAlltrailsSlug, SiAlltrailsTitle } from "./icons/SiAlltrails.js";
108
108
  export { SiAlmalinux, SiAlmalinuxHex, SiAlmalinuxSlug, SiAlmalinuxTitle } from "./icons/SiAlmalinux.js";
109
+ export { SiAlphaxiv, SiAlphaxivHex, SiAlphaxivSlug, SiAlphaxivTitle } from "./icons/SiAlphaxiv.js";
109
110
  export { SiAlpinedotjs, SiAlpinedotjsHex, SiAlpinedotjsSlug, SiAlpinedotjsTitle } from "./icons/SiAlpinedotjs.js";
110
111
  export { SiAlpinelinux, SiAlpinelinuxHex, SiAlpinelinuxSlug, SiAlpinelinuxTitle } from "./icons/SiAlpinelinux.js";
111
112
  export { SiAlternativeto, SiAlternativetoHex, SiAlternativetoSlug, SiAlternativetoTitle } from "./icons/SiAlternativeto.js";
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@thinkhuman/react-native-simple-icons",
3
- "version": "16.30.0",
4
- "description": "React Native components generated from simple-icons data.",
3
+ "version": "16.31.0",
4
+ "description": "React Native Simple Icons: 3,400+ brand and logo icons from Simple Icons as typed React Native and Expo SVG components.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": "ThinkHuman",
8
- "homepage": "https://github.com/ThinkHumanDotDev/react-native-simple-icons#readme",
8
+ "homepage": "https://thinkhumandotdev.github.io/react-native-simple-icons/",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/ThinkHumanDotDev/react-native-simple-icons.git"
@@ -15,11 +15,21 @@
15
15
  },
16
16
  "keywords": [
17
17
  "react-native",
18
- "expo",
18
+ "react-native-simple-icons",
19
19
  "simple-icons",
20
+ "expo",
21
+ "expo-icons",
20
22
  "icons",
23
+ "brand-icons",
24
+ "brand-logos",
25
+ "logos",
26
+ "logo",
21
27
  "svg",
22
- "react-native-svg"
28
+ "svg-icons",
29
+ "react-native-svg",
30
+ "react-native-icons",
31
+ "social-icons",
32
+ "typescript"
23
33
  ],
24
34
  "sideEffects": false,
25
35
  "files": [
@@ -57,6 +67,7 @@
57
67
  "generate:icons": "bun scripts/generate-icons.ts",
58
68
  "classify:changes": "bun scripts/classify-changes.ts",
59
69
  "build": "bun scripts/build-package.ts",
70
+ "build:site": "bun scripts/build-site.ts",
60
71
  "smoke:react-native": "bun scripts/smoke-react-native.ts",
61
72
  "typecheck": "tsc --noEmit",
62
73
  "test": "vitest run",
@@ -75,7 +86,7 @@
75
86
  "react": "^18.3.1",
76
87
  "react-native": "^0.76.5",
77
88
  "react-native-svg": "^15.10.1",
78
- "simple-icons": "16.30.0",
89
+ "simple-icons": "16.31.0",
79
90
  "typescript": "^5.7.2",
80
91
  "vitest": "^2.1.8"
81
92
  },
@@ -1,7 +1,7 @@
1
1
  {
2
- "simpleIconsVersion": "16.30.0",
2
+ "simpleIconsVersion": "16.31.0",
3
3
  "componentApiHash": "6dc22d1820219f72f2f5a625c1f72349159eff5766d8884714f61688a25df1e7",
4
- "count": 3459,
4
+ "count": 3460,
5
5
  "iconNames": [
6
6
  "Si1001Tracklists",
7
7
  "Si1And1",
@@ -111,6 +111,7 @@
111
111
  "SiAlliedmodders",
112
112
  "SiAlltrails",
113
113
  "SiAlmalinux",
114
+ "SiAlphaxiv",
114
115
  "SiAlpinedotjs",
115
116
  "SiAlpinelinux",
116
117
  "SiAlternativeto",
@@ -4112,6 +4113,12 @@
4112
4113
  "hex": "000000",
4113
4114
  "hash": "974c1fc4258b5159d4b5a8aae8bd1f523c7b9e24730b3e5f546a8b88174b7cee"
4114
4115
  },
4116
+ "SiAlphaxiv": {
4117
+ "title": "alphaXiv",
4118
+ "slug": "alphaxiv",
4119
+ "hex": "9A2036",
4120
+ "hash": "2c59cb193ba323746fe3005cf8065c1db2aed61162d5d3b283590ff277084902"
4121
+ },
4115
4122
  "SiAlpinedotjs": {
4116
4123
  "title": "Alpine.js",
4117
4124
  "slug": "alpinedotjs",