refactor(ui): removed all n-space

This commit is contained in:
Corentin Thomasset 2023-05-27 17:36:15 +02:00 committed by Corentin THOMASSET
parent 34d8e5ce2c
commit 4d2b037dbe
40 changed files with 222 additions and 246 deletions

View file

@ -1,8 +1,6 @@
<template> <template>
<c-card class="colored-card"> <c-card class="colored-card">
<n-space justify="space-between" align="center">
<n-icon class="icon" size="40" :component="icon" /> <n-icon class="icon" size="40" :component="icon" />
</n-space>
<n-h3 class="title"> <n-h3 class="title">
<n-ellipsis>{{ title }}</n-ellipsis> <n-ellipsis>{{ title }}</n-ellipsis>
</n-h3> </n-h3>

View file

@ -21,9 +21,9 @@
<span>{{ tooltipText }}</span> <span>{{ tooltipText }}</span>
</n-tooltip> </n-tooltip>
</c-card> </c-card>
<n-space v-if="copyPlacement === 'outside'" justify="center" mt-4> <div v-if="copyPlacement === 'outside'" mt-4 flex justify-center>
<c-button @click="onCopyClicked"> {{ tooltipText }} </c-button> <c-button @click="onCopyClicked"> {{ tooltipText }} </c-button>
</n-space> </div>
</div> </div>
</template> </template>

View file

@ -1,9 +1,9 @@
<template> <template>
<router-link :to="tool.path"> <router-link :to="tool.path">
<c-card class="tool-card"> <c-card class="tool-card">
<n-space justify="space-between" align="center"> <div flex items-center justify-between>
<n-icon class="icon" size="40" :component="tool.icon" /> <n-icon class="icon" size="40" :component="tool.icon" />
<n-space align="center"> <div flex items-center gap-8px>
<n-tag <n-tag
v-if="tool.isNew" v-if="tool.isNew"
size="small" size="small"
@ -17,8 +17,8 @@
</n-tag> </n-tag>
<favorite-button :tool="tool" /> <favorite-button :tool="tool" />
</n-space> </div>
</n-space> </div>
<n-h3 class="title"> <n-h3 class="title">
<n-ellipsis>{{ tool.name }}</n-ellipsis> <n-ellipsis>{{ tool.name }}</n-ellipsis>
</n-h3> </n-h3>

View file

