Skip to content
Open

V12 #2102

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
7d7d3fc
feat(many): add new theming solution
HerrTopi Sep 27, 2025
7d83e18
Paste new tokens
svc-instui Sep 29, 2025
991e77b
feat(ui-avatar): rework avatar to comply with new design
HerrTopi Sep 30, 2025
e9f7bd9
Rename spinner borderWidth tokens to strokeWidth
svc-instui Oct 3, 2025
5fbb48a
Add elevation1 token
svc-instui Oct 2, 2025
2b25b9a
Add all number tokens for the elevation shadows
svc-instui Oct 3, 2025
72e9330
Config commit
svc-instui Oct 3, 2025
5973010
Delete elevation component tokens
svc-instui Oct 3, 2025
4d56786
PR commit
svc-instui Oct 3, 2025
ebb7eb3
Group dropshadow tokens
svc-instui Oct 3, 2025
5e101d3
Fix link text styles
svc-instui Oct 3, 2025
b639a87
Push configuration
svc-instui Oct 3, 2025
d76130e
Remove unused typography styles
svc-instui Oct 3, 2025
b7dcf65
Delete input tokens from rebrand semantic
svc-instui Oct 6, 2025
1eda213
PR commit
svc-instui Oct 6, 2025
2d0434c
Add interactive font-weight to semantic layer
svc-instui Oct 6, 2025
7957a17
Add formField successIconColor
svc-instui Oct 6, 2025
36f2585
Fix spacing tokens in semantic and component layer
svc-instui Oct 6, 2025
b089d00
Rename formField spacing
svc-instui Oct 6, 2025
281606f
PR commit
svc-instui Oct 6, 2025
3a98ff6
refactor(ui-themes,ui-avatar): rebase ontop of v11 and fix merge issues
HerrTopi Oct 6, 2025
a2a6e7b
docs(ui-scripts): add tokens studio folder
HerrTopi Oct 7, 2025
8303ddf
Add component-icon-tokens branch tokens
svc-instui Oct 7, 2025
d149b82
Push tokens
svc-instui Oct 8, 2025
36c320d
Add json files
svc-instui Oct 8, 2025
da00476
feat(ui-scripts): rework parser to accomodate multiple files
HerrTopi Oct 8, 2025
4a48f03
refactor(ui-avatar,emotion): adjust margin calculation for new theme …
HerrTopi Oct 6, 2025
569dcd7
horizontal padding on semantic layers
svc-instui Oct 9, 2025
215ebc7
canvas semantic color value amendments
svc-instui Oct 9, 2025
c0d884a
padding horizontal sm, md, lg tokens for TextInput component
svc-instui Oct 9, 2025
ba95b6a
spacing tokens
svc-instui Oct 14, 2025
adab001
ai, aiSecondary, primaryOnColor semantic tokens
svc-instui Oct 14, 2025
2eaa9e6
semantic stroke tokens
svc-instui Oct 14, 2025
fdd3c76
text tokens (semantic)
svc-instui Oct 14, 2025
d62bf65
semantic icons
svc-instui Oct 14, 2025
81cccba
button component tokens
svc-instui Oct 14, 2025
ce29b77
btn added to themes
svc-instui Oct 14, 2025
aca3dcd
var export
svc-instui Oct 14, 2025
96979b4
padding tokens correction
svc-instui Oct 14, 2025
4e388e2
spacing value adjustments
svc-instui Oct 14, 2025
e3e759c
secondary disabled color adjustments
svc-instui Oct 14, 2025
5418ea8
onColor icons component tokens
svc-instui Oct 14, 2025
8e7020d
success disabled border color
svc-instui Oct 14, 2025
ab7aa0e
destructive disabled border tokens
svc-instui Oct 14, 2025
7a515a8
var gen
svc-instui Oct 14, 2025
1db610a
padding horizontal value adjustment
svc-instui Oct 14, 2025
f8ba690
primary on color icon color
svc-instui Oct 14, 2025
7066a70
onColor disabled component tokens
svc-instui Oct 14, 2025
dee418d
ai disabled border tokens
svc-instui Oct 15, 2025
62efe8b
var generation
svc-instui Oct 15, 2025
840d414
Fix conflicts
adamlobler Oct 16, 2025
46a081a
Sneaky commit
svc-instui Oct 16, 2025
5fad60a
ai secondary active colors
svc-instui Oct 17, 2025
5696dc6
aisecondary disabled text colors
svc-instui Oct 17, 2025
c2e26b2
rebrand primary value adjustments
svc-instui Oct 17, 2025
9be7087
secondary colors
svc-instui Oct 17, 2025
ec15118
border colors per state - secondary, primary
svc-instui Oct 17, 2025
641d0fd
var generation
svc-instui Oct 17, 2025
bf48613
Revert last 6 commits
adamlobler Oct 17, 2025
79bc3e9
ai secondary hover colors
svc-instui Oct 17, 2025
bcdbffc
var generation
svc-instui Oct 17, 2025
37807d7
primary rebrand value fixes
svc-instui Oct 18, 2025
e852240
rebrand light color values
svc-instui Oct 18, 2025
35f29bd
success semantic stroke colors
svc-instui Oct 18, 2025
26a632d
ai secondary disabled colors
svc-instui Oct 18, 2025
72ed898
splitting semantics for link and btn
svc-instui Oct 19, 2025
ae5171f
button text references
svc-instui Oct 19, 2025
d6658d6
semantic icon structure for btns
svc-instui Oct 19, 2025
f90edab
rebrand primary color values
svc-instui Oct 19, 2025
e9f8541
dark rebrand secondary btn colors
svc-instui Oct 19, 2025
2aa4660
secondary btn colors adjustments dark mode
svc-instui Oct 19, 2025
76a33d3
disabled icon and text tokens for success and destructive
svc-instui Oct 19, 2025
e5313d9
primaryOnColor dark mode colors
svc-instui Oct 19, 2025
dd728a4
primaryOnColor dark mode colors
svc-instui Oct 19, 2025
941966b
dark mode adjustments for ai buttons
svc-instui Oct 19, 2025
fe63345
aiSecondaryDisabled colors for dark mode
svc-instui Oct 19, 2025
8eb00a3
canvas value adjustments
svc-instui Oct 19, 2025
4af2fe0
correcting primary oncolor for link
svc-instui Oct 20, 2025
b44bb71
status text and icon colors for semantic
svc-instui Oct 20, 2025
530bcaa
primary dark adjustments
svc-instui Oct 20, 2025
38d17c0
canvas high contrast color adjustments
svc-instui Oct 20, 2025
d8a4c48
kamu change
svc-instui Oct 20, 2025
01b3bce
Update icon component colors & input arrow tokens
svc-instui Oct 20, 2025
1c07600
Rename accent colors, and add new ones
svc-instui Oct 21, 2025
bc5c5fa
Extend icon colors with the new accent ones
svc-instui Oct 21, 2025
3ed87e2
Add utility component with new drophadow tokens
svc-instui Oct 21, 2025
70685b0
Fix dropshadow values
svc-instui Oct 21, 2025
c638d95
Fix bottom gradient naming
svc-instui Oct 21, 2025
f122c34
Fix semantic reference
svc-instui Oct 21, 2025
6ac871d
Unify token names in textInput
svc-instui Oct 21, 2025
eed9315
refactor(many): merge the v12 branch
matyasf Oct 21, 2025
417af51
refactor(ui-tabs): merge master branch
matyasf Oct 22, 2025
31d4d77
Fix conflict
adamlobler Oct 22, 2025
83a21d2
Fix conflict
adamlobler Oct 22, 2025
1f11660
Final fixes on the checkbox
svc-instui Oct 22, 2025
c9e1eb4
build(ui-scripts): fix build scripts
matyasf Oct 21, 2025
cec7d70
renaming button to baseButton
svc-instui Oct 23, 2025
5cbcee5
renaming
svc-instui Oct 23, 2025
b952a8d
ai secondary bg colors for semantic and component
svc-instui Oct 24, 2025
920ee2e
var generation
svc-instui Oct 24, 2025
49f7eff
removed baseButton icon tokens
svc-instui Oct 24, 2025
1483a08
tertiary button colors
svc-instui Oct 24, 2025
bbfacbf
var generation
svc-instui Oct 24, 2025
bcfd873
success secondary tokens
svc-instui Oct 24, 2025
ec2480c
success secondary color adjustment
svc-instui Oct 24, 2025
f59f970
destructive secondary semantics
svc-instui Oct 24, 2025
9e5457e
destructive secondary semantic tokens
svc-instui Oct 26, 2025
8d7548a
destructive secondary component tokens
svc-instui Oct 26, 2025
a3be608
var generation
svc-instui Oct 26, 2025
337348a
Rename Button token set to BaseButton
svc-instui Oct 27, 2025
f317139
feat(ui-scripts): add exeption for primitive theme
HerrTopi Oct 28, 2025
75e23fb
chore(ui-scripts): filter out Primitives theme
HerrTopi Oct 28, 2025
ef4e7a1
chore: fix token contract, add primitives, fix drop shadow
matyasf Oct 28, 2025
2a256e1
refactor(ui-themes,ui-scripts): fix theming variables not showing in …
matyasf Oct 22, 2025
3b3a3a1
refactor(many): type themes more strictly
matyasf Oct 30, 2025
5fe7426
chore: add typography tokens to text component
svc-instui Oct 29, 2025
a386ea4
chore: add text component tokens
svc-instui Oct 30, 2025
f906752
chore: update text color values
svc-instui Oct 30, 2025
08eacd3
chore: add more text component tokens
svc-instui Oct 30, 2025
7c308b7
chore: delete letter and paragraph spacing tokens
svc-instui Oct 30, 2025
16ca5dc
chore: delete letterspacing from typography text tokens
svc-instui Oct 30, 2025
b931ae1
chore: added new navy color ramp to primitives
svc-instui Oct 30, 2025
8a2d51b
chore: updated primary base button colors with navy
svc-instui Oct 30, 2025
752985c
chore: secondary button colors updated with navy on rebrand semantic
svc-instui Oct 30, 2025
78d1e15
chore: updated tertiary button colors w navy on rebrand
svc-instui Oct 30, 2025
1e6646f
chore: add radioinput tokens
svc-instui Oct 31, 2025
5ea272c
chore: add radioinput to the themes
svc-instui Oct 31, 2025
eea221d
chore: add inset values to radioinput
svc-instui Oct 31, 2025
53c0730
chore: fix elevation token description text issue
svc-instui Oct 31, 2025
3b5fd47
chore: primary btn dark mode colors
svc-instui Nov 2, 2025
8857bce
chore: secondary btn dark mode colors
svc-instui Nov 2, 2025
eb20609
chore: tertiary btn dark mode colors
svc-instui Nov 2, 2025
c74ae46
chore: muted background color semantic updated for dark mode, disable…
svc-instui Nov 2, 2025
a5738fb
chore: semantic buttons dark mode colors
svc-instui Nov 2, 2025
7301a11
chore: btn rebrand light color adjustments for a11y
svc-instui Nov 2, 2025
9b23a75
chore: primaryoncolor disabled color adjustments in light mode
svc-instui Nov 2, 2025
214675b
chore: aibtn color adjustments
svc-instui Nov 2, 2025
b5b416f
chore: btn value updates for canvas and canvas highcontrast
svc-instui Nov 3, 2025
e3f72b4
chore: fix disabled tertiary icon color in rebrand light
svc-instui Nov 3, 2025
2c268cb
chore: fix checkbox component sizes in rebrand
svc-instui Nov 3, 2025
344daef
chore: remove icon related link component tokens
svc-instui Nov 3, 2025
ba935c9
chore: fix radio and checkbox tokens
svc-instui Nov 4, 2025
e8565a5
chore: rename utility to sharedtokens and add margin values
svc-instui Nov 4, 2025
e5bc3dd
chore: add focus shared tokens
svc-instui Nov 4, 2025
02a81ca
chore: fix sharedtoken token reference
svc-instui Nov 4, 2025
0d6d2c9
chore: update sharedtoken structure and add a new avatar token
svc-instui Nov 4, 2025
748e593
feat(many): separate focus outline calculation from view, inject shar…
HerrTopi Nov 4, 2025
101c2a9
refactor(many): type new themes properly
matyasf Nov 5, 2025
a2a1965
chore(many): make documentation preview builds show console messages
ToMESSKa Oct 29, 2025
d1c8a1a
chore: disabled btn color corrections
svc-instui Nov 5, 2025
8b7dc43
chore: generating vars for btn adjustments
svc-instui Nov 5, 2025
117047f
chore: add text component tokens
svc-instui Nov 5, 2025
359c69f
chore: add text component colors
svc-instui Nov 5, 2025
cbc233c
chore: add text color tokens to text component
svc-instui Nov 5, 2025
31614c0
chore: fix lineheight token
svc-instui Nov 5, 2025
c588cf0
chore: ai btn adjustments on canvas high contrast
svc-instui Nov 5, 2025
27de721
chore: add textdecoration tokens to link
svc-instui Nov 5, 2025
e4b46d6
chore: add text component descriptions
svc-instui Nov 5, 2025
677d9e5
chore: delete unused textarea tokens
svc-instui Nov 6, 2025
8b8dd36
chore: rename paddinghorizontal to padding in textarea
svc-instui Nov 6, 2025
4e732cb
Merge master into v12 to bring in latest changes
balzss Nov 6, 2025
de657ce
chore: update pnpm-lock.yaml after merge
balzss Nov 6, 2025
75c8743
refactor: fix package.lock.json in the regression test
matyasf Nov 6, 2025
769fe76
refactor(ui-top-nav-bar): add upgrade guide, skip failing tests
matyasf Nov 7, 2025
9a52aef
chore: tooltip initial tokens
svc-instui Nov 6, 2025
bef87f2
chore: tooltip rebrand mode adjustments
svc-instui Nov 6, 2025
409fdd7
chore: semantic and component token adjustments for tooltip
svc-instui Nov 7, 2025
4bddb39
chore: remove unnecessary icon tokens from avatar
svc-instui Nov 7, 2025
05d4125
chore: remove icon token from breadcrumb
svc-instui Nov 7, 2025
665dde6
chore: remove icon tokens from formfieldmessage
svc-instui Nov 7, 2025
57215c1
chore: remove erroriconmarginright token from formfieldmessage
svc-instui Nov 7, 2025
2491632
chore: remove icon related pill tokens
svc-instui Nov 7, 2025
adc0ee6
chore: add fontfamily text tokens
svc-instui Nov 9, 2025
07219f0
chore: modify large text fontsize
svc-instui Nov 9, 2025
f14c9dd
chore: remove unecessary fontcolor token from breadcrumb
svc-instui Nov 9, 2025
a9869bd
chore: remove unused breadcrumb tokens
svc-instui Nov 9, 2025
8ef3aed
chore: add aitext and bg colors to semantic
svc-instui Nov 9, 2025
a4be7a3
chore: updated navy10 color value for secondary btn hover state
svc-instui Nov 9, 2025
aabeed0
chore: add toggle tokens
svc-instui Nov 11, 2025
31db00d
chore: fix color contrast on rebrand light and replace green with aurora
svc-instui Nov 11, 2025
03b634e
chore: add toggle tokens
svc-instui Nov 11, 2025
c256c1e
chore: fix interactive icon colors and recolor to green from aurora
svc-instui Nov 11, 2025
baa2fdd
chore: add legacy margin tokens to sharedtokens
svc-instui Nov 11, 2025
ff497ab
chore: update accent background colors
svc-instui Nov 11, 2025
7bfc60d
chore: fix muted hint message color
svc-instui Nov 12, 2025
3e97d5b
chore: add toggle tokens
svc-instui Nov 12, 2025
bb591f8
chore: add new toggle tokens
svc-instui Nov 12, 2025
184db38
chore: add lineheight tokens to toggle
svc-instui Nov 12, 2025
2f55f9f
chore: add toggle state tokens
svc-instui Nov 12, 2025
0912c48
chore: popover and tooltip token separation
svc-instui Nov 12, 2025
a2a8ffb
refactor(emotion): add new way of using parent tokens
HerrTopi Nov 12, 2025
d4a5e6c
chore(ui-avatar): remove icon token usage from avatar
HerrTopi Nov 13, 2025
2809cf9
chore: add state bg tokens to toggle
svc-instui Nov 12, 2025
2790d92
refactor(ui-scripts): add tokens for Badge, Mask, Modal, Tag and modi…
matyasf Nov 19, 2025
200d37b
feat(ui-react-utils): add useDeterministicID which can be used instea…
matyasf Nov 11, 2025
eccd561
refactor(ui-radio-input): convert RadioInput to functional component
matyasf Nov 11, 2025
6443716
feat(ui-radio-input): use the new theme for RadioInput
matyasf Nov 12, 2025
23fcbfa
refactor: skip commitizen in worktrees too for rebase
matyasf Nov 13, 2025
4ab382a
chore: remove unused modalheader token
svc-instui Nov 19, 2025
1204275
chore: byebye aurora
svc-instui Nov 19, 2025
1a4b660
chore: opacity tokens for base button
svc-instui Nov 20, 2025
4cd8523
chore: amended canvas high contrast tokens for base button
svc-instui Nov 20, 2025
3b88aff
chore: add formfield breakpoint
svc-instui Nov 20, 2025
2f896ac
chore: add heading typography tokens
svc-instui Nov 20, 2025
40289bd
chore: update elevation token
svc-instui Nov 20, 2025
feb3be2
chore: primary btn text token adjustments
svc-instui Nov 20, 2025
6d1ae5a
chore: base button text token amendments
svc-instui Nov 21, 2025
b39a6b5
chore: fix lineheight token on labels
svc-instui Nov 21, 2025
9e38a66
refactor(ui-icons,ui-color-picker): merge master
matyasf Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .claude/commands/commit.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Create a commit following the Instructure UI commit conventions:
## Format Requirements

Use Conventional Commits format:

```
type(scope): subject
Expand All @@ -25,13 +26,15 @@ Document any breaking changes here with BREAKING CHANGE: prefix
## Breaking Changes

Mark breaking changes with an exclamation mark after scope and document in body:

```
feat(ui-select)!: remove deprecated onOpen prop
BREAKING CHANGE: The onOpen prop has been removed. Use onShowOptions instead.
```

Breaking changes include:

- Removing/renaming props or components
- Changing prop types or behavior
- Changing defaults that affect behavior
Expand All @@ -40,6 +43,7 @@ Breaking changes include:
## Commit Footer

Always include:

```
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Expand Down
8 changes: 6 additions & 2 deletions .claude/commands/pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,23 +28,27 @@ All PRs must include:
6. **If Jira ticket number is unknown, ask the user for it before creating the PR**
7. Push to remote if needed: `git push -u origin <branch>`
8. Create PR with `gh pr create --title "title" --body "$(cat <<'EOF'

## Summary

- Bullet point 1
- Bullet point 2

## Test Plan

- [ ] Step 1
- [ ] Step 2

## Jira Reference

Fixes INST-XXXX (or omit this section if not applicable)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"`
9. Return the PR URL
)"` 9. Return the PR URL

**Important**:

- Base branch is usually `master` (not main)
- Analyze ALL commits in the branch, not just the latest one
- Use markdown checklists for test plan
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ on:
jobs:
deploy-preview:
runs-on: ubuntu-latest
env:
GITHUB_PULL_REQUEST_PREVIEW: 'true'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
Expand Down
4 changes: 3 additions & 1 deletion .husky/prepare-commit-msg
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ if [ "$2" = "commit" ] && [ -n "$3" ]; then
fi

