Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
c594f1a
feat: basic setup for the angular app. Consuming helm components and …
Jun 24, 2026
24aab1d
Upgrade Angular dependencies to 22.0.2 and CDK to 22.0.0
sjoerdbeentjes Jun 24, 2026
43738a2
feat(angular): export compiled styles.css
sjoerdbeentjes Jun 24, 2026
f7e5332
refactor(angular-app): replace NX with Angular CLI
sjoerdbeentjes Jun 24, 2026
4429606
fix(angular-app): consume compiled @surfnet/angular styles and fix im…
sjoerdbeentjes Jun 24, 2026
0015cb6
chore: add angular-app to Claude Code launch config
sjoerdbeentjes Jun 24, 2026
4b18e47
fix: failing angular-app test setup.
Jun 24, 2026
c640047
feat(react): add core component set + data table
sjoerdbeentjes Jun 24, 2026
41b48b5
chore: remove changeset
sjoerdbeentjes Jun 23, 2026
1394e92
refactor(react): switch vendored components and stories to Phosphor i…
sjoerdbeentjes Jun 23, 2026
f7bdad5
fix(react): make the separator orientation control live
sjoerdbeentjes Jun 23, 2026
224b6f4
feat(contracts): add sidebarContract
sjoerdbeentjes Jun 24, 2026
b211d4c
fix(react): force dynamic JSX source in Storybook docs panel
sjoerdbeentjes Jun 24, 2026
89ba944
fix(react): use controlled state in checkbox story and fix avatar fal…
sjoerdbeentjes Jun 24, 2026
568c3a0
fix(react): surface contract docs in story controls and tooltips
sjoerdbeentjes Jun 24, 2026
53c744a
feat(contracts): add card, textarea, and input-group contracts
sjoerdbeentjes Jun 24, 2026
c2c4bb7
refactor(react): decompose DataTable into sub-components and extract …
sjoerdbeentjes Jun 24, 2026
a33e7d1
feat(react): add card, textarea, and input-group components
sjoerdbeentjes Jun 24, 2026
73b8c9e
chore(react): switch to preserveModules build and add tsconfig.build.…
sjoerdbeentjes Jun 24, 2026
3a1865c
Add 'use client' directive to components
sjoerdbeentjes Jun 24, 2026
0e2a45e
feat(react-app): remove transpilePackages for @surfnet/react
sjoerdbeentjes Jun 24, 2026
e3a506c
Add 'use client' directive to breadcrumb, button, field, input, and s…
sjoerdbeentjes Jun 24, 2026
3a7e6ad
feat: add spartan-ng helm components and storybook stories for them t…
Jun 26, 2026
3827b53
fix: lint issues.
Jun 26, 2026
f5dd74c
fix: add new library dependencies to allowedNonPeerDependencies.
Jun 26, 2026
b078a82
fix(angular): tie component axes to @surfnet/contracts
sjoerdbeentjes Jun 29, 2026
0d6243a
chore(angular): drop unused @tanstack/angular-table dependency
sjoerdbeentjes Jun 29, 2026
2caf114
refactor(angular): use Phosphor icons in components, drop Lucide
sjoerdbeentjes Jun 29, 2026
e0c4cfb
fix(stories): make input-group leading dropdown update the trigger label
sjoerdbeentjes Jun 29, 2026
6904279
chore: add Storybook launch configs for preview
sjoerdbeentjes Jun 29, 2026
bfad2db
fix(angular): style input-group dropdown trigger with hlmInputGroupBu…
sjoerdbeentjes Jun 30, 2026
8f41823
fix: internal imports within the angular package, to solve errors on …
Jun 30, 2026
e841c60
fix: recreate pnpm-lock file after resolving merge conflicts on it.
Jun 30, 2026
99ea970
feat: make demo page according to POC design, excluding the data table.
Jul 1, 2026
e8a11e8
feat: readme toegevoegd over POC-bevindingen voor Angular met spartan…
Jul 1, 2026
76fc73e
Merge branch 'main' into feat/basics-angular-app
Jul 1, 2026
d760b21
feat: add data-table to Angular app demo page.
Jul 2, 2026
f4714d6
fix: cleanup and test fixes.
Jul 2, 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
6 changes: 6 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
"runtimeArgs": ["--filter", "@surfnet/react-app", "dev"],
"port": 3000
},
{
"name": "angular-app",
"runtimeExecutable": "pnpm",
"runtimeArgs": ["--filter", "@surfnet/angular-app", "start"],
"port": 4200
},
{
"name": "react-storybook",
"runtimeExecutable": "pnpm",
Expand Down
61 changes: 31 additions & 30 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,30 +1,31 @@
# dependencies
node_modules
.pnpm-store

# secrets
.env
.env.local

# build output
dist
storybook-static

# turbo
.turbo

# angular
.angular

# logs
*.log
npm-debug.log*
pnpm-debug.log*

# editor / os
.DS_Store
!.vscode
.vscode/*
!.vscode/extensions.json
!.vscode/mcp.json
.idea
# dependencies
node_modules
.pnpm-store

# secrets
.env
.env.local

# build output
dist
storybook-static

# turbo
.turbo

# angular
.angular

# logs
*.log
npm-debug.log*
pnpm-debug.log*

# editor / os
.DS_Store
.vs
!.vscode
.vscode/*
!.vscode/extensions.json
!.vscode/mcp.json
.idea
17 changes: 17 additions & 0 deletions apps/angular-app/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single
ij_typescript_use_double_quotes = false

[*.md]
max_line_length = off
trim_trailing_whitespace = false
2 changes: 2 additions & 0 deletions apps/angular-app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.nx
vitest.config.*.timestamp*
5 changes: 5 additions & 0 deletions apps/angular-app/.postcssrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"plugins": {
"@tailwindcss/postcss": {}
}
}
3 changes: 3 additions & 0 deletions apps/angular-app/.vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"recommendations": ["angular.ng-template", "nrwl.angular-console"]
}
20 changes: 20 additions & 0 deletions apps/angular-app/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "ng serve",
"type": "chrome",
"request": "launch",
"preLaunchTask": "npm: start",
"url": "http://localhost:4200/"
},
{
"name": "ng test",
"type": "chrome",
"request": "launch",
"preLaunchTask": "npm: test",
"url": "http://localhost:9876/debug.html"
}
]
}
42 changes: 42 additions & 0 deletions apps/angular-app/.vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
// For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "start",
"isBackground": true,
"problemMatcher": {
"owner": "typescript",
"pattern": "$tsc",
"background": {
"activeOnStart": true,
"beginsPattern": {
"regexp": "(.*?)"
},
"endsPattern": {
"regexp": "bundle generation complete"
}
}
}
},
{
"type": "npm",
"script": "test",
"isBackground": true,
"problemMatcher": {
"owner": "typescript",
"pattern": "$tsc",
"background": {
"activeOnStart": true,
"beginsPattern": {
"regexp": "(.*?)"
},
"endsPattern": {
"regexp": "bundle generation complete"
}
}
}
}
]
}
74 changes: 74 additions & 0 deletions apps/angular-app/angular.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"angular-app": {
"projectType": "application",
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"browser": "src/main.ts",
"tsConfig": "tsconfig.app.json",
"assets": [
{
"glob": "**/*",
"input": "public"
}
],
"styles": ["src/styles.css"],
"outputPath": "dist/angular-app"
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kB",
"maximumError": "8kB"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular/build:dev-server",
"configurations": {
"production": {
"buildTarget": "angular-app:build:production"
},
"development": {
"buildTarget": "angular-app:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular/build:extract-i18n"
},
"test": {
"builder": "@angular/build:unit-test",
"options": {
"providersFile": "src/test-providers.ts"
}
}
}
}
}
}
46 changes: 46 additions & 0 deletions apps/angular-app/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"name": "@surfnet/angular-app",
"version": "0.0.0",
"private": true,
"description": "Demo app for testing @surfnet/angular components.",
"type": "module",
"scripts": {
"ng": "ng",
"dev": "ng serve",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"lint": "ngc --noEmit -p tsconfig.app.json"
},
"dependencies": {
"@angular/cdk": "22.0.0",
"@angular/common": "22.0.2",
"@angular/compiler": "22.0.2",
"@angular/core": "22.0.2",
"@angular/forms": "22.0.2",
"@angular/platform-browser": "22.0.2",
"@angular/router": "22.0.2",
"@ng-icons/core": "^33.0.0",
"@ng-icons/phosphor-icons": ">=32.0.0 <34.0.0",
"@spartan-ng/brain": "^0.0.1-alpha.720",
"@surfnet/angular": "workspace:*",
"@tanstack/angular-table": "^8.21.4",
"postcss": "^8.5.15",
"rxjs": "~7.8.2",
"tslib": "^2.8.1"
},
"devDependencies": {
"@angular/build": "22.0.3",
"@angular/cli": "22.0.3",
"@angular/compiler-cli": "22.0.2",
"@surfnet/typescript-config": "workspace:*",
"@tailwindcss/postcss": "4.3.1",
"jsdom": "^29.1.1",
"tailwindcss": "^4.3.1",
"tw-animate-css": "^1.4.0",
"typescript": "^6.0.3",
"vitest": "^4.1.9",
"zone.js": "0.16.2"
}
}
Binary file added apps/angular-app/public/favicon.ico
Binary file not shown.
8 changes: 8 additions & 0 deletions apps/angular-app/src/_globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* Components, design tokens and preflight, fully compiled by @surfnet/angular.
No Tailwind setup required to consume the design system. */
@import '@surfnet/angular/styles.css';

/* The app's own Tailwind, for utilities used in app templates (e.g. layout).
Skip preflight here, it already ships in the package stylesheet above. */
@import 'tailwindcss/theme.css' layer(theme);
@import 'tailwindcss/utilities.css';
15 changes: 15 additions & 0 deletions apps/angular-app/src/app/app.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import {
ApplicationConfig,
provideBrowserGlobalErrorListeners,
provideZonelessChangeDetection,
} from '@angular/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';

export const appConfig: ApplicationConfig = {
providers: [
provideBrowserGlobalErrorListeners(),
provideZonelessChangeDetection(),
provideRouter(routes),
],
};
Empty file.
3 changes: 3 additions & 0 deletions apps/angular-app/src/app/app.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<main role="main">
<router-outlet />
</main>
15 changes: 15 additions & 0 deletions apps/angular-app/src/app/app.routes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Routes } from '@angular/router';
import { DemoComponent } from './demo/demo.component';

export const routes: Routes = [
{
path: '',
pathMatch: 'full',
redirectTo: 'demo',
},
{
path: 'demo',
pathMatch: 'full',
component: DemoComponent,
},
];
21 changes: 21 additions & 0 deletions apps/angular-app/src/app/app.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { App } from './app';

describe('App', () => {
let component: App;
let fixture: ComponentFixture<App>;

beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [App],
}).compileComponents();

fixture = TestBed.createComponent(App);
component = fixture.componentInstance;
fixture.whenStable();
});

it('should create', () => {
expect(component).toBeTruthy();
});
});
10 changes: 10 additions & 0 deletions apps/angular-app/src/app/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';

@Component({
selector: 'app-root',
imports: [RouterOutlet],
templateUrl: './app.html',
styleUrl: './app.css',
})
export class App {}
Empty file.
Loading
Loading