mirror of
				https://github.com/CorentinTh/it-tools.git
				synced 2025-11-03 18:37:00 -05:00 
			
		
		
		
	refactor(style): updated linter config
This commit is contained in:
		
							parent
							
								
									39746e07c5
								
							
						
					
					
						commit
						6b58ec554a
					
				@ -3,7 +3,7 @@ require('@rushstack/eslint-patch/modern-module-resolution');
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
  root: true,
 | 
					  root: true,
 | 
				
			||||||
  extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-typescript/recommended'],
 | 
					  extends: ['plugin:vue/vue3-essential', 'eslint:recommended', 'plugin:vue/vue3-recommended', '@vue/eslint-config-typescript/recommended'],
 | 
				
			||||||
  env: {
 | 
					  env: {
 | 
				
			||||||
    'vue/setup-compiler-macros': true,
 | 
					    'vue/setup-compiler-macros': true,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,10 @@ const themeOverrides = computed(() => styleStore.isDarkTheme ? darkThemeOverride
 | 
				
			|||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-config-provider :theme="theme" :theme-overrides="themeOverrides">
 | 
					  <n-config-provider
 | 
				
			||||||
 | 
					    :theme="theme"
 | 
				
			||||||
 | 
					    :theme-overrides="themeOverrides"
 | 
				
			||||||
 | 
					  >
 | 
				
			||||||
    <n-global-style />
 | 
					    <n-global-style />
 | 
				
			||||||
    <n-message-provider placement="bottom">
 | 
					    <n-message-provider placement="bottom">
 | 
				
			||||||
      <component :is="layout">
 | 
					      <component :is="layout">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,26 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-layout has-sider>
 | 
					  <n-layout has-sider>
 | 
				
			||||||
        <n-layout-sider bordered collapse-mode="width" :collapsed-width="0" :width="240" :collapsed="isMenuCollapsed"
 | 
					    <n-layout-sider
 | 
				
			||||||
            @collapse="isMenuCollapsed = true" @expand="isMenuCollapsed = false" :show-trigger="false"
 | 
					      bordered
 | 
				
			||||||
            :native-scrollbar="false" :position="siderPosition">
 | 
					      collapse-mode="width"
 | 
				
			||||||
 | 
					      :collapsed-width="0"
 | 
				
			||||||
 | 
					      :width="240"
 | 
				
			||||||
 | 
					      :collapsed="isMenuCollapsed"
 | 
				
			||||||
 | 
					      :show-trigger="false"
 | 
				
			||||||
 | 
					      :native-scrollbar="false"
 | 
				
			||||||
 | 
					      :position="siderPosition"
 | 
				
			||||||
 | 
					      @collapse="isMenuCollapsed = true"
 | 
				
			||||||
 | 
					      @expand="isMenuCollapsed = false"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <slot name="sider" />
 | 
					      <slot name="sider" />
 | 
				
			||||||
    </n-layout-sider>
 | 
					    </n-layout-sider>
 | 
				
			||||||
    <n-layout class="content">
 | 
					    <n-layout class="content">
 | 
				
			||||||
      <slot name="content" />
 | 
					      <slot name="content" />
 | 
				
			||||||
            <div class="overlay" v-show="isSmallScreen && !isMenuCollapsed" @click="isMenuCollapsed = true" />
 | 
					      <div
 | 
				
			||||||
 | 
					        v-show="isSmallScreen && !isMenuCollapsed"
 | 
				
			||||||
 | 
					        class="overlay"
 | 
				
			||||||
 | 
					        @click="isMenuCollapsed = true"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </n-layout>
 | 
					    </n-layout>
 | 
				
			||||||
  </n-layout>
 | 
					  </n-layout>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -33,11 +33,22 @@ function onSelect(path: string) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="search-bar">
 | 
					  <div class="search-bar">
 | 
				
			||||||
        <n-auto-complete :options="options" v-model:value="queryString" :input-props="{ autocomplete: 'disabled' }"
 | 
					    <n-auto-complete
 | 
				
			||||||
            :on-select="onSelect">
 | 
					      v-model:value="queryString"
 | 
				
			||||||
 | 
					      :options="options"
 | 
				
			||||||
 | 
					      :input-props="{ autocomplete: 'disabled' }"
 | 
				
			||||||
 | 
					      :on-select="onSelect"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <template #default="{ handleInput, handleBlur, handleFocus, value: slotValue }">
 | 
					      <template #default="{ handleInput, handleBlur, handleFocus, value: slotValue }">
 | 
				
			||||||
                <n-input round clearable placeholder="Search a tool..." :value="slotValue" @input="handleInput"
 | 
					        <n-input
 | 
				
			||||||
                    @focus="handleFocus" @blur="handleBlur">
 | 
					          round
 | 
				
			||||||
 | 
					          clearable
 | 
				
			||||||
 | 
					          placeholder="Search a tool..."
 | 
				
			||||||
 | 
					          :value="slotValue"
 | 
				
			||||||
 | 
					          @input="handleInput"
 | 
				
			||||||
 | 
					          @focus="handleFocus"
 | 
				
			||||||
 | 
					          @blur="handleBlur"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <template #prefix>
 | 
					          <template #prefix>
 | 
				
			||||||
            <n-icon :component="SearchRound" />
 | 
					            <n-icon :component="SearchRound" />
 | 
				
			||||||
          </template>
 | 
					          </template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,21 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <router-link :to="tool.path">
 | 
					  <router-link :to="tool.path">
 | 
				
			||||||
    <n-card class="tool-card">
 | 
					    <n-card class="tool-card">
 | 
				
			||||||
            <n-icon class="icon" size="40" :component="tool.icon" />
 | 
					      <n-icon
 | 
				
			||||||
 | 
					        class="icon"
 | 
				
			||||||
 | 
					        size="40"
 | 
				
			||||||
 | 
					        :component="tool.icon"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
      <n-h3 class="title">
 | 
					      <n-h3 class="title">
 | 
				
			||||||
        <n-ellipsis>{{ tool.name }}</n-ellipsis>
 | 
					        <n-ellipsis>{{ tool.name }}</n-ellipsis>
 | 
				
			||||||
      </n-h3>
 | 
					      </n-h3>
 | 
				
			||||||
      <div class="description">
 | 
					      <div class="description">
 | 
				
			||||||
                <n-ellipsis :line-clamp="2" :tooltip="false">{{ tool.description }}</n-ellipsis>
 | 
					        <n-ellipsis
 | 
				
			||||||
 | 
					          :line-clamp="2"
 | 
				
			||||||
 | 
					          :tooltip="false"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          {{ tool.description }}
 | 
				
			||||||
 | 
					        </n-ellipsis>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </router-link>
 | 
					  </router-link>
 | 
				
			||||||
 | 
				
			|||||||
@ -32,83 +32,198 @@ const m = toolsByCategory.map(category => ({
 | 
				
			|||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <menu-layout class="menu-layout" :class="{ isSmallScreen: styleStore.isSmallScreen }">
 | 
					  <menu-layout
 | 
				
			||||||
 | 
					    class="menu-layout"
 | 
				
			||||||
        <template v-slot:sider>
 | 
					    :class="{ isSmallScreen: styleStore.isSmallScreen }"
 | 
				
			||||||
            <router-link to="/" class="hero-wrapper">
 | 
					  >
 | 
				
			||||||
 | 
					    <template #sider>
 | 
				
			||||||
 | 
					      <router-link
 | 
				
			||||||
 | 
					        to="/"
 | 
				
			||||||
 | 
					        class="hero-wrapper"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <hero-gradient class="gradient" />
 | 
					        <hero-gradient class="gradient" />
 | 
				
			||||||
        <div class="text-wrapper">
 | 
					        <div class="text-wrapper">
 | 
				
			||||||
                    <div class="title">IT - TOOLS</div>
 | 
					          <div class="title">
 | 
				
			||||||
 | 
					            IT - TOOLS
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
          <div class="divider" />
 | 
					          <div class="divider" />
 | 
				
			||||||
                    <div class="subtitle">Handy tools for developers</div>
 | 
					          <div class="subtitle">
 | 
				
			||||||
 | 
					            Handy tools for developers
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
      </router-link>
 | 
					      </router-link>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div class="sider-content">
 | 
					      <div class="sider-content">
 | 
				
			||||||
                <n-space v-if="styleStore.isSmallScreen" justify="center">
 | 
					        <n-space
 | 
				
			||||||
                    <n-button size="large" circle quaternary tag="a" href="https://github.com/CorentinTh/it-tools"
 | 
					          v-if="styleStore.isSmallScreen"
 | 
				
			||||||
                        rel="noopener" target="_blank">
 | 
					          justify="center"
 | 
				
			||||||
                        <n-icon size="25" :component="BrandGithub" />
 | 
					        >
 | 
				
			||||||
 | 
					          <n-button
 | 
				
			||||||
 | 
					            size="large"
 | 
				
			||||||
 | 
					            circle
 | 
				
			||||||
 | 
					            quaternary
 | 
				
			||||||
 | 
					            tag="a"
 | 
				
			||||||
 | 
					            href="https://github.com/CorentinTh/it-tools"
 | 
				
			||||||
 | 
					            rel="noopener"
 | 
				
			||||||
 | 
					            target="_blank"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <n-icon
 | 
				
			||||||
 | 
					              size="25"
 | 
				
			||||||
 | 
					              :component="BrandGithub"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-button>
 | 
					          </n-button>
 | 
				
			||||||
                    <n-button size="large" circle quaternary tag="a" href="https://twitter.com/cthmsst" rel="noopener"
 | 
					          <n-button
 | 
				
			||||||
                        target="_blank">
 | 
					            size="large"
 | 
				
			||||||
                        <n-icon size="25" :component="BrandTwitter" />
 | 
					            circle
 | 
				
			||||||
 | 
					            quaternary
 | 
				
			||||||
 | 
					            tag="a"
 | 
				
			||||||
 | 
					            href="https://twitter.com/cthmsst"
 | 
				
			||||||
 | 
					            rel="noopener"
 | 
				
			||||||
 | 
					            target="_blank"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <n-icon
 | 
				
			||||||
 | 
					              size="25"
 | 
				
			||||||
 | 
					              :component="BrandTwitter"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-button>
 | 
					          </n-button>
 | 
				
			||||||
                    <n-button size="large" circle quaternary @click="styleStore.isDarkTheme = !styleStore.isDarkTheme">
 | 
					          <n-button
 | 
				
			||||||
                        <n-icon size="25" v-if="styleStore.isDarkTheme" :component="Sun" />
 | 
					            size="large"
 | 
				
			||||||
                        <n-icon size="25" v-else :component="Moon" />
 | 
					            circle
 | 
				
			||||||
 | 
					            quaternary
 | 
				
			||||||
 | 
					            @click="styleStore.isDarkTheme = !styleStore.isDarkTheme"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <n-icon
 | 
				
			||||||
 | 
					              v-if="styleStore.isDarkTheme"
 | 
				
			||||||
 | 
					              size="25"
 | 
				
			||||||
 | 
					              :component="Sun"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					            <n-icon
 | 
				
			||||||
 | 
					              v-else
 | 
				
			||||||
 | 
					              size="25"
 | 
				
			||||||
 | 
					              :component="Moon"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-button>
 | 
					          </n-button>
 | 
				
			||||||
        </n-space>
 | 
					        </n-space>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <n-menu :value="route.name" class="menu" :collapsed-width="64" :collapsed-icon-size="22" :options="m"
 | 
					        <n-menu
 | 
				
			||||||
                    v-model:value="activeKey" :indent="20" />
 | 
					          v-model:value="activeKey"
 | 
				
			||||||
 | 
					          :value="route.name"
 | 
				
			||||||
 | 
					          class="menu"
 | 
				
			||||||
 | 
					          :collapsed-width="64"
 | 
				
			||||||
 | 
					          :collapsed-icon-size="22"
 | 
				
			||||||
 | 
					          :options="m"
 | 
				
			||||||
 | 
					          :indent="20"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <template v-slot:content>
 | 
					    <template #content>
 | 
				
			||||||
      <div class="navigation">
 | 
					      <div class="navigation">
 | 
				
			||||||
                <n-button :size="styleStore.isSmallScreen ? 'medium' : 'large'" circle quaternary
 | 
					        <n-button
 | 
				
			||||||
                    @click="styleStore.isMenuCollapsed = !styleStore.isMenuCollapsed" aria-label="Toogle menu">
 | 
					          :size="styleStore.isSmallScreen ? 'medium' : 'large'"
 | 
				
			||||||
                    <n-icon size="25" :component="Menu2" />
 | 
					          circle
 | 
				
			||||||
 | 
					          quaternary
 | 
				
			||||||
 | 
					          aria-label="Toogle menu"
 | 
				
			||||||
 | 
					          @click="styleStore.isMenuCollapsed = !styleStore.isMenuCollapsed"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            size="25"
 | 
				
			||||||
 | 
					            :component="Menu2"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
        </n-button>
 | 
					        </n-button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <router-link to="/" #="{ navigate, href }" custom>
 | 
					        <router-link
 | 
				
			||||||
                    <n-button tag="a" :href="href" @click="navigate"
 | 
					          to="/"
 | 
				
			||||||
                        :size="styleStore.isSmallScreen ? 'medium' : 'large'" circle quaternary aria-label="Home">
 | 
					          #="{ navigate, href }"
 | 
				
			||||||
                        <n-icon size="25" :component="Home2" />
 | 
					          custom
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-button
 | 
				
			||||||
 | 
					            tag="a"
 | 
				
			||||||
 | 
					            :href="href"
 | 
				
			||||||
 | 
					            :size="styleStore.isSmallScreen ? 'medium' : 'large'"
 | 
				
			||||||
 | 
					            circle
 | 
				
			||||||
 | 
					            quaternary
 | 
				
			||||||
 | 
					            aria-label="Home"
 | 
				
			||||||
 | 
					            @click="navigate"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <n-icon
 | 
				
			||||||
 | 
					              size="25"
 | 
				
			||||||
 | 
					              :component="Home2"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-button>
 | 
					          </n-button>
 | 
				
			||||||
        </router-link>
 | 
					        </router-link>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <search-bar />
 | 
					        <search-bar />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <n-button type="primary" tag="a" href="https://github.com/sponsors/CorentinTh" rel="noopener"
 | 
					        <n-button
 | 
				
			||||||
                    target="_blank">
 | 
					          type="primary"
 | 
				
			||||||
                    <n-icon :component="Heart" style="margin-right: 5px;" v-if="!styleStore.isSmallScreen" />
 | 
					          tag="a"
 | 
				
			||||||
 | 
					          href="https://github.com/sponsors/CorentinTh"
 | 
				
			||||||
 | 
					          rel="noopener"
 | 
				
			||||||
 | 
					          target="_blank"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            v-if="!styleStore.isSmallScreen"
 | 
				
			||||||
 | 
					            :component="Heart"
 | 
				
			||||||
 | 
					            style="margin-right: 5px;"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
          Sponsor
 | 
					          Sponsor
 | 
				
			||||||
        </n-button>
 | 
					        </n-button>
 | 
				
			||||||
                <n-button size="large" circle quaternary tag="a" href="https://github.com/CorentinTh/it-tools"
 | 
					        <n-button
 | 
				
			||||||
                    rel="noopener" target="_blank" v-if="!styleStore.isSmallScreen" aria-label="Github repository">
 | 
					          v-if="!styleStore.isSmallScreen"
 | 
				
			||||||
                    <n-icon size="25" :component="BrandGithub" />
 | 
					          size="large"
 | 
				
			||||||
 | 
					          circle
 | 
				
			||||||
 | 
					          quaternary
 | 
				
			||||||
 | 
					          tag="a"
 | 
				
			||||||
 | 
					          href="https://github.com/CorentinTh/it-tools"
 | 
				
			||||||
 | 
					          rel="noopener"
 | 
				
			||||||
 | 
					          target="_blank"
 | 
				
			||||||
 | 
					          aria-label="Github repository"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            size="25"
 | 
				
			||||||
 | 
					            :component="BrandGithub"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
        </n-button>
 | 
					        </n-button>
 | 
				
			||||||
                <n-button size="large" circle quaternary tag="a" href="https://twitter.com/cthmsst" rel="noopener"
 | 
					        <n-button
 | 
				
			||||||
                    target="_blank" v-if="!styleStore.isSmallScreen" aria-label="Twitter account">
 | 
					          v-if="!styleStore.isSmallScreen"
 | 
				
			||||||
                    <n-icon size="25" :component="BrandTwitter" />
 | 
					          size="large"
 | 
				
			||||||
 | 
					          circle
 | 
				
			||||||
 | 
					          quaternary
 | 
				
			||||||
 | 
					          tag="a"
 | 
				
			||||||
 | 
					          href="https://twitter.com/cthmsst"
 | 
				
			||||||
 | 
					          rel="noopener"
 | 
				
			||||||
 | 
					          target="_blank"
 | 
				
			||||||
 | 
					          aria-label="Twitter account"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            size="25"
 | 
				
			||||||
 | 
					            :component="BrandTwitter"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
        </n-button>
 | 
					        </n-button>
 | 
				
			||||||
                <n-button size="large" circle quaternary @click="styleStore.isDarkTheme = !styleStore.isDarkTheme"
 | 
					        <n-button
 | 
				
			||||||
                    v-if="!styleStore.isSmallScreen" aria-label="Toogle theme">
 | 
					          v-if="!styleStore.isSmallScreen"
 | 
				
			||||||
                    <n-icon size="25" v-if="styleStore.isDarkTheme" :component="Sun" />
 | 
					          size="large"
 | 
				
			||||||
                    <n-icon size="25" v-else :component="Moon" />
 | 
					          circle
 | 
				
			||||||
 | 
					          quaternary
 | 
				
			||||||
 | 
					          aria-label="Toogle theme"
 | 
				
			||||||
 | 
					          @click="styleStore.isDarkTheme = !styleStore.isDarkTheme"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            v-if="styleStore.isDarkTheme"
 | 
				
			||||||
 | 
					            size="25"
 | 
				
			||||||
 | 
					            :component="Sun"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            v-else
 | 
				
			||||||
 | 
					            size="25"
 | 
				
			||||||
 | 
					            :component="Moon"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
        </n-button>
 | 
					        </n-button>
 | 
				
			||||||
 | 
					 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <slot />
 | 
					      <slot />
 | 
				
			||||||
 | 
					 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
 | 
					 | 
				
			||||||
  </menu-layout>
 | 
					  </menu-layout>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -29,7 +29,9 @@ useHead(head)
 | 
				
			|||||||
      <div class="tool-header">
 | 
					      <div class="tool-header">
 | 
				
			||||||
        <n-h1>{{ route.meta.name }}</n-h1>
 | 
					        <n-h1>{{ route.meta.name }}</n-h1>
 | 
				
			||||||
        <div class="separator" />
 | 
					        <div class="separator" />
 | 
				
			||||||
                <div class="description">{{ route.meta.description }}</div>
 | 
					        <div class="description">
 | 
				
			||||||
 | 
					          {{ route.meta.description }}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <slot />
 | 
					      <slot />
 | 
				
			||||||
 | 
				
			|||||||
@ -10,14 +10,20 @@
 | 
				
			|||||||
      description="Sorry, this page does not seem to extist"
 | 
					      description="Sorry, this page does not seem to extist"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <template #footer>
 | 
					      <template #footer>
 | 
				
			||||||
                <router-link to="/" #="{ navigate, href }" custom>
 | 
					        <router-link
 | 
				
			||||||
 | 
					          to="/"
 | 
				
			||||||
 | 
					          #="{ navigate, href }"
 | 
				
			||||||
 | 
					          custom
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <n-button
 | 
					          <n-button
 | 
				
			||||||
            tag="a"
 | 
					            tag="a"
 | 
				
			||||||
            :href="href"
 | 
					            :href="href"
 | 
				
			||||||
            secondary
 | 
					            secondary
 | 
				
			||||||
                        @click="navigate"
 | 
					 | 
				
			||||||
            type="success"
 | 
					            type="success"
 | 
				
			||||||
                    >Back home</n-button>
 | 
					            @click="navigate"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            Back home
 | 
				
			||||||
 | 
					          </n-button>
 | 
				
			||||||
        </router-link>
 | 
					        </router-link>
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
    </n-result>
 | 
					    </n-result>
 | 
				
			||||||
 | 
				
			|||||||
@ -5,8 +5,15 @@ import ToolCard from '../components/ToolCard.vue';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="home-page">
 | 
					  <div class="home-page">
 | 
				
			||||||
        <n-grid x-gap="12" y-gap="12" cols="1 400:2 800:3 1200:4 2000:8">
 | 
					    <n-grid
 | 
				
			||||||
            <n-gi v-for="tool in toolsWithCategory" :key="tool.name">
 | 
					      x-gap="12"
 | 
				
			||||||
 | 
					      y-gap="12"
 | 
				
			||||||
 | 
					      cols="1 400:2 800:3 1200:4 2000:8"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <n-gi
 | 
				
			||||||
 | 
					        v-for="tool in toolsWithCategory"
 | 
				
			||||||
 | 
					        :key="tool.name"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <tool-card :tool="tool" />
 | 
					        <tool-card :tool="tool" />
 | 
				
			||||||
      </n-gi>
 | 
					      </n-gi>
 | 
				
			||||||
    </n-grid>
 | 
					    </n-grid>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +1,39 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card title="Text to base64">
 | 
					  <n-card title="Text to base64">
 | 
				
			||||||
    <n-input v-model:value="textInput" type="textarea" placeholder="Put your string here..." />
 | 
					    <n-input
 | 
				
			||||||
    <n-input :value="textBase64" type="textarea" readonly />
 | 
					      v-model:value="textInput"
 | 
				
			||||||
 | 
					      type="textarea"
 | 
				
			||||||
 | 
					      placeholder="Put your string here..."
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					    <n-input
 | 
				
			||||||
 | 
					      :value="textBase64"
 | 
				
			||||||
 | 
					      type="textarea"
 | 
				
			||||||
 | 
					      readonly
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
    <n-space justify="center">
 | 
					    <n-space justify="center">
 | 
				
			||||||
      <n-button @click="copyTextBase64()" secondary>Copy</n-button>
 | 
					      <n-button
 | 
				
			||||||
 | 
					        secondary
 | 
				
			||||||
 | 
					        @click="copyTextBase64()"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Copy
 | 
				
			||||||
 | 
					      </n-button>
 | 
				
			||||||
    </n-space>
 | 
					    </n-space>
 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <n-card title="File to base64">
 | 
					  <n-card title="File to base64">
 | 
				
			||||||
    <n-upload :show-file-list="true" :on-before-upload="onUpload" list-type="image" v-model:file-list="fileList">
 | 
					    <n-upload
 | 
				
			||||||
 | 
					      v-model:file-list="fileList"
 | 
				
			||||||
 | 
					      :show-file-list="true"
 | 
				
			||||||
 | 
					      :on-before-upload="onUpload"
 | 
				
			||||||
 | 
					      list-type="image"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <n-upload-dragger>
 | 
					      <n-upload-dragger>
 | 
				
			||||||
        <div style="margin-bottom: 12px">
 | 
					        <div style="margin-bottom: 12px">
 | 
				
			||||||
          <n-icon size="35" :depth="3" :component="Upload" />
 | 
					          <n-icon
 | 
				
			||||||
 | 
					            size="35"
 | 
				
			||||||
 | 
					            :depth="3"
 | 
				
			||||||
 | 
					            :component="Upload"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <n-text style="font-size: 14px">
 | 
					        <n-text style="font-size: 14px">
 | 
				
			||||||
          Click or drag a file to this area to upload
 | 
					          Click or drag a file to this area to upload
 | 
				
			||||||
@ -19,12 +41,20 @@
 | 
				
			|||||||
      </n-upload-dragger>
 | 
					      </n-upload-dragger>
 | 
				
			||||||
    </n-upload>
 | 
					    </n-upload>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <n-input :value="fileBase64" type="textarea" readonly />
 | 
					    <n-input
 | 
				
			||||||
 | 
					      :value="fileBase64"
 | 
				
			||||||
 | 
					      type="textarea"
 | 
				
			||||||
 | 
					      readonly
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
    <n-space justify="center">
 | 
					    <n-space justify="center">
 | 
				
			||||||
      <n-button @click="copyFileBase64()" secondary>Copy</n-button>
 | 
					      <n-button
 | 
				
			||||||
 | 
					        secondary
 | 
				
			||||||
 | 
					        @click="copyFileBase64()"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Copy
 | 
				
			||||||
 | 
					      </n-button>
 | 
				
			||||||
    </n-space>
 | 
					    </n-space>
 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
 | 
					 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,18 +1,29 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card>
 | 
					    <n-card>
 | 
				
			||||||
            <n-grid cols="3" x-gap="12">
 | 
					      <n-grid
 | 
				
			||||||
 | 
					        cols="3"
 | 
				
			||||||
 | 
					        x-gap="12"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-gi span="1">
 | 
					        <n-gi span="1">
 | 
				
			||||||
          <n-form-item label="Language:">
 | 
					          <n-form-item label="Language:">
 | 
				
			||||||
                        <n-select v-model:value="language"
 | 
					            <n-select
 | 
				
			||||||
                            :options="Object.keys(languages).map(label => ({ label, value: label }))" />
 | 
					              v-model:value="language"
 | 
				
			||||||
 | 
					              :options="Object.keys(languages).map(label => ({ label, value: label }))"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
        </n-gi>
 | 
					        </n-gi>
 | 
				
			||||||
        <n-gi span="2">
 | 
					        <n-gi span="2">
 | 
				
			||||||
                    <n-form-item label="Entropy (seed):" :feedback="entropyValidation.message"
 | 
					          <n-form-item
 | 
				
			||||||
                        :validation-status="entropyValidation.status">
 | 
					            label="Entropy (seed):"
 | 
				
			||||||
 | 
					            :feedback="entropyValidation.message"
 | 
				
			||||||
 | 
					            :validation-status="entropyValidation.status"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            <n-input-group>
 | 
					            <n-input-group>
 | 
				
			||||||
                            <n-input v-model:value="entropy" placeholder="Your string..." />
 | 
					              <n-input
 | 
				
			||||||
 | 
					                v-model:value="entropy"
 | 
				
			||||||
 | 
					                placeholder="Your string..."
 | 
				
			||||||
 | 
					              />
 | 
				
			||||||
              <n-button @click="refreshEntropy">
 | 
					              <n-button @click="refreshEntropy">
 | 
				
			||||||
                <n-icon size="22">
 | 
					                <n-icon size="22">
 | 
				
			||||||
                  <Refresh />
 | 
					                  <Refresh />
 | 
				
			||||||
@ -24,19 +35,30 @@
 | 
				
			|||||||
                </n-icon>
 | 
					                </n-icon>
 | 
				
			||||||
              </n-button>
 | 
					              </n-button>
 | 
				
			||||||
            </n-input-group>
 | 
					            </n-input-group>
 | 
				
			||||||
 | 
					 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
        </n-gi>
 | 
					        </n-gi>
 | 
				
			||||||
      </n-grid>
 | 
					      </n-grid>
 | 
				
			||||||
            <n-form-item label="Passphrase (mnemonic):" :feedback="mnemonicValidation.message"
 | 
					      <n-form-item
 | 
				
			||||||
                :validation-status="mnemonicValidation.status">
 | 
					        label="Passphrase (mnemonic):"
 | 
				
			||||||
 | 
					        :feedback="mnemonicValidation.message"
 | 
				
			||||||
 | 
					        :validation-status="mnemonicValidation.status"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-input-group>
 | 
					        <n-input-group>
 | 
				
			||||||
                    <n-input style="text-align: center; flex: 1;" v-model:value="passphrase"
 | 
					          <n-input
 | 
				
			||||||
                        placeholder="Your mnemonic..." autocomplete="off" autocorrect="off" autocapitalize="off"
 | 
					            v-model:value="passphrase"
 | 
				
			||||||
                        spellcheck="false" />
 | 
					            style="text-align: center; flex: 1;"
 | 
				
			||||||
 | 
					            placeholder="Your mnemonic..."
 | 
				
			||||||
 | 
					            autocomplete="off"
 | 
				
			||||||
 | 
					            autocorrect="off"
 | 
				
			||||||
 | 
					            autocapitalize="off"
 | 
				
			||||||
 | 
					            spellcheck="false"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <n-button @click="copyPassphrase">
 | 
					          <n-button @click="copyPassphrase">
 | 
				
			||||||
                        <n-icon size="22" :component="Copy" />
 | 
					            <n-icon
 | 
				
			||||||
 | 
					              size="22"
 | 
				
			||||||
 | 
					              :component="Copy"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-button>
 | 
					          </n-button>
 | 
				
			||||||
        </n-input-group>
 | 
					        </n-input-group>
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,30 +1,57 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card>
 | 
					  <n-card>
 | 
				
			||||||
    <n-form label-width="100" label-placement="left">
 | 
					    <n-form
 | 
				
			||||||
 | 
					      label-width="100"
 | 
				
			||||||
 | 
					      label-placement="left"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <n-form-item label="color picker:">
 | 
					      <n-form-item label="color picker:">
 | 
				
			||||||
        <n-color-picker v-model:value="hex" @update:value="(v: string) => onInputUpdated(v, 'hex')"
 | 
					        <n-color-picker
 | 
				
			||||||
          placement="bottom-end" />
 | 
					          v-model:value="hex"
 | 
				
			||||||
 | 
					          placement="bottom-end"
 | 
				
			||||||
 | 
					          @update:value="(v: string) => onInputUpdated(v, 'hex')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="color name:">
 | 
					      <n-form-item label="color name:">
 | 
				
			||||||
        <n-input v-model:value="name" :on-input="(v: string) => onInputUpdated(v, 'name')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="name"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'name')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="hex:">
 | 
					      <n-form-item label="hex:">
 | 
				
			||||||
        <n-input v-model:value="hex" :on-input="(v: string) => onInputUpdated(v, 'hex')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="hex"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'hex')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="rgb:">
 | 
					      <n-form-item label="rgb:">
 | 
				
			||||||
        <n-input v-model:value="rgb" :on-input="(v: string) => onInputUpdated(v, 'rgb')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="rgb"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'rgb')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="hsl:">
 | 
					      <n-form-item label="hsl:">
 | 
				
			||||||
        <n-input v-model:value="hsl" :on-input="(v: string) => onInputUpdated(v, 'hsl')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="hsl"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'hsl')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="hwb:">
 | 
					      <n-form-item label="hwb:">
 | 
				
			||||||
        <n-input v-model:value="hwb" :on-input="(v: string) => onInputUpdated(v, 'hwb')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="hwb"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'hwb')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="lch:">
 | 
					      <n-form-item label="lch:">
 | 
				
			||||||
        <n-input v-model:value="lch" :on-input="(v: string) => onInputUpdated(v, 'lch')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="lch"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'lch')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
      <n-form-item label="cmyk:">
 | 
					      <n-form-item label="cmyk:">
 | 
				
			||||||
        <n-input v-model:value="cmyk" :on-input="(v: string) => onInputUpdated(v, 'cmyk')" />
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="cmyk"
 | 
				
			||||||
 | 
					          :on-input="(v: string) => onInputUpdated(v, 'cmyk')"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
    </n-form>
 | 
					    </n-form>
 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,16 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card>
 | 
					  <n-card>
 | 
				
			||||||
    <n-form-item class="cron" :show-label="false" :feedback="cronValidation.message"
 | 
					    <n-form-item
 | 
				
			||||||
      :validation-status="cronValidation.status">
 | 
					      class="cron"
 | 
				
			||||||
      <n-input v-model:value="cron" size="large" placeholder="* * * * *" />
 | 
					      :show-label="false"
 | 
				
			||||||
 | 
					      :feedback="cronValidation.message"
 | 
				
			||||||
 | 
					      :validation-status="cronValidation.status"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <n-input
 | 
				
			||||||
 | 
					        v-model:value="cron"
 | 
				
			||||||
 | 
					        size="large"
 | 
				
			||||||
 | 
					        placeholder="* * * * *"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </n-form-item>
 | 
					    </n-form-item>
 | 
				
			||||||
    <div class="cron-string">
 | 
					    <div class="cron-string">
 | 
				
			||||||
      {{ cronString }}
 | 
					      {{ cronString }}
 | 
				
			||||||
@ -11,8 +19,11 @@
 | 
				
			|||||||
    <n-divider />
 | 
					    <n-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <n-space justify="center">
 | 
					    <n-space justify="center">
 | 
				
			||||||
 | 
					      <n-form
 | 
				
			||||||
      <n-form :show-feedback="false" label-width="170" label-placement="left">
 | 
					        :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" />
 | 
				
			||||||
        </n-form-item>
 | 
					        </n-form-item>
 | 
				
			||||||
@ -41,16 +52,28 @@
 | 
				
			|||||||
    <n-table size="small">
 | 
					    <n-table size="small">
 | 
				
			||||||
      <thead>
 | 
					      <thead>
 | 
				
			||||||
        <tr>
 | 
					        <tr>
 | 
				
			||||||
          <th class="text-left" scope="col">
 | 
					          <th
 | 
				
			||||||
 | 
					            class="text-left"
 | 
				
			||||||
 | 
					            scope="col"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            Symbol
 | 
					            Symbol
 | 
				
			||||||
          </th>
 | 
					          </th>
 | 
				
			||||||
          <th class="text-left" scope="col">
 | 
					          <th
 | 
				
			||||||
 | 
					            class="text-left"
 | 
				
			||||||
 | 
					            scope="col"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            Meaning
 | 
					            Meaning
 | 
				
			||||||
          </th>
 | 
					          </th>
 | 
				
			||||||
          <th class="text-left" scope="col">
 | 
					          <th
 | 
				
			||||||
 | 
					            class="text-left"
 | 
				
			||||||
 | 
					            scope="col"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            Example
 | 
					            Example
 | 
				
			||||||
          </th>
 | 
					          </th>
 | 
				
			||||||
          <th class="text-left" scope="col">
 | 
					          <th
 | 
				
			||||||
 | 
					            class="text-left"
 | 
				
			||||||
 | 
					            scope="col"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            Equivalent
 | 
					            Equivalent
 | 
				
			||||||
          </th>
 | 
					          </th>
 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
@ -152,7 +175,6 @@
 | 
				
			|||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
      </tbody>
 | 
					      </tbody>
 | 
				
			||||||
    </n-table>
 | 
					    </n-table>
 | 
				
			||||||
 | 
					 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2,25 +2,44 @@
 | 
				
			|||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card>
 | 
					    <n-card>
 | 
				
			||||||
      <n-space justify="center">
 | 
					      <n-space justify="center">
 | 
				
			||||||
                <n-form-item label="Use current date-time ?" label-placement="left" :show-feedback="false">
 | 
					        <n-form-item
 | 
				
			||||||
 | 
					          label="Use current date-time ?"
 | 
				
			||||||
 | 
					          label-placement="left"
 | 
				
			||||||
 | 
					          :show-feedback="false"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <n-switch v-model:value="useCurrentDate" />
 | 
					          <n-switch v-model:value="useCurrentDate" />
 | 
				
			||||||
        </n-form-item>
 | 
					        </n-form-item>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
            <n-form-item :feedback="inputInvalid ? 'Invalid date for the current format' : ''"
 | 
					      <n-form-item
 | 
				
			||||||
                :validation-status="inputInvalid ? 'error' : undefined">
 | 
					        :feedback="inputInvalid ? 'Invalid date for the current format' : ''"
 | 
				
			||||||
 | 
					        :validation-status="inputInvalid ? 'error' : undefined"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-input-group style="flex-grow: 1;">
 | 
					        <n-input-group style="flex-grow: 1;">
 | 
				
			||||||
                    <n-select v-model:value="inputFormat" style="width: 200px;"
 | 
					          <n-select
 | 
				
			||||||
 | 
					            v-model:value="inputFormat"
 | 
				
			||||||
 | 
					            style="width: 200px;"
 | 
				
			||||||
            :options="formats.map(({ name }, i) => ({ label: name, value: i }))"
 | 
					            :options="formats.map(({ name }, i) => ({ label: name, value: i }))"
 | 
				
			||||||
                        :disabled="useCurrentDate" />
 | 
					            :disabled="useCurrentDate"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    <n-input v-model:value="inputDate" :on-input="onDateInputChanged" :disabled="useCurrentDate"
 | 
					          <n-input
 | 
				
			||||||
                        placeholder="Your date string..." />
 | 
					            v-model:value="inputDate"
 | 
				
			||||||
 | 
					            :on-input="onDateInputChanged"
 | 
				
			||||||
 | 
					            :disabled="useCurrentDate"
 | 
				
			||||||
 | 
					            placeholder="Your date string..."
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
        </n-input-group>
 | 
					        </n-input-group>
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
            <n-divider style="margin-top: 0;"></n-divider>
 | 
					      <n-divider style="margin-top: 0;" />
 | 
				
			||||||
            <div v-for="{ name, fromDate } in formats" :key="name" style="margin: 5px 0;">
 | 
					      <div
 | 
				
			||||||
 | 
					        v-for="{ name, fromDate } in formats"
 | 
				
			||||||
 | 
					        :key="name"
 | 
				
			||||||
 | 
					        style="margin: 5px 0;"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-input-group>
 | 
					        <n-input-group>
 | 
				
			||||||
                    <n-input-group-label style="width: 150px;">{{ name }}</n-input-group-label>
 | 
					          <n-input-group-label style="width: 150px;">
 | 
				
			||||||
 | 
					            {{ name }}
 | 
				
			||||||
 | 
					          </n-input-group-label>
 | 
				
			||||||
          <n-input :value="fromDate(date)" />
 | 
					          <n-input :value="fromDate(date)" />
 | 
				
			||||||
        </n-input-group>
 | 
					        </n-input-group>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,10 @@
 | 
				
			|||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card title="Encrypt">
 | 
					    <n-card title="Encrypt">
 | 
				
			||||||
      <n-space item-style="flex: 1 1 0">
 | 
					      <n-space item-style="flex: 1 1 0">
 | 
				
			||||||
                <n-form-item label="Your text:" :show-feedback="false">
 | 
					        <n-form-item
 | 
				
			||||||
 | 
					          label="Your text:"
 | 
				
			||||||
 | 
					          :show-feedback="false"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <n-input
 | 
					          <n-input
 | 
				
			||||||
            v-model:value="cypherInput"
 | 
					            v-model:value="cypherInput"
 | 
				
			||||||
            type="textarea"
 | 
					            type="textarea"
 | 
				
			||||||
@ -11,10 +14,16 @@
 | 
				
			|||||||
          />
 | 
					          />
 | 
				
			||||||
        </n-form-item>
 | 
					        </n-form-item>
 | 
				
			||||||
        <n-space vertical>
 | 
					        <n-space vertical>
 | 
				
			||||||
                    <n-form-item label="Your secret key:" :show-feedback="false">
 | 
					          <n-form-item
 | 
				
			||||||
 | 
					            label="Your secret key:"
 | 
				
			||||||
 | 
					            :show-feedback="false"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            <n-input v-model:value="cypherSecret" />
 | 
					            <n-input v-model:value="cypherSecret" />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
                    <n-form-item label="Encryption algorithm:" :show-feedback="false">
 | 
					          <n-form-item
 | 
				
			||||||
 | 
					            label="Encryption algorithm:"
 | 
				
			||||||
 | 
					            :show-feedback="false"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            <n-select
 | 
					            <n-select
 | 
				
			||||||
              v-model:value="cypherAlgo"
 | 
					              v-model:value="cypherAlgo"
 | 
				
			||||||
              :options="Object.keys(algos).map(label => ({ label, value: label }))"
 | 
					              :options="Object.keys(algos).map(label => ({ label, value: label }))"
 | 
				
			||||||
@ -22,8 +31,11 @@
 | 
				
			|||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
        </n-space>
 | 
					        </n-space>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
            <n-form-item label="Yout text encrypted:" :show-feedback="false">
 | 
					      <n-form-item
 | 
				
			||||||
 | 
					        label="Yout text encrypted:"
 | 
				
			||||||
 | 
					        :show-feedback="false"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-input
 | 
					        <n-input
 | 
				
			||||||
          :value="cypherOutput"
 | 
					          :value="cypherOutput"
 | 
				
			||||||
          type="textarea"
 | 
					          type="textarea"
 | 
				
			||||||
@ -37,10 +49,13 @@
 | 
				
			|||||||
        />
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
        <br />
 | 
					    <br>
 | 
				
			||||||
    <n-card title="Decrypt">
 | 
					    <n-card title="Decrypt">
 | 
				
			||||||
      <n-space item-style="flex: 1 1 0">
 | 
					      <n-space item-style="flex: 1 1 0">
 | 
				
			||||||
                <n-form-item label="Your encrypted text:" :show-feedback="false">
 | 
					        <n-form-item
 | 
				
			||||||
 | 
					          label="Your encrypted text:"
 | 
				
			||||||
 | 
					          :show-feedback="false"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <n-input
 | 
					          <n-input
 | 
				
			||||||
            v-model:value="decryptInput"
 | 
					            v-model:value="decryptInput"
 | 
				
			||||||
            type="textarea"
 | 
					            type="textarea"
 | 
				
			||||||
@ -49,10 +64,16 @@
 | 
				
			|||||||
          />
 | 
					          />
 | 
				
			||||||
        </n-form-item>
 | 
					        </n-form-item>
 | 
				
			||||||
        <n-space vertical>
 | 
					        <n-space vertical>
 | 
				
			||||||
                    <n-form-item label="Your secret key:" :show-feedback="false">
 | 
					          <n-form-item
 | 
				
			||||||
 | 
					            label="Your secret key:"
 | 
				
			||||||
 | 
					            :show-feedback="false"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            <n-input v-model:value="decryptSecret" />
 | 
					            <n-input v-model:value="decryptSecret" />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
                    <n-form-item label="Encryption algorithm:" :show-feedback="false">
 | 
					          <n-form-item
 | 
				
			||||||
 | 
					            label="Encryption algorithm:"
 | 
				
			||||||
 | 
					            :show-feedback="false"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
            <n-select
 | 
					            <n-select
 | 
				
			||||||
              v-model:value="decryptAlgo"
 | 
					              v-model:value="decryptAlgo"
 | 
				
			||||||
              :options="Object.keys(algos).map(label => ({ label, value: label }))"
 | 
					              :options="Object.keys(algos).map(label => ({ label, value: label }))"
 | 
				
			||||||
@ -60,8 +81,11 @@
 | 
				
			|||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
        </n-space>
 | 
					        </n-space>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
            <n-form-item label="Yout decrypted text:" :show-feedback="false">
 | 
					      <n-form-item
 | 
				
			||||||
 | 
					        label="Yout decrypted text:"
 | 
				
			||||||
 | 
					        :show-feedback="false"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-input
 | 
					        <n-input
 | 
				
			||||||
          :value="decryptOutput"
 | 
					          :value="decryptOutput"
 | 
				
			||||||
          type="textarea"
 | 
					          type="textarea"
 | 
				
			||||||
 | 
				
			|||||||
@ -7,14 +7,14 @@
 | 
				
			|||||||
        placeholder="Your string..."
 | 
					        placeholder="Your string..."
 | 
				
			||||||
        :autosize="{ minRows: 3 }"
 | 
					        :autosize="{ minRows: 3 }"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
      <n-select
 | 
					      <n-select
 | 
				
			||||||
        v-model:value="algo"
 | 
					        v-model:value="algo"
 | 
				
			||||||
        :options="Object.keys(algos).map(label => ({ label, value: label }))"
 | 
					        :options="Object.keys(algos).map(label => ({ label, value: label }))"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
      <n-input
 | 
					      <n-input
 | 
				
			||||||
        style="text-align: center;"
 | 
					        style="text-align: center;"
 | 
				
			||||||
        :value="hashedText"
 | 
					        :value="hashedText"
 | 
				
			||||||
@ -27,10 +27,16 @@
 | 
				
			|||||||
        autocapitalize="off"
 | 
					        autocapitalize="off"
 | 
				
			||||||
        spellcheck="false"
 | 
					        spellcheck="false"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
      <n-space justify="center">
 | 
					      <n-space justify="center">
 | 
				
			||||||
                <n-button @click="copy" secondary autofocus>Copy</n-button>
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          autofocus
 | 
				
			||||||
 | 
					          @click="copy"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -2,50 +2,91 @@
 | 
				
			|||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card>
 | 
					    <n-card>
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Input number:</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input-number v-model:value="inputNumber" min="0" />
 | 
					          Input number:
 | 
				
			||||||
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input-number
 | 
				
			||||||
 | 
					          v-model:value="inputNumber"
 | 
				
			||||||
 | 
					          min="0"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Input base:</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input-number v-model:value="inputBase" max="64" min="2" style="width: 100px;" />
 | 
					          Input base:
 | 
				
			||||||
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input-number
 | 
				
			||||||
 | 
					          v-model:value="inputBase"
 | 
				
			||||||
 | 
					          max="64"
 | 
				
			||||||
 | 
					          min="2"
 | 
				
			||||||
 | 
					          style="width: 100px;"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
            <n-divider></n-divider>
 | 
					      <n-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Binary (2):</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 2 })"
 | 
					          Binary (2):
 | 
				
			||||||
                    readonly />
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 2 })"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Octale (8):</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 8 })"
 | 
					          Octale (8):
 | 
				
			||||||
                    readonly />
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 8 })"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Decimal (10):</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 10 })"
 | 
					          Decimal (10):
 | 
				
			||||||
                    readonly />
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 10 })"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Hexadecimal (16):</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 16 })"
 | 
					          Hexadecimal (16):
 | 
				
			||||||
                    readonly />
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 16 })"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 200px;">Base64 (64):</n-input-group-label>
 | 
					        <n-input-group-label style="width: 200px;">
 | 
				
			||||||
                <n-input :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 64 })"
 | 
					          Base64 (64):
 | 
				
			||||||
                    readonly />
 | 
					        </n-input-group-label>
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: 64 })"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
      <n-input-group>
 | 
					      <n-input-group>
 | 
				
			||||||
                <n-input-group-label style="width: 90px;">Custom:</n-input-group-label>
 | 
					        <n-input-group-label style="width: 90px;">
 | 
				
			||||||
                <n-input-number style="width: 110px;" v-model:value="outputBase" max="64" min="2" />
 | 
					          Custom:
 | 
				
			||||||
                <n-input :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: outputBase })"
 | 
					        </n-input-group-label>
 | 
				
			||||||
                    readonly />
 | 
					        <n-input-number
 | 
				
			||||||
 | 
					          v-model:value="outputBase"
 | 
				
			||||||
 | 
					          style="width: 110px;"
 | 
				
			||||||
 | 
					          max="64"
 | 
				
			||||||
 | 
					          min="2"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          :value="convertBase({ value: String(inputNumber), fromBase: inputBase, toBase: outputBase })"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-input-group>
 | 
					      </n-input-group>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,28 +1,82 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card>
 | 
					  <n-card>
 | 
				
			||||||
        <n-form-item label="Paragraphs" :show-feedback="false" label-width="200" label-placement="left">
 | 
					    <n-form-item
 | 
				
			||||||
            <n-slider v-model:value="paragraphs" :step="1" :min="1" :max="20" />
 | 
					      label="Paragraphs"
 | 
				
			||||||
 | 
					      :show-feedback="false"
 | 
				
			||||||
 | 
					      label-width="200"
 | 
				
			||||||
 | 
					      label-placement="left"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <n-slider
 | 
				
			||||||
 | 
					        v-model:value="paragraphs"
 | 
				
			||||||
 | 
					        :step="1"
 | 
				
			||||||
 | 
					        :min="1"
 | 
				
			||||||
 | 
					        :max="20"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </n-form-item>
 | 
					    </n-form-item>
 | 
				
			||||||
        <n-form-item label="Sentences per paragraph" :show-feedback="false" label-width="200" label-placement="left">
 | 
					    <n-form-item
 | 
				
			||||||
            <n-slider v-model:value="sentences" range :step="1" :min="1" :max="50" />
 | 
					      label="Sentences per paragraph"
 | 
				
			||||||
 | 
					      :show-feedback="false"
 | 
				
			||||||
 | 
					      label-width="200"
 | 
				
			||||||
 | 
					      label-placement="left"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <n-slider
 | 
				
			||||||
 | 
					        v-model:value="sentences"
 | 
				
			||||||
 | 
					        range
 | 
				
			||||||
 | 
					        :step="1"
 | 
				
			||||||
 | 
					        :min="1"
 | 
				
			||||||
 | 
					        :max="50"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </n-form-item>
 | 
					    </n-form-item>
 | 
				
			||||||
        <n-form-item label="Words per sentence" :show-feedback="false" label-width="200" label-placement="left">
 | 
					    <n-form-item
 | 
				
			||||||
            <n-slider v-model:value="words" range :step="1" :min="1" :max="50" />
 | 
					      label="Words per sentence"
 | 
				
			||||||
 | 
					      :show-feedback="false"
 | 
				
			||||||
 | 
					      label-width="200"
 | 
				
			||||||
 | 
					      label-placement="left"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <n-slider
 | 
				
			||||||
 | 
					        v-model:value="words"
 | 
				
			||||||
 | 
					        range
 | 
				
			||||||
 | 
					        :step="1"
 | 
				
			||||||
 | 
					        :min="1"
 | 
				
			||||||
 | 
					        :max="50"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </n-form-item>
 | 
					    </n-form-item>
 | 
				
			||||||
        <n-form-item label="Start with lorem ipsum ?" :show-feedback="false" label-width="200" label-placement="left">
 | 
					    <n-form-item
 | 
				
			||||||
 | 
					      label="Start with lorem ipsum ?"
 | 
				
			||||||
 | 
					      :show-feedback="false"
 | 
				
			||||||
 | 
					      label-width="200"
 | 
				
			||||||
 | 
					      label-placement="left"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <n-switch v-model:value="startWithLoremIpsum" />
 | 
					      <n-switch v-model:value="startWithLoremIpsum" />
 | 
				
			||||||
    </n-form-item>
 | 
					    </n-form-item>
 | 
				
			||||||
        <n-form-item label="As html ?" :show-feedback="false" label-width="200" label-placement="left">
 | 
					    <n-form-item
 | 
				
			||||||
 | 
					      label="As html ?"
 | 
				
			||||||
 | 
					      :show-feedback="false"
 | 
				
			||||||
 | 
					      label-width="200"
 | 
				
			||||||
 | 
					      label-placement="left"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <n-switch v-model:value="asHTML" />
 | 
					      <n-switch v-model:value="asHTML" />
 | 
				
			||||||
    </n-form-item>
 | 
					    </n-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <br>
 | 
					    <br>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <n-input :value="loremIpsumText" type="textarea" placeholder="Your lorem ipsum..." autosize readonly />
 | 
					    <n-input
 | 
				
			||||||
 | 
					      :value="loremIpsumText"
 | 
				
			||||||
 | 
					      type="textarea"
 | 
				
			||||||
 | 
					      placeholder="Your lorem ipsum..."
 | 
				
			||||||
 | 
					      autosize
 | 
				
			||||||
 | 
					      readonly
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
    <br>
 | 
					    <br>
 | 
				
			||||||
    <br>
 | 
					    <br>
 | 
				
			||||||
    <n-space justify="center">
 | 
					    <n-space justify="center">
 | 
				
			||||||
            <n-button @click="copy" secondary autofocus>Copy</n-button>
 | 
					      <n-button
 | 
				
			||||||
 | 
					        secondary
 | 
				
			||||||
 | 
					        autofocus
 | 
				
			||||||
 | 
					        @click="copy"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Copy
 | 
				
			||||||
 | 
					      </n-button>
 | 
				
			||||||
    </n-space>
 | 
					    </n-space>
 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,27 +1,56 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card>
 | 
					  <n-card>
 | 
				
			||||||
    <n-grid cols="3" x-gap="12">
 | 
					    <n-grid
 | 
				
			||||||
 | 
					      cols="3"
 | 
				
			||||||
 | 
					      x-gap="12"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
      <n-gi span="2">
 | 
					      <n-gi span="2">
 | 
				
			||||||
        <n-form label-width="130" label-placement="left">
 | 
					        <n-form
 | 
				
			||||||
 | 
					          label-width="130"
 | 
				
			||||||
 | 
					          label-placement="left"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <n-form-item label="Text:">
 | 
					          <n-form-item label="Text:">
 | 
				
			||||||
            <n-input v-model:value="text" placeholder="Your link or text..." />
 | 
					            <n-input
 | 
				
			||||||
 | 
					              v-model:value="text"
 | 
				
			||||||
 | 
					              placeholder="Your link or text..."
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
          <n-form-item label="Foreground color:">
 | 
					          <n-form-item label="Foreground color:">
 | 
				
			||||||
            <n-color-picker v-model:value="foreground" :modes="['hex']" />
 | 
					            <n-color-picker
 | 
				
			||||||
 | 
					              v-model:value="foreground"
 | 
				
			||||||
 | 
					              :modes="['hex']"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
          <n-form-item label="Background color:">
 | 
					          <n-form-item label="Background color:">
 | 
				
			||||||
            <n-color-picker v-model:value="background" :modes="['hex']" />
 | 
					            <n-color-picker
 | 
				
			||||||
 | 
					              v-model:value="background"
 | 
				
			||||||
 | 
					              :modes="['hex']"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
          <n-form-item label="Error resistance:">
 | 
					          <n-form-item label="Error resistance:">
 | 
				
			||||||
            <n-select v-model:value="errorCorrectionLevel"
 | 
					            <n-select
 | 
				
			||||||
              :options="errorCorrectionLevels.map((value) => ({ label: value, value }))" />
 | 
					              v-model:value="errorCorrectionLevel"
 | 
				
			||||||
 | 
					              :options="errorCorrectionLevels.map((value) => ({ label: value, value }))"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
          </n-form-item>
 | 
					          </n-form-item>
 | 
				
			||||||
        </n-form>  
 | 
					        </n-form>  
 | 
				
			||||||
      </n-gi> 
 | 
					      </n-gi> 
 | 
				
			||||||
      <n-gi>
 | 
					      <n-gi>
 | 
				
			||||||
        <n-space justify="center" align="center" vertical>
 | 
					        <n-space
 | 
				
			||||||
          <n-image :src="qrcode" width="200" />
 | 
					          justify="center"
 | 
				
			||||||
          <n-button @click="download" secondary>Download qr-code</n-button>
 | 
					          align="center"
 | 
				
			||||||
 | 
					          vertical
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <n-image
 | 
				
			||||||
 | 
					            :src="qrcode"
 | 
				
			||||||
 | 
					            width="200"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					          <n-button
 | 
				
			||||||
 | 
					            secondary
 | 
				
			||||||
 | 
					            @click="download"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            Download qr-code
 | 
				
			||||||
 | 
					          </n-button>
 | 
				
			||||||
        </n-space>
 | 
					        </n-space>
 | 
				
			||||||
      </n-gi>
 | 
					      </n-gi>
 | 
				
			||||||
    </n-grid>
 | 
					    </n-grid>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,21 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card>
 | 
					  <n-card>
 | 
				
			||||||
        <div class="port">{{ port }}</div>
 | 
					    <div class="port">
 | 
				
			||||||
 | 
					      {{ port }}
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
    <n-space justify="center">
 | 
					    <n-space justify="center">
 | 
				
			||||||
            <n-button @click="copy" secondary>Copy</n-button>
 | 
					      <n-button
 | 
				
			||||||
            <n-button @click="refreshPort" secondary>Refresh</n-button>
 | 
					        secondary
 | 
				
			||||||
 | 
					        @click="copy"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Copy
 | 
				
			||||||
 | 
					      </n-button>
 | 
				
			||||||
 | 
					      <n-button
 | 
				
			||||||
 | 
					        secondary
 | 
				
			||||||
 | 
					        @click="refreshPort"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Refresh
 | 
				
			||||||
 | 
					      </n-button>
 | 
				
			||||||
    </n-space>
 | 
					    </n-space>
 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,23 +1,48 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card title="Arabic to roman">
 | 
					    <n-card title="Arabic to roman">
 | 
				
			||||||
            <n-space align="center" justify="space-between">
 | 
					      <n-space
 | 
				
			||||||
 | 
					        align="center"
 | 
				
			||||||
 | 
					        justify="space-between"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        <n-input-number
 | 
					        <n-input-number
 | 
				
			||||||
          v-model:value="inputNumeral"
 | 
					          v-model:value="inputNumeral"
 | 
				
			||||||
          :min="1"
 | 
					          :min="1"
 | 
				
			||||||
          style="width: 200px;"
 | 
					          style="width: 200px;"
 | 
				
			||||||
          :show-button="false"
 | 
					          :show-button="false"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
                <div class="result">{{ outputRoman }}</div>
 | 
					        <div class="result">
 | 
				
			||||||
                <n-button @click="copyRoman" secondary autofocus>Copy</n-button>
 | 
					          {{ outputRoman }}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          autofocus
 | 
				
			||||||
 | 
					          @click="copyRoman"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
        <br />
 | 
					    <br>
 | 
				
			||||||
    <n-card title="Roman to arabic">
 | 
					    <n-card title="Roman to arabic">
 | 
				
			||||||
            <n-space align="center" justify="space-between">
 | 
					      <n-space
 | 
				
			||||||
                <n-input v-model:value="inputRoman" style="width: 200px;" />
 | 
					        align="center"
 | 
				
			||||||
                <div class="result">{{ outputNumeral }}</div>
 | 
					        justify="space-between"
 | 
				
			||||||
                <n-button @click="copyArabic" secondary autofocus>Copy</n-button>
 | 
					      >
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="inputRoman"
 | 
				
			||||||
 | 
					          style="width: 200px;"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					        <div class="result">
 | 
				
			||||||
 | 
					          {{ outputNumeral }}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          autofocus
 | 
				
			||||||
 | 
					          @click="copyArabic"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,30 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-card>
 | 
					  <n-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"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
    <br>
 | 
					    <br>
 | 
				
			||||||
    <br>
 | 
					    <br>
 | 
				
			||||||
    <n-space justify="space-around">
 | 
					    <n-space justify="space-around">
 | 
				
			||||||
      <n-statistic label="Character count" :value="text.length" />
 | 
					      <n-statistic
 | 
				
			||||||
      <n-statistic label="Word count" :value="text.split(/\s+/).length" />
 | 
					        label="Character count"
 | 
				
			||||||
      <n-statistic label="Line count" :value="text.split(/\r\n|\r|\n/).length" />
 | 
					        :value="text.length"
 | 
				
			||||||
      <n-statistic label="Byte size" :value="formatBytes(getStringSizeInBytes(text))" />
 | 
					      />
 | 
				
			||||||
 | 
					      <n-statistic
 | 
				
			||||||
 | 
					        label="Word count"
 | 
				
			||||||
 | 
					        :value="text.split(/\s+/).length"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <n-statistic
 | 
				
			||||||
 | 
					        label="Line count"
 | 
				
			||||||
 | 
					        :value="text.split(/\r\n|\r|\n/).length"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <n-statistic
 | 
				
			||||||
 | 
					        label="Byte size"
 | 
				
			||||||
 | 
					        :value="formatBytes(getStringSizeInBytes(text))"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
    </n-space>
 | 
					    </n-space>
 | 
				
			||||||
  </n-card>
 | 
					  </n-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,15 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card>
 | 
					    <n-card>
 | 
				
			||||||
            <n-form label-placement="left" label-width="140">
 | 
					      <n-form
 | 
				
			||||||
                <n-space justify="center" item-style="padding: 0" :size="0">
 | 
					        label-placement="left"
 | 
				
			||||||
 | 
					        label-width="140"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <n-space
 | 
				
			||||||
 | 
					          justify="center"
 | 
				
			||||||
 | 
					          item-style="padding: 0"
 | 
				
			||||||
 | 
					          :size="0"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <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" />
 | 
				
			||||||
