@olenbetong/synergi-react 1.0.5 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/esm/ob.react.css +216 -146
  2. package/dist/esm/ob.react.js +227 -131
  3. package/dist/esm/ob.react.min.css +1 -1
  4. package/dist/esm/ob.react.min.css.map +3 -3
  5. package/dist/esm/ob.react.min.js +1 -1
  6. package/dist/esm/ob.react.min.js.map +4 -4
  7. package/dist/iife/ob.react.css +216 -146
  8. package/dist/iife/ob.react.js +230 -134
  9. package/dist/iife/ob.react.min.css +1 -1
  10. package/dist/iife/ob.react.min.css.map +3 -3
  11. package/dist/iife/ob.react.min.js +1 -1
  12. package/dist/iife/ob.react.min.js.map +4 -4
  13. package/dist/styles/styles.css +1 -1
  14. package/dist/styles/styles.css.map +1 -1
  15. package/es/Checkbox/index.css +1 -1
  16. package/es/Checkbox/index.d.ts +11 -0
  17. package/es/Checkbox/index.js +8 -5
  18. package/es/ColorCard/index.d.ts +5 -2
  19. package/es/ColorCard/index.js +6 -0
  20. package/es/DateNavigator/index.css +1 -1
  21. package/es/DateNavigator/index.d.ts +3 -1
  22. package/es/DateNavigator/index.js +82 -28
  23. package/es/LinkedCardList/index.css +1 -1
  24. package/es/LinkedCardList/index.d.ts +2 -2
  25. package/es/LinkedCardList/index.js +2 -2
  26. package/es/PageBanner/index.js +2 -1
  27. package/es/Portal/index.js +5 -7
  28. package/es/ProgressBar/index.css +1 -1
  29. package/es/Sidebar/index.js +1 -0
  30. package/es/Spinner/index.d.ts +1 -1
  31. package/es/SplitContainer/index.d.ts +4 -2
  32. package/es/SplitContainer/index.js +45 -13
  33. package/es/ValueToggleGroup/index.d.ts +18 -0
  34. package/es/ValueToggleGroup/index.js +12 -0
  35. package/es/index.css +1 -1
  36. package/es/index.d.ts +8 -8
  37. package/es/index.js +3 -3
  38. package/es/useTranslation/index.js +2 -1
  39. package/package.json +88 -90
  40. package/src/Checkbox/index.scss +12 -5
  41. package/src/Checkbox/index.tsx +25 -7
  42. package/src/ColorCard/{index.scss → index.css} +50 -59
  43. package/src/ColorCard/index.tsx +21 -9
  44. package/src/DateNavigator/index.scss +66 -33
  45. package/src/DateNavigator/index.tsx +98 -33
  46. package/src/LinkedCardList/index.scss +8 -1
  47. package/src/LinkedCardList/index.tsx +2 -2
  48. package/src/PageBanner/index.tsx +2 -1
  49. package/src/Portal/index.tsx +8 -7
  50. package/src/ProgressBar/index.scss +2 -2
  51. package/src/Sidebar/index.tsx +1 -0
  52. package/src/Spinner/{index.scss → index.css} +13 -10
  53. package/src/Spinner/index.tsx +2 -2
  54. package/src/SplitContainer/index.tsx +75 -17
  55. package/src/ValueToggleGroup/index.css +79 -0
  56. package/src/ValueToggleGroup/index.tsx +52 -0
  57. package/src/index.scss +3 -2
  58. package/src/index.ts +12 -12
  59. package/src/useTranslation/index.ts +2 -1
  60. package/LICENSE +0 -21
  61. package/es/ColorCard/index.css +0 -1
  62. package/es/Spinner/index.css +0 -1
  63. package/es/ValueToggle/index.css +0 -1
  64. package/es/ValueToggle/index.d.ts +0 -18
  65. package/es/ValueToggle/index.js +0 -38
  66. package/src/ValueToggle/index.scss +0 -50
  67. package/src/ValueToggle/index.tsx +0 -75
@@ -2217,9 +2217,11 @@ var import_react = __toESM(require_react(), 1);
2217
2217
  function Mark(props) {
2218
2218
  return /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M20.285 2L9 13.567 3.714 8.556 0 12.272 9 21 24 5.715z", fill: "currentColor" }));
2219
2219
  }
