naive-icons 1.0.1 → 1.0.3

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 CHANGED
@@ -4,19 +4,27 @@
4
4
 
5
5
  ## Unreleased
6
6
 
7
- 官方文档站点重构。图标与组件产物无任何变更。
7
+ 官方文档站点重构,并新增 4 个方向键图标。
8
8
 
9
9
  改进
10
10
 
11
11
  - 官网三层(HTML / CSS / JS)完全重写:语义化标签、统一的设计令牌体系(间距 4px 基数、圆角与阴影尺度)、清除模板导出的冗余属性
12
12
  - 信息架构收敛:原先并列的 4 个代码面板合并为「安装 / React / SVG / TypeScript」标签页,调色板与设计原则合并为「设计规范」一节
13
13
  - 视觉基调改为温暖手绘:纸张颗粒纹理、暖调深色模式、手绘分隔线,浅色与深色主题均可手动切换并记忆
14
+ - 新增 4 个方向键图标:上(arrow-up)、下(arrow-down)、左(arrow-left)、右(arrow-right),与已有的关闭(close)图标组成基础方向/操作图标组;同步更新 `index.ts`、`types.ts`、`svg/` 与官网数据
14
15
  - 引入 LXGW 悠哉字体(OFL,自托管子集化,仅 715 个字符 ≈ 170KB ×2 个字重)作为网站字体;图标库本体仍无任何字体/资源依赖
15
16
  - 图标浏览器工具栏在宽屏下吸顶,新增分类结果计数、搜索清空、描边快捷色板与自定义取色器
16
17
  - 预览切换深色底时,若描边仍为默认墨黑会自动换成奶油色,避免图标不可见;用户显式选择的颜色不会被改写
17
18
  - 详情弹窗支持键盘方向键连续切换图标,打开时背景内容设为 inert
18
19
  - 无障碍补强:skip link、aria-live 结果计数、标签页方向键切换、焦点归还
19
20
 
21
+ ## 1.0.2
22
+
23
+ 修复
24
+
25
+ - 修复组件不传 `size` 时没有明确尺寸的问题:`normalizeIconProps` 现在始终向 svg 写入 `width` / `height`,默认 24,保证 `<HomeIcon />` 也有稳定的 24px 尺寸
26
+ - 顺手补上默认 `fill="none"`,避免与 SVG 内部已有的 `fill` 属性在覆盖时产生歧义
27
+
20
28
  ## 1.0.1
21
29
 
22
30
  修复
@@ -29,7 +37,7 @@
29
37
 
30
38
  新增
31
39
 
32
- - 101 个手绘 naive folk art 风格 SVG 图标,覆盖界面基础、操作、文件与媒体、导航方位、通信、自然天气、动物、食物饮品、日常物品、交通工具、表情共 11 个分类
40
+ - 105 个手绘 naive folk art 风格 SVG 图标,覆盖界面基础、操作、文件与媒体、导航方位、通信、自然天气、动物、食物饮品、日常物品、交通工具、表情共 11 个分类
33
41
  - 每个图标同时提供 SVG 源文件与 React TSX 组件
34
42
  - 完整 TypeScript 类型定义:IconProps、IconName、IconCategory、PaletteColor、NAIVE_PALETTE
35
43
  - 统一规格:48x48 viewBox、3.5 描边宽度、round 线帽与线角
package/README.en.md CHANGED
@@ -1,3 +1,5 @@
1
+ <h1>Naive Icons</h1>
2
+
1
3
  <p align="right">
2
4
  <a href="./README.md">中文</a> | <a href="./README.en.md">English</a>
3
5
  </p>
@@ -6,15 +8,25 @@
6
8
  <img src="assets/logo.svg" alt="Naive Icons" width="132" height="132">
7
9
  </p>
8
10
 
9
- <h1 align="center">Naive Icons</h1>
10
-
11
11
  <p align="center">Hand-drawn "naive folk art" style SVG icon library, built for React and TypeScript</p>
12
12
 
13
- Naive Icons is a hand-drawn SVG icon library with a naive folk art style, built for React and TypeScript. All 101 icons are AI-generated original works.
13
+ <p align="center">
14
+ <a href="https://github.com/guokaigdg/naive-icons/stargazers"><img src="https://img.shields.io/github/stars/guokaigdg/naive-icons?style=flat-square&color=E9C46A" alt="GitHub stars"></a>
15
+ <a href="https://www.npmjs.com/package/naive-icons"><img src="https://img.shields.io/npm/v/naive-icons?style=flat-square&color=E76F51" alt="npm version"></a>
16
+ <a href="https://www.npmjs.com/package/naive-icons"><img src="https://img.shields.io/npm/dm/naive-icons?style=flat-square&color=2A9D8F" alt="npm downloads"></a>
17
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-264653?style=flat-square" alt="license: MIT"></a>
18
+ <br/>
19
+ <img src="https://img.shields.io/badge/React-61DAFB?style=flat-square&logo=react&logoColor=black" alt="React">
20
+ <img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript">
21
+ <img src="https://img.shields.io/badge/SVG-FFB13B?style=flat-square&logoColor=black" alt="SVG">
22
+ </p>
23
+
24
+
25
+ Naive Icons is a hand-drawn SVG icon library with a naive folk art style, built for React and TypeScript. All 105 icons are AI-generated original works.
14
26
 
