Skip to content
Merged
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
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Bug report
description: Something in ForgeDialog behaves differently than documented
description: Something in Forge Dialog behaves differently than documented
labels: ['bug']
body:
- type: markdown
Expand All @@ -12,7 +12,7 @@ body:
- type: input
id: version
attributes:
label: ForgeDialog version
label: Forge Dialog version
placeholder: 0.7.0
validations:
required: true
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Feature request
description: Suggest a capability ForgeDialog does not have yet
description: Suggest a capability Forge Dialog does not have yet
labels: ['enhancement']
body:
- type: textarea
Expand Down Expand Up @@ -33,7 +33,7 @@ body:
attributes:
label: Does this fit the project's constraints?
description: |
ForgeDialog is dependency-free, framework-agnostic, accessible by default,
Forge Dialog is dependency-free, framework-agnostic, accessible by default,
and holds its bundles to gzip budgets. Proposals that conflict with those
are still worth raising — just say so.
options:
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,12 @@ temp
# Claude Code
.claude/
CLAUDE.md
site/vendor

# Generated by scripts/build-site.mjs
site/robots.txt
site/sitemap.xml
site/llms.txt

# Cloudflare Wrangler local state
.wrangler
5 changes: 5 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,8 @@ playwright-report
test-results
temp
.consumer-builds
site/vendor
site/robots.txt
site/sitemap.xml
site/llms.txt
.wrangler
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Project Structure & Module Organization

ForgeDialog is a framework-agnostic TypeScript dialog library. Public exports begin in `src/index.ts`. High-level helpers live in `src/api/`, dialog behavior and accessibility primitives in `src/core/`, plugin support in `src/plugins/`, localization defaults in `src/i18n/`, and CSS plus theme helpers in `src/theme/`. Shared public types are in `src/types.ts`, while small internal helpers belong in `src/utils/`.
Forge Dialog is a framework-agnostic TypeScript dialog library. Public exports begin in `src/index.ts`. High-level helpers live in `src/api/`, dialog behavior and accessibility primitives in `src/core/`, plugin support in `src/plugins/`, localization defaults in `src/i18n/`, and CSS plus theme helpers in `src/theme/`. Shared public types are in `src/types.ts`, while small internal helpers belong in `src/utils/`.

Tests mirror these areas under `tests/` and use the `*.test.ts` suffix. Global test setup is in `tests/setup.ts`. `demo/index.html` is the manual browser demo. Generated output goes to `dist/`; do not edit or commit generated files unless a release workflow explicitly requires it.

Expand All @@ -28,4 +28,4 @@ Vitest runs in jsdom and discovers `tests/**/*.test.ts`. Place focused tests bes

## Commit & Pull Request Guidelines

Existing commits use concise, imperative summaries such as `Add ForgeDialog core: ...`. Keep each commit scoped and explain the user-visible outcome. Pull requests should include a clear description, relevant issue links, verification commands, and tests. Add screenshots or a short recording for visual, animation, or demo changes, and call out API or accessibility impacts explicitly.
Existing commits use concise, imperative summaries such as `Add Forge Dialog core: ...`. Keep each commit scoped and explain the user-visible outcome. Pull requests should include a clear description, relevant issue links, verification commands, and tests. Add screenshots or a short recording for visual, animation, or demo changes, and call out API or accessibility impacts explicitly.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## Unreleased

- `homepage` now points at the documentation site rather than the README anchor, so the npm
page links to the reference instead of back to GitHub.

## 0.7.0

- Added per-component appearance controls: `surfaceColor`, `titleColor`, `titleBackground`,
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing to ForgeDialog
# Contributing to Forge Dialog

Thanks for helping out. ForgeDialog is a dependency-free TypeScript dialog library, so most
Thanks for helping out. Forge Dialog is a dependency-free TypeScript dialog library, so most
contributions touch `src/`, its tests, and the checks that keep the published package honest.

## Getting set up
Expand Down
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# ForgeDialog 0.7
# Forge Dialog 0.7

_A modern, lightweight, and highly customizable JavaScript dialog library for alerts, confirmations, modals, drawers, and interactive workflows._

ForgeDialog is a next-generation dialog component built for modern web applications. It provides beautiful animations, flexible layouts, accessibility, and a powerful API while remaining lightweight, dependency-free, and framework-agnostic.
Forge Dialog is a next-generation dialog component built for modern web applications. It provides beautiful animations, flexible layouts, accessibility, and a powerful API while remaining lightweight, dependency-free, and framework-agnostic.

Designed to replace traditional browser dialogs and heavy modal libraries, ForgeDialog makes it easy to build elegant user interactions — from simple alert boxes to complex multi-step workflows.
Designed to replace traditional browser dialogs and heavy modal libraries, Forge Dialog makes it easy to build elegant user interactions — from simple alert boxes to complex multi-step workflows.

## Highlights

Expand Down Expand Up @@ -176,7 +176,7 @@ import { alert } from 'forgedialog/alert';

## Advanced UI and workflows

ForgeDialog uses the native `<dialog>` top layer and adds typed outcomes, close reasons,
Forge Dialog uses the native `<dialog>` top layer and adds typed outcomes, close reasons,
`AbortSignal`, drawers, bottom sheets, lightboxes, loading states, toast notifications, command
palettes, and persisted branching wizards.

