@june-ai/june-ui 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -623,6 +623,53 @@ __export(index_exports, {
623
623
  });
624
624
  module.exports = __toCommonJS(index_exports);
625
625
 
626
+ // src/openui/disable-devtools.tsx
627
+ var import_devtools = require("@openuidev/devtools");
628
+ var import_jsx_runtime = require("react/jsx-runtime");
629
+ var AUTO_MOUNT_FLAG = /* @__PURE__ */ Symbol.for("openui.devtools.autoMount");
630
+ var BLOCKED_BY_JUNE = /* @__PURE__ */ Symbol.for("openui.devtools.blockedByJune");
631
+ var flags = globalThis;
632
+ var scheduledByOpenUI = flags[AUTO_MOUNT_FLAG] === true && flags[BLOCKED_BY_JUNE] !== true;
633
+ flags[AUTO_MOUNT_FLAG] = true;
634
+ flags[BLOCKED_BY_JUNE] = true;
635
+ var DEVTOOLS_BUNDLE = "https://cdn.jsdelivr.net/npm/@openuidev/devtools@0/dist/devtools.browser.js";
636
+ var ALIAS_CACHE_MS = 5 * 60 * 1e3;
637
+ function claimDisabledDevtools() {
638
+ if (typeof document === "undefined") return () => {
639
+ };
640
+ const url = `${DEVTOOLS_BUNDLE}?t=${Math.floor(Date.now() / ALIAS_CACHE_MS)}`;
641
+ let cancelled = false;
642
+ let unmount = () => {
643
+ cancelled = true;
644
+ };
645
+ void Promise.all([
646
+ import(
647
+ /* @vite-ignore */
648
+ url
649
+ ),
650
+ import("react"),
651
+ import("react-dom"),
652
+ import("react-dom/client")
653
+ ]).then(([devtools, react, reactDom, reactDomClient]) => {
654
+ if (cancelled) return;
655
+ unmount = devtools.mountOpenUIDevtools({
656
+ React: react,
657
+ ReactDOM: reactDom,
658
+ ReactDOMClient: reactDomClient,
659
+ loadReactLang: () => import("@openuidev/react-lang"),
660
+ props: { enabled: false }
661
+ });
662
+ }).catch(() => {
663
+ });
664
+ return () => unmount();
665
+ }
666
+ if (scheduledByOpenUI && process.env.NODE_ENV === "development" && process.env.VITEST !== "true" && typeof document !== "undefined") {
667
+ claimDisabledDevtools();
668
+ }
669
+ function OpenUIDevtoolsGate() {
670
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_devtools.OpenUIDevtools, { enabled: false });
671
+ }
672
+
626
673
  // src/renderer/renderer.tsx
627
674
  var import_react_lang = require("@openuidev/react-lang");
628
675
  var import_react5 = require("react");
@@ -1052,7 +1099,7 @@ var lightTheme = {
1052
1099
  };
1053
1100
 
1054
1101
  // src/themes/theme-provider.tsx
1055
- var import_jsx_runtime = require("react/jsx-runtime");
1102
+ var import_jsx_runtime2 = require("react/jsx-runtime");
1056
1103
  var QUERY = "(prefers-color-scheme: dark)";
1057
1104
  function subscribe(onChange) {
1058
1105
  if (typeof window === "undefined" || !window.matchMedia) return () => {
@@ -1095,7 +1142,7 @@ function JuneThemeProvider({
1095
1142
  () => ({ mode: mode ?? "system", theme: resolved }),
1096
1143
  [mode, resolved]
1097
1144
  );
1098
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(JuneContext.Provider, { value: context, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1145
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JuneContext.Provider, { value: context, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1099
1146
  "div",
1100
1147
  {
1101
1148
  className: className ? `june-ui-root ${className}` : "june-ui-root",
@@ -1517,7 +1564,7 @@ function splitResponse(source, options = {}) {
1517
1564
 
1518
1565
  // src/renderer/error-boundary.tsx
1519
1566
  var import_react4 = require("react");
1520
- var import_jsx_runtime2 = require("react/jsx-runtime");
1567
+ var import_jsx_runtime3 = require("react/jsx-runtime");
1521
1568
  function keysChanged(a = [], b = []) {
1522
1569
  return a.length !== b.length || a.some((v, i) => !Object.is(v, b[i]));
1523
1570
  }
@@ -1546,12 +1593,12 @@ var JuneErrorBoundary = class extends import_react4.Component {
1546
1593
  const { fallback } = this.props;
1547
1594
  if (typeof fallback === "function") return fallback({ error, reset: this.reset });
1548
1595
  if (fallback !== void 0) return fallback;
1549
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { role: "alert", "data-june-error": "", children: "Something went wrong while rendering this UI." });
1596
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { role: "alert", "data-june-error": "", children: "Something went wrong while rendering this UI." });
1550
1597
  }
1551
1598
  };
1552
1599
 
1553
1600
  // src/renderer/renderer.tsx
1554
- var import_jsx_runtime3 = require("react/jsx-runtime");
1601
+ var import_jsx_runtime4 = require("react/jsx-runtime");
1555
1602
  function JuneRenderer(props) {
1556
1603
  const {
1557
1604
  library,
@@ -1681,31 +1728,34 @@ function JuneRenderer(props) {
1681
1728
  const before = parts?.before ?? [];
1682
1729
  const after = parts?.after ?? [];
1683
1730
  const hasText = before.length + after.length > 0;
1684
- const text = (value, index, key) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react5.Fragment, { children: renderText ? renderText(value, index) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "june-text", children: value }) }, key);
1685
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JuneThemeProvider, { mode: theme, vars: themeVars, className, style, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JuneRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JuneDocumentContext.Provider, { value: documentOptions, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1686
- JuneErrorBoundary,
1687
- {
1688
- fallback: errorFallback,
1689
- onError: handleBoundaryError,
1690
- resetKeys: resetKeys ?? [response],
1691
- children: [
1692
- before.map((t, i) => text(t, i, `b${i}`)),
1693
- hasUi && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1694
- import_react_lang.Renderer,
1695
- {
1696
- ...rendererProps,
1697
- library,
1698
- response: uiText,
1699
- isStreaming,
1700
- onAction: handleAction,
1701
- onError: handleParserErrors
1702
- }
1703
- ),
1704
- after.map((t, i) => text(t, before.length + i, `a${i}`)),
1705
- !hasUi && !hasText && (isStreaming ? loadingFallback : emptyFallback)
1706
- ]
1707
- }
1708
- ) }) }) });
1731
+ const text = (value, index, key) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react5.Fragment, { children: renderText ? renderText(value, index) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "june-text", children: value }) }, key);
1732
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(JuneThemeProvider, { mode: theme, vars: themeVars, className, style, children: [
1733
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(OpenUIDevtoolsGate, {}),
1734
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(JuneRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(JuneDocumentContext.Provider, { value: documentOptions, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1735
+ JuneErrorBoundary,
1736
+ {
1737
+ fallback: errorFallback,
1738
+ onError: handleBoundaryError,
1739
+ resetKeys: resetKeys ?? [response],
1740
+ children: [
1741
+ before.map((t, i) => text(t, i, `b${i}`)),
1742
+ hasUi && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1743
+ import_react_lang.Renderer,
1744
+ {
1745
+ ...rendererProps,
1746
+ library,
1747
+ response: uiText,
1748
+ isStreaming,
1749
+ onAction: handleAction,
1750
+ onError: handleParserErrors
1751
+ }
1752
+ ),
1753
+ after.map((t, i) => text(t, before.length + i, `a${i}`)),
1754
+ !hasUi && !hasText && (isStreaming ? loadingFallback : emptyFallback)
1755
+ ]
1756
+ }
1757
+ ) }) })
1758
+ ] });
1709
1759
  }
1710
1760
 
1711
1761
  // src/components/library.ts
@@ -2046,18 +2096,18 @@ var import_react_lang3 = require("@openuidev/react-lang");
2046
2096
  var import_v4 = require("zod/v4");
2047
2097
 
2048
2098
  // src/components/document-editor/document-draft.tsx
2049
- var import_jsx_runtime4 = require("react/jsx-runtime");
2099
+ var import_jsx_runtime5 = require("react/jsx-runtime");
2050
2100
  function DocumentDraft({ title, words, state }) {
2051
2101
  if (state === "empty") {
2052
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "june-doc june-doc--draft", role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "june-doc__draft-text", children: "No document content was received." }) });
2102
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "june-doc june-doc--draft", role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "june-doc__draft-text", children: "No document content was received." }) });
2053
2103
  }
2054
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "june-doc june-doc--draft", role: "status", "aria-live": "polite", children: [
2055
- title ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "june-doc__draft-title", children: title }) : null,
2056
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "june-doc__draft-text", children: state === "drafting" ? `Drafting document\u2026${words ? ` ${words} words so far` : ""}` : "Loading editor\u2026" }),
2057
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "june-doc__pulse", "aria-hidden": "true", children: [
2058
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", {}),
2059
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", {}),
2060
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", {})
2104
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "june-doc june-doc--draft", role: "status", "aria-live": "polite", children: [
2105
+ title ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "june-doc__draft-title", children: title }) : null,
2106
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "june-doc__draft-text", children: state === "drafting" ? `Drafting document\u2026${words ? ` ${words} words so far` : ""}` : "Loading editor\u2026" }),
2107
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "june-doc__pulse", "aria-hidden": "true", children: [
2108
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", {}),
2109
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", {}),
2110
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", {})
2061
2111
  ] })