15
27
  Each icon is drawn on a 48x48 grid with a 3.5 stroke, rounded line caps, and a unified retro palette — keeping the charming clumsiness and warmth of hand-drawn illustration. Some icons even feature a pair of dot eyes and a little smile, adding a touch of humanity to your interface.
16
28
 
17
- - Icon count: 101
29
+ - Icon count: 105
18
30
  - Per-icon size: roughly 400–700 bytes
19
31
  - Dependencies: zero runtime dependencies, React as a peer dependency only
20
32
  - License: MIT
@@ -36,7 +48,7 @@ Each icon is drawn on a 48x48 grid with a 3.5 stroke, rounded line caps, and a u
36
48
 
37
49
  ## Features
38
50
 
39
- - 101 original hand-drawn SVG icons spanning 11 categories: interface, actions, media, navigation, animals, food, and more
51
+ - 105 original hand-drawn SVG icons spanning 11 categories: interface, actions, media, navigation, animals, food, and more
40
52
  - Unified spec: 48x48 viewBox, 3.5 stroke width, round line caps and joins
41
53
  - Unified palette: 9 retro colors, usable directly as design tokens
42
54
  - Some icons feature dot eyes and a little smile for a highly recognizable style
@@ -211,8 +223,8 @@ Naive Icons follows four fixed rules. They should be respected when adding new i
211
223
 
212
224
  ```
213
225
  naive-icons/
214
- ├── svg/ 101 SVG source files
215
- ├── src/ 101 React TSX components + index.ts + types.ts
226
+ ├── svg/ 105 SVG source files
227
+ ├── src/ 105 React TSX components + index.ts + types.ts
216
228
  ├── assets/ Brand assets (logo)
217
229
  ├── scripts/ Icon generation and preview build scripts
218
230
  ├── website/ Official documentation site
package/README.md CHANGED
@@ -1,3 +1,6 @@
1
+
2
+ <h1>Naive Icons</h1>
3
+
1
4
  <p align="right">
2
5
  <a href="./README.md">中文</a> | <a href="./README.en.md">English</a>
3
6
  </p>
@@ -6,15 +9,25 @@
6
9
  <img src="assets/logo.svg" alt="Naive Icons" width="132" height="132">
7
10
  </p>
8
11
 
9
- <h1 align="center">Naive Icons</h1>
10
12
 
11
13
  <p align="center">手绘 naive folk art 风格的 SVG 图标库,为 React 与 TypeScript 打造</p>
12
14
 
13
- Naive Icons 是一套手绘 naive folk art 风格的 SVG 图标库,为 React 与 TypeScript 打造。全部 101 个图标由 AI 生成,均为原创作品。
15
+ <p align="center">
16
+ <a href="https://github.com/guokaigdg/naive-icons/stargazers"><img src="https://img.shields.io/github/stars/guokaigdg/naive-icons?style=flat-square&color=E9C46A" alt="GitHub stars"></a>
17
+ <a href="https://www.npmjs.com/package/naive-icons"><img src="https://img.shields.io/npm/v/naive-icons?style=flat-square&color=E76F51" alt="npm version"></a>
18
+ <a href="https://www.npmjs.com/package/naive-icons"><img src="https://img.shields.io/npm/dm/naive-icons?style=flat-square&color=2A9D8F" alt="npm downloads"></a>
19
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-264653?style=flat-square" alt="license: MIT"></a>
20
+ <br/>
21
+ <img src="https://img.shields.io/badge/React-61DAFB?style=flat-square&logo=react&logoColor=black" alt="React">
22
+ <img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript">
23
+ <img src="https://img.shields.io/badge/SVG-FFB13B?style=flat-square&logoColor=black" alt="SVG">
24
+ </p>
25
+
26
+ Naive Icons 是一套手绘 naive folk art 风格的 SVG 图标库,为 React 与 TypeScript 打造。全部 105 个图标由 AI 生成,均为原创作品。
14
27
 
15
28
  每一个图标都建立在 48x48 的网格上,使用 3.5 的粗描边、圆角线帽与统一的复古调色板,并保留了手绘插画特有的笨拙感与温度——部分图标还带有一对小圆点眼睛和微笑,让界面多一点点人情味。
16
29
 
17
- - 图标数量:101
30
+ - 图标数量:105
18
31
  - 单个体积:约 400 至 700 字节
19
32
  - 依赖:零运行时依赖,仅 peer 依赖 React
20
33
  - 许可证:MIT
@@ -36,7 +49,7 @@ Naive Icons 是一套手绘 naive folk art 风格的 SVG 图标库,为 React
36
49
 
37
50
  ## 特性
38
51
 
39
- - 101 个手绘风格的原创 SVG 图标,覆盖界面、操作、媒体、导航、动物、食物等 11 个分类
52
+ - 105 个手绘风格的原创 SVG 图标,覆盖界面、操作、媒体、导航、动物、食物等 11 个分类
40
53
  - 统一规格:48x48 viewBox、3.5 描边宽度、round 线帽与线角
41
54
  - 统一调色板:9 色复古配色,可作为设计令牌直接引用
42
55
  - 部分图标带有圆点眼睛与微笑表情,风格辨识度高
@@ -211,8 +224,8 @@ Naive Icons 遵循四条固定规则,新增图标时也应保持一致。
211
224
 
212
225
  ```
213
226
  naive-icons/
