@progress/kendo-themes-html 14.4.1-dev.1 → 14.4.1-dev.2

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 (84) hide show
  1. package/dist/cjs/agent-response/agent-step.js +1 -1
  2. package/dist/cjs/agent-response/chain-of-thought.spec.js +1 -1
  3. package/dist/cjs/agent-response/reasoning.spec.js +1 -1
  4. package/dist/cjs/agent-response/templates/chain-of-thought-expanded.js +1 -1
  5. package/dist/cjs/agent-response/templates/chain-of-thought-normal.js +1 -1
  6. package/dist/cjs/agent-response/templates/reasoning-expanded.js +1 -1
  7. package/dist/cjs/agent-response/templates/reasoning-normal.js +1 -1
  8. package/dist/cjs/agent-response/templates/tool-call-expanded.js +1 -1
  9. package/dist/cjs/agent-response/templates/tool-call-normal.js +1 -1
  10. package/dist/cjs/agent-response/tool-call.spec.js +1 -1
  11. package/dist/cjs/index.js +4 -4
  12. package/dist/cjs/scheduler/demos/scheduler.js +1 -1
  13. package/dist/cjs/scheduler/scheduler-toolbar.spec.js +1 -1
  14. package/dist/cjs/scheduler/templates/scheduler-agenda.js +1 -1
  15. package/dist/cjs/scheduler/templates/scheduler-day.js +1 -1
  16. package/dist/cjs/scheduler/templates/scheduler-flex-agenda.js +1 -1
  17. package/dist/cjs/scheduler/templates/scheduler-flex-day.js +1 -1
  18. package/dist/cjs/scheduler/templates/scheduler-flex-horizontal-grouping.js +1 -1
  19. package/dist/cjs/scheduler/templates/scheduler-flex-month.js +1 -1
  20. package/dist/cjs/scheduler/templates/scheduler-flex-timeline.js +1 -1
  21. package/dist/cjs/scheduler/templates/scheduler-flex-vertical-grouping.js +1 -1
  22. package/dist/cjs/scheduler/templates/scheduler-flex-week.js +1 -1
  23. package/dist/cjs/scheduler/templates/scheduler-flex-year.js +1 -1
  24. package/dist/cjs/scheduler/templates/scheduler-horizontal-grouping.js +1 -1
  25. package/dist/cjs/scheduler/templates/scheduler-month.js +1 -1
  26. package/dist/cjs/scheduler/templates/scheduler-timeline.js +1 -1
  27. package/dist/cjs/scheduler/templates/scheduler-vertical-grouping.js +1 -1
  28. package/dist/cjs/scheduler/templates/scheduler-week.js +1 -1
  29. package/dist/esm/agent-response/agent-step.mjs +1 -1
  30. package/dist/esm/agent-response/chain-of-thought.spec.mjs +1 -1
  31. package/dist/esm/agent-response/reasoning.spec.mjs +1 -1
  32. package/dist/esm/agent-response/templates/chain-of-thought-expanded.mjs +1 -1
  33. package/dist/esm/agent-response/templates/chain-of-thought-normal.mjs +1 -1
  34. package/dist/esm/agent-response/templates/reasoning-expanded.mjs +1 -1
  35. package/dist/esm/agent-response/templates/reasoning-normal.mjs +1 -1
  36. package/dist/esm/agent-response/templates/tool-call-expanded.mjs +1 -1
  37. package/dist/esm/agent-response/templates/tool-call-normal.mjs +1 -1
  38. package/dist/esm/agent-response/tool-call.spec.mjs +1 -1
  39. package/dist/esm/index.mjs +8 -8
  40. package/dist/esm/scheduler/demos/scheduler.mjs +1 -1
  41. package/dist/esm/scheduler/scheduler-toolbar.spec.mjs +1 -1
  42. package/dist/esm/scheduler/templates/scheduler-agenda.mjs +1 -1
  43. package/dist/esm/scheduler/templates/scheduler-day.mjs +1 -1
  44. package/dist/esm/scheduler/templates/scheduler-flex-agenda.mjs +1 -1
  45. package/dist/esm/scheduler/templates/scheduler-flex-day.mjs +1 -1
  46. package/dist/esm/scheduler/templates/scheduler-flex-horizontal-grouping.mjs +1 -1
  47. package/dist/esm/scheduler/templates/scheduler-flex-month.mjs +1 -1
  48. package/dist/esm/scheduler/templates/scheduler-flex-timeline.mjs +1 -1
  49. package/dist/esm/scheduler/templates/scheduler-flex-vertical-grouping.mjs +1 -1
  50. package/dist/esm/scheduler/templates/scheduler-flex-week.mjs +1 -1
  51. package/dist/esm/scheduler/templates/scheduler-flex-year.mjs +1 -1
  52. package/dist/esm/scheduler/templates/scheduler-horizontal-grouping.mjs +1 -1
  53. package/dist/esm/scheduler/templates/scheduler-month.mjs +1 -1
  54. package/dist/esm/scheduler/templates/scheduler-timeline.mjs +1 -1
  55. package/dist/esm/scheduler/templates/scheduler-vertical-grouping.mjs +1 -1
  56. package/dist/esm/scheduler/templates/scheduler-week.mjs +1 -1
  57. package/dist/types/agent-response/agent-step.d.ts +6 -1
  58. package/dist/types/agent-response/chain-of-thought.spec.d.ts +4 -2
  59. package/dist/types/agent-response/reasoning.spec.d.ts +4 -2
  60. package/dist/types/agent-response/tool-call.spec.d.ts +4 -2
  61. package/package.json +1 -1
  62. package/src/agent-response/agent-step.tsx +11 -5
  63. package/src/agent-response/chain-of-thought.spec.tsx +9 -4
  64. package/src/agent-response/reasoning.spec.tsx +9 -4
  65. package/src/agent-response/templates/tool-call-expanded.tsx +7 -12
  66. package/src/agent-response/tests/chain-of-thought.tsx +3 -0
  67. package/src/agent-response/tests/reasoning.tsx +3 -0
  68. package/src/agent-response/tests/tool-call.tsx +3 -0
  69. package/src/agent-response/tool-call.spec.tsx +9 -4
  70. package/src/scheduler/scheduler-toolbar.spec.tsx +1 -1
  71. package/src/scheduler/templates/scheduler-agenda.tsx +1 -1
  72. package/src/scheduler/templates/scheduler-flex-agenda.tsx +1 -1
  73. package/src/scheduler/templates/scheduler-flex-day.tsx +1 -1
  74. package/src/scheduler/templates/scheduler-flex-month.tsx +1 -1
  75. package/src/scheduler/templates/scheduler-flex-timeline.tsx +1 -1
  76. package/src/scheduler/templates/scheduler-flex-week.tsx +1 -1
  77. package/src/scheduler/templates/scheduler-flex-year.tsx +1 -1
  78. package/src/scheduler/templates/scheduler-month.tsx +1 -1
  79. package/src/scheduler/templates/scheduler-timeline.tsx +1 -1
  80. package/src/scheduler/templates/scheduler-week.tsx +1 -1
  81. package/src/scheduler/tests/scheduler-current-time-marker.tsx +2 -2
  82. package/src/scheduler/tests/scheduler-events.tsx +1 -1
  83. package/src/scheduler/tests/scheduler-react-timeline-multi.tsx +1 -1
  84. package/src/scheduler/tests/scheduler-toolbar-responsive.tsx +6 -6