2062
2112
  ] });
2063
2113
  }
@@ -2076,208 +2126,208 @@ var import_react8 = require("@tiptap/react");
2076
2126
  var import_react9 = require("react");
2077
2127
 
2078
2128
  // src/components/document-editor/document-icons.tsx
2079
- var import_jsx_runtime5 = require("react/jsx-runtime");
2129
+ var import_jsx_runtime6 = require("react/jsx-runtime");
2080
2130
  var PATHS = {
2081
- undo: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2082
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M9 14 4 9l5-5" }),
2083
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M4 9h10.5a5.5 5.5 0 0 1 0 11H11" })
2131
+ undo: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2132
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M9 14 4 9l5-5" }),
2133
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 9h10.5a5.5 5.5 0 0 1 0 11H11" })
2084
2134
  ] }),
2085
- redo: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2086
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m15 14 5-5-5-5" }),
2087
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M20 9H9.5a5.5 5.5 0 0 0 0 11H13" })
2135
+ redo: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2136
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m15 14 5-5-5-5" }),
2137
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 9H9.5a5.5 5.5 0 0 0 0 11H13" })
2088
2138
  ] }),
2089
- bold: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" }),
2090
- italic: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2091
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "19", x2: "10", y1: "4", y2: "4" }),
2092
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "14", x2: "5", y1: "20", y2: "20" }),
2093
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "15", x2: "9", y1: "4", y2: "20" })
2139
+ bold: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" }),
2140
+ italic: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2141
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "19", x2: "10", y1: "4", y2: "4" }),
2142
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "14", x2: "5", y1: "20", y2: "20" }),
2143
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "15", x2: "9", y1: "4", y2: "20" })
2094
2144
  ] }),
2095
- underline: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2096
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M6 4v6a6 6 0 0 0 12 0V4" }),
2097
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "4", x2: "20", y1: "20", y2: "20" })
2145
+ underline: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2146
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M6 4v6a6 6 0 0 0 12 0V4" }),
2147
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "4", x2: "20", y1: "20", y2: "20" })
2098
2148
  ] }),
2099
- strike: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2100
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M16 4H9a3 3 0 0 0-2.83 4" }),
2101
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M14 12a4 4 0 0 1 0 8H6" }),
2102
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "4", x2: "20", y1: "12", y2: "12" })
2149
+ strike: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2150
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M16 4H9a3 3 0 0 0-2.83 4" }),
2151
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14 12a4 4 0 0 1 0 8H6" }),
2152
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "4", x2: "20", y1: "12", y2: "12" })
2103
2153
  ] }),
2104
- code: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2105
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m16 18 6-6-6-6" }),
2106
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m8 6-6 6 6 6" })
2154
+ code: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2155
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m16 18 6-6-6-6" }),
2156
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m8 6-6 6 6 6" })
2107
2157
  ] }),
2108
- codeBlock: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2109
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
2110
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m10 9-3 3 3 3" }),
2111
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m14 15 3-3-3-3" })
2158
+ codeBlock: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2159
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
2160
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m10 9-3 3 3 3" }),
2161
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m14 15 3-3-3-3" })
2112
2162
  ] }),
2113
- superscript: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2114
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m4 19 8-8" }),
2115
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m12 19-8-8" }),
2116
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M20 12h-4c0-1.5.44-2 1.5-2.5S20 8.33 20 7c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" })
2163
+ superscript: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2164
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m4 19 8-8" }),
2165
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m12 19-8-8" }),
2166
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 12h-4c0-1.5.44-2 1.5-2.5S20 8.33 20 7c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" })
2117
2167
  ] }),
2118
- subscript: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2119
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m4 5 8 8" }),
2120
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m12 5-8 8" }),
2121
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" })
2168
+ subscript: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2169
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m4 5 8 8" }),
2170
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m12 5-8 8" }),
2171
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07" })
2122
2172
  ] }),
2123
- alignLeft: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2124
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M15 12H3" }),
2125
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M17 18H3" }),
2126
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 6H3" })
2173
+ alignLeft: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2174
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M15 12H3" }),
2175
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 18H3" }),
2176
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H3" })
2127
2177
  ] }),
2128
- alignCenter: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2129
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M17 12H7" }),
2130
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M19 18H5" }),
2131
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 6H3" })
2178
+ alignCenter: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2179
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 12H7" }),
2180
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M19 18H5" }),
2181
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H3" })
2132
2182
  ] }),
2133
- alignRight: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2134
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 12H9" }),
2135
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 18H7" }),
2136
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 6H3" })
2183
+ alignRight: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2184
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H9" }),
2185
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H7" }),
2186
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H3" })
2137
2187
  ] }),
2138
- alignJustify: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2139
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 12h18" }),
2140
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 18h18" }),
2141
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 6h18" })
2188
+ alignJustify: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2189
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12h18" }),
2190
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 18h18" }),
2191
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 6h18" })
2142
2192
  ] }),
2143
- list: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2144
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 12h.01" }),
2145
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 18h.01" }),
2146
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 6h.01" }),
2147
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M8 12h13" }),
2148
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M8 18h13" }),
2149
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M8 6h13" })
2193
+ list: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2194
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12h.01" }),
2195
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 18h.01" }),
2196
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 6h.01" }),
2197
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 12h13" }),
2198
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 18h13" }),
2199
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 6h13" })
2150
2200
  ] }),
2151
- listOrdered: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2152
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M10 12h11" }),
2153
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M10 18h11" }),
2154
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M10 6h11" }),
2155
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M4 10h2" }),
2156
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M4 6h1v4" }),
2157
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" })
2201
+ listOrdered: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2202
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 12h11" }),
2203
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 18h11" }),
2204
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 6h11" }),
2205
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 10h2" }),
2206
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 6h1v4" }),
2207
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" })
2158
2208
  ] }),
2159
- outdent: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2160
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 12H11" }),
2161
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 18H11" }),
2162
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 6H11" }),
2163
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m7 8-4 4 4 4" })
2209
+ outdent: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2210
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H11" }),
2211
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H11" }),
2212
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H11" }),
2213
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m7 8-4 4 4 4" })
2164
2214
  ] }),
2165
- indent: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2166
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 12H11" }),
2167
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 18H11" }),
2168
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 6H11" }),
2169
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m3 8 4 4-4 4" })
2215
+ indent: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2216
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H11" }),
2217
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H11" }),
2218
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 6H11" }),
2219
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m3 8 4 4-4 4" })
2170
2220
  ] }),
2171
- quote: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2172
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M17 6H3" }),
2173
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 12H8" }),
2174
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 18H8" }),
2175
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 12v6" })
2221
+ quote: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2222
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 6H3" }),
2223
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12H8" }),
2224
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 18H8" }),
2225
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12v6" })
2176
2226
  ] }),
2177
- pilcrow: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2178
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M13 4v16" }),
2179
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M17 4v16" }),
2180
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13" })
2227
+ pilcrow: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2228
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M13 4v16" }),
2229
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 4v16" }),
2230
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13" })
2181
2231
  ] }),
2182
- pageBreak: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2183
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "3", x2: "21", y1: "12", y2: "12" }),
2184
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("polyline", { points: "8 8 12 4 16 8" }),
2185
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("polyline", { points: "16 16 12 20 8 16" })
2232
+ pageBreak: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2233
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "3", x2: "21", y1: "12", y2: "12" }),
2234
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "8 8 12 4 16 8" }),
2235
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "16 16 12 20 8 16" })
2186
2236
  ] }),
2187
- divider: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2188
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 12h18" }),
2189
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M8 6h8", opacity: ".45" }),
2190
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M8 18h8", opacity: ".45" })
2237
+ divider: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2238
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 12h18" }),
2239
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 6h8", opacity: ".45" }),
2240
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 18h8", opacity: ".45" })
2191
2241
  ] }),
2192
- layout: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2193
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "18", height: "7", x: "3", y: "3", rx: "1" }),
2194
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "9", height: "7", x: "3", y: "14", rx: "1" }),
2195
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "5", height: "7", x: "16", y: "14", rx: "1" })
2242
+ layout: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2243
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "18", height: "7", x: "3", y: "3", rx: "1" }),
2244
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "9", height: "7", x: "3", y: "14", rx: "1" }),
2245
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "5", height: "7", x: "16", y: "14", rx: "1" })
2196
2246
  ] }),
2197
- search: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2198
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
2199
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m21 21-4.3-4.3" })
2247
+ search: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2248
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
2249
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m21 21-4.3-4.3" })
2200
2250
  ] }),
2201
- palette: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2202
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor" }),
2203
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor" }),
2204
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor" }),
2205
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor" }),
2206
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.93 0 1.65-.75 1.65-1.69 0-.44-.18-.84-.44-1.13-.29-.29-.44-.65-.44-1.13a1.64 1.64 0 0 1 1.67-1.67h2c3.05 0 5.55-2.5 5.55-5.55C21.97 6.01 17.46 2 12 2z" })
2251
+ palette: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2252
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor" }),
2253
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor" }),
2254
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor" }),
2255
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor" }),
2256
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.93 0 1.65-.75 1.65-1.69 0-.44-.18-.84-.44-1.13-.29-.29-.44-.65-.44-1.13a1.64 1.64 0 0 1 1.67-1.67h2c3.05 0 5.55-2.5 5.55-5.55C21.97 6.01 17.46 2 12 2z" })
2207
2257
  ] }),
