-
-
-
-
+
+
+
+
+
);
-}
+};
-export default Toolbar;
\ No newline at end of file
+export default Toolbar;
diff --git a/src/components/index.ts b/src/components/index.ts
index 0842621..31f92db 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -1,4 +1,10 @@
export { default as App } from "./App/App";
+export { default as Header } from "./Header/Header";
export { default as IconGrid } from "./IconGrid/IconGrid";
export { default as IconGridUV } from "./IconGrid/IconGridUV";
export { default as Toolbar } from "./Toolbar/Toolbar";
+export { default as ColorInput } from "./ColorInput/ColorInput";
+export { default as SearchInput } from "./SearchInput/SearchInput";
+export { default as SizeInput } from "./SizeInput/SizeInput";
+export { default as StyleInput } from "./StyleInput/StyleInput";
+export { default as Footer } from "./Footer/Footer";
\ No newline at end of file
diff --git a/src/lib/iconList.ts b/src/lib/iconList.ts
deleted file mode 100644
index b47ecdb..0000000
--- a/src/lib/iconList.ts
+++ /dev/null
@@ -1,368 +0,0 @@
-import { Icon, IconCategory, IconStyle } from "./Icon";
-
-export const iconList: Icon[] = [
- {
- name: "6-square",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN],
- tags: ["number", "digit", "six", "box"],
- asset: require("../assets/6-square.svg"),
- },
- {
- name: "6-square-sharp",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN],
- tags: ["number", "digit", "six", "box"],
- asset: require("../assets/6-square-sharp.svg"),
- },
- {
- name: "8-circle",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN],
- tags: ["number", "digit", "eight", "round"],
- asset: require("../assets/8-circle.svg"),
- },
- {
- name: "arrow-right-circle",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN],
- tags: ["pointer", "direction", "round"],
- asset: require("../assets/arrow-right-circle.svg"),
- },
- {
- name: "basketball",
- style: IconStyle.REGULAR,
- categories: [IconCategory.BRAND, IconCategory.HEALTH, IconCategory.OTHER],
- tags: ["sports", "games", "athletics", "dribbble"],
- asset: require("../assets/basketball.svg"),
- },
- {
- name: "battery-half",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DEVICE, IconCategory.SYSTEM],
- tags: ["charged", "charger", "charging", "power"],
- asset: require("../assets/battery-half.svg"),
- },
- {
- name: "battery-half-hash",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DEVICE, IconCategory.SYSTEM],
- tags: ["charged", "charger", "charging", "power"],
- asset: require("../assets/battery-half-hash.svg"),
- },
- {
- name: "book-open",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DOCUMENT, IconCategory.OTHER],
- tags: ["reading", "reader", "novel", "story"],
- asset: require("../assets/book-open.svg"),
- },
- {
- name: "calendar-6",
- style: IconStyle.REGULAR,
- categories: [IconCategory.BUSINESS, IconCategory.SYSTEM],
- tags: ["dates", "times", "events", "schedule", "six"],
- asset: require("../assets/calendar-6.svg"),
- },
- {
- name: "check-circle",
- style: IconStyle.REGULAR,
- categories: [IconCategory.BUSINESS, IconCategory.SYSTEM],
- tags: ["todo", "to-do", "list", "checkbox", "round"],
- asset: require("../assets/check-circle.svg"),
- },
- {
- name: "clock",
- style: IconStyle.REGULAR,
- categories: [IconCategory.SYSTEM],
- tags: ["times", "timer", "alarm", "schedule", "events", "watch"],
- asset: require("../assets/clock.svg"),
- },
- {
- name: "cloud",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.BUSINESS,
- IconCategory.SYSTEM,
- IconCategory.WEATHER,
- ],
- tags: ["serverless", "backup", "storage"],
- asset: require("../assets/cloud.svg"),
- },
- {
- name: "cube",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN, IconCategory.OTHER],
- tags: ["square", "box", "3d", "volume", "blocks"],
- asset: require("../assets/cube.svg"),
- },
- {
- name: "delete",
- style: IconStyle.REGULAR,
- categories: [IconCategory.SYSTEM],
- tags: ["keyboard", "remove", "backspace"],
- asset: require("../assets/delete.svg"),
- },
- {
- name: "doc",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
- tags: ["documents", "files", "save"],
- asset: require("../assets/doc.svg"),
- },
- {
- name: "doc-text",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
- tags: ["documents", "files", "save", "write"],
- asset: require("../assets/doc-text.svg"),
- },
- {
- name: "doc-x",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
- tags: ["documents", "files", "cancel", "discard", "close"],
- asset: require("../assets/doc-x.svg"),
- },
- {
- name: "do-not-disturb",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.SYSTEM,
- IconCategory.USERS,
- IconCategory.WEATHER,
- IconCategory.OTHER,
- ],
- tags: ["forbidden", "disallowed", "blocked", "spam"],
- asset: require("../assets/do-not-disturb.svg"),
- },
- {
- name: "droid",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.BRAND,
- IconCategory.COMMUNICATION,
- IconCategory.DEVELOPMENT,
- IconCategory.DEVICE,
- IconCategory.SYSTEM,
- ],
- tags: ["android", "google", "mobile", "phone", "cellular", "cellphone"],
- asset: require("../assets/droid.svg"),
- },
- {
- name: "folder",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.DOCUMENT,
- IconCategory.EDITOR,
- IconCategory.SYSTEM,
- ],
- tags: ["directory", "directories", "files"],
- asset: require("../assets/folder.svg"),
- },
- {
- name: "folder-dip",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.DOCUMENT,
- IconCategory.EDITOR,
- IconCategory.SYSTEM,
- ],
- tags: ["directory", "directories", "files"],
- asset: require("../assets/folder-dip.svg"),
- },
- {
- name: "heart",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.COMMUNICATION,
- IconCategory.DESIGN,
- IconCategory.HEALTH,
- IconCategory.OTHER,
- ],
- tags: ["wellness", "love", "healthy", "like"],
- asset: require("../assets/heart.svg"),
- },
- {
- name: "horse",
- style: IconStyle.REGULAR,
- categories: [IconCategory.HEALTH, IconCategory.OTHER],
- tags: ["animals", "equestrian", "chess", "knight", "games", "sports"],
- asset: require("../assets/horse.svg"),
- },
- {
- name: "intersect",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN],
- tags: ["merge", "join", "intersection", "layers"],
- asset: require("../assets/intersect.svg"),
- },
- {
- name: "mail",
- style: IconStyle.REGULAR,
- categories: [IconCategory.BUSINESS, IconCategory.COMMUNICATION],
- tags: ["email", "messages", "messaging", "send", "sent"],
- asset: require("../assets/mail.svg"),
- },
- {
- name: "medium",
- style: IconStyle.REGULAR,
- categories: [IconCategory.BRAND],
- tags: ["publish", "writing", "write"],
- asset: require("../assets/medium.svg"),
- },
- {
- name: "meh",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.COMMUNICATION,
- IconCategory.DESIGN,
- IconCategory.OTHER,
- ],
- tags: ["face", "smiley", "emoji", "unimpressed"],
- asset: require("../assets/meh.svg"),
- },
- {
- name: "mic",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.COMMUNICATION,
- IconCategory.DEVICE,
- IconCategory.MEDIA,
- IconCategory.SYSTEM,
- ],
- tags: ["microphone", "audio", "recording", "music", "sound", "podcast"],
- asset: require("../assets/mic.svg"),
- },
- {
- name: "music-beam-angled",
- style: IconStyle.REGULAR,
- categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
- tags: ["songs", "audio", "playlist", "albums"],
- asset: require("../assets/music-beam-angled.svg"),
- },
- {
- name: "music-beam-straight",
- style: IconStyle.REGULAR,
- categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
- tags: ["songs", "audio", "playlist", "albums"],
- asset: require("../assets/music-beam-straight.svg"),
- },
- {
- name: "pencil-line",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN, IconCategory.EDITOR],
- tags: ["write", "writing", "editing", "sign", "signature"],
- asset: require("../assets/pencil-line.svg"),
- },
- {
- name: "pen-nib",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DESIGN, IconCategory.EDITOR],
- tags: [
- "write",
- "writing",
- "editing",
- "sign",
- "signature",
- "fountain pen",
- "illustrator",
- ],
- asset: require("../assets/pen-nib.svg"),
- },
- {
- name: "profile-round",
- style: IconStyle.REGULAR,
- categories: [IconCategory.USERS],
- tags: ["person", "users", "account", "login", "circle"],
- asset: require("../assets/profile-round.svg"),
- },
- {
- name: "rewind",
- style: IconStyle.REGULAR,
- categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
- tags: ["backwards", "reverse", "audio", "recording", "music", "sound"],
- asset: require("../assets/rewind.svg"),
- },
- {
- name: "send",
- style: IconStyle.REGULAR,
- categories: [IconCategory.BUSINESS, IconCategory.COMMUNICATION],
- tags: ["mail", "email", "messages", "up", "arrow", "pointer", "direction"],
- asset: require("../assets/chevron.svg"),
- },
- {
- name: "star",
- style: IconStyle.REGULAR,
- categories: [
- IconCategory.COMMUNICATION,
- IconCategory.MAP,
- IconCategory.OTHER,
- ],
- tags: ["rate", "ratings", "favorites"],
- asset: require("../assets/star.svg"),
- },
- {
- name: "table",
- style: IconStyle.REGULAR,
- categories: [IconCategory.EDITOR, IconCategory.OTHER],
- tags: ["tabular", "spreadsheet", "excel"],
- asset: require("../assets/table.svg"),
- },
- {
- name: "trash",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
- tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
- asset: require("../assets/trash.svg"),
- },
- {
- name: "trash-duo",
- style: IconStyle.DUOTONE,
- categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
- tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
- asset: require("../assets/trash-duo.svg"),
- },
- {
- name: "trash-solid",
- style: IconStyle.FILL,
- categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
- tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
- asset: require("../assets/trash-solid.svg"),
- },
- {
- name: "volume-off",
- style: IconStyle.REGULAR,
- categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.SYSTEM],
- tags: ["speakers", "audio", "recording", "music", "sound"],
- asset: require("../assets/volume-off.svg"),
- },
- {
- name: "warning",
- style: IconStyle.REGULAR,
- categories: [IconCategory.SYSTEM],
- tags: ["alert", "danger", "dangerous", "caution"],
- asset: require("../assets/warning.svg"),
- },
- {
- name: "wifi-full",
- style: IconStyle.REGULAR,
- categories: [IconCategory.SYSTEM],
- tags: ["wireless", "internet", "network", "connection", "connectivity"],
- asset: require("../assets/wifi-full.svg"),
- },
- {
- name: "wifi-low",
- style: IconStyle.REGULAR,
- categories: [IconCategory.SYSTEM],
- tags: ["wireless", "internet", "network", "connection", "connectivity"],
- asset: require("../assets/wifi-low.svg"),
- },
- {
- name: "wifi-none",
- style: IconStyle.REGULAR,
- categories: [IconCategory.SYSTEM],
- tags: ["wireless", "internet", "network", "connection", "connectivity"],
- asset: require("../assets/wifi-none.svg"),
- },
-];
diff --git a/src/lib/icons.ts b/src/lib/icons.ts
new file mode 100644
index 0000000..35fbd81
--- /dev/null
+++ b/src/lib/icons.ts
@@ -0,0 +1,642 @@
+import * as Icon from "phosphor-react";
+import { IconEntry, IconCategory } from ".";
+
+export const icons: Readonly
= [
+ {
+ name: "arrow-up-right-circle",
+ categories: [IconCategory.DESIGN],
+ tags: ["pointer", "direction", "round"],
+ Icon: Icon.ArrowUpRightCircle,
+ },
+ {
+ name: "backspace",
+ categories: [IconCategory.SYSTEM],
+ tags: ["keyboard", "remove", "delete"],
+ Icon: Icon.Backspace,
+ },
+ {
+ name: "battery-half",
+ categories: [IconCategory.DEVICE, IconCategory.SYSTEM],
+ tags: ["charged", "charger", "charging", "power"],
+ Icon: Icon.BatteryHalf,
+ },
+ {
+ name: "book-closed",
+ categories: [IconCategory.DOCUMENT, IconCategory.OTHER],
+ tags: ["reading", "reader", "novel", "story"],
+ Icon: Icon.BookClosed,
+ },
+ {
+ name: "calendar-x",
+ categories: [IconCategory.BUSINESS, IconCategory.SYSTEM],
+ tags: ["dates", "times", "events", "schedule", "closed", "cancelled"],
+ Icon: Icon.CalendarX,
+ },
+ {
+ name: "check-circle",
+ categories: [IconCategory.BUSINESS, IconCategory.SYSTEM],
+ tags: ["todo", "to-do", "list", "checkbox", "round"],
+ Icon: Icon.CheckCircle,
+ },
+ {
+ name: "clock",
+ categories: [IconCategory.SYSTEM],
+ tags: ["times", "timer", "alarm", "schedule", "events", "watch"],
+ Icon: Icon.Clock,
+ },
+ {
+ name: "cloud",
+ categories: [
+ IconCategory.BUSINESS,
+ IconCategory.SYSTEM,
+ IconCategory.WEATHER,
+ ],
+ tags: ["serverless", "backup", "storage"],
+ Icon: Icon.Cloud,
+ },
+ {
+ name: "copy",
+ categories: [IconCategory.EDITOR, IconCategory.SYSTEM],
+ tags: ["duplicated", "copied"],
+ Icon: Icon.Copy,
+ },
+ {
+ name: "cube",
+ categories: [IconCategory.DESIGN, IconCategory.OTHER],
+ tags: ["square", "box", "3d", "volume", "blocks"],
+ Icon: Icon.Cube,
+ },
+ {
+ name: "document-text",
+ categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
+ tags: ["documents", "files", "save", "write"],
+ Icon: Icon.DocumentText,
+ },
+ {
+ name: "droid",
+ categories: [
+ IconCategory.BRAND,
+ IconCategory.COMMUNICATION,
+ IconCategory.DEVELOPMENT,
+ IconCategory.DEVICE,
+ IconCategory.SYSTEM,
+ ],
+ tags: ["android", "google", "mobile", "phone", "cellular", "cellphone"],
+ Icon: Icon.Droid,
+ },
+ {
+ name: "envelope",
+ categories: [IconCategory.COMMUNICATION],
+ tags: ["mail", "email", "send", "sent", "message"],
+ Icon: Icon.Envelope,
+ },
+ {
+ name: "envelope-alt",
+ categories: [IconCategory.COMMUNICATION],
+ tags: ["mail", "email", "send", "sent", "message"],
+ Icon: Icon.EnvelopeAlt,
+ },
+ {
+ name: "folder",
+ categories: [
+ IconCategory.DOCUMENT,
+ IconCategory.EDITOR,
+ IconCategory.SYSTEM,
+ ],
+ tags: ["directory", "directories", "files"],
+ Icon: Icon.Folder,
+ },
+ {
+ name: "folder-dip",
+ categories: [
+ IconCategory.DOCUMENT,
+ IconCategory.EDITOR,
+ IconCategory.SYSTEM,
+ ],
+ tags: ["directory", "directories", "files"],
+ Icon: Icon.FolderDip,
+ },
+ {
+ name: "folder-minimal",
+ categories: [
+ IconCategory.DOCUMENT,
+ IconCategory.EDITOR,
+ IconCategory.SYSTEM,
+ ],
+ tags: ["directory", "directories", "files"],
+ Icon: Icon.FolderMinimal,
+ },
+ {
+ name: "heart",
+ categories: [
+ IconCategory.COMMUNICATION,
+ IconCategory.DESIGN,
+ IconCategory.HEALTH,
+ IconCategory.OTHER,
+ ],
+ tags: ["wellness", "love", "healthy", "like"],
+ Icon: Icon.Heart,
+ },
+ {
+ name: "horse",
+ categories: [IconCategory.HEALTH, IconCategory.OTHER],
+ tags: ["animals", "equestrian", "chess", "knight", "games", "sports"],
+ Icon: Icon.Horse,
+ },
+ {
+ name: "microphone",
+ categories: [
+ IconCategory.COMMUNICATION,
+ IconCategory.DEVICE,
+ IconCategory.MEDIA,
+ IconCategory.SYSTEM,
+ ],
+ tags: ["microphone", "audio", "recording", "music", "sound", "podcast"],
+ Icon: Icon.Microphone,
+ },
+ {
+ name: "minus-circle",
+ categories: [
+ IconCategory.DEVELOPMENT,
+ IconCategory.FINANCE,
+ IconCategory.OTHER,
+ ],
+ tags: [
+ "subtraction",
+ "difference",
+ "mathematics",
+ "arithmetic",
+ "calculator",
+ "round",
+ ],
+ Icon: Icon.MinusCircle,
+ },
+ {
+ name: "music-notes-sixteenth",
+ categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
+ tags: ["songs", "audio", "playlist", "albums"],
+ Icon: Icon.MusicNotesSixteenth,
+ },
+ {
+ name: "pencil-clip",
+ categories: [IconCategory.DESIGN, IconCategory.EDITOR],
+ tags: ["write", "writing", "editing", "sign", "signature"],
+ Icon: Icon.PencilClip,
+ },
+ {
+ name: "pencil-line",
+ categories: [IconCategory.DESIGN, IconCategory.EDITOR],
+ tags: ["write", "writing", "editing", "sign", "signature"],
+ Icon: Icon.PencilLine,
+ },
+ {
+ name: "pen-nib",
+ categories: [IconCategory.DESIGN, IconCategory.EDITOR],
+ tags: [
+ "write",
+ "writing",
+ "editing",
+ "sign",
+ "signature",
+ "fountain pen",
+ "illustrator",
+ ],
+ Icon: Icon.PenNib,
+ },
+ {
+ name: "pin",
+ categories: [IconCategory.MAP],
+ tags: ["places", "markers", "locations"],
+ Icon: Icon.Pin,
+ },
+ {
+ name: "play-circle",
+ categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
+ tags: ["resume", "music", "start", "round"],
+ Icon: Icon.PlayCircle,
+ },
+ {
+ name: "plus-circle",
+ categories: [
+ IconCategory.DEVELOPMENT,
+ IconCategory.FINANCE,
+ IconCategory.OTHER,
+ ],
+ tags: [
+ "addition",
+ "sum",
+ "mathematics",
+ "arithmetic",
+ "calculator",
+ "round",
+ ],
+ Icon: Icon.PlusCircle,
+ },
+ {
+ name: "prohibit",
+ categories: [IconCategory.MAP, IconCategory.SYSTEM, IconCategory.OTHER],
+ tags: [
+ "forbidden",
+ "prohibited",
+ "cancelled",
+ "prevent",
+ "stop",
+ "do not enter",
+ ],
+ Icon: Icon.Prohibit,
+ },
+ {
+ name: "search",
+ categories: [IconCategory.EDITOR, IconCategory.SYSTEM],
+ tags: ["find", "locate", "query"],
+ Icon: Icon.Search,
+ },
+ {
+ name: "smiley",
+ categories: [
+ IconCategory.COMMUNICATION,
+ IconCategory.DESIGN,
+ IconCategory.OTHER,
+ ],
+ tags: ["face", "smiley", "emoji", "unimpressed"],
+ Icon: Icon.Smiley,
+ },
+ {
+ name: "smiley-meh",
+ categories: [
+ IconCategory.COMMUNICATION,
+ IconCategory.DESIGN,
+ IconCategory.OTHER,
+ ],
+ tags: ["face", "smiley", "emoji", "unimpressed"],
+ Icon: Icon.SmileyMeh,
+ },
+ {
+ name: "speaker-off",
+ categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
+ tags: ["muted", "volume", "sound", "music"],
+ Icon: Icon.SpeakerOff,
+ },
+ {
+ name: "star",
+ categories: [
+ IconCategory.COMMUNICATION,
+ IconCategory.MAP,
+ IconCategory.OTHER,
+ ],
+ tags: ["rate", "ratings", "favorites"],
+ Icon: Icon.Star,
+ },
+ {
+ name: "trash",
+ categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
+ tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
+ Icon: Icon.Trash,
+ },
+ {
+ name: "two-circle",
+ categories: [IconCategory.DESIGN],
+ tags: ["number", "digit", "2", "round"],
+ Icon: Icon.TwoCircle,
+ },
+ {
+ name: "user-circle",
+ categories: [IconCategory.USERS],
+ tags: ["person", "users", "account", "login", "circle"],
+ Icon: Icon.UserCircle,
+ },
+ {
+ name: "warning-triangle",
+ categories: [IconCategory.SYSTEM],
+ tags: ["alert", "danger", "dangerous", "caution"],
+ Icon: Icon.WarningTriangle,
+ },
+ {
+ name: "wifi-medium",
+ categories: [IconCategory.SYSTEM],
+ tags: ["wireless", "internet", "network", "connection", "connectivity"],
+ Icon: Icon.WifiMedium,
+ },
+];
+
+// export const iconList: Icon[] = [
+// {
+// name: "6-square",
+// categories: [IconCategory.DESIGN],
+// tags: ["number", "digit", "six", "box"],
+// Icon: require("../Icons/6-square.svg"),
+// },
+// {
+// name: "6-square-sharp",
+// categories: [IconCategory.DESIGN],
+// tags: ["number", "digit", "six", "box"],
+// Icon: require("../Icons/6-square-sharp.svg"),
+// },
+// {
+// name: "8-circle",
+// categories: [IconCategory.DESIGN],
+// tags: ["number", "digit", "eight", "round"],
+// Icon: require("../Icons/8-circle.svg"),
+// },
+// {
+// name: "arrow-right-circle",
+// categories: [IconCategory.DESIGN],
+// tags: ["pointer", "direction", "round"],
+// Icon: require("../Icons/arrow-right-circle.svg"),
+// },
+// {
+// name: "basketball",
+// categories: [IconCategory.BRAND, IconCategory.HEALTH, IconCategory.OTHER],
+// tags: ["sports", "games", "athletics", "dribbble"],
+// Icon: require("../Icons/basketball.svg"),
+// },
+// {
+// name: "battery-half",
+// categories: [IconCategory.DEVICE, IconCategory.SYSTEM],
+// tags: ["charged", "charger", "charging", "power"],
+// Icon: require("../Icons/battery-half.svg"),
+// },
+// {
+// name: "battery-half-hash",
+// categories: [IconCategory.DEVICE, IconCategory.SYSTEM],
+// tags: ["charged", "charger", "charging", "power"],
+// Icon: require("../Icons/battery-half-hash.svg"),
+// },
+// {
+// name: "book-open",
+// categories: [IconCategory.DOCUMENT, IconCategory.OTHER],
+// tags: ["reading", "reader", "novel", "story"],
+// Icon: require("../Icons/book-open.svg"),
+// },
+// {
+// name: "calendar-6",
+// categories: [IconCategory.BUSINESS, IconCategory.SYSTEM],
+// tags: ["dates", "times", "events", "schedule", "six"],
+// Icon: require("../Icons/calendar-6.svg"),
+// },
+// {
+// name: "check-circle",
+// categories: [IconCategory.BUSINESS, IconCategory.SYSTEM],
+// tags: ["todo", "to-do", "list", "checkbox", "round"],
+// Icon: require("../Icons/check-circle.svg"),
+// },
+// {
+// name: "clock",
+// categories: [IconCategory.SYSTEM],
+// tags: ["times", "timer", "alarm", "schedule", "events", "watch"],
+// Icon: require("../Icons/clock.svg"),
+// },
+// {
+// name: "cloud",
+// categories: [
+// IconCategory.BUSINESS,
+// IconCategory.SYSTEM,
+// IconCategory.WEATHER,
+// ],
+// tags: ["serverless", "backup", "storage"],
+// Icon: require("../Icons/cloud.svg"),
+// },
+// {
+// name: "cube",
+// categories: [IconCategory.DESIGN, IconCategory.OTHER],
+// tags: ["square", "box", "3d", "volume", "blocks"],
+// Icon: require("../Icons/cube.svg"),
+// },
+// {
+// name: "delete",
+// categories: [IconCategory.SYSTEM],
+// tags: ["keyboard", "remove", "backspace"],
+// Icon: require("../Icons/delete.svg"),
+// },
+// {
+// name: "doc",
+// categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
+// tags: ["documents", "files", "save"],
+// Icon: require("../Icons/doc.svg"),
+// },
+// {
+// name: "doc-text",
+// categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
+// tags: ["documents", "files", "save", "write"],
+// Icon: require("../Icons/doc-text.svg"),
+// },
+// {
+// name: "doc-x",
+// categories: [IconCategory.DOCUMENT, IconCategory.EDITOR],
+// tags: ["documents", "files", "cancel", "discard", "close"],
+// Icon: require("../Icons/doc-x.svg"),
+// },
+// {
+// name: "do-not-disturb",
+// categories: [
+// IconCategory.SYSTEM,
+// IconCategory.USERS,
+// IconCategory.WEATHER,
+// IconCategory.OTHER,
+// ],
+// tags: ["forbidden", "disallowed", "blocked", "spam"],
+// Icon: require("../Icons/do-not-disturb.svg"),
+// },
+// {
+// name: "droid",
+// categories: [
+// IconCategory.BRAND,
+// IconCategory.COMMUNICATION,
+// IconCategory.DEVELOPMENT,
+// IconCategory.DEVICE,
+// IconCategory.SYSTEM,
+// ],
+// tags: ["android", "google", "mobile", "phone", "cellular", "cellphone"],
+// Icon: require("../Icons/droid.svg"),
+// },
+// {
+// name: "folder",
+// categories: [
+// IconCategory.DOCUMENT,
+// IconCategory.EDITOR,
+// IconCategory.SYSTEM,
+// ],
+// tags: ["directory", "directories", "files"],
+// Icon: require("../Icons/folder.svg"),
+// },
+// {
+// name: "folder-dip",
+// categories: [
+// IconCategory.DOCUMENT,
+// IconCategory.EDITOR,
+// IconCategory.SYSTEM,
+// ],
+// tags: ["directory", "directories", "files"],
+// Icon: require("../Icons/folder-dip.svg"),
+// },
+// {
+// name: "heart",
+// categories: [
+// IconCategory.COMMUNICATION,
+// IconCategory.DESIGN,
+// IconCategory.HEALTH,
+// IconCategory.OTHER,
+// ],
+// tags: ["wellness", "love", "healthy", "like"],
+// Icon: require("../Icons/heart.svg"),
+// },
+// {
+// name: "horse",
+// categories: [IconCategory.HEALTH, IconCategory.OTHER],
+// tags: ["animals", "equestrian", "chess", "knight", "games", "sports"],
+// Icon: require("../Icons/horse.svg"),
+// },
+// {
+// name: "intersect",
+// categories: [IconCategory.DESIGN],
+// tags: ["merge", "join", "intersection", "layers"],
+// Icon: require("../Icons/intersect.svg"),
+// },
+// {
+// name: "mail",
+// categories: [IconCategory.BUSINESS, IconCategory.COMMUNICATION],
+// tags: ["email", "messages", "messaging", "send", "sent"],
+// Icon: require("../Icons/mail.svg"),
+// },
+// {
+// name: "medium",
+// categories: [IconCategory.BRAND],
+// tags: ["publish", "writing", "write"],
+// Icon: require("../Icons/medium.svg"),
+// },
+// {
+// name: "meh",
+// categories: [
+// IconCategory.COMMUNICATION,
+// IconCategory.DESIGN,
+// IconCategory.OTHER,
+// ],
+// tags: ["face", "smiley", "emoji", "unimpressed"],
+// Icon: require("../Icons/meh.svg"),
+// },
+// {
+// name: "mic",
+// categories: [
+// IconCategory.COMMUNICATION,
+// IconCategory.DEVICE,
+// IconCategory.MEDIA,
+// IconCategory.SYSTEM,
+// ],
+// tags: ["microphone", "audio", "recording", "music", "sound", "podcast"],
+// Icon: require("../Icons/mic.svg"),
+// },
+// {
+// name: "music-beam-angled",
+// categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
+// tags: ["songs", "audio", "playlist", "albums"],
+// Icon: require("../Icons/music-beam-angled.svg"),
+// },
+// {
+// name: "music-beam-straight",
+// categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
+// tags: ["songs", "audio", "playlist", "albums"],
+// Icon: require("../Icons/music-beam-straight.svg"),
+// },
+// {
+// name: "pencil-line",
+// categories: [IconCategory.DESIGN, IconCategory.EDITOR],
+// tags: ["write", "writing", "editing", "sign", "signature"],
+// Icon: require("../Icons/pencil-line.svg"),
+// },
+// {
+// name: "pen-nib",
+// categories: [IconCategory.DESIGN, IconCategory.EDITOR],
+// tags: [
+// "write",
+// "writing",
+// "editing",
+// "sign",
+// "signature",
+// "fountain pen",
+// "illustrator",
+// ],
+// Icon: require("../Icons/pen-nib.svg"),
+// },
+// {
+// name: "profile-round",
+// categories: [IconCategory.USERS],
+// tags: ["person", "users", "account", "login", "circle"],
+// Icon: require("../Icons/profile-round.svg"),
+// },
+// {
+// name: "rewind",
+// categories: [IconCategory.MEDIA, IconCategory.SYSTEM],
+// tags: ["backwards", "reverse", "audio", "recording", "music", "sound"],
+// Icon: require("../Icons/rewind.svg"),
+// },
+// {
+// name: "send",
+// categories: [IconCategory.BUSINESS, IconCategory.COMMUNICATION],
+// tags: ["mail", "email", "messages", "up", "arrow", "pointer", "direction"],
+// Icon: require("../Icons/chevron.svg"),
+// },
+// {
+// name: "star",
+// categories: [
+// IconCategory.COMMUNICATION,
+// IconCategory.MAP,
+// IconCategory.OTHER,
+// ],
+// tags: ["rate", "ratings", "favorites"],
+// Icon: require("../Icons/star.svg"),
+// },
+// {
+// name: "table",
+// categories: [IconCategory.EDITOR, IconCategory.OTHER],
+// tags: ["tabular", "spreadsheet", "excel"],
+// Icon: require("../Icons/table.svg"),
+// },
+// {
+// name: "trash",
+// categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
+// tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
+// Icon: require("../Icons/trash.svg"),
+// },
+// {
+// name: "trash-duo",
+// categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
+// tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
+// Icon: require("../Icons/trash-duo.svg"),
+// },
+// {
+// name: "trash-solid",
+// categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM],
+// tags: ["garbage", "delete", "destroy", "recycle", "recycling"],
+// Icon: require("../Icons/trash-solid.svg"),
+// },
+// {
+// name: "volume-off",
+// categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.SYSTEM],
+// tags: ["speakers", "audio", "recording", "music", "sound"],
+// Icon: require("../Icons/volume-off.svg"),
+// },
+// {
+// name: "warning",
+// categories: [IconCategory.SYSTEM],
+// tags: ["alert", "danger", "dangerous", "caution"],
+// Icon: require("../Icons/warning.svg"),
+// },
+// {
+// name: "wifi-full",
+// categories: [IconCategory.SYSTEM],
+// tags: ["wireless", "internet", "network", "connection", "connectivity"],
+// Icon: require("../Icons/wifi-full.svg"),
+// },
+// {
+// name: "wifi-low",
+// categories: [IconCategory.SYSTEM],
+// tags: ["wireless", "internet", "network", "connection", "connectivity"],
+// Icon: require("../Icons/wifi-low.svg"),
+// },
+// {
+// name: "wifi-none",
+// categories: [IconCategory.SYSTEM],
+// tags: ["wireless", "internet", "network", "connection", "connectivity"],
+// Icon: require("../Icons/wifi-none.svg"),
+// },
+// ];
diff --git a/src/lib/Icon.ts b/src/lib/index.ts
similarity index 76%
rename from src/lib/Icon.ts
rename to src/lib/index.ts
index b586e9f..97f276f 100644
--- a/src/lib/Icon.ts
+++ b/src/lib/index.ts
@@ -1,3 +1,5 @@
+import { IconProps } from "phosphor-react/dist/lib/Icon";
+
export enum IconStyle {
THIN = "thin",
LIGHT = "light",
@@ -26,10 +28,11 @@ export enum IconCategory {
OTHER = "Other",
}
-export interface Icon {
+export interface IconEntry {
name: string;
- style: IconStyle;
categories: IconCategory[];
tags: string[];
- asset: React.FC>;
+ Icon: React.ForwardRefExoticComponent<
+ IconProps & React.RefAttributes
+ >;
}
diff --git a/src/state/atoms.ts b/src/state/atoms.ts
index ef0c18a..3d07d35 100644
--- a/src/state/atoms.ts
+++ b/src/state/atoms.ts
@@ -1,5 +1,5 @@
import { atom } from "recoil";
-import { IconStyle } from "../lib/Icon";
+import { IconStyle } from "../lib";
/**
* ATOM
@@ -20,7 +20,7 @@ export const styleQueryAtom = atom({
export const iconSizeAtom = atom({
key: "iconSizeAtom",
- default: 24,
+ default: 32,
});
export const iconColorAtom = atom({
diff --git a/src/state/selectors.ts b/src/state/selectors.ts
index 25447a9..e72d940 100644
--- a/src/state/selectors.ts
+++ b/src/state/selectors.ts
@@ -1,8 +1,8 @@
import { selector, selectorFamily } from "recoil";
import { searchQueryAtom, styleQueryAtom } from "./atoms";
-import { Icon, IconStyle, IconCategory } from "../lib/Icon";
-import { iconList } from "../lib/iconList";
+import { IconEntry, IconCategory } from "../lib";
+import { icons } from "../lib/icons";
/**
* SELECTOR
@@ -11,7 +11,7 @@ import { iconList } from "../lib/iconList";
* modifies the given state in some way:
*/
-const isQueryMatch = (icon: Icon, query: string): boolean => {
+const isQueryMatch = (icon: IconEntry, query: string): boolean => {
return (
icon.name.includes(query) ||
icon.tags.some((tag) => tag.toLowerCase().includes(query)) ||
@@ -19,44 +19,43 @@ const isQueryMatch = (icon: Icon, query: string): boolean => {
);
};
-const isStyleMatch = (icon: Icon, style?: IconStyle): boolean => {
- return !style || icon.style === style;
-};
-
-export const filteredQueryResultsSelector = selector({
+export const filteredQueryResultsSelector = selector>({
key: "filteredQueryResultsSelector",
get: ({ get }) => {
const query = get(searchQueryAtom).trim().toLowerCase();
const style = get(styleQueryAtom);
- if (!query && !style) return iconList;
+ if (!query && !style) return icons;
- return iconList.filter((icon) => {
- return isStyleMatch(icon, style) && isQueryMatch(icon, query);
+ return icons.filter((icon) => {
+ return isQueryMatch(icon, query);
});
// .sort(() => Math.floor(Math.random() - 0.5));
},
});
-type CategorizedIcons = {
- [key in IconCategory]?: Icon[];
-};
+type CategorizedIcons = Partial>;
-export const categorizedQueryResultsSelector = selector({
+export const categorizedQueryResultsSelector = selector<
+ Readonly
+>({
key: "categorizedQueryResultsSelector",
get: ({ get }) => {
const filteredResults = get(filteredQueryResultsSelector);
return filteredResults.reduce((acc, curr) => {
curr.categories.forEach((category) => {
- if (acc[category]) acc[category]?.push(curr);
- else acc[category] = [curr];
+ if (!acc[category]) acc[category] = [];
+ acc[category]!!.push(curr);
});
return acc;
}, {});
},
});
-export const singleCategoryQueryResultsSelector = selectorFamily({
+export const singleCategoryQueryResultsSelector = selectorFamily<
+ Readonly,
+ IconCategory
+>({
key: "singleCategoryQueryResultsSelector",
get: (category: IconCategory) => ({ get }) => {
const filteredResults = get(filteredQueryResultsSelector);