Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions .github/workflows/dmz-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ jobs:
CREDENTIALS_OK=true

# Check required secrets
if [ -z "${{ secrets.SITECORE_EDGE_URL }}" ]; then
echo "❌ SITECORE_EDGE_URL is missing"
MISSING_CREDENTIALS="$MISSING_CREDENTIALS SITECORE_EDGE_URL"
if [ -z "${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME }}" ]; then
echo "❌ NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME is missing"
MISSING_CREDENTIALS="$MISSING_CREDENTIALS NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME"
CREDENTIALS_OK=false
else
echo "✅ SITECORE_EDGE_URL is set"
echo "✅ NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME is set"
fi

if [ -z "${{ secrets.SITECORE_EDGE_CONTEXT_ID }}" ]; then
Expand Down Expand Up @@ -105,7 +105,7 @@ jobs:
echo " Settings > Secrets and variables > Actions > Secrets"
echo ""
echo "Required secrets:"
echo " - SITECORE_EDGE_URL"
echo " - NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME"
echo " - SITECORE_EDGE_CONTEXT_ID"
echo " - NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID"
echo " - SITECORE_EDITING_SECRET"
Expand Down Expand Up @@ -346,7 +346,7 @@ jobs:
if: steps.credential-check.outputs.credentials-valid == 'true'
env:
# Sitecore Edge API Configuration
SITECORE_EDGE_URL: ${{ secrets.SITECORE_EDGE_URL }}
NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME: ${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME }}
SITECORE_EDGE_CONTEXT_ID: ${{ secrets.SITECORE_EDGE_CONTEXT_ID }}
NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID: ${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID }}

Expand All @@ -355,7 +355,6 @@ jobs:
SITECORE_EDITING_SECRET: ${{ secrets.SITECORE_EDITING_SECRET }}

# Additional Sitecore Environment Variables
NEXT_PUBLIC_SITECORE_EDGE_URL: ${{ secrets.SITECORE_EDGE_URL }}
NEXT_PUBLIC_SITECORE_API_KEY: ${{ secrets.NEXT_PUBLIC_SITECORE_API_KEY }}
NEXT_PUBLIC_SITECORE_API_HOST: ${{ secrets.NEXT_PUBLIC_SITECORE_API_HOST }}
NEXT_PUBLIC_DEFAULT_LANGUAGE: ${{ vars.NEXT_PUBLIC_DEFAULT_LANGUAGE || 'en' }}
Expand All @@ -368,7 +367,7 @@ jobs:
echo "=========================================="
echo ""
echo "Sitecore Environment Variables Status:"
echo " SITECORE_EDGE_URL: ${SITECORE_EDGE_URL:+✅ [SET]}${SITECORE_EDGE_URL:-❌ [NOT SET]}"
echo " NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME: ${NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME:+✅ [SET]}${NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME:-❌ [NOT SET]}"
echo " SITECORE_EDGE_CONTEXT_ID: ${SITECORE_EDGE_CONTEXT_ID:+✅ [SET]}${SITECORE_EDGE_CONTEXT_ID:-❌ [NOT SET]}"
echo " NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID: ${NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID:+✅ [SET]}${NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID:-❌ [NOT SET]}"
echo " NEXT_PUBLIC_DEFAULT_SITE_NAME: ${NEXT_PUBLIC_DEFAULT_SITE_NAME}"
Expand Down Expand Up @@ -520,7 +519,7 @@ jobs:
echo ""
echo " 1. Go to: Settings > Secrets and variables > Actions > Secrets"
echo " 2. Add the following required secrets:"
echo " - SITECORE_EDGE_URL"
echo " - NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME"
echo " - SITECORE_EDGE_CONTEXT_ID"
echo " - NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID"
echo " - SITECORE_EDITING_SECRET"
Expand Down Expand Up @@ -570,12 +569,11 @@ jobs:
- name: Run GEO endpoint tests (with server)
id: run-geo-tests
env:
SITECORE_EDGE_URL: ${{ secrets.SITECORE_EDGE_URL }}
NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME: ${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME }}
SITECORE_EDGE_CONTEXT_ID: ${{ secrets.SITECORE_EDGE_CONTEXT_ID }}
NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID: ${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID }}
NEXT_PUBLIC_DEFAULT_SITE_NAME: ${{ vars.NEXT_PUBLIC_DEFAULT_SITE_NAME || 'basic' }}
SITECORE_EDITING_SECRET: ${{ secrets.SITECORE_EDITING_SECRET }}
NEXT_PUBLIC_SITECORE_EDGE_URL: ${{ secrets.SITECORE_EDGE_URL }}
NEXT_PUBLIC_SITECORE_API_KEY: ${{ secrets.NEXT_PUBLIC_SITECORE_API_KEY }}
NEXT_PUBLIC_SITECORE_API_HOST: ${{ secrets.NEXT_PUBLIC_SITECORE_API_HOST }}
NEXT_PUBLIC_DEFAULT_LANGUAGE: ${{ vars.NEXT_PUBLIC_DEFAULT_LANGUAGE || 'en' }}
Expand Down Expand Up @@ -731,7 +729,7 @@ jobs:
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Solution:** An upstream repository administrator must configure secrets:" >> $GITHUB_STEP_SUMMARY
echo "1. Go to: Settings > Secrets and variables > Actions > Secrets" >> $GITHUB_STEP_SUMMARY
echo "2. Add required secrets: SITECORE_EDGE_URL, SITECORE_EDGE_CONTEXT_ID, NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID, SITECORE_EDITING_SECRET" >> $GITHUB_STEP_SUMMARY
echo "2. Add required secrets: NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME, SITECORE_EDGE_CONTEXT_ID, NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID, SITECORE_EDITING_SECRET" >> $GITHUB_STEP_SUMMARY
echo "3. This is NOT a code issue - it's a repository configuration issue" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Next Steps:**" >> $GITHUB_STEP_SUMMARY
Expand Down
8 changes: 3 additions & 5 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ jobs:
if: steps.repo-check.outputs.is-upstream == 'true'
env:
# Sitecore Edge API Configuration
SITECORE_EDGE_URL: ${{ secrets.SITECORE_EDGE_URL }}
NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME: ${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME }}
SITECORE_EDGE_CONTEXT_ID: ${{ secrets.SITECORE_EDGE_CONTEXT_ID }}
NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID: ${{ secrets.NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID }}

