@k8ordo/ui 2.1.0 → 2.2.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 (143) hide show
  1. package/README.md +4 -4
  2. package/dist/components/_internal/form-value.d.mts +2 -1
  3. package/dist/components/ai/_internal/attachment-preview.d.mts +2 -1
  4. package/dist/components/ai/_internal/collapsible.d.mts +2 -1
  5. package/dist/components/ai/_internal/icons.d.mts +2 -1
  6. package/dist/components/ai/attachment/attachment.d.mts +2 -1
  7. package/dist/components/ai/conversation/conversation.d.mts +2 -1
  8. package/dist/components/ai/message/message.d.mts +2 -1
  9. package/dist/components/ai/prompt-input/prompt-input.d.mts +2 -1
  10. package/dist/components/ai/reasoning/index.mjs +1 -2
  11. package/dist/components/ai/reasoning/reasoning.d.mts +2 -1
  12. package/dist/components/ai/response/index.mjs +1 -2
  13. package/dist/components/ai/response/response.d.mts +2 -1
  14. package/dist/components/ai/source/source.d.mts +2 -1
  15. package/dist/components/ai/suggestion/suggestion.d.mts +2 -1
  16. package/dist/components/ai/tool-invocation/approval-bar.d.mts +2 -1
  17. package/dist/components/ai/tool-invocation/index.mjs +1 -2
  18. package/dist/components/ai/tool-invocation/tool-invocation.d.mts +2 -1
  19. package/dist/components/buttons/button/button.d.mts +2 -1
  20. package/dist/components/buttons/button/index.mjs +1 -2
  21. package/dist/components/buttons/copy-button/index.mjs +1 -2
  22. package/dist/components/buttons/icon-button/icon-button.d.mts +2 -1
  23. package/dist/components/buttons/icon-button/index.mjs +1 -2
  24. package/dist/components/buttons/toolbar/toolbar.d.mts +2 -1
  25. package/dist/components/data-display/avatar/avatar.d.mts +2 -1
  26. package/dist/components/data-display/avatar/index.mjs +1 -2
  27. package/dist/components/data-display/badge/badge.d.mts +2 -1
  28. package/dist/components/data-display/badge/index.mjs +1 -2
  29. package/dist/components/data-display/card/card.d.mts +2 -1
  30. package/dist/components/data-display/card/index.mjs +1 -2
  31. package/dist/components/data-display/carousel/carousel.d.mts +2 -1
  32. package/dist/components/data-display/code/code.d.mts +2 -1
  33. package/dist/components/data-display/code/find-all-colors.d.mts +2 -1
  34. package/dist/components/data-display/code/index.mjs +1 -2
  35. package/dist/components/data-display/code-block/code-block.d.mts +2 -1
  36. package/dist/components/data-display/code-block/highlight.d.mts +2 -1
  37. package/dist/components/data-display/code-block/index.mjs +1 -2
  38. package/dist/components/data-display/data-table/data-table.d.mts +2 -1
  39. package/dist/components/data-display/data-table/index.mjs +1 -2
  40. package/dist/components/data-display/heading/heading.d.mts +2 -1
  41. package/dist/components/data-display/heading/index.mjs +1 -2
  42. package/dist/components/data-display/kbd/index.mjs +1 -2
  43. package/dist/components/data-display/kbd/kbd.d.mts +2 -1
  44. package/dist/components/data-display/prose/index.mjs +1 -2
  45. package/dist/components/data-display/prose/prose.d.mts +2 -1
  46. package/dist/components/data-display/table/index.mjs +1 -2
  47. package/dist/components/data-display/table/table.d.mts +2 -1
  48. package/dist/components/data-display/tree/index.mjs +1 -2
  49. package/dist/components/data-display/tree/tree.css +1 -15
  50. package/dist/components/data-display/tree/tree.d.mts +2 -1
  51. package/dist/components/data-display/tree/tree.mjs +49 -56
  52. package/dist/components/data-display/tree/tree.module.mjs +0 -1
  53. package/dist/components/feedback/alert/alert.d.mts +2 -1
  54. package/dist/components/feedback/alert/index.mjs +1 -2
  55. package/dist/components/feedback/callout/callout.d.mts +2 -1
  56. package/dist/components/feedback/callout/index.mjs +1 -2
  57. package/dist/components/feedback/empty-state/empty-state.d.mts +2 -1
  58. package/dist/components/feedback/empty-state/index.mjs +1 -2
  59. package/dist/components/feedback/progress/index.mjs +1 -2
  60. package/dist/components/feedback/progress/progress.d.mts +2 -1
  61. package/dist/components/feedback/skeleton/index.mjs +1 -2
  62. package/dist/components/feedback/skeleton/skeleton.d.mts +2 -1
  63. package/dist/components/feedback/spinner/index.mjs +1 -2
  64. package/dist/components/feedback/spinner/spinner.d.mts +2 -1
  65. package/dist/components/feedback/toast/toast.d.mts +2 -1
  66. package/dist/components/form/autocomplete/autocomplete.d.mts +2 -1
  67. package/dist/components/form/autocomplete/index.mjs +1 -2
  68. package/dist/components/form/calendar/calendar.d.mts +2 -1
  69. package/dist/components/form/calendar/index.mjs +1 -2
  70. package/dist/components/form/checkbox/checkbox.d.mts +2 -1
  71. package/dist/components/form/checkbox/index.mjs +1 -2
  72. package/dist/components/form/checkbox-card/checkbox-card.d.mts +2 -1
  73. package/dist/components/form/checkbox-card/index.mjs +1 -2
  74. package/dist/components/form/color-picker/color-picker.d.mts +2 -1
  75. package/dist/components/form/color-picker/index.mjs +1 -2
  76. package/dist/components/form/combobox/combobox.d.mts +2 -1
  77. package/dist/components/form/combobox/index.mjs +1 -2
  78. package/dist/components/form/date-field/date-field.d.mts +2 -1
  79. package/dist/components/form/date-field/index.mjs +1 -2
  80. package/dist/components/form/date-picker/date-picker.d.mts +2 -1
  81. package/dist/components/form/date-picker/index.mjs +1 -2
  82. package/dist/components/form/file-field/file-field.d.mts +2 -1
  83. package/dist/components/form/form/form.d.mts +2 -1
  84. package/dist/components/form/form/index.mjs +1 -2
  85. package/dist/components/form/form-control/form-control.d.mts +2 -1
  86. package/dist/components/form/form-control/index.mjs +1 -2
  87. package/dist/components/form/number-field/index.mjs +1 -2
  88. package/dist/components/form/number-field/number-field.d.mts +2 -1
  89. package/dist/components/form/password-input/index.mjs +1 -2
  90. package/dist/components/form/password-input/password-input.d.mts +2 -1
  91. package/dist/components/form/radio/index.mjs +1 -2
  92. package/dist/components/form/radio/radio.d.mts +2 -1
  93. package/dist/components/form/radio-card/index.mjs +1 -2
  94. package/dist/components/form/radio-card/radio-card.d.mts +2 -1
  95. package/dist/components/form/range-slider/index.mjs +1 -2
  96. package/dist/components/form/range-slider/range-slider.d.mts +2 -1
  97. package/dist/components/form/select/index.mjs +1 -2
  98. package/dist/components/form/select/select.d.mts +2 -1
  99. package/dist/components/form/slider/index.mjs +1 -2
  100. package/dist/components/form/slider/slider.d.mts +2 -1
  101. package/dist/components/form/switch/index.mjs +1 -2
  102. package/dist/components/form/switch/switch.d.mts +2 -1
  103. package/dist/components/form/text-field/index.mjs +1 -2
  104. package/dist/components/form/text-field/text-field.d.mts +2 -1
  105. package/dist/components/form/textarea/index.mjs +1 -2
  106. package/dist/components/form/textarea/textarea.d.mts +2 -1
  107. package/dist/components/icons/lucide.d.mts +2 -1
  108. package/dist/components/layout/grid/index.mjs +1 -2
  109. package/dist/components/layout/resizable-panels/resizable-panels.d.mts +2 -1
  110. package/dist/components/layout/separator/index.mjs +1 -2
  111. package/dist/components/layout/separator/separator.d.mts +2 -1
  112. package/dist/components/layout/stack/index.mjs +1 -2
  113. package/dist/components/navigation/anchor/anchor.d.mts +2 -1
  114. package/dist/components/navigation/anchor/index.mjs +1 -2
  115. package/dist/components/navigation/breadcrumb/breadcrumb.d.mts +2 -1
  116. package/dist/components/navigation/pagination/index.mjs +1 -2
  117. package/dist/components/navigation/pagination/pagination.d.mts +2 -1
  118. package/dist/components/navigation/side-nav/side-nav.d.mts +2 -1
  119. package/dist/components/navigation/stepper/index.mjs +1 -2
  120. package/dist/components/navigation/stepper/stepper.d.mts +2 -1
  121. package/dist/components/navigation/table-of-contents/index.mjs +1 -2
  122. package/dist/components/observers/in-view/index.mjs +1 -2
  123. package/dist/components/observers/resize/index.mjs +1 -2
  124. package/dist/components/overlays/command-palette/command-palette.d.mts +2 -1
  125. package/dist/components/overlays/command-palette/index.mjs +1 -2
  126. package/dist/components/overlays/drawer/index.mjs +1 -2
  127. package/dist/components/overlays/dropdown-menu/hooks.d.mts +2 -1
  128. package/dist/components/overlays/modal/index.mjs +1 -2
  129. package/dist/components/overlays/popover/anchor-positioning.d.mts +2 -1
  130. package/dist/components/overlays/popover/hooks.d.mts +2 -1
  131. package/dist/helpers/chain.d.mts +2 -1
  132. package/dist/helpers/create-safe-context.d.mts +2 -1
  133. package/dist/helpers/merge-props.d.mts +2 -1
  134. package/dist/hooks/controllable-state/index.d.mts +2 -1
  135. package/dist/integrations/_shared/schemas.d.mts +2 -4
  136. package/dist/integrations/ai-sdk/index.mjs +1 -2
  137. package/dist/integrations/json-render/catalog.d.mts +2 -1
  138. package/dist/integrations/openui/form-views.d.mts +1 -1
  139. package/dist/integrations/openui/library.d.mts +4 -3
  140. package/docs/references/components.md +3 -0
  141. package/docs/references/generative-ui.md +5 -4
  142. package/package.json +33 -33
  143. package/dist/_virtual/_rolldown/runtime.mjs +0 -13
