Skip to content

Commit ac2b468

Browse files
authored
Merge pull request #271 from qualcomm/feature/qui-eslint-plugin-updates
feature/qui-eslint-plugin-updates
2 parents 7adeb50 + 1e59262 commit ac2b468

189 files changed

Lines changed: 6569 additions & 1256 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/plugins/marketplace.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,54 @@
1919
"interface": {
2020
"displayName": "QUI Documentation Authoring"
2121
}
22+
},
23+
{
24+
"name": "qui-react-development",
25+
"source": {
26+
"source": "git-subdir",
27+
"url": "qualcomm/qualcomm-ui",
28+
"path": "./plugins/qui-react-development"
29+
},
30+
"policy": {
31+
"installation": "AVAILABLE",
32+
"authentication": "ON_INSTALL"
33+
},
34+
"category": "Development",
35+
"interface": {
36+
"displayName": "QUI React Development"
37+
}
38+
},
39+
{
40+
"name": "qui-angular-development",
41+
"source": {
42+
"source": "git-subdir",
43+
"url": "qualcomm/qualcomm-ui",
44+
"path": "./plugins/qui-angular-development"
45+
},
46+
"policy": {
47+
"installation": "AVAILABLE",
48+
"authentication": "ON_INSTALL"
49+
},
50+
"category": "Development",
51+
"interface": {
52+
"displayName": "QUI Angular Development"
53+
}
54+
},
55+
{
56+
"name": "behavior-testing",
57+
"source": {
58+
"source": "git-subdir",
59+
"url": "qualcomm/qualcomm-ui",
60+
"path": "./plugins/behavior-testing"
61+
},
62+
"policy": {
63+
"installation": "AVAILABLE",
64+
"authentication": "ON_INSTALL"
65+
},
66+
"category": "Development",
67+
"interface": {
68+
"displayName": "Behavior Testing"
69+
}
2270
}
2371
]
2472
}

.changeset/rare-bars-fry.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

.claude-plugin/marketplace.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,48 @@
1616
"description": "QUI Docs workflows for documentation contributors.",
1717
"category": "Documentation",
1818
"keywords": ["claude-code", "documentation", "mdx", "qui-docs"]
19+
},
20+
{
21+
"name": "qui-react-development",
22+
"source": {
23+
"source": "git-subdir",
24+
"url": "qualcomm/qualcomm-ui",
25+
"path": "plugins/qui-react-development"
26+
},
27+
"description": "QUI React best-practice workflows for application developers consuming @qualcomm-ui/react.",
28+
"category": "Development",
29+
"keywords": ["claude-code", "react", "qualcomm-ui", "accessibility", "best-practices"]
30+
},
31+
{
32+
"name": "qui-angular-development",
33+
"source": {
34+
"source": "git-subdir",
35+
"url": "qualcomm/qualcomm-ui",
36+
"path": "plugins/qui-angular-development"
37+
},
38+
"description": "QUI Angular best-practice workflows for application developers consuming @qualcomm-ui/angular.",
39+
"category": "Development",
40+
"keywords": ["claude-code", "angular", "qualcomm-ui", "accessibility", "best-practices"]
41+
},
42+
{
43+
"name": "behavior-testing",
44+
"source": {
45+
"source": "git-subdir",
46+
"url": "qualcomm/qualcomm-ui",
47+
"path": "plugins/behavior-testing"
48+
},
49+
"description": "Behavior testing workflows for React and Angular contributors.",
50+
"category": "Development",
51+
"keywords": [
52+
"claude-code",
53+
"testing",
54+
"react",
55+
"angular",
56+
"components",
57+
"vitest",
58+
"browser-mode",
59+
"behavior-testing"
60+
]
1961
}
2062
]
2163
}

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CLAUDE.md

CLAUDE.md

Lines changed: 66 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,162 +1,111 @@
11
# GLOBAL CODING STANDARDS
22

3-
## AGENT INSTRUCTIONS
3+
## Agent Instructions
44

5-
**IMPORTANT**: As an agent, you MUST read and follow ALL guidelines in this document BEFORE executing any task in a task list. DO NOT skip or ignore any part of these standards. These standards supersede any conflicting instructions you may have received previously.
5+
Read and follow these standards before executing task-list work. They supersede conflicting lower-priority guidance.
66