214
- ├── svg/ 101 个 SVG 源文件
215
- ├── src/ 101 个 React TSX 组件 + index.ts + types.ts
227
+ ├── svg/ 105 个 SVG 源文件
228
+ ├── src/ 105 个 React TSX 组件 + index.ts + types.ts
216
229
  ├── assets/ 品牌资源(logo)
217
230
  ├── scripts/ 图标生成与预览构建脚本
218
231
  ├── website/ 官方文档站点
package/dist/index.d.mts CHANGED
@@ -1,21 +1,12 @@
1
1
  import * as react from 'react';
2
2
  import { SVGProps, FC } from 'react';
3
3
 
4
- /** Naive Icons 所有图标的通用 Props(继承原生 SVG 属性) */
4
+ /** 所有图标的通用 Props(继承原生 SVG 属性) */
5
5
  interface IconProps extends SVGProps<SVGSVGElement> {
6
- /** 图标尺寸,宽高相等,默认 24 */
6
+ /** 图标尺寸(宽高等同),默认 48 */
7
7
  size?: number | string;
8
- /** 描边颜色,默认 currentColor */
9
- color?: string;
10
- /** 描边宽度,默认 3.5(相对 48x48 画布) */
11
- strokeWidth?: number | string;
12
- /** 填充色,默认 none */
13
- fill?: string;
14
- /** 无障碍标题 */
15
- title?: string;
16
8
  }
