diff --git a/.changeset/gentle-rivers-perform.md b/.changeset/gentle-rivers-perform.md new file mode 100644 index 00000000000..283931f2d52 --- /dev/null +++ b/.changeset/gentle-rivers-perform.md @@ -0,0 +1,19 @@ +--- +'braid-design-system': patch +--- + +--- +updated: + - IconNote + - IconResume + - IconDocument + - IconDocumentBroken + - IconHeart +--- + +Update the following icon assets: + - `IconNote` + - `IconResume` + - `IconDocument` + - `IconDocumentBroken` + - `IconHeart` diff --git a/.changeset/wild-moose-switch.md b/.changeset/wild-moose-switch.md new file mode 100644 index 00000000000..36342e91053 --- /dev/null +++ b/.changeset/wild-moose-switch.md @@ -0,0 +1,19 @@ +--- +'braid-design-system': minor +--- + +--- +new: + - IconCoverLetter + - IconChecklist + - IconDisallow + - IconBluetooth + - IconQR +--- + +Add new icons to the library + - `IconCoverLetter` + - `IconChecklist` + - `IconDisallow` + - `IconBluetooth` + - `IconQR` diff --git a/packages/braid-design-system/icons/QR.svg b/packages/braid-design-system/icons/QR.svg new file mode 100644 index 00000000000..39a5d74d24b --- /dev/null +++ b/packages/braid-design-system/icons/QR.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/braid-design-system/icons/bluetooth.svg b/packages/braid-design-system/icons/bluetooth.svg new file mode 100644 index 00000000000..f4edd005c4c --- /dev/null +++ b/packages/braid-design-system/icons/bluetooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/braid-design-system/icons/checklist.svg b/packages/braid-design-system/icons/checklist.svg new file mode 100644 index 00000000000..2c9185b1dfc --- /dev/null +++ b/packages/braid-design-system/icons/checklist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/braid-design-system/icons/coverLetter.svg b/packages/braid-design-system/icons/coverLetter.svg new file mode 100644 index 00000000000..6f6c8349944 --- /dev/null +++ b/packages/braid-design-system/icons/coverLetter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/braid-design-system/icons/disallow.svg b/packages/braid-design-system/icons/disallow.svg new file mode 100644 index 00000000000..21e1f208133 --- /dev/null +++ b/packages/braid-design-system/icons/disallow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/braid-design-system/icons/document.svg b/packages/braid-design-system/icons/document.svg index 9ceb1241238..c9e18feee7b 100644 --- a/packages/braid-design-system/icons/document.svg +++ b/packages/braid-design-system/icons/document.svg @@ -1,13 +1 @@ - - - -SeekIconTemplate24px_03 - - - - - - + \ No newline at end of file diff --git a/packages/braid-design-system/icons/documentBroken.svg b/packages/braid-design-system/icons/documentBroken.svg index 2f1930ce946..f2860044d3b 100644 --- a/packages/braid-design-system/icons/documentBroken.svg +++ b/packages/braid-design-system/icons/documentBroken.svg @@ -1,14 +1 @@ - - SeekIconTemplate24px_03_outline - - - - - - - - - - - - + \ No newline at end of file diff --git a/packages/braid-design-system/icons/heart-active.svg b/packages/braid-design-system/icons/heart-active.svg index f301cb3b395..4070d781a49 100644 --- a/packages/braid-design-system/icons/heart-active.svg +++ b/packages/braid-design-system/icons/heart-active.svg @@ -1,8 +1 @@ - - - -SeekIconTemplate24px_03 - - + \ No newline at end of file diff --git a/packages/braid-design-system/icons/heart.svg b/packages/braid-design-system/icons/heart.svg index 4b74d4e8c89..f7cb039a761 100644 --- a/packages/braid-design-system/icons/heart.svg +++ b/packages/braid-design-system/icons/heart.svg @@ -1,10 +1 @@ - - - -SeekIconTemplate24px_03 - - + \ No newline at end of file diff --git a/packages/braid-design-system/icons/note.svg b/packages/braid-design-system/icons/note.svg index 7158a2ea214..d168648b2bc 100644 --- a/packages/braid-design-system/icons/note.svg +++ b/packages/braid-design-system/icons/note.svg @@ -1,13 +1 @@ - - - -SeekIconTemplate24px_03 - - - - - - + \ No newline at end of file diff --git a/packages/braid-design-system/icons/resume.svg b/packages/braid-design-system/icons/resume.svg index 0147974d8ac..9800a8af257 100644 --- a/packages/braid-design-system/icons/resume.svg +++ b/packages/braid-design-system/icons/resume.svg @@ -1,13 +1 @@ - - - -SeekIconTemplate24px_03 - - - - - - - + \ No newline at end of file diff --git a/packages/braid-design-system/src/lib/components/icons/IconBluetooth/IconBluetooth.docs.tsx b/packages/braid-design-system/src/lib/components/icons/IconBluetooth/IconBluetooth.docs.tsx new file mode 100644 index 00000000000..1f23c9076ac --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconBluetooth/IconBluetooth.docs.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import type { ComponentDocs } from 'site/types'; +import { iconDocumentation } from '../iconCommon.docs'; +import source from '@braid-design-system/source.macro'; +import { IconBluetooth, Heading, Stack } from '../../'; + +const docs: ComponentDocs = { + category: 'Icon', + Example: () => + source( + + + + + , + ), + alternatives: [], + additional: [iconDocumentation], +}; + +export default docs; diff --git a/packages/braid-design-system/src/lib/components/icons/IconBluetooth/IconBluetooth.tsx b/packages/braid-design-system/src/lib/components/icons/IconBluetooth/IconBluetooth.tsx new file mode 100644 index 00000000000..bab8b91c566 --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconBluetooth/IconBluetooth.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Box } from '../../Box/Box'; +import { IconContainer, type IconContainerProps } from '../IconContainer'; +import { IconBluetoothSvg } from './IconBluetoothSvg'; + +export type IconBluetoothProps = IconContainerProps; + +export const IconBluetooth = (props: IconBluetoothProps) => ( + + {(svgProps) => } + +); diff --git a/packages/braid-design-system/src/lib/components/icons/IconChecklist/IconChecklist.docs.tsx b/packages/braid-design-system/src/lib/components/icons/IconChecklist/IconChecklist.docs.tsx new file mode 100644 index 00000000000..27eb6afc0ad --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconChecklist/IconChecklist.docs.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import type { ComponentDocs } from 'site/types'; +import { iconDocumentation } from '../iconCommon.docs'; +import source from '@braid-design-system/source.macro'; +import { IconChecklist, Heading, Stack } from '../../'; + +const docs: ComponentDocs = { + category: 'Icon', + Example: () => + source( + + + + + , + ), + alternatives: [], + additional: [iconDocumentation], +}; + +export default docs; diff --git a/packages/braid-design-system/src/lib/components/icons/IconChecklist/IconChecklist.tsx b/packages/braid-design-system/src/lib/components/icons/IconChecklist/IconChecklist.tsx new file mode 100644 index 00000000000..c2452b6d26a --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconChecklist/IconChecklist.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Box } from '../../Box/Box'; +import { IconContainer, type IconContainerProps } from '../IconContainer'; +import { IconChecklistSvg } from './IconChecklistSvg'; + +export type IconChecklistProps = IconContainerProps; + +export const IconChecklist = (props: IconChecklistProps) => ( + + {(svgProps) => } + +); diff --git a/packages/braid-design-system/src/lib/components/icons/IconCoverLetter/IconCoverLetter.docs.tsx b/packages/braid-design-system/src/lib/components/icons/IconCoverLetter/IconCoverLetter.docs.tsx new file mode 100644 index 00000000000..2cddfd69f42 --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconCoverLetter/IconCoverLetter.docs.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import type { ComponentDocs } from 'site/types'; +import { iconDocumentation } from '../iconCommon.docs'; +import source from '@braid-design-system/source.macro'; +import { IconCoverLetter, Heading, Stack } from '../../'; + +const docs: ComponentDocs = { + category: 'Icon', + Example: () => + source( + + + + + , + ), + alternatives: [], + additional: [iconDocumentation], +}; + +export default docs; diff --git a/packages/braid-design-system/src/lib/components/icons/IconCoverLetter/IconCoverLetter.tsx b/packages/braid-design-system/src/lib/components/icons/IconCoverLetter/IconCoverLetter.tsx new file mode 100644 index 00000000000..3c9bc32d90c --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconCoverLetter/IconCoverLetter.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Box } from '../../Box/Box'; +import { IconContainer, type IconContainerProps } from '../IconContainer'; +import { IconCoverLetterSvg } from './IconCoverLetterSvg'; + +export type IconCoverLetterProps = IconContainerProps; + +export const IconCoverLetter = (props: IconCoverLetterProps) => ( + + {(svgProps) => } + +); diff --git a/packages/braid-design-system/src/lib/components/icons/IconDisallow/IconDisallow.docs.tsx b/packages/braid-design-system/src/lib/components/icons/IconDisallow/IconDisallow.docs.tsx new file mode 100644 index 00000000000..f7c17d9735a --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconDisallow/IconDisallow.docs.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import type { ComponentDocs } from 'site/types'; +import { iconDocumentation } from '../iconCommon.docs'; +import source from '@braid-design-system/source.macro'; +import { IconDisallow, Heading, Stack } from '../../'; + +const docs: ComponentDocs = { + category: 'Icon', + Example: () => + source( + + + + + , + ), + alternatives: [], + additional: [iconDocumentation], +}; + +export default docs; diff --git a/packages/braid-design-system/src/lib/components/icons/IconDisallow/IconDisallow.tsx b/packages/braid-design-system/src/lib/components/icons/IconDisallow/IconDisallow.tsx new file mode 100644 index 00000000000..ef955aff57a --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconDisallow/IconDisallow.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Box } from '../../Box/Box'; +import { IconContainer, type IconContainerProps } from '../IconContainer'; +import { IconDisallowSvg } from './IconDisallowSvg'; + +export type IconDisallowProps = IconContainerProps; + +export const IconDisallow = (props: IconDisallowProps) => ( + + {(svgProps) => } + +); diff --git a/packages/braid-design-system/src/lib/components/icons/IconQR/IconQR.docs.tsx b/packages/braid-design-system/src/lib/components/icons/IconQR/IconQR.docs.tsx new file mode 100644 index 00000000000..ba976049cad --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconQR/IconQR.docs.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import type { ComponentDocs } from 'site/types'; +import { iconDocumentation } from '../iconCommon.docs'; +import source from '@braid-design-system/source.macro'; +import { IconQR, Heading, Stack } from '../../'; + +const docs: ComponentDocs = { + category: 'Icon', + Example: () => + source( + + + + + , + ), + alternatives: [], + additional: [iconDocumentation], +}; + +export default docs; diff --git a/packages/braid-design-system/src/lib/components/icons/IconQR/IconQR.tsx b/packages/braid-design-system/src/lib/components/icons/IconQR/IconQR.tsx new file mode 100644 index 00000000000..5597f7b8e51 --- /dev/null +++ b/packages/braid-design-system/src/lib/components/icons/IconQR/IconQR.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Box } from '../../Box/Box'; +import { IconContainer, type IconContainerProps } from '../IconContainer'; +import { IconQRSvg } from './IconQRSvg'; + +export type IconQRProps = IconContainerProps; + +export const IconQR = (props: IconQRProps) => ( + + {(svgProps) => } + +); diff --git a/packages/braid-design-system/src/lib/components/icons/__snapshots__/icons.test.ts.snap b/packages/braid-design-system/src/lib/components/icons/__snapshots__/icons.test.ts.snap index 01384cb13db..0fbf5cff79d 100644 --- a/packages/braid-design-system/src/lib/components/icons/__snapshots__/icons.test.ts.snap +++ b/packages/braid-design-system/src/lib/components/icons/__snapshots__/icons.test.ts.snap @@ -98,6 +98,29 @@ export const IconAttachmentSvg = ({ title, titleId, ...props }: SVGProps) => ( " `; +exports[`IconBluetoothSvg should match snapshot 1`] = ` +"import React from 'react'; + +import type { SVGProps } from '../SVGTypes'; + +export const IconBluetoothSvg = ({ title, titleId, ...props }: SVGProps) => ( + + {title ? {title} : null} + + +); +" +`; + exports[`IconBookmarkActiveSvg should match snapshot 1`] = ` "import React from 'react'; @@ -246,6 +269,29 @@ export const IconCautionSvg = ({ title, titleId, ...props }: SVGProps) => ( " `; +exports[`IconChecklistSvg should match snapshot 1`] = ` +"import React from 'react'; + +import type { SVGProps } from '../SVGTypes'; + +export const IconChecklistSvg = ({ title, titleId, ...props }: SVGProps) => ( + + {title ? {title} : null} + + +); +" +`; + exports[`IconChevronSvg should match snapshot 1`] = ` "import React from 'react'; @@ -369,6 +415,36 @@ export const IconCopySvg = ({ title, titleId, ...props }: SVGProps) => ( " `; +exports[`IconCoverLetterSvg should match snapshot 1`] = ` +"import React from 'react'; + +import type { SVGProps } from '../SVGTypes'; + +export const IconCoverLetterSvg = ({ title, titleId, ...props }: SVGProps) => ( + + {title ? {title} : null} + + + + + + +); +" +`; + exports[`IconCreditCardSvg should match snapshot 1`] = ` "import React from 'react'; @@ -491,6 +567,29 @@ export const IconDesktopSvg = ({ title, titleId, ...props }: SVGProps) => ( " `; +exports[`IconDisallowSvg should match snapshot 1`] = ` +"import React from 'react'; + +import type { SVGProps } from '../SVGTypes'; + +export const IconDisallowSvg = ({ title, titleId, ...props }: SVGProps) => ( + + {title ? {title} : null} + + +); +" +`; + exports[`IconDocumentBrokenSvg should match snapshot 1`] = ` "import React from 'react'; @@ -503,18 +602,17 @@ export const IconDocumentBrokenSvg = ({ }: SVGProps) => ( {title ? {title} : null} - - - + + ); " @@ -529,7 +627,6 @@ export const IconDocumentSvg = ({ title, titleId, ...props }: SVGProps) => ( ( {...props} > {title ? {title} : null} - - + + ); " @@ -839,7 +936,6 @@ export const IconHeartActiveSvg = ({ title, titleId, ...props }: SVGProps) => ( ( {...props} > {title ? {title} : null} - + ); " @@ -863,7 +959,6 @@ export const IconHeartSvg = ({ title, titleId, ...props }: SVGProps) => ( ( {...props} > {title ? {title} : null} - + ); " @@ -1340,7 +1435,6 @@ export const IconNoteSvg = ({ title, titleId, ...props }: SVGProps) => ( ( {...props} > {title ? {title} : null} - - + ); " @@ -1653,6 +1746,37 @@ export const IconPromoteSvg = ({ title, titleId, ...props }: SVGProps) => ( " `; +exports[`IconQRSvg should match snapshot 1`] = ` +"import React from 'react'; + +import type { SVGProps } from '../SVGTypes'; + +export const IconQRSvg = ({ title, titleId, ...props }: SVGProps) => ( + + {title ? {title} : null} + + + + + + + + + + +); +" +`; + exports[`IconRecommendedSvg should match snapshot 1`] = ` "import React from 'react'; @@ -1709,7 +1833,6 @@ export const IconResumeSvg = ({ title, titleId, ...props }: SVGProps) => ( ( {...props} > {title ? {title} : null} - - - + + + ); " diff --git a/packages/braid-design-system/src/lib/components/icons/index.ts b/packages/braid-design-system/src/lib/components/icons/index.ts index 03fba9e959a..b6df6f234ea 100644 --- a/packages/braid-design-system/src/lib/components/icons/index.ts +++ b/packages/braid-design-system/src/lib/components/icons/index.ts @@ -2,20 +2,24 @@ export { IconAI } from './IconAI/IconAI'; export { IconAdd } from './IconAdd/IconAdd'; export { IconArrow } from './IconArrow/IconArrow'; export { IconAttachment } from './IconAttachment/IconAttachment'; +export { IconBluetooth } from './IconBluetooth/IconBluetooth'; export { IconBookmark } from './IconBookmark/IconBookmark'; export { IconCareer } from './IconCareer/IconCareer'; export { IconCategory } from './IconCategory/IconCategory'; export { IconCaution } from './IconCaution/IconCaution'; +export { IconChecklist } from './IconChecklist/IconChecklist'; export { IconChevron } from './IconChevron/IconChevron'; export { IconClear } from './IconClear/IconClear'; export { IconCompany } from './IconCompany/IconCompany'; export { IconCompose } from './IconCompose/IconCompose'; export { IconCopy } from './IconCopy/IconCopy'; +export { IconCoverLetter } from './IconCoverLetter/IconCoverLetter'; export { IconCreditCard } from './IconCreditCard/IconCreditCard'; export { IconCritical } from './IconCritical/IconCritical'; export { IconDate } from './IconDate/IconDate'; export { IconDelete } from './IconDelete/IconDelete'; export { IconDesktop } from './IconDesktop/IconDesktop'; +export { IconDisallow } from './IconDisallow/IconDisallow'; export { IconDocument } from './IconDocument/IconDocument'; export { IconDocumentBroken } from './IconDocumentBroken/IconDocumentBroken'; export { IconDownload } from './IconDownload/IconDownload'; @@ -61,6 +65,7 @@ export { IconPositive } from './IconPositive/IconPositive'; export { IconPrint } from './IconPrint/IconPrint'; export { IconProfile } from './IconProfile/IconProfile'; export { IconPromote } from './IconPromote/IconPromote'; +export { IconQR } from './IconQR/IconQR'; export { IconRecommended } from './IconRecommended/IconRecommended'; export { IconRefresh } from './IconRefresh/IconRefresh'; export { IconResume } from './IconResume/IconResume'; diff --git a/packages/generate-component-docs/src/__snapshots__/contract.test.ts.snap b/packages/generate-component-docs/src/__snapshots__/contract.test.ts.snap index fc8ceed3277..b475df0574a 100644 --- a/packages/generate-component-docs/src/__snapshots__/contract.test.ts.snap +++ b/packages/generate-component-docs/src/__snapshots__/contract.test.ts.snap @@ -3644,6 +3644,37 @@ exports[`IconAttachment 1`] = ` } `; +exports[`IconBluetooth 1`] = ` +{ + exportType: component, + props: { + alignY?: + | "lowercase" + | "uppercase" + data?: DataAttributeMap + size?: + | "fill" + | "large" + | "small" + | "standard" + | "xsmall" + title?: string + titleId?: string + tone?: + | "brandAccent" + | "caution" + | "critical" + | "formAccent" + | "info" + | "link" + | "neutral" + | "positive" + | "promote" + | "secondary" +}, +} +`; + exports[`IconBookmark 1`] = ` { exportType: component, @@ -3770,6 +3801,37 @@ exports[`IconCaution 1`] = ` } `; +exports[`IconChecklist 1`] = ` +{ + exportType: component, + props: { + alignY?: + | "lowercase" + | "uppercase" + data?: DataAttributeMap + size?: + | "fill" + | "large" + | "small" + | "standard" + | "xsmall" + title?: string + titleId?: string + tone?: + | "brandAccent" + | "caution" + | "critical" + | "formAccent" + | "info" + | "link" + | "neutral" + | "positive" + | "promote" + | "secondary" +}, +} +`; + exports[`IconChevron 1`] = ` { exportType: component, @@ -3930,6 +3992,37 @@ exports[`IconCopy 1`] = ` } `; +exports[`IconCoverLetter 1`] = ` +{ + exportType: component, + props: { + alignY?: + | "lowercase" + | "uppercase" + data?: DataAttributeMap + size?: + | "fill" + | "large" + | "small" + | "standard" + | "xsmall" + title?: string + titleId?: string + tone?: + | "brandAccent" + | "caution" + | "critical" + | "formAccent" + | "info" + | "link" + | "neutral" + | "positive" + | "promote" + | "secondary" +}, +} +`; + exports[`IconCreditCard 1`] = ` { exportType: component, @@ -4085,6 +4178,37 @@ exports[`IconDesktop 1`] = ` } `; +exports[`IconDisallow 1`] = ` +{ + exportType: component, + props: { + alignY?: + | "lowercase" + | "uppercase" + data?: DataAttributeMap + size?: + | "fill" + | "large" + | "small" + | "standard" + | "xsmall" + title?: string + titleId?: string + tone?: + | "brandAccent" + | "caution" + | "critical" + | "formAccent" + | "info" + | "link" + | "neutral" + | "positive" + | "promote" + | "secondary" +}, +} +`; + exports[`IconDocument 1`] = ` { exportType: component, @@ -5482,6 +5606,37 @@ exports[`IconPromote 1`] = ` } `; +exports[`IconQR 1`] = ` +{ + exportType: component, + props: { + alignY?: + | "lowercase" + | "uppercase" + data?: DataAttributeMap + size?: + | "fill" + | "large" + | "small" + | "standard" + | "xsmall" + title?: string + titleId?: string + tone?: + | "brandAccent" + | "caution" + | "critical" + | "formAccent" + | "info" + | "link" + | "neutral" + | "positive" + | "promote" + | "secondary" +}, +} +`; + exports[`IconRecommended 1`] = ` { exportType: component, diff --git a/site/src/App/routes/foundations/iconography/iconsKeywords.ts b/site/src/App/routes/foundations/iconography/iconsKeywords.ts index d0a095427db..ba75a40bc49 100644 --- a/site/src/App/routes/foundations/iconography/iconsKeywords.ts +++ b/site/src/App/routes/foundations/iconography/iconsKeywords.ts @@ -9,19 +9,36 @@ export const iconsKeywords: Record> = { IconArrow: ['up', 'down', 'left', 'right'], IconAttachment: ['paperclip', 'clip', 'file'], IconBookmark: ['save', 'ribbon'], + IconBluetooth: ['bt', 'wireless', 'connectivity', 'handsfree'], IconCareer: ['job', 'work', 'compass', 'safari'], IconCategory: ['shapes'], IconCaution: ['alert', 'warning', '!'], + IconChecklist: ['selection', 'tick'], IconChevron: ['down'], IconClear: ['cross', 'delete', 'remove', 'x'], IconCompany: ['business', 'building', 'enterprise'], IconCompose: ['edit', 'pencil', 'paper'], IconCopy: ['duplicate', 'clone', 'window'], + IconCoverLetter: ['document', 'attachment'], IconCreditCard: ['credit', 'card', 'debit', 'payment', 'bank'], IconCritical: ['alert', 'warning', 'error', '!'], IconDate: ['calendar', 'day', 'month', 'year'], IconDelete: ['remove', 'trash', 'bin', 'x'], IconDesktop: ['computer', 'pc', 'monitor', 'screen'], + IconDisallow: [ + 'prohibit', + 'slash', + 'no', + 'block', + 'ban', + 'forbid', + 'stop', + 'not suitable', + 'not applicable', + 'not allowed', + 'not permitted', + 'restricted', + ], IconDocument: ['paper', 'file'], IconDocumentBroken: ['paper', 'file', 'broken'], IconDownload: ['arrow', 'down', 'save', 'export'], @@ -107,6 +124,7 @@ export const iconsKeywords: Record> = { IconPrint: ['paper', 'document', 'file'], IconProfile: ['person', 'user', 'account'], IconPromote: ['announcement', 'stars', 'highlight', 'alert'], + IconQR: ['code', 'barcode', 'scan', 'read', 'quick response'], IconRecommended: ['star', 'favourite', 'like', 'love', 'badge'], IconRefresh: ['reload', 'sync', 'update'], IconResume: ['cv', 'curriculum vitae', 'paper', 'document'],