Rewrite the showcase's Shape section without Tailwind
Plan step 38: the corner grid and the shape gallery move onto <x-grid> and <x-stack>; each corner swatch is a data-md-showcase- shape-swatch keyed on data-md-corner, one showcase.css rule per corner token; <x-shape :size="80"> replaces the size-20 utility, its fill the caller's style="color: var(--md-sys-color-secondary- container)" since a shape's colour is inherited text colour, not a class. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qwx5USif3wFFmxtHg5U1g9
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
9ad9d3ec13
commit
3cc0025b33
@@ -162,4 +162,52 @@
|
|||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Shape: a corner swatch, filled with a tonal colour that is decoration only (never meaning,
|
||||||
|
same as the corner it demonstrates), one per corner token. */
|
||||||
|
[data-md-showcase-shape-swatch] {
|
||||||
|
display: block;
|
||||||
|
height: 80px;
|
||||||
|
background-color: var(--md-sys-color-primary-container);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='none'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-none);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='xs'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='sm'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='md'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='lg'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='lg-increased'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-lg-increased);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='xl'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-xl);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='xl-increased'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-xl-increased);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='xxl'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-xxl);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-md-showcase-shape-swatch][data-md-corner='full'] {
|
||||||
|
border-radius: var(--md-sys-shape-corner-full);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,33 @@
|
|||||||
<section id="shape" class="scroll-mt-24 space-y-6">
|
@php
|
||||||
<h2 class="type-headline-md">Shape</h2>
|
$corners = ['none', 'xs', 'sm', 'md', 'lg', 'lg-increased', 'xl', 'xl-increased', 'xxl', 'full'];
|
||||||
|
@endphp
|
||||||
|
|
||||||
<p class="max-w-3xl type-body-md text-on-surface-variant">
|
<x-livewire-material::stack as="section" id="shape" gap="space300">
|
||||||
The corner scale as <code>rounded-corner-*</code>, and M3 Expressive's shapes as <code><x-shape name="…" /></code>.
|
<h2 class="md-type-headline-md">Shape</h2>
|
||||||
|
|
||||||
|
<p class="md-type-body-md md-ink-variant">
|
||||||
|
The corner scale as a <code>--md-sys-shape-corner-*</code> token, and M3 Expressive's shapes as <code><x-shape name="…" /></code>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="max-w-3xl type-body-md text-on-surface-variant" data-test="when-to-use">
|
<p class="md-type-body-md md-ink-variant" data-test="when-to-use">
|
||||||
When to use which: <code>full</code> for buttons, icon buttons, chips' avatars, badges, switches, sliders, the search bar and navigation indicators; <code>xs</code> for text fields, menus, snackbars and plain tooltips; <code>sm</code> for chips; <code>md</code> for cards and rich tooltips; <code>lg</code> for the FAB and a side sheet's inner corners; <code>xl</code> for dialogs, bottom sheets, pickers and carousel items; <code>xxl</code> for hero containers. A nested corner is the outer radius minus the padding. A press squares a round shape; nothing morphs on hover. The shapes below are decoration, never meaning.
|
When to use which: <code>full</code> for buttons, icon buttons, chips' avatars, badges, switches, sliders, the search bar and navigation indicators; <code>xs</code> for text fields, menus, snackbars and plain tooltips; <code>sm</code> for chips; <code>md</code> for cards and rich tooltips; <code>lg</code> for the FAB and a side sheet's inner corners; <code>xl</code> for dialogs, bottom sheets, pickers and carousel items; <code>xxl</code> for hero containers. A nested corner is the outer radius minus the padding. A press squares a round shape; nothing morphs on hover. The shapes below are decoration, never meaning.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-4 medium:grid-cols-5">
|
<x-livewire-material::grid :columns="['compact' => 2, 'medium' => 5]" gap="space200">
|
||||||
@foreach (['rounded-corner-none', 'rounded-corner-xs', 'rounded-corner-sm', 'rounded-corner-md', 'rounded-corner-lg', 'rounded-corner-lg-increased', 'rounded-corner-xl', 'rounded-corner-xl-increased', 'rounded-corner-xxl', 'rounded-corner-full'] as $corner)
|
@foreach ($corners as $corner)
|
||||||
<div class="space-y-2">
|
<x-livewire-material::stack gap="space100">
|
||||||
<div @class(['h-20 bg-primary-container', $corner])></div>
|
<span data-md-showcase-shape-swatch data-md-corner="{{ $corner }}"></span>
|
||||||
<code class="type-label-md text-on-surface-variant">{{ $corner }}</code>
|
<code class="md-type-label-md md-ink-variant">{{ $corner }}</code>
|
||||||
</div>
|
</x-livewire-material::stack>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</x-livewire-material::grid>
|
||||||
|
|
||||||
<div class="grid grid-cols-3 gap-4 medium:grid-cols-5 expanded:grid-cols-7">
|
<x-livewire-material::grid :columns="['compact' => 3, 'medium' => 5, 'expanded' => 7]" gap="space200">
|
||||||
@foreach (\NoNameWeb\LivewireMaterial\Support\SvgFile::shapeNames() as $shape)
|
@foreach (\NoNameWeb\LivewireMaterial\Support\SvgFile::shapeNames() as $shape)
|
||||||
<div class="space-y-2 text-center">
|
<x-livewire-material::stack gap="space100" align="center">
|
||||||
<x-livewire-material::shape :name="$shape" class="mx-auto size-20 text-secondary-container" />
|
<x-livewire-material::shape :name="$shape" :size="80" style="color: var(--md-sys-color-secondary-container)" />
|
||||||
<code class="type-label-md text-on-surface-variant">{{ $shape }}</code>
|
<code class="md-type-label-md md-ink-variant md-text-center">{{ $shape }}</code>
|
||||||
</div>
|
</x-livewire-material::stack>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</x-livewire-material::grid>
|
||||||
</section>
|
</x-livewire-material::stack>
|
||||||
|
|||||||
Reference in New Issue
Block a user