2208
- highlighter: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2209
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m9 11-6 6v3h9l3-3" }),
2210
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" })
2258
+ highlighter: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2259
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m9 11-6 6v3h9l3-3" }),
2260
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" })
2211
2261
  ] }),
2212
- link: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2213
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }),
2214
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })
2262
+ link: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2263
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }),
2264
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })
2215
2265
  ] }),
2216
- image: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2217
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
2218
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "9", cy: "9", r: "2" }),
2219
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m21 15-3.09-3.09a2 2 0 0 0-2.82 0L6 21" })
2266
+ image: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2267
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
2268
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "9", cy: "9", r: "2" }),
2269
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m21 15-3.09-3.09a2 2 0 0 0-2.82 0L6 21" })
2220
2270
  ] }),
2221
- table: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2222
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M12 3v18" }),
2223
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
2224
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 9h18" }),
2225
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 15h18" })
2271
+ table: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2272
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M12 3v18" }),
2273
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }),
2274
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 9h18" }),
2275
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 15h18" })
2226
2276
  ] }),
2227
- eraser: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2228
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21" }),
2229
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M22 21H7" }),
2230
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m5 11 9 9" })
2277
+ eraser: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2278
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21" }),
2279
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M22 21H7" }),
2280
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m5 11 9 9" })
2231
2281
  ] }),
2232
- save: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2233
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z" }),
2234
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7" }),
2235
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M7 3v4a1 1 0 0 0 1 1h7" })
2282
+ save: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2283
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z" }),
2284
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7" }),
2285
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M7 3v4a1 1 0 0 0 1 1h7" })
2236
2286
  ] }),
2237
- download: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2238
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2239
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("polyline", { points: "7 10 12 15 17 10" }),
2240
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
2287
+ download: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2288
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2289
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "7 10 12 15 17 10" }),
2290
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
2241
2291
  ] }),
2242
- chevronDown: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m6 9 6 6 6-6" }),
2243
- chevronUp: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m18 15-6-6-6 6" }),
2244
- close: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2245
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M18 6 6 18" }),
2246
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m6 6 12 12" })
2292
+ chevronDown: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m6 9 6 6 6-6" }),
2293
+ chevronUp: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m18 15-6-6-6 6" }),
2294
+ close: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2295
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M18 6 6 18" }),
2296
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "m6 6 12 12" })
2247
2297
  ] }),
2248
- maximize: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2249
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M8 3H5a2 2 0 0 0-2 2v3" }),
2250
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 8V5a2 2 0 0 0-2-2h-3" }),
2251
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M3 16v3a2 2 0 0 0 2 2h3" }),
2252
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M16 21h3a2 2 0 0 0 2-2v-3" })
2298
+ maximize: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2299
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M8 3H5a2 2 0 0 0-2 2v3" }),
2300
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 8V5a2 2 0 0 0-2-2h-3" }),
2301
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 16v3a2 2 0 0 0 2 2h3" }),
2302
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M16 21h3a2 2 0 0 0 2-2v-3" })
2253
2303
  ] }),
2254
- copy: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2255
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2" }),
2256
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })
2304
+ copy: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2305
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2" }),
2306
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })
2257
2307
  ] }),
2258
- file: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2259
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
2260
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" })
2308
+ file: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2309
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
2310
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" })
2261
2311
  ] }),
2262
- plus: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2263
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M5 12h14" }),
2264
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M12 5v14" })
2312
+ plus: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2313
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M5 12h14" }),
2314
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M12 5v14" })
2265
2315
  ] }),
2266
- minus: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M5 12h14" }),
2267
- check: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M20 6 9 17l-5-5" }),
2268
- sparkles: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2269
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M9.94 14.06 8 20l-1.94-5.94L0 12l6.06-1.94L8 4l1.94 6.06L16 12z", transform: "translate(3 -1) scale(.85)" }),
2270
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M20 3v4" }),
2271
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M22 5h-4" })
2316
+ minus: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M5 12h14" }),
2317
+ check: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 6 9 17l-5-5" }),
2318
+ sparkles: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2319
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M9.94 14.06 8 20l-1.94-5.94L0 12l6.06-1.94L8 4l1.94 6.06L16 12z", transform: "translate(3 -1) scale(.85)" }),
2320
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M20 3v4" }),
2321
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M22 5h-4" })
2272
2322
  ] }),
2273
- upload: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
2274
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2275
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("polyline", { points: "17 8 12 3 7 8" }),
2276
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "15" })
2323
+ upload: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
2324
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2325
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "17 8 12 3 7 8" }),
2326
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "15" })
2277
2327
  ] })
2278
2328
  };
2279
2329
  function Icon({ name, size = 16 }) {
2280
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2330
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2281
2331
  "svg",
2282
2332
  {
2283
2333
  className: "june-doc__icon",
@@ -2298,7 +2348,7 @@ function Icon({ name, size = 16 }) {
2298
2348
 
2299
2349
  // src/components/document-editor/document-popover.tsx
2300
2350
  var import_react7 = require("react");
2301
- var import_jsx_runtime6 = require("react/jsx-runtime");
2351
+ var import_jsx_runtime7 = require("react/jsx-runtime");
2302
2352
  function Dropdown({ trigger, children, align = "start", className, onOpen }) {
2303
2353
  const [open, setOpen] = (0, import_react7.useState)(false);
2304
2354
  const anchor = (0, import_react7.useRef)(null);
@@ -2315,7 +2365,7 @@ function Dropdown({ trigger, children, align = "start", className, onOpen }) {
2315
2365
  return !v;
2316
2366
  });
2317
2367
  const close = () => setOpen(false);
2318
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2368
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2319
2369
  "div",
2320
2370
  {
2321
2371
  ref: anchor,
@@ -2328,7 +2378,7 @@ function Dropdown({ trigger, children, align = "start", className, onOpen }) {
2328
2378
  },
2329
2379
  children: [
2330
2380
  trigger({ open, toggle }),
2331
- open ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: `june-doc__pop june-doc__pop--${align}${className ? ` ${className}` : ""}`, children: children(close) }) : null
2381
+ open ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: `june-doc__pop june-doc__pop--${align}${className ? ` ${className}` : ""}`, children: children(close) }) : null
2332
2382
  ]
2333
2383
  }
2334
2384
  );
@@ -2336,7 +2386,7 @@ function Dropdown({ trigger, children, align = "start", className, onOpen }) {
2336
2386
 
2337
2387
  // src/components/document-editor/document-toolbar.tsx
2338
2388
  init_document_utils();
2339
- var import_jsx_runtime7 = require("react/jsx-runtime");
2389
+ var import_jsx_runtime8 = require("react/jsx-runtime");
2340
2390
  var FONT_FAMILIES = [
2341
2391
  { label: "Default", value: "" },
2342
2392
  { label: "Arial", value: "Arial, Helvetica, sans-serif" },
@@ -2383,7 +2433,7 @@ var HIGHLIGHT_COLORS = [
2383
2433
  ];
2384
2434
  var MAX_IMAGE_BYTES = 8 * 1024 * 1024;
2385
2435
  function Btn({ label, icon, active, disabled, toggle, onClick, children, className, text }) {
2386
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2436
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2387
2437
  "button",
2388
2438
  {
2389
2439
  type: "button",
@@ -2396,29 +2446,29 @@ function Btn({ label, icon, active, disabled, toggle, onClick, children, classNa
2396
2446
  onMouseDown: (e) => e.preventDefault(),
2397
2447
  onClick,
2398
2448
  children: [
2399
- icon ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { name: icon }) : null,
2400
- children ?? (text ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: label }) : null)
2449
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: icon }) : null,
2450
+ children ?? (text ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: label }) : null)
2401
2451
  ]
2402
2452
  }
2403
2453
  );
2404
2454
  }
2405
2455
  function Group({ label, children }) {
2406
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__group", role: "group", "aria-label": label, children: [
2407
- label ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "june-doc__group-label", "aria-hidden": "true", children: label }) : null,
2456
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__group", role: "group", "aria-label": label, children: [
2457
+ label ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__group-label", "aria-hidden": "true", children: label }) : null,
2408
2458
  children
2409
2459
  ] });
2410
2460
  }
2411
2461
  function Field({ label, children }) {
2412
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { className: "june-doc__field", children: [
2413
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "june-doc__field-label", children: label }),
2462
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: "june-doc__field", children: [
2463
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__field-label", children: label }),
2414
2464
  children
2415
2465
  ] });
2416
2466
  }
2417
2467
  function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPick, onReset }) {
2418
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2468
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2419
2469
  Dropdown,
2420
2470
  {
2421
- trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2471
+ trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2422
2472
  "button",
2423
2473
  {
2424
2474
  type: "button",
@@ -2431,14 +2481,14 @@ function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPic
2431
2481
  onMouseDown: (e) => e.preventDefault(),
2432
2482
  onClick: toggle,
2433
2483
  children: [
2434
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { name: icon }),
2435
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "june-doc__color-bar", style: { background: current ?? "transparent" } })
2484
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: icon }),
2485
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__color-bar", style: { background: current ?? "transparent" } })
2436
2486
  ]
