@mal-icons/angular 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.
- package/README.md +108 -0
- package/package.json +47 -0
- package/src/context.ts +17 -0
- package/src/icon-base.ts +91 -0
- package/src/icons/fi/FiActivity.ts +20 -0
- package/src/icons/fi/FiAirplay.ts +20 -0
- package/src/icons/fi/FiAlertCircle.ts +20 -0
- package/src/icons/fi/FiAlertOctagon.ts +20 -0
- package/src/icons/fi/FiAlertTriangle.ts +20 -0
- package/src/icons/fi/FiAlignCenter.ts +20 -0
- package/src/icons/fi/FiAlignJustify.ts +20 -0
- package/src/icons/fi/FiAlignLeft.ts +20 -0
- package/src/icons/fi/FiAlignRight.ts +20 -0
- package/src/icons/fi/FiAnchor.ts +20 -0
- package/src/icons/fi/FiAperture.ts +20 -0
- package/src/icons/fi/FiArchive.ts +20 -0
- package/src/icons/fi/FiArrowDown.ts +20 -0
- package/src/icons/fi/FiArrowDownCircle.ts +20 -0
- package/src/icons/fi/FiArrowDownLeft.ts +20 -0
- package/src/icons/fi/FiArrowDownRight.ts +20 -0
- package/src/icons/fi/FiArrowLeft.ts +20 -0
- package/src/icons/fi/FiArrowLeftCircle.ts +20 -0
- package/src/icons/fi/FiArrowRight.ts +20 -0
- package/src/icons/fi/FiArrowRightCircle.ts +20 -0
- package/src/icons/fi/FiArrowUp.ts +20 -0
- package/src/icons/fi/FiArrowUpCircle.ts +20 -0
- package/src/icons/fi/FiArrowUpLeft.ts +20 -0
- package/src/icons/fi/FiArrowUpRight.ts +20 -0
- package/src/icons/fi/FiAtSign.ts +20 -0
- package/src/icons/fi/FiAward.ts +20 -0
- package/src/icons/fi/FiBarChart.ts +20 -0
- package/src/icons/fi/FiBarChart2.ts +20 -0
- package/src/icons/fi/FiBattery.ts +20 -0
- package/src/icons/fi/FiBatteryCharging.ts +20 -0
- package/src/icons/fi/FiBell.ts +20 -0
- package/src/icons/fi/FiBellOff.ts +20 -0
- package/src/icons/fi/FiBluetooth.ts +20 -0
- package/src/icons/fi/FiBold.ts +20 -0
- package/src/icons/fi/FiBook.ts +20 -0
- package/src/icons/fi/FiBookOpen.ts +20 -0
- package/src/icons/fi/FiBookmark.ts +20 -0
- package/src/icons/fi/FiBox.ts +20 -0
- package/src/icons/fi/FiBriefcase.ts +20 -0
- package/src/icons/fi/FiCalendar.ts +20 -0
- package/src/icons/fi/FiCamera.ts +20 -0
- package/src/icons/fi/FiCameraOff.ts +20 -0
- package/src/icons/fi/FiCast.ts +20 -0
- package/src/icons/fi/FiCheck.ts +20 -0
- package/src/icons/fi/FiCheckCircle.ts +20 -0
- package/src/icons/fi/FiCheckSquare.ts +20 -0
- package/src/icons/fi/FiChevronDown.ts +20 -0
- package/src/icons/fi/FiChevronLeft.ts +20 -0
- package/src/icons/fi/FiChevronRight.ts +20 -0
- package/src/icons/fi/FiChevronUp.ts +20 -0
- package/src/icons/fi/FiChevronsDown.ts +20 -0
- package/src/icons/fi/FiChevronsLeft.ts +20 -0
- package/src/icons/fi/FiChevronsRight.ts +20 -0
- package/src/icons/fi/FiChevronsUp.ts +20 -0
- package/src/icons/fi/FiChrome.ts +20 -0
- package/src/icons/fi/FiCircle.ts +20 -0
- package/src/icons/fi/FiClipboard.ts +20 -0
- package/src/icons/fi/FiClock.ts +20 -0
- package/src/icons/fi/FiCloud.ts +20 -0
- package/src/icons/fi/FiCloudDrizzle.ts +20 -0
- package/src/icons/fi/FiCloudLightning.ts +20 -0
- package/src/icons/fi/FiCloudOff.ts +20 -0
- package/src/icons/fi/FiCloudRain.ts +20 -0
- package/src/icons/fi/FiCloudSnow.ts +20 -0
- package/src/icons/fi/FiCode.ts +20 -0
- package/src/icons/fi/FiCodepen.ts +20 -0
- package/src/icons/fi/FiCodesandbox.ts +20 -0
- package/src/icons/fi/FiCoffee.ts +20 -0
- package/src/icons/fi/FiColumns.ts +20 -0
- package/src/icons/fi/FiCommand.ts +20 -0
- package/src/icons/fi/FiCompass.ts +20 -0
- package/src/icons/fi/FiCopy.ts +20 -0
- package/src/icons/fi/FiCornerDownLeft.ts +20 -0
- package/src/icons/fi/FiCornerDownRight.ts +20 -0
- package/src/icons/fi/FiCornerLeftDown.ts +20 -0
- package/src/icons/fi/FiCornerLeftUp.ts +20 -0
- package/src/icons/fi/FiCornerRightDown.ts +20 -0
- package/src/icons/fi/FiCornerRightUp.ts +20 -0
- package/src/icons/fi/FiCornerUpLeft.ts +20 -0
- package/src/icons/fi/FiCornerUpRight.ts +20 -0
- package/src/icons/fi/FiCpu.ts +20 -0
- package/src/icons/fi/FiCreditCard.ts +20 -0
- package/src/icons/fi/FiCrop.ts +20 -0
- package/src/icons/fi/FiCrosshair.ts +20 -0
- package/src/icons/fi/FiDatabase.ts +20 -0
- package/src/icons/fi/FiDelete.ts +20 -0
- package/src/icons/fi/FiDisc.ts +20 -0
- package/src/icons/fi/FiDivide.ts +20 -0
- package/src/icons/fi/FiDivideCircle.ts +20 -0
- package/src/icons/fi/FiDivideSquare.ts +20 -0
- package/src/icons/fi/FiDollarSign.ts +20 -0
- package/src/icons/fi/FiDownload.ts +20 -0
- package/src/icons/fi/FiDownloadCloud.ts +20 -0
- package/src/icons/fi/FiDribbble.ts +20 -0
- package/src/icons/fi/FiDroplet.ts +20 -0
- package/src/icons/fi/FiEdit.ts +20 -0
- package/src/icons/fi/FiEdit2.ts +20 -0
- package/src/icons/fi/FiEdit3.ts +20 -0
- package/src/icons/fi/FiExternalLink.ts +20 -0
- package/src/icons/fi/FiEye.ts +20 -0
- package/src/icons/fi/FiEyeOff.ts +20 -0
- package/src/icons/fi/FiFacebook.ts +20 -0
- package/src/icons/fi/FiFastForward.ts +20 -0
- package/src/icons/fi/FiFeather.ts +20 -0
- package/src/icons/fi/FiFigma.ts +20 -0
- package/src/icons/fi/FiFile.ts +20 -0
- package/src/icons/fi/FiFileMinus.ts +20 -0
- package/src/icons/fi/FiFilePlus.ts +20 -0
- package/src/icons/fi/FiFileText.ts +20 -0
- package/src/icons/fi/FiFilm.ts +20 -0
- package/src/icons/fi/FiFilter.ts +20 -0
- package/src/icons/fi/FiFlag.ts +20 -0
- package/src/icons/fi/FiFolder.ts +20 -0
- package/src/icons/fi/FiFolderMinus.ts +20 -0
- package/src/icons/fi/FiFolderPlus.ts +20 -0
- package/src/icons/fi/FiFramer.ts +20 -0
- package/src/icons/fi/FiFrown.ts +20 -0
- package/src/icons/fi/FiGift.ts +20 -0
- package/src/icons/fi/FiGitBranch.ts +20 -0
- package/src/icons/fi/FiGitCommit.ts +20 -0
- package/src/icons/fi/FiGitMerge.ts +20 -0
- package/src/icons/fi/FiGitPullRequest.ts +20 -0
- package/src/icons/fi/FiGithub.ts +20 -0
- package/src/icons/fi/FiGitlab.ts +20 -0
- package/src/icons/fi/FiGlobe.ts +20 -0
- package/src/icons/fi/FiGrid.ts +20 -0
- package/src/icons/fi/FiHardDrive.ts +20 -0
- package/src/icons/fi/FiHash.ts +20 -0
- package/src/icons/fi/FiHeadphones.ts +20 -0
- package/src/icons/fi/FiHeart.ts +20 -0
- package/src/icons/fi/FiHelpCircle.ts +20 -0
- package/src/icons/fi/FiHexagon.ts +20 -0
- package/src/icons/fi/FiHome.ts +20 -0
- package/src/icons/fi/FiImage.ts +20 -0
- package/src/icons/fi/FiInbox.ts +20 -0
- package/src/icons/fi/FiInfo.ts +20 -0
- package/src/icons/fi/FiInstagram.ts +20 -0
- package/src/icons/fi/FiItalic.ts +20 -0
- package/src/icons/fi/FiKey.ts +20 -0
- package/src/icons/fi/FiLayers.ts +20 -0
- package/src/icons/fi/FiLayout.ts +20 -0
- package/src/icons/fi/FiLifeBuoy.ts +20 -0
- package/src/icons/fi/FiLink.ts +20 -0
- package/src/icons/fi/FiLink2.ts +20 -0
- package/src/icons/fi/FiLinkedin.ts +20 -0
- package/src/icons/fi/FiList.ts +20 -0
- package/src/icons/fi/FiLoader.ts +20 -0
- package/src/icons/fi/FiLock.ts +20 -0
- package/src/icons/fi/FiLogIn.ts +20 -0
- package/src/icons/fi/FiLogOut.ts +20 -0
- package/src/icons/fi/FiMail.ts +20 -0
- package/src/icons/fi/FiMap.ts +20 -0
- package/src/icons/fi/FiMapPin.ts +20 -0
- package/src/icons/fi/FiMaximize.ts +20 -0
- package/src/icons/fi/FiMaximize2.ts +20 -0
- package/src/icons/fi/FiMeh.ts +20 -0
- package/src/icons/fi/FiMenu.ts +20 -0
- package/src/icons/fi/FiMessageCircle.ts +20 -0
- package/src/icons/fi/FiMessageSquare.ts +20 -0
- package/src/icons/fi/FiMic.ts +20 -0
- package/src/icons/fi/FiMicOff.ts +20 -0
- package/src/icons/fi/FiMinimize.ts +20 -0
- package/src/icons/fi/FiMinimize2.ts +20 -0
- package/src/icons/fi/FiMinus.ts +20 -0
- package/src/icons/fi/FiMinusCircle.ts +20 -0
- package/src/icons/fi/FiMinusSquare.ts +20 -0
- package/src/icons/fi/FiMonitor.ts +20 -0
- package/src/icons/fi/FiMoon.ts +20 -0
- package/src/icons/fi/FiMoreHorizontal.ts +20 -0
- package/src/icons/fi/FiMoreVertical.ts +20 -0
- package/src/icons/fi/FiMousePointer.ts +20 -0
- package/src/icons/fi/FiMove.ts +20 -0
- package/src/icons/fi/FiMusic.ts +20 -0
- package/src/icons/fi/FiNavigation.ts +20 -0
- package/src/icons/fi/FiNavigation2.ts +20 -0
- package/src/icons/fi/FiOctagon.ts +20 -0
- package/src/icons/fi/FiPackage.ts +20 -0
- package/src/icons/fi/FiPaperclip.ts +20 -0
- package/src/icons/fi/FiPause.ts +20 -0
- package/src/icons/fi/FiPauseCircle.ts +20 -0
- package/src/icons/fi/FiPenTool.ts +20 -0
- package/src/icons/fi/FiPercent.ts +20 -0
- package/src/icons/fi/FiPhone.ts +20 -0
- package/src/icons/fi/FiPhoneCall.ts +20 -0
- package/src/icons/fi/FiPhoneForwarded.ts +20 -0
- package/src/icons/fi/FiPhoneIncoming.ts +20 -0
- package/src/icons/fi/FiPhoneMissed.ts +20 -0
- package/src/icons/fi/FiPhoneOff.ts +20 -0
- package/src/icons/fi/FiPhoneOutgoing.ts +20 -0
- package/src/icons/fi/FiPieChart.ts +20 -0
- package/src/icons/fi/FiPlay.ts +20 -0
- package/src/icons/fi/FiPlayCircle.ts +20 -0
- package/src/icons/fi/FiPlus.ts +20 -0
- package/src/icons/fi/FiPlusCircle.ts +20 -0
- package/src/icons/fi/FiPlusSquare.ts +20 -0
- package/src/icons/fi/FiPocket.ts +20 -0
- package/src/icons/fi/FiPower.ts +20 -0
- package/src/icons/fi/FiPrinter.ts +20 -0
- package/src/icons/fi/FiRadio.ts +20 -0
- package/src/icons/fi/FiRefreshCcw.ts +20 -0
- package/src/icons/fi/FiRefreshCw.ts +20 -0
- package/src/icons/fi/FiRepeat.ts +20 -0
- package/src/icons/fi/FiRewind.ts +20 -0
- package/src/icons/fi/FiRotateCcw.ts +20 -0
- package/src/icons/fi/FiRotateCw.ts +20 -0
- package/src/icons/fi/FiRss.ts +20 -0
- package/src/icons/fi/FiSave.ts +20 -0
- package/src/icons/fi/FiScissors.ts +20 -0
- package/src/icons/fi/FiSearch.ts +20 -0
- package/src/icons/fi/FiSend.ts +20 -0
- package/src/icons/fi/FiServer.ts +20 -0
- package/src/icons/fi/FiSettings.ts +20 -0
- package/src/icons/fi/FiShare.ts +20 -0
- package/src/icons/fi/FiShare2.ts +20 -0
- package/src/icons/fi/FiShield.ts +20 -0
- package/src/icons/fi/FiShieldOff.ts +20 -0
- package/src/icons/fi/FiShoppingBag.ts +20 -0
- package/src/icons/fi/FiShoppingCart.ts +20 -0
- package/src/icons/fi/FiShuffle.ts +20 -0
- package/src/icons/fi/FiSidebar.ts +20 -0
- package/src/icons/fi/FiSkipBack.ts +20 -0
- package/src/icons/fi/FiSkipForward.ts +20 -0
- package/src/icons/fi/FiSlack.ts +20 -0
- package/src/icons/fi/FiSlash.ts +20 -0
- package/src/icons/fi/FiSliders.ts +20 -0
- package/src/icons/fi/FiSmartphone.ts +20 -0
- package/src/icons/fi/FiSmile.ts +20 -0
- package/src/icons/fi/FiSpeaker.ts +20 -0
- package/src/icons/fi/FiSquare.ts +20 -0
- package/src/icons/fi/FiStar.ts +20 -0
- package/src/icons/fi/FiStopCircle.ts +20 -0
- package/src/icons/fi/FiSun.ts +20 -0
- package/src/icons/fi/FiSunrise.ts +20 -0
- package/src/icons/fi/FiSunset.ts +20 -0
- package/src/icons/fi/FiTable.ts +20 -0
- package/src/icons/fi/FiTablet.ts +20 -0
- package/src/icons/fi/FiTag.ts +20 -0
- package/src/icons/fi/FiTarget.ts +20 -0
- package/src/icons/fi/FiTerminal.ts +20 -0
- package/src/icons/fi/FiThermometer.ts +20 -0
- package/src/icons/fi/FiThumbsDown.ts +20 -0
- package/src/icons/fi/FiThumbsUp.ts +20 -0
- package/src/icons/fi/FiToggleLeft.ts +20 -0
- package/src/icons/fi/FiToggleRight.ts +20 -0
- package/src/icons/fi/FiTool.ts +20 -0
- package/src/icons/fi/FiTrash.ts +20 -0
- package/src/icons/fi/FiTrash2.ts +20 -0
- package/src/icons/fi/FiTrello.ts +20 -0
- package/src/icons/fi/FiTrendingDown.ts +20 -0
- package/src/icons/fi/FiTrendingUp.ts +20 -0
- package/src/icons/fi/FiTriangle.ts +20 -0
- package/src/icons/fi/FiTruck.ts +20 -0
- package/src/icons/fi/FiTv.ts +20 -0
- package/src/icons/fi/FiTwitch.ts +20 -0
- package/src/icons/fi/FiTwitter.ts +20 -0
- package/src/icons/fi/FiType.ts +20 -0
- package/src/icons/fi/FiUmbrella.ts +20 -0
- package/src/icons/fi/FiUnderline.ts +20 -0
- package/src/icons/fi/FiUnlock.ts +20 -0
- package/src/icons/fi/FiUpload.ts +20 -0
- package/src/icons/fi/FiUploadCloud.ts +20 -0
- package/src/icons/fi/FiUser.ts +20 -0
- package/src/icons/fi/FiUserCheck.ts +20 -0
- package/src/icons/fi/FiUserMinus.ts +20 -0
- package/src/icons/fi/FiUserPlus.ts +20 -0
- package/src/icons/fi/FiUserX.ts +20 -0
- package/src/icons/fi/FiUsers.ts +20 -0
- package/src/icons/fi/FiVideo.ts +20 -0
- package/src/icons/fi/FiVideoOff.ts +20 -0
- package/src/icons/fi/FiVoicemail.ts +20 -0
- package/src/icons/fi/FiVolume.ts +20 -0
- package/src/icons/fi/FiVolume1.ts +20 -0
- package/src/icons/fi/FiVolume2.ts +20 -0
- package/src/icons/fi/FiVolumeX.ts +20 -0
- package/src/icons/fi/FiWatch.ts +20 -0
- package/src/icons/fi/FiWifi.ts +20 -0
- package/src/icons/fi/FiWifiOff.ts +20 -0
- package/src/icons/fi/FiWind.ts +20 -0
- package/src/icons/fi/FiX.ts +20 -0
- package/src/icons/fi/FiXCircle.ts +20 -0
- package/src/icons/fi/FiXOctagon.ts +20 -0
- package/src/icons/fi/FiXSquare.ts +20 -0
- package/src/icons/fi/FiYoutube.ts +20 -0
- package/src/icons/fi/FiZap.ts +20 -0
- package/src/icons/fi/FiZapOff.ts +20 -0
- package/src/icons/fi/FiZoomIn.ts +20 -0
- package/src/icons/fi/FiZoomOut.ts +20 -0
- package/src/icons/fi/index.ts +288 -0
- package/src/icons/fi/names.ts +293 -0
- package/src/index.ts +13 -0
package/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# @mal-icons/angular
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@mal-icons/angular)
|
|
4
|
+
[](https://github.com/mal-icons/mal-icons/blob/main/LICENSE)
|
|
5
|
+
|
|
6
|
+
Angular adapter for [**mal-icons**](https://github.com/mal-icons/mal-icons) — a
|
|
7
|
+
high-performance, tree-shakeable icon SDK. Each icon is a pre-generated
|
|
8
|
+
**standalone** Angular component that renders SVG through `Renderer2` with
|
|
9
|
+
`OnPush` change detection.
|
|
10
|
+
|
|
11
|
+
## Highlights
|
|
12
|
+
|
|
13
|
+
- **Standalone components** — import an icon directly, no `NgModule` needed.
|
|
14
|
+
- **`OnPush`** — minimal change-detection overhead.
|
|
15
|
+
- **Tree-shakeable** — every icon is its own component.
|
|
16
|
+
- **Themeable** — dependency-injection context (`ICON_CONTEXT`) with per-icon overrides.
|
|
17
|
+
- **Accessible** — correct `role` / `aria-hidden` and optional `<title>`.
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
bun add @mal-icons/angular
|
|
23
|
+
# or
|
|
24
|
+
npm install @mal-icons/angular
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
> Requires `@angular/core` 16 or newer (peer dependency). The package ships
|
|
28
|
+
> TypeScript source, so it compiles in your app's Angular version.
|
|
29
|
+
|
|
30
|
+
## Quick start
|
|
31
|
+
|
|
32
|
+
Import the standalone component and use its selector in a template:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { Component } from "@angular/core";
|
|
36
|
+
import { FiActivity } from "@mal-icons/angular/fi";
|
|
37
|
+
|
|
38
|
+
@Component({
|
|
39
|
+
standalone: true,
|
|
40
|
+
selector: "app-status",
|
|
41
|
+
imports: [FiActivity],
|
|
42
|
+
template: `<mal-fi-activity [size]="24" title="Status" />`,
|
|
43
|
+
})
|
|
44
|
+
export class StatusComponent {}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> The selector is the kebab-cased icon name prefixed with `mal-`
|
|
48
|
+
> (e.g. `FiActivity` → `<mal-fi-activity>`).
|
|
49
|
+
|
|
50
|
+
### App-wide theming
|
|
51
|
+
|
|
52
|
+
Provide `ICON_CONTEXT` to set defaults for all descendant icons; per-icon
|
|
53
|
+
inputs override them:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { ICON_CONTEXT } from "@mal-icons/angular";
|
|
57
|
+
|
|
58
|
+
bootstrapApplication(AppComponent, {
|
|
59
|
+
providers: [
|
|
60
|
+
{ provide: ICON_CONTEXT, useValue: { size: 20, color: "#3366ff" } },
|
|
61
|
+
],
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Inputs
|
|
66
|
+
|
|
67
|
+
| Input | Type | Description |
|
|
68
|
+
| ----------- | ------------------ | ------------------------------------ |
|
|
69
|
+
| `size` | `number \| string` | Width and height (defaults to `1em`) |
|
|
70
|
+
| `color` | `string` | Overrides `currentColor` |
|
|
71
|
+
| `title` | `string` | Accessible label |
|
|
72
|
+
| `className` | `string` | Additional class names |
|
|
73
|
+
|
|
74
|
+
## API
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
import {
|
|
78
|
+
IconBaseComponent,
|
|
79
|
+
ICON_CONTEXT,
|
|
80
|
+
DefaultIconContext,
|
|
81
|
+
ICON_ANIMATIONS_CSS,
|
|
82
|
+
WEIGHT_STROKE_WIDTH,
|
|
83
|
+
animationClass,
|
|
84
|
+
} from "@mal-icons/angular";
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Subpath exports
|
|
88
|
+
|
|
89
|
+
| Import | Contents |
|
|
90
|
+
| ---------------------------------- | --------------------------- |
|
|
91
|
+
| `@mal-icons/angular` | Base component and context |
|
|
92
|
+
| `@mal-icons/angular/fi` | All Feather icon components |
|
|
93
|
+
| `@mal-icons/angular/fi/FiActivity` | A single icon component |
|
|
94
|
+
|
|
95
|
+
## Example
|
|
96
|
+
|
|
97
|
+
A Vite + Angular 22 gallery (standalone components, signals,
|
|
98
|
+
`NgComponentOutlet`) lives in
|
|
99
|
+
[`examples/angular`](https://github.com/mal-icons/mal-icons/tree/main/examples/angular).
|
|
100
|
+
|
|
101
|
+
## Repository
|
|
102
|
+
|
|
103
|
+
<https://github.com/mal-icons/mal-icons> · package directory
|
|
104
|
+
[`packages/angular`](https://github.com/mal-icons/mal-icons/tree/main/packages/angular).
|
|
105
|
+
|
|
106
|
+
## License
|
|
107
|
+
|
|
108
|
+
[MIT](https://github.com/mal-icons/mal-icons/blob/main/LICENSE) © MALDevs
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mal-icons/angular",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Angular standalone components for mal-icons.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "MALDevs",
|
|
8
|
+
"homepage": "https://github.com/mal-icons/mal-icons#readme",
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/mal-icons/mal-icons/issues"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/mal-icons/mal-icons.git",
|
|
15
|
+
"directory": "packages/angular"
|
|
16
|
+
},
|
|
17
|
+
"keywords": ["icons", "svg", "angular", "components", "mal-icons"],
|
|
18
|
+
"sideEffects": false,
|
|
19
|
+
"files": ["src"],
|
|
20
|
+
"module": "./src/index.ts",
|
|
21
|
+
"types": "./src/index.ts",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./src/index.ts",
|
|
25
|
+
"bun": "./src/index.ts",
|
|
26
|
+
"import": "./src/index.ts"
|
|
27
|
+
},
|
|
28
|
+
"./fi": {
|
|
29
|
+
"bun": "./src/icons/fi/index.ts",
|
|
30
|
+
"import": "./src/icons/fi/index.ts"
|
|
31
|
+
},
|
|
32
|
+
"./fi/*": {
|
|
33
|
+
"bun": "./src/icons/fi/*.ts",
|
|
34
|
+
"import": "./src/icons/fi/*.ts"
|
|
35
|
+
},
|
|
36
|
+
"./package.json": "./package.json"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"@angular/core": ">=16"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@mal-icons/core": "workspace:*"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
}
|
|
47
|
+
}
|
package/src/context.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
import type { IconContextValue } from "@mal-icons/core";
|
|
3
|
+
|
|
4
|
+
/** Theming context value for all mal-icons Angular components. */
|
|
5
|
+
export type AngularIconContextValue = IconContextValue<Record<string, string>>;
|
|
6
|
+
|
|
7
|
+
/** Default (empty) theming configuration. */
|
|
8
|
+
export const DefaultIconContext: AngularIconContextValue = {};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Injection token carrying icon theming (size, color, className, attr).
|
|
12
|
+
* Provide it in a component/module to theme all descendant mal-icons
|
|
13
|
+
* components; consumed inside {@link IconBaseComponent}.
|
|
14
|
+
*/
|
|
15
|
+
export const ICON_CONTEXT = new InjectionToken<AngularIconContextValue>("mal-icons-context", {
|
|
16
|
+
factory: () => DefaultIconContext,
|
|
17
|
+
});
|
package/src/icon-base.ts
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChangeDetectionStrategy,
|
|
3
|
+
Component,
|
|
4
|
+
ElementRef,
|
|
5
|
+
Input,
|
|
6
|
+
type OnChanges,
|
|
7
|
+
Renderer2,
|
|
8
|
+
inject,
|
|
9
|
+
} from "@angular/core";
|
|
10
|
+
import { type NodeTuple, resolveIconAttrs } from "@mal-icons/core";
|
|
11
|
+
import { type AngularIconContextValue, ICON_CONTEXT } from "./context.ts";
|
|
12
|
+
|
|
13
|
+
const SVG_NS = "http://www.w3.org/2000/svg";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The shared SVG wrapper. Reads theming from the injected {@link ICON_CONTEXT},
|
|
17
|
+
* applies the SRS override priority, and builds a native `<svg>` element with
|
|
18
|
+
* `Renderer2` — no `innerHTML`, no runtime string parsing.
|
|
19
|
+
*/
|
|
20
|
+
@Component({
|
|
21
|
+
selector: "mal-icons",
|
|
22
|
+
standalone: true,
|
|
23
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
24
|
+
template: "",
|
|
25
|
+
})
|
|
26
|
+
export class IconBaseComponent implements OnChanges {
|
|
27
|
+
@Input() viewBox = "0 0 24 24";
|
|
28
|
+
@Input() nodes: NodeTuple[] = [];
|
|
29
|
+
@Input() defaultAttr: Record<string, unknown> = {};
|
|
30
|
+
@Input() size?: string | number;
|
|
31
|
+
@Input() color?: string;
|
|
32
|
+
@Input() title?: string;
|
|
33
|
+
@Input() className?: string;
|
|
34
|
+
|
|
35
|
+
private svg?: SVGSVGElement;
|
|
36
|
+
|
|
37
|
+
private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);
|
|
38
|
+
private readonly renderer = inject(Renderer2);
|
|
39
|
+
private readonly ctx = inject<AngularIconContextValue>(ICON_CONTEXT);
|
|
40
|
+
|
|
41
|
+
ngOnChanges(): void {
|
|
42
|
+
this.build();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private build(): void {
|
|
46
|
+
if (this.svg) {
|
|
47
|
+
this.renderer.removeChild(this.host.nativeElement, this.svg);
|
|
48
|
+
this.svg = undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const { size, color, className } = resolveIconAttrs(
|
|
52
|
+
{ size: this.size, color: this.color, className: this.className },
|
|
53
|
+
this.ctx,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const svg = this.renderer.createElement("svg", SVG_NS) as SVGSVGElement;
|
|
57
|
+
this.renderer.setAttribute(svg, "viewBox", this.viewBox);
|
|
58
|
+
this.renderer.setAttribute(svg, "stroke", "currentColor");
|
|
59
|
+
this.renderer.setAttribute(svg, "fill", "currentColor");
|
|
60
|
+
this.renderer.setAttribute(svg, "stroke-width", "0");
|
|
61
|
+
for (const [k, v] of Object.entries(this.defaultAttr)) {
|
|
62
|
+
this.renderer.setAttribute(svg, k, String(v));
|
|
63
|
+
}
|
|
64
|
+
for (const [k, v] of Object.entries(this.ctx.attr ?? {})) {
|
|
65
|
+
this.renderer.setAttribute(svg, k, String(v));
|
|
66
|
+
}
|
|
67
|
+
this.renderer.setAttribute(svg, "width", String(size));
|
|
68
|
+
this.renderer.setAttribute(svg, "height", String(size));
|
|
69
|
+
if (color) this.renderer.setStyle(svg, "color", color);
|
|
70
|
+
if (className) this.renderer.setAttribute(svg, "class", className);
|
|
71
|
+
|
|
72
|
+
if (this.title) {
|
|
73
|
+
this.renderer.setAttribute(svg, "role", "img");
|
|
74
|
+
const title = this.renderer.createElement("title", SVG_NS);
|
|
75
|
+
this.renderer.appendChild(title, this.renderer.createText(this.title));
|
|
76
|
+
this.renderer.appendChild(svg, title);
|
|
77
|
+
} else {
|
|
78
|
+
this.renderer.setAttribute(svg, "role", "presentation");
|
|
79
|
+
this.renderer.setAttribute(svg, "aria-hidden", "true");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
for (const [tag, attr] of this.nodes) {
|
|
83
|
+
const el = this.renderer.createElement(tag, SVG_NS);
|
|
84
|
+
for (const [k, v] of Object.entries(attr)) this.renderer.setAttribute(el, k, String(v));
|
|
85
|
+
this.renderer.appendChild(svg, el);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this.renderer.appendChild(this.host.nativeElement, svg);
|
|
89
|
+
this.svg = svg;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-activity",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiActivity {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["polyline",{"points":"22 12 18 12 15 21 9 3 6 12 2 12"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-airplay",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAirplay {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["path",{"d":"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"}],["polygon",{"points":"12 15 17 21 7 21 12 15"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-alert-circle",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlertCircle {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["circle",{"cx":"12","cy":"12","r":"10"}],["line",{"x1":"12","y1":"8","x2":"12","y2":"12"}],["line",{"x1":"12","y1":"16","x2":"12.01","y2":"16"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-alert-octagon",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlertOctagon {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["polygon",{"points":"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"}],["line",{"x1":"12","y1":"8","x2":"12","y2":"12"}],["line",{"x1":"12","y1":"16","x2":"12.01","y2":"16"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-alert-triangle",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlertTriangle {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["path",{"d":"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}],["line",{"x1":"12","y1":"9","x2":"12","y2":"13"}],["line",{"x1":"12","y1":"17","x2":"12.01","y2":"17"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-align-center",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlignCenter {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"18","y1":"10","x2":"6","y2":"10"}],["line",{"x1":"21","y1":"6","x2":"3","y2":"6"}],["line",{"x1":"21","y1":"14","x2":"3","y2":"14"}],["line",{"x1":"18","y1":"18","x2":"6","y2":"18"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-align-justify",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlignJustify {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"21","y1":"10","x2":"3","y2":"10"}],["line",{"x1":"21","y1":"6","x2":"3","y2":"6"}],["line",{"x1":"21","y1":"14","x2":"3","y2":"14"}],["line",{"x1":"21","y1":"18","x2":"3","y2":"18"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-align-left",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlignLeft {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"17","y1":"10","x2":"3","y2":"10"}],["line",{"x1":"21","y1":"6","x2":"3","y2":"6"}],["line",{"x1":"21","y1":"14","x2":"3","y2":"14"}],["line",{"x1":"17","y1":"18","x2":"3","y2":"18"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-align-right",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAlignRight {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"21","y1":"10","x2":"7","y2":"10"}],["line",{"x1":"21","y1":"6","x2":"3","y2":"6"}],["line",{"x1":"21","y1":"14","x2":"3","y2":"14"}],["line",{"x1":"21","y1":"18","x2":"7","y2":"18"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-anchor",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAnchor {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["circle",{"cx":"12","cy":"5","r":"3"}],["line",{"x1":"12","y1":"22","x2":"12","y2":"8"}],["path",{"d":"M5 12H2a10 10 0 0 0 20 0h-3"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-aperture",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiAperture {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["circle",{"cx":"12","cy":"12","r":"10"}],["line",{"x1":"14.31","y1":"8","x2":"20.05","y2":"17.94"}],["line",{"x1":"9.69","y1":"8","x2":"21.17","y2":"8"}],["line",{"x1":"7.38","y1":"12","x2":"13.12","y2":"2.06"}],["line",{"x1":"9.69","y1":"16","x2":"3.95","y2":"6.06"}],["line",{"x1":"14.31","y1":"16","x2":"2.83","y2":"16"}],["line",{"x1":"16.62","y1":"12","x2":"10.88","y2":"21.94"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-archive",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiArchive {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["polyline",{"points":"21 8 21 21 3 21 3 8"}],["rect",{"x":"1","y":"3","width":"22","height":"5"}],["line",{"x1":"10","y1":"12","x2":"14","y2":"12"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-arrow-down",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiArrowDown {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"12","y1":"5","x2":"12","y2":"19"}],["polyline",{"points":"19 12 12 19 5 12"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-arrow-down-circle",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiArrowDownCircle {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["circle",{"cx":"12","cy":"12","r":"10"}],["polyline",{"points":"8 12 12 16 16 12"}],["line",{"x1":"12","y1":"8","x2":"12","y2":"16"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-arrow-down-left",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiArrowDownLeft {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"17","y1":"7","x2":"7","y2":"17"}],["polyline",{"points":"17 17 7 17 7 7"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-arrow-down-right",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiArrowDownRight {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"7","y1":"7","x2":"17","y2":"17"}],["polyline",{"points":"17 7 17 17 7 17"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
+
import type { NodeTuple } from "@mal-icons/core";
|
|
3
|
+
import { IconBaseComponent } from "../../icon-base.ts";
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: "mal-fi-arrow-left",
|
|
7
|
+
standalone: true,
|
|
8
|
+
imports: [IconBaseComponent],
|
|
9
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10
|
+
template: `<mal-icons [viewBox]="viewBox" [nodes]="nodes" [defaultAttr]="defaultAttr" [size]="size" [color]="color" [title]="title" [className]="className"></mal-icons>`,
|
|
11
|
+
})
|
|
12
|
+
export class FiArrowLeft {
|
|
13
|
+
readonly viewBox = "0 0 24 24";
|
|
14
|
+
readonly nodes: NodeTuple[] = [["line",{"x1":"19","y1":"12","x2":"5","y2":"12"}],["polyline",{"points":"12 19 5 12 12 5"}]];
|
|
15
|
+
readonly defaultAttr = {"fill":"none","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
|
|
16
|
+
@Input() size?: string | number;
|
|
17
|
+
@Input() color?: string;
|
|
18
|
+
@Input() title?: string;
|
|
19
|
+
@Input() className?: string;
|
|
20
|
+
}
|