@nxgt/material 3.87.0 → 3.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -0
  3. package/dist/{alert-dialog-DC_9MW49.js → alert-dialog-CEGs7LMN.js} +1 -1
  4. package/dist/{async-slice-C6XbESai.js → async-slice-CR0M95Jq.js} +1 -1
  5. package/dist/{button-BksHtogl.js → button-h9hXBEQB.js} +1 -1
  6. package/dist/{calculator-C_dTrMWE.js → calculator-Dn_KL0b0.js} +10 -10
  7. package/dist/calculator-field.js +6 -6
  8. package/dist/{calculator-segment-FOUl66f6.js → calculator-segment-DMFptsDf.js} +1 -1
  9. package/dist/calculator.js +1 -1
  10. package/dist/charts.js +3 -3
  11. package/dist/{chip-BWaC87zs.js → chip-C-RAjar5.js} +2 -2
  12. package/dist/{code-editor-ddbQ0pEc.js → code-editor-DApeIOZ3.js} +4 -4
  13. package/dist/code-editor.js +4 -4
  14. package/dist/{code-language-items-jRlQfjAm.js → code-language-items-CGtYfc1l.js} +2 -2
  15. package/dist/{components-B5p3JKhQ.js → components-BIATLurA.js} +11901 -11702
  16. package/dist/components.js +37 -37
  17. package/dist/{conversion-variant-Cauk0BMS.js → conversion-variant-Cf0sEmnS.js} +3 -3
  18. package/dist/{currency-field-Dy2e9kSr.js → currency-field-cwC7cqUE.js} +4 -4
  19. package/dist/{dialog-DNDT81SC.js → dialog-Bul68q8u.js} +3 -3
  20. package/dist/dnd.js +1 -1
  21. package/dist/{dropdown-menu-DtVC2xQW.js → dropdown-menu-xUUE5X6T.js} +1 -1
  22. package/dist/editor.js +7 -7
  23. package/dist/{empty-state-Dfsp5UF4.js → empty-state-CCRfjt0n.js} +1 -1
  24. package/dist/{financial-variant-0fJAMale.js → financial-variant-CYgRZzKT.js} +5 -5
  25. package/dist/{hooks-kPRle6lM.js → hooks-Dzc6xz5t.js} +2 -2
  26. package/dist/hooks.js +2 -2
  27. package/dist/{hover-card-CsxW7S7D.js → hover-card-CZLFQwZv.js} +1 -1
  28. package/dist/i18n.js +3 -3
  29. package/dist/{icon-badge-8CPy2xAU.js → icon-badge-0Xo9q7Ey.js} +1 -1
  30. package/dist/{icon-button-caFcCpXV.js → icon-button-DE1EcO2-.js} +1 -1
  31. package/dist/lib/components/ui/dates/half-day-range-field/half-day-end.d.ts +21 -0
  32. package/dist/lib/components/ui/dates/half-day-range-field/half-day-ends.d.ts +11 -0
  33. package/dist/lib/components/ui/dates/half-day-range-field/half-day-range-field.d.ts +39 -0
  34. package/dist/lib/components/ui/dates/half-day-range-field/half-day-range-form-field.d.ts +3 -0
  35. package/dist/lib/components/ui/dates/half-day-range-field/half-day-range.d.ts +25 -0
  36. package/dist/lib/components/ui/dates/half-day-range-field/index.d.ts +3 -0
  37. package/dist/lib/components/ui/dates/half-day-range-field/use-half-day-draft.d.ts +30 -0
  38. package/dist/lib/components/ui/dates/index.d.ts +1 -0
  39. package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
  40. package/dist/lib/i18n/resources/en/en.d.ts +7 -0
  41. package/dist/lib/i18n/resources/en/material.json.d.ts +7 -0
  42. package/dist/lib/i18n/resources/fr/fr.d.ts +7 -0
  43. package/dist/lib/i18n/resources/fr/material.json.d.ts +7 -0
  44. package/dist/lib/i18n/resources/resources.d.ts +14 -0
  45. package/dist/lib/i18n/translator.d.ts +1 -1
  46. package/dist/lib.js +1 -1
  47. package/dist/main.js +53 -53
  48. package/dist/map.js +7 -7
  49. package/dist/material.css +1 -1
  50. package/dist/pdf-reader.js +1 -1
  51. package/dist/{percent-field-B6mJfY_p.js → percent-field-BFwxazf1.js} +1 -1
  52. package/dist/{picker-surface-CVAW0t-r.js → picker-surface-DkfTv_ft.js} +4 -4
  53. package/dist/{popover-DhRPftzZ.js → popover-BM6xApJd.js} +1 -1
  54. package/dist/{pos-types-QcM9WTr0.js → pos-types-CpTpT4vE.js} +1 -1
  55. package/dist/{pos-variant-BeON2e_Q.js → pos-variant-Bs5BUB1L.js} +4 -4
  56. package/dist/print.js +1 -1
  57. package/dist/{programmer-variant-3cEMiII7.js → programmer-variant-B1eI1fd0.js} +2 -2
  58. package/dist/{public-DezkDXv3.js → public-CX7ik5Yg.js} +9 -9
  59. package/dist/{rich-code-block-DloPqrFQ.js → rich-code-block-CdVtxD75.js} +5 -5
  60. package/dist/{scientific-variant-0Fq8HLiY.js → scientific-variant-rfvJKxB4.js} +2 -2
  61. package/dist/{sortable-provider-OB35mdNh.js → sortable-provider-BopzsciJ.js} +2 -2
  62. package/dist/{spinner-CngjH5-n.js → spinner-DcW21pN1.js} +1 -1
  63. package/dist/{tabs-C0CPqX5U.js → tabs-CdoBFtWx.js} +1 -1
  64. package/dist/theme-picker.js +2 -2
  65. package/dist/{theme-toggle-BfXRbCwj.js → theme-toggle-Ch3GkDDU.js} +1 -1
  66. package/dist/{toolbar-items-BU5_H3UA.js → toolbar-items-CZ1lJXZZ.js} +4 -4
  67. package/dist/{translate-material-B1wzg7uX.js → translate-material-BrYBBZ66.js} +1 -1
  68. package/dist/{translator-BwUYrek9.js → translator-DoVsjUff.js} +14 -0
  69. package/dist/{use-chat-composer-Bsc1gCRQ.js → use-chat-composer-BjKhuLfT.js} +15 -15
  70. package/dist/{use-heading-spy-BpeWvZ2y.js → use-heading-spy-CGTTRV2N.js} +4 -4
  71. package/dist/{use-material-translation-BDVGF7-Z.js → use-material-translation-BdrItuwY.js} +1 -1
  72. package/dist/{use-return-focus-BttT8j1o.js → use-return-focus-Cqzvj9R0.js} +1 -1
  73. package/docs/components/README.md +2 -1
  74. package/docs/components/date-and-time.md +111 -0
  75. package/docs/guides/forms.md +1 -0
  76. package/docs/guides/i18n.md +7 -0
  77. package/docs/previews/date-time-halfdayrangefield.webp +0 -0
  78. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @nxgt/material
2
2
 
3
+ ## 3.88.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2556](https://github.com/softistx/nxgt-material/pull/2556) [`e04413f`](https://github.com/softistx/nxgt-material/commit/e04413ff7214dd57d0972bfd487c0996ec67bb31) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `HalfDayRangeField` and `HalfDayRangeFormField` (React Hook Form), exported from `@nxgt/material/components`: a range whose two ends are each a day plus a half, morning or afternoon, for absences and closures counted to the half day. The value is `{ start: { date, half }, end: { date, half } }` (`half` is `'morning' | 'afternoon'`, `date` the local midnight of the day), ordered on the half. `onValueChange` gets `undefined` while a day is missing and the range as soon as both days are set, even when the end is before the start (the field shows "The end cannot be before the start.", marks the halves `aria-invalid` and announces it; `HalfDayRangeFormField` adds a `validate` rule so the form refuses it, without a resolver: with zod, use `z.custom<HalfDayRange>().refine(isHalfDayRangeOrdered, …)`; a `rules.validate` of your own is kept beside it). Controlled (`value`) or uncontrolled (`defaultValue`); a reset of `value` to `undefined` empties the days unless the emitted value was already `undefined` (then give the field a `key` that changes). `minDate`, `maxDate` and `disabledDays` apply to both ends, and the end's calendar starts at the start's day. Labels come from `material.half-day-range.*` and `material.dates.start` / `end` (en and fr). `compareHalfDays`, `isHalfDayRangeOrdered`, `halfDaysIn` and `HALF_DAYS` are exported with the `HalfDay`, `HalfDayEnd` and `HalfDayRange` types. Not available in `@nxgt/material-vue` yet ([#2555](https://github.com/softistx/nxgt-material/issues/2555)). Fixes [#2546](https://github.com/softistx/nxgt-material/issues/2546).
8
+
3
9
  ## 3.87.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -702,6 +702,7 @@ Not components: what the stylesheet gives any element.
