@camunda/design-system 0.58.0 → 0.60.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 (210) hide show
  1. package/dist/carbon-compat/accordion-skeleton.d.ts +8 -2
  2. package/dist/carbon-compat/accordion-skeleton.d.ts.map +1 -1
  3. package/dist/carbon-compat/accordion-skeleton.js +4 -2
  4. package/dist/carbon-compat/accordion-skeleton.js.map +1 -1
  5. package/dist/carbon-compat/c3-data-table.d.ts +7 -1
  6. package/dist/carbon-compat/c3-data-table.d.ts.map +1 -1
  7. package/dist/carbon-compat/c3-data-table.js +8 -6
  8. package/dist/carbon-compat/c3-data-table.js.map +1 -1
  9. package/dist/carbon-compat/code-snippet.d.ts +2 -2
  10. package/dist/carbon-compat/code-snippet.d.ts.map +1 -1
  11. package/dist/carbon-compat/code-snippet.js +8 -6
  12. package/dist/carbon-compat/code-snippet.js.map +1 -1
  13. package/dist/carbon-compat/error-boundary.d.ts +2 -1
  14. package/dist/carbon-compat/error-boundary.d.ts.map +1 -1
  15. package/dist/carbon-compat/error-boundary.js +11 -1
  16. package/dist/carbon-compat/error-boundary.js.map +1 -1
  17. package/dist/carbon-compat/filterable-multi-select.d.ts.map +1 -1
  18. package/dist/carbon-compat/filterable-multi-select.js +6 -1
  19. package/dist/carbon-compat/filterable-multi-select.js.map +1 -1
  20. package/dist/carbon-compat/modal.d.ts.map +1 -1
  21. package/dist/carbon-compat/modal.js +5 -1
  22. package/dist/carbon-compat/modal.js.map +1 -1
  23. package/dist/carbon-compat/multi-select.d.ts.map +1 -1
  24. package/dist/carbon-compat/multi-select.js +5 -1
  25. package/dist/carbon-compat/multi-select.js.map +1 -1
  26. package/dist/carbon-compat/search.d.ts +4 -1
  27. package/dist/carbon-compat/search.d.ts.map +1 -1
  28. package/dist/carbon-compat/search.js +4 -2
  29. package/dist/carbon-compat/search.js.map +1 -1
  30. package/dist/carbon-compat/table-batch-actions.d.ts +5 -1
  31. package/dist/carbon-compat/table-batch-actions.d.ts.map +1 -1
  32. package/dist/carbon-compat/table-batch-actions.js +8 -3
  33. package/dist/carbon-compat/table-batch-actions.js.map +1 -1
  34. package/dist/carbon-compat/table-expand.d.ts +5 -1
  35. package/dist/carbon-compat/table-expand.d.ts.map +1 -1
  36. package/dist/carbon-compat/table-expand.js +6 -2
  37. package/dist/carbon-compat/table-expand.js.map +1 -1
  38. package/dist/carbon-compat/table-select.d.ts +9 -2
  39. package/dist/carbon-compat/table-select.d.ts.map +1 -1
  40. package/dist/carbon-compat/table-select.js +5 -2
  41. package/dist/carbon-compat/table-select.js.map +1 -1
  42. package/dist/carbon-compat/table-toolbar.d.ts +1 -0
  43. package/dist/carbon-compat/table-toolbar.d.ts.map +1 -1
  44. package/dist/carbon-compat/table-toolbar.js +5 -2
  45. package/dist/carbon-compat/table-toolbar.js.map +1 -1
  46. package/dist/src/components/ui/alert-dialog.d.ts +11 -1
  47. package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
  48. package/dist/src/components/ui/alert-dialog.js +5 -4
  49. package/dist/src/components/ui/alert-dialog.js.map +1 -1
  50. package/dist/src/components/ui/alert.d.ts +3 -1
  51. package/dist/src/components/ui/alert.d.ts.map +1 -1
  52. package/dist/src/components/ui/alert.js +6 -2
  53. package/dist/src/components/ui/alert.js.map +1 -1
  54. package/dist/src/components/ui/app-header.d.ts +1 -0
  55. package/dist/src/components/ui/app-header.d.ts.map +1 -1
  56. package/dist/src/components/ui/app-header.js +4 -2
  57. package/dist/src/components/ui/app-header.js.map +1 -1
  58. package/dist/src/components/ui/app-sidebar.d.ts +49 -2
  59. package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
  60. package/dist/src/components/ui/app-sidebar.js +74 -22
  61. package/dist/src/components/ui/app-sidebar.js.map +1 -1
  62. package/dist/src/components/ui/breadcrumb.d.ts +7 -1
  63. package/dist/src/components/ui/breadcrumb.d.ts.map +1 -1
  64. package/dist/src/components/ui/breadcrumb.js +6 -3
  65. package/dist/src/components/ui/breadcrumb.js.map +1 -1
  66. package/dist/src/components/ui/c4-provider.d.ts +10 -0
  67. package/dist/src/components/ui/c4-provider.d.ts.map +1 -1
  68. package/dist/src/components/ui/c4-provider.js +11 -2
  69. package/dist/src/components/ui/c4-provider.js.map +1 -1
  70. package/dist/src/components/ui/card.d.ts +3 -1
  71. package/dist/src/components/ui/card.d.ts.map +1 -1
  72. package/dist/src/components/ui/card.js +18 -2
  73. package/dist/src/components/ui/card.js.map +1 -1
  74. package/dist/src/components/ui/chart.d.ts +1 -0
  75. package/dist/src/components/ui/chart.d.ts.map +1 -1
  76. package/dist/src/components/ui/chart.js +4 -2
  77. package/dist/src/components/ui/chart.js.map +1 -1
  78. package/dist/src/components/ui/code-block.d.ts +5 -0
  79. package/dist/src/components/ui/code-block.d.ts.map +1 -1
  80. package/dist/src/components/ui/code-block.js +15 -20
  81. package/dist/src/components/ui/code-block.js.map +1 -1
  82. package/dist/src/components/ui/combobox.d.ts +2 -0
  83. package/dist/src/components/ui/combobox.d.ts.map +1 -1
  84. package/dist/src/components/ui/combobox.js +55 -18
  85. package/dist/src/components/ui/combobox.js.map +1 -1
  86. package/dist/src/components/ui/data-table.d.ts +63 -6
  87. package/dist/src/components/ui/data-table.d.ts.map +1 -1
  88. package/dist/src/components/ui/data-table.js +38 -23
  89. package/dist/src/components/ui/data-table.js.map +1 -1
  90. package/dist/src/components/ui/date-picker.d.ts +1 -0
  91. package/dist/src/components/ui/date-picker.d.ts.map +1 -1
  92. package/dist/src/components/ui/date-picker.js +6 -2
  93. package/dist/src/components/ui/date-picker.js.map +1 -1
  94. package/dist/src/components/ui/date-range-picker.d.ts +3 -0
  95. package/dist/src/components/ui/date-range-picker.d.ts.map +1 -1
  96. package/dist/src/components/ui/date-range-picker.js +26 -5
  97. package/dist/src/components/ui/date-range-picker.js.map +1 -1
  98. package/dist/src/components/ui/dialog.d.ts +23 -3
  99. package/dist/src/components/ui/dialog.d.ts.map +1 -1
  100. package/dist/src/components/ui/dialog.js +15 -9
  101. package/dist/src/components/ui/dialog.js.map +1 -1
  102. package/dist/src/components/ui/file-uploader.d.ts +4 -4
  103. package/dist/src/components/ui/file-uploader.d.ts.map +1 -1
  104. package/dist/src/components/ui/file-uploader.js +38 -9
  105. package/dist/src/components/ui/file-uploader.js.map +1 -1
  106. package/dist/src/components/ui/form-error-summary.d.ts +13 -0
  107. package/dist/src/components/ui/form-error-summary.d.ts.map +1 -0
  108. package/dist/src/components/ui/form-error-summary.js +53 -0
  109. package/dist/src/components/ui/form-error-summary.js.map +1 -0
  110. package/dist/src/components/ui/inline-edit.d.ts +1 -1
  111. package/dist/src/components/ui/inline-edit.d.ts.map +1 -1
  112. package/dist/src/components/ui/inline-edit.js +17 -2
  113. package/dist/src/components/ui/inline-edit.js.map +1 -1
  114. package/dist/src/components/ui/meter.d.ts +1 -0
  115. package/dist/src/components/ui/meter.d.ts.map +1 -1
  116. package/dist/src/components/ui/meter.js +7 -3
  117. package/dist/src/components/ui/meter.js.map +1 -1
  118. package/dist/src/components/ui/multi-select.d.ts +16 -0
  119. package/dist/src/components/ui/multi-select.d.ts.map +1 -1
  120. package/dist/src/components/ui/multi-select.js +86 -23
  121. package/dist/src/components/ui/multi-select.js.map +1 -1
  122. package/dist/src/components/ui/multi-step-dialog.d.ts +35 -1
  123. package/dist/src/components/ui/multi-step-dialog.d.ts.map +1 -1
  124. package/dist/src/components/ui/multi-step-dialog.js +47 -8
  125. package/dist/src/components/ui/multi-step-dialog.js.map +1 -1
  126. package/dist/src/components/ui/nav-breadcrumb.d.ts +29 -12
  127. package/dist/src/components/ui/nav-breadcrumb.d.ts.map +1 -1
  128. package/dist/src/components/ui/nav-breadcrumb.js +69 -24
  129. package/dist/src/components/ui/nav-breadcrumb.js.map +1 -1
  130. package/dist/src/components/ui/notifications.d.ts +52 -5
  131. package/dist/src/components/ui/notifications.d.ts.map +1 -1
  132. package/dist/src/components/ui/notifications.js +25 -10
  133. package/dist/src/components/ui/notifications.js.map +1 -1
  134. package/dist/src/components/ui/overflow-strip.d.ts +18 -0
  135. package/dist/src/components/ui/overflow-strip.d.ts.map +1 -0
  136. package/dist/src/components/ui/overflow-strip.js +103 -0
  137. package/dist/src/components/ui/overflow-strip.js.map +1 -0
  138. package/dist/src/components/ui/scorecard.d.ts +1 -0
  139. package/dist/src/components/ui/scorecard.d.ts.map +1 -1
  140. package/dist/src/components/ui/scorecard.js +28 -4
  141. package/dist/src/components/ui/scorecard.js.map +1 -1
  142. package/dist/src/components/ui/search-input.d.ts +1 -1
  143. package/dist/src/components/ui/search-input.d.ts.map +1 -1
  144. package/dist/src/components/ui/search-input.js +4 -2
  145. package/dist/src/components/ui/search-input.js.map +1 -1
  146. package/dist/src/components/ui/select.d.ts +2 -2
  147. package/dist/src/components/ui/select.d.ts.map +1 -1
  148. package/dist/src/components/ui/select.js +123 -6
  149. package/dist/src/components/ui/select.js.map +1 -1
  150. package/dist/src/components/ui/sheet.d.ts +5 -2
  151. package/dist/src/components/ui/sheet.d.ts.map +1 -1
  152. package/dist/src/components/ui/sheet.js +4 -2
  153. package/dist/src/components/ui/sheet.js.map +1 -1
  154. package/dist/src/components/ui/sidebar-provider.d.ts.map +1 -1
  155. package/dist/src/components/ui/sidebar-provider.js +5 -1
  156. package/dist/src/components/ui/sidebar-provider.js.map +1 -1
  157. package/dist/src/components/ui/split-button.d.ts +1 -0
  158. package/dist/src/components/ui/split-button.d.ts.map +1 -1
  159. package/dist/src/components/ui/split-button.js +4 -2
  160. package/dist/src/components/ui/split-button.js.map +1 -1
  161. package/dist/src/components/ui/tabs.d.ts +2 -1
  162. package/dist/src/components/ui/tabs.d.ts.map +1 -1
  163. package/dist/src/components/ui/tabs.js +16 -4
  164. package/dist/src/components/ui/tabs.js.map +1 -1
  165. package/dist/src/components/ui/toast.d.ts +10 -4
  166. package/dist/src/components/ui/toast.d.ts.map +1 -1
  167. package/dist/src/components/ui/toast.js +213 -25
  168. package/dist/src/components/ui/toast.js.map +1 -1
  169. package/dist/src/components/ui/toggle-group.d.ts +7 -1
  170. package/dist/src/components/ui/toggle-group.d.ts.map +1 -1
  171. package/dist/src/components/ui/toggle-group.js +23 -4
  172. package/dist/src/components/ui/toggle-group.js.map +1 -1
  173. package/dist/src/components/ui/tree-view.d.ts +10 -2
  174. package/dist/src/components/ui/tree-view.d.ts.map +1 -1
  175. package/dist/src/components/ui/tree-view.js +67 -46
  176. package/dist/src/components/ui/tree-view.js.map +1 -1
  177. package/dist/src/components/ui/user-menu.d.ts +12 -1
  178. package/dist/src/components/ui/user-menu.d.ts.map +1 -1
  179. package/dist/src/components/ui/user-menu.js +5 -3
  180. package/dist/src/components/ui/user-menu.js.map +1 -1
  181. package/dist/src/hooks/use-is-truncated.d.ts +9 -5
  182. package/dist/src/hooks/use-is-truncated.d.ts.map +1 -1
  183. package/dist/src/hooks/use-is-truncated.js +20 -7
  184. package/dist/src/hooks/use-is-truncated.js.map +1 -1
  185. package/dist/src/index.d.ts +3 -0
  186. package/dist/src/index.d.ts.map +1 -1
  187. package/dist/src/index.js +3 -0
  188. package/dist/src/index.js.map +1 -1
  189. package/dist/src/lib/focus-visible-on-close.d.ts +28 -0
  190. package/dist/src/lib/focus-visible-on-close.d.ts.map +1 -1
  191. package/dist/src/lib/focus-visible-on-close.js +54 -1
  192. package/dist/src/lib/focus-visible-on-close.js.map +1 -1
  193. package/dist/src/lib/i18n/context.d.ts +48 -0
  194. package/dist/src/lib/i18n/context.d.ts.map +1 -0
  195. package/dist/src/lib/i18n/context.js +157 -0
  196. package/dist/src/lib/i18n/context.js.map +1 -0
  197. package/dist/src/lib/i18n/dictionary.d.ts +151 -0
  198. package/dist/src/lib/i18n/dictionary.d.ts.map +1 -0
  199. package/dist/src/lib/i18n/dictionary.js +134 -0
  200. package/dist/src/lib/i18n/dictionary.js.map +1 -0
  201. package/dist/src/lib/merge-refs.d.ts +8 -0
  202. package/dist/src/lib/merge-refs.d.ts.map +1 -0
  203. package/dist/src/lib/merge-refs.js +15 -0
  204. package/dist/src/lib/merge-refs.js.map +1 -0
  205. package/dist/src/lib/with-ref.d.ts +3 -1
  206. package/dist/src/lib/with-ref.d.ts.map +1 -1
  207. package/dist/src/lib/with-ref.js +0 -10
  208. package/dist/src/lib/with-ref.js.map +1 -1
  209. package/dist/styles.css +65 -6
  210. package/package.json +4 -2
