@skyscanner/backpack-web 41.18.0 → 41.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/bpk-component-badge/index.d.ts +2 -2
  2. package/bpk-component-badge/index.js +2 -2
  3. package/bpk-component-badge/src/BpkBadge.module.css +1 -1
  4. package/bpk-component-badge/src/themeAttributes.d.ts +25 -2
  5. package/bpk-component-badge/src/themeAttributes.js +27 -1
  6. package/bpk-component-button/index.d.ts +2 -2
  7. package/bpk-component-button/index.js +1 -1
  8. package/bpk-component-button/src/BpkButtonV2/BpkButton.d.ts +1 -1
  9. package/bpk-component-button/src/BpkButtonV2/BpkButton.js +38 -6
  10. package/bpk-component-button/src/BpkButtonV2/BpkButton.module.css +1 -1
  11. package/bpk-component-button/src/BpkButtonV2/common-types.d.ts +2 -0
  12. package/bpk-component-button/src/themeAttributes.d.ts +1 -0
  13. package/bpk-component-button/src/themeAttributes.js +3 -2
  14. package/bpk-component-chip/index.d.ts +2 -2
  15. package/bpk-component-chip/index.js +2 -2
  16. package/bpk-component-chip/src/BpkSelectableChip.module.css +1 -1
  17. package/bpk-component-chip/src/themeAttributes.d.ts +4 -0
  18. package/bpk-component-chip/src/themeAttributes.js +7 -1
  19. package/bpk-component-pagination/src/BpkPaginationPage.module.css +1 -1
  20. package/bpk-component-scrollable-calendar/src/utils.d.ts +1 -1
  21. package/bpk-component-segmented-control/index.d.ts +2 -0
  22. package/bpk-component-segmented-control/index.js +2 -1
  23. package/bpk-component-segmented-control/src/BpkSegmentedControlV2/BpkSegmentedControlV2.d.ts +19 -0
  24. package/bpk-component-segmented-control/src/BpkSegmentedControlV2/BpkSegmentedControlV2.js +81 -0
  25. package/bpk-component-segmented-control/src/BpkSegmentedControlV2/BpkSegmentedControlV2.module.css +18 -0
  26. package/bpk-component-segmented-control/src/BpkSegmentedControlV2/common-types.d.ts +57 -0
  27. package/bpk-component-segmented-control/src/BpkSegmentedControlV2/common-types.js +24 -0
  28. package/bpk-component-table/index.d.ts +13 -0
  29. package/bpk-component-table/index.js +3 -1
  30. package/bpk-component-table/src/BpkTable.d.ts +8 -0
  31. package/bpk-component-table/src/BpkTable.js +7 -14
  32. package/bpk-component-table/src/BpkTableBody.d.ts +7 -0
  33. package/bpk-component-table/src/BpkTableBody.js +3 -5
  34. package/bpk-component-table/src/BpkTableCell.d.ts +9 -0
  35. package/bpk-component-table/src/BpkTableCell.js +7 -15
  36. package/bpk-component-table/src/BpkTableHead.d.ts +7 -0
  37. package/bpk-component-table/src/BpkTableHead.js +3 -5
  38. package/bpk-component-table/src/BpkTableHeadCell.d.ts +9 -0
  39. package/bpk-component-table/src/BpkTableHeadCell.js +2 -6
  40. package/bpk-component-table/src/BpkTableRow.d.ts +7 -0
  41. package/bpk-component-table/src/BpkTableRow.js +3 -5
  42. package/bpk-mixins/_badges.scss +147 -25
  43. package/bpk-mixins/_buttons.scss +173 -79
  44. package/bpk-mixins/_chips.scss +104 -18
  45. package/bpk-mixins/_index.scss +1 -0
  46. package/bpk-mixins/_segmented-control.scss +263 -0
  47. package/package.json +2 -1
@@ -0,0 +1,57 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare const SEGMENT_TYPES_V2: {
3
+ readonly CanvasDefault: "canvas-default";
4
+ readonly CanvasContrast: "canvas-contrast";
5
+ readonly SurfaceDefault: "surface-default";
6
+ readonly SurfaceContrast: "surface-contrast";
7
+ };
8
+ export type SegmentTypesV2 = (typeof SEGMENT_TYPES_V2)[keyof typeof SEGMENT_TYPES_V2];
9
+ export type BpkSegmentedControlV2RootProps = {
10
+ /**
11
+ * Slot content — one or more BpkSegmentedControlV2.Item elements.
12
+ */
13
+ children: ReactNode;
14
+ /**
15
+ * Controlled selected value. When provided, onChange must also be provided.
16
+ */
17
+ value?: string;
18
+ /**
19
+ * Initial selected value for uncontrolled usage.
20
+ */
21
+ defaultValue?: string;
22
+ /**
23
+ * Called when the selected segment changes. Receives the value of the newly selected item.
24
+ */
25
+ onChange?: (value: string) => void;
26
+ /**
27
+ * Pre-defined surface theme controlling default token values.
28
+ * @default 'canvas-default'
29
+ */
30
+ type?: SegmentTypesV2;
31
+ /**
32
+ * Applies a box shadow to the group container.
33
+ * @default false
34
+ */
35
+ shadow?: boolean;
36
+ /**
37
+ * Accessible label for the radiogroup. Always required to satisfy WCAG 4.1.2
38
+ * (the role="radiogroup" element must have an accessible name).
39
+ */
40
+ label: string;
41
+ };
42
+ export type BpkSegmentedControlV2ItemProps = {
43
+ /**
44
+ * Unique identifier for this segment within the group.
45
+ */
46
+ value: string;
47
+ /**
48
+ * Slot content — typically ItemText + ItemControl + ItemHiddenInput.
49
+ */
50
+ children: ReactNode;
51
+ };
52
+ export type BpkSegmentedControlV2ItemTextProps = {
53
+ /**
54
+ * Visible content of the segment — text, icons, or a combination.
55
+ */
56
+ children: ReactNode;
57
+ };
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Backpack - Skyscanner's Design System
3
+ *
4
+ * Copyright 2016 Skyscanner Ltd
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+
19
+ export const SEGMENT_TYPES_V2 = {
20
+ CanvasDefault: 'canvas-default',
21
+ CanvasContrast: 'canvas-contrast',
22
+ SurfaceDefault: 'surface-default',
23
+ SurfaceContrast: 'surface-contrast'
24
+ };
@@ -0,0 +1,13 @@
1
+ import BpkTable from './src/BpkTable';
2
+ import BpkTableBody from './src/BpkTableBody';
3
+ import BpkTableCell from './src/BpkTableCell';
4
+ import BpkTableHead from './src/BpkTableHead';
5
+ import BpkTableHeadCell from './src/BpkTableHeadCell';
6
+ import BpkTableRow from './src/BpkTableRow';
7
+ export type { BpkTableProps } from './src/BpkTable';
8
+ export type { BpkTableHeadProps } from './src/BpkTableHead';
9
+ export type { BpkTableBodyProps } from './src/BpkTableBody';
10
+ export type { BpkTableRowProps } from './src/BpkTableRow';
11
+ export type { BpkTableCellProps } from './src/BpkTableCell';
12
+ export type { BpkTableHeadCellProps } from './src/BpkTableHeadCell';
13
+ export { BpkTable, BpkTableHead, BpkTableBody, BpkTableRow, BpkTableCell, BpkTableHeadCell, };
@@ -14,7 +14,9 @@
14
14
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
- */import BpkTable from "./src/BpkTable";
17
+ */
18
+
19
+ import BpkTable from "./src/BpkTable";
18
20
  import BpkTableBody from "./src/BpkTableBody";
19
21
  import BpkTableCell from "./src/BpkTableCell";
20
22
  import BpkTableHead from "./src/BpkTableHead";
