Skip to content

Commit

Permalink
feat(icons): generate util file with icons list
Browse files Browse the repository at this point in the history
  • Loading branch information
mauriciomutte committed Jul 18, 2023
1 parent ab5c9e9 commit 528e51b
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 4 deletions.
6 changes: 3 additions & 3 deletions apps/docs/stories/1_4_Icons.stories.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Meta, Title, IconGallery, IconItem } from '@storybook/blocks'

import { mdiIconsList, customIconsList } from '../utils/icon-list'
import { iconList } from '../utils/icon-list'

<Meta title="Getting Started/Icons" />

Expand All @@ -11,7 +11,7 @@ The icons library is a collection of icons that can be used in your components.
<details class="icon-gallery">
<summary>Custom Icons</summary>
<IconGallery>
{customIconsList?.map((icon) => (
{iconList.custom.map((icon) => (
<IconItem name={icon}>
<atom-icon icon={icon}></atom-icon>
</IconItem>
Expand All @@ -22,7 +22,7 @@ The icons library is a collection of icons that can be used in your components.
<details class="icon-gallery">
<summary>Material Design Icons</summary>
<IconGallery>
{mdiIconsList?.map((icon) => (
{iconList.mdi?.map((icon) => (
<IconItem name={icon}>
<atom-icon icon={icon}></atom-icon>
</IconItem>
Expand Down
18 changes: 18 additions & 0 deletions apps/docs/utils/icon-list.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export const iconList = {
custom: ['professional-plus'],
mdi: [
'account-multiple-outline',
'account-multiple',
'alert',
'check',
'close-outline',
'close',
'eye-off',
'eye',
'heart-outline',
'heart',
'home-outline',
'home',
'magnify',
],
}
7 changes: 6 additions & 1 deletion packages/icons/scripts/generate-types.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import { readSvgDirectories, writeTypeDefinitionFile } from './helpers.js'
import {
readSvgDirectories,
writeListFile,
writeTypeDefinitionFile,
} from './helpers.js'

function generateTypes() {
console.log(`Generating types...`)
const files = readSvgDirectories()
writeListFile(files)
writeTypeDefinitionFile(files)
}

Expand Down
24 changes: 24 additions & 0 deletions packages/icons/scripts/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,27 @@ export const writeTypeDefinitionFile = (
const typeDef = `export type IconProps = ${types.join('\n | ')};`
fs.writeFileSync(path.join(outputPath, '..', 'icons.d.ts'), typeDef)
}

export const writeListFile = (
svgFiles: string[],
outputPath = getCurrentDirPath()
) => {
const list = svgFiles.reduce((acc, file) => {
const category = path.basename(path.dirname(file))
const name = path.basename(file, '.svg')

if (!acc[category]) {
acc[category] = []
}

acc[category].push(name)

return acc
}, {} as Record<'custom' | 'mdi', string[]>)

const output = `export const iconList = ${JSON.stringify(list)}`
fs.writeFileSync(
path.join(outputPath, '../../../..', 'apps/docs/utils', 'icon-list.ts'),
output
)
}

0 comments on commit 528e51b

Please sign in to comment.