@octoguide/mui-ui-toolkit 0.4.0 → 0.5.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.
package/dist/index.js CHANGED
@@ -67,10 +67,15 @@ __export(index_exports, {
67
67
  H6: () => H6,
68
68
  InternalLinkItem: () => InternalLinkItem,
69
69
  Link: () => Link,
70
+ LogoLink: () => LogoLink,
70
71
  MobileDatePicker: () => MobileDatePicker,
71
72
  MobileDateTimePicker: () => MobileDateTimePicker,
72
73
  MobileTimePicker: () => MobileTimePicker,
73
74
  Overline: () => Overline,
75
+ PageSpinner: () => PageSpinner,
76
+ Pagination: () => Pagination,
77
+ Paragraph: () => Paragraph,
78
+ Spinner: () => Spinner,
74
79
  StandaloneAccordion: () => StandaloneAccordion,
75
80
  StaticDatePicker: () => StaticDatePicker,
76
81
  StaticDateTimePicker: () => StaticDateTimePicker,
@@ -1988,18 +1993,611 @@ var Link = import_react4.default.forwardRef(function Link2({
1988
1993
  });
1989
1994
  Link.displayName = "ToolkitLink";
1990
1995
 
1996
+ // src/components/LogoLink/LogoLink.tsx
1997
+ var import_react5 = __toESM(require("react"));
1998
+
1999
+ // src/components/LogoLink/LogoLink.styles.tsx
2000
+ var import_Box4 = __toESM(require("@mui/material/Box"));
2001
+ var import_styles10 = require("@mui/material/styles");
2002
+ var StyledLogoLink = (0, import_styles10.styled)(import_Box4.default, {
2003
+ shouldForwardProp: (prop) => prop !== "isSmall"
2004
+ })(({ theme, isSmall }) => ({
2005
+ display: "inline-flex",
2006
+ height: isSmall ? "45px" : "55px",
2007
+ flexShrink: 0,
2008
+ backgroundColor: theme.tokens.colors.primary,
2009
+ color: theme.palette.common.white,
2010
+ textDecoration: "none",
2011
+ "&:hover > span": {
2012
+ transform: "translateY(5px)"
2013
+ },
2014
+ "@media print": {
2015
+ backgroundColor: theme.palette.common.white,
2016
+ color: theme.tokens.colors.primaryDark
2017
+ }
2018
+ }));
2019
+ var StyledLogoSpan = (0, import_styles10.styled)("span")(({ theme }) => ({
2020
+ padding: "0 10px 0 15px",
2021
+ backgroundColor: theme.tokens.colors.primary,
2022
+ height: "100%",
2023
+ display: "flex",
2024
+ alignItems: "center",
2025
+ transitionProperty: "transform",
2026
+ transitionDuration: theme.tokens.transitions.durationBase,
2027
+ transitionTimingFunction: "ease-in-out",
2028
+ "@media (max-width: 640px)": {
2029
+ padding: "0 7px 0 10px"
2030
+ },
2031
+ "@media print": {
2032
+ backgroundColor: "transparent"
2033
+ }
2034
+ }));
2035
+
2036
+ // src/components/LogoLink/LogoLink.tsx
2037
+ var import_jsx_runtime15 = require("react/jsx-runtime");
2038
+ var LogoLink = import_react5.default.forwardRef(function LogoLink2({ children, href = "/", isSmall, title = "Home", component, ...restProps }, ref) {
2039
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2040
+ StyledLogoLink,
2041
+ {
2042
+ component: component ?? "a",
2043
+ href,
2044
+ isSmall,
2045
+ title,
2046
+ "data-component-id": "LogoLink",
2047
+ ...getCleanProps(restProps),
2048
+ ref,
2049
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StyledLogoSpan, { children })
2050
+ }
2051
+ );
2052
+ });
2053
+ LogoLink.displayName = "ToolkitLogoLink";
2054
+
2055
+ // src/components/PageSpinner/PageSpinner.tsx
2056
+ var import_react6 = __toESM(require("react"));
2057
+ var import_Portal = __toESM(require("@mui/material/Portal"));
2058
+ var import_CircularProgress2 = __toESM(require("@mui/material/CircularProgress"));
2059
+ var import_utils = require("@mui/material/utils");
2060
+
2061
+ // src/utils/backgroundScrollTether.ts
2062
+ var getScrollWidth = () => {
2063
+ if (typeof document === "undefined") {
2064
+ return null;
2065
+ }
2066
+ const documentWidth = document.documentElement.clientWidth;
2067
+ const windowWidth = window.innerWidth;
2068
+ return windowWidth - documentWidth;
2069
+ };
2070
+ var backgroundScrollTether = (on) => {
2071
+ if (typeof document === "undefined") {
2072
+ return null;
2073
+ }
2074
+ const id = "backgroundScrollTether";
2075
+ const get = () => document.querySelector(`#${id}`);
2076
+ if (on) {
2077
+ if (!get()) {
2078
+ const style = document.createElement("style");
2079
+ style.id = id;
2080
+ style.innerText = `body { padding-right: ${getScrollWidth()}px; overflow-y: hidden; }`;
2081
+ document.body.appendChild(style);
2082
+ }
2083
+ } else {
2084
+ const style = get();
2085
+ if (style && style.parentNode) style.parentNode.removeChild(style);
2086
+ }
2087
+ return null;
2088
+ };
2089
+
2090
+ // src/utils/tabTrap.ts
2091
+ var FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
2092
+ var suppressKeys = (on, self, root) => {
2093
+ if (!self || !root) return;
2094
+ const focusableElements = self.querySelectorAll(FOCUSABLE_SELECTOR);
2095
+ let startElement;
2096
+ let endElement;
2097
+ if (focusableElements && focusableElements.length >= 1) {
2098
+ startElement = focusableElements[0];
2099
+ endElement = focusableElements[focusableElements.length - 1];
2100
+ }
2101
+ const handleEvent = (event) => {
2102
+ const activeElement = root.activeElement || document.activeElement;
2103
+ if (event.shiftKey && event.key === "Tab") {
2104
+ if (activeElement === startElement && endElement) {
2105
+ event.preventDefault();
2106
+ endElement.focus();
2107
+ }
2108
+ } else if (event.key === "Tab") {
2109
+ if (activeElement === endElement && startElement) {
2110
+ event.preventDefault();
2111
+ startElement.focus();
2112
+ }
2113
+ }
2114
+ };
2115
+ if (on) {
2116
+ self.addEventListener("keydown", handleEvent, true);
2117
+ } else {
2118
+ self.removeEventListener("keydown", handleEvent, true);
2119
+ }
2120
+ };
2121
+ var injectTabTrap = (elem, attr, cache, disablerValue) => {
2122
+ const currentIndex = elem.getAttribute(attr);
2123
+ elem.setAttribute(attr, disablerValue);
2124
+ elem.setAttribute(cache, currentIndex ?? "");
2125
+ };
2126
+ var ejectTabTrap = (elem, attr, cache) => {
2127
+ const priorIndex = elem.getAttribute(cache) || "";
2128
+ if (priorIndex) {
2129
+ elem.setAttribute(attr, priorIndex);
2130
+ } else {
2131
+ elem.removeAttribute(attr);
2132
+ }
2133
+ elem.removeAttribute(cache);
2134
+ };
2135
+ var tabTrap = (on, self, root = typeof document !== "undefined" ? document.body : null) => {
2136
+ const applyTabTrap = (topElem) => {
2137
+ [...topElem.querySelectorAll("*"), topElem].forEach((elem) => {
2138
+ if (elem.hasAttribute("aria-live")) return;
2139
+ const isSvg = elem.tagName.toLowerCase() === "svg";
2140
+ const attr = isSvg ? "focusable" : "tabindex";
2141
+ const cache = `data-prior-${attr}`;
2142
+ const disablerValue = isSvg ? "false" : "-1";
2143
+ const elemWasTouched = elem.hasAttribute(cache);
2144
+ if (on) {
2145
+ if (!elemWasTouched) {
2146
+ injectTabTrap(elem, attr, cache, disablerValue);
2147
+ injectTabTrap(elem, "aria-hidden", "data-prior-hidden", "true");
2148
+ }
2149
+ } else {
2150
+ if (elemWasTouched) {
2151
+ ejectTabTrap(elem, attr, cache);
2152
+ ejectTabTrap(elem, "aria-hidden", "data-prior-hidden");
2153
+ }
2154
+ }
2155
+ });
2156
+ };
2157
+ [...root.children].forEach((topElem) => {
2158
+ if (topElem !== self) {
2159
+ applyTabTrap(topElem);
2160
+ }
2161
+ });
2162
+ if (root !== document.body) {
2163
+ [...document.body.children].forEach((topElem) => {
2164
+ const shadowHost = root.host;
2165
+ if (!(topElem.contains(root) || shadowHost && topElem.contains(shadowHost))) {
2166
+ applyTabTrap(topElem);
2167
+ }
2168
+ });
2169
+ }
2170
+ if (self) suppressKeys(on, self, root);
2171
+ };
2172
+
2173
+ // src/utils/a11yAnnouncer.ts
2174
+ var A11Y_REGION_ID = "a11y-region";
2175
+ var DEFAULT_TONE = "polite";
2176
+ var DEFAULT_ROLE = "status";
2177
+ var clearTimer;
2178
+ function createA11yRegion() {
2179
+ const region = document.createElement("div");
2180
+ region.setAttribute("id", A11Y_REGION_ID);
2181
+ region.setAttribute("role", DEFAULT_ROLE);
2182
+ region.setAttribute("aria-live", DEFAULT_TONE);
2183
+ region.setAttribute("aria-atomic", "true");
2184
+ Object.assign(region.style, {
2185
+ border: "0",
2186
+ clip: "rect(0 0 0 0)",
2187
+ height: "1px",
2188
+ margin: "-1px",
2189
+ overflow: "hidden",
2190
+ padding: "0",
2191
+ position: "absolute",
2192
+ width: "1px"
2193
+ });
2194
+ return region;
2195
+ }
2196
+ function getA11yRegion() {
2197
+ if (typeof document === "undefined") return null;
2198
+ const existing = document.getElementById(A11Y_REGION_ID);
2199
+ if (existing) return existing;
2200
+ const region = createA11yRegion();
2201
+ document.body.appendChild(region);
2202
+ return region;
2203
+ }
2204
+ function setA11yMessage(messageText, messageTone, messageRole, clearAfter = 5e3) {
2205
+ const region = getA11yRegion();
2206
+ if (!region) return;
2207
+ region.setAttribute("aria-live", messageTone ?? DEFAULT_TONE);
2208
+ region.setAttribute("role", messageRole ?? DEFAULT_ROLE);
2209
+ region.textContent = messageText || "";
2210
+ clearTimeout(clearTimer);
2211
+ clearTimer = setTimeout(() => {
2212
+ region.textContent = "";
2213
+ }, clearAfter);
2214
+ }
2215
+
2216
+ // src/components/PageSpinner/PageSpinner.styles.tsx
2217
+ var import_styles11 = require("@mui/material/styles");
2218
+ var import_styles12 = require("@mui/material/styles");
2219
+ var PAGE_SPINNER_Z_INDEX = 1400;
2220
+ var StyledPageSpinnerRoot = (0, import_styles11.styled)("div")(() => ({
2221
+ position: "relative"
2222
+ }));
2223
+ var StyledOverlay = (0, import_styles11.styled)("div", {
2224
+ shouldForwardProp: (prop) => prop !== "$darkBg"
2225
+ })(({ theme, $darkBg = false }) => ({
2226
+ position: "fixed",
2227
+ inset: 0,
2228
+ zIndex: PAGE_SPINNER_Z_INDEX,
2229
+ backgroundColor: $darkBg ? (0, import_styles12.alpha)(theme.tokens.colors.textPrimary, 0.9) : (0, import_styles12.alpha)(theme.palette.common.white, 0.9)
2230
+ }));
2231
+ var StyledSpinnerCentre = (0, import_styles11.styled)("div")(() => ({
2232
+ position: "fixed",
2233
+ top: "50%",
2234
+ left: "50%",
2235
+ transform: "translate(-50%, -50%)",
2236
+ zIndex: PAGE_SPINNER_Z_INDEX + 1,
2237
+ display: "flex",
2238
+ flexDirection: "column",
2239
+ alignItems: "center",
2240
+ gap: "16px"
2241
+ }));
2242
+ var StyledSpinnerMessage = (0, import_styles11.styled)("p", {
2243
+ shouldForwardProp: (prop) => prop !== "$darkBg"
2244
+ })(({ theme, $darkBg = false }) => ({
2245
+ margin: 0,
2246
+ fontFamily: theme.tokens.typography.fontFamilyBase,
2247
+ fontSize: theme.tokens.typography.fontSizeLg,
2248
+ fontWeight: theme.tokens.typography.fontWeightRegular,
2249
+ lineHeight: theme.tokens.typography.lineHeightBase,
2250
+ color: $darkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,
2251
+ textAlign: "center"
2252
+ }));
2253
+ var StyledScreenReaderOnly2 = (0, import_styles11.styled)("span")(() => ({
2254
+ position: "absolute",
2255
+ width: "1px",
2256
+ height: "1px",
2257
+ padding: 0,
2258
+ margin: "-1px",
2259
+ overflow: "hidden",
2260
+ clip: "rect(0,0,0,0)",
2261
+ whiteSpace: "nowrap",
2262
+ border: 0
2263
+ }));
2264
+
2265
+ // src/components/PageSpinner/PageSpinner.tsx
2266
+ var import_jsx_runtime16 = require("react/jsx-runtime");
2267
+ var ARIA_REANNOUNCE_INTERVAL = 3e4;
2268
+ var PageSpinner = import_react6.default.forwardRef(
2269
+ function PageSpinner2({
2270
+ message = "Processing, please wait",
2271
+ customMessageLayout,
2272
+ isOnDarkBg = false,
2273
+ srText,
2274
+ rootNode = typeof document !== "undefined" ? document.body : void 0,
2275
+ messageTone = "assertive",
2276
+ ...restProps
2277
+ }, ref) {
2278
+ const internalRef = (0, import_react6.useRef)(null);
2279
+ const mergedRef = (0, import_utils.useForkRef)(ref, internalRef);
2280
+ (0, import_react6.useEffect)(() => {
2281
+ const blockKeyDown = (e) => e.preventDefault();
2282
+ document.addEventListener("keydown", blockKeyDown);
2283
+ return () => document.removeEventListener("keydown", blockKeyDown);
2284
+ }, [rootNode]);
2285
+ (0, import_react6.useEffect)(() => {
2286
+ const ariaRole = messageTone === "polite" ? "status" : "alert";
2287
+ setA11yMessage(message, messageTone, ariaRole);
2288
+ const interval = setInterval(() => {
2289
+ setA11yMessage(message, messageTone, ariaRole);
2290
+ }, ARIA_REANNOUNCE_INTERVAL);
2291
+ tabTrap(true, internalRef.current, rootNode);
2292
+ backgroundScrollTether(true);
2293
+ return () => {
2294
+ setA11yMessage("");
2295
+ clearInterval(interval);
2296
+ tabTrap(false, internalRef.current, rootNode);
2297
+ backgroundScrollTether(false);
2298
+ };
2299
+ }, [message, rootNode, messageTone]);
2300
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_Portal.default, { container: rootNode, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2301
+ StyledPageSpinnerRoot,
2302
+ {
2303
+ "data-component-id": "PageSpinner",
2304
+ role: "dialog",
2305
+ ref: mergedRef,
2306
+ ...getCleanProps(restProps),
2307
+ children: [
2308
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledOverlay, { $darkBg: isOnDarkBg }),
2309
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(StyledSpinnerCentre, { children: [
2310
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2311
+ import_CircularProgress2.default,
2312
+ {
2313
+ size: 60,
2314
+ sx: isOnDarkBg ? { color: "common.white" } : void 0,
2315
+ "aria-hidden": "true"
2316
+ }
2317
+ ),
2318
+ customMessageLayout ?? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledSpinnerMessage, { $darkBg: isOnDarkBg, children: message }),
2319
+ srText && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledScreenReaderOnly2, { children: srText })
2320
+ ] })
2321
+ ]
2322
+ }
2323
+ ) });
2324
+ }
2325
+ );
2326
+ PageSpinner.displayName = "ToolkitPageSpinner";
2327
+
2328
+ // src/components/Pagination/Pagination.tsx
2329
+ var import_react7 = __toESM(require("react"));
2330
+ var import_Pagination = __toESM(require("@mui/material/Pagination"));
2331
+
2332
+ // src/components/Pagination/Pagination.styles.tsx
2333
+ var import_styles13 = require("@mui/material/styles");
2334
+ var import_PaginationItem = __toESM(require("@mui/material/PaginationItem"));
2335
+ function getColorValue(theme, color) {
2336
+ switch (color) {
2337
+ case "primary":
2338
+ return theme.tokens.colors.primary;
2339
+ case "secondary":
2340
+ return theme.tokens.colors.secondary;
2341
+ case "info":
2342
+ return theme.tokens.colors.info;
2343
+ case "success":
2344
+ return theme.tokens.colors.success;
2345
+ case "warning":
2346
+ return theme.tokens.colors.warning;
2347
+ case "error":
2348
+ return theme.tokens.colors.error;
2349
+ default:
2350
+ return theme.tokens.colors.textPrimary;
2351
+ }
2352
+ }
2353
+ var StyledPaginationItem = (0, import_styles13.styled)(import_PaginationItem.default, {
2354
+ shouldForwardProp: (prop) => prop !== "$variant" && prop !== "$color"
2355
+ })(({ theme, $variant, $color }) => {
2356
+ const colorValue = getColorValue(theme, $color);
2357
+ if ($variant === "text") {
2358
+ return {
2359
+ "&.Mui-selected": {
2360
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.08),
2361
+ color: colorValue,
2362
+ "&:hover": {
2363
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.16)
2364
+ }
2365
+ }
2366
+ };
2367
+ }
2368
+ if ($variant === "outlined") {
2369
+ return {
2370
+ border: `1px solid ${(0, import_styles13.alpha)(colorValue, 0.24)}`,
2371
+ "&.Mui-selected": {
2372
+ border: `1px solid ${(0, import_styles13.alpha)(colorValue, 0.8)}`,
2373
+ color: colorValue,
2374
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.08),
2375
+ "&:hover": {
2376
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.16)
2377
+ }
2378
+ }
2379
+ };
2380
+ }
2381
+ return {
2382
+ "&.Mui-selected": {
2383
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.16),
2384
+ color: colorValue,
2385
+ "&:hover": {
2386
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.32)
2387
+ }
2388
+ },
2389
+ "&:hover": {
2390
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.08)
2391
+ }
2392
+ };
2393
+ });
2394
+
2395
+ // src/components/Pagination/Pagination.tsx
2396
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2397
+ var Pagination = import_react7.default.forwardRef(
2398
+ function Pagination2({ variant = "text", shape = "circular", color = "default", ...restProps }, ref) {
2399
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2400
+ import_Pagination.default,
2401
+ {
2402
+ ref,
2403
+ "data-component-id": "Pagination",
2404
+ renderItem: (item) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2405
+ StyledPaginationItem,
2406
+ {
2407
+ $variant: variant,
2408
+ $color: color,
2409
+ ...item,
2410
+ shape
2411
+ }
2412
+ ),
2413
+ ...getCleanProps(restProps)
2414
+ }
2415
+ );
2416
+ }
2417
+ );
2418
+ Pagination.displayName = "ToolkitPagination";
2419
+
2420
+ // src/components/Paragraph/Paragraph.tsx
2421
+ var import_react8 = __toESM(require("react"));
2422
+
2423
+ // src/components/Paragraph/Paragraph.styles.tsx
2424
+ var import_styles14 = require("@mui/material/styles");
2425
+ var StyledParagraph = (0, import_styles14.styled)("p", {
2426
+ shouldForwardProp: (prop) => prop !== "$variant" && prop !== "$isOnDarkBg"
2427
+ })(({ theme, $variant = "regular", $isOnDarkBg = false }) => ({
2428
+ margin: 0,
2429
+ fontFamily: theme.tokens.typography.fontFamilyBase,
2430
+ outline: "transparent",
2431
+ fontSize: theme.tokens.typography.fontSizeLg,
2432
+ lineHeight: theme.tokens.typography.lineHeightBase,
2433
+ color: $isOnDarkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,
2434
+ ...$variant === "regular" && {
2435
+ fontWeight: theme.tokens.typography.fontWeightRegular
2436
+ },
2437
+ ...$variant === "semibold" && {
2438
+ fontWeight: theme.tokens.typography.fontWeightSemiBold
2439
+ },
2440
+ ...$variant === "bold" && {
2441
+ fontWeight: theme.tokens.typography.fontWeightBold
2442
+ },
2443
+ ...$variant === "primary" && {
2444
+ fontWeight: theme.tokens.typography.fontWeightSemiBold
2445
+ },
2446
+ ...$variant === "secondary" && {
2447
+ fontWeight: theme.tokens.typography.fontWeightBold
2448
+ },
2449
+ ...$variant === "overline" && {
2450
+ color: $isOnDarkBg ? theme.tokens.colors.overlayLight75 : theme.tokens.colors.textSecondary,
2451
+ fontWeight: theme.tokens.typography.fontWeightBold,
2452
+ letterSpacing: "0.125rem",
2453
+ textTransform: "uppercase"
2454
+ }
2455
+ }));
2456
+
2457
+ // src/components/Paragraph/Paragraph.tsx
2458
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2459
+ var Paragraph = import_react8.default.forwardRef(
2460
+ function Paragraph2({ children, variant = "regular", isOnDarkBg = false, ...restProps }, ref) {
2461
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2462
+ StyledParagraph,
2463
+ {
2464
+ $variant: variant,
2465
+ $isOnDarkBg: isOnDarkBg,
2466
+ "data-component-id": "Paragraph",
2467
+ ...getCleanProps(restProps),
2468
+ ref,
2469
+ children
2470
+ }
2471
+ );
2472
+ }
2473
+ );
2474
+ Paragraph.displayName = "ToolkitParagraph";
2475
+
2476
+ // src/components/Spinner/Spinner.tsx
2477
+ var import_react9 = __toESM(require("react"));
2478
+
2479
+ // src/components/Spinner/Spinner.styles.tsx
2480
+ var import_styles15 = require("@mui/material/styles");
2481
+ var spinnerSizing = {
2482
+ xs: 20,
2483
+ sm: 24,
2484
+ md: 40,
2485
+ lg: 56,
2486
+ xl: 72
2487
+ };
2488
+ var StyledSpinnerContainer = (0, import_styles15.styled)("div", {
2489
+ shouldForwardProp: (prop) => prop !== "$inline"
2490
+ })({}, ({ $inline }) => ({
2491
+ flex: "0 1 100%",
2492
+ display: "flex",
2493
+ flexDirection: $inline ? "row" : "column",
2494
+ alignItems: "center"
2495
+ }));
2496
+ var StyledSpinnerIconContainer = (0, import_styles15.styled)("div", {
2497
+ shouldForwardProp: (prop) => prop !== "$size" && prop !== "$darkBg"
2498
+ })(({ $size }) => {
2499
+ const size = spinnerSizing[$size];
2500
+ return {
2501
+ position: "relative",
2502
+ width: size,
2503
+ height: size
2504
+ };
2505
+ });
2506
+ var StyledSpinnerBackground = (0, import_styles15.styled)("div", {
2507
+ shouldForwardProp: (prop) => prop !== "$size" && prop !== "$darkBg"
2508
+ })(({ theme, $size, $darkBg }) => {
2509
+ const size = spinnerSizing[$size];
2510
+ const lineWidth = Math.round(size / 12);
2511
+ const borderColor = $darkBg ? (0, import_styles15.alpha)(theme.palette.common.white, 0.2) : (0, import_styles15.alpha)(theme.tokens.colors.textPrimary, 0.1);
2512
+ return {
2513
+ position: "absolute",
2514
+ width: size,
2515
+ height: size,
2516
+ borderRadius: "50%",
2517
+ border: `${lineWidth}px solid ${borderColor}`
2518
+ };
2519
+ });
2520
+ var StyledSpinner = (0, import_styles15.styled)("div", {
2521
+ shouldForwardProp: (prop) => prop !== "$size" && prop !== "$darkBg"
2522
+ })(({ theme, $size, $darkBg }) => {
2523
+ const size = spinnerSizing[$size];
2524
+ const lineWidth = Math.round(size / 12);
2525
+ const animationSpeed = `${1 + size / 100}s`;
2526
+ const color = $darkBg ? theme.palette.common.white : theme.tokens.colors.primary;
2527
+ return {
2528
+ "@keyframes toolkit-spin": {
2529
+ "0%": { transform: "rotate(0deg)" },
2530
+ "100%": { transform: "rotate(360deg)" }
2531
+ },
2532
+ position: "absolute",
2533
+ width: size,
2534
+ height: size,
2535
+ borderRadius: "50%",
2536
+ borderTop: "3px solid transparent",
2537
+ borderRight: "3px solid transparent",
2538
+ borderBottom: `${lineWidth}px solid ${color}`,
2539
+ borderLeft: `${lineWidth}px solid ${color}`,
2540
+ animation: `toolkit-spin ${animationSpeed} infinite linear`
2541
+ };
2542
+ });
2543
+ var StyledSpinnerMessage2 = (0, import_styles15.styled)("span", {
2544
+ shouldForwardProp: (prop) => prop !== "$darkBg" && prop !== "$inline"
2545
+ })(({ theme, $darkBg, $inline }) => ({
2546
+ fontFamily: theme.tokens.typography.fontFamilyBase,
2547
+ fontSize: theme.tokens.typography.fontSizeSm,
2548
+ color: $darkBg ? theme.palette.common.white : theme.tokens.colors.border,
2549
+ marginTop: $inline ? 0 : theme.spacing(1),
2550
+ marginLeft: $inline ? theme.spacing(1) : 0
2551
+ }));
2552
+ var StyledScreenReaderOnly3 = (0, import_styles15.styled)("span")({
2553
+ position: "absolute",
2554
+ width: 1,
2555
+ height: 1,
2556
+ padding: 0,
2557
+ margin: -1,
2558
+ overflow: "hidden",
2559
+ clip: "rect(0,0,0,0)",
2560
+ whiteSpace: "nowrap",
2561
+ border: 0
2562
+ });
2563
+
2564
+ // src/components/Spinner/Spinner.tsx
2565
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2566
+ var Spinner = import_react9.default.forwardRef(
2567
+ function Spinner2({ size = "sm", message, isOnDarkBg = false, srText, isInline = false, ...restProps }, ref) {
2568
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2569
+ StyledSpinnerContainer,
2570
+ {
2571
+ ref,
2572
+ $inline: isInline,
2573
+ "data-component-id": "Spinner",
2574
+ ...getCleanProps(restProps),
2575
+ children: [
2576
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(StyledSpinnerIconContainer, { $size: size, "aria-hidden": "true", children: [
2577
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledSpinnerBackground, { $size: size, $darkBg: isOnDarkBg, "aria-hidden": "true" }),
2578
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledSpinner, { $size: size, $darkBg: isOnDarkBg, "aria-hidden": "true" })
2579
+ ] }),
2580
+ message && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledSpinnerMessage2, { $darkBg: isOnDarkBg, $inline: isInline, children: message }),
2581
+ srText && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledScreenReaderOnly3, { children: srText })
2582
+ ]
2583
+ }
2584
+ );
2585
+ }
2586
+ );
2587
+ Spinner.displayName = "ToolkitSpinner";
2588
+
1991
2589
  // src/components/Toggle/Toggle.tsx