@ -25,13 +32,21 @@
 | 
				
			|||||||
        </n-space>
 | 
					        </n-space>
 | 
				
			||||||
      </n-form>
 | 
					      </n-form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <n-form-item :label="`Length (${length})`" label-placement="left">
 | 
					      <n-form-item
 | 
				
			||||||
                <n-slider v-model:value="length" :step="1" :min="1" :max="512" />
 | 
					        :label="`Length (${length})`"
 | 
				
			||||||
 | 
					        label-placement="left"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <n-slider
 | 
				
			||||||
 | 
					          v-model:value="length"
 | 
				
			||||||
 | 
					          :step="1"
 | 
				
			||||||
 | 
					          :min="1"
 | 
				
			||||||
 | 
					          :max="512"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-input
 | 
					      <n-input
 | 
				
			||||||
                style="text-align: center;"
 | 
					 | 
				
			||||||
        v-model:value="token"
 | 
					        v-model:value="token"
 | 
				
			||||||
 | 
					        style="text-align: center;"
 | 
				
			||||||
        type="textarea"
 | 
					        type="textarea"
 | 
				
			||||||
        placeholder="The token..."
 | 
					        placeholder="The token..."
 | 
				
			||||||
        :autosize="{ minRows: 1 }"
 | 
					        :autosize="{ minRows: 1 }"
 | 
				
			||||||