2220
- var Checkbox = (0, import_react.forwardRef)(function Checkbox2({ className, disabled = false, id, onChange = () => null, title, value, ...other }, ref) {
2221
- const inputId = (0, import_react.useId)() + (id ?? "");
2222
- const input = (0, import_react.useRef)(null);
2220
+ var Checkbox = (0, import_react.forwardRef)(function Checkbox2({ className, disabled = false, id, onChange = () => null, label, title, reverse, value, ...other }, ref) {
2221
+ let inputId = (0, import_react.useId)();
2222
+ inputId = id ?? inputId;
2223
+ let inputIdRef = `#${inputId}`;
2224
+ let input = (0, import_react.useRef)(null);
2223
2225
  (0, import_react.useEffect)(() => {
2224
2226
  if (typeof ref === "function") {
2225
2227
  ref(input.current);
@@ -2241,39 +2243,47 @@ var Checkbox = (0, import_react.forwardRef)(function Checkbox2({ className, disa
2241
2243
  }
2242
2244
  function handleKeyDown(evt) {
2243
2245
  if (evt.nativeEvent) {
2244
- const { nativeEvent } = evt;
2246
+ let { nativeEvent } = evt;
2245
2247
  if (nativeEvent.key === " ") {
2246
2248
  nativeEvent.preventDefault();
2247
2249
  input.current?.click();
2248
2250
  }
2249
2251
  }
2250
2252
  }
2251
- return /* @__PURE__ */ React.createElement("div", { className: clsx_default("ObCheckbox-root", disabled && "Ob-disabled", className), title }, /* @__PURE__ */ React.createElement(
2252
- "input",
2253
+ return /* @__PURE__ */ React.createElement(
2254
+ "div",
2253
2255
  {
2254
- className: "ObCheckbox-input",
2255
- id: inputId,
2256
- type: "checkbox",
2257
- onChange: handleInputChanged,
2258
- checked: value,
2259
- disabled,
2260
- ref: input,
2261
- ...other
2262
- }
2263
- ), /* @__PURE__ */ React.createElement("label", { htmlFor: `#${inputId}`, className: "ObCheckbox-label", onKeyDown: handleKeyDown, onClick: handleClick }, /* @__PURE__ */ React.createElement("div", { className: "ObCheckbox-box" }, /* @__PURE__ */ React.createElement(Mark, { className: "ObCheckbox-mark" }))));
2256
+ className: clsx_default("ObCheckbox-root", disabled && "Ob-disabled", reverse && "Ob-reverse", className),
2257
+ title
2258
+ },
2259
+ /* @__PURE__ */ React.createElement(
2260
+ "input",
2261
+ {
2262
+ className: "ObCheckbox-input",
2263
+ id: inputId,
2264
+ type: "checkbox",
2265
+ onChange: handleInputChanged,
2266
+ checked: value,
2267
+ disabled,
2268
+ ref: input,
2269
+ ...other
2270
+ }
2271
+ ),
2272
+ /* @__PURE__ */ React.createElement("label", { htmlFor: inputIdRef, className: "ObCheckbox-label", onKeyDown: handleKeyDown, onClick: handleClick }, /* @__PURE__ */ React.createElement("div", { className: "ObCheckbox-box" }, /* @__PURE__ */ React.createElement(Mark, { className: "ObCheckbox-mark" })), label && /* @__PURE__ */ React.createElement("div", { className: "ObCheckbox-label-text" }, label))
2273
+ );
2264
2274
  });
2265
2275
 
2266
2276
  // src/ColorCard/index.tsx
2267
- function ColorCard({
2268
- as: Component,
2269
- children,
2270
- className,
2271
- href,
2272
- ...other
2273
- }) {
2277
+ function ColorCard({ as: Component, children, className, href, ...other }) {
2274
2278
  const BaseElement = Component ? Component : href ? "a" : "div";
2275
2279
  return /* @__PURE__ */ React.createElement(BaseElement, { className: clsx_default("ObColorCard-root", className), href, ...other }, children);
2276
2280
  }
2281
+ function CardStepList({ children, className, ...props }) {
2282
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default("ObColorCard-stepList", className), ...props }, children);
2283
+ }
2284
+ function CardStep({ children, className, ...props }) {
2285
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default("ObColorCard-step", className), ...props }, /* @__PURE__ */ React.createElement("div", { className: "ObColorCard-stepText" }, children));
2286
+ }
2277
2287
  function CardColumn({
2278
2288
  children,
2279
2289
  className,
@@ -2301,8 +2311,10 @@ var import_react2 = __toESM(require_react(), 1);
2301
2311
  function getUiCulture() {
2302
2312
  return af?.userSession?.culture ?? "default";
2303
2313
  }
2304
- function Arrow(props) {
2305
- const { direction, ...rest } = props;
2314
+ function Arrow({
2315
+ direction,
2316
+ ...rest
2317
+ }) {
2306
2318
  return /* @__PURE__ */ React.createElement(
2307
2319
  "button",
2308
2320
  {
@@ -2310,15 +2322,16 @@ function Arrow(props) {
2310
2322
  "ObDateNavigator-arrow",
2311
2323
  direction === "left" ? "ObDateNavigator-arrowLeft" : "ObDateNavigator-arrowRight"
2312
2324
  ),
2325
+ "aria-label": direction === "left" ? (0, import_appframe_core.getLocalizedString)("Previous day") : (0, import_appframe_core.getLocalizedString)("Next day"),
2313
2326
  ...rest
2314
2327
  },
2315
- /* @__PURE__ */ React.createElement("span", { className: "ObDateNavigator-icon" }, direction === "left" ? /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", focusable: "false", role: "img", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2328
+ /* @__PURE__ */ React.createElement("span", { className: "ObDateNavigator-icon" }, direction === "left" ? /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2316
2329
  "path",
2317
2330
  {
2318
2331
  fill: "currentColor",
2319
2332
  d: "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"
2320
2333
  }
2321
- )) : /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", focusable: "false", role: "img", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2334
+ )) : /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2322
2335
  "path",
2323
2336
  {
2324
2337
  fill: "currentColor",
@@ -2334,41 +2347,89 @@ var formatter = new Intl.DateTimeFormat(getUiCulture(), {
2334
2347
  year: "numeric",
2335
2348
  timeZone: "utc"
2336
2349
  });
2337
- var today = /* @__PURE__ */ new Date();
2338
- var todayUtc = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate());
2339
2350
  var oneDay = 24 * 60 * 60 * 1e3;
2340
- function DateNavigator({ date: dateProp, onChange }) {
2351
+ function DateNavigator({
2352
+ date: dateProp,
2353
+ onChange,
2354
+ minDate,
2355
+ maxDate
2356
+ }) {
2341
2357
  let [internalDate, setInternalDate] = (0, import_react2.useState)(/* @__PURE__ */ new Date());
2342
- const date = dateProp ?? internalDate;
2343
- const dateUtc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
2344
- let dateValue = new Date(dateUtc);
2345
- let text = formatter.format(dateValue);
2346
- let altText;
2347
- if (todayUtc === dateUtc) {
2348
- altText = (0, import_appframe_core.getLocalizedString)("Today");
2349
- } else if (todayUtc === dateUtc + oneDay) {
2350
- altText = (0, import_appframe_core.getLocalizedString)("Yesterday");
2351
- } else if (todayUtc === dateUtc - oneDay) {
2352
- altText = (0, import_appframe_core.getLocalizedString)("Tomorrow");
2358
+ let date = dateProp ?? internalDate;
2359
+ let dateUtc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
2360
+ let today = /* @__PURE__ */ new Date();
2361
+ let todayUtc = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate());
2362
+ let liveRef = (0, import_react2.useRef)(null);
2363
+ let text = (() => {
2364
+ let base = formatter.format(new Date(dateUtc));
2365
+ if (todayUtc === dateUtc) return `${(0, import_appframe_core.getLocalizedString)("Today")}, ${base}`;
2366
+ if (todayUtc === dateUtc + oneDay) return `${(0, import_appframe_core.getLocalizedString)("Yesterday")}, ${base}`;
2367
+ if (todayUtc === dateUtc - oneDay) return `${(0, import_appframe_core.getLocalizedString)("Tomorrow")}, ${base}`;
2368
+ return base;
2369
+ })();
2370
+ let disablePrev = !!minDate && dateUtc <= Date.UTC(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
2371
+ let disableNext = !!maxDate && dateUtc >= Date.UTC(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
2372
+ function updateDate(newDate) {
2373
+ if (minDate && newDate < minDate) {
2374
+ newDate = new Date(minDate);
2375
+ } else if (maxDate && newDate > maxDate) {
2376
+ newDate = new Date(maxDate);
2377
+ }
2378
+ if (onChange) onChange(newDate);
2379
+ else setInternalDate(newDate);
2353
2380
  }
2354
- if (altText) {
2355
- text = `${altText}, ${text}`;
2381
+ function jumpToToday() {
2382
+ updateDate(/* @__PURE__ */ new Date());
2356
2383
  }
2357
- function handleDateChanged(date2) {
2358
- if (typeof onChange === "function") {
2359
- onChange(date2);
2360
- } else {
2361
- setInternalDate(date2);
2384
+ (0, import_react2.useEffect)(() => {
2385
+ if (liveRef.current) {
2386
+ liveRef.current.textContent = text;
2387
+ }
2388
+ }, [text]);
2389
+ function handleKeyDown(event) {
2390
+ if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
2391
+ if (event.defaultPrevented) return;
2392
+ if (event.altKey || event.metaKey) return;
2393
+ if (disablePrev && event.key === "ArrowLeft") return;
2394
+ if (disableNext && event.key === "ArrowRight") return;
2395
+ if (event.ctrlKey && event.shiftKey) {
2396
+ let newDate = new Date(dateUtc);
2397
+ if (event.key === "ArrowLeft") {
2398
+ newDate.setFullYear(newDate.getFullYear() - 1);
2399
+ } else if (event.key === "ArrowRight") {
2400
+ newDate.setFullYear(newDate.getFullYear() + 1);
2401
+ }
2402
+ updateDate(newDate);
2403
+ return;
2404
+ }
2405
+ if (event.ctrlKey) {
2406
+ let newDate = new Date(dateUtc);
2407
+ if (event.key === "ArrowLeft") {
2408
+ newDate.setMonth(newDate.getMonth() - 1);
2409
+ } else if (event.key === "ArrowRight") {
2410
+ newDate.setMonth(newDate.getMonth() + 1);
2411
+ }
2412
+ updateDate(newDate);
2413
+ return;
2414
+ }
2415
+ let modifier = event.shiftKey ? 7 : 1;
2416
+ if (event.key === "ArrowLeft") {
2417
+ updateDate(new Date(dateUtc - oneDay * modifier));
2418
+ } else if (event.key === "ArrowRight") {
2419
+ updateDate(new Date(dateUtc + oneDay * modifier));
2362
2420
  }
2363
2421
  }
2364
- return /* @__PURE__ */ React.createElement("div", { className: "ObDateNavigator-root" }, /* @__PURE__ */ React.createElement(Arrow, { direction: "left", onClick: () => handleDateChanged(new Date(dateUtc - oneDay)) }), /* @__PURE__ */ React.createElement("div", { className: "ObDateNavigator-date" }, text), /* @__PURE__ */ React.createElement(Arrow, { direction: "right", onClick: () => handleDateChanged(new Date(dateUtc + oneDay)) }));
2422
+ return (
2423
+ // biome-ignore lint/a11y/noNoninteractiveTabindex: I hate this component
2424
+ /* @__PURE__ */ React.createElement("div", { className: "ObDateNavigator-root", onKeyDown: handleKeyDown, tabIndex: 0, "aria-label": "Date navigator" }, /* @__PURE__ */ React.createElement(Arrow, { direction: "left", onClick: () => updateDate(new Date(dateUtc - oneDay)), disabled: disablePrev }), /* @__PURE__ */ React.createElement("div", { className: "ObDateNavigator-date" }, text), /* @__PURE__ */ React.createElement(Arrow, { direction: "right", onClick: () => updateDate(new Date(dateUtc + oneDay)), disabled: disableNext }), /* @__PURE__ */ React.createElement("button", { type: "button", className: "ObDateNavigator-today", onClick: jumpToToday }, (0, import_appframe_core.getLocalizedString)("Today")), /* @__PURE__ */ React.createElement("div", { "aria-live": "polite", ref: liveRef, style: { position: "absolute", left: "-9999px" } }))
2425
+ );
2365
2426
  }
2366
2427
 
2367
2428
  // src/LinkedCardList/index.tsx
2368
- function List({ children, className, ...other }) {
2429
+ function LinkedList({ children, className, ...other }) {
2369
2430
  return /* @__PURE__ */ React.createElement("ul", { className: clsx_default("ObLinkedList-root", className), ...other }, children);
2370
2431
  }
2371
- function ListItem({
2432
+ function LinkedListItem({
2372
2433
  children,
2373
2434
  className,
2374
2435
  label,
@@ -2389,7 +2450,7 @@ function PageBanner({ as, className, children, ...other }) {
2389
2450
  }
2390
2451
  var BannerImage = import_react3.default.forwardRef(function BannerImage2(props, ref) {
2391
2452
  const { className, ...other } = props;
2392
- return /* @__PURE__ */ import_react3.default.createElement("img", { ref, className: clsx_default("ObPageBanner-bannerImage", className), ...other });
2453
+ return /* @__PURE__ */ import_react3.default.createElement("img", { ref, className: clsx_default("ObPageBanner-bannerImage", className), alt: "", ...other });
2393
2454
  });
2394
2455
  function TabList({ as, className, children, sticky, ...other }) {
2395
2456
  const Component = as ? as : "nav";
@@ -2424,23 +2485,21 @@ function Portal({ children, root, type = "div" }) {
2424
2485
  const portalNode = (0, import_react4.useRef)(null);
2425
2486
  (0, import_react4.useEffect)(() => {
2426
2487
  const ownerDocument = mountNode.current?.ownerDocument;
2427
- let portalElem = portalNode.current;
2428
- if (ownerDocument && portalElem) {
2488
+ if (ownerDocument && !portalNode.current) {
2429
2489
  let parent = root ? ownerDocument.querySelector(root) || ownerDocument.body : ownerDocument.body;
2430
2490
  const node = ownerDocument.createElement(type);
2431
- portalElem = node;
2491
+ portalNode.current = node;
2432
2492
  parent.appendChild(node);
2433
2493
  forceUpdate();
2434
2494
  return () => {
2435
2495
  parent.removeChild(node);
2436
2496
  };
2437
2497
  }
2438
- }, []);
2498
+ }, [root, type]);
2439
2499
  if (!portalNode.current) {
2440
2500
  return /* @__PURE__ */ React.createElement("div", { ref: mountNode });
2441
- } else {
2442
- return (0, import_react_dom.createPortal)(children, portalNode.current);
2443
2501
  }
2502
+ return (0, import_react_dom.createPortal)(children, portalNode.current);
2444
2503
  }
2445
2504
 
2446
2505
  // src/ProgressBar/index.tsx
@@ -2541,14 +2600,13 @@ function Sidebar(props) {
2541
2600
  }
2542
2601
 
2543
2602
  // src/Spinner/index.tsx
2544
- var import_react7 = __toESM(require_react(), 1);
2545
2603
  function Spinner({ className = "", fullPage = false, ...rest }) {
2546
- return /* @__PURE__ */ import_react7.default.createElement("div", { className: clsx_default(className, fullPage ? "ObSpinner-fullPage" : "ObSpinner-wrapper"), ...rest }, /* @__PURE__ */ import_react7.default.createElement("div", { className: "ObSpinner-spinner" }, /* @__PURE__ */ import_react7.default.createElement("div", { className: "ObSpinner-bullet" }), /* @__PURE__ */ import_react7.default.createElement("div", { className: "ObSpinner-bullet" }), /* @__PURE__ */ import_react7.default.createElement("div", { className: "ObSpinner-bullet" }), /* @__PURE__ */ import_react7.default.createElement("div", { className: "ObSpinner-bullet" })));
2604
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default(className, fullPage ? "ObSpinner-fullPage" : "ObSpinner-wrapper"), ...rest }, /* @__PURE__ */ React.createElement("div", { className: "ObSpinner-spinner" }, /* @__PURE__ */ React.createElement("div", { className: "ObSpinner-bullet" }), /* @__PURE__ */ React.createElement("div", { className: "ObSpinner-bullet" }), /* @__PURE__ */ React.createElement("div", { className: "ObSpinner-bullet" }), /* @__PURE__ */ React.createElement("div", { className: "ObSpinner-bullet" })));
2547
2605
  }
2548
2606
 
2549
2607
  // src/SplitContainer/index.tsx
2550
2608
  var import_localforage = __toESM(require_localforage(), 1);
2551
- var import_react8 = __toESM(require_react(), 1);
2609
+ var import_react7 = __toESM(require_react(), 1);
2552
2610
  var article = window.af?.article?.id ?? window.window?.location.pathname.substring(1).split("/")[0];
2553
2611
  var settingsStore = import_localforage.default.createInstance({
2554
2612
  name: `AfSplitContainers.${window.af?.userSession.login ?? "anonymous"}`
@@ -2582,18 +2640,31 @@ settingsStore.keys().then(
2582
2640
  )
2583
2641
  )
2584
2642
  );
2585
- var Divider = (0, import_react8.forwardRef)(function Divider2(props, ref) {
2586
- return /* @__PURE__ */ import_react8.default.createElement("div", { tabIndex: 0, className: clsx_default("ObSplitContainer-divider", props.className), ref }, /* @__PURE__ */ import_react8.default.createElement("span", null, "\u2022\u2022\u2022"));
2643
+ var Divider = (0, import_react7.forwardRef)(function Divider2(props, ref) {
2644
+ return /* @__PURE__ */ React.createElement(
2645
+ "div",
2646
+ {
2647
+ className: clsx_default("ObSplitContainer-divider", props.className),
2648
+ tabIndex: 0,
2649
+ ref,
2650
+ role: "separator",
2651
+ "aria-orientation": props.direction,
2652
+ "aria-valuemin": props.min,
2653
+ "aria-valuemax": props.max,
2654
+ "aria-valuenow": props.size
2655
+ },
2656
+ /* @__PURE__ */ React.createElement("span", null, "\u2022\u2022\u2022")
2657
+ );
2587
2658
  });
2588
2659
  function SplitRoot({ className, direction, ...props }) {
2589
- return /* @__PURE__ */ import_react8.default.createElement("div", { className: clsx_default(className, "ObSplitContainer-root", direction), ...props });
2660
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default(className, "ObSplitContainer-root", direction), ...props });
2590
2661
  }
2591
2662
  function SplitPanel(props) {
2592
2663
  let style = {
2593
2664
  flex: props.fixed ? `0 0 ${Math.floor(props.size)}px` : "1 1 100%",
2594
2665
  ...props.style
2595
2666
  };
2596
- return /* @__PURE__ */ import_react8.default.createElement("div", { className: clsx_default(props.className, "ObSplitContainer-panel"), style }, props.children);
2667
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default(props.className, "ObSplitContainer-panel"), style }, props.children);
2597
2668
  }
2598
2669
  function SplitContainer({
2599
2670
  className,
@@ -2603,25 +2674,31 @@ function SplitContainer({
2603
2674
  panelClassName,
2604
2675
  defaultFixedSize = 400,
2605
2676
  layoutVersion = 1,
2677
+ min = 0,
2678
+ max,
2606
2679
  id
2607
2680
  }) {
2608
- let [fixedSize, setFixedSize] = (0, import_react8.useState)(defaultFixedSize);
2609
- let [isDragging, setIsDragging] = (0, import_react8.useState)(false);
2610
- let dividerRef = (0, import_react8.useRef)(null);
2611
- if (import_react8.Children.count(children) !== 2) {
2681
+ let [fixedSize, setFixedSize] = (0, import_react7.useState)(defaultFixedSize);
2682
+ let [isDragging, setIsDragging] = (0, import_react7.useState)(false);
2683
+ let dividerRef = (0, import_react7.useRef)(null);
2684
+ if (import_react7.Children.count(children) !== 2) {
2612
2685
  throw Error("SplitContainer requires exactly 2 children");
2613
2686
  }
2614
- function handleFixedSizeChanged(size) {
2615
- setFixedSize((current) => {
2616
- let newValue = typeof size === "function" ? size(current) : size;
2617
- if (id) {
2618
- let key = `${article}.${id}`;
2619
- persistState(key, layoutVersion, newValue);
2687
+ let containerRef = (0, import_react7.useRef)(null);
2688
+ let [containerSize, setContainerSize] = (0, import_react7.useState)(0);
2689
+ (0, import_react7.useEffect)(() => {
2690
+ if (!containerRef.current) return;
2691
+ let resizeObserver = new ResizeObserver((entries) => {
2692
+ for (let entry of entries) {
2693
+ if (entry.contentRect) {
2694
+ setContainerSize(direction === "horizontal" ? entry.contentRect.width : entry.contentRect.height);
2695
+ }
2620
2696
  }
2621
- return newValue;
2622
2697
  });
2623
- }
2624
- (0, import_react8.useEffect)(() => {
2698
+ resizeObserver.observe(containerRef.current);
2699
+ return () => resizeObserver.disconnect();
2700
+ }, [direction]);
2701
+ (0, import_react7.useEffect)(() => {
2625
2702
  if (id) {
2626
2703
  let key = `${article}.${id}`;
2627
2704
  getSettings(key, layoutVersion).then((data) => {
@@ -2632,14 +2709,32 @@ function SplitContainer({
2632
2709
  });
2633
2710
  }
2634
2711
  }, [id, layoutVersion]);
2635
- let childrenArray = import_react8.Children.toArray(children);
2636
- (0, import_react8.useEffect)(() => {
2712
+ let childrenArray = import_react7.Children.toArray(children);
2713
+ (0, import_react7.useEffect)(() => {
2637
2714
  let divider = dividerRef.current;
2638
2715
  if (divider) {
2639
- let getNewSize = function(event) {
2716
+ let clampSize = function(size) {
2717
+ let adjustedContainerSize = containerSize - 10;
2718
+ let maxSize = Math.min(max ?? adjustedContainerSize, adjustedContainerSize);
2719
+ if (size < min) {
2720
+ size = min;
2721
+ } else if (size > maxSize) {
2722
+ size = maxSize;
2723
+ }
2724
+ return size;
2725
+ }, getNewSize = function(event) {
2640
2726
  let deltaSize = direction === "horizontal" ? event.clientX - initialPosition.clientX : event.clientY - initialPosition.clientY;
2641
2727
  deltaSize *= fixedPanel === 1 ? -1 : 1;
2642
- return initialPosition.size - deltaSize;
2728
+ return clampSize(initialPosition.size - deltaSize);
2729
+ }, handleFixedSizeChanged = function(size) {
2730
+ setFixedSize((current) => {
2731
+ let newValue = clampSize(typeof size === "function" ? size(current) : size);
2732
+ if (id) {
2733
+ let key = `${article}.${id}`;
2734
+ persistState(key, layoutVersion, newValue);
2735
+ }
2736
+ return newValue;
2737
+ });
2643
2738
  }, handlePointerUp = function(event) {
2644
2739
  let newSize = getNewSize(event);
2645
2740
  handleFixedSizeChanged(newSize);
@@ -2649,6 +2744,10 @@ function SplitContainer({
2649
2744
  }, handlePointerMove = function(event) {
2650
2745
  event.preventDefault();
2651
2746
  let newSize = getNewSize(event);
2747
+ let divider2 = dividerRef.current;
2748
+ if (divider2) {
2749
+ divider2.setAttribute("aria-valuenow", String(newSize));
2750
+ }
2652
2751
  movingPanel.style.flex = `0 0 ${newSize}px`;
2653
2752
  }, handlePointerDown = function(event) {
2654
2753
  setIsDragging(true);
@@ -2693,12 +2792,22 @@ function SplitContainer({
2693
2792
  divider?.removeEventListener("keydown", handleKeyDown);
2694
2793
  };
2695
2794
  }
2696
- }, [direction, fixedPanel]);
2697
- return /* @__PURE__ */ import_react8.default.createElement(SplitRoot, { direction, className }, /* @__PURE__ */ import_react8.default.createElement(SplitPanel, { className: clsx_default(isDragging && "dragging", panelClassName), fixed: fixedPanel === 1, size: fixedSize }, childrenArray[0]), /* @__PURE__ */ import_react8.default.createElement(Divider, { ref: dividerRef, direction, isDragging }), /* @__PURE__ */ import_react8.default.createElement(SplitPanel, { className: clsx_default(isDragging && "dragging", panelClassName), fixed: fixedPanel === 2, size: fixedSize }, childrenArray[1]));
2795
+ }, [direction, fixedPanel, layoutVersion, id, min, max, containerSize]);
2796
+ return /* @__PURE__ */ React.createElement(SplitRoot, { direction, className, ref: containerRef }, /* @__PURE__ */ React.createElement(SplitPanel, { className: clsx_default(isDragging && "dragging", panelClassName), fixed: fixedPanel === 1, size: fixedSize }, childrenArray[0]), /* @__PURE__ */ React.createElement(
2797
+ Divider,
2798
+ {
2799
+ ref: dividerRef,
2800
+ direction,
2801
+ isDragging,
2802
+ size: fixedSize,
2803
+ min,
2804
+ max: max ?? containerSize
2805
+ }
2806
+ ), /* @__PURE__ */ React.createElement(SplitPanel, { className: clsx_default(isDragging && "dragging", panelClassName), fixed: fixedPanel === 2, size: fixedSize }, childrenArray[1]));
2698
2807
  }
2699
2808
 
2700
2809
  // src/useTranslation/index.ts
2701
- var import_react9 = __toESM(require_react(), 1);
2810
+ var import_react8 = __toESM(require_react(), 1);
2702
2811
  async function translateText(text, target, apiKey) {
2703
2812
  let url = `https://translation.googleapis.com/language/translate/v2?key=${apiKey}`;
2704
2813
  let body = JSON.stringify({
@@ -2712,7 +2821,7 @@ async function translateText(text, target, apiKey) {
2712
2821
  let result = await fetch(url, options);
2713
2822
  let json = await result.json();
2714
2823
  let { data } = json;
2715
- if (data && data.translations) {
2824
+ if (data?.translations) {
2716
2825
  let [translation] = data.translations;
2717
2826
  return {
2718
2827
  from: translation.detectedSourceLanguage,
@@ -2722,12 +2831,12 @@ async function translateText(text, target, apiKey) {
2722
2831
  return false;
2723
2832
  }
2724
2833
  function useTranslation(text, targetLanguage, apiKey) {
2725
- let [translation, setTranslation] = (0, import_react9.useState)("");
2726
- let [error, setError] = (0, import_react9.useState)(null);
2727
- let [from, setSourceLang] = (0, import_react9.useState)(null);
2728
- let [isTranslating, setIsTranslating] = (0, import_react9.useState)(false);
2729
- let textRef = (0, import_react9.useRef)(text);
2730
- (0, import_react9.useEffect)(() => {
2834
+ let [translation, setTranslation] = (0, import_react8.useState)("");
2835
+ let [error, setError] = (0, import_react8.useState)(null);
2836
+ let [from, setSourceLang] = (0, import_react8.useState)(null);
2837
+ let [isTranslating, setIsTranslating] = (0, import_react8.useState)(false);
2838
+ let textRef = (0, import_react8.useRef)(text);
2839
+ (0, import_react8.useEffect)(() => {
2731
2840
  textRef.current = text;
2732
2841
  return () => {
2733
2842
  setTranslation("");
@@ -2762,52 +2871,39 @@ function useTranslation(text, targetLanguage, apiKey) {
2762
2871
  };
2763
2872
  }
2764
2873
 
2765
- // src/ValueToggle/index.tsx
2766
- var import_react10 = __toESM(require_react(), 1);
2767
- var valueToggleId = 0;
2768
- function ValueToggleInner({ className, onChange, defaultValue, options, value, ...other }, ref) {
2769
- const wrapperRef = (0, import_react10.useRef)(null);
2770
- const [toggleName] = (0, import_react10.useState)("obet-value-toggle-" + String(++valueToggleId));
2771
- const isControlled = value !== void 0;
2772
- (0, import_react10.useImperativeHandle)(ref, () => {
2773
- const e = wrapperRef.current?.querySelector("input");
2774
- return {
2775
- focus: () => e?.focus(),
2776
- blur: () => e?.blur(),
2777
- value: (e?.querySelector("input:checked")).value
2778
- };
2779
- });
2780
- return /* @__PURE__ */ React.createElement("fieldset", { className, ...other }, /* @__PURE__ */ React.createElement("div", { className: "ObValueToggle-root", ref: wrapperRef }, options.map((option) => {
2781
- const isObj = typeof option === "object";
2782
- const optValue = isObj ? option.value : option;
2783
- const props = {
2784
- value: optValue
2785
- };
2786
- if (isControlled) {
2787
- props.checked = value === optValue;
2788
- } else {
2789
- props.defaultChecked = defaultValue === optValue;
2790
- }
2791
- if (typeof onChange === "function") {
2792
- props.onChange = () => onChange(optValue);
2793
- }
2794
- if (isObj) {
2795
- Object.assign(props, option);
2796
- }
2797
- return /* @__PURE__ */ React.createElement("label", { key: optValue, className: "ObValueToggle-option" }, /* @__PURE__ */ React.createElement("input", { type: "radio", className: "ObValueToggle-input", name: toggleName, ...props }), /* @__PURE__ */ React.createElement("span", { className: "ObValueToggle-label" }, isObj ? option.label || optValue : optValue));
2798
- })));
2799
- }
2800
- var ValueToggle = (0, import_react10.forwardRef)(ValueToggleInner);
2874
+ // src/ValueToggleGroup/index.tsx
2875
+ var import_react9 = __toESM(require_react(), 1);
2876
+ var ValueToggleGroup = (0, import_react9.forwardRef)(function ValueToggleGroup2({ options, value, defaultValue, onChange, className, name, id, style, orientation = "horizontal" }, ref) {
2877
+ let randomId = (0, import_react9.useId)();
2878
+ let groupName = name || `toggle-${id ?? randomId}`;
2879
+ let isControlled = value !== void 0;
2880
+ return /* @__PURE__ */ React.createElement("fieldset", { className: clsx_default("ObValueToggleGroup", orientation, className), role: "radiogroup", ref, style }, options.map((opt) => {
2881
+ return /* @__PURE__ */ React.createElement("label", { key: opt.value, className: clsx_default("ObValueToggleOption", { disabled: opt.disabled }) }, /* @__PURE__ */ React.createElement(
2882
+ "input",
2883
+ {
2884
+ type: "radio",
2885
+ name: groupName,
2886
+ value: opt.value,
2887
+ checked: isControlled ? value === opt.value : void 0,
2888
+ defaultChecked: !isControlled ? defaultValue === opt.value : void 0,
2889
+ onChange: () => onChange?.(opt.value),
2890
+ disabled: opt.disabled
2891
+ }
2892
+ ), /* @__PURE__ */ React.createElement("span", { className: "ObValueToggleLabel" }, opt.label ?? opt.value));
2893
+ }));
2894
+ });
2801
2895
  export {
2802
2896
  Card,
2803
2897
  CardColumn,
2804
2898
  CardDetail,
2805
2899
  CardLabel,
2900
+ CardStep,
2901
+ CardStepList,
2806
2902
  Checkbox,
2807
2903
  ColorCard,
2808
2904
  DateNavigator,
2809
- List as LinkedList,
2810
- ListItem as LinkedListItem,
2905
+ LinkedList,
2906
+ LinkedListItem,
2811
2907
  PageBanner,
2812
2908
  BannerImage as PageBannerImage,
2813
2909
  Tab as PageBannerTab,
@@ -2818,7 +2914,7 @@ export {
2818
2914
  Sidebar,
2819
2915
  Spinner,
2820
2916
  SplitContainer,
2821
- ValueToggle,
2917
+ ValueToggleGroup,
2822
2918
  useTranslation
2823
2919
  };
2824
2920
  /*! Bundled license information:
@@ -1,2 +1,2 @@
1
- @charset "UTF-8";.ObCheckbox-root{--check-width: 2rem;--bg-color: var(--brand-dark, rgba(42, 65, 50, .5));--bg-color-hover: var(--brand-primary, rgba(42, 65, 50, .8));--bg-color-selected: var(--brand-light);display:inline-block;height:var(--check-width);margin-bottom:0}.ObCheckbox-root:focus-within .ObCheckbox-box{border:.1rem solid black}.ObCheckbox-root.Ob-disabled{--bg-color: rgba(150, 150, 150, .5);--bg-color-hover: var(--bg-color)}.ObCheckbox-box{position:relative;background:var(--bg-color);transition:background .3s ease;overflow:hidden;border-radius:calc(var(--check-width) / 15);height:var(--check-width);width:var(--check-width)}.ObCheckbox-box:hover{background:var(--bg-color-hover)}.ObCheckbox-label{position:relative;margin-bottom:0;overflow:hidden}.ObCheckbox-label:focus{outline:none}.ObCheckbox-mark{color:#fff;display:inline-block;font-size:calc(var(--check-width) * .4);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transition:all .3s ease-in-out;transition-delay:0ms;transform:translate(-50%,-50%) scale(6)}.ObCheckbox-input{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.ObCheckbox-input:focus{outline:none}.check_Label{margin-bottom:0;flex-grow:1}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label{animation:animOn .8s 1 forwards}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label .ObCheckbox-box{background:var(--bg-color-selected)}.ObCheckbox-input:checked+.ObCheckbox-label .ObCheckbox-box .ObCheckbox-mark{transform:translate(-50%,-50%) scale(1);transition-delay:.2s;opacity:1}.ObCheckbox-root.Ob-disabled .ObCheckbox-box{cursor:not-allowed}@keyframes animOn{40%{transform:scaleY(.4) scaleX(2)}50%{transform:scaleY(1.2) scaleX(.6)}60%{transform:scaleY(.8) scaleX(1.4)}70%{transform:scaleY(1.1) scaleX(.9)}to{transform:scaleY(1) scaleX(1)}}.ObColorCard-root{--bg-color-border: black;--bg-color-main: white;--bg-size: .75rem;--card-color: rgb(0, 0, 0);align-items:stretch;background-image:linear-gradient(to right,#116069,#116069 .75rem,#fff .75rem,#fff);background-image:linear-gradient(to right,var(--bg-color-border),var(--bg-color-border) var(--bg-size),var(--bg-color-main) var(--bg-size),var(--bg-color-main));border-radius:.25rem;box-shadow:0 1px 12px #00000026,0 1px 6px #00000040;color:#666;cursor:pointer;display:flex;font-family:Variable Bahnschrift,Bahnschrift,Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:1rem;min-height:10rem;overflow:hidden;transition:all ease-in-out .3s}.ObColorCard-root:nth-of-type(5n+1){--bg-color-border: rgb(178, 108, 190)}.ObColorCard-root:nth-of-type(5n+2){--bg-color-border: rgb(79, 164, 61)}.ObColorCard-root:nth-of-type(5n+3){--bg-color-border: rgb(246, 170, 23)}.ObColorCard-root:nth-of-type(5n+4){--bg-color-border: rgb(218, 93, 83)}.ObColorCard-root:nth-of-type(5n+5){--bg-color-border: rgb(23, 162, 184)}.ObColorCard-root:hover,.ObColorCard-root:focus{--bg-color-main: #f5f5f5;box-shadow:0 3px 18px #00000026,0 3px 12px #00000040;color:#666;text-decoration:none}@media screen and (min-width: 48rem){.ObColorCard-root{font-size:1.2rem}}.ObColorCard-column{display:flex;flex:1 1 100%;flex-direction:column;justify-content:space-between;margin:1rem 0;overflow:hidden;padding:.5rem 1.5rem .5rem 1rem;text-overflow:ellipsis}.ObColorCard-column:first-child{margin-left:.75rem;margin-left:var(--bg-size)}.ObColorCard-column.ObColorCard-minor{border-right:1px solid #e3e3e3;flex:0 0 4rem;transition:margin ease-in-out .3s}@media screen and (min-width: 48rem){.ObColorCard-column.ObColorCard-minor{flex:0 0 8rem}}.ObColorCard-detailLabel{color:#ccc;font-size:.8rem;text-transform:uppercase}.ObColorCard-detail:not(:last-child){margin-right:1.5rem}.ObColorCard-detail.ObColorCard-primary,.ObColorCard-detail.ObColorCard-primary .ObColorCard-detailValue{font-size:1.25rem;font-weight:300}.ObColorCard-detail.ObColorCard-primary .ObColorCard-detailValue{color:unset}@media screen and (min-width: 48rem){.ObColorCard-detail{font-size:1rem}}.ObColorCard-detailValue{color:#999}.ObColorCard-label{position:relative;padding-left:1.5rem}.ObColorCard-label:not(:last-child){margin-bottom:1rem}.ObColorCard-label:not(:last-child):after{content:"";position:absolute;width:.2rem;height:calc(100% + 1rem);border-left:.2rem dotted #666;left:.25rem;top:.5rem;z-index:0}.ObColorCard-label:before{background:#fff;border:.2rem solid hsl(186,72%,24%);border:.2rem solid var(--bg-color-border);border-radius:50%;content:"";display:block;height:.75rem;left:0;position:absolute;top:.3rem;width:.75rem;z-index:1}.ObDateNavigator-icon{display:inline-block}.ObDateNavigator-icon svg{width:.625em;position:relative;top:-1px}.ObDateNavigator-root{background-color:#f3f4f7;background-color:var(--block-header-color-bg);display:flex;font-size:1rem}.ObDateNavigator-arrow{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;align-items:center;flex:0 0 3rem;justify-content:center;height:3rem;cursor:pointer;text-align:center}.ObDateNavigator-arrow::-moz-focus-inner{border:0;padding:0}.ObDateNavigator-arrow:hover{background-color:#e3e3e3;background-color:var(--block-header-button-hover)}.ObDateNavigator-arrowLeft{border-right:1px solid #dddddd;order:1}.ObDateNavigator-arrowRight{border-left:1px solid #dddddd;order:3}.ObDateNavigator-date{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;order:2;height:3rem;text-align:center}.ObLinkedList-root{list-style-type:none;margin-left:0;padding-left:0}.ObLinkedList-item{display:flex;align-items:center;flex-direction:row}.ObLinkedList-leftColumn{flex:1 1 4em;font-size:.75em;padding:0 1em;text-align:center}.ObLinkedList-rightColumn{flex:1 1 100%;padding:1em 1em 1em 1.5em}.ObLinkedList-line{display:flex;align-self:stretch;flex:0 0 .2em;background:#fff;position:relative}.ObLinkedList-bullet{background:#fff;border:1px solid rgba(50,50,50,.25);border-radius:.55em;height:.7em;width:.7em;position:absolute;left:0;top:50%;transform:translate(-.25em,-50%)}.ObLinkedList-card{background:#fff;border:1px solid;border-color:#e5e6e9 #dfe0e4 #d0d1d5;border-radius:.1875em;color:inherit;cursor:pointer;flex:100% 1 1;position:relative}.ObLinkedList-card:before{border-bottom:.5em solid transparent;border-right:1em solid white;border-top:.5em solid transparent;content:" ";filter:drop-shadow(-1px 0px 1px rgba(50,50,50,.2));height:1em;left:-1em;margin-top:-.5em;position:absolute;top:50%;width:1em}.ObLinkedList-card:hover{background-color:#edeff3!important;color:inherit;text-decoration:inherit}.ObLinkedList-card:hover:before{border-right-color:#edeff3!important}.ObPageBanner-root{background-color:#116069;background-color:var(--brand-dark);box-shadow:0 8px 8px #0003;color:#fff}.ObPageBanner-root a{color:#b3d5e6}.ObPageBanner-inner{display:flex;align-items:center;flex-direction:column}@media screen and (min-width: 768px){.ObPageBanner-inner{align-items:flex-start;flex-direction:row}}.ObPageBanner-plantTitle{font-size:2rem}@media screen and (min-width: 992px){.ObPageBanner-plantTitle{font-size:3rem}}.ObPageBanner-bannerImage{align-self:stretch;background-color:#ddd;display:inline-block;height:20vh;object-fit:cover;object-position:center center;width:100%}@media screen and (min-width: 576px){.ObPageBanner-bannerImage{align-self:center;margin:0;margin-right:1rem;border:.4rem solid white;border-radius:50%;height:150px;width:150px}}@media screen and (min-width: 992px){.ObPageBanner-bannerImage{height:250px;width:250px}}.ObPageBanner-bannerTitle{margin-bottom:1rem;margin-top:1rem;font-size:2rem}@media screen and (min-width: 768px){.ObPageBanner-bannerTitle{margin-top:0}}@media screen and (min-width: 992px){.ObPageBanner-bannerTitle{font-size:3rem}}.ObPageBanner-tabList.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:1000}.ObPageBanner-tabListInner{overflow-x:auto;scrollbar-width:thin;white-space:nowrap}.ObPageBanner-tab{border-bottom:.25rem solid transparent;display:inline-block;margin-top:.5rem;min-width:8rem;padding:.5rem 1rem;text-align:center;text-transform:capitalize}.ObPageBanner-tab.active{border-color:#fff}.ObProgressBar-root{height:1.5em;width:100%;appearance:none;-webkit-appearance:none;background-color:#f5f5f5;border:none;border-radius:3px;box-shadow:0 2px 3px #0003 inset;color:#4169e1;position:relative}.ObProgressBar-root::-webkit-progress-bar{background-color:#f5f5f5;border-radius:3px;box-shadow:0 2px 3px #0003 inset}.ObProgressBar-root::-webkit-progress-value{background-image:linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),linear-gradient(top,#ffffff40,#0003),linear-gradient(left,var(--brand-primary, hsl(186, 72%, 24%)),var(--brand-light, hsl(186, 72%, 37%)));background-image:-webkit-linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),-webkit-linear-gradient(top,rgba(255,255,255,.25),rgba(0,0,0,.2)),-webkit-linear-gradient(left,var(--brand-primary),hsl(186,72%,24%),var(--brand-light, hsl(186, 72%, 37%)));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;position:relative;transition:width .5s ease-out}.ObProgressBar-root::-webkit-progress-value:after{background-color:#fff;content:"";border-radius:100%;height:5px;position:absolute;right:7px;top:7px;width:5px}.ObProgressBar-root::-moz-progress-bar{background-image:linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),linear-gradient(top,#ffffff40,#0003),linear-gradient(left,var(--brand-primary),var(--brand-light));background-image:-moz-linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),-moz-linear-gradient(top,rgba(255,255,255,.25),rgba(0,0,0,.2)),-moz-linear-gradient(left,var(--brand-primary),var(--brand-light));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;transition:width .5s ease-out}.ObSidebar-root{position:fixed;bottom:0;left:0;top:0;z-index:2;background-color:#fff;transform:translate(-100%);transition:transform .2s ease-out;will-change:transform;overflow-y:auto}.ObSidebar-root.Ob-right{left:unset;right:0;transform:translate(100%)}.ObSidebar-root.Ob-open{transform:translate(0)}.ObSidebar-root.ObSidebar-shadow{box-shadow:2px 2px 4px #00000026}.ObSidebar-root.ObSidebar-shadow.Ob-right{box-shadow:-2px 2px 4px #00000026}.ObSidebar-overlay{position:fixed;inset:0;z-index:1;opacity:0;visibility:hidden;transition:opacity .3s ease-out,visibility .3s ease-out;background-color:#0000004d}.ObSidebar-overlay.Ob-open{opacity:1;visibility:visible}.ObSpinner-root{display:inline-block}.ObSpinner-fullPage{display:flex;align-items:center;justify-content:center;height:100vh;width:100vw}.ObSpinner-spinner{display:inline-block;height:.75em;position:relative;width:2.5em}.ObSpinner-bullet{animation-timing-function:cubic-bezier(0,1,1,0);background:#666;border-radius:50%;height:.5em;position:absolute;top:.2rem;width:.5em}.ObSpinner-bullet:nth-child(1){animation:scaleAnimation .6s infinite ease-in-out;left:.25em}.ObSpinner-bullet:nth-child(2){animation:translateAnimation .6s infinite ease-in-out;left:.25em}.ObSpinner-bullet:nth-child(3){animation:translateAnimation .6s infinite ease-in-out;left:1.2em}.ObSpinner-bullet:nth-child(4){animation:scaleAnimation .6s infinite ease-in-out reverse;left:2em}@keyframes scaleAnimation{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes translateAnimation{0%{transform:translate(0)}to{transform:translate(.825em)}}.\1f616 {display:initial}.ObSplitContainer-root{display:flex;flex-direction:column;height:100%;width:100%}.ObSplitContainer-root.horizontal{flex-direction:row}.ObSplitContainer-panel{overflow:hidden}.ObSplitContainer-divider{flex:0 0 .5rem;background-color:transparent;line-height:.75;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.ObSplitContainer-divider:focus{background-color:#0000004d}.ObSplitContainer-root.horizontal>.ObSplitContainer-divider{cursor:ew-resize;writing-mode:vertical-lr}.ObSplitContainer-panel.dragging{pointer-events:none}.ObValueToggle-root{display:flex;align-items:center}.ObValueToggle-option{margin-bottom:0}.ObValueToggle-label{cursor:pointer;font-size:.8em;margin:0 .2em;padding:.3em .5em;text-transform:uppercase}.ObValueToggle-label:hover{background:#ccc}.ObValueToggle-input:checked+.ObValueToggle-label{--color-bg: var(--brand-dark);background-color:#666;background-color:var(--color-bg);cursor:default;color:#fff}.ObValueToggle-input:checked:focus-within+.ObValueToggle-label{--color-bg: var(--brand-light)}.ObValueToggle-input:checked:hover+.ObValueToggle-label{background-color:#666;background-color:var(--color-bg)}.ObValueToggle-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
1
+ @charset "UTF-8";.ObCheckbox-root{--check-width: 2rem;--bg-color: var(--brand-dark, rgba(42, 65, 50, .5));--bg-color-hover: var(--brand-primary, rgba(42, 65, 50, .8));--bg-color-selected: var(--brand-light);display:inline-block;height:var(--check-width);margin-bottom:0}.ObCheckbox-root:focus-within .ObCheckbox-box{border:.1rem solid black}.ObCheckbox-root.Ob-disabled{--bg-color: rgba(150, 150, 150, .5);--bg-color-hover: var(--bg-color)}.ObCheckbox-box{position:relative;background:var(--bg-color);transition:background .3s ease;overflow:hidden;border-radius:calc(var(--check-width) / 15);height:var(--check-width);width:var(--check-width)}.ObCheckbox-box:hover{background:var(--bg-color-hover)}.ObCheckbox-label{position:relative;margin-bottom:0;overflow:hidden}.ObCheckbox-label:focus{outline:none}.ObCheckbox-mark{color:#fff;display:inline-block;font-size:calc(var(--check-width) * .4);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transition:all .3s ease-in-out;transition-delay:0ms;transform:translate(-50%,-50%) scale(6)}.ObCheckbox-input{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.ObCheckbox-input:focus{outline:none}.ObCheckbox-label{display:flex;gap:.5rem;align-items:center;overflow:visible}.ObCheckbox-root.Ob-reverse .ObCheckbox-label{flex-direction:row-reverse}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label .ObCheckbox-box{animation:animOn .6s 1 forwards}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label .ObCheckbox-box{background:var(--bg-color-selected)}.ObCheckbox-input:checked+.ObCheckbox-label .ObCheckbox-box .ObCheckbox-mark{transform:translate(-50%,-50%) scale(1);transition-delay:.2s;opacity:1}.ObCheckbox-root.Ob-disabled .ObCheckbox-box{cursor:not-allowed}@keyframes animOn{40%{transform:scaleY(.4) scaleX(2)}50%{transform:scaleY(1.2) scaleX(.6)}60%{transform:scaleY(.8) scaleX(1.4)}70%{transform:scaleY(1.1) scaleX(.9)}to{transform:scaleY(1) scaleX(1)}}.ObColorCard-root{--bg-color-border: black;--bg-color-main: white;--bg-size: .75rem;--card-color: rgb(0, 0, 0);display:flex;align-items:stretch;min-height:10rem;overflow:hidden;border-radius:.25rem;box-shadow:0 1px 12px #00000026,0 1px 6px #00000040;color:#666;background-image:linear-gradient(to right,var(--bg-color-border),var(--bg-color-border) var(--bg-size),var(--bg-color-main) var(--bg-size),var(--bg-color-main));font-family:Variable Bahnschrift,Bahnschrift,Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:1rem;transition:all ease-in-out .3s;cursor:pointer;&:nth-of-type(5n+1){--bg-color-border: rgb(178, 108, 190)}&:nth-of-type(5n+2){--bg-color-border: rgb(79, 164, 61)}&:nth-of-type(5n+3){--bg-color-border: rgb(246, 170, 23)}&:nth-of-type(5n+4){--bg-color-border: rgb(218, 93, 83)}&:nth-of-type(5n+5){--bg-color-border: rgb(23, 162, 184)}&:hover,&:focus{--bg-color-main: #f5f5f5;box-shadow:0 3px 18px #00000026,0 3px 12px #00000040;text-decoration:none}@media screen and (min-width: 48rem){font-size:1.2rem}}.ObColorCard-column{display:flex;flex:1 1 100%;flex-direction:column;justify-content:space-between;margin:1rem 0;padding:.5rem 1.5rem .5rem 1rem;overflow:hidden;text-overflow:ellipsis;&:first-child{margin-left:var(--bg-size, .75rem)}&.ObColorCard-minor{flex:0 0 4rem;border-right:1px solid #e3e3e3;transition:margin ease-in-out .3s;@media screen and (min-width: 48rem){flex:0 0 8rem}}}.ObColorCard-detailLabel{color:#696969;font-size:.8rem;text-transform:uppercase}.ObColorCard-detail{&:not(:last-child){margin-right:1.5rem}&.ObColorCard-primary,&.ObColorCard-primary .ObColorCard-detailValue{font-size:1.25rem;font-weight:300}&.ObColorCard-primary .ObColorCard-detailValue{color:unset}@media screen and (min-width: 48rem){font-size:1rem}}.ObColorCard-detailValue{color:#555}.ObColorCard-stepList{display:flex;flex-direction:column;gap:1rem}.ObColorCard-step{position:relative;text-box-trim:trim-both;display:flex;align-items:flex-start;gap:.5rem}.ObColorCard-step:before{flex:.6em 0 0;content:"";position:relative;top:.25em;width:.6em;height:.6em;background:#fff;border:2px solid var(--bg-color-border, #999);border-radius:50%;box-sizing:border-box;z-index:1}.ObColorCard-step:not(:last-child):after{content:"";position:absolute;top:1em;left:calc(.3em - 1px);height:calc(100% - .8875em + 1rem);border-left:2px dotted #999;z-index:0}.ObDateNavigator-icon{display:inline-block}.ObDateNavigator-icon svg{width:.625em;position:relative;top:-1px}.ObDateNavigator-root{background-color:#f3f4f7;background-color:var(--block-header-color-bg);display:flex;font-size:1rem;outline:none}.ObDateNavigator-root:focus-visible{outline:2px solid var(--brand-dark, #336699);outline-offset:2px}.ObDateNavigator-arrow{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;align-items:center;flex:0 0 3rem;justify-content:center;height:3rem;cursor:pointer;text-align:center}.ObDateNavigator-arrow::-moz-focus-inner{border:0;padding:0}.ObDateNavigator-arrow:hover{background-color:#e3e3e3;background-color:var(--block-header-button-hover)}.ObDateNavigator-arrowLeft{border-right:1px solid #dddddd;order:1}.ObDateNavigator-arrowRight{border-left:1px solid #dddddd;order:3}.ObDateNavigator-date{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;order:2;height:3rem;text-align:center}.ObDateNavigator-today{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;order:4;padding:0 1rem;height:3rem;display:flex;align-items:center;justify-content:center;font-size:.875rem;color:var(--brand-dark, #336699);text-transform:uppercase;cursor:pointer;text-wrap:nowrap;border-left:1px solid #dddddd}.ObDateNavigator-today::-moz-focus-inner{border:0;padding:0}.ObDateNavigator-today:hover{background-color:var(--block-header-button-hover)}.ObDateNavigator-today:focus-visible{outline:2px solid var(--brand-dark, #336699);outline-offset:2px}:root{--ob-linked-list-bullet-size: .7em;--ob-linked-list-line-width: .2em}.ObLinkedList-root{list-style-type:none;margin-left:0;padding-left:0}.ObLinkedList-item{display:flex;align-items:center;flex-direction:row}.ObLinkedList-leftColumn{flex:1 1 4em;font-size:.75em;padding:0 1em;text-align:center}.ObLinkedList-rightColumn{flex:1 1 100%;padding:1em 1em 1em 1.5em}.ObLinkedList-line{display:flex;align-self:stretch;flex:0 0 .2em;background:#fff;position:relative}.ObLinkedList-bullet{background:#fff;border:1px solid rgba(50,50,50,.25);border-radius:.55em;height:.7em;width:.7em;position:absolute;left:0;top:50%;transform:translate(calc(-1 * var(--ob-linked-list-bullet-size) / 2 + var(--ob-linked-list-line-width) / 2),-50%)}.ObLinkedList-card{display:block;background:#fff;border:1px solid;border-color:#e5e6e9 #dfe0e4 #d0d1d5;border-radius:.1875em;color:inherit;cursor:pointer;flex:100% 1 1;position:relative}.ObLinkedList-card:before{border-bottom:.5em solid transparent;border-right:1em solid white;border-top:.5em solid transparent;content:" ";filter:drop-shadow(-1px 0px 1px rgba(50,50,50,.2));height:1em;left:-1em;margin-top:-.5em;position:absolute;top:50%;width:1em}.ObLinkedList-card:hover{background-color:#edeff3!important;color:inherit;text-decoration:inherit}.ObLinkedList-card:hover:before{border-right-color:#edeff3!important}.ObPageBanner-root{background-color:#116069;background-color:var(--brand-dark);box-shadow:0 8px 8px #0003;color:#fff}.ObPageBanner-root a{color:#b3d5e6}.ObPageBanner-inner{display:flex;align-items:center;flex-direction:column}@media screen and (min-width: 768px){.ObPageBanner-inner{align-items:flex-start;flex-direction:row}}.ObPageBanner-plantTitle{font-size:2rem}@media screen and (min-width: 992px){.ObPageBanner-plantTitle{font-size:3rem}}.ObPageBanner-bannerImage{align-self:stretch;background-color:#ddd;display:inline-block;height:20vh;object-fit:cover;object-position:center center;width:100%}@media screen and (min-width: 576px){.ObPageBanner-bannerImage{align-self:center;margin:0;margin-right:1rem;border:.4rem solid white;border-radius:50%;height:150px;width:150px}}@media screen and (min-width: 992px){.ObPageBanner-bannerImage{height:250px;width:250px}}.ObPageBanner-bannerTitle{margin-bottom:1rem;margin-top:1rem;font-size:2rem}@media screen and (min-width: 768px){.ObPageBanner-bannerTitle{margin-top:0}}@media screen and (min-width: 992px){.ObPageBanner-bannerTitle{font-size:3rem}}.ObPageBanner-tabList.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:1000}.ObPageBanner-tabListInner{overflow-x:auto;scrollbar-width:thin;white-space:nowrap}.ObPageBanner-tab{border-bottom:.25rem solid transparent;display:inline-block;margin-top:.5rem;min-width:8rem;padding:.5rem 1rem;text-align:center;text-transform:capitalize}.ObPageBanner-tab.active{border-color:#fff}.ObProgressBar-root{height:1.5em;width:100%;appearance:none;-webkit-appearance:none;background-color:#f5f5f5;border:none;border-radius:3px;box-shadow:0 2px 3px #0003 inset;color:#4169e1;position:relative}.ObProgressBar-root::-webkit-progress-bar{background-color:#f5f5f5;border-radius:3px;box-shadow:0 2px 3px #0003 inset}.ObProgressBar-root::-webkit-progress-value{background-image:linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),linear-gradient(top,#ffffff40,#0003),linear-gradient(left,var(--brand-primary),var(--brand-light));background-image:-webkit-linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),-webkit-linear-gradient(top,rgba(255,255,255,.25),rgba(0,0,0,.2)),-webkit-linear-gradient(left,var(--brand-primary),var(--brand-light));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;position:relative;transition:width .5s ease-out}.ObProgressBar-root::-webkit-progress-value:after{background-color:#fff;content:"";border-radius:100%;height:5px;position:absolute;right:7px;top:7px;width:5px}.ObProgressBar-root::-moz-progress-bar{background-image:linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),linear-gradient(top,#ffffff40,#0003),linear-gradient(left,var(--brand-primary),var(--brand-light));background-image:-moz-linear-gradient(135deg,transparent,transparent 33%,rgba(0,0,0,.1) 33%,rgba(0,0,0,.1) 66%,transparent 66%),-moz-linear-gradient(top,rgba(255,255,255,.25),rgba(0,0,0,.2)),-moz-linear-gradient(left,var(--brand-primary),var(--brand-light));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;transition:width .5s ease-out}.ObSidebar-root{position:fixed;bottom:0;left:0;top:0;z-index:2;background-color:#fff;transform:translate(-100%);transition:transform .2s ease-out;will-change:transform;overflow-y:auto}.ObSidebar-root.Ob-right{left:unset;right:0;transform:translate(100%)}.ObSidebar-root.Ob-open{transform:translate(0)}.ObSidebar-root.ObSidebar-shadow{box-shadow:2px 2px 4px #00000026}.ObSidebar-root.ObSidebar-shadow.Ob-right{box-shadow:-2px 2px 4px #00000026}.ObSidebar-overlay{position:fixed;inset:0;z-index:1;opacity:0;visibility:hidden;transition:opacity .3s ease-out,visibility .3s ease-out;background-color:#0000004d}.ObSidebar-overlay.Ob-open{opacity:1;visibility:visible}.ObSpinner-wrapper,.ObSpinner-fullPage{--bullet-size: .5em}.ObSpinner-root{display:inline-block}.ObSpinner-fullPage{display:flex;align-items:center;justify-content:center;height:100vh;width:100vw}.ObSpinner-spinner{display:inline-block;height:calc(var(--bullet-size) * 1.5);position:relative;width:calc(var(--bullet-size) * 5)}.ObSpinner-bullet{animation-timing-function:cubic-bezier(0,1,1,0);background:#666;border-radius:50%;height:var(--bullet-size);position:absolute;top:.2rem;width:var(--bullet-size);&:nth-child(1){animation:scaleAnimation .6s infinite ease-in-out;left:calc(var(--bullet-size) * .5)}&:nth-child(2){animation:translateAnimation .6s infinite ease-in-out;left:calc(var(--bullet-size) * .5)}&:nth-child(3){animation:translateAnimation .6s infinite ease-in-out;left:calc(var(--bullet-size) * 2.4)}&:nth-child(4){animation:scaleAnimation .6s infinite ease-in-out reverse;left:calc(var(--bullet-size) * 4)}}@keyframes scaleAnimation{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes translateAnimation{0%{transform:translate(0)}to{transform:translate(calc(var(--bullet-size) * 1.65))}}.\1f616 {display:initial}.ObSplitContainer-root{display:flex;flex-direction:column;height:100%;width:100%}.ObSplitContainer-root.horizontal{flex-direction:row}.ObSplitContainer-panel{overflow:hidden}.ObSplitContainer-divider{flex:0 0 .5rem;background-color:transparent;line-height:.75;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.ObSplitContainer-divider:focus{background-color:#0000004d}.ObSplitContainer-root.horizontal>.ObSplitContainer-divider{cursor:ew-resize;writing-mode:vertical-lr}.ObSplitContainer-panel.dragging{pointer-events:none}.ObValueToggleGroup{padding:.25rem;border:2px solid rgb(0 0 0 / .2);border-radius:4px;display:flex;gap:.25rem;flex-wrap:wrap;&.vertical{flex-direction:column;align-items:center;.ObValueToggleOption{width:100%;.ObValueToggleLabel{width:100%;text-align:center}}}&:focus-within{border-color:#000c}}.ObValueToggleOption{display:flex;align-items:center;margin:0;position:relative}.ObValueToggleOption input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ObValueToggleLabel{font-size:.8em;margin:0 .2em;padding:.3em .5em;text-transform:uppercase;transition:background .2s ease,color .2s ease;border-radius:4px}.ObValueToggleOption:hover input:not(:disabled)+.ObValueToggleLabel{cursor:pointer;background:#ccc}.ObValueToggleOption input:checked+.ObValueToggleLabel{--color-bg: var(--brand-dark);background-color:var(--color-bg);color:#fff;cursor:default}.ObValueToggleOption input:disabled+.ObValueToggleLabel{color:#00000080}.ObValueToggleOption input:checked:focus-visible+.ObValueToggleLabel{--color-bg: var(--brand-light);outline:2px solid var(--brand-light)}.ObValueToggleOption input:checked:hover+.ObValueToggleLabel{background-color:var(--color-bg)}
2
2
  /*# sourceMappingURL=ob.react.min.css.map */