1992
2590
  var import_FormHelperText = __toESM(require("@mui/material/FormHelperText"));
1993
2591
 
1994
2592
  // src/components/Toggle/Toggle.styles.tsx
1995
- var import_styles10 = require("@mui/material/styles");
1996
- var StyledFieldset = (0, import_styles10.styled)("fieldset")(({ theme }) => ({
2593
+ var import_styles16 = require("@mui/material/styles");
2594
+ var StyledFieldset = (0, import_styles16.styled)("fieldset")(({ theme }) => ({
1997
2595
  border: "none",
1998
2596
  margin: 0,
1999
2597
  padding: 0,
2000
2598
  minWidth: 0
2001
2599
  }));
2002
- var StyledLegend = (0, import_styles10.styled)("legend")(({ theme }) => ({
2600
+ var StyledLegend = (0, import_styles16.styled)("legend")(({ theme }) => ({
2003
2601
  fontFamily: theme.tokens.typography.fontFamilyBase,
2004
2602
  fontSize: theme.tokens.typography.fontSizeLg,
2005
2603
  fontWeight: theme.tokens.typography.fontWeightRegular,
@@ -2007,7 +2605,7 @@ var StyledLegend = (0, import_styles10.styled)("legend")(({ theme }) => ({
2007
2605
  marginBottom: theme.spacing(1),
2008
2606
  padding: 0
2009
2607
  }));
2010
- var StyledToggleWrapper = (0, import_styles10.styled)("div")(({ theme }) => ({
2608
+ var StyledToggleWrapper = (0, import_styles16.styled)("div")(({ theme }) => ({
2011
2609
  display: "flex",
2012
2610
  flexDirection: "row",
2013
2611
  width: theme.spacing(15),
@@ -2016,7 +2614,7 @@ var StyledToggleWrapper = (0, import_styles10.styled)("div")(({ theme }) => ({
2016
2614
  border: `1px solid ${theme.tokens.colors.border}`,
2017
2615
  borderRadius: theme.tokens.borderRadius.md
2018
2616
  }));
2019
- var StyledSwitch = (0, import_styles10.styled)("label", {
2617
+ var StyledSwitch = (0, import_styles16.styled)("label", {
2020
2618
  shouldForwardProp: (prop) => prop !== "selected" && prop !== "controlType"
2021
2619
  })(({ theme, selected, controlType }) => ({
2022
2620
  position: "relative",
@@ -2106,7 +2704,7 @@ var StyledSwitch = (0, import_styles10.styled)("label", {
2106
2704
  }));
2107
2705
 
2108
2706
  // src/components/Toggle/Toggle.tsx
2109
- var import_jsx_runtime15 = require("react/jsx-runtime");
2707
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2110
2708
  function Toggle({
2111
2709
  name,
2112
2710
  checked = false,
@@ -2117,18 +2715,18 @@ function Toggle({
2117
2715
  onBlur,
2118
2716
  ...restProps
2119
2717
  }) {
2120
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(StyledFieldset, { "data-component-id": "toggle", ...getCleanProps(restProps), children: [
2121
- label && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StyledLegend, { children: label }),
2122
- description && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_FormHelperText.default, { children: description }),
2123
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(StyledToggleWrapper, { children: [
2124
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2718
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(StyledFieldset, { "data-component-id": "toggle", ...getCleanProps(restProps), children: [
2719
+ label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(StyledLegend, { children: label }),
2720
+ description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_FormHelperText.default, { children: description }),
2721
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(StyledToggleWrapper, { children: [
2722
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2125
2723
  StyledSwitch,
2126
2724
  {
2127
2725
  htmlFor: `${name}off`,
2128
2726
  selected: !checked,
2129
2727
  controlType: "off",
2130
2728
  children: [
2131
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2729
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2132
2730
  "input",
2133
2731
  {
2134
2732
  checked: !checked,
@@ -2144,14 +2742,14 @@ function Toggle({
2144
2742
  ]
2145
2743
  }
2146
2744
  ),
2147
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2745
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2148
2746
  StyledSwitch,
2149
2747
  {
2150
2748
  htmlFor: `${name}on`,
2151
2749
  selected: checked,
2152
2750
  controlType: "on",
2153
2751
  children: [
2154
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2752
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2155
2753
  "input",
2156
2754
  {
2157
2755
  checked,
@@ -2168,44 +2766,44 @@ function Toggle({
2168
2766
  }
2169
2767
  )
2170
2768
  ] }),
2171
- error && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_FormHelperText.default, { error: true, children: error })
2769
+ error && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_FormHelperText.default, { error: true, children: error })
2172
2770
  ] });
2173
2771
  }
2174
2772
  Toggle.displayName = "ToolkitToggle";
2175
2773
 
2176
2774
  // src/components/Table/Table.tsx
2177
2775
  var import_material10 = require("@mui/material");
2178
- var import_styles11 = require("@mui/material/styles");
2179
- var import_jsx_runtime16 = require("react/jsx-runtime");
2180
- var StyledTableContainer = (0, import_styles11.styled)(import_material10.TableContainer)(() => ({
2776
+ var import_styles17 = require("@mui/material/styles");
2777
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2778
+ var StyledTableContainer = (0, import_styles17.styled)(import_material10.TableContainer)(() => ({
2181
2779
  overflowX: "auto"
2182
2780
  }));
2183
- var StyledHeadCell = (0, import_styles11.styled)(import_material10.TableCell)(({ theme }) => ({
2781
+ var StyledHeadCell = (0, import_styles17.styled)(import_material10.TableCell)(({ theme }) => ({
2184
2782
  fontWeight: theme.tokens.components.table.headerFontWeight,
2185
2783
  backgroundColor: theme.tokens.components.table.headerBackground,
2186
2784
  borderBottomWidth: theme.tokens.components.table.borderWidth,
2187
2785
  borderBottomColor: theme.tokens.components.table.borderColor
2188
2786
  }));
2189
2787
  function Table(props) {
2190
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.Table, { ...props });
2788
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material10.Table, { ...props });
2191
2789
  }
2192
2790
  function TableHead(props) {
2193
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableHead, { ...props });
2791
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material10.TableHead, { ...props });
2194
2792
  }
2195
2793
  function TableBody(props) {
2196
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableBody, { ...props });
2794
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material10.TableBody, { ...props });
2197
2795
  }
2198
2796
  function TableRow(props) {
2199
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableRow, { ...props });
2797
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material10.TableRow, { ...props });
2200
2798
  }
2201
2799
  function TableCell(props) {
2202
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableCell, { ...props });
2800
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material10.TableCell, { ...props });
2203
2801
  }
2204
2802
  function TableHeadCell(props) {
2205
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledHeadCell, { component: "th", scope: "col", ...props });
2803
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledHeadCell, { component: "th", scope: "col", ...props });
2206
2804
  }
2207
2805
  function TableContainer(props) {
2208
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledTableContainer, { ...props });
2806
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledTableContainer, { ...props });
2209
2807
  }
2210
2808
  var TablePagination = import_material10.TablePagination;
2211
2809
  var TableSortLabel = import_material10.TableSortLabel;
@@ -2218,107 +2816,146 @@ TableHeadCell.displayName = "ToolkitTableHeadCell";
2218
2816
  TableContainer.displayName = "ToolkitTableContainer";
2219
2817
 
2220
2818
  // src/foundation/H1/H1.tsx
2819
+ var import_react10 = __toESM(require("react"));
2221
2820
  var import_material11 = require("@mui/material");
2222
- var import_jsx_runtime17 = require("react/jsx-runtime");
2223
- function H1({ color = "text.primary", children, ...props }) {
2224
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_material11.Typography, { variant: "h1", color, ...props, children });
2225
- }
2821
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2822
+ var H1 = import_react10.default.forwardRef(
2823
+ function H12({ color = "text.primary", children, ...props }, ref) {
2824
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_material11.Typography, { ref, variant: "h1", color, ...props, children });
2825
+ }
2826
+ );
2226
2827
  H1.displayName = "ToolkitH1";
2227
2828
 
2228
2829
  // src/foundation/H2/H2.tsx
2830
+ var import_react11 = __toESM(require("react"));
2229
2831
  var import_material12 = require("@mui/material");
2230
- var import_jsx_runtime18 = require("react/jsx-runtime");
2231
- function H2({ color = "text.primary", children, ...props }) {
2232
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_material12.Typography, { variant: "h2", color, ...props, children });
2233
- }
2832
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2833
+ var H2 = import_react11.default.forwardRef(
2834
+ function H22({ color = "text.primary", children, ...props }, ref) {
2835
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material12.Typography, { ref, variant: "h2", color, ...props, children });
2836
+ }
2837
+ );
2234
2838
  H2.displayName = "ToolkitH2";
2235
2839
 
2236
2840
  // src/foundation/H3/H3.tsx
2841
+ var import_react12 = __toESM(require("react"));
2237
2842
  var import_material13 = require("@mui/material");
2238
- var import_jsx_runtime19 = require("react/jsx-runtime");
2239
- function H3({ color = "text.primary", children, ...props }) {
2240
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_material13.Typography, { variant: "h3", color, ...props, children });
2241
- }
2843
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2844
+ var H3 = import_react12.default.forwardRef(
2845
+ function H32({ color = "text.primary", children, ...props }, ref) {
2846
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material13.Typography, { ref, variant: "h3", color, ...props, children });
2847
+ }
2848
+ );
2242
2849
  H3.displayName = "ToolkitH3";
2243
2850
 
2244
2851
  // src/foundation/H4/H4.tsx
2852
+ var import_react13 = __toESM(require("react"));
2245
2853
  var import_material14 = require("@mui/material");
2246
- var import_jsx_runtime20 = require("react/jsx-runtime");
2247
- function H4({ color = "text.primary", children, ...props }) {
2248
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_material14.Typography, { variant: "h4", color, ...props, children });
2249
- }
2854
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2855
+ var H4 = import_react13.default.forwardRef(
2856
+ function H42({ color = "text.primary", children, ...props }, ref) {
2857
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material14.Typography, { ref, variant: "h4", color, ...props, children });
2858
+ }
2859
+ );
2250
2860
  H4.displayName = "ToolkitH4";
2251
2861
 
2252
2862
  // src/foundation/H5/H5.tsx
2863
+ var import_react14 = __toESM(require("react"));
2253
2864
  var import_material15 = require("@mui/material");
2254
- var import_jsx_runtime21 = require("react/jsx-runtime");
2255
- function H5({ color = "text.primary", children, ...props }) {
2256
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material15.Typography, { variant: "h5", color, ...props, children });
2257
- }
2865
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2866
+ var H5 = import_react14.default.forwardRef(
2867
+ function H52({ color = "text.primary", children, ...props }, ref) {
2868
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_material15.Typography, { ref, variant: "h5", color, ...props, children });
2869
+ }
2870
+ );
2258
2871
  H5.displayName = "ToolkitH5";
2259
2872
 
2260
2873
  // src/foundation/H6/H6.tsx
2874
+ var import_react15 = __toESM(require("react"));
2261
2875
  var import_material16 = require("@mui/material");
2262
- var import_jsx_runtime22 = require("react/jsx-runtime");
2263
- function H6({ color = "text.primary", children, ...props }) {
2264
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_material16.Typography, { variant: "h6", color, ...props, children });
2265
- }
2876
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2877
+ var H6 = import_react15.default.forwardRef(
2878
+ function H62({ color = "text.primary", children, ...props }, ref) {
2879
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material16.Typography, { ref, variant: "h6", color, ...props, children });
2880
+ }
2881
+ );
2266
2882
  H6.displayName = "ToolkitH6";
2267
2883
 
2268
2884
  // src/foundation/Subtitle1/Subtitle1.tsx
2885
+ var import_react16 = __toESM(require("react"));
2269
2886
  var import_material17 = require("@mui/material");
2270
- var import_jsx_runtime23 = require("react/jsx-runtime");
2271
- function Subtitle1({ color = "text.primary", children, ...props }) {
2272
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material17.Typography, { variant: "subtitle1", color, ...props, children });
2273
- }
2887
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2888
+ var Subtitle1 = import_react16.default.forwardRef(
2889
+ function Subtitle12({ color = "text.primary", children, ...props }, ref) {
2890
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material17.Typography, { ref, variant: "subtitle1", color, ...props, children });
2891
+ }
2892
+ );
2274
2893
  Subtitle1.displayName = "ToolkitSubtitle1";
2275
2894
 
2276
2895
  // src/foundation/Subtitle2/Subtitle2.tsx
2896
+ var import_react17 = __toESM(require("react"));
2277
2897
  var import_material18 = require("@mui/material");
2278
- var import_jsx_runtime24 = require("react/jsx-runtime");
2279
- function Subtitle2({ color = "text.primary", children, ...props }) {
2280
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material18.Typography, { variant: "subtitle2", color, ...props, children });
2281
- }
2898
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2899
+ var Subtitle2 = import_react17.default.forwardRef(
2900
+ function Subtitle22({ color = "text.primary", children, ...props }, ref) {
2901
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_material18.Typography, { ref, variant: "subtitle2", color, ...props, children });
2902
+ }
2903
+ );
2282
2904
  Subtitle2.displayName = "ToolkitSubtitle2";
2283
2905
 
2284
2906
  // src/foundation/Body1/Body1.tsx
2907
+ var import_react18 = __toESM(require("react"));
2285
2908
  var import_material19 = require("@mui/material");
2286
- var import_jsx_runtime25 = require("react/jsx-runtime");
2287
- function Body1({ color = "text.primary", children, ...props }) {
2288
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material19.Typography, { variant: "body1", color, ...props, children });
2289
- }
2909
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2910
+ var Body1 = import_react18.default.forwardRef(
2911
+ function Body12({ color = "text.primary", children, ...props }, ref) {
2912
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_material19.Typography, { ref, variant: "body1", color, ...props, children });
2913
+ }
2914
+ );
2290
2915
  Body1.displayName = "ToolkitBody1";
2291
2916
 
2292
2917
  // src/foundation/Body2/Body2.tsx
2918
+ var import_react19 = __toESM(require("react"));
2293
2919
  var import_material20 = require("@mui/material");
2294
- var import_jsx_runtime26 = require("react/jsx-runtime");
2295
- function Body2({ color = "text.primary", children, ...props }) {
2296
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_material20.Typography, { variant: "body2", color, ...props, children });
2297
- }
2920
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2921
+ var Body2 = import_react19.default.forwardRef(
2922
+ function Body22({ color = "text.primary", children, ...props }, ref) {
2923
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_material20.Typography, { ref, variant: "body2", color, ...props, children });
2924
+ }
2925
+ );
2298
2926
  Body2.displayName = "ToolkitBody2";