7-
## Pragmatic Software Engineering Assistant
7+
## Operating Principles
88

9-
You are a pragmatic software engineer who prioritizes correctness and clarity over agreeability. Your job is to write quality code and challenge poor assumptions.
10-
11-
## Core Behavior
12-
13-
**Examine Before Coding:**
14-
15-
- Study existing code patterns and conventions before making changes
16-
- Identify the established architecture and follow it consistently
17-
- Understand the project's design decisions and constraints
18-
19-
**Be Direct:**
20-
21-
- Give one focused solution as your primary recommendation
22-
- Explain your reasoning concisely
23-
- Point out problems with proposed approaches
24-
- Don't sugarcoat feedback about code quality issues
25-
26-
**Focus on Precision:**
27-
28-
- Ask about edge cases, error handling, and performance requirements upfront
29-
- Understand the actual problem before proposing solutions
9+
- Prioritize correctness and clarity over agreeability.
10+
- Examine the existing codebase before coding: study local patterns, architecture, and constraints, then follow them consistently.
11+
- Be direct: give one focused recommendation, explain the reasoning concisely, and call out quality issues.
12+
- Ask first when requirements, edge cases, error handling, or performance expectations are ambiguous.
3013

3114
## Code Standards
3215

33-
- TypeScript strict mode assumed
34-
- Node.js modules prefixed with `node:`
35-
- Handle errors appropriately or explicitly state assumptions
36-
- Follow language conventions strictly
37-
- Use named imports for Node.js modules
38-
- Always prefer promises like `node:fs/promises` instead of synchronous equivalents
39-
- Consider security implications (input validation, sanitization)
40-
- Prefer built-in solutions over external libraries unless there's clear justification
41-
42-
## Comment Guidelines
43-
44-
**Avoid redundant comments that restate obvious code**
45-
46-
- Remove useless inline comments. Keep JSDoc comments.
47-
- Remove obvious comments: Delete comments that merely restate what the code clearly does (e.g., '// increment counter' above 'counter++')
48-
49-
### Comment Review Criteria
50-
51-
When adding comments, always double-check and ask yourself:
52-
53-
- Does this comment add value beyond what well-named code already communicates?
54-
- Does it explain business logic, edge cases, or architectural decisions? → Keep
55-
- Would this help a new developer understand non-obvious behavior? → Keep
56-
57-
### Examples
58-
59-
#### Remove (obvious)
60-
61-
```
62-
// Increment the counter
63-
counter += 1
16+
- Assume TypeScript strict mode.
17+
- Prefix Node.js modules with `node:` and use named imports.
18+
- Prefer promise APIs such as `node:fs/promises` over synchronous equivalents.
19+
- Handle errors appropriately or explicitly state assumptions.
20+
- Follow language and project conventions.
21+
- Consider security implications, including input validation and sanitization.
22+
- Prefer built-in solutions over external libraries unless there is clear justification.
6423

65-
// Check if user is present
66-
if (!user) {
67-
return
68-
}
24+
## Comments
6925

70-
// Loop through items
71-
for (let item in items) {
72-
process(item)
73-
}
74-
```
26+
- Keep JSDoc documentation comments.
27+
- Remove inline comments that merely restate obvious code.
28+
- Add comments only when they explain non-obvious business logic, edge cases, browser behavior, or architectural decisions.
7529

76-
#### Keep (information that can't otherwise be inferred)
30+
Keep comments like this:
7731

7832
```ts
7933
/**
8034
* Safari has historically had inconsistent behavior with programmatically
81-
* focusing hidden or visually obscured form elements
35+
* focusing hidden or visually obscured form elements.
8236
*/
8337
if (isSafari()) {
8438
element.focus()
8539
}
8640
```
8741

88-
Always keep JSDoc documentation comments:
42+
Remove comments like this:
8943

9044
```ts
91-
export interface ConfigLoaderOptions {
92-
/**
93-
* Path to the qui-docs config file. This is automatically detected if omitted.
94-
*/
95-
configFile?: string
45+
// Increment the counter
46+
counter += 1
47+
48+
// Check if user is present
49+
if (!user) {
50+
return
9651
}
9752
```
9853

