Files
2026-03-21 01:15:26 -07:00

205 lines
12 KiB
HTML

<div v-if="activeTab === 'gibberish'" class="tab-content">
<div class="transform-layout">
<div class="transform-section">
<div class="section-header-card">
<div class="section-header-card-title">
<i class="fas fa-comments"></i>
<h3>Gibberish Generator</h3>
</div>
<p class="section-header-card-description">Generate gibberish text with consistent word mappings or create variations with random character removal.</p>
</div>
<!-- Mode Selection -->
<div class="button-group u-mb-16">
<button
:class="['btn', gibberishMode === 'random' ? 'btn-primary' : 'btn-secondary']"
@click="gibberishMode = 'random'"
>
<i class="fas fa-dice"></i> Gibberish Dictionary
</button>
<button
:class="['btn', gibberishMode === 'removal' ? 'btn-primary' : 'btn-secondary']"
@click="gibberishMode = 'removal'"
>
<i class="fas fa-eraser"></i> Character Removal
</button>
</div>
<!-- Gibberish Dictionary Mode -->
<div v-if="gibberishMode === 'random'">
<div class="input-section">
<div class="section-header">
<h4><i class="fas fa-pen"></i> Input Text</h4>
<p>Enter text to convert into gibberish. Structure and punctuation will be preserved.</p>
</div>
<textarea
id="gibberish-input"
v-model="gibberishInput"
placeholder="Enter sentence to generate gibberish..."
rows="4"
></textarea>
</div>
<div class="options-grid">
<label>
Seed (optional - for reproducible results)
<input type="text" v-model="gibberishSeed" placeholder="Leave empty for random" />
</label>
</div>
<div class="input-section">
<label>
Character Set
<input type="text" v-model="gibberishChars" placeholder="abcdefg..." />
</label>
</div>
<div class="tool-toolbar">
<button type="button" class="transform-button tool-primary-btn" @click="sentenceToGibberish"><i class="fas fa-hammer"></i> Generate Gibberish</button>
</div>
<div v-if="gibberishOutput" class="output-section">
<div class="section-header">
<h4><i class="fas fa-language"></i> Gibberish Output</h4>
</div>
<div class="textarea-copy-wrap">
<textarea v-model="gibberishOutput" readonly rows="4"></textarea>
<button class="copy-button" @click="copyToClipboard(gibberishOutput)" title="Copy"><i class="fas fa-copy"></i></button>
</div>
<div class="section-header u-mt-16">
<h4><i class="fas fa-book"></i> Dictionary</h4>
</div>
<div class="textarea-copy-wrap">
<textarea v-model="gibberishDictionary" readonly rows="3"></textarea>
<button class="copy-button" @click="copyToClipboard(gibberishDictionary)" title="Copy"><i class="fas fa-copy"></i></button>
</div>
</div>
</div>
<!-- Character Removal Mode -->
<div v-if="gibberishMode === 'removal'">
<!-- Sub-mode selection -->
<div class="button-group u-mb-16">
<button
:class="['btn', removalSubMode === 'random' ? 'btn-primary' : 'btn-secondary']"
@click="removalSubMode = 'random'"
>
<i class="fas fa-random"></i> Random Removal
</button>
<button
:class="['btn', removalSubMode === 'specific' ? 'btn-primary' : 'btn-secondary']"
@click="removalSubMode = 'specific'"
>
<i class="fas fa-crosshairs"></i> Specific Characters
</button>
</div>
<!-- Random Removal Sub-mode -->
<div v-if="removalSubMode === 'random'">
<div class="input-section">
<div class="section-header">
<h4><i class="fas fa-pen"></i> Input Text</h4>
<p>Random letters will be removed from each word</p>
</div>
<textarea
id="removal-input"
v-model="removalInput"
placeholder="Enter text for random character removal..."
rows="4"
></textarea>
</div>
<div class="options-grid">
<label>
Number of Variations
<input type="number" v-model.number="removalVariations" min="1" max="100" placeholder="10" />
</label>
<label>
Min Letters to Remove
<input type="number" v-model.number="removalMinLetters" min="0" max="10" placeholder="1" />
</label>
<label>
Max Letters to Remove
<input type="number" v-model.number="removalMaxLetters" min="1" max="20" placeholder="3" />
</label>
<label>
Seed (optional)
<input type="text" v-model="removalSeed" placeholder="Leave empty for random" />
</label>
</div>
<div class="tool-toolbar">
<button type="button" class="transform-button tool-primary-btn" @click="generateRandomRemovals">
<i class="fas fa-dice"></i> Generate Variations
</button>
<button class="action-button copy" v-if="removalOutputs.length" @click="copyAllRemovals">
<i class="fas fa-copy"></i> Copy All
</button>
</div>
<div v-if="removalOutputs.length" class="output-section">
<div class="output-heading">
<h4>
<i class="fas fa-list"></i> Variations
<small>{{ removalOutputs.length }} variation{{ removalOutputs.length !== 1 ? 's' : '' }}</small>
</h4>
</div>
<div class="split-messages-grid">
<div v-for="(output, index) in removalOutputs" :key="index" class="split-message-card">
<div class="split-message-header">
<span class="message-number">Variation {{ index + 1 }}</span>
<button class="copy-button-small" @click="copyToClipboard(output)" title="Copy">
<i class="fas fa-copy"></i>
</button>
</div>
<div class="split-message-content">{{ output }}</div>
</div>
</div>
</div>
</div>
<!-- Specific Removal Sub-mode -->
<div v-if="removalSubMode === 'specific'">
<div class="input-section">
<div class="section-header">
<h4><i class="fas fa-pen"></i> Input Text</h4>
<p>Remove specific characters from your text</p>
</div>
<textarea
id="removal-specific-input"
v-model="removalSpecificInput"
placeholder="Enter text..."
rows="4"
></textarea>
</div>
<div class="options-grid">
<label>
Characters to Remove
<input type="text" v-model="removalCharsToRemove" placeholder="e.g., aeiou" />
<small>Enter the specific characters you want to remove</small>
</label>
</div>
<div class="tool-toolbar">
<button type="button" class="transform-button tool-primary-btn" @click="generateSpecificRemoval">
<i class="fas fa-eraser"></i> Remove Characters
</button>
</div>
<div v-if="removalSpecificOutput" class="output-section">
<div class="section-header">
<h4><i class="fas fa-check"></i> Result</h4>
</div>
<div class="textarea-copy-wrap">
<textarea v-model="removalSpecificOutput" readonly rows="4"></textarea>
<button class="copy-button" @click="copyToClipboard(removalSpecificOutput)" title="Copy">
<i class="fas fa-copy"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>