Expand All @@ -275,7 +275,6 @@ jobs:
SITECORE_EDITING_SECRET: ${{ secrets.SITECORE_EDITING_SECRET }}

# Additional Sitecore Environment Variables
NEXT_PUBLIC_SITECORE_EDGE_URL: ${{ secrets.SITECORE_EDGE_URL }}
NEXT_PUBLIC_SITECORE_API_KEY: ${{ secrets.NEXT_PUBLIC_SITECORE_API_KEY }}
NEXT_PUBLIC_SITECORE_API_HOST: ${{ secrets.NEXT_PUBLIC_SITECORE_API_HOST }}
NEXT_PUBLIC_DEFAULT_LANGUAGE: ${{ vars.NEXT_PUBLIC_DEFAULT_LANGUAGE || 'en' }}
Expand All @@ -285,7 +284,7 @@ jobs:
set -e # Exit immediately if any command fails
echo "Building all starters with full Sitecore integration..."
echo "Sitecore Environment Variables:"
echo " SITECORE_EDGE_URL: ${SITECORE_EDGE_URL:+[SET]}"
echo " NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME: ${NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME:+[SET]}"
echo " SITECORE_EDGE_CONTEXT_ID: ${SITECORE_EDGE_CONTEXT_ID:+[SET]}"
echo " NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID: ${NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID:+[SET]}"
echo " NEXT_PUBLIC_DEFAULT_SITE_NAME: ${NEXT_PUBLIC_DEFAULT_SITE_NAME}"
Expand Down Expand Up @@ -357,8 +356,7 @@ jobs:
# Provide mock values for tests (in case they need Sitecore config)
SITECORE_EDGE_CONTEXT_ID: "mock-context-id-for-ci-tests"
NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID: "mock-context-id-for-ci-tests"
SITECORE_EDGE_URL: "https://edge.sitecorecloud.io"
NEXT_PUBLIC_SITECORE_EDGE_URL: "https://edge.sitecorecloud.io"
NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME: "https://edge.sitecorecloud.io"
NEXT_PUBLIC_DEFAULT_SITE_NAME: "basic"
NEXT_PUBLIC_DEFAULT_LANGUAGE: "en"
SITECORE_EDITING_SECRET: "mock-editing-secret-for-ci-tests"
Expand Down
2 changes: 1 addition & 1 deletion Agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Run these from **inside a starter directory** (e.g. `examples/kit-nextjs-skate-p
### Required Environment Variables

All starters require these environment variables:
- `SITECORE_EDGE_URL` - XM Cloud Edge URL
- `NEXT_PUBLIC_SITECORE_EDGE_PLATFORM_HOSTNAME` - XM Cloud Edge URL
- `SITECORE_EDGE_CONTEXT_ID` - XM Cloud Edge Context ID
- `NEXT_PUBLIC_DEFAULT_SITE_NAME` - Default site name
- `NEXT_PUBLIC_SITECORE_EDGE_CONTEXT_ID` - Public Edge Context ID
Expand Down
2 changes: 1 addition & 1 deletion examples/basic-nextjs-pages-router/.gitattributes
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Line endings for this repository
# See: https://help.github.com/en/articles/configuring-git-to-handle-line-endings
# This should line up with the expectations from .eslintrc
# This should line up with the expectations from eslint.config.mjs

# Set the default behavior, in case people don't have core.autocrlf set.
* text=crlf
Expand Down
8 changes: 3 additions & 5 deletions examples/basic-nextjs-pages-router/.sitecore/component-map.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
// Below are built-in components that are available in the app, it's recommended to keep them as is

import { BYOCWrapper, NextjsContentSdkComponent, FEaaSWrapper } from '@sitecore-content-sdk/nextjs';
import { Form } from '@sitecore-content-sdk/nextjs';
// end of built-in components

// Components imported from the app itself
// end of built-in components
import * as PartialDesignDynamicPlaceholder from 'src/components/partial-design-dynamic-placeholder/PartialDesignDynamicPlaceholder';


// Components must be registered within the map to match the string key with component name in Sitecore
export const componentMap = new Map<string, NextjsContentSdkComponent>([
['BYOCWrapper', BYOCWrapper],
['FEaaSWrapper', FEaaSWrapper],
['Form', Form],
['PartialDesignDynamicPlaceholder', PartialDesignDynamicPlaceholder],
['PartialDesignDynamicPlaceholder', { ...PartialDesignDynamicPlaceholder }],
]);

export default componentMap;
28 changes: 19 additions & 9 deletions examples/basic-nextjs-pages-router/.sitecore/import-map.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
// This file is auto-generated by the Sitecore Content SDK.
// Below are built-in Content SDK imports neccessary for the import map
import { combineImportEntries, defaultImportEntries } from '@sitecore-content-sdk/nextjs/codegen';
import {
combineImportEntries,
defaultImportEntries,
ImportEntry,
} from '@sitecore-content-sdk/nextjs/codegen';
// end of built-in imports

import { useEffect } from 'react';
import React from 'react';
import { jsx, Fragment } from 'react/jsx-runtime';
import { Placeholder, CdpHelper, useSitecore } from '@sitecore-content-sdk/nextjs';
import Head from 'next/head';
import client from 'lib/sitecore-client';
import Image from 'next/image';
import * as FEAAS from '@sitecore-feaas/clientside/react';
import nextConfig from 'next.config';
import { pageView } from '@sitecore-cloudsdk/events/browser';
import { useEffect } from 'react';
import { pageView } from '@sitecore-content-sdk/events';
import config from 'sitecore.config';

const importMap = [
{
module: 'react',
module: 'react/jsx-runtime',
exports: [
{ name: 'useEffect', value: useEffect },
{ name: 'default', value: React },
{ name: 'jsx', value: jsx },
{ name: 'Fragment', value: Fragment },
]
},
{
Expand Down Expand Up @@ -61,7 +65,13 @@ const importMap = [
]
},
{
module: '@sitecore-cloudsdk/events/browser',
module: 'react',
exports: [
{ name: 'useEffect', value: useEffect },
]
},
{
module: '@sitecore-content-sdk/events',
exports: [
{ name: 'pageView', value: pageView },
]
Expand All @@ -72,6 +82,6 @@ const importMap = [
{ name: 'default', value: config },
]
}
];
] as ImportEntry[];

export default combineImportEntries(defaultImportEntries, importMap);
2 changes: 1 addition & 1 deletion examples/basic-nextjs-pages-router/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
/// <reference path="./.next/types/routes.d.ts" />
import "./.next/types/routes.d.ts";

// NOTE: This file should not be edited
// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
19 changes: 10 additions & 9 deletions examples/basic-nextjs-pages-router/next.config.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
const path = require('path');
const SassAlias = require('sass-alias');

/**
* @type {import('next').NextConfig}
* Next.js 16 defaults to Turbopack; this app relies on custom webpack (Content SDK
* component-props-loader, FEAAS externals). Scripts use `next * --webpack`; see next:build/next:dev.
*/
const nextConfig = {
// Allow specifying a distinct distDir when concurrently running app in a container
Expand Down Expand Up @@ -111,15 +112,15 @@ const nextConfig = {
return config;
},

// Add sass settings for SXA themes and styles
// Sass: dart-sass 1.80+ / Next 16 use the modern compiler API; legacy importers
// (e.g. sass-alias getImporter()) are invalid. Use includePaths for theme imports if needed.
sassOptions: {
importer: new SassAlias({
'@globals': path.join(process.cwd(), './src/assets', 'globals'),
'@fontawesome': path.join(process.cwd(), './node_modules', 'font-awesome'),
}).getImporter(),
// temporary measure until new versions of bootstrap and font-awesome released
quietDeps: true,
silenceDeprecations: ["import", "legacy-js-api"],
includePaths: [
path.join(process.cwd(), 'node_modules'),
path.join(process.cwd(), 'src', 'assets', 'globals'),
],
quietDeps: true,
silenceDeprecations: ['import', 'legacy-js-api'],
},
};

Expand Down
Loading