123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <script>
- import { getContext } from 'svelte';
- const i18n = getContext('i18n');
- export let editor = null;
- import Bold from '$lib/components/icons/Bold.svelte';
- import CodeBracket from '$lib/components/icons/CodeBracket.svelte';
- import H1 from '$lib/components/icons/H1.svelte';
- import H2 from '$lib/components/icons/H2.svelte';
- import H3 from '$lib/components/icons/H3.svelte';
- import Italic from '$lib/components/icons/Italic.svelte';
- import ListBullet from '$lib/components/icons/ListBullet.svelte';
- import NumberedList from '$lib/components/icons/NumberedList.svelte';
- import QueueList from '$lib/components/icons/QueueList.svelte';
- import Strikethrough from '$lib/components/icons/Strikethrough.svelte';
- import Underline from '$lib/components/icons/Underline.svelte';
- import Tooltip from '../Tooltip.svelte';
- </script>
- <div
- class="flex gap-0.5 p-0.5 rounded-lg shadow-lg bg-white text-gray-800 dark:text-white dark:bg-gray-800 min-w-fit"
- >
- <Tooltip placement="top" content={$i18n.t('H1')}>
- <button
- on:click={() => editor?.chain().focus().toggleHeading({ level: 1 }).run()}
- class="{editor?.isActive('heading', { level: 1 })
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <H1 />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('H2')}>
- <button
- on:click={() => editor?.chain().focus().toggleHeading({ level: 2 }).run()}
- class="{editor?.isActive('heading', { level: 2 })
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <H2 />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('H3')}>
- <button
- on:click={() => editor?.chain().focus().toggleHeading({ level: 3 }).run()}
- class="{editor?.isActive('heading', { level: 3 })
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <H3 />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Bullet List')}>
- <button
- on:click={() => editor?.chain().focus().toggleBulletList().run()}
- class="{editor?.isActive('bulletList')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <ListBullet />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Ordered List')}>
- <button
- on:click={() => editor?.chain().focus().toggleOrderedList().run()}
- class="{editor?.isActive('orderedList')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <NumberedList />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Task List')}>
- <button
- on:click={() => editor?.chain().focus().toggleTaskList().run()}
- class="{editor?.isActive('taskList')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <QueueList />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Bold')}>
- <button
- on:click={() => editor?.chain().focus().toggleBold().run()}
- class="{editor?.isActive('bold')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <Bold />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Italic')}>
- <button
- on:click={() => editor?.chain().focus().toggleItalic().run()}
- class="{editor?.isActive('italic')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <Italic />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Underline')}>
- <button
- on:click={() => editor?.chain().focus().toggleUnderline().run()}
- class="{editor?.isActive('underline')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <Underline />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Strikethrough')}>
- <button
- on:click={() => editor?.chain().focus().toggleStrike().run()}
- class="{editor?.isActive('strike')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <Strikethrough />
- </button>
- </Tooltip>
- <Tooltip placement="top" content={$i18n.t('Code Block')}>
- <button
- on:click={() => editor?.chain().focus().toggleCodeBlock().run()}
- class="{editor?.isActive('codeBlock')
- ? 'bg-gray-50 dark:bg-gray-700'
- : ''} hover:bg-gray-50 dark:hover:bg-gray-700 rounded-lg p-1.5 transition-all"
- type="button"
- >
- <CodeBracket />
- </button>
- </Tooltip>
- </div>
|