メインコンテンツへスキップ

Recursive dot art

Repeat one icon, or use the previous icon as dotted tiles to form the next silhouette. Includes live examples and configuration.

Mount component=recursive-icon in a Web Device layout. Single-symbol and sequence modes share one entry point. Put your images under your site’s content/media/. Use transparent SVG, PNG, or WebP silhouettes.

The component comes from the ARC default theme at themes/default/components/recursive-icon/. Your runtime must include it; upgrade if an older CLI cannot resolve it. The images in these examples belong to this site. Copy the images or replace their paths when using the configuration elsewhere.

Repeat one symbol

Small copies form a larger version of the same icon, which becomes the next seed.

aup
page single {
  web-page root layout=page-sections {
    component art slot=art component=recursive-icon icon="/media/recursive-icon/arcblock.svg" controls=true
  }
}

→ Open the single-symbol example

Cycle through several symbols

Pass an ordered icons array. Cross-shaped dotted tiles form a star; star-shaped tiles form ArcBlock; ArcBlock-shaped tiles form a cross. Travelling copies retain the previous symbol while the overall silhouette belongs to the next symbol.

aup
page sequence {
  web-page root layout=page-sections {
    component art slot=art component=recursive-icon icons=["/media/recursive-icon/cross.svg", "/media/recursive-icon/star.svg", "/media/recursive-icon/arcblock.svg"] controls=true
  }
}

→ Open the sequence example

Props

PropTypeDefaultBehavior
iconstringBuilt-in crossSame-origin root path for one symbol
iconsstring[]Unset1–8 same-origin root paths; takes precedence over icon
color / backgroundstringSite accent / bgCSS colors
speednumber10.25–3
gridnumber1913–31, rounded up to an odd integer
contrastnumber0.580.2–1
maxDotSizenumber2212–32 CSS px; capped at 18 on narrow screens
seednumberRandom per instance0–4294967295
controlsbooleanfalseShow local animation controls
title / subtitle / eyebrowstringEmptyOptional hero copy
localestringRender localeen / zh

Color is independent of the original image: only its alpha silhouette is sampled, then painted using color. grid controls silhouette sampling density; maxDotSize bounds screen-space dots. Set seed to reproduce growth paths. Omit it for a different path and rhythm per instance.

Runtime and failure boundaries

  • Image paths must start with a single /. External URLs, protocol-relative URLs, and backslashes are rejected. Invalid configuration uses a valid icon, or falls back to the built-in cross.
  • An opaque background becomes a filled square silhouette. Fully transparent or failed images show an error and retain the first image as a fallback.
  • Images are sampled at initialization or when sampling density changes. Cycles do not request the images again.
  • Controls change only the animation in the current browser. They do not edit images or site configuration.
  • Reduced motion displays static dots. Offscreen instances and background tabs pause animation.
  • This is a Web Device layout component. Markdown ::recursive-icon does not mount it. This page embeds real layout pages.

Use and override components