Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
d264428
chore: scaffold Nx 23 + Angular 22 workspace for v1 rewrite
luishcastroc Aug 9, 2026
f00ac72
feat(core): injectGsap context composable and provideGsap
luishcastroc Aug 9, 2026
62198e0
feat(demo): example app — hero, basics, timeline, ScrollTrigger, Spli…
luishcastroc Aug 9, 2026
28b136f
docs: README, LICENSE, CONTRIBUTING, CI and GitHub Pages workflows
luishcastroc Aug 9, 2026
906a5fd
fix(ci): set up pnpm via pnpm/action-setup before setup-node
luishcastroc Aug 9, 2026
a5f1f27
chore(demo): default dev server to port 4300
luishcastroc Aug 9, 2026
8d0105c
feat(core): gsapReveal and gsapStagger sugar directives
luishcastroc Aug 9, 2026
5a843f4
refactor(core): natural directive names — reveal and stagger
luishcastroc Aug 9, 2026
6cd016b
feat(docs): Analog docs app with Shiki-highlighted snippets
luishcastroc Aug 9, 2026
440b2fb
fix(core): make on="scroll" reveals robust to late trigger creation
luishcastroc Aug 9, 2026
b1713eb
feat(docs): Flip example, per-page explanations, GSAP-vs-alone compar…
luishcastroc Aug 9, 2026
62217f0
feat(core): target and targets helpers for viewChild queries
luishcastroc Aug 9, 2026
87e756d
feat(docs): viewChild-first examples, template+TS panels, quickTo page
luishcastroc Aug 9, 2026
14434cb
fix(docs): make the quickTo chaser visibly alive from load
luishcastroc Aug 9, 2026
671bb00
feat(docs): API reference page and plainer example explanations
luishcastroc Aug 9, 2026
9db64b8
feat(core): splitReveal, counter, and parallax directives
luishcastroc Aug 9, 2026
6cc5ce7
feat(docs): showcase five directives, factual page titles
luishcastroc Aug 9, 2026
d4cf4da
feat(core): sequence composition, drawSvg directive, cleanup functions
luishcastroc Aug 10, 2026
351abe3
feat(docs): neo-brutalist redesign, SVG and WebGL examples
luishcastroc Aug 10, 2026
842c6fd
feat(docs): Spanish locale tree, light and dark themes
luishcastroc Aug 10, 2026
0850853
feat(docs): richer SVG and WebGL scenes, animated theme switch
luishcastroc Aug 10, 2026
6890a7a
feat(docs): Draggable example, WebGL cube, start page, UI polish
luishcastroc Aug 10, 2026
c31bda9
test: zoneless TestBed, drop redundant detectChanges
luishcastroc Aug 10, 2026
f3eee97
feat(core): drag, scrambleText, scrollTo, observe directives; gsap ef…
luishcastroc Aug 10, 2026
c26e250
docs(home): feature cards speak Angular, not library internals
luishcastroc Aug 10, 2026
09d9f9e
feat(core): hover directive; the docs nav dogfoods it
luishcastroc Aug 10, 2026
4eadda5
feat(docs): sidebar navigation with GSAP-animated open/close
luishcastroc Aug 10, 2026
1f8f3f1
feat(docs): momentum loop example and full plugin coverage map
luishcastroc Aug 10, 2026
1601c4a
docs(reference): plugin coverage map and tree-shaking guidance
luishcastroc Aug 10, 2026
5f0d8e6
fix(docs): escape interpolation braces in the coverage table
luishcastroc Aug 10, 2026
34126a7
docs(directives): complete per-directive component examples
luishcastroc Aug 10, 2026
c383687
docs(directives): live demo beside tabbed code in every example card
luishcastroc Aug 10, 2026
e3025f7
docs(home): GSAP-agnostic framing, honest benefits note, animated cards
luishcastroc Aug 10, 2026
05beefa
docs: Angular-first targeting in every example, plainer benefits note
luishcastroc Aug 10, 2026
70e8482
feat(docs): continuous sections port; reader-first copy pass
luishcastroc Aug 10, 2026
f7f60cd
feat(docs): radial menu example showing easeReverse
luishcastroc Aug 10, 2026
4c1e795
fix(docs): keep the sidebar usable across breakpoint changes
luishcastroc Aug 10, 2026
389063f
fix(docs): add the missing template snippet on the sections page
luishcastroc Aug 10, 2026
0dcfb70
feat(core): preventDefault input on observe
luishcastroc Aug 10, 2026
ad7d1fa
fix(docs): make every directive demo match its example code
luishcastroc Aug 10, 2026
69cf76f
feat(core): scroller input for container-based ScrollTrigger
luishcastroc Aug 10, 2026
649c729
chore: migrate to inferred nx targets and native tsconfig paths
luishcastroc Aug 10, 2026
8c7ed31
fix(docs): opt out of incremental hydration to stop prerender crashes
luishcastroc Aug 10, 2026
36ed50f
refactor(docs): one tabbed container per example
luishcastroc Aug 10, 2026
be3ee6d
feat(docs): single switchable example card on the directives page
luishcastroc Aug 10, 2026
9947964
feat(docs): dim the accent palette in dark mode
luishcastroc Aug 10, 2026
a4b1dcd
chore: exclude root scripts from nx target inference
luishcastroc Aug 11, 2026
e3965b8
fix(docs): exit the docs build once analog finishes
luishcastroc Aug 11, 2026
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
1 change: 0 additions & 1 deletion .eslintignore