@@ -3,12 +3,14 @@ import * as React from "react";
3
3
  import { cva } from "class-variance-authority";
4
4
  import { ChevronDown, ChevronRight, ChevronLeft, PanelLeftClose, PanelLeft, X, } from "../../icons/lucide.js";
5
5
  import { cn } from "../../lib/utils.js";
6
+ import { useC4Dictionary } from "../../lib/i18n/context.js";
6
7
  import { Text } from "./typography.js";
7
8
  import { Popover, PopoverContent, PopoverTrigger } from "./popover.js";
8
9
  import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
9
10
  import { Sheet, SheetClose, SheetContent, SheetTitle } from "./sheet.js";
10
11
  import { useSidebar } from "./sidebar-provider.js";
11
12
  import { useIsMobile } from "../../hooks/use-is-mobile.js";
13
+ import { useIsTruncated } from "../../hooks/use-is-truncated.js";
12
14
  import { linkDestination, resolveActive, resolveLinkProps, } from "./nav-data.js";
13
15
  import { NavRowIcon } from "./nav-icon.js";
14
16
  const NAV_ROW_BASE = "group/navbtn flex w-full items-center overflow-hidden rounded-md transition-colors";
@@ -57,18 +59,28 @@ function NavItemRow({ node, expanded, depth, LinkEl, isMobile, onNavigate, hasLi
57
59
  const isLink = linkDestination(node.linkProps) !== undefined;
58
60
  const Comp = isLink ? LinkEl : "button";
59
61
  const isActive = resolveActive(node.isActive, node.key, activeItemKey);
62
+ // Truncation reveal — expanded state only. The collapsed icon rail below
63
+ // has its own, separate tooltip (naming the icon), so this hook's state is
64
+ // simply unused on that path rather than conditionally called.
65
+ const { ref: labelRef, isTruncated, measure, } = useIsTruncated();
66
+ React.useLayoutEffect(() => {
67
+ measure();
68
+ });
60
69
  const row = (_jsxs(Comp, { ...(isLink
61
70
  ? resolveLinkProps(node.linkProps, hasLinkComponent)
62
71
  : { type: "button" }), "data-slot": "app-sidebar-item", className: cn(navButton({ active: isActive, expanded })), style: indentStyle(depth), "aria-current": isActive ? "page" : undefined, onClick: () => {
63
72
  node.onClick?.();
64
73
  onNavigate?.();
65
- }, children: [_jsx(NavRowIcon, { icon: node.icon, label: node.label }), _jsx("span", { className: cn("flex-1 truncate", !expanded && "sr-only"), children: node.label }), expanded && node.trailingElement] }));
74
+ }, onPointerEnter: measure, onFocus: measure, children: [_jsx(NavRowIcon, { icon: node.icon, label: node.label }), _jsx("span", { ref: labelRef, className: cn("flex-1 truncate", !expanded && "sr-only"), children: node.label }), expanded && node.trailingElement] }));
66
75
  // Collapsed icon rail: name the icon with a tooltip. Not on mobile (the Sheet