@@ -0,0 +1,8 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface BpkTableProps extends Omit<HTMLAttributes<HTMLTableElement>, 'className'> {
3
+ /** The content of the table */
4
+ children: ReactNode;
5
+ className?: string | null;
6
+ }
7
+ declare const BpkTable: ({ children, className, ...rest }: BpkTableProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default BpkTable;
@@ -14,7 +14,8 @@
14
14
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
- */import PropTypes from 'prop-types';
17
+ */
18
+
18
19
  import { cssModules } from "../../bpk-react-utils";
19
20
  import STYLES from "./BpkTable.module.css";
20
21
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -25,18 +26,10 @@ const BpkTable = ({
25
26
  ...rest
26
27
  }) => {
27
28
  const classNames = getClassName('bpk-table', className);
28
- return (
29
- /*#__PURE__*/
30
- // $FlowFixMe[cannot-spread-inexact] - inexact rest. See decisions/flowfixme.md
31
- _jsx("table", {
32
- className: classNames,
33
- ...rest,
34
- children: children
35
- })
36
- );
37
- };
38
- BpkTable.propTypes = {
39
- children: PropTypes.node.isRequired,
40
- className: PropTypes.string
29
+ return /*#__PURE__*/_jsx("table", {
30
+ className: classNames,
31
+ ...rest,
32
+ children: children
33
+ });
41
34
  };
42
35
  export default BpkTable;
@@ -0,0 +1,7 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface BpkTableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {
3
+ /** The content of the table */
4
+ children: ReactNode;
5
+ }
6
+ declare const BpkTableBody: (props: BpkTableBodyProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default BpkTableBody;
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  /*
2
3
  * Backpack - Skyscanner's Design System
3
4
  *
@@ -14,12 +15,9 @@
14
15
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
16
  * See the License for the specific language governing permissions and
16
17
  * limitations under the License.
17
- */import PropTypes from 'prop-types';
18
- import { jsx as _jsx } from "react/jsx-runtime";
18
+ */
19
+
19
20
  const BpkTableBody = props => /*#__PURE__*/_jsx("tbody", {
20
21
  ...props
21
22
  });
22
- BpkTableBody.propTypes = {
23
- children: PropTypes.node.isRequired
24
- };
25
23
  export default BpkTableBody;
@@ -0,0 +1,9 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface BpkTableCellProps extends Omit<HTMLAttributes<HTMLTableCellElement>, 'className'> {
3
+ /** The content of the table */
4
+ children: ReactNode;
5
+ className?: string | null;
6
+ wordBreak?: boolean;
7
+ }
8
+ declare const BpkTableCell: ({ children, className, wordBreak, ...rest }: BpkTableCellProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default BpkTableCell;
@@ -14,7 +14,8 @@
14
14
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
- */import PropTypes from 'prop-types';
17
+ */
18
+
18
19
  import { cssModules } from "../../bpk-react-utils";
19
20
  import STYLES from "./BpkTable.module.css";
20
21
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -27,19 +28,10 @@ const BpkTableCell = ({
27
28
  }) => {
28
29
  const classes = ['bpk-table__cell', wordBreak && 'bpk-table__cell--wordBreak', className];
29
30
  const classNames = getClassName(...classes);
30
- return (
31
- /*#__PURE__*/
32
- // $FlowFixMe[cannot-spread-inexact] - inexact rest. See decisions/flowfixme.md
33
- _jsx("td", {
34
- className: classNames,
35
- ...rest,
36
- children: children
37
- })
38
- );
39
- };
40
- BpkTableCell.propTypes = {
41
- className: PropTypes.string,
42
- children: PropTypes.node.isRequired,
43
- wordBreak: PropTypes.bool
31
+ return /*#__PURE__*/_jsx("td", {
32
+ className: classNames,
33
+ ...rest,
34
+ children: children
35
+ });
44
36
  };
45
37
  export default BpkTableCell;
@@ -0,0 +1,7 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface BpkTableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {
3
+ /** The content of the table */
4
+ children: ReactNode;
5
+ }
6
+ declare const BpkTableHead: (props: BpkTableHeadProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default BpkTableHead;
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  /*
2
3
  * Backpack - Skyscanner's Design System
3
4
  *
@@ -14,12 +15,9 @@
14
15
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
16
  * See the License for the specific language governing permissions and
16
17
  * limitations under the License.
17
- */import PropTypes from 'prop-types';
18
- import { jsx as _jsx } from "react/jsx-runtime";
18
+ */
19
+
19
20
  const BpkTableHead = props => /*#__PURE__*/_jsx("thead", {
20
21
  ...props
21
22
  });
22
- BpkTableHead.propTypes = {
23
- children: PropTypes.node.isRequired
24
- };
25
23
  export default BpkTableHead;
@@ -0,0 +1,9 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface BpkTableHeadCellProps extends Omit<HTMLAttributes<HTMLTableCellElement>, 'className'> {
3
+ /** The content of the table */
4
+ children: ReactNode;
5
+ className?: string | null;
6
+ wordBreak?: boolean;
7
+ }
8
+ declare const BpkTableHeadCell: ({ children, className, wordBreak, ...rest }: BpkTableHeadCellProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default BpkTableHeadCell;
@@ -14,7 +14,8 @@
14
14
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
- */import PropTypes from 'prop-types';
17
+ */
18
+
18
19
  import { cssModules } from "../../bpk-react-utils";
19
20
  import STYLES from "./BpkTable.module.css";
20
21
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -33,9 +34,4 @@ const BpkTableHeadCell = ({
33
34
  children: children
34
35
  });
35
36
  };
36
- BpkTableHeadCell.propTypes = {
37
- children: PropTypes.node.isRequired,
38
- className: PropTypes.string,
39
- wordBreak: PropTypes.bool
40
- };
41
37
  export default BpkTableHeadCell;
@@ -0,0 +1,7 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface BpkTableRowProps extends HTMLAttributes<HTMLTableRowElement> {
3
+ /** The content of the table */
4
+ children: ReactNode;
5
+ }
6
+ declare const BpkTableRow: (props: BpkTableRowProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default BpkTableRow;
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  /*
2
3
  * Backpack - Skyscanner's Design System
3
4
  *
@@ -14,12 +15,9 @@
14
15
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
16
  * See the License for the specific language governing permissions and
16
17
  * limitations under the License.
17
- */import PropTypes from 'prop-types';
18
- import { jsx as _jsx } from "react/jsx-runtime";
18
+ */
19
+
19
20
  const BpkTableRow = props => /*#__PURE__*/_jsx("tr", {
20
21
  ...props
21
22
  });
22
- BpkTableRow.propTypes = {
23
- children: PropTypes.node.isRequired
24
- };
25
23
  export default BpkTableRow;
@@ -39,9 +39,28 @@
39
39
  padding: tokens.bpk-spacing-sm() tokens.bpk-spacing-md();
40
40
  align-items: center;
41
41
 
42
- @include radii.bpk-border-radius-xs;
42
+ @include utils.bpk-themeable-property(
43
+ border-radius,
44
+ --bpk-badge-border-radius,
45
+ tokens.$bpk-border-radius-xs
46
+ );
43
47
  @include typography.bpk-text;
44
48
  @include typography.bpk-footnote;
49
+ @include utils.bpk-themeable-property(
50
+ font-size,
51
+ --bpk-badge-font-size,
52
+ tokens.$bpk-font-size-sm
53
+ );
54
+ @include utils.bpk-themeable-property(
55
+ font-weight,
56
+ --bpk-badge-font-weight,
57
+ tokens.$bpk-font-weight-book
58
+ );
59
+ @include utils.bpk-themeable-property(
60
+ line-height,
61
+ --bpk-badge-line-height,
62
+ tokens.$bpk-line-height-sm
63
+ );
45
64
  }
46
65
 
47
66
  /// Centered badge. Modifies the bpk-badge mixin.
@@ -121,9 +140,21 @@
121
140
  /// }
122
141
 
123
142
  @mixin bpk-badge--normal {
124
- background-color: tokens.$bpk-private-badge-background-normal-day;
125
- color: tokens.$bpk-text-primary-day;
126
- fill: tokens.$bpk-text-primary-day;
143
+ @include utils.bpk-themeable-property(
144
+ background-color,
145
+ --bpk-badge-normal-background-color,
146
+ tokens.$bpk-private-badge-background-normal-day
147
+ );
148
+ @include utils.bpk-themeable-property(
149
+ color,
150
+ --bpk-badge-normal-text-color,
151
+ tokens.$bpk-text-primary-day
152
+ );
153
+ @include utils.bpk-themeable-property(
154
+ fill,
155
+ --bpk-badge-normal-icon-color,
156
+ tokens.$bpk-text-primary-day
157
+ );
127
158
  }
128
159
 
129
160
  /// Warning badge. Modifies the bpk-badge mixin.
@@ -137,9 +168,21 @@
137
168
  /// }
138
169
 
139
170
  @mixin bpk-badge--warning {
140
- background-color: tokens.$bpk-private-badge-background-normal-day;
141
- color: tokens.$bpk-text-on-light-day;
142
- fill: tokens.$bpk-status-warning-spot-day;
171
+ @include utils.bpk-themeable-property(
172
+ background-color,
173
+ --bpk-badge-warning-background-color,
174
+ tokens.$bpk-private-badge-background-normal-day
175
+ );
176
+ @include utils.bpk-themeable-property(
177
+ color,
178
+ --bpk-badge-warning-text-color,
179
+ tokens.$bpk-text-on-light-day
180
+ );
181
+ @include utils.bpk-themeable-property(
182
+ fill,
183
+ --bpk-badge-warning-icon-color,
184
+ tokens.$bpk-status-warning-spot-day
185
+ );
143
186
  }
144
187
 
145
188
  /// Success badge. Modifies the bpk-badge mixin.
@@ -153,9 +196,21 @@
153
196
  /// }
154
197
 
155
198
  @mixin bpk-badge--success {
156
- background-color: tokens.$bpk-private-badge-background-normal-day;
157
- color: tokens.$bpk-text-on-light-day;
158
- fill: tokens.$bpk-status-success-spot-day;
199
+ @include utils.bpk-themeable-property(
200
+ background-color,
201
+ --bpk-badge-success-background-color,
202
+ tokens.$bpk-private-badge-background-normal-day
203
+ );
204
+ @include utils.bpk-themeable-property(
205
+ color,
206
+ --bpk-badge-success-text-color,
207
+ tokens.$bpk-text-on-light-day
208
+ );
209
+ @include utils.bpk-themeable-property(
210
+ fill,
211
+ --bpk-badge-success-icon-color,
212
+ tokens.$bpk-status-success-spot-day
213
+ );
159
214
  }
160
215
 
161
216
  /// Critical badge. Modifies the bpk-badge mixin.
@@ -169,9 +224,21 @@
169
224
  /// }
170
225
 
171
226
  @mixin bpk-badge--critical {
172
- background-color: tokens.$bpk-private-badge-background-normal-day;
173
- color: tokens.$bpk-text-on-light-day;
174
- fill: tokens.$bpk-status-danger-spot-day;
227
+ @include utils.bpk-themeable-property(
228
+ background-color,
229
+ --bpk-badge-critical-background-color,
230
+ tokens.$bpk-private-badge-background-normal-day
231
+ );
232
+ @include utils.bpk-themeable-property(
233
+ color,
234
+ --bpk-badge-critical-text-color,
235
+ tokens.$bpk-text-on-light-day
236
+ );
237
+ @include utils.bpk-themeable-property(
238
+ fill,
239
+ --bpk-badge-critical-icon-color,
240
+ tokens.$bpk-status-danger-spot-day
241
+ );
175
242
  }
176
243
 
177
244
  /// Inverse badge. Modifies the bpk-badge mixin.
@@ -185,9 +252,21 @@
185
252
  /// }
186
253
 
187
254
  @mixin bpk-badge--inverse {
188
- background-color: tokens.$bpk-surface-default-day;
189
- color: tokens.$bpk-text-primary-day;
190
- fill: tokens.$bpk-text-primary-day;
255
+ @include utils.bpk-themeable-property(
256
+ background-color,
257
+ --bpk-badge-inverse-background-color,
258
+ tokens.$bpk-surface-default-day
259
+ );
260
+ @include utils.bpk-themeable-property(
261
+ color,
262
+ --bpk-badge-inverse-text-color,
263
+ tokens.$bpk-text-primary-day
264
+ );
265
+ @include utils.bpk-themeable-property(
266
+ fill,
267
+ --bpk-badge-inverse-icon-color,
268
+ tokens.$bpk-text-primary-day
269
+ );
191
270
  }
192
271
 
193
272
  /// Outline badge. Modifies the bpk-badge mixin.
@@ -201,11 +280,30 @@
201
280
  /// }
202
281
 
203
282
  @mixin bpk-badge--outline {
204
- background-color: transparent;
205
- color: tokens.$bpk-text-on-dark-day;
283
+ // The inset border intentionally shares --bpk-badge-outline-text-color with the text colour.
284
+ // This means badgeOutlineTextColor controls both the text and the visible border simultaneously.
285
+ // There is no separate badgeOutlineBorderColor attribute by design — if independent colours are
286
+ // ever needed, a dedicated CSS variable and theme attribute should be introduced at that point.
206
287
  box-shadow: inset 0 0 0 tokens.$bpk-border-size-sm
207
288
  tokens.$bpk-text-on-dark-day;
208
- fill: tokens.$bpk-text-on-dark-day;
289
+ box-shadow: inset 0 0 0 tokens.$bpk-border-size-sm
290
+ var(--bpk-badge-outline-text-color, tokens.$bpk-text-on-dark-day);
291
+
292
+ @include utils.bpk-themeable-property(
293
+ background-color,
294
+ --bpk-badge-outline-background-color,
295
+ transparent
296
+ );
297
+ @include utils.bpk-themeable-property(
298
+ color,
299
+ --bpk-badge-outline-text-color,
300
+ tokens.$bpk-text-on-dark-day
301
+ );
302
+ @include utils.bpk-themeable-property(
303
+ fill,
304
+ --bpk-badge-outline-icon-color,
305
+ tokens.$bpk-text-on-dark-day
306
+ );
209
307
  }
210
308
 
211
309
  /// Strong badge. Modifies the bpk-badge mixin.
@@ -219,9 +317,21 @@
219
317
  /// }
220
318
 
221
319
  @mixin bpk-badge--strong {
222
- background-color: tokens.$bpk-core-primary-day;
223
- color: tokens.$bpk-text-on-dark-day;
224
- fill: tokens.$bpk-text-on-dark-day;
320
+ @include utils.bpk-themeable-property(
321
+ background-color,
322
+ --bpk-badge-strong-background-color,
323
+ tokens.$bpk-core-primary-day
324
+ );
325
+ @include utils.bpk-themeable-property(
326
+ color,
327
+ --bpk-badge-strong-text-color,
328
+ tokens.$bpk-text-on-dark-day
329
+ );
330
+ @include utils.bpk-themeable-property(
331
+ fill,
332
+ --bpk-badge-strong-icon-color,
333
+ tokens.$bpk-text-on-dark-day
334
+ );
225
335
  }
226
336
 
227
337
  /// Brand badge. Modifies the bpk-badge mixin.
@@ -235,7 +345,19 @@
235
345
  /// }
236
346
 
237
347
  @mixin bpk-badge--brand {
238
- background-color: tokens.$bpk-core-accent-day;
239
- color: tokens.$bpk-text-primary-inverse-day;
240
- fill: tokens.$bpk-text-primary-inverse-day;
348
+ @include utils.bpk-themeable-property(
349
+ background-color,
350
+ --bpk-badge-brand-background-color,
351
+ tokens.$bpk-core-accent-day
352
+ );
353
+ @include utils.bpk-themeable-property(
354
+ color,
355
+ --bpk-badge-brand-text-color,
356
+ tokens.$bpk-text-primary-inverse-day
357
+ );
358
+ @include utils.bpk-themeable-property(
359
+ fill,
360
+ --bpk-badge-brand-icon-color,
361
+ tokens.$bpk-text-primary-inverse-day
362
+ );
241
363
  }