# Intentional, accepted public-API breaking changes.
#
# Each line is a breakage message (as printed by
# `swift package diagnose-api-breaking-changes`) that the API check should
# ignore. Add an entry ONLY together with a MAJOR version bump and a CHANGELOG
# note explaining the migration. Keep this file empty between major releases.
#
# Example:
#   API breakage: func ThemeButton.init(title:) has been removed

# --- Modifier refactor (R1–R7): ThemeButton init → content+action, rest via modifiers ---
API breakage: constructor ThemeButton.init(_:systemImage:iconPosition:color:variant:size:shape:block:accessibilityID:isEnabled:isLoading:action:) has been removed
API breakage: enum ButtonIconPosition has been removed
API breakage: constructor ListRow.init(_:subtitle:number:size:leadingSystemImage:leadingImageURL:leadingSelection:alertCount:badge:meta:infos:isSelected:multilineTitle:infoAction:trailing:action:) has been removed
API breakage: constructor DateField.init(label:date:placeholder:range:style:locale:components:infoMessages:allowClear:leadingSystemImage:) has been removed
API breakage: constructor TreeSelect.init(label:nodes:selection:placeholder:cascade:searchable:initiallyExpanded:isLoading:isNodeEnabled:) has been removed
API breakage: constructor RadialProgress.init(value:size:lineWidth:showLabel:status:dashboard:tint:accessibilityLabel:) has been removed
API breakage: constructor InputNumber.init(label:value:range:step:unit:hint:errorText:large:) has been removed
API breakage: constructor RadioButton.init(_:isSelected:type:style:padding:backgroundColor:verticalAlignment:infoMessages:) has been removed
API breakage: constructor RadioButton.init(tag:selection:type:style:padding:backgroundColor:infoMessages:) has been removed
API breakage: constructor Stat.init(title:value:prefix:suffix:isLoading:description:systemImage:trend:) has been removed
API breakage: constructor EmptyState.init(systemImage:iconForeground:iconBackground:iconCircleSize:title:message:buttonTitle:action:secondaryTitle:onSecondary:) has been removed
API breakage: constructor EmptyState.init(image:imageMaxHeight:title:message:buttonTitle:action:secondaryTitle:onSecondary:) has been removed
API breakage: constructor EmptyState.init(animatedURL:imageMaxHeight:title:message:buttonTitle:action:secondaryTitle:onSecondary:) has been removed
API breakage: constructor Checkbox.init(_:isChecked:customSize:type:isIndeterminate:alignment:infoMessages:) has been removed
API breakage: constructor MultiLineTextInput.init(_:text:placeholder:characterLimit:errorText:infoMessages:minHeight:) has been removed
API breakage: constructor ProgressIndicator.init(variant:current:total:size:videoProgress:stepText:cornerRadius:) has been removed
API breakage: constructor AlertToast.init(_:message:type:systemImage:isLoading:action:onClose:) has been removed
API breakage: constructor Avatar.init(_:size:background:shape:presence:presencePulse:) has been removed
API breakage: constructor Avatar.init(_:dimension:background:shape:presence:presencePulse:) has been removed
API breakage: constructor Badge.init(_:style:variant:size:leadingSystemImage:action:) has been removed
API breakage: constructor FileInput.init(label:fileName:buttonTitle:placeholder:infoMessages:onPick:onClear:) has been removed
API breakage: constructor OTPInput.init(code:digitCount:isSecure:errorText:infoMessages:onComplete:resendInterval:onResend:) has been removed
API breakage: constructor Callout.init(_:type:style:showIcon:actionTitle:onAction:onClose:) has been removed
API breakage: constructor FloatingActionButton.init(systemImage:actions:shape:color:badge:action:) has been removed
API breakage: constructor PromoBanner.init(title:subtitle:systemImage:ctaTitle:tint:action:) has been removed
API breakage: constructor Timeline.init(_:axis:mode:reverse:pending:) has been removed
API breakage: constructor DividerView.init(size:axis:dashed:title:titleAlign:) has been removed
API breakage: constructor GaugeView.init(value:in:label:style:showsValue:) has been removed
API breakage: constructor RemoteImage.init(_:aspectRatio:contentMode:cornerRadius:circle:) has been removed
API breakage: constructor RemoteImage.init(_:ratio:contentMode:cornerRadius:circle:) has been removed
API breakage: constructor Swap.init(isOn:on:off:size:rotate:) has been removed
API breakage: constructor Tag.init(_:leadingSystemImage:style:variant:onRemove:) has been removed
API breakage: constructor Steps.init(_:axis:small:progressDot:onSelect:) has been removed
API breakage: constructor ChatBubble.init(_:side:author:time:avatarSystemImage:) has been removed
API breakage: constructor ImageCollage.init(_:height:spacing:cornerRadius:onTap:) has been removed
API breakage: constructor SegmentedTabBar.init(_:selection:scrollable:style:onClose:onAdd:) has been removed
API breakage: constructor RadioCard.init(_:description:isSelected:isEnabled:action:) has been removed
API breakage: constructor CheckboxCard.init(_:description:isChecked:isEnabled:action:) has been removed
API breakage: constructor Upload.init(prompt:buttonTitle:files:maxCount:onPick:onRemove:onRetry:) has been removed
API breakage: constructor Chip.init(_:isSelected:size:selectionStyle:) has been removed
API breakage: constructor InputLabel.init(_:isRequired:hasInfo:hasError:) has been removed
API breakage: constructor RollingNumber.init(_:size:weight:color:) has been removed
API breakage: constructor StatusDot.init(_:size:label:pulse:) has been removed
API breakage: constructor ImageChip.init(isSelected:url:size:isEnabled:) has been removed
API breakage: constructor Coupon.init(code:label:style:onCopy:) has been removed
API breakage: constructor SegmentedControl.init(_:selection:block:size:) has been removed
API breakage: constructor ThemeToggle.init(isOn:isLoading:onSystemImage:offSystemImage:) has been removed
API breakage: constructor InfoBanner.init(_:type:title:links:showIcon:banner:actionTitle:onAction:onDismiss:) has been removed

# --- Modifier refactor R1-R7, full-library sweep (58 components, 2026-07-02) ---
API breakage: constructor PrimaryButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:isLoading:action:) has been removed
API breakage: constructor PrimaryButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:task:) has been removed
API breakage: constructor SecondaryButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:isLoading:action:) has been removed
API breakage: constructor SecondaryButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:task:) has been removed
API breakage: constructor OutlineButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:isLoading:action:) has been removed
API breakage: constructor OutlineButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:task:) has been removed
API breakage: constructor GhostButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:isLoading:action:) has been removed
API breakage: constructor GhostButton.init(_:size:block:helperText:textStyle:confirmsSuccess:accessibilityID:task:) has been removed
API breakage: constructor LinkButton.init(_:size:accessibilityID:action:) has been removed
API breakage: constructor TextInput.init(_:text:placeholder:leadingSystemImage:suffixSystemImage:addonBefore:addonAfter:isSecure:allowClear:maxLength:showCount:size:formatter:helperText:errorText:warningText:infoMessages:externalFocus:keyboardType:textContentType:submitLabel:autocapitalization:autocorrectionDisabled:hardLimit:countStyle:onSubmit:) has been removed
API breakage: constructor Select.init(_:options:selection:placeholder:allowClear:searchable:size:infoMessages:isLoading:isOptionEnabled:optionTitle:) has been removed
API breakage: constructor Select.init(_:sections:selection:placeholder:allowClear:searchable:size:infoMessages:isLoading:isOptionEnabled:optionTitle:) has been removed
API breakage: constructor SelectBox.init(label:options:selection:placeholder:hint:errorText:optionTitle:) has been removed
API breakage: constructor MultiSelect.init(label:options:selection:placeholder:infoMessages:isOptionEnabled:optionTitle:) has been removed
API breakage: constructor Autocomplete.init(label:text:suggestions:placeholder:onSelect:) has been removed
API breakage: constructor Autocomplete.init(label:text:suggest:placeholder:onSelect:) has been removed
API breakage: constructor SearchBar.init(text:placeholder:suggestions:recent:onSearch:onSelect:onSubmit:onClearRecent:) has been removed
API breakage: constructor SearchBar.init(text:suggest:placeholder:recent:onSearch:onSelect:onSubmit:onClearRecent:) has been removed
API breakage: constructor CheckboxGroup.init(title:options:selection:infoMessages:selectAllTitle:isOptionEnabled:label:) has been removed
API breakage: constructor RadioGroup.init(title:options:selection:infoMessages:isOptionEnabled:label:) has been removed
API breakage: constructor RadioButtonGroup.init(options:selection:style:expandsHorizontally:isOptionEnabled:label:) has been removed
API breakage: constructor ToggleGroup.init(title:options:selection:label:description:) has been removed
API breakage: constructor Checkbox.init(_:isChecked:infoMessages:) has been removed
API breakage: constructor RadioButton.init(_:isSelected:infoMessages:) has been removed
API breakage: constructor RadioButton.init(tag:selection:infoMessages:) has been removed
API breakage: constructor ColorField.init(_:selection:supportsOpacity:) has been removed
API breakage: constructor Fieldset.init(_:helper:content:) has been removed
API breakage: constructor ChoseChip.init(isSelected:title:description:rating:showFree:freeLabel:systemImage:) has been removed
API breakage: constructor CompactChip.init(isSelected:text:price:imageURL:rating:) has been removed
API breakage: constructor FilterChip.init(_:shape:showsClose:onDismiss:) has been removed
API breakage: constructor ChipGroup.init(title:options:selection:selectionStyle:label:) has been removed
API breakage: constructor Slider.init(value:in:step:label:) has been removed
API breakage: constructor RangeSlider.init(lowerValue:upperValue:in:step:) has been removed
API breakage: constructor QuantityStepper.init(value:range:step:) has been removed
API breakage: constructor Accordion.init(_:leadingSystemImage:initiallyExpanded:content:) has been removed
API breakage: constructor AccordionGroup.init(_:mode:initiallyExpanded:title:content:) has been removed
API breakage: constructor Card.init(elevation:padding:title:subtitle:extraTitle:onExtra:isLoading:action:content:) has been removed
API breakage: constructor ListView.init(_:header:footer:bordered:loading:split:emptyText:row:) has been removed
API breakage: constructor DataTable.init(columns:rows:striped:selection:pageSize:isLoading:onRowTap:) has been removed
API breakage: constructor NotificationCard.init(title:message:date:isUnread:type:onClose:actions:) has been removed
API breakage: constructor NotificationCard.init(title:message:date:isUnread:type:onClose:) has been removed
API breakage: constructor ResultView.init(_:title:message:primaryTitle:onPrimary:secondaryTitle:onSecondary:) has been removed
API breakage: constructor Hero.init(title:subtitle:ctaTitle:dark:action:background:) has been removed
API breakage: constructor Hero.init(title:subtitle:ctaTitle:dark:action:) has been removed
API breakage: constructor BlogCard.init(title:excerpt:readMoreTitle:compact:onReadMore:media:) has been removed
API breakage: constructor PageHeader.init(_:subtitle:tags:onBack:actions:) has been removed
API breakage: constructor Gallery.init(_:columns:aspect:content:) has been removed
API breakage: constructor PagingCarousel.init(_:peek:spacing:autoplay:content:) has been removed
API breakage: constructor RatingSummary.init(score:label:reviewCount:onReviews:) has been removed
API breakage: constructor RadioCard.init(_:description:isSelected:action:) has been removed
API breakage: constructor CheckboxCard.init(_:description:isChecked:action:) has been removed
API breakage: constructor KeyValueTable.init(rows:title:bordered:) has been removed
API breakage: constructor Diff.init(aspectRatio:before:after:) has been removed
API breakage: constructor UploadList.init(controller:prompt:buttonTitle:onPick:) has been removed
API breakage: constructor Title.init(_:subtitle:eyebrow:actionTitle:action:) has been removed
API breakage: constructor InlineText.init(_:links:baseColor:style:) has been removed
API breakage: constructor AnimatedImage.init(_:contentMode:cornerRadius:) has been removed
API breakage: constructor AvatarGroup.init(_:size:max:background:) has been removed
API breakage: constructor Icon.init(systemName:size:color:) has been removed
API breakage: constructor ProgressBar.init(value:showPercentage:status:) has been removed
API breakage: constructor Rating.init(value:layout:countLabel:) has been removed
API breakage: constructor Ribbon.init(_:color:content:) has been removed
API breakage: constructor Skeleton.init(_:width:height:) has been removed
API breakage: constructor Spinner.init(size:lineWidth:color:) has been removed
API breakage: constructor TextLink.init(_:underline:action:) has been removed
API breakage: constructor LottieEmptyState.init(illustration:animationHeight:title:message:buttonTitle:action:) has been removed
API breakage: constructor LottieEmptyState.init(animationName:bundle:loop:animationHeight:title:message:buttonTitle:action:) has been removed
API breakage: constructor LottieEmptyState.init(animationURL:loop:animationHeight:title:message:buttonTitle:action:) has been removed
API breakage: constructor LottieIllustration.init(_:bundle:loop:) has been removed
API breakage: constructor LottieIllustration.init(dotLottieNamed:bundle:loop:) has been removed
API breakage: constructor LottieIllustration.init(url:loop:) has been removed
API breakage: constructor LottieIllustration.init(dotLottieURL:loop:) has been removed