67
76
  // shows full labels) and not when expanded (the label is already visible).
68
77
  if (!expanded && !isMobile) {
69
78
  return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: row }), _jsx(TooltipContent, { side: "right", children: node.label })] }));
70
79
  }
71
- return row;
80
+ // Expanded state: the label is visible and can itself clip — reveal the
81
+ // full text on hover/focus, mounted only when it actually does. See
82
+ // "Truncated Text" in `docs/specs/shadcn/patterns.md`.
83
+ return isTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: row }), _jsx(TooltipContent, { children: node.label })] })) : (row);
72
84
  }
73
85
  function NavGroupRow({ node, expanded, depth, LinkEl, hasLinkComponent, activeItemKey, isMobile, onNavigate, }) {
74
86
  const isGroupControlled = node.isExpanded !== undefined;
@@ -90,7 +102,13 @@ function NavGroupRow({ node, expanded, depth, LinkEl, hasLinkComponent, activeIt
90
102
  : false;
91
103
  const isLink = isGroupItem && linkDestination(node.linkProps) !== undefined;
92
104
  const LabelComp = isLink ? LinkEl : "button";
93
- const label = (_jsxs(_Fragment, { children: [_jsx(NavRowIcon, { icon: node.icon, label: node.label }), _jsx("span", { className: cn("flex-1 truncate", !expanded && "sr-only"), children: node.label }), expanded && node.trailingElement] }));
105
+ // Truncation reveal — expanded state only (see the collapsed-rail flyout's
106
+ // own, separate tooltip below, which already names the icon-only trigger).
107
+ const { ref: labelRef, isTruncated, measure, } = useIsTruncated();
108
+ React.useLayoutEffect(() => {
109
+ measure();
110
+ });
111
+ const label = (_jsxs(_Fragment, { children: [_jsx(NavRowIcon, { icon: node.icon, label: node.label }), _jsx("span", { ref: labelRef, className: cn("flex-1 truncate", !expanded && "sr-only"), children: node.label }), expanded && node.trailingElement] }));
94
112
  if (!expanded) {
95
113
  return (_jsxs(Popover, { open: flyoutOpen, onOpenChange: setFlyoutOpen, children: [_jsxs(Tooltip, { open: flyoutOpen ? false : undefined, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", "data-slot": "app-sidebar-group-trigger", "aria-label": node.label, "aria-expanded": flyoutOpen, className: cn(navButton({ active: isActive, expanded: false })), children: [_jsx(NavRowIcon, { icon: node.icon, label: node.label }), _jsx("span", { className: "sr-only", children: node.label })] }) }) }), _jsx(TooltipContent, { side: "right", children: node.label })] }), _jsx(PopoverContent, { side: "right", align: "start", className: "w-56 gap-0 p-1", children: node.children.map((child) => renderNode(child, {
96
114
  expanded: true,
@@ -102,18 +120,22 @@ function NavGroupRow({ node, expanded, depth, LinkEl, hasLinkComponent, activeIt
102
120
  onNavigate,
103
121
  })) })] }));
104
122
  }
123
+ const labelElement = (_jsx(LabelComp, { ...(isLink ? node.linkProps : { type: "button" }), className: cn("flex flex-1 min-w-0 items-center gap-3 min-h-10 py-2 text-sm text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", isActive
124
+ ? "text-neutral-foreground-strong font-medium"
125
+ : "text-neutral-foreground-subtle hover:text-neutral-foreground-strong"), style: depth > 0
126
+ ? { paddingLeft: `${0.75 + depth * 1.75}rem` }
127
+ : { paddingLeft: "0.75rem" }, "aria-current": isActive ? "page" : undefined, "aria-expanded": isGroupItem ? undefined : open, onClick: isGroupItem
128
+ ? () => {
129
+ node.onClick?.();
130
+ onNavigate?.();
131
+ }
132
+ : toggle, onPointerEnter: measure, onFocus: measure, children: label }));
133
+ // Truncation reveal, mounted only when the label actually clips — see
134
+ // "Truncated Text" in `docs/specs/shadcn/patterns.md`.
135
+ const labelWithReveal = isTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: labelElement }), _jsx(TooltipContent, { children: node.label })] })) : (labelElement);
105
136
  return (_jsxs("div", { "data-slot": "app-sidebar-group", className: cn("flex flex-col gap-0.5"), children: [_jsxs("div", { className: cn(NAV_ROW_BASE, isActive
106
137
  ? "bg-neutral-background-strong"
107
- : "hover:bg-neutral-background-medium"), children: [_jsx(LabelComp, { ...(isLink ? node.linkProps : { type: "button" }), className: cn("flex flex-1 min-w-0 items-center gap-3 min-h-10 py-2 text-sm text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", isActive
108
- ? "text-neutral-foreground-strong font-medium"
109
- : "text-neutral-foreground-subtle hover:text-neutral-foreground-strong"), style: depth > 0
110
- ? { paddingLeft: `${0.75 + depth * 1.75}rem` }
111
- : { paddingLeft: "0.75rem" }, "aria-current": isActive ? "page" : undefined, "aria-expanded": isGroupItem ? undefined : open, onClick: isGroupItem
112
- ? () => {
113
- node.onClick?.();
114
- onNavigate?.();
115
- }
116
- : toggle, children: label }), _jsx("button", { type: "button", "data-slot": "app-sidebar-group-toggle", "aria-label": `Toggle ${node.label}`, "aria-expanded": open, onClick: toggle, className: "flex items-center justify-center mr-3 ml-1 rounded p-0.5 text-neutral-foreground-subtle hover:bg-neutral-background-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: open ? (_jsx(ChevronDown, { "aria-hidden": true, className: "size-4" })) : (_jsx(ChevronRight, { "aria-hidden": true, className: "size-4" })) })] }), open &&
138
+ : "hover:bg-neutral-background-medium"), children: [labelWithReveal, _jsx("button", { type: "button", "data-slot": "app-sidebar-group-toggle", "aria-label": `Toggle ${node.label}`, "aria-expanded": open, onClick: toggle, className: "flex items-center justify-center mr-3 ml-1 rounded p-0.5 text-neutral-foreground-subtle hover:bg-neutral-background-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: open ? (_jsx(ChevronDown, { "aria-hidden": true, className: "size-4" })) : (_jsx(ChevronRight, { "aria-hidden": true, className: "size-4" })) })] }), open &&
117
139
  node.children.map((child) => renderNode(child, {
118
140
  expanded,
119
141
  depth: depth + 1,
@@ -136,15 +158,30 @@ function NavSection({ node, expanded, depth, LinkEl, hasLinkComponent, activeIte
136
158
  }))] }));
137
159
  }
138
160
  function BackNavHeader({ backNav, expanded, LinkEl, }) {
139
- const { title, onBack, backHref, backLabel = "Back" } = backNav;
161
+ const { t } = useC4Dictionary();
162
+ const { title, onBack, backHref, backLabel } = backNav;
163
+ const resolvedBackLabel = backLabel ?? t("appSidebar.back");
140
164
  const isLink = backHref !== undefined;
141
165
  const BackComp = isLink ? LinkEl : "button";
142
- return (_jsxs("div", { "data-slot": "app-sidebar-back-nav", className: cn("flex h-10 shrink-0 items-center gap-1 border-b border-border", expanded ? "pl-1 pr-3" : "justify-center px-2"), children: [_jsx(BackComp, { ...(isLink ? { href: backHref } : { type: "button", onClick: onBack }), "data-slot": "app-sidebar-back", "aria-label": backLabel, className: "flex size-8 shrink-0 items-center justify-center rounded-md text-neutral-foreground-subtle transition-colors hover:bg-neutral-background-strong hover:text-neutral-foreground-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: _jsx(ChevronLeft, { "aria-hidden": true, className: "size-4" }) }), expanded && (_jsx(Text, { as: "span", variant: "label-md-strong", className: "flex-1 truncate pr-7 text-center text-neutral-foreground-strong", children: title }))] }));
166
+ // No focusable ancestor wraps this title (the back button is a sibling,
167
+ // not a parent) — per the "Truncated Text" decision tree in
168
+ // docs/specs/shadcn/patterns.md, `tabIndex={0}` goes directly on the `Text`
169
+ // span itself. `Text`'s ref type is `React.Ref<HTMLElement>` (it's
170
+ // polymorphic via `as`), so the hook is typed `<HTMLElement>` here rather
171
+ // than `<HTMLSpanElement>` even though `as="span"` below.
172
+ const { ref: titleRef, isTruncated: titleTruncated, measure: measureTitle, } = useIsTruncated();
173
+ React.useLayoutEffect(() => {
174
+ measureTitle();
175
+ });
176
+ const titleSpan = expanded ? (_jsx(Text, { ref: titleRef, as: "span", variant: "label-md-strong", tabIndex: 0, onPointerEnter: measureTitle, onFocus: measureTitle, className: "flex-1 truncate rounded-sm pr-7 text-center text-neutral-foreground-strong outline-none focus-visible:ring-2 focus-visible:ring-ring", children: title })) : null;
177
+ const titleElement = expanded && titleTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: titleSpan }), _jsx(TooltipContent, { children: title })] })) : (titleSpan);
178
+ return (_jsxs("div", { "data-slot": "app-sidebar-back-nav", className: cn("flex h-10 shrink-0 items-center gap-1 border-b border-border", expanded ? "pl-1 pr-3" : "justify-center px-2"), children: [_jsx(BackComp, { ...(isLink ? { href: backHref } : { type: "button", onClick: onBack }), "data-slot": "app-sidebar-back", "aria-label": resolvedBackLabel, className: "flex size-8 shrink-0 items-center justify-center rounded-md text-neutral-foreground-subtle transition-colors hover:bg-neutral-background-strong hover:text-neutral-foreground-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: _jsx(ChevronLeft, { "aria-hidden": true, className: "size-4" }) }), titleElement] }));
143
179
  }
144
180
  function remToPx(rem) {
145
181
  return parseFloat(rem) * 16;
146
182
  }
147
- function SidebarResizeHandle({ width, minWidth, maxWidth, onResize, }) {
183
+ function SidebarResizeHandle({ width, minWidth, maxWidth, onResize, resizeLabel, resizeValueTextLabel, }) {
184
+ const { t } = useC4Dictionary();
148
185
  const minPx = remToPx(minWidth);
149
186
  const maxPx = remToPx(maxWidth);
150
187
  const nowPx = Math.round(remToPx(width));
@@ -175,12 +212,14 @@ function SidebarResizeHandle({ width, minWidth, maxWidth, onResize, }) {
175
212
  return;
176
213
  e.preventDefault();
177
214
  };
178
- return (_jsx("div", { "data-slot": "app-sidebar-resize-handle", role: "separator", "aria-orientation": "vertical", "aria-label": "Resize sidebar", "aria-valuemin": Math.round(minPx), "aria-valuemax": Math.round(maxPx), "aria-valuenow": nowPx, "aria-valuetext": `${nowPx} pixels`, tabIndex: 0, onPointerDown: onPointerDown, onKeyDown: onKeyDown, className: "absolute top-0 right-0 z-50 h-full w-1 cursor-col-resize select-none hover:bg-neutral-background-medium focus-visible:bg-ring focus-visible:outline-none" }));
215
+ return (_jsx("div", { "data-slot": "app-sidebar-resize-handle", role: "separator", "aria-orientation": "vertical", "aria-label": resizeLabel ?? t("appSidebar.resize"), "aria-valuemin": Math.round(minPx), "aria-valuemax": Math.round(maxPx), "aria-valuenow": nowPx, "aria-valuetext": resizeValueTextLabel ??
216
+ t("appSidebar.resizeValueText", { pixels: nowPx }), tabIndex: 0, onPointerDown: onPointerDown, onKeyDown: onKeyDown, className: "absolute top-0 right-0 z-50 h-full w-1 cursor-col-resize select-none hover:bg-neutral-background-medium focus-visible:bg-ring focus-visible:outline-none" }));
179
217
  }
180
- export function AppSidebar({ ariaLabel, items, backNav, expandedWidth = "16rem", collapsedWidth = "3.5rem", resizable = true, minWidth = "14rem", maxWidth = "24rem", footer, linkComponent, activeItemKey, className, ...expandProps }) {
218
+ export function AppSidebar({ ariaLabel, items, backNav, expandedWidth = "16rem", collapsedWidth = "3.5rem", expandLabel, collapseLabel, collapseText, resizable = true, minWidth = "14rem", maxWidth = "24rem", resizeLabel, resizeValueTextLabel, footer, linkComponent, closeNavigationLabel, activeItemKey, className, ...expandProps }) {
181
219
  const ctx = useSidebar();
182
220
  const standaloneIsMobile = useIsMobile();
183
221
  const hasWarnedNoProvider = React.useRef(false);
222
+ const { t } = useC4Dictionary();
184
223
  // Runs in an effect, not at render time: ref reads/writes aren't safe
185
224
  // during render under concurrent rendering. Fires only when there's no
186
225
  // SidebarProvider AND the viewport is genuinely mobile-sized — silent at
@@ -216,9 +255,17 @@ export function AppSidebar({ ariaLabel, items, backNav, expandedWidth = "16rem",
216
255
  const LinkEl = linkComponent ?? "a";
217
256
  const hasLinkComponent = linkComponent !== undefined;
218
257
  const toggleRef = React.useRef(null);
258
+ // Truncation reveal for the collapse-toggle's own label — declared above
259
+ // the mobile early return below (hooks can't follow a conditional return).
260
+ // Only relevant once `expanded` (the collapsed state hides the label via
261
+ // `sr-only`, and already gets its own, separate expand-action tooltip).
262
+ const { ref: collapseTextRef, isTruncated: collapseTextTruncated, measure: measureCollapseText, } = useIsTruncated();
263
+ React.useLayoutEffect(() => {
264
+ measureCollapseText();
265
+ });
219
266
  // Mobile: render the nav inside a left Sheet overlay (always full labels).
220
267
  if (isMobile) {
221
- return (_jsx(Sheet, { open: ctx?.mobileOpen ?? false, onOpenChange: (o) => ctx?.setMobileOpen(o), children: _jsxs(SheetContent, { side: "left", showCloseButton: false, className: "w-72 p-0", children: [_jsx(SheetTitle, { className: "sr-only", children: ariaLabel }), _jsxs("nav", { "data-slot": "app-sidebar", "aria-label": ariaLabel, className: "flex h-full flex-col bg-background", children: [_jsx("div", { className: "flex h-12 shrink-0 items-center justify-end px-2", children: _jsx(SheetClose, { asChild: true, children: _jsx("button", { type: "button", "aria-label": "Close navigation", className: "flex size-8 items-center justify-center rounded-md text-neutral-foreground-subtle transition-colors hover:bg-neutral-background-strong hover:text-neutral-foreground-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: _jsx(X, { "aria-hidden": true, className: "size-4" }) }) }) }), backNav && (_jsx(BackNavHeader, { backNav: backNav, expanded: true, LinkEl: LinkEl })), _jsx("div", { className: cn("flex flex-1 flex-col gap-0.5 overflow-y-auto px-2 py-2", HIDDEN_SCROLLBAR), children: items.map((node) => renderNode(node, {
268
+ return (_jsx(Sheet, { open: ctx?.mobileOpen ?? false, onOpenChange: (o) => ctx?.setMobileOpen(o), children: _jsxs(SheetContent, { side: "left", showCloseButton: false, className: "w-72 p-0", children: [_jsx(SheetTitle, { className: "sr-only", children: ariaLabel }), _jsxs("nav", { "data-slot": "app-sidebar", "aria-label": ariaLabel, className: "flex h-full flex-col bg-background", children: [_jsx("div", { className: "flex h-12 shrink-0 items-center justify-end px-2", children: _jsx(SheetClose, { asChild: true, children: _jsx("button", { type: "button", "aria-label": closeNavigationLabel ?? t("appSidebar.closeNavigation"), className: "flex size-8 items-center justify-center rounded-md text-neutral-foreground-subtle transition-colors hover:bg-neutral-background-strong hover:text-neutral-foreground-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: _jsx(X, { "aria-hidden": true, className: "size-4" }) }) }) }), backNav && (_jsx(BackNavHeader, { backNav: backNav, expanded: true, LinkEl: LinkEl })), _jsx("div", { className: cn("flex flex-1 flex-col gap-0.5 overflow-y-auto px-2 py-2", HIDDEN_SCROLLBAR), children: items.map((node) => renderNode(node, {
222
269
  expanded: true,
223
270
  depth: 0,
224
271
  LinkEl,
@@ -231,10 +278,15 @@ export function AppSidebar({ ariaLabel, items, backNav, expandedWidth = "16rem",
231
278
  }
232
279
  // Desktop: the fixed rail.
233
280
  const width = expanded ? resizedWidth : collapsedWidth;
234
- const collapseToggle = (_jsxs("button", { ref: toggleRef, type: "button", "aria-label": expanded ? "Collapse sidebar" : "Expand sidebar", "aria-expanded": expanded, onClick: () => {
281
+ // Shared with the tooltip below so the accessible name (aria-label) and the
282
+ // visible tooltip text never drift apart under a dictionary override.
283
+ const resolvedExpandLabel = expandLabel ?? t("appSidebar.expand");
284
+ const resolvedCollapseLabel = collapseLabel ?? t("appSidebar.collapse");
285
+ const resolvedCollapseText = collapseText ?? t("appSidebar.collapseText");
286
+ const collapseToggle = (_jsxs("button", { ref: toggleRef, type: "button", "aria-label": expanded ? resolvedCollapseLabel : resolvedExpandLabel, "aria-expanded": expanded, onClick: () => {
235
287
  setExpanded(!expanded);
236
288
  toggleRef.current?.focus();
237
- }, className: cn("flex min-h-10 items-center py-2 text-sm text-neutral-foreground-subtle hover:bg-neutral-background-strong hover:text-neutral-foreground-strong border-t border-border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", expanded ? "gap-3 px-3" : "justify-center px-2"), children: [expanded ? (_jsx(PanelLeftClose, { "aria-hidden": true, className: "size-4 shrink-0" })) : (_jsx(PanelLeft, { "aria-hidden": true, className: "size-4 shrink-0" })), _jsx("span", { className: cn(expanded ? "flex-1 truncate text-left" : "sr-only"), children: "Collapse" })] }));
289
+ }, onPointerEnter: measureCollapseText, onFocus: measureCollapseText, className: cn("flex min-h-10 items-center py-2 text-sm text-neutral-foreground-subtle hover:bg-neutral-background-strong hover:text-neutral-foreground-strong border-t border-border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", expanded ? "gap-3 px-3" : "justify-center px-2"), children: [expanded ? (_jsx(PanelLeftClose, { "aria-hidden": true, className: "size-4 shrink-0" })) : (_jsx(PanelLeft, { "aria-hidden": true, className: "size-4 shrink-0" })), _jsx("span", { ref: collapseTextRef, className: cn(expanded ? "flex-1 truncate text-left" : "sr-only"), children: resolvedCollapseText })] }));
238
290
  return (_jsxs("nav", { "data-slot": "app-sidebar", "aria-label": ariaLabel, style: { width, ["--app-sidebar-width"]: width }, className: cn("fixed left-0 top-12 bottom-0 z-40 flex flex-col bg-background border-r border-border transition-[width] duration-150 ease-out", className), children: [backNav && (_jsx(BackNavHeader, { backNav: backNav, expanded: expanded, LinkEl: LinkEl })), _jsx("div", { className: cn("flex-1 min-h-0 flex flex-col gap-0.5 px-2 py-2 overflow-y-auto overflow-x-hidden", HIDDEN_SCROLLBAR), children: items.map((node) => renderNode(node, {
239
291
  expanded,
240
292
  depth: 0,
@@ -242,6 +294,6 @@ export function AppSidebar({ ariaLabel, items, backNav, expandedWidth = "16rem",
242
294
  hasLinkComponent,
243
295
  activeItemKey,
244
296
  isMobile: false,
245
- })) }), footer && _jsx("div", { className: "border-t border-border p-2", children: footer }), expanded ? (collapseToggle) : (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: collapseToggle }), _jsx(TooltipContent, { side: "right", children: "Expand sidebar" })] })), resizable && expanded && (_jsx(SidebarResizeHandle, { width: resizedWidth, minWidth: minWidth, maxWidth: maxWidth, onResize: setResizedWidth }))] }));
297
+ })) }), footer && _jsx("div", { className: "border-t border-border p-2", children: footer }), expanded ? (collapseTextTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: collapseToggle }), _jsx(TooltipContent, { children: resolvedCollapseText })] })) : (collapseToggle)) : (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: collapseToggle }), _jsx(TooltipContent, { side: "right", children: resolvedExpandLabel })] })), resizable && expanded && (_jsx(SidebarResizeHandle, { width: resizedWidth, minWidth: minWidth, maxWidth: maxWidth, onResize: setResizedWidth, resizeLabel: resizeLabel, resizeValueTextLabel: resizeValueTextLabel }))] }));
246
298
  }
247
299
  //# sourceMappingURL=app-sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../../../../src/components/ui/app-sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../../../../src/components/ui/app-sidebar.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,12 @@ declare function BreadcrumbLink({ asChild, className, ...props }: React.Componen
7
7
  }): React.JSX.Element;
8
8
  declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
9
9
  declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
10
- declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
10
+ declare function BreadcrumbEllipsis({ className, label, ...props }: React.ComponentProps<"span"> & {
11
+ /**
12
+ * Sr-only text alongside the ellipsis glyph. Sourced from the i18n
13
+ * dictionary at key `"breadcrumb.more"` when omitted.
14
+ */
15
+ label?: string;
16
+ }): React.JSX.Element;
11
17
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, };
12
18
  //# sourceMappingURL=breadcrumb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,iBAAS,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAE5D;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAe1E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ1E;AAED,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAYnD;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAS5E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAgB5B;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAa9B;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,iBAAS,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAK5D;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAe1E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ1E;AAED,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAYnD;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAS5E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAgB5B;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,qBAcA;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,CAAC"}
@@ -4,9 +4,11 @@ import * as React from "react";
4
4
  import { Slot } from "radix-ui";
5
5
  import { MoreHorizontal } from "../../icons/lucide.js";
6
6
  import { cn } from "../../lib/utils.js";
7
+ import { useC4Dictionary } from "../../lib/i18n/context.js";
7
8
  import { typographyVariants } from "./typography.js";
8
9
  function Breadcrumb({ ...props }) {
9
- return _jsx("nav", { "data-slot": "breadcrumb", "aria-label": "breadcrumb", ...props });
10
+ const { t } = useC4Dictionary();
11
+ return (_jsx("nav", { "data-slot": "breadcrumb", "aria-label": t("breadcrumb.nav"), ...props }));
10
12
  }
11
13
  function BreadcrumbList({ className, ...props }) {
12
14
  return (_jsx("ol", { "data-slot": "breadcrumb-list",
@@ -28,8 +30,9 @@ function BreadcrumbPage({ className, ...props }) {
28
30
  function BreadcrumbSeparator({ children, className, ...props }) {
29
31
  return (_jsx("li", { "data-slot": "breadcrumb-separator", role: "presentation", "aria-hidden": "true", className: cn("select-none text-xs text-neutral-border-strong", children != null && "[&>svg]:size-3.5", className), ...props, children: children ?? "/" }));
30
32
  }
31
- function BreadcrumbEllipsis({ className, ...props }) {
32
- return (_jsxs("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn("flex size-9 items-center justify-center", className), ...props, children: [_jsx(MoreHorizontal, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "More" })] }));
33
+ function BreadcrumbEllipsis({ className, label, ...props }) {
34
+ const { t } = useC4Dictionary();
35
+ return (_jsxs("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn("flex size-9 items-center justify-center", className), ...props, children: [_jsx(MoreHorizontal, { className: "size-4" }), _jsx("span", { className: "sr-only", children: label ?? t("breadcrumb.more") })] }));
33
36
  }
34
37
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, };
35
38
  //# sourceMappingURL=breadcrumb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,SAAS,UAAU,CAAC,EAAE,GAAG,KAAK,EAA+B;IAC3D,OAAO,2BAAe,YAAY,gBAAY,YAAY,KAAK,KAAK,GAAI,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACzE,OAAO,CACL,0BACY,iBAAiB;QAC3B,oEAAoE;QACpE,qEAAqE;QACrE,4CAA4C;QAC5C,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAC9C,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACzE,OAAO,CACL,0BACY,iBAAiB,EAC3B,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,KACxD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EAC0C;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,OAAO,CACL,KAAC,IAAI,iBACO,iBAAiB,EAC3B,SAAS,EAAE,EAAE,CACX,4PAA4P,EAC5P,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgC;IAC3E,OAAO,CACL,4BACY,iBAAiB,kBACd,MAAM,EACnB,SAAS,EAAE,EAAE,CAAC,4CAA4C,EAAE,SAAS,CAAC,KAClE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACmB;IAC3B,OAAO,CACL,0BACY,sBAAsB,EAChC,IAAI,EAAC,cAAc,iBACP,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,gDAAgD,EAChD,QAAQ,IAAI,IAAI,IAAI,kBAAkB,EACtC,SAAS,CACV,KACG,KAAK,YAER,QAAQ,IAAI,GAAG,GACb,CACN,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACqB;IAC7B,OAAO,CACL,6BACY,qBAAqB,EAC/B,IAAI,EAAC,cAAc,iBACP,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,yCAAyC,EAAE,SAAS,CAAC,KAC/D,KAAK,aAET,KAAC,cAAc,IAAC,SAAS,EAAC,QAAQ,GAAG,EACrC,eAAM,SAAS,EAAC,SAAS,qBAAY,IAChC,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../../src/components/ui/breadcrumb.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import * as React from "react";
2
+ import type { C4Dictionary } from "../../lib/i18n/dictionary.js";
2
3
  /**
3
4
  * Scopes all c4-components CSS (design tokens, base resets) to its subtree.
4
5
  * Wrap your shadcn component tree with this to avoid polluting the host app's styles.
@@ -13,6 +14,15 @@ type C4ProviderProps = {
13
14
  children: React.ReactNode;
14
15
  ref?: React.Ref<HTMLDivElement>;
15
16
  theme?: "light" | "dark";
17
+ dictionary?: Partial<C4Dictionary>;
18
+ /**
19
+ * BCP-47 language tag (e.g. `"en"`, `"en-US"`, `"de-DE"`) — not
20
+ * underscore-separated (`"en_US"` is not valid BCP-47, even though it's
21
+ * the default format several backend i18n frameworks emit). A malformed
22
+ * value falls back to `"en"` (with a dev-only console warning) rather
23
+ * than throwing.
24
+ */
25
+ locale?: string;
16
26
  };
17
27
  declare const C4Provider: React.ForwardRefExoticComponent<Omit<C4ProviderProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
18
28
  export { C4Provider };
@@ -1 +1 @@
1
- {"version":3,"file":"c4-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/c4-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAyB/B;;;;;;;;;GASG;AACH,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B,CAAC;AAwEF,QAAA,MAAM,UAAU,qGAA2D,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"c4-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/c4-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAuBxD;;;;;;;;;GASG;AACH,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAiGF,QAAA,MAAM,UAAU,qGAA2D,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { withRef } from "../../lib/with-ref.js";
4
4
  import { installAriaHiddenInert } from "../../lib/inert-aria-hidden.js";
5
+ import { C4DictionaryContext, resolveDictionary, resolveLocale, } from "../../lib/i18n/context.js";
5
6
  /**
6
7
  * Propagates light/dark from the app-root C4Provider to nested instances
7
8
  * (Dialog, DropdownMenu, Select, etc.) that portal to document.body.
@@ -24,7 +25,15 @@ function resolveRootDark() {
24
25
  return true;
25
26
  return false;
26
27
  }
27
- function C4ProviderImpl({ ref, children, theme }) {
28
+ function C4ProviderImpl({ ref, children, theme, dictionary, locale, }) {
29
+ const inheritedDictionaryCtx = React.useContext(C4DictionaryContext);
30
+ const resolvedDictionary = React.useMemo(() => resolveDictionary(inheritedDictionaryCtx?.dictionary, dictionary), [inheritedDictionaryCtx?.dictionary, dictionary]);
31
+ const resolvedLocale = React.useMemo(() => resolveLocale(inheritedDictionaryCtx?.locale, locale), [inheritedDictionaryCtx?.locale, locale]);
32
+ // resolvedDictionary/resolvedLocale are already memoized above; without
33
+ // this, raw `useContext(C4DictionaryContext)` consumers still got a new
34
+ // object identity on every render because the `{ dictionary, locale }`
35
+ // literal itself was reconstructed each time.
36
+ const dictionaryContextValue = React.useMemo(() => ({ dictionary: resolvedDictionary, locale: resolvedLocale }), [resolvedDictionary, resolvedLocale]);
28
37
  const inheritedDark = React.useContext(C4ThemeContext);
29
38
  const isRoot = inheritedDark === undefined;
30
39
  const containerRef = React.useRef(null);
@@ -76,7 +85,7 @@ function C4ProviderImpl({ ref, children, theme }) {
76
85
  ref.current = node;
77
86
  }, [ref]);
78
87
  const scope = (_jsx("div", { ref: setRef, className: isDark ? "c4-ui contents dark" : "c4-ui contents", "data-c4-scope": "", children: children }));
79
- return (_jsx(C4ThemeContext.Provider, { value: isDark, children: isDark && !isRoot ? _jsx("div", { className: "dark", children: scope }) : scope }));
88
+ return (_jsx(C4DictionaryContext.Provider, { value: dictionaryContextValue, children: _jsx(C4ThemeContext.Provider, { value: isDark, children: isDark && !isRoot ? _jsx("div", { className: "dark", children: scope }) : scope }) }));
80
89
  }
81
90
  const C4Provider = withRef(C4ProviderImpl);
82
91
  export { C4Provider };
@@ -1 +1 @@
1
- {"version":3,"file":"c4-provider.js","sourceRoot":"","sources":["../../../../src/components/ui/c4-provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c4-provider.js","sourceRoot":"","sources":["../../../../src/components/ui/c4-provider.tsx"],"names":[],"mappings":"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"}
@@ -3,8 +3,10 @@ declare function Card({ className, size, ...props }: React.ComponentProps<"div">
3
3
  size?: "default" | "sm";
4
4
  }): React.JSX.Element;
5
5
  declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
6
- declare function CardTitle({ className, tooltip, children, ...props }: React.ComponentProps<"div"> & {
6
+ declare function CardTitle({ className, tooltip, moreInformationLabel, children, ...props }: React.ComponentProps<"div"> & {
7
7
  tooltip?: React.ReactNode;
8
+ /** Accessible name for the tooltip trigger. Sourced from the i18n dictionary at key `"card.moreInformation"` when omitted. */
9
+ moreInformationLabel?: string;
8
10
  }): React.JSX.Element;
9
11
  declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
10
12
  declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,qBAY3D;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAuC7D;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,qBAY3D;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,8HAA8H;IAC9H,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,qBA+EA;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAC"}
@@ -2,6 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Info } from "../../icons/lucide.js";
4
4
  import { cn } from "../../lib/utils.js";
5
+ import { useC4Dictionary } from "../../lib/i18n/context.js";
6
+ import { useIsTruncated } from "../../hooks/use-is-truncated.js";
5
7
  import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
6
8
  import { typographyVariants } from "./typography.js";
7
9
  function Card({ className, size = "default", ...props }) {
@@ -10,7 +12,21 @@ function Card({ className, size = "default", ...props }) {
10
12
  function CardHeader({ className, ...props }) {
11
13
  return (_jsx("div", { "data-slot": "card-header", className: cn("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3", className), ...props }));
12
14
  }
13
- function CardTitle({ className, tooltip, children, ...props }) {
15
+ function CardTitle({ className, tooltip, moreInformationLabel, children, ...props }) {
16
+ const { t } = useC4Dictionary();
17
+ // No focusable ancestor wraps this title (unlike NavBreadcrumb's label
18
+ // button) — plain static text, per the "Truncated Text" decision tree in
19
+ // docs/specs/shadcn/patterns.md. `tabIndex={0}` goes directly on the label
20
+ // span so it becomes its own minimal focus stop; the pre-existing `tooltip`
21
+ // prop above is a separate, unrelated info-icon affordance.
22
+ const { ref: labelRef, isTruncated, measure, } = useIsTruncated();
23
+ React.useLayoutEffect(() => {
24
+ measure();
25
+ });
26
+ const labelSpan = (_jsx("span", { ref: labelRef, tabIndex: 0, onPointerEnter: measure, onFocus: measure, className: "min-w-0 truncate rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: children }));
27
+ // Mounted only when clipped — see nav-breadcrumb.tsx for why an
28
+ // unconditionally-mounted Tooltip is never the right default.
29
+ const labelElement = isTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: labelSpan }), _jsx(TooltipContent, { children: children })] })) : (labelSpan);
14
30
  return (_jsx("div", { "data-slot": "card-title", className: cn(
15
31
  // min-w-0: without it, this grid item's flex-in-grid content (below)
16
32
  // reports its unwrapped text as the item's min-content size, so
@@ -21,7 +37,7 @@ function CardTitle({ className, tooltip, children, ...props }) {
21
37
  // Share the type scale via `typographyVariants`; the sm-size Card keeps
22
38
  // its 14px override appended after (a distinct group-data modifier, so
23
39
  // tailwind-merge does not drop the base text-base).
24
- typographyVariants({ variant: "heading-sm" }), "group-data-[size=sm]/card:text-sm", className), ...props, children: _jsxs("span", { className: "flex min-w-0 items-center gap-[0.3125rem]", children: [_jsx("span", { className: "min-w-0 truncate", children: children }), tooltip != null && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "inline-flex size-3.5 shrink-0 cursor-help items-center justify-center rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", "aria-label": "More information", children: _jsx(Info, { className: "size-3.5" }) }) }), _jsx(TooltipContent, { children: tooltip })] }))] }) }));
40
+ typographyVariants({ variant: "heading-sm" }), "group-data-[size=sm]/card:text-sm", className), ...props, children: _jsxs("span", { className: "flex min-w-0 items-center gap-[0.3125rem]", children: [labelElement, tooltip != null && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "inline-flex size-3.5 shrink-0 cursor-help items-center justify-center rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", "aria-label": moreInformationLabel ?? t("card.moreInformation"), children: _jsx(Info, { className: "size-3.5" }) }) }), _jsx(TooltipContent, { children: tooltip })] }))] }) }));
25
41
  }
26
42
  function CardDescription({ className, ...props }) {
27
43
  return (_jsx("div", { "data-slot": "card-description", className: cn(typographyVariants({ variant: "body-subtle" }), className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/components/ui/card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,SAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACkD;IAC1D,OAAO,CACL,2BACY,MAAM,eACL,IAAI,EACf,SAAS,EAAE,EAAE,CACX,wXAAwX,EACxX,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,oSAAoS,EACpS,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACoD;IAC5D,OAAO,CACL,2BACY,YAAY,EACtB,SAAS,EAAE,EAAE;QACX,qEAAqE;QACrE,gEAAgE;QAChE,kEAAkE;QAClE,iEAAiE;QACjE,+CAA+C;QAC/C,SAAS;QACT,wEAAwE;QACxE,uEAAuE;QACvE,oDAAoD;QACpD,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAC7C,mCAAmC,EACnC,SAAS,CACV,KACG,KAAK,YAET,gBAAM,SAAS,EAAC,2CAA2C,aACzD,eAAM,SAAS,EAAC,kBAAkB,YAAE,QAAQ,GAAQ,EACnD,OAAO,IAAI,IAAI,IAAI,CAClB,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4IAA4I,gBAC3I,kBAAkB,YAE7B,KAAC,IAAI,IAAC,SAAS,EAAC,UAAU,GAAG,GACtB,GACM,EACjB,KAAC,cAAc,cAAE,OAAO,GAAkB,IAClC,CACX,IACI,GACH,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IAC3E,OAAO,CACL,2BACY,kBAAkB,EAC5B,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,KACpE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,2BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,KAC3D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,mHAAmH,EACnH,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/components/ui/card.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ declare function ChartContainer({ id, className, children, config, loading, empt
12
12
  config: ChartConfig;
13
13
  loading?: boolean;
14
14
  empty?: boolean;
15
+ /** Message shown in place of the chart when `empty` is set. Sourced from the i18n dictionary at key `"chart.empty"` when omitted. */
15
16
  emptyMessage?: string;
16
17
  children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
17
18
  }): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/chart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/chart.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import * as React from "react";
3
3
  import * as RechartsPrimitive from "recharts";
4
4
  import { cn } from "../../lib/utils.js";
5
+ import { useC4Dictionary } from "../../lib/i18n/context.js";
5
6
  import { CATEGORICAL_ORDER } from "./chart-colors.js";
6
7
  import { Skeleton } from "./skeleton.js";
7
8
  /**
@@ -37,10 +38,11 @@ function useChart() {
37
38
  }
38
39
  return context;
39
40
  }
40
- function ChartContainer({ id, className, children, config, loading = false, empty = false, emptyMessage = "No data", ...props }) {
41
+ function ChartContainer({ id, className, children, config, loading = false, empty = false, emptyMessage, ...props }) {
42
+ const { t } = useC4Dictionary();
41
43
  const generatedId = React.useId();
42
44
  const chartId = `chart-${generatedId.replace(/:/g, "")}`;
43
- return (_jsx(ChartContext.Provider, { value: { config }, children: _jsxs("div", { id: id, "data-slot": "chart", "data-chart": chartId, "aria-busy": loading || undefined, className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick-value]:fill-neutral-foreground-subtle [&_.recharts-cartesian-grid_line]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-radial-bar-background-sector]:fill-neutral-background-strong [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-neutral-background-strong [&_.recharts-reference-line-line]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden", className), ...props, children: [_jsx(ChartStyle, { id: chartId, config: config }), loading ? (_jsx(Skeleton, { className: "h-full w-full" })) : empty ? (_jsx("div", { className: "flex h-full w-full items-center justify-center text-neutral-foreground-subtle", children: emptyMessage })) : (_jsx(RechartsPrimitive.ResponsiveContainer, { width: "100%", height: "100%", children: children }))] }) }));
45
+ return (_jsx(ChartContext.Provider, { value: { config }, children: _jsxs("div", { id: id, "data-slot": "chart", "data-chart": chartId, "aria-busy": loading || undefined, className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick-value]:fill-neutral-foreground-subtle [&_.recharts-cartesian-grid_line]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-radial-bar-background-sector]:fill-neutral-background-strong [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-neutral-background-strong [&_.recharts-reference-line-line]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden", className), ...props, children: [_jsx(ChartStyle, { id: chartId, config: config }), loading ? (_jsx(Skeleton, { className: "h-full w-full" })) : empty ? (_jsx("div", { className: "flex h-full w-full items-center justify-center text-neutral-foreground-subtle", children: emptyMessage ?? t("chart.empty") })) : (_jsx(RechartsPrimitive.ResponsiveContainer, { width: "100%", height: "100%", children: children }))] }) }));
44
46
  }
45
47
  function ChartStyle({ id, config }) {
46
48
  const entries = Object.entries(config);