2437
2487
  }
2438
2488
  ),
2439
- children: (close) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__swatches-wrap", role: "dialog", "aria-label": label, children: [
2440
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__pop-title", children: label }),
2441
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__swatches", children: colors.map((c) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2489
+ children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__swatches-wrap", role: "dialog", "aria-label": label, children: [
2490
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__pop-title", children: label }),
2491
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__swatches", children: colors.map((c) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2442
2492
  "button",
2443
2493
  {
2444
2494
  type: "button",
@@ -2455,8 +2505,8 @@ function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPic
2455
2505
  },
2456
2506
  c
2457
2507
  )) }),
2458
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__pop-row", children: [
2459
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2508
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-row", children: [
2509
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2460
2510
  "button",
2461
2511
  {
2462
2512
  type: "button",
@@ -2469,9 +2519,9 @@ function ColorPicker({ label, icon, colors, current, disabled, resetLabel, onPic
2469
2519
  children: resetLabel
2470
2520
  }
2471
2521
  ),
2472
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { className: "june-doc__custom-color", title: "Custom color", children: [
2473
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "Custom" }),
2474
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2522
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { className: "june-doc__custom-color", title: "Custom color", children: [
2523
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Custom" }),
2524
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2475
2525
  "input",
2476
2526
  {
2477
2527
  type: "color",
@@ -2502,9 +2552,9 @@ function LinkPanel({
2502
2552
  editor.chain().focus().extendMarkRange("link").unsetLink().run();
2503
2553
  close();
2504
2554
  };
2505
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Edit link", children: [
2506
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__pop-title", children: "Link" }),
2507
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2555
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Edit link", children: [
2556
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__pop-title", children: "Link" }),
2557
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2508
2558
  "input",
2509
2559
  {
2510
2560
  "aria-label": "Link address",
@@ -2521,10 +2571,10 @@ function LinkPanel({
2521
2571
  }
2522
2572
  }
2523
2573
  ),
2524
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__pop-row june-doc__pop-row--end", children: [
2525
- isLink ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--ghost", onClick: remove, children: "Remove" }) : null,
2526
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: "june-doc__btn", onClick: close, children: "Cancel" }),
2527
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--primary", onClick: apply, children: "Apply" })
2574
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-row june-doc__pop-row--end", children: [
2575
+ isLink ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--ghost", onClick: remove, children: "Remove" }) : null,
2576
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn", onClick: close, children: "Cancel" }),
2577
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--primary", onClick: apply, children: "Apply" })
2528
2578
  ] })
2529
2579
  ] });
2530
2580
  }
@@ -2553,9 +2603,9 @@ function ImagePanel({ editor, close, onNotice }) {
2553
2603
  reader.onerror = () => onNotice("The image could not be read");
2554
2604
  reader.readAsDataURL(f);
2555
2605
  };
2556
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Insert image", children: [
2557
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__pop-title", children: "Image" }),
2558
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2606
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Insert image", children: [
2607
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__pop-title", children: "Image" }),
2608
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2559
2609
  "button",
2560
2610
  {
2561
2611
  type: "button",
@@ -2567,12 +2617,12 @@ function ImagePanel({ editor, close, onNotice }) {
2567
2617
  fromFile(e.dataTransfer.files[0]);
2568
2618
  },
2569
2619
  children: [
2570
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { name: "upload", size: 18 }),
2571
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "Upload or drop an image" })
2620
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: "upload", size: 18 }),
2621
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Upload or drop an image" })
2572
2622
  ]
2573
2623
  }
2574
2624
  ),
2575
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2625
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2576
2626
  "input",
2577
2627
  {
2578
2628
  ref: file,
@@ -2582,8 +2632,8 @@ function ImagePanel({ editor, close, onNotice }) {
2582
2632
  onChange: (e) => fromFile(e.target.files?.[0])
2583
2633
  }
2584
2634
  ),
2585
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__or", children: "or" }),
2586
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2635
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__or", children: "or" }),
2636
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2587
2637
  "input",
2588
2638
  {
2589
2639
  "aria-label": "Image address",
@@ -2594,7 +2644,7 @@ function ImagePanel({ editor, close, onNotice }) {
2594
2644
  onKeyDown: (e) => e.key === "Enter" && fromUrl()
2595
2645
  }
2596
2646
  ),
2597
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2647
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2598
2648
  "input",
2599
2649
  {
2600
2650
  "aria-label": "Alternative text",
@@ -2604,24 +2654,24 @@ function ImagePanel({ editor, close, onNotice }) {
2604
2654
  onChange: (e) => setAlt(e.target.value)
2605
2655
  }
2606
2656
  ),
2607
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__pop-row june-doc__pop-row--end", children: [
2608
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: "june-doc__btn", onClick: close, children: "Cancel" }),
2609
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--primary", disabled: !url.trim(), onClick: fromUrl, children: "Insert" })
2657
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-row june-doc__pop-row--end", children: [
2658
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn", onClick: close, children: "Cancel" }),
2659
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--primary", disabled: !url.trim(), onClick: fromUrl, children: "Insert" })
2610
2660
  ] })
2611
2661
  ] });
2612
2662
  }
2613
2663
  function TablePanel({ editor, close }) {
2614
2664
  const [hover, setHover] = (0, import_react9.useState)([0, 0]);
2615
2665
  const N = 8;
2616
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Insert table", children: [
2617
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__pop-title", children: [
2666
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__form", role: "dialog", "aria-label": "Insert table", children: [
2667
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__pop-title", children: [
2618
2668
  "Table ",
2619
2669
  hover[0] ? `${hover[0]} \xD7 ${hover[1]}` : ""
2620
2670
  ] }),
2621
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__grid", onMouseLeave: () => setHover([0, 0]), children: Array.from({ length: N * N }, (_, i) => {
2671
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__grid", onMouseLeave: () => setHover([0, 0]), children: Array.from({ length: N * N }, (_, i) => {
2622
2672
  const r = Math.floor(i / N) + 1;
2623
2673
  const c = i % N + 1;
2624
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2674
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2625
2675
  "button",
2626
2676
  {
2627
2677
  type: "button",
@@ -2703,34 +2753,34 @@ function DocumentToolbar(props) {
2703
2753
  const fontKnown = FONT_FAMILIES.some((f) => f.value === s?.fontFamily);
2704
2754
  const sizes = s?.fontSize && !FONT_SIZES.includes(Number(s.fontSize)) ? [...FONT_SIZES, Number(s.fontSize)].sort((a, b) => a - b) : FONT_SIZES;
2705
2755
  if (!editable) return null;
2706
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__ribbon", role: "toolbar", "aria-label": "Document formatting", children: [
2707
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__row", children: [
2708
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "History", children: [
2709
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Undo", icon: "undo", disabled: off || !s?.canUndo, onClick: () => run()?.undo().run() }),
2710
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Redo", icon: "redo", disabled: off || !s?.canRedo, onClick: () => run()?.redo().run() })
2756
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__ribbon", role: "toolbar", "aria-label": "Document formatting", children: [
2757
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__row", children: [
2758
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "History", children: [
2759
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Undo", icon: "undo", disabled: off || !s?.canUndo, onClick: () => run()?.undo().run() }),
2760
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Redo", icon: "redo", disabled: off || !s?.canRedo, onClick: () => run()?.redo().run() })
2711
2761
  ] }),
2712
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Format", children: [
2713
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Bold", icon: "bold", toggle: true, active: s?.bold, disabled: off, onClick: () => run()?.toggleBold().run() }),
2714
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Italic", icon: "italic", toggle: true, active: s?.italic, disabled: off, onClick: () => run()?.toggleItalic().run() }),
2715
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Underline", icon: "underline", toggle: true, active: s?.underline, disabled: off, onClick: () => run()?.toggleUnderline().run() }),
2716
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Strikethrough", icon: "strike", toggle: true, active: s?.strike, disabled: off, onClick: () => run()?.toggleStrike().run() }),
2717
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Inline code", icon: "code", toggle: true, active: s?.code, disabled: off, onClick: () => run()?.toggleCode().run() }),
2718
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Superscript", icon: "superscript", toggle: true, active: s?.sup, disabled: off, onClick: () => run()?.toggleSuperscript().run() }),
2719
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Subscript", icon: "subscript", toggle: true, active: s?.sub, disabled: off, onClick: () => run()?.toggleSubscript().run() })
2762
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Format", children: [
2763
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Bold", icon: "bold", toggle: true, active: s?.bold, disabled: off, onClick: () => run()?.toggleBold().run() }),
2764
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Italic", icon: "italic", toggle: true, active: s?.italic, disabled: off, onClick: () => run()?.toggleItalic().run() }),
2765
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Underline", icon: "underline", toggle: true, active: s?.underline, disabled: off, onClick: () => run()?.toggleUnderline().run() }),
2766
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Strikethrough", icon: "strike", toggle: true, active: s?.strike, disabled: off, onClick: () => run()?.toggleStrike().run() }),
2767
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Inline code", icon: "code", toggle: true, active: s?.code, disabled: off, onClick: () => run()?.toggleCode().run() }),
2768
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Superscript", icon: "superscript", toggle: true, active: s?.sup, disabled: off, onClick: () => run()?.toggleSuperscript().run() }),
2769
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Subscript", icon: "subscript", toggle: true, active: s?.sub, disabled: off, onClick: () => run()?.toggleSubscript().run() })
2720
2770
  ] }),
