@artkit-ai/react 0.0.0-stage → 0.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 (118) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +145 -2
  3. package/dist/cache.d.ts +35 -0
  4. package/dist/cache.d.ts.map +1 -0
  5. package/dist/cache.js +116 -0
  6. package/dist/cache.js.map +1 -0
  7. package/dist/client.d.ts +79 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +260 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/components/approval.d.ts +34 -0
  12. package/dist/components/approval.d.ts.map +1 -0
  13. package/dist/components/approval.js +80 -0
  14. package/dist/components/approval.js.map +1 -0
  15. package/dist/components/card.d.ts +22 -0
  16. package/dist/components/card.d.ts.map +1 -0
  17. package/dist/components/card.js +16 -0
  18. package/dist/components/card.js.map +1 -0
  19. package/dist/components/editor.d.ts +28 -0
  20. package/dist/components/editor.d.ts.map +1 -0
  21. package/dist/components/editor.js +161 -0
  22. package/dist/components/editor.js.map +1 -0
  23. package/dist/components/icons.d.ts +8 -0
  24. package/dist/components/icons.d.ts.map +1 -0
  25. package/dist/components/icons.js +14 -0
  26. package/dist/components/icons.js.map +1 -0
  27. package/dist/components/panel.d.ts +34 -0
  28. package/dist/components/panel.d.ts.map +1 -0
  29. package/dist/components/panel.js +216 -0
  30. package/dist/components/panel.js.map +1 -0
  31. package/dist/components/shared.d.ts +71 -0
  32. package/dist/components/shared.d.ts.map +1 -0
  33. package/dist/components/shared.js +104 -0
  34. package/dist/components/shared.js.map +1 -0
  35. package/dist/components/version-diff.d.ts +35 -0
  36. package/dist/components/version-diff.d.ts.map +1 -0
  37. package/dist/components/version-diff.js +85 -0
  38. package/dist/components/version-diff.js.map +1 -0
  39. package/dist/components/view.d.ts +40 -0
  40. package/dist/components/view.d.ts.map +1 -0
  41. package/dist/components/view.js +75 -0
  42. package/dist/components/view.js.map +1 -0
  43. package/dist/context.d.ts +59 -0
  44. package/dist/context.d.ts.map +1 -0
  45. package/dist/context.js +13 -0
  46. package/dist/context.js.map +1 -0
  47. package/dist/controls.d.ts +145 -0
  48. package/dist/controls.d.ts.map +1 -0
  49. package/dist/controls.js +188 -0
  50. package/dist/controls.js.map +1 -0
  51. package/dist/download.d.ts +4 -0
  52. package/dist/download.d.ts.map +1 -0
  53. package/dist/download.js +20 -0
  54. package/dist/download.js.map +1 -0
  55. package/dist/editor-session.d.ts +184 -0
  56. package/dist/editor-session.d.ts.map +1 -0
  57. package/dist/editor-session.js +614 -0
  58. package/dist/editor-session.js.map +1 -0
  59. package/dist/hooks.d.ts +85 -0
  60. package/dist/hooks.d.ts.map +1 -0
  61. package/dist/hooks.js +297 -0
  62. package/dist/hooks.js.map +1 -0
  63. package/dist/i18n.d.ts +197 -0
  64. package/dist/i18n.d.ts.map +1 -0
  65. package/dist/i18n.js +207 -0
  66. package/dist/i18n.js.map +1 -0
  67. package/dist/index.d.ts +22 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +22 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/kit-css.d.ts +3 -0
  72. package/dist/kit-css.d.ts.map +1 -0
  73. package/dist/kit-css.js +5 -0
  74. package/dist/kit-css.js.map +1 -0
  75. package/dist/line-diff.d.ts +25 -0
  76. package/dist/line-diff.d.ts.map +1 -0
  77. package/dist/line-diff.js +96 -0
  78. package/dist/line-diff.js.map +1 -0
  79. package/dist/partial-json.d.ts +8 -0
  80. package/dist/partial-json.d.ts.map +1 -0
  81. package/dist/partial-json.js +176 -0
  82. package/dist/partial-json.js.map +1 -0
  83. package/dist/provider.d.ts +42 -0
  84. package/dist/provider.d.ts.map +1 -0
  85. package/dist/provider.js +95 -0
  86. package/dist/provider.js.map +1 -0
  87. package/dist/styles.d.ts +25 -0
  88. package/dist/styles.d.ts.map +1 -0
  89. package/dist/styles.js +203 -0
  90. package/dist/styles.js.map +1 -0
  91. package/dist/toolbar.d.ts +90 -0
  92. package/dist/toolbar.d.ts.map +1 -0
  93. package/dist/toolbar.js +233 -0
  94. package/dist/toolbar.js.map +1 -0
  95. package/package.json +50 -3
  96. package/src/cache.ts +132 -0
  97. package/src/client.ts +390 -0
  98. package/src/components/approval.tsx +219 -0
  99. package/src/components/card.tsx +87 -0
  100. package/src/components/editor.tsx +392 -0
  101. package/src/components/icons.tsx +14 -0
  102. package/src/components/panel.tsx +591 -0
  103. package/src/components/shared.tsx +207 -0
  104. package/src/components/version-diff.tsx +266 -0
  105. package/src/components/view.tsx +199 -0
  106. package/src/context.ts +82 -0
  107. package/src/controls.tsx +587 -0
  108. package/src/download.ts +23 -0
  109. package/src/editor-session.ts +738 -0
  110. package/src/hooks.ts +411 -0
  111. package/src/i18n.ts +217 -0
  112. package/src/index.ts +160 -0
  113. package/src/kit-css.ts +5 -0
  114. package/src/line-diff.ts +111 -0
  115. package/src/partial-json.ts +160 -0
  116. package/src/provider.tsx +176 -0
  117. package/src/styles.ts +222 -0
  118. package/src/toolbar.tsx +536 -0
