@forgedevstack/ink 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +103 -38
  3. package/dist/components/InkEditor/InkEditor.cjs +1 -1
  4. package/dist/components/InkEditor/InkEditor.d.ts.map +1 -1
  5. package/dist/components/InkEditor/InkEditor.js +495 -156
  6. package/dist/components/InkEditor/components/AiPanel/AiPanel.cjs +1 -0
  7. package/dist/components/InkEditor/components/AiPanel/AiPanel.d.ts +11 -0
  8. package/dist/components/InkEditor/components/AiPanel/AiPanel.d.ts.map +1 -0
  9. package/dist/components/InkEditor/components/AiPanel/AiPanel.js +178 -0
  10. package/dist/components/InkEditor/components/AiPanel/index.d.ts +3 -0
  11. package/dist/components/InkEditor/components/AiPanel/index.d.ts.map +1 -0
  12. package/dist/components/InkEditor/components/BlockHandles/BlockHandles.cjs +1 -0
  13. package/dist/components/InkEditor/components/BlockHandles/BlockHandles.d.ts +9 -0
  14. package/dist/components/InkEditor/components/BlockHandles/BlockHandles.d.ts.map +1 -0
  15. package/dist/components/InkEditor/components/BlockHandles/BlockHandles.js +12 -0
  16. package/dist/components/InkEditor/components/BlockHandles/index.d.ts +3 -0
  17. package/dist/components/InkEditor/components/BlockHandles/index.d.ts.map +1 -0
  18. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.cjs +1 -0
  19. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.d.ts +11 -0
  20. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  21. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.js +61 -0
  22. package/dist/components/InkEditor/components/CommentsPanel/index.d.ts +3 -0
  23. package/dist/components/InkEditor/components/CommentsPanel/index.d.ts.map +1 -0
  24. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.cjs +1 -0
  25. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.d.ts +10 -0
  26. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.d.ts.map +1 -0
  27. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.js +20 -0
  28. package/dist/components/InkEditor/components/SlashMenu/index.d.ts +3 -0
  29. package/dist/components/InkEditor/components/SlashMenu/index.d.ts.map +1 -0
  30. package/dist/components/InkEditor/components/TrackChangesBar/TrackChangesBar.cjs +1 -0
  31. package/dist/components/InkEditor/components/TrackChangesBar/TrackChangesBar.d.ts +11 -0
  32. package/dist/components/InkEditor/components/TrackChangesBar/TrackChangesBar.d.ts.map +1 -0
  33. package/dist/components/InkEditor/components/TrackChangesBar/TrackChangesBar.js +27 -0
  34. package/dist/components/InkEditor/components/TrackChangesBar/index.d.ts +3 -0
  35. package/dist/components/InkEditor/components/TrackChangesBar/index.d.ts.map +1 -0
  36. package/dist/components/InkEditor/components/index.d.ts +5 -0
  37. package/dist/components/InkEditor/components/index.d.ts.map +1 -1
  38. package/dist/constants/aiModels.const.cjs +1 -0
  39. package/dist/constants/aiModels.const.d.ts +5 -0
  40. package/dist/constants/aiModels.const.d.ts.map +1 -0
  41. package/dist/constants/aiModels.const.js +31 -0
  42. package/dist/constants/defaults.const.cjs +1 -1
  43. package/dist/constants/defaults.const.d.ts +32 -1
  44. package/dist/constants/defaults.const.d.ts.map +1 -1
  45. package/dist/constants/defaults.const.js +124 -20
  46. package/dist/constants/index.d.ts +1 -0
  47. package/dist/constants/index.d.ts.map +1 -1
  48. package/dist/constants/numbers.const.cjs +1 -1
  49. package/dist/constants/numbers.const.d.ts +13 -0
  50. package/dist/constants/numbers.const.d.ts.map +1 -1
  51. package/dist/constants/numbers.const.js +13 -3
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.d.ts +3 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +32 -13
  56. package/dist/plugins/ai/aiPlugin.cjs +1 -1
  57. package/dist/plugins/ai/aiPlugin.d.ts.map +1 -1
  58. package/dist/plugins/ai/aiPlugin.js +40 -18
  59. package/dist/plugins/ai/demoProvider.cjs +1 -0
  60. package/dist/plugins/ai/demoProvider.d.ts +3 -0
  61. package/dist/plugins/ai/demoProvider.d.ts.map +1 -0
  62. package/dist/plugins/ai/demoProvider.js +130 -0
  63. package/dist/plugins/ai/index.cjs +1 -1
  64. package/dist/plugins/ai/index.d.ts +4 -1
  65. package/dist/plugins/ai/index.d.ts.map +1 -1
  66. package/dist/plugins/ai/index.js +15 -3
  67. package/dist/plugins/ai/stubs.cjs +1 -0
  68. package/dist/plugins/ai/stubs.d.ts +7 -0
  69. package/dist/plugins/ai/stubs.d.ts.map +1 -0
  70. package/dist/plugins/ai/stubs.js +23 -0
  71. package/dist/styles.css +515 -16
  72. package/dist/types/ai.types.d.ts +111 -2
  73. package/dist/types/ai.types.d.ts.map +1 -1
  74. package/dist/types/comments.types.d.ts +17 -0
  75. package/dist/types/comments.types.d.ts.map +1 -0
  76. package/dist/types/features.types.d.ts +5 -0
  77. package/dist/types/features.types.d.ts.map +1 -0
  78. package/dist/types/index.d.ts +5 -2
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/ink.types.d.ts +26 -1
  81. package/dist/types/ink.types.d.ts.map +1 -1
  82. package/dist/types/trackChanges.types.d.ts +12 -0
  83. package/dist/types/trackChanges.types.d.ts.map +1 -0
  84. package/dist/utils/blocks.utils.cjs +1 -0
  85. package/dist/utils/blocks.utils.d.ts +4 -0
  86. package/dist/utils/blocks.utils.d.ts.map +1 -0
  87. package/dist/utils/blocks.utils.js +41 -0
  88. package/dist/utils/comments.utils.cjs +1 -0
  89. package/dist/utils/comments.utils.d.ts +5 -0
  90. package/dist/utils/comments.utils.d.ts.map +1 -0
  91. package/dist/utils/comments.utils.js +32 -0
  92. package/dist/utils/history.utils.cjs +1 -0
  93. package/dist/utils/history.utils.d.ts +13 -0
  94. package/dist/utils/history.utils.d.ts.map +1 -0
  95. package/dist/utils/history.utils.js +29 -0
  96. package/dist/utils/id.utils.cjs +1 -0
  97. package/dist/utils/id.utils.d.ts +2 -0
  98. package/dist/utils/id.utils.d.ts.map +1 -0
  99. package/dist/utils/id.utils.js +4 -0
  100. package/dist/utils/index.d.ts +7 -0
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/slash.utils.cjs +1 -0
  103. package/dist/utils/slash.utils.d.ts +4 -0
  104. package/dist/utils/slash.utils.d.ts.map +1 -0
  105. package/dist/utils/slash.utils.js +13 -0
  106. package/dist/utils/table.utils.cjs +1 -0
  107. package/dist/utils/table.utils.d.ts +2 -0
  108. package/dist/utils/table.utils.d.ts.map +1 -0
  109. package/dist/utils/table.utils.js +13 -0
  110. package/dist/utils/trackChanges.utils.cjs +1 -0
  111. package/dist/utils/trackChanges.utils.d.ts +7 -0
  112. package/dist/utils/trackChanges.utils.d.ts.map +1 -0
  113. package/dist/utils/trackChanges.utils.js +34 -0
  114. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),I=require("../../../../constants/defaults.const.cjs"),O=require("../../../../constants/aiModels.const.cjs"),P=require("../../../../plugins/ai/aiPlugin.cjs"),C=require("../../../../utils/id.utils.cjs"),G=w=>{var p,N,f,y;const{config:s,documentHtml:k,selectionHtml:v,onApplyHtml:T,onClose:b}=w,[a,L]=i.useState("chat"),[x,g]=i.useState(""),[o,_]=i.useState([]),[l,j]=i.useState(!1),[r,h]=i.useState(null),[H,D]=i.useState([]),[A,M]=i.useState(I.INK_TRANSLATE_LANGUAGES[1]),R=s.providerId||O.INK_AI_DEMO_PROVIDER_ID,q=((p=s.uiTheme)==null?void 0:p.className)||s.className||"",c=async(t,d,u)=>{var S;j(!0);try{const E=t==="chat"&&u?[...o,{id:C.createInkId("turn"),role:"user",content:u,timestamp:Date.now(),capability:t}]:o;t==="chat"&&u&&_(E);const n=await P.inkAi.runProvider(R,{capability:t,html:k,selectionHtml:v||void 0,prompt:u,history:E,options:d,modelId:s.modelId,documentSnapshot:{html:k,selectionHtml:v||void 0}});(S=n.turns)!=null&&S.length?_(m=>[...m,...n.turns]):n.text&&t!=="chat"&&_(m=>[...m,{id:C.createInkId("turn"),role:"assistant",content:n.text||"",timestamp:Date.now(),capability:t}]),n.diff&&h(n.diff),n.reviewSuggestions&&D(n.reviewSuggestions)}finally{j(!1)}},K=t=>{t.preventDefault();const d=x.trim();!d||l||(g(""),c("chat",void 0,d))};return e.jsxs("aside",{className:`Ink-Ai ${q}`.trim(),"data-placement":s.placement||"sidebar",style:{"--ink-ai-accent":(N=s.uiTheme)==null?void 0:N.accent,"--ink-ai-surface":(f=s.uiTheme)==null?void 0:f.surface,"--ink-ai-border":(y=s.uiTheme)==null?void 0:y.border},"aria-label":"Ink AI",children:[e.jsxs("div",{className:"Ink-Ai__header",children:[e.jsx("strong",{children:"Ink AI"}),b?e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:b,title:"Close AI",children:"×"}):null]}),e.jsx("div",{className:"Ink-Ai__tabs",role:"tablist",children:["chat","actions","review","translate"].map(t=>e.jsx("button",{type:"button",role:"tab",className:`Ink-Editor__button${a===t?" Ink-Editor__button--active":""}`,"aria-selected":a===t,onClick:()=>L(t),children:t},t))}),e.jsxs("div",{className:"Ink-Ai__body",children:[a==="chat"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"Ink-Ai__history",children:o.length===0?e.jsxs("p",{className:"Ink-Ai__empty",children:["Multi-turn chat with local demo provider. Bring your own LLM via"," ",e.jsx("code",{children:"inkAi.registerProvider"}),"."]}):o.map(t=>e.jsxs("div",{className:`Ink-Ai__turn Ink-Ai__turn--${t.role}`,children:[e.jsx("span",{children:t.role}),e.jsx("p",{children:t.content})]},t.id))}),e.jsxs("form",{className:"Ink-Ai__form",onSubmit:K,children:[e.jsx("input",{value:x,onChange:t=>g(t.target.value),placeholder:"Ask Ink AI…",disabled:l}),e.jsx("button",{type:"submit",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,children:"Send"})]})]}):null,a==="actions"?e.jsxs("div",{className:"Ink-Ai__actions",children:[e.jsx("p",{className:"Ink-Ai__hint",children:"Quick actions use the current selection (or full document)."}),I.INK_QUICK_ACTIONS.map(t=>e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Ai__action",disabled:l,onClick:()=>void c(t.capability),children:t.label},t.id))]}):null,a==="review"?e.jsxs("div",{className:"Ink-Ai__review",children:[e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,onClick:()=>void c("review"),children:"Run grammar & style review"}),H.map(t=>e.jsxs("article",{className:`Ink-Ai__suggestion Ink-Ai__suggestion--${t.severity}`,children:[e.jsx("strong",{children:t.severity}),e.jsx("p",{children:t.message}),e.jsx("code",{children:t.suggestedText})]},t.id))]}):null,a==="translate"?e.jsxs("div",{className:"Ink-Ai__translate",children:[e.jsxs("label",{children:["Language",e.jsx("select",{value:A,onChange:t=>M(t.target.value),children:I.INK_TRANSLATE_LANGUAGES.map(t=>e.jsx("option",{value:t,children:t},t))})]}),e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,onClick:()=>void c("translate",{language:A}),children:"Translate"})]}):null,r?e.jsxs("div",{className:"Ink-Ai__diff",children:[e.jsx("strong",{children:"Suggested change"}),e.jsx("p",{children:r.summary}),e.jsx("div",{className:"Ink-Ai__diff-preview",dangerouslySetInnerHTML:{__html:r.suggestedHtml}}),e.jsxs("div",{className:"Ink-Ai__diff-actions",children:[e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",onClick:()=>{T(r.suggestedHtml),h(null)},children:"Apply"}),e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:()=>h(null),children:"Dismiss"})]})]}):null]}),e.jsx("footer",{className:"Ink-Ai__footer",children:"Demo provider · BYO LLM"})]})};exports.AiPanel=G;
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import { InkAiConfig } from '../../../../types';
3
+ export interface AiPanelProps {
4
+ config: InkAiConfig;
5
+ documentHtml: string;
6
+ selectionHtml: string;
7
+ onApplyHtml: (html: string) => void;
8
+ onClose?: () => void;
9
+ }
10
+ export declare const AiPanel: FC<AiPanelProps>;
11
+ //# sourceMappingURL=AiPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiPanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/AiPanel/AiPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AAM1D,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CA6NpC,CAAC"}
@@ -0,0 +1,178 @@
1
+ import { jsxs as n, jsx as t, Fragment as j } from "react/jsx-runtime";
2
+ import { useState as l } from "react";
3
+ import { INK_TRANSLATE_LANGUAGES as T, INK_QUICK_ACTIONS as G } from "../../../../constants/defaults.const.js";
4
+ import { INK_AI_DEMO_PROVIDER_ID as P } from "../../../../constants/aiModels.const.js";
5
+ import { inkAi as Q } from "../../../../plugins/ai/aiPlugin.js";
6
+ import { createInkId as H } from "../../../../utils/id.utils.js";
7
+ const J = (D) => {
8
+ var N, y, E, C;
9
+ const { config: i, documentHtml: k, selectionHtml: v, onApplyHtml: L, onClose: b } = D, [a, x] = l("chat"), [p, g] = l(""), [r, _] = l([]), [o, f] = l(!1), [c, h] = l(null), [M, R] = l([]), [A, K] = l(T[1]), O = i.providerId || P, $ = ((N = i.uiTheme) == null ? void 0 : N.className) || i.className || "", d = async (e, u, m) => {
10
+ var w;
11
+ f(!0);
12
+ try {
13
+ const S = e === "chat" && m ? [
14
+ ...r,
15
+ {
16
+ id: H("turn"),
17
+ role: "user",
18
+ content: m,
19
+ timestamp: Date.now(),
20
+ capability: e
21
+ }
22
+ ] : r;
23
+ e === "chat" && m && _(S);
24
+ const s = await Q.runProvider(O, {
25
+ capability: e,
26
+ html: k,
27
+ selectionHtml: v || void 0,
28
+ prompt: m,
29
+ history: S,
30
+ options: u,
31
+ modelId: i.modelId,
32
+ documentSnapshot: { html: k, selectionHtml: v || void 0 }
33
+ });
34
+ (w = s.turns) != null && w.length ? _((I) => [...I, ...s.turns]) : s.text && e !== "chat" && _((I) => [
35
+ ...I,
36
+ {
37
+ id: H("turn"),
38
+ role: "assistant",
39
+ content: s.text || "",
40
+ timestamp: Date.now(),
41
+ capability: e
42
+ }
43
+ ]), s.diff && h(s.diff), s.reviewSuggestions && R(s.reviewSuggestions);
44
+ } finally {
45
+ f(!1);
46
+ }
47
+ }, B = (e) => {
48
+ e.preventDefault();
49
+ const u = p.trim();
50
+ !u || o || (g(""), d("chat", void 0, u));
51
+ };
52
+ return /* @__PURE__ */ n(
53
+ "aside",
54
+ {
55
+ className: `Ink-Ai ${$}`.trim(),
56
+ "data-placement": i.placement || "sidebar",
57
+ style: {
58
+ "--ink-ai-accent": (y = i.uiTheme) == null ? void 0 : y.accent,
59
+ "--ink-ai-surface": (E = i.uiTheme) == null ? void 0 : E.surface,
60
+ "--ink-ai-border": (C = i.uiTheme) == null ? void 0 : C.border
61
+ },
62
+ "aria-label": "Ink AI",
63
+ children: [
64
+ /* @__PURE__ */ n("div", { className: "Ink-Ai__header", children: [
65
+ /* @__PURE__ */ t("strong", { children: "Ink AI" }),
66
+ b ? /* @__PURE__ */ t("button", { type: "button", className: "Ink-Editor__button", onClick: b, title: "Close AI", children: "×" }) : null
67
+ ] }),
68
+ /* @__PURE__ */ t("div", { className: "Ink-Ai__tabs", role: "tablist", children: ["chat", "actions", "review", "translate"].map((e) => /* @__PURE__ */ t(
69
+ "button",
70
+ {
71
+ type: "button",
72
+ role: "tab",
73
+ className: `Ink-Editor__button${a === e ? " Ink-Editor__button--active" : ""}`,
74
+ "aria-selected": a === e,
75
+ onClick: () => x(e),
76
+ children: e
77
+ },
78
+ e
79
+ )) }),
80
+ /* @__PURE__ */ n("div", { className: "Ink-Ai__body", children: [
81
+ a === "chat" ? /* @__PURE__ */ n(j, { children: [
82
+ /* @__PURE__ */ t("div", { className: "Ink-Ai__history", children: r.length === 0 ? /* @__PURE__ */ n("p", { className: "Ink-Ai__empty", children: [
83
+ "Multi-turn chat with local demo provider. Bring your own LLM via",
84
+ " ",
85
+ /* @__PURE__ */ t("code", { children: "inkAi.registerProvider" }),
86
+ "."
87
+ ] }) : r.map((e) => /* @__PURE__ */ n("div", { className: `Ink-Ai__turn Ink-Ai__turn--${e.role}`, children: [
88
+ /* @__PURE__ */ t("span", { children: e.role }),
89
+ /* @__PURE__ */ t("p", { children: e.content })
90
+ ] }, e.id)) }),
91
+ /* @__PURE__ */ n("form", { className: "Ink-Ai__form", onSubmit: B, children: [
92
+ /* @__PURE__ */ t(
93
+ "input",
94
+ {
95
+ value: p,
96
+ onChange: (e) => g(e.target.value),
97
+ placeholder: "Ask Ink AI…",
98
+ disabled: o
99
+ }
100
+ ),
101
+ /* @__PURE__ */ t("button", { type: "submit", className: "Ink-Editor__button Ink-Editor__button--active", disabled: o, children: "Send" })
102
+ ] })
103
+ ] }) : null,
104
+ a === "actions" ? /* @__PURE__ */ n("div", { className: "Ink-Ai__actions", children: [
105
+ /* @__PURE__ */ t("p", { className: "Ink-Ai__hint", children: "Quick actions use the current selection (or full document)." }),
106
+ G.map((e) => /* @__PURE__ */ t(
107
+ "button",
108
+ {
109
+ type: "button",
110
+ className: "Ink-Editor__button Ink-Ai__action",
111
+ disabled: o,
112
+ onClick: () => void d(e.capability),
113
+ children: e.label
114
+ },
115
+ e.id
116
+ ))
117
+ ] }) : null,
118
+ a === "review" ? /* @__PURE__ */ n("div", { className: "Ink-Ai__review", children: [
119
+ /* @__PURE__ */ t(
120
+ "button",
121
+ {
122
+ type: "button",
123
+ className: "Ink-Editor__button Ink-Editor__button--active",
124
+ disabled: o,
125
+ onClick: () => void d("review"),
126
+ children: "Run grammar & style review"
127
+ }
128
+ ),
129
+ M.map((e) => /* @__PURE__ */ n("article", { className: `Ink-Ai__suggestion Ink-Ai__suggestion--${e.severity}`, children: [
130
+ /* @__PURE__ */ t("strong", { children: e.severity }),
131
+ /* @__PURE__ */ t("p", { children: e.message }),
132
+ /* @__PURE__ */ t("code", { children: e.suggestedText })
133
+ ] }, e.id))
134
+ ] }) : null,
135
+ a === "translate" ? /* @__PURE__ */ n("div", { className: "Ink-Ai__translate", children: [
136
+ /* @__PURE__ */ n("label", { children: [
137
+ "Language",
138
+ /* @__PURE__ */ t("select", { value: A, onChange: (e) => K(e.target.value), children: T.map((e) => /* @__PURE__ */ t("option", { value: e, children: e }, e)) })
139
+ ] }),
140
+ /* @__PURE__ */ t(
141
+ "button",
142
+ {
143
+ type: "button",
144
+ className: "Ink-Editor__button Ink-Editor__button--active",
145
+ disabled: o,
146
+ onClick: () => void d("translate", { language: A }),
147
+ children: "Translate"
148
+ }
149
+ )
150
+ ] }) : null,
151
+ c ? /* @__PURE__ */ n("div", { className: "Ink-Ai__diff", children: [
152
+ /* @__PURE__ */ t("strong", { children: "Suggested change" }),
153
+ /* @__PURE__ */ t("p", { children: c.summary }),
154
+ /* @__PURE__ */ t("div", { className: "Ink-Ai__diff-preview", dangerouslySetInnerHTML: { __html: c.suggestedHtml } }),
155
+ /* @__PURE__ */ n("div", { className: "Ink-Ai__diff-actions", children: [
156
+ /* @__PURE__ */ t(
157
+ "button",
158
+ {
159
+ type: "button",
160
+ className: "Ink-Editor__button Ink-Editor__button--active",
161
+ onClick: () => {
162
+ L(c.suggestedHtml), h(null);
163
+ },
164
+ children: "Apply"
165
+ }
166
+ ),
167
+ /* @__PURE__ */ t("button", { type: "button", className: "Ink-Editor__button", onClick: () => h(null), children: "Dismiss" })
168
+ ] })
169
+ ] }) : null
170
+ ] }),
171
+ /* @__PURE__ */ t("footer", { className: "Ink-Ai__footer", children: "Demo provider · BYO LLM" })
172
+ ]
173
+ }
174
+ );
175
+ };
176
+ export {
177
+ J as AiPanel
178
+ };
@@ -0,0 +1,3 @@
1
+ export { AiPanel } from './AiPanel';
2
+ export type { AiPanelProps } from './AiPanel';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/AiPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=t=>{const{visible:n,top:l,onMoveUp:o,onMoveDown:s}=t;return n?e.jsxs("div",{className:"Ink-BlockHandles",style:{top:l},"aria-hidden":!n,children:[e.jsx("button",{type:"button",className:"Ink-BlockHandles__grip",title:"Block",tabIndex:-1,children:"⋮⋮"}),e.jsx("button",{type:"button",className:"Ink-BlockHandles__btn",title:"Move block up",onClick:o,children:"↑"}),e.jsx("button",{type:"button",className:"Ink-BlockHandles__btn",title:"Move block down",onClick:s,children:"↓"})]}):null};exports.BlockHandles=c;
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ export interface BlockHandlesProps {
3
+ visible: boolean;
4
+ top: number;
5
+ onMoveUp: () => void;
6
+ onMoveDown: () => void;
7
+ }
8
+ export declare const BlockHandles: FC<BlockHandlesProps>;
9
+ //# sourceMappingURL=BlockHandles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockHandles.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/BlockHandles/BlockHandles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAgB9C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsxs as s, jsx as n } from "react/jsx-runtime";
2
+ const a = (e) => {
3
+ const { visible: t, top: l, onMoveUp: o, onMoveDown: c } = e;
4
+ return t ? /* @__PURE__ */ s("div", { className: "Ink-BlockHandles", style: { top: l }, "aria-hidden": !t, children: [
5
+ /* @__PURE__ */ n("button", { type: "button", className: "Ink-BlockHandles__grip", title: "Block", tabIndex: -1, children: "⋮⋮" }),
6
+ /* @__PURE__ */ n("button", { type: "button", className: "Ink-BlockHandles__btn", title: "Move block up", onClick: o, children: "↑" }),
7
+ /* @__PURE__ */ n("button", { type: "button", className: "Ink-BlockHandles__btn", title: "Move block down", onClick: c, children: "↓" })
8
+ ] }) : null;
9
+ };
10
+ export {
11
+ a as BlockHandles
12
+ };
@@ -0,0 +1,3 @@
1
+ export { BlockHandles } from './BlockHandles';
2
+ export type { BlockHandlesProps } from './BlockHandles';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/BlockHandles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),j=require("react"),x=c=>{const{comments:o,author:r,onAddReply:d,onResolve:_,onClose:l}=c,[a,m]=j.useState({}),u=(s,n)=>{var i;s.preventDefault();const t=(i=a[n])==null?void 0:i.trim();t&&(d(n,t),m(h=>({...h,[n]:""})))};return e.jsxs("aside",{className:"Ink-Comments","aria-label":"Comments archive",children:[e.jsxs("div",{className:"Ink-Comments__header",children:[e.jsx("strong",{children:"Comments archive"}),l?e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:l,title:"Close",children:"×"}):null]}),e.jsx("div",{className:"Ink-Comments__list",children:o.length===0?e.jsx("p",{className:"Ink-Comments__empty",children:"Select text and add a comment to start a thread."}):o.map(s=>e.jsxs("article",{className:`Ink-Comments__thread${s.resolved?" Ink-Comments__thread--resolved":""}`,children:[e.jsxs("header",{className:"Ink-Comments__meta",children:[e.jsx("span",{children:s.author}),e.jsx("time",{children:new Date(s.timestamp).toLocaleString()})]}),e.jsx("p",{className:"Ink-Comments__body",children:s.body}),s.replies.map(n=>e.jsxs("div",{className:"Ink-Comments__reply",children:[e.jsxs("header",{className:"Ink-Comments__meta",children:[e.jsx("span",{children:n.author}),e.jsx("time",{children:new Date(n.timestamp).toLocaleString()})]}),e.jsx("p",{className:"Ink-Comments__body",children:n.body})]},n.id)),s.resolved?e.jsx("p",{className:"Ink-Comments__resolved",children:"Resolved"}):e.jsxs("form",{className:"Ink-Comments__form",onSubmit:n=>u(n,s.id),children:[e.jsx("input",{value:a[s.id]??"",onChange:n=>m(t=>({...t,[s.id]:n.target.value})),placeholder:`Reply as ${r}…`,"aria-label":`Reply to ${s.author}`}),e.jsx("button",{type:"submit",className:"Ink-Editor__button Ink-Editor__button--active",children:"Reply"}),e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:()=>_(s.id),children:"Resolve"})]})]},s.id))})]})};exports.CommentsPanel=x;
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import { InkCommentThread } from '../../../../types';
3
+ export interface CommentsPanelProps {
4
+ comments: InkCommentThread[];
5
+ author: string;
6
+ onAddReply: (threadId: string, body: string) => void;
7
+ onResolve: (threadId: string) => void;
8
+ onClose?: () => void;
9
+ }
10
+ export declare const CommentsPanel: FC<CommentsPanelProps>;
11
+ //# sourceMappingURL=CommentsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/CommentsPanel/CommentsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA2EhD,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { jsxs as s, jsx as n } from "react/jsx-runtime";
2
+ import { useState as C } from "react";
3
+ const v = (r) => {
4
+ const { comments: m, author: d, onAddReply: _, onResolve: p, onClose: l } = r, [a, i] = C({}), h = (e, t) => {
5
+ var c;
6
+ e.preventDefault();
7
+ const o = (c = a[t]) == null ? void 0 : c.trim();
8
+ o && (_(t, o), i((u) => ({ ...u, [t]: "" })));
9
+ };
10
+ return /* @__PURE__ */ s("aside", { className: "Ink-Comments", "aria-label": "Comments archive", children: [
11
+ /* @__PURE__ */ s("div", { className: "Ink-Comments__header", children: [
12
+ /* @__PURE__ */ n("strong", { children: "Comments archive" }),
13
+ l ? /* @__PURE__ */ n("button", { type: "button", className: "Ink-Editor__button", onClick: l, title: "Close", children: "×" }) : null
14
+ ] }),
15
+ /* @__PURE__ */ n("div", { className: "Ink-Comments__list", children: m.length === 0 ? /* @__PURE__ */ n("p", { className: "Ink-Comments__empty", children: "Select text and add a comment to start a thread." }) : m.map((e) => /* @__PURE__ */ s(
16
+ "article",
17
+ {
18
+ className: `Ink-Comments__thread${e.resolved ? " Ink-Comments__thread--resolved" : ""}`,
19
+ children: [
20
+ /* @__PURE__ */ s("header", { className: "Ink-Comments__meta", children: [
21
+ /* @__PURE__ */ n("span", { children: e.author }),
22
+ /* @__PURE__ */ n("time", { children: new Date(e.timestamp).toLocaleString() })
23
+ ] }),
24
+ /* @__PURE__ */ n("p", { className: "Ink-Comments__body", children: e.body }),
25
+ e.replies.map((t) => /* @__PURE__ */ s("div", { className: "Ink-Comments__reply", children: [
26
+ /* @__PURE__ */ s("header", { className: "Ink-Comments__meta", children: [
27
+ /* @__PURE__ */ n("span", { children: t.author }),
28
+ /* @__PURE__ */ n("time", { children: new Date(t.timestamp).toLocaleString() })
29
+ ] }),
30
+ /* @__PURE__ */ n("p", { className: "Ink-Comments__body", children: t.body })
31
+ ] }, t.id)),
32
+ e.resolved ? /* @__PURE__ */ n("p", { className: "Ink-Comments__resolved", children: "Resolved" }) : /* @__PURE__ */ s("form", { className: "Ink-Comments__form", onSubmit: (t) => h(t, e.id), children: [
33
+ /* @__PURE__ */ n(
34
+ "input",
35
+ {
36
+ value: a[e.id] ?? "",
37
+ onChange: (t) => i((o) => ({ ...o, [e.id]: t.target.value })),
38
+ placeholder: `Reply as ${d}…`,
39
+ "aria-label": `Reply to ${e.author}`
40
+ }
41
+ ),
42
+ /* @__PURE__ */ n("button", { type: "submit", className: "Ink-Editor__button Ink-Editor__button--active", children: "Reply" }),
43
+ /* @__PURE__ */ n(
44
+ "button",
45
+ {
46
+ type: "button",
47
+ className: "Ink-Editor__button",
48
+ onClick: () => p(e.id),
49
+ children: "Resolve"
50
+ }
51
+ )
52
+ ] })
53
+ ]
54
+ },
55
+ e.id
56
+ )) })
57
+ ] });
58
+ };
59
+ export {
60
+ v as CommentsPanel
61
+ };
@@ -0,0 +1,3 @@
1
+ export { CommentsPanel } from './CommentsPanel';
2
+ export type { CommentsPanelProps } from './CommentsPanel';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/CommentsPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),u=n=>{const{items:l,top:s,left:o,onSelect:a}=n;return l.length===0?null:t.jsx("div",{className:"Ink-Slash",style:{top:s,left:o},role:"listbox","aria-label":"Slash commands",children:l.map(e=>t.jsx("button",{type:"button",role:"option",className:"Ink-Slash__item",onMouseDown:r=>{r.preventDefault(),a(e)},children:e.label},e.id))})};exports.SlashMenu=u;
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ import { SlashCommandItem } from '../../../../types';
3
+ export interface SlashMenuProps {
4
+ items: SlashCommandItem[];
5
+ top: number;
6
+ left: number;
7
+ onSelect: (item: SlashCommandItem) => void;
8
+ }
9
+ export declare const SlashMenu: FC<SlashMenuProps>;
10
+ //# sourceMappingURL=SlashMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlashMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/SlashMenu/SlashMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAqBxC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ const c = (n) => {
3
+ const { items: l, top: o, left: s, onSelect: a } = n;
4
+ return l.length === 0 ? null : /* @__PURE__ */ t("div", { className: "Ink-Slash", style: { top: o, left: s }, role: "listbox", "aria-label": "Slash commands", children: l.map((e) => /* @__PURE__ */ t(
5
+ "button",
6
+ {
7
+ type: "button",
8
+ role: "option",
9
+ className: "Ink-Slash__item",
10
+ onMouseDown: (r) => {
11
+ r.preventDefault(), a(e);
12
+ },
13
+ children: e.label
14
+ },
15
+ e.id
16
+ )) });
17
+ };
18
+ export {
19
+ c as SlashMenu
20
+ };
@@ -0,0 +1,3 @@
1
+ export { SlashMenu } from './SlashMenu';
2
+ export type { SlashMenuProps } from './SlashMenu';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/SlashMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),o=c=>{const{changes:l,onAccept:s,onReject:a,onAcceptAll:r,onRejectAll:i}=c,n=l.filter(e=>!e.accepted&&!e.rejected);return n.length===0?null:t.jsxs("div",{className:"Ink-TrackBar",role:"region","aria-label":"Track changes",children:[t.jsxs("span",{className:"Ink-TrackBar__label",children:[n.length," pending change",n.length===1?"":"s"]}),t.jsxs("div",{className:"Ink-TrackBar__actions",children:[t.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:r,children:"Accept all"}),t.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:i,children:"Reject all"})]}),t.jsx("ul",{className:"Ink-TrackBar__list",children:n.map(e=>t.jsxs("li",{children:[t.jsxs("span",{children:[e.type," · ",e.author]}),t.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",onClick:()=>s(e.id),children:"Accept"}),t.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:()=>a(e.id),children:"Reject"})]},e.id))})]})};exports.TrackChangesBar=o;
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ import { InkTrackChange } from '../../../../types';
3
+ export interface TrackChangesBarProps {
4
+ changes: InkTrackChange[];
5
+ onAccept: (id: string) => void;
6
+ onReject: (id: string) => void;
7
+ onAcceptAll: () => void;
8
+ onRejectAll: () => void;
9
+ }
10
+ export declare const TrackChangesBar: FC<TrackChangesBarProps>;
11
+ //# sourceMappingURL=TrackChangesBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrackChangesBar.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/TrackChangesBar/TrackChangesBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAgCpD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
+ const k = (l) => {
3
+ const { changes: a, onAccept: r, onReject: o, onAcceptAll: i, onRejectAll: s } = l, c = a.filter((t) => !t.accepted && !t.rejected);
4
+ return c.length === 0 ? null : /* @__PURE__ */ n("div", { className: "Ink-TrackBar", role: "region", "aria-label": "Track changes", children: [
5
+ /* @__PURE__ */ n("span", { className: "Ink-TrackBar__label", children: [
6
+ c.length,
7
+ " pending change",
8
+ c.length === 1 ? "" : "s"
9
+ ] }),
10
+ /* @__PURE__ */ n("div", { className: "Ink-TrackBar__actions", children: [
11
+ /* @__PURE__ */ e("button", { type: "button", className: "Ink-Editor__button", onClick: i, children: "Accept all" }),
12
+ /* @__PURE__ */ e("button", { type: "button", className: "Ink-Editor__button", onClick: s, children: "Reject all" })
13
+ ] }),
14
+ /* @__PURE__ */ e("ul", { className: "Ink-TrackBar__list", children: c.map((t) => /* @__PURE__ */ n("li", { children: [
15
+ /* @__PURE__ */ n("span", { children: [
16
+ t.type,
17
+ " · ",
18
+ t.author
19
+ ] }),
20
+ /* @__PURE__ */ e("button", { type: "button", className: "Ink-Editor__button Ink-Editor__button--active", onClick: () => r(t.id), children: "Accept" }),
21
+ /* @__PURE__ */ e("button", { type: "button", className: "Ink-Editor__button", onClick: () => o(t.id), children: "Reject" })
22
+ ] }, t.id)) })
23
+ ] });
24
+ };
25
+ export {
26
+ k as TrackChangesBar
27
+ };
@@ -0,0 +1,3 @@
1
+ export { TrackChangesBar } from './TrackChangesBar';
2
+ export type { TrackChangesBarProps } from './TrackChangesBar';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/InkEditor/components/TrackChangesBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,4 +1,9 @@
1
1
  export { ToolbarButton } from './ToolbarButton';
2
2
  export { ToolbarDropdown } from './ToolbarDropdown';
3
3
  export { ToolbarColorPicker } from './ToolbarColorPicker';
4
+ export { CommentsPanel } from './CommentsPanel';
5
+ export { AiPanel } from './AiPanel';
6
+ export { BlockHandles } from './BlockHandles';
7
+ export { SlashMenu } from './SlashMenu';
8
+ export { TrackChangesBar } from './TrackChangesBar';
4
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/InkEditor/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/InkEditor/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=[{id:"claude-opus-4.8",provider:"anthropic",label:"Claude Opus 4.8",family:"Claude"},{id:"claude-fable-5",provider:"anthropic",label:"Claude Fable 5",family:"Claude"},{id:"claude-opus-4.7",provider:"anthropic",label:"Claude Opus 4.7",family:"Claude"},{id:"claude-5-sonnet",provider:"anthropic",label:"Claude 5 Sonnet",family:"Claude"},{id:"claude-4.6-sonnet",provider:"anthropic",label:"Claude 4.6 Sonnet",family:"Claude"},{id:"claude-4.5-sonnet",provider:"anthropic",label:"Claude 4.5 Sonnet",family:"Claude"},{id:"claude-4.5-haiku",provider:"anthropic",label:"Claude 4.5 Haiku",family:"Claude"},{id:"gemini-3.1-pro",provider:"google",label:"Gemini 3.1 Pro",family:"Gemini"},{id:"gemini-2.5-flash",provider:"google",label:"Gemini 2.5 Flash",family:"Gemini"},{id:"gemini-3-flash",provider:"google",label:"Gemini 3 Flash",family:"Gemini"},{id:"gemini-3.5-flash",provider:"google",label:"Gemini 3.5 Flash",family:"Gemini"},{id:"gemini-3.6-flash",provider:"google",label:"Gemini 3.6 Flash",family:"Gemini"},{id:"gpt-5.6-sol",provider:"openai",label:"GPT-5.6 Sol",family:"GPT"},{id:"gpt-5.6-terra",provider:"openai",label:"GPT-5.6 Terra",family:"GPT"},{id:"gpt-5.5",provider:"openai",label:"GPT-5.5",family:"GPT"},{id:"gpt-5.4",provider:"openai",label:"GPT-5.4",family:"GPT"},{id:"gpt-5.2",provider:"openai",label:"GPT-5.2",family:"GPT"},{id:"gpt-5.1",provider:"openai",label:"GPT-5.1",family:"GPT"},{id:"gpt-5",provider:"openai",label:"GPT-5",family:"GPT"},{id:"gpt-4.1",provider:"openai",label:"GPT-4.1",family:"GPT"},{id:"gpt-5-mini",provider:"openai",label:"GPT-5 Mini",family:"GPT"},{id:"gpt-5.4-mini",provider:"openai",label:"GPT-5.4 Mini",family:"GPT"},{id:"gpt-4.1-mini",provider:"openai",label:"GPT-4.1 Mini",family:"GPT"},{id:"ink-demo",provider:"demo",label:"Ink Demo (local)",family:"Demo"}],e="demo",l="ink-demo";exports.INK_AI_DEMO_MODEL_ID=l;exports.INK_AI_DEMO_PROVIDER_ID=e;exports.INK_AI_MODEL_CATALOG=i;
@@ -0,0 +1,5 @@
1
+ import { InkAiModelCatalogEntry } from '../types';
2
+ export declare const INK_AI_MODEL_CATALOG: InkAiModelCatalogEntry[];
3
+ export declare const INK_AI_DEMO_PROVIDER_ID = "demo";
4
+ export declare const INK_AI_DEMO_MODEL_ID = "ink-demo";
5
+ //# sourceMappingURL=aiModels.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiModels.const.d.ts","sourceRoot":"","sources":["../../src/constants/aiModels.const.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,eAAO,MAAM,oBAAoB,EAAE,sBAAsB,EAyBxD,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAC9C,eAAO,MAAM,oBAAoB,aAAa,CAAC"}
@@ -0,0 +1,31 @@
1
+ const i = [
2
+ { id: "claude-opus-4.8", provider: "anthropic", label: "Claude Opus 4.8", family: "Claude" },
3
+ { id: "claude-fable-5", provider: "anthropic", label: "Claude Fable 5", family: "Claude" },
4
+ { id: "claude-opus-4.7", provider: "anthropic", label: "Claude Opus 4.7", family: "Claude" },
5
+ { id: "claude-5-sonnet", provider: "anthropic", label: "Claude 5 Sonnet", family: "Claude" },
6
+ { id: "claude-4.6-sonnet", provider: "anthropic", label: "Claude 4.6 Sonnet", family: "Claude" },
7
+ { id: "claude-4.5-sonnet", provider: "anthropic", label: "Claude 4.5 Sonnet", family: "Claude" },
8
+ { id: "claude-4.5-haiku", provider: "anthropic", label: "Claude 4.5 Haiku", family: "Claude" },
9
+ { id: "gemini-3.1-pro", provider: "google", label: "Gemini 3.1 Pro", family: "Gemini" },
10
+ { id: "gemini-2.5-flash", provider: "google", label: "Gemini 2.5 Flash", family: "Gemini" },
11
+ { id: "gemini-3-flash", provider: "google", label: "Gemini 3 Flash", family: "Gemini" },
12
+ { id: "gemini-3.5-flash", provider: "google", label: "Gemini 3.5 Flash", family: "Gemini" },
13
+ { id: "gemini-3.6-flash", provider: "google", label: "Gemini 3.6 Flash", family: "Gemini" },
14
+ { id: "gpt-5.6-sol", provider: "openai", label: "GPT-5.6 Sol", family: "GPT" },
15
+ { id: "gpt-5.6-terra", provider: "openai", label: "GPT-5.6 Terra", family: "GPT" },
16
+ { id: "gpt-5.5", provider: "openai", label: "GPT-5.5", family: "GPT" },
17
+ { id: "gpt-5.4", provider: "openai", label: "GPT-5.4", family: "GPT" },
18
+ { id: "gpt-5.2", provider: "openai", label: "GPT-5.2", family: "GPT" },
19
+ { id: "gpt-5.1", provider: "openai", label: "GPT-5.1", family: "GPT" },
20
+ { id: "gpt-5", provider: "openai", label: "GPT-5", family: "GPT" },
21
+ { id: "gpt-4.1", provider: "openai", label: "GPT-4.1", family: "GPT" },
22
+ { id: "gpt-5-mini", provider: "openai", label: "GPT-5 Mini", family: "GPT" },
23
+ { id: "gpt-5.4-mini", provider: "openai", label: "GPT-5.4 Mini", family: "GPT" },
24
+ { id: "gpt-4.1-mini", provider: "openai", label: "GPT-4.1 Mini", family: "GPT" },
25
+ { id: "ink-demo", provider: "demo", label: "Ink Demo (local)", family: "Demo" }
26
+ ], e = "demo", l = "ink-demo";
27
+ export {
28
+ l as INK_AI_DEMO_MODEL_ID,
29
+ e as INK_AI_DEMO_PROVIDER_ID,
30
+ i as INK_AI_MODEL_CATALOG
31
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=["headingDropdown","divider","bold","italic","underline","strikethrough","divider","textColor","highlightColor","divider","bulletList","orderedList","divider","link","image","divider","clearFormat"],e=["bold","italic","underline","divider","bulletList","orderedList"],i=[{value:"p",label:"Paragraph"},{value:"h1",label:"Heading 1"},{value:"h2",label:"Heading 2"},{value:"h3",label:"Heading 3"},{value:"h4",label:"Heading 4"},{value:"h5",label:"Heading 5"},{value:"h6",label:"Heading 6"}],l={bold:{title:"Bold (Ctrl+B)",command:"bold"},italic:{title:"Italic (Ctrl+I)",command:"italic"},underline:{title:"Underline (Ctrl+U)",command:"underline"},strikethrough:{title:"Strikethrough",command:"strikeThrough"},heading1:{title:"Heading 1",command:"formatBlock",value:"h1"},heading2:{title:"Heading 2",command:"formatBlock",value:"h2"},heading3:{title:"Heading 3",command:"formatBlock",value:"h3"},heading4:{title:"Heading 4",command:"formatBlock",value:"h4"},heading5:{title:"Heading 5",command:"formatBlock",value:"h5"},heading6:{title:"Heading 6",command:"formatBlock",value:"h6"},paragraph:{title:"Paragraph",command:"formatBlock",value:"p"},bulletList:{title:"Bullet list",command:"insertUnorderedList"},orderedList:{title:"Numbered list",command:"insertOrderedList"},blockquote:{title:"Quote",command:"formatBlock",value:"blockquote"},code:{title:"Code block",command:"formatBlock",value:"pre"},alignLeft:{title:"Align left",command:"justifyLeft"},alignCenter:{title:"Align center",command:"justifyCenter"},alignRight:{title:"Align right",command:"justifyRight"},alignJustify:{title:"Justify",command:"justifyFull"},indent:{title:"Indent",command:"indent"},outdent:{title:"Outdent",command:"outdent"},clearFormat:{title:"Clear formatting",command:"removeFormat"}},a=["#111827","#dc2626","#ea580c","#ca8a04","#16a34a","#2563eb","#7c3aed","#db2777"],o="Start typing...",n="Ink-Editor",d="Ink-Editor__toolbar",r="Ink-Editor__content",_="Ink-Editor__divider",c="Ink-Editor__button",m="Ink-Editor__button--active",I="Ink-Editor__footer";exports.INK_BUTTON_CONFIG=l;exports.INK_CLASS_BUTTON=c;exports.INK_CLASS_BUTTON_ACTIVE=m;exports.INK_CLASS_CONTENT=r;exports.INK_CLASS_DIVIDER=_;exports.INK_CLASS_FOOTER=I;exports.INK_CLASS_ROOT=n;exports.INK_CLASS_TOOLBAR=d;exports.INK_COLOR_SWATCHES=a;exports.INK_DEFAULT_TOOLBAR=t;exports.INK_HEADING_OPTIONS=i;exports.INK_PLACEHOLDER_DEFAULT=o;exports.INK_SIMPLE_TOOLBAR=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./numbers.const.cjs"),t=["headingDropdown","divider","bold","italic","underline","strikethrough","divider","textColor","highlightColor","divider","bulletList","orderedList","divider","link","image","table","divider","undo","redo","divider","trackChanges","comments","ai","divider","clearFormat"],i=["bold","italic","underline","divider","bulletList","orderedList"],a=["headingDropdown","divider","bold","italic","underline","divider","bulletList","orderedList","table","divider","trackChanges","comments","ai","divider","undo","redo"],l=[{value:"p",label:"Paragraph"},{value:"h1",label:"Heading 1"},{value:"h2",label:"Heading 2"},{value:"h3",label:"Heading 3"},{value:"h4",label:"Heading 4"},{value:"h5",label:"Heading 5"},{value:"h6",label:"Heading 6"}],n={bold:{title:"Bold (Ctrl+B)",command:"bold"},italic:{title:"Italic (Ctrl+I)",command:"italic"},underline:{title:"Underline (Ctrl+U)",command:"underline"},strikethrough:{title:"Strikethrough",command:"strikeThrough"},heading1:{title:"Heading 1",command:"formatBlock",value:"h1"},heading2:{title:"Heading 2",command:"formatBlock",value:"h2"},heading3:{title:"Heading 3",command:"formatBlock",value:"h3"},heading4:{title:"Heading 4",command:"formatBlock",value:"h4"},heading5:{title:"Heading 5",command:"formatBlock",value:"h5"},heading6:{title:"Heading 6",command:"formatBlock",value:"h6"},paragraph:{title:"Paragraph",command:"formatBlock",value:"p"},bulletList:{title:"Bullet list",command:"insertUnorderedList"},orderedList:{title:"Numbered list",command:"insertOrderedList"},blockquote:{title:"Quote",command:"formatBlock",value:"blockquote"},code:{title:"Code block",command:"formatBlock",value:"pre"},alignLeft:{title:"Align left",command:"justifyLeft"},alignCenter:{title:"Align center",command:"justifyCenter"},alignRight:{title:"Align right",command:"justifyRight"},alignJustify:{title:"Justify",command:"justifyFull"},indent:{title:"Indent",command:"indent"},outdent:{title:"Outdent",command:"outdent"},clearFormat:{title:"Clear formatting",command:"removeFormat"},undo:{title:"Undo",command:"undo"},redo:{title:"Redo",command:"redo"}},d=["#111827","#dc2626","#ea580c","#ca8a04","#16a34a","#2563eb","#0f766e","#db2777"],o="Start typing...",r="Ink-Editor",_="Ink-Editor__toolbar",s="Ink-Editor__content",c="Ink-Editor__divider",A="Ink-Editor__button",I="Ink-Editor__button--active",L="Ink-Editor__footer",N="Ink-Editor__shell",S="Ink-Editor__body",m="Ink-tc-insert",T="Ink-tc-delete",u="Ink-comment-mark",E="You",C="classic",O={table:!0,trackChanges:!0,comments:!0,ai:!0,blocks:!0,slash:!0,history:!0,typoAutoFix:!0},K=e.INK_DEFAULT_TABLE_ROWS,g=e.INK_DEFAULT_TABLE_COLS,b=[{id:"heading1",label:"Heading 1",keywords:["h1","title","heading"],insert:"heading1"},{id:"heading2",label:"Heading 2",keywords:["h2","subtitle","heading"],insert:"heading2"},{id:"bullet",label:"Bullet list",keywords:["ul","list","bullet"],insert:"bulletList"},{id:"ordered",label:"Numbered list",keywords:["ol","list","numbered"],insert:"orderedList"},{id:"table",label:"Table",keywords:["table","grid"],insert:"table"},{id:"ai",label:"Ask AI",keywords:["ai","assistant","chat"],insert:"ai"}],h=["English","Spanish","French","German","Chinese (Simplified)","Japanese","Russian","Portuguese","Korean","Italian"],k=[{id:"rewrite",label:"Rewrite",capability:"rewrite"},{id:"summarize",label:"Summarize",capability:"summarize"},{id:"expand",label:"Expand",capability:"expand"},{id:"tone",label:"Adjust tone",capability:"tone"}];exports.INK_BUTTON_CONFIG=n;exports.INK_CLASS_BODY=S;exports.INK_CLASS_BUTTON=A;exports.INK_CLASS_BUTTON_ACTIVE=I;exports.INK_CLASS_COMMENT_MARK=u;exports.INK_CLASS_CONTENT=s;exports.INK_CLASS_DIVIDER=c;exports.INK_CLASS_FOOTER=L;exports.INK_CLASS_ROOT=r;exports.INK_CLASS_SHELL=N;exports.INK_CLASS_TC_DELETE=T;exports.INK_CLASS_TC_INSERT=m;exports.INK_CLASS_TOOLBAR=_;exports.INK_COLLAB_TOOLBAR=a;exports.INK_COLOR_SWATCHES=d;exports.INK_DEFAULT_AUTHOR=E;exports.INK_DEFAULT_FEATURES=O;exports.INK_DEFAULT_TOOLBAR=t;exports.INK_DEFAULT_VARIANT=C;exports.INK_HEADING_OPTIONS=l;exports.INK_PLACEHOLDER_DEFAULT=o;exports.INK_QUICK_ACTIONS=k;exports.INK_SIMPLE_TOOLBAR=i;exports.INK_SLASH_COMMANDS=b;exports.INK_TABLE_DEFAULT_COLS=g;exports.INK_TABLE_DEFAULT_ROWS=K;exports.INK_TRANSLATE_LANGUAGES=h;
@@ -1,6 +1,7 @@
1
- import { DropdownOption, ToolbarOption } from '../types';
1
+ import { DropdownOption, SlashCommandItem, ToolbarOption, InkFeaturesConfig } from '../types';
2
2
  export declare const INK_DEFAULT_TOOLBAR: ToolbarOption[];
3
3
  export declare const INK_SIMPLE_TOOLBAR: ToolbarOption[];
4
+ export declare const INK_COLLAB_TOOLBAR: ToolbarOption[];
4
5
  export declare const INK_HEADING_OPTIONS: DropdownOption[];
5
6
  export declare const INK_BUTTON_CONFIG: Record<string, {
6
7
  title: string;
@@ -16,4 +17,34 @@ export declare const INK_CLASS_DIVIDER = "Ink-Editor__divider";
16
17
  export declare const INK_CLASS_BUTTON = "Ink-Editor__button";
17
18
  export declare const INK_CLASS_BUTTON_ACTIVE = "Ink-Editor__button--active";
18
19
  export declare const INK_CLASS_FOOTER = "Ink-Editor__footer";
20
+ export declare const INK_CLASS_SHELL = "Ink-Editor__shell";
21
+ export declare const INK_CLASS_BODY = "Ink-Editor__body";
22
+ export declare const INK_CLASS_BLOCK_ACTIVE = "Ink-block--active";
23
+ export declare const INK_CLASS_TC_INSERT = "Ink-tc-insert";
24
+ export declare const INK_CLASS_TC_DELETE = "Ink-tc-delete";
25
+ export declare const INK_CLASS_COMMENT_MARK = "Ink-comment-mark";
26
+ export declare const INK_DEFAULT_AUTHOR = "You";
27
+ export declare const INK_DEFAULT_VARIANT: "classic";
28
+ export declare const INK_DEFAULT_FEATURES: InkFeaturesConfig;
29
+ export declare const INK_TABLE_DEFAULT_ROWS = 3;
30
+ export declare const INK_TABLE_DEFAULT_COLS = 3;
31
+ export declare const INK_SLASH_COMMANDS: SlashCommandItem[];
32
+ export declare const INK_TRANSLATE_LANGUAGES: readonly ["English", "Spanish", "French", "German", "Chinese (Simplified)", "Japanese", "Russian", "Portuguese", "Korean", "Italian"];
33
+ export declare const INK_QUICK_ACTIONS: ({
34
+ id: string;
35
+ label: string;
36
+ capability: "rewrite";
37
+ } | {
38
+ id: string;
39
+ label: string;
40
+ capability: "summarize";
41
+ } | {
42
+ id: string;
43
+ label: string;
44
+ capability: "expand";
45
+ } | {
46
+ id: string;
47
+ label: string;
48
+ capability: "tone";
49
+ })[];
19
50
  //# sourceMappingURL=defaults.const.d.ts.map