Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
0a3f41d
feat(spinner): add recipe and tokens
thetaPC Mar 17, 2026
5eee3a8
chore(spinner): run build
thetaPC Mar 17, 2026
75a325a
test(color): update test page and snapshots
thetaPC Mar 17, 2026
53d06e1
chore(spinner): delete old styles
thetaPC Mar 17, 2026
78cfbba
test(spinner): update resize
thetaPC Mar 17, 2026
edb0414
test(spinner): remove diff term
thetaPC Mar 17, 2026
2ffac3e
test(spinner): update spacing
thetaPC Mar 17, 2026
3d89f21
feat(spinner): add recipe and config types
thetaPC Mar 17, 2026
363cddf
feat(spinner): change class names
thetaPC Mar 17, 2026
7b13706
test(spinner): update class
thetaPC Mar 17, 2026
b2a301a
refactor(spinner): remove plural type
thetaPC Mar 18, 2026
5f0020c
test(spinner): update color snapshots
thetaPC Mar 19, 2026
1179d40
refactor(theme): alphabetize imports
thetaPC Mar 19, 2026
4f5ee31
docs(spinner, chip): update get value functions comments
thetaPC Mar 19, 2026
2cd0043
Merge branch 'FW-6860' of github.com:ionic-team/ionic-framework into …
thetaPC Mar 19, 2026
4c1c6d2
feat(spinner): change type names
thetaPC Mar 19, 2026
ee53528
refactor(spinner): change existing config type name
thetaPC Mar 19, 2026
8019941
docs(chip, spinner): update method descriptions
thetaPC Mar 20, 2026
0aef08c
feat(chip, spinner): remove old CSS variables
thetaPC Mar 23, 2026
cb80321
feat(spinner): rename internal interface
thetaPC Mar 23, 2026
5388749
docs(breaking): update to include spinner
thetaPC Mar 23, 2026
de06eb8
feat(spinner): update --color to be internal
thetaPC Mar 23, 2026
7e1f630
feat(button, spinner): update color when spinner is inside button
thetaPC Mar 23, 2026
3c5afb3
fix(spinner): add missing token
thetaPC Mar 23, 2026
8668db4
docs(chip, spinner): clarify how defaults work
thetaPC Mar 23, 2026
528cb40
refactor(spinner): update return type
thetaPC Mar 23, 2026
e00d1f0
revert(BREAKING): leave radio group as is
thetaPC Mar 23, 2026
062a7c7
docs(BREAKING): update chip to include ionic modular changes
thetaPC Mar 23, 2026
95b1b41
docs(chip, spinner): add CSS variables to comments
thetaPC Mar 23, 2026
a8892a9
docs(chip): update logic comment
thetaPC Mar 23, 2026
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
5 changes: 1 addition & 4 deletions core/api.txt
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description says:

CSS Overrides: Ensure selectors align with the new slotted element logic and variable names (e.g., --ion-spinner-color).

--color should no longer be used. Setting the value, IonSpinner.color, within the tokens file should be used to change the color.

But we still have this variable, why?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we discussed that it would be revisited as we add more components. Should I just remove them?

Copy link
Copy Markdown
Member

@brandyscarney brandyscarney Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I thought that was just about the focus variables. I don't see a reason they can't override the --color on components directly? Developers might want it to be different than the global theme.

Copy link
Copy Markdown
Contributor Author

@thetaPC thetaPC Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then they can override them per component by using --ion-spinner-color instead of --color. I ended up removing the old CSS variables since having both might be confusing of when to use them, the same for chip: 0aef08c and 7e1f630

Original file line number Diff line number Diff line change
Expand Up @@ -2309,10 +2309,7 @@ ion-spinner,prop,mode,"ios" | "md",undefined,false,false
ion-spinner,prop,name,"bubbles" | "circles" | "circular" | "crescent" | "dots" | "lines" | "lines-sharp" | "lines-sharp-small" | "lines-small" | undefined,undefined,false,false
ion-spinner,prop,paused,boolean,false,false,false
ion-spinner,prop,size,"large" | "medium" | "small" | "xlarge" | "xsmall" | undefined,undefined,false,false
ion-spinner,prop,theme,"ios" | "md" | "ionic",undefined,false,false
ion-spinner,css-prop,--color,ionic
ion-spinner,css-prop,--color,ios
ion-spinner,css-prop,--color,md
ion-spinner,css-prop,--color