# Check if a rebase is in progress
if [ -d ".git/rebase-merge" ] || [ -d ".git/rebase-apply" ]; then
if [ -d "$(git rev-parse --git-path rebase-merge)" ] ||
[ -d "$(git rev-parse --git-path rebase-apply)" ]; then
echo "Skipping prepare-commit-msg git hook during rebase"
exit 0
fi

Expand Down
4 changes: 3 additions & 1 deletion .inst-ai/templates/jira/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ This directory contains prompt templates for generating Jira tickets from Slack
## Template Types

### Bug Report Templates

- `bug-report.extraction.md` - Extracts structured data from bug report conversations
- `bug-report.generation.md` - Generates final Jira ticket content for bugs

### Feature Request Templates

- `feature-request.extraction.md` - Extracts structured data from feature request conversations
- `feature-request.generation.md` - Generates final Jira ticket content for features

Expand Down Expand Up @@ -42,4 +44,4 @@ export const config = {

## Template Format

Templates should be valid Markdown files with embedded prompts for the AI model. The AI will process the template content and generate responses in the expected format (JSON for extraction, ADF JSON for generation).
Templates should be valid Markdown files with embedded prompts for the AI model. The AI will process the template content and generate responses in the expected format (JSON for extraction, ADF JSON for generation).
5 changes: 3 additions & 2 deletions .inst-ai/templates/jira/bug-report.extraction.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
**Task:** Analyze the conversation and extract entities into a JSON object. Use `null` for missing values.

**Entities:**

- `component_name`: string | null - The name of the UI component or module mentioned
- `browser_name`: string | null - Browser where the issue occurs (e.g., "Chrome", "Firefox", "Safari")
- `os_name`: string | null - Operating system where the issue occurs (e.g., "macOS", "Windows", "Linux")
- `instui_version`: string | null - InstUI version (e.g., "8.51.0", "v8.51.0"). Look for @instructure/ui-* package versions in package.json, version mentions in conversation, or CodeSandbox dependencies
- `instui_version`: string | null - InstUI version (e.g., "8.51.0", "v8.51.0"). Look for @instructure/ui-\* package versions in package.json, version mentions in conversation, or CodeSandbox dependencies
- `summary_of_bug`: string - Brief description of the bug
- `reporter_name`: string - Name of the person reporting the bug
- `environment_text`: string | null - Additional environment details
Expand All @@ -18,4 +19,4 @@
**Conversation:**
{{CONVERSATION_CONTENT}}

**JSON Output:**
**JSON Output:**
3 changes: 2 additions & 1 deletion .inst-ai/templates/jira/bug-report.generation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
**Task:** Use the `CONTEXT` to generate a JSON object with a `summary` and an ADF `description`.

**Requirements:**

- The `summary` must be: `Fix: [<Component Name>] <Brief problem description>`. Use the component_name from extracted data if available, otherwise use a generic name based on the affected area.
- The `description` must be a valid Atlassian Document Format (ADF) JSON object.
- Include all relevant technical details from the context.
Expand All @@ -24,4 +25,4 @@

**Your Turn (Use the CONTEXT provided above):**
**IMPORTANT:** Return ONLY valid JSON. Every property must be followed by a comma except the last one in an object or array. Double-check all commas before responding.
**Output JSON:**
**Output JSON:**
3 changes: 2 additions & 1 deletion .inst-ai/templates/jira/feature-request.extraction.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
**Task:** Analyze the conversation and extract entities into a JSON object. Use `null` for missing values.

**Entities:**

- `feature_name`: string | null - The name of the requested feature
- `requestor_name`: string - Name of the person requesting the feature
- `business_justification`: string | null - Why this feature is needed
Expand All @@ -15,4 +16,4 @@
**Conversation:**
{{CONVERSATION_CONTENT}}

**JSON Output:**
**JSON Output:**
3 changes: 2 additions & 1 deletion .inst-ai/templates/jira/feature-request.generation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
**Task:** Use the `CONTEXT` to generate a JSON object with a `summary` and an ADF `description`.

**Requirements:**

- The `summary` must be: `Feature: [<Component/Area Name>] <Brief description>`. Use the feature_name or affected_components from extracted data if available, otherwise use a generic name based on the affected area.
- The `description` must be a valid Atlassian Document Format (ADF) JSON object.
- Include business justification, proposed solution, and success criteria.
Expand All @@ -24,4 +25,4 @@

**Your Turn (Use the CONTEXT provided above):**
**IMPORTANT:** Return ONLY valid JSON. Every property must be followed by a comma except the last one in an object or array. Double-check all commas before responding.
**Output JSON:**
**Output JSON:**
2 changes: 2 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ pnpm run build:types # Build TypeScript declarations

# Testing
pnpm run test:vitest # Unit tests
pnpm run test:vitest ui-radio-input # Run tests for a single package
pnpm run cy:component # Cypress component tests

# Linting
Expand Down Expand Up @@ -152,6 +153,7 @@ All components **MUST**:
```bash
pnpm run test:vitest # Unit tests
pnpm run cy:component # Cypress tests
pnpm run test:vitest ui-radio-input # Run tests for a single package

# Visual regression tests (in regression-test directory)
cd regression-test
Expand Down
3 changes: 2 additions & 1 deletion cypress/component/Menu.cy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,8 @@ describe('<Menu/>', () => {
.should('be.focused')
})

it(`should show and focus flyout menu on space keyDown`, () => {
// This test is failing randomly
it.skip(`should show and focus flyout menu on space keyDown`, () => {
cy.mount(
<Menu label="Parent">
<Menu label="Flyout">
Expand Down
2 changes: 1 addition & 1 deletion cypress/component/Pagination.cy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ describe('<Pagination/>', () => {
})
})

cy.viewport(300, 800)
cy.viewport(100, 800)

cy.get('[role="navigation"]').within(() => {
cy.get('button').then(($items) => {
Expand Down
88 changes: 12 additions & 76 deletions docs/guides/upgrade-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,84 +4,20 @@ category: Guides
order: 1
---

# Upgrade Guide for Version 11
# Upgrade Guide for Version 12

## InstUI and React
## New theming system

> React 16 and 17 support was dropped with InstUI 11. Please upgrade to React 18 before upgrading to InstUI v11!
TODO add details

### React 19
## New icons

InstUI v11 added support for React 19. But upgrading to React 19 might cause issues because InstUI needs to access the native DOM in some cases and React introduced a breaking change here by [removing `ReactDOM.findDOMNode()`](https://react.dev/blog/2024/04/25/react-19-upgrade-guide#removed-reactdom-finddomnode). If you are upgrading to React 19, you will need to add `ref`s to some of your custom components that use InstUI utilities, see [this guide](accessing-the-dom). We suggest to check your code thoroughly for errors, especially places where you use your own components as some kind of popovers or its triggers (e.g. Menu, Popover, Tooltip, Drilldown,..).

If you are using React 18 you might just see error messages like (`Error: ${elName} doesn't have "ref" property.`), but your code should work the same as with InstUI v10.

---

## PropTypes Support Dropped

With React 19, support for **PropTypes was dropped** from the core library. While it's still possible to use them with third-party libraries, InstUI has decided to no longer support them based on user feedback.

**Tip:** To see how the removal of `propTypes` might affect your application's business logic, you can use a Babel plugin like [babel-plugin-transform-react-remove-prop-types](https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types) to strip them out during your build process for testing.

---

## Changes to Testability

The **`@testable` decorator has been removed**. The `data-cid` props, which were previously added by this decorator in development builds, are now **always added to components**. This change was made in response to frequent requests for a consistent way to identify InstUI components for end-to-end (e2e) tests.

As a result of this change, the **`ALWAYS_APPEND_UI_TESTABLE_LOCATORS`** Node.js environment variable is no longer used.

---
InstUI has switched to a new icon set, [Lucide](https://lucide.dev/icons/). We are still keeping some Instructure-specific icons, like product logos. We have a codemod that will help you migrate your code to the new icon set (see below).

## Removal of deprecated props/components/APIs

### InstUISettingsProvider

[InstUISettingsProvider](InstUISettingsProvider)'s `as` prop was removed, it will always render as a `<span>` (note: it will only render anything to the DOM if you provide a value to the `dir` prop.). The provided codemod will remove this prop automatically (see below).

### Theming engine changes

| Removed | What to use instead? |
| :------------------------------------------------- | :---------------------------------------------------------------------------------------------------- |
| `canvas.use()`, `canvasHighContrast.use()` | Wrap all your application roots in `<InstUISettingsProvider>` |
| `canvasThemeLocal`, `canvasHighContrastThemeLocal` | Use `canvas` and `canvasHighContrast` respectively, they are the same objects. |
| `variables` field on theme objects | Use `canvas.borders` instead of `canvas.variables.borders` (same for all other fields) |
| `@instructure/theme-registry` package | This added the removed functions above. Wrap all your application roots in `<InstUISettingsProvider>` |

### CodeEditor

The **`<CodeEditor>` component** from the `ui-code-editor` package has been **removed** due to significant accessibility issues. Please use the [SourceCodeEditor](SourceCodeEditor) component as a replacement.

### Removal of the `deprecated`, `experimental`, `hack` decorators

We have removed these utilities from the `ui-react-utils` package because we are phasing out parts from the codebase that use decorators.

If you want to still use these we suggest to copy-paste their code from the latest v10 codebase (Note: they only work for class-based components!).

---

### Table

[Table](Table) is now using [TableContext](TableContext) to pass down data to its child components, the following props are no longer passed down to their children (This should only affect you if you have custom table rows or cells):

| Component | Prop removed | Substitute |
| :-------- | :----------- | :------------------------------ |
| `Row` | `isStacked` | is now stored in `TableContext` |
| `Body` | `isStacked` | is now stored in `TableContext` |
| `Body` | `hover` | is now stored in `TableContext` |
| `Body` | `headers` | is now stored in `TableContext` |

[Table](Table)'s `caption` prop is now required.

---

## API Changes

`ui-dom-utils`/`getComputedStyle` can now return `undefined`: In previous versions it sometimes returned an empty object which could lead to runtime exceptions when one tried to call methods of `CSSStyleDeclaration` on it.

---

## Codemods

To ease the upgrade, we provide codemods that will automate most of the changes. Pay close attention to its output, it cannot refactor complex code! The codemod scripts can be run via the following commands:
Expand All @@ -90,16 +26,16 @@ To ease the upgrade, we provide codemods that will automate most of the changes.
---
type: code
---
npm install @instructure/ui-codemods@11
npx [email protected] -t node_modules/@instructure/ui-codemods/lib/instUIv11Codemods.ts <path> --usePrettier=false
npm install @instructure/ui-codemods@12
npx [email protected] -t node_modules/@instructure/ui-codemods/lib/instUIv12Codemods.ts <path> --usePrettier=false
```

This is a collection of the codemods that will do the following:
where `<path>` is the path to the directory (and its subdirectories) to be transformed.

The codemods that will do the following:

- Removes the `as` prop from `InstUISettingsProvider`.
- Renames `canvasThemeLocal` to `canvas` and `canvasHighContrastThemeLocal` to `canvasHighContrastTheme`, warns about deleted `ThemeRegistry` imports and the removed `canvas.use()`/`canvasHighContrast.use()` functions.
- Prints a warning if the `caption` prop is missing from a `<Table />`
- Warns if `CodeEditor` is used
- TODO add details
- TODO

Options for the codemod:

Expand Down
8 changes: 8 additions & 0 deletions dprint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"$schema": "https://dprint.dev/schemas/v0.json",
"typescript": {
"semiColons": "asi"
},
"excludes": ["**/node_modules", "!packages/ui-themes/src/themes/newThemes/"],
"plugins": ["https://plugins.dprint.dev/typescript-0.95.11.wasm"]
}
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
}
},
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
}
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"packages/*"
],
"scripts": {
"build:themes": "ui-scripts build-themes",
"prestart": "pnpm run bootstrap",
"start": "pnpm --filter docs-app start",
"start:watch": "pnpm --filter docs-app start:watch",
Expand Down Expand Up @@ -130,5 +131,5 @@
"browserslist": [
"extends @instructure/browserslist-config-instui"
],
"packageManager": "pnpm@10.18.3+sha512.bbd16e6d7286fd7e01f6b3c0b3c932cda2965c06a908328f74663f10a9aea51f1129eea615134bf992831b009eabe167ecb7008b597f40ff9bc75946aadfb08d"
"packageManager": "pnpm@10.23.0"
}
Loading
Loading