@intentic/extension-ui 1.326.0 → 1.327.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 (37) hide show
  1. package/README.md +5 -2
  2. package/dist/format.js +7 -0
  3. package/dist/i18n.js +1 -0
  4. package/dist/index.js +10 -0
  5. package/dist/types/extension-ui/src/format.d.ts +1 -1
  6. package/dist/types/extension-ui/src/index.d.ts +3 -3
  7. package/dist/types/ui/src/components/charts/StatusTally.vue.d.ts +2 -2
  8. package/dist/types/ui/src/components/charts/dagLayout.d.ts +1 -0
  9. package/dist/types/ui/src/components/feedback/Notice.vue.d.ts +5 -4
  10. package/dist/types/ui/src/components/feedback/SkeletonSnapshot.vue.d.ts +2 -2
  11. package/dist/types/ui/src/components/feedback/changeStatus.d.ts +2 -1
  12. package/dist/types/ui/src/components/feedback/notice.d.ts +5 -1
  13. package/dist/types/ui/src/components/forms/AddressField.vue.d.ts +19 -0
  14. package/dist/types/ui/src/components/forms/NoteEditor.vue.d.ts +9 -9
  15. package/dist/types/ui/src/components/layout/BottomSheet.vue.d.ts +2 -2
  16. package/dist/types/ui/src/components/layout/Page.vue.d.ts +1 -1
  17. package/dist/types/ui/src/components/layout/SplitView.vue.d.ts +7 -7
  18. package/dist/types/ui/src/components/markdown/MarkdownDocument.vue.d.ts +3 -3
  19. package/dist/types/ui/src/components/overlays/InfoDialog.vue.d.ts +1 -0
  20. package/dist/types/ui/src/components/overlays/Modal.vue.d.ts +5 -5
  21. package/dist/types/ui/src/components/overlays/ResponsiveOverlay.vue.d.ts +3 -3
  22. package/dist/types/ui/src/components/rows/Row.vue.d.ts +11 -11
  23. package/dist/types/ui/src/composables/useAsyncAction.d.ts +1 -1
  24. package/dist/types/ui/src/composables/useRailMemory.d.ts +2 -2
  25. package/dist/types/ui/src/icons/iconSets.d.ts +15 -6
  26. package/dist/types/ui/src/index.d.ts +2 -1
  27. package/dist/types/ui/src/lib/clipboard.d.ts +10 -0
  28. package/dist/types/ui/src/lib/format.d.ts +11 -1
  29. package/dist/types/ui/src/lib/textDiff.d.ts +1 -1
  30. package/dist/types/ui/src/markdown/edits.d.ts +1 -0
  31. package/dist/types/ui/src/markdown/index.d.ts +2 -2
  32. package/dist/types/ui/src/markdown/render.d.ts +8 -0
  33. package/dist/types/ui/src/markdown/sourceDom.d.ts +1 -0
  34. package/names.mjs +11 -1
  35. package/package.json +2 -2
  36. package/src/format.ts +6 -0
  37. package/src/index.ts +16 -2
package/README.md CHANGED
@@ -19,9 +19,12 @@ flowchart LR
19
19
  - `scripts/build.mjs` compiles the published package from `_editor/ui`'s sources: declarations pruned to what the kit
20
20
  re-exports, and a `dist/index.js` bridge that throws when loaded outside an intentic host.
21
21
  - `names.mjs` lists the runtime export names by hand, because the `.vue` graph cannot load in Node. The editor's shim
22
- generator reads it, and a dev-time assertion in `hostModules.ts` catches drift.
22
+ generator reads it, a dev-time assertion in `hostModules.ts` catches drift, and `extensionUiNames.test.ts` fails it.
23
23
  - `./diff`, `./format`, `./i18n` and `./worker` skip the component barrel, for extension tests that run without a Vue
24
- compiler. `./worker` is also what a worker module imports `serveWorkerCall` from. A worker has no host bridge, so an
24
+ compiler. Each is published as a bridge holding what `src/index.ts` re-exports from that file, so a name a subpath
25
+ file exports must also be re-exported from the barrel and listed in `names.mjs`, or an extension installed from git
26
+ fails to link it; `extensionUiNames.test.ts` reads every subpath in `package.json`'s `exports` and fails the one left
27
+ out. `registerExtensionMessages` is left out on purpose: mounting a catalog is the host's job. `./worker` is also what a worker module imports `serveWorkerCall` from. A worker has no host bridge, so an
25
28
  extension built outside this repository bundles that module into its worker instead of marking it external.
26
29
 
27
30
  ## Key files
package/dist/format.js CHANGED
@@ -6,11 +6,18 @@ if (host === undefined) {
6
6
  }
7
7
  const m = host.modules["@intentic/extension-ui"];
8
8
  export const formatBytes = m["formatBytes"];
9
+ export const formatClock = m["formatClock"];
10
+ export const formatCompact = m["formatCompact"];
11
+ export const formatCount = m["formatCount"];
9
12
  export const formatDate = m["formatDate"];
13
+ export const formatDateLong = m["formatDateLong"];
10
14
  export const formatDateTime = m["formatDateTime"];
11
15
  export const formatDayMonth = m["formatDayMonth"];
12
16
  export const formatDayMonthTime = m["formatDayMonthTime"];
13
17
  export const formatDuration = m["formatDuration"];
18
+ export const formatElapsed = m["formatElapsed"];
19
+ export const formatMoney = m["formatMoney"];
20
+ export const formatPercent = m["formatPercent"];
14
21
  export const formatTime = m["formatTime"];
