├── .gitattributes
├── go.mod
├── scripts
├── fixperms.sh
└── startup.sh
├── go.sum
├── cmd
└── build
│ ├── kebab_to_name.go
│ ├── kebab_to_func_name.go
│ ├── download_file.go
│ ├── minify.go
│ ├── unzip.go
│ ├── main.go
│ └── generate_go.go
├── .gitignore
├── compose.yaml
├── taskfile.yaml
├── LICENSE
├── Dockerfile.dev
├── README.md
└── included_icons.txt
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
2 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/eduardolat/gomponents-lucide
2 |
3 | go 1.18
4 |
5 | require maragu.dev/gomponents v1.0.0
6 |
--------------------------------------------------------------------------------
/scripts/fixperms.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/bash
2 |
3 | # Fix permissions of all files in the current directory and subdirectories
4 | chmod -R 777 ./
5 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | maragu.dev/gomponents v1.0.0 h1:eeLScjq4PqP1l+r5z/GC+xXZhLHXa6RWUWGW7gSfLh4=
2 | maragu.dev/gomponents v1.0.0/go.mod h1:oEDahza2gZoXDoDHhw8jBNgH+3UR5ni7Ur648HORydM=
3 |
--------------------------------------------------------------------------------
/cmd/build/kebab_to_name.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "strings"
4 |
5 | func kebabToName(s string) string {
6 | words := strings.Split(s, "-")
7 | for i, word := range words {
8 | words[i] = strings.ToUpper(word[:1]) + word[1:]
9 | }
10 | return strings.Join(words, " ")
11 | }
12 |
--------------------------------------------------------------------------------
/cmd/build/kebab_to_func_name.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import "strings"
4 |
5 | func kebabToFuncName(s string) string {
6 | var result string
7 | words := strings.Split(s, "-")
8 | for _, word := range words {
9 | if word == "" {
10 | continue
11 | }
12 | result += strings.ToUpper(word[:1]) + word[1:]
13 | }
14 | return result
15 | }
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Distribution folder
2 | dist/
3 | .idea/
4 |
5 | # Temp files/folders
6 | tmp/
7 |
8 | # Binaries for programs and plugins
9 | *.exe
10 | *.exe~
11 | *.dll
12 | *.so
13 | *.dylib
14 |
15 | # Test binary, built with `go test -c`
16 | *.test
17 |
18 | # Output of the go coverage tool, specifically when used with LiteIDE
19 | *.out
20 |
21 | # Go workspace file
22 | go.work
23 |
--------------------------------------------------------------------------------
/compose.yaml:
--------------------------------------------------------------------------------
1 | name: gomponents-lucide
2 |
3 | services:
4 | app:
5 | container_name: glu_app
6 | build:
7 | context: .
8 | dockerfile: Dockerfile.dev
9 | volumes:
10 | - ./:/app
11 | - glu_vol_app_ssh:/root/.ssh
12 | - glu_vol_app_gh:/root/.config/gh
13 | - glu_vol_app_go_mod_cache:/root/go/pkg/mod
14 | stdin_open: true # docker run -i
15 | tty: true # docker run -t
16 |
17 | volumes:
18 | glu_vol_app_ssh:
19 | glu_vol_app_gh:
20 | glu_vol_app_go_mod_cache:
21 |
--------------------------------------------------------------------------------
/taskfile.yaml:
--------------------------------------------------------------------------------
1 | version: "3"
2 |
3 | tasks:
4 | on: # Starts the development environment and enters into the container
5 | cmds:
6 | - docker compose up -d --build
7 | - docker compose exec app /bin/bash
8 |
9 | off: # Stops the development environment
10 | cmd: docker compose down
11 |
12 | build: # Runs the build cmd to generate the lucide package
13 | cmds:
14 | - go run ./cmd/build/.
15 | - task fmt
16 |
17 | tidy:
18 | cmd: go mod tidy
19 |
20 | fmt:
21 | cmd: go fmt ./...
22 |
23 | test:
24 | cmds:
25 | - task fmt
26 | - go test ./...
27 |
28 | fixperms: # Fixes the permissions of the files in the project
29 | cmd: ./scripts/fixperms.sh
30 |
--------------------------------------------------------------------------------
/cmd/build/download_file.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "io"
6 | "net/http"
7 | "os"
8 | )
9 |
10 | func downloadFile(filepath string, url string) (err error) {
11 | // Create the file
12 | out, err := os.Create(filepath)
13 | if err != nil {
14 | return err
15 | }
16 | defer out.Close()
17 |
18 | // Get the data
19 | resp, err := http.Get(url)
20 | if err != nil {
21 | return err
22 | }
23 | defer resp.Body.Close()
24 |
25 | // Check server response
26 | if resp.StatusCode != http.StatusOK {
27 | return fmt.Errorf("bad status: %s", resp.Status)
28 | }
29 |
30 | // Writer the body to file
31 | _, err = io.Copy(out, resp.Body)
32 | if err != nil {
33 | return err
34 | }
35 |
36 | return nil
37 | }
38 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 eduardolat
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/cmd/build/minify.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "os"
6 | "os/exec"
7 | "path/filepath"
8 | )
9 |
10 | // minifySVGFolder minifies all the SVG's inside a directory using the minify binary
11 | //
12 | // See: https://github.com/tdewolff/minify/tree/master/cmd/minify
13 | func minifySVGFolder(dirPath string) error {
14 | err := filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
15 | if err != nil {
16 | return err
17 | }
18 |
19 | if info.IsDir() {
20 | return nil
21 | }
22 |
23 | if filepath.Ext(path) != ".svg" {
24 | return nil
25 | }
26 |
27 | return minifySVG(path)
28 | })
29 |
30 | if err != nil {
31 | return fmt.Errorf("error walking the path %s: %w", dirPath, err)
32 | }
33 |
34 | return nil
35 | }
36 |
37 | // minifySVG minifies a SVG file using the minify binary
38 | //
39 | // See: https://github.com/tdewolff/minify/tree/master/cmd/minify
40 | func minifySVG(filePath string) error {
41 | cmd := exec.Command("minify", "--type=svg", "-o", filePath, filePath)
42 |
43 | err := cmd.Run()
44 | if err != nil {
45 | return fmt.Errorf("error minifying file %s: %w", filePath, err)
46 | }
47 |
48 | return nil
49 | }
50 |
--------------------------------------------------------------------------------
/scripts/startup.sh:
--------------------------------------------------------------------------------
1 | # Define command aliases
2 | alias t='task'
3 | alias td='task dev'
4 | alias tb='task build'
5 | alias tt='task test'
6 | alias tl='task lint'
7 | alias tf='task format'
8 | alias ll='ls -alF'
9 | alias la='ls -A'
10 | alias l='ls -CF'
11 | alias ..='cd ..'
12 | alias c='clear'
13 | echo "[OK] aliases set"
14 |
15 | # Set the user file-creation mode mask to 000, which allows all
16 | # users read, write, and execute permissions for newly created files.
17 | umask 000
18 | echo "[OK] umask set"
19 |
20 | # Run the 'fixperms' task that fixes the permissions of the files and
21 | # directories in the project.
22 | task fixperms
23 | echo "[OK] permissions fixed"
24 |
25 | # Configure Git to ignore ownership and file mode changes.
26 | git config --global --add safe.directory '*'
27 | git config --global core.fileMode false
28 | git config --unset core.fileMode
29 | git config core.fileMode false
30 | echo "[OK] git configured"
31 |
32 | echo "
33 | ───────────────────────────────────────────────
34 | ── Website: https://eduardo.lat ───────────────
35 | ── Github: https://github.com/eduardolat ──────
36 | ───────────────────────────────────────────────
37 | ── Development environment is ready to use! ───
38 | ───────────────────────────────────────────────
39 | "
40 |
--------------------------------------------------------------------------------
/cmd/build/unzip.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "archive/zip"
5 | "fmt"
6 | "io"
7 | "os"
8 | "path/filepath"
9 | "strings"
10 | )
11 |
12 | func unzip(srcpath string, destpath string) error {
13 | r, err := zip.OpenReader(srcpath)
14 | if err != nil {
15 | return err
16 | }
17 | defer func() {
18 | if err := r.Close(); err != nil {
19 | panic(err)
20 | }
21 | }()
22 |
23 | os.MkdirAll(destpath, 0755)
24 |
25 | // Closure to address file descriptors issue with all the deferred .Close() methods
26 | extractAndWriteFile := func(f *zip.File) error {
27 | rc, err := f.Open()
28 | if err != nil {
29 | return err
30 | }
31 | defer func() {
32 | if err := rc.Close(); err != nil {
33 | panic(err)
34 | }
35 | }()
36 |
37 | path := filepath.Join(destpath, f.Name)
38 |
39 | // Check for ZipSlip (Directory traversal)
40 | if !strings.HasPrefix(path, filepath.Clean(destpath)+string(os.PathSeparator)) {
41 | return fmt.Errorf("illegal file path: %s", path)
42 | }
43 |
44 | if f.FileInfo().IsDir() {
45 | os.MkdirAll(path, f.Mode())
46 | } else {
47 | os.MkdirAll(filepath.Dir(path), f.Mode())
48 | f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
49 | if err != nil {
50 | return err
51 | }
52 | defer func() {
53 | if err := f.Close(); err != nil {
54 | panic(err)
55 | }
56 | }()
57 |
58 | _, err = io.Copy(f, rc)
59 | if err != nil {
60 | return err
61 | }
62 | }
63 | return nil
64 | }
65 |
66 | for _, f := range r.File {
67 | err := extractAndWriteFile(f)
68 | if err != nil {
69 | return err
70 | }
71 | }
72 |
73 | return nil
74 | }
75 |
--------------------------------------------------------------------------------
/Dockerfile.dev:
--------------------------------------------------------------------------------
1 | # Please always use the same golang version that
2 | # gomponents uses to maximize compatibility
3 | FROM golang:1.18 AS golang
4 |
5 | # This is the actual image we will use
6 | FROM ubuntu:24.04
7 |
8 | # Go to a temporary directory until we install all the dependencies
9 | RUN mkdir -p /app/temp
10 | WORKDIR /app/temp
11 |
12 | # Install system dependencies
13 | RUN apt-get update && \
14 | apt-get install -y wget git && \
15 | rm -rf /var/lib/apt/lists/*
16 |
17 | # Copy the golang binaries from the golang image
18 | COPY --from=golang /usr/local/go /usr/local/go
19 | ENV PATH "$PATH:/usr/local/go/bin"
20 |
21 | # Install GitHub CLI
22 | RUN wget https://github.com/cli/cli/releases/download/v2.46.0/gh_2.46.0_linux_amd64.tar.gz && \
23 | tar -xzf gh_2.46.0_linux_amd64.tar.gz && \
24 | mv gh_2.46.0_linux_amd64/bin/gh /usr/local/bin/gh && \
25 | chmod 777 /usr/local/bin/gh
26 |
27 | # Install task
28 | RUN wget https://github.com/go-task/task/releases/download/v3.34.1/task_linux_amd64.tar.gz && \
29 | tar -xzf task_linux_amd64.tar.gz && \
30 | mv ./task /usr/local/bin/task && \
31 | chmod 777 /usr/local/bin/task
32 |
33 | # install minify
34 | RUN wget https://github.com/tdewolff/minify/releases/download/v2.20.34/minify_linux_amd64.tar.gz && \
35 | tar -xzf minify_linux_amd64.tar.gz && \
36 | mv ./minify /usr/local/bin/minify && \
37 | chmod 777 /usr/local/bin/minify
38 |
39 | # Delete the temporary directory and go to the app directory
40 | RUN rm -rf /app/temp
41 | WORKDIR /app
42 |
43 | # Add the startup script on every bash session
44 | COPY scripts/startup.sh /usr/local/bin/startup.sh
45 | RUN echo "\n\n" >> /root/.bashrc && \
46 | cat /usr/local/bin/startup.sh >> /root/.bashrc
47 |
48 | # Command just to keep the container running
49 | CMD ["tail", "-f", "/dev/null"]
--------------------------------------------------------------------------------
/cmd/build/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "log"
5 | "os"
6 | "path"
7 | "strings"
8 | )
9 |
10 | const (
11 | version = "0.452.0"
12 | iconsURL = "https://github.com/lucide-icons/lucide/releases/download/" + version + "/lucide-icons-" + version + ".zip"
13 | repoIconsDir = "https://raw.githubusercontent.com/lucide-icons/lucide/" + version + "/icons"
14 | tempDir = "./tmp"
15 | iconsOutputFilePath = "./lucide.go"
16 | infoOutputFilePath = "./info.go"
17 | includedIconsFilePath = "./included_icons.txt"
18 | )
19 |
20 | func main() {
21 | os.RemoveAll(tempDir)
22 | err := os.MkdirAll(tempDir, os.ModePerm)
23 | if err != nil {
24 | log.Fatal(err)
25 | }
26 | defer os.RemoveAll(tempDir)
27 |
28 | // Download icons
29 | iconsFile := path.Join(tempDir, "icons.zip")
30 | if err := downloadFile(iconsFile, iconsURL); err != nil {
31 | log.Fatal(err)
32 | }
33 |
34 | // Unzip icons
35 | extractedDir := path.Join(tempDir, "extracted")
36 | if err := unzip(iconsFile, extractedDir); err != nil {
37 | log.Fatal(err)
38 | }
39 |
40 | // Minify SVG icons
41 | if err := minifySVGFolder(extractedDir); err != nil {
42 | log.Fatal(err)
43 | }
44 |
45 | // Read icons folder
46 | iconsDir := path.Join(extractedDir, "icons")
47 | files, err := os.ReadDir(iconsDir)
48 | if err != nil {
49 | log.Fatal(err)
50 | }
51 |
52 | // Generate Go code from icons
53 | components := []string{}
54 | infos := []string{}
55 | includedIcons := []string{}
56 | for _, file := range files {
57 | if file.IsDir() {
58 | continue
59 | }
60 |
61 | ext := path.Ext(file.Name())
62 | if ext != ".svg" && ext != ".json" {
63 | continue
64 | }
65 |
66 | kebabCaseName := strings.TrimSuffix(file.Name(), ext)
67 | funcName := kebabToFuncName(kebabCaseName)
68 | name := kebabToName(kebabCaseName)
69 |
70 | filePath := path.Join(iconsDir, file.Name())
71 | b, err := os.ReadFile(filePath)
72 | if err != nil {
73 | log.Fatal(err)
74 | }
75 |
76 | if ext == ".svg" {
77 | component := generateComponent(file.Name(), funcName, b)
78 | components = append(components, component)
79 | includedIcons = append(includedIcons, funcName)
80 | }
81 |
82 | if ext == ".json" {
83 | info := generateInfo(file.Name(), name, funcName, b)
84 | infos = append(infos, info)
85 | }
86 | }
87 | iconsFileContents := generateIconsFile(components)
88 | infoFileContents := generateInfoFile(infos)
89 |
90 | // Write icons Go code to file
91 | err = os.WriteFile(iconsOutputFilePath, iconsFileContents, os.ModePerm)
92 | if err != nil {
93 | log.Fatal(err)
94 | }
95 |
96 | // Write info Go code to file
97 | err = os.WriteFile(infoOutputFilePath, infoFileContents, os.ModePerm)
98 | if err != nil {
99 | log.Fatal(err)
100 | }
101 |
102 | // Write icons list to file
103 | includedIconsFileContents := strings.Join(includedIcons, "\n")
104 | err = os.WriteFile(includedIconsFilePath, []byte(includedIconsFileContents), os.ModePerm)
105 | if err != nil {
106 | log.Fatal(err)
107 | }
108 |
109 | log.Println("✅ Lucide icons generated successfully!")
110 | }
111 |
--------------------------------------------------------------------------------
/cmd/build/generate_go.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "go/format"
7 | "log"
8 | "strings"
9 | )
10 |
11 | type IconInfo struct {
12 | Tags []string `json:"tags"`
13 | Categories []string `json:"categories"`
14 | }
15 |
16 | func generateComponent(fileName string, funcName string, svgBytes []byte) string {
17 | fullSvg := string(svgBytes)
18 |
19 | // Find where the children starts
20 | start := strings.Index(fullSvg, ">") + 1
21 | if start == -1 {
22 | log.Fatalf("could not find the start of the svg tag in %s", fileName)
23 | }
24 |
25 | // Remove the svg tag and format the svg
26 | svg := fullSvg[start:]
27 | svg = strings.ReplaceAll(svg, "", "")
28 | svg = strings.TrimSpace(svg)
29 |
30 | previewURL := repoIconsDir + "/" + fileName
31 |
32 | fn := `
33 | // ` + funcName + ` icon: ` + previewURL + `
34 | func ` + funcName + `(children ...gomponents.Node) gomponents.Node {
35 | return svgWrapper(
36 | gomponents.Group(children),
37 | gomponents.Raw(` + "`" + svg + "`" + `),
38 | )
39 | }
40 | `
41 |
42 | return fn
43 | }
44 |
45 | func generateInfo(fileName string, name string, funcName string, jsonBytes []byte) string {
46 | var info IconInfo
47 | if err := json.Unmarshal(jsonBytes, &info); err != nil {
48 | log.Fatalf("could not unmarshal %s: %v", fileName, err)
49 | }
50 |
51 | tpl := `{
52 | Name: "%s",
53 | Icon: %s,
54 | Tags: []string{%s},
55 | Categories: []string{%s},
56 | },`
57 |
58 | tags := ""
59 | for _, tag := range info.Tags {
60 | tags += `"` + tag + `",`
61 | }
62 |
63 | categories := ""
64 | for _, category := range info.Categories {
65 | categories += `"` + category + `",`
66 | }
67 |
68 | return fmt.Sprintf(tpl, name, funcName, tags, categories)
69 | }
70 |
71 | func generatePackageDef() string {
72 | return `
73 | // Code generated by lucide-icons build task. DO NOT EDIT.
74 | // v` + version + `
75 |
76 | package lucide
77 | `
78 | }
79 |
80 | func generateIconsFile(components []string) []byte {
81 | pkg := generatePackageDef() + `
82 |
83 | import "maragu.dev/gomponents"
84 |
85 | // svgWrapper just creates the svg skeleton following the lucide
86 | // guidelines. It is used by all the icons.
87 | //
88 | // It includes an extra attribute data-glucide="icon" to globally
89 | // identify the icons generated by this package. It can be used to
90 | // style all the icons at once using CSS.
91 | //
92 | // Same as:
93 | //
94 | //
106 | func svgWrapper(children ...gomponents.Node) gomponents.Node {
107 | return gomponents.El(
108 | "svg",
109 | gomponents.Attr("xmlns", "http://www.w3.org/2000/svg"),
110 | gomponents.Attr("width", "24"),
111 | gomponents.Attr("height", "24"),
112 | gomponents.Attr("viewBox", "0 0 24 24"),
113 | gomponents.Attr("fill", "none"),
114 | gomponents.Attr("stroke", "currentColor"),
115 | gomponents.Attr("stroke-width", "2"),
116 | gomponents.Attr("stroke-linecap", "round"),
117 | gomponents.Attr("stroke-linejoin", "round"),
118 | gomponents.Attr("data-glucide", "icon"),
119 | gomponents.Group(children),
120 | )
121 | }
122 | `
123 | pkg += strings.Join(components, "\n\n")
124 |
125 | b, err := format.Source([]byte(pkg))
126 | if err != nil {
127 | log.Fatal(err)
128 | }
129 |
130 | return b
131 | }
132 |
133 | func generateInfoFile(infos []string) []byte {
134 | pkg := generatePackageDef() + `
135 |
136 | import "maragu.dev/gomponents"
137 |
138 | // IconInfo represents the information of an icon.
139 | type IconInfo struct {
140 | Name string
141 | Icon func (children ...gomponents.Node) gomponents.Node
142 | Tags []string
143 | Categories []string
144 | }
145 |
146 | // IconsInfo is a list of all the icons information.
147 | var IconsInfo = []IconInfo{
148 | `
149 | pkg += strings.Join(infos, "\n") + "\n"
150 | pkg += `}`
151 |
152 | b, err := format.Source([]byte(pkg))
153 | if err != nil {
154 | log.Fatal(err)
155 | }
156 |
157 | return b
158 | }
159 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 🌀 Lucide icons for gomponents
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | This module provides the set of [Lucide Icons](https://lucide.dev/) for [gomponents](https://www.gomponents.com/).
14 |
15 | ## Features
16 |
17 | - More than 1530 beautiful icons
18 | - Easy to use
19 | - Easy to customize
20 | - Zero dependencies
21 | - No client-side JavaScript
22 |
23 | ## Installation
24 |
25 | ```bash
26 | go get github.com/eduardolat/gomponents-lucide
27 | ```
28 |
29 | ## Usage
30 |
31 | You can [find your icons here](https://lucide.dev/icons/), convert the name to UpperCamelCase, and use it as a function that receives optional attributes to customize the SVG.
32 |
33 | Your code editor should help you with the autocompletion of the name of the functions.
34 |
35 | Here is an example:
36 |
37 | ```go
38 | package main
39 |
40 | import (
41 | "os"
42 | "maragu.dev/gomponents"
43 | "maragu.dev/gomponents/html"
44 | "github.com/eduardolat/gomponents-lucide"
45 | )
46 |
47 | func myPage() gomponents.Node {
48 | return html.Div(
49 | lucide.CircleUser(),
50 | lucide.ChevronUp(),
51 | lucide.Power(),
52 | lucide.Star(),
53 | lucide.Languages(),
54 | lucide.Usb(),
55 | //...
56 | lucide.Cherry(
57 | // You can add any attributes you want
58 | // to customize the SVG
59 | html.Class("size-6 text-blue-500"),
60 | ),
61 | )
62 | }
63 |
64 | func main() {
65 | // This prints the HTML to stdout but you can
66 | // write it to whatever io.Writer you want
67 | page := myPage()
68 | page.Render(os.Stdout)
69 | }
70 | ```
71 |
72 | ## Customization
73 |
74 | You can customize the SVG icons in two ways: individually and globally.
75 |
76 | ### Individually
77 |
78 | You can use the `html.Class` or `html.Style` attributes to customize the SVG icons individually.
79 |
80 | ```go
81 | lucide.Cherry(
82 | html.Class("size-6 text-blue-500"),
83 | )
84 | ```
85 |
86 | ### Globally
87 |
88 | **Every SVG in this module** includes the `data-glucide="icon"` attribute. You can use this attribute to customize all the icons globally using CSS:
89 |
90 | ```css
91 | svg[data-glucide="icon"] {
92 | stroke-width: 4;
93 | stroke: red;
94 | }
95 | ```
96 |
97 | This approach ensures that any SVG icon with the `data-glucide="icon"` attribute will inherit the styles defined in your CSS, making it easy to maintain a consistent appearance across all icons in your project.
98 |
99 | ### Resolving conflicts with Tailwind CSS or custom styles
100 |
101 | When using Tailwind CSS or custom styles for individual icon styling, you might encounter conflicts with global styles. To resolve this, you can modify your global styles to allow for Tailwind or custom styles overrides:
102 |
103 | ```css
104 | svg[data-glucide="icon"]:not([class*="size-"]) {
105 | width: 16px;
106 | height: 16px;
107 | }
108 | ```
109 |
110 | This CSS rule applies a default size to all icons that don't have a specific `size-` class, allowing you to easily override the size using Tailwind or custom classes when needed:
111 |
112 | ```go
113 | // This will use the default size (16px) defined in the global CSS
114 | lucide.Cherry()
115 |
116 | // This will override the default size with Tailwind's size class
117 | lucide.Cherry(html.Class("size-32"))
118 | ```
119 |
120 | This approach provides a flexible way to maintain consistent sizing across your project while allowing for easy customization of individual icons when necessary.
121 |
122 | ## Star and follow
123 |
124 | If you like this project, please consider giving it a ⭐ on GitHub and [following me on X (Twitter)](https://twitter.com/eduardoolat).
125 |
126 | ## Versioning
127 |
128 | This project increments its version independently of the Lucide Icons version. However, in each release, the Lucide Icons version is updated to the latest available.
129 |
130 | You can see the Lucide Icons version in the notes of every release of this project.
131 |
132 | ## License
133 |
134 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
135 |
136 | The Lucide icons are licensed under another open license. You can check it out [here](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
--------------------------------------------------------------------------------
/included_icons.txt:
--------------------------------------------------------------------------------
1 | AArrowDown
2 | AArrowUp
3 | ALargeSmall
4 | Accessibility
5 | Activity
6 | AirVent
7 | Airplay
8 | AlarmClockCheck
9 | AlarmClockMinus
10 | AlarmClockOff
11 | AlarmClockPlus
12 | AlarmClock
13 | AlarmSmoke
14 | Album
15 | AlignCenterHorizontal
16 | AlignCenterVertical
17 | AlignCenter
18 | AlignEndHorizontal
19 | AlignEndVertical
20 | AlignHorizontalDistributeCenter
21 | AlignHorizontalDistributeEnd
22 | AlignHorizontalDistributeStart
23 | AlignHorizontalJustifyCenter
24 | AlignHorizontalJustifyEnd
25 | AlignHorizontalJustifyStart
26 | AlignHorizontalSpaceAround
27 | AlignHorizontalSpaceBetween
28 | AlignJustify
29 | AlignLeft
30 | AlignRight
31 | AlignStartHorizontal
32 | AlignStartVertical
33 | AlignVerticalDistributeCenter
34 | AlignVerticalDistributeEnd
35 | AlignVerticalDistributeStart
36 | AlignVerticalJustifyCenter
37 | AlignVerticalJustifyEnd
38 | AlignVerticalJustifyStart
39 | AlignVerticalSpaceAround
40 | AlignVerticalSpaceBetween
41 | Ambulance
42 | Ampersand
43 | Ampersands
44 | Amphora
45 | Anchor
46 | Angry
47 | Annoyed
48 | Antenna
49 | Anvil
50 | Aperture
51 | AppWindowMac
52 | AppWindow
53 | Apple
54 | ArchiveRestore
55 | ArchiveX
56 | Archive
57 | Armchair
58 | ArrowBigDownDash
59 | ArrowBigDown
60 | ArrowBigLeftDash
61 | ArrowBigLeft
62 | ArrowBigRightDash
63 | ArrowBigRight
64 | ArrowBigUpDash
65 | ArrowBigUp
66 | ArrowDown01
67 | ArrowDown10
68 | ArrowDownAZ
69 | ArrowDownFromLine
70 | ArrowDownLeft
71 | ArrowDownNarrowWide
72 | ArrowDownRight
73 | ArrowDownToDot
74 | ArrowDownToLine
75 | ArrowDownUp
76 | ArrowDownWideNarrow
77 | ArrowDownZA
78 | ArrowDown
79 | ArrowLeftFromLine
80 | ArrowLeftRight
81 | ArrowLeftToLine
82 | ArrowLeft
83 | ArrowRightFromLine
84 | ArrowRightLeft
85 | ArrowRightToLine
86 | ArrowRight
87 | ArrowUp01
88 | ArrowUp10
89 | ArrowUpAZ
90 | ArrowUpDown
91 | ArrowUpFromDot
92 | ArrowUpFromLine
93 | ArrowUpLeft
94 | ArrowUpNarrowWide
95 | ArrowUpRight
96 | ArrowUpToLine
97 | ArrowUpWideNarrow
98 | ArrowUpZA
99 | ArrowUp
100 | ArrowsUpFromLine
101 | Asterisk
102 | AtSign
103 | Atom
104 | AudioLines
105 | AudioWaveform
106 | Award
107 | Axe
108 | Axis3d
109 | Baby
110 | Backpack
111 | BadgeAlert
112 | BadgeCent
113 | BadgeCheck
114 | BadgeDollarSign
115 | BadgeEuro
116 | BadgeHelp
117 | BadgeIndianRupee
118 | BadgeInfo
119 | BadgeJapaneseYen
120 | BadgeMinus
121 | BadgePercent
122 | BadgePlus
123 | BadgePoundSterling
124 | BadgeRussianRuble
125 | BadgeSwissFranc
126 | BadgeX
127 | Badge
128 | BaggageClaim
129 | Ban
130 | Banana
131 | Bandage
132 | Banknote
133 | Barcode
134 | Baseline
135 | Bath
136 | BatteryCharging
137 | BatteryFull
138 | BatteryLow
139 | BatteryMedium
140 | BatteryWarning
141 | Battery
142 | Beaker
143 | BeanOff
144 | Bean
145 | BedDouble
146 | BedSingle
147 | Bed
148 | Beef
149 | BeerOff
150 | Beer
151 | BellDot
152 | BellElectric
153 | BellMinus
154 | BellOff
155 | BellPlus
156 | BellRing
157 | Bell
158 | BetweenHorizontalEnd
159 | BetweenHorizontalStart
160 | BetweenVerticalEnd
161 | BetweenVerticalStart
162 | BicepsFlexed
163 | Bike
164 | Binary
165 | Binoculars
166 | Biohazard
167 | Bird
168 | Bitcoin
169 | Blend
170 | Blinds
171 | Blocks
172 | BluetoothConnected
173 | BluetoothOff
174 | BluetoothSearching
175 | Bluetooth
176 | Bold
177 | Bolt
178 | Bomb
179 | Bone
180 | BookA
181 | BookAudio
182 | BookCheck
183 | BookCopy
184 | BookDashed
185 | BookDown
186 | BookHeadphones
187 | BookHeart
188 | BookImage
189 | BookKey
190 | BookLock
191 | BookMarked
192 | BookMinus
193 | BookOpenCheck
194 | BookOpenText
195 | BookOpen
196 | BookPlus
197 | BookText
198 | BookType
199 | BookUp2
200 | BookUp
201 | BookUser
202 | BookX
203 | Book
204 | BookmarkCheck
205 | BookmarkMinus
206 | BookmarkPlus
207 | BookmarkX
208 | Bookmark
209 | BoomBox
210 | BotMessageSquare
211 | BotOff
212 | Bot
213 | Box
214 | Boxes
215 | Braces
216 | Brackets
217 | BrainCircuit
218 | BrainCog
219 | Brain
220 | BrickWall
221 | BriefcaseBusiness
222 | BriefcaseConveyorBelt
223 | BriefcaseMedical
224 | Briefcase
225 | BringToFront
226 | Brush
227 | BugOff
228 | BugPlay
229 | Bug
230 | Building2
231 | Building
232 | BusFront
233 | Bus
234 | CableCar
235 | Cable
236 | CakeSlice
237 | Cake
238 | Calculator
239 | CalendarArrowDown
240 | CalendarArrowUp
241 | CalendarCheck2
242 | CalendarCheck
243 | CalendarClock
244 | CalendarCog
245 | CalendarDays
246 | CalendarFold
247 | CalendarHeart
248 | CalendarMinus2
249 | CalendarMinus
250 | CalendarOff
251 | CalendarPlus2
252 | CalendarPlus
253 | CalendarRange
254 | CalendarSearch
255 | CalendarX2
256 | CalendarX
257 | Calendar
258 | CameraOff
259 | Camera
260 | CandyCane
261 | CandyOff
262 | Candy
263 | Cannabis
264 | CaptionsOff
265 | Captions
266 | CarFront
267 | CarTaxiFront
268 | Car
269 | Caravan
270 | Carrot
271 | CaseLower
272 | CaseSensitive
273 | CaseUpper
274 | CassetteTape
275 | Cast
276 | Castle
277 | Cat
278 | Cctv
279 | ChartArea
280 | ChartBarBig
281 | ChartBarDecreasing
282 | ChartBarIncreasing
283 | ChartBarStacked
284 | ChartBar
285 | ChartCandlestick
286 | ChartColumnBig
287 | ChartColumnDecreasing
288 | ChartColumnIncreasing
289 | ChartColumnStacked
290 | ChartColumn
291 | ChartGantt
292 | ChartLine
293 | ChartNetwork
294 | ChartNoAxesColumnDecreasing
295 | ChartNoAxesColumnIncreasing
296 | ChartNoAxesColumn
297 | ChartNoAxesCombined
298 | ChartNoAxesGantt
299 | ChartPie
300 | ChartScatter
301 | ChartSpline
302 | CheckCheck
303 | Check
304 | ChefHat
305 | Cherry
306 | ChevronDown
307 | ChevronFirst
308 | ChevronLast
309 | ChevronLeft
310 | ChevronRight
311 | ChevronUp
312 | ChevronsDownUp
313 | ChevronsDown
314 | ChevronsLeftRightEllipsis
315 | ChevronsLeftRight
316 | ChevronsLeft
317 | ChevronsRightLeft
318 | ChevronsRight
319 | ChevronsUpDown
320 | ChevronsUp
321 | Chrome
322 | Church
323 | CigaretteOff
324 | Cigarette
325 | CircleAlert
326 | CircleArrowDown
327 | CircleArrowLeft
328 | CircleArrowOutDownLeft
329 | CircleArrowOutDownRight
330 | CircleArrowOutUpLeft
331 | CircleArrowOutUpRight
332 | CircleArrowRight
333 | CircleArrowUp
334 | CircleCheckBig
335 | CircleCheck
336 | CircleChevronDown
337 | CircleChevronLeft
338 | CircleChevronRight
339 | CircleChevronUp
340 | CircleDashed
341 | CircleDivide
342 | CircleDollarSign
343 | CircleDotDashed
344 | CircleDot
345 | CircleEllipsis
346 | CircleEqual
347 | CircleFadingArrowUp
348 | CircleFadingPlus
349 | CircleGauge
350 | CircleHelp
351 | CircleMinus
352 | CircleOff
353 | CircleParkingOff
354 | CircleParking
355 | CirclePause
356 | CirclePercent
357 | CirclePlay
358 | CirclePlus
359 | CirclePower
360 | CircleSlash2
361 | CircleSlash
362 | CircleStop
363 | CircleUserRound
364 | CircleUser
365 | CircleX
366 | Circle
367 | CircuitBoard
368 | Citrus
369 | Clapperboard
370 | ClipboardCheck
371 | ClipboardCopy
372 | ClipboardList
373 | ClipboardMinus
374 | ClipboardPaste
375 | ClipboardPenLine
376 | ClipboardPen
377 | ClipboardPlus
378 | ClipboardType
379 | ClipboardX
380 | Clipboard
381 | Clock1
382 | Clock10
383 | Clock11
384 | Clock12
385 | Clock2
386 | Clock3
387 | Clock4
388 | Clock5
389 | Clock6
390 | Clock7
391 | Clock8
392 | Clock9
393 | ClockAlert
394 | ClockArrowDown
395 | ClockArrowUp
396 | Clock
397 | CloudCog
398 | CloudDownload
399 | CloudDrizzle
400 | CloudFog
401 | CloudHail
402 | CloudLightning
403 | CloudMoonRain
404 | CloudMoon
405 | CloudOff
406 | CloudRainWind
407 | CloudRain
408 | CloudSnow
409 | CloudSunRain
410 | CloudSun
411 | CloudUpload
412 | Cloud
413 | Cloudy
414 | Clover
415 | Club
416 | CodeXml
417 | Code
418 | Codepen
419 | Codesandbox
420 | Coffee
421 | Cog
422 | Coins
423 | Columns2
424 | Columns3
425 | Columns4
426 | Combine
427 | Command
428 | Compass
429 | Component
430 | Computer
431 | ConciergeBell
432 | Cone
433 | Construction
434 | ContactRound
435 | Contact
436 | Container
437 | Contrast
438 | Cookie
439 | CookingPot
440 | CopyCheck
441 | CopyMinus
442 | CopyPlus
443 | CopySlash
444 | CopyX
445 | Copy
446 | Copyleft
447 | Copyright
448 | CornerDownLeft
449 | CornerDownRight
450 | CornerLeftDown
451 | CornerLeftUp
452 | CornerRightDown
453 | CornerRightUp
454 | CornerUpLeft
455 | CornerUpRight
456 | Cpu
457 | CreativeCommons
458 | CreditCard
459 | Croissant
460 | Crop
461 | Cross
462 | Crosshair
463 | Crown
464 | Cuboid
465 | CupSoda
466 | Currency
467 | Cylinder
468 | Dam
469 | DatabaseBackup
470 | DatabaseZap
471 | Database
472 | Delete
473 | Dessert
474 | Diameter
475 | DiamondMinus
476 | DiamondPercent
477 | DiamondPlus
478 | Diamond
479 | Dice1
480 | Dice2
481 | Dice3
482 | Dice4
483 | Dice5
484 | Dice6
485 | Dices
486 | Diff
487 | Disc2
488 | Disc3
489 | DiscAlbum
490 | Disc
491 | Divide
492 | DnaOff
493 | Dna
494 | Dock
495 | Dog
496 | DollarSign
497 | Donut
498 | DoorClosed
499 | DoorOpen
500 | Dot
501 | Download
502 | DraftingCompass
503 | Drama
504 | Dribbble
505 | Drill
506 | Droplet
507 | Droplets
508 | Drum
509 | Drumstick
510 | Dumbbell
511 | EarOff
512 | Ear
513 | EarthLock
514 | Earth
515 | Eclipse
516 | EggFried
517 | EggOff
518 | Egg
519 | EllipsisVertical
520 | Ellipsis
521 | EqualNot
522 | Equal
523 | Eraser
524 | EthernetPort
525 | Euro
526 | Expand
527 | ExternalLink
528 | EyeClosed
529 | EyeOff
530 | Eye
531 | Facebook
532 | Factory
533 | Fan
534 | FastForward
535 | Feather
536 | Fence
537 | FerrisWheel
538 | Figma
539 | FileArchive
540 | FileAudio2
541 | FileAudio
542 | FileAxis3d
543 | FileBadge2
544 | FileBadge
545 | FileBox
546 | FileChartColumnIncreasing
547 | FileChartColumn
548 | FileChartLine
549 | FileChartPie
550 | FileCheck2
551 | FileCheck
552 | FileClock
553 | FileCode2
554 | FileCode
555 | FileCog
556 | FileDiff
557 | FileDigit
558 | FileDown
559 | FileHeart
560 | FileImage
561 | FileInput
562 | FileJson2
563 | FileJson
564 | FileKey2
565 | FileKey
566 | FileLock2
567 | FileLock
568 | FileMinus2
569 | FileMinus
570 | FileMusic
571 | FileOutput
572 | FilePenLine
573 | FilePen
574 | FilePlus2
575 | FilePlus
576 | FileQuestion
577 | FileScan
578 | FileSearch2
579 | FileSearch
580 | FileSliders
581 | FileSpreadsheet
582 | FileStack
583 | FileSymlink
584 | FileTerminal
585 | FileText
586 | FileType2
587 | FileType
588 | FileUp
589 | FileUser
590 | FileVideo2
591 | FileVideo
592 | FileVolume2
593 | FileVolume
594 | FileWarning
595 | FileX2
596 | FileX
597 | File
598 | Files
599 | Film
600 | FilterX
601 | Filter
602 | Fingerprint
603 | FireExtinguisher
604 | FishOff
605 | FishSymbol
606 | Fish
607 | FlagOff
608 | FlagTriangleLeft
609 | FlagTriangleRight
610 | Flag
611 | FlameKindling
612 | Flame
613 | FlashlightOff
614 | Flashlight
615 | FlaskConicalOff
616 | FlaskConical
617 | FlaskRound
618 | FlipHorizontal2
619 | FlipHorizontal
620 | FlipVertical2
621 | FlipVertical
622 | Flower2
623 | Flower
624 | Focus
625 | FoldHorizontal
626 | FoldVertical
627 | FolderArchive
628 | FolderCheck
629 | FolderClock
630 | FolderClosed
631 | FolderCode
632 | FolderCog
633 | FolderDot
634 | FolderDown
635 | FolderGit2
636 | FolderGit
637 | FolderHeart
638 | FolderInput
639 | FolderKanban
640 | FolderKey
641 | FolderLock
642 | FolderMinus
643 | FolderOpenDot
644 | FolderOpen
645 | FolderOutput
646 | FolderPen
647 | FolderPlus
648 | FolderRoot
649 | FolderSearch2
650 | FolderSearch
651 | FolderSymlink
652 | FolderSync
653 | FolderTree
654 | FolderUp
655 | FolderX
656 | Folder
657 | Folders
658 | Footprints
659 | Forklift
660 | Forward
661 | Frame
662 | Framer
663 | Frown
664 | Fuel
665 | Fullscreen
666 | GalleryHorizontalEnd
667 | GalleryHorizontal
668 | GalleryThumbnails
669 | GalleryVerticalEnd
670 | GalleryVertical
671 | Gamepad2
672 | Gamepad
673 | Gauge
674 | Gavel
675 | Gem
676 | Ghost
677 | Gift
678 | GitBranchPlus
679 | GitBranch
680 | GitCommitHorizontal
681 | GitCommitVertical
682 | GitCompareArrows
683 | GitCompare
684 | GitFork
685 | GitGraph
686 | GitMerge
687 | GitPullRequestArrow
688 | GitPullRequestClosed
689 | GitPullRequestCreateArrow
690 | GitPullRequestCreate
691 | GitPullRequestDraft
692 | GitPullRequest
693 | Github
694 | Gitlab
695 | GlassWater
696 | Glasses
697 | GlobeLock
698 | Globe
699 | Goal
700 | Grab
701 | GraduationCap
702 | Grape
703 | Grid2x2Check
704 | Grid2x2Plus
705 | Grid2x2X
706 | Grid2x2
707 | Grid3x3
708 | GripHorizontal
709 | GripVertical
710 | Grip
711 | Group
712 | Guitar
713 | Ham
714 | Hammer
715 | HandCoins
716 | HandHeart
717 | HandHelping
718 | HandMetal
719 | HandPlatter
720 | Hand
721 | Handshake
722 | HardDriveDownload
723 | HardDriveUpload
724 | HardDrive
725 | HardHat
726 | Hash
727 | Haze
728 | HdmiPort
729 | Heading1
730 | Heading2
731 | Heading3
732 | Heading4
733 | Heading5
734 | Heading6
735 | Heading
736 | HeadphoneOff
737 | Headphones
738 | Headset
739 | HeartCrack
740 | HeartHandshake
741 | HeartOff
742 | HeartPulse
743 | Heart
744 | Heater
745 | Hexagon
746 | Highlighter
747 | History
748 | HopOff
749 | Hop
750 | Hospital
751 | Hotel
752 | Hourglass
753 | HousePlug
754 | HousePlus
755 | House
756 | IceCreamBowl
757 | IceCreamCone
758 | IdCard
759 | ImageDown
760 | ImageMinus
761 | ImageOff
762 | ImagePlay
763 | ImagePlus
764 | ImageUp
765 | Image
766 | Images
767 | Import
768 | Inbox
769 | IndentDecrease
770 | IndentIncrease
771 | IndianRupee
772 | Infinity
773 | Info
774 | InspectionPanel
775 | Instagram
776 | Italic
777 | IterationCcw
778 | IterationCw
779 | JapaneseYen
780 | Joystick
781 | Kanban
782 | KeyRound
783 | KeySquare
784 | Key
785 | KeyboardMusic
786 | KeyboardOff
787 | Keyboard
788 | LampCeiling
789 | LampDesk
790 | LampFloor
791 | LampWallDown
792 | LampWallUp
793 | Lamp
794 | LandPlot
795 | Landmark
796 | Languages
797 | LaptopMinimal
798 | Laptop
799 | LassoSelect
800 | Lasso
801 | Laugh
802 | Layers2
803 | Layers3
804 | Layers
805 | LayoutDashboard
806 | LayoutGrid
807 | LayoutList
808 | LayoutPanelLeft
809 | LayoutPanelTop
810 | LayoutTemplate
811 | Leaf
812 | LeafyGreen
813 | Lectern
814 | LetterText
815 | LibraryBig
816 | Library
817 | LifeBuoy
818 | Ligature
819 | LightbulbOff
820 | Lightbulb
821 | Link2Off
822 | Link2
823 | Link
824 | Linkedin
825 | ListCheck
826 | ListChecks
827 | ListCollapse
828 | ListEnd
829 | ListFilter
830 | ListMinus
831 | ListMusic
832 | ListOrdered
833 | ListPlus
834 | ListRestart
835 | ListStart
836 | ListTodo
837 | ListTree
838 | ListVideo
839 | ListX
840 | List
841 | LoaderCircle
842 | LoaderPinwheel
843 | Loader
844 | LocateFixed
845 | LocateOff
846 | Locate
847 | LockKeyholeOpen
848 | LockKeyhole
849 | LockOpen
850 | Lock
851 | LogIn
852 | LogOut
853 | Logs
854 | Lollipop
855 | Luggage
856 | Magnet
857 | MailCheck
858 | MailMinus
859 | MailOpen
860 | MailPlus
861 | MailQuestion
862 | MailSearch
863 | MailWarning
864 | MailX
865 | Mail
866 | Mailbox
867 | Mails
868 | MapPinCheckInside
869 | MapPinCheck
870 | MapPinHouse
871 | MapPinMinusInside
872 | MapPinMinus
873 | MapPinOff
874 | MapPinPlusInside
875 | MapPinPlus
876 | MapPinXInside
877 | MapPinX
878 | MapPin
879 | MapPinned
880 | Map
881 | Martini
882 | Maximize2
883 | Maximize
884 | Medal
885 | MegaphoneOff
886 | Megaphone
887 | Meh
888 | MemoryStick
889 | Menu
890 | Merge
891 | MessageCircleCode
892 | MessageCircleDashed
893 | MessageCircleHeart
894 | MessageCircleMore
895 | MessageCircleOff
896 | MessageCirclePlus
897 | MessageCircleQuestion
898 | MessageCircleReply
899 | MessageCircleWarning
900 | MessageCircleX
901 | MessageCircle
902 | MessageSquareCode
903 | MessageSquareDashed
904 | MessageSquareDiff
905 | MessageSquareDot
906 | MessageSquareHeart
907 | MessageSquareLock
908 | MessageSquareMore
909 | MessageSquareOff
910 | MessageSquarePlus
911 | MessageSquareQuote
912 | MessageSquareReply
913 | MessageSquareShare
914 | MessageSquareText
915 | MessageSquareWarning
916 | MessageSquareX
917 | MessageSquare
918 | MessagesSquare
919 | MicOff
920 | MicVocal
921 | Mic
922 | Microchip
923 | Microscope
924 | Microwave
925 | Milestone
926 | MilkOff
927 | Milk
928 | Minimize2
929 | Minimize
930 | Minus
931 | MonitorCheck
932 | MonitorCog
933 | MonitorDot
934 | MonitorDown
935 | MonitorOff
936 | MonitorPause
937 | MonitorPlay
938 | MonitorSmartphone
939 | MonitorSpeaker
940 | MonitorStop
941 | MonitorUp
942 | MonitorX
943 | Monitor
944 | MoonStar
945 | Moon
946 | MountainSnow
947 | Mountain
948 | MouseOff
949 | MousePointer2
950 | MousePointerBan
951 | MousePointerClick
952 | MousePointer
953 | Mouse
954 | Move3d
955 | MoveDiagonal2
956 | MoveDiagonal
957 | MoveDownLeft
958 | MoveDownRight
959 | MoveDown
960 | MoveHorizontal
961 | MoveLeft
962 | MoveRight
963 | MoveUpLeft
964 | MoveUpRight
965 | MoveUp
966 | MoveVertical
967 | Move
968 | Music2
969 | Music3
970 | Music4
971 | Music
972 | Navigation2Off
973 | Navigation2
974 | NavigationOff
975 | Navigation
976 | Network
977 | Newspaper
978 | Nfc
979 | NotebookPen
980 | NotebookTabs
981 | NotebookText
982 | Notebook
983 | NotepadTextDashed
984 | NotepadText
985 | NutOff
986 | Nut
987 | OctagonAlert
988 | OctagonMinus
989 | OctagonPause
990 | OctagonX
991 | Octagon
992 | Omega
993 | Option
994 | Orbit
995 | Origami
996 | Package2
997 | PackageCheck
998 | PackageMinus
999 | PackageOpen
1000 | PackagePlus
1001 | PackageSearch
1002 | PackageX
1003 | Package
1004 | PaintBucket
1005 | PaintRoller
1006 | PaintbrushVertical
1007 | Paintbrush
1008 | Palette
1009 | PanelBottomClose
1010 | PanelBottomDashed
1011 | PanelBottomOpen
1012 | PanelBottom
1013 | PanelLeftClose
1014 | PanelLeftDashed
1015 | PanelLeftOpen
1016 | PanelLeft
1017 | PanelRightClose
1018 | PanelRightDashed
1019 | PanelRightOpen
1020 | PanelRight
1021 | PanelTopClose
1022 | PanelTopDashed
1023 | PanelTopOpen
1024 | PanelTop
1025 | PanelsLeftBottom
1026 | PanelsRightBottom
1027 | PanelsTopLeft
1028 | Paperclip
1029 | Parentheses
1030 | ParkingMeter
1031 | PartyPopper
1032 | Pause
1033 | PawPrint
1034 | PcCase
1035 | PenLine
1036 | PenOff
1037 | PenTool
1038 | Pen
1039 | PencilLine
1040 | PencilOff
1041 | PencilRuler
1042 | Pencil
1043 | Pentagon
1044 | Percent
1045 | PersonStanding
1046 | PhilippinePeso
1047 | PhoneCall
1048 | PhoneForwarded
1049 | PhoneIncoming
1050 | PhoneMissed
1051 | PhoneOff
1052 | PhoneOutgoing
1053 | Phone
1054 | Pi
1055 | Piano
1056 | Pickaxe
1057 | PictureInPicture2
1058 | PictureInPicture
1059 | PiggyBank
1060 | PilcrowLeft
1061 | PilcrowRight
1062 | Pilcrow
1063 | PillBottle
1064 | Pill
1065 | PinOff
1066 | Pin
1067 | Pipette
1068 | Pizza
1069 | PlaneLanding
1070 | PlaneTakeoff
1071 | Plane
1072 | Play
1073 | Plug2
1074 | PlugZap
1075 | Plug
1076 | Plus
1077 | PocketKnife
1078 | Pocket
1079 | Podcast
1080 | PointerOff
1081 | Pointer
1082 | Popcorn
1083 | Popsicle
1084 | PoundSterling
1085 | PowerOff
1086 | Power
1087 | Presentation
1088 | PrinterCheck
1089 | Printer
1090 | Projector
1091 | Proportions
1092 | Puzzle
1093 | Pyramid
1094 | QrCode
1095 | Quote
1096 | Rabbit
1097 | Radar
1098 | Radiation
1099 | Radical
1100 | RadioReceiver
1101 | RadioTower
1102 | Radio
1103 | Radius
1104 | RailSymbol
1105 | Rainbow
1106 | Rat
1107 | Ratio
1108 | ReceiptCent
1109 | ReceiptEuro
1110 | ReceiptIndianRupee
1111 | ReceiptJapaneseYen
1112 | ReceiptPoundSterling
1113 | ReceiptRussianRuble
1114 | ReceiptSwissFranc
1115 | ReceiptText
1116 | Receipt
1117 | RectangleEllipsis
1118 | RectangleHorizontal
1119 | RectangleVertical
1120 | Recycle
1121 | Redo2
1122 | RedoDot
1123 | Redo
1124 | RefreshCcwDot
1125 | RefreshCcw
1126 | RefreshCwOff
1127 | RefreshCw
1128 | Refrigerator
1129 | Regex
1130 | RemoveFormatting
1131 | Repeat1
1132 | Repeat2
1133 | Repeat
1134 | ReplaceAll
1135 | Replace
1136 | ReplyAll
1137 | Reply
1138 | Rewind
1139 | Ribbon
1140 | Rocket
1141 | RockingChair
1142 | RollerCoaster
1143 | Rotate3d
1144 | RotateCcwSquare
1145 | RotateCcw
1146 | RotateCwSquare
1147 | RotateCw
1148 | RouteOff
1149 | Route
1150 | Router
1151 | Rows2
1152 | Rows3
1153 | Rows4
1154 | Rss
1155 | Ruler
1156 | RussianRuble
1157 | Sailboat
1158 | Salad
1159 | Sandwich
1160 | SatelliteDish
1161 | Satellite
1162 | SaveAll
1163 | SaveOff
1164 | Save
1165 | Scale3d
1166 | Scale
1167 | Scaling
1168 | ScanBarcode
1169 | ScanEye
1170 | ScanFace
1171 | ScanLine
1172 | ScanQrCode
1173 | ScanSearch
1174 | ScanText
1175 | Scan
1176 | School
1177 | ScissorsLineDashed
1178 | Scissors
1179 | ScreenShareOff
1180 | ScreenShare
1181 | ScrollText
1182 | Scroll
1183 | SearchCheck
1184 | SearchCode
1185 | SearchSlash
1186 | SearchX
1187 | Search
1188 | Section
1189 | SendHorizontal
1190 | SendToBack
1191 | Send
1192 | SeparatorHorizontal
1193 | SeparatorVertical
1194 | ServerCog
1195 | ServerCrash
1196 | ServerOff
1197 | Server
1198 | Settings2
1199 | Settings
1200 | Shapes
1201 | Share2
1202 | Share
1203 | Sheet
1204 | Shell
1205 | ShieldAlert
1206 | ShieldBan
1207 | ShieldCheck
1208 | ShieldEllipsis
1209 | ShieldHalf
1210 | ShieldMinus
1211 | ShieldOff
1212 | ShieldPlus
1213 | ShieldQuestion
1214 | ShieldX
1215 | Shield
1216 | ShipWheel
1217 | Ship
1218 | Shirt
1219 | ShoppingBag
1220 | ShoppingBasket
1221 | ShoppingCart
1222 | Shovel
1223 | ShowerHead
1224 | Shrink
1225 | Shrub
1226 | Shuffle
1227 | Sigma
1228 | SignalHigh
1229 | SignalLow
1230 | SignalMedium
1231 | SignalZero
1232 | Signal
1233 | Signature
1234 | SignpostBig
1235 | Signpost
1236 | Siren
1237 | SkipBack
1238 | SkipForward
1239 | Skull
1240 | Slack
1241 | Slash
1242 | Slice
1243 | SlidersHorizontal
1244 | SlidersVertical
1245 | SmartphoneCharging
1246 | SmartphoneNfc
1247 | Smartphone
1248 | SmilePlus
1249 | Smile
1250 | Snail
1251 | Snowflake
1252 | Sofa
1253 | Soup
1254 | Space
1255 | Spade
1256 | Sparkle
1257 | Sparkles
1258 | Speaker
1259 | Speech
1260 | SpellCheck2
1261 | SpellCheck
1262 | Spline
1263 | Split
1264 | SprayCan
1265 | Sprout
1266 | SquareActivity
1267 | SquareArrowDownLeft
1268 | SquareArrowDownRight
1269 | SquareArrowDown
1270 | SquareArrowLeft
1271 | SquareArrowOutDownLeft
1272 | SquareArrowOutDownRight
1273 | SquareArrowOutUpLeft
1274 | SquareArrowOutUpRight
1275 | SquareArrowRight
1276 | SquareArrowUpLeft
1277 | SquareArrowUpRight
1278 | SquareArrowUp
1279 | SquareAsterisk
1280 | SquareBottomDashedScissors
1281 | SquareChartGantt
1282 | SquareCheckBig
1283 | SquareCheck
1284 | SquareChevronDown
1285 | SquareChevronLeft
1286 | SquareChevronRight
1287 | SquareChevronUp
1288 | SquareCode
1289 | SquareDashedBottomCode
1290 | SquareDashedBottom
1291 | SquareDashedKanban
1292 | SquareDashedMousePointer
1293 | SquareDashed
1294 | SquareDivide
1295 | SquareDot
1296 | SquareEqual
1297 | SquareFunction
1298 | SquareKanban
1299 | SquareLibrary
1300 | SquareM
1301 | SquareMenu
1302 | SquareMinus
1303 | SquareMousePointer
1304 | SquareParkingOff
1305 | SquareParking
1306 | SquarePen
1307 | SquarePercent
1308 | SquarePi
1309 | SquarePilcrow
1310 | SquarePlay
1311 | SquarePlus
1312 | SquarePower
1313 | SquareRadical
1314 | SquareScissors
1315 | SquareSigma
1316 | SquareSlash
1317 | SquareSplitHorizontal
1318 | SquareSplitVertical
1319 | SquareSquare
1320 | SquareStack
1321 | SquareTerminal
1322 | SquareUserRound
1323 | SquareUser
1324 | SquareX
1325 | Square
1326 | Squircle
1327 | Squirrel
1328 | Stamp
1329 | StarHalf
1330 | StarOff
1331 | Star
1332 | StepBack
1333 | StepForward
1334 | Stethoscope
1335 | Sticker
1336 | StickyNote
1337 | Store
1338 | StretchHorizontal
1339 | StretchVertical
1340 | Strikethrough
1341 | Subscript
1342 | SunDim
1343 | SunMedium
1344 | SunMoon
1345 | SunSnow
1346 | Sun
1347 | Sunrise
1348 | Sunset
1349 | Superscript
1350 | SwatchBook
1351 | SwissFranc
1352 | SwitchCamera
1353 | Sword
1354 | Swords
1355 | Syringe
1356 | Table2
1357 | TableCellsMerge
1358 | TableCellsSplit
1359 | TableColumnsSplit
1360 | TableOfContents
1361 | TableProperties
1362 | TableRowsSplit
1363 | Table
1364 | TabletSmartphone
1365 | Tablet
1366 | Tablets
1367 | Tag
1368 | Tags
1369 | Tally1
1370 | Tally2
1371 | Tally3
1372 | Tally4
1373 | Tally5
1374 | Tangent
1375 | Target
1376 | Telescope
1377 | TentTree
1378 | Tent
1379 | Terminal
1380 | TestTubeDiagonal
1381 | TestTube
1382 | TestTubes
1383 | TextCursorInput
1384 | TextCursor
1385 | TextQuote
1386 | TextSearch
1387 | TextSelect
1388 | Text
1389 | Theater
1390 | ThermometerSnowflake
1391 | ThermometerSun
1392 | Thermometer
1393 | ThumbsDown
1394 | ThumbsUp
1395 | TicketCheck
1396 | TicketMinus
1397 | TicketPercent
1398 | TicketPlus
1399 | TicketSlash
1400 | TicketX
1401 | Ticket
1402 | TicketsPlane
1403 | Tickets
1404 | TimerOff
1405 | TimerReset
1406 | Timer
1407 | ToggleLeft
1408 | ToggleRight
1409 | Tornado
1410 | Torus
1411 | TouchpadOff
1412 | Touchpad
1413 | TowerControl
1414 | ToyBrick
1415 | Tractor
1416 | TrafficCone
1417 | TrainFrontTunnel
1418 | TrainFront
1419 | TrainTrack
1420 | TramFront
1421 | Trash2
1422 | Trash
1423 | TreeDeciduous
1424 | TreePalm
1425 | TreePine
1426 | Trees
1427 | Trello
1428 | TrendingDown
1429 | TrendingUpDown
1430 | TrendingUp
1431 | TriangleAlert
1432 | TriangleRight
1433 | Triangle
1434 | Trophy
1435 | Truck
1436 | Turtle
1437 | TvMinimalPlay
1438 | TvMinimal
1439 | Tv
1440 | Twitch
1441 | Twitter
1442 | TypeOutline
1443 | Type
1444 | UmbrellaOff
1445 | Umbrella
1446 | Underline
1447 | Undo2
1448 | UndoDot
1449 | Undo
1450 | UnfoldHorizontal
1451 | UnfoldVertical
1452 | Ungroup
1453 | University
1454 | Unlink2
1455 | Unlink
1456 | Unplug
1457 | Upload
1458 | Usb
1459 | UserCheck
1460 | UserCog
1461 | UserMinus
1462 | UserPen
1463 | UserPlus
1464 | UserRoundCheck
1465 | UserRoundCog
1466 | UserRoundMinus
1467 | UserRoundPen
1468 | UserRoundPlus
1469 | UserRoundSearch
1470 | UserRoundX
1471 | UserRound
1472 | UserSearch
1473 | UserX
1474 | User
1475 | UsersRound
1476 | Users
1477 | UtensilsCrossed
1478 | Utensils
1479 | UtilityPole
1480 | Variable
1481 | Vault
1482 | Vegan
1483 | VenetianMask
1484 | VibrateOff
1485 | Vibrate
1486 | VideoOff
1487 | Video
1488 | Videotape
1489 | View
1490 | Voicemail
1491 | Volleyball
1492 | Volume1
1493 | Volume2
1494 | VolumeOff
1495 | VolumeX
1496 | Volume
1497 | Vote
1498 | WalletCards
1499 | WalletMinimal
1500 | Wallet
1501 | Wallpaper
1502 | WandSparkles
1503 | Wand
1504 | Warehouse
1505 | WashingMachine
1506 | Watch
1507 | Waves
1508 | Waypoints
1509 | Webcam
1510 | WebhookOff
1511 | Webhook
1512 | Weight
1513 | WheatOff
1514 | Wheat
1515 | WholeWord
1516 | WifiHigh
1517 | WifiLow
1518 | WifiOff
1519 | WifiZero
1520 | Wifi
1521 | Wind
1522 | WineOff
1523 | Wine
1524 | Workflow
1525 | Worm
1526 | WrapText
1527 | Wrench
1528 | X
1529 | Youtube
1530 | ZapOff
1531 | Zap
1532 | ZoomIn
1533 | ZoomOut
--------------------------------------------------------------------------------