702
702
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-timefield.webp" width="120" alt="TimeField"> | [`TimeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#timefield), `TimeStringField`, `TimeFormField` | A time typed in segments, with a button that opens a `TimePicker` in a popover, or in a bottom sheet on a phone. A tonal box; `size="sm"` is compact, `TimeStringField` takes an `HH:mm` string. | `TimeField`, `TimeFormField`; `TimeStringField`: — (later) |
703
703
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-timepicker.webp" width="120" alt="TimePicker"> | [`TimePicker`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#timepicker) | Hours and minutes as big tiles with steppers, an AM / PM pair and quick minutes (columns with `variant="columns"`), 12- or 24-hour by language. | `TimePicker` |
704
704
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-durationfield.webp" width="120" alt="DurationField"> | [`DurationField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#durationfield) · `DurationFormField` | Hours and minutes combined into a total in minutes, typed on one line, "1 h 29 min", with one −/+ pair for the focused part (`variant="fields"` for the two number fields). | `DurationField`, `DurationFormField` |
705
+ | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-halfdayrangefield.webp" width="120" alt="HalfDayRangeField"> | [`HalfDayRangeField`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#halfdayrangefield) · `HalfDayRangeFormField` | A range whose two ends are each a day plus morning or afternoon, ordered on the half, for absences and closures counted to the half day. | — (later, #2555) |
705
706
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-minimonth.webp" width="120" alt="MiniMonth"> | [`MiniMonth`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#minimonth) | Compact month navigator: today ringed, a week band, event dots, a keyboard date grid. | — |
706
707
  | <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/date-time-nowindicator.webp" width="120" alt="NowIndicator"> | [`NowIndicator`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/date-and-time.md#nowindicator) | The current-time line of a day schedule, moving each minute. CSP-safe. | — |
707
708
 
@@ -4,7 +4,7 @@ import { o as n } from "./dist-DVRQkaTK.js";
4
4
  import { r } from "./dist-DWZXlCZR.js";
5
5
  import { a as i } from "./dist-DHdUUM1w.js";
6
6
  import { t as a } from "./in-dialog-D61Yeaol.js";
7
- import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-BttT8j1o.js";
7
+ import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-Cqzvj9R0.js";
8
8
  import { i as _ } from "./escape-owner-DpaP0lm1.js";
9
9
  import * as v from "react";
10
10
  import { Fragment as y, isValidElement as b } from "react";
@@ -1,4 +1,4 @@
1
- import { l as e, r as t, s as n, u as r } from "./translator-BwUYrek9.js";
1
+ import { l as e, r as t, s as n, u as r } from "./translator-DoVsjUff.js";
2
2
  import { t as i } from "./_baseIsEqual-C6ksIHya.js";
3
3
  import { useMemo as a } from "react";
4
4
  import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { n as t, t as n } from "./dist-DVRQkaTK.js";
3
- import { n as r, t as i } from "./spinner-CngjH5-n.js";
3
+ import { n as r, t as i } from "./spinner-DcW21pN1.js";
4
4
  import { t as a } from "./dist-DkQbkF9T.js";
5
5
  import { a as o, i as s, n as c, o as l, s as u, t as d } from "./use-click-lock-Bwg_caHO.js";
6
6
  import { t as f } from "./is-production-GLw59WU8.js";
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { n as t, r as n, t as r, u as i } from "./tabs-C0CPqX5U.js";
3
- import { t as a } from "./button-BksHtogl.js";
4
- import { t as o } from "./use-material-translation-BDVGF7-Z.js";
5
- import { t as s } from "./icon-button-caFcCpXV.js";
2
+ import { n as t, r as n, t as r, u as i } from "./tabs-CdoBFtWx.js";
3
+ import { t as a } from "./button-h9hXBEQB.js";
4
+ import { t as o } from "./use-material-translation-BdrItuwY.js";
5
+ import { t as s } from "./icon-button-DE1EcO2-.js";
6
6
  import { t as c } from "./copy-to-clipboard-Be5Ffvs_.js";
7
7
  import { t as l } from "./useEvent-2fKq-6w8.js";
8
8
  import { t as u } from "./useLatest-C2PnQEeD.js";