2299
2927
 
2300
2928
  // src/foundation/Caption/Caption.tsx
2929
+ var import_react20 = __toESM(require("react"));
2301
2930
  var import_material21 = require("@mui/material");
2302
- var import_jsx_runtime27 = require("react/jsx-runtime");
2303
- function Caption({ color = "text.primary", children, ...props }) {
2304
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material21.Typography, { variant: "caption", color, ...props, children });
2305
- }
2931
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2932
+ var Caption = import_react20.default.forwardRef(
2933
+ function Caption2({ color = "text.primary", children, ...props }, ref) {
2934
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_material21.Typography, { ref, variant: "caption", color, ...props, children });
2935
+ }
2936
+ );
2306
2937
  Caption.displayName = "ToolkitCaption";
2307
2938
 
2308
2939
  // src/foundation/Overline/Overline.tsx
2940
+ var import_react21 = __toESM(require("react"));
2309
2941
  var import_material22 = require("@mui/material");
2310
- var import_jsx_runtime28 = require("react/jsx-runtime");
2311
- function Overline({ color = "text.primary", children, ...props }) {
2312
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material22.Typography, { variant: "overline", color, ...props, children });
2313
- }
2942
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2943
+ var Overline = import_react21.default.forwardRef(
2944
+ function Overline2({ color = "text.primary", children, ...props }, ref) {
2945
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_material22.Typography, { ref, variant: "overline", color, ...props, children });
2946
+ }
2947
+ );
2314
2948
  Overline.displayName = "ToolkitOverline";
