
Security News
RubyGems Adds Cooldown Feature to Bundler for Newly Published Gems
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.
@mountainpass/addressr-svelte
Advanced tools
Svelte address autocomplete component for Australian address search via Addressr
Svelte address autocomplete component for Australian address search, powered by Addressr.
Part of the addressr-ui monorepo.
npm install @mountainpass/addressr-svelte
Peer dependencies: svelte >= 4.
<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, ... }
}}
/>
| Prop | Type | Default | Description |
|---|---|---|---|
apiKey | string | -- | RapidAPI key. Omit for direct API access. |
onSelect | (address: AddressDetail) => void | -- | Called when an address is selected |
label | string | "Search Australian addresses" | Accessible label text |
placeholder | string | "Start typing an address..." | Input placeholder |
debounceMs | number | 300 | Debounce delay in milliseconds |
name | string | "address" | Input name attribute for form submission |
required | boolean | false | Sets aria-required on the input |
apiUrl | string | "https://addressr.p.rapidapi.com/" | API root URL |
apiHost | string | "addressr.p.rapidapi.com" | RapidAPI host header |
Override rendering zones while keeping built-in search logic and keyboard navigation:
| Slot | Default | Description |
|---|---|---|
loading | Animated skeleton lines | Custom loading state |
no-results | "No addresses found" message | Custom 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.
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>
$search)| Property | Type | Description |
|---|---|---|
query | string | Current input value |
results | AddressSearchResult[] | Search results (accumulated across pages) |
isLoading | boolean | Initial search in progress |
isLoadingMore | boolean | Pagination fetch in progress |
hasMore | boolean | More pages available |
error | Error | null | Latest error |
selectedAddress | AddressDetail | null | Selected address detail |
| Method | Description |
|---|---|
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 |
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;
}
| Token | Default | Description |
|---|---|---|
--addressr-font-family | system-ui, -apple-system, sans-serif | Font stack |
--addressr-padding-x | 0.75rem | Horizontal padding |
--addressr-padding-y | 0.625rem | Vertical padding |
--addressr-text-color | inherit | Text color |
--addressr-border-color | #767676 | Input and dropdown border |
--addressr-border-radius | 0.25rem | Corner radius |
--addressr-focus-color | #005fcc | Focus ring and border |
--addressr-z-index | 1000 | Dropdown stacking order |
--addressr-bg | #fff | Dropdown background |
--addressr-shadow | 0 4px 6px rgba(0,0,0,0.1) | Dropdown shadow |
--addressr-highlight-bg | #e8f0fe | Active item background |
--addressr-mark-weight | 700 | Search match font weight |
--addressr-mark-color | inherit | Search match text color |
--addressr-muted-color | #555 | Status and empty text |
--addressr-error-color | #d32f2f | Error message text |
--addressr-skeleton-from | #e0e0e0 | Loading skeleton base |
--addressr-skeleton-to | #f0f0f0 | Loading skeleton shimmer |
The loading state shows animated skeleton lines instead of text. The animation respects prefers-reduced-motion: reduce.
Implements the WAI-ARIA combobox pattern:
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.
This package re-exports everything from @mountainpass/addressr-core for convenience -- createAddressrClient, parseHighlight, and all types.
Apache-2.0
FAQs
Svelte address autocomplete component for Australian address search via Addressr
We found that @mountainpass/addressr-svelte demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

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.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.