blade(''))
->toContain('role="list"')
->toContain('aria-label="Files"')
->toContain('data-list="plain"')
->toContain('data-dividers')
->not->toContain('divide-y')
->toContain('role="listitem"')
->and((string) $this->blade(''))->not->toContain('data-dividers')
->and((string) $this->blade(''))->not->toContain('data-dividers');
});
it('draws M3 Expressive\'s segmented list', function () {
expect((string) $this->blade(''))
->toContain('data-list="segmented"')
->toContain('gap-0.5');
});
it('grows an item from one to three lines, top-aligning the tallest', function () {
expect((string) $this->blade(''))->toContain('items-center')->toContain('min-h-14 py-2')
->and((string) $this->blade(''))->toContain('items-center')->toContain('min-h-18 py-2')->toContain('248 MB')
->and((string) $this->blade(''))
->toContain('items-start')
->toContain('min-h-22 py-3')
->toContain('Protected')
->not->toContain('items-center');
});
it('leaves 16px between the item and what leads or trails it', function () {
expect((string) $this->blade(''))->toContain('flex gap-4 px-4');
});
it('draws the expressive icon size in a segmented list', function () {
expect((string) $this->blade(''))
->toContain('size-5')
->not->toContain('size-6')
->and((string) $this->blade(''))->toContain('size-6');
});
it('leads with an icon, an avatar or an image, and trails with text or an icon', function () {
expect((string) $this->blade(''))
->toContain('3 days')
->and(substr_count((string) $this->blade(''), '