package/README.md CHANGED
@@ -37,15 +37,15 @@ it. Install one when you import the entry it belongs to.
37
37
  | ----------------------- | --------------- | -------- | ------------------------------------------------- |
38
38
  | `react` | ≥19.3.0 | yes | the components and hooks |
39
39
  | `react-dom` | ≥19.3.0 | yes | portals and `useFormStatus` |
40
- | `@k8ordo/i18n` | ^1.0.0 | yes | the locale the components' own wording is read in |
40
+ | `@k8ordo/i18n` | ^1.1.0 | yes | the locale the components' own wording is read in |
41
41
  | `typescript` | ≥7.0.0 | optional | the shipped type declarations |
42
42
  | `@types/react` | ≥19.3.0 | optional | the shipped type declarations |
43
43
  | `@types/react-dom` | ≥19.3.0 | optional | the shipped type declarations |
44
- | `zod` | ^4.4.3 | optional | generative-UI schemas |
44
+ | `zod` | ^4.6.6 | optional | generative-UI schemas |
45
45
  | `@json-render/core` | ≥0.21.0 <0.22.0 | optional | `@k8ordo/ui/json-render` |
46
46
  | `@json-render/react` | ≥0.21.0 <0.22.0 | optional | `@k8ordo/ui/json-render` |