@@ -1,6 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { KendoComponent } from "../_types/component";
3
3
  export declare const AGENT_STEP_CLASSNAME = "k-agent-step";
4
+ declare const states: readonly ["focus"];
5
+ export type KendoAgentStepState = {
6
+ [K in (typeof states)[number]]?: boolean;
7
+ };
4
8
  export type KendoAgentStepProps = {
5
9
  /** Icon name for the step type (e.g. "sparkles", "search", "wrench", "code", "file-txt") */
6
10
  icon?: string;
@@ -34,9 +38,10 @@ export type KendoAgentStepProps = {
34
38
  * @ux {Expand / Collapse} Clicking or activating the step's head via keyboard toggles the body content open and closed.
35
39
  * @ux {Hover feedback} Hovering the head highlights it with the app-surface background and normalizes all text/icon colors to on-app-surface.
36
40
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
41
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
37
42
  * @ux {Diff stats} Added/removed line counts always render in success/error colors, regardless of hover or completed state.
38
43
  */
39
- export declare const AgentStep: KendoComponent<KendoAgentStepProps & React.HTMLAttributes<HTMLDivElement>>;
44
+ export declare const AgentStep: KendoComponent<KendoAgentStepProps & KendoAgentStepState & React.HTMLAttributes<HTMLDivElement>>;
40
45
  /**
41
46
  * @keyboard {Enter or Space} Triggers the focused step's head, toggling the expanded state when the step is expandable.
42
47
  * @keyboard {Tab} Moves focus to the next step's head; each AgentStep head is its own stop in the tab sequence.
@@ -1,16 +1,18 @@
1
1
  import * as React from "react";
2
- import { KendoAgentStepProps } from "./agent-step";
2
+ import { KendoAgentStepProps, KendoAgentStepState } from "./agent-step";
3
3
  import { KendoComponent } from "../_types/component";
4
4
  export declare const CHAIN_OF_THOUGHT_CLASSNAME = "k-chain-of-thought";
5
5
  export type KendoChainOfThoughtProps = KendoAgentStepProps;
6
+ export type KendoChainOfThoughtState = KendoAgentStepState;
6
7
  /**
7
8
  * @aria {role="button"} The role is implicit from the native <button> element used for the step's head.
8
9
  * @aria {aria-expanded="true"|"false"} Rendered on the head only when the step is expandable, indicating whether its body is currently shown.
9
10
  * @aria {aria-label|aria-labelledby} Required on the head when it has no visible label/secondaryLabel text.
10
11
  * @ux {Expand / Collapse} Clicking or activating the head toggles the nested Thought steps open and closed.
11
12
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
13
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
12
14
  */
13
- export declare const ChainOfThought: KendoComponent<KendoChainOfThoughtProps & React.HTMLAttributes<HTMLDivElement>>;
15
+ export declare const ChainOfThought: KendoComponent<KendoChainOfThoughtProps & KendoChainOfThoughtState & React.HTMLAttributes<HTMLDivElement>>;
14
16
  /**
15
17
  * @keyboard {Enter or Space} Triggers the focused head, toggling the expanded state when expandable.
16
18
  * @keyboard {Tab} Moves focus to the next ChainOfThought head; each instance is its own stop in the tab sequence.
@@ -1,16 +1,18 @@
1
1
  import * as React from "react";
2
- import { KendoAgentStepProps } from "./agent-step";
2
+ import { KendoAgentStepProps, KendoAgentStepState } from "./agent-step";
3
3
  import { KendoComponent } from "../_types/component";
4
4
  export declare const REASONING_CLASSNAME = "k-reasoning";
5
5
  export type KendoReasoningProps = KendoAgentStepProps;
6
+ export type KendoReasoningState = KendoAgentStepState;
6
7
  /**
7
8
  * @aria {role="button"} The role is implicit from the native <button> element used for the step's head.
8
9
  * @aria {aria-expanded="true"|"false"} Rendered on the head only when the step is expandable, indicating whether its body is currently shown.
9
10
  * @aria {aria-label|aria-labelledby} Required on the head when it has no visible label/secondaryLabel text.
10
11
  * @ux {Expand / Collapse} Clicking or activating the head toggles the reasoning body open and closed.
11
12
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
13
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
12
14
  */
13
- export declare const Reasoning: KendoComponent<KendoReasoningProps & React.HTMLAttributes<HTMLDivElement>>;
15
+ export declare const Reasoning: KendoComponent<KendoReasoningProps & KendoReasoningState & React.HTMLAttributes<HTMLDivElement>>;
14
16
  /**
15
17
  * @keyboard {Enter or Space} Triggers the focused head, toggling the expanded state when expandable.
16
18
  * @keyboard {Tab} Moves focus to the next Reasoning head; each instance is its own stop in the tab sequence.
@@ -1,8 +1,9 @@
1
1
  import * as React from "react";
2
- import { KendoAgentStepProps } from "./agent-step";
2
+ import { KendoAgentStepProps, KendoAgentStepState } from "./agent-step";
3
3
  import { KendoComponent } from "../_types/component";
4
4
  export declare const TOOL_CALL_CLASSNAME = "k-tool-call";
5
5
  export type KendoToolCallProps = KendoAgentStepProps;
6
+ export type KendoToolCallState = KendoAgentStepState;
6
7
  /**
7
8
  * @aria {role="button"} The role is implicit from the native <button> element used for the step's head.
8
9
  * @aria {aria-expanded="true"|"false"} Rendered on the head only when the step is expandable, indicating whether its body is currently shown.
@@ -10,8 +11,9 @@ export type KendoToolCallProps = KendoAgentStepProps;
10
11
  * @ux {Expand / Collapse} Clicking or activating the head toggles the tool call body (parameters, results, approval actions) open and closed.
11
12
  * @ux {Status} The optional status Badge reflects the call's outcome (e.g. "Completed", "Awaiting Approval", "Error").
12
13
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
14
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
13
15
  */
14
- export declare const ToolCall: KendoComponent<KendoToolCallProps & React.HTMLAttributes<HTMLDivElement>>;
16
+ export declare const ToolCall: KendoComponent<KendoToolCallProps & KendoToolCallState & React.HTMLAttributes<HTMLDivElement>>;
15
17
  /**
16
18
  * @keyboard {Enter or Space} Triggers the focused head, toggling the expanded state when expandable.
17
19
  * @keyboard {Tab} Moves focus to the next ToolCall head; each instance is its own stop in the tab sequence.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@progress/kendo-themes-html",
3
3
  "description": "A collection of HTML helpers used for developing Kendo UI themes",
4
- "version": "14.4.1-dev.1",
4
+ "version": "14.4.1-dev.2",
5
5
  "author": "Progress",
6
6
  "license": "Apache-2.0",
7
7
  "keywords": [
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { classNames } from "../misc";
2
+ import { classNames, stateClassNames, States } from "../misc";
3
3
  import { Icon } from "../icon";
4
4
  import { Badge } from "../badge";
5
5
  import { KendoComponent, KendoBaseProps } from "../_types/component";
@@ -7,9 +7,14 @@ import { AGENT_RESPONSE_FOLDER_NAME, AGENT_RESPONSE_MODULE_NAME } from "./consta
7
7
 
8
8
  export const AGENT_STEP_CLASSNAME = "k-agent-step";
9
9
 
10
- const states = [] as const;
10
+ const states = [
11
+ States.focus
12
+ ] as const;
13
+
11
14
  const options = {};
12
15
 
16
+ export type KendoAgentStepState = { [K in (typeof states)[number]]?: boolean };
17
+
13
18
  export type KendoAgentStepProps = {
14
19
  /** Icon name for the step type (e.g. "sparkles", "search", "wrench", "code", "file-txt") */
15
20
  icon?: string;
@@ -50,10 +55,11 @@ const defaultOptions = {
50
55
  * @ux {Expand / Collapse} Clicking or activating the step's head via keyboard toggles the body content open and closed.
51
56
  * @ux {Hover feedback} Hovering the head highlights it with the app-surface background and normalizes all text/icon colors to on-app-surface.
52
57
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
58
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
53
59
  * @ux {Diff stats} Added/removed line counts always render in success/error colors, regardless of hover or completed state.
54
60
  */
55
- export const AgentStep: KendoComponent<KendoAgentStepProps & React.HTMLAttributes<HTMLDivElement>> = (props: KendoAgentStepProps & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
56
- const { icon, label, labelClassName, secondaryLabel, linesAdded, linesRemoved, status, statusThemeColor = "success", statusIcon, expandable = defaultOptions.expandable, expanded = defaultOptions.expanded, completed = defaultOptions.completed, className, children, ...other } = props;
61
+ export const AgentStep: KendoComponent<KendoAgentStepProps & KendoAgentStepState & React.HTMLAttributes<HTMLDivElement>> = (props: KendoAgentStepProps & KendoAgentStepState & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
62
+ const { icon, label, labelClassName, secondaryLabel, linesAdded, linesRemoved, status, statusThemeColor = "success", statusIcon, expandable = defaultOptions.expandable, expanded = defaultOptions.expanded, completed = defaultOptions.completed, focus, className, children, ...other } = props;
57
63
 
58
64
  return (
59
65
  <div
@@ -62,7 +68,7 @@ export const AgentStep: KendoComponent<KendoAgentStepProps & React.HTMLAttribute
62
68
  "k-agent-completed": completed,
63
69
  })}
64
70
  >
65
- <button className="k-agent-step-head" aria-expanded={expandable ? expanded : undefined}>
71
+ <button className={classNames("k-agent-step-head", stateClassNames(AGENT_STEP_CLASSNAME, { focus }))} aria-expanded={expandable ? expanded : undefined}>
66
72
  {icon && <Icon icon={icon} size="small" className="k-agent-step-icon" />}
67
73
  <span className="k-agent-step-content">
68
74
  {label && <span className={classNames("k-agent-step-label", labelClassName)}>{label}</span>}
@@ -1,15 +1,19 @@
1
1
  import * as React from "react";
2
- import { classNames } from "../misc";
3
- import { AgentStep, KendoAgentStepProps } from "./agent-step";
2
+ import { classNames, States } from "../misc";
3
+ import { AgentStep, KendoAgentStepProps, KendoAgentStepState } from "./agent-step";
4
4
  import { KendoComponent, KendoBaseProps } from "../_types/component";
5
5
  import { AGENT_RESPONSE_FOLDER_NAME, AGENT_RESPONSE_MODULE_NAME } from "./constants";
6
6
 
7
7
  export const CHAIN_OF_THOUGHT_CLASSNAME = "k-chain-of-thought";
8
8
 
9
- const states = [] as const;
9
+ const states = [
10
+ States.focus
11
+ ] as const;
12
+
10
13
  const options = {};
11
14
 
12
15
  export type KendoChainOfThoughtProps = KendoAgentStepProps;
16
+ export type KendoChainOfThoughtState = KendoAgentStepState;
13
17
 
14
18
  const defaultOptions = {
15
19
  icon: "sparkles",
@@ -21,8 +25,9 @@ const defaultOptions = {
21
25
  * @aria {aria-label|aria-labelledby} Required on the head when it has no visible label/secondaryLabel text.
22
26
  * @ux {Expand / Collapse} Clicking or activating the head toggles the nested Thought steps open and closed.
23
27
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
28
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
24
29
  */
25
- export const ChainOfThought: KendoComponent<KendoChainOfThoughtProps & React.HTMLAttributes<HTMLDivElement>> = (props: KendoChainOfThoughtProps & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
30
+ export const ChainOfThought: KendoComponent<KendoChainOfThoughtProps & KendoChainOfThoughtState & React.HTMLAttributes<HTMLDivElement>> = (props: KendoChainOfThoughtProps & KendoChainOfThoughtState & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
26
31
  const { icon = defaultOptions.icon, className, ...other } = props;
27
32
 
28
33
  return <AgentStep {...other} icon={icon} className={classNames(className, CHAIN_OF_THOUGHT_CLASSNAME)} />;
@@ -1,15 +1,19 @@
1
1
  import * as React from "react";
2
- import { classNames } from "../misc";
3
- import { AgentStep, KendoAgentStepProps } from "./agent-step";
2
+ import { classNames, States } from "../misc";
3
+ import { AgentStep, KendoAgentStepProps, KendoAgentStepState } from "./agent-step";
4
4
  import { KendoComponent, KendoBaseProps } from "../_types/component";
5
5
  import { AGENT_RESPONSE_FOLDER_NAME, AGENT_RESPONSE_MODULE_NAME } from "./constants";
6
6
 
7
7
  export const REASONING_CLASSNAME = "k-reasoning";
8
8
 
9
- const states = [] as const;
9
+ const states = [
10
+ States.focus
11
+ ] as const;
12
+
10
13
  const options = {};
11
14
 
12
15
  export type KendoReasoningProps = KendoAgentStepProps;
16
+ export type KendoReasoningState = KendoAgentStepState;
13
17
 
14
18
  const defaultOptions = {
15
19
  icon: "sparkles",
@@ -22,8 +26,9 @@ const defaultOptions = {
22
26
  * @aria {aria-label|aria-labelledby} Required on the head when it has no visible label/secondaryLabel text.
23
27
  * @ux {Expand / Collapse} Clicking or activating the head toggles the reasoning body open and closed.
24
28
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
29
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
25
30
  */
26
- export const Reasoning: KendoComponent<KendoReasoningProps & React.HTMLAttributes<HTMLDivElement>> = (props: KendoReasoningProps & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
31
+ export const Reasoning: KendoComponent<KendoReasoningProps & KendoReasoningState & React.HTMLAttributes<HTMLDivElement>> = (props: KendoReasoningProps & KendoReasoningState & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
27
32
  const { icon = defaultOptions.icon, label = defaultOptions.label, className, ...other } = props;
28
33
 
29
34
  return <AgentStep {...other} icon={icon} label={label} className={classNames(className, REASONING_CLASSNAME)} />;
@@ -1,15 +1,10 @@
1
- import ToolCall from '../tool-call.spec';
2
- import { Card, CardBody } from '../../card';
1
+ import ToolCall from "../tool-call.spec";
3
2
 
4
3
  export const ToolCallExpanded = (props: any) => (
5
- <ToolCall label="tool_name" secondaryLabel="src/utils/formatDate.ts · 120ms" status="Completed" statusThemeColor="success" statusIcon="check-circle" completed expandable expanded {...props}>
6
- <div>Parameters</div>
7
- <Card>
8
- <CardBody>
9
- <pre style={{ fontSize: '14px', marginTop: '0px' }}>
10
- <code>{`cd packages/html && npx tsc --noEmit -p .`}</code>
11
- </pre>
12
- </CardBody>
13
- </Card>
14
- </ToolCall>
4
+ <ToolCall label="tool_name" secondaryLabel="src/utils/formatDate.ts · 120ms" status="Completed" statusThemeColor="success" statusIcon="check-circle" completed expandable expanded {...props}>
5
+ <div>Parameters</div>
6
+ <pre className="k-pre">
7
+ <code className="k-code">{`cd packages/html && npx tsc --noEmit -p .`}</code>
8
+ </pre>
9
+ </ToolCall>
15
10
  );
@@ -41,6 +41,9 @@ export default () => (
41
41
  </div>
42
42
  </Thought>
43
43
  </ChainOfThought>
44
+
45
+ {/* focused */}
46
+ <ChainOfThought label="Thought" secondaryLabel="for 4m 18s" completed expandable focus />
44
47
  </section>
45
48
  </div>
46
49
  );
@@ -16,6 +16,9 @@ export default () => (
16
16
  <span>I'll design a resource component system for an AI chat — covering different resource types, states, and variants. Let me read the relevant skills first.</span>
17
17
  <span>I'll gather local design system context, then create a comprehensive resource component system.</span>
18
18
  </Reasoning>
19
+
20
+ {/* focused */}
21
+ <Reasoning secondaryLabel="for 48s" completed label="Completed" expandable focus />
19
22
  </section>
20
23
  </div>
21
24
  );
@@ -48,6 +48,9 @@ export default () => (
48
48
  </pre>
49
49
  <MessageBox themeColor="error">cd: no such file or directory: packges/hmtl</MessageBox>
50
50
  </ToolCall>
51
+
52
+ {/* focused */}
53
+ <ToolCall label="tool_name" secondaryLabel="src/utils/formatDate.ts · 120ms" status="Completed" statusThemeColor="success" statusIcon="check-circle" completed expandable focus />
51
54
  </section>
52
55
  </div>
53
56
  );
@@ -1,15 +1,19 @@
1
1
  import * as React from "react";
2
- import { classNames } from "../misc";
3
- import { AgentStep, KendoAgentStepProps } from "./agent-step";
2
+ import { classNames, States } from "../misc";
3
+ import { AgentStep, KendoAgentStepProps, KendoAgentStepState } from "./agent-step";
4
4
  import { KendoComponent, KendoBaseProps } from "../_types/component";
5
5
  import { AGENT_RESPONSE_FOLDER_NAME, AGENT_RESPONSE_MODULE_NAME } from "./constants";
6
6
 
7
7
  export const TOOL_CALL_CLASSNAME = "k-tool-call";
8
8
 
9
- const states = [] as const;
9
+ const states = [
10
+ States.focus
11
+ ] as const;
12
+
10
13
  const options = {};
11
14
 
12
15
  export type KendoToolCallProps = KendoAgentStepProps;
16
+ export type KendoToolCallState = KendoAgentStepState;
13
17
 
14
18
  const defaultOptions = {
15
19
  icon: "wrench",
@@ -22,8 +26,9 @@ const defaultOptions = {
22
26
  * @ux {Expand / Collapse} Clicking or activating the head toggles the tool call body (parameters, results, approval actions) open and closed.
23
27
  * @ux {Status} The optional status Badge reflects the call's outcome (e.g. "Completed", "Awaiting Approval", "Error").
24
28
  * @ux {Completed state} When completed, the label stops shimmering and the icon/label/expand icon dim to a subtle color.
29
+ * @ux {Focus feedback} Keyboard focus on the head renders a focus indicator — an inset ring in most themes and an inset outline in Meridian.
25
30
  */
26
- export const ToolCall: KendoComponent<KendoToolCallProps & React.HTMLAttributes<HTMLDivElement>> = (props: KendoToolCallProps & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
31
+ export const ToolCall: KendoComponent<KendoToolCallProps & KendoToolCallState & React.HTMLAttributes<HTMLDivElement>> = (props: KendoToolCallProps & KendoToolCallState & KendoBaseProps & React.HTMLAttributes<HTMLDivElement>) => {
27
32
  const { icon = defaultOptions.icon, className, ...other } = props;
28
33
 
29
34
  return <AgentStep {...other} icon={icon} className={classNames(className, TOOL_CALL_CLASSNAME)} />;
@@ -36,12 +36,12 @@ export const SchedulerToolbar: KendoComponent<KendoSchedulerToolbarProps & React
36
36
  {props.children ||
37
37
  [
38
38
  <Button key="new-event" themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>,
39
+ <Button key="today" fillMode="flat">Today</Button>,
39
40
  <Button key="prev" icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>,
40
41
  <Button key="next" icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>,
41
42
  <Button key="current" icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
42
43
  13 June
43
44
  </Button>,
44
- <Button key="today" fillMode="flat">Today</Button>,
45
45
  <span key="spacer" className="k-spacer"></span>,
46
46
  <SegmentedControl thumbStyles={{width: "15%"}} key="views" className="k-scheduler-views">
47
47
  <SegmentedControlButton selected>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerAgenda = ({ style, ...props }: any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerAgenda = ({ style, ...props }: any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  24 June – 25 June
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{width: "22%", right: "0%"}} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -11,6 +11,7 @@ export const SchedulerFlexAgenda = ({ style, ...props }: any) => (
11
11
  toolbar={
12
12
  <SchedulerToolbar>
13
13
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
14
+ <Button fillMode="flat">Today</Button>
14
15
  <ButtonGroup fillMode="flat">
15
16
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
16
17
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -18,7 +19,6 @@ export const SchedulerFlexAgenda = ({ style, ...props }: any) => (
18
19
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
19
20
  24 June – 25 June
20
21
  </Button>
21
- <Button fillMode="flat">Today</Button>
22
22
  <span className="k-spacer"></span>
23
23
  <SegmentedControl thumbStyles={{width: "22%", right: "0%"}} className="k-scheduler-views">
24
24
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -11,6 +11,7 @@ export const SchedulerFlexDay = ({ style, ...props }: any) => (
11
11
  toolbar={
12
12
  <SchedulerToolbar>
13
13
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
14
+ <Button fillMode="flat">Today</Button>
14
15
  <ButtonGroup fillMode="flat">
15
16
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
16
17
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -18,7 +19,6 @@ export const SchedulerFlexDay = ({ style, ...props }: any) => (
18
19
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
19
20
  24 June
20
21
  </Button>
21
- <Button fillMode="flat">Today</Button>
22
22
  <span className="k-spacer"></span>
23
23
  <SegmentedControl thumbStyles={{width: "15%"}} className="k-scheduler-views">
24
24
  <SegmentedControlButton selected>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerFlexMonth = ({ style, ...props } :any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerFlexMonth = ({ style, ...props } :any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  February 2026
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{width: "19%", left: "34%"}} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerFlexTimeline = ({ style, ...props }: any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerFlexTimeline = ({ style, ...props }: any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  21 June
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{width: "23%", left: "54%"}} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerFlexWeek = ({ style, ...props }: any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerFlexWeek = ({ style, ...props }: any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  31 May – 6 June
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{ width: "19%", left: "15%" }} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -13,6 +13,7 @@ export const SchedulerFlexYear = ({ style, ...props }: any) => (
13
13
  toolbar={
14
14
  <SchedulerToolbar>
15
15
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
16
+ <Button fillMode="flat">Today</Button>
16
17
  <ButtonGroup fillMode="flat">
17
18
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
18
19
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -20,7 +21,6 @@ export const SchedulerFlexYear = ({ style, ...props }: any) => (
20
21
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
21
22
  2021
22
23
  </Button>
23
- <Button fillMode="flat">Today</Button>
24
24
  <span className="k-spacer"></span>
25
25
  <SegmentedControl thumbStyles={{width: "14%", right: "1px"}} className="k-scheduler-views">
26
26
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerMonth = ({ style, ...props }: any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerMonth = ({ style, ...props }: any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  June 2024
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{width: "19%", left: "34%"}} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerTimeline = ({ style, ...props }: any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerTimeline = ({ style, ...props }: any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  13 June
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{width: "23%", left: "54%"}} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -12,6 +12,7 @@ export const SchedulerWeek = ({ style, ...props }: any) => (
12
12
  toolbar={
13
13
  <SchedulerToolbar>
14
14
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
15
+ <Button fillMode="flat">Today</Button>
15
16
  <ButtonGroup fillMode="flat">
16
17
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
17
18
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -19,7 +20,6 @@ export const SchedulerWeek = ({ style, ...props }: any) => (
19
20
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
20
21
  31 May – 6 June
21
22
  </Button>
22
- <Button fillMode="flat">Today</Button>
23
23
  <span className="k-spacer"></span>
24
24
  <SegmentedControl thumbStyles={{ width: "19%", left: "15%" }} className="k-scheduler-views">
25
25
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -19,6 +19,7 @@ export default () => (
19
19
  toolbar={
20
20
  <SchedulerToolbar>
21
21
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
22
+ <Button fillMode="flat">Today</Button>
22
23
  <ButtonGroup fillMode="flat">
23
24
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
24
25
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -26,7 +27,6 @@ export default () => (
26
27
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
27
28
  10 June – 14 June
28
29
  </Button>
29
- <Button fillMode="flat">Today</Button>
30
30
  <span className="k-spacer"></span>
31
31
  <SegmentedControl thumbStyles={{ width: "18%", left: "16%" }} className="k-scheduler-views">
32
32
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -462,6 +462,7 @@ export default () => (
462
462
  <>
463
463
  <SchedulerToolbar>
464
464
  <Button themeColor="primary" icon="plus" aria-label="Add new event">New Event</Button>
465
+ <Button fillMode="flat">Today</Button>
465
466
  <ButtonGroup fillMode="flat">
466
467
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
467
468
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -469,7 +470,6 @@ export default () => (
469
470
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
470
471
  18 February
471
472
  </Button>
472
- <Button fillMode="flat">Today</Button>
473
473
  <span className="k-spacer"></span>
474
474
  <SegmentedControl thumbStyles={{ width: "23%", left: "54%" }} className="k-scheduler-views">
475
475
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -19,6 +19,7 @@ export default () => (
19
19
  <Button themeColor="primary" icon="plus" aria-label="Add new event">
20
20
  New Event
21
21
  </Button>
22
+ <Button fillMode="flat">Today</Button>
22
23
  <ButtonGroup fillMode="flat">
23
24
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
24
25
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -26,7 +27,6 @@ export default () => (
26
27
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
27
28
  10 June – 14 June
28
29
  </Button>
29
- <Button fillMode="flat">Today</Button>
30
30
  <span className="k-spacer"></span>
31
31
  <SegmentedControl thumbStyles={{ width: "18%", left: "16%" }} className="k-scheduler-views">
32
32
  <SegmentedControlButton>Day</SegmentedControlButton>
@@ -21,6 +21,7 @@ export default () => (
21
21
  <Button themeColor="primary" icon="plus" aria-label="Add new event">
22
22
  New Event
23
23
  </Button>
24
+ <Button fillMode="flat">Today</Button>
24
25
  <ButtonGroup fillMode="flat">
25
26
  <Button icon="chevron-left" fillMode="flat" aria-label="Navigate to previous period"></Button>
26
27
  <Button icon="chevron-right" fillMode="flat" aria-label="Navigate to next period"></Button>
@@ -28,7 +29,6 @@ export default () => (
28
29
  <Button icon="calendar" className="k-nav-current" fillMode="flat" aria-live="polite">
29
30
  24 June – 25 June
30
31
  </Button>
31
- <Button fillMode="flat">Today</Button>
32
32
  <span className="k-spacer"></span>
33
33
  <SegmentedControl thumbStyles={{ width: "23%", left: "54%" }} className="k-scheduler-views">
34
34
  <SegmentedControlButton>Day</SegmentedControlButton>