15
22
  export const formatTimestamp = m["formatTimestamp"];
16
23
  export const formatTokens = m["formatTokens"];
package/dist/i18n.js CHANGED
@@ -6,4 +6,5 @@ if (host === undefined) {
6
6
  }
7
7
  const m = host.modules["@intentic/extension-ui"];
8
8
  export const activeLocale = m["activeLocale"];
9
+ export const extensionI18n = m["extensionI18n"];
9
10
  export const extensionT = m["extensionT"];
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ if (host === undefined) {
10
10
  }
11
11
  const m = host.modules["@intentic/extension-ui"];
12
12
  export const ActionSheet = m["ActionSheet"];
13
+ export const AddressField = m["AddressField"];
13
14
  export const AgentRunButton = m["AgentRunButton"];
14
15
  export const AnchoredOverlay = m["AnchoredOverlay"];
15
16
  export const Avatar = m["Avatar"];
@@ -77,21 +78,30 @@ export const clipboardOf = m["clipboardOf"];
77
78
  export const createWorkerCall = m["createWorkerCall"];
78
79
  export const diffSequence = m["diffSequence"];
79
80
  export const errorMessage = m["errorMessage"];
81
+ export const extensionI18n = m["extensionI18n"];
80
82
  export const extensionT = m["extensionT"];
81
83
  export const fixStanceLook = m["fixStanceLook"];
82
84
  export const formatBytes = m["formatBytes"];
85
+ export const formatClock = m["formatClock"];
86
+ export const formatCompact = m["formatCompact"];
87
+ export const formatCount = m["formatCount"];
83
88
  export const formatDate = m["formatDate"];
89
+ export const formatDateLong = m["formatDateLong"];
84
90
  export const formatDateTime = m["formatDateTime"];
85
91
  export const formatDayMonth = m["formatDayMonth"];
86
92
  export const formatDayMonthTime = m["formatDayMonthTime"];
87
93
  export const formatDuration = m["formatDuration"];
94
+ export const formatElapsed = m["formatElapsed"];
95
+ export const formatMoney = m["formatMoney"];
88
96
  export const formatOf = m["formatOf"];
97
+ export const formatPercent = m["formatPercent"];
89
98
  export const formatTime = m["formatTime"];
90
99
  export const formatTimestamp = m["formatTimestamp"];
91
100
  export const formatTokens = m["formatTokens"];
92
101
  export const formatWeekdayTime = m["formatWeekdayTime"];
93
102
  export const formatWhen = m["formatWhen"];
94
103
  export const freshness = m["freshness"];
104
+ export const messageOr = m["messageOr"];
95
105
  export const noticeFrom = m["noticeFrom"];
96
106
  export const noticeOf = m["noticeOf"];
97
107
  export const openForwardedPort = m["openForwardedPort"];
