diff --git a/src/shared/lib/helpers/index.ts b/src/shared/lib/helpers/index.ts index 61b065f..a180a14 100644 --- a/src/shared/lib/helpers/index.ts +++ b/src/shared/lib/helpers/index.ts @@ -29,4 +29,5 @@ export { export { createCharacterComparison, + type LineData, } from './createCharacterComparison/createCharacterComparison.svelte'; diff --git a/src/shared/lib/index.ts b/src/shared/lib/index.ts index 9734dd5..35dbe09 100644 --- a/src/shared/lib/index.ts +++ b/src/shared/lib/index.ts @@ -11,6 +11,7 @@ export { type EntityStore, type Filter, type FilterModel, + type LineData, type Property, type TypographyControl, type VirtualItem, diff --git a/src/shared/ui/ComparisonSlider/ComparisonSlider.svelte b/src/shared/ui/ComparisonSlider/ComparisonSlider.svelte index 00d493b..1692630 100644 --- a/src/shared/ui/ComparisonSlider/ComparisonSlider.svelte +++ b/src/shared/ui/ComparisonSlider/ComparisonSlider.svelte @@ -11,7 +11,9 @@ --> +{#snippet renderLine(line: LineData, lineIndex: number)} +
+ {#each line.text.split('') as char, charIndex} + {@const { proximity, isPast } = charComparison.getCharState(lineIndex, charIndex, line, sliderPos)} + + + {/each} +
+{/snippet} + @@ -110,7 +140,11 @@ $effect(() => { aria-valuenow={Math.round(sliderPos)} aria-label="Font comparison slider" onpointerdown={startDragging} - class="group relative w-full py-16 px-6 sm:py-24 sm:px-12 overflow-hidden bg-white rounded-[2.5rem] border border-slate-100 shadow-2xl select-none touch-none cursor-ew-resize min-h-100 flex flex-col justify-center" + class=" + group relative w-full py-16 px-6 sm:py-24 sm:px-12 overflow-hidden + bg-white rounded-[2.5rem] border border-slate-100 shadow-2xl + select-none touch-none cursor-ew-resize min-h-100 flex flex-col justify-center + " >
{
{#each charComparison.lines as line, lineIndex} -
- {#each line.text.split('') as char, charIndex} - {@const { proximity, isPast } = charComparison.getCharState(lineIndex, charIndex, line, sliderPos)} - - 0 - ? 'transform, font-family, color' - : 'auto'} - > - {char === ' ' ? '\u00A0' : char} - - {/each} +
+ {@render renderLine(line, lineIndex)}
{/each}
- +
- - diff --git a/src/shared/ui/ComparisonSlider/components/CharacterSlot.svelte b/src/shared/ui/ComparisonSlider/components/CharacterSlot.svelte new file mode 100644 index 0000000..7546bee --- /dev/null +++ b/src/shared/ui/ComparisonSlider/components/CharacterSlot.svelte @@ -0,0 +1,54 @@ + + + + 0.5 ? '0 0 15px rgba(99,102,241,0.3)' : 'none'} + style:will-change={proximity > 0 ? 'transform, font-family, color' : 'auto'} +> + {char === ' ' ? '\u00A0' : char} + + +