The ::after placeholder text on .dt-bevel-media and empty card bodies is
mostly seen while lazy media loads, where MISSING MEDIA reads as 'the
store is broken'. Neutral loading wording instead. Bump to 0.5.1.
Revert with: git revert <this-sha>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
As a plain inline span, a badge that wraps to two lines fragments into
per-line boxes: the clip-path and ::before fill cover the wrong region,
so overflow text renders bare outside the beveled shape (storefront
DTLabel ribbons at <=375px viewports). inline-block keeps the badge one
box; the bevel and fill wrap all lines.
Revert with: git revert <this-sha>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Prior keyframes held descendants at transform: scale(0) during the
animation-delay phase (with fill-mode: both). Any DTStaggerContainer
child performing getBoundingClientRect()-based self-measurement on
mount — most notably R3F's <Canvas>, but also chart libs, video
players, and virtualized lists — read a near-zero rect at the
transform-multiplied size and never recovered, because transform
changes don't fire ResizeObserver when they end.
New keyframes:
0% opacity 0, transform none (during delay: invisible but
full layout size, no transform —
children measure correctly)
0.001% opacity 0, transform scale(0) (snap to scaled-down at start)
100% opacity 1, transform scale(1) (animate scale + fade in)
Behavior change for consumers: entrance gains a subtle fade-in
alongside the scale-in. Functionally equivalent for the existing
DTStaggerContainer use cases. Fixes the SuggestedPlacements 3D
viewer "blank teal block until scroll" bug on the Hydrogen
storefront product pages.
Bumps @dangerousthings/web to 0.5.0 (MINOR — visual behavior change).
To revert: git revert <this-commit>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add object-fit: contain + black background for video in DTMediaFrame
- Style .dt-card-badge with mode-colored background, padding, and
bevel-aware positioning (negative right offset for clean diagonal clip)
- Restore DTStaggerContainer in react-native (was incorrectly deleted)
- Update DTGallery, DTModal, DTMobileFilterOverlay, DTMediaFrame components
- Refresh showcase pages for desktop and mobile
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extend the .dt-bevel-media inner clip-path selector to cover
model-viewer and iframe children, matching the existing treatment
for img and video. Without this, 3D viewers and embedded video
iframes filled edge-to-edge and covered the neon bevel border.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The child clip-path used bevel-md - 3px from child corner, but should
use bevel-md to align with the ::before inner surface diagonal. This
caused the bottom-right bevel border to appear too thin.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace CSS nth-child stagger rules with JS-driven wrapper divs that set
animationDelay inline. Adds delay (base offset) and interval (ms between
children) props. Removes --dt-stagger-interval CSS variable and 24
nth-child rules in favor of unlimited children support.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Progress bar now fills top-down (was bottom-up). When progress prop is
omitted the bar stays empty and the card renders at full size. Only cards
that explicitly pass progress={0–100} show the animated bar.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add author, repository, homepage, keywords, and engines fields to
all 6 publishable package.json files
- Add README.md to react, tailwind-preset, and hex-background packages
- Add "type": "module" to web and react-native for consistency
- Rename web build script to .cjs for ESM package compatibility
- Remove overly broad "./dist/*" export from web package
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DTDrawer: storefront-matching dual-element bevel border, slide-in/out
animations from correct edge, 99vh height, bold 2em header, box shadow
- DTModal: interactive demos on Bevels page with all 5 mode variants
- Badges: solid color fill with contrasting text (black on dark, white on light)
instead of transparent fill with colored text
- Animations: add dt-slide-right and dt-slide-left keyframes for drawers
- Bevels page: remove trash "Button Bevels", add interactive modal/drawer
demos, fix media frame to use real images with proper bevel styling
- Advanced Cards: remove redundant media frame sections, rename "Menu Items"
to "Buttons", remove DTButton/dt-btn references
- Forms page: rename "Menu Items" to "Buttons"
- Vite config: exclude design system packages from optimizeDeps pre-bundling
and watch dist directories to prevent stale CSS during development
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Major feature migration from dt-shopify-storefront into the design system:
- Card system: per-card color modes (normal/emphasis/warning/success/other),
progress bars, full-bleed card body (card-body-flush), image bevel clip-paths,
and visible structural borders at bevel corners
- Badge system: dt-card-badge with position-aware offsets for cards vs media frames
- Media frames: dt-bevel-media with inner surface fill, image clipping, and
"MISSING MEDIA" placeholder for empty containers
- Interactive bevel buttons: dt-btn with hover/selected states and pulse animation
- Menu items: dt-menu-item with active states and level indentation
- Animations: scale-in, fade-in, slide-up, pulse, ping, spin keyframes
- Feature legend: CSS grid for product feature icons with state colors
- Scrollbar styling for DT brand
- New @dangerousthings/react package wrapping web CSS components
- New @dangerousthings/tailwind-preset package
- New @dangerousthings/hex-background package
- Desktop showcase rewritten in React with Tailwind CSS
- Mobile showcase updated with new screens (animations, filters, advanced cards)
- Tokens: added mode color tokens, RGB variants, and selected-state tokens
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Supra (VivoKey MD3 theme) has been extracted into a standalone
Dangerous-Pi theme plugin. Remove all supra references from tokens,
web CSS, showcase apps, and documentation.
- Delete supra brand tokens and elevation.css
- Update ThemeBrand type to "dt" | "classic"
- Remove supra from CSS generation, imports, and bevels
- Update CLAUDE.md and package READMEs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded hex/opacity values with CSS custom properties for
proper theming support across brands.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each published package now includes its own README (shown on npm) and
a copy of the MIT license so both travel with the tarball.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>