9954
## Repository Structure
10055

101-
For each framework (currently only react and angular), the code is organized into modules as follows:
102-
103-
- `packages/frameworks/<framework>-core`
104-
- core library that contains most of the logic for each component.
105-
- `packages/frameworks/<framework>`
106-
- these components extend the core implementation and provide the QDS design system abstraction from the `packages/utilities/qds-core` package. This includes things like CSS classes, QDS-specific properties, etc.
107-
- `packages/docs/<framework>-docs`
108-
- library usage documentation. Each component's documentation lives here.
109-
- usage examples are located as individual demo components at `packages/docs/<framework>/src/routes/components+/<component>+/demos/*`
110-
- the markdown documentation with explanations is located at `packages/docs/<framework>/src/routes/components+/<component>+/_<component>.mdx`
111-
- Examples:
112-
- the `button` component's documentation lives at `packages/docs/<framework>/src/routes/components+/button+/_button.mdx`.
113-
- the `button` component's demos live at `packages/docs/<framework>/src/routes/components+/button+/demos/*.tsx`.
56+
Code is organized into shared core packages, framework core packages, QDS framework packages, and docs:
11457

115-
Guidelines:
58+
- `packages/common/core`: shared, framework-agnostic component logic.
59+
- `packages/common/dom`: DOM utilities and helpers.
60+
- `packages/common/utils`: shared general-purpose utilities.
61+
- `packages/common/qds-core`: QDS design tokens, styles, and design-system primitives.
62+
- `packages/frameworks/<framework>-core`: core library logic for each component.
63+
- `packages/frameworks/<framework>`: QDS-specific component wrappers and abstractions, including CSS classes and QDS properties from `packages/common/qds-core`.
64+
- `packages/docs/<framework>-docs`: library usage documentation for the framework.
11665

117-
- When translating examples from one framework to another, examine the component code to determine the appropriate interfaces. The interfaces are similar between frameworks, but not exactly the same. For example, Angular controlled state often uses Angular Forms.
118-
- When attempting to run a script from a package: First check the repository root package.json for the package's alias. If it exists, run the script using `pnpm <alias> <script>`.
66+
For component behavior changes, inspect the lowest relevant layer first. Shared behavior may belong in `packages/common/core`; framework-specific behavior belongs in `packages/frameworks/<framework>-core`; QDS styling and public design-system affordances belong in `packages/frameworks/<framework>`.
11967

120-
### Design Tokens
68+
Component docs live under the framework docs package:
12169

122-
- Design tokens are located in the `packages/common/qds-core/src/styles` directory. The format is the same for each supported brand and theme. Use `qualcomm-dark.css` as a reference.
123-
- The Tailwind Plugin is located in the `packages/common/tailwind-plugin` directory.
70+
- MDX: `packages/docs/<framework>-docs/src/routes/components+/<component>+/_<component>.mdx`
71+
- Demos: `packages/docs/<framework>-docs/src/routes/components+/<component>+/demos/*`
12472

125-
## Documentation Strategy
73+
Examples:
12674

127-
When writing documentation, follow these guidelines:
75+
- Button docs: `packages/docs/angular-docs/src/routes/components+/button+/_button.mdx`
76+
- Button demos: `packages/docs/angular-docs/src/routes/components+/button+/demos/*.ts`
12877

129-
- Do not speak like an AI. Avoid emojis, EM-dashes, and fake enthusiasm.
130-
- Speak like a human
131-
- Analyze the existing tone and speech style of the documentation, then replicate it
132-
- Always use the docs subagent
78+
When translating examples between frameworks, inspect the component code first. Interfaces are similar but not identical; Angular controlled state often uses Angular Forms.
13379

134-
## Testing Strategy
80+
## Project Workflow
13581

136-
- Use the react-tester subagent to write React tests.
137-
- Use the angular-tester subagent to write Angular tests.
82+
- Run package-level tasks through package scripts. Check the root `package.json` for an alias and use `pnpm <alias> <script>` when available. Otherwise use `pnpm -C <relative/path/to/package> <script>`.
83+
- Do not use generic tool invocations such as `pnpm exec vitest` unless no package script exists.
84+
- Design tokens live in `packages/common/qds-core/src/styles`; use `qualcomm-dark.css` as a reference.
85+
- The Tailwind plugin lives in `packages/common/tailwind-plugin`.
86+
- Match the project's formatting configuration and surrounding style.
13887

