Skip to main content
The Hey Chocolate Nuxt module provides composables, server utilities, and SSR-optimized data fetching.

Installation

npm install @heychocolate/nuxt

Setup

Add the module to your nuxt.config.ts:
export default defineNuxtConfig({
  modules: ['@heychocolate/nuxt'],
  heychocolate: {
    apiKey: process.env.HEYCHOCOLATE_API_KEY,
  },
});

Composables

useProduct

<script setup>
const { data: product, pending } = await useProduct('prod_abc123');
</script>

<template>
  <div v-if="!pending">
    <h1>{{ product.name }}</h1>
    <p>CO2: {{ product.impactScore.co2Equivalent }} kg CO2e</p>
  </div>
</template>

useImpactCalculation

<script setup>
const { calculate, result, pending } = useImpactCalculation();

async function onCalculate() {
  await calculate({
    productId: 'prod_abc123',
    quantity: 100,
    transportMethod: 'TRUCK',
  });
}
</script>

<template>
  <button @click="onCalculate" :disabled="pending">Calculate</button>
  <p v-if="result">{{ result.equivalency.description }}: {{ result.equivalency.value }}</p>
</template>

useCartImpact

<script setup>
const { cartImpact, pending } = useCartImpact({
  sessionId: 'session_abc',
  items: cartItems,
  shippingAddress: { country: 'NL' },
});
</script>

<template>
  <div v-if="!pending">
    <p>Cart footprint: {{ cartImpact.totalCo2Equivalent }} kg CO2e</p>
    <p>{{ cartImpact.equivalency.description }}: {{ cartImpact.equivalency.value }}</p>
  </div>
</template>

Server utilities

Use in server routes and API endpoints:
// server/api/product-impact.ts
import { useHeyChocolateServer } from '@heychocolate/nuxt/server';

export default defineEventHandler(async (event) => {
  const client = useHeyChocolateServer();
  const productId = getQuery(event).id as string;

  const impact = await client.calculations.impact({
    productId,
    quantity: 1,
  });

  return impact;
});

Components

<template>
  <HcCarbonBadge product-id="prod_abc123" variant="detailed" />
  <HcComparisonTable :product-ids="['prod_abc123', 'prod_def456']" />
  <HcSupplyChainViewer product-id="prod_abc123" />
</template>

Environment variables

HEYCHOCOLATE_API_KEY=sk_live_your_key
NUXT_PUBLIC_HEYCHOCOLATE_API_KEY=sk_live_readonly_key