2721
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Align", children: [
2722
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Align left", icon: "alignLeft", toggle: true, active: s?.left, disabled: off, onClick: () => run()?.setTextAlign("left").run() }),
2723
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Align center", icon: "alignCenter", toggle: true, active: s?.center, disabled: off, onClick: () => run()?.setTextAlign("center").run() }),
2724
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Align right", icon: "alignRight", toggle: true, active: s?.right, disabled: off, onClick: () => run()?.setTextAlign("right").run() }),
2725
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Justify", icon: "alignJustify", toggle: true, active: s?.justify, disabled: off, onClick: () => run()?.setTextAlign("justify").run() })
2771
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Align", children: [
2772
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Align left", icon: "alignLeft", toggle: true, active: s?.left, disabled: off, onClick: () => run()?.setTextAlign("left").run() }),
2773
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Align center", icon: "alignCenter", toggle: true, active: s?.center, disabled: off, onClick: () => run()?.setTextAlign("center").run() }),
2774
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Align right", icon: "alignRight", toggle: true, active: s?.right, disabled: off, onClick: () => run()?.setTextAlign("right").run() }),
2775
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Justify", icon: "alignJustify", toggle: true, active: s?.justify, disabled: off, onClick: () => run()?.setTextAlign("justify").run() })
2726
2776
  ] }),
2727
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Lists", children: [
2728
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Bullet list", icon: "list", toggle: true, active: s?.bullet, disabled: off, onClick: () => run()?.toggleBulletList().run() }),
2729
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Numbered list", icon: "listOrdered", toggle: true, active: s?.ordered, disabled: off, onClick: () => run()?.toggleOrderedList().run() }),
2730
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Decrease indent", icon: "outdent", disabled: off || !s?.canLift, onClick: () => run()?.liftListItem("listItem").run() }),
2731
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Increase indent", icon: "indent", disabled: off || !s?.canSink, onClick: () => run()?.sinkListItem("listItem").run() })
2777
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Lists", children: [
2778
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Bullet list", icon: "list", toggle: true, active: s?.bullet, disabled: off, onClick: () => run()?.toggleBulletList().run() }),
2779
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Numbered list", icon: "listOrdered", toggle: true, active: s?.ordered, disabled: off, onClick: () => run()?.toggleOrderedList().run() }),
2780
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Decrease indent", icon: "outdent", disabled: off || !s?.canLift, onClick: () => run()?.liftListItem("listItem").run() }),
2781
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Increase indent", icon: "indent", disabled: off || !s?.canSink, onClick: () => run()?.sinkListItem("listItem").run() })
2732
2782
  ] }),
2733
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2783
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2734
2784
  "button",
2735
2785
  {
2736
2786
  type: "button",
@@ -2741,22 +2791,22 @@ function DocumentToolbar(props) {
2741
2791
  onClick: onToggleExpanded,
2742
2792
  children: [
2743
2793
  expanded ? "Less" : "More",
2744
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { name: expanded ? "chevronUp" : "chevronDown", size: 14 })
2794
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon, { name: expanded ? "chevronUp" : "chevronDown", size: 14 })
2745
2795
  ]
2746
2796
  }
2747
2797
  )
2748
2798
  ] }),
2749
- expanded ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "june-doc__row june-doc__row--secondary", children: [
2750
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Style", children: [
2751
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Field, { label: "Style", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("select", { className: "june-doc__select", "aria-label": "Text style", disabled: off, value: style, onChange: (e) => setStyle(e.target.value), children: [
2752
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "p", children: "Paragraph" }),
2753
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "1", children: "Heading 1" }),
2754
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "2", children: "Heading 2" }),
2755
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "3", children: "Heading 3" }),
2756
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "quote", children: "Quote" }),
2757
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "code", children: "Code block" })
2799
+ expanded ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "june-doc__row june-doc__row--secondary", children: [
2800
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Style", children: [
2801
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: "Style", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("select", { className: "june-doc__select", "aria-label": "Text style", disabled: off, value: style, onChange: (e) => setStyle(e.target.value), children: [
2802
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "p", children: "Paragraph" }),
2803
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "1", children: "Heading 1" }),
2804
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "2", children: "Heading 2" }),
2805
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "3", children: "Heading 3" }),
2806
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "quote", children: "Quote" }),
2807
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "code", children: "Code block" })
2758
2808
  ] }) }),
2759
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Field, { label: "Font", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2809
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: "Font", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2760
2810
  "select",
2761
2811
  {
2762
2812
  className: "june-doc__select june-doc__select--font",
@@ -2769,12 +2819,12 @@ function DocumentToolbar(props) {
2769
2819
  else run()?.unsetFontFamily().run();
2770
2820
  },
2771
2821
  children: [
2772
- FONT_FAMILIES.map((f) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: f.value, style: { fontFamily: f.value || void 0 }, children: f.label }, f.label)),
2773
- !fontKnown && s?.fontFamily ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: s.fontFamily, children: s.fontFamily.split(",")[0].replace(/['"]/g, "") }) : null
2822
+ FONT_FAMILIES.map((f) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: f.value, style: { fontFamily: f.value || void 0 }, children: f.label }, f.label)),
2823
+ !fontKnown && s?.fontFamily ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: s.fontFamily, children: s.fontFamily.split(",")[0].replace(/['"]/g, "") }) : null
2774
2824
  ]
2775
2825
  }
2776
2826
  ) }),
2777
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Field, { label: "Size", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2827
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Field, { label: "Size", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2778
2828
  "select",
2779
2829
  {
2780
2830
  className: "june-doc__select june-doc__select--size",
@@ -2787,21 +2837,21 @@ function DocumentToolbar(props) {
2787
2837
  else run()?.unsetFontSize().run();
2788
2838
  },
2789
2839
  children: [
2790
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: "", children: "Auto" }),
2791
- sizes.map((n) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: String(n), children: n }, n))
2840
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "", children: "Auto" }),
2841
+ sizes.map((n) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: String(n), children: n }, n))
2792
2842
  ]
2793
2843
  }
2794
2844
  ) })
2795
2845
  ] }),
2796
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Show formatting marks", icon: "pilcrow", toggle: true, active: showMarks, onClick: onToggleMarks, text: true, className: "june-doc__btn--marks", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "Paragraph" }) }),
2797
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Document", children: [
2798
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Insert page break", icon: "pageBreak", disabled: off, onClick: () => run()?.setPageBreak().run() }),
2799
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Insert divider", icon: "divider", disabled: off, onClick: () => run()?.setHorizontalRule().run() }),
2800
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: layout === "page" ? "Switch to full-width layout" : "Switch to page layout", icon: "layout", toggle: true, active: layout === "fluid", onClick: onToggleLayout }),
2801
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Find and replace", icon: "search", toggle: true, active: findOpen, onClick: onToggleFind })
2846
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Show formatting marks", icon: "pilcrow", toggle: true, active: showMarks, onClick: onToggleMarks, text: true, className: "june-doc__btn--marks", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Paragraph" }) }),
2847
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Document", children: [
2848
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert page break", icon: "pageBreak", disabled: off, onClick: () => run()?.setPageBreak().run() }),
2849
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert divider", icon: "divider", disabled: off, onClick: () => run()?.setHorizontalRule().run() }),
2850
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: layout === "page" ? "Switch to full-width layout" : "Switch to page layout", icon: "layout", toggle: true, active: layout === "fluid", onClick: onToggleLayout }),
2851
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Find and replace", icon: "search", toggle: true, active: findOpen, onClick: onToggleFind })
2802
2852
  ] }),
2803
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Color", children: [
2804
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2853
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Color", children: [
2854
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2805
2855
  ColorPicker,
2806
2856
  {
2807
2857
  label: "Text color",
@@ -2814,7 +2864,7 @@ function DocumentToolbar(props) {
2814
2864
  onReset: () => run()?.unsetColor().run()
2815
2865
  }
2816
2866
  ),
2817
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2867
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2818
2868
  ColorPicker,
2819
2869
  {
2820
2870
  label: "Highlight",
@@ -2828,34 +2878,34 @@ function DocumentToolbar(props) {
2828
2878
  }
2829
2879
  )
2830
2880
  ] }),
2831
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Insert", children: [
2832
- editor ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2881
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Insert", children: [
2882
+ editor ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2833
2883
  Dropdown,
2834
2884
  {
2835
- trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Link", icon: "link", toggle: true, active: s?.link || open, disabled: off, onClick: toggle }),
2836
- children: (close) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LinkPanel, { editor, href: s?.linkHref ?? "", isLink: !!s?.link, close })
2885
+ trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Link", icon: "link", toggle: true, active: s?.link || open, disabled: off, onClick: toggle }),
2886
+ children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LinkPanel, { editor, href: s?.linkHref ?? "", isLink: !!s?.link, close })
2837
2887
  }
2838
2888
  ) : null,
