Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@mountainpass/addressr-svelte

Package Overview
Dependencies
Maintainers
2
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mountainpass/addressr-svelte

Svelte address autocomplete component for Australian address search via Addressr

latest
npmnpm
Version
0.7.0
Version published
Maintainers
2
Created
Source

@mountainpass/addressr-svelte

Svelte address autocomplete component for Australian address search, powered by Addressr.

Part of the addressr-ui monorepo.

Install

npm install @mountainpass/addressr-svelte

Peer dependencies: svelte >= 4.

Drop-in component

<script>
  import { AddressAutocomplete } from '@mountainpass/addressr-svelte';
  import '@mountainpass/addressr-svelte/style.css';
</script>

<AddressAutocomplete
  apiUrl="https://api.addressr.io/"
  onSelect={(address) => {
    console.log(address.sla);          // "1 GEORGE ST, SYDNEY NSW 2000"
    console.log(address.structured);   // { street, locality, state, postcode, ... }
    console.log(address.geocoding);    // { latitude, longitude, ... }
  }}
/>

Props

PropTypeDefaultDescription
apiKeystring--RapidAPI key. Omit for direct API access.
onSelect(address: AddressDetail) => void--Called when an address is selected
labelstring"Search Australian addresses"Accessible label text
placeholderstring"Start typing an address..."Input placeholder
debounceMsnumber300Debounce delay in milliseconds
namestring"address"Input name attribute for form submission
requiredbooleanfalseSets aria-required on the input
apiUrlstring"https://addressr.p.rapidapi.com/"API root URL
apiHoststring"addressr.p.rapidapi.com"RapidAPI host header

Slots

Override rendering zones while keeping built-in search logic and keyboard navigation:

SlotDefaultDescription
loadingAnimated skeleton linesCustom loading state
no-results"No addresses found" messageCustom empty state
<AddressAutocomplete apiUrl="https://api.addressr.io/" onSelect={handleSelect}>
  <li slot="loading">Loading addresses...</li>
  <li slot="no-results">No matches found</li>
</AddressAutocomplete>

When you provide a custom slot, you are responsible for accessibility in that zone.

Headless store

Build your own UI while keeping the search logic, debounce, pagination, and abort handling:

<script>
  import { createAddressSearch } from '@mountainpass/addressr-svelte';

  const search = createAddressSearch({ apiUrl: 'https://api.addressr.io/' });

  function handleInput(e) {
    search.setQuery(e.target.value);
  }
</script>

<input value={$search.query} on:input={handleInput} />

{#if $search.isLoading}
  <p>Searching...</p>
{/if}

<ul>
  {#each $search.results as result}
    <li on:click={() => search.selectAddress(result.pid)}>{result.sla}</li>
  {/each}
  {#if $search.hasMore}
    <li on:click={() => search.loadMore()}>Load more...</li>
  {/if}
</ul>
PropertyTypeDescription
querystringCurrent input value
resultsAddressSearchResult[]Search results (accumulated across pages)
isLoadingbooleanInitial search in progress
isLoadingMorebooleanPagination fetch in progress
hasMorebooleanMore pages available
errorError | nullLatest error
selectedAddressAddressDetail | nullSelected address detail

Store methods

MethodDescription
setQuery(q)Update query (triggers debounced search)
loadMore()Load next page of results
selectAddress(pid)Fetch full address detail
clear()Reset all state
destroy()Clean up timers and abort controllers

Theming

All visual styles use CSS custom properties. Override on any ancestor element:

.my-form {
  --addressr-font-family: 'Inter', sans-serif;
  --addressr-border-color: #ccc;
  --addressr-focus-color: #0066cc;
  --addressr-highlight-bg: #e0f0ff;
  --addressr-error-color: #c62828;
}
TokenDefaultDescription
--addressr-font-familysystem-ui, -apple-system, sans-serifFont stack
--addressr-padding-x0.75remHorizontal padding
--addressr-padding-y0.625remVertical padding
--addressr-text-colorinheritText color
--addressr-border-color#767676Input and dropdown border
--addressr-border-radius0.25remCorner radius
--addressr-focus-color#005fccFocus ring and border
--addressr-z-index1000Dropdown stacking order
--addressr-bg#fffDropdown background
--addressr-shadow0 4px 6px rgba(0,0,0,0.1)Dropdown shadow
--addressr-highlight-bg#e8f0feActive item background
--addressr-mark-weight700Search match font weight
--addressr-mark-colorinheritSearch match text color
--addressr-muted-color#555Status and empty text
--addressr-error-color#d32f2fError message text
--addressr-skeleton-from#e0e0e0Loading skeleton base
--addressr-skeleton-to#f0f0f0Loading skeleton shimmer

The loading state shows animated skeleton lines instead of text. The animation respects prefers-reduced-motion: reduce.

Accessibility

Implements the WAI-ARIA combobox pattern:

  • Full keyboard navigation (Arrow keys, Enter, Escape)
  • Screen reader announcements for results count and loading state
  • Visible focus indicators (3:1 contrast)
  • Touch targets >= 44px
  • Accessible label always present
  • Infinite scroll with loading indicator

For narrower lookups (postcode-only picker on a shipping form, suburb autocomplete, state dropdown) the package also exports three drop-in components and matching headless stores. Each mirrors AddressAutocomplete's a11y, keyboard, and slot contract; the only difference is onSelect receives the SearchResult directly (no follow-up detail fetch — see ADR 006).

<script>
  import {
    PostcodeAutocomplete,
    LocalityAutocomplete,
    StateAutocomplete,
  } from '@mountainpass/addressr-svelte';
</script>

<PostcodeAutocomplete apiKey="..." onSelect={(r) => console.log(r.postcode, r.localities)} />
<LocalityAutocomplete apiKey="..." onSelect={(r) => console.log(r.name, r.state.abbreviation, r.postcode)} />
<StateAutocomplete    apiKey="..." onSelect={(r) => console.log(r.name, r.abbreviation)} />

Headless equivalents createPostcodeSearch, createLocalitySearch, createStateSearch are also exported and follow the same shape as createAddressSearch.

Re-exports

This package re-exports everything from @mountainpass/addressr-core for convenience -- createAddressrClient, parseHighlight, and all types.

License

Apache-2.0

Keywords

svelte

FAQs

Package last updated on 23 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts