-
-
-
-
-
-
-
- - Hover over each image to see the effect. These are designed to work - with your base filter: -
-filter: grayscale(1) contrast(150%) brightness(120%)
- - You can replace the demo images with your own by changing the src - attributes. All effects use stepped animations or sharp transitions to - maintain that industrial, non-digital feel. -
-- The effects range from subtle (Contrast Slam) to more dramatic - (Digital Corruption). Choose based on how aggressive you want the - interaction to feel. -
-- This is some text with a{' '} - - strikethrough link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - strikethrough link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - marker highlight link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - label maker link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - rubber stamp link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - pressed link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - typewriter link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - hard invert link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - bracket link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - corner box link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - glitch link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - shifting link - {' '} - in the middle of it. -
-- This is some text with a{' '} - - redacted link - {' '} - in the middle of it. -
-- This is some text with an{' '} - - x-ray link - {' '} - in the middle of it. -
-- Help illusion embrace liquor tightening intelligence Maggot's whips - bit forests. 17 sing impassable helps Southrons beheading. What's the - Elvish word for 'friend'? -
-- Inferno shaken skin undo wars close circles verse suck Dwarves. I gave - you the chance of aiding me willingly, but you have elected the way of - pain! Precautions tower tied Rivendell everyone agents wouldn't? -
-- Pillaged pointy-eared mix charm Grond confounded able-bodied tact - glimpse instruction open dear. Suffering powerful capable gulls - famousest stroke breathes Bilbo squeaked pace chances. Let the - Ring-bearer decide. -
-- Swords are no more use here. Deny Chubbs restored. Scare rebuild - Argonath tracked day's large. -
-- Thank hid its lessened lined tells prefers were Stone-Giants thousand - troubles. Earendil staff pines bog finest mushroom consumption. - Mistaken streaming fates paths arts puppet Barad-dûr uniting? You - shall not pass! -
-| - | Ales | -Deeply | -Mortality | -Open | -Single-handedly | -
|---|---|---|---|---|---|
| Band | -appeared | -waited | -whose | -plate | -marshaling | -
| Meat | -nest | -thatched | -rallying | -claimed | -hungers | -
| Mouse | -also | -birdses | -moons | -strain | -brightest | -
| Hate | -different | -arrangements | -chiefest | -think | -try | -
| Something's | -task | -here's | -decent | -someone | -uses | -
| Shirt | -tonight | -bay | -beautifully | -tad | -cloaks | -
| revenge | -teaching | -mischief | -shores | -dreams | -tested | -
- Approve Sul wilderness grave embellishment greatly over these rack - struggle. End ringing bell Anor halls pairs thirst fortress curtain - cleared? Dwelt language 1296 Underhill nasty. I gave you the chance of - aiding me willingly, but you have elected the way of pain! -
---You are full of surprises, Master Baggins.
- -
- Mustn't powerless pierces Muil sorry crossing diamond brandy. Rip - rockets hinder Braga go had web ought sakes hail. A wizard is never - late, Frodo Baggins. Nor is he early. He arrives precisely when he - means to. Ashes tie Gamgee dicky! -
-- Rhudaur fancy tilled heart beggars. Dwarf nothing talked foot club. - Slaughtered flatten Hobbit journey's four-day? --
- Times unspoiled Silvan.{' '}
- Sigrid Pippin Gandalf thin stubbornness noises easily
- spread. Eldar warriors won answered filth yourself
- pocket. Showing store consistency M crevice. Decision
- feverfew giving Misty Mountain lord supplant. Gorgoroth{' '}
- load born fulfilled plenty fates serpent. Doorstep Pippin's{' '}
- pity bridge long weak weep? Brightest Chubbs{' '}
- jewels understand. Somewhat Erebor noise squealing moved?
- Pippin's feels overrun hours brown burns. Anor{' '}
- turning pick prophecy. Surrounded entered needlessly weary
vile
- hmm Bagshot Row. Consent outwitted dotage slug Homely hear.
- Parapet protected favored defied roam quiet Dori sick
- bent. Homage store hurricane prove ferret Helm's Deep
- lately? Excellent regret fun often returned Wood-elves
- apocalypse. Théodred's rights rat drawing{' '}
- examine dared bygone residence deeply.{' '}
- Greenway Girion Rohirrim trammel waiting edge.
-
+ + {showFooter && ( + + )} ++ ); +} diff --git a/src/components/Content/Callout/Callout.module.css b/src/components/Content/Callout/Callout.module.css new file mode 100644 index 0000000..a1be2a6 --- /dev/null +++ b/src/components/Content/Callout/Callout.module.css @@ -0,0 +1,144 @@ +@layer component { + .container { + --callout-bg: var(--color-surface-inverse); + --callout-fg: var(--color-text-inverse); + --callout-symbol: ""; + --callout-symbol-color: var(--color-text-inverse); + + @mixin my var(--spacing-cozy); + + position: relative; + padding: var(--spacing-cozy) var(--spacing-cozy) var(--spacing-cozy) var(--size-12) ; + border: var(--size-1) solid var(--color-surface-inverse); + box-shadow: 2px 2px 0 oklch(from var(--color-surface-inverse) calc(l - 0.075) c h), 4px 4px 0 oklch(from var(--color-surface-inverse) calc(l - 0.2) c h); + + &::before { + @mixin pt 0.425em; + + content: var(--callout-symbol); + + position: absolute; + top: 0; + left: 0; + + display: flex; + align-items: flex-start; + justify-content: center; + + width: var(--size-8); + height: 100%; + + font-size: 1.5em; + color: var(--callout-symbol-color); + + background-color: var(--color-surface-inverse); + + } + } + + .title { + @mixin text-xl; + + font-family: var(--font-header); + font-weight: var(--typo-weight-black); + } + + .badge { + position: absolute; + top: 0; + right: 0; + + padding: 0.2em 0.5em; + + font-family: var(--font-mono); + font-size: var(--typo-size-xs); + font-weight: var(--typo-weight-black); + color: var(--callout-fg); + + background: var(--callout-bg); + } + + .example { + --callout-bg: var(--color-palette-fuchsia); + --callout-symbol: "◆"; + } + + .info { + --callout-bg: var(--color-state-info); + --callout-symbol: "‽"; + } + + .warning { + --callout-bg: var(--color-state-warning); + --callout-symbol: "‼"; + } + + .tip { + --callout-bg: var(--color-palette-lime-green); + --callout-symbol: "★"; + } + + .spoiler { + & .label { + @mixin text-xl; + + font-family: var(--font-header); + font-weight: var(--typo-weight-black); + + &::before { + content: "[REDACTED] "; + color: var(--color-state-error); + } + + &:hover { + cursor: pointer; + } + } + + & .content { + pointer-events: none; + position: relative; + min-height: 3em; + + &::after { + content: '████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████'; + + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + overflow: hidden; + + font-family: var(--font-mono); + line-height: inherit; + color: var(--color-text-primary); + letter-spacing: -0.15em; + word-break: break-all; + white-space: pre-wrap; + + background: var(--color-text-primary); + } + } + + & .toggle { + @util hide-visually; + + &:checked { + & ~ .label { + &::before { + content: '[REVEALED] '; + color: var(--color-state-success); + } + } + + & ~ .content { + &::after { + content: none; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/components/Content/Callout/index.tsx b/src/components/Content/Callout/index.tsx new file mode 100644 index 0000000..8196459 --- /dev/null +++ b/src/components/Content/Callout/index.tsx @@ -0,0 +1,32 @@ +import React from 'react'; + +import styles from './Callout.module.css'; + +interface CalloutProps { + type: 'default' | 'example' | 'info' | 'warning' | 'tip' | 'spoiler'; + title?: string; + children: React.ReactNode; +} + +export default function Callout({ type, title, children }: CalloutProps) { + const isSpoiler = type === 'spoiler'; + const spoilerID = isSpoiler + ? `spoiler-${Math.random().toString(36).substr(2, 9)}` + : undefined; + return ( +
{title}
+ )} + {type.toUpperCase()} +