2839
- editor ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Insert image", icon: "image", active: open, disabled: off, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ImagePanel, { editor, close, onNotice }) }) : null,
2840
- editor ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Insert table", icon: "table", active: open, disabled: off, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TablePanel, { editor, close }) }) : null
2889
+ editor ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert image", icon: "image", active: open, disabled: off, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ImagePanel, { editor, close, onNotice }) }) : null,
2890
+ editor ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Insert table", icon: "table", active: open, disabled: off, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(TablePanel, { editor, close }) }) : null
2841
2891
  ] }),
2842
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Group, { label: "Actions", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Clear formatting", icon: "eraser", disabled: off, onClick: () => run()?.unsetAllMarks().clearNodes().run() }) })
2892
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Group, { label: "Actions", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Clear formatting", icon: "eraser", disabled: off, onClick: () => run()?.unsetAllMarks().clearNodes().run() }) })
2843
2893
  ] }) : null,
2844
- s?.inTable ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "june-doc__row june-doc__row--context", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Group, { label: "Table", children: [
2845
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Add row below", disabled: off, onClick: () => run()?.addRowAfter().run(), children: "+ Row" }),
2846
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Add column right", disabled: off, onClick: () => run()?.addColumnAfter().run(), children: "+ Column" }),
2847
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Delete row", disabled: off, onClick: () => run()?.deleteRow().run(), children: "\u2212 Row" }),
2848
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Delete column", disabled: off, onClick: () => run()?.deleteColumn().run(), children: "\u2212 Column" }),
2849
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Merge cells", disabled: off || !s?.canMerge, onClick: () => run()?.mergeCells().run(), children: "Merge" }),
2850
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Split cell", disabled: off || !s?.canSplit, onClick: () => run()?.splitCell().run(), children: "Split" }),
2851
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Toggle header row", disabled: off, onClick: () => run()?.toggleHeaderRow().run(), children: "Header row" }),
2852
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Btn, { label: "Delete table", disabled: off, onClick: () => run()?.deleteTable().run(), className: "june-doc__btn--danger", children: "Delete table" })
2894
+ s?.inTable ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "june-doc__row june-doc__row--context", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Group, { label: "Table", children: [
2895
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Add row below", disabled: off, onClick: () => run()?.addRowAfter().run(), children: "+ Row" }),
2896
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Add column right", disabled: off, onClick: () => run()?.addColumnAfter().run(), children: "+ Column" }),
2897
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Delete row", disabled: off, onClick: () => run()?.deleteRow().run(), children: "\u2212 Row" }),
2898
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Delete column", disabled: off, onClick: () => run()?.deleteColumn().run(), children: "\u2212 Column" }),
2899
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Merge cells", disabled: off || !s?.canMerge, onClick: () => run()?.mergeCells().run(), children: "Merge" }),
2900
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Split cell", disabled: off || !s?.canSplit, onClick: () => run()?.splitCell().run(), children: "Split" }),
2901
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Toggle header row", disabled: off, onClick: () => run()?.toggleHeaderRow().run(), children: "Header row" }),
2902
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Delete table", disabled: off, onClick: () => run()?.deleteTable().run(), className: "june-doc__btn--danger", children: "Delete table" })
2853
2903
  ] }) }) : null
2854
2904
  ] });
2855
2905
  }
2856
2906
 
2857
2907
  // src/components/document-editor/document-bubble.tsx
2858
- var import_jsx_runtime8 = require("react/jsx-runtime");
2908
+ var import_jsx_runtime9 = require("react/jsx-runtime");
2859
2909
  function DocumentBubbleMenu({ editor }) {
2860
2910
  const s = (0, import_react10.useEditorState)({
2861
2911
  editor,
@@ -2871,7 +2921,7 @@ function DocumentBubbleMenu({ editor }) {
2871
2921
  })
2872
2922
  });
2873
2923
  const run = () => editor.chain().focus();
2874
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2924
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2875
2925
  import_menus.BubbleMenu,
2876
2926
  {
2877
2927
  editor,
@@ -2884,13 +2934,13 @@ function DocumentBubbleMenu({ editor }) {
2884
2934
  return state.doc.textBetween(state.selection.from, state.selection.to).trim().length > 0;
2885
2935
  },
2886
2936
  children: [
2887
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Bold", icon: "bold", toggle: true, active: s.bold, onClick: () => run().toggleBold().run() }),
2888
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Italic", icon: "italic", toggle: true, active: s.italic, onClick: () => run().toggleItalic().run() }),
2889
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Underline", icon: "underline", toggle: true, active: s.underline, onClick: () => run().toggleUnderline().run() }),
2890
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Strikethrough", icon: "strike", toggle: true, active: s.strike, onClick: () => run().toggleStrike().run() }),
2891
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__bubble-sep", "aria-hidden": "true" }),
2892
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Link", icon: "link", toggle: true, active: s.link || open, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LinkPanel, { editor, href: s.linkHref, isLink: s.link, close }) }),
2893
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2937
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Bold", icon: "bold", toggle: true, active: s.bold, onClick: () => run().toggleBold().run() }),
2938
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Italic", icon: "italic", toggle: true, active: s.italic, onClick: () => run().toggleItalic().run() }),
2939
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Underline", icon: "underline", toggle: true, active: s.underline, onClick: () => run().toggleUnderline().run() }),
2940
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Strikethrough", icon: "strike", toggle: true, active: s.strike, onClick: () => run().toggleStrike().run() }),
2941
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "june-doc__bubble-sep", "aria-hidden": "true" }),
2942
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Dropdown, { trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Link", icon: "link", toggle: true, active: s.link || open, onClick: toggle }), children: (close) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LinkPanel, { editor, href: s.linkHref, isLink: s.link, close }) }),
2943
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2894
2944
  ColorPicker,
2895
2945
  {
2896
2946
  label: "Text color",
@@ -2902,7 +2952,7 @@ function DocumentBubbleMenu({ editor }) {
2902
2952
  onReset: () => run().unsetColor().run()
2903
2953
  }
2904
2954
  ),
2905
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2955
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2906
2956
  ColorPicker,
2907
2957
  {
2908
2958
  label: "Highlight",
@@ -2914,8 +2964,8 @@ function DocumentBubbleMenu({ editor }) {
2914
2964
  onReset: () => run().unsetHighlight().run()
2915
2965
  }
2916
2966
  ),
2917
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "june-doc__bubble-sep", "aria-hidden": "true" }),
2918
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Btn, { label: "Clear formatting", icon: "eraser", onClick: () => run().unsetAllMarks().run() })
2967
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "june-doc__bubble-sep", "aria-hidden": "true" }),
2968
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Btn, { label: "Clear formatting", icon: "eraser", onClick: () => run().unsetAllMarks().run() })
2919
2969
  ]
2920
2970
  }
2921
2971
  );
@@ -2925,7 +2975,7 @@ function DocumentBubbleMenu({ editor }) {
2925
2975
  var import_react11 = require("@tiptap/react");
2926
2976
  var import_react12 = require("react");
2927
2977
  init_document_pagination();
2928
- var import_jsx_runtime9 = require("react/jsx-runtime");
2978
+ var import_jsx_runtime10 = require("react/jsx-runtime");
2929
2979
  var PAGE_WIDTH = 794;
2930
2980
  var PAGE_HEIGHT = 1123;
2931
2981
  var PAGE_GAP = 28;
@@ -3020,13 +3070,13 @@ function DocumentContent({ editor, layout = "page", zoom = 1, showMarks = false,
3020
3070
  width: width * zoom,
3021
3071
  height: zoom === 1 ? void 0 : Math.max(sheetH, minHeight ?? 0) * zoom
3022
3072
  };
3023
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { ref: canvas, className: "june-doc__content june-doc__canvas", "data-layout": layout, "data-marks": showMarks || void 0, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "june-doc__zoomer", style: zoomerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { ref: sheet, className: "june-doc__sheet", style: sheetStyle, children: [
3024
- paged ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "june-doc__pages", "aria-hidden": "true", children: Array.from({ length: pages }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "june-doc__page", style: { top: i * stride, height: g.height }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "june-doc__page-num", children: [
3073
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref: canvas, className: "june-doc__content june-doc__canvas", "data-layout": layout, "data-marks": showMarks || void 0, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "june-doc__zoomer", style: zoomerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { ref: sheet, className: "june-doc__sheet", style: sheetStyle, children: [
3074
+ paged ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "june-doc__pages", "aria-hidden": "true", children: Array.from({ length: pages }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "june-doc__page", style: { top: i * stride, height: g.height }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "june-doc__page-num", children: [
3025
3075
  i + 1,
3026
3076
  " / ",
3027
3077
  pages
3028
3078
  ] }) }, i)) }) : null,
3029
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_react11.EditorContent, { editor })
3079
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react11.EditorContent, { editor })
3030
3080
  ] }) }) });
3031
3081
  }
3032
3082
 