package/dist/i18n.js ADDED
@@ -0,0 +1,207 @@
1
+ /** UI strings in pt-BR and en (spec §18.1). Templates use `{name}` placeholders. */
2
+ export const uiMessages = {
3
+ en: {
4
+ loading: 'Loading…',
5
+ generating: 'Generating…',
6
+ provisional: 'Preview — not saved yet',
7
+ noRenderer: 'No renderer is registered for kind "{kind}". Showing the raw content.',
8
+ loadFailed: 'Could not load this artifact.',
9
+ retry: 'Retry',
10
+ close: 'Close',
11
+ open: 'Open',
12
+ openTitle: 'Open {title}',
13
+ version: 'Version',
14
+ versionShort: 'v{version}',
15
+ latest: 'latest',
16
+ tabView: 'View',
17
+ tabCode: 'Code',
18
+ tabHistory: 'History',
19
+ tabsLabel: 'Artifact sections',
20
+ copy: 'Copy',
21
+ copied: 'Copied',
22
+ export: 'Export',
23
+ exportAs: 'Export as {format}',
24
+ exporting: 'Exporting…',
25
+ exported: 'Exported {filename}',
26
+ exportWarnings: 'Export finished with warnings:',
27
+ noExportFormats: 'No export formats available',
28
+ status: 'Status',
29
+ status_draft: 'Draft',
30
+ status_pending_approval: 'Pending approval',
31
+ status_published: 'Published',
32
+ status_archived: 'Archived',
33
+ action_submit: 'Submit for approval',
34
+ action_approve: 'Approve',
35
+ action_reject: 'Reject',
36
+ action_publish: 'Publish',
37
+ action_archive: 'Archive',
38
+ statusChanged: 'Status changed to {status}',
39
+ rejectReason: 'Reason for rejection',
40
+ rejectReasonRequired: 'Explain why the version is being rejected.',
41
+ confirmReject: 'Confirm rejection',
42
+ cancel: 'Cancel',
43
+ approvalTitle: 'Review version {version}',
44
+ approvalComparedTo: 'Compared with version {version}',
45
+ approvalFirstVersion: 'First version: nothing to compare with.',
46
+ notPending: 'This artifact is not waiting for approval.',
47
+ approved: 'Version {version} approved',
48
+ rejected: 'Version {version} rejected',
49
+ historyEmpty: 'No versions yet.',
50
+ loadMore: 'Load more',
51
+ restore: 'Restore',
52
+ restoreVersion: 'Restore version {version}',
53
+ restored: 'Version {version} restored as version {newVersion}',
54
+ viewVersion: 'View version {version}',
55
+ restoredFrom: 'restored from v{version}',
56
+ by: 'by {actor}',
57
+ actor_agent: 'agent',
58
+ actor_user: 'user',
59
+ actor_system: 'system',
60
+ changes: 'Changes',
61
+ noChanges: 'No changes.',
62
+ change_added: 'Added',
63
+ change_removed: 'Removed',
64
+ change_changed: 'Changed',
65
+ change_moved: 'Moved',
66
+ diffUnified: 'Highlighted',
67
+ diffSplit: 'Side by side',
68
+ diffViewLabel: 'Diff layout',
69
+ diffBefore: 'Version {version}',
70
+ diffAfter: 'Version {version}',
71
+ lineAdded: 'added',
72
+ lineRemoved: 'removed',
73
+ undo: 'Undo',
74
+ redo: 'Redo',
75
+ undone: 'Change undone',
76
+ redone: 'Change redone',
77
+ saving: 'Saving…',
78
+ saved: 'Saved',
79
+ savedVersion: 'Saved version {version}',
80
+ unsaved: 'Unsaved changes',
81
+ rolledBack: 'Change rejected: {message}',
82
+ dismiss: 'Dismiss',
83
+ readOnly: 'Read only',
84
+ lockedBy: 'Locked by the {actor} — editing is disabled.',
85
+ lockedUntil: 'Locked until {time} — editing is disabled.',
86
+ agentUpdated: 'The artifact was updated to version {version}',
87
+ conflictTitle: 'Your edit conflicts with a newer version',
88
+ conflictBody: 'Version {version} changed the same items you edited.',
89
+ conflictUndoBody: 'The artifact changed after your edit, so undoing it would also discard those changes.',
90
+ keepTheirs: 'Keep agent version',
91
+ reapplyMine: 'Reapply my edit',
92
+ editorLabel: 'Editor for {title}',
93
+ lintWarnings: '{count} lint warnings',
94
+ },
95
+ 'pt-BR': {
96
+ loading: 'Carregando…',
97
+ generating: 'Gerando…',
98
+ provisional: 'Prévia — ainda não salva',
99
+ noRenderer: 'Não há renderer registrado para o tipo "{kind}". Exibindo o conteúdo bruto.',
100
+ loadFailed: 'Não foi possível carregar este artefato.',
101
+ retry: 'Tentar novamente',
102
+ close: 'Fechar',
103
+ open: 'Abrir',
104
+ openTitle: 'Abrir {title}',
105
+ version: 'Versão',
106
+ versionShort: 'v{version}',
107
+ latest: 'atual',
108
+ tabView: 'Visualização',
109
+ tabCode: 'Código',
110
+ tabHistory: 'Histórico',
111
+ tabsLabel: 'Seções do artefato',
112
+ copy: 'Copiar',
113
+ copied: 'Copiado',
114
+ export: 'Exportar',
115
+ exportAs: 'Exportar como {format}',
116
+ exporting: 'Exportando…',
117
+ exported: '{filename} exportado',
118
+ exportWarnings: 'Exportação concluída com avisos:',
119
+ noExportFormats: 'Nenhum formato de exportação disponível',
120
+ status: 'Status',
121
+ status_draft: 'Rascunho',
122
+ status_pending_approval: 'Aguardando aprovação',
123
+ status_published: 'Publicado',
124
+ status_archived: 'Arquivado',
125
+ action_submit: 'Enviar para aprovação',
126
+ action_approve: 'Aprovar',
127
+ action_reject: 'Rejeitar',
128
+ action_publish: 'Publicar',
129
+ action_archive: 'Arquivar',
130
+ statusChanged: 'Status alterado para {status}',
131
+ rejectReason: 'Motivo da rejeição',
132
+ rejectReasonRequired: 'Explique por que a versão está sendo rejeitada.',
133
+ confirmReject: 'Confirmar rejeição',
134
+ cancel: 'Cancelar',
135
+ approvalTitle: 'Revisar versão {version}',
136
+ approvalComparedTo: 'Comparada com a versão {version}',
137
+ approvalFirstVersion: 'Primeira versão: não há com o que comparar.',
138
+ notPending: 'Este artefato não está aguardando aprovação.',
139
+ approved: 'Versão {version} aprovada',
140
+ rejected: 'Versão {version} rejeitada',
141
+ historyEmpty: 'Ainda não há versões.',
142
+ loadMore: 'Carregar mais',
143
+ restore: 'Restaurar',
144
+ restoreVersion: 'Restaurar versão {version}',
145
+ restored: 'Versão {version} restaurada como versão {newVersion}',
146
+ viewVersion: 'Ver versão {version}',
147
+ restoredFrom: 'restaurada da v{version}',
148
+ by: 'por {actor}',
149
+ actor_agent: 'agente',
150
+ actor_user: 'usuário',
151
+ actor_system: 'sistema',
152
+ changes: 'Alterações',
153
+ noChanges: 'Nenhuma alteração.',
154
+ change_added: 'Inserido',
155
+ change_removed: 'Removido',
156
+ change_changed: 'Alterado',
157
+ change_moved: 'Movido',
158
+ diffUnified: 'Destacado',
159
+ diffSplit: 'Lado a lado',
160
+ diffViewLabel: 'Layout do diff',
161
+ diffBefore: 'Versão {version}',
162
+ diffAfter: 'Versão {version}',
163
+ lineAdded: 'inserida',
164
+ lineRemoved: 'removida',
165
+ undo: 'Desfazer',
166
+ redo: 'Refazer',
167
+ undone: 'Alteração desfeita',
168
+ redone: 'Alteração refeita',
169
+ saving: 'Salvando…',
170
+ saved: 'Salvo',
171
+ savedVersion: 'Versão {version} salva',
172
+ unsaved: 'Alterações não salvas',
173
+ rolledBack: 'Alteração rejeitada: {message}',
174
+ dismiss: 'Dispensar',
175
+ readOnly: 'Somente leitura',
176
+ lockedBy: 'Bloqueado pelo {actor} — edição desativada.',
177
+ lockedUntil: 'Bloqueado até {time} — edição desativada.',
178
+ agentUpdated: 'O artefato foi atualizado para a versão {version}',
179
+ conflictTitle: 'Sua edição conflita com uma versão mais nova',
180
+ conflictBody: 'A versão {version} alterou os mesmos itens que você editou.',
181
+ conflictUndoBody: 'O artefato mudou depois da sua edição; desfazê-la também descartaria essas mudanças.',
182
+ keepTheirs: 'Manter versão do agente',
183
+ reapplyMine: 'Reaplicar minha edição',
184
+ editorLabel: 'Editor de {title}',
185
+ lintWarnings: '{count} avisos de lint',
186
+ },
187
+ };
188
+ function format(template, params = {}) {
189
+ return template.replace(/\{(\w+)\}/g, (match, name) => name in params ? String(params[name]) : match);
190
+ }
191
+ /**
192
+ * Resolution order: exact override, language override, built-in catalog (pt* → pt-BR, else en), English.
193
+ */
194
+ export function createTranslator(locale, overrides = {}) {
195
+ const language = locale.split('-')[0]?.toLowerCase() ?? '';
196
+ const builtIn = language === 'pt' ? uiMessages['pt-BR'] : uiMessages.en;
197
+ const layers = [overrides[locale], overrides[language], builtIn, uiMessages.en];
198
+ return (key, params) => {
199
+ for (const layer of layers) {
200
+ const template = layer?.[key];
201
+ if (template !== undefined)
202
+ return format(template, params);
203
+ }
204
+ return key;
205
+ };
206
+ }
207
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export { ArtifactCache, type CacheEntry } from './cache.js';
2
+ export { type ApplyInput, type ArtifactClient, type ClientExportResult, createHttpClient, createServiceClient, type ExportInput, errorFromResponse, filenameFromDisposition, type HttpClientOptions, type ReadOptions, type RequestOptions, STATUS_ACTIONS, type StatusAction, } from './client.js';
3
+ export { ArtifactApproval, type ArtifactApprovalPart, type ArtifactApprovalProps, } from './components/approval.js';
4
+ export { ArtifactCard, type ArtifactCardPart, type ArtifactCardProps } from './components/card.js';
5
+ export { ArtifactEditor, type ArtifactEditorPart, type ArtifactEditorProps, type EditorPermission, } from './components/editor.js';
6
+ export { ArtifactPanel, type ArtifactPanelPart, type ArtifactPanelProps, type PanelTab, } from './components/panel.js';
7
+ export { type Slots, StatusBadge } from './components/shared.js';
8
+ export { ArtifactVersionDiff, type ArtifactVersionDiffPart, type ArtifactVersionDiffProps, compareVersions, type DiffLayout, type VersionComparison, } from './components/version-diff.js';
9
+ export { ArtifactView, type ArtifactViewPart, type ArtifactViewProps, KindRenderer, previewContent, } from './components/view.js';
10
+ export { type ArtifactLoaders, type ArtkitContextValue, type ColorScheme, type EditorModule, type RendererModule, type RendererProps, useArtkit, useOptionalArtkit, } from './context.js';
11
+ export { Button, type ButtonProps, ButtonRow, ColorPicker, type ColorPickerProps, type ControlSize, type ControlVariant, controlsCss, Field, type FieldProps, FieldRow, Hint, IconButton, type IconButtonProps, Inspector, type InspectorProps, InspectorSection, type InspectorSectionProps, NumberField, type NumberFieldProps, Segmented, type SegmentedProps, SelectField, type SelectFieldProps, Switch, type SwitchProps, TextField, type TextFieldProps, Toggle, type ToggleProps, } from './controls.js';
12
+ export { triggerDownload } from './download.js';
13
+ export { type ConflictChoice, EditorSession, type EditorSessionOptions, type EditorSessionState, type EnvelopeState, envelopeOf, operationsBetween, type SendRequest, type SessionConflict, type SessionEvent, type SessionStatus, } from './editor-session.js';
14
+ export { type ApplyConflict, type ApplyOptions, type ExportOptions, type UseApplyOperationsResult, type UseArtifactExportResult, type UseArtifactHistoryResult, type UseArtifactOptions, type UseArtifactResult, useApplyOperations, useArtifact, useArtifactExport, useArtifactHistory, useLatestVersion, } from './hooks.js';
15
+ export { createTranslator, type Translate, type UiMessageKey, type UiMessageOverrides, type UiMessages, uiMessages, } from './i18n.js';
16
+ export { kitCss } from './kit-css.js';
17
+ export { diffLines, type LineDiffEntry, type LineDiffOptions, type LineDiffType, type SplitRow, toSplitRows, } from './line-diff.js';
18
+ export { parsePartialJson } from './partial-json.js';
19
+ export { ArtifactProvider, type ArtifactProviderProps } from './provider.js';
20
+ export { artkitCss, darkTheme, mixColors, themeStyles } from './styles.js';
21
+ export { Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarColor, type ToolbarColorOption, type ToolbarColorProps, ToolbarGroup, ToolbarMenu, type ToolbarMenuItem, type ToolbarMenuProps, type ToolbarOption, type ToolbarProps, ToolbarSelect, type ToolbarSelectProps, ToolbarSpacer, themeSwatches, toolbarCss, } from './toolbar.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,WAAW,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,cAAc,EACd,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,QAAQ,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,eAAe,EACf,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,YAAY,EACZ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,SAAS,EACT,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,SAAS,EACT,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,WAAW,EACX,KAAK,EACL,KAAK,UAAU,EACf,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,cAAc,EACnB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,WAAW,EACX,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,cAAc,EACnB,WAAW,EACX,KAAK,gBAAgB,EACrB,MAAM,EACN,KAAK,WAAW,EAChB,SAAS,EACT,KAAK,cAAc,EACnB,MAAM,EACN,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,KAAK,cAAc,EACnB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,UAAU,EACV,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,aAAa,EACb,KAAK,kBAAkB,EACvB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,YAAY,EACZ,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,aAAa,EACb,KAAK,kBAAkB,EACvB,aAAa,EACb,aAAa,EACb,UAAU,GACX,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ export { ArtifactCache } from './cache.js';
2
+ export { createHttpClient, createServiceClient, errorFromResponse, filenameFromDisposition, STATUS_ACTIONS, } from './client.js';
3
+ export { ArtifactApproval, } from './components/approval.js';
4
+ export { ArtifactCard } from './components/card.js';
5
+ export { ArtifactEditor, } from './components/editor.js';
6
+ export { ArtifactPanel, } from './components/panel.js';
7
+ export { StatusBadge } from './components/shared.js';
8
+ export { ArtifactVersionDiff, compareVersions, } from './components/version-diff.js';
9
+ export { ArtifactView, KindRenderer, previewContent, } from './components/view.js';
10
+ export { useArtkit, useOptionalArtkit, } from './context.js';
11
+ export { Button, ButtonRow, ColorPicker, controlsCss, Field, FieldRow, Hint, IconButton, Inspector, InspectorSection, NumberField, Segmented, SelectField, Switch, TextField, Toggle, } from './controls.js';
12
+ export { triggerDownload } from './download.js';
13
+ export { EditorSession, envelopeOf, operationsBetween, } from './editor-session.js';
14
+ export { useApplyOperations, useArtifact, useArtifactExport, useArtifactHistory, useLatestVersion, } from './hooks.js';
15
+ export { createTranslator, uiMessages, } from './i18n.js';
16
+ export { kitCss } from './kit-css.js';
17
+ export { diffLines, toSplitRows, } from './line-diff.js';
18
+ export { parsePartialJson } from './partial-json.js';
19
+ export { ArtifactProvider } from './provider.js';
20
+ export { artkitCss, darkTheme, mixColors, themeStyles } from './styles.js';
21
+ export { Toolbar, ToolbarButton, ToolbarColor, ToolbarGroup, ToolbarMenu, ToolbarSelect, ToolbarSpacer, themeSwatches, toolbarCss, } from './toolbar.js';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAIL,gBAAgB,EAChB,mBAAmB,EAEnB,iBAAiB,EACjB,uBAAuB,EAIvB,cAAc,GAEf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,GAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAiD,MAAM,sBAAsB,CAAC;AACnG,OAAO,EACL,cAAc,GAIf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,GAId,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAc,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,mBAAmB,EAGnB,eAAe,GAGhB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAOL,SAAS,EACT,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,MAAM,EAEN,SAAS,EACT,WAAW,EAIX,WAAW,EACX,KAAK,EAEL,QAAQ,EACR,IAAI,EACJ,UAAU,EAEV,SAAS,EAET,gBAAgB,EAEhB,WAAW,EAEX,SAAS,EAET,WAAW,EAEX,MAAM,EAEN,SAAS,EAET,MAAM,GAEP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,aAAa,EAIb,UAAU,EACV,iBAAiB,GAKlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EASL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAKhB,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,SAAS,EAKT,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,aAAa,EAEb,YAAY,EAGZ,YAAY,EACZ,WAAW,EAKX,aAAa,EAEb,aAAa,EACb,aAAa,EACb,UAAU,GACX,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Toolbar and form control styles shared by every kind editor and viewer (include once per kind CSS). */
2
+ export declare const kitCss = "\n.ak-tb{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px;background:var(--ak-color-background,#fff);color:var(--ak-color-text,#1d2f3c);border:1px solid var(--ak-color-border,#dde0e2);border-radius:var(--ak-radius-md,8px);font-family:var(--ak-font-body,\"Sora\",system-ui,sans-serif);font-size:13px;line-height:1}\n.ak-tb--sticky{position:sticky;top:0;z-index:5}\n.ak-tb-group{display:inline-flex;align-items:center;gap:2px;margin:0;padding:0 0 0 6px;border:0;border-left:1px solid var(--ak-color-border,#dde0e2);min-inline-size:0}\n.ak-tb-group:first-child{padding-left:0;border-left:0}\n.ak-tb-spacer{flex:1}\n.ak-tb-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.ak-tb-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:32px;height:32px;padding:0 6px;border:1px solid transparent;border-radius:var(--ak-radius-sm,6px);background:none;color:var(--ak-color-muted,#56636d);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;transition:background-color .15s,color .15s,border-color .15s}\n.ak-tb-button svg{width:16px;height:16px;flex-shrink:0}\n.ak-tb-button--text{padding:0 10px;color:var(--ak-color-text,#1d2f3c)}\n.ak-tb-button:hover:not(:disabled){background:var(--ak-color-hover,#f2f3f4);color:var(--ak-color-text,#1d2f3c)}\n.ak-tb-button:active:not(:disabled){background:var(--ak-color-active,#e8eaec)}\n.ak-tb-button[aria-pressed=\"true\"],.ak-tb-button[aria-expanded=\"true\"]{background:var(--ak-color-fill-accent,#e7f2ef);color:var(--ak-color-accent,#0f7a5a);border-color:var(--ak-color-accent,#0f7a5a)}\n.ak-tb-button[data-variant=\"primary\"]{background:var(--ak-gradient-button);color:var(--ak-color-on-primary,#1d2f3c);border-color:transparent}\n.ak-tb-button[data-variant=\"primary\"]:hover:not(:disabled){background:var(--ak-gradient-button-hover)}\n.ak-tb-button[data-variant=\"danger\"]{color:var(--ak-color-danger,#9f343a)}\n.ak-tb-button[data-variant=\"danger\"]:hover:not(:disabled){background:var(--ak-color-fill-danger,#f5ebeb)}\n.ak-tb-button:disabled,.ak-tb-select:disabled{opacity:.4;cursor:not-allowed}\n.ak-tb-button:focus-visible,.ak-tb-select:focus-visible,.ak-tb-menu-item:focus-visible,.ak-tb-swatch:focus-visible{outline:2px solid var(--ak-color-focus,#0f7a5a);outline-offset:2px}\n.ak-tb-button--menu{padding:0 4px 0 6px;gap:2px}\n.ak-tb-button--menu.ak-tb-button--text{padding:0 6px 0 10px}\n.ak-tb-button .ak-tb-caret{width:12px;height:12px;opacity:.7}\n.ak-tb-color-icon{position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:1px}\n.ak-tb-color-bar{display:block;width:16px;height:3px;border-radius:2px;border:1px solid var(--ak-color-border,#dde0e2)}\n.ak-tb-select{height:32px;max-width:200px;padding:0 8px;font:inherit;font-size:13px;color:var(--ak-color-text,#1d2f3c);background:var(--ak-color-background,#fff);border:1px solid var(--ak-color-border-strong,#8e979d);border-radius:var(--ak-radius-sm,6px);cursor:pointer}\n.ak-tb-anchor{position:relative;display:inline-flex}\n.ak-tb-popover{position:absolute;top:calc(100% + 4px);left:0;z-index:30;display:flex;flex-direction:column;min-width:200px;max-height:360px;overflow:auto;padding:4px;background:var(--ak-color-background,#fff);border:1px solid var(--ak-color-border-strong,#8e979d);border-radius:var(--ak-radius-md,8px)}\n.ak-tb-menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 10px;border:0;border-radius:var(--ak-radius-sm,6px);background:none;color:var(--ak-color-text,#1d2f3c);font:inherit;font-size:13px;text-align:left;cursor:pointer}\n.ak-tb-menu-item svg{width:16px;height:16px;flex-shrink:0;color:var(--ak-color-muted,#56636d)}\n.ak-tb-menu-item:hover:not(:disabled),.ak-tb-menu-item:focus{background:var(--ak-color-hover,#f2f3f4)}\n.ak-tb-menu-item:disabled{opacity:.4;cursor:not-allowed}\n.ak-tb-menu-item[data-danger]{color:var(--ak-color-danger,#9f343a)}\n.ak-tb-menu-item[aria-checked=\"true\"]{color:var(--ak-color-accent,#0f7a5a);font-weight:600}\n.ak-tb-menu-label{flex:1}\n.ak-tb-check{display:inline-flex;width:16px}\n.ak-tb-check svg{color:var(--ak-color-accent,#0f7a5a)}\n.ak-tb-kbd{font-family:var(--ak-font-mono,ui-monospace,monospace);font-size:11px;color:var(--ak-color-muted,#56636d)}\n.ak-tb-separator{width:100%;height:1px;margin:4px 0;border:0;background:var(--ak-color-border,#dde0e2)}\n.ak-tb-palette{display:grid;grid-template-columns:repeat(5,28px);gap:6px;min-width:0;padding:8px}\n.ak-tb-swatch{width:28px;height:28px;padding:0;border:1px solid var(--ak-color-border-strong,#8e979d);border-radius:var(--ak-radius-sm,6px);cursor:pointer}\n.ak-tb-swatch[aria-checked=\"true\"]{box-shadow:inset 0 0 0 2px var(--ak-color-background,#fff);border:2px solid var(--ak-color-accent,#0f7a5a)}\n.ak-tb-palette-none{grid-column:1/-1}\n\n.ak-ctl-button,:where(.ak-ctl-scope) :where(button:not([class])){display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;margin:0;font:inherit;font-size:13px;font-weight:600;line-height:1;white-space:nowrap;border:1px solid var(--ak-color-border,#dde0e2);border-radius:var(--ak-radius-sm,6px);background:var(--ak-color-background,#fff);color:var(--ak-color-text,#1d2f3c);cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}\n.ak-ctl-button svg,:where(.ak-ctl-scope) :where(button:not([class])) svg{width:16px;height:16px;flex-shrink:0}\n.ak-ctl-button:hover:not(:disabled),:where(.ak-ctl-scope) :where(button:not([class])):hover:not(:disabled){background:var(--ak-color-hover,#f2f3f4);border-color:var(--ak-color-border-strong,#8e979d)}\n.ak-ctl-button:active:not(:disabled),:where(.ak-ctl-scope) :where(button:not([class])):active:not(:disabled){background:var(--ak-color-active,#e8eaec)}\n.ak-ctl-button[aria-pressed=\"true\"],:where(.ak-ctl-scope) :where(button:not([class]))[aria-pressed=\"true\"]{background:var(--ak-color-fill-accent,#e7f2ef);color:var(--ak-color-accent,#0f7a5a);border-color:var(--ak-color-accent,#0f7a5a)}\n.ak-ctl-button:disabled,:where(.ak-ctl-scope) :where(button:not([class])):disabled{opacity:.4;cursor:not-allowed}\n.ak-ctl-button:focus-visible,:where(.ak-ctl-scope) :where(button:not([class])):focus-visible,.ak-ctl-switch:focus-visible,.ak-ctl-swatch:focus-visible,.ak-ctl-segmented button:focus-visible{outline:2px solid var(--ak-color-focus,#0f7a5a);outline-offset:2px}\n.ak-ctl-button[data-size=\"sm\"]{height:28px;padding:0 10px;font-size:12px}\n.ak-ctl-button[data-size=\"sm\"] svg{width:14px;height:14px}\n.ak-ctl-button[data-icon-only]{width:32px;padding:0}\n.ak-ctl-button[data-icon-only][data-size=\"sm\"]{width:28px}\n.ak-ctl-button[data-variant=\"primary\"]{border-color:transparent;background:var(--ak-gradient-button,#00dd80);color:var(--ak-color-on-primary,#1d2f3c)}\n.ak-ctl-button[data-variant=\"primary\"]:hover:not(:disabled){border-color:transparent;background:var(--ak-gradient-button-hover,#16a683)}\n.ak-ctl-button[data-variant=\"quiet\"]{border-color:transparent;background:transparent;color:var(--ak-color-muted,#56636d)}\n.ak-ctl-button[data-variant=\"quiet\"]:hover:not(:disabled){border-color:transparent;color:var(--ak-color-text,#1d2f3c)}\n.ak-ctl-button[data-variant=\"quiet\"][aria-pressed=\"true\"]{border-color:var(--ak-color-accent,#0f7a5a);color:var(--ak-color-accent,#0f7a5a)}\n.ak-ctl-button[data-variant=\"danger\"]{color:var(--ak-color-danger,#9f343a)}\n.ak-ctl-button[data-variant=\"danger\"]:hover:not(:disabled){background:var(--ak-color-fill-danger,#f5ebeb);border-color:var(--ak-color-danger,#9f343a)}\n.ak-ctl-input,.ak-ctl-select,.ak-ctl-textarea,:where(.ak-ctl-scope) :where(input:not([class]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"color\"]):not([type=\"range\"]):not([type=\"file\"]),select:not([class]),textarea:not([class])){box-sizing:border-box;width:100%;min-width:0;height:32px;margin:0;padding:0 10px;font:inherit;font-size:13px;line-height:1.3;color:var(--ak-color-text,#1d2f3c);background:var(--ak-color-background,#fff);border:1px solid var(--ak-color-border-strong,#8e979d);border-radius:var(--ak-radius-sm,6px);transition:border-color .15s,box-shadow .15s}\n.ak-ctl-input:hover:not(:disabled),.ak-ctl-select:hover:not(:disabled),.ak-ctl-textarea:hover:not(:disabled),:where(.ak-ctl-scope) :where(input:not([class]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"color\"]):not([type=\"range\"]):not([type=\"file\"]),select:not([class]),textarea:not([class])):hover:not(:disabled){border-color:var(--ak-color-muted,#56636d)}\n.ak-ctl-input:focus,.ak-ctl-select:focus,.ak-ctl-textarea:focus,:where(.ak-ctl-scope) :where(input:not([class]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"color\"]):not([type=\"range\"]):not([type=\"file\"]),select:not([class]),textarea:not([class])):focus{outline:none;border-color:var(--ak-color-accent,#0f7a5a);box-shadow:0 0 0 1px var(--ak-color-accent,#0f7a5a)}\n.ak-ctl-input:disabled,.ak-ctl-select:disabled,.ak-ctl-textarea:disabled,:where(.ak-ctl-scope) :where(input:not([class]):not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"color\"]):not([type=\"range\"]):not([type=\"file\"]),select:not([class]),textarea:not([class])):disabled{opacity:.5;cursor:not-allowed}\n.ak-ctl-input::placeholder,.ak-ctl-textarea::placeholder{color:var(--ak-color-muted,#56636d);opacity:.8}\n.ak-ctl-select,:where(.ak-ctl-scope) :where(select:not([class])){cursor:pointer;padding-right:6px}\n.ak-ctl-textarea,:where(.ak-ctl-scope) :where(textarea:not([class])){height:auto;min-height:72px;padding:8px 10px;line-height:1.5;resize:vertical}\n.ak-ctl-input[data-size=\"sm\"],.ak-ctl-select[data-size=\"sm\"]{height:28px;font-size:12px;padding:0 8px}\n.ak-ctl-field{display:flex;flex-direction:column;gap:4px;min-width:0;margin:0}\n.ak-ctl-label{display:block;padding:0;font-size:12px;font-weight:600;line-height:16px;color:var(--ak-color-muted,#56636d)}\n.ak-ctl-hint{font-size:12px;line-height:16px;color:var(--ak-color-muted,#56636d)}\n.ak-ctl-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}\n.ak-ctl-row>.ak-ctl-field{flex:1 1 64px}\n.ak-ctl-buttons{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0;padding:0;border:0;min-inline-size:0}\n.ak-ctl-affix{position:relative;display:flex;align-items:center;min-width:0}\n.ak-ctl-affix .ak-ctl-input{padding-right:30px}\n.ak-ctl-unit{position:absolute;right:8px;font-size:12px;color:var(--ak-color-muted,#56636d);pointer-events:none}\n.ak-ctl-hex{max-width:160px}\n.ak-ctl-hex .ak-ctl-input{padding-left:30px;padding-right:8px;font-family:var(--ak-font-mono,ui-monospace,monospace)}\n.ak-ctl-hex-preview{position:absolute;left:7px;width:16px;height:16px;border-radius:4px;border:1px solid var(--ak-color-border-strong,#8e979d);background:repeating-conic-gradient(var(--ak-color-border,#dde0e2) 0 25%,transparent 0 50%) 50%/8px 8px}\n.ak-ctl-colors{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;border:0;min-inline-size:0}\n.ak-ctl-colors:disabled{opacity:.5}\n.ak-ctl-swatches{display:flex;flex-wrap:wrap;gap:6px}\n.ak-ctl-swatch{width:24px;height:24px;min-width:0;padding:0;border:1px solid var(--ak-color-border-strong,#8e979d);border-radius:var(--ak-radius-sm,6px);cursor:pointer;transition:transform .1s}\n.ak-ctl-swatch:hover:not(:disabled){transform:scale(1.08)}\n.ak-ctl-swatch[aria-pressed=\"true\"]{border:2px solid var(--ak-color-accent,#0f7a5a);box-shadow:inset 0 0 0 2px var(--ak-color-background,#fff)}\n.ak-ctl-swatch-none{background:linear-gradient(135deg,transparent 44%,var(--ak-color-danger,#9f343a) 44%,var(--ak-color-danger,#9f343a) 56%,transparent 56%),var(--ak-color-background,#fff)}\n.ak-ctl-switch{display:inline-flex;align-items:center;gap:10px;min-height:28px;margin:0;padding:0;border:0;background:none;color:var(--ak-color-text,#1d2f3c);font:inherit;font-size:13px;font-weight:600;text-align:left;cursor:pointer;border-radius:var(--ak-radius-sm,6px)}\n.ak-ctl-switch:disabled{opacity:.4;cursor:not-allowed}\n.ak-ctl-switch-track{position:relative;flex-shrink:0;width:32px;height:18px;border-radius:999px;background:var(--ak-color-border-strong,#8e979d);transition:background-color .15s}\n.ak-ctl-switch-thumb{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--ak-color-background,#fff);transition:transform .15s}\n.ak-ctl-switch[aria-checked=\"true\"] .ak-ctl-switch-track{background:var(--ak-color-primary-deep,#16a683)}\n.ak-ctl-switch[aria-checked=\"true\"] .ak-ctl-switch-thumb{transform:translateX(14px)}\n.ak-ctl-segmented{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--ak-color-border,#dde0e2);border-radius:var(--ak-radius-sm,6px);background:var(--ak-color-surface,#f4f7f7)}\n.ak-ctl-segmented button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:28px;height:26px;padding:0 8px;border:0;border-radius:4px;background:transparent;color:var(--ak-color-muted,#56636d);font:inherit;font-size:12px;font-weight:600;cursor:pointer}\n.ak-ctl-segmented button svg{width:14px;height:14px}\n.ak-ctl-segmented button:hover:not(:disabled){color:var(--ak-color-text,#1d2f3c)}\n.ak-ctl-segmented button[aria-checked=\"true\"]{background:var(--ak-color-background,#fff);color:var(--ak-color-accent,#0f7a5a);box-shadow:0 0 0 1px var(--ak-color-border,#dde0e2)}\n.ak-ctl-inspector{display:flex;flex-direction:column;min-width:0;max-height:80vh;overflow-y:auto;background:var(--ak-color-background,#fff);color:var(--ak-color-text,#1d2f3c);border:1px solid var(--ak-color-border,#dde0e2);border-radius:var(--ak-radius-md,8px);font-size:13px}\n.ak-ctl-section{display:flex;flex-direction:column;gap:12px;margin:0;padding:14px;border:0;border-top:1px solid var(--ak-color-border,#dde0e2)}\n.ak-ctl-section:first-child{border-top:0}\n.ak-ctl-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:20px}\n.ak-ctl-section-title{margin:0;font-family:var(--ak-font-heading,\"Sora\",system-ui,sans-serif);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ak-color-text,#1d2f3c)}\n.ak-ctl-section-actions{display:flex;gap:4px}\n.ak-ctl-empty{margin:0;font-size:13px;line-height:1.55;color:var(--ak-color-muted,#56636d)}\n.ak-ctl-card{display:flex;flex-direction:column;gap:8px;margin:0;padding:10px;border:1px solid var(--ak-color-border,#dde0e2);border-radius:var(--ak-radius-md,8px);background:var(--ak-color-surface,#f4f7f7);min-inline-size:0}\n.ak-ctl-list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}\n.ak-ctl-list-item{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 10px;border:1px solid transparent;border-radius:var(--ak-radius-sm,6px);background:none;color:var(--ak-color-text,#1d2f3c);font:inherit;font-size:13px;text-align:left;cursor:pointer}\n.ak-ctl-list-item:hover:not(:disabled){background:var(--ak-color-hover,#f2f3f4)}\n.ak-ctl-list-item[aria-current=\"true\"]{background:var(--ak-color-fill-accent,#e7f2ef);border-color:var(--ak-color-accent,#0f7a5a);color:var(--ak-color-accent,#0f7a5a)}\n";
3
+ //# sourceMappingURL=kit-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-css.d.ts","sourceRoot":"","sources":["../src/kit-css.ts"],"names":[],"mappings":"AAGA,0GAA0G;AAC1G,eAAO,MAAM,MAAM,i0dAAgC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { controlsCss } from './controls.js';
2
+ import { toolbarCss } from './toolbar.js';
3
+ /** Toolbar and form control styles shared by every kind editor and viewer (include once per kind CSS). */
4
+ export const kitCss = `${toolbarCss}${controlsCss}`;
5
+ //# sourceMappingURL=kit-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-css.js","sourceRoot":"","sources":["../src/kit-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,0GAA0G;AAC1G,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ export type LineDiffType = 'equal' | 'insert' | 'delete';
2
+ export interface LineDiffEntry {
3
+ type: LineDiffType;
4
+ text: string;
5
+ /** 1-based line number in the old text (equal and delete). */
6
+ oldLine?: number;
7
+ /** 1-based line number in the new text (equal and insert). */
8
+ newLine?: number;
9
+ }
10
+ export interface LineDiffOptions {
11
+ /**
12
+ * Upper bound for the LCS table (rows × columns) after trimming the common prefix and suffix.
13
+ * Above it the middle is reported as a block replacement, keeping memory bounded on huge projections.
14
+ */
15
+ maxCells?: number;
16
+ }
17
+ /** Line diff based on the longest common subsequence, with common prefix/suffix trimmed first. */
18
+ export declare function diffLines(before: string, after: string, options?: LineDiffOptions): LineDiffEntry[];
19
+ export interface SplitRow {
20
+ left?: LineDiffEntry;
21
+ right?: LineDiffEntry;
22
+ }
23
+ /** Pairs deletions with the insertions that follow them, for a side-by-side layout. */
24
+ export declare function toSplitRows(entries: LineDiffEntry[]): SplitRow[];
25
+ //# sourceMappingURL=line-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-diff.d.ts","sourceRoot":"","sources":["../src/line-diff.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,kGAAkG;AAClG,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,EAAE,CA0DvG;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAsBhE"}
@@ -0,0 +1,96 @@
1
+ const splitLines = (text) => (text === '' ? [] : text.replace(/\r\n?/g, '\n').split('\n'));
2
+ /** Line diff based on the longest common subsequence, with common prefix/suffix trimmed first. */
3
+ export function diffLines(before, after, options = {}) {
4
+ const a = splitLines(before);
5
+ const b = splitLines(after);
6
+ const maxCells = options.maxCells ?? 4_000_000;
7
+ let start = 0;
8
+ while (start < a.length && start < b.length && a[start] === b[start])
9
+ start++;
10
+ let endA = a.length;
11
+ let endB = b.length;
12
+ while (endA > start && endB > start && a[endA - 1] === b[endB - 1]) {
13
+ endA--;
14
+ endB--;
15
+ }
16
+ const out = [];
17
+ for (let i = 0; i < start; i++)
18
+ out.push({ type: 'equal', text: a[i], oldLine: i + 1, newLine: i + 1 });
19
+ const midA = a.slice(start, endA);
20
+ const midB = b.slice(start, endB);
21
+ const n = midA.length;
22
+ const m = midB.length;
23
+ if (n > 0 && m > 0 && n * m <= maxCells) {
24
+ // lengths[i][j] = LCS length of midA[i..] and midB[j..], stored flat.
25
+ const width = m + 1;
26
+ const lengths = new Uint32Array((n + 1) * width);
27
+ for (let i = n - 1; i >= 0; i--) {
28
+ for (let j = m - 1; j >= 0; j--) {
29
+ lengths[i * width + j] =
30
+ midA[i] === midB[j]
31
+ ? lengths[(i + 1) * width + j + 1] + 1
32
+ : Math.max(lengths[(i + 1) * width + j], lengths[i * width + j + 1]);
33
+ }
34
+ }
35
+ let i = 0;
36
+ let j = 0;
37
+ while (i < n && j < m) {
38
+ if (midA[i] === midB[j]) {
39
+ out.push({ type: 'equal', text: midA[i], oldLine: start + i + 1, newLine: start + j + 1 });
40
+ i++;
41
+ j++;
42
+ }
43
+ else if (lengths[(i + 1) * width + j] >= lengths[i * width + j + 1]) {
44
+ out.push({ type: 'delete', text: midA[i], oldLine: start + i + 1 });
45
+ i++;
46
+ }
47
+ else {
48
+ out.push({ type: 'insert', text: midB[j], newLine: start + j + 1 });
49
+ j++;
50
+ }
51
+ }
52
+ for (; i < n; i++)
53
+ out.push({ type: 'delete', text: midA[i], oldLine: start + i + 1 });
54
+ for (; j < m; j++)
55
+ out.push({ type: 'insert', text: midB[j], newLine: start + j + 1 });
56
+ }
57
+ else {
58
+ for (let k = 0; k < n; k++)
59
+ out.push({ type: 'delete', text: midA[k], oldLine: start + k + 1 });
60
+ for (let k = 0; k < m; k++)
61
+ out.push({ type: 'insert', text: midB[k], newLine: start + k + 1 });
62
+ }
63
+ for (let k = 0; k < a.length - endA; k++) {
64
+ out.push({ type: 'equal', text: a[endA + k], oldLine: endA + k + 1, newLine: endB + k + 1 });
65
+ }
66
+ return out;
67
+ }
68
+ /** Pairs deletions with the insertions that follow them, for a side-by-side layout. */
69
+ export function toSplitRows(entries) {
70
+ const rows = [];
71
+ let index = 0;
72
+ while (index < entries.length) {
73
+ const entry = entries[index];
74
+ if (entry.type === 'equal') {
75
+ rows.push({ left: entry, right: entry });
76
+ index++;
77
+ continue;
78
+ }
79
+ const deletes = [];
80
+ const inserts = [];
81
+ while (index < entries.length && entries[index].type === 'delete')
82
+ deletes.push(entries[index++]);
83
+ while (index < entries.length && entries[index].type === 'insert')
84
+ inserts.push(entries[index++]);
85
+ for (let k = 0; k < Math.max(deletes.length, inserts.length); k++) {
86
+ const row = {};
87
+ if (deletes[k])
88
+ row.left = deletes[k];
89
+ if (inserts[k])
90
+ row.right = inserts[k];
91
+ rows.push(row);
92
+ }
93
+ }
94
+ return rows;
95
+ }
96
+ //# sourceMappingURL=line-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-diff.js","sourceRoot":"","sources":["../src/line-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Best-effort parse of a JSON prefix streamed by a model (spec §13.4). Complete values are kept, a string
3
+ * value cut midway keeps the text received so far, and anything else unfinished at the end (a key, a
4
+ * number, a literal) is dropped. Returns undefined for text that is not a JSON prefix. The kind's
5
+ * `parsePartial` then decides which trailing items are complete enough to render.
6
+ */
7
+ export declare function parsePartialJson(text: string): unknown;
8
+ //# sourceMappingURL=partial-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partial-json.d.ts","sourceRoot":"","sources":["../src/partial-json.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAoJtD"}