139-
## Code Formatting
88+
## Documentation
14089

141-
- Match the project's existing formatting configuration
142-
- Maintain consistency with the surrounding code style
90+
- Do not speak like an AI. Avoid emojis, EM-dashes, and fake enthusiasm.
91+
- Match the existing documentation tone.
92+
- Always use the docs agent.
14393

144-
## Response Format
94+
## Testing
14595

146-
1. Ask questions first if anything is ambiguous
147-
2. State assumptions clearly when making them
148-
3. Provide one well-reasoned solution with brief explanation
149-
4. Mention alternative approaches only when they involve significant tradeoffs
150-
5. Identify potential issues with the approach
96+
- Use the testing skills to write tests.
15197

152-
## What NOT to do
98+
## Response Format
15399

154-
- Don't introduce new patterns without understanding why existing ones exist
155-
- Don't agree just to be helpful if you think something breaks consistency
156-
- Don't write code without examining how similar problems are solved elsewhere
157-
- Don't ignore established abstractions in favor of "simpler" solutions
158-
- Don't overengineer when the project favors simpler approaches
100+
1. Ask questions first if anything is ambiguous.
101+
2. State assumptions clearly.
102+
3. Provide one well-reasoned solution with brief explanation.
103+
4. Mention alternatives only when they involve significant tradeoffs.
104+
5. Identify potential issues with the approach.
159105

160-
**Always examine the existing codebase first.** Understand the patterns, respect the architecture, and maintain consistency while improving quality.
106+
## What Not To Do
161107

162-
Be skeptical. Be precise. Challenge me when I'm wrong.
108+
- Do not introduce new patterns without understanding why existing ones exist.
109+
- Do not agree just to be helpful if something breaks consistency.
110+
- Do not ignore established abstractions in favor of simpler-looking alternatives.
111+
- Do not overengineer when the project favors simpler approaches.

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@
8080
"execa": "catalog:",
8181
"glob": "catalog:",
8282
"ignore": "^7.0.5",
83-
"npm-check-updates": "^19.6.3",
83+
"npm-check-updates": "^22.2.0",
8484
"npm-run-all2": "catalog:",
8585
"oxfmt": "^0.48.0",
86-
"playwright": "1.56.1",
86+
"playwright": "^1.60.0",
8787
"prettier": "^3.8.3",
8888
"prettier-plugin-tailwindcss": "^0.7.2",
8989
"pretty-ms": "^9.3.0",
@@ -95,17 +95,17 @@
9595
"syncpack": "^15.0.0",
9696
"tailwindcss": "catalog:",
9797
"tsx": "catalog:",
98-
"turbo": "^2.9.3",
98+
"turbo": "^2.9.14",
9999
"typescript": "catalog:",
100100
"typescript-eslint": "catalog:",
101101
"yaml": "^2.8.3"
102102
},
103103
"resolutions": {
104104
"eslint": "catalog:",
105105
"lodash": "4.18.1",
106-
"playwright": "1.56.1",
106+
"playwright": "1.60.0",
107107
"prettier": "3.8.3",
108-
"typescript": "5.9.3"
108+
"typescript": "catalog:"
109109
},
110-
"packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be"
110+
"packageManager": "pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f"
111111
}

packages/common/core/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# @qualcomm-ui/core Changelog
22

3+
## 1.11.0
4+
5+
May 22nd, 2026
6+
7+
### Features
8+
9+
- [number-input]: support aria labels ([cf182d6](https://github.com/qualcomm/qualcomm-ui/commit/cf182d6))
10+
- [select]: support aria labels ([e6f41e1](https://github.com/qualcomm/qualcomm-ui/commit/e6f41e1))
11+
- [combobox]: support aria labels ([cfaa97b](https://github.com/qualcomm/qualcomm-ui/commit/cfaa97b))
12+
313
## 1.10.0
414

515
May 14th, 2026

0 commit comments

Comments
 (0)