AddressSelector
DomainSelectable list of saved addresses built on AddressCard. Supports add, edit, and delete callbacks.
Jane Doe
123 Main Street, Apt 4B
Near Central Park
New York, NY, 10001
United States (US)
+1 555 000 0000
John Smith
456 Oak Avenue
Los Angeles, CA, 90001
United States (US)
<%- include('modules/domain/common/address/AddressSelector', {
addresses: savedAddresses,
selectedIndex: 0,
addHref: '/addresses/new'
}) %>
No saved addresses.
+ Add new address<%- include('modules/domain/common/address/AddressSelector', {
addresses: [],
addHref: '/addresses/new'
}) %>
<%
var _addresses = locals.addresses || [];
var _selectedIndex = locals.selectedIndex !== undefined ? locals.selectedIndex : -1;
var _addHref = locals.addHref || null;
%>
<fieldset class="space-y-3<%= locals.className ? ' ' + locals.className : '' %>">
<legend class="sr-only">Select delivery address</legend>
<% if (_addresses.length === 0) { %>
<p class="text-sm text-text-secondary py-4 text-center">No saved addresses.</p>
<% } else { %>
<div class="space-y-2">
<% _addresses.forEach(function(addr, i) { %>
<label class="block cursor-pointer rounded-lg focus-within:ring-2 focus-within:ring-border-focus">
<input type="radio" name="addressIndex" value="<%= i %>"
<%= _selectedIndex === i ? 'checked' : '' %>
class="sr-only">
<%- include('../address/AddressCard', {
address: addr,
selected: _selectedIndex === i,
editHref: addr.editHref || null,
deleteAction: addr.deleteAction || null
}) %>
</label>
<% }); %>
</div>
<% } %>
<% if (_addHref) { %>
<a href="<%= _addHref %>"
class="w-full inline-flex items-center justify-center gap-2 rounded-md font-medium transition-colors border border-border text-text-primary hover:bg-surface-overlay px-3 py-1.5 text-sm">
+ Add new address
</a>
<% } %>
</fieldset>