Skip to content

Commit 3fefc53

Browse files
authored
Merge branch 'main' into feature/AR-47597-wf-status-icon
2 parents 6fde60f + 6eea265 commit 3fefc53

37 files changed

Lines changed: 1818 additions & 1440 deletions

.changeset/add-progress-donut.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@drivenets/design-system': minor
3+
---
4+
5+
Add `DsProgressDonut` component

.cursor/notepads/add-play-tests.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,3 @@ For each story without `play`, generate an interaction test following these rule
1111
5. Await all interactions: `await userEvent.click(...)`, `await expect(...)`
1212
6. Don't test implementation details (no data attributes, no CSS selectors), unless it's a required part of the story
1313
7. Test user-visible behavior: render check, click interactions, callback assertions
14-
15-
For stories with callback args, verify the callback was called:
16-
17-
```tsx
18-
await userEvent.click(button);
19-
await expect(args.onClick).toHaveBeenCalledOnce();
20-
```
21-
22-
For stories showing disabled state, verify interactions are blocked:
23-
24-
```tsx
25-
await userEvent.click(element, { pointerEventsCheck: 0 });
26-
await expect(args.onClick).not.toHaveBeenCalled();
27-
```

.cursor/notepads/check-ark-ui.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ I'm about to build a component. Before writing custom code, check if Ark UI alre
55
Steps:
66

77
1. Call the Ark UI MCP `list_components` tool with `framework: "react"` to get all available components.
8-
2. If a matching component exists:
9-
- Call `get_component_props` with `framework: "react"` and the component name to show me the full API.
10-
- Call `get_example` with `framework: "react"`, the component name, and `exampleId: "basic"` to show a usage example.
11-
- Call `styling_guide` with the component name to show data attributes I can use in SCSS.
8+
2. If a matching component exists (framework: "react"):
9+
- Get the components name and get the full API.
10+
- Get the basic usage example.
11+
- Get a styling guide with the component name to show data attributes I can use in SCSS.
1212
3. If no match exists, tell me, so I know to build custom.
1313

1414
When showing the Ark UI API, highlight:

.cursor/rules/storybook.mdc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,21 @@ export const Default: Story = {
4141
};
4242
```
4343

44+
For stories with callback args, verify the callback was called:
45+
46+
```tsx
47+
await userEvent.click(button);
48+
await expect(args.onClick).toHaveBeenCalledOnce();
49+
```
50+
51+
For stories showing disabled state, verify interactions are blocked:
52+
53+
```tsx
54+
await userEvent.click(element, { pointerEventsCheck: 0 });
55+
await expect(args.onClick).not.toHaveBeenCalled();
56+
```
57+
58+
4459
---
4560

4661
## Date Mocking

.cursor/skills/deslop/SKILL.md

Whitespace-only changes.

.cursor/skills/get-pr-comments/SKILL.md

Whitespace-only changes.

.github/labeler-config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ ci:
22
- changed-files:
33
- any-glob-to-any-file: '.github/**'
44

5+
cursor:
6+
- changed-files:
7+
- any-glob-to-any-file: '.cursor/**'
8+
59
tooling:
610
- changed-files:
711
- any-glob-to-any-file:
@@ -22,6 +26,7 @@ tooling:
2226
- '**/.gitignore'
2327
- '.changeset/config.json'
2428
- '.husky/**'
29+
- '.vscode/**'
2530
- 'pnpm-workspace.yaml'
2631
- 'turbo.json'
2732

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import path from 'node:path';
2+
import fs from 'node:fs/promises';
3+
import { promisify } from 'node:util';
4+
import { exec } from 'node:child_process';
5+
import * as git from '@changesets/git';
6+
import writeChangeset from '@changesets/write';
7+
import { type Changeset } from '@changesets/types';
8+
import { shouldSkipPackage } from '@changesets/should-skip-package';
9+
import changesetConfig from '../../.changeset/config.json' with { type: 'json' };
10+
11+
const execAsync = promisify(exec);
12+
13+
const BASE_BRANCH = 'origin/' + changesetConfig.baseBranch;
14+
const ROOT_DIR = path.resolve(import.meta.dirname, '../../');
15+
16+
const existingChangeset = await getExistingChangeset();
17+
18+
if (existingChangeset) {
19+
await fs.rm(existingChangeset);
20+
}
21+
22+
const changedPackages = await getVersionableChangedPackages();
23+
24+
if (changedPackages.length === 0) {
25+
console.log('No changed packages found');
26+
process.exit(0);
27+
}
28+
29+
const changeset: Changeset = {
30+
summary: 'Update dependencies',
31+
releases: changedPackages.map((pkg) => ({
32+
name: pkg.packageJson.name,
33+
type: 'patch',
34+
})),
35+
};
36+
37+
await writeChangeset(changeset, ROOT_DIR);
38+
39+
await git.add('-A', ROOT_DIR);
40+
await git.commit('chore: update changeset', ROOT_DIR);
41+
42+
await execAsync('git push', { cwd: ROOT_DIR });
43+
44+
async function getExistingChangeset() {
45+
const changedFiles = await git.getChangedFilesSince({
46+
cwd: ROOT_DIR,
47+
ref: BASE_BRANCH,
48+
});
49+
50+
return changedFiles.find((file) => file.startsWith('.changeset/') && file.endsWith('.md'));
51+
}
52+
53+
// Inspired by:
54+
// https://github.com/changesets/changesets/blob/d23e19e2d/packages/cli/src/utils/versionablePackages.ts
55+
async function getVersionableChangedPackages() {
56+
const changedPackages = await git.getChangedPackagesSinceRef({
57+
cwd: ROOT_DIR,
58+
ref: BASE_BRANCH,
59+
});
60+
61+
return changedPackages.filter(
62+
(pkg) =>
63+
!shouldSkipPackage(pkg, {
64+
ignore: changesetConfig.ignore,
65+
allowPrivatePackages: false,
66+
}),
67+
);
68+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Dependabot
2+
3+
on: pull_request_target
4+
5+
permissions: {}
6+
7+
concurrency:
8+
group: '${{ github.workflow }} - Dependabot Changeset @ ${{ github.event.pull_request.number }}'
9+
cancel-in-progress: true
10+
11+
jobs:
12+
generate-changeset:
13+
name: Generate Changeset
14+
15+
# IMPORTANT:
16+
# NEVER REMOVE THIS CONDITION!
17+
# We're using `pull_request_target` in order to have write access to the base repository
18+
# so we'll be able to commit the changeset file.
19+
# Removing this condition could give privileged access to a potential attacker.
20+
if: github.event.pull_request.user.login == 'dependabot[bot]'
21+
22+
runs-on: ubuntu-latest
23+
24+
permissions:
25+
contents: write
26+
27+
steps:
28+
- name: Checkout source code
29+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
30+
with:
31+
fetch-depth: 0
32+
ref: ${{ github.head_ref }}
33+
34+
- name: Install Dependencies
35+
uses: ./.github/actions/install
36+
37+
- name: Configure git user
38+
run: |
39+
git config user.name 'github-actions[bot]'
40+
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
41+
42+
- name: Generate changeset
43+
run: node .github/scripts/generate-dependabot-changeset.ts

package.json

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"lint:root": "eslint --max-warnings=0 .",
1313
"typecheck": "turbo run typecheck typecheck:root",
1414
"typecheck:root": "tsc",
15-
"lint:versions": "syncpack list-mismatches",
15+
"lint:versions": "syncpack lint",
1616
"lint:spell": "cspell . --quiet",
1717
"lint:unused": "knip",
1818
"lint:dedupe": "pnpm dedupe --check",
@@ -28,29 +28,33 @@
2828
},
2929
"devDependencies": {
3030
"@changesets/cli": "^2.29.8",
31+
"@changesets/git": "^3.0.4",
32+
"@changesets/should-skip-package": "^0.1.2",
33+
"@changesets/types": "^6.1.0",
34+
"@changesets/write": "^0.4.0",
3135
"@commitlint/cli": "^20.4.1",
3236
"@commitlint/config-conventional": "^20.4.1",
3337
"@commitlint/types": "^20.4.0",
3438
"@drivenets/commitlint-plugin-design-system": "workspace:*",
3539
"@eslint/core": "^1.1.0",
3640
"@eslint/js": "^9.39.2",
37-
"@types/node": "^25.2.2",
38-
"@vitest/eslint-plugin": "^1.6.7",
41+
"@types/node": "^25.3.0",
42+
"@vitest/eslint-plugin": "^1.6.9",
3943
"cspell": "^9.6.4",
4044
"eslint": "^9.39.2",
4145
"eslint-import-resolver-typescript": "^4.4.4",
4246
"eslint-plugin-import-x": "^4.16.1",
43-
"eslint-plugin-unicorn": "^62.0.0",
44-
"globals": "^16.5.0",
47+
"eslint-plugin-unicorn": "^63.0.0",
48+
"globals": "^17.3.0",
4549
"husky": "^9.1.7",
46-
"knip": "^5.83.1",
50+
"knip": "^5.84.1",
4751
"lint-staged": "^16.2.7",
48-
"oxfmt": "^0.28.0",
52+
"oxfmt": "^0.33.0",
4953
"playwright": "^1.58.2",
50-
"syncpack": "^13.0.4",
51-
"turbo": "^2.8.3",
54+
"syncpack": "^14.0.0",
55+
"turbo": "^2.8.10",
5256
"typescript": "^5.9.3",
53-
"typescript-eslint": "^8.54.0"
57+
"typescript-eslint": "^8.56.0"
5458
},
5559
"pnpm": {
5660
"overrides": {

0 commit comments

Comments
 (0)