@@ -3034,7 +3084,7 @@ function DocumentContent({ editor, layout = "page", zoom = 1, showMarks = false,
3034
3084
  var import_react13 = require("@tiptap/react");
3035
3085
  var import_react14 = require("react");
3036
3086
  init_document_search();
3037
- var import_jsx_runtime10 = require("react/jsx-runtime");
3087
+ var import_jsx_runtime11 = require("react/jsx-runtime");
3038
3088
  function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3039
3089
  const [term, setTerm] = (0, import_react14.useState)(() => {
3040
3090
  const { from, to, empty } = editor.state.selection;
@@ -3062,7 +3112,7 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3062
3112
  }, [editor]);
3063
3113
  const count = info?.count ?? 0;
3064
3114
  const current = info?.current ?? -1;
3065
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3115
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3066
3116
  "div",
3067
3117
  {
3068
3118
  className: "june-doc__findbar",
@@ -3075,9 +3125,9 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3075
3125
  }
3076
3126
  },
3077
3127
  children: [
3078
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "june-doc__find-field", children: [
3079
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: "search", size: 14 }),
3080
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3128
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "june-doc__find-field", children: [
3129
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "search", size: 14 }),
3130
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3081
3131
  "input",
3082
3132
  {
3083
3133
  ref: input,
@@ -3094,11 +3144,11 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3094
3144
  }
3095
3145
  }
3096
3146
  ),
3097
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "june-doc__find-count", "aria-live": "polite", children: term ? count ? `${current + 1} of ${count}` : "No results" : "" })
3147
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "june-doc__find-count", "aria-live": "polite", children: term ? count ? `${current + 1} of ${count}` : "No results" : "" })
3098
3148
  ] }),
3099
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon", "aria-label": "Previous match", title: "Previous (Shift+Enter)", disabled: !count, onClick: () => gotoMatch(editor, -1), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: "chevronUp" }) }),
3100
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon", "aria-label": "Next match", title: "Next (Enter)", disabled: !count, onClick: () => gotoMatch(editor, 1), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: "chevronDown" }) }),
3101
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3149
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon", "aria-label": "Previous match", title: "Previous (Shift+Enter)", disabled: !count, onClick: () => gotoMatch(editor, -1), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "chevronUp" }) }),
3150
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon", "aria-label": "Next match", title: "Next (Enter)", disabled: !count, onClick: () => gotoMatch(editor, 1), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "chevronDown" }) }),
3151
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3102
3152
  "button",
3103
3153
  {
3104
3154
  type: "button",
@@ -3111,9 +3161,9 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3111
3161
  children: "Aa"
3112
3162
  }
3113
3163
  ),
3114
- editable ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
3115
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "june-doc__find-sep", "aria-hidden": "true" }),
3116
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3164
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3165
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "june-doc__find-sep", "aria-hidden": "true" }),
3166
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3117
3167
  "input",
3118
3168
  {
3119
3169
  className: "june-doc__input june-doc__replace-input",
@@ -3129,8 +3179,8 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3129
3179
  }
3130
3180
  }
3131
3181
  ),
3132
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", className: "june-doc__btn", disabled: !count, onClick: () => replaceCurrent(editor, replacement), children: "Replace" }),
3133
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3182
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn", disabled: !count, onClick: () => replaceCurrent(editor, replacement), children: "Replace" }),
3183
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3134
3184
  "button",
3135
3185
  {
3136
3186
  type: "button",
@@ -3144,16 +3194,16 @@ function DocumentFindBar({ editor, editable, onClose, onNotice }) {
3144
3194
  }
3145
3195
  )
3146
3196
  ] }) : null,
3147
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost june-doc__find-close", "aria-label": "Close find", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { name: "close" }) })
3197
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost june-doc__find-close", "aria-label": "Close find", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "close" }) })
3148
3198
  ]
3149
3199
  }
3150
3200
  );
3151
3201
  }
3152
3202
 
3153
3203
  // src/components/document-editor/document-title.tsx
3154
- var import_jsx_runtime11 = require("react/jsx-runtime");
3204
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3155
3205
  function DocumentTitle({ value, disabled, onChange }) {
3156
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3206
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3157
3207
  "input",
3158
3208
  {
3159
3209
  className: "june-doc__title",
@@ -3167,7 +3217,7 @@ function DocumentTitle({ value, disabled, onChange }) {
3167
3217
  }
3168
3218
 
3169
3219
  // src/components/document-editor/document-header.tsx
3170
- var import_jsx_runtime12 = require("react/jsx-runtime");
3220
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3171
3221
  var FORMATS = {
3172
3222
  docx: { label: "Word document", hint: ".docx", icon: "file" },
3173
3223
  pdf: { label: "PDF", hint: "Print / Save as PDF", icon: "file" },
@@ -3177,15 +3227,15 @@ var FORMATS = {
3177
3227
  };
3178
3228
  function DocumentHeader(props) {
3179
3229
  const { title, editable, isDraft, fullscreen, onToggleFullscreen, onTitle, exportFormats, canSave, showSave = canSave, saveState, onExport, onCopy, onSave } = props;
3180
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "june-doc__header", children: [
3181
- fullscreen ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Close full screen", title: "Close (Esc)", onClick: onToggleFullscreen, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "close", size: 18 }) }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "june-doc__doc-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "file", size: 16 }) }),
3182
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DocumentTitle, { value: title, disabled: !editable, onChange: onTitle }),
3183
- isDraft ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "june-doc__badge", children: [
3184
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "sparkles", size: 12 }),
3230
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__header", children: [
3231
+ fullscreen ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Close full screen", title: "Close (Esc)", onClick: onToggleFullscreen, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "close", size: 18 }) }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__doc-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "file", size: 16 }) }),
3232
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DocumentTitle, { value: title, disabled: !editable, onChange: onTitle }),
3233
+ isDraft ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "june-doc__badge", children: [
3234
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "sparkles", size: 12 }),
3185
3235
  "AI draft"
3186
3236
  ] }) : null,
3187
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "june-doc__header-actions", children: [
3188
- showSave ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3237
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__header-actions", children: [
3238
+ showSave ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3189
3239
  "button",
3190
3240
  {
3191
3241
  type: "button",
@@ -3196,17 +3246,17 @@ function DocumentHeader(props) {
3196
3246
  disabled: saveState === "saving" || saveState === "saved" || saveState === "idle",
3197
3247
  onClick: onSave,
3198
3248
  children: [
3199
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: saveState === "saved" ? "check" : "save" }),
3200
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { children: saveState === "saving" ? "Saving\u2026" : saveState === "saved" ? "Saved" : "Save" })
3249
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: saveState === "saved" ? "check" : "save" }),
3250
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: saveState === "saving" ? "Saving\u2026" : saveState === "saved" ? "Saved" : "Save" })
3201
3251
  ]
3202
3252
  }
3203
3253
  ) : null,
3204
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3254
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3205
3255
  Dropdown,
3206
3256
  {
3207
3257
  align: "end",
3208
3258
  className: "june-doc__menu",
3209
- trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3259
+ trigger: ({ open, toggle }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3210
3260
  "button",
3211
3261
  {
3212
3262
  type: "button",
@@ -3216,15 +3266,15 @@ function DocumentHeader(props) {
3216
3266
  "aria-expanded": open,
3217
3267
  onClick: toggle,
3218
3268
  children: [
3219
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { children: "Download" }),
3220
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "chevronDown", size: 14 })
3269
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: "Download" }),
3270
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "chevronDown", size: 14 })
3221
3271
  ]
3222
3272
  }
3223
3273
  ),
3224
- children: (close) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { role: "menu", "aria-label": "Download options", children: [
3274
+ children: (close) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { role: "menu", "aria-label": "Download options", children: [
3225
3275
  exportFormats.map((f) => {
3226
3276
  const meta = FORMATS[f] ?? { label: f.toUpperCase(), hint: "", icon: "file" };
3227
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3277
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3228
3278
  "button",
3229
3279
  {
3230
3280
  type: "button",
@@ -3235,16 +3285,16 @@ function DocumentHeader(props) {
3235
3285
  onExport(f);
3236
3286
  },
3237
3287
  children: [
3238
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: meta.icon }),
3239
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "june-doc__menu-label", children: meta.label }),
3240
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "june-doc__menu-hint", children: meta.hint })
3288
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: meta.icon }),
3289
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__menu-label", children: meta.label }),
3290
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__menu-hint", children: meta.hint })
3241
3291
  ]
3242
3292
  },
3243
3293
  f
3244
3294
  );
3245
3295
  }),
3246
- exportFormats.length ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "june-doc__menu-sep", role: "separator" }) : null,
3247
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3296
+ exportFormats.length ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "june-doc__menu-sep", role: "separator" }) : null,
3297
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3248
3298
  "button",
3249
3299
  {
3250
3300
  type: "button",
@@ -3256,15 +3306,15 @@ function DocumentHeader(props) {
3256
3306
  onCopy();
3257
3307
  },
3258
3308
  children: [
3259
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "copy" }),
3260
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "june-doc__menu-label", children: "Copy to clipboard" })
3309
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "copy" }),
3310
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__menu-label", children: "Copy to clipboard" })
3261
3311
  ]
3262
3312
  }
3263
3313
  )
3264
3314
  ] })
3265
3315
  }
3266
3316
  ),
3267
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3317
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3268
3318
  "button",
3269
3319
  {
3270
3320
  type: "button",
@@ -3273,7 +3323,7 @@ function DocumentHeader(props) {
3273
3323
  title: fullscreen ? "Exit full screen" : "Open full screen",
3274
3324
  "aria-pressed": fullscreen,
3275
3325
  onClick: onToggleFullscreen,
3276
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "maximize" })
3326
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "maximize" })
3277
3327
  }
