Skip to content

Commit e922231

Browse files
committed
Update
1 parent a14accf commit e922231

19 files changed

Lines changed: 623 additions & 41 deletions

.github/FUNDING.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# These are supported funding model platforms
2+
3+
github: josunlp
4+
ko_fi: josunlp
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: Bug report
2+
description: Report a reproducible problem in @bquery/ui.
3+
title: "[Bug]: "
4+
labels:
5+
- bug
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thank you for helping improve @bquery/ui.
11+
12+
Please provide enough detail for maintainers to reproduce the problem. If you are reporting a security issue, do **not** open a public issue — use the private security contact instead.
13+
- type: checkboxes
14+
id: checks
15+
attributes:
16+
label: Pre-flight checklist
17+
options:
18+
- label: I searched existing issues and did not find a duplicate.
19+
required: true
20+
- label: I can reproduce this on a supported browser or runtime.
21+
required: true
22+
- label: I included a minimal reproduction or clear reproduction steps.
23+
required: true
24+
- type: textarea
25+
id: summary
26+
attributes:
27+
label: Summary
28+
description: A concise description of the bug.
29+
placeholder: What happened, and why is it a problem?
30+
validations:
31+
required: true
32+
- type: textarea
33+
id: reproduce
34+
attributes:
35+
label: Reproduction
36+
description: Share the exact steps, sample code, repo link, or sandbox needed to reproduce the issue.
37+
validations:
38+
required: true
39+
- type: textarea
40+
id: expected
41+
attributes:
42+
label: Expected behavior
43+
validations:
44+
required: true
45+
- type: textarea
46+
id: actual
47+
attributes:
48+
label: Actual behavior
49+
render: shell
50+
- type: dropdown
51+
id: area
52+
attributes:
53+
label: Affected component or area
54+
options:
55+
- accordion
56+
- alert
57+
- avatar
58+
- badge
59+
- breadcrumbs
60+
- button
61+
- card
62+
- checkbox
63+
- chip
64+
- dialog
65+
- divider
66+
- drawer
67+
- dropdown-menu
68+
- empty-state
69+
- icon-button
70+
- input
71+
- pagination
72+
- progress
73+
- radio
74+
- segmented-control
75+
- select
76+
- skeleton
77+
- slider
78+
- spinner
79+
- stat-card
80+
- switch
81+
- table
82+
- tabs
83+
- textarea
84+
- toast
85+
- tooltip
86+
- tokens
87+
- theme
88+
- i18n
89+
- utils
90+
- docs
91+
- build or tooling
92+
- other
93+
validations:
94+
required: true
95+
- type: input
96+
id: version
97+
attributes:
98+
label: "@bquery/ui version"
99+
placeholder: 1.14.0
100+
validations:
101+
required: true
102+
- type: input
103+
id: framework
104+
attributes:
105+
label: "@bquery/bquery version"
106+
placeholder: 1.14.1
107+
validations:
108+
required: true
109+
- type: input
110+
id: runtime
111+
attributes:
112+
label: Runtime / Browser
113+
placeholder: Chrome 136, Safari 18, Bun 1.3.13
114+
validations:
115+
required: true
116+
- type: textarea
117+
id: context
118+
attributes:
119+
label: Additional context

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security vulnerability report
4+
about: Please report security issues privately so maintainers can investigate and coordinate a fix.
5+
url: mailto:support@josunlp.de?subject=%5BSecurity%5D%20bquery-ui%20report
6+
- name: Documentation and components
7+
about: Check the official docs and Storybook before opening a support-style issue.
8+
url: https://bquery.js.org
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Feature request
2+
description: Suggest an improvement to @bquery/ui components, tokens, or developer experience.
3+
title: "[Feature]: "
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for helping shape @bquery/ui.
9+
- type: checkboxes
10+
id: checks
11+
attributes:
12+
label: Pre-flight checklist
13+
options:
14+
- label: I searched existing issues and did not find a duplicate request.
15+
required: true
16+
- label: I explained the problem or use case, not just the desired API.
17+
required: true
18+
- type: textarea
19+
id: problem
20+
attributes:
21+
label: Problem or use case
22+
placeholder: Describe the workflow, pain point, or missing capability.
23+
validations:
24+
required: true
25+
- type: textarea
26+
id: proposal
27+
attributes:
28+
label: Proposed solution
29+
placeholder: Explain the desired outcome and who benefits from it.
30+
validations:
31+
required: true
32+
- type: textarea
33+
id: api-shape
34+
attributes:
35+
label: Possible API or UX shape
36+
placeholder: Props, slots, events, CSS custom properties, or visual expectations.
37+
- type: textarea
38+
id: alternatives
39+
attributes:
40+
label: Alternatives considered
41+
- type: dropdown
42+
id: area
43+
attributes:
44+
label: Relevant area
45+
options:
46+
- new component
47+
- existing component
48+
- tokens / design system
49+
- theme
50+
- i18n
51+
- utils
52+
- docs
53+
- build or tooling
54+
- other
55+
validations:
56+
required: true
57+
- type: textarea
58+
id: context
59+
attributes:
60+
label: Additional context

.github/labeler.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
components:
2+
- changed-files:
3+
- any-glob-to-any-file: 'src/components/**'
4+
5+
tokens:
6+
- changed-files:
7+
- any-glob-to-any-file: 'src/tokens/**'
8+
9+
theme:
10+
- changed-files:
11+
- any-glob-to-any-file: 'src/theme/**'
12+
13+
i18n:
14+
- changed-files:
15+
- any-glob-to-any-file: 'src/i18n/**'
16+
17+
utils:
18+
- changed-files:
19+
- any-glob-to-any-file: 'src/utils/**'
20+
21+
docs:
22+
- changed-files:
23+
- any-glob-to-any-file:
24+
- 'docs/**'
25+
- '*.md'
26+
27+
tests:
28+
- changed-files:
29+
- any-glob-to-any-file:
30+
- 'tests/**'
31+
- '**/*.test.ts'
32+
33+
build:
34+
- changed-files:
35+
- any-glob-to-any-file:
36+
- 'package.json'
37+
- 'bun.lock'
38+
- 'bunfig.toml'
39+
- 'vite*.ts'
40+
- 'tsconfig*.json'
41+
- 'eslint.config.js'
42+
- '.prettier*'
43+
44+
ci/cd:
45+
- changed-files:
46+
- any-glob-to-any-file: '.github/workflows/**'
47+
48+
github:
49+
- changed-files:
50+
- any-glob-to-any-file:
51+
- '.github/labeler.yml'
52+
- '.github/ISSUE_TEMPLATE/**'
53+
- '.github/FUNDING.yml'

.github/pull_request_template.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
## Summary
2+
3+
- Describe the change clearly and briefly.
4+
- Explain the user-facing impact.
5+
6+
## Motivation
7+
8+
- Why is this change needed?
9+
- Link the related issue, discussion, or context.
10+
11+
## Changes included
12+
13+
- List the main implementation, documentation, or test updates.
14+
- Call out any public API, behaviour, or component changes.
15+
16+
## Validation
17+
18+
- [ ] `bun run lint`
19+
- [ ] `bun run lint:types`
20+
- [ ] `bun test`
21+
- [ ] `bun run build`
22+
23+
## Checklist
24+
25+
- [ ] I followed the contributing guidelines.
26+
- [ ] I added or updated tests where behaviour changed.
27+
- [ ] I updated Storybook stories or documentation when the public API changed.
28+
- [ ] I confirmed the change does not introduce security-sensitive regressions.
29+
30+
## Notes for reviewers
31+
32+
- Share anything reviewers should pay extra attention to.
33+
- Mention follow-up work, trade-offs, or known limitations.

.github/workflows/codeql.yml

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: CodeQL Advanced
1+
name: 'CodeQL Advanced'
22

33
on:
44
push:
@@ -11,7 +11,7 @@ on:
1111
jobs:
1212
analyze:
1313
name: Analyze (${{ matrix.language }})
14-
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
14+
runs-on: ubuntu-latest
1515
permissions:
1616
security-events: write
1717
packages: read
@@ -29,26 +29,15 @@ jobs:
2929

