@khorsheed/dsh-room 0.2.2 → 0.2.4

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 (109) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.en.md +29 -62
  3. package/README.i18n.yaml +2 -2
  4. package/README.md +28 -61
  5. package/lib/client.js +14620 -5705
  6. package/lib/index.js +4069 -730
  7. package/lib/journal-B4FOGO6S.js +482 -0
  8. package/lib/journal-Rid9AAnD.js +485 -0
  9. package/lib/tool.js +112 -166
  10. package/lib/typert.host.js +2031 -374
  11. package/lib/typert.remote-client.d.ts +34 -10
  12. package/lib/typert.remote-client.js +1599 -210
  13. package/lib/types/agent-setup.d.ts +1 -1
  14. package/lib/types/client/InviteAgentAction.js +4 -16
  15. package/lib/types/client/InviteDialog.d.ts +28 -6
  16. package/lib/types/client/InviteDialog.js +76 -12
  17. package/lib/types/client/MemberCard.d.ts +5 -1
  18. package/lib/types/client/MemberCard.js +4 -4
  19. package/lib/types/client/MembersView.d.ts +1 -1
  20. package/lib/types/client/MembersView.js +58 -22
  21. package/lib/types/client/RemoveMemberConfirm.d.ts +40 -0
  22. package/lib/types/client/RemoveMemberConfirm.js +85 -0
  23. package/lib/types/client/RoomApprovalView.d.ts +11 -0
  24. package/lib/types/client/RoomApprovalView.js +28 -0
  25. package/lib/types/client/RoomComposer.d.ts +1 -1
  26. package/lib/types/client/RoomComposer.js +195 -29
  27. package/lib/types/client/RoomDecisionView.d.ts +22 -0
  28. package/lib/types/client/RoomDecisionView.js +35 -0
  29. package/lib/types/client/RoomHelpView.d.ts +17 -0
  30. package/lib/types/client/RoomHelpView.js +56 -0
  31. package/lib/types/client/RoomInboxView.d.ts +10 -0
  32. package/lib/types/client/RoomInboxView.js +14 -0
  33. package/lib/types/client/RoomQuestionView.d.ts +13 -0
  34. package/lib/types/client/RoomQuestionView.js +61 -0
  35. package/lib/types/client/RoomRelayView.js +1 -1
  36. package/lib/types/client/RoomRunView.d.ts +3 -1
  37. package/lib/types/client/RoomRunView.js +12 -5
  38. package/lib/types/client/RoomSettingsView.d.ts +19 -0
  39. package/lib/types/client/RoomSettingsView.js +30 -0
  40. package/lib/types/client/RoomSpeechView.d.ts +22 -8
  41. package/lib/types/client/RoomSpeechView.js +94 -11
  42. package/lib/types/client/RoomStatsLine.d.ts +26 -5
  43. package/lib/types/client/RoomStatsLine.js +53 -7
  44. package/lib/types/client/RoomTaskCapsule.d.ts +19 -0
  45. package/lib/types/client/RoomTaskCapsule.js +37 -0
  46. package/lib/types/client/TasksTab.d.ts +41 -0
  47. package/lib/types/client/TasksTab.js +43 -0
  48. package/lib/types/client/TasksView.d.ts +44 -0
  49. package/lib/types/client/TasksView.js +149 -0
  50. package/lib/types/client/TeamView.d.ts +33 -0
  51. package/lib/types/client/TeamView.js +210 -0
  52. package/lib/types/client/at-menu.d.ts +127 -0
  53. package/lib/types/client/at-menu.js +173 -0
  54. package/lib/types/client/draft-chips.d.ts +67 -0
  55. package/lib/types/client/draft-chips.js +95 -0
  56. package/lib/types/client/executions.d.ts +0 -30
  57. package/lib/types/client/executions.js +4 -34
  58. package/lib/types/client/icons-local.d.ts +25 -0
  59. package/lib/types/client/icons-local.js +10 -0
  60. package/lib/types/client/icons.d.ts +2 -1
  61. package/lib/types/client/icons.js +1 -0
  62. package/lib/types/client/index.js +276 -72
  63. package/lib/types/client/locales.d.ts +482 -52
  64. package/lib/types/client/locales.js +490 -60
  65. package/lib/types/client/nodes.d.ts +112 -17
  66. package/lib/types/client/nodes.js +197 -26
  67. package/lib/types/client/slots.d.ts +117 -47
  68. package/lib/types/client/task-tag.d.ts +32 -0
  69. package/lib/types/client/task-tag.js +33 -0
  70. package/lib/types/client/tasks.d.ts +50 -0
  71. package/lib/types/client/tasks.js +82 -0
  72. package/lib/types/client/team.d.ts +73 -0
  73. package/lib/types/client/team.js +187 -0
  74. package/lib/types/decisions.d.ts +49 -0
  75. package/lib/types/decisions.js +101 -0
  76. package/lib/types/deliveries.d.ts +17 -1
  77. package/lib/types/deliveries.js +82 -6
  78. package/lib/types/dispatch.d.ts +102 -4
  79. package/lib/types/dispatch.js +498 -109
  80. package/lib/types/help.d.ts +137 -0
  81. package/lib/types/help.js +216 -0
  82. package/lib/types/helps.d.ts +26 -0
  83. package/lib/types/helps.js +47 -0
  84. package/lib/types/index.d.ts +292 -52
  85. package/lib/types/index.js +1421 -199
  86. package/lib/types/jobs.d.ts +22 -0
  87. package/lib/types/jobs.js +77 -0
  88. package/lib/types/journal.d.ts +17 -27
  89. package/lib/types/journal.js +120 -43
  90. package/lib/types/messaging.d.ts +65 -0
  91. package/lib/types/messaging.js +160 -0
  92. package/lib/types/plan-service.js +7 -1
  93. package/lib/types/report-gate.d.ts +81 -0
  94. package/lib/types/report-gate.js +89 -0
  95. package/lib/types/tool-definition.d.ts +43 -20
  96. package/lib/types/tool-definition.js +145 -212
  97. package/lib/types/tool.d.ts +2 -2
  98. package/lib/types/tool.js +3 -2
  99. package/lib/types/types.d.ts +755 -78
  100. package/locale/zh.json +1 -1
  101. package/package.json +3 -3
  102. package/lib/types/client/RoomActivityDock.d.ts +0 -19
  103. package/lib/types/client/RoomActivityDock.js +0 -105
  104. package/lib/types/client/RoomDockCapsules.d.ts +0 -64
  105. package/lib/types/client/RoomDockCapsules.js +0 -277
  106. package/lib/types/client/RoomPlanTab.d.ts +0 -15
  107. package/lib/types/client/RoomPlanTab.js +0 -13
  108. package/lib/types/client/RoomTaskLineView.d.ts +0 -13
  109. package/lib/types/client/RoomTaskLineView.js +0 -21
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Reference chips in the room composer's plain textarea. The draft lives in
3
+ * the session's official input machine (RoomComposer's module header), whose
4
+ * `draft` is the CLIPBOARD projection — each chip expanded to the full text
5
+ * it sends (a quote chip: its whole `> ` block). A textarea showing that
6
+ * projection shows raw wire text, and editing it through `setDraft` flattens
7
+ * every chip. So the composer shows chips as their own row and the textarea
8
+ * only the typed text BETWEEN them; an edit is mapped back onto the machine
9
+ * as detect-coordinate replacements (`insertText`), which never touch a chip
10
+ * outside the edited range.
11
+ *
12
+ * Coordinates: the machine's spans speak the DETECT projection, where each
13
+ * chip folds to one placeholder character. With chips at clipboard offsets,
14
+ * the typed text splits into segments around them; free-text index `i` in
15
+ * segment `k` sits at detect index `i + k` (k chips precede it).
16
+ *
17
+ * Pure and DOM-free — unit-tested on its own.
18
+ * @module @khorsheed/dsh-room/client/draft-chips
19
+ */
20
+ /**
21
+ * The typed text around the chips: one segment before each chip plus the
22
+ * tail, in order (so `segments.length === chips.length + 1`).
23
+ * @param draft - the clipboard projection.
24
+ * @param chips - the machine's chips, sorted by offset.
25
+ */
26
+ export function draftSegments(draft, chips) {
27
+ const segments = [];
28
+ let cursor = 0;
29
+ for (const chip of chips) {
30
+ segments.push(draft.slice(cursor, chip.offset));
31
+ cursor = chip.offset + chip.length;
32
+ }
33
+ segments.push(draft.slice(cursor));
34
+ return segments;
35
+ }
36
+ /** The textarea's text: the draft with every chip's clipboard text removed. */
37
+ export function freeText(draft, chips) {
38
+ return draftSegments(draft, chips).join('');
39
+ }
40
+ /** The detect index of chip `k` (its single placeholder character). */
41
+ export function chipDetectIndex(draft, chips, k) {
42
+ const before = draftSegments(draft, chips).slice(0, k + 1).reduce((sum, segment) => sum + segment.length, 0);
43
+ return before + k;
44
+ }
45
+ /**
46
+ * Plan the machine edits turning the current free text into `next` while
47
+ * keeping every chip. The change is the span between the common prefix and
48
+ * suffix; its replacement lands in the segment where it starts (a caret on a
49
+ * chip boundary types BEFORE the chip, which keeps a quote block's
50
+ * attribution line closed), and any part of the old span in later segments
51
+ * is deleted segment by segment — a range swept across a chip never deletes
52
+ * the chip itself. Edits are ordered last-first, so applying them in order
53
+ * keeps every earlier coordinate valid.
54
+ * @param draft - the clipboard projection.
55
+ * @param chips - the machine's chips, sorted by offset.
56
+ * @param next - the textarea's new value.
57
+ * @returns the edits to apply in order (empty when nothing changed).
58
+ */
59
+ export function planFreeEdit(draft, chips, next) {
60
+ const segments = draftSegments(draft, chips);
61
+ const current = segments.join('');
62
+ if (current === next)
63
+ return [];
64
+ const limit = Math.min(current.length, next.length);
65
+ let prefix = 0;
66
+ while (prefix < limit && current[prefix] === next[prefix])
67
+ prefix += 1;
68
+ let suffix = 0;
69
+ while (suffix < limit - prefix && current[current.length - 1 - suffix] === next[next.length - 1 - suffix])
70
+ suffix += 1;
71
+ const removeEnd = current.length - suffix;
72
+ const inserted = next.slice(prefix, next.length - suffix);
73
+ const edits = [];
74
+ let insertedPlaced = false;
75
+ let segmentStart = 0;
76
+ segments.forEach((segment, k) => {
77
+ const segmentEnd = segmentStart + segment.length;
78
+ // The replacement's home: the first segment whose span holds the prefix
79
+ // point (boundary → the earlier segment, i.e. before the chip).
80
+ const home = !insertedPlaced && prefix >= segmentStart && prefix <= segmentEnd;
81
+ const from = Math.max(prefix, segmentStart);
82
+ const to = Math.min(removeEnd, segmentEnd);
83
+ if (home) {
84
+ const end = Math.max(prefix, to);
85
+ if (end > prefix || inserted !== '')
86
+ edits.push({ start: prefix + k, end: end + k, text: inserted });
87
+ insertedPlaced = true;
88
+ }
89
+ else if (from < to) {
90
+ edits.push({ start: from + k, end: to + k, text: '' });
91
+ }
92
+ segmentStart = segmentEnd;
93
+ });
94
+ return edits.reverse();
95
+ }
@@ -15,36 +15,6 @@ export interface ExecutionRow {
15
15
  error?: string;
16
16
  execution?: RoomExecution;
17
17
  }