17
-
18
- /** Naive Icons 调色板 */
9
+ /** naive 风格调色板 */
19
10
  declare const NAIVE_PALETTE: {
20
11
  readonly ink: "#2A2A2A";
21
12
  readonly navy: "#264653";
@@ -28,13 +19,10 @@ declare const NAIVE_PALETTE: {
28
19
  readonly cream: "#FAEDCD";
29
20
  };
30
21
  type PaletteColor = keyof typeof NAIVE_PALETTE;
31
- /** Naive Icons 图标组件名(共 101 个) */
32
- type IconName = 'AirplaneIcon' | 'AnchorIcon' | 'AppleIcon' | 'BalloonIcon' | 'BearIcon' | 'BeeIcon' | 'BellIcon' | 'BicycleIcon' | 'BirdIcon' | 'BookIcon' | 'BookmarkIcon' | 'BulbIcon' | 'ButterflyIcon' | 'CactusIcon' | 'CakeIcon' | 'CalendarIcon' | 'CameraIcon' | 'CandleIcon' | 'CarIcon' | 'CartIcon' | 'CatIcon' | 'ChatIcon' | 'CheckIcon' | 'CherryIcon' | 'ClockIcon' | 'CloseIcon' | 'CloudIcon' | 'CodeIcon' | 'CoffeeIcon' | 'CompassIcon' | 'CreditCardIcon' | 'DogIcon' | 'DonutIcon' | 'DownloadIcon' | 'EditIcon' | 'EyeIcon' | 'FileIcon' | 'FishIcon' | 'FlagIcon' | 'FlameIcon' | 'FlowerIcon' | 'FolderIcon' | 'FoxIcon' | 'FrogIcon' | 'GiftIcon' | 'GlobeIcon' | 'HeadphonesIcon' | 'HeartIcon' | 'HomeIcon' | 'IcecreamIcon' | 'ImageIcon' | 'KeyIcon' | 'LadybugIcon' | 'LampIcon' | 'LeafIcon' | 'LemonIcon' | 'LocationIcon' | 'LockIcon' | 'MagnetIcon' | 'MailIcon' | 'MapIcon' | 'MicIcon' | 'MoonIcon' | 'MushroomIcon' | 'MusicIcon' | 'OwlIcon' | 'PaintbrushIcon' | 'PencilIcon' | 'PenguinIcon' | 'PhoneIcon' | 'PlayIcon' | 'PlusIcon' | 'RabbitIcon' | 'RainbowIcon' | 'RefreshIcon' | 'RocketIcon' | 'SailboatIcon' | 'SaveIcon' | 'SearchIcon' | 'SettingsIcon' | 'ShareIcon' | 'ShoppingBagIcon' | 'SmileIcon' | 'SnailIcon' | 'SnowflakeIcon' | 'StarIcon' | 'StrawberryIcon' | 'SunIcon' | 'TagIcon' | 'ThermometerIcon' | 'ThumbsUpIcon' | 'TrainIcon' | 'TrashIcon' | 'TreeIcon' | 'TrophyIcon' | 'UmbrellaIcon' | 'UploadIcon' | 'UserIcon' | 'VideoIcon' | 'WatermelonIcon' | 'WifiIcon';
33
- /** Naive Icons 图标组件类型 */
22
+ /** 所有图标组件名(共 105 个) */
23
+ type IconName = 'AirplaneIconIcon' | 'AnchorIconIcon' | 'AppleIconIcon' | 'ArrowDownIconIcon' | 'ArrowLeftIconIcon' | 'ArrowRightIconIcon' | 'ArrowUpIconIcon' | 'BalloonIconIcon' | 'BearIconIcon' | 'BeeIconIcon' | 'BellIconIcon' | 'BicycleIconIcon' | 'BirdIconIcon' | 'BookIconIcon' | 'BookmarkIconIcon' | 'BulbIconIcon' | 'ButterflyIconIcon' | 'CactusIconIcon' | 'CakeIconIcon' | 'CalendarIconIcon' | 'CameraIconIcon' | 'CandleIconIcon' | 'CarIconIcon' | 'CartIconIcon' | 'CatIconIcon' | 'ChatIconIcon' | 'CheckIconIcon' | 'CherryIconIcon' | 'ClockIconIcon' | 'CloseIconIcon' | 'CloudIconIcon' | 'CodeIconIcon' | 'CoffeeIconIcon' | 'CompassIconIcon' | 'CreditCardIconIcon' | 'DogIconIcon' | 'DonutIconIcon' | 'DownloadIconIcon' | 'EditIconIcon' | 'EyeIconIcon' | 'FileIconIcon' | 'FishIconIcon' | 'FlagIconIcon' | 'FlameIconIcon' | 'FlowerIconIcon' | 'FolderIconIcon' | 'FoxIconIcon' | 'FrogIconIcon' | 'GiftIconIcon' | 'GlobeIconIcon' | 'HeadphonesIconIcon' | 'HeartIconIcon' | 'HomeIconIcon' | 'IcecreamIconIcon' | 'ImageIconIcon' | 'KeyIconIcon' | 'LadybugIconIcon' | 'LampIconIcon' | 'LeafIconIcon' | 'LemonIconIcon' | 'LocationIconIcon' | 'LockIconIcon' | 'MagnetIconIcon' | 'MailIconIcon' | 'MapIconIcon' | 'MicIconIcon' | 'MoonIconIcon' | 'MushroomIconIcon' | 'MusicIconIcon' | 'OwlIconIcon' | 'PaintbrushIconIcon' | 'PencilIconIcon' | 'PenguinIconIcon' | 'PhoneIconIcon' | 'PlayIconIcon' | 'PlusIconIcon' | 'RabbitIconIcon' | 'RainbowIconIcon' | 'RefreshIconIcon' | 'RocketIconIcon' | 'SailboatIconIcon' | 'SaveIconIcon' | 'SearchIconIcon' | 'SettingsIconIcon' | 'ShareIconIcon' | 'ShoppingBagIconIcon' | 'SmileIconIcon' | 'SnailIconIcon' | 'SnowflakeIconIcon' | 'StarIconIcon' | 'StrawberryIconIcon' | 'SunIconIcon' | 'TagIconIcon' | 'ThermometerIconIcon' | 'ThumbsUpIconIcon' | 'TrainIconIcon' | 'TrashIconIcon' | 'TreeIconIcon' | 'TrophyIconIcon' | 'UmbrellaIconIcon' | 'UploadIconIcon' | 'UserIconIcon' | 'VideoIconIcon' | 'WatermelonIconIcon' | 'WifiIconIcon';
24
+ /** 图标组件类型 */
34
25
  type IconComponent = FC<IconProps>;
35
- /** Naive Icons 图标分类 */
36
- declare const ICON_CATEGORIES: readonly ["interface", "action", "media", "navigation", "communication", "nature", "animals", "food", "objects", "transport", "emoji"];
37
- type IconCategory = (typeof ICON_CATEGORIES)[number];
38
26
 
39
27
  declare const AirplaneIcon: (props: IconProps) => react.JSX.Element;
40
28
 
@@ -42,6 +30,14 @@ declare const AnchorIcon: (props: IconProps) => react.JSX.Element;
42
30
 
43
31
  declare const AppleIcon: (props: IconProps) => react.JSX.Element;
44
32
 
33
+ declare const ArrowDownIcon: (props: IconProps) => react.JSX.Element;
34
+
35
+ declare const ArrowLeftIcon: (props: IconProps) => react.JSX.Element;
36
+
37
+ declare const ArrowRightIcon: (props: IconProps) => react.JSX.Element;
38
+
39
+ declare const ArrowUpIcon: (props: IconProps) => react.JSX.Element;
40
+
45
41
  declare const BalloonIcon: (props: IconProps) => react.JSX.Element;
46
42
 
47
43
  declare const BearIcon: (props: IconProps) => react.JSX.Element;
@@ -238,4 +234,4 @@ declare const WatermelonIcon: (props: IconProps) => react.JSX.Element;
238
234
 
239
235
  declare const WifiIcon: (props: IconProps) => react.JSX.Element;
240
236
 
241
- export { AirplaneIcon, AnchorIcon, AppleIcon, BalloonIcon, BearIcon, BeeIcon, BellIcon, BicycleIcon, BirdIcon, BookIcon, BookmarkIcon, BulbIcon, ButterflyIcon, CactusIcon, CakeIcon, CalendarIcon, CameraIcon, CandleIcon, CarIcon, CartIcon, CatIcon, ChatIcon, CheckIcon, CherryIcon, ClockIcon, CloseIcon, CloudIcon, CodeIcon, CoffeeIcon, CompassIcon, CreditCardIcon, DogIcon, DonutIcon, DownloadIcon, EditIcon, EyeIcon, FileIcon, FishIcon, FlagIcon, FlameIcon, FlowerIcon, FolderIcon, FoxIcon, FrogIcon, GiftIcon, GlobeIcon, HeadphonesIcon, HeartIcon, HomeIcon, ICON_CATEGORIES, IcecreamIcon, type IconCategory, type IconComponent, type IconName, type IconProps, ImageIcon, KeyIcon, LadybugIcon, LampIcon, LeafIcon, LemonIcon, LocationIcon, LockIcon, MagnetIcon, MailIcon, MapIcon, MicIcon, MoonIcon, MushroomIcon, MusicIcon, NAIVE_PALETTE, OwlIcon, PaintbrushIcon, type PaletteColor, PencilIcon, PenguinIcon, PhoneIcon, PlayIcon, PlusIcon, RabbitIcon, RainbowIcon, RefreshIcon, RocketIcon, SailboatIcon, SaveIcon, SearchIcon, SettingsIcon, ShareIcon, ShoppingBagIcon, SmileIcon, SnailIcon, SnowflakeIcon, StarIcon, StrawberryIcon, SunIcon, TagIcon, ThermometerIcon, ThumbsUpIcon, TrainIcon, TrashIcon, TreeIcon, TrophyIcon, UmbrellaIcon, UploadIcon, UserIcon, VideoIcon, WatermelonIcon, WifiIcon };
237
+ export { AirplaneIcon, AnchorIcon, AppleIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BalloonIcon, BearIcon, BeeIcon, BellIcon, BicycleIcon, BirdIcon, BookIcon, BookmarkIcon, BulbIcon, ButterflyIcon, CactusIcon, CakeIcon, CalendarIcon, CameraIcon, CandleIcon, CarIcon, CartIcon, CatIcon, ChatIcon, CheckIcon, CherryIcon, ClockIcon, CloseIcon, CloudIcon, CodeIcon, CoffeeIcon, CompassIcon, CreditCardIcon, DogIcon, DonutIcon, DownloadIcon, EditIcon, EyeIcon, FileIcon, FishIcon, FlagIcon, FlameIcon, FlowerIcon, FolderIcon, FoxIcon, FrogIcon, GiftIcon, GlobeIcon, HeadphonesIcon, HeartIcon, HomeIcon, IcecreamIcon, type IconComponent, type IconName, type IconProps, ImageIcon, KeyIcon, LadybugIcon, LampIcon, LeafIcon, LemonIcon, LocationIcon, LockIcon, MagnetIcon, MailIcon, MapIcon, MicIcon, MoonIcon, MushroomIcon, MusicIcon, NAIVE_PALETTE, OwlIcon, PaintbrushIcon, type PaletteColor, PencilIcon, PenguinIcon, PhoneIcon, PlayIcon, PlusIcon, RabbitIcon, RainbowIcon, RefreshIcon, RocketIcon, SailboatIcon, SaveIcon, SearchIcon, SettingsIcon, ShareIcon, ShoppingBagIcon, SmileIcon, SnailIcon, SnowflakeIcon, StarIcon, StrawberryIcon, SunIcon, TagIcon, ThermometerIcon, ThumbsUpIcon, TrainIcon, TrashIcon, TreeIcon, TrophyIcon, UmbrellaIcon, UploadIcon, UserIcon, VideoIcon, WatermelonIcon, WifiIcon };
package/dist/index.d.ts CHANGED
@@ -1,21 +1,12 @@
1
1
  import * as react from 'react';
2
2
  import { SVGProps, FC } from 'react';
3
3
 
4
- /** Naive Icons 所有图标的通用 Props(继承原生 SVG 属性) */
4
+ /** 所有图标的通用 Props(继承原生 SVG 属性) */
5
5
  interface IconProps extends SVGProps<SVGSVGElement> {
6
- /** 图标尺寸,宽高相等,默认 24 */
6
+ /** 图标尺寸(宽高等同),默认 48 */
7
7
  size?: number | string;
8
- /** 描边颜色,默认 currentColor */
9
- color?: string;
10
- /** 描边宽度,默认 3.5(相对 48x48 画布) */
11
- strokeWidth?: number | string;
12
- /** 填充色,默认 none */
13
- fill?: string;
14
- /** 无障碍标题 */
15
- title?: string;
16
8
  }
17
-
18
- /** Naive Icons 调色板 */
9
+ /** naive 风格调色板 */
19
10
  declare const NAIVE_PALETTE: {
20
11
  readonly ink: "#2A2A2A";
21
12
  readonly navy: "#264653";
@@ -28,13 +19,10 @@ declare const NAIVE_PALETTE: {
28
19
  readonly cream: "#FAEDCD";
29
20
  };
30
21
  type PaletteColor = keyof typeof NAIVE_PALETTE;
31
- /** Naive Icons 图标组件名(共 101 个) */
32
- type IconName = 'AirplaneIcon' | 'AnchorIcon' | 'AppleIcon' | 'BalloonIcon' | 'BearIcon' | 'BeeIcon' | 'BellIcon' | 'BicycleIcon' | 'BirdIcon' | 'BookIcon' | 'BookmarkIcon' | 'BulbIcon' | 'ButterflyIcon' | 'CactusIcon' | 'CakeIcon' | 'CalendarIcon' | 'CameraIcon' | 'CandleIcon' | 'CarIcon' | 'CartIcon' | 'CatIcon' | 'ChatIcon' | 'CheckIcon' | 'CherryIcon' | 'ClockIcon' | 'CloseIcon' | 'CloudIcon' | 'CodeIcon' | 'CoffeeIcon' | 'CompassIcon' | 'CreditCardIcon' | 'DogIcon' | 'DonutIcon' | 'DownloadIcon' | 'EditIcon' | 'EyeIcon' | 'FileIcon' | 'FishIcon' | 'FlagIcon' | 'FlameIcon' | 'FlowerIcon' | 'FolderIcon' | 'FoxIcon' | 'FrogIcon' | 'GiftIcon' | 'GlobeIcon' | 'HeadphonesIcon' | 'HeartIcon' | 'HomeIcon' | 'IcecreamIcon' | 'ImageIcon' | 'KeyIcon' | 'LadybugIcon' | 'LampIcon' | 'LeafIcon' | 'LemonIcon' | 'LocationIcon' | 'LockIcon' | 'MagnetIcon' | 'MailIcon' | 'MapIcon' | 'MicIcon' | 'MoonIcon' | 'MushroomIcon' | 'MusicIcon' | 'OwlIcon' | 'PaintbrushIcon' | 'PencilIcon' | 'PenguinIcon' | 'PhoneIcon' | 'PlayIcon' | 'PlusIcon' | 'RabbitIcon' | 'RainbowIcon' | 'RefreshIcon' | 'RocketIcon' | 'SailboatIcon' | 'SaveIcon' | 'SearchIcon' | 'SettingsIcon' | 'ShareIcon' | 'ShoppingBagIcon' | 'SmileIcon' | 'SnailIcon' | 'SnowflakeIcon' | 'StarIcon' | 'StrawberryIcon' | 'SunIcon' | 'TagIcon' | 'ThermometerIcon' | 'ThumbsUpIcon' | 'TrainIcon' | 'TrashIcon' | 'TreeIcon' | 'TrophyIcon' | 'UmbrellaIcon' | 'UploadIcon' | 'UserIcon' | 'VideoIcon' | 'WatermelonIcon' | 'WifiIcon';
33
- /** Naive Icons 图标组件类型 */
22
+ /** 所有图标组件名(共 105 个) */
23
+ type IconName = 'AirplaneIconIcon' | 'AnchorIconIcon' | 'AppleIconIcon' | 'ArrowDownIconIcon' | 'ArrowLeftIconIcon' | 'ArrowRightIconIcon' | 'ArrowUpIconIcon' | 'BalloonIconIcon' | 'BearIconIcon' | 'BeeIconIcon' | 'BellIconIcon' | 'BicycleIconIcon' | 'BirdIconIcon' | 'BookIconIcon' | 'BookmarkIconIcon' | 'BulbIconIcon' | 'ButterflyIconIcon' | 'CactusIconIcon' | 'CakeIconIcon' | 'CalendarIconIcon' | 'CameraIconIcon' | 'CandleIconIcon' | 'CarIconIcon' | 'CartIconIcon' | 'CatIconIcon' | 'ChatIconIcon' | 'CheckIconIcon' | 'CherryIconIcon' | 'ClockIconIcon' | 'CloseIconIcon' | 'CloudIconIcon' | 'CodeIconIcon' | 'CoffeeIconIcon' | 'CompassIconIcon' | 'CreditCardIconIcon' | 'DogIconIcon' | 'DonutIconIcon' | 'DownloadIconIcon' | 'EditIconIcon' | 'EyeIconIcon' | 'FileIconIcon' | 'FishIconIcon' | 'FlagIconIcon' | 'FlameIconIcon' | 'FlowerIconIcon' | 'FolderIconIcon' | 'FoxIconIcon' | 'FrogIconIcon' | 'GiftIconIcon' | 'GlobeIconIcon' | 'HeadphonesIconIcon' | 'HeartIconIcon' | 'HomeIconIcon' | 'IcecreamIconIcon' | 'ImageIconIcon' | 'KeyIconIcon' | 'LadybugIconIcon' | 'LampIconIcon' | 'LeafIconIcon' | 'LemonIconIcon' | 'LocationIconIcon' | 'LockIconIcon' | 'MagnetIconIcon' | 'MailIconIcon' | 'MapIconIcon' | 'MicIconIcon' | 'MoonIconIcon' | 'MushroomIconIcon' | 'MusicIconIcon' | 'OwlIconIcon' | 'PaintbrushIconIcon' | 'PencilIconIcon' | 'PenguinIconIcon' | 'PhoneIconIcon' | 'PlayIconIcon' | 'PlusIconIcon' | 'RabbitIconIcon' | 'RainbowIconIcon' | 'RefreshIconIcon' | 'RocketIconIcon' | 'SailboatIconIcon' | 'SaveIconIcon' | 'SearchIconIcon' | 'SettingsIconIcon' | 'ShareIconIcon' | 'ShoppingBagIconIcon' | 'SmileIconIcon' | 'SnailIconIcon' | 'SnowflakeIconIcon' | 'StarIconIcon' | 'StrawberryIconIcon' | 'SunIconIcon' | 'TagIconIcon' | 'ThermometerIconIcon' | 'ThumbsUpIconIcon' | 'TrainIconIcon' | 'TrashIconIcon' | 'TreeIconIcon' | 'TrophyIconIcon' | 'UmbrellaIconIcon' | 'UploadIconIcon' | 'UserIconIcon' | 'VideoIconIcon' | 'WatermelonIconIcon' | 'WifiIconIcon';
24
+ /** 图标组件类型 */
34
25
  type IconComponent = FC<IconProps>;
35
- /** Naive Icons 图标分类 */
36
- declare const ICON_CATEGORIES: readonly ["interface", "action", "media", "navigation", "communication", "nature", "animals", "food", "objects", "transport", "emoji"];
37
- type IconCategory = (typeof ICON_CATEGORIES)[number];
38
26
 
39
27
  declare const AirplaneIcon: (props: IconProps) => react.JSX.Element;
40
28
 
@@ -42,6 +30,14 @@ declare const AnchorIcon: (props: IconProps) => react.JSX.Element;
42
30
 
43
31
  declare const AppleIcon: (props: IconProps) => react.JSX.Element;
44
32
 
33
+ declare const ArrowDownIcon: (props: IconProps) => react.JSX.Element;
34
+
35
+ declare const ArrowLeftIcon: (props: IconProps) => react.JSX.Element;
36
+
37
+ declare const ArrowRightIcon: (props: IconProps) => react.JSX.Element;
38
+
39
+ declare const ArrowUpIcon: (props: IconProps) => react.JSX.Element;
40
+
45
41
  declare const BalloonIcon: (props: IconProps) => react.JSX.Element;
46
42
 
47
43
  declare const BearIcon: (props: IconProps) => react.JSX.Element;
@@ -238,4 +234,4 @@ declare const WatermelonIcon: (props: IconProps) => react.JSX.Element;
238
234
 
239
235
  declare const WifiIcon: (props: IconProps) => react.JSX.Element;
240
236
 
241
- export { AirplaneIcon, AnchorIcon, AppleIcon, BalloonIcon, BearIcon, BeeIcon, BellIcon, BicycleIcon, BirdIcon, BookIcon, BookmarkIcon, BulbIcon, ButterflyIcon, CactusIcon, CakeIcon, CalendarIcon, CameraIcon, CandleIcon, CarIcon, CartIcon, CatIcon, ChatIcon, CheckIcon, CherryIcon, ClockIcon, CloseIcon, CloudIcon, CodeIcon, CoffeeIcon, CompassIcon, CreditCardIcon, DogIcon, DonutIcon, DownloadIcon, EditIcon, EyeIcon, FileIcon, FishIcon, FlagIcon, FlameIcon, FlowerIcon, FolderIcon, FoxIcon, FrogIcon, GiftIcon, GlobeIcon, HeadphonesIcon, HeartIcon, HomeIcon, ICON_CATEGORIES, IcecreamIcon, type IconCategory, type IconComponent, type IconName, type IconProps, ImageIcon, KeyIcon, LadybugIcon, LampIcon, LeafIcon, LemonIcon, LocationIcon, LockIcon, MagnetIcon, MailIcon, MapIcon, MicIcon, MoonIcon, MushroomIcon, MusicIcon, NAIVE_PALETTE, OwlIcon, PaintbrushIcon, type PaletteColor, PencilIcon, PenguinIcon, PhoneIcon, PlayIcon, PlusIcon, RabbitIcon, RainbowIcon, RefreshIcon, RocketIcon, SailboatIcon, SaveIcon, SearchIcon, SettingsIcon, ShareIcon, ShoppingBagIcon, SmileIcon, SnailIcon, SnowflakeIcon, StarIcon, StrawberryIcon, SunIcon, TagIcon, ThermometerIcon, ThumbsUpIcon, TrainIcon, TrashIcon, TreeIcon, TrophyIcon, UmbrellaIcon, UploadIcon, UserIcon, VideoIcon, WatermelonIcon, WifiIcon };
237
+ export { AirplaneIcon, AnchorIcon, AppleIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, BalloonIcon, BearIcon, BeeIcon, BellIcon, BicycleIcon, BirdIcon, BookIcon, BookmarkIcon, BulbIcon, ButterflyIcon, CactusIcon, CakeIcon, CalendarIcon, CameraIcon, CandleIcon, CarIcon, CartIcon, CatIcon, ChatIcon, CheckIcon, CherryIcon, ClockIcon, CloseIcon, CloudIcon, CodeIcon, CoffeeIcon, CompassIcon, CreditCardIcon, DogIcon, DonutIcon, DownloadIcon, EditIcon, EyeIcon, FileIcon, FishIcon, FlagIcon, FlameIcon, FlowerIcon, FolderIcon, FoxIcon, FrogIcon, GiftIcon, GlobeIcon, HeadphonesIcon, HeartIcon, HomeIcon, IcecreamIcon, type IconComponent, type IconName, type IconProps, ImageIcon, KeyIcon, LadybugIcon, LampIcon, LeafIcon, LemonIcon, LocationIcon, LockIcon, MagnetIcon, MailIcon, MapIcon, MicIcon, MoonIcon, MushroomIcon, MusicIcon, NAIVE_PALETTE, OwlIcon, PaintbrushIcon, type PaletteColor, PencilIcon, PenguinIcon, PhoneIcon, PlayIcon, PlusIcon, RabbitIcon, RainbowIcon, RefreshIcon, RocketIcon, SailboatIcon, SaveIcon, SearchIcon, SettingsIcon, ShareIcon, ShoppingBagIcon, SmileIcon, SnailIcon, SnowflakeIcon, StarIcon, StrawberryIcon, SunIcon, TagIcon, ThermometerIcon, ThumbsUpIcon, TrainIcon, TrashIcon, TreeIcon, TrophyIcon, UmbrellaIcon, UploadIcon, UserIcon, VideoIcon, WatermelonIcon, WifiIcon };
package/dist/index.js CHANGED
@@ -4,18 +4,13 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
 
5
5
  // src/iconProps.ts
6
6
  function normalizeIconProps(props) {
7
- const { size, color, strokeWidth, ...rest } = props;
7
+ const { size = 24, color = "#2A2A2A", strokeWidth = 3.5, fill = "none", ...rest } = props;
8
8
  const svgProps = { ...rest };
9
- if (size !== void 0 && size !== null) {
10
- svgProps.width = size;
11
- svgProps.height = size;
12
- }
13
- if (color !== void 0 && color !== null) {
14
- svgProps.stroke = color;
15
- }
16
- if (strokeWidth !== void 0 && strokeWidth !== null) {
17
- svgProps.strokeWidth = strokeWidth;
18
- }
9
+ svgProps.width = size;
10
+ svgProps.height = size;
11
+ svgProps.fill = fill;
12
+ svgProps.stroke = color;
13
+ svgProps.strokeWidth = strokeWidth;
19
14
  return svgProps;
20
15
  }
21
16
  var AirplaneIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
@@ -37,6 +32,22 @@ var AppleIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0
37
32
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "20", cy: "26", r: "1.5", fill: "#2A2A2A" }),
38
33
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "28", cy: "26", r: "1.5", fill: "#2A2A2A" })
39
34
  ] });
