jekyll-icon-flow 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +20 -0
- data/LICENSE.txt +22 -0
- data/README.md +166 -0
- data/assets/icons/lucide/arrow-down.svg +16 -0
- data/assets/icons/lucide/arrow-left.svg +16 -0
- data/assets/icons/lucide/arrow-right.svg +16 -0
- data/assets/icons/lucide/arrow-up.svg +16 -0
- data/assets/icons/lucide/calendar.svg +18 -0
- data/assets/icons/lucide/check.svg +15 -0
- data/assets/icons/lucide/chevron-down.svg +15 -0
- data/assets/icons/lucide/chevron-left.svg +15 -0
- data/assets/icons/lucide/chevron-right.svg +15 -0
- data/assets/icons/lucide/chevron-up.svg +15 -0
- data/assets/icons/lucide/copy.svg +16 -0
- data/assets/icons/lucide/download.svg +17 -0
- data/assets/icons/lucide/external-link.svg +17 -0
- data/assets/icons/lucide/file-text.svg +19 -0
- data/assets/icons/lucide/folder.svg +15 -0
- data/assets/icons/lucide/home.svg +16 -0
- data/assets/icons/lucide/info.svg +17 -0
- data/assets/icons/lucide/link.svg +16 -0
- data/assets/icons/lucide/mail.svg +16 -0
- data/assets/icons/lucide/map-pin.svg +16 -0
- data/assets/icons/lucide/map.svg +17 -0
- data/assets/icons/lucide/menu.svg +17 -0
- data/assets/icons/lucide/moon.svg +15 -0
- data/assets/icons/lucide/printer.svg +17 -0
- data/assets/icons/lucide/rss.svg +17 -0
- data/assets/icons/lucide/search.svg +16 -0
- data/assets/icons/lucide/sun.svg +23 -0
- data/assets/icons/lucide/tag.svg +16 -0
- data/assets/icons/lucide/triangle-alert.svg +17 -0
- data/assets/icons/lucide/x.svg +16 -0
- data/assets/icons/simple/bluesky.svg +1 -0
- data/assets/icons/simple/discord.svg +1 -0
- data/assets/icons/simple/facebook.svg +1 -0
- data/assets/icons/simple/github.svg +1 -0
- data/assets/icons/simple/instagram.svg +1 -0
- data/assets/icons/simple/mastodon.svg +1 -0
- data/assets/icons/simple/medium.svg +1 -0
- data/assets/icons/simple/rss.svg +1 -0
- data/assets/icons/simple/spotify.svg +1 -0
- data/assets/icons/simple/telegram.svg +1 -0
- data/assets/icons/simple/tiktok.svg +1 -0
- data/assets/icons/simple/x.svg +1 -0
- data/assets/icons/simple/youtube.svg +1 -0
- data/lib/jekyll/icon_flow/adapter.rb +144 -0
- data/lib/jekyll/icon_flow/adapters/custom.rb +38 -0
- data/lib/jekyll/icon_flow/adapters/lucide.rb +28 -0
- data/lib/jekyll/icon_flow/adapters/simple.rb +28 -0
- data/lib/jekyll/icon_flow/error.rb +7 -0
- data/lib/jekyll/icon_flow/icon_ref_tag.rb +46 -0
- data/lib/jekyll/icon_flow/icon_tag.rb +156 -0
- data/lib/jekyll/icon_flow/svg_reader.rb +29 -0
- data/lib/jekyll/icon_flow/version.rb +7 -0
- data/lib/jekyll/icon_flow.rb +36 -0
- data/lib/jekyll-icon-flow.rb +3 -0
- metadata +124 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 50bc9f6ba8e7a4c5f5fec2258b1406d84bcf29c78260f0ff121721fdb394e0f7
|
|
4
|
+
data.tar.gz: 7e39f30d73f7a9086b82885505e32b15ab2808b679b680f346556783200aee95
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: dae8008fcc131500e9c8011226d09b4009e3f887e4eabf1ef552a5a5812fcbdeb5892519b0560c79d53eab28cd8e4ac83937f4454d1c377c7341ce7eaa60f522
|
|
7
|
+
data.tar.gz: 5e120215a75ccc1b1b384d845630ed4e7160cd8f83f6341444af89f1d98fb3b1ff5b8d1571277e76abfd5eeae9d3be9978b0178daa98756a5f6d45a62baf5080
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.0] - 2026-10-04
|
|
4
|
+
|
|
5
|
+
- `{% icon %}` + per-pack `{% icon_<pack> %}` Liquid tags (lucide,
|
|
6
|
+
simple-icons, custom dir) with fleet-convention aliases
|
|
7
|
+
(`{% lucide_icon %}` etc.)
|
|
8
|
+
- `{% icon_ref <key> %}` — semantic names resolved through
|
|
9
|
+
`icon_flow.registry` (`pack:name[:class]` entries)
|
|
10
|
+
- Normalized output contract: `icon icon-<name>` classes, `currentColor`,
|
|
11
|
+
`data-icon-pack` hook, inline em-based sizing with a named scale
|
|
12
|
+
(`xxs`–`xxl`, default `m` = 1em line-height) or a literal CSS size
|
|
13
|
+
- `{% icon %}` searches packs in order (default custom → simple → lucide)
|
|
14
|
+
instead of a single default pack; `pack:`/`icon_flow.pack` pin to one pack
|
|
15
|
+
- `icon_flow.packs` — named extra packs from site directories of `.svg`
|
|
16
|
+
files (fontawesome, tabler, …), usable via `pack:`, the search chain,
|
|
17
|
+
and `icon_ref` registry targets
|
|
18
|
+
- `icon_flow.on_missing: warn|strict` — warn + empty render by default
|
|
19
|
+
- Escape Liquid-supplied SVG attributes, validate icon sizes, and normalize child SVG colors.
|
|
20
|
+
- RSpec integration/adapter contracts, coverage reporting, Semgrep and gem-artifact checks.
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
GNU AFFERO GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 19 November 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2026 Svend Gundestrup
|
|
5
|
+
|
|
6
|
+
This project is free software: you can redistribute it and/or modify it under
|
|
7
|
+
the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
+
Software Foundation, either version 3 of the License, or (at your option) any
|
|
9
|
+
later version.
|
|
10
|
+
|
|
11
|
+
This project is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
+
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
14
|
+
details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU Affero General Public License along
|
|
17
|
+
with this project. If not, see <https://www.gnu.org/licenses/agpl-3.0.html>.
|
|
18
|
+
|
|
19
|
+
The complete license text is available from the Free Software Foundation at:
|
|
20
|
+
https://www.gnu.org/licenses/agpl-3.0.txt
|
|
21
|
+
|
|
22
|
+
SPDX-License-Identifier: AGPL-3.0-or-later
|
data/README.md
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# jekyll-icon-flow
|
|
2
|
+
|
|
3
|
+
[](https://github.com/gundestrup/jekyll-icon-flow/actions/workflows/ci.yml)
|
|
4
|
+
[](https://deepwiki.com/gundestrup/jekyll-icon-flow)
|
|
5
|
+
[](https://codecov.io/gh/gundestrup/jekyll-icon-flow)
|
|
6
|
+
[](https://sonarcloud.io/dashboard?id=gundestrup_jekyll-icon-flow)
|
|
7
|
+
|
|
8
|
+
Pack-agnostic inline SVG icons for Jekyll via Liquid tags. Each icon pack
|
|
9
|
+
is an adapter that resolves names to SVG sources and normalizes the output —
|
|
10
|
+
so switching packs changes the icon, not your styling.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
# Gemfile
|
|
16
|
+
group :jekyll_plugins do
|
|
17
|
+
gem "jekyll-icon-flow"
|
|
18
|
+
end
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
# _config.yml
|
|
23
|
+
plugins:
|
|
24
|
+
- jekyll-icon-flow
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
```liquid
|
|
30
|
+
{% icon search %} → default pack (icon_flow.pack)
|
|
31
|
+
{% icon_lucide "file-text" size:1.5em class:"has-text-link" %}
|
|
32
|
+
{% icon_simple github %}
|
|
33
|
+
{% icon_custom logo %}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Fleet-convention aliases also work (`{% lucide_icon %}`, `{% simple_icon %}`,
|
|
37
|
+
`{% custom_icon %}`) — templates written for `jekyll-lucide` drop in
|
|
38
|
+
unchanged.
|
|
39
|
+
|
|
40
|
+
Same-name collisions across packs are disambiguated by the tag name —
|
|
41
|
+
`{% icon_lucide arrow-right %}` and `{% icon_custom arrow-right %}` can
|
|
42
|
+
coexist. Swap `icon_lucide` for `icon_simple` and the icon changes while
|
|
43
|
+
`size:`/`class:`/`title:` styling stays identical.
|
|
44
|
+
|
|
45
|
+
### Parameters
|
|
46
|
+
|
|
47
|
+
| Param | Default | Effect |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| `size:` | `m` (`1em`) | Named size `xxs`/`xs`/`s`/`m`/`l`/`xl`/`xxl` (0.5/0.75/0.875/1/1.25/1.5/2 em — relative, so icons scale with surrounding text; default `m` = 1em fits the line height) or a nonnegative CSS length (`px`, `em`, `rem`, `%`, `vw`, `vh`, `vmin`, `vmax`, `ch`, `ex`) or `0`, applied to `width`/`height` |
|
|
50
|
+
| `class:` | — | merged onto the `<svg>` alongside `icon icon-<name>` |
|
|
51
|
+
| `title:` | — | accessible label, rendered as `<title>` in the SVG |
|
|
52
|
+
| `pack:` | config | only on `{% icon %}` — pick a pack explicitly |
|
|
53
|
+
|
|
54
|
+
## Semantic icon names — `{% icon_ref %}`
|
|
55
|
+
|
|
56
|
+
The central-registry pattern: call sites name *intent*, one map picks the
|
|
57
|
+
library icon. Swap a pack and every usage follows — no template grep.
|
|
58
|
+
|
|
59
|
+
```yaml
|
|
60
|
+
icon_flow:
|
|
61
|
+
registry:
|
|
62
|
+
download: lucide:arrow-down
|
|
63
|
+
github: simple:github
|
|
64
|
+
danger: lucide:triangle-alert:has-text-danger # 3rd field merges into class
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```liquid
|
|
68
|
+
{% icon_ref download %}
|
|
69
|
+
{% icon_ref danger size:1.5em %}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Packs
|
|
73
|
+
|
|
74
|
+
| Tag | Pack | License | Notes |
|
|
75
|
+
|---|---|---|---|
|
|
76
|
+
| `icon_lucide` / `lucide_icon` | [Lucide](https://lucide.dev) | ISC | UI icons, stroke style |
|
|
77
|
+
| `icon_simple` / `simple_icon` | [simple-icons](https://simpleicons.org) | CC0 | brand logos, fill style |
|
|
78
|
+
| `icon_custom` / `custom_icon` | your files | — | `icon_flow.custom_dir`, e.g. [svgrepo](https://www.svgrepo.com/) downloads (keep `-svgrepo-com.svg` attribution in filenames, per the fleet convention) |
|
|
79
|
+
|
|
80
|
+
The gem vendors a curated subset of lucide and simple-icons. Add icons
|
|
81
|
+
beyond the subset — or shadow any vendored icon — by dropping SVGs into
|
|
82
|
+
your custom dir and reaching them via `{% icon_custom %}`.
|
|
83
|
+
|
|
84
|
+
Extra packs you download wholesale (Font Awesome, Tabler, Heroicons…) get
|
|
85
|
+
a named pack via `icon_flow.packs` instead of mixing into the custom dir:
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
icon_flow:
|
|
89
|
+
packs:
|
|
90
|
+
fontawesome: assets/icons/fontawesome # dir of *.svg
|
|
91
|
+
tabler: vendor/tabler/icons
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Named packs work through `pack:` (`{% icon bars pack:fontawesome %}`), the
|
|
95
|
+
`{% icon %}` search chain, and `icon_flow.registry` targets
|
|
96
|
+
(`menu: tabler:menu`). Liquid registers tag names statically, so named
|
|
97
|
+
packs have no `{% icon_fontawesome %}` tag — use `{% icon %}` or
|
|
98
|
+
`{% icon_ref %}`.
|
|
99
|
+
|
|
100
|
+
## `{% icon %}` resolution order
|
|
101
|
+
|
|
102
|
+
The generic tag searches packs in order and renders the first hit —
|
|
103
|
+
default chain **custom → simple → lucide**, so `{% icon github %}` finds
|
|
104
|
+
the brand icon and `{% icon search %}` finds the lucide one without any
|
|
105
|
+
`pack:`. On collisions the earlier pack wins (`x` and `rss` exist in both
|
|
106
|
+
bundled packs → simple wins by default; bound tags like
|
|
107
|
+
`{% icon_lucide x %}` are unaffected). Pins override the chain:
|
|
108
|
+
`{% icon name pack:simple %}` or a configured `icon_flow.pack` restrict
|
|
109
|
+
the lookup to that one pack.
|
|
110
|
+
|
|
111
|
+
## Config
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
icon_flow:
|
|
115
|
+
enabled: true # false = all icon tags render nothing
|
|
116
|
+
pack: null # pin {% icon %} to one pack; null = search chain
|
|
117
|
+
search: [custom, simple, lucide] # {% icon %} resolution order (default shown)
|
|
118
|
+
custom_dir: assets/icons/custom # site-relative dir for icon_custom
|
|
119
|
+
packs: {} # name → site-relative dir of *.svg
|
|
120
|
+
on_missing: warn # warn (log + render "") | strict (raise)
|
|
121
|
+
registry: {} # semantic_name → "pack:icon[:class]"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Output contract
|
|
125
|
+
|
|
126
|
+
Every icon renders normalized SVG:
|
|
127
|
+
|
|
128
|
+
```html
|
|
129
|
+
<svg class="icon icon-search" data-icon-pack="lucide" role="img"
|
|
130
|
+
style="width:1em;height:1em" …>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- `width`/`height` attributes are stripped; size comes from inline style
|
|
134
|
+
- `stroke`/`fill` normalized to `currentColor` per the pack's color model
|
|
135
|
+
(`:stroke`, `:fill`, or `:auto`); custom SVG attributes on child elements
|
|
136
|
+
are recolored except `none` and `url(...)` references. Inline CSS styles
|
|
137
|
+
and embedded stylesheets in custom SVGs are site-owned and are not rewritten
|
|
138
|
+
- `icon icon-<name>` classes + `data-icon-pack` give stable CSS hooks
|
|
139
|
+
that survive a pack switch
|
|
140
|
+
- missing/invalid icons warn via `Jekyll.logger` and render `""`
|
|
141
|
+
(`on_missing: strict` fails the build instead)
|
|
142
|
+
|
|
143
|
+
## Adding a pack
|
|
144
|
+
|
|
145
|
+
1. Create `lib/jekyll/icon_flow/adapters/<pack>.rb` subclassing `Adapter`
|
|
146
|
+
(`pack_name`, `path_for`, `icons_dir`, `COLOR_MODEL`).
|
|
147
|
+
2. Register it in `IconFlow::ADAPTERS` in `lib/jekyll/icon_flow.rb`.
|
|
148
|
+
3. `{% icon_<pack> %}` and `{% <pack>_icon %}` are registered automatically.
|
|
149
|
+
|
|
150
|
+
## Development and release checks
|
|
151
|
+
|
|
152
|
+
Run `bundle exec rake ci` for RuboCop, dependency audit, local Semgrep rules,
|
|
153
|
+
RSpec with SimpleCov and packaged-gem contents. Coverage is written to
|
|
154
|
+
`coverage/index.html` locally and `coverage/coverage.xml` in CI for Codecov.
|
|
155
|
+
`COVERAGE=false bundle exec rspec` skips instrumentation during focused work.
|
|
156
|
+
Run `bundle exec rake "version:bump[patch]"` to update the gem version and
|
|
157
|
+
lockfile, then add a dated changelog entry before
|
|
158
|
+
`bundle exec rake version:pre_release`. Publishing requires configuring the
|
|
159
|
+
GitHub `release` environment and RubyGems trusted publishing first.
|
|
160
|
+
The SonarCloud badge remains pending until the repository is onboarded; its
|
|
161
|
+
vendored icons are excluded in `.sonarcloud.properties`.
|
|
162
|
+
|
|
163
|
+
## License
|
|
164
|
+
|
|
165
|
+
AGPL-3.0-or-later. Vendored icons keep their own licenses
|
|
166
|
+
(lucide: ISC; simple-icons: CC0-1.0).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-arrow-down"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M12 5v14" />
|
|
15
|
+
<path d="m19 12-7 7-7-7" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-arrow-left"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m12 19-7-7 7-7" />
|
|
15
|
+
<path d="M19 12H5" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-arrow-right"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M5 12h14" />
|
|
15
|
+
<path d="m12 5 7 7-7 7" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-arrow-up"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m5 12 7-7 7 7" />
|
|
15
|
+
<path d="M12 19V5" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-calendar"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M8 2v3" />
|
|
15
|
+
<path d="M16 2v3" />
|
|
16
|
+
<rect x="3" y="3" width="18" height="18" rx="2" />
|
|
17
|
+
<path d="M3 9h18" />
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-check"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M20 6 9 17l-5-5" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-chevron-down"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m6 9 6 6 6-6" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-chevron-left"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m15 18-6-6 6-6" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-chevron-right"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m9 18 6-6-6-6" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-chevron-up"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m18 15-6-6-6 6" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-copy"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<rect width="14" height="14" x="8" y="8" rx="2" ry="2" />
|
|
15
|
+
<path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-download"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M12 15V3" />
|
|
15
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
|
|
16
|
+
<path d="m7 10 5 5 5-5" />
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-external-link"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M15 3h6v6" />
|
|
15
|
+
<path d="M10 14 21 3" />
|
|
16
|
+
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-file-text"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z" />
|
|
15
|
+
<path d="M14 2v5a1 1 0 0 0 1 1h5" />
|
|
16
|
+
<path d="M10 9H8" />
|
|
17
|
+
<path d="M16 13H8" />
|
|
18
|
+
<path d="M16 17H8" />
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-folder"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-home"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" />
|
|
15
|
+
<path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-info"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<circle cx="12" cy="12" r="10" />
|
|
15
|
+
<path d="M12 16v-4" />
|
|
16
|
+
<path d="M12 8h.01" />
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-link"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" />
|
|
15
|
+
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-mail"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7" />
|
|
15
|
+
<rect x="2" y="4" width="20" height="16" rx="2" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-map-pin"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" />
|
|
15
|
+
<circle cx="12" cy="10" r="3" />
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-map"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z" />
|
|
15
|
+
<path d="M15 5.764v15" />
|
|
16
|
+
<path d="M9 3.236v15" />
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-menu"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M4 5h16" />
|
|
15
|
+
<path d="M4 12h16" />
|
|
16
|
+
<path d="M4 19h16" />
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-moon"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" />
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-printer"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2" />
|
|
15
|
+
<path d="M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6" />
|
|
16
|
+
<rect x="6" y="14" width="12" height="8" rx="1" />
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.48.0 - ISC -->
|
|
2
|
+
<svg
|
|
3
|
+
class="lucide lucide-rss"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="none"
|
|
9
|
+
stroke="currentColor"
|
|
10
|
+
stroke-width="2"
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
>
|
|
14
|
+
<path d="M4 11a9 9 0 0 1 9 9" />
|
|
15
|
+
<path d="M4 4a16 16 0 0 1 16 16" />
|
|
16
|
+
<circle cx="5" cy="19" r="1" />
|
|
17
|
+
</svg>
|