@vygruppen/spor-react 12.24.11 → 12.24.13

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.
package/dist/index.mjs CHANGED
@@ -73,7 +73,7 @@ var warnAboutMismatchingIcon = ({
73
73
  };
74
74
  var Accordion = forwardRef(
75
75
  (props, ref) => {
76
- const { variant = "core", children, gap = 2, ...rest } = props;
76
+ const { variant = "core", children, gap = 2, css, ...rest } = props;
77
77
  const recipe = useSlotRecipe({ key: "accordion" });
78
78
  const styles = recipe({ variant });
79
79
  return /* @__PURE__ */ jsx(
@@ -81,7 +81,7 @@ var Accordion = forwardRef(
81
81
  {
82
82
  ...rest,
83
83
  ref,
84
- css: styles.root,
84
+ css: { ...styles.root, ...css },
85
85
  variant,
86
86
  children: /* @__PURE__ */ jsx(Stack, { gap, children })
87
87
  }
@@ -93,28 +93,42 @@ var AccordionItemTrigger = forwardRef(function AccordionItemTrigger2(props, ref)
93
93
  startElement,
94
94
  children,
95
95
  headingLevel,
96
+ css,
96
97
  showChevron = true,
97
98
  ...rest
98
99
  } = props;
99
100
  warnAboutMismatchingIcon({ icon: startElement });
100
101
  const recipe = useSlotRecipe({ key: "accordion" });
101
102
  const styles = recipe();
102
- return /* @__PURE__ */ jsx(Box, { as: headingLevel, children: /* @__PURE__ */ jsxs(Accordion$1.ItemTrigger, { ...rest, ref, css: styles.itemTrigger, children: [
103
- /* @__PURE__ */ jsxs(HStack, { flex: "1", gap: 1, textAlign: "start", width: "full", children: [
104
- startElement && startElement,
105
- children
106
- ] }),
107
- showChevron && /* @__PURE__ */ jsx(Accordion$1.ItemIndicator, { children: /* @__PURE__ */ jsx(DropdownDownFill24Icon, {}) })
108
- ] }) });
103
+ return /* @__PURE__ */ jsx(Box, { as: headingLevel, children: /* @__PURE__ */ jsxs(
104
+ Accordion$1.ItemTrigger,
105
+ {
106
+ ...rest,
107
+ ref,
108
+ css: { ...styles.itemTrigger, ...css },
109
+ children: [
110
+ /* @__PURE__ */ jsxs(HStack, { flex: "1", gap: 1, textAlign: "start", width: "full", children: [
111
+ startElement && startElement,
112
+ children
113
+ ] }),
114
+ showChevron && /* @__PURE__ */ jsx(Accordion$1.ItemIndicator, { children: /* @__PURE__ */ jsx(DropdownDownFill24Icon, {}) })
115
+ ]
116
+ }
117
+ ) });
109
118
  });
110
119
  var AccordionItemContent = forwardRef(function AccordionItemContent2(props, ref) {
111
- const { children, "aria-labelledby": ariaLabelledBy, ...otherProps } = props;
120
+ const {
121
+ children,
122
+ css,
123
+ "aria-labelledby": ariaLabelledBy,
124
+ ...otherProps
125
+ } = props;
112
126
  const recipe = useSlotRecipe({ key: "accordion" });
113
127
  const styles = recipe();
114
128
  return /* @__PURE__ */ jsx(
115
129
  Accordion$1.ItemContent,
116
130
  {
117
- css: styles.itemContent,
131
+ css: { ...styles.itemContent, ...css },
118
132
  "aria-labelledby": ariaLabelledBy,
119
133
  children: /* @__PURE__ */ jsx(Accordion$1.ItemBody, { ...otherProps, ref, children })
120
134
  }
@@ -324,6 +338,7 @@ var ProgressBar = forwardRef(
324
338
  isActive = true,
325
339
  showValueText = false,
326
340
  height = "0.5rem",
341
+ css,
327
342
  ...rest
328
343
  }, ref) => {
329
344
  const recipe = useSlotRecipe({ key: "progressbar" });
@@ -332,21 +347,30 @@ var ProgressBar = forwardRef(
332
347
  label,
333
348
  delay: labelRotationDelay
334
349
  });
335
- return /* @__PURE__ */ jsxs(Progress.Root, { css: styles.container, ref, value, ...rest, children: [
336
- /* @__PURE__ */ jsx(
337
- Progress.Track,
338
- {
339
- height,
340
- css: isActive ? styles.background : styles.disabledBackground,
341
- children: /* @__PURE__ */ jsx(Progress.Range, { css: styles.progress })
342
- }
343
- ),
344
- label && /* @__PURE__ */ jsx(Progress.Label, { css: styles.description, children: currentLoadingText }),
345
- showValueText && /* @__PURE__ */ jsxs(Progress.ValueText, { children: [
350
+ return /* @__PURE__ */ jsxs(
351
+ Progress.Root,
352
+ {
353
+ css: { ...styles.container, ...css },
354
+ ref,
346
355
  value,
347
- "%"
348
- ] })
349
- ] });
356
+ ...rest,
357
+ children: [
358
+ /* @__PURE__ */ jsx(
359
+ Progress.Track,
360
+ {
361
+ height,
362
+ css: isActive ? styles.background : styles.disabledBackground,
363
+ children: /* @__PURE__ */ jsx(Progress.Range, { css: styles.progress })
364
+ }
365
+ ),
366
+ label && /* @__PURE__ */ jsx(Progress.Label, { css: styles.description, children: currentLoadingText }),
367
+ showValueText && /* @__PURE__ */ jsxs(Progress.ValueText, { children: [
368
+ value,
369
+ "%"
370
+ ] })
371
+ ]
372
+ }
373
+ );
350
374
  }
351
375
  );
352
376
  ProgressBar.displayName = "ProgressBar";
@@ -1147,24 +1171,40 @@ var Alert = forwardRef((props, ref) => {
1147
1171
  if (!open)
1148
1172
  return null;
1149
1173
  return /* @__PURE__ */ jsxs(Alert$1.Root, { ref, ...props, children: [
1150
- /* @__PURE__ */ jsxs(Alert$1.Content, { flexDirection: title ? "column" : "row", children: [
1151
- /* @__PURE__ */ jsxs(HStack, { gap: "1", alignItems: "flex-start", children: [
1152
- showIndicator && /* @__PURE__ */ jsx(Alert$1.Indicator, { asChild: true, children: /* @__PURE__ */ jsx(AlertIcon, { variant: props.variant ?? "info", customIcon: icon }) }),
1153
- title && /* @__PURE__ */ jsx(Alert$1.Title, { paddingRight: closable ? 6 : 0, children: title })
1154
- ] }),
1155
- children && /* @__PURE__ */ jsx(
1156
- Alert$1.Description,
1157
- {
1158
- width: "100%",
1159
- paddingLeft: title ? 0.5 : 0,
1160
- paddingRight: closable ? 6 : 0,
1161
- children
1162
- }
1163
- )
1164
- ] }),
1174
+ /* @__PURE__ */ jsxs(
1175
+ Alert$1.Content,
1176
+ {
1177
+ flexDirection: title ? "column" : "row",
1178
+ "data-part": "content",
1179
+ children: [
1180
+ /* @__PURE__ */ jsxs(HStack, { gap: "1", alignItems: "flex-start", children: [
1181
+ showIndicator && /* @__PURE__ */ jsx(Alert$1.Indicator, { asChild: true, children: /* @__PURE__ */ jsx(AlertIcon, { variant: props.variant ?? "info", customIcon: icon }) }),
1182
+ title && /* @__PURE__ */ jsx(
1183
+ Alert$1.Title,
1184
+ {
1185
+ paddingRight: closable ? 6 : 0,
1186
+ "data-part": "title",
1187
+ children: title
1188
+ }
1189
+ )
1190
+ ] }),
1191
+ children && /* @__PURE__ */ jsx(
1192
+ Alert$1.Description,
1193
+ {
1194
+ width: "100%",
1195
+ paddingLeft: title ? 0.5 : 0,
1196
+ paddingRight: closable ? 6 : 0,
1197
+ "data-part": "description",
1198
+ children
1199
+ }
1200
+ )
1201
+ ]
1202
+ }
1203
+ ),
1165
1204
  closable && /* @__PURE__ */ jsx(
1166
1205
  CloseButton,
1167
1206
  {
1207
+ "data-part": "close-button",
1168
1208
  size: "xs",
1169
1209
  position: "absolute",
1170
1210
  top: "1.5",
@@ -1332,15 +1372,22 @@ var texts6 = createTexts({
1332
1372
  }
1333
1373
  });
1334
1374
  var Breadcrumb = forwardRef(
1335
- ({ children, ...props }, ref) => {
1375
+ ({ children, css, ...props }, ref) => {
1336
1376
  const validChildren = React20__default.Children.toArray(children).filter(
1337
1377
  (element) => React20__default.isValidElement(element)
1338
1378
  );
1339
- return /* @__PURE__ */ jsx(Breadcrumb$1.Root, { ref, ...props, children: /* @__PURE__ */ jsx(Breadcrumb$1.List, { children: validChildren.map((child, index) => {
1379
+ return /* @__PURE__ */ jsx(Breadcrumb$1.Root, { ref, ...props, css, children: /* @__PURE__ */ jsx(Breadcrumb$1.List, { "data-part": "list", children: validChildren.map((child, index) => {
1340
1380
  const isLast = index === validChildren.length - 1;
1341
1381
  return /* @__PURE__ */ jsxs(React20__default.Fragment, { children: [
1342
- /* @__PURE__ */ jsx(Breadcrumb$1.Item, { children: child }),
1343
- !isLast && /* @__PURE__ */ jsx(Breadcrumb$1.Separator, { "aria-hidden": "true", children: /* @__PURE__ */ jsx(DropdownRightFill18Icon, {}) })
1382
+ /* @__PURE__ */ jsx(Breadcrumb$1.Item, { "data-part": "item", children: child }),
1383
+ !isLast && /* @__PURE__ */ jsx(
1384
+ Breadcrumb$1.Separator,
1385
+ {
1386
+ "aria-hidden": "true",
1387
+ "data-part": "separator",
1388
+ children: /* @__PURE__ */ jsx(DropdownRightFill18Icon, {})
1389
+ }
1390
+ )
1344
1391
  ] }, index);
1345
1392
  }) }) });
1346
1393
  }
@@ -1602,6 +1649,7 @@ function CalendarCell({ date, currentMonth }) {
1602
1649
  children: /* @__PURE__ */ jsx(
1603
1650
  Box,
1604
1651
  {
1652
+ "data-part": "calendar-cell",
1605
1653
  width: "100%",
1606
1654
  height: "100%",
1607
1655
  display: "flex",
@@ -1662,7 +1710,7 @@ function CalendarGrid({ offset = {} }) {
1662
1710
  state
1663
1711
  );
1664
1712
  const weeksInMonth = getWeeksInMonth(startDate, locale);
1665
- return /* @__PURE__ */ jsxs("table", { ...gridProps, cellPadding: "0", children: [
1713
+ return /* @__PURE__ */ jsxs("table", { ...gridProps, cellPadding: "0", "data-part": "calendar-grid", children: [
1666
1714
  /* @__PURE__ */ jsx("thead", { ...headerProps, children: /* @__PURE__ */ jsx("tr", { children: weekDays[language].map((day, index) => /* @__PURE__ */ jsx("th", { children: /* @__PURE__ */ jsx(
1667
1715
  Text3,
1668
1716
  {
@@ -1679,6 +1727,7 @@ function CalendarGrid({ offset = {} }) {
1679
1727
  paddingTop: 0.5,
1680
1728
  textAlign: "center",
1681
1729
  fontWeight: "bold",
1730
+ "data-part": "calendar-table-heading",
1682
1731
  children: day
1683
1732
  },
1684
1733
  index
@@ -1713,63 +1762,72 @@ function CalendarHeader({ dualView }) {
1713
1762
  function handleNext() {
1714
1763
  state.focusNextPage();
1715
1764
  }
1716
- return /* @__PURE__ */ jsxs(Flex, { flex: 1, alignItems: "center", paddingBottom: 4, children: [
1717
- /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("h2", { children: calendarProps["aria-label"] }) }),
1718
- /* @__PURE__ */ jsx(
1719
- IconButton,
1720
- {
1721
- size: "md",
1722
- onClick: handlePrevious,
1723
- variant: "ghost",
1724
- marginLeft: 1,
1725
- disabled: prevButtonProps.isDisabled,
1726
- "aria-label": t(texts7.previousMonth),
1727
- icon: /* @__PURE__ */ jsx(icons_exports.DropdownLeftFill24Icon, {})
1728
- }
1729
- ),
1730
- /* @__PURE__ */ jsx(
1731
- Text3,
1732
- {
1733
- "aria-hidden": true,
1734
- flex: 1,
1735
- fontWeight: "bold",
1736
- fontSize: "sm",
1737
- textAlign: "center",
1738
- children: capitalizeFirstLetter(
1739
- monthDateFormatter.format(
1740
- state.visibleRange.start.toDate(state.timeZone)
1741
- )
1742
- )
1743
- }
1744
- ),
1745
- dualView && /* @__PURE__ */ jsx(
1746
- Text3,
1747
- {
1748
- "aria-hidden": true,
1749
- flex: 1,
1750
- fontWeight: "bold",
1751
- fontSize: "sm",
1752
- textAlign: "center",
1753
- children: capitalizeFirstLetter(
1754
- monthDateFormatter.format(
1755
- state.visibleRange.start.add({ months: 1 }).toDate(state.timeZone)
1756
- )
1765
+ return /* @__PURE__ */ jsxs(
1766
+ Flex,
1767
+ {
1768
+ flex: 1,
1769
+ alignItems: "center",
1770
+ paddingBottom: 4,
1771
+ "data-part": "calendar-header",
1772
+ children: [
1773
+ /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("h2", { children: calendarProps["aria-label"] }) }),
1774
+ /* @__PURE__ */ jsx(
1775
+ IconButton,
1776
+ {
1777
+ size: "md",
1778
+ onClick: handlePrevious,
1779
+ variant: "ghost",
1780
+ marginLeft: 1,
1781
+ disabled: prevButtonProps.isDisabled,
1782
+ "aria-label": t(texts7.previousMonth),
1783
+ icon: /* @__PURE__ */ jsx(icons_exports.DropdownLeftFill24Icon, {})
1784
+ }
1785
+ ),
1786
+ /* @__PURE__ */ jsx(
1787
+ Text3,
1788
+ {
1789
+ "aria-hidden": true,
1790
+ flex: 1,
1791
+ fontWeight: "bold",
1792
+ fontSize: "sm",
1793
+ textAlign: "center",
1794
+ children: capitalizeFirstLetter(
1795
+ monthDateFormatter.format(
1796
+ state.visibleRange.start.toDate(state.timeZone)
1797
+ )
1798
+ )
1799
+ }
1800
+ ),
1801
+ dualView && /* @__PURE__ */ jsx(
1802
+ Text3,
1803
+ {
1804
+ "aria-hidden": true,
1805
+ flex: 1,
1806
+ fontWeight: "bold",
1807
+ fontSize: "sm",
1808
+ textAlign: "center",
1809
+ children: capitalizeFirstLetter(
1810
+ monthDateFormatter.format(
1811
+ state.visibleRange.start.add({ months: 1 }).toDate(state.timeZone)
1812
+ )
1813
+ )
1814
+ }
1815
+ ),
1816
+ /* @__PURE__ */ jsx(
1817
+ IconButton,
1818
+ {
1819
+ size: "md",
1820
+ onClick: handleNext,
1821
+ marginRight: 1,
1822
+ variant: "ghost",
1823
+ disabled: nextButtonProps.isDisabled,
1824
+ "aria-label": t(texts7.nextMonth),
1825
+ icon: /* @__PURE__ */ jsx(icons_exports.DropdownRightFill24Icon, {})
1826
+ }
1757
1827
  )
1758
- }
1759
- ),
1760
- /* @__PURE__ */ jsx(
1761
- IconButton,
1762
- {
1763
- size: "md",
1764
- onClick: handleNext,
1765
- marginRight: 1,
1766
- variant: "ghost",
1767
- disabled: nextButtonProps.isDisabled,
1768
- "aria-label": t(texts7.nextMonth),
1769
- icon: /* @__PURE__ */ jsx(icons_exports.DropdownRightFill24Icon, {})
1770
- }
1771
- )
1772
- ] });
1828
+ ]
1829
+ }
1830
+ );
1773
1831
  }
1774
1832
  var texts7 = createTexts({
1775
1833
  previousMonth: {
@@ -1785,22 +1843,32 @@ var texts7 = createTexts({
1785
1843
  sv: "N\xE4sta m\xE5nad"
1786
1844
  }
1787
1845
  });
1788
- function Calendar({ dualView }) {
1846
+ function Calendar({ dualView, css }) {
1789
1847
  const { calendarProps, ref } = useCalendar();
1790
- return /* @__PURE__ */ jsxs(Box, { width: "fit-content", ref, ...calendarProps, children: [
1791
- /* @__PURE__ */ jsx(CalendarHeader, { dualView }),
1792
- /* @__PURE__ */ jsxs(Flex, { alignItems: "flex-start", children: [
1793
- /* @__PURE__ */ jsx(Box, { paddingRight: dualView ? 4 : 0, children: /* @__PURE__ */ jsx(CalendarGrid, {}) }),
1794
- dualView && /* @__PURE__ */ jsx(
1795
- Box,
1796
- {
1797
- paddingLeft: 4,
1798
- borderLeft: ["1px solid var(--spor-colors-outline-disabled)"],
1799
- children: /* @__PURE__ */ jsx(CalendarGrid, { offset: { months: 1 } })
1800
- }
1801
- )
1802
- ] })
1803
- ] });
1848
+ return /* @__PURE__ */ jsxs(
1849
+ Box,
1850
+ {
1851
+ width: "fit-content",
1852
+ ref,
1853
+ ...calendarProps,
1854
+ css,
1855
+ "data-part": "root",
1856
+ children: [
1857
+ /* @__PURE__ */ jsx(CalendarHeader, { dualView }),
1858
+ /* @__PURE__ */ jsxs(Flex, { alignItems: "flex-start", children: [
1859
+ /* @__PURE__ */ jsx(Box, { paddingRight: dualView ? 4 : 0, children: /* @__PURE__ */ jsx(CalendarGrid, {}) }),
1860
+ dualView && /* @__PURE__ */ jsx(
1861
+ Box,
1862
+ {
1863
+ paddingLeft: 4,
1864
+ borderLeft: ["1px solid var(--spor-colors-outline-disabled)"],
1865
+ children: /* @__PURE__ */ jsx(CalendarGrid, { offset: { months: 1 } })
1866
+ }
1867
+ )
1868
+ ] })
1869
+ ]
1870
+ }
1871
+ );
1804
1872
  }
1805
1873
  function ScrollCalendar(boxProps) {
1806
1874
  const { state, calendarProps, ref, startValue } = useCalendar();
@@ -2079,6 +2147,7 @@ function CalendarCell2({
2079
2147
  ref,
2080
2148
  css: styles.dateCell,
2081
2149
  hidden: isOutsideVisibleRange,
2150
+ "data-part": "calendar-cell",
2082
2151
  children: date.day
2083
2152
  }
2084
2153
  ) });
@@ -2111,8 +2180,8 @@ function CalendarGrid2({
2111
2180
  key: "datePicker"
2112
2181
  });
2113
2182
  const styles = recipe({ variant });
2114
- return /* @__PURE__ */ jsxs(Box, { as: "table", ...gridProps, css: styles.box, children: [
2115
- /* @__PURE__ */ jsx("thead", { ...headerProps, children: /* @__PURE__ */ jsx("tr", { children: weekDays2[language].map((day, index) => {
2183
+ return /* @__PURE__ */ jsxs(Box, { as: "table", ...gridProps, css: styles.box, "data-part": "calendar-grid", children: [
2184
+ /* @__PURE__ */ jsx("thead", { ...headerProps, children: /* @__PURE__ */ jsx("tr", { "data-part": "calendar-table-heading", children: weekDays2[language].map((day, index) => {
2116
2185
  return /* @__PURE__ */ jsx(
2117
2186
  Text3,
2118
2187
  {
@@ -2177,30 +2246,39 @@ function CalendarHeader2({
2177
2246
  );
2178
2247
  const areAllOtherYearsDisabled = isPreviousYearDisabled && isNextYearDisabled;
2179
2248
  const isYearPickerVisible = showYearNavigation && !areAllOtherYearsDisabled;
2180
- return /* @__PURE__ */ jsxs(Flex, { alignItems: "center", paddingBottom: "4", justifyContent: "space-between", children: [
2181
- /* @__PURE__ */ jsx(
2182
- CalendarNavigator,
2183
- {
2184
- title: title || (isYearPickerVisible ? monthTitle : monthAndYearTitle),
2185
- unit: "month",
2186
- onPrevious: () => state.setFocusedDate(state.focusedDate.subtract({ months: 1 })),
2187
- onNext: () => state.setFocusedDate(state.focusedDate.add({ months: 1 })),
2188
- isNextDisabled: !state.isPreviousVisibleRangeInvalid,
2189
- isPreviousDisabled: !state.isNextVisibleRangeInvalid
2190
- }
2191
- ),
2192
- isYearPickerVisible && /* @__PURE__ */ jsx(
2193
- CalendarNavigator,
2194
- {
2195
- title: jsDate.getFullYear().toString(),
2196
- unit: "year",
2197
- onPrevious: () => state.setFocusedDate(state.focusedDate.subtract({ years: 1 })),
2198
- onNext: () => state.setFocusedDate(state.focusedDate.add({ years: 1 })),
2199
- isPreviousDisabled: isPreviousYearDisabled,
2200
- isNextDisabled: isNextYearDisabled
2201
- }
2202
- )
2203
- ] });
2249
+ return /* @__PURE__ */ jsxs(
2250
+ Flex,
2251
+ {
2252
+ alignItems: "center",
2253
+ paddingBottom: "4",
2254
+ justifyContent: "space-between",
2255
+ "data-part": "calendar-header",
2256
+ children: [
2257
+ /* @__PURE__ */ jsx(
2258
+ CalendarNavigator,
2259
+ {
2260
+ title: title || (isYearPickerVisible ? monthTitle : monthAndYearTitle),
2261
+ unit: "month",
2262
+ onPrevious: () => state.setFocusedDate(state.focusedDate.subtract({ months: 1 })),
2263
+ onNext: () => state.setFocusedDate(state.focusedDate.add({ months: 1 })),
2264
+ isNextDisabled: !state.isPreviousVisibleRangeInvalid,
2265
+ isPreviousDisabled: !state.isNextVisibleRangeInvalid
2266
+ }
2267
+ ),
2268
+ isYearPickerVisible && /* @__PURE__ */ jsx(
2269
+ CalendarNavigator,
2270
+ {
2271
+ title: jsDate.getFullYear().toString(),
2272
+ unit: "year",
2273
+ onPrevious: () => state.setFocusedDate(state.focusedDate.subtract({ years: 1 })),
2274
+ onNext: () => state.setFocusedDate(state.focusedDate.add({ years: 1 })),
2275
+ isPreviousDisabled: isPreviousYearDisabled,
2276
+ isNextDisabled: isNextYearDisabled
2277
+ }
2278
+ )
2279
+ ]
2280
+ }
2281
+ );
2204
2282
  }
2205
2283
  var capitalize = (string_ = "") => string_.charAt(0).toUpperCase() + string_.slice(1);
2206
2284
  var CalendarNavigator = ({
@@ -2274,6 +2352,7 @@ var texts8 = createTexts({
2274
2352
  function Calendar2({
2275
2353
  showYearNavigation,
2276
2354
  variant,
2355
+ css,
2277
2356
  ...props
2278
2357
  }) {
2279
2358
  const { t } = useTranslation();
@@ -2290,10 +2369,18 @@ function Calendar2({
2290
2369
  const { calendarProps } = useCalendar$1(props, state);
2291
2370
  const calendarAriaLabel = calendarProps["aria-label"];
2292
2371
  const ariaLabel = t(texts9.calendar) + (calendarAriaLabel ? ` ${calendarAriaLabel}` : "");
2293
- return /* @__PURE__ */ jsxs(Box, { ...calendarProps, "aria-label": ariaLabel, css: styles.box, children: [
2294
- /* @__PURE__ */ jsx(CalendarHeader2, { state, showYearNavigation }),
2295
- /* @__PURE__ */ jsx(CalendarGrid2, { variant, state })
2296
- ] });
2372
+ return /* @__PURE__ */ jsxs(
2373
+ Box,
2374
+ {
2375
+ ...calendarProps,
2376
+ "aria-label": ariaLabel,
2377
+ css: { ...styles.box, ...css },
2378
+ children: [
2379
+ /* @__PURE__ */ jsx(CalendarHeader2, { state, showYearNavigation }),
2380
+ /* @__PURE__ */ jsx(CalendarGrid2, { variant, state })
2381
+ ]
2382
+ }
2383
+ );
2297
2384
  }
2298
2385
  var texts9 = createTexts({
2299
2386
  calendar: {
@@ -2507,6 +2594,7 @@ var DatePicker = forwardRef(
2507
2594
  invalid = false,
2508
2595
  helperText,
2509
2596
  positioning,
2597
+ css,
2510
2598
  ...props
2511
2599
  }, externalRef) => {
2512
2600
  const chakraFieldProps = useFieldContext();
@@ -2544,7 +2632,8 @@ var DatePicker = forwardRef(
2544
2632
  {
2545
2633
  ...calendarProps,
2546
2634
  variant,
2547
- showYearNavigation
2635
+ showYearNavigation,
2636
+ css
2548
2637
  }
2549
2638
  ) }) }) });
2550
2639
  return /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsx(
@@ -2554,6 +2643,7 @@ var DatePicker = forwardRef(
2554
2643
  display: "inline-flex",
2555
2644
  flexDirection: "column",
2556
2645
  width,
2646
+ css,
2557
2647
  children: /* @__PURE__ */ jsxs(Popover$1.Root, { ...dialogProps, positioning, children: [
2558
2648
  /* @__PURE__ */ jsx(
2559
2649
  Field3,
@@ -4613,6 +4703,7 @@ var Switch = forwardRef(
4613
4703
  invalid,
4614
4704
  errorText,
4615
4705
  helperText,
4706
+ css,
4616
4707
  ...rest
4617
4708
  } = props;
4618
4709
  const recipe = useSlotRecipe({ key: "switch" });
@@ -4626,6 +4717,7 @@ var Switch = forwardRef(
4626
4717
  helperText,
4627
4718
  required: props.required,
4628
4719
  id: rest.id,
4720
+ css,
4629
4721
  children: /* @__PURE__ */ jsxs(
4630
4722
  Switch$1.Root,
4631
4723
  {
@@ -5625,12 +5717,21 @@ var logExpirationWarning = () => {
5625
5717
  }
5626
5718
  };
5627
5719
  var Nudge = (props) => {
5628
- const { introducedDate, size = "md", ...rest } = props;
5720
+ const { introducedDate, size = "md", open, ...rest } = props;
5629
5721
  if (isNudgeExpired(introducedDate)) {
5630
5722
  logExpirationWarning();
5631
5723
  return null;
5632
5724
  }
5633
- return /* @__PURE__ */ jsx(Popover2, { defaultOpen: true, size, ...rest });
5725
+ const isControlled = open !== void 0;
5726
+ return /* @__PURE__ */ jsx(
5727
+ Popover2,
5728
+ {
5729
+ defaultOpen: isControlled ? void 0 : true,
5730
+ open,
5731
+ size,
5732
+ ...rest
5733
+ }
5734
+ );
5634
5735
  };
5635
5736
  var NudgeTrigger = forwardRef(({ ...props }, ref) => {
5636
5737
  return /* @__PURE__ */ jsx(PopoverTrigger, { ...props, ref });
@@ -5963,7 +6064,7 @@ var ProgressDot = ({ isActive }) => {
5963
6064
  }
5964
6065
  );
5965
6066
  };
5966
- var ProgressIndicator = forwardRef(({ numberOfSteps, activeStep }, ref) => {
6067
+ var ProgressIndicator = forwardRef(({ numberOfSteps, activeStep, css }, ref) => {
5967
6068
  const { t } = useTranslation();
5968
6069
  const recipe = useSlotRecipe({
5969
6070
  key: "progressIndicator"
@@ -5972,18 +6073,24 @@ var ProgressIndicator = forwardRef(({ numberOfSteps, activeStep }, ref) => {
5972
6073
  return /* @__PURE__ */ jsx(
5973
6074
  Box,
5974
6075
  {
5975
- css: styles.root,
6076
+ css: { ...styles.root, ...css },
5976
6077
  role: "progressbar",
5977
6078
  "aria-valuemin": 1,
5978
6079
  "aria-valuemax": numberOfSteps,
5979
6080
  "aria-valuenow": activeStep,
5980
6081
  "aria-valuetext": t(texts26.stepsOf(activeStep, numberOfSteps)),
5981
6082
  ref,
5982
- children: /* @__PURE__ */ jsx(Box, { css: styles.container, children: Array.from({ length: numberOfSteps }, (_, index) => /* @__PURE__ */ jsx(
5983
- ProgressDot,
6083
+ children: /* @__PURE__ */ jsx(Box, { css: { ...styles.container, ...css }, children: Array.from({ length: numberOfSteps }, (_, index) => /* @__PURE__ */ jsx(
6084
+ Box,
5984
6085
  {
5985
- "aria-valuenow": index + 1,
5986
- isActive: activeStep === index + 1
6086
+ "data-part": activeStep === index + 1 ? "current-step" : "step",
6087
+ children: /* @__PURE__ */ jsx(
6088
+ ProgressDot,
6089
+ {
6090
+ "aria-valuenow": index + 1,
6091
+ isActive: activeStep === index + 1
6092
+ }
6093
+ )
5987
6094
  },
5988
6095
  index
5989
6096
  )) })
@@ -6142,7 +6249,8 @@ var Stepper = forwardRef(
6142
6249
  heading,
6143
6250
  headingLevel,
6144
6251
  variant,
6145
- disabled
6252
+ disabled,
6253
+ css
6146
6254
  } = props;
6147
6255
  const recipe = useSlotRecipe({ key: "stepper" });
6148
6256
  const style = recipe({ variant });
@@ -6150,14 +6258,14 @@ var Stepper = forwardRef(
6150
6258
  const activeStep = Number(activeStepAsStringOrNumber);
6151
6259
  const { t } = useTranslation();
6152
6260
  const hideBackButtonOnFirstStep = activeStep === 1 && !onBackButtonClick;
6153
- return /* @__PURE__ */ jsx(Box, { css: style.root, ref, children: /* @__PURE__ */ jsx(
6261
+ return /* @__PURE__ */ jsx(Box, { css: { ...style.root, ...css }, ref, children: /* @__PURE__ */ jsx(
6154
6262
  StepperProvider,
6155
6263
  {
6156
6264
  onClick,
6157
6265
  activeStep,
6158
6266
  variant,
6159
6267
  numberOfSteps,
6160
- children: /* @__PURE__ */ jsxs(Box, { css: style.container, children: [
6268
+ children: /* @__PURE__ */ jsxs(Box, { css: style.container, "data-part": "root", children: [
6161
6269
  /* @__PURE__ */ jsx(Box, { css: style.innerContainer, children: /* @__PURE__ */ jsxs(
6162
6270
  Flex,
6163
6271
  {
@@ -6183,8 +6291,17 @@ var Stepper = forwardRef(
6183
6291
  }
6184
6292
  }
6185
6293
  ),
6186
- heading && /* @__PURE__ */ jsx(Text3, { variant: "sm", as: headingLevel, css: style.title, children: heading }),
6187
- /* @__PURE__ */ jsx(Box, { css: style.stepCounter, children: t(texts27.stepsOf(activeStep, numberOfSteps)) })
6294
+ heading && /* @__PURE__ */ jsx(
6295
+ Text3,
6296
+ {
6297
+ variant: "sm",
6298
+ as: headingLevel,
6299
+ css: style.title,
6300
+ "data-part": "title",
6301
+ children: heading
6302
+ }
6303
+ ),
6304
+ /* @__PURE__ */ jsx(Box, { css: style.stepCounter, "data-part": "step-counter", children: t(texts27.stepsOf(activeStep, numberOfSteps)) })
6188
6305
  ]
6189
6306
  }
6190
6307
  ) }),
@@ -6234,7 +6351,7 @@ var StepperStep = ({
6234
6351
  _dark: "whiteAlpha.200"
6235
6352
  };
6236
6353
  const disabled = state !== "active" && disabledOverride || state === "disabled";
6237
- return /* @__PURE__ */ jsxs(Box, { css: style.stepContainer, children: [
6354
+ return /* @__PURE__ */ jsxs(Box, { css: style.stepContainer, "data-part": "step-container", children: [
6238
6355
  stepNumber > 1 && /* @__PURE__ */ jsx(
6239
6356
  DropdownRightFill18Icon,
6240
6357
  {
@@ -6264,6 +6381,7 @@ var StepperStep = ({
6264
6381
  "aria-current": state === "active" ? "step" : void 0,
6265
6382
  css: state === "active" ? style.stepButton._currentStep : style.stepButton,
6266
6383
  fontWeight: state === "active" ? "bold" : void 0,
6384
+ "data-part": "step-button",
6267
6385
  children
6268
6386
  }
6269
6387
  )
@@ -8456,10 +8574,7 @@ var datePickerSlotRecipe = defineSlotRecipe({
8456
8574
  },
8457
8575
  floating: {
8458
8576
  wrapper: {
8459
- backgroundColor: {
8460
- _light: "bg",
8461
- _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`
8462
- },
8577
+ bg: "floating.surface",
8463
8578
  outline: "1px solid",
8464
8579
  outlineColor: "floating.outline",
8465
8580
  boxShadow: "sm",