@@ -1 +1 @@
1
- export { formatBytes, formatDate, formatDateLong, formatDateTime, formatDayMonth, formatDayMonthTime, formatDuration, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, formatWhen, freshness, timeAgo, } from "../../ui/src/lib/format.js";
1
+ export { formatBytes, formatClock, formatCompact, formatCount, formatDate, formatDateLong, formatDateTime, formatDayMonth, formatDayMonthTime, formatDuration, formatElapsed, formatMoney, formatPercent, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, formatWhen, freshness, timeAgo, } from "../../ui/src/lib/format.js";
@@ -1,8 +1,8 @@
1
- export { AgentRunButton, type AgentRunAttempt, type AgentRunChoice, type AgentRunPicker, type ModelPicking, useAgentRunPick, type FixStanceLook, fixStanceLook, AnchoredOverlay, Avatar, Button, vAction, BarChart, BottomSheet, BrandMark, Card, clipboardOf, browserOwnsClick, appLink, openForwardedPort, ChangeStatusMark, type ChangeStatus, ui, Code, CodeField, ConfirmDialog, ContextMenu, OverflowActions, ActionSheet, type ActionItem, CopyButton, StatusTally, type TallyItem, DagEditor, DagGraph, type DagEdge, type DagNode, DiffStat, DisclosureRow, FilterBar, Icon, type IconName, ImageView, InfoDialog, InfoHint, InfoTable, type FileFormat, formatOf, Markdown, MarkdownDocument, MarkdownFigure, Modal, type NavGroup, NavRail, NoteEditor, type NoteDraft, type NoteDraftOptions, useNoteDraft, useKeyedDraft, type NoticeModel, type NoticeTone, type NoticeAction, Notice, NoticeStack, Page, PageAction, PageHeader, ScrollFrame, PersonaFace, type PersonaLike, Picker, ProjectChip, type PickerGroup, type PickerOption, type PickerOptions, ProgressRing, RepoRail, type RepoRailAll, type RepoRailGroup, type RepoRailRow, ProseField, ResizeSeam, ResponsiveOverlay, Row, RowGroup, SearchBar, SegmentedControl, seriesColor, sinceOf, useLoadingReveal, SkeletonRows, SkeletonSnapshot, vSkeletonSource, SplitView, StatStrip, StatusBadge, type StatusVariant, StepSection, timeWindows, type TimeWindow, timeWindowWords, useCompact, useDevice, useListNavigation, useNow, useLatest, errorMessage, noticeFrom, noticeOf, useAsyncAction, useNarrow, useRailMemory, useScrollReset, type StickyTop, useStickyTop, useTheme, } from "../../ui/src/index.js";
2
- export { formatBytes, formatDate, formatDateTime, formatDayMonth, formatDayMonthTime, formatDuration, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, formatWhen, freshness, timeAgo, } from "./format.js";
1
+ export { AgentRunButton, type AgentRunAttempt, type AgentRunChoice, type AgentRunPicker, type ModelPicking, useAgentRunPick, type FixStanceLook, fixStanceLook, AnchoredOverlay, Avatar, Button, vAction, BarChart, BottomSheet, BrandMark, Card, clipboardOf, browserOwnsClick, appLink, openForwardedPort, ChangeStatusMark, type ChangeStatus, ui, Code, CodeField, ConfirmDialog, ContextMenu, OverflowActions, ActionSheet, type ActionItem, CopyButton, AddressField, StatusTally, type TallyItem, DagEditor, DagGraph, type DagEdge, type DagNode, DiffStat, DisclosureRow, FilterBar, Icon, type IconName, ImageView, InfoDialog, InfoHint, InfoTable, type FileFormat, formatOf, Markdown, MarkdownDocument, MarkdownFigure, Modal, type NavGroup, NavRail, NoteEditor, type NoteDraft, type NoteDraftOptions, useNoteDraft, useKeyedDraft, type NoticeModel, type NoticeTone, type NoticeAction, Notice, NoticeStack, Page, PageAction, PageHeader, ScrollFrame, PersonaFace, type PersonaLike, Picker, ProjectChip, type PickerGroup, type PickerOption, type PickerOptions, ProgressRing, RepoRail, type RepoRailAll, type RepoRailGroup, type RepoRailRow, ProseField, ResizeSeam, ResponsiveOverlay, Row, RowGroup, SearchBar, SegmentedControl, seriesColor, sinceOf, useLoadingReveal, SkeletonRows, SkeletonSnapshot, vSkeletonSource, SplitView, StatStrip, StatusBadge, type StatusVariant, StepSection, timeWindows, type TimeWindow, timeWindowWords, useCompact, useDevice, useListNavigation, useNow, useLatest, messageOr, messageOr as errorMessage, noticeFrom, noticeOf, useAsyncAction, useNarrow, useRailMemory, useScrollReset, type StickyTop, useStickyTop, useTheme, } from "../../ui/src/index.js";
2
+ export { formatBytes, formatClock, formatCompact, formatCount, formatDate, formatDateLong, formatDateTime, formatDayMonth, formatDayMonthTime, formatDuration, formatElapsed, formatMoney, formatPercent, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, formatWhen, freshness, timeAgo, } from "./format.js";
3
3
  export { diffSequence, pairEdits, similarity, wordDiff } from "./diff.js";
4
4
  export { createWorkerCall, serveWorkerCall, WorkerCallError } from "./worker.js";
5
- export { activeLocale, extensionT } from "./i18n.js";
5
+ export { activeLocale, extensionI18n, extensionT } from "./i18n.js";
6
6
  export type { BarsFigure, BarsFigureItem, DagFigure, DagFigureEdge, DagFigureNode, Figure, FigureAccent, MermaidFigure, StatsFigure, StatsFigureItem, } from "../../ui/src/markdown/index.js";
7
7
  export { default as Checkbox } from "primevue/checkbox";
8
8
  export type { MenuItem } from "primevue/menuitem";
@@ -9,9 +9,9 @@ type __VLS_Props = {
9
9
  items?: readonly TallyItem[];
10
10
  skeleton?: number;
11
11
  };
12
- declare var __VLS_1: {};
12
+ declare var __VLS_3: {};
13
13
  type __VLS_Slots = {} & {
14
- default?: (props: typeof __VLS_1) => any;
14
+ default?: (props: typeof __VLS_3) => any;
15
15
  };
16
16
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
17
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -6,6 +6,7 @@ export interface DagNode<T = unknown> {
6
6
  readonly dimmed?: boolean;
7
7
  readonly width?: number;
8
8
  readonly height?: number;
9
+ readonly order?: number;
9
10
  }