3278
3328
  )
3279
3329
  ] })
@@ -3715,7 +3765,7 @@ var ALL_EXPORT_FORMATS = [
3715
3765
 
3716
3766
  // src/components/document-editor/document-editor.tsx
3717
3767
  init_document_utils();
3718
- var import_jsx_runtime13 = require("react/jsx-runtime");
3768
+ var import_jsx_runtime14 = require("react/jsx-runtime");
3719
3769
  var snapshotOf = (r) => ({
3720
3770
  documentId: r.id,
3721
3771
  title: r.title,
@@ -3967,18 +4017,18 @@ function DocumentEditorImpl(props) {
3967
4017
  };
3968
4018
  const formats = (exportFormats ?? [...ALL_EXPORT_FORMATS]).filter((f) => listDocumentExporters().includes(f));
3969
4019
  if (parsed.error && !store.get(documentId)) {
3970
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc june-doc--error", "data-theme": resolvedTheme, role: "alert", children: [
3971
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "june-doc__draft-text", children: "This document could not be displayed." }),
3972
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("details", { children: [
3973
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("summary", { children: "Show raw content" }),
3974
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("pre", { className: "june-doc__raw", children: contentKey })
4020
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc june-doc--error", "data-theme": resolvedTheme, role: "alert", children: [
4021
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "june-doc__draft-text", children: "This document could not be displayed." }),
4022
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("details", { children: [
4023
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("summary", { children: "Show raw content" }),
4024
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("pre", { className: "june-doc__raw", children: contentKey })
3975
4025
  ] })
3976
4026
  ] });
3977
4027
  }
3978
- if (!editor) return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DocumentDraft, { title, state: "loading" });
4028
+ if (!editor) return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentDraft, { title, state: "loading" });
3979
4029
  const isDraft = recordStatus === "draft";
3980
4030
  const classes = ["june-doc", fullscreen ? "june-doc--fullscreen" : "", className ?? ""].filter(Boolean).join(" ");
3981
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
4031
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
3982
4032
  "div",
3983
4033
  {
3984
4034
  className: classes,
@@ -4000,7 +4050,7 @@ function DocumentEditorImpl(props) {
4000
4050
  }
4001
4051
  },
4002
4052
  children: [
4003
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4053
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
4004
4054
  DocumentHeader,
4005
4055
  {
4006
4056
  title,
@@ -4018,21 +4068,21 @@ function DocumentEditorImpl(props) {
4018
4068
  onSave: () => void saveRef.current()
4019
4069
  }
4020
4070
  ),
4021
- pending ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__banner", role: "status", children: [
4022
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
4071
+ pending ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__banner", role: "status", children: [
4072
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { children: [
4023
4073
  "The assistant suggested changes that overlap your edits (",
4024
4074
  pending.conflicts,
4025
4075
  " ",
4026
4076
  pending.conflicts === 1 ? "section" : "sections",
4027
4077
  ")."
4028
4078
  ] }),
4029
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "june-doc__banner-actions", children: [
4030
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("merge"), children: "Merge, keep my edits" }),
4031
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("replace"), children: "Use AI version" }),
4032
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("keep"), children: "Keep mine" })
4079
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { className: "june-doc__banner-actions", children: [
4080
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("merge"), children: "Merge, keep my edits" }),
4081
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("replace"), children: "Use AI version" }),
4082
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn", onClick: () => resolve("keep"), children: "Keep mine" })
4033
4083
  ] })
4034
4084
  ] }) : null,
4035
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4085
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
4036
4086
  DocumentToolbar,
4037
4087
  {
4038
4088
  editor,
@@ -4048,33 +4098,33 @@ function DocumentEditorImpl(props) {
4048
4098
  onNotice: flash
4049
4099
  }
4050
4100
  ),
4051
- findOpen ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DocumentFindBar, { editor, editable, onClose: () => setFindOpen(false), onNotice: flash }) : null,
4052
- editable ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DocumentBubbleMenu, { editor }) : null,
4053
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DocumentContent, { editor, layout, zoom, showMarks, onMetrics: setMetrics }),
4054
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__footer", children: [
4055
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__stats", children: [
4056
- layout === "page" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
4057
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
4101
+ findOpen ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentFindBar, { editor, editable, onClose: () => setFindOpen(false), onNotice: flash }) : null,
4102
+ editable ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentBubbleMenu, { editor }) : null,
4103
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentContent, { editor, layout, zoom, showMarks, onMetrics: setMetrics }),
4104
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__footer", children: [
4105
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__stats", children: [
4106
+ layout === "page" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
4107
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { children: [
4058
4108
  "Page ",
4059
4109
  metrics.page,
4060
4110
  " of ",
4061
4111
  metrics.pages
4062
4112
  ] }),
4063
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__stats-sep", "aria-hidden": "true" })
4113
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "june-doc__stats-sep", "aria-hidden": "true" })
4064
4114
  ] }) : null,
4065
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
4115
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { children: [
4066
4116
  words,
4067
4117
  " words"
4068
4118
  ] })
4069
4119
  ] }),
4070
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "june-doc__status", "aria-live": "polite", "data-state": notice ? "notice" : saveState, children: notice ?? SAVE_LABEL[saveState] }),
4071
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "june-doc__zoom", role: "group", "aria-label": "Zoom", children: [
4072
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Zoom out", disabled: zoom <= ZOOM_STEPS[0], onClick: () => setZoom(stepZoom(zoom, -1)), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "minus", size: 14 }) }),
4073
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { type: "button", className: "june-doc__zoom-value", "aria-label": "Reset zoom", title: "Reset zoom", onClick: () => setZoom(1), children: [
4120
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "june-doc__status", "aria-live": "polite", "data-state": notice ? "notice" : saveState, children: notice ?? SAVE_LABEL[saveState] }),
4121
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "june-doc__zoom", role: "group", "aria-label": "Zoom", children: [
4122
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Zoom out", disabled: zoom <= ZOOM_STEPS[0], onClick: () => setZoom(stepZoom(zoom, -1)), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { name: "minus", size: 14 }) }),
4123
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("button", { type: "button", className: "june-doc__zoom-value", "aria-label": "Reset zoom", title: "Reset zoom", onClick: () => setZoom(1), children: [
4074
4124
  Math.round(zoom * 100),
4075
4125
  "%"
4076
4126
  ] }),
4077
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Zoom in", disabled: zoom >= ZOOM_STEPS[ZOOM_STEPS.length - 1], onClick: () => setZoom(stepZoom(zoom, 1)), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "plus", size: 14 }) })
4127
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { type: "button", className: "june-doc__btn june-doc__btn--icon june-doc__btn--ghost", "aria-label": "Zoom in", disabled: zoom >= ZOOM_STEPS[ZOOM_STEPS.length - 1], onClick: () => setZoom(stepZoom(zoom, 1)), children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { name: "plus", size: 14 }) })
4078
4128
  ] })
4079
4129
  ] })
4080
4130
  ]
@@ -4083,7 +4133,7 @@ function DocumentEditorImpl(props) {
4083
4133
  }
4084
4134
 
4085
4135
  // src/components/document-editor/document-component.tsx
4086
- var import_jsx_runtime14 = require("react/jsx-runtime");
4136
+ var import_jsx_runtime15 = require("react/jsx-runtime");
4087
4137
  var DOCUMENT_COMPONENT_DESCRIPTION = 'Custom component. An editable document. DocumentEditor(documentId, title, content, documentType?, status?, editable?, exportFormats?). Place it in the root container (Card or Stack). "content" is the full document body as one Markdown string. Reuse documentId when revising the same document. Use it only when the user asks to create or revise a document.';
4088
4138
  var documentProps = import_v4.z.object({
4089
4139
  documentId: import_v4.z.string().describe("Stable id. Reuse it when revising the same document."),
@@ -4097,12 +4147,12 @@ var documentProps = import_v4.z.object({
4097
4147
  function DocumentEditor(props) {
4098
4148
  const { isStreaming } = useJuneRuntime();
4099
4149
  if (props.generating || isStreaming) {
4100
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentDraft, { title: props.title, state: "drafting" });
4150
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DocumentDraft, { title: props.title, state: "drafting" });
4101
4151
  }
4102
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DocumentEditorImpl, { ...props });
4152
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DocumentEditorImpl, { ...props });
4103
4153
  }
4104
4154
  function OpenUIDocument({ props }) {
4105
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
4155
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4106
4156
  DocumentEditor,
4107
4157
  {
4108
4158
  documentId: props.documentId,
@@ -4190,9 +4240,9 @@ var import_react_ui = require("@openuidev/react-ui");
4190
4240
  var juneLibrary = withDocumentEditor(import_react_ui.openuiLibrary);
4191
4241
 
4192
4242
  // src/core/JuneUI.tsx
4193
- var import_jsx_runtime15 = require("react/jsx-runtime");
4243
+ var import_jsx_runtime16 = require("react/jsx-runtime");
4194
4244
  function JuneUI({ library = juneLibrary, ...props }) {
4195
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(JuneRenderer, { library, ...props });
4245
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(JuneRenderer, { library, ...props });
4196
4246
  }
4197
4247
  // Annotate the CommonJS export names for ESM import in node:
4198
4248
  0 && (module.exports = {