@octoguide/mui-ui-toolkit 0.4.0 → 0.6.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,19 @@ __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
+ Password: () => Password,
79
+ PasswordCriteria: () => PasswordCriteria,
80
+ PasswordRule: () => PasswordRule,
81
+ PasswordRules: () => PasswordRules,
82
+ Spinner: () => Spinner,
74
83
  StandaloneAccordion: () => StandaloneAccordion,
75
84
  StaticDatePicker: () => StaticDatePicker,
76
85
  StaticDateTimePicker: () => StaticDateTimePicker,
@@ -97,6 +106,7 @@ __export(index_exports, {
97
106
  Variant: () => Variant,
98
107
  createMuiTheme: () => createMuiTheme,
99
108
  getThemeTokens: () => getThemeTokens,
109
+ passwordValidator: () => passwordValidator,
100
110
  resolveThemeName: () => resolveThemeName,
101
111
  themeRegistry: () => themeRegistry
102
112
  });
@@ -1988,18 +1998,792 @@ var Link = import_react4.default.forwardRef(function Link2({
1988
1998
  });
1989
1999
  Link.displayName = "ToolkitLink";
1990
2000
 
2001
+ // src/components/LogoLink/LogoLink.tsx
2002
+ var import_react5 = __toESM(require("react"));
2003
+
2004
+ // src/components/LogoLink/LogoLink.styles.tsx
2005
+ var import_Box4 = __toESM(require("@mui/material/Box"));
2006
+ var import_styles10 = require("@mui/material/styles");
2007
+ var StyledLogoLink = (0, import_styles10.styled)(import_Box4.default, {
2008
+ shouldForwardProp: (prop) => prop !== "isSmall"
2009
+ })(({ theme, isSmall }) => ({
2010
+ display: "inline-flex",
2011
+ height: isSmall ? "45px" : "55px",
2012
+ flexShrink: 0,
2013
+ backgroundColor: theme.tokens.colors.primary,
2014
+ color: theme.palette.common.white,
2015
+ textDecoration: "none",
2016
+ "&:hover > span": {
2017
+ transform: "translateY(5px)"
2018
+ },
2019
+ "@media print": {
2020
+ backgroundColor: theme.palette.common.white,
2021
+ color: theme.tokens.colors.primaryDark
2022
+ }
2023
+ }));
2024
+ var StyledLogoSpan = (0, import_styles10.styled)("span")(({ theme }) => ({
2025
+ padding: "0 10px 0 15px",
2026
+ backgroundColor: theme.tokens.colors.primary,
2027
+ height: "100%",
2028
+ display: "flex",
2029
+ alignItems: "center",
2030
+ transitionProperty: "transform",
2031
+ transitionDuration: theme.tokens.transitions.durationBase,
2032
+ transitionTimingFunction: "ease-in-out",
2033
+ "@media (max-width: 640px)": {
2034
+ padding: "0 7px 0 10px"
2035
+ },
2036
+ "@media print": {
2037
+ backgroundColor: "transparent"
2038
+ }
2039
+ }));
2040
+
2041
+ // src/components/LogoLink/LogoLink.tsx
2042
+ var import_jsx_runtime15 = require("react/jsx-runtime");
2043
+ var LogoLink = import_react5.default.forwardRef(function LogoLink2({ children, href = "/", isSmall, title = "Home", component, ...restProps }, ref) {
2044
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2045
+ StyledLogoLink,
2046
+ {
2047
+ component: component ?? "a",
2048
+ href,
2049
+ isSmall,
2050
+ title,
2051
+ "data-component-id": "LogoLink",
2052
+ ...getCleanProps(restProps),
2053
+ ref,
2054
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StyledLogoSpan, { children })
2055
+ }
2056
+ );
2057
+ });
2058
+ LogoLink.displayName = "ToolkitLogoLink";
2059
+
2060
+ // src/components/PageSpinner/PageSpinner.tsx
2061
+ var import_react6 = __toESM(require("react"));
2062
+ var import_Portal = __toESM(require("@mui/material/Portal"));
2063
+ var import_CircularProgress2 = __toESM(require("@mui/material/CircularProgress"));
2064
+ var import_utils = require("@mui/material/utils");
2065
+
2066
+ // src/utils/backgroundScrollTether.ts
2067
+ var getScrollWidth = () => {
2068
+ if (typeof document === "undefined") {
2069
+ return null;
2070
+ }
2071
+ const documentWidth = document.documentElement.clientWidth;
2072
+ const windowWidth = window.innerWidth;
2073
+ return windowWidth - documentWidth;
2074
+ };
2075
+ var backgroundScrollTether = (on) => {
2076
+ if (typeof document === "undefined") {
2077
+ return null;
2078
+ }
2079
+ const id = "backgroundScrollTether";
2080
+ const get = () => document.querySelector(`#${id}`);
2081
+ if (on) {
2082
+ if (!get()) {
2083
+ const style = document.createElement("style");
2084
+ style.id = id;
2085
+ style.innerText = `body { padding-right: ${getScrollWidth()}px; overflow-y: hidden; }`;
2086
+ document.body.appendChild(style);
2087
+ }
2088
+ } else {
2089
+ const style = get();
2090
+ if (style && style.parentNode) style.parentNode.removeChild(style);
2091
+ }
2092
+ return null;
2093
+ };
2094
+
2095
+ // src/utils/tabTrap.ts
2096
+ var FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
2097
+ var suppressKeys = (on, self, root) => {
2098
+ if (!self || !root) return;
2099
+ const focusableElements = self.querySelectorAll(FOCUSABLE_SELECTOR);
2100
+ let startElement;
2101
+ let endElement;
2102
+ if (focusableElements && focusableElements.length >= 1) {
2103
+ startElement = focusableElements[0];
2104
+ endElement = focusableElements[focusableElements.length - 1];
2105
+ }
2106
+ const handleEvent = (event) => {
2107
+ const activeElement = root.activeElement || document.activeElement;
2108
+ if (event.shiftKey && event.key === "Tab") {
2109
+ if (activeElement === startElement && endElement) {
2110
+ event.preventDefault();
2111
+ endElement.focus();
2112
+ }
2113
+ } else if (event.key === "Tab") {
2114
+ if (activeElement === endElement && startElement) {
2115
+ event.preventDefault();
2116
+ startElement.focus();
2117
+ }
2118
+ }
2119
+ };
2120
+ if (on) {
2121
+ self.addEventListener("keydown", handleEvent, true);
2122
+ } else {
2123
+ self.removeEventListener("keydown", handleEvent, true);
2124
+ }
2125
+ };
2126
+ var injectTabTrap = (elem, attr, cache, disablerValue) => {
2127
+ const currentIndex = elem.getAttribute(attr);
2128
+ elem.setAttribute(attr, disablerValue);
2129
+ elem.setAttribute(cache, currentIndex ?? "");
2130
+ };
2131
+ var ejectTabTrap = (elem, attr, cache) => {
2132
+ const priorIndex = elem.getAttribute(cache) || "";
2133
+ if (priorIndex) {
2134
+ elem.setAttribute(attr, priorIndex);
2135
+ } else {
2136
+ elem.removeAttribute(attr);
2137
+ }
2138
+ elem.removeAttribute(cache);
2139
+ };
2140
+ var tabTrap = (on, self, root = typeof document !== "undefined" ? document.body : null) => {
2141
+ const applyTabTrap = (topElem) => {
2142
+ [...topElem.querySelectorAll("*"), topElem].forEach((elem) => {
2143
+ if (elem.hasAttribute("aria-live")) return;
2144
+ const isSvg = elem.tagName.toLowerCase() === "svg";
2145
+ const attr = isSvg ? "focusable" : "tabindex";
2146
+ const cache = `data-prior-${attr}`;
2147
+ const disablerValue = isSvg ? "false" : "-1";
2148
+ const elemWasTouched = elem.hasAttribute(cache);
2149
+ if (on) {
2150
+ if (!elemWasTouched) {
2151
+ injectTabTrap(elem, attr, cache, disablerValue);
2152
+ injectTabTrap(elem, "aria-hidden", "data-prior-hidden", "true");
2153
+ }
2154
+ } else {
2155
+ if (elemWasTouched) {
2156
+ ejectTabTrap(elem, attr, cache);
2157
+ ejectTabTrap(elem, "aria-hidden", "data-prior-hidden");
2158
+ }
2159
+ }
2160
+ });
2161
+ };
2162
+ [...root.children].forEach((topElem) => {
2163
+ if (topElem !== self) {
2164
+ applyTabTrap(topElem);
2165
+ }
2166
+ });
2167
+ if (root !== document.body) {
2168
+ [...document.body.children].forEach((topElem) => {
2169
+ const shadowHost = root.host;
2170
+ if (!(topElem.contains(root) || shadowHost && topElem.contains(shadowHost))) {
2171
+ applyTabTrap(topElem);
2172
+ }
2173
+ });
2174
+ }
2175
+ if (self) suppressKeys(on, self, root);
2176
+ };
2177
+
2178
+ // src/utils/a11yAnnouncer.ts
2179
+ var A11Y_REGION_ID = "a11y-region";
2180
+ var DEFAULT_TONE = "polite";
2181
+ var DEFAULT_ROLE = "status";
2182
+ var clearTimer;
2183
+ function createA11yRegion() {
2184
+ const region = document.createElement("div");
2185
+ region.setAttribute("id", A11Y_REGION_ID);
2186
+ region.setAttribute("role", DEFAULT_ROLE);
2187
+ region.setAttribute("aria-live", DEFAULT_TONE);
2188
+ region.setAttribute("aria-atomic", "true");
2189
+ Object.assign(region.style, {
2190
+ border: "0",
2191
+ clip: "rect(0 0 0 0)",
2192
+ height: "1px",
2193
+ margin: "-1px",
2194
+ overflow: "hidden",
2195
+ padding: "0",
2196
+ position: "absolute",
2197
+ width: "1px"
2198
+ });
2199
+ return region;
2200
+ }
2201
+ function getA11yRegion() {
2202
+ if (typeof document === "undefined") return null;
2203
+ const existing = document.getElementById(A11Y_REGION_ID);
2204
+ if (existing) return existing;
2205
+ const region = createA11yRegion();
2206
+ document.body.appendChild(region);
2207
+ return region;
2208
+ }
2209
+ function setA11yMessage(messageText, messageTone, messageRole, clearAfter = 5e3) {
2210
+ const region = getA11yRegion();
2211
+ if (!region) return;
2212
+ region.setAttribute("aria-live", messageTone ?? DEFAULT_TONE);
2213
+ region.setAttribute("role", messageRole ?? DEFAULT_ROLE);
2214
+ region.textContent = messageText || "";
2215
+ clearTimeout(clearTimer);
2216
+ clearTimer = setTimeout(() => {
2217
+ region.textContent = "";
2218
+ }, clearAfter);
2219
+ }
2220
+
2221
+ // src/components/PageSpinner/PageSpinner.styles.tsx
2222
+ var import_styles11 = require("@mui/material/styles");
2223
+ var import_styles12 = require("@mui/material/styles");
2224
+ var PAGE_SPINNER_Z_INDEX = 1400;
2225
+ var StyledPageSpinnerRoot = (0, import_styles11.styled)("div")(() => ({
2226
+ position: "relative"
2227
+ }));
2228
+ var StyledOverlay = (0, import_styles11.styled)("div", {
2229
+ shouldForwardProp: (prop) => prop !== "$darkBg"
2230
+ })(({ theme, $darkBg = false }) => ({
2231
+ position: "fixed",
2232
+ inset: 0,
2233
+ zIndex: PAGE_SPINNER_Z_INDEX,
2234
+ backgroundColor: $darkBg ? (0, import_styles12.alpha)(theme.tokens.colors.textPrimary, 0.9) : (0, import_styles12.alpha)(theme.palette.common.white, 0.9)
2235
+ }));
2236
+ var StyledSpinnerCentre = (0, import_styles11.styled)("div")(() => ({
2237
+ position: "fixed",
2238
+ top: "50%",
2239
+ left: "50%",
2240
+ transform: "translate(-50%, -50%)",
2241
+ zIndex: PAGE_SPINNER_Z_INDEX + 1,
2242
+ display: "flex",
2243
+ flexDirection: "column",
2244
+ alignItems: "center",
2245
+ gap: "16px"
2246
+ }));
2247
+ var StyledSpinnerMessage = (0, import_styles11.styled)("p", {
2248
+ shouldForwardProp: (prop) => prop !== "$darkBg"
2249
+ })(({ theme, $darkBg = false }) => ({
2250
+ margin: 0,
2251
+ fontFamily: theme.tokens.typography.fontFamilyBase,
2252
+ fontSize: theme.tokens.typography.fontSizeLg,
2253
+ fontWeight: theme.tokens.typography.fontWeightRegular,
2254
+ lineHeight: theme.tokens.typography.lineHeightBase,
2255
+ color: $darkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,
2256
+ textAlign: "center"
2257
+ }));
2258
+ var StyledScreenReaderOnly2 = (0, import_styles11.styled)("span")(() => ({
2259
+ position: "absolute",
2260
+ width: "1px",
2261
+ height: "1px",
2262
+ padding: 0,
2263
+ margin: "-1px",
2264
+ overflow: "hidden",
2265
+ clip: "rect(0,0,0,0)",
2266
+ whiteSpace: "nowrap",
2267
+ border: 0
2268
+ }));
2269
+
2270
+ // src/components/PageSpinner/PageSpinner.tsx
2271
+ var import_jsx_runtime16 = require("react/jsx-runtime");
2272
+ var ARIA_REANNOUNCE_INTERVAL = 3e4;
2273
+ var PageSpinner = import_react6.default.forwardRef(
2274
+ function PageSpinner2({
2275
+ message = "Processing, please wait",
2276
+ customMessageLayout,
2277
+ isOnDarkBg = false,
2278
+ srText,
2279
+ rootNode = typeof document !== "undefined" ? document.body : void 0,
2280
+ messageTone = "assertive",
2281
+ ...restProps
2282
+ }, ref) {
2283
+ const internalRef = (0, import_react6.useRef)(null);
2284
+ const mergedRef = (0, import_utils.useForkRef)(ref, internalRef);
2285
+ (0, import_react6.useEffect)(() => {
2286
+ const blockKeyDown = (e) => e.preventDefault();
2287
+ document.addEventListener("keydown", blockKeyDown);
2288
+ return () => document.removeEventListener("keydown", blockKeyDown);
2289
+ }, [rootNode]);
2290
+ (0, import_react6.useEffect)(() => {
2291
+ const ariaRole = messageTone === "polite" ? "status" : "alert";
2292
+ setA11yMessage(message, messageTone, ariaRole);
2293
+ const interval = setInterval(() => {
2294
+ setA11yMessage(message, messageTone, ariaRole);
2295
+ }, ARIA_REANNOUNCE_INTERVAL);
2296
+ tabTrap(true, internalRef.current, rootNode);
2297
+ backgroundScrollTether(true);
2298
+ return () => {
2299
+ setA11yMessage("");
2300
+ clearInterval(interval);
2301
+ tabTrap(false, internalRef.current, rootNode);
2302
+ backgroundScrollTether(false);
2303
+ };
2304
+ }, [message, rootNode, messageTone]);
2305
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_Portal.default, { container: rootNode, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2306
+ StyledPageSpinnerRoot,
2307
+ {
2308
+ "data-component-id": "PageSpinner",
2309
+ role: "dialog",
2310
+ ref: mergedRef,
2311
+ ...getCleanProps(restProps),
2312
+ children: [
2313
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledOverlay, { $darkBg: isOnDarkBg }),
2314
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(StyledSpinnerCentre, { children: [
2315
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2316
+ import_CircularProgress2.default,
2317
+ {
2318
+ size: 60,
2319
+ sx: isOnDarkBg ? { color: "common.white" } : void 0,
2320
+ "aria-hidden": "true"
2321
+ }
2322
+ ),
2323
+ customMessageLayout ?? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledSpinnerMessage, { $darkBg: isOnDarkBg, children: message }),
2324
+ srText && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledScreenReaderOnly2, { children: srText })
2325
+ ] })
2326
+ ]
2327
+ }
2328
+ ) });
2329
+ }
2330
+ );
2331
+ PageSpinner.displayName = "ToolkitPageSpinner";
2332
+
2333
+ // src/components/Pagination/Pagination.tsx
2334
+ var import_react7 = __toESM(require("react"));
2335
+ var import_Pagination = __toESM(require("@mui/material/Pagination"));
2336
+
2337
+ // src/components/Pagination/Pagination.styles.tsx
2338
+ var import_styles13 = require("@mui/material/styles");
2339
+ var import_PaginationItem = __toESM(require("@mui/material/PaginationItem"));
2340
+ function getColorValue(theme, color) {
2341
+ switch (color) {
2342
+ case "primary":
2343
+ return theme.tokens.colors.primary;
2344
+ case "secondary":
2345
+ return theme.tokens.colors.secondary;
2346
+ case "info":
2347
+ return theme.tokens.colors.info;
2348
+ case "success":
2349
+ return theme.tokens.colors.success;
2350
+ case "warning":
2351
+ return theme.tokens.colors.warning;
2352
+ case "error":
2353
+ return theme.tokens.colors.error;
2354
+ default:
2355
+ return theme.tokens.colors.textPrimary;
2356
+ }
2357
+ }
2358
+ var StyledPaginationItem = (0, import_styles13.styled)(import_PaginationItem.default, {
2359
+ shouldForwardProp: (prop) => prop !== "$variant" && prop !== "$color"
2360
+ })(({ theme, $variant, $color }) => {
2361
+ const colorValue = getColorValue(theme, $color);
2362
+ if ($variant === "text") {
2363
+ return {
2364
+ "&.Mui-selected": {
2365
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.08),
2366
+ color: colorValue,
2367
+ "&:hover": {
2368
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.16)
2369
+ }
2370
+ }
2371
+ };
2372
+ }
2373
+ if ($variant === "outlined") {
2374
+ return {
2375
+ border: `1px solid ${(0, import_styles13.alpha)(colorValue, 0.24)}`,
2376
+ "&.Mui-selected": {
2377
+ border: `1px solid ${(0, import_styles13.alpha)(colorValue, 0.8)}`,
2378
+ color: colorValue,
2379
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.08),
2380
+ "&:hover": {
2381
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.16)
2382
+ }
2383
+ }
2384
+ };
2385
+ }
2386
+ return {
2387
+ "&.Mui-selected": {
2388
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.16),
2389
+ color: colorValue,
2390
+ "&:hover": {
2391
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.32)
2392
+ }
2393
+ },
2394
+ "&:hover": {
2395
+ backgroundColor: (0, import_styles13.alpha)(colorValue, 0.08)
2396
+ }
2397
+ };
2398
+ });
2399
+
2400
+ // src/components/Pagination/Pagination.tsx
2401
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2402
+ var Pagination = import_react7.default.forwardRef(
2403
+ function Pagination2({ variant = "text", shape = "circular", color = "default", ...restProps }, ref) {
2404
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2405
+ import_Pagination.default,
2406
+ {
2407
+ ref,
2408
+ "data-component-id": "Pagination",
2409
+ renderItem: (item) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2410
+ StyledPaginationItem,
2411
+ {
2412
+ $variant: variant,
2413
+ $color: color,
2414
+ ...item,
2415
+ shape
2416
+ }
2417
+ ),
2418
+ ...getCleanProps(restProps)
2419
+ }
2420
+ );
2421
+ }
2422
+ );
2423
+ Pagination.displayName = "ToolkitPagination";
2424
+
2425
+ // src/components/Paragraph/Paragraph.tsx
2426
+ var import_react8 = __toESM(require("react"));
2427
+
2428
+ // src/components/Paragraph/Paragraph.styles.tsx
2429
+ var import_styles14 = require("@mui/material/styles");
2430
+ var StyledParagraph = (0, import_styles14.styled)("p", {
2431
+ shouldForwardProp: (prop) => prop !== "$variant" && prop !== "$isOnDarkBg"
2432
+ })(({ theme, $variant = "regular", $isOnDarkBg = false }) => ({
2433
+ margin: 0,
2434
+ fontFamily: theme.tokens.typography.fontFamilyBase,
2435
+ outline: "transparent",
2436
+ fontSize: theme.tokens.typography.fontSizeLg,
2437
+ lineHeight: theme.tokens.typography.lineHeightBase,
2438
+ color: $isOnDarkBg ? theme.palette.common.white : theme.tokens.colors.textPrimary,
2439
+ ...$variant === "regular" && {
2440
+ fontWeight: theme.tokens.typography.fontWeightRegular
2441
+ },
2442
+ ...$variant === "semibold" && {
2443
+ fontWeight: theme.tokens.typography.fontWeightSemiBold
2444
+ },
2445
+ ...$variant === "bold" && {
2446
+ fontWeight: theme.tokens.typography.fontWeightBold
2447
+ },
2448
+ ...$variant === "primary" && {
2449
+ fontWeight: theme.tokens.typography.fontWeightSemiBold
2450
+ },
2451
+ ...$variant === "secondary" && {
2452
+ fontWeight: theme.tokens.typography.fontWeightBold
2453
+ },
2454
+ ...$variant === "overline" && {
2455
+ color: $isOnDarkBg ? theme.tokens.colors.overlayLight75 : theme.tokens.colors.textSecondary,
2456
+ fontWeight: theme.tokens.typography.fontWeightBold,
2457
+ letterSpacing: "0.125rem",
2458
+ textTransform: "uppercase"
2459
+ }
2460
+ }));
2461
+
2462
+ // src/components/Paragraph/Paragraph.tsx
2463
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2464
+ var Paragraph = import_react8.default.forwardRef(
2465
+ function Paragraph2({ children, variant = "regular", isOnDarkBg = false, ...restProps }, ref) {
2466
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2467
+ StyledParagraph,
2468
+ {
2469
+ $variant: variant,
2470
+ $isOnDarkBg: isOnDarkBg,
2471
+ "data-component-id": "Paragraph",
2472
+ ...getCleanProps(restProps),
2473
+ ref,
2474
+ children
2475
+ }
2476
+ );
2477
+ }
2478
+ );
2479
+ Paragraph.displayName = "ToolkitParagraph";
2480
+
2481
+ // src/components/Password/Password.tsx
2482
+ var import_react9 = __toESM(require("react"));
2483
+
2484
+ // src/components/Password/PasswordRule.tsx
2485
+ var import_CheckCircle = __toESM(require("@mui/icons-material/CheckCircle"));
2486
+ var import_Cancel = __toESM(require("@mui/icons-material/Cancel"));
2487
+
2488
+ // src/components/Password/PasswordRule.styles.tsx
2489
+ var import_styles15 = require("@mui/material/styles");
2490
+ var StyledPasswordRule = (0, import_styles15.styled)("div")(({ theme }) => ({
2491
+ display: "flex",
2492
+ alignItems: "center",
2493
+ gap: theme.tokens.spacing.xs,
2494
+ padding: `${theme.tokens.spacing.xs} 0`,
2495
+ "&.PasswordRule--valid": {
2496
+ color: theme.tokens.colors.success
2497
+ },
2498
+ "&.PasswordRule--invalid": {
2499
+ color: theme.tokens.colors.error
2500
+ }
2501
+ }));
2502
+ var StyledPasswordRuleIcon = (0, import_styles15.styled)("span")({
2503
+ display: "inline-flex",
2504
+ alignItems: "center",
2505
+ flexShrink: 0
2506
+ });
2507
+ var StyledPasswordRuleText = (0, import_styles15.styled)("span")(({ theme }) => ({
2508
+ fontSize: theme.tokens.typography.fontSizeSm
2509
+ }));
2510
+ var StyledScreenReaderOnly3 = (0, import_styles15.styled)("span")({
2511
+ position: "absolute",
2512
+ width: 1,
2513
+ height: 1,
2514
+ padding: 0,
2515
+ margin: -1,
2516
+ overflow: "hidden",
2517
+ clip: "rect(0, 0, 0, 0)",
2518
+ whiteSpace: "nowrap",
2519
+ border: 0
2520
+ });
2521
+
2522
+ // src/components/Password/PasswordRule.tsx
2523
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2524
+ var PasswordRule = ({ valid = false, rule = "", idx }) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2525
+ StyledPasswordRule,
2526
+ {
2527
+ className: valid ? "PasswordRule--valid" : "PasswordRule--invalid",
2528
+ "data-testid": `password-rule-${idx}`,
2529
+ children: [
2530
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledPasswordRuleIcon, { children: valid ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_CheckCircle.default, { fontSize: "small", "aria-hidden": "true" }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_Cancel.default, { fontSize: "small", "aria-hidden": "true" }) }),
2531
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledPasswordRuleText, { children: rule }),
2532
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledScreenReaderOnly3, { children: valid ? "supplied" : "not supplied" })
2533
+ ]
2534
+ }
2535
+ );
2536
+ PasswordRule.displayName = "ToolkitPasswordRule";
2537
+
2538
+ // src/components/Password/PasswordCriteria.styles.tsx
2539
+ var import_styles16 = require("@mui/material/styles");
2540
+ var StyledPasswordCriteriaContainer = (0, import_styles16.styled)("div")(
2541
+ ({ theme, $show }) => ({
2542
+ display: $show ? "block" : "none",
2543
+ position: "absolute",
2544
+ top: "100%",
2545
+ left: 0,
2546
+ right: 0,
2547
+ zIndex: theme.tokens.zIndex.dropdown,
2548
+ marginTop: theme.tokens.spacing.xs
2549
+ })
2550
+ );
2551
+ var StyledPasswordRuleTitle = (0, import_styles16.styled)("div")(({ theme }) => ({
2552
+ color: theme.tokens.colors.textPrimary,
2553
+ fontSize: theme.tokens.typography.fontSizeSm,
2554
+ fontWeight: theme.tokens.typography.fontWeightMedium,
2555
+ padding: `${theme.tokens.spacing.xs} 0`,
2556
+ borderBottom: `1px solid ${theme.tokens.colors.border}`,
2557
+ marginBottom: theme.tokens.spacing.xs
2558
+ }));
2559
+
2560
+ // src/components/Password/PasswordCriteria.tsx
2561
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2562
+ var PasswordRules = [
2563
+ { key: "minLength", rule: "Minimum 8 characters" },
2564
+ { key: "lowercase", rule: "At least one lowercase letter" },
2565
+ { key: "uppercase", rule: "At least one uppercase letter" },
2566
+ { key: "digit", rule: "At least one number" },
2567
+ { key: "special", rule: "At least one special character" }
2568
+ ];
2569
+ var passwordValidator = (value) => ({
2570
+ minLength: value.length >= 8,
2571
+ lowercase: /[a-z]/.test(value),
2572
+ uppercase: /[A-Z]/.test(value),
2573
+ digit: /[0-9]/.test(value),
2574
+ special: /[^A-Za-z0-9]/.test(value)
2575
+ });
2576
+ var PasswordCriteria = ({ show = false, value = "" }) => {
2577
+ const validity = passwordValidator(value);
2578
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2579
+ StyledPasswordCriteriaContainer,
2580
+ {
2581
+ $show: show,
2582
+ "aria-hidden": !show,
2583
+ id: "passwordCriteria",
2584
+ "data-testid": "password-criteria",
2585
+ role: "status",
2586
+ "aria-live": "polite",
2587
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Card, { compact: true, children: [
2588
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(StyledPasswordRuleTitle, { children: "Password must contain:" }),
2589
+ PasswordRules.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(PasswordRule, { valid: validity[item.key], rule: item.rule, idx }, item.key))
2590
+ ] })
2591
+ }
2592
+ );
2593
+ };
2594
+ PasswordCriteria.displayName = "ToolkitPasswordCriteria";
2595
+
2596
+ // src/components/Password/Password.styles.tsx
2597
+ var import_styles17 = require("@mui/material/styles");
2598
+ var StyledPasswordRoot = (0, import_styles17.styled)("div")({
2599
+ position: "relative"
2600
+ });
2601
+ var StyledPasswordInputWrapper = (0, import_styles17.styled)("div")({
2602
+ display: "flex",
2603
+ position: "relative"
2604
+ });
2605
+
2606
+ // src/components/Password/Password.tsx
2607
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2608
+ var Password = import_react9.default.forwardRef(
2609
+ function Password2({
2610
+ isInvalid,
2611
+ value: initialValue,
2612
+ label = "Password",
2613
+ onBlur,
2614
+ onChange,
2615
+ ariaDescribedby,
2616
+ ariaLabelledby,
2617
+ className,
2618
+ id,
2619
+ ...rest
2620
+ }, ref) {
2621
+ const [value, setValue] = (0, import_react9.useState)(initialValue ?? "");
2622
+ const [showCriteria, setShowCriteria] = (0, import_react9.useState)(false);
2623
+ const handleFocus = () => {
2624
+ setShowCriteria(true);
2625
+ };
2626
+ const handleBlur = (event) => {
2627
+ setShowCriteria(false);
2628
+ onBlur?.(event);
2629
+ };
2630
+ const handleChange = (event) => {
2631
+ const newValue = event.target.value;
2632
+ setValue(newValue);
2633
+ const validity = passwordValidator(newValue);
2634
+ const isCriteriaMet = Object.values(validity).every(Boolean);
2635
+ onChange?.(event, isCriteriaMet);
2636
+ };
2637
+ const cleanRest = getCleanProps(rest);
2638
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(StyledPasswordRoot, { className, ...cleanRest, children: [
2639
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledPasswordInputWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2640
+ TextField,
2641
+ {
2642
+ ref,
2643
+ id,
2644
+ label: ariaLabelledby ? void 0 : label,
2645
+ type: "password",
2646
+ showPasswordToggle: true,
2647
+ value,
2648
+ error: isInvalid,
2649
+ "aria-describedby": ariaDescribedby ?? "passwordCriteria",
2650
+ "aria-labelledby": ariaLabelledby,
2651
+ onFocus: handleFocus,
2652
+ onBlur: handleBlur,
2653
+ onChange: handleChange
2654
+ }
2655
+ ) }),
2656
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(PasswordCriteria, { show: showCriteria, value })
2657
+ ] });
2658
+ }
2659
+ );
2660
+ Password.displayName = "ToolkitPassword";
2661
+
2662
+ // src/components/Spinner/Spinner.tsx
2663
+ var import_react10 = __toESM(require("react"));
2664
+
2665
+ // src/components/Spinner/Spinner.styles.tsx
2666
+ var import_styles18 = require("@mui/material/styles");
2667
+ var spinnerSizing = {
2668
+ xs: 20,
2669
+ sm: 24,
2670
+ md: 40,
2671
+ lg: 56,
2672
+ xl: 72
2673
+ };
2674
+ var StyledSpinnerContainer = (0, import_styles18.styled)("div", {
2675
+ shouldForwardProp: (prop) => prop !== "$inline"
2676
+ })({}, ({ $inline }) => ({
2677
+ flex: "0 1 100%",
2678
+ display: "flex",
2679
+ flexDirection: $inline ? "row" : "column",
2680
+ alignItems: "center"
2681
+ }));
2682
+ var StyledSpinnerIconContainer = (0, import_styles18.styled)("div", {
2683
+ shouldForwardProp: (prop) => prop !== "$size" && prop !== "$darkBg"
2684
+ })(({ $size }) => {
2685
+ const size = spinnerSizing[$size];
2686
+ return {
2687
+ position: "relative",
2688
+ width: size,
2689
+ height: size
2690
+ };
2691
+ });
2692
+ var StyledSpinnerBackground = (0, import_styles18.styled)("div", {
2693
+ shouldForwardProp: (prop) => prop !== "$size" && prop !== "$darkBg"
2694
+ })(({ theme, $size, $darkBg }) => {
2695
+ const size = spinnerSizing[$size];
2696
+ const lineWidth = Math.round(size / 12);
2697
+ const borderColor = $darkBg ? (0, import_styles18.alpha)(theme.palette.common.white, 0.2) : (0, import_styles18.alpha)(theme.tokens.colors.textPrimary, 0.1);
2698
+ return {
2699
+ position: "absolute",
2700
+ width: size,
2701
+ height: size,
2702
+ borderRadius: "50%",
2703
+ border: `${lineWidth}px solid ${borderColor}`
2704
+ };
2705
+ });
2706
+ var StyledSpinner = (0, import_styles18.styled)("div", {
2707
+ shouldForwardProp: (prop) => prop !== "$size" && prop !== "$darkBg"
2708
+ })(({ theme, $size, $darkBg }) => {
2709
+ const size = spinnerSizing[$size];
2710
+ const lineWidth = Math.round(size / 12);
2711
+ const animationSpeed = `${1 + size / 100}s`;
2712
+ const color = $darkBg ? theme.palette.common.white : theme.tokens.colors.primary;
2713
+ return {
2714
+ "@keyframes toolkit-spin": {
2715
+ "0%": { transform: "rotate(0deg)" },
2716
+ "100%": { transform: "rotate(360deg)" }
2717
+ },
2718
+ position: "absolute",
2719
+ width: size,
2720
+ height: size,
2721
+ borderRadius: "50%",
2722
+ borderTop: "3px solid transparent",
2723
+ borderRight: "3px solid transparent",
2724
+ borderBottom: `${lineWidth}px solid ${color}`,
2725
+ borderLeft: `${lineWidth}px solid ${color}`,
2726
+ animation: `toolkit-spin ${animationSpeed} infinite linear`
2727
+ };
2728
+ });
2729
+ var StyledSpinnerMessage2 = (0, import_styles18.styled)("span", {
2730
+ shouldForwardProp: (prop) => prop !== "$darkBg" && prop !== "$inline"
2731
+ })(({ theme, $darkBg, $inline }) => ({
2732
+ fontFamily: theme.tokens.typography.fontFamilyBase,
2733
+ fontSize: theme.tokens.typography.fontSizeSm,
2734
+ color: $darkBg ? theme.palette.common.white : theme.tokens.colors.border,
2735
+ marginTop: $inline ? 0 : theme.spacing(1),
2736
+ marginLeft: $inline ? theme.spacing(1) : 0
2737
+ }));
2738
+ var StyledScreenReaderOnly4 = (0, import_styles18.styled)("span")({
2739
+ position: "absolute",
2740
+ width: 1,
2741
+ height: 1,
2742
+ padding: 0,
2743
+ margin: -1,
2744
+ overflow: "hidden",
2745
+ clip: "rect(0,0,0,0)",
2746
+ whiteSpace: "nowrap",
2747
+ border: 0
2748
+ });
2749
+
2750
+ // src/components/Spinner/Spinner.tsx
2751
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2752
+ var Spinner = import_react10.default.forwardRef(
2753
+ function Spinner2({ size = "sm", message, isOnDarkBg = false, srText, isInline = false, ...restProps }, ref) {
2754
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2755
+ StyledSpinnerContainer,
2756
+ {
2757
+ ref,
2758
+ $inline: isInline,
2759
+ "data-component-id": "Spinner",
2760
+ ...getCleanProps(restProps),
2761
+ children: [
2762
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(StyledSpinnerIconContainer, { $size: size, "aria-hidden": "true", children: [
2763
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StyledSpinnerBackground, { $size: size, $darkBg: isOnDarkBg, "aria-hidden": "true" }),
2764
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StyledSpinner, { $size: size, $darkBg: isOnDarkBg, "aria-hidden": "true" })
2765
+ ] }),
2766
+ message && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StyledSpinnerMessage2, { $darkBg: isOnDarkBg, $inline: isInline, children: message }),
2767
+ srText && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StyledScreenReaderOnly4, { children: srText })
2768
+ ]
2769
+ }
2770
+ );
2771
+ }
2772
+ );
2773
+ Spinner.displayName = "ToolkitSpinner";
2774
+
1991
2775
  // src/components/Toggle/Toggle.tsx