18
- /** Public session-list projection; members are deduplicated against durable Room executions. */
19
- export interface BackgroundSession {
20
- id: string;
21
- parentId?: string;
22
- origin?: string;
23
- displayTitle?: string;
24
- running?: boolean;
25
- projectionValues?: {
26
- tokenUsage?: {
27
- uncachedInputTokens: number;
28
- outputTokens: number;
29
- cacheReadTokens: number;
30
- cacheWriteTokens: number;
31
- };
32
- subagentTiming?: {
33
- settledMs: number;
34
- active?: {
35
- since: number;
36
- through: number;
37
- };
38
- };
39
- };
40
- }
41
- export interface BackgroundSessionsStore {
42
- subscribe(listener: () => void): () => void;
43
- getSnapshot(): {
44
- byId: Readonly<Record<string, BackgroundSession>>;
45
- };
46
- }
47
- export declare function descendantRows(sessions: Readonly<Record<string, BackgroundSession>>, root: string, state: RoomState, now: number, active?: readonly string[]): ExecutionRow[];
48
18
  /** One row per delivery/attempt, not one row per persistent member session. */
49
19
  export declare function executionRows(state: RoomState): ExecutionRow[];
50
20
  //# sourceMappingURL=executions.d.ts.map
@@ -1,34 +1,3 @@
1
- export function descendantRows(sessions, root, state, now, active = []) {
2
- const known = new Set([...state.members.map(member => member.childSessionId), ...(state.executions ?? []).map(run => run.childSessionId)]);
3
- const representedRunning = new Set(executionRows(state).filter(row => row.status === 'running').map(row => row.childSessionId));
4
- const coordinatorChild = state.members.find(member => state.coordinator === undefined ? member.kind === 'main-agent' : member.id === state.coordinator.memberId)?.childSessionId;
5
- const result = [];
6
- const seen = new Set([root]);
7
- const visit = (parent) => {
8
- for (const child of Object.values(sessions)) {
9
- if (child.parentId !== parent || child.origin !== 'subagent' || seen.has(child.id))
10
- continue;
11
- seen.add(child.id);
12
- const running = child.running === true || active.includes(child.id);
13
- // Direct follow-ups in a member's own composer bypass Room dispatch.
14
- // Keep that live session visible without duplicating an active Room execution.
15
- if (child.id !== coordinatorChild && (!known.has(child.id) || (running && !representedRunning.has(child.id)))) {
16
- const timing = child.projectionValues?.subagentTiming;
17
- const usage = child.projectionValues?.tokenUsage;
18
- const elapsedMs = timing === undefined ? undefined : timing.settledMs + (timing.active === undefined ? 0 : Math.max(0, (running ? now : timing.active.through) - timing.active.since));
19
- const tokens = usage === undefined ? undefined : usage.uncachedInputTokens + usage.outputTokens + usage.cacheReadTokens + usage.cacheWriteTokens;
20
- result.push({ id: `session:${child.id}`, member: child.displayTitle || child.id, title: child.displayTitle || child.id, childSessionId: child.id,
21
- status: running ? 'running' : 'settled', sessionTotal: true,
22
- ...elapsedMs === undefined ? {} : { elapsedMs },
23
- ...tokens === undefined || !Number.isFinite(tokens) ? {} : { tokens },
24
- });
25
- }
26
- visit(child.id);
27
- }
28
- };
29
- visit(root);
30
- return result;
31
- }
32
1
  /** One row per delivery/attempt, not one row per persistent member session. */