@ -41,11 +56,22 @@
 | 
				
			|||||||
        autocapitalize="off"
 | 
					        autocapitalize="off"
 | 
				
			||||||
        spellcheck="false"
 | 
					        spellcheck="false"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
      <n-space justify="center">
 | 
					      <n-space justify="center">
 | 
				
			||||||
                <n-button @click="copy" secondary autofocus>Copy</n-button>
 | 
					        <n-button
 | 
				
			||||||
                <n-button @click="refreshToken" secondary>Refresh</n-button>
 | 
					          secondary
 | 
				
			||||||
 | 
					          autofocus
 | 
				
			||||||
 | 
					          @click="copy"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          @click="refreshToken"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Refresh
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,35 +1,69 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <n-space item-style="flex:1">
 | 
					  <n-space item-style="flex:1">
 | 
				
			||||||
    <n-card title="Encode">
 | 
					    <n-card title="Encode">
 | 
				
			||||||
            <n-form-item label="Your string :" :feedback="encodedValidation.message"
 | 
					      <n-form-item
 | 
				
			||||||
                :validation-status="encodedValidation.status">
 | 
					        label="Your string :"
 | 
				
			||||||
                <n-input v-model:value="encodeInput" type="textarea" placeholder="The string to encode"
 | 
					        :feedback="encodedValidation.message"
 | 
				
			||||||
                    :autosize="{ minRows: 3 }" />
 | 
					        :validation-status="encodedValidation.status"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="encodeInput"
 | 
				
			||||||
 | 
					          type="textarea"
 | 
				
			||||||
 | 
					          placeholder="The string to encode"
 | 
				
			||||||
 | 
					          :autosize="{ minRows: 3 }"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-form-item label="Your string encoded :">
 | 
					      <n-form-item label="Your string encoded :">
 | 
				
			||||||
                <n-input :value="encodeOutput" type="textarea" readonly placeholder="Your string encoded"
 | 
					        <n-input
 | 
				
			||||||
                    :autosize="{ minRows: 3 }" />
 | 
					          :value="encodeOutput"
 | 
				
			||||||
 | 
					          type="textarea"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					          placeholder="Your string encoded"
 | 
				
			||||||
 | 
					          :autosize="{ minRows: 3 }"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-space justify="center">
 | 
					      <n-space justify="center">
 | 
				
			||||||
                <n-button @click="copyEncoded" secondary>Copy</n-button>
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          @click="copyEncoded"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
    <n-card title="Encode">
 | 
					    <n-card title="Encode">
 | 
				
			||||||
            <n-form-item label="Your encode string :" :feedback="decodeValidation.message"
 | 
					      <n-form-item
 | 
				
			||||||
                :validation-status="decodeValidation.status">
 | 
					        label="Your encode string :"
 | 
				
			||||||
                <n-input v-model:value="decodeInput" type="textarea" placeholder="The string to decode"
 | 
					        :feedback="decodeValidation.message"
 | 
				
			||||||
                    :autosize="{ minRows: 3 }" />
 | 
					        :validation-status="decodeValidation.status"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <n-input
 | 
				
			||||||
 | 
					          v-model:value="decodeInput"
 | 
				
			||||||
 | 
					          type="textarea"
 | 
				
			||||||
 | 
					          placeholder="The string to decode"
 | 
				
			||||||
 | 
					          :autosize="{ minRows: 3 }"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-form-item label="Your string decoded :">
 | 
					      <n-form-item label="Your string decoded :">
 | 
				
			||||||
                <n-input :value="decodeOutput" type="textarea" readonly placeholder="Your string decoded"
 | 
					        <n-input
 | 
				
			||||||
                    :autosize="{ minRows: 3 }" />
 | 
					          :value="decodeOutput"
 | 
				
			||||||
 | 
					          type="textarea"
 | 
				
			||||||
 | 
					          readonly
 | 
				
			||||||
 | 
					          placeholder="Your string decoded"
 | 
				
			||||||
 | 
					          :autosize="{ minRows: 3 }"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-form-item>
 | 
					      </n-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <n-space justify="center">
 | 
					      <n-space justify="center">
 | 
				
			||||||
                <n-button @click="copyDecoded" secondary>Copy</n-button>
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          @click="copyDecoded"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </n-space>
 | 
					  </n-space>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,18 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
    <n-card>
 | 
					    <n-card>
 | 
				
			||||||
            <n-space align="center" justify="center">
 | 
					      <n-space
 | 
				
			||||||
 | 
					        align="center"
 | 
				
			||||||
 | 
					        justify="center"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
        Quantity :
 | 
					        Quantity :
 | 
				
			||||||
                <n-input-number v-model:value="count" :min="1" :max="50" />
 | 
					        <n-input-number
 | 
				
			||||||
 | 
					          v-model:value="count"
 | 
				
			||||||
 | 
					          :min="1"
 | 
				
			||||||
 | 
					          :max="50"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
      <n-input
 | 
					      <n-input
 | 
				
			||||||
        style="text-align: center; font-family: monospace;"
 | 
					        style="text-align: center; font-family: monospace;"
 | 
				
			||||||
        :value="uuids"
 | 
					        :value="uuids"
 | 
				
			||||||
