├── .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 | Go Reference 5 | 6 | 7 | Latest releases 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 --------------------------------------------------------------------------------