35
+ var ArrowDownIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
36
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M24 9 L24 30", stroke: "#2A2A2A", "stroke-width": "4" }),
37
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 26 L24 40 L33 26 Z", fill: "#E76F51" })
38
+ ] });
39
+ var ArrowLeftIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
40
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M39 24 L18 24", stroke: "#2A2A2A", "stroke-width": "4" }),
41
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M23 15 L9 24 L23 33 Z", fill: "#E76F51" })
42
+ ] });
43
+ var ArrowRightIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
44
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 24 L30 24", stroke: "#2A2A2A", "stroke-width": "4" }),
45
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M25 15 L39 24 L25 33 Z", fill: "#E76F51" })
46
+ ] });
47
+ var ArrowUpIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
48
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M24 39 L24 18", stroke: "#2A2A2A", "stroke-width": "4" }),
49
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 22 L24 8 L33 22 Z", fill: "#E76F51" })
50
+ ] });
40
51
  var BalloonIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
41
52
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M24 5 C 14 5 9 13 9 19 C 9 26 15 31 24 31 C 33 31 39 26 39 19 C 39 13 34 5 24 5 Z", fill: "#E76F51" }),
42
53
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 31 L 27 31 L 24 35 Z", fill: "#E76F51" }),
@@ -731,11 +742,11 @@ var UploadIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0
731
742
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "8", y: "38", width: "32", height: "6", rx: "2", fill: "#2A9D8F" })
732
743
  ] });