3030
steps:
3131
- name: Checkout repository
32-
uses: actions/checkout@v4
32+
uses: actions/checkout@v6
3333

3434
- name: Initialize CodeQL
3535
uses: github/codeql-action/init@v4
3636
with:
3737
languages: ${{ matrix.language }}
3838
build-mode: ${{ matrix.build-mode }}
3939

40-
- name: Run manual build steps
41-
if: matrix.build-mode == 'manual'
42-
shell: bash
43-
run: |
44-
echo 'If you are using a "manual" build mode for one or more of the' \
45-
'languages you are analyzing, replace this with the commands to build' \
46-
'your code, for example:'
47-
echo ' make bootstrap'
48-
echo ' make release'
49-
exit 1
50-
5140
- name: Perform CodeQL Analysis
5241
uses: github/codeql-action/analyze@v4
5342
with:
54-
category: '/language:${{ matrix.language }}'
43+
category: '/language:${{matrix.language}}'

.github/workflows/eslint.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: ESLint
2+
3+
on:
4+
push:
5+
branches: ['main', 'development']
6+
pull_request:
7+
branches: ['main', 'development']
8+
schedule:
9+
- cron: '43 16 * * 1'
10+
11+
jobs:
12+
eslint:
13+
name: Run eslint scanning
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
security-events: write
18+
actions: read
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v6
22+
23+
- name: Setup Bun
24+
uses: oven-sh/setup-bun@v2
25+
with:
26+
bun-version: '1.3.13'
27+
28+
- name: Install dependencies
29+
run: bun install --frozen-lockfile
30+
31+
- name: Run ESLint
32+
continue-on-error: ${{ github.event_name == 'schedule' }}
33+
run: |
34+
bunx eslint . \
35+
--format json \
36+
--output-file eslint-results.json
37+
38+
- name: Convert ESLint results to SARIF
39+
if: ${{ always() && hashFiles('eslint-results.json') != '' }}
40+
run: |
41+
node <<'EOF'
42+
const fs = require('node:fs');
43+
const path = require('node:path');
44+
const { pathToFileURL } = require('node:url');
45+
const eslintResults = JSON.parse(fs.readFileSync('eslint-results.json', 'utf8'));
46+
const rules = new Map();
47+
const results = [];
48+
const workspaceUri = pathToFileURL(`${process.cwd()}${path.sep}`).href;
49+
for (const file of eslintResults) {
50+
const resolvedPath = path.resolve(file.filePath);
51+
const relativePath = path.relative(process.cwd(), resolvedPath).split(path.sep).join('/');
52+
for (const message of file.messages) {
53+
const ruleId = message.ruleId ?? 'eslint';
54+
if (!rules.has(ruleId)) rules.set(ruleId, { id: ruleId, name: ruleId, shortDescription: { text: ruleId } });
55+
results.push({ ruleId, level: message.severity === 2 || message.fatal === true ? 'error' : 'warning', message: { text: message.message }, locations: [{ physicalLocation: { artifactLocation: { uri: relativePath, uriBaseId: 'SRCROOT' }, region: { startLine: message.line ?? 1, startColumn: message.column ?? 1, endLine: message.endLine ?? message.line ?? 1, endColumn: message.endColumn ?? message.column ?? 1 } } }] });
56+
}
57+
}
58+
const sarif = { $schema: 'https://json.schemastore.org/sarif-2.1.0.json', version: '2.1.0', runs: [{ tool: { driver: { name: 'ESLint', informationUri: 'https://eslint.org', rules: [...rules.values()] } }, originalUriBaseIds: { SRCROOT: { uri: workspaceUri } }, results }] };
59+
fs.writeFileSync('eslint-results.sarif', JSON.stringify(sarif, null, 2));
60+
EOF
61+
62+
- name: Upload analysis results to GitHub
63+
if: ${{ always() && hashFiles('eslint-results.sarif') != '' }}
64+
uses: github/codeql-action/upload-sarif@v4
65+
with:
66+
sarif_file: eslint-results.sarif
67+
wait-for-processing: true

0 commit comments

Comments
 (0)