47
- | `@openuidev/lang-core` | ≥0.3.0 <0.4.0 | optional | `@k8ordo/ui/openui`, `@k8ordo/ui/openui/prompt` |
48
- | `@openuidev/react-lang` | ≥0.3.0 <0.4.0 | optional | `@k8ordo/ui/openui` |
47
+ | `@openuidev/lang-core` | ^1.0.0 | optional | `@k8ordo/ui/openui`, `@k8ordo/ui/openui/prompt` |
48
+ | `@openuidev/react-lang` | ^1.0.0 | optional | `@k8ordo/ui/openui` |
49
49
  | `ai` | ≥7.0.51 | optional | `@k8ordo/ui/ai-sdk` |
50
50
  | `streamdown` | ≥2.5.0 | optional | `@k8ordo/ui/ai/response` |
51
51
 
@@ -30,4 +30,5 @@ type Props = {
30
30
  * each option's `defaultSelected`, where dirtiness is read from.
31
31
  */
32
32
  export declare const FormValue: FC<Props>;
33
- //#endregion
33
+ //#endregion
34
+ export {};
@@ -11,4 +11,5 @@ type Props = {
11
11
  onRemove?: () => void;
12
12
  };
13
13
  export declare const AttachmentPreview: FC<Props>;
14
- //#endregion
14
+ //#endregion
15
+ export {};
@@ -11,4 +11,5 @@ type Props = {
11
11
  children: ReactNode;
12
12
  };
13
13
  export declare const Collapsible: FC<Props>;
14
- //#endregion
14
+ //#endregion
15
+ export {};
@@ -4,4 +4,5 @@ import { FC } from "react";
4
4
  type IconProps = Partial<BaseIconProps>;
5
5
  export declare const AttachIcon: FC<IconProps>;
6
6
  export declare const FileIcon: FC<IconProps>;
7
- //#endregion
7
+ //#endregion
8
+ export {};
@@ -11,4 +11,5 @@ type ItemProps = {
11
11
  filename?: string;
12
12
  };
13
13
  export declare const Item: FC<ItemProps>;
14
- //#endregion
14
+ //#endregion
15
+ export {};
@@ -12,4 +12,5 @@ export declare const Messages: FC<MessagesProps>;
12
12
  export declare const ScrollButton: FC<{
13
13
  label?: string;
14
14
  }>;
15
- //#endregion
15
+ //#endregion
16
+ export {};
@@ -42,4 +42,5 @@ type FeedbackProps = {
42
42
  onChange?: (value: MessageFeedback | null) => void;
43
43
  };
44
44
  export declare const Feedback: FC<FeedbackProps>;
45
- //#endregion
45
+ //#endregion
46
+ export {};
@@ -31,4 +31,5 @@ type SubmitProps = {
31
31
  stopLabel?: string;
32
32
  };
33
33
  export declare const Submit: FC<SubmitProps>;
34
- //#endregion
34
+ //#endregion
35
+ export {};
@@ -1,2 +1 @@
1
- import { Reasoning } from "./reasoning.mjs";
2
- export { Reasoning };
1
+ export { Reasoning } from "./reasoning.mjs";
@@ -8,4 +8,5 @@ type Props = {
8
8
  onChange?: (isOpen: boolean) => void;
9
9
  };
10
10
  export declare const Reasoning: FC<Props>;
11
- //#endregion
11
+ //#endregion
12
+ export {};
@@ -1,2 +1 @@
1
- import { Response } from "./response.mjs";
2
- export { Response };
1
+ export { Response } from "./response.mjs";
@@ -15,4 +15,5 @@ type Props = {
15
15
  * `children` / `isStreaming` 以外の props は streamdown にそのまま渡る。
16
16
  */
17
17
  export declare const Response: FC<Props>;
18
- //#endregion
18
+ //#endregion
19
+ export {};
@@ -10,4 +10,5 @@ type ItemProps = {
10
10
  title?: string;
11
11
  };
12
12
  export declare const Item: FC<ItemProps>;
13
- //#endregion
13
+ //#endregion
14
+ export {};
@@ -11,4 +11,5 @@ type ItemProps = {
11
11
  children?: ReactNode;
12
12
  };
13
13
  export declare const Item: FC<ItemProps>;
14
- //#endregion
14
+ //#endregion
15
+ export {};
@@ -8,4 +8,5 @@ type Props = {
8
8
  onApprovalResponse?: (response: ToolApprovalResponse) => void | PromiseLike<void>;
9
9
  };
10
10
  export declare const ApprovalBar: FC<Props>;
11
- //#endregion
11
+ //#endregion
12
+ export {};
@@ -1,2 +1 @@
1
- import { ToolInvocation } from "./tool-invocation.mjs";
2
- export { ToolInvocation };
1
+ export { ToolInvocation } from "./tool-invocation.mjs";
@@ -14,4 +14,5 @@ type Props = {
14
14
  onChange?: (isOpen: boolean) => void;
15
15
  };
16
16
  export declare const ToolInvocation: FC<Props>;
17
- //#endregion
17
+ //#endregion
18
+ export {};
@@ -47,4 +47,5 @@ type Props = {
47
47
  renderItem?: (props: ButtonRenderItemProps) => ReactNode;
48
48
  } & Omit<ComponentPropsWithRef<'button'>, 'type' | 'className' | 'style'>;
49
49
  export declare const Button: FC<Props>;
50
- //#endregion
50
+ //#endregion
51
+ export {};
@@ -1,2 +1 @@
1
- import { Button } from "./button.mjs";
2
- export { Button };
1
+ export { Button } from "./button.mjs";
@@ -1,2 +1 @@
1
- import { CopyButton } from "./copy-button.mjs";
2
- export { CopyButton };
1
+ export { CopyButton } from "./copy-button.mjs";
@@ -53,4 +53,5 @@ type Props = {
53
53
  renderItem?: (props: IconButtonRenderItemProps) => ReactNode;
54
54
  } & Omit<ComponentPropsWithRef<'button'>, 'type' | 'className' | 'style'>;
55
55
  export declare const IconButton: FC<Props>;
56
- //#endregion
56
+ //#endregion
57
+ export {};
@@ -1,2 +1 @@
1
- import { IconButton } from "./icon-button.mjs";
2
- export { IconButton };
1
+ export { IconButton } from "./icon-button.mjs";
@@ -15,4 +15,5 @@ export declare const Item: FC<{
15
15
  renderItem: (props: ToolbarItemProps) => ReactElement;
16
16
  }>;
17
17
  export declare const Separator: FC;
18
- //#endregion
18
+ //#endregion
19
+ export {};
@@ -10,4 +10,5 @@ type Props = {
10
10
  src?: string;
11
11
  } & Omit<HTMLAttributes<HTMLSpanElement>, 'role' | 'aria-label' | 'className' | 'style'>;
12
12
  export declare const Avatar: FC<Props>;
13
- //#endregion
13
+ //#endregion
14
+ export {};
@@ -1,2 +1 @@
1
- import { Avatar } from "./avatar.mjs";
2
- export { Avatar };
1
+ export { Avatar } from "./avatar.mjs";
@@ -17,4 +17,5 @@ type StaticProps = {
17
17
  } & Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'className' | 'style'>;
18
18
  type Props = BaseProps & (InteractiveProps | StaticProps);
19
19
  export declare const Badge: FC<Props>;
20
- //#endregion
20
+ //#endregion
21
+ export {};
@@ -1,2 +1 @@
1
- import { Badge } from "./badge.mjs";
2
- export { Badge };
1
+ export { Badge } from "./badge.mjs";
@@ -6,4 +6,5 @@ type CardProps = {
6
6
  interactive?: boolean;
7
7
  } & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'>;
8
8
  export declare const Card: FC<CardProps>;
9
- //#endregion
9
+ //#endregion
10
+ export {};
@@ -1,2 +1 @@
1
- import { Card } from "./card.mjs";
2
- export { Card };
1
+ export { Card } from "./card.mjs";
@@ -8,4 +8,5 @@ export declare const Root: FC<PropsWithChildren<{
8
8
  export declare const Slide: FC<PropsWithChildren<{
9
9
  label?: string;
10
10
  }>>;
11
- //#endregion
11
+ //#endregion
12
+ export {};
@@ -4,4 +4,5 @@ type Props = {
4
4
  children: string;
5
5
  } & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'style'>;
6
6
  export declare const Code: FC<Props>;
7
- //#endregion
7
+ //#endregion
8
+ export {};
@@ -12,4 +12,5 @@ type ColorMatch = {
12
12
  * @returns 色の値、開始位置、終了位置を含む色オブジェクトの配列
13
13
  */
14
14
  export declare function findAllColors(text: string): ColorMatch[];
15
- //#endregion
15
+ //#endregion
16
+ export {};
@@ -1,2 +1 @@
1
- import { Code } from "./code.mjs";
2
- export { Code };
1
+ export { Code } from "./code.mjs";
@@ -9,4 +9,5 @@ type Props = {
9
9
  callouts?: Readonly<Record<number, string | readonly string[]>>;
10
10
  } & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'lang' | 'style' | 'title'>;
11
11
  export declare const CodeBlock: FC<Props>;
12
- //#endregion
12
+ //#endregion
13
+ export {};
@@ -6,4 +6,5 @@ type Options = {
6
6
  callouts?: Readonly<Record<number, string | readonly string[]>> | undefined;
7
7
  };
8
8
  export declare const highlight: (code: string, options: Options) => Promise<string>;
9
- //#endregion
9
+ //#endregion
10
+ export {};
@@ -1,2 +1 @@
1
- import { CodeBlock } from "./code-block.mjs";
2
- export { CodeBlock };
1
+ export { CodeBlock } from "./code-block.mjs";
@@ -28,4 +28,5 @@ type Props<Row> = {
28
28
  emptyState?: ReactNode;
29
29
  };
30
30
  export declare const DataTable: <Row>({ label, columns, rows, getRowId, sort, onSortChange, selectedIds, onSelectedIdsChange, hiddenColumnIds, onHiddenColumnIdsChange, emptyState }: Props<Row>) => import("react").JSX.Element;
31
- //#endregion
31
+ //#endregion
32
+ export {};
@@ -1,2 +1 @@
1
- import { DataTable } from "./data-table.mjs";
2
- export { DataTable };
1
+ export { DataTable } from "./data-table.mjs";
@@ -5,4 +5,5 @@ type Props = {
5
5
  lineClamp?: 1 | 2 | 3 | 4 | 5 | 6;
6
6
  } & Omit<HTMLAttributes<HTMLHeadingElement>, 'className' | 'style'>;
7
7
  export declare const Heading: FC<Props>;
8
- //#endregion
8
+ //#endregion
9
+ export {};
@@ -1,2 +1 @@
1
- import { Heading } from "./heading.mjs";
2
- export { Heading };
1
+ export { Heading } from "./heading.mjs";
@@ -1,2 +1 @@
1
- import { Kbd } from "./kbd.mjs";
2
- export { Kbd };
1
+ export { Kbd } from "./kbd.mjs";
@@ -5,4 +5,5 @@ type Props = {
5
5
  label?: string;
6
6
  } & Omit<HTMLAttributes<HTMLElement>, 'children' | 'className' | 'style'>;
7
7
  export declare const Kbd: FC<Props>;
8
- //#endregion
8
+ //#endregion
9
+ export {};
@@ -1,2 +1 @@
1
- import { Prose } from "./prose.mjs";
2
- export { Prose };
1
+ export { Prose } from "./prose.mjs";
@@ -2,4 +2,5 @@ import { FC, HTMLAttributes } from "react";
2
2
  //#region src/components/data-display/prose/prose.d.ts
3
3
  type Props = Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'>;
4
4
  export declare const Prose: FC<Props>;
5
- //#endregion
5
+ //#endregion
6
+ export {};
@@ -1,2 +1 @@
1
- import { Table } from "./table.mjs";
2
- export { Table };
1
+ export { Table } from "./table.mjs";
@@ -31,4 +31,5 @@ export declare const Table: {
31
31
  readonly Caption: FC<CaptionProps>;
32
32
  readonly EmptyState: FC<EmptyRowProps>;
33
33
  };
34
- //#endregion
34
+ //#endregion
35
+ export {};
@@ -1,2 +1 @@
1
- import { Tree } from "./tree.mjs";
2
- export { Tree };
1
+ export { Tree } from "./tree.mjs";
@@ -6,21 +6,7 @@
6
6
  display: flex;
7
7
  }
8
8
 
9
- .bAFyoa_item:focus-visible {
10
- outline-style: none;
11
- }
12
-
13
- .bAFyoa_item:focus-visible > .bAFyoa_row {
14
- box-shadow: var(--shadow-ring-info);
15
- outline-style: none;
16
-
17
- @media (forced-colors: active) {
18
- outline-offset: 2px;
19
- outline: 2px solid #0000;
20
- }
21
- }
22
-
23
- .bAFyoa_row {
9
+ .bAFyoa_item {
24
10
  cursor: pointer;
25
11
  align-items: center;
26
12
  gap: calc(var(--spacing) * 1.5);
@@ -17,4 +17,5 @@ type Props = {
17
17
  onChange?: (id: string) => void;
18
18
  } & Omit<HTMLAttributes<HTMLUListElement>, 'children' | 'className' | 'style' | 'onChange' | 'role' | 'aria-label'>;
19
19
  export declare const Tree: FC<Props>;
20
- //#endregion
20
+ //#endregion
21
+ export {};
@@ -1,16 +1,20 @@
1
1
  "use client";
2
+ import focus_ring_module_default from "../../_internal/focus-ring.module.mjs";
2
3
  import { ChevronIcon } from "../../icons/lucide.mjs";
3
4
  import { useControllableState } from "../../../hooks/controllable-state/index.mjs";
4
5
  import { readWritingMode } from "../../../hooks/writing-mode/index.mjs";
5
6
  import tree_module_default from "./tree.module.mjs";
6
7
  import { clsx } from "clsx";
7
- import { useId, useRef, useState } from "react";
8
+ import { useRef, useState } from "react";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
10
  //#region src/components/data-display/tree/tree.tsx
10
- const visibleItemsOf = (items, expandedIds, parentId = null) => items.flatMap((item) => [{
11
+ const visibleItemsOf = (items, expandedIds, parentId = null, level = 1) => items.flatMap((item, index) => [{
11
12
  item,
12
- parentId
13
- }, ...item.children !== void 0 && expandedIds.includes(item.id) ? visibleItemsOf(item.children, expandedIds, item.id) : []]);
13
+ parentId,
14
+ level,
15
+ setSize: items.length,
16
+ posInSet: index + 1
17
+ }, ...item.children !== void 0 && expandedIds.includes(item.id) ? visibleItemsOf(item.children, expandedIds, item.id, level + 1) : []]);
14
18
  const hasChildren = (item) => item.children !== void 0 && item.children.length > 0;
15
19
  const directionOf = (key, isVertical) => {
16
20
  return (isVertical ? {
@@ -27,7 +31,6 @@ const directionOf = (key, isVertical) => {
27
31
  };
28
32
  const NONE = [];
29
33
  const Tree = ({ label, items, expandedIds, defaultExpandedIds, onExpandedChange, selectedId, defaultSelectedId = null, onChange, ...rest }) => {
30
- const baseId = useId();
31
34
  const [expanded, setExpanded] = useControllableState({
32
35
  value: expandedIds,
33
36
  defaultValue: defaultExpandedIds ?? NONE,
@@ -79,41 +82,44 @@ const Tree = ({ label, items, expandedIds, defaultExpandedIds, onExpandedChange,
79
82
  event.preventDefault();
80
83
  event.stopPropagation();
81
84
  };
82
- const renderItems = (level, depth) => level.map((item) => {
83
- const entry = entryById.get(item.id);
84
- const isParent = hasChildren(item);
85
- const isExpanded = isParent && expanded.includes(item.id);
86
- const isSelected = selected === item.id;
87
- const labelId = `${baseId}-${item.id}`;
88
- return /* @__PURE__ */ jsxs("li", {
89
- "aria-expanded": isParent ? isExpanded : void 0,
90
- "aria-labelledby": labelId,
91
- "aria-selected": isSelected,
92
- className: tree_module_default.item,
93
- onClick: (event) => {
94
- event.stopPropagation();
95
- setSelected(item.id);
96
- focus(item.id);
97
- if (isParent) toggle(item.id);
98
- },
99
- onFocus: (event) => {
100
- if (event.target === event.currentTarget) setFocusedId(item.id);
101
- },
102
- onKeyDown: (event) => {
103
- if (entry !== void 0 && event.target === event.currentTarget) onKeyDown(event, entry);
104
- },
105
- ref: (element) => {
106
- if (element === null) {
107
- elements.current.delete(item.id);
108
- return;
109
- }
110
- elements.current.set(item.id, element);
111
- },
112
- role: "treeitem",
113
- tabIndex: item.id === tabbableId ? 0 : -1,
114
- children: [/* @__PURE__ */ jsxs("div", {
115
- className: clsx(tree_module_default.row, isSelected ? tree_module_default.selected : tree_module_default.unselected),
116
- style: { paddingInlineStart: `${String(depth * .75 + .25)}rem` },
85
+ return /* @__PURE__ */ jsx("ul", {
86
+ ...rest,
87
+ "aria-label": label,
88
+ className: tree_module_default.root,
89
+ role: "tree",
90
+ children: visible.map((entry) => {
91
+ const { item, level, setSize, posInSet } = entry;
92
+ const isParent = hasChildren(item);
93
+ const isExpanded = isParent && expanded.includes(item.id);
94
+ const isSelected = selected === item.id;
95
+ return /* @__PURE__ */ jsxs("li", {
96
+ "aria-expanded": isParent ? isExpanded : void 0,
97
+ "aria-level": level,
98
+ "aria-posinset": posInSet,
99
+ "aria-selected": isSelected,
100
+ "aria-setsize": setSize,
101
+ className: clsx(tree_module_default.item, focus_ring_module_default.ringNoBorder, isSelected ? tree_module_default.selected : tree_module_default.unselected),
102
+ onClick: () => {
103
+ setSelected(item.id);
104
+ focus(item.id);
105
+ if (isParent) toggle(item.id);
106
+ },
107
+ onFocus: () => {
108
+ setFocusedId(item.id);
109
+ },
110
+ onKeyDown: (event) => {
111
+ onKeyDown(event, entry);
112
+ },
113
+ ref: (element) => {
114
+ if (element === null) {
115
+ elements.current.delete(item.id);
116
+ return;
117
+ }
118
+ elements.current.set(item.id, element);
119
+ },
120
+ role: "treeitem",
121
+ style: { paddingInlineStart: `${String((level - 1) * .75 + .25)}rem` },
122
+ tabIndex: item.id === tabbableId ? 0 : -1,
117
123
  children: [
118
124
  /* @__PURE__ */ jsx("span", {
119
125
  "aria-hidden": "true",
@@ -128,23 +134,10 @@ const Tree = ({ label, items, expandedIds, defaultExpandedIds, onExpandedChange,
128
134
  className: tree_module_default.icon,
129
135
  children: item.icon
130
136
  }),
131
- /* @__PURE__ */ jsx("span", {
132
- id: labelId,
133
- children: item.label
134
- })
137
+ item.label
135
138
  ]
136
- }), isExpanded && item.children !== void 0 ? /* @__PURE__ */ jsx("ul", {
137
- role: "group",
138
- children: renderItems(item.children, depth + 1)
139
- }) : null]
140
- }, item.id);
141
- });
142
- return /* @__PURE__ */ jsx("ul", {
143
- ...rest,
144
- "aria-label": label,
145
- className: tree_module_default.root,
146
- role: "tree",
147
- children: renderItems(items, 0)
139
+ }, item.id);
140
+ })
148
141
  });
149
142
  };
150
143
  //#endregion
@@ -7,7 +7,6 @@ var tree_module_default = {
7
7
  "item": "bAFyoa_item",
8
8
  "leaf": "bAFyoa_leaf",
9
9
  "root": "bAFyoa_root",
10
- "row": "bAFyoa_row",
11
10
  "selected": "bAFyoa_selected",
12
11
  "unselected": "bAFyoa_unselected"
13
12
  };
@@ -15,4 +15,5 @@ type Props = {
15
15
  closeLabel?: string;
16
16
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role' | 'className' | 'style'>;
17
17
  export declare const Alert: FC<Props>;
18
- //#endregion
18
+ //#endregion
19
+ export {};
@@ -1,2 +1 @@
1
- import { Alert } from "./alert.mjs";
2
- export { Alert };
1
+ export { Alert } from "./alert.mjs";
@@ -7,4 +7,5 @@ type Props = {
7
7
  children: ReactNode;
8
8
  } & Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'className' | 'style'>;
9
9
  export declare const Callout: FC<Props>;
10
- //#endregion
10
+ //#endregion
11
+ export {};
@@ -1,2 +1 @@
1
- import { Callout } from "./callout.mjs";
2
- export { Callout };
1
+ export { Callout } from "./callout.mjs";
@@ -7,4 +7,5 @@ type Props = {
7
7
  action?: ReactNode;
8
8
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'style' | 'title'>;
9
9
  export declare const EmptyState: FC<Props>;
10
- //#endregion
10
+ //#endregion
11
+ export {};
@@ -1,2 +1 @@
1
- import { EmptyState } from "./empty-state.mjs";
2
- export { EmptyState };
1
+ export { EmptyState } from "./empty-state.mjs";
@@ -1,2 +1 @@
1
- import { Progress } from "./progress.mjs";
2
- export { Progress };
1
+ export { Progress } from "./progress.mjs";
@@ -8,4 +8,5 @@ type Props = {
8
8
  label?: string;
9
9
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'style'>;
10
10
  export declare const Progress: FC<Props>;
11
- //#endregion
11
+ //#endregion
12
+ export {};
@@ -1,2 +1 @@
1
- import { Skeleton } from "./skeleton.mjs";
2
- export { Skeleton };
1
+ export { Skeleton } from "./skeleton.mjs";
@@ -6,4 +6,5 @@ type Props = {
6
6
  size?: 'sm' | 'md' | 'lg';
7
7
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'style'>;
8
8
  export declare const Skeleton: FC<Props>;
9
- //#endregion
9
+ //#endregion
10
+ export {};
@@ -1,2 +1 @@
1
- import { Spinner } from "./spinner.mjs";
2
- export { Spinner };
1
+ export { Spinner } from "./spinner.mjs";
@@ -5,4 +5,5 @@ type Props = {
5
5
  size?: 'sm' | 'md' | 'lg';
6
6
  } & Omit<OutputHTMLAttributes<HTMLOutputElement>, 'children' | 'aria-label' | 'className' | 'style'>;
7
7
  export declare const Spinner: FC<Props>;
8
- //#endregion
8
+ //#endregion
9
+ export {};