1992
2776
  var import_FormHelperText = __toESM(require("@mui/material/FormHelperText"));
1993
2777
 
1994
2778
  // src/components/Toggle/Toggle.styles.tsx
1995
- var import_styles10 = require("@mui/material/styles");
1996
- var StyledFieldset = (0, import_styles10.styled)("fieldset")(({ theme }) => ({
2779
+ var import_styles19 = require("@mui/material/styles");
2780
+ var StyledFieldset = (0, import_styles19.styled)("fieldset")(({ theme }) => ({
1997
2781
  border: "none",
1998
2782
  margin: 0,
1999
2783
  padding: 0,
2000
2784
  minWidth: 0
2001
2785
  }));
2002
- var StyledLegend = (0, import_styles10.styled)("legend")(({ theme }) => ({
2786
+ var StyledLegend = (0, import_styles19.styled)("legend")(({ theme }) => ({
2003
2787
  fontFamily: theme.tokens.typography.fontFamilyBase,
2004
2788
  fontSize: theme.tokens.typography.fontSizeLg,
2005
2789
  fontWeight: theme.tokens.typography.fontWeightRegular,
@@ -2007,7 +2791,7 @@ var StyledLegend = (0, import_styles10.styled)("legend")(({ theme }) => ({
2007
2791
  marginBottom: theme.spacing(1),
2008
2792
  padding: 0
2009
2793
  }));
2010
- var StyledToggleWrapper = (0, import_styles10.styled)("div")(({ theme }) => ({
2794
+ var StyledToggleWrapper = (0, import_styles19.styled)("div")(({ theme }) => ({
2011
2795
  display: "flex",
2012
2796
  flexDirection: "row",
2013
2797
  width: theme.spacing(15),
@@ -2016,7 +2800,7 @@ var StyledToggleWrapper = (0, import_styles10.styled)("div")(({ theme }) => ({
2016
2800
  border: `1px solid ${theme.tokens.colors.border}`,
2017
2801
  borderRadius: theme.tokens.borderRadius.md
2018
2802
  }));
2019
- var StyledSwitch = (0, import_styles10.styled)("label", {
2803
+ var StyledSwitch = (0, import_styles19.styled)("label", {
2020
2804
  shouldForwardProp: (prop) => prop !== "selected" && prop !== "controlType"
2021
2805
  })(({ theme, selected, controlType }) => ({
2022
2806
  position: "relative",
@@ -2106,7 +2890,7 @@ var StyledSwitch = (0, import_styles10.styled)("label", {
2106
2890
  }));
2107
2891
 
2108
2892
  // src/components/Toggle/Toggle.tsx
2109
- var import_jsx_runtime15 = require("react/jsx-runtime");
2893
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2110
2894
  function Toggle({
2111
2895
  name,
2112
2896
  checked = false,
@@ -2117,18 +2901,18 @@ function Toggle({
2117
2901
  onBlur,
2118
2902
  ...restProps
2119
2903
  }) {
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)(
2904
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(StyledFieldset, { "data-component-id": "toggle", ...getCleanProps(restProps), children: [
2905
+ label && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(StyledLegend, { children: label }),
2906
+ description && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_FormHelperText.default, { children: description }),
2907
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(StyledToggleWrapper, { children: [
2908
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2125
2909
  StyledSwitch,
2126
2910
  {
2127
2911
  htmlFor: `${name}off`,
2128
2912
  selected: !checked,
2129
2913
  controlType: "off",
2130
2914
  children: [
2131
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2915
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2132
2916
  "input",
2133
2917
  {
2134
2918
  checked: !checked,
@@ -2144,14 +2928,14 @@ function Toggle({
2144
2928
  ]
2145
2929
  }
2146
2930
  ),
2147
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2931
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2148
2932
  StyledSwitch,
2149
2933
  {
2150
2934
  htmlFor: `${name}on`,
2151
2935
  selected: checked,
2152
2936
  controlType: "on",
2153
2937
  children: [
2154
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2938
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2155
2939
  "input",
2156
2940
  {
2157
2941
  checked,
@@ -2168,44 +2952,44 @@ function Toggle({
2168
2952
  }
2169
2953
  )
2170
2954
  ] }),
2171
- error && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_FormHelperText.default, { error: true, children: error })
2955
+ error && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_FormHelperText.default, { error: true, children: error })
2172
2956
  ] });
2173
2957
  }
2174
2958
  Toggle.displayName = "ToolkitToggle";
2175
2959
 
2176
2960
  // src/components/Table/Table.tsx
2177
2961
  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)(() => ({
2962
+ var import_styles20 = require("@mui/material/styles");
2963
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2964
+ var StyledTableContainer = (0, import_styles20.styled)(import_material10.TableContainer)(() => ({
2181
2965
  overflowX: "auto"
2182
2966
  }));
2183
- var StyledHeadCell = (0, import_styles11.styled)(import_material10.TableCell)(({ theme }) => ({
2967
+ var StyledHeadCell = (0, import_styles20.styled)(import_material10.TableCell)(({ theme }) => ({
2184
2968
  fontWeight: theme.tokens.components.table.headerFontWeight,
2185
2969
  backgroundColor: theme.tokens.components.table.headerBackground,
2186
2970
  borderBottomWidth: theme.tokens.components.table.borderWidth,
2187
2971
  borderBottomColor: theme.tokens.components.table.borderColor
2188
2972
  }));
2189
2973
  function Table(props) {
2190
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.Table, { ...props });
2974
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material10.Table, { ...props });
2191
2975
  }
2192
2976
  function TableHead(props) {
2193
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableHead, { ...props });
2977
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material10.TableHead, { ...props });
2194
2978
  }
2195
2979
  function TableBody(props) {
2196
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableBody, { ...props });
2980
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material10.TableBody, { ...props });
2197
2981
  }
2198
2982
  function TableRow(props) {
2199
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableRow, { ...props });
2983
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material10.TableRow, { ...props });
2200
2984
  }
2201
2985
  function TableCell(props) {
2202
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material10.TableCell, { ...props });
2986
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material10.TableCell, { ...props });
2203
2987
  }
2204
2988
  function TableHeadCell(props) {
2205
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledHeadCell, { component: "th", scope: "col", ...props });
2989
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(StyledHeadCell, { component: "th", scope: "col", ...props });
2206
2990
  }
2207
2991
  function TableContainer(props) {
2208
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StyledTableContainer, { ...props });
2992
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(StyledTableContainer, { ...props });
2209
2993
  }
2210
2994
  var TablePagination = import_material10.TablePagination;
2211
2995
  var TableSortLabel = import_material10.TableSortLabel;
@@ -2218,107 +3002,146 @@ TableHeadCell.displayName = "ToolkitTableHeadCell";
2218
3002
  TableContainer.displayName = "ToolkitTableContainer";
2219
3003
 
2220
3004
  // src/foundation/H1/H1.tsx
3005
+ var import_react11 = __toESM(require("react"));
2221
3006
  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
- }
3007
+ var import_jsx_runtime25 = require("react/jsx-runtime");
3008
+ var H1 = import_react11.default.forwardRef(
3009
+ function H12({ color = "text.primary", children, ...props }, ref) {
3010
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material11.Typography, { ref, variant: "h1", color, ...props, children });
3011
+ }
3012
+ );
2226
3013
  H1.displayName = "ToolkitH1";
2227
3014
 
2228
3015
  // src/foundation/H2/H2.tsx
3016
+ var import_react12 = __toESM(require("react"));
2229
3017
  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
- }
3018
+ var import_jsx_runtime26 = require("react/jsx-runtime");
3019
+ var H2 = import_react12.default.forwardRef(
3020
+ function H22({ color = "text.primary", children, ...props }, ref) {
3021
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_material12.Typography, { ref, variant: "h2", color, ...props, children });
3022
+ }
3023
+ );
2234
3024
  H2.displayName = "ToolkitH2";
2235
3025
 
2236
3026
  // src/foundation/H3/H3.tsx
3027
+ var import_react13 = __toESM(require("react"));
2237
3028
  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
- }
3029
+ var import_jsx_runtime27 = require("react/jsx-runtime");
3030
+ var H3 = import_react13.default.forwardRef(
3031
+ function H32({ color = "text.primary", children, ...props }, ref) {
3032
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material13.Typography, { ref, variant: "h3", color, ...props, children });
3033
+ }
3034
+ );
2242
3035
  H3.displayName = "ToolkitH3";
2243
3036
 
2244
3037
  // src/foundation/H4/H4.tsx
3038
+ var import_react14 = __toESM(require("react"));
2245
3039
  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
- }
3040
+ var import_jsx_runtime28 = require("react/jsx-runtime");
3041
+ var H4 = import_react14.default.forwardRef(
3042
+ function H42({ color = "text.primary", children, ...props }, ref) {
3043
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material14.Typography, { ref, variant: "h4", color, ...props, children });
3044
+ }
3045
+ );
2250
3046
  H4.displayName = "ToolkitH4";
2251
3047
 
2252
3048
  // src/foundation/H5/H5.tsx
3049
+ var import_react15 = __toESM(require("react"));
2253
3050
  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
- }
3051
+ var import_jsx_runtime29 = require("react/jsx-runtime");
3052
+ var H5 = import_react15.default.forwardRef(
3053
+ function H52({ color = "text.primary", children, ...props }, ref) {
3054
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_material15.Typography, { ref, variant: "h5", color, ...props, children });
3055
+ }
3056
+ );
2258
3057
  H5.displayName = "ToolkitH5";
2259
3058
 
2260
3059
  // src/foundation/H6/H6.tsx
3060
+ var import_react16 = __toESM(require("react"));
2261
3061
  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
- }
3062
+ var import_jsx_runtime30 = require("react/jsx-runtime");
3063
+ var H6 = import_react16.default.forwardRef(
3064
+ function H62({ color = "text.primary", children, ...props }, ref) {
3065
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_material16.Typography, { ref, variant: "h6", color, ...props, children });
3066
+ }
3067
+ );
2266
3068
  H6.displayName = "ToolkitH6";
2267
3069
 
2268
3070
  // src/foundation/Subtitle1/Subtitle1.tsx
3071
+ var import_react17 = __toESM(require("react"));
2269
3072
  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
- }
3073
+ var import_jsx_runtime31 = require("react/jsx-runtime");
3074
+ var Subtitle1 = import_react17.default.forwardRef(
3075
+ function Subtitle12({ color = "text.primary", children, ...props }, ref) {
3076
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_material17.Typography, { ref, variant: "subtitle1", color, ...props, children });
3077
+ }
3078
+ );
2274
3079
  Subtitle1.displayName = "ToolkitSubtitle1";
2275
3080
 
2276
3081
  // src/foundation/Subtitle2/Subtitle2.tsx
3082
+ var import_react18 = __toESM(require("react"));
2277
3083
  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
- }
3084
+ var import_jsx_runtime32 = require("react/jsx-runtime");
3085
+ var Subtitle2 = import_react18.default.forwardRef(
3086
+ function Subtitle22({ color = "text.primary", children, ...props }, ref) {
3087
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_material18.Typography, { ref, variant: "subtitle2", color, ...props, children });
3088
+ }
3089
+ );
2282
3090
  Subtitle2.displayName = "ToolkitSubtitle2";
