Skip to content

chore(git): sync with next - #31717

Merged
thetaPC merged 7 commits into
ionic-modularfrom
sync-ionic-modular-with-next
Nov 9, 2026
Merged

thetaPC merged 7 commits into
ionic-modularfrom
sync-ionic-modular-with-next

Conversation

@thetaPC

@thetaPC thetaPC commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Sync ionic-modular with next.

Merge with a merge commit, not squash.

BenOsodrac and others added 5 commits November 3, 2026 09:46
Issue number: internal

---------

<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->


## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
This pull request updates the design tokens package and refines the
visual styling of several Ionic components to improve consistency and
support new elevation/background tokens. The most significant changes
are the adoption of new elevation background variables, updates to
box-shadow levels, and a dependency bump for design tokens.

**Design tokens and dependency updates:**

* Upgraded `outsystems-design-tokens` dependency from version `2.5.0` to
`2.6.0` in both `package.json` and `package-lock.json`, ensuring access
to the latest design primitives and variables.
[[1]](diffhunk://#diff-7f67769260741e2563407af949f7e54fbf0431d1c607933f6e8a8094e3219e26L105-R105)
[[2]](diffhunk://#diff-4ff996db8bece1eded512c3b97a6bde33622f94bb387634ef32496d832d57744L48-R48)
[[3]](diffhunk://#diff-4ff996db8bece1eded512c3b97a6bde33622f94bb387634ef32496d832d57744L9821-R9823)

**Component visual updates:**

* Updated the background and box-shadow variables for `action-sheet`,
`alert`, `modal`, `popover`, and `toast` components to use the new
elevation tokens (e.g., `--background:
#{globals.$ion-bg-surface-elevation-3}` and adjusted shadow levels),
aligning with the new design system elevations.
[[1]](diffhunk://#diff-d464f79e5825edde600e0754205ca6616f51144e197479032e0769f37ebd16f3L10-R10)
[[2]](diffhunk://#diff-438909c1519af97ef543093a884ce54b863b15451c81a7306e14d59439dc9a8fL10-R10)
[[3]](diffhunk://#diff-228f71c817342767c93cf48d915bf8dc88651d7b8b12608a71c74808ea117df8L8-R9)
[[4]](diffhunk://#diff-b7e56735cc2bc5ced6f50c1dff99396f1c03ae73191e179edee23f2143031a6aL10-R11)
[[5]](diffhunk://#diff-a52e63215d50cc125be7eb06adb6419bf4031c54179c93620ac006dee73330b8L8-R8)

**Design token variable management:**

* Moved the definitions for `$ion-primitives-base-white`,
`$ion-primitives-base-black`, and their RGB variants to a new location
in `ionic.vars.scss` to improve organization and maintainability.
[[1]](diffhunk://#diff-1338c32d120b3127caa5ac489c47b1f8366f5f7bb62b4a8be1c4e1ac56cd6f19L26-L29)
[[2]](diffhunk://#diff-1338c32d120b3127caa5ac489c47b1f8366f5f7bb62b4a8be1c4e1ac56cd6f19R362-R365)

* Added new elevation background variables
(`$ion-bg-surface-elevation-2`, `$ion-bg-surface-elevation-3`, and their
RGB variants) to the design token definitions to support the updated
component backgrounds.

## Does this introduce a breaking change?

- [x] Yes
- [ ] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->

---------

Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Shane <shane.king@outsystems.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Issue number: resolves internal

---------

## What is the current behavior?

**Content**
On the Ionic theme, `ion-content` still uses the native defaults: the
background is `var(--ion-background-color, #fff)` and the text color is
`var(--ion-text-color, #000)`. The background does not use the design
token, and the text color resets the color already set on `body`, so
everything inside the content gets `#000` instead of the default text
token.

**Colors in dark mode**
On the Ionic theme, every bold color's `contrast` uses
`$ion-text-inverse` (or `$ion-text-default` for warning/light), which
flip with the dark palette. But several bold backgrounds do not flip:
- primary, secondary, success and danger stay dark, so components using
them (solid buttons, badges, bold chips, toasts, item-options) get
near-black text on a dark background (e.g. ~2.5:1 on secondary).
- warning stays yellow and light stays white, so they get white text on
a light background (white-on-yellow ~2.4:1, white-on-white for light).

## What is the new behavior?

**Content**
- `ion-content` styles are split per theme (`content.common.scss`,
`content.native.scss`, `content.ios.scss`, `content.md.scss`,
`content.ionic.scss`), following the pattern used by other components.
- On the Ionic theme, the content background now falls back to the body
background token: `var(--ion-background-color, $ion-bg-body)`.
- On the Ionic theme, the content no longer resets the text color
(`--color: currentColor`), so it inherits the default text token set on
`body`.
- iOS and MD compile to the same CSS as before. The `--background` /
`--color` custom properties keep working for consumers.

**Colors in dark mode**
In the `$ionic-colors` map (`ionic.theme.default.scss`), bold `contrast`
values now match how each background behaves in the dark palette:
- Backgrounds that stay dark (primary, secondary, success, danger) use
`$ion-text-light`, so text stays white in both modes.
- Backgrounds that stay light (warning, light) use `$ion-text-dark`, so
text stays near-black in both modes.
- Backgrounds that are lightened in the dark palette (tertiary, extended
colors, medium, dark) keep `$ion-text-inverse`, which flips with the
theme to preserve contrast.

Light mode is visually unchanged for the `text-light` colors;
warning/light text shifts slightly (`#242528` to `#131518`). Reference
screenshots were regenerated.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: ionitron <hi@ionicframework.com>
Issue number: resolves internal

---------

<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?
`ion-datetime` supports selecting a single date or multiple individual
dates (via the `multiple` boolean prop). There is no way to select a
contiguous range of dates with a start and end date.

## What is the new behavior?
- Adds a new `selectionMode` prop with `"range"` and `"multiple"`
options. Single-date selection remains the default when unset.
- Range mode (`selectionMode="range"`) allows users to select a start
and end date. The first tap sets the start, the second tap sets the end.
Tapping again resets the range.
- Range selection is visualized with pill-shaped start/end days and a
colored track connecting them, consistent across ionic, iOS, and MD
themes.
- Today's date retains its blue text color when it falls within a range.
- Adds `startDateLabel` and `endDateLabel` props for customizing header
text and screen reader announcements.
- Adds `--range-background` CSS custom property for theming the range
track color.
- Adds `range-start`, `range-end`, `range-selection`, and `range-track`
CSS shadow parts.
- The confirm button is disabled until both start and end dates are
selected.
- `ion-datetime-button` displays the range as "startDate - endDate".
- Readonly ranges display normally (not faded); disabled ranges fade the
track and pills equally.
- Deprecates the `multiple` boolean prop in favor of
`selectionMode="multiple"`.
- Range selection only works with `presentation="date"` and
`preferWheel="false"`.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

The `multiple` prop continues to work but is deprecated. A console
warning is logged when used.

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information
- [Datetime - Range Test
Page](https://ionic-framework-git-rou-12704-datepicker-range-ionic1.vercel.app/src/components/datetime/test/range/)
- [Datetime - Range Styling Test
Page](https://ionic-framework-git-rou-12704-datepicker-range-ionic1.vercel.app/src/components/datetime/test/range-styling/)

---------

Co-authored-by: ionitron <hi@ionicframework.com>
Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ic theme (#31697)

Issue number: internal (ROU-13188)

---------

## What is the current behavior?

In the `ionic` theme, a disabled `ion-accordion` is drawn with a
`::before` overlay that uses the shared `disabled-state()` mixin,
painting the `state-disabled` token over the whole component.

That token is white at 60% opacity in light mode but black at 60% in
dark mode. In light mode the white scrim blends into the white surface
and looks like a fade, but in dark mode the black scrim turns the
accordion surface (`#1a1d21`) into roughly `#0a0c0d` — darker than the
page behind it (`#131518`) — so the disabled accordion renders as a
black slab.

## What is the new behavior?

- The `::before` overlay is removed from the disabled accordion in
`accordion.ionic.scss`.
- The disabled state is now expressed with colors, matching the design
spec: the background stays unchanged, the header title and the content
text switch to the `text-disabled` token, and the toggle icon switches
to the `icon-disabled` token.
- The header and content colors live in `accordion.ionic.scss`; the
toggle icon rule lives in `core.ionic.scss` because the icon is injected
into the slotted header item (light DOM), like its existing
default-state rule.
- Verified computed colors: light `#9fa5ad` on a white surface, dark
`#505763` on the `#1a1d21` surface, for title, content and icon.
- The shared `disabled-state()` mixin and the other components that use
it are untouched.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

- Interaction is unchanged: `pointer-events: none` for the disabled
state lives in `accordion.common.scss`, and the `disabled` e2e tests
(clicks and keyboard) pass.
- The `ionic-md` light screenshots for the disabled accordion states
will change: `accordion/test/states`, `accordion/test/nested`,
`accordion-group/test/states`.
- Note when testing with the `states` test page: it sets `color="light"`
on `ion-content`, which stays white even with dark tokens; the disabled
colors themselves are unaffected by this, since they no longer depend on
what is behind the accordion.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: ionitron <hi@ionicframework.com>
@vercel

vercel Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ionic-framework Ready Ready Preview Nov 9, 2026 10:24pm UTC

Request Review

@github-actions github-actions Bot added package: core @ionic/core package package: angular @ionic/angular package package: vue @ionic/vue package labels Nov 9, 2026
@thetaPC thetaPC changed the title chore: sync next chore(git): sync with next Nov 9, 2026
@thetaPC
thetaPC marked this pull request as ready for review November 9, 2026 22:57
@thetaPC
thetaPC requested a review from a team as a code owner November 9, 2026 22:57
@thetaPC
thetaPC requested a review from brandyscarney November 9, 2026 22:57
@thetaPC
thetaPC merged commit 3d56722 into ionic-modular Nov 9, 2026
54 checks passed
@thetaPC
thetaPC deleted the sync-ionic-modular-with-next branch November 9, 2026 23:00

This branch was successfully deployed

1 active deployment
Preview — 367da1fa Deployed Nov 9, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package: angular @ionic/angular package package: core @ionic/core package package: vue @ionic/vue package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants