Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
95becae
feat/multi-select-for-six-checkbox
Nov 6, 2025
17032fe
add noScroll prop to six-dropdown.
belahorvath Nov 13, 2025
5b8b21f
Make six-dropdown scrollable style dependent on noScroll property.
belahorvath Nov 18, 2025
a2e95a2
feat: six-icon now supports custom svgs
fortesp Nov 19, 2025
e76ff15
fix: test spec
fortesp Nov 19, 2025
0f97c8d
docs: docs
fortesp Nov 19, 2025
554cdfa
chore: head comment
fortesp Nov 19, 2025
9f1eb64
chore: head comment
fortesp Nov 19, 2025
03c6935
Merge pull request #442 from six-group/feat/six-dropdown-no-scroll
belahorvath Nov 24, 2025
c297582
fix: code review
fortesp Nov 26, 2025
cc02aea
poc e2e tests using playwright (#431)
JoelLeupp Nov 26, 2025
fe9385a
chore: update release pipeline to use trusted publisher (#448)
colinscz Nov 27, 2025
5ff4fb7
chore: fix issue with required version for insider release (#450)
colinscz Nov 27, 2025
613508f
chore: readd missing insider release steps (#451)
colinscz Nov 27, 2025
902cc80
chore: fix publish issue with trusted oidc setup and add provenance c…
colinscz Nov 27, 2025
d1e67f0
chore: add public repository url to package.json files (#453)
colinscz Nov 27, 2025
0b59c2f
Merge branch 'main' into feature/checkbox-multi-select-value-accessor
JoelLeupp Nov 20, 2025
311da6c
Merge pull request #437 from six-group/feature/checkbox-multi-select-…
JoelLeupp Dec 1, 2025
e3937db
chore: address issue with github pages permission and switch publish …
colinscz Dec 1, 2025
4261e71
chore: add permissions for pr creation in release workflow (#456)
colinscz Dec 2, 2025
4bedf3d
v5.2.0-rc.2 (#457)
github-actions[bot] Dec 2, 2025
d4f3849
Fix Changelog for #439
pennal Dec 10, 2025
582a2ec
chore: bump react library (#458)
pennal Dec 10, 2025
8915ce5
docs: prepare changelog for release for v5.2.0 (#460)
colinscz Dec 11, 2025
083d8b1
v5.2.0 (#461)
github-actions[bot] Dec 11, 2025
3b3a611
chore: add Playwright Tests and parallelize ci workflows (#465)
ibirrer Jan 26, 2026
c090f56
fix: prevent type-to-select for six-select autocomplete
ibirrer Jan 19, 2026
b36e151
Merge pull request #466 from six-group/bugfix/six-autocomplete
JoelLeupp Jan 29, 2026
7b37760
bugfix ensure correct allginment of menu item and checkbox independen…
JoelLeupp Jan 29, 2026
bf4fa64
chore: upgrade dependencies and fix deprecation warnings (#467)
ibirrer Jan 30, 2026
b61b926
v5.3.0-rc.1 (#469)
github-actions[bot] Jan 30, 2026
6bc986d
chore: update angular dependencies to latest bugfix version (#470)
colinscz Feb 2, 2026
2304534
chore: npm audit fixes (#472)
colinscz Feb 6, 2026
8236d3f
v5.3.0-rc.2 (#475)
github-actions[bot] Feb 9, 2026
990fd16
chore: address npm warns about config (#476)
colinscz Feb 11, 2026
c4737ca
docs: prepare changelog for release 5.3.0 (#478)
colinscz Feb 11, 2026
883af71
v5.3.0 (#479)
github-actions[bot] Feb 11, 2026
d365be6
chore: update dependencies (#481)
colinscz Feb 16, 2026
adc6292
feat: add local stage to six-stage-indicator and six-root (#480)
colinscz Feb 16, 2026
1c3e5a9
chore: Revise pull request template for clarity and detail (#485)
colinscz Feb 23, 2026
dddf4e7
feat: six-icon now supports custom svgs
fortesp Nov 19, 2025
e86c5f8
docs: docs
fortesp Nov 19, 2025
7604bd0
chore: head comment
fortesp Nov 19, 2025
ebee657
chore: head comment
fortesp Nov 19, 2025
f86a8c9
fix: code review
fortesp Nov 26, 2025
09ed2fc
Merge branch 'feat/six-icon-with-svg-support' of https://github.com/s…
fortesp Mar 4, 2026
c96d271
482 fixed six-item-picker can go to endless loop when mouse leaves co…
rspy Mar 5, 2026
5ad32b1
docs: prepare changelog for release 5.3.1 (#490)
colinscz Mar 6, 2026
bc7af6b
feat: extend usable space of documentation (#489)
pennal Mar 6, 2026
8b7210c
chore: dependency updates (#488)
colinscz Mar 10, 2026
4f037bb
New paginator component (#484)
pennal Mar 11, 2026
078e544
feat: support icon library by param for six-icon-button and six-tile …
colinscz Mar 11, 2026
1652632
docs: prepare changelog for release 5.4.0 (#496)
pennal Mar 12, 2026
ed8065e
chore: Configure Renovate (#415)
renovate[bot] Mar 25, 2026
e03782e
chore(deps): update dependency pkg-pr-new to ^0.0.66 (#500)
renovate[bot] Mar 26, 2026
16d3738
chore(deps): update actions/checkout action to v5.0.1 (#499)
renovate[bot] Mar 26, 2026
b5de8a2
chore(deps): update actions/checkout action to v6 (#504)
renovate[bot] Mar 26, 2026
3836f52
chore(deps): update actions/setup-node action to v6 (#505)
renovate[bot] Mar 26, 2026
2e88e30
chore(deps): update mcr.microsoft.com/devcontainers/typescript-node d…
renovate[bot] Mar 26, 2026
b3b3720
chore(deps): update actions/upload-artifact action to v7 (#507)
renovate[bot] Mar 26, 2026
f552bb5
docs: improve CLAUDE.md and add path-scoped rules for Claude Code (#497)
deanmarti Mar 27, 2026
e85f072
chore: update dependencies (#514)
colinscz Mar 30, 2026
1259378
feat/breadcrumbs new style (#498)
fortesp Mar 31, 2026
1827569
chore: remove npm token refs (#515)
colinscz Mar 31, 2026
56380c7
chore: add min-release-age 5 days (#516)
colinscz Apr 2, 2026
db3ade3
feat: six-icon now supports custom svgs
fortesp Nov 19, 2025
c073844
docs: docs
fortesp Nov 19, 2025
5cd9325
chore: head comment
fortesp Nov 19, 2025
d3196b8
chore: head comment
fortesp Nov 19, 2025
0ac952c
fix: code review
fortesp Nov 26, 2025
771a1e1
chore: rebase
fortesp Apr 15, 2026
916a4cb
fix: test spec
fortesp Nov 19, 2025
34c8585
docs: docs
fortesp Nov 19, 2025
5f4cc03
chore: head comment
fortesp Nov 19, 2025
9f21871
chore: head comment
fortesp Nov 19, 2025
06fa934
fix: code review
fortesp Nov 26, 2025
4599817
fix: removed test.svg from main assets folder
fortesp Apr 15, 2026
ba6995a
fix: removed test.svg from main assets folder
fortesp Apr 15, 2026
511bb2f
chore: prettier
fortesp Apr 15, 2026
2710c59
chore: lint
fortesp Apr 15, 2026
17ecab3
fix: components.ts
fortesp Apr 15, 2026
5529670
fix: lodash update
fortesp Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
116 changes: 116 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this
repository.

## Project Overview

SIX UI Library is a Stencil-based web component library providing 60+ components with framework
wrappers for Angular, React, and Vue. The monorepo uses npm workspaces. Originally forked from
[Shoelace](https://shoelace.style/).

## Prerequisites

Node.js >= 24

## Commands

```bash
# Install dependencies (run from root)
npm install

# Dev server with hot reload (localhost:3333)
npm start

# Build all packages (core + wrappers + docs)
npm run build

# Build core library + framework wrappers only
npm run build:lib

# Unit tests (Jest, runs with TZ='Etc/GMT-2')
npm run test

# E2E tests (Playwright, from root)
npm run test:e2e

# Single component E2E test (from libraries/ui-library)
cd libraries/ui-library && npx playwright test six-button

# E2E with UI mode
cd libraries/ui-library && npx playwright test --ui

# Update E2E screenshots after visual changes
cd libraries/ui-library && npx playwright test six-button --update-snapshots

# Lint
npm run lint:lib

# Format β€” IMPORTANT: always run before committing
npm run prettier:write
```

## Architecture

**Monorepo:**

- `libraries/ui-library` β€” Core Stencil components (source of truth)
- `libraries/ui-library-angular` β€” Angular wrappers (auto-generated via stencil.config.ts)
- `libraries/ui-library-react` β€” React wrappers (auto-generated)
- `libraries/ui-library-vue` β€” Vue wrappers (auto-generated)
- `examples/` β€” Demo apps (Angular, React, Vue, Nuxt, vanilla JS)
- `docs/` β€” VitePress documentation site

**Component file structure** (in `libraries/ui-library/src/components/six-{name}/`):

- `six-{name}.tsx` β€” Stencil component (TypeScript + JSX)
- `six-{name}.scss` β€” Styles (SCSS, shadow DOM)
- `six-{name}.e2e.ts` β€” E2E tests (Playwright)
- `index.html` β€” Demo/dev page for `npm start`
- `readme.md` β€” Auto-generated by Stencil, do NOT edit

**Key source directories:**

- `src/utils/` β€” Shared utilities (23 modules β€” popover, form, event-listeners, etc.)
- `src/global/` β€” Global styles, CSS variables, SCSS mixins
- `src/functional-components/` β€” Stencil functional components
- `src/test-utils/fixtures.ts` β€” Playwright test fixture (CSS injection + coverage)

## Important Rules

- **Do NOT edit auto-generated files:** `readme.md` in component dirs, `components.d.ts`, and all
files in `stencil-generated/` directories of wrapper libraries
- **Do NOT add `Co-Authored-By` lines** to commits
- **Update the changelog** at `docs/changelog.md` under the "Upcoming" section for any user-facing
change. Follow [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format
- **Shadow DOM:** All components use shadow DOM β€” styles are encapsulated, use CSS custom properties
(`--six-*`) for theming
- **CI verifies clean git state** after build (`git diff --exit-code`), so all auto-generated output
from `npm run build` must be committed

## Commit Convention

Format: `type(scope): subject`

- Types: `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`
- Scope: component name (e.g., `six-button`) or area (e.g., `core`, `docs`)
- Example: `fix(six-dropdown): handle events on blur`

## PR Guidelines

- Branch from `main`, merge back to `main`
- New features require tests and a changelog entry
- Bug fixes: include `(fix #xxxx)` in PR title
- Enable "Allow edits from maintainers"
- CI runs: prettier check, lint, unit tests, E2E tests, and build verification

## Testing

E2E tests (Playwright) are the primary test approach β€” 46+ test files covering functional behavior,
visual regression (screenshots), and accessibility (axe-core). Unit tests (Jest) exist only for a
few utility modules.

- Import `test` from `../../test-utils/fixtures` β€” the fixture injects the CSS stylesheet and
collects coverage automatically
- Never use `page.waitForTimeout()` in tests
- See `.claude/skills/playwright-tests/` for detailed testing patterns and examples
53 changes: 53 additions & 0 deletions .claude/rules/component-development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
paths:
- 'libraries/ui-library/src/components/**/*'
---

# Stencil Component Development

## Component Pattern

Components use Stencil decorators with shadow DOM and SCSS:

```tsx
@Component({
tag: 'six-{name}',
styleUrl: 'six-{name}.scss',
shadow: true,
})
export class Six{Name} {
@Element() host!: HTMLSix{Name}Element;

@Prop({ reflect: true }) propName: string;
@State() internalState = false;
@Event() sixComponentEvent!: EventEmitter<DetailType>;
@Method() async methodName() { }
}
```

## Conventions

- Tag names always start with `six-` prefix
- Class names use PascalCase: `SixButton`, `SixDatepicker`
- Events are prefixed: `six-button-focus`, `six-dropdown-change`
- Use `@Prop({ reflect: true })` for props that should appear as HTML attributes
- Use `hasSlot()` from `../../utils/slot` to check slot content
- Use `submitForm()` from `../../utils/form` for form-participating components
- Expose CSS parts with `part="base"`, `part="label"`, etc. for external styling
- Use JSDoc comments with `@since`, `@status`, `@slot`, `@part` annotations

## Styling

- SCSS files use variables from `src/global/` (e.g., `--six-spacing-medium`, `--six-color-*`)
- Use `:host` for component-level styles
- Use `::slotted()` for slotted content styles
- Expose `--six-*` CSS custom properties for theming

## Adding a New Component

1. Run `npm run generate` from `libraries/ui-library` to scaffold
2. Implement component in `.tsx` with SCSS styles
3. Add `index.html` demo page
4. Write E2E tests (see `.claude/skills/playwright-tests/`)
5. Build (`npm run build:lib`) to generate wrapper code
6. Update changelog
27 changes: 27 additions & 0 deletions .claude/rules/docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
paths:
- 'docs/**/*'
---

# Documentation (VitePress)

## Setup

- Documentation is built with VitePress and lives in `docs/`
- Component API docs are auto-generated from Stencil JSDoc annotations
- Start docs dev server: `npm run start:doc` (from root)
- Build docs: `npm run build:doc`
- Fresh start with rebuilt library: `npm run start:doc:fresh:full`

## Changelog

- Located at `docs/changelog.md`
- Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format
- All user-facing changes MUST be added under the "Upcoming" section
- Categories: Added, Changed, Fixed, Removed
- Prefix breaking changes with **⚠️Breaking**

## Docs base path

The docs site is deployed to `/six-webcomponents/v5/` β€” this is configured in
`docs/.vitepress/config.mts` and must match the `target-folder` in the release workflow.
33 changes: 33 additions & 0 deletions .claude/rules/wrapper-libraries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
paths:
- 'libraries/ui-library-angular/**/*'
- 'libraries/ui-library-react/**/*'
- 'libraries/ui-library-vue/**/*'
---

# Framework Wrapper Libraries

## IMPORTANT: Auto-generated code

The `src/lib/stencil-generated/` directories in each wrapper library are **auto-generated** by
Stencil output targets configured in `libraries/ui-library/stencil.config.ts`. Do NOT edit these
files manually β€” they are overwritten on every build.

## How wrappers work

- `@stencil/angular-output-target` generates Angular component wrappers
- `@stencil/react-output-target` generates React component wrappers
- `@stencil/vue-output-target` generates Vue component wrappers with v-model support

## Vue v-model bindings

Vue wrappers have component models configured in `stencil.config.ts`:

- `six-checkbox`, `six-switch` β†’ `checked` prop via `change` event
- `six-input`, `six-textarea`, `six-range` β†’ `value` prop via `input` event
- `six-select`, `six-datepicker`, `six-date` β†’ `value` prop via `change` event

## Modifying wrapper behavior

To change wrapper generation, edit the output target config in
`libraries/ui-library/stencil.config.ts`, then run `npm run build:lib`.
Loading
Loading