33
2
  export function executionRows(state) {
34
3
  const coordinator = state.members.find(member => state.coordinator === undefined ? member.kind === 'main-agent' : member.id === state.coordinator.memberId);
@@ -45,8 +14,9 @@ export function executionRows(state) {
45
14
  const terminal = delivery.status === 'done' && attempt !== undefined
46
15
  ? attempt.status === 'accepted' ? 'accepted' : attempt.status === 'submitted' ? 'submitted' : 'done'
47
16
  : delivery.status;
48
- const status = execution?.state === 'failed' && delivery.status === 'running' ? 'uncertain' : terminal;
49
- const title = task?.title ?? state.tasks.find(task => task.deliveryId === delivery.id)?.title ?? delivery.text;
17
+ // A held report is waiting in its recipient's inbox: queued as far as the dock is concerned.
18
+ const status = execution?.state === 'failed' && delivery.status === 'running' ? 'uncertain' : terminal === 'held' ? 'queued' : terminal;
19
+ const title = task?.title ?? delivery.text;
50
20
  rows.push({ title: title.replace(/\s+/g, ' ').trim(),
51
21
  ...member?.provider === undefined ? {} : { provider: member.provider },
52
22
  ...execution,
@@ -61,7 +31,7 @@ export function executionRows(state) {
61
31
  const member = state.members.find(member => member.id === execution.memberId || (execution.memberId === undefined && member.name === execution.member));
62
32
  if (coordinator !== undefined && member === coordinator)
63
33
  continue;
64
- rows.push({ ...execution, execution, title: state.tasks.find(task => task.deliveryId === execution.runId)?.title ?? execution.member,
34
+ rows.push({ ...execution, execution, title: execution.member,
65
35
  status: execution.state, member: member?.name ?? execution.member,
66
36
  ...execution.childSessionId !== undefined || member?.childSessionId === undefined ? {} : { childSessionId: member.childSessionId },
67
37
  });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Package-owned icons for glyphs ui-primitives no longer ships, kept in the
3
+ * official outline conventions (16×16 viewBox, `stroke="currentColor"`) — the
4
+ * supplement pattern canvas and message-tools use. The generator
5
+ * (scripts/sync-icon-artwork.mts) never touches this file.
6
+ *
7
+ * @module @khorsheed/dsh-room/client
8
+ */
9
+ /** Props of one package-owned icon. */
10
+ export interface LocalIconProps {
11
+ /** Rendered edge length in px (icons are authored at 16). */
12
+ size?: number;
13
+ /** Optional composed class. */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Request detail: a sheet with three lines and a dot, the speech's 「这一轮的请求明细」
18
+ * control. ui-primitives dropped `IconRequestDetailOutlineMedium` in
19
+ * 0.2.1-rc.1, so the artwork the speech already shipped (0.1.7-rc.1,
20
+ * unchanged) lives here instead.
21
+ * @param props - size and className.
22
+ * @returns the icon element.
23
+ */
24
+ export declare const IconRequestDetailOutline16: ({ size, className }: LocalIconProps) => import("react").JSX.Element;
25
+ //# sourceMappingURL=icons-local.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Request detail: a sheet with three lines and a dot, the speech's 「这一轮的请求明细」
4
+ * control. ui-primitives dropped `IconRequestDetailOutlineMedium` in
5
+ * 0.2.1-rc.1, so the artwork the speech already shipped (0.1.7-rc.1,
6
+ * unchanged) lives here instead.
7
+ * @param props - size and className.
8
+ * @returns the icon element.
9
+ */
10
+ export const IconRequestDetailOutline16 = ({ size = 16, className }) => (_jsxs("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.2, xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [_jsx("rect", { x: "2.5", y: "1.5", width: "11", height: "13", rx: "2" }), _jsx("path", { d: "M5 5.2H11" }), _jsx("path", { d: "M5 8H11" }), _jsx("path", { d: "M5 10.8H8.6" }), _jsx("circle", { cx: "11.2", cy: "11.2", r: "1.7", fill: "currentColor", stroke: "none" })] }));
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Generated by scripts/sync-icon-artwork.mts from @deepseek-ai/dsh-client-ui-primitives
3
- * (v0.1.7-rc.1, harness 46a7f68b09) — do not edit by hand. The 0.1.5 and rc.1 host lines
3
+ * (v0.2.1-rc.1, harness 1600d8a1e1) — do not edit by hand. The 0.1.5 and rc.1 host lines
4
4
  * share no icon export name, so the rc.1 artwork is inlined here: pure SVG,
5
5
  * no host runtime identity, identical on every line. Re-run the generator
6
6
  * after adding an icon import or bumping the harness checkout.
@@ -18,6 +18,7 @@ export declare const IconAgentPresetOutlineMedium: ({ size, className }: IconPro
18
18
  export declare const IconCheckOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
19
19
  export declare const IconChecklistOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
20
20
  export declare const IconChevronDownOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
21
+ export declare const IconChevronLeftOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
21
22
  export declare const IconChevronRightOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
22
23
  export declare const IconChevronUpOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
23
24
  export declare const IconCopyOutlineMedium: ({ size, className }: IconProps) => import("react").JSX.Element;
@@ -3,6 +3,7 @@ export const IconAgentPresetOutlineMedium = ({ size = 16, className }) => (_jsxs
3
3
  export const IconCheckOutlineMedium = ({ size = 16, className }) => (_jsx("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: _jsx("path", { d: "M2.25 8.5L5.49732 11.7473C5.90519 12.1552 6.57263 12.1344 6.95426 11.7018L13.75 4", stroke: "currentColor" }) }));
4
4
  export const IconChecklistOutlineMedium = ({ size = 14, className }) => (_jsxs("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: [_jsx("path", { d: "M3.75 6.25C4.7165 6.25 5.5 5.4665 5.5 4.5C5.5 3.5335 4.7165 2.75 3.75 2.75C2.7835 2.75 2 3.5335 2 4.5C2 5.4665 2.7835 6.25 3.75 6.25Z", stroke: "currentColor" }), _jsx("path", { d: "M7.5 4.5H13.5", stroke: "currentColor" }), _jsx("path", { d: "M3.75 13.25C4.7165 13.25 5.5 12.4665 5.5 11.5C5.5 10.5335 4.7165 9.75 3.75 9.75C2.7835 9.75 2 10.5335 2 11.5C2 12.4665 2.7835 13.25 3.75 13.25Z", stroke: "currentColor" }), _jsx("path", { d: "M7.5 11.5H13.5", stroke: "currentColor" })] }));
5
5
  export const IconChevronDownOutlineMedium = ({ size = 14, className }) => (_jsx("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: _jsx("path", { d: "M4 6L7.29289 9.29289C7.68342 9.68342 8.31658 9.68342 8.70711 9.29289L12 6", stroke: "currentColor" }) }));
6
+ export const IconChevronLeftOutlineMedium = ({ size = 14, className }) => (_jsx("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: _jsx("path", { d: "M10 4L6.70711 7.29289C6.31658 7.68342 6.31658 8.31658 6.70711 8.70711L10 12", stroke: "currentColor" }) }));
6
7
  export const IconChevronRightOutlineMedium = ({ size = 14, className }) => (_jsx("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: _jsx("path", { d: "M6 12L9.29289 8.70711C9.68342 8.31658 9.68342 7.68342 9.29289 7.29289L6 4", stroke: "currentColor" }) }));
7
8
  export const IconChevronUpOutlineMedium = ({ size = 14, className }) => (_jsx("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: _jsx("path", { d: "M12 10L8.70711 6.70711C8.31658 6.31658 7.68342 6.31658 7.29289 6.70711L4 10", stroke: "currentColor" }) }));
8
9
  export const IconCopyOutlineMedium = ({ size = 16, className }) => (_jsxs("svg", { width: size, height: size, className: className, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", strokeWidth: 1.3, children: [_jsx("rect", { x: "1.52075", y: "4.07373", width: "10.3932", height: "10.3932", rx: "2", stroke: "currentColor" }), _jsx("path", { d: "M11.9792 1.53296C13.36 1.53296 14.4792 2.65225 14.4792 4.03296V9.42847C14.4792 10.3756 13.9521 11.1987 13.1755 11.6228V10.3298C13.3652 10.0787 13.4792 9.7674 13.4792 9.42847V4.03296C13.4792 3.20453 12.8077 2.53296 11.9792 2.53296H6.58374C6.27966 2.53301 5.99684 2.6235 5.7605 2.77905H4.42358C4.85652 2.03463 5.66056 1.53304 6.58374 1.53296H11.9792Z", fill: "currentColor" })] }));