This file was deleted.

47 changes: 0 additions & 47 deletions .eslintrc.base.json

This file was deleted.

21 changes: 0 additions & 21 deletions .eslintrc.json

This file was deleted.

31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: CI

on:
push:
branches:
- main
pull_request:

permissions:
contents: read

jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v5
with:
node-version: 24
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Lint, test, build
run: pnpm nx run-many -t lint test build
54 changes: 54 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Deploy docs

on:
push:
branches:
- main
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v5
with:
node-version: 24
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build docs
run: pnpm nx build docs
env:
DOCS_BASE: /angular-gsap/

- name: SPA fallback
run: cp dist/apps/docs/analog/public/index.html dist/apps/docs/analog/public/404.html

- uses: actions/upload-pages-artifact@v4
with:
path: dist/apps/docs/analog/public

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
18 changes: 16 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# See https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files for more about ignoring files.

# compiled output
dist
tmp
/out-tsc
out-tsc

# dependencies
node_modules
Expand Down Expand Up @@ -39,4 +39,18 @@ testem.log
Thumbs.db

.nx/cache
.nx/workspace-data
.cursor/rules/nx-rules.mdc
.github/instructions/nx.instructions.md

.angular
.claude/settings.local.json
.claude/worktrees
.playwright-mcp

vite.config.*.timestamp*
vitest.config.*.timestamp*

.nx/polygraph
.nx/self-healing
.nx/migrate-runs
2 changes: 0 additions & 2 deletions .npmrc

This file was deleted.

3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@
/dist
/coverage
/.nx/cache
/.nx/workspace-data
.angular

.nx/self-healing
28 changes: 28 additions & 0 deletions .verdaccio/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# path to a directory with all packages
storage: ../tmp/local-registry/storage

# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
maxage: 60m

packages:
'**':
# give all users (including non-authenticated users) full access
# because it is a local registry
access: $all
publish: $all
unpublish: $all

# if package is not available locally, proxy requests to npm registry
proxy: npmjs

# log settings
log:
type: stdout
format: pretty
level: warn

publish:
allow_offline: true # set offline to true to allow publish offline
1 change: 1 addition & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"nrwl.angular-console",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"ms-playwright.playwright",
"firsttris.vscode-jest-runner"
]
}
23 changes: 23 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug api with Nx",
"runtimeExecutable": "npx",
"runtimeArgs": ["nx", "serve", "api"],
"env": {
"NODE_OPTIONS": "--inspect=9229"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"skipFiles": ["<node_internals>/**"],
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/apps/api/dist/**/*.(m|c|)js",
"!**/node_modules/**"
]
}
]
}
3 changes: 0 additions & 3 deletions .vscode/settings.json

This file was deleted.

10 changes: 10 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# angular-gsap: agent notes

Nx monorepo, pnpm 11 (corepack). Two projects:

- `libs/core`: the published package `@angular-gsap/core`. Principle: own lifecycle (scope, cleanup, signals, SSR), never wrap the GSAP API itself.
- `apps/docs`: docs/examples app (Analog): `pnpm nx serve docs`.

Commands: `pnpm nx run-many -t lint test build` (what CI runs), `pnpm nx test core`.

Conventional Commits (`feat(core): …`); releases via `nx release`.
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
47 changes: 47 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Contributing to angular-gsap

Thanks for helping out! This is an Nx monorepo managed with pnpm.

## Setup

```sh
corepack enable # or install pnpm 11 yourself
pnpm install
```

## Layout

| Path | What it is |
| ----------- | ----------------------------------------------- |
| `libs/core` | The published package, `@angular-gsap/core` |
| `apps/docs` | Docs & examples app, built with Analog (`pnpm nx serve docs`) |

## Everyday commands

```sh
pnpm nx serve docs # run the docs/examples app (Analog)
pnpm nx test core # unit tests (vitest)
pnpm nx build core # build the publishable package
pnpm nx run-many -t lint test build # what CI runs
```

## Guidelines

- The core principle of this library: **own lifecycle, never wrap GSAP's API.**
PRs that re-expose `gsap.to`/`from`/`timeline` as directives or wrappers will
be declined; that pattern goes stale against GSAP's release cadence.
- Keep `libs/core` free of dependencies beyond `@angular/*`, `gsap`, and `tslib`.
- Every behavior change needs a spec in `libs/core/src/lib/*.spec.ts`.
- Commit messages follow [Conventional Commits](https://www.conventionalcommits.org)
(`feat(core): …`, `fix(docs): …`). Releases and changelogs are generated from them.

## Releasing (maintainers)

Versioning, changelog, and publishing are handled by [`nx release`](https://nx.dev/docs/features/manage-releases):

```sh
pnpm nx release --dry-run # preview version bump + changelog
pnpm nx release # version, changelog, tag, publish to npm
```

Publishing requires an npm token with access to the `@angular-gsap` scope.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Luis Castro and angular-gsap contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading
Loading