Expand Down Expand Up @@ -257,6 +257,8 @@ npm run test:consumers # build Vite, Webpack, and Node CJS fixtures
npm run validate # run every non-browser quality and packaging gate
npm run validate:all # run validate plus the cross-browser suite
npm run demo # build and serve the demo/ page
npm run site # build and serve the marketing site in site/
npm run site:icons # re-render the site's PNG icons from site/icon.svg
```

Releases use Changesets (`npm run changeset`) and the protected GitHub release workflow. The
Expand All @@ -267,6 +269,13 @@ it depends on, are in [docs/releasing.md](docs/releasing.md).
Supported baselines are Chrome/Edge 88+, Firefox 78+, Safari 15.4+, and Node.js 20+ for package
tooling and SSR imports.

## Website

`site/` holds a dependency-free landing page with an interactive appearance playground, plus a
full API reference at `site/docs.html`. Build and serve both with `npm run site`. The icon, the
generated `sitemap.xml` / `robots.txt` / `llms.txt`, the structured data, and the Cloudflare
deployment settings are covered in [docs/website.md](docs/website.md).

## Contributing

Setup, the checks CI runs, and the gotchas worth knowing are in
Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Supported versions

ForgeDialog is pre-1.0. Fixes land on the most recent minor line; older `0.x` lines are not
Forge Dialog is pre-1.0. Fixes land on the most recent minor line; older `0.x` lines are not
patched.

| Version | Supported |
Expand All @@ -25,7 +25,7 @@ credited in the advisory unless you prefer otherwise.

## Scope

ForgeDialog renders UI in the browser and ships no server component, so most reports will concern
Forge Dialog renders UI in the browser and ships no server component, so most reports will concern
how untrusted content reaches the DOM.

**In scope**
Expand Down
4 changes: 2 additions & 2 deletions demo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ForgeDialog Demo</title>
<title>Forge Dialog Demo</title>
<link rel="stylesheet" href="../dist/index.css" />
<style>
:root {
Expand Down Expand Up @@ -98,7 +98,7 @@
</style>
</head>
<body>
<h1>ForgeDialog Demo</h1>
<h1>Forge Dialog Demo</h1>
<p class="lead">Manual verification page for alert / confirm / prompt / open() and stacking.</p>

<div class="theme-row">
Expand Down
4 changes: 2 additions & 2 deletions docs/architecture.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ForgeDialog Architecture
# Forge Dialog Architecture

ForgeDialog is split into a dependency-free runtime and optional presentation, workflow, and
Forge Dialog is split into a dependency-free runtime and optional presentation, workflow, and
framework entry points. `src/core/Dialog.ts` owns the state machine and native `<dialog>` lifecycle;
`DialogStack` coordinates Escape handling and scroll locking. DOM construction remains isolated in
`domBuilder` so render behavior can evolve independently from orchestration.
Expand Down
2 changes: 1 addition & 1 deletion docs/migration-0.5.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Migrating to ForgeDialog 0.5
# Migrating to Forge Dialog 0.5

Version 0.5 keeps the main `forgedialog` entry backward compatible. Existing imports continue to
include advanced dragging and animation presets, so most applications need no code changes.
Expand Down
27 changes: 13 additions & 14 deletions docs/releasing.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Releasing

ForgeDialog publishes to npm from GitHub Actions using npm **trusted publishing** (OIDC), so no
Forge Dialog publishes to npm from GitHub Actions using npm **trusted publishing** (OIDC), so no
`NPM_TOKEN` secret is stored in the repository. The workflow is `.github/workflows/release.yml`.

## One-time setup
Expand Down Expand Up @@ -43,11 +43,10 @@ publisher with:
| Workflow filename | `release.yml` |
| Environment | `npm` |

> **Check this before relying on it for the first release.** npm configures trusted publishers from
> a package's settings page, which normally means the package has to exist first. `forgedialog` is
> currently unpublished. If npm will not let you add a publisher for a name that has never been
> published, do the first publish manually as described below, then come back and add the trusted
> publisher for every release after it.
> npm configures trusted publishers from a package's settings page, which means the package has to
> exist first. `forgedialog` is published — 0.7.0 went out on 1 September 2026 — so that page is
> available and this can be set up now. The manual first publish described below is history for
> this package; it is kept because a fork starting from an unpublished name still needs it.

### 3. Enable publishing in the workflow

Expand All @@ -69,7 +68,7 @@ accident before you are ready.
4. Tag the merge commit and push the tag:

```sh
git tag -a v0.7.0 -m "ForgeDialog v0.7.0"
git tag -a v0.7.0 -m "Forge Dialog v0.7.0"
git push origin v0.7.0
```

Expand All @@ -90,7 +89,8 @@ request it.

## First publish without trusted publishing

Only if step 2 above turns out to require an existing package:
Not needed here — `forgedialog` already has a published version. This is for a fork publishing a
name that has never been published, where step 2 has no settings page to configure yet:

```sh
npm run validate:all
Expand All @@ -106,13 +106,12 @@ delete the token you used.

**The publish step was skipped.** `NPM_PUBLISH_ENABLED` is not `true`. That is the default.

**`npm error code E404` on `PUT .../forgedialog`, with the tarball already built and listed in the
**`npm error code E404` on `PUT .../<package>`, with the tarball already built and listed in the
log.** This is not an auth or OIDC problem — npm returns 404 rather than 401/403 here specifically
because trusted publishing has nothing to attach to yet: the package has never been published, so
there is no packages page to hold a trusted publisher entry. This is the exact case called out
above in "Check this before relying on it for the first release." Do the manual first publish in
the "First publish without trusted publishing" section, then add the trusted publisher and set
`NPM_PUBLISH_ENABLED=true`.
because trusted publishing has nothing to attach to yet: the name has never been published, so
there is no package settings page to hold a trusted publisher entry. It cannot happen to
`forgedialog` any more, which has a published version; a fork hitting it should do the manual first
publish in the section above, then add the trusted publisher and set `NPM_PUBLISH_ENABLED=true`.

**`ENEEDAUTH` or an OIDC error** (distinct from the E404 above; this is for a package that already
has at least one published version). The trusted publisher entry on npmjs.com must match the
Expand Down
Loading
Loading