Skip to content
Open
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
32 changes: 32 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## \[1.2.2] - 2026-04-09

This patch release clears ESLint failures in the Next.js app pages and aligns
several code paths with the compiler target so production builds succeed without
enabling `--downlevelIteration`.

### Change

* Altered the avaliable types to the SlotMetadata so the default can handle
a wide variaty of types - `default?: string | number | boolean | object | any[] | null;`

### Lint and code quality

* Resolved `no-else-return`, `no-unused-vars`, `camelcase`, `prefer-const`,
`eqeqeq`, `no-nested-ternary`, `no-lonely-if`, and `no-use-before-define`
across static pages (catch-all docs, assets, foundations, home, system, and
design-token foundation pages).
* Removed or refactored unused `getStaticProps` context parameters, props, and
locals; normalized naming (e.g. font machine keys); simplified icon detail
routing query handling.
* Reordered helper components (token color/effect/typography tables, component
token previews) ahead of page components where required for declaration order.
* Converted `getComponentPreviews` to a hoisted `function` declaration and
refactored the component token table for clearer control flow.

### Build / TypeScript compatibility

* Avoid iterating `Map` / `Set` / `Iterable` / `matchAll` results directly in
`for...of` where the compile target requires it: use `Array.from(...)` or
equivalent helpers in the config-diff registry, snapshot diff, CSF import
parsing, and component artifact sync.

## \[1.2.1] - 2026-04-08

This is a minor release that fixes a bug in the new config diff calculator.
Expand Down
94 changes: 47 additions & 47 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "handoff-app",
"version": "1.2.1",
"version": "1.2.2-7",
"description": "Automated documentation toolchain for building client side documentation from figma",
"author ": {
"name": "Convertiv",
Expand Down
19 changes: 16 additions & 3 deletions src/app-builder/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,23 @@ import path from 'path';
import Handoff from '..';
import { buildComponents } from '../pipeline/components';
import { buildPatterns } from '../pipeline/patterns';
import processComponents from '../transformers/preview/component/builder';
import { buildMainCss } from '../transformers/preview/component/css';
import { buildMainJS } from '../transformers/preview/component/javascript';
import processComponents from '../transformers/preview/component/builder';
import { Logger } from '../utils/logger';
import { generateTokensApi, persistClientConfig } from './client-config';
import { getAppPath, syncPublicFiles } from './paths';
import { WatcherState, getRuntimeComponentsPathsToWatch, watchAppSource, watchComponentDirectories, watchGlobalEntries, watchPages, watchPublicDirectory, watchRuntimeComponents, watchRuntimeConfiguration } from './watchers';
import {
WatcherState,
getRuntimeComponentsPathsToWatch,
watchAppSource,
watchComponentDirectories,
watchGlobalEntries,
watchPages,
watchPublicDirectory,
watchRuntimeComponents,
watchRuntimeConfiguration,
} from './watchers';
import { createWebSocketServer } from './websocket';

const escapeForSingleQuotedJsString = (value: string): string => value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
Expand Down Expand Up @@ -46,10 +56,13 @@ const initializeProjectApp = async (handoff: Handoff): Promise<string> => {

// Copy custom theme CSS if it exists in the user's project
const customThemePath = path.resolve(handoff.workingPath, 'theme.css');
const destPath = path.resolve(appPath, 'css', 'theme.css');
if (fs.existsSync(customThemePath)) {
const destPath = path.resolve(appPath, 'css', 'theme.css');
await fs.copy(customThemePath, destPath, { overwrite: true });
Logger.success(`Custom theme.css loaded`);
} else {
// create a empty theme.css file
await fs.writeFile(destPath, '');
}

// Prepare project app configuration using stable placeholder replacement.
Expand Down
Loading