UNPKG

@craftercms/studio-ui

Version:

Services, components, models & utils to build CrafterCMS authoring extensions.

108 lines (106 loc) 3.32 kB
/* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import RadioGroup from '@mui/material/RadioGroup'; import { defineMessages, useIntl } from 'react-intl'; import FormControl from '@mui/material/FormControl'; import FormControlLabel from '@mui/material/FormControlLabel'; import Radio from '@mui/material/Radio'; import { capitalize } from '@mui/material'; import Typography from '@mui/material/Typography'; import React from 'react'; const messages = defineMessages({ content: { id: 'words.content', defaultMessage: 'Content' }, assets: { id: 'words.assets', defaultMessage: 'Assets' }, templates: { id: 'words.templates', defaultMessage: 'Templates' }, scripts: { id: 'words.scripts', defaultMessage: 'Scripts' } }); const defaultBasePaths = [ { id: 'content', path: '/site' }, { id: 'assets', path: '/static-assets' }, { id: 'templates', path: '/templates' }, { id: 'scripts', path: '/scripts' } ]; export function BasePathSelector(props) { const { basePaths = defaultBasePaths, value = '', onChange, sx } = props; const { formatMessage } = useIntl(); return React.createElement( FormControl, { sx: sx }, React.createElement( RadioGroup, { value: value, onChange: onChange }, basePaths.map((basePath) => React.createElement(FormControlLabel, { value: basePath.path, key: basePath.path, control: React.createElement(Radio, { size: 'small' }), label: React.createElement( React.Fragment, null, basePath.label ?? (messages[basePath.id] ? formatMessage(messages[basePath.id]) : capitalize(basePath.id)), ':', ' ', React.createElement( Typography, { color: 'text.secondary', variant: 'body2', component: 'span' }, basePath.path ) ) }) ) ) ); } export default BasePathSelector;