mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-23 16:26:15 -04:00
feat(tool): color converter
This commit is contained in:
parent
5f502755d6
commit
4e50b7a973
7 changed files with 143 additions and 337 deletions
|
@ -0,0 +1,6 @@
|
|||
import { expect, describe, it } from 'vitest';
|
||||
// import { } from './color-converter.service';
|
||||
//
|
||||
// describe('color-converter', () => {
|
||||
//
|
||||
// })
|
0
src/tools/color-converter/color-converter.service.ts
Normal file
0
src/tools/color-converter/color-converter.service.ts
Normal file
63
src/tools/color-converter/color-converter.vue
Normal file
63
src/tools/color-converter/color-converter.vue
Normal file
|
@ -0,0 +1,63 @@
|
|||
<template>
|
||||
<n-card>
|
||||
<n-form label-width="100" label-placement="left">
|
||||
<n-form-item label="color picker:">
|
||||
<n-color-picker v-model:value="hex" @update:value="(v: string) => onInputUpdated(v, 'hex')"
|
||||
placement="bottom-end" />
|
||||
</n-form-item>
|
||||
<n-form-item label="color name:">
|
||||
<n-input v-model:value="name" :on-input="(v: string) => onInputUpdated(v, 'name')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="hex:">
|
||||
<n-input v-model:value="hex" :on-input="(v: string) => onInputUpdated(v, 'hex')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="rgb:">
|
||||
<n-input v-model:value="rgb" :on-input="(v: string) => onInputUpdated(v, 'rgb')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="hsl:">
|
||||
<n-input v-model:value="hsl" :on-input="(v: string) => onInputUpdated(v, 'hsl')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="hwb:">
|
||||
<n-input v-model:value="hwb" :on-input="(v: string) => onInputUpdated(v, 'hwb')" />
|
||||
</n-form-item>
|
||||
<n-form-item label="cmyk:">
|
||||
<n-input v-model:value="cmyk" :on-input="(v: string) => onInputUpdated(v, 'cmyk')" />
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
</n-card>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { colord, extend } from "colord";
|
||||
|
||||
import cmykPlugin from "colord/plugins/cmyk";
|
||||
import hwbPlugin from "colord/plugins/hwb";
|
||||
import namesPlugin from "colord/plugins/names";
|
||||
|
||||
extend([cmykPlugin, hwbPlugin, namesPlugin]);
|
||||
|
||||
const name = ref('')
|
||||
const hex = ref('#1ea54cff')
|
||||
const rgb = ref('')
|
||||
const hsl = ref('')
|
||||
const hwb = ref('')
|
||||
const cmyk = ref('')
|
||||
|
||||
function onInputUpdated(value: string, omit: string) {
|
||||
const color = colord(value);
|
||||
|
||||
omit !== 'name' && (name.value = color.toName({ closest: true }) ?? '');
|
||||
omit !== 'hex' && (hex.value = color.toHex());
|
||||
omit !== 'rgb' && (rgb.value = color.toRgbString());
|
||||
omit !== 'hsl' && (hsl.value = color.toHslString());
|
||||
omit !== 'hwb' && (hwb.value = color.toHwbString());
|
||||
omit !== 'cmyk' && (cmyk.value = color.toCmykString());
|
||||
}
|
||||
|
||||
onInputUpdated(hex.value, 'hex')
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
</style>
|
11
src/tools/color-converter/index.ts
Normal file
11
src/tools/color-converter/index.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import { Palette } from '@vicons/tabler';
|
||||
import type { ITool } from './../Tool';
|
||||
|
||||
export const tool: ITool = {
|
||||
name: 'Color converter',
|
||||
path: '/color-converter',
|
||||
description: 'Convert color between the different formats (hex, rgb, hsl and css name)',
|
||||
keywords: ['color', 'converter'],
|
||||
component: () => import('./color-converter.vue'),
|
||||
icon: Palette,
|
||||
};
|
|
@ -1,6 +1,7 @@
|
|||
import { LockOpen } from '@vicons/tabler';
|
||||
import type { ToolCategory } from './Tool';
|
||||
|
||||
import { tool as colorConverter } from './color-converter';
|
||||
import { tool as qrCodeGenerator } from './qr-code-generator';
|
||||
import { tool as base64Converter } from './base64-converter';
|
||||
import { tool as crontabGenerator } from './crontab-generator';
|
||||
|
@ -27,7 +28,7 @@ export const toolsByCategory: ToolCategory[] = [
|
|||
{
|
||||
name: 'Converter',
|
||||
icon: LockOpen,
|
||||
components: [dateTimeConverter, baseConverter, romanNumeralConverter, base64Converter],
|
||||
components: [dateTimeConverter, baseConverter, romanNumeralConverter, base64Converter, colorConverter],
|
||||
},
|
||||
{
|
||||
name: 'Web',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue