Files
Possible_o 74baa469d7 feat(message-scroller): add brain and helm for message scroller component (#1684)
* feat(message-scroller): add Brain and Helm chat transcript scroller

Port shadcn message-scroller behavior (auto-follow, scroll anchors,
prepend preserve, overflow signals) with CLI generator, registry CSS,
docs previews, and Storybook stories.

* fix(message-scroller): pin CLI brain peer to 1.3.1

Match the rest of supported-ui-libraries.json and libs/brain so generators
do not install an older Brain that lacks the message-scroller entrypoint.

* fix(message-scroller): rebuild visibility observer on margin changes

IntersectionObserver rootMargin is fixed at construction. Recreate the
observer when scrollMargin or scrollPreviousItemPeek change while
visibility tracking is active so visible ids stay aligned with geometry.

* fix(message-scroller): polish demos and harden configure/destroy

* style(message-scroller): apply prettier formatting

* fix(message-scroller): move stable layout to Helm and Brain attrs

Keep theme CSS for sizing/visual knobs only; host data-direction and
first-frame hide on Brain so Helm stays styling-only.

* fix(message-scroller): move Helm styles out of theme CSS

Keep scrollbar width stable during autoScroll, put Tailwind classes on
Helm so the CLI does not drop non-@apply rules, and center the jump
button with start-1/2.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(message-scroller): move scroller content gap into styles

* docs: add message scroller nav item

* chore: update tailwind 4.3 for scrollbar-* utils

* feat(message-scroller): add data-autoscrolling classes to viewport

* feat(message-scroller): update scroller button classes

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Marc Stammerjohann <8985933+marcjulian@users.noreply.github.com>
2026-09-18 16:58:04 +02:00

232 lines
7.5 KiB
JSON

{
"name": "spartan",
"version": "0.0.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"build": "NODE_OPTIONS=--max-old-space-size=6000 nx run-many --target build --all --parallel=1",
"build-storybook": "nx build-storybook ui-storybook",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"dev": "nx serve app",
"drizzle": "npx drizzle-kit generate --config=./apps/app/drizzle.config.ts",
"e2e": "nx run-many --target e2e --projects=tag:scope:e2e --all --parallel=1 --outputStyle=stream",
"format": "nx format --write --all",
"generate-snippets": "npx nx generate @spartan-ng/tools:generate-primitive-snippets",
"lint": "nx run-many --target=lint --parallel",
"pre-manual-release": "pnpm run prepare-manual-release && pnpm run format && nx run tools:lint --fix",
"prepare-manual-release": "nx g @spartan-ng/tools:set-release-version && nx run-many --target=lint --parallel --fix && nx g @spartan-ng/tools:hlm-to-cli-generator",
"release": "pnpm run release-ui && pnpm run release-cli && pnpm run release-mcp",
"release-cli": "nx run-many --target=release --projects=tag:scope:cli --parallel=1",
"release-mcp": "nx run-many --target=release --projects=tag:scope:mcp --parallel=1",
"release-ui": "nx run-many --target=release --projects=tag:scope:brain --parallel=1",
"smoke": "nx run cli-smoke:smoke",
"start": "nx serve app",
"storybook": "nx storybook ui-storybook",
"test": "nx run-many --target test --all",
"update-contributors": "nx generate @spartan-ng/tools:update-contributors",
"update-hlm-component-preview": "nx generate @spartan-ng/tools:generate-hlm-component-preview",
"update-ui-docs-snapshot": "nx run tools:generate-ui-docs && nx test tools --skip-nx-cache -- --update"
},
"dependencies": {
"@algolia/client-search": "^5.40.0",
"@analogjs/content": "2.1.3",
"@analogjs/router": "2.1.3",
"@analogjs/trpc": "~0.5.0",
"@analogjs/vite-plugin-angular": "2.1.3",
"@angular/animations": "21.2.16",
"@angular/cdk": "21.2.14",
"@angular/common": "21.2.16",
"@angular/compiler": "21.2.16",
"@angular/core": "21.2.16",
"@angular/forms": "21.2.16",
"@angular/platform-browser": "21.2.16",
"@angular/platform-browser-dynamic": "21.2.16",
"@angular/platform-server": "21.2.16",
"@angular/router": "21.2.16",
"@angular/ssr": "21.2.14",
"@fontsource-variable/noto-sans-arabic": "^5.2.10",
"@fontsource-variable/noto-sans-hebrew": "^5.2.8",
"@fontsource/geist": "^5.2.5",
"@fontsource/geist-mono": "^5.2.5",
"@modelcontextprotocol/sdk": "^1.29.0",
"@ng-icons/core": "^32.2.0",
"@nx/angular": "22.7.5",
"@nx/devkit": "22.7.5",
"@nx/plugin": "22.7.5",
"@stackblitz/sdk": "^1.11.0",
"@swc/helpers": "0.5.23",
"@tanstack/angular-charts": "0.16.0",
"@tanstack/angular-table": "9.1.2",
"@tanstack/charts": "0.16.0",
"@testing-library/cypress": "^10.0.2",
"@trpc/client": "10.45.2",
"@trpc/server": "10.45.2",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"drizzle-orm": "^0.33.0",
"embla-carousel-angular": "21.0.0",
"embla-carousel-autoplay": "^8.6.0",
"enquirer": "2.4.1",
"front-matter": "^4.0.2",
"h3": "^1.12.0",
"isomorphic-fetch": "^3.0.0",
"luxon": "^3.7.2",
"marked": "15.0.9",
"marked-gfm-heading-id": "4.1.2",
"marked-highlight": "2.2.2",
"marked-mangle": "1.1.11",
"mermaid": "^11.2.1",
"ngx-scrollbar": "19.1.5",
"ngxtension": "^7.0.2",
"node-html-parser": "^7.0.1",
"ofetch": "^1.4.0",
"ohash": "^1.1.4",
"postcss-selector-parser": "^7.1.1",
"postgres": "^3.4.4",
"prismjs": "^1.29.0",
"rxjs": "~7.8.2",
"semver": "7.6.3",
"storybook": "10.4.2",
"superjson": "^2.2.1",
"tailwind-merge": "^3.7.0",
"tslib": "~2.8.1",
"tw-animate-css": "^1.4.0",
"ufo": "1.5.4",
"zod": "^3.25.76",
"zone.js": "0.16.2"
},
"devDependencies": {
"@analogjs/platform": "2.1.3",
"@angular-devkit/build-angular": "21.2.14",
"@angular-devkit/core": "21.2.14",
"@angular-devkit/schematics": "21.2.14",
"@angular/build": "21.2.14",
"@angular/cli": "21.2.14",
"@angular/compiler-cli": "21.2.16",
"@angular/language-service": "21.2.16",
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"@commitlint/cli": "^19.5.0",
"@commitlint/config-conventional": "^19.5.0",
"@eslint/js": "^9.15.0",
"@faker-js/faker": "^9.0.3",
"@ng-icons/lucide": "^32.2.0",
"@ng-icons/remixicon": "^32.2.0",
"@ng-icons/tabler-icons": "^32.2.0",
"@nx/cypress": "22.7.5",
"@nx/eslint": "22.7.5",
"@nx/eslint-plugin": "22.7.5",
"@nx/js": "22.7.5",
"@nx/storybook": "22.7.5",
"@nx/vite": "22.7.5",
"@nx/vitest": "22.7.5",
"@nx/web": "22.7.5",
"@nx/workspace": "22.7.5",
"@phenomnomnominal/tsquery": "^6.1.3",
"@rollup/plugin-replace": "^6.0.1",
"@schematics/angular": "21.2.14",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/commit-analyzer": "^13.0.0",
"@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@semantic-release/github": "^12.0.8",
"@semantic-release/npm": "^12.0.1",
"@semantic-release/release-notes-generator": "^14.0.1",
"@storybook/addon-a11y": "10.4.2",
"@storybook/addon-docs": "10.4.2",
"@storybook/addon-themes": "10.4.2",
"@storybook/angular": "10.4.2",
"@swc-node/register": "1.11.1",
"@swc/cli": "0.7.10",
"@swc/core": "1.15.8",
"@tailwindcss/cli": "^4.3.3",
"@tailwindcss/postcss": "^4.3.3",
"@testing-library/angular": "^19.4.1",
"@testing-library/jest-dom": "^6.5.0",
"@testing-library/user-event": "^14.5.2",
"@types/luxon": "^3.4.2",
"@types/marked": "^5.0.2",
"@types/node": "22.6.2",
"@types/prismjs": "^1.26.4",
"@types/semver": "^7.5.8",
"@typescript-eslint/utils": "^8.33.1",
"@vitest/browser": "2.1.9",
"@vitest/coverage-v8": "^2.1.8",
"@vitest/ui": "^2.1.8",
"angular-eslint": "21.4.0",
"axe-core": "^4.10.0",
"conventional-changelog": "^6.0.0",
"conventional-changelog-cli": "^5.0.0",
"cypress": "14.3.2",
"cypress-axe": "^1.5.0",
"cypress-real-events": "^1.13.0",
"drizzle-kit": "0.24.2",
"embla-carousel": "^8.6.0",
"esbuild": "^0.24.0",
"eslint": "^9.28.0",
"eslint-config-prettier": "10.1.2",
"eslint-plugin-cypress": "^3.5.0",
"eslint-plugin-storybook": "10.4.2",
"jiti": "2.4.2",
"jsdom": "^26.1.0",
"jsonc-eslint-parser": "^2.1.0",
"less": "^4.2.0",
"ng-packagr": "21.2.5",
"nx": "22.7.5",
"picocolors": "^1.1.1",
"playwright": "^1.47.2",
"postcss": "^8.5.13",
"postcss-import": "~16.1.0",
"postcss-preset-env": "~10.0.5",
"postcss-url": "~10.1.3",
"prettier": "^3.8.1",
"prettier-plugin-organize-imports": "^4.3.0",
"prettier-plugin-packagejson": "^3.0.0",
"prettier-plugin-tailwindcss": "^0.8.1",
"rollup": "^4.22.5",
"rollup-plugin-typescript-paths": "^1.5.0",
"rollup-plugin-visualizer": "^5.12.0",
"semantic-release": "^24.1.2",
"start-server-and-test": "^2.0.8",
"tailwindcss": "^4.3.3",
"tinyglobby": "^0.2.14",
"ts-morph": "^25.0.1",
"ts-node": "10.9.2",
"tw-animate-css": "^1.4.0",
"types-tsconfig": "^2.1.1",
"typescript": "5.9.3",
"typescript-eslint": "^8.33.1",
"verdaccio": "^6.7.2",
"vite": "6.2.1",
"vite-tsconfig-paths": "5.0.1",
"vitest": "^2.1.8"
},
"packageManager": "pnpm@10.30.3",
"engines": {
"node": ">=22.15",
"npm": "please-use-pnpm",
"pnpm": ">=10",
"yarn": "please-use-pnpm"
},
"engineStrict": true,
"pnpm": {
"overrides": {
"form-data": ">=4.0.5",
"handlebars": ">=4.7.9"
}
},
"nx": {
"includedScripts": []
},
"readme": "ERROR: No README data found!",
"trustedDependencies": [
"core-js",
"nx",
"esbuild",
"@swc/core",
"cypress",
"sharp"
],
"_id": "spartan@0.0.0"
}