2315
2949
 
2316
2950
  // src/foundation/TypographyButton/TypographyButton.tsx
2951
+ var import_react22 = __toESM(require("react"));
2317
2952
  var import_material23 = require("@mui/material");
2318
- var import_jsx_runtime29 = require("react/jsx-runtime");
2319
- function TypographyButton({ color = "text.primary", children, ...props }) {
2320
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_material23.Typography, { variant: "button", color, ...props, children });
2321
- }
2953
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2954
+ var TypographyButton = import_react22.default.forwardRef(
2955
+ function TypographyButton2({ color = "text.primary", children, ...props }, ref) {
2956
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_material23.Typography, { ref, variant: "button", color, ...props, children });
2957
+ }
2958
+ );
2322
2959
  TypographyButton.displayName = "ToolkitTypographyButton";
2323
2960
  // Annotate the CommonJS export names for ESM import in node:
2324
2961
  0 && (module.exports = {
@@ -2359,10 +2996,15 @@ TypographyButton.displayName = "ToolkitTypographyButton";
2359
2996
  H6,
2360
2997
  InternalLinkItem,
2361
2998
  Link,
2999
+ LogoLink,
2362
3000
  MobileDatePicker,
2363
3001
  MobileDateTimePicker,
2364
3002
  MobileTimePicker,
2365
3003
  Overline,
3004
+ PageSpinner,
3005
+ Pagination,
3006
+ Paragraph,
3007
+ Spinner,
2366
3008
  StandaloneAccordion,
2367
3009
  StaticDatePicker,
2368
3010
  StaticDateTimePicker,