@ -43,9 +43,9 @@ const tools = computed<ToolCategory[]>(() => [
</router-link> </router-link>
<div class="sider-content"> <div class="sider-content">
<n-space v-if="styleStore.isSmallScreen" justify="center"> <div v-if="styleStore.isSmallScreen" flex justify-center>
<navbar-buttons /> <navbar-buttons />
</n-space> </div>
<collapsible-tool-menu :tools-by-category="tools" /> <collapsible-tool-menu :tools-by-category="tools" />

View file

@ -29,7 +29,7 @@ useHead(head);
<base-layout> <base-layout>
<div class="tool-layout"> <div class="tool-layout">
<div class="tool-header"> <div class="tool-header">
<n-space align="center" justify="space-between" :wrap="false"> <div flex flex-nowrap items-center justify-between>
<n-h1> <n-h1>
{{ route.meta.name }} {{ route.meta.name }}
</n-h1> </n-h1>
@ -37,7 +37,7 @@ useHead(head);
<div> <div>
<favorite-button :tool="{name: route.meta.name} as Tool" /> <favorite-button :tool="{name: route.meta.name} as Tool" />
</div> </div>
</n-space> </div>
<div class="separator" /> <div class="separator" />

View file

@ -18,9 +18,9 @@
</n-scrollbar> </n-scrollbar>
</n-statistic> </n-statistic>
</c-card> </c-card>
<n-space justify="center" mt-5> <div mt-5 flex justify-center>
<c-button @click="copy">Copy header</c-button> <c-button @click="copy">Copy header</c-button>
</n-space> </div>
</div> </div>
</template> </template>

View file

@ -15,9 +15,9 @@
<c-input-text :value="hashed" readonly text-center /> <c-input-text :value="hashed" readonly text-center />
<n-space justify="center" mt-5> <div mt-5 flex justify-center>
<c-button @click="copy"> Copy hash </c-button> <c-button @click="copy"> Copy hash </c-button>
</n-space> </div>
</c-card> </c-card>
<c-card title="Compare string with hash"> <c-card title="Compare string with hash">

View file

@ -1,6 +1,6 @@
<template> <template>
<n-scrollbar style="flex: 1" x-scrollable> <n-scrollbar style="flex: 1" x-scrollable>
<n-space :wrap="false" style="flex: 1" justify="center" :size="12" mb-5> <div mb-5 flex flex-1 flex-nowrap justify-center gap-12px>
<div v-for="(suite, index) of suites" :key="index"> <div v-for="(suite, index) of suites" :key="index">
<c-card style="width: 294px"> <c-card style="width: 294px">
<c-input-text <c-input-text
@ -17,7 +17,7 @@
</n-form-item> </n-form-item>
</c-card> </c-card>
<n-space justify="center"> <div flex justify-center>
<c-button v-if="suites.length > 1" variant="text" @click="suites.splice(index, 1)"> <c-button v-if="suites.length > 1" variant="text" @click="suites.splice(index, 1)">
<n-icon :component="Trash" depth="3" mr-2 size="18" /> <n-icon :component="Trash" depth="3" mr-2 size="18" />
Delete suite Delete suite
@ -29,14 +29,14 @@
<n-icon :component="Plus" depth="3" mr-2 size="18" /> <n-icon :component="Plus" depth="3" mr-2 size="18" />
Add suite Add suite
</c-button> </c-button>
</n-space>
</div> </div>
</n-space> </div>
</div>
</n-scrollbar> </n-scrollbar>
<div style="flex: 0 0 100%"> <div style="flex: 0 0 100%">
<div style="max-width: 600px; margin: 0 auto"> <div style="max-width: 600px; margin: 0 auto">
<n-space justify="center"> <div mx-auto max-w-sm flex justify-center gap-3>
<c-input-text v-model:value="unit" placeholder="Unit (eg: ms)" label="Unit" label-position="left" mb-4 /> <c-input-text v-model:value="unit" placeholder="Unit (eg: ms)" label="Unit" label-position="left" mb-4 />
<c-button <c-button
@ -48,7 +48,7 @@
" "
>Reset suites</c-button >Reset suites</c-button
> >
</n-space> </div>
<n-table> <n-table>
<thead> <thead>
@ -70,10 +70,10 @@
</tr> </tr>
</tbody> </tbody>
</n-table> </n-table>
<n-space justify="center" mt-5> <div mt-5 flex justify-center gap-3>
<c-button @click="copyAsMarkdown">Copy as markdown table</c-button> <c-button @click="copyAsMarkdown">Copy as markdown table</c-button>
<c-button @click="copyAsBulletList">Copy as bullet list</c-button> <c-button @click="copyAsBulletList">Copy as bullet list</c-button>
</n-space> </div>
</div> </div>
</div> </div>
</template> </template>

View file

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<n-space v-for="(value, index) of values" :key="index" :wrap="false" style="margin-bottom: 5px" :size="5"> <div v-for="(value, index) of values" :key="index" mb-2 flex flex-nowrap gap-2>
<n-input-number <n-input-number
:ref="refs.set" :ref="refs.set"
v-model:value="values[index]" v-model:value="values[index]"
@ -17,7 +17,7 @@
</template> </template>
Delete value Delete value
</n-tooltip> </n-tooltip>
</n-space> </div>
<c-button @click="addValue"> <c-button @click="addValue">
<n-icon :component="Plus" depth="3" mr-2 size="18" /> <n-icon :component="Plus" depth="3" mr-2 size="18" />

View file

@ -3,12 +3,12 @@
<c-card> <c-card>
<div class="duration">{{ formatMs(counter) }}</div> <div class="duration">{{ formatMs(counter) }}</div>
</c-card> </c-card>
<n-space justify="center" mt-5> <div mt-5 flex justify-center gap-3>
<c-button v-if="!isRunning" type="primary" @click="resume">Start</c-button> <c-button v-if="!isRunning" type="primary" @click="resume">Start</c-button>
<c-button v-else type="warning" @click="pause">Stop</c-button> <c-button v-else type="warning" @click="pause">Stop</c-button>
<c-button @click="counter = 0">Reset</c-button> <c-button @click="counter = 0">Reset</c-button>
</n-space> </div>
</div> </div>
</template> </template>

View file

@ -16,7 +16,7 @@
<n-divider /> <n-divider />
<n-space justify="center"> <div flex justify-center>
<n-form :show-feedback="false" label-width="170" label-placement="left"> <n-form :show-feedback="false" label-width="170" label-placement="left">
<n-form-item label="Verbose"> <n-form-item label="Verbose">
<n-switch v-model:value="cronstrueConfig.verbose" /> <n-switch v-model:value="cronstrueConfig.verbose" />
@ -28,7 +28,7 @@
<n-switch v-model:value="cronstrueConfig.dayOfWeekStartIndexZero" /> <n-switch v-model:value="cronstrueConfig.dayOfWeekStartIndexZero" />
</n-form-item> </n-form-item>
</n-form> </n-form>
</n-space> </div>
</c-card> </c-card>
<c-card> <c-card>
<pre> <pre>
@ -42,8 +42,8 @@
* * * * * * command</pre * * * * * * command</pre
> >
<n-space v-if="styleStore.isSmallScreen" vertical> <div v-if="styleStore.isSmallScreen">
<c-card v-for="{ symbol, meaning, example, equivalent } in helpers" :key="symbol" important:border-none> <c-card v-for="{ symbol, meaning, example, equivalent } in helpers" :key="symbol" mb-3 important:border-none>
<div> <div>
Symbol: <strong>{{ symbol }}</strong> Symbol: <strong>{{ symbol }}</strong>
</div> </div>
@ -60,7 +60,7 @@
Equivalent: <strong>{{ equivalent }}</strong> Equivalent: <strong>{{ equivalent }}</strong>
</div> </div>
</c-card> </c-card>
</n-space> </div>
<n-table v-else size="small"> <n-table v-else size="small">
<thead> <thead>
<tr> <tr>

View file

@ -14,9 +14,9 @@
<textarea-copyable :value="dockerCompose" language="yaml" /> <textarea-copyable :value="dockerCompose" language="yaml" />
<n-space justify="center" mt-5> <div mt-5 flex justify-center>
<c-button :disabled="dockerCompose === ''" secondary @click="download"> Download docker-compose.yml </c-button> <c-button :disabled="dockerCompose === ''" secondary @click="download"> Download docker-compose.yml </c-button>
</n-space> </div>
<div v-if="notComposable.length > 0"> <div v-if="notComposable.length > 0">
<n-alert title="This options are not translatable to docker-compose" type="info" mt-5> <n-alert title="This options are not translatable to docker-compose" type="info" mt-5>

View file

@ -1,7 +1,7 @@
<template> <template>
<c-card title="Encrypt"> <c-card title="Encrypt">
<n-space item-style="flex: 1 1 0"> <div flex gap-3>
<n-form-item label="Your text:" :show-feedback="false"> <n-form-item label="Your text:" :show-feedback="false" flex-1>
<n-input <n-input
v-model:value="cypherInput" v-model:value="cypherInput"
type="textarea" type="textarea"
@ -13,7 +13,7 @@
spellcheck="false" spellcheck="false"
/> />
</n-form-item> </n-form-item>
<n-space vertical> <div flex flex-1 flex-col gap-2>
<c-input-text v-model:value="cypherSecret" label="Your secret key:" clearable raw-text /> <c-input-text v-model:value="cypherSecret" label="Your secret key:" clearable raw-text />
<n-form-item label="Encryption algorithm:" :show-feedback="false"> <n-form-item label="Encryption algorithm:" :show-feedback="false">
@ -22,8 +22,8 @@
:options="Object.keys(algos).map((label) => ({ label, value: label }))" :options="Object.keys(algos).map((label) => ({ label, value: label }))"
/> />
</n-form-item> </n-form-item>
</n-space> </div>
</n-space> </div>
<n-form-item label="Your text encrypted:" :show-feedback="false" mt-5> <n-form-item label="Your text encrypted:" :show-feedback="false" mt-5>
<n-input <n-input
:value="cypherOutput" :value="cypherOutput"
@ -39,8 +39,8 @@
</n-form-item> </n-form-item>
</c-card> </c-card>
<c-card title="Decrypt"> <c-card title="Decrypt">
<n-space item-style="flex: 1 1 0"> <div flex gap-3>
<n-form-item label="Your encrypted text:" :show-feedback="false"> <n-form-item label="Your encrypted text:" :show-feedback="false" flex-1>
<n-input <n-input
v-model:value="decryptInput" v-model:value="decryptInput"
type="textarea" type="textarea"
@ -52,7 +52,7 @@
spellcheck="false" spellcheck="false"
/> />
</n-form-item> </n-form-item>
<n-space vertical> <div flex flex-1 flex-col gap-2>
<c-input-text v-model:value="decryptSecret" label="Your secret key:" clearable raw-text /> <c-input-text v-model:value="decryptSecret" label="Your secret key:" clearable raw-text />
<n-form-item label="Encryption algorithm:" :show-feedback="false"> <n-form-item label="Encryption algorithm:" :show-feedback="false">
@ -61,8 +61,8 @@
:options="Object.keys(algos).map((label) => ({ label, value: label }))" :options="Object.keys(algos).map((label) => ({ label, value: label }))"
/> />
</n-form-item> </n-form-item>
</n-space> </div>
</n-space> </div>
<n-form-item label="Your decrypted text:" :show-feedback="false" mt-5> <n-form-item label="Your decrypted text:" :show-feedback="false" mt-5>
<n-input <n-input
:value="decryptOutput" :value="decryptOutput"

View file

@ -6,20 +6,18 @@
{{ endAt }}. {{ endAt }}.
</n-text> </n-text>
<n-divider /> <n-divider />
<n-space item-style="flex:1 1 0"> <div flex gap-2>
<div> <n-form-item label="Amount of element to consume" flex-1>
<n-space item-style="flex:1 1 0">
<n-form-item label="Amount of element to consume">
<n-input-number v-model:value="unitCount" :min="1" /> <n-input-number v-model:value="unitCount" :min="1" />
</n-form-item> </n-form-item>
<n-form-item label="The consumption started at"> <n-form-item label="The consumption started at" flex-1>
<n-date-picker v-model:value="startedAt" type="datetime" /> <n-date-picker v-model:value="startedAt" type="datetime" />
</n-form-item> </n-form-item>
</n-space> </div>
<n-form-item label="Amount of unit consumed by time span" :show-feedback="false"> <n-form-item label="Amount of unit consumed by time span" :show-feedback="false">
<n-input-number v-model:value="unitPerTimeSpan" :min="1" /> <n-input-number v-model:value="unitPerTimeSpan" :min="1" />
<span style="margin: 0 10px">in</span> <span mx-3>in</span>
<n-input-group> <n-input-group>
<n-input-number v-model:value="timeSpan" :min="1" /> <n-input-number v-model:value="timeSpan" :min="1" />
<n-select <n-select
@ -36,16 +34,12 @@
</n-form-item> </n-form-item>
<n-divider /> <n-divider />
<n-space vertical> <c-card mb-2>
<c-card>
<n-statistic label="Total duration">{{ formatMsDuration(durationMs) }}</n-statistic> <n-statistic label="Total duration">{{ formatMsDuration(durationMs) }}</n-statistic>
</c-card> </c-card>
<c-card> <c-card>
<n-statistic label="It will end ">{{ endAt }}</n-statistic> <n-statistic label="It will end ">{{ endAt }}</n-statistic>
</c-card> </c-card>
</n-space>
</div>
</n-space>
</div> </div>
</template> </template>

View file

@ -6,15 +6,15 @@
<n-form-item label="Secret key"> <n-form-item label="Secret key">
<n-input v-model:value="secret" placeholder="Enter the secret key..." /> <n-input v-model:value="secret" placeholder="Enter the secret key..." />
</n-form-item> </n-form-item>
<n-space item-style="flex:1 1 0"> <div flex gap-2>
<n-form-item label="Hashing function"> <n-form-item label="Hashing function" flex-1>
<n-select <n-select
v-model:value="hashFunction" v-model:value="hashFunction"
placeholder="Select an hashing function..." placeholder="Select an hashing function..."
:options="Object.keys(algos).map((label) => ({ label, value: label }))" :options="Object.keys(algos).map((label) => ({ label, value: label }))"
/> />
</n-form-item> </n-form-item>
<n-form-item label="Output encoding"> <n-form-item label="Output encoding" flex-1>
<n-select <n-select
v-model:value="encoding" v-model:value="encoding"
placeholder="Select the result encoding..." placeholder="Select the result encoding..."
@ -38,13 +38,13 @@
]" ]"
/> />
</n-form-item> </n-form-item>
</n-space> </div>
<n-form-item label="HMAC of your text"> <n-form-item label="HMAC of your text">
<n-input readonly :value="hmac" type="textarea" placeholder="The result of the HMAC..." /> <n-input readonly :value="hmac" type="textarea" placeholder="The result of the HMAC..." />
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center>
<c-button @click="copy()">Copy HMAC</c-button> <c-button @click="copy()">Copy HMAC</c-button>
</n-space> </div>
</div> </div>
</template> </template>

View file

@ -19,9 +19,9 @@
/> />
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center>
<c-button @click="copyEscaped"> Copy </c-button> <c-button @click="copyEscaped"> Copy </c-button>
</n-space> </div>
</c-card> </c-card>
<c-card title="Unescape html entities"> <c-card title="Unescape html entities">
<n-form-item label="Your escaped string :"> <n-form-item label="Your escaped string :">
@ -43,9 +43,9 @@
/> />
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center>
<c-button @click="copyUnescaped"> Copy </c-button> <c-button @click="copyUnescaped"> Copy </c-button>
</n-space> </div>
</c-card> </c-card>
</template> </template>

View file

@ -1,10 +1,10 @@
<template> <template>
<n-space align="center" :size="0"> <div flex items-center>
<template v-for="(item, index) in items"> <template v-for="(item, index) in items">
<n-divider v-if="item.type === 'divider'" :key="`divider${index}`" vertical /> <n-divider v-if="item.type === 'divider'" :key="`divider${index}`" vertical />
<menu-bar-item v-else-if="item.type === 'button'" :key="index" v-bind="item" /> <menu-bar-item v-else-if="item.type === 'button'" :key="index" v-bind="item" />
</template> </template>
</n-space> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View file

@ -21,10 +21,8 @@
<n-h2> {{ category }} </n-h2> <n-h2> {{ category }} </n-h2>
<c-card v-for="{ code, description, name, type } of codes" :key="code" mb-2> <c-card v-for="{ code, description, name, type } of codes" :key="code" mb-2>
<n-space align="center"> <n-text strong block text-lg> {{ code }} {{ name }} </n-text>
<n-text strong text-lg> {{ code }} {{ name }} </n-text> <n-text block depth="3">{{ description }} {{ type !== 'HTTP' ? `For ${type}.` : '' }}</n-text>
</n-space>
<n-text depth="3">{{ description }} {{ type !== 'HTTP' ? `For ${type}.` : '' }}</n-text>
</c-card> </c-card>
</div> </div>
</div> </div>

View file

@ -1,6 +1,4 @@
<template> <template>
<div>
<n-space item-style="flex:1 1 0">
<div> <div>
<div mb-4 flex gap-4> <div mb-4 flex gap-4>
<c-input-text <c-input-text
@ -43,20 +41,17 @@
title="Invalid combination of start and end IPv4 address" title="Invalid combination of start and end IPv4 address"
type="error" type="error"
> >
<n-space vertical> <n-text depth="3" my-3 block>
<n-text depth="3"> The end IPv4 address is lower than the start IPv4 address. This is not valid and no result could be calculated.
The end IPv4 address is lower than the start IPv4 address. This is not valid and no result could be In the most cases the solution to solve this problem is to change start and end address.
calculated. In the most cases the solution to solve this problem is to change start and end address.
</n-text> </n-text>
<c-button @click="onSwitchStartEndClicked"> <c-button @click="onSwitchStartEndClicked">
<n-icon mr-2 :component="Exchange" depth="3" size="22" /> <n-icon mr-2 :component="Exchange" depth="3" size="22" />
Switch start and end IPv4 address Switch start and end IPv4 address
</c-button> </c-button>
</n-space>
</n-alert> </n-alert>
</div> </div>
</n-space>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View file

@ -23,7 +23,7 @@
</tbody> </tbody>
</n-table> </n-table>
<n-space style="margin-top: 14px" justify="space-between"> <div mt-3 flex items-center justify-between>
<c-button @click="switchToBlock({ count: -1 })"> <c-button @click="switchToBlock({ count: -1 })">
<n-icon :component="ArrowLeft" /> <n-icon :component="ArrowLeft" />
Previous block Previous block
@ -32,7 +32,7 @@
Next block Next block
<n-icon :component="ArrowRight" /> <n-icon :component="ArrowRight" />
</c-button> </c-button>
</n-space> </div>
</div> </div>
</div> </div>
</template> </template>

View file

@ -1,10 +1,10 @@
<template> <template>
<div v-if="showResults"> <div v-if="showResults">
<n-space justify="center"> <div flex justify-center>
<n-form-item label="Only show differences" label-placement="left"> <n-form-item label="Only show differences" label-placement="left">
<n-switch v-model:value="onlyShowDifferences" /> <n-switch v-model:value="onlyShowDifferences" />
</n-form-item> </n-form-item>
</n-space> </div>
<c-card data-test-id="diff-result"> <c-card data-test-id="diff-result">
<n-text v-if="jsonAreTheSame" depth="3" block text-center italic> The provided JSONs are the same </n-text> <n-text v-if="jsonAreTheSame" depth="3" block text-center italic> The provided JSONs are the same </n-text>

View file

@ -1,13 +1,13 @@
<template> <template>
<div style="flex: 0 0 100%"> <div style="flex: 0 0 100%">
<n-space style="margin: 0 auto; max-width: 600px" justify="center"> <div style="margin: 0 auto; max-width: 600px" flex justify-center gap-3>
<n-form-item label="Sort keys :" label-placement="left" label-width="100"> <n-form-item label="Sort keys :" label-placement="left" label-width="100">
<n-switch v-model:value="sortKeys" /> <n-switch v-model:value="sortKeys" />
</n-form-item> </n-form-item>
<n-form-item label="Indent size :" label-placement="left" label-width="100" :show-feedback="false"> <n-form-item label="Indent size :" label-placement="left" label-width="100" :show-feedback="false">
<n-input-number v-model:value="indentSize" min="0" max="10" style="width: 100px" /> <n-input-number v-model:value="indentSize" min="0" max="10" style="width: 100px" />
</n-form-item> </n-form-item>
</n-space> </div>
</div> </div>
<n-form-item <n-form-item

View file

@ -10,20 +10,12 @@
<th colspan="2" class="table-header">{{ section.title }}</th> <th colspan="2" class="table-header">{{ section.title }}</th>
<tr v-for="{ claim, claimDescription, friendlyValue, value } in decodedJWT[section.key]" :key="claim + value"> <tr v-for="{ claim, claimDescription, friendlyValue, value } in decodedJWT[section.key]" :key="claim + value">
<td class="claims"> <td class="claims">
<n-space>
<n-text strong>{{ claim }}</n-text> <n-text strong>{{ claim }}</n-text>
<template v-if="claimDescription"> <n-text v-if="claimDescription" depth="3" ml-2>({{ claimDescription }})</n-text>
<n-text depth="3">({{ claimDescription }})</n-text>
</template>
</n-space>
</td> </td>
<td> <td>
<n-space>
<n-text>{{ value }}</n-text> <n-text>{{ value }}</n-text>
<template v-if="friendlyValue"> <n-text v-if="friendlyValue" ml-2 depth="3">({{ friendlyValue }})</n-text>
<n-text depth="3">({{ friendlyValue }})</n-text>
</template>
</n-space>
</td> </td>
</tr> </tr>
</template> </template>

View file

@ -1,6 +1,6 @@
<template> <template>
<div style="flex: 0 0 100%"> <div style="flex: 0 0 100%">
<n-space item-style="flex: 1 1 0" style="margin: 0 auto; max-width: 600px" justify="center"> <div style="margin: 0 auto; max-width: 600px">
<c-card> <c-card>
<div flex> <div flex>
<div> <div>
@ -73,7 +73,7 @@
</div> </div>
</div> </div>
</c-card> </c-card>
</n-space> </div>
</div> </div>
<format-transformer <format-transformer
input-label="Your input data" input-label="Your input data"

View file

@ -18,9 +18,9 @@
<n-input :value="loremIpsumText" type="textarea" placeholder="Your lorem ipsum..." readonly autosize mt-5 /> <n-input :value="loremIpsumText" type="textarea" placeholder="Your lorem ipsum..." readonly autosize mt-5 />
<n-space justify="center" mt-5> <div mt-5 flex justify-center>
<c-button autofocus @click="copy"> Copy </c-button> <c-button autofocus @click="copy"> Copy </c-button>
</n-space> </div>
</c-card> </c-card>
</template> </template>

View file

@ -25,10 +25,10 @@
<n-progress :percentage="(100 * interval) / 30" :color="theme.primaryColor" :show-indicator="false" /> <n-progress :percentage="(100 * interval) / 30" :color="theme.primaryColor" :show-indicator="false" />
<div style="text-align: center">Next in {{ String(Math.floor(30 - interval)).padStart(2, '0') }}s</div> <div style="text-align: center">Next in {{ String(Math.floor(30 - interval)).padStart(2, '0') }}s</div>
</div> </div>
<n-space justify="center" vertical align="center" style="margin-top: 10px"> <div mt-4 flex flex-col items-center justify-center gap-3>
<n-image :src="qrcode"></n-image> <n-image :src="qrcode"></n-image>
<c-button :href="keyUri" target="_blank">Open Key URI in new tab</c-button> <c-button :href="keyUri" target="_blank">Open Key URI in new tab</c-button>
</n-space> </div>
</div> </div>
<div style="max-width: 350px"> <div style="max-width: 350px">
<input-copyable <input-copyable

View file

@ -1,10 +1,10 @@
<template> <template>
<div> <div>
<n-space class="labels" item-style="flex: 1 1 0" w-full align="center"> <div class="labels" w-full flex items-center>
<div style="text-align: left">Previous</div> <div flex-1 text-left>Previous</div>
<div style="text-align: center">Current OTP</div> <div flex-1 text-center>Current OTP</div>
<div style="text-align: right">Next</div> <div flex-1 text-right>Next</div>
</n-space> </div>
<n-input-group> <n-input-group>
<n-tooltip trigger="hover" placement="bottom"> <n-tooltip trigger="hover" placement="bottom">
<template #trigger> <template #trigger>
@ -63,7 +63,6 @@ const { tokens } = toRefs(props);
.labels { .labels {
div { div {
text-align: center;
padding: 0 2px 6px 2px; padding: 0 2px 6px 2px;
line-height: 1.25; line-height: 1.25;
} }

View file

@ -26,10 +26,10 @@
</n-form> </n-form>
</n-gi> </n-gi>
<n-gi> <n-gi>
<n-space justify="center" align="center" vertical> <div flex flex-col items-center gap-3>
<n-image :src="qrcode" width="200" /> <n-image :src="qrcode" width="200" />
<c-button @click="download"> Download qr-code </c-button> <c-button @click="download"> Download qr-code </c-button>
</n-space> </div>
</n-gi> </n-gi>
</n-grid> </n-grid>
</c-card> </c-card>

View file

@ -3,10 +3,10 @@
<div class="port"> <div class="port">
{{ port }} {{ port }}
</div> </div>
<n-space justify="center"> <div flex justify-center gap-3>
<c-button @click="copy"> Copy </c-button> <c-button @click="copy"> Copy </c-button>
<c-button @click="refreshPort"> Refresh </c-button> <c-button @click="refreshPort"> Refresh </c-button>
</n-space> </div>
</c-card> </c-card>
</template> </template>

View file

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<c-card title="Arabic to roman"> <c-card title="Arabic to roman">
<n-space align="center" justify="space-between"> <div flex items-center justify-between>
<n-form-item v-bind="validationNumeral as any"> <n-form-item v-bind="validationNumeral as any">
<n-input-number v-model:value="inputNumeral" :min="1" style="width: 200px" :show-button="false" /> <n-input-number v-model:value="inputNumeral" :min="1" style="width: 200px" :show-button="false" />
</n-form-item> </n-form-item>
@ -11,17 +11,17 @@
<c-button autofocus :disabled="validationNumeral.validationStatus === 'error'" @click="copyRoman"> <c-button autofocus :disabled="validationNumeral.validationStatus === 'error'" @click="copyRoman">
Copy Copy
</c-button> </c-button>
</n-space> </div>
</c-card> </c-card>
<c-card title="Roman to arabic" mt-5> <c-card title="Roman to arabic" mt-5>
<n-space align="center" justify="space-between"> <div flex items-center justify-between>
<c-input-text v-model:value="inputRoman" style="width: 200px" :validation="validationRoman" /> <c-input-text v-model:value="inputRoman" style="width: 200px" :validation="validationRoman" />
<div class="result"> <div class="result">
{{ outputNumeral }} {{ outputNumeral }}
</div> </div>
<c-button :disabled="!validationRoman.isValid" @click="copyArabic"> Copy </c-button> <c-button :disabled="!validationRoman.isValid" @click="copyArabic"> Copy </c-button>
</n-space> </div>
</c-card> </c-card>
</div> </div>
</template> </template>

View file

@ -1,12 +1,12 @@
<template> <template>
<div style="flex: 0 0 100%"> <div style="flex: 0 0 100%">
<n-space item-style="flex: 1 1 0" style="margin: 0 auto; max-width: 600px" justify="center"> <div item-style="flex: 1 1 0" style="max-width: 600px" mx-auto flex gap-3>
<n-form-item label="Bits :" v-bind="bitsValidationAttrs as any" label-placement="left" label-width="100"> <n-form-item label="Bits :" v-bind="bitsValidationAttrs as any" label-placement="left" label-width="100">
<n-input-number v-model:value="bits" min="256" max="16384" step="8" /> <n-input-number v-model:value="bits" min="256" max="16384" step="8" />
</n-form-item> </n-form-item>
<c-button @click="refreshCerts">Refresh key-pair</c-button> <c-button @click="refreshCerts">Refresh key-pair</c-button>
</n-space> </div>
</div> </div>
<div> <div>

View file

@ -13,9 +13,9 @@
></n-input> ></n-input>
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center>
<c-button :disabled="slug.length === 0" @click="copy">Copy slug</c-button> <c-button :disabled="slug.length === 0" @click="copy">Copy slug</c-button>
</n-space> </div>
</div> </div>
</template> </template>

View file

@ -1,7 +1,7 @@
<template> <template>
<div style="flex: 0 0 100%"> <div style="flex: 0 0 100%">
<n-space item-style="flex:1 1 0" style="margin: 0 auto; max-width: 600px" :vertical="styleStore.isSmallScreen"> <div mx-auto style="max-width: 600px" flex gap-2 :class="{ 'flex-col': styleStore.isSmallScreen }">
<n-form-item label="Dialect" label-width="500"> <n-form-item label="Dialect" label-width="500" flex-1>
<n-select <n-select
v-model:value="config.language" v-model:value="config.language"
:options="[ :options="[
@ -21,7 +21,7 @@
]" ]"
/> />
</n-form-item> </n-form-item>
<n-form-item label="Keyword case"> <n-form-item label="Keyword case" flex-1>
<n-select <n-select
v-model:value="config.keywordCase" v-model:value="config.keywordCase"
:options="[ :options="[
@ -31,7 +31,7 @@
]" ]"
/> />
</n-form-item> </n-form-item>
<n-form-item label="Indent style"> <n-form-item label="Indent style" flex-1>
<n-select <n-select
v-model:value="config.indentStyle" v-model:value="config.indentStyle"
:options="[ :options="[
@ -41,7 +41,7 @@
]" ]"
/> />
</n-form-item> </n-form-item>
</n-space> </div>
</div> </div>
<n-form-item label="Your SQL query"> <n-form-item label="Your SQL query">

View file

@ -1,24 +1,24 @@
<template> <template>
<div> <div>
<n-form label-placement="left" label-width="100"> <n-form label-placement="left" label-width="100">
<n-space item-style="flex:1 1 0"> <div flex gap-3>
<n-form-item label="Width (in px)"> <n-form-item label="Width (in px)" flex-1>
<n-input-number v-model:value="width" placeholder="SVG width..." min="1" /> <n-input-number v-model:value="width" placeholder="SVG width..." min="1" />
</n-form-item> </n-form-item>
<n-form-item label="Background"> <n-form-item label="Background" flex-1>
<n-color-picker v-model:value="bgColor" :modes="['hex']" /> <n-color-picker v-model:value="bgColor" :modes="['hex']" />
</n-form-item> </n-form-item>
</n-space> </div>
<n-space item-style="flex:1 1 0"> <div flex gap-3>
<n-form-item label="Height (in px)"> <n-form-item label="Height (in px)" flex-1>
<n-input-number v-model:value="height" placeholder="SVG height..." min="1" /> <n-input-number v-model:value="height" placeholder="SVG height..." min="1" />
</n-form-item> </n-form-item>
<n-form-item label="Text color"> <n-form-item label="Text color" flex-1>
<n-color-picker v-model:value="fgColor" :modes="['hex']" /> <n-color-picker v-model:value="fgColor" :modes="['hex']" />
</n-form-item> </n-form-item>
</n-space> </div>
<n-space item-style="flex:1 1 0"> <div flex gap-3>
<n-form-item label="Font size"> <n-form-item label="Font size" flex-1>
<n-input-number v-model:value="fontSize" placeholder="Font size..." min="1" /> <n-input-number v-model:value="fontSize" placeholder="Font size..." min="1" />
</n-form-item> </n-form-item>
@ -29,8 +29,9 @@
label-position="left" label-position="left"
label-width="100px" label-width="100px"
label-align="right" label-align="right"
flex-1
/> />
</n-space> </div>
<n-form-item label="Use exact size" label-placement="left"> <n-form-item label="Use exact size" label-placement="left">
<n-switch v-model:value="useExactSize" /> <n-switch v-model:value="useExactSize" />
</n-form-item> </n-form-item>
@ -43,16 +44,14 @@
<textarea-copyable :value="base64" copy-placement="none" /> <textarea-copyable :value="base64" copy-placement="none" />
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center gap-3>
<c-button @click="copySVG()">Copy svg</c-button> <c-button @click="copySVG()">Copy svg</c-button>
<c-button @click="copyBase64()">Copy base64</c-button> <c-button @click="copyBase64()">Copy base64</c-button>
<c-button @click="download()">Download svg</c-button> <c-button @click="download()">Download svg</c-button>
</n-space> </div>
</div> </div>
<n-space vertical justify="start">
<img :src="base64" alt="Image" /> <img :src="base64" alt="Image" />
</n-space>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View file

@ -2,12 +2,12 @@
<c-card> <c-card>
<n-input v-model:value="text" type="textarea" placeholder="Your text..." rows="5" /> <n-input v-model:value="text" type="textarea" placeholder="Your text..." rows="5" />
<n-space justify="space-around" mt-5> <div mt-5 flex>
<n-statistic label="Character count" :value="text.length" /> <n-statistic label="Character count" :value="text.length" flex-1 />
<n-statistic label="Word count" :value="text === '' ? 0 : text.split(/\s+/).length" /> <n-statistic label="Word count" :value="text === '' ? 0 : text.split(/\s+/).length" flex-1 />
<n-statistic label="Line count" :value="text === '' ? 0 : text.split(/\r\n|\r|\n/).length" /> <n-statistic label="Line count" :value="text === '' ? 0 : text.split(/\r\n|\r|\n/).length" flex-1 />
<n-statistic label="Byte size" :value="formatBytes(getStringSizeInBytes(text))" /> <n-statistic label="Byte size" :value="formatBytes(getStringSizeInBytes(text))" flex-1 />
</n-space> </div>
</c-card> </c-card>
</template> </template>

View file

@ -8,16 +8,16 @@
mb-5 mb-5
/> />
<n-space v-if="natoText" vertical> <div v-if="natoText">
<n-text>Your text in NATO phonetic alphabet</n-text> <n-text mb-1 block>Your text in NATO phonetic alphabet</n-text>
<c-card> <c-card>
{{ natoText }} {{ natoText }}
</c-card> </c-card>
<n-space justify="center"> <div mt-3 flex justify-center>
<c-button autofocus @click="copy"> Copy NATO string </c-button> <c-button autofocus @click="copy"> Copy NATO string </c-button>
</n-space> </div>
</n-space> </div>
</div> </div>
</template> </template>

View file

@ -2,7 +2,7 @@
<div> <div>
<c-card> <c-card>
<n-form label-placement="left" label-width="140"> <n-form label-placement="left" label-width="140">
<n-space justify="center" item-style="padding: 0" :size="0"> <div flex justify-center>
<div> <div>
<n-form-item label="Uppercase (ABC...)"> <n-form-item label="Uppercase (ABC...)">
<n-switch v-model:value="withUppercase" /> <n-switch v-model:value="withUppercase" />
@ -22,7 +22,7 @@
<n-switch v-model:value="withSymbols" /> <n-switch v-model:value="withSymbols" />
</n-form-item> </n-form-item>
</div> </div>
</n-space> </div>
</n-form> </n-form>
<n-form-item :label="`Length (${length})`" label-placement="left"> <n-form-item :label="`Length (${length})`" label-placement="left">
@ -42,10 +42,10 @@
spellcheck="false" spellcheck="false"
/> />
<n-space justify="center" mt-5> <div mt-5 flex justify-center gap-3>
<c-button @click="copy"> Copy </c-button> <c-button @click="copy"> Copy </c-button>
<c-button @click="refreshToken"> Refresh </c-button> <c-button @click="refreshToken"> Refresh </c-button>
</n-space> </div>
</c-card> </c-card>
</div> </div>
</template> </template>

View file

@ -23,9 +23,9 @@
/> />
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center>
<c-button @click="copyEncoded"> Copy </c-button> <c-button @click="copyEncoded"> Copy </c-button>
</n-space> </div>
</c-card> </c-card>
<c-card title="Decode"> <c-card title="Decode">
<n-form-item <n-form-item
@ -51,9 +51,9 @@
/> />
</n-form-item> </n-form-item>
<n-space justify="center"> <div flex justify-center>
<c-button @click="copyDecoded"> Copy </c-button> <c-button @click="copyDecoded"> Copy </c-button>
</n-space> </div>
</c-card> </c-card>
</template> </template>

View file

@ -12,7 +12,7 @@
</template> </template>
</n-page-header> </n-page-header>
<n-space mt-5> <div mt-5 flex gap-2>
<span v-for="{ label, getValue } in content" :key="label"> <span v-for="{ label, getValue } in content" :key="label">
<n-tooltip v-if="getValue(userAgentInfo)" trigger="hover"> <n-tooltip v-if="getValue(userAgentInfo)" trigger="hover">
<template #trigger> <template #trigger>
@ -23,12 +23,12 @@
{{ label }} {{ label }}
</n-tooltip> </n-tooltip>
</span> </span>
</n-space> </div>
<n-space vertical> <div flex flex-col>
<span v-for="{ label, getValue, undefinedFallback } in content" :key="label"> <span v-for="{ label, getValue, undefinedFallback } in content" :key="label">
<n-text v-if="getValue(userAgentInfo) === undefined" depth="3">{{ undefinedFallback }}</n-text> <n-text v-if="getValue(userAgentInfo) === undefined" depth="3">{{ undefinedFallback }}</n-text>
</span> </span>
</n-space> </div>
</c-card> </c-card>
</n-gi> </n-gi>
</n-grid> </n-grid>

View file

@ -1,9 +1,9 @@
<template> <template>
<n-space vertical :size="20"> <div>
<n-space align="center" justify="center"> <div flex items-center justify-center gap-3>
Quantity : Quantity :
<n-input-number v-model:value="count" :min="1" :max="50" placeholder="UUID quantity" /> <n-input-number v-model:value="count" :min="1" :max="50" placeholder="UUID quantity" />
</n-space> </div>
<n-input <n-input
style="text-align: center; font-family: monospace" style="text-align: center; font-family: monospace"
@ -16,13 +16,14 @@
autocorrect="off" autocorrect="off"
autocapitalize="off" autocapitalize="off"
spellcheck="false" spellcheck="false"
my-3
/> />
<n-space justify="center"> <div flex justify-center gap-3>
<c-button autofocus @click="copy"> Copy </c-button> <c-button autofocus @click="copy"> Copy </c-button>
<c-button @click="refreshUUIDs"> Refresh </c-button> <c-button @click="refreshUUIDs"> Refresh </c-button>
</n-space> </div>
</n-space> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">