Skip to content

Commit 9ec7c68

Browse files
committed
Made changes to the Devtools UI and components. Reused the CodePreview Component to display the generated snippet which already had the copy button as well.
1 parent 8495657 commit 9ec7c68

File tree

3 files changed

+45
-21
lines changed

3 files changed

+45
-21
lines changed

src/components/devtools/DevTools.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useEffect, useState } from 'react';
22
import useEscapeKey from '../../hooks/useEscapeKey';
33
import { createPortal } from 'react-dom';
44
import { DevToolsField } from './DevToolsField';
5+
import CodePreview from '../CodePreview';
56

67
export interface DevToolsProps {
78
closeModal: () => void,
@@ -53,47 +54,50 @@ export const DevTools = ({ closeModal }: DevToolsProps) => {
5354
} }
5455
>
5556
<div className='modal devtools-container'>
57+
<div className='devtools-sub-container'>
5658
<DevToolsField
5759
key='title'
5860
name='Title'
5961
value={title}
62+
placeholder='e.g., Hello World!'
6063
setValue={(value) => setTitle(value)}
6164
/>
65+
<DevToolsField
66+
key='author'
67+
name='Author'
68+
value={author}
69+
placeholder='e.g., dostonnabotov'
70+
setValue={(value) => setAuthor(value)}
71+
/>
72+
</div>
6273
<DevToolsField
6374
key='description'
6475
name='Description'
6576
value={description}
77+
placeholder='e.g., A simple program that prints "Hello, World!" to the console.'
6678
setValue={(value) => setDescription(value)}
6779
/>
6880
<DevToolsField
6981
key='tags'
7082
name='Tags (separated by commas)'
7183
value={tags}
84+
placeholder='e.g., hello, world, program'
7285
setValue={(value) => setTags(value)}
7386
/>
74-
<DevToolsField
75-
key='author'
76-
name='Author'
77-
value={author}
78-
setValue={(value) => setAuthor(value)}
79-
/>
8087
<div className='devtools-field'>
8188
<label htmlFor="code" className='devtools-label'>Code</label>
8289
<textarea
8390
name='code'
8491
id='code'
8592
className='devtools-textarea'
8693
value={code}
94+
placeholder='Paste your code here...'
8795
onChange={(e) => setCode(e.target.value)}
8896
></textarea>
8997
</div>
9098
<div className='devtools-generated-container'>
9199
<h3 className='devtools-generated-title'>Your generated snippet:</h3>
92-
<pre className='devtools-generated'>
93-
<code>
94-
{generated}
95-
</code>
96-
</pre>
100+
<CodePreview language='plaintext' code={[generated]} />
97101
</div>
98102
</div>
99103
</div>,

src/components/devtools/DevToolsField.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ export interface DevToolsFieldProps {
33
name: string,
44
key: string,
55
value: string,
6+
placeholder?: string,
67
setValue: (value: string) => void,
78
}
89

910
export const DevToolsField = ({
10-
name, key, value, setValue
11+
name, key, value, placeholder, setValue
1112
}: DevToolsFieldProps) => {
1213
return (
1314
<div className='devtools-field'>
@@ -17,7 +18,7 @@ export const DevToolsField = ({
1718
name={key}
1819
id={key}
1920
className='devtools-input'
20-
placeholder={"..."}
21+
placeholder={placeholder ? placeholder : ''}
2122
value={value}
2223
onChange={(e) => setValue(e.target.value)}
2324
/>

src/styles/main.css

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -680,10 +680,27 @@ body:has(.modal-overlay) {
680680
.devtools-container {
681681
display: flex;
682682
flex-direction: column;
683-
gap: 0.75em;
683+
background-color: var(--bg-primary);
684+
gap: 1em;
685+
}
686+
687+
.devtools-sub-container{
688+
width: 100%;
689+
display: flex;
690+
flex-direction: row;
691+
justify-content: space-between;
692+
gap: 1em;
693+
}
694+
695+
@media screen and (max-width: 768px) {
696+
.devtools-sub-container {
697+
flex-direction: column;
698+
}
699+
684700
}
685701

686702
.devtools-field {
703+
width: 100%;
687704
display: flex;
688705
flex-direction: column;
689706
gap: 0.1em;
@@ -694,16 +711,17 @@ body:has(.modal-overlay) {
694711
text-decoration: none;
695712
font-size: var(--fs-500);
696713
font-weight: 600;
714+
margin-bottom: 0.1em;
697715
}
698716

699717
.devtools-input {
700718
border: none;
701719
outline: none;
702720
background: none;
703-
704-
border-bottom: 1px solid white;
705-
706-
max-width: 50%;
721+
padding: 0.5em;
722+
border-radius: 0.5em;
723+
border: 1px solid var(--clr-neutral-500);
724+
flex-grow: 1;
707725
}
708726

709727
.devtools-textarea {
@@ -712,7 +730,7 @@ body:has(.modal-overlay) {
712730
outline: none;
713731

714732
height: 25vh;
715-
border: 1px solid white;
733+
border: 1px solid var(--clr-neutral-500);
716734
border-radius: 0.5em;
717735
padding: 0.5em;
718736
}
@@ -723,6 +741,7 @@ body:has(.modal-overlay) {
723741

724742
.devtools-generated-title {
725743
color: var(--text-primary);
744+
margin-bottom: 0.1em;
726745
text-decoration: none;
727746
font-size: var(--fs-600);
728747
font-weight: 600;
@@ -731,12 +750,12 @@ body:has(.modal-overlay) {
731750
.devtools-generated {
732751
max-width: 100%;
733752
max-height: 20vh;
734-
753+
background-color: var(--bg-secondary);
754+
border-radius: 0.5em;
735755
overflow-y: auto;
736756

737757
margin: 0.5em;
738758
padding: 0.5em;
739-
border-left: 1px solid white;
740759

741760
white-space: pre-wrap;
742761
word-wrap: break-word;

0 commit comments

Comments
 (0)