- import {FC, FormEventHandler} from 'react'
- import styled from 'styled-components'
- import { LeftSidebarWithMenu } from '@theoryofnekomata/viewfinder'
- import {models} from '@tonality/library-common'
- import CreateRingtoneForm from '../../organisms/forms/CreateRingtone'
- import Link from '../../molecules/navigation/Link'
- import OmnisearchForm from '../../organisms/forms/Omnisearch'
- import Brand from '../../molecules/brand/Brand'
-
- const TopBarComponent = styled('div')({
- backgroundColor: 'var(--color-bg, white)',
- })
-
- const SidebarMenuComponent = styled('div')({
- backgroundColor: 'var(--color-bg, white)',
- })
-
- const Padding = styled('div')({
- padding: '2rem 0',
- })
-
- type Props = {
- onSearch?: FormEventHandler,
- onSubmit?: FormEventHandler,
- composer: models.Composer,
- currentRingtone?: models.Ringtone,
- composerRingtones: models.Ringtone[],
-
- updateTempo: ({ songRef, dataRef, setTempo, }) => (...args: unknown[]) => void,
- updateView: ({ setNoteGlyph, setRestGlyph, noteGlyphs, restGlyphs, }) => (...args: unknown[]) => void,
- addRest: ({ formRef, dataRef, songRef, }) => (...args: unknown[]) => void,
- addNote: ({ dataRef, formRef, songRef, soundManagerRef, }) => (...args: unknown[]) => void,
- togglePlayback: ({ formRef, songRef, soundManagerRef, setPlayTimestamp, setPlaying, }) => (...args: unknown[]) => void,
- updateSong: ({ formRef, songRef, }) => (...args: unknown[]) => void,
- play: ({ dataRef, playing, setPlaying, playTimestamp, }) => void,
- }
-
- const CreateRingtoneTemplate: FC<Props> = ({
- onSearch,
- onSubmit,
- composer,
- currentRingtone = {},
- composerRingtones = [],
- updateTempo,
- updateView,
- addRest,
- addNote,
- togglePlayback,
- updateSong,
- play,
- }) => {
- return (
- <LeftSidebarWithMenu.Layout
- brand={
- <Brand />
- }
- userLink={
- <div>
- User
- </div>
- }
- topBarComponent={TopBarComponent}
- sidebarMenuComponent={SidebarMenuComponent}
- topBarCenter={
- <OmnisearchForm
- labels={{
- form: 'Search',
- query: 'Query',
- }}
- onSubmit={onSearch}
- action="/api/a/search"
- />
- }
- linkComponent={({ url, icon, label, }) => (
- <Link
- href={url}
- >
- <LeftSidebarWithMenu.SidebarMenuContainer>
- <LeftSidebarWithMenu.SidebarMenuItemIcon>
- {icon}
- </LeftSidebarWithMenu.SidebarMenuItemIcon>
- {label}
- </LeftSidebarWithMenu.SidebarMenuContainer>
- </Link>
- )}
- moreLinkMenuItem={{
- label: 'More',
- icon: 'M',
- url: {},
- }}
- moreLinkComponent={({ url, icon, label, }) => (
- <Link
- href={url}
- >
- <LeftSidebarWithMenu.MoreSidebarMenuContainer>
- <LeftSidebarWithMenu.MoreSidebarMenuItemIcon>
- {icon}
- </LeftSidebarWithMenu.MoreSidebarMenuItemIcon>
- {label}
- </LeftSidebarWithMenu.MoreSidebarMenuContainer>
- </Link>
- )}
- sidebarMenuItems={[
- {
- id: 'browse',
- label: 'Browse',
- icon: 'B',
- url: {
- pathname: '/ringtones',
- },
- },
- {
- id: 'compose',
- label: 'Compose',
- icon: 'C',
- url: {
- pathname: '/my/create/ringtone',
- },
- },
- ]}
- >
-
- <Padding>
- <CreateRingtoneForm
- onSubmit={onSubmit}
- defaultValues={{
- ...currentRingtone,
- composerId: composer.id,
- }}
- action="/api/a/create/ringtone"
- labels={{
- form: 'Create Ringtone',
- name: 'Name',
- data: 'Data',
- cta: 'Post',
- }}
- updateTempo={updateTempo}
- updateView={updateView}
- addRest={addRest}
- addNote={addNote}
- togglePlayback={togglePlayback}
- updateSong={updateSong}
- play={play}
- />
- </Padding>
- </LeftSidebarWithMenu.Layout>
- )
- }
-
- export default CreateRingtoneTemplate
|