diff --git a/src/components/Icons/bin/bin.astro b/src/components/Icons/bin/bin.astro
new file mode 100644
index 0000000..8490857
--- /dev/null
+++ b/src/components/Icons/bin/bin.astro
@@ -0,0 +1,26 @@
+---
+import bin16 from './svgs/bin-16.svg?raw';
+import bin24 from './svgs/bin-24.svg?raw';
+import bin32 from './svgs/bin-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = bin16;
+else if (size === 24) raw = bin24;
+else if (size === 32) raw = bin32;
+else raw = '';
+
+const classes = ['nds-icon-bin', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/bin/svgs/bin-16.svg b/src/components/Icons/bin/svgs/bin-16.svg
new file mode 100644
index 0000000..9deaee9
--- /dev/null
+++ b/src/components/Icons/bin/svgs/bin-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/bin/svgs/bin-24.svg b/src/components/Icons/bin/svgs/bin-24.svg
new file mode 100644
index 0000000..c572eac
--- /dev/null
+++ b/src/components/Icons/bin/svgs/bin-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/bin/svgs/bin-32.svg b/src/components/Icons/bin/svgs/bin-32.svg
new file mode 100644
index 0000000..559f28e
--- /dev/null
+++ b/src/components/Icons/bin/svgs/bin-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/burger/burger.astro b/src/components/Icons/burger/burger.astro
new file mode 100644
index 0000000..e9a46b4
--- /dev/null
+++ b/src/components/Icons/burger/burger.astro
@@ -0,0 +1,26 @@
+---
+import burger16 from './svgs/burger-16.svg?raw';
+import burger24 from './svgs/burger-24.svg?raw';
+import burger32 from './svgs/burger-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = burger16;
+else if (size === 24) raw = burger24;
+else if (size === 32) raw = burger32;
+else raw = '';
+
+const classes = ['nds-icon-burger', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/burger/svgs/burger-16.svg b/src/components/Icons/burger/svgs/burger-16.svg
new file mode 100644
index 0000000..da069d3
--- /dev/null
+++ b/src/components/Icons/burger/svgs/burger-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/burger/svgs/burger-24.svg b/src/components/Icons/burger/svgs/burger-24.svg
new file mode 100644
index 0000000..298e86d
--- /dev/null
+++ b/src/components/Icons/burger/svgs/burger-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/burger/svgs/burger-32.svg b/src/components/Icons/burger/svgs/burger-32.svg
new file mode 100644
index 0000000..c62382d
--- /dev/null
+++ b/src/components/Icons/burger/svgs/burger-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/calendar/calendar.astro b/src/components/Icons/calendar/calendar.astro
new file mode 100644
index 0000000..5079db2
--- /dev/null
+++ b/src/components/Icons/calendar/calendar.astro
@@ -0,0 +1,26 @@
+---
+import calendar16 from './svgs/calendar-16.svg?raw';
+import calendar24 from './svgs/calendar-24.svg?raw';
+import calendar32 from './svgs/calendar-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = calendar16;
+else if (size === 24) raw = calendar24;
+else if (size === 32) raw = calendar32;
+else raw = '';
+
+const classes = ['nds-icon-calendar', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/calendar/svgs/calendar-16.svg b/src/components/Icons/calendar/svgs/calendar-16.svg
new file mode 100644
index 0000000..38126b1
--- /dev/null
+++ b/src/components/Icons/calendar/svgs/calendar-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/calendar/svgs/calendar-24.svg b/src/components/Icons/calendar/svgs/calendar-24.svg
new file mode 100644
index 0000000..37fdde6
--- /dev/null
+++ b/src/components/Icons/calendar/svgs/calendar-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/calendar/svgs/calendar-32.svg b/src/components/Icons/calendar/svgs/calendar-32.svg
new file mode 100644
index 0000000..5cb2ec7
--- /dev/null
+++ b/src/components/Icons/calendar/svgs/calendar-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/check/check.astro b/src/components/Icons/check/check.astro
new file mode 100644
index 0000000..3b3a234
--- /dev/null
+++ b/src/components/Icons/check/check.astro
@@ -0,0 +1,26 @@
+---
+import check16 from './svgs/check-16.svg?raw';
+import check24 from './svgs/check-24.svg?raw';
+import check32 from './svgs/check-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = check16;
+else if (size === 24) raw = check24;
+else if (size === 32) raw = check32;
+else raw = '';
+
+const classes = ['nds-icon-check', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/check/svgs/check-16.svg b/src/components/Icons/check/svgs/check-16.svg
new file mode 100644
index 0000000..48c612e
--- /dev/null
+++ b/src/components/Icons/check/svgs/check-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/check/svgs/check-24.svg b/src/components/Icons/check/svgs/check-24.svg
new file mode 100644
index 0000000..d2acd8b
--- /dev/null
+++ b/src/components/Icons/check/svgs/check-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/check/svgs/check-32.svg b/src/components/Icons/check/svgs/check-32.svg
new file mode 100644
index 0000000..fe22306
--- /dev/null
+++ b/src/components/Icons/check/svgs/check-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/code/code.astro b/src/components/Icons/code/code.astro
new file mode 100644
index 0000000..0ee8b9c
--- /dev/null
+++ b/src/components/Icons/code/code.astro
@@ -0,0 +1,26 @@
+---
+import code16 from './svgs/code-16.svg?raw';
+import code24 from './svgs/code-24.svg?raw';
+import code32 from './svgs/code-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = code16;
+else if (size === 24) raw = code24;
+else if (size === 32) raw = code32;
+else raw = '';
+
+const classes = ['nds-icon-code', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/code/svgs/code-16.svg b/src/components/Icons/code/svgs/code-16.svg
new file mode 100644
index 0000000..de25b07
--- /dev/null
+++ b/src/components/Icons/code/svgs/code-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/code/svgs/code-24.svg b/src/components/Icons/code/svgs/code-24.svg
new file mode 100644
index 0000000..1c7aa56
--- /dev/null
+++ b/src/components/Icons/code/svgs/code-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/code/svgs/code-32.svg b/src/components/Icons/code/svgs/code-32.svg
new file mode 100644
index 0000000..6e7450f
--- /dev/null
+++ b/src/components/Icons/code/svgs/code-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/cube/cube.astro b/src/components/Icons/cube/cube.astro
new file mode 100644
index 0000000..b061376
--- /dev/null
+++ b/src/components/Icons/cube/cube.astro
@@ -0,0 +1,26 @@
+---
+import cube16 from './svgs/cube-16.svg?raw';
+import cube24 from './svgs/cube-24.svg?raw';
+import cube32 from './svgs/cube-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = cube16;
+else if (size === 24) raw = cube24;
+else if (size === 32) raw = cube32;
+else raw = '';
+
+const classes = ['nds-icon-cube', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/cube/svgs/cube-16.svg b/src/components/Icons/cube/svgs/cube-16.svg
new file mode 100644
index 0000000..a586aa3
--- /dev/null
+++ b/src/components/Icons/cube/svgs/cube-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/cube/svgs/cube-24.svg b/src/components/Icons/cube/svgs/cube-24.svg
new file mode 100644
index 0000000..c44a3d5
--- /dev/null
+++ b/src/components/Icons/cube/svgs/cube-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/cube/svgs/cube-32.svg b/src/components/Icons/cube/svgs/cube-32.svg
new file mode 100644
index 0000000..f6f50f6
--- /dev/null
+++ b/src/components/Icons/cube/svgs/cube-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/download/download.astro b/src/components/Icons/download/download.astro
new file mode 100644
index 0000000..7a296fc
--- /dev/null
+++ b/src/components/Icons/download/download.astro
@@ -0,0 +1,26 @@
+---
+import download16 from './svgs/download-16.svg?raw';
+import download24 from './svgs/download-24.svg?raw';
+import download32 from './svgs/download-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = download16;
+else if (size === 24) raw = download24;
+else if (size === 32) raw = download32;
+else raw = '';
+
+const classes = ['nds-icon-download', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/download/svgs/download-16.svg b/src/components/Icons/download/svgs/download-16.svg
new file mode 100644
index 0000000..45495a9
--- /dev/null
+++ b/src/components/Icons/download/svgs/download-16.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/Icons/download/svgs/download-24.svg b/src/components/Icons/download/svgs/download-24.svg
new file mode 100644
index 0000000..3c136d1
--- /dev/null
+++ b/src/components/Icons/download/svgs/download-24.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/download/svgs/download-32.svg b/src/components/Icons/download/svgs/download-32.svg
new file mode 100644
index 0000000..4529b10
--- /dev/null
+++ b/src/components/Icons/download/svgs/download-32.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/filter/filter.astro b/src/components/Icons/filter/filter.astro
new file mode 100644
index 0000000..1db2490
--- /dev/null
+++ b/src/components/Icons/filter/filter.astro
@@ -0,0 +1,26 @@
+---
+import filter16 from './svgs/filter-16.svg?raw';
+import filter24 from './svgs/filter-24.svg?raw';
+import filter32 from './svgs/filter-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = filter16;
+else if (size === 24) raw = filter24;
+else if (size === 32) raw = filter32;
+else raw = '';
+
+const classes = ['nds-icon-filter', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/filter/svgs/filter-16.svg b/src/components/Icons/filter/svgs/filter-16.svg
new file mode 100644
index 0000000..82f22aa
--- /dev/null
+++ b/src/components/Icons/filter/svgs/filter-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/filter/svgs/filter-24.svg b/src/components/Icons/filter/svgs/filter-24.svg
new file mode 100644
index 0000000..f4cf108
--- /dev/null
+++ b/src/components/Icons/filter/svgs/filter-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/filter/svgs/filter-32.svg b/src/components/Icons/filter/svgs/filter-32.svg
new file mode 100644
index 0000000..ff53e7e
--- /dev/null
+++ b/src/components/Icons/filter/svgs/filter-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/help/help.astro b/src/components/Icons/help/help.astro
new file mode 100644
index 0000000..2cad781
--- /dev/null
+++ b/src/components/Icons/help/help.astro
@@ -0,0 +1,26 @@
+---
+import help16 from './svgs/help-16.svg?raw';
+import help24 from './svgs/help-24.svg?raw';
+import help32 from './svgs/help-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = help16;
+else if (size === 24) raw = help24;
+else if (size === 32) raw = help32;
+else raw = '';
+
+const classes = ['nds-icon-help', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/help/svgs/help-16.svg b/src/components/Icons/help/svgs/help-16.svg
new file mode 100644
index 0000000..cc67d22
--- /dev/null
+++ b/src/components/Icons/help/svgs/help-16.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/Icons/help/svgs/help-24.svg b/src/components/Icons/help/svgs/help-24.svg
new file mode 100644
index 0000000..bf21f37
--- /dev/null
+++ b/src/components/Icons/help/svgs/help-24.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/Icons/help/svgs/help-32.svg b/src/components/Icons/help/svgs/help-32.svg
new file mode 100644
index 0000000..8fc9e5f
--- /dev/null
+++ b/src/components/Icons/help/svgs/help-32.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/Icons/home/home.astro b/src/components/Icons/home/home.astro
new file mode 100644
index 0000000..e0cca17
--- /dev/null
+++ b/src/components/Icons/home/home.astro
@@ -0,0 +1,26 @@
+---
+import home16 from './svgs/home-16.svg?raw';
+import home24 from './svgs/home-24.svg?raw';
+import home32 from './svgs/home-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = home16;
+else if (size === 24) raw = home24;
+else if (size === 32) raw = home32;
+else raw = '';
+
+const classes = ['nds-icon-home', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/home/svgs/home-16.svg b/src/components/Icons/home/svgs/home-16.svg
new file mode 100644
index 0000000..35fb4b3
--- /dev/null
+++ b/src/components/Icons/home/svgs/home-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/home/svgs/home-24.svg b/src/components/Icons/home/svgs/home-24.svg
new file mode 100644
index 0000000..5b20383
--- /dev/null
+++ b/src/components/Icons/home/svgs/home-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/home/svgs/home-32.svg b/src/components/Icons/home/svgs/home-32.svg
new file mode 100644
index 0000000..5a31466
--- /dev/null
+++ b/src/components/Icons/home/svgs/home-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/index.ts b/src/components/Icons/index.ts
index c4360ee..8bf50ba 100644
--- a/src/components/Icons/index.ts
+++ b/src/components/Icons/index.ts
@@ -1,6 +1,25 @@
-export { default as Arrow2Icon } from './Arrow2/Arrow2.astro';
-export { default as ProfileIcon } from './profile/profile.astro';
-export { default as ShareIcon } from './share/share.astro';
-export { default as SearchIcon } from './search/search.astro';
-export { default as CloseIcon } from './close/close.astro';
-export { default as UploadIcon } from './upload/upload.astro';
\ No newline at end of file
+export { default as Arrow2Icon } from './Arrow2/Arrow2.astro';
+export { default as BinIcon } from './bin/bin.astro';
+export { default as BurgerIcon } from './burger/burger.astro';
+export { default as CalendarIcon } from './calendar/calendar.astro';
+export { default as CheckIcon } from './check/check.astro';
+export { default as CloseIcon } from './close/close.astro';
+export { default as CodeIcon } from './code/code.astro';
+export { default as CubeIcon } from './cube/cube.astro';
+export { default as DownloadIcon } from './download/download.astro';
+export { default as FilterIcon } from './filter/filter.astro';
+export { default as HelpIcon } from './help/help.astro';
+export { default as HomeIcon } from './home/home.astro';
+export { default as LinkIcon } from './link/link.astro';
+export { default as MinusIcon } from './minus/minus.astro';
+export { default as MoreIcon } from './more/more.astro';
+export { default as OverviewIcon } from './overview/overview.astro';
+export { default as PlusIcon } from './plus/plus.astro';
+export { default as ProfileIcon } from './profile/profile.astro';
+export { default as SearchIcon } from './search/search.astro';
+export { default as SettingsIcon } from './settings/settings.astro';
+export { default as ShareIcon } from './share/share.astro';
+export { default as ShieldIcon } from './shield/shield.astro';
+export { default as SortIcon } from './sort/sort.astro';
+export { default as StatsIcon } from './stats/stats.astro';
+export { default as UploadIcon } from './upload/upload.astro';
diff --git a/src/components/Icons/link/link.astro b/src/components/Icons/link/link.astro
new file mode 100644
index 0000000..96207b9
--- /dev/null
+++ b/src/components/Icons/link/link.astro
@@ -0,0 +1,26 @@
+---
+import link16 from './svgs/link-16.svg?raw';
+import link24 from './svgs/link-24.svg?raw';
+import link32 from './svgs/link-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = link16;
+else if (size === 24) raw = link24;
+else if (size === 32) raw = link32;
+else raw = '';
+
+const classes = ['nds-icon-link', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/link/svgs/link-16.svg b/src/components/Icons/link/svgs/link-16.svg
new file mode 100644
index 0000000..c671d47
--- /dev/null
+++ b/src/components/Icons/link/svgs/link-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/link/svgs/link-24.svg b/src/components/Icons/link/svgs/link-24.svg
new file mode 100644
index 0000000..638588e
--- /dev/null
+++ b/src/components/Icons/link/svgs/link-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/link/svgs/link-32.svg b/src/components/Icons/link/svgs/link-32.svg
new file mode 100644
index 0000000..81472fe
--- /dev/null
+++ b/src/components/Icons/link/svgs/link-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/minus/minus.astro b/src/components/Icons/minus/minus.astro
new file mode 100644
index 0000000..375c308
--- /dev/null
+++ b/src/components/Icons/minus/minus.astro
@@ -0,0 +1,26 @@
+---
+import minus16 from './svgs/minus-16.svg?raw';
+import minus24 from './svgs/minus-24.svg?raw';
+import minus32 from './svgs/minus-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = minus16;
+else if (size === 24) raw = minus24;
+else if (size === 32) raw = minus32;
+else raw = '';
+
+const classes = ['nds-icon-minus', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/minus/svgs/minus-16.svg b/src/components/Icons/minus/svgs/minus-16.svg
new file mode 100644
index 0000000..6059b5f
--- /dev/null
+++ b/src/components/Icons/minus/svgs/minus-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/minus/svgs/minus-24.svg b/src/components/Icons/minus/svgs/minus-24.svg
new file mode 100644
index 0000000..ea66d61
--- /dev/null
+++ b/src/components/Icons/minus/svgs/minus-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/minus/svgs/minus-32.svg b/src/components/Icons/minus/svgs/minus-32.svg
new file mode 100644
index 0000000..c4477d7
--- /dev/null
+++ b/src/components/Icons/minus/svgs/minus-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/more/more.astro b/src/components/Icons/more/more.astro
new file mode 100644
index 0000000..ff60dab
--- /dev/null
+++ b/src/components/Icons/more/more.astro
@@ -0,0 +1,26 @@
+---
+import more16 from './svgs/more-16.svg?raw';
+import more24 from './svgs/more-24.svg?raw';
+import more32 from './svgs/more-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = more16;
+else if (size === 24) raw = more24;
+else if (size === 32) raw = more32;
+else raw = '';
+
+const classes = ['nds-icon-more', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/more/svgs/more-16.svg b/src/components/Icons/more/svgs/more-16.svg
new file mode 100644
index 0000000..f96b639
--- /dev/null
+++ b/src/components/Icons/more/svgs/more-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/more/svgs/more-24.svg b/src/components/Icons/more/svgs/more-24.svg
new file mode 100644
index 0000000..60664c7
--- /dev/null
+++ b/src/components/Icons/more/svgs/more-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/more/svgs/more-32.svg b/src/components/Icons/more/svgs/more-32.svg
new file mode 100644
index 0000000..3dc82da
--- /dev/null
+++ b/src/components/Icons/more/svgs/more-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/overview/overview.astro b/src/components/Icons/overview/overview.astro
new file mode 100644
index 0000000..c8001ae
--- /dev/null
+++ b/src/components/Icons/overview/overview.astro
@@ -0,0 +1,26 @@
+---
+import overview16 from './svgs/overview-16.svg?raw';
+import overview24 from './svgs/overview-24.svg?raw';
+import overview32 from './svgs/overview-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = overview16;
+else if (size === 24) raw = overview24;
+else if (size === 32) raw = overview32;
+else raw = '';
+
+const classes = ['nds-icon-overview', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/overview/svgs/overview-16.svg b/src/components/Icons/overview/svgs/overview-16.svg
new file mode 100644
index 0000000..7cdb428
--- /dev/null
+++ b/src/components/Icons/overview/svgs/overview-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/overview/svgs/overview-24.svg b/src/components/Icons/overview/svgs/overview-24.svg
new file mode 100644
index 0000000..0a4614e
--- /dev/null
+++ b/src/components/Icons/overview/svgs/overview-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/overview/svgs/overview-32.svg b/src/components/Icons/overview/svgs/overview-32.svg
new file mode 100644
index 0000000..82e3a7a
--- /dev/null
+++ b/src/components/Icons/overview/svgs/overview-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/plus/plus.astro b/src/components/Icons/plus/plus.astro
new file mode 100644
index 0000000..8612d8e
--- /dev/null
+++ b/src/components/Icons/plus/plus.astro
@@ -0,0 +1,26 @@
+---
+import plus16 from './svgs/plus-16.svg?raw';
+import plus24 from './svgs/plus-24.svg?raw';
+import plus32 from './svgs/plus-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = plus16;
+else if (size === 24) raw = plus24;
+else if (size === 32) raw = plus32;
+else raw = '';
+
+const classes = ['nds-icon-plus', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/plus/svgs/plus-16.svg b/src/components/Icons/plus/svgs/plus-16.svg
new file mode 100644
index 0000000..755b703
--- /dev/null
+++ b/src/components/Icons/plus/svgs/plus-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/plus/svgs/plus-24.svg b/src/components/Icons/plus/svgs/plus-24.svg
new file mode 100644
index 0000000..cdecb09
--- /dev/null
+++ b/src/components/Icons/plus/svgs/plus-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/plus/svgs/plus-32.svg b/src/components/Icons/plus/svgs/plus-32.svg
new file mode 100644
index 0000000..d16c010
--- /dev/null
+++ b/src/components/Icons/plus/svgs/plus-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/settings/settings.astro b/src/components/Icons/settings/settings.astro
new file mode 100644
index 0000000..4545c1e
--- /dev/null
+++ b/src/components/Icons/settings/settings.astro
@@ -0,0 +1,26 @@
+---
+import settings16 from './svgs/settings-16.svg?raw';
+import settings24 from './svgs/settings-24.svg?raw';
+import settings32 from './svgs/settings-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = settings16;
+else if (size === 24) raw = settings24;
+else if (size === 32) raw = settings32;
+else raw = '';
+
+const classes = ['nds-icon-settings', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/settings/svgs/settings-16.svg b/src/components/Icons/settings/svgs/settings-16.svg
new file mode 100644
index 0000000..5e95204
--- /dev/null
+++ b/src/components/Icons/settings/svgs/settings-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/settings/svgs/settings-24.svg b/src/components/Icons/settings/svgs/settings-24.svg
new file mode 100644
index 0000000..f121a19
--- /dev/null
+++ b/src/components/Icons/settings/svgs/settings-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/settings/svgs/settings-32.svg b/src/components/Icons/settings/svgs/settings-32.svg
new file mode 100644
index 0000000..39283cc
--- /dev/null
+++ b/src/components/Icons/settings/svgs/settings-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/shield/shield.astro b/src/components/Icons/shield/shield.astro
new file mode 100644
index 0000000..608e46d
--- /dev/null
+++ b/src/components/Icons/shield/shield.astro
@@ -0,0 +1,26 @@
+---
+import shield16 from './svgs/shield-16.svg?raw';
+import shield24 from './svgs/shield-24.svg?raw';
+import shield32 from './svgs/shield-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = shield16;
+else if (size === 24) raw = shield24;
+else if (size === 32) raw = shield32;
+else raw = '';
+
+const classes = ['nds-icon-shield', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/shield/svgs/shield-16.svg b/src/components/Icons/shield/svgs/shield-16.svg
new file mode 100644
index 0000000..6c5b265
--- /dev/null
+++ b/src/components/Icons/shield/svgs/shield-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/shield/svgs/shield-24.svg b/src/components/Icons/shield/svgs/shield-24.svg
new file mode 100644
index 0000000..d43926e
--- /dev/null
+++ b/src/components/Icons/shield/svgs/shield-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/shield/svgs/shield-32.svg b/src/components/Icons/shield/svgs/shield-32.svg
new file mode 100644
index 0000000..ec165a6
--- /dev/null
+++ b/src/components/Icons/shield/svgs/shield-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/sort/sort.astro b/src/components/Icons/sort/sort.astro
new file mode 100644
index 0000000..26774af
--- /dev/null
+++ b/src/components/Icons/sort/sort.astro
@@ -0,0 +1,39 @@
+---
+import sort16ascend from './svgs/sort-16-ascend.svg?raw';
+import sort16default from './svgs/sort-16-default.svg?raw';
+import sort16descend from './svgs/sort-16-descend.svg?raw';
+import sort24ascend from './svgs/sort-24-ascend.svg?raw';
+import sort24default from './svgs/sort-24-default.svg?raw';
+import sort24descend from './svgs/sort-24-descend.svg?raw';
+import sort32ascend from './svgs/sort-32-ascend.svg?raw';
+import sort32default from './svgs/sort-32-default.svg?raw';
+import sort32descend from './svgs/sort-32-descend.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ variant: 'ascend' | 'default' | 'descend';
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, variant = 'default', label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16 && variant === 'ascend') raw = sort16ascend;
+else if (size === 16 && variant === 'default') raw = sort16default;
+else if (size === 16 && variant === 'descend') raw = sort16descend;
+else if (size === 24 && variant === 'ascend') raw = sort24ascend;
+else if (size === 24 && variant === 'default') raw = sort24default;
+else if (size === 24 && variant === 'descend') raw = sort24descend;
+else if (size === 32 && variant === 'ascend') raw = sort32ascend;
+else if (size === 32 && variant === 'default') raw = sort32default;
+else if (size === 32 && variant === 'descend') raw = sort32descend;
+else raw = '';
+
+const classes = ['nds-icon-sort', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/sort/svgs/sort-16-ascend.svg b/src/components/Icons/sort/svgs/sort-16-ascend.svg
new file mode 100644
index 0000000..4ce50cb
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-16-ascend.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-16-default.svg b/src/components/Icons/sort/svgs/sort-16-default.svg
new file mode 100644
index 0000000..5c3107b
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-16-default.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-16-descend.svg b/src/components/Icons/sort/svgs/sort-16-descend.svg
new file mode 100644
index 0000000..bfd1469
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-16-descend.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-24-ascend.svg b/src/components/Icons/sort/svgs/sort-24-ascend.svg
new file mode 100644
index 0000000..708fcfa
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-24-ascend.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-24-default.svg b/src/components/Icons/sort/svgs/sort-24-default.svg
new file mode 100644
index 0000000..f5d4cc7
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-24-default.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-24-descend.svg b/src/components/Icons/sort/svgs/sort-24-descend.svg
new file mode 100644
index 0000000..092fe9c
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-24-descend.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-32-ascend.svg b/src/components/Icons/sort/svgs/sort-32-ascend.svg
new file mode 100644
index 0000000..5d067eb
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-32-ascend.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-32-default.svg b/src/components/Icons/sort/svgs/sort-32-default.svg
new file mode 100644
index 0000000..57e4b89
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-32-default.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/sort/svgs/sort-32-descend.svg b/src/components/Icons/sort/svgs/sort-32-descend.svg
new file mode 100644
index 0000000..916fb74
--- /dev/null
+++ b/src/components/Icons/sort/svgs/sort-32-descend.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/Icons/stats/stats.astro b/src/components/Icons/stats/stats.astro
new file mode 100644
index 0000000..99e95e6
--- /dev/null
+++ b/src/components/Icons/stats/stats.astro
@@ -0,0 +1,26 @@
+---
+import stats16 from './svgs/stats-16.svg?raw';
+import stats24 from './svgs/stats-24.svg?raw';
+import stats32 from './svgs/stats-32.svg?raw';
+
+export interface Props {
+ size: 16 | 24 | 32;
+ label?: string;
+ class?: string;
+}
+
+const { size = 24, label, class: className } = Astro.props;
+
+let raw: string;
+if (size === 16) raw = stats16;
+else if (size === 24) raw = stats24;
+else if (size === 32) raw = stats32;
+else raw = '';
+
+const classes = ['nds-icon-stats', className].filter(Boolean).join(' ');
+const svg = raw
+ .replace(/fill="#[A-Fa-f0-9]{3,8}"/g, 'fill="currentColor"')
+ .replace('
diff --git a/src/components/Icons/stats/svgs/stats-16.svg b/src/components/Icons/stats/svgs/stats-16.svg
new file mode 100644
index 0000000..f6a8e54
--- /dev/null
+++ b/src/components/Icons/stats/svgs/stats-16.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/stats/svgs/stats-24.svg b/src/components/Icons/stats/svgs/stats-24.svg
new file mode 100644
index 0000000..c5455ba
--- /dev/null
+++ b/src/components/Icons/stats/svgs/stats-24.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/stats/svgs/stats-32.svg b/src/components/Icons/stats/svgs/stats-32.svg
new file mode 100644
index 0000000..dc0b06a
--- /dev/null
+++ b/src/components/Icons/stats/svgs/stats-32.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
index ca4c8b2..8eb774d 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -1,6 +1,12 @@
---
import Layout from '../layouts/Layout.astro';
-import { Arrow2Icon, ProfileIcon, ShareIcon, SearchIcon, CloseIcon, UploadIcon } from '../components/Icons/index.ts';
+import {
+ Arrow2Icon, BinIcon, BurgerIcon, CalendarIcon, CheckIcon, CloseIcon,
+ CodeIcon, CubeIcon, DownloadIcon, FilterIcon, HelpIcon, HomeIcon,
+ LinkIcon, MinusIcon, MoreIcon, OverviewIcon, PlusIcon, ProfileIcon,
+ SearchIcon, SettingsIcon, ShareIcon, ShieldIcon, SortIcon, StatsIcon,
+ UploadIcon,
+} from '../components/Icons/index.ts';
---
@@ -52,6 +58,107 @@ import { Arrow2Icon, ProfileIcon, ShareIcon, SearchIcon, CloseIcon, UploadIcon }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+