# --- ButtonGroup Size/Width/Divider axes (#308): new ButtonSize cases ---
API breakage: enumelement ButtonSize.xlarge has been added as a new enum case
API breakage: enumelement ButtonSize.xxlarge has been added as a new enum case

# --- Drawer 4-edge slots (#311): edge axis widened HorizontalEdge → Edge (top/bottom/leading/trailing) ---
API breakage: func DrawerPresenter.present(edge:width:dismissOnScrimTap:_:) has parameter 0 type change from SwiftUI.HorizontalEdge to SwiftUI.Edge
API breakage: func View.drawer(isPresented:edge:width:dismissOnScrimTap:content:) has parameter 1 type change from SwiftUI.HorizontalEdge to SwiftUI.Edge

# --- Remove dead ComponentDefaults.radius / .elevation fields (accent-only house style) ---
API breakage: var ComponentDefaults.radius has been removed
API breakage: var ComponentDefaults.elevation has been removed
API breakage: constructor ComponentDefaults.init(radius:elevation:accent:) has been removed
API breakage: func View.componentDefaults(radius:elevation:accent:) has been renamed to func componentDefaults(accent:)
API breakage: func View.componentDefaults(radius:elevation:accent:) has parameter 0 type change from ThemeKitCore.Theme.RadiusRole? to ThemeKitCore.SemanticColor?

