ResytechResytech Docs

Activity & Equipment Components

Display activities and equipment with themed card and list components.

These components render activity and equipment data from the initialization response. They require no additional API calls — the data is already available after api.registerComponents().

Activity Card

Renders a single activity with image, name, tagline, description, duration/equipment badges, price, and availability.

<resytech-activity-card activity-id="activity-uuid"></resytech-activity-card>

Attributes

AttributeTypeDefaultDescription
activity-idstringActivity UUID from the initialization response
show-taglinebooleantrueShow the activity tagline
show-descriptionbooleantrueShow the description (clamped to 3 lines)
show-pricebooleantrueShow starting price
show-durationsbooleantrueShow duration range badge
show-equipmentbooleantrueShow equipment count badge
show-availabilitybooleantrueShow next available date

Events

EventDetail
activity-select{ activity: InitializationActivity }

Programmatic Data

You can also set the activity data directly via JavaScript:

const card = document.querySelector('resytech-activity-card');
card.activity = myActivityObject;
card.theme = myThemeOverride; // optional

CSS Parts

Style from outside Shadow DOM using ::part():

resytech-activity-card::part(card) { border: 2px solid #e2e8f0; }
resytech-activity-card::part(title) { font-size: 22px; }
resytech-activity-card::part(body) { padding: 24px; }

Activity List

Renders a responsive grid of activity cards. Each card fires activity-select which bubbles up.

<resytech-activity-list></resytech-activity-list>

With an optional title:

<resytech-activity-list show-title="true" title-text="Our Experiences"></resytech-activity-list>

Attributes

AttributeTypeDefaultDescription
show-titlebooleanfalseShow a heading above the grid
title-textstringActivitiesHeading text
empty-textstringNo activities available.Message when no activities exist

CSS Custom Properties

PropertyDescriptionDefault
--resytech-card-min-widthMinimum card width in the grid320px
--resytech-grid-gapGap between cards24px

Equipment Card

Renders a single equipment option with image, name, description, capacity badge, and selection state.

Equipment cards are typically created by the Equipment List, but you can also use them standalone:

const card = document.createElement('resytech-equipment-card');
card.equipment = activity.equipment[0];
card.selected = true;
document.body.appendChild(card);

Attributes

AttributeTypeDefaultDescription
selectedbooleanfalseShow as selected (blue border + checkmark)

Events

EventDetail
equipment-select{ equipment: Equipment }

Equipment List

Renders a grid of equipment cards for a given activity. Set the activity via activity-id attribute or the activity property.

<resytech-equipment-list activity-id="activity-uuid" show-title="true"></resytech-equipment-list>

Attributes

AttributeTypeDefaultDescription
activity-idstringActivity UUID to load equipment from
selectedstringEquipment UUID to show as selected
show-titlebooleanfalseShow heading
title-textstringChoose Your EquipmentHeading text

Programmatic Data

const list = document.querySelector('resytech-equipment-list');
list.activity = selectedActivity;      // set activity data directly
list.selectedUuid = 'equipment-uuid';  // highlight a selection

Wiring Activity → Equipment Selection

A typical pattern is to listen for activity selection and update the equipment list:

document.addEventListener('activity-select', (e) => {
  const equipmentList = document.querySelector('resytech-equipment-list');
  equipmentList.activity = e.detail.activity;
});

document.addEventListener('equipment-select', (e) => {
  const equipmentList = document.querySelector('resytech-equipment-list');
  equipmentList.selectedUuid = e.detail.equipment.uuid;

  // Continue to duration selection...
});

On this page