733
744
  var UserIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
734
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "24", cy: "17", r: "8", fill: "#E76F51" }),
735
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 42 C 8 32 14 28 24 28 C 34 28 40 32 40 42", fill: "#2A9D8F" }),
736
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "21", cy: "17", r: "1.5", fill: "#2A2A2A" }),
737
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "27", cy: "17", r: "1.5", fill: "#2A2A2A" }),
738
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 21 Q 24 23 27 21", stroke: "#2A2A2A", fill: "none" })
745
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "24", cy: "16", r: "8.5", fill: "#E76F51" }),
746
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 43 C 7 33 14 29 24 29 C 34 29 41 33 41 43", fill: "#2A9D8F" }),
747
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "21", cy: "16", r: "1.6", fill: "#2A2A2A" }),
748
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "27", cy: "16", r: "1.6", fill: "#2A2A2A" }),
749
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20.5 20 Q 24 23 27.5 20", stroke: "#2A2A2A", fill: "none" })
739
750
  ] });
740
751
  var VideoIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", ...normalizeIconProps(props), children: [
741
752
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "4", y: "14", width: "28", height: "20", rx: "4", fill: "#264653" }),
@@ -770,23 +781,14 @@ var NAIVE_PALETTE = {
770
781
  brown: "#8B5E3C",
771
782
  cream: "#FAEDCD"
772
783
  };