10
11
  export interface DagEdge {
11
12
  readonly from: string;
@@ -1,14 +1,15 @@
1
- import { type NoticeModel, type NoticeTone } from "./notice.js";
1
+ import { type NoticeModel, type NoticeSize, type NoticeTone } from "./notice.js";
2
2
  import type { IconName } from "../../icons/iconSets.js";
3
3
  type __VLS_Props = {
4
4
  of?: NoticeModel;
5
5
  tone?: NoticeTone;
6
6
  icon?: IconName;
7
+ size?: NoticeSize;
7
8
  dismissLabel?: string;
8
9
  };
9
- declare var __VLS_6: {};
10
- type __VLS_Slots = {} & {
11
- default?: (props: typeof __VLS_6) => any;
10
+ type __VLS_Slots = {
11
+ default?: () => unknown;
12
+ actions?: () => unknown;
12
13
  };
13
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
15
  dismiss: () => any;
@@ -2,9 +2,9 @@ type __VLS_Props = {
2
2
  of: string;
3
3
  label?: string;
4
4
  };
5
- declare var __VLS_7: {};
5
+ declare var __VLS_6: {};
6
6
  type __VLS_Slots = {} & {
7
- default?: (props: typeof __VLS_7) => any;
7
+ default?: (props: typeof __VLS_6) => any;
8
8
  };
9
9
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,3 +1,4 @@
1
- export type ChangeStatus = "added" | "modified" | "deleted" | "renamed" | "type-changed" | "conflicted";
1
+ import type { ChangeStatus } from "@intentic/sandbox-contract";
2
+ export type { ChangeStatus };
2
3
  export declare const STATUS_LETTER: Record<ChangeStatus, string>;
3
4
  export declare const STATUS_CLASS: Record<ChangeStatus, string>;
@@ -11,7 +11,11 @@ export interface NoticeModel {
11
11
  readonly action?: NoticeAction;
12
12
  readonly key?: string;
13
13
  }
14
- export declare const NOTICE_BOX: Record<NoticeTone, string>;
14
+ export declare const NOTICE_TONE: Record<NoticeTone, string>;
15
+ export type NoticeSize = "xs" | "sm" | "md" | "lg";
16
+ export declare const NOTICE_SIZE: Record<NoticeSize, string>;
17
+ export declare const NOTICE_ICON_SIZE: Record<NoticeSize, string>;
18
+ export declare const noticeBox: (tone: NoticeTone, size: NoticeSize, actions: boolean) => string;
15
19
  export declare const NOTICE_ICON: Record<NoticeTone, IconName>;
16
20
  export declare const noticeKey: (notice: NoticeModel) => string;
17
21
  export declare const rankNotices: (notices: readonly NoticeModel[]) => readonly NoticeModel[];
@@ -0,0 +1,19 @@
1
+ type __VLS_Props = {
2
+ value: string;
3
+ editable?: boolean;
4
+ placeholder?: string;
5
+ copyLabel?: string;
6
+ openLabel?: string;
7
+ openable?: boolean;
8
+ };
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
10
+ focus: () => void;
11
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ cancel: () => any;
13
+ submit: (text: string) => any;
14
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ onCancel?: (() => any) | undefined;
16
+ onSubmit?: ((text: string) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -9,23 +9,23 @@ type __VLS_Props = {
9
9
  verb?: string;
10
10
  paged?: boolean;
11
11
  };
12
- declare var __VLS_9: {}, __VLS_12: {}, __VLS_20: {}, __VLS_23: {}, __VLS_47: {}, __VLS_65: {}, __VLS_67: {}, __VLS_88: {};
12
+ declare var __VLS_8: {}, __VLS_11: {}, __VLS_19: {}, __VLS_22: {}, __VLS_46: {}, __VLS_64: {}, __VLS_66: {}, __VLS_87: {};
13
13
  type __VLS_Slots = {} & {
14
- lead?: (props: typeof __VLS_9) => any;
14
+ lead?: (props: typeof __VLS_8) => any;
15
15
  } & {
16
- badges?: (props: typeof __VLS_12) => any;
16
+ badges?: (props: typeof __VLS_11) => any;
17
17
  } & {
18
- description?: (props: typeof __VLS_20) => any;
18
+ description?: (props: typeof __VLS_19) => any;
19
19
  } & {
20
- meta?: (props: typeof __VLS_23) => any;
20
+ meta?: (props: typeof __VLS_22) => any;
21
21
  } & {
22
- actions?: (props: typeof __VLS_47) => any;
22
+ actions?: (props: typeof __VLS_46) => any;
23
23
  } & {
24
- strips?: (props: typeof __VLS_65) => any;
24
+ strips?: (props: typeof __VLS_64) => any;
25
25
  } & {
26
- confirm?: (props: typeof __VLS_67) => any;
26
+ confirm?: (props: typeof __VLS_66) => any;
27
27
  } & {
28
- default?: (props: typeof __VLS_88) => any;
28
+ default?: (props: typeof __VLS_87) => any;
29
29
  };
30
30
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
31
31
  cancel: () => any;
@@ -5,9 +5,9 @@ type __VLS_ModelProps = {
5
5
  modelValue: boolean;
6
6
  };
7
7
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
8
- declare var __VLS_8: {};
8
+ declare var __VLS_7: {};
9
9
  type __VLS_Slots = {} & {
10
- default?: (props: typeof __VLS_8) => any;
10
+ default?: (props: typeof __VLS_7) => any;
11
11
  };
12
12
  declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
13
  "update:modelValue": (value: boolean) => any;
@@ -6,7 +6,7 @@ type __VLS_Slots = {} & {
6
6
  default?: (props: typeof __VLS_1) => any;
7
7
  };
8
8
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
- width: `content` | `wide` | `full`;
9
+ width: "full" | "content" | "wide";
10
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
12
  declare const _default: typeof __VLS_export;
@@ -6,21 +6,21 @@ type __VLS_Props = {
6
6
  scroll?: `panes` | `page`;
7
7
  scrollKey?: unknown;
8
8
  };
9
- declare var __VLS_15: {}, __VLS_18: {}, __VLS_20: {}, __VLS_22: {}, __VLS_24: {}, __VLS_26: {
9
+ declare var __VLS_14: {}, __VLS_17: {}, __VLS_19: {}, __VLS_21: {}, __VLS_23: {}, __VLS_25: {
10
10
  compact: boolean;
11
11
  };
12
12
  type __VLS_Slots = {} & {
13
- info?: (props: typeof __VLS_15) => any;
13
+ info?: (props: typeof __VLS_14) => any;
14
14
  } & {
15
- actions?: (props: typeof __VLS_18) => any;
15
+ actions?: (props: typeof __VLS_17) => any;
16
16
  } & {
17
- strips?: (props: typeof __VLS_20) => any;
17
+ strips?: (props: typeof __VLS_19) => any;
18
18
  } & {
19
- compact?: (props: typeof __VLS_22) => any;
19
+ compact?: (props: typeof __VLS_21) => any;
20
20
  } & {
21
- rail?: (props: typeof __VLS_24) => any;
21
+ rail?: (props: typeof __VLS_23) => any;
22
22
  } & {
23
- detail?: (props: typeof __VLS_26) => any;
23
+ detail?: (props: typeof __VLS_25) => any;
24
24
  };
25
25
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
26
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -17,11 +17,11 @@ type __VLS_ModelProps = {
17
17
  modelValue: string;
18
18
  };
19
19
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
20
- declare var __VLS_25: {}, __VLS_27: {};
20
+ declare var __VLS_23: {}, __VLS_25: {};
21
21
  type __VLS_Slots = {} & {
22
- note?: (props: typeof __VLS_25) => any;
22
+ note?: (props: typeof __VLS_23) => any;
23
23
  } & {
24
- actions?: (props: typeof __VLS_27) => any;
24
+ actions?: (props: typeof __VLS_25) => any;
25
25
  };
26
26
  declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
27
27
  text: () => string;
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  title: string;
3
+ size?: `md` | `lg`;
3
4
  };
4
5
  declare var __VLS_12: {};
5
6
  type __VLS_Slots = {} & {
@@ -8,15 +8,15 @@ type __VLS_Props = {
8
8
  labelledBy?: string;
9
9
  appendTo?: HTMLElement | string;
10
10
  };
11
- declare var __VLS_12: {
11
+ declare var __VLS_11: {
12
12
  titleClass: string;
13
- }, __VLS_14: {}, __VLS_17: {};
13
+ }, __VLS_13: {}, __VLS_16: {};
14
14
  type __VLS_Slots = {} & {
15
- header?: (props: typeof __VLS_12) => any;
15
+ header?: (props: typeof __VLS_11) => any;
16
16
  } & {
17
- default?: (props: typeof __VLS_14) => any;
17
+ default?: (props: typeof __VLS_13) => any;
18
18
  } & {
19
- footer?: (props: typeof __VLS_17) => any;
19
+ footer?: (props: typeof __VLS_16) => any;
20
20
  };
21
21
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
22
  show: () => any;
@@ -10,11 +10,11 @@ type __VLS_ModelProps = {
10
10
  modelValue: boolean;
11
11
  };
12
12
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
13
- declare var __VLS_8: {}, __VLS_17: {};
13
+ declare var __VLS_7: {}, __VLS_15: {};
14
14
  type __VLS_Slots = {} & {
15
- default?: (props: typeof __VLS_8) => any;
15
+ default?: (props: typeof __VLS_7) => any;
16
16
  } & {
17
- default?: (props: typeof __VLS_17) => any;
17
+ default?: (props: typeof __VLS_15) => any;
18
18
  };
19
19
  declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
20
  "update:modelValue": (value: boolean) => any;
@@ -22,29 +22,29 @@ type __VLS_Props = {
22
22
  headlineGuard?: boolean;
23
23
  indent?: boolean;
24
24
  };
25
- declare var __VLS_16: {
25
+ declare var __VLS_15: {
26
26
  mark: 22 | 18 | 28 | 36;
27
27
  iconClass: "text-xl" | "text-lg" | "text-base";
28
- }, __VLS_29: {}, __VLS_31: {}, __VLS_33: {}, __VLS_35: {}, __VLS_42: {
28
+ }, __VLS_28: {}, __VLS_30: {}, __VLS_32: {}, __VLS_34: {}, __VLS_41: {
29
29
  mark: 22 | 18 | 28 | 36;
30
30
  iconClass: "text-xl" | "text-lg" | "text-base";
31
- }, __VLS_49: {}, __VLS_51: {};
31
+ }, __VLS_48: {}, __VLS_50: {};
32
32
  type __VLS_Slots = {} & {
33
- lead?: (props: typeof __VLS_16) => any;
33
+ lead?: (props: typeof __VLS_15) => any;
34
34
  } & {
35
- title?: (props: typeof __VLS_29) => any;
35
+ title?: (props: typeof __VLS_28) => any;
36
36
  } & {
37
- description?: (props: typeof __VLS_31) => any;
37
+ description?: (props: typeof __VLS_30) => any;
38
38
  } & {
39
- meta?: (props: typeof __VLS_33) => any;
39
+ meta?: (props: typeof __VLS_32) => any;
40
40
  } & {
41
- control?: (props: typeof __VLS_35) => any;
41
+ control?: (props: typeof __VLS_34) => any;
42
42
  } & {
43
- lead?: (props: typeof __VLS_42) => any;
43
+ lead?: (props: typeof __VLS_41) => any;
44
44
  } & {
45
- below?: (props: typeof __VLS_49) => any;
45
+ below?: (props: typeof __VLS_48) => any;
46
46
  } & {
47
- below?: (props: typeof __VLS_51) => any;
47
+ below?: (props: typeof __VLS_50) => any;
48
48
  };
49
49
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
50
50
  headerClick: (event: MouseEvent) => any;
@@ -1,5 +1,5 @@
1
1
  import type { NoticeModel, NoticeTone } from "../components/feedback/notice.js";
2
- export declare const errorMessage: (error: unknown, fallback: string) => string;
2
+ export declare const messageOr: (error: unknown, fallback: string) => string;
3
3
  interface NoticeOptions {
4
4
  readonly tone?: NoticeTone;
5
5
  readonly action?: NoticeModel[`action`];
@@ -1,2 +1,2 @@
1
- import { type Ref } from "vue";
2
- export declare function useRailMemory(id: string, choice: Ref<string | undefined>, options: () => readonly string[]): void;
1
+ import { type Ref, type WritableComputedRef } from "vue";
2
+ export declare function useRailMemory<T extends string | undefined>(id: string, choice: Ref<T>, options: () => readonly string[]): WritableComputedRef<T>;
@@ -11,6 +11,9 @@ export declare const ICONS: {
11
11
  "arrow-circle-up": {
12
12
  outline: string;
13
13
  };
14
+ "arrow-down": {
15
+ outline: string;
16
+ };
14
17
  "arrow-down-left": {
15
18
  outline: string;
16
19
  };
@@ -20,6 +23,9 @@ export declare const ICONS: {
20
23
  "arrow-right": {
21
24
  outline: string;
22
25
  };
26
+ "arrow-up": {
27
+ outline: string;
28
+ };
23
29
  "arrow-up-right": {
24
30
  outline: string;
25
31
  };
@@ -90,6 +96,9 @@ export declare const ICONS: {
90
96
  cloud: {
91
97
  outline: string;
92
98
  };
99
+ "cloud-download": {
100
+ outline: string;
101
+ };
93
102
  "cloud-upload": {
94
103
  outline: string;
95
104
  };
@@ -261,6 +270,9 @@ export declare const ICONS: {
261
270
  microphone: {
262
271
  outline: string;
263
272
  };
273
+ mobile: {
274
+ outline: string;
275
+ };
264
276
  moon: {
265
277
  outline: string;
266
278
  };
@@ -314,6 +326,9 @@ export declare const ICONS: {
314
326
  save: {
315
327
  outline: string;
316
328
  };
329
+ screen: {
330
+ outline: string;
331
+ };
317
332
  search: {
318
333
  outline: string;
319
334
  };
@@ -508,12 +523,6 @@ export declare const ICONS: {
508
523
  "code-parameter": {
509
524
  outline: string;
510
525
  };
511
- "arrow-down": {
512
- outline: string;
513
- };
514
- "arrow-up": {
515
- outline: string;
516
- };
517
526
  ban: {
518
527
  outline: string;
519
528
  };
@@ -24,6 +24,7 @@ export { default as OverflowActions } from "./components/overlays/OverflowAction
24
24
  export { default as ActionSheet } from "./components/overlays/ActionSheet.vue";
25
25
  export { type ActionItem } from "./components/overlays/actionItem.js";
26
26
  export { default as CopyButton } from "./components/primitives/CopyButton.vue";
27
+ export { default as AddressField } from "./components/forms/AddressField.vue";
27
28
  export { type TallyItem, default as StatusTally } from "./components/charts/StatusTally.vue";
28
29
  export { default as DisclosureRow } from "./components/rows/DisclosureRow.vue";
29
30
  export { type DagEdge, type DagNode } from "./components/charts/dagLayout.js";
@@ -85,5 +86,5 @@ export { useRailMemory } from "./composables/useRailMemory.js";
85
86
  export { useNow } from "./composables/useNow.js";
86
87
  export { useLatest } from "./composables/useLatest.js";
87
88
  export { useLoadingReveal } from "./composables/loadingReveal.js";
88
- export { errorMessage, noticeFrom, noticeOf, useAsyncAction } from "./composables/useAsyncAction.js";
89
+ export { messageOr, noticeFrom, noticeOf, useAsyncAction } from "./composables/useAsyncAction.js";
89
90
  export { useTheme } from "./composables/useTheme.js";
@@ -1 +1,11 @@
1
+ import { type Ref } from "vue";
1
2
  export declare const clipboardOf: (element: Element | null | undefined) => Clipboard;
3
+ export declare const writeClipboard: (text: string, from?: Element | null) => Promise<boolean>;
4
+ export declare const readClipboard: (from?: Element | null) => Promise<string | undefined>;
5
+ export declare const COPIED_MS = 1500;
6
+ export interface Copied {
7
+ readonly copied: Readonly<Ref<boolean>>;
8
+ readonly copy: (text: string, from?: Element | null) => Promise<boolean>;
9
+ readonly reset: () => void;
10
+ }
11
+ export declare const useCopied: (holdMs?: number) => Copied;
@@ -1,12 +1,12 @@
1
1
  export declare const formatBytes: (bytes: number | undefined) => string;
2
2
  export declare const formatDuration: (seconds: number) => string;
3
- export declare const formatTokens: (tokens: number) => string;
4
3
  export declare const initialsOf: (name: string) => string | undefined;
5
4
  export declare const formatFixed: (value: number, digits: number) => string;
6
5
  export declare const setFormatLocale: (tag: string) => void;
7
6
  export declare const formatPercent: (percent: number) => string;
8
7
  export declare const formatDate: (at: number) => string;
9
8
  export declare const formatDateLong: (at: number | string) => string;
9
+ export declare const formatMonth: (at: number) => string;
10
10
  export declare const formatDayMonth: (at: number) => string;
11
11
  export declare const formatDateTime: (at: number) => string;
12
12
  export declare const formatTimestamp: (at: number) => string;
@@ -20,3 +20,13 @@ export declare const timeAgo: (at: number, { now, days }?: {
20
20
  days?: boolean;
21
21
  }) => string;
22
22
  export declare const freshness: (at: number) => string;
23
+ export declare const formatCount: (value: number) => string;
24
+ export declare const formatCompact: (value: number) => string;
25
+ export declare const formatTokens: (tokens: number) => string;
26
+ export declare const formatList: (items: readonly string[], type?: Intl.ListFormatType) => string;
27
+ export declare const formatMoney: (usd: number, { compact }?: {
28
+ compact?: boolean;
29
+ }) => string;
30
+ export declare const formatElapsed: (seconds: number, { largest }?: {
31
+ largest?: `days` | `hours`;
32
+ }) => string;
@@ -11,7 +11,7 @@ export type Op<T> = {
11
11
  readonly kind: "added" | "removed";
12
12
  readonly item: T;
13
13
  };
14
- export declare const diffSequence: <T>(before: readonly T[], after: readonly T[], equal: (left: T, right: T) => boolean) => Op<T>[] | undefined;
14
+ export declare const diffSequence: <T>(before: readonly T[], after: readonly T[], equal: (left: T, right: T) => boolean, maxCells?: number) => Op<T>[] | undefined;
15
15
  export declare const wordDiff: (before: string, after: string) => Segment[];
16
16
  export declare const similarity: (before: string, after: string) => number;
17
17
  export type Edit<T> = {
@@ -8,6 +8,7 @@ export declare const insertLink: (text: string, start: number, end: number) => T
8
8
  export declare const indentLines: (text: string, start: number, end: number) => TextEdit;
9
9
  export declare const outdentLines: (text: string, start: number, end: number) => TextEdit;
10
10
  export declare const onListLine: (text: string, offset: number) => boolean;
11
+ export declare const newlineInCode: (text: string, start: number, end: number) => TextEdit;
11
12
  export interface ListEnter {
12
13
  readonly edit: TextEdit;
13
14
  readonly ended: boolean;
@@ -1,8 +1,8 @@
1
1
  export { blockAtOffset, type MarkdownBlock, type MarkdownBlocks, offsetOfLine, splitMarkdownBlocks } from "./blocks.js";
2
2
  export { type CodeBlock, codeBlockHtml, copyCodeFromEvent, escapeHtml, highlightInWorker } from "./code.js";
3
- export { continueList, indentLines, insertLink, type ListEnter, onListLine, outdentLines, type TextEdit, toggleWrap } from "./edits.js";
3
+ export { continueList, indentLines, insertLink, type ListEnter, newlineInCode, onListLine, outdentLines, type TextEdit, toggleWrap } from "./edits.js";
4
4
  export { createMarkdownHistory, type DocumentState, type EditKind, type MarkdownHistory } from "./history.js";
5
- export { blockBody, buildBlockElement, caretAtOffset, offsetOfCaret } from "./sourceDom.js";
5
+ export { blockBody, buildBlockElement, caretAtOffset, offsetOfCaret, RENDERED } from "./sourceDom.js";
6
6
  export { type BarsFigure, type BarsFigureItem, type DagFigure, type DagFigureEdge, type DagFigureNode, type Figure, FIGURE_ACCENTS, type FigureAccent, FIGURE_LANGS, JSON_FIGURE_LANGS, type MarkdownSegment, MERMAID_LANG, type MermaidFigure, parseFigure, splitFigureSegments, type StatsFigure, type StatsFigureItem, } from "./figures.js";
7
7
  export { type Frontmatter, type FrontmatterField, frontmatterHtml, splitFrontmatter } from "./frontmatter.js";
8
8
  export { createStreamingMarkdown, lexBlocks, lexInline, type MarkdownDecorator, type MarkdownPart, markdownParseCount, type MarkdownToken, parseMarkdownParts, type ParsedMarkdown, renderMarkdown, renderMarkdownParts, renderParsedMarkdown, type RenderedMarkdown, settledEnd, type StreamingMarkdown, } from "./render.js";
@@ -4,7 +4,15 @@ export interface MarkdownToken {
4
4
  readonly type: string;
5
5
  readonly raw: string;
6
6
  readonly tokens?: readonly MarkdownToken[];
7
+ readonly href?: string;
8
+ readonly items?: readonly MarkdownToken[];
9
+ readonly header?: readonly MarkdownCell[];
10
+ readonly rows?: readonly (readonly MarkdownCell[])[];
7
11
  }
12
+ export interface MarkdownCell {
13
+ readonly tokens: readonly MarkdownToken[];
14
+ }
15
+ export declare const lexedSource: (source: string) => string;
8
16
  export declare const lexBlocks: (source: string) => readonly MarkdownToken[] | undefined;
9
17
  export declare const lexInline: (source: string) => readonly MarkdownToken[] | undefined;
10
18
  export type MarkdownDecorator = (fragment: DocumentFragment) => void;
@@ -1,5 +1,6 @@
1
1
  export declare const blockBody: (element: Element) => string;
2
2
  export declare const FIGURE_HOLDER = "md-code-figure";
3
+ export declare const RENDERED = "md-rendered";
3
4
  export declare const buildBlockElement: (source: string) => HTMLElement;
4
5
  export declare const offsetOfCaret: (element: HTMLElement, node: Node, offset: number) => number;
5
6
  export declare const caretAtOffset: (element: HTMLElement, offset: number) => {
package/names.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  // The kit's export names: the single source consumed by the web app's shim generator
2
2
  // (_editor/web/scripts/generate-ext-shims.mjs) and hostModules' dev-time coverage assertion. Update alongside
3
- // src/index.ts; the assertion catches drift on the next dev boot.
3
+ // src/index.ts; the assertion catches drift on the next dev boot, and extensionUiNames.test.ts fails it in CI.
4
4
  export const extensionUiNames = [
5
5
  "AgentRunButton",
6
6
  "AnchoredOverlay",
@@ -23,6 +23,7 @@ export const extensionUiNames = [
23
23
  "OverflowActions",
24
24
  "ActionSheet",
25
25
  "CopyButton",
26
+ "AddressField",
26
27
  "DagEditor",
27
28
  "DagGraph",
28
29
  "DiffStat",
@@ -33,8 +34,15 @@ export const extensionUiNames = [
33
34
  "FilterBar",
34
35
  "fixStanceLook",
35
36
  "formatBytes",
37
+ "formatClock",
38
+ "formatCompact",
39
+ "formatCount",
40
+ "formatElapsed",
41
+ "formatMoney",
42
+ "formatPercent",
36
43
  "formatOf",
37
44
  "formatDate",
45
+ "formatDateLong",
38
46
  "formatDateTime",
39
47
  "formatDayMonth",
40
48
  "formatDayMonthTime",
@@ -48,6 +56,7 @@ export const extensionUiNames = [
48
56
  "serveWorkerCall",
49
57
  "WorkerCallError",
50
58
  "activeLocale",
59
+ "extensionI18n",
51
60
  "extensionT",
52
61
  "Icon",
53
62
  "ImageView",
@@ -57,6 +66,7 @@ export const extensionUiNames = [
57
66
  "Markdown",
58
67
  "MarkdownDocument",
59
68
  "MarkdownFigure",
69
+ "messageOr",
60
70
  "Modal",
61
71
  "NavRail",
62
72
  "NoteEditor",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/extension-ui",
3
- "version": "1.326.0",
3
+ "version": "1.327.0",
4
4
  "description": "The UI kit intentic extensions render with, host-provided at runtime (the app's own components via the import map), so extension UI is always native to the shell",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -56,7 +56,7 @@
56
56
  "@intentic/ui": "0.0.0",
57
57
  "typescript": "6.0.3",
58
58
  "vue": "3.5.43",
59
- "vue-tsc": "3.3.11"
59
+ "vue-tsc": "3.3.12"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "vue": "3"
package/src/format.ts CHANGED
@@ -4,12 +4,18 @@
4
4
  // names.
5
5
  export {
6
6
  formatBytes,
7
+ formatClock,
8
+ formatCompact,
9
+ formatCount,
7
10
  formatDate,
8
11
  formatDateLong,
9
12
  formatDateTime,
10
13
  formatDayMonth,
11
14
  formatDayMonthTime,
12
15
  formatDuration,
16
+ formatElapsed,
17
+ formatMoney,
18
+ formatPercent,
13
19
  formatTime,
14
20
  formatTimestamp,
15
21
  formatTokens,
package/src/index.ts CHANGED
@@ -53,6 +53,8 @@ export {
53
53
  ActionSheet,
54
54
  type ActionItem,
55
55
  CopyButton,
56
+ // A lone URL to read, copy or open; `editable` turns the same box into an address bar.
57
+ AddressField,
56
58
  StatusTally,
57
59
  type TallyItem,
58
60
  DagEditor,
@@ -154,7 +156,10 @@ export {
154
156
  useNow,
155
157
  // Drops an answer a newer request has superseded: `const current = begin(); …; if (!current()) return;`.
156
158
  useLatest,
157
- errorMessage,
159
+ // The thrown thing's message, or a fallback when it has none.
160
+ messageOr,
161
+ // Deprecated: the old name of `messageOr`, kept so extensions built against it still link.
162
+ messageOr as errorMessage,
158
163
  noticeFrom,
159
164
  noticeOf,
160
165
  useAsyncAction,
@@ -172,11 +177,18 @@ export {
172
177
  // Also reachable as `@intentic/extension-ui/format`, without the components attached.
173
178
  export {
174
179
  formatBytes,
180
+ formatClock,
181
+ formatCompact,
182
+ formatCount,
175
183
  formatDate,
184
+ formatDateLong,
176
185
  formatDateTime,
177
186
  formatDayMonth,
178
187
  formatDayMonthTime,
179
188
  formatDuration,
189
+ formatElapsed,
190
+ formatMoney,
191
+ formatPercent,
180
192
  formatTime,
181
193
  formatTimestamp,
182
194
  formatTokens,
@@ -193,7 +205,9 @@ export { createWorkerCall, serveWorkerCall, WorkerCallError } from "./worker.js"
193
205
  // `messages` export; `activeLocale` is the language on screen, for a contribution that formats something itself.
194
206
  // The `Locale` type comes off `@intentic/extension-ui/i18n`, not from here: this file's re-exports become runtime
195
207
  // bindings on the host bridge, and a type has none.
196
- export { activeLocale, extensionT } from "./i18n.js";
208
+ // `extensionI18n` is the one-call form of the same translator. `registerExtensionMessages` stays off: mounting a
209
+ // catalog is the host's job, and on the bridge it would let one extension overwrite another's words.
210
+ export { activeLocale, extensionI18n, extensionT } from "./i18n.js";
197
211
  // Types only, so an extension can build a figure straight from facts it holds instead of round-tripping through
198
212
  // markdown. The parser and document splitter stay in `<Markdown>`, not here.
199
213
  export type {