Spaces:
deepak191z
/
Runtime error

File size: 1,767 Bytes
229b3b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { Button } from '@/components/ui/button';
import { ScrollArea } from '@/components/ui/scroll-area';
import { AUDIOS } from '@/data/audio';
import { ADD_AUDIO, dispatcher } from '@designcombo/core';
import { Music } from 'lucide-react';
import { nanoid } from 'nanoid';

export const Audios = () => {
  const handleAddAudio = (src: string) => {
    dispatcher?.dispatch(ADD_AUDIO, {
      payload: {
        id: nanoid(),
        details: {
          src: 'https://ik.imagekit.io/snapmotion/timer-voice.mp3',
        },
      },
      options: {},
    });
  };

  return (
    <div className="flex-1 flex flex-col">
      <div className="text-md flex-none text-text-primary font-medium h-12  flex items-center px-4">
        Audios
      </div>
      <ScrollArea>
        <div className="px-2 flex flex-col">
          {AUDIOS.map((audio, index) => {
            return (
              <AudioItem
                handleAddAudio={handleAddAudio}
                audio={audio}
                key={index}
              />
            );
          })}
        </div>
      </ScrollArea>
    </div>
  );
};

const AudioItem = ({
  audio,
  handleAddAudio,
}: {
  audio: any;
  handleAddAudio: (src: string) => void;
}) => {
  return (
    <div
      onClick={() => handleAddAudio(audio.src)}
      style={{
        display: 'grid',
        gridTemplateColumns: '48px 1fr',
      }}
      className="flex px-2 py-1 gap-4 text-sm hover:bg-zinc-800/70 cursor-pointer"
    >
      <div className="bg-zinc-800 flex items-center justify-center h-12">
        <Music width={16} />
      </div>
      <div className="flex  flex-col justify-center">
        <div>{audio.name}</div>
        <div className="text-zinc-400">{audio.author}</div>
      </div>
    </div>
  );
};