# --- TextInput labelPlacement axis (feat): FieldDefaults gains a `labelPlacement`
#     subtree default. Source-COMPATIBLE additive change — the new param is
#     defaulted (`nil`), so every existing `FieldDefaults(...)` / `.fieldDefaults(...)`
#     call site still compiles unchanged. The digester flags the signature growth
#     as a removal/rename; same additive-axis precedent as the #308 entries above. ---
API breakage: constructor FieldDefaults.init(size:messagesAnimated:requiredIndicator:clearable:validationTrigger:) has been removed
API breakage: func View.fieldDefaults(size:messagesAnimated:requiredIndicator:clearable:validationTrigger:) has been renamed to func fieldDefaults(size:messagesAnimated:requiredIndicator:clearable:validationTrigger:labelPlacement:)

# --- iOS 15.6 floor (ADR-0007 §D3/§D4): @Observable → ObservableObject on the
#     presenters + FormValidator. Consumer migration (one line per site):
#       @Environment(SheetPresenter.self) → @EnvironmentObject var sheet: SheetPresenter
#       @State var tour = TourController() → @StateObject var tour = TourController()
#     The @State→@StateObject change is SILENT (compiles, stops observing) —
#     see the CHANGELOG [Unreleased] migration block. ---
API breakage: class SheetPresenter has removed conformance to Observable
API breakage: class DrawerPresenter has removed conformance to Observable
API breakage: class FeedbackPresenter has removed conformance to Observable
API breakage: class TourController has removed conformance to Observable
API breakage: class UploadController has removed conformance to Observable
API breakage: class FormValidator has removed conformance to Observable

