Skip to content

Svelte

Install

bash
npm install alap svelte

Setup

svelte
<script>
  import { AlapProvider, AlapLink } from 'alap/svelte';
  import config from './alap-config';
</script>

<AlapProvider {config}>
  <p>Check out <AlapLink query=".coffee">cafes</AlapLink>.</p>
</AlapProvider>

Components

Same Provider/Link/Hook pattern as React. Svelte-specific differences:

  • Props passed as Svelte attributes (config={config}, query=".coffee")
  • Events via callback props (onItemHover, onTriggerContext)
  • useAlap() returns a reactive object (Svelte 5 runes internally)

<AlapProvider>

PropTypeDefaultDescription
configAlapConfigrequiredThe link configuration
menuTimeoutnumberfrom configAuto-dismiss timeout override
PropTypeDefaultDescription
querystringrequiredExpression to evaluate
anchorIdstringAnchor ID for bare @ macro
mode'dom' | 'webcomponent' | 'popover''dom'Rendering mode
menuClassNamestringCSS class on menu container
listType'ul' | 'ol'from configList element type
maxVisibleItemsnumberfrom configScroll after N items
onItemHover(detail) => voidMouse enters menu item
onItemContext(detail) => voidRight-click/ArrowRight on item

useAlap()

MethodSignatureDescription
query()(expression, anchorId?) => string[]Expression to item IDs
resolve()(expression, anchorId?) => Array<{ id } & AlapLink>Expression to link objects
getLinks()(ids) => Array<{ id } & AlapLink>IDs to link objects

Example

svelte
<script>
  import { AlapProvider, AlapLink } from 'alap/svelte';
  import config from './alap-config';

  function handleHover({ link }) {
    console.log('Hovering:', link.label);
  }
</script>

<AlapProvider {config}>
  <p>Famous <AlapLink query=".bridge" onItemHover={handleHover}>bridges</AlapLink>.</p>
  <p>Or try <AlapLink query=".coffee + .sf">SF cafes</AlapLink>.</p>
</AlapProvider>