773
- var ICON_CATEGORIES = [
774
- "interface",
775
- "action",
776
- "media",
777
- "navigation",
778
- "communication",
779
- "nature",
780
- "animals",
781
- "food",
782
- "objects",
783
- "transport",
784
- "emoji"
785
- ];
786
784
 
787
785
  exports.AirplaneIcon = AirplaneIcon;
788
786
  exports.AnchorIcon = AnchorIcon;
789
787
  exports.AppleIcon = AppleIcon;
788
+ exports.ArrowDownIcon = ArrowDownIcon;
789
+ exports.ArrowLeftIcon = ArrowLeftIcon;
790
+ exports.ArrowRightIcon = ArrowRightIcon;
791
+ exports.ArrowUpIcon = ArrowUpIcon;
790
792
  exports.BalloonIcon = BalloonIcon;
791
793
  exports.BearIcon = BearIcon;
792
794
  exports.BeeIcon = BeeIcon;
@@ -833,7 +835,6 @@ exports.GlobeIcon = GlobeIcon;
833
835
  exports.HeadphonesIcon = HeadphonesIcon;
834
836
  exports.HeartIcon = HeartIcon;
835
837
  exports.HomeIcon = HomeIcon;
836
- exports.ICON_CATEGORIES = ICON_CATEGORIES;
837
838
  exports.IcecreamIcon = IcecreamIcon;
838
839
  exports.ImageIcon = ImageIcon;
839
840
  exports.KeyIcon = KeyIcon;