Krizaka UI
Krizaka UI
Patrons

Wall

A read-only wall of photos, short notes and the owner's sign: Montréal brick, Moroccan eight-point zellige, Grenoble ridgelines or warm plaster, over a real keyboard-reachable list.

Web · ✓Mobile · n/aBureau · ✓BêtaBlocs
import { Wall, Polaroid, PinnedNote, ShopSign } from "@krizaka/ui/wall";

Web uniquement — React, depuis @krizaka/ui/wall. Bêta : son API peut encore changer à une version mineure.

  • Mobile · n/a. An ornamental storefront surface belongs to web pages; native content should stay in a scrolling gallery. → Media grid

Pourquoi il est là. Akinaza's shop pages: the owner's photos, short notes and logo on a textured wall (krizaka/akinaza#236, krizaka-ui#537).

Quand l’utiliser

  • A shop or community page whose owner's photos, words and identity should feel personally pinned up.

Quand ne pas l’utiliser

  • A searchable or large image collection.À la place : Photo grid
  • Rows of data to compare or sort.À la place : Data table

Installation

Installer

npm install @krizaka/ui @krizaka/tailwind @krizaka/tokens tailwindcss

Styles

@import "tailwindcss";
@import "@krizaka/tailwind";
@import "@krizaka/ui/tailwind.css";

Importer

import { Wall, Polaroid, PinnedNote, ShopSign } from "@krizaka/ui/wall";

Exemples

The owner's wall

A photograph, a signed word and an enamel sign, positioned from deterministic data.

The owner's wall in French

The same deterministic layout reads its French words and alternatives from the example's local catalogue.

Montréal brick

Staggered masonry and mortar on a warm token-based surface.

Moroccan zellige

A repeating deterministic eight-point SVG star, without an image download.

Grenoble ridges

Three layered mountain silhouettes behind the owner's words.

Warm plaster

A quiet lightly textured wall when the content should speak first.

Polaroids

A photo slot, handwritten caption, deterministic tilt, and tape or pin.

Pinned notes

Short signed words on cut-corner paper, held by a pin or tape.

Shop signs

The owner's mark as enamel with screws, soft neon, or weathered painted lettering.

Props

PinnedNote

A short word on a cut-corner card, stuck into the notebook.

PropTypeDéfautDescription
textrequisstring—The short message; capped at 140 Unicode code points without an ellipsis.
attachment"pin" | "tape"—A tape strip or a pin; defaults to tape.
attachmentRotationnumber—The tape or pin's tilt in degrees; defaults to zero.
hold"pin" | "tape"tapeHow the note is held, through Stuck: a strip of tape or a pin. Takes over attachment.
ink"blue" | "margin" | "hue"blueThe ink of the pen: blue ink, the margin's red, or the page's hue.
linesnumber4The lines of the text box, fixed so a late font never shifts the page (the text is read in full by assistive technology).
rotationnumber0Tilt in degrees, deterministic; defaults to zero.
signaturestring—The optional author's signature, written in the handwriting role.

Polaroid

A photo held to the wall by tape or a pin, with a handwritten caption.

PropTypeDéfautDescription
imgrequisReactNode—The photo slot: an img or next/image, including fill inside this positioned frame. Supply its alt text.
attachment"pin" | "tape"tapeA tape strip or a pin; defaults to tape.
attachmentRotationnumber0The tape or pin's tilt in degrees; defaults to zero.
captionReactNode—A short handwritten caption, using the --kz-font-cahier role.
developbooleantrueEnable the first-view develop effect; defaults to true, never runs under reduced motion.
rotationnumber0Tilt in degrees, deterministic; defaults to zero.

ShopSign

A shop's own mark, as a plate, a neon, a painted sign, or the name alone.

PropTypeDéfautDescription
animatedbooleantrueAllow one soft neon flicker the first time the sign is seen; defaults to true, never loops, respects reduced motion.
as"h1" | "h2" | "h3" | "p"h1The element of the name: the page's h1 by default, h2/h3 for a second sign, p for none. A sign on a Wall is a p unless told otherwise.
childrenReactNode—The shop's name as live text, in the sign's lettering: the page's heading (as). Prefer it to an image of the name.
logoReactNode—The owner's logo or wordmark, optional beside the name. Name an SVG/image accessibly, or use readable text.
rotationnumber0Deterministic tilt in degrees; defaults to zero.
variant"none" | "enamel" | "neon" | "painted"enamelEnamel plate and screws, softly glowing neon, a time-worn painted sign, or none (the name alone on paper).

Wall

A decorative textured surface over a real keyboard-reachable list; never an editor.

PropTypeDéfautDescription
itemsrequisreadonly WallItem[]—The read-only objects; never mutated. Sorted by z for reading, keyboard and phone order.
heightnumber—A fixed desktop surface height in pixels (minimum 320). Absent, the surface is a fixed 16:9 box. Phones grow with content.
itemWidthnumber240Desktop object width in pixels (minimum 120); defaults to 240 and never exceeds the surface.
maxnumber12Draws at most this many items (the first in z order); defaults to 12. The rest belongs to the host's « see the whole wall ».
texture"brick" | "zellige" | "ridge" | "plaster"plasterCSS/SVG texture; no image download. Defaults to plaster.

Accessibilité

  • Wall is a real ul with an explicit list role, preserving Safari semantics despite list-style:none, and focusable li objects; give it an aria-label describing the collection. Textures, tape, pins and screws are hidden from assistive technology.
  • Every word and all photo/logo alternatives come from the host. Standalone objects keep their natural figure/article/div semantics; Wall supplies their focus target.
  • Polaroid only develops after its first observed intersection. With reduced motion, without an observer, or before hydration the photo remains sharp; preference changes stop motion immediately.
  • Neon only flickers softly once, never flashes or loops. All effects stop under prefers-reduced-motion; reading and focus order never depend on visual positions.

Clavier

TouchesAction
Tab / Shift+TabVisit each object in ascending z order, preserving input order for ties.

Bonnes pratiques

  • Import @krizaka/ui/blocks.css once. All four components are exported from @krizaka/ui/wall.
  • Each example includes its own words, so copied snippets are self-contained. Choose the host locale and pass its words as data; the French composition demonstrates the same surface unchanged.
  • Wall draws at most max items (12 by default, the first in z order) in a fixed 16:9 box on a desktop; show the rest behind a « see the whole wall » of your own. Pass height only for a fixed pixel height. On a phone it stacks them in z order, straight.
  • ShopSign renders its text children as the heading (as="h1" by default): the page's one h1 is the sign. On a Wall a sign is a paragraph unless you pass as. variant="none" is the name alone on paper; the neon flickers once, the first time it is seen, and never loops.
  • PinnedNote: hold (tape or pin, through Stuck), ink (blue, margin, hue) and lines (a fixed box of N lines, default 4, read in full by assistive technology); attachment still works as an alias of hold.
  • Provide stable ids, explicit x/y percentages, rotation in degrees and z for every item. Positions are clamped to 0–100; z sorts the real list stably, including keyboard and phone order.
  • Use kind polaroid with img, kind note with text, or kind sign with logo. Items carry the same props as their standalone component; no editor or random placement is added.
  • Use height and itemWidth for layout, not style: style is intentionally omitted from the public props so percentage placement and the mobile stack cannot be overwritten accidentally.
  • Keep the wall sparse and tilts small. On screens narrower than 48rem it grows into an untilted single column in z order, without overlap.
  • The img ReactNode accepts next/image, including fill: the square photo frame is positioned. Supply an informative alt, or an empty alt for decoration.
  • Captions and signatures use the existing --kz-font-cahier handwriting role (Krizaka Cahier from @krizaka/fonts); load the font in the host.
  • PinnedNote caps text at 140 Unicode code points. Keep the full message elsewhere when more detail matters.
  • Set attachment and attachmentRotation for tape or a pin, rotation for the object; neon's animated=false and Polaroid's develop=false opt out of motion.
  • Wall textures adapt to dark, light and brand themes. Polaroid composes TapedPhoto: its --kz-print paper stays pale in both themes, with --kz-print-ink captions and --kz-tape strips instead of a second print material.

Générée depuis le code de @krizaka/ui 3.63.1 : son meta.ts, ses exemples et ses types.Modifier cette documentation sur GitHub

Sur cette page