blade('')) ->toContain('role="list"') ->toContain('aria-label="Files"') ->toContain('data-list="plain"') ->toContain('divide-y divide-outline-variant') ->toContain('role="listitem"'); }); 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', function () { expect((string) $this->blade(''))->toContain('min-h-14') ->and((string) $this->blade(''))->toContain('min-h-18')->toContain('248 MB') ->and((string) $this->blade(''))->toContain('min-h-22')->toContain('Protected'); }); 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(''), 'toBe(2) ->and((string) $this->blade(''))->toContain('bg-primary-container')->toContain('>AM') ->and((string) $this->blade(''))->toContain('and((string) $this->blade(''))->toContain('size-14'); }); it('makes a linked item a row that opens from anywhere', function () { expect((string) $this->blade('')) ->toContain('data-list-row') ->toContain('href="/settings"') ->toContain('data-list-open') ->toContain('wire:navigate'); }); it('marks a selected item and takes controls in its slots', function () { expect((string) $this->blade('')) ->toContain('data-selected') ->toContain('') ->toContain(''); });