@@ -11,7 +11,7 @@ import { t as f } from "./skeleton-DSdtr2qc.js";
11
11
  import { t as p } from "./live-status-BGPaN8r8.js";
12
12
  import { n as m, t as h } from "./calculator-context-BugcKuVG.js";
13
13
  import { a as g, c as _, i as v, l as y, n as b, o as ee, r as te, s as ne } from "./calculator-announce-DRd2c6Dq.js";
14
- import { i as re, t as ie } from "./pos-types-QcM9WTr0.js";
14
+ import { i as re, t as ie } from "./pos-types-CpTpT4vE.js";
15
15
  import { a as ae, r as oe } from "./key-layout-cR79xfGE.js";
16
16
  import { n as x, r as se, t as ce } from "./programmer-word-CNCF7DJF.js";
17
17
  import { t as le } from "./standard-layout-BuSRr3TY.js";
@@ -279,11 +279,11 @@ function Le({ helpId: e }) {
279
279
  //#endregion
280
280
  //#region lib/components/ui/widgets/calculator/variants/variant-loader.ts
281
281
  var Re = {
282
- scientific: () => import("./scientific-variant-0Fq8HLiY.js"),
283
- pos: () => import("./pos-variant-BeON2e_Q.js"),
284
- programmer: () => import("./programmer-variant-3cEMiII7.js"),
285
- financial: () => import("./financial-variant-0fJAMale.js"),
286
- conversion: () => import("./conversion-variant-Cauk0BMS.js")
282
+ scientific: () => import("./scientific-variant-rfvJKxB4.js"),
283
+ pos: () => import("./pos-variant-Bs5BUB1L.js"),
284
+ programmer: () => import("./programmer-variant-B1eI1fd0.js"),
285
+ financial: () => import("./financial-variant-CYgRZzKT.js"),
286
+ conversion: () => import("./conversion-variant-Cf0sEmnS.js")
287
287
  }, B = "failed", V = /* @__PURE__ */ new Map(), H = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Set(), W = () => {
288
288
  for (let e of U) e();
289
289
  };
@@ -1,11 +1,11 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { t } from "./button-BksHtogl.js";
3
- import { t as n } from "./use-material-translation-BDVGF7-Z.js";
4
- import { t as r } from "./icon-button-caFcCpXV.js";
5
- import { a as i, i as a, n as o, r as s, t as c } from "./picker-surface-CVAW0t-r.js";
6
- import { r as l, t as u } from "./currency-field-Dy2e9kSr.js";
2
+ import { t } from "./button-h9hXBEQB.js";
3
+ import { t as n } from "./use-material-translation-BdrItuwY.js";
4
+ import { t as r } from "./icon-button-DE1EcO2-.js";
5
+ import { a as i, i as a, n as o, r as s, t as c } from "./picker-surface-DkfTv_ft.js";
6
+ import { r as l, t as u } from "./currency-field-cwC7cqUE.js";
7
7
  import { r as d, t as f } from "./field-blur-DkiZOVNV.js";
8
- import { t as p } from "./calculator-C_dTrMWE.js";
8
+ import { t as p } from "./calculator-Dn_KL0b0.js";
9
9
  import { useId as m, useState as h } from "react";
10
10
  import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
11
11
  import { Calculator as y } from "lucide-react";
@@ -1,4 +1,4 @@
1
- import { t as e } from "./use-material-translation-BDVGF7-Z.js";
1
+ import { t as e } from "./use-material-translation-BdrItuwY.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  //#region lib/components/ui/widgets/calculator/partials/calculator-segment.tsx
4
4
  function n({ label: n, choices: r, value: i, nameKey: a, onChange: o }) {
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./calculator-C_dTrMWE.js";
1
+ import { n as e, t } from "./calculator-Dn_KL0b0.js";
2
2
  export { e as CALCULATOR_VARIANTS, t as Calculator };
package/dist/charts.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { t as e } from "./ui.utils-CAnKTCw5.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { t as n } from "./warn-once-C_e47JM8.js";
4
- import { t as r } from "./button-BksHtogl.js";
5
- import { t as i } from "./use-material-translation-BDVGF7-Z.js";
4
+ import { t as r } from "./button-h9hXBEQB.js";
5
+ import { t as i } from "./use-material-translation-BdrItuwY.js";
6
6
  import { t as a } from "./use-ssr-media-query-C6M5m8sf.js";
7
7
  import { i as o, n as s, r as c, t as l } from "./util-4heV2LPI.js";
8
8
  import { t as u } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
9
- import { t as d } from "./chip-BWaC87zs.js";
9
+ import { t as d } from "./chip-C-RAjar5.js";
10
10
  import { c as f, d as p, f as m, i as h, o as g, p as _, s as v, t as y } from "./line-path-C5pZGC49.js";
11
11
  import { t as b } from "./live-status-BGPaN8r8.js";
12
12
  import { t as x } from "./linear-G97mfnKF.js";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
- import { n as t } from "./spinner-CngjH5-n.js";
2
+ import { n as t } from "./spinner-DcW21pN1.js";
3
3
  import { s as n } from "./use-click-lock-Bwg_caHO.js";
4
- import { t as r } from "./use-material-translation-BDVGF7-Z.js";
4
+ import { t as r } from "./use-material-translation-BdrItuwY.js";
5
5
  import { t as i } from "./react-node-text-Crkpfpco.js";
6
6
  import { cloneElement as a, isValidElement as o } from "react";
7
7
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -1,12 +1,12 @@
1
1
  import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
2
2
  import { t } from "./utils-BLfntITJ.js";
3
3
  import { t as n } from "./dist-DWZXlCZR.js";
4
- import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-DtVC2xQW.js";
4
+ import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-xUUE5X6T.js";
5
5
  import { a as c, i as l, n as u } from "./field-blur-context-BLGgf_3z.js";
6
- import { a as d, o as f, r as p, s as m, t as h } from "./toolbar-items-BU5_H3UA.js";
6
+ import { a as d, o as f, r as p, s as m, t as h } from "./toolbar-items-CZ1lJXZZ.js";
7
7
  import { t as g } from "./is-production-GLw59WU8.js";
8
- import { t as _ } from "./use-material-translation-BDVGF7-Z.js";
9
- import { i as v, n as y, o as b, t as x } from "./code-language-items-jRlQfjAm.js";
8
+ import { t as _ } from "./use-material-translation-BdrItuwY.js";
9
+ import { i as v, n as y, o as b, t as x } from "./code-language-items-CGtYfc1l.js";
10
10
  import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
11
11
  import { n as C, t as w } from "./escape-owner-DpaP0lm1.js";
12
12
  import { t as T } from "./skeleton-DSdtr2qc.js";
@@ -1,13 +1,13 @@
1
1
  import { t as e } from "./utils-BLfntITJ.js";
2
2
  import { t } from "./dist-DWZXlCZR.js";
3
- import { o as n, r, s as i, t as a } from "./toolbar-items-BU5_H3UA.js";
4
- import { t as o } from "./use-material-translation-BDVGF7-Z.js";
5
- import { i as s, n as c, o as l } from "./code-language-items-jRlQfjAm.js";
3
+ import { o as n, r, s as i, t as a } from "./toolbar-items-CZ1lJXZZ.js";
4
+ import { t as o } from "./use-material-translation-BdrItuwY.js";
5
+ import { i as s, n as c, o as l } from "./code-language-items-CGtYfc1l.js";
6
6
  import { t as u } from "./skeleton-DSdtr2qc.js";
7
7
  import { t as d } from "./live-status-BGPaN8r8.js";
8
8
  import { t as f } from "./use-mobile-BDro060N.js";
9
9
  import { t as p } from "./react-node-text-Crkpfpco.js";
10
- import { a as m, c as h, d as g, f as _, i as v, l as y, m as b, o as x, p as S, r as C, s as w, t as T, u as E } from "./code-editor-ddbQ0pEc.js";
10
+ import { a as m, c as h, d as g, f as _, i as v, l as y, m as b, o as x, p as S, r as C, s as w, t as T, u as E } from "./code-editor-DApeIOZ3.js";
11
11
  import { r as D, t as O } from "./field-blur-DkiZOVNV.js";
12
12
  import { useEffect as k, useRef as A, useState as j } from "react";
13
13
  import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { d as e, f as t } from "./dropdown-menu-DtVC2xQW.js";
2
- import { t as n } from "./use-material-translation-BDVGF7-Z.js";
1
+ import { d as e, f as t } from "./dropdown-menu-xUUE5X6T.js";
2
+ import { t as n } from "./use-material-translation-BdrItuwY.js";
3
3
  import { t as r } from "./copy-to-clipboard-Be5Ffvs_.js";
4
4
  import { t as i } from "./live-status-BGPaN8r8.js";
5
5
  import { useEffect as a, useRef as o, useState as s } from "react";