2283
3091
 
2284
3092
  // src/foundation/Body1/Body1.tsx
3093
+ var import_react19 = __toESM(require("react"));
2285
3094
  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
- }
3095
+ var import_jsx_runtime33 = require("react/jsx-runtime");
3096
+ var Body1 = import_react19.default.forwardRef(
3097
+ function Body12({ color = "text.primary", children, ...props }, ref) {
3098
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_material19.Typography, { ref, variant: "body1", color, ...props, children });
3099
+ }
3100
+ );
2290
3101
  Body1.displayName = "ToolkitBody1";
2291
3102
 
2292
3103
  // src/foundation/Body2/Body2.tsx
3104
+ var import_react20 = __toESM(require("react"));
2293
3105
  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
- }
3106
+ var import_jsx_runtime34 = require("react/jsx-runtime");
3107
+ var Body2 = import_react20.default.forwardRef(
3108
+ function Body22({ color = "text.primary", children, ...props }, ref) {
3109
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_material20.Typography, { ref, variant: "body2", color, ...props, children });
3110
+ }
3111
+ );
2298
3112
  Body2.displayName = "ToolkitBody2";
2299
3113
 
2300
3114
  // src/foundation/Caption/Caption.tsx
3115
+ var import_react21 = __toESM(require("react"));
2301
3116
  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
- }
3117
+ var import_jsx_runtime35 = require("react/jsx-runtime");
3118
+ var Caption = import_react21.default.forwardRef(
3119
+ function Caption2({ color = "text.primary", children, ...props }, ref) {
3120
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_material21.Typography, { ref, variant: "caption", color, ...props, children });
3121
+ }
3122
+ );
2306
3123
  Caption.displayName = "ToolkitCaption";
2307
3124
 
2308
3125
  // src/foundation/Overline/Overline.tsx
3126
+ var import_react22 = __toESM(require("react"));
2309
3127
  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
- }
3128
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3129
+ var Overline = import_react22.default.forwardRef(
3130
+ function Overline2({ color = "text.primary", children, ...props }, ref) {
3131
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material22.Typography, { ref, variant: "overline", color, ...props, children });
3132
+ }
3133
+ );
2314
3134
  Overline.displayName = "ToolkitOverline";
2315
3135
 
2316
3136
  // src/foundation/TypographyButton/TypographyButton.tsx
3137
+ var import_react23 = __toESM(require("react"));
2317
3138
  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
- }
3139
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3140
+ var TypographyButton = import_react23.default.forwardRef(
3141
+ function TypographyButton2({ color = "text.primary", children, ...props }, ref) {
3142
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_material23.Typography, { ref, variant: "button", color, ...props, children });
3143
+ }
3144
+ );
2322
3145
  TypographyButton.displayName = "ToolkitTypographyButton";
2323
3146
  // Annotate the CommonJS export names for ESM import in node:
2324
3147
  0 && (module.exports = {
@@ -2359,10 +3182,19 @@ TypographyButton.displayName = "ToolkitTypographyButton";
2359
3182
  H6,
2360
3183
  InternalLinkItem,
2361
3184
  Link,
3185
+ LogoLink,
2362
3186
  MobileDatePicker,
2363
3187
  MobileDateTimePicker,
2364
3188
  MobileTimePicker,
2365
3189
  Overline,
3190
+ PageSpinner,
3191
+ Pagination,
3192
+ Paragraph,
3193
+ Password,
3194
+ PasswordCriteria,
3195
+ PasswordRule,
3196
+ PasswordRules,
3197
+ Spinner,
2366
3198
  StandaloneAccordion,
2367
3199
  StaticDatePicker,
2368
3200
  StaticDateTimePicker,
@@ -2389,6 +3221,7 @@ TypographyButton.displayName = "ToolkitTypographyButton";
2389
3221
  Variant,
2390
3222
  createMuiTheme,
2391
3223
  getThemeTokens,
3224
+ passwordValidator,
2392
3225
  resolveThemeName,
2393
3226
  themeRegistry
2394
3227
  });