UNPKG

strapi-plugin-icons-field

Version:

A customizable plugin for Strapi to integrate an icon field into your content types.

1 lines 8.17 kB
{"version":3,"file":"index-CGwL1r1A.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'icons-field';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","import { Flex } from '@strapi/design-system';\nimport styled from 'styled-components';\nimport { Rocket } from '@strapi/icons';\n\nconst IconBox = styled(Flex)`\n background-color: #ddfaf2;\n border: 1px solid #87cec5;\n\n svg > path {\n fill: #19a796;\n }\n`;\n\nexport const PluginIcon = () => {\n return (\n <IconBox justifyContent=\"center\" alignItems=\"center\" width={7} height={6} hasRadius aria-hidden>\n <Rocket />\n </IconBox>\n );\n};\n","import { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport { PluginIcon } from './components/PluginIcon';\n\n\nexport default {\n register(app: any) {\n app.customFields.register({\n name: \"icon\",\n pluginId: \"icons-field\",\n type: \"text\",\n icon: PluginIcon,\n intlLabel: {\n id: `${PLUGIN_ID}.label`,\n defaultMessage: \"Icon Selector\",\n },\n intlDescription: {\n id: `${PLUGIN_ID}.description`,\n defaultMessage: \"Select any icon from your own config\",\n },\n components: {\n Input: async () =>\n import(\"./components/IconSelect\"),\n },\n options: {\n base: [\n {\n name: 'options.selection',\n type: 'text',\n intlLabel: {\n id: `${PLUGIN_ID}.options.base.selection`,\n defaultMessage: 'Choose a specific icons folder',\n },\n description: {\n id: `${PLUGIN_ID}.options.base.selection.description`,\n defaultMessage: 'Leave empty to select all icones library',\n },\n placeholder: {\n id: `${PLUGIN_ID}.options.base.selection.placeholder`,\n defaultMessage: 'One folder name per line',\n },\n },\n ],\n advanced: [\n {\n sectionTitle: {\n id: 'global.settings',\n defaultMessage: 'Settings',\n },\n items: [\n {\n name: 'required',\n type: 'checkbox',\n intlLabel: {\n id: `${PLUGIN_ID}.options.advanced.requiredField`,\n defaultMessage: 'Required field',\n },\n description: {\n id: `${PLUGIN_ID}.options.advanced.requiredField.description`,\n defaultMessage: \"You won't be able to create an entry if this field is empty\",\n },\n },\n {\n name: 'options.showIconLabel',\n type: 'checkbox',\n intlLabel: {\n id: `${PLUGIN_ID}.options.advanced.showIconLabel`,\n defaultMessage: 'Show icon label',\n },\n description: {\n id: `${PLUGIN_ID}.options.advanced.showIconLabel.description`,\n defaultMessage: 'Show the icon label in the selected icon',\n },\n },\n {\n name: 'options.outputFormat',\n type: 'select',\n defaultValue: 'svg',\n intlLabel: {\n id: `${PLUGIN_ID}.options.advanced.outputFormat`,\n defaultMessage: 'API output format',\n },\n description: {\n id: `${PLUGIN_ID}.options.advanced.outputFormat.description`,\n defaultMessage: 'Choose what value is stored: the full SVG code or just the icon name (useful for SVG sprites)',\n },\n options: [\n {\n key: 'svg',\n value: 'svg',\n metadatas: {\n intlLabel: {\n id: `${PLUGIN_ID}.options.advanced.outputFormat.svg`,\n defaultMessage: 'SVG code (HTML)',\n },\n },\n },\n {\n key: 'name',\n value: 'name',\n metadatas: {\n intlLabel: {\n id: `${PLUGIN_ID}.options.advanced.outputFormat.name`,\n defaultMessage: 'Icon name',\n },\n },\n },\n ],\n },\n ],\n },\n ],\n },\n })\n\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":[],"mappings":"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"}