ion-split-pane,shadow
ion-split-pane,prop,contentId,string | undefined,undefined,false,true
Expand Down
18 changes: 6 additions & 12 deletions core/src/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import { SegmentViewScrollEvent } from "./components/segment-view/segment-view-i
import { SelectChangeEventDetail, SelectCompareFn, SelectInterface } from "./components/select/select-interface";
import { SelectModalOption } from "./components/select-modal/select-modal-interface";
import { SelectPopoverOption } from "./components/select-popover/select-popover-interface";
import { IonSpinnerSizes } from "./components/spinner/spinner.interfaces";
import { TabBarChangedEventDetail, TabButtonClickEventDetail, TabButtonLayout } from "./components/tab-bar/tab-bar-interface";
import { TextareaChangeEventDetail, TextareaInputEventDetail } from "./components/textarea/textarea-interface";
import { ToastButton, ToastDismissOptions, ToastLayout, ToastPosition, ToastPresentOptions, ToastSwipeGestureDirection } from "./components/toast/toast-interface";
Expand Down Expand Up @@ -77,6 +78,7 @@ export { SegmentViewScrollEvent } from "./components/segment-view/segment-view-i
export { SelectChangeEventDetail, SelectCompareFn, SelectInterface } from "./components/select/select-interface";
export { SelectModalOption } from "./components/select-modal/select-modal-interface";
export { SelectPopoverOption } from "./components/select-popover/select-popover-interface";
export { IonSpinnerSizes } from "./components/spinner/spinner.interfaces";
export { TabBarChangedEventDetail, TabButtonClickEventDetail, TabButtonLayout } from "./components/tab-bar/tab-bar-interface";
export { TextareaChangeEventDetail, TextareaInputEventDetail } from "./components/textarea/textarea-interface";
export { ToastButton, ToastDismissOptions, ToastLayout, ToastPosition, ToastPresentOptions, ToastSwipeGestureDirection } from "./components/toast/toast-interface";
Expand Down Expand Up @@ -3881,13 +3883,9 @@ export namespace Components {
*/
"paused": boolean;
/**
* Set to `"xsmall"` for the smallest size. Set to `"small"` for a smaller size. Set to `"medium"` for a medium size. Set to `"large"` for a large size. Set to `"xlarge"` for the largest size. Defaults to `"xsmall"` for the `ionic` theme, undefined for all other themes.
* Set to `"xsmall"` for the smallest size. Set to `"small"` for a smaller size. Set to `"medium"` for a medium size. Set to `"large"` for a large size. Set to `"xlarge"` for the largest size. Defaults to `"medium"`.
*/
"size"?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* The theme determines the visual appearance of the component.
*/
"theme"?: "ios" | "md" | "ionic";
"size"?: IonSpinnerSizes;
}
interface IonSplitPane {
/**
Expand Down Expand Up @@ -9911,13 +9909,9 @@ declare namespace LocalJSX {
*/
"paused"?: boolean;
/**
* Set to `"xsmall"` for the smallest size. Set to `"small"` for a smaller size. Set to `"medium"` for a medium size. Set to `"large"` for a large size. Set to `"xlarge"` for the largest size. Defaults to `"xsmall"` for the `ionic` theme, undefined for all other themes.
* Set to `"xsmall"` for the smallest size. Set to `"small"` for a smaller size. Set to `"medium"` for a medium size. Set to `"large"` for a large size. Set to `"xlarge"` for the largest size. Defaults to `"medium"`.
*/
"size"?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
/**
* The theme determines the visual appearance of the component.
*/
"theme"?: "ios" | "md" | "ionic";
"size"?: IonSpinnerSizes;
}
interface IonSplitPane {
/**
Expand Down
2 changes: 1 addition & 1 deletion core/src/components/spinner/spinner-configs.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { SpinnerConfigs } from './spinner-interface';
import type { SpinnerConfigs } from './spinner.interfaces';

const spinners = {
bubbles: {
Expand Down
22 changes: 0 additions & 22 deletions core/src/components/spinner/spinner-interface.ts
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was renamed, not sure why it's not showing as such.

This file was deleted.

78 changes: 78 additions & 0 deletions core/src/components/spinner/spinner.interfaces.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
export interface SpinnerConfigs {
[spinnerName: string]: SpinnerConfig;
}

export interface SpinnerConfig {
Comment thread
brandyscarney marked this conversation as resolved.
Outdated
dur: number;
circles?: number;
lines?: number;
elmDuration?: boolean;
fn: (dur: number, index: number, total: number) => SpinnerData;
}

interface SpinnerData {
Comment thread
brandyscarney marked this conversation as resolved.
r?: number;
y1?: number;
y2?: number;
cx?: number;
cy?: number;
style: { [key: string]: string | undefined };
viewBox?: string;
transform?: string;
}

export type IonSpinnerRecipe = {
color?: string;

lines?: {
stroke?: {
width?: string;
};

small?: {
stroke?: {
width?: string;
};
};

sharp?: {
stroke?: {
width?: string;
};

small?: {
stroke?: {
width?: string;
};
};
};
};

circular?: {
stroke?: {
width?: string;
};
};

crescent?: {
stroke?: {
width?: string;
};
};

// Sizes
size?: {
[K in IonSpinnerSizes]?: IonSpinnerSizeDefinition;
};
};

type IonSpinnerSizeDefinition = {
width?: string;
height?: string;
};

export type IonSpinnerConfig = {
size?: IonSpinnerSizes;
};

export type IonSpinnerSizes = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
62 changes: 0 additions & 62 deletions core/src/components/spinner/spinner.ionic.scss

This file was deleted.

14 changes: 0 additions & 14 deletions core/src/components/spinner/spinner.native.scss

This file was deleted.

Loading
Loading