@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
@@ -2204,17 +2204,19 @@ var ob;
2204
2204
  });
2205
2205
 
2206
2206
  // src/index.ts
2207
- var src_exports = {};
2208
- __export(src_exports, {
2207
+ var index_exports = {};
2208
+ __export(index_exports, {
2209
2209
  Card: () => Card,
2210
2210
  CardColumn: () => CardColumn,
2211
2211
  CardDetail: () => CardDetail,
2212
2212
  CardLabel: () => CardLabel,
2213
+ CardStep: () => CardStep,
2214
+ CardStepList: () => CardStepList,
2213
2215
  Checkbox: () => Checkbox,
2214
2216
  ColorCard: () => ColorCard,
2215
2217
  DateNavigator: () => DateNavigator,
2216
- LinkedList: () => List,
2217
- LinkedListItem: () => ListItem,
2218
+ LinkedList: () => LinkedList,
2219
+ LinkedListItem: () => LinkedListItem,
2218
2220
  PageBanner: () => PageBanner,
2219
2221
  PageBannerImage: () => BannerImage,
2220
2222
  PageBannerTab: () => Tab,
@@ -2225,7 +2227,7 @@ var ob;
2225
2227
  Sidebar: () => Sidebar,
2226
2228
  Spinner: () => Spinner,
2227
2229
  SplitContainer: () => SplitContainer,
2228
- ValueToggle: () => ValueToggle,
2230
+ ValueToggleGroup: () => ValueToggleGroup,
2229
2231
  useTranslation: () => useTranslation
2230
2232
  });
2231
2233
 
@@ -2250,9 +2252,11 @@ var ob;
2250
2252
  function Mark(props) {
2251
2253
  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" }));
2252
2254
  }
2253
- var Checkbox = (0, import_react.forwardRef)(function Checkbox2({ className, disabled = false, id, onChange = () => null, title, value, ...other }, ref) {
2254
- const inputId = (0, import_react.useId)() + (id ?? "");
2255
- const input = (0, import_react.useRef)(null);
2255
+ var Checkbox = (0, import_react.forwardRef)(function Checkbox2({ className, disabled = false, id, onChange = () => null, label, title, reverse, value, ...other }, ref) {
2256
+ let inputId = (0, import_react.useId)();
2257
+ inputId = id ?? inputId;
2258
+ let inputIdRef = `#${inputId}`;
2259
+ let input = (0, import_react.useRef)(null);
2256
2260
  (0, import_react.useEffect)(() => {
2257
2261
  if (typeof ref === "function") {
2258
2262
  ref(input.current);
@@ -2274,39 +2278,47 @@ var ob;
2274
2278
  }
2275
2279
  function handleKeyDown(evt) {
2276
2280
  if (evt.nativeEvent) {
2277
- const { nativeEvent } = evt;
2281
+ let { nativeEvent } = evt;
2278
2282
  if (nativeEvent.key === " ") {
2279
2283
  nativeEvent.preventDefault();
2280
2284
  input.current?.click();
2281
2285
  }
2282
2286
  }
2283
2287
  }
2284
- return /* @__PURE__ */ React.createElement("div", { className: clsx_default("ObCheckbox-root", disabled && "Ob-disabled", className), title }, /* @__PURE__ */ React.createElement(
2285
- "input",
2288
+ return /* @__PURE__ */ React.createElement(
2289
+ "div",
2286
2290
  {
2287
- className: "ObCheckbox-input",
2288
- id: inputId,
2289
- type: "checkbox",
2290
- onChange: handleInputChanged,
2291
- checked: value,
2292
- disabled,
2293
- ref: input,
2294
- ...other
2295
- }
2296
- ), /* @__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" }))));
2291
+ className: clsx_default("ObCheckbox-root", disabled && "Ob-disabled", reverse && "Ob-reverse", className),
2292
+ title
2293
+ },
2294
+ /* @__PURE__ */ React.createElement(
2295
+ "input",
2296
+ {
2297
+ className: "ObCheckbox-input",
2298
+ id: inputId,
2299
+ type: "checkbox",
2300
+ onChange: handleInputChanged,
2301
+ checked: value,
2302
+ disabled,
2303
+ ref: input,
2304
+ ...other
2305
+ }
2306
+ ),
2307
+ /* @__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))
2308
+ );
2297
2309
  });
2298
2310
 
2299
2311
  // src/ColorCard/index.tsx
2300
- function ColorCard({
2301
- as: Component,
2302
- children,
2303
- className,
2304
- href,
2305
- ...other
2306
- }) {
2312
+ function ColorCard({ as: Component, children, className, href, ...other }) {
2307
2313
  const BaseElement = Component ? Component : href ? "a" : "div";
2308
2314
  return /* @__PURE__ */ React.createElement(BaseElement, { className: clsx_default("ObColorCard-root", className), href, ...other }, children);
2309
2315
  }
2316
+ function CardStepList({ children, className, ...props }) {
2317
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default("ObColorCard-stepList", className), ...props }, children);
2318
+ }
2319
+ function CardStep({ children, className, ...props }) {
2320
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default("ObColorCard-step", className), ...props }, /* @__PURE__ */ React.createElement("div", { className: "ObColorCard-stepText" }, children));
2321
+ }
2310
2322
  function CardColumn({
2311
2323
  children,
2312
2324
  className,
@@ -2334,8 +2346,10 @@ var ob;
2334
2346
  function getUiCulture() {
2335
2347
  return af?.userSession?.culture ?? "default";
2336
2348
  }
2337
- function Arrow(props) {
2338
- const { direction, ...rest } = props;
2349
+ function Arrow({
2350
+ direction,
2351
+ ...rest
2352
+ }) {
2339
2353
  return /* @__PURE__ */ React.createElement(
2340
2354
  "button",
2341
2355
  {
@@ -2343,15 +2357,16 @@ var ob;
2343
2357
  "ObDateNavigator-arrow",
2344
2358
  direction === "left" ? "ObDateNavigator-arrowLeft" : "ObDateNavigator-arrowRight"
2345
2359
  ),
2360
+ "aria-label": direction === "left" ? (0, import_appframe_core.getLocalizedString)("Previous day") : (0, import_appframe_core.getLocalizedString)("Next day"),
2346
2361
  ...rest
2347
2362
  },
2348
- /* @__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(
2363
+ /* @__PURE__ */ React.createElement("span", { className: "ObDateNavigator-icon" }, direction === "left" ? /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2349
2364
  "path",
2350
2365
  {
2351
2366
  fill: "currentColor",
2352
2367
  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"
2353
2368
  }
2354
- )) : /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", focusable: "false", role: "img", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2369
+ )) : /* @__PURE__ */ React.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 320 512" }, /* @__PURE__ */ React.createElement(
2355
2370
  "path",
2356
2371
  {
2357
2372
  fill: "currentColor",
@@ -2367,41 +2382,89 @@ var ob;
2367
2382
  year: "numeric",
2368
2383
  timeZone: "utc"
2369
2384
  });
2370
- var today = /* @__PURE__ */ new Date();
2371
- var todayUtc = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate());
2372
2385
  var oneDay = 24 * 60 * 60 * 1e3;
2373
- function DateNavigator({ date: dateProp, onChange }) {
2386
+ function DateNavigator({
2387
+ date: dateProp,
2388
+ onChange,
2389
+ minDate,
2390
+ maxDate
2391
+ }) {
2374
2392
  let [internalDate, setInternalDate] = (0, import_react2.useState)(/* @__PURE__ */ new Date());
2375
- const date = dateProp ?? internalDate;
2376
- const dateUtc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
2377
- let dateValue = new Date(dateUtc);
2378
- let text = formatter.format(dateValue);
2379
- let altText;
2380
- if (todayUtc === dateUtc) {
2381
- altText = (0, import_appframe_core.getLocalizedString)("Today");
2382
- } else if (todayUtc === dateUtc + oneDay) {
2383
- altText = (0, import_appframe_core.getLocalizedString)("Yesterday");
2384
- } else if (todayUtc === dateUtc - oneDay) {
2385
- altText = (0, import_appframe_core.getLocalizedString)("Tomorrow");
2393
+ let date = dateProp ?? internalDate;
2394
+ let dateUtc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
2395
+ let today = /* @__PURE__ */ new Date();
2396
+ let todayUtc = Date.UTC(today.getFullYear(), today.getMonth(), today.getDate());
2397
+ let liveRef = (0, import_react2.useRef)(null);
2398
+ let text = (() => {
2399
+ let base = formatter.format(new Date(dateUtc));
2400
+ if (todayUtc === dateUtc) return `${(0, import_appframe_core.getLocalizedString)("Today")}, ${base}`;
2401
+ if (todayUtc === dateUtc + oneDay) return `${(0, import_appframe_core.getLocalizedString)("Yesterday")}, ${base}`;
2402
+ if (todayUtc === dateUtc - oneDay) return `${(0, import_appframe_core.getLocalizedString)("Tomorrow")}, ${base}`;
2403
+ return base;
2404
+ })();
2405
+ let disablePrev = !!minDate && dateUtc <= Date.UTC(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
2406
+ let disableNext = !!maxDate && dateUtc >= Date.UTC(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
2407
+ function updateDate(newDate) {
2408
+ if (minDate && newDate < minDate) {
2409
+ newDate = new Date(minDate);
2410
+ } else if (maxDate && newDate > maxDate) {
2411
+ newDate = new Date(maxDate);
2412
+ }
2413
+ if (onChange) onChange(newDate);
2414
+ else setInternalDate(newDate);
2386
2415
  }
2387
- if (altText) {
2388
- text = `${altText}, ${text}`;
2416
+ function jumpToToday() {
2417
+ updateDate(/* @__PURE__ */ new Date());
2389
2418
  }
2390
- function handleDateChanged(date2) {
2391
- if (typeof onChange === "function") {
2392
- onChange(date2);
2393
- } else {
2394
- setInternalDate(date2);
2419
+ (0, import_react2.useEffect)(() => {
2420
+ if (liveRef.current) {
2421
+ liveRef.current.textContent = text;
2422
+ }
2423
+ }, [text]);
2424
+ function handleKeyDown(event) {
2425
+ if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
2426
+ if (event.defaultPrevented) return;
2427
+ if (event.altKey || event.metaKey) return;
2428
+ if (disablePrev && event.key === "ArrowLeft") return;
2429
+ if (disableNext && event.key === "ArrowRight") return;
2430
+ if (event.ctrlKey && event.shiftKey) {
2431
+ let newDate = new Date(dateUtc);
2432
+ if (event.key === "ArrowLeft") {
2433
+ newDate.setFullYear(newDate.getFullYear() - 1);
2434
+ } else if (event.key === "ArrowRight") {
2435
+ newDate.setFullYear(newDate.getFullYear() + 1);
2436
+ }
2437
+ updateDate(newDate);
2438
+ return;
2439
+ }
2440
+ if (event.ctrlKey) {
2441
+ let newDate = new Date(dateUtc);
2442
+ if (event.key === "ArrowLeft") {
2443
+ newDate.setMonth(newDate.getMonth() - 1);
2444
+ } else if (event.key === "ArrowRight") {
2445
+ newDate.setMonth(newDate.getMonth() + 1);
2446
+ }
2447
+ updateDate(newDate);
2448
+ return;
2449
+ }
2450
+ let modifier = event.shiftKey ? 7 : 1;
2451
+ if (event.key === "ArrowLeft") {
2452
+ updateDate(new Date(dateUtc - oneDay * modifier));
2453
+ } else if (event.key === "ArrowRight") {
2454
+ updateDate(new Date(dateUtc + oneDay * modifier));
2395
2455
  }
2396
2456
  }
2397
- 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)) }));
2457
+ return (
2458
+ // biome-ignore lint/a11y/noNoninteractiveTabindex: I hate this component
2459
+ /* @__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" } }))
2460
+ );
2398
2461
  }
2399
2462
 
2400
2463
  // src/LinkedCardList/index.tsx
2401
- function List({ children, className, ...other }) {
2464
+ function LinkedList({ children, className, ...other }) {
2402
2465
  return /* @__PURE__ */ React.createElement("ul", { className: clsx_default("ObLinkedList-root", className), ...other }, children);
2403
2466
  }
2404
- function ListItem({
2467
+ function LinkedListItem({
2405
2468
  children,
2406
2469
  className,
2407
2470
  label,
@@ -2422,7 +2485,7 @@ var ob;
2422
2485
  }
2423
2486
  var BannerImage = import_react3.default.forwardRef(function BannerImage2(props, ref) {
2424
2487
  const { className, ...other } = props;
2425
- return /* @__PURE__ */ import_react3.default.createElement("img", { ref, className: clsx_default("ObPageBanner-bannerImage", className), ...other });
2488
+ return /* @__PURE__ */ import_react3.default.createElement("img", { ref, className: clsx_default("ObPageBanner-bannerImage", className), alt: "", ...other });
2426
2489
  });
2427
2490
  function TabList({ as, className, children, sticky, ...other }) {
2428
2491
  const Component = as ? as : "nav";
@@ -2457,23 +2520,21 @@ var ob;
2457
2520
  const portalNode = (0, import_react4.useRef)(null);
2458
2521
  (0, import_react4.useEffect)(() => {
2459
2522
  const ownerDocument = mountNode.current?.ownerDocument;
2460
- let portalElem = portalNode.current;
2461
- if (ownerDocument && portalElem) {
2523
+ if (ownerDocument && !portalNode.current) {
2462
2524
  let parent = root ? ownerDocument.querySelector(root) || ownerDocument.body : ownerDocument.body;
2463
2525
  const node = ownerDocument.createElement(type);
2464
- portalElem = node;
2526
+ portalNode.current = node;
2465
2527
  parent.appendChild(node);
2466
2528
  forceUpdate();
2467
2529
  return () => {
2468
2530
  parent.removeChild(node);
2469
2531
  };
2470
2532
  }
2471
- }, []);
2533
+ }, [root, type]);
2472
2534
  if (!portalNode.current) {
2473
2535
  return /* @__PURE__ */ React.createElement("div", { ref: mountNode });
2474
- } else {
2475
- return (0, import_react_dom.createPortal)(children, portalNode.current);
2476
2536
  }
2537
+ return (0, import_react_dom.createPortal)(children, portalNode.current);
2477
2538
  }
2478
2539
 
2479
2540
  // src/ProgressBar/index.tsx
@@ -2574,14 +2635,13 @@ var ob;
2574
2635
  }
2575
2636
 
2576
2637
  // src/Spinner/index.tsx
2577
- var import_react7 = __toESM(require_react(), 1);
2578
2638
  function Spinner({ className = "", fullPage = false, ...rest }) {
2579
- 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" })));
2639
+ 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" })));
2580
2640
  }
2581
2641
 
2582
2642
  // src/SplitContainer/index.tsx
2583
2643
  var import_localforage = __toESM(require_localforage(), 1);
2584
- var import_react8 = __toESM(require_react(), 1);
2644
+ var import_react7 = __toESM(require_react(), 1);
2585
2645
  var article = window.af?.article?.id ?? window.window?.location.pathname.substring(1).split("/")[0];
2586
2646
  var settingsStore = import_localforage.default.createInstance({
2587
2647
  name: `AfSplitContainers.${window.af?.userSession.login ?? "anonymous"}`
@@ -2615,18 +2675,31 @@ var ob;
2615
2675
  )
2616
2676
  )
2617
2677
  );
2618
- var Divider = (0, import_react8.forwardRef)(function Divider2(props, ref) {
2619
- 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"));
2678
+ var Divider = (0, import_react7.forwardRef)(function Divider2(props, ref) {
2679
+ return /* @__PURE__ */ React.createElement(
2680
+ "div",
2681
+ {
2682
+ className: clsx_default("ObSplitContainer-divider", props.className),
2683
+ tabIndex: 0,
2684
+ ref,
2685
+ role: "separator",
2686
+ "aria-orientation": props.direction,
2687
+ "aria-valuemin": props.min,
2688
+ "aria-valuemax": props.max,
2689
+ "aria-valuenow": props.size
2690
+ },
2691
+ /* @__PURE__ */ React.createElement("span", null, "\u2022\u2022\u2022")
2692
+ );
2620
2693
  });
2621
2694
  function SplitRoot({ className, direction, ...props }) {
2622
- return /* @__PURE__ */ import_react8.default.createElement("div", { className: clsx_default(className, "ObSplitContainer-root", direction), ...props });
2695
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default(className, "ObSplitContainer-root", direction), ...props });
2623
2696
  }
2624
2697
  function SplitPanel(props) {
2625
2698
  let style = {
2626
2699
  flex: props.fixed ? `0 0 ${Math.floor(props.size)}px` : "1 1 100%",
2627
2700
  ...props.style
2628
2701
  };
2629
- return /* @__PURE__ */ import_react8.default.createElement("div", { className: clsx_default(props.className, "ObSplitContainer-panel"), style }, props.children);
2702
+ return /* @__PURE__ */ React.createElement("div", { className: clsx_default(props.className, "ObSplitContainer-panel"), style }, props.children);
2630
2703
  }
2631
2704
  function SplitContainer({
2632
2705
  className,
@@ -2636,25 +2709,31 @@ var ob;
2636
2709
  panelClassName,
2637
2710
  defaultFixedSize = 400,
2638
2711
  layoutVersion = 1,
2712
+ min = 0,
2713
+ max,
2639
2714
  id
2640
2715
  }) {
2641
- let [fixedSize, setFixedSize] = (0, import_react8.useState)(defaultFixedSize);
2642
- let [isDragging, setIsDragging] = (0, import_react8.useState)(false);
2643
- let dividerRef = (0, import_react8.useRef)(null);
2644
- if (import_react8.Children.count(children) !== 2) {
2716
+ let [fixedSize, setFixedSize] = (0, import_react7.useState)(defaultFixedSize);
2717
+ let [isDragging, setIsDragging] = (0, import_react7.useState)(false);
2718
+ let dividerRef = (0, import_react7.useRef)(null);
2719
+ if (import_react7.Children.count(children) !== 2) {
2645
2720
  throw Error("SplitContainer requires exactly 2 children");
2646
2721
  }
2647
- function handleFixedSizeChanged(size) {
2648
- setFixedSize((current) => {
2649
- let newValue = typeof size === "function" ? size(current) : size;
2650
- if (id) {
2651
- let key = `${article}.${id}`;
2652
- persistState(key, layoutVersion, newValue);
2722
+ let containerRef = (0, import_react7.useRef)(null);
2723
+ let [containerSize, setContainerSize] = (0, import_react7.useState)(0);
2724
+ (0, import_react7.useEffect)(() => {
2725
+ if (!containerRef.current) return;
2726
+ let resizeObserver = new ResizeObserver((entries) => {
2727
+ for (let entry of entries) {
2728
+ if (entry.contentRect) {
2729
+ setContainerSize(direction === "horizontal" ? entry.contentRect.width : entry.contentRect.height);
2730
+ }
2653
2731
  }
2654
- return newValue;
2655
2732
  });
2656
- }
2657
- (0, import_react8.useEffect)(() => {
2733
+ resizeObserver.observe(containerRef.current);
2734
+ return () => resizeObserver.disconnect();
2735
+ }, [direction]);
2736
+ (0, import_react7.useEffect)(() => {
2658
2737
  if (id) {
2659
2738
  let key = `${article}.${id}`;
2660
2739
  getSettings(key, layoutVersion).then((data) => {
@@ -2665,14 +2744,32 @@ var ob;
2665
2744
  });
2666
2745
  }
2667
2746
  }, [id, layoutVersion]);
2668
- let childrenArray = import_react8.Children.toArray(children);
2669
- (0, import_react8.useEffect)(() => {
2747
+ let childrenArray = import_react7.Children.toArray(children);
2748
+ (0, import_react7.useEffect)(() => {
2670
2749
  let divider = dividerRef.current;
2671
2750
  if (divider) {
2672
- let getNewSize = function(event) {
2751
+ let clampSize = function(size) {
2752
+ let adjustedContainerSize = containerSize - 10;
2753
+ let maxSize = Math.min(max ?? adjustedContainerSize, adjustedContainerSize);
2754
+ if (size < min) {
2755
+ size = min;
2756
+ } else if (size > maxSize) {
2757
+ size = maxSize;
2758
+ }
2759
+ return size;
2760
+ }, getNewSize = function(event) {
2673
2761
  let deltaSize = direction === "horizontal" ? event.clientX - initialPosition.clientX : event.clientY - initialPosition.clientY;
2674
2762
  deltaSize *= fixedPanel === 1 ? -1 : 1;
2675
- return initialPosition.size - deltaSize;
2763
+ return clampSize(initialPosition.size - deltaSize);
2764
+ }, handleFixedSizeChanged = function(size) {
2765
+ setFixedSize((current) => {
2766
+ let newValue = clampSize(typeof size === "function" ? size(current) : size);
2767
+ if (id) {
2768
+ let key = `${article}.${id}`;
2769
+ persistState(key, layoutVersion, newValue);
2770
+ }
2771
+ return newValue;
2772
+ });
2676
2773
  }, handlePointerUp = function(event) {
2677
2774
  let newSize = getNewSize(event);
2678
2775
  handleFixedSizeChanged(newSize);
@@ -2682,6 +2779,10 @@ var ob;
2682
2779
  }, handlePointerMove = function(event) {
2683
2780
  event.preventDefault();
2684
2781
  let newSize = getNewSize(event);
2782
+ let divider2 = dividerRef.current;
2783
+ if (divider2) {
2784
+ divider2.setAttribute("aria-valuenow", String(newSize));
2785
+ }
2685
2786
  movingPanel.style.flex = `0 0 ${newSize}px`;
2686
2787
  }, handlePointerDown = function(event) {
2687
2788
  setIsDragging(true);
@@ -2726,12 +2827,22 @@ var ob;
2726
2827
  divider?.removeEventListener("keydown", handleKeyDown);
2727
2828
  };
2728
2829
  }
2729
- }, [direction, fixedPanel]);
2730
- 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]));
2830
+ }, [direction, fixedPanel, layoutVersion, id, min, max, containerSize]);
2831
+ 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(
2832
+ Divider,
2833
+ {
2834
+ ref: dividerRef,
2835
+ direction,
2836
+ isDragging,
2837
+ size: fixedSize,
2838
+ min,
2839
+ max: max ?? containerSize
2840
+ }
2841
+ ), /* @__PURE__ */ React.createElement(SplitPanel, { className: clsx_default(isDragging && "dragging", panelClassName), fixed: fixedPanel === 2, size: fixedSize }, childrenArray[1]));
2731
2842
  }
2732
2843
 
2733
2844
  // src/useTranslation/index.ts
2734
- var import_react9 = __toESM(require_react(), 1);
2845
+ var import_react8 = __toESM(require_react(), 1);
2735
2846
  async function translateText(text, target, apiKey) {
2736
2847
  let url = `https://translation.googleapis.com/language/translate/v2?key=${apiKey}`;
2737
2848
  let body = JSON.stringify({
@@ -2745,7 +2856,7 @@ var ob;
2745
2856
  let result = await fetch(url, options);
2746
2857
  let json = await result.json();
2747
2858
  let { data } = json;
2748
- if (data && data.translations) {
2859
+ if (data?.translations) {
2749
2860
  let [translation] = data.translations;
2750
2861
  return {
2751
2862
  from: translation.detectedSourceLanguage,
@@ -2755,12 +2866,12 @@ var ob;
2755
2866
  return false;
2756
2867
  }
2757
2868
  function useTranslation(text, targetLanguage, apiKey) {
2758
- let [translation, setTranslation] = (0, import_react9.useState)("");
2759
- let [error, setError] = (0, import_react9.useState)(null);
2760
- let [from, setSourceLang] = (0, import_react9.useState)(null);
2761
- let [isTranslating, setIsTranslating] = (0, import_react9.useState)(false);
2762
- let textRef = (0, import_react9.useRef)(text);
2763
- (0, import_react9.useEffect)(() => {
2869
+ let [translation, setTranslation] = (0, import_react8.useState)("");
2870
+ let [error, setError] = (0, import_react8.useState)(null);
2871
+ let [from, setSourceLang] = (0, import_react8.useState)(null);
2872
+ let [isTranslating, setIsTranslating] = (0, import_react8.useState)(false);
2873
+ let textRef = (0, import_react8.useRef)(text);
2874
+ (0, import_react8.useEffect)(() => {
2764
2875
  textRef.current = text;
2765
2876
  return () => {
2766
2877
  setTranslation("");
@@ -2795,43 +2906,28 @@ var ob;
2795
2906
  };
2796
2907
  }
2797
2908
 
2798
- // src/ValueToggle/index.tsx
2799
- var import_react10 = __toESM(require_react(), 1);
2800
- var valueToggleId = 0;
2801
- function ValueToggleInner({ className, onChange, defaultValue, options, value, ...other }, ref) {
2802
- const wrapperRef = (0, import_react10.useRef)(null);
2803
- const [toggleName] = (0, import_react10.useState)("obet-value-toggle-" + String(++valueToggleId));
2804
- const isControlled = value !== void 0;
2805
- (0, import_react10.useImperativeHandle)(ref, () => {
2806
- const e = wrapperRef.current?.querySelector("input");
2807
- return {
2808
- focus: () => e?.focus(),
2809
- blur: () => e?.blur(),
2810
- value: (e?.querySelector("input:checked")).value
2811
- };
2812
- });
2813
- return /* @__PURE__ */ React.createElement("fieldset", { className, ...other }, /* @__PURE__ */ React.createElement("div", { className: "ObValueToggle-root", ref: wrapperRef }, options.map((option) => {
2814
- const isObj = typeof option === "object";
2815
- const optValue = isObj ? option.value : option;
2816
- const props = {
2817
- value: optValue
2818
- };
2819
- if (isControlled) {
2820
- props.checked = value === optValue;
2821
- } else {
2822
- props.defaultChecked = defaultValue === optValue;
2823
- }
2824
- if (typeof onChange === "function") {
2825
- props.onChange = () => onChange(optValue);
2826
- }
2827
- if (isObj) {
2828
- Object.assign(props, option);
2829
- }
2830
- 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));
2831
- })));
2832
- }
2833
- var ValueToggle = (0, import_react10.forwardRef)(ValueToggleInner);
2834
- return __toCommonJS(src_exports);
2909
+ // src/ValueToggleGroup/index.tsx
2910
+ var import_react9 = __toESM(require_react(), 1);
2911
+ var ValueToggleGroup = (0, import_react9.forwardRef)(function ValueToggleGroup2({ options, value, defaultValue, onChange, className, name, id, style, orientation = "horizontal" }, ref) {
2912
+ let randomId = (0, import_react9.useId)();
2913
+ let groupName = name || `toggle-${id ?? randomId}`;
2914
+ let isControlled = value !== void 0;
2915
+ return /* @__PURE__ */ React.createElement("fieldset", { className: clsx_default("ObValueToggleGroup", orientation, className), role: "radiogroup", ref, style }, options.map((opt) => {
2916
+ return /* @__PURE__ */ React.createElement("label", { key: opt.value, className: clsx_default("ObValueToggleOption", { disabled: opt.disabled }) }, /* @__PURE__ */ React.createElement(
2917
+ "input",
2918
+ {
2919
+ type: "radio",
2920
+ name: groupName,
2921
+ value: opt.value,
2922
+ checked: isControlled ? value === opt.value : void 0,
2923
+ defaultChecked: !isControlled ? defaultValue === opt.value : void 0,
2924
+ onChange: () => onChange?.(opt.value),
2925
+ disabled: opt.disabled
2926
+ }
2927
+ ), /* @__PURE__ */ React.createElement("span", { className: "ObValueToggleLabel" }, opt.label ?? opt.value));
2928
+ }));
2929
+ });
2930
+ return __toCommonJS(index_exports);
2835
2931
  })();
2836
2932
  /*! Bundled license information:
2837
2933
 
@@ -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 */