@ -18,11 +25,22 @@
 | 
				
			|||||||
        autocapitalize="off"
 | 
					        autocapitalize="off"
 | 
				
			||||||
        spellcheck="false"
 | 
					        spellcheck="false"
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
            <br />
 | 
					      <br>
 | 
				
			||||||
      <n-space justify="center">
 | 
					      <n-space justify="center">
 | 
				
			||||||
                <n-button @click="copy" secondary autofocus>Copy</n-button>
 | 
					        <n-button
 | 
				
			||||||
                <n-button @click="refreshUUIDs" secondary>Refresh</n-button>
 | 
					          secondary
 | 
				
			||||||
 | 
					          autofocus
 | 
				
			||||||
 | 
					          @click="copy"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Copy
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
 | 
					        <n-button
 | 
				
			||||||
 | 
					          secondary
 | 
				
			||||||
 | 
					          @click="refreshUUIDs"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          Refresh
 | 
				
			||||||
 | 
					        </n-button>
 | 
				
			||||||
      </n-space>
 | 
					      </n-space>
 | 
				
			||||||
    </n-card>
 | 
					    </n-card>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@
 | 
				
			|||||||
    "baseUrl": ".",
 | 
					    "baseUrl": ".",
 | 
				
			||||||
    "paths": {
 | 
					    "paths": {
 | 
				
			||||||
      "@/*": ["./src/*"]
 | 
					      "@/*": ["./src/*"]
 | 
				
			||||||
    }
 | 
					    },
 | 
				
			||||||
 | 
					    "types": ["naive-ui/volar"]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user