# --- iOS 15.6 floor (ADR-0007 §D2 rule 1 / §D4, plan §3a): FlowLayout drops its
#     public `Layout` conformance (the protocol is iOS 16) and becomes a measured
#     generic *view* over its content. Every call site keeps compiling unchanged
#     (`FlowLayout(spacing:) { … }` — the trailing closure is now a @ViewBuilder
#     init parameter instead of `Layout.callAsFunction`); only code that used
#     FlowLayout AS a `Layout` value (e.g. inside `AnyLayout`) breaks, and no
#     such consumer pattern was ever documented. See the CHANGELOG [Unreleased]
#     migration block. ---
API breakage: struct FlowLayout has removed conformance to Layout
API breakage: struct FlowLayout has removed conformance to Animatable
API breakage: struct FlowLayout has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: struct FlowLayout is now with @preconcurrency
API breakage: constructor FlowLayout.init(spacing:lineSpacing:alignment:) has been removed
API breakage: constructor FlowLayout.init(spacing:lineSpacing:alignment:layoutDirection:) has been removed
API breakage: func FlowLayout.sizeThatFits(proposal:subviews:cache:) has been removed
API breakage: func FlowLayout.placeSubviews(in:proposal:subviews:cache:) has been removed
API breakage: typealias FlowLayout.AnimatableData has been removed
API breakage: typealias FlowLayout.Cache has been removed
API breakage: var FlowLayout.spacing is now with @preconcurrency
API breakage: var FlowLayout.lineSpacing is now with @preconcurrency
API breakage: var FlowLayout.alignment is now with @preconcurrency
API breakage: var FlowLayout.layoutDirection is now with @preconcurrency
API breakage: accessor FlowLayout.spacing.Get() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.spacing.Set() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.lineSpacing.Get() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.lineSpacing.Set() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.alignment.Get() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.alignment.Set() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.layoutDirection.Get() has generic signature change from  to <Content where Content : SwiftUI.View>
API breakage: accessor FlowLayout.layoutDirection.Set() has generic signature change from  to <Content where Content : SwiftUI.View>

# --- iOS 15.6 floor (ADR-0007 §D2 rule 1, plan §3d): Charts → Canvas rewrite drops
#     `import Charts`, so the Swift Charts framework's own conformances on `Array`
#     (ScaleDomain / ScaleRange / PositionScaleRange) no longer leak through
#     ThemeKit's public surface. These were never ThemeKit-declared API — they were
#     visible only as a side effect of importing Charts; a consumer relying on them
#     would `import Charts` directly. No consumer-facing loss. See CHANGELOG. ---
API breakage: extension Array has removed conformance to ScaleDomain
API breakage: extension Array has removed conformance to ScaleRange
API breakage: extension Array has removed conformance to PositionScaleRange
