@camunda/design-system 0.57.0 → 0.59.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.
- package/dist/carbon-compat/accordion-skeleton.d.ts +8 -2
- package/dist/carbon-compat/accordion-skeleton.d.ts.map +1 -1
- package/dist/carbon-compat/accordion-skeleton.js +4 -2
- package/dist/carbon-compat/accordion-skeleton.js.map +1 -1
- package/dist/carbon-compat/c3-data-table.d.ts +7 -1
- package/dist/carbon-compat/c3-data-table.d.ts.map +1 -1
- package/dist/carbon-compat/c3-data-table.js +8 -6
- package/dist/carbon-compat/c3-data-table.js.map +1 -1
- package/dist/carbon-compat/code-snippet.d.ts +2 -2
- package/dist/carbon-compat/code-snippet.d.ts.map +1 -1
- package/dist/carbon-compat/code-snippet.js +8 -6
- package/dist/carbon-compat/code-snippet.js.map +1 -1
- package/dist/carbon-compat/error-boundary.d.ts +2 -1
- package/dist/carbon-compat/error-boundary.d.ts.map +1 -1
- package/dist/carbon-compat/error-boundary.js +11 -1
- package/dist/carbon-compat/error-boundary.js.map +1 -1
- package/dist/carbon-compat/modal.d.ts.map +1 -1
- package/dist/carbon-compat/modal.js +5 -1
- package/dist/carbon-compat/modal.js.map +1 -1
- package/dist/carbon-compat/search.d.ts +4 -1
- package/dist/carbon-compat/search.d.ts.map +1 -1
- package/dist/carbon-compat/search.js +4 -2
- package/dist/carbon-compat/search.js.map +1 -1
- package/dist/carbon-compat/table-batch-actions.d.ts +5 -1
- package/dist/carbon-compat/table-batch-actions.d.ts.map +1 -1
- package/dist/carbon-compat/table-batch-actions.js +8 -3
- package/dist/carbon-compat/table-batch-actions.js.map +1 -1
- package/dist/carbon-compat/table-expand.d.ts +5 -1
- package/dist/carbon-compat/table-expand.d.ts.map +1 -1
- package/dist/carbon-compat/table-expand.js +6 -2
- package/dist/carbon-compat/table-expand.js.map +1 -1
- package/dist/carbon-compat/table-select.d.ts +9 -2
- package/dist/carbon-compat/table-select.d.ts.map +1 -1
- package/dist/carbon-compat/table-select.js +5 -2
- package/dist/carbon-compat/table-select.js.map +1 -1
- package/dist/carbon-compat/table-toolbar.d.ts +1 -0
- package/dist/carbon-compat/table-toolbar.d.ts.map +1 -1
- package/dist/carbon-compat/table-toolbar.js +5 -2
- package/dist/carbon-compat/table-toolbar.js.map +1 -1
- package/dist/src/components/ui/alert-dialog.js +1 -1
- package/dist/src/components/ui/alert-dialog.js.map +1 -1
- package/dist/src/components/ui/alert.d.ts +3 -1
- package/dist/src/components/ui/alert.d.ts.map +1 -1
- package/dist/src/components/ui/alert.js +4 -2
- package/dist/src/components/ui/alert.js.map +1 -1
- package/dist/src/components/ui/app-header.d.ts +1 -0
- package/dist/src/components/ui/app-header.d.ts.map +1 -1
- package/dist/src/components/ui/app-header.js +4 -2
- package/dist/src/components/ui/app-header.js.map +1 -1
- package/dist/src/components/ui/app-sidebar.d.ts +49 -2
- package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
- package/dist/src/components/ui/app-sidebar.js +20 -9
- package/dist/src/components/ui/app-sidebar.js.map +1 -1
- package/dist/src/components/ui/breadcrumb.d.ts +7 -1
- package/dist/src/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/src/components/ui/breadcrumb.js +6 -3
- package/dist/src/components/ui/breadcrumb.js.map +1 -1
- package/dist/src/components/ui/c4-provider.d.ts +10 -0
- package/dist/src/components/ui/c4-provider.d.ts.map +1 -1
- package/dist/src/components/ui/c4-provider.js +11 -2
- package/dist/src/components/ui/c4-provider.js.map +1 -1
- package/dist/src/components/ui/card.d.ts +3 -1
- package/dist/src/components/ui/card.d.ts.map +1 -1
- package/dist/src/components/ui/card.js +5 -3
- package/dist/src/components/ui/card.js.map +1 -1
- package/dist/src/components/ui/chart.d.ts +1 -0
- package/dist/src/components/ui/chart.d.ts.map +1 -1
- package/dist/src/components/ui/chart.js +5 -3
- package/dist/src/components/ui/chart.js.map +1 -1
- package/dist/src/components/ui/checkbox.js +1 -1
- package/dist/src/components/ui/checkbox.js.map +1 -1
- package/dist/src/components/ui/code-block.d.ts +5 -0
- package/dist/src/components/ui/code-block.d.ts.map +1 -1
- package/dist/src/components/ui/code-block.js +14 -7
- package/dist/src/components/ui/code-block.js.map +1 -1
- package/dist/src/components/ui/combobox.d.ts +2 -0
- package/dist/src/components/ui/combobox.d.ts.map +1 -1
- package/dist/src/components/ui/combobox.js +9 -5
- package/dist/src/components/ui/combobox.js.map +1 -1
- package/dist/src/components/ui/data-table.d.ts +63 -6
- package/dist/src/components/ui/data-table.d.ts.map +1 -1
- package/dist/src/components/ui/data-table.js +38 -23
- package/dist/src/components/ui/data-table.js.map +1 -1
- package/dist/src/components/ui/date-picker.d.ts +1 -0
- package/dist/src/components/ui/date-picker.d.ts.map +1 -1
- package/dist/src/components/ui/date-picker.js +6 -2
- package/dist/src/components/ui/date-picker.js.map +1 -1
- package/dist/src/components/ui/date-range-picker.d.ts +3 -0
- package/dist/src/components/ui/date-range-picker.d.ts.map +1 -1
- package/dist/src/components/ui/date-range-picker.js +6 -4
- package/dist/src/components/ui/date-range-picker.js.map +1 -1
- package/dist/src/components/ui/dialog.d.ts +6 -2
- package/dist/src/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/components/ui/dialog.js +8 -5
- package/dist/src/components/ui/dialog.js.map +1 -1
- package/dist/src/components/ui/dropdown.js +2 -2
- package/dist/src/components/ui/file-uploader.d.ts +4 -4
- package/dist/src/components/ui/file-uploader.d.ts.map +1 -1
- package/dist/src/components/ui/file-uploader.js +19 -9
- package/dist/src/components/ui/file-uploader.js.map +1 -1
- package/dist/src/components/ui/filter-bar.d.ts +12 -0
- package/dist/src/components/ui/filter-bar.d.ts.map +1 -0
- package/dist/src/components/ui/filter-bar.js +24 -0
- package/dist/src/components/ui/filter-bar.js.map +1 -0
- package/dist/src/components/ui/inline-edit.d.ts +1 -1
- package/dist/src/components/ui/inline-edit.d.ts.map +1 -1
- package/dist/src/components/ui/inline-edit.js +4 -2
- package/dist/src/components/ui/inline-edit.js.map +1 -1
- package/dist/src/components/ui/meter.d.ts +1 -0
- package/dist/src/components/ui/meter.d.ts.map +1 -1
- package/dist/src/components/ui/meter.js +7 -3
- package/dist/src/components/ui/meter.js.map +1 -1
- package/dist/src/components/ui/multi-select.d.ts +9 -0
- package/dist/src/components/ui/multi-select.d.ts.map +1 -1
- package/dist/src/components/ui/multi-select.js +16 -5
- package/dist/src/components/ui/multi-select.js.map +1 -1
- package/dist/src/components/ui/multi-step-dialog.d.ts +25 -1
- package/dist/src/components/ui/multi-step-dialog.d.ts.map +1 -1
- package/dist/src/components/ui/multi-step-dialog.js +18 -7
- package/dist/src/components/ui/multi-step-dialog.js.map +1 -1
- package/dist/src/components/ui/nav-breadcrumb.d.ts +29 -12
- package/dist/src/components/ui/nav-breadcrumb.d.ts.map +1 -1
- package/dist/src/components/ui/nav-breadcrumb.js +69 -24
- package/dist/src/components/ui/nav-breadcrumb.js.map +1 -1
- package/dist/src/components/ui/notifications.d.ts +52 -5
- package/dist/src/components/ui/notifications.d.ts.map +1 -1
- package/dist/src/components/ui/notifications.js +25 -10
- package/dist/src/components/ui/notifications.js.map +1 -1
- package/dist/src/components/ui/radio-group.js +1 -1
- package/dist/src/components/ui/radio-group.js.map +1 -1
- package/dist/src/components/ui/scorecard.d.ts +1 -0
- package/dist/src/components/ui/scorecard.d.ts.map +1 -1
- package/dist/src/components/ui/scorecard.js +8 -3
- package/dist/src/components/ui/scorecard.js.map +1 -1
- package/dist/src/components/ui/search-input.d.ts +1 -1
- package/dist/src/components/ui/search-input.d.ts.map +1 -1
- package/dist/src/components/ui/search-input.js +4 -2
- package/dist/src/components/ui/search-input.js.map +1 -1
- package/dist/src/components/ui/sheet.d.ts +5 -2
- package/dist/src/components/ui/sheet.d.ts.map +1 -1
- package/dist/src/components/ui/sheet.js +5 -3
- package/dist/src/components/ui/sheet.js.map +1 -1
- package/dist/src/components/ui/sidebar-provider.d.ts.map +1 -1
- package/dist/src/components/ui/sidebar-provider.js +5 -1
- package/dist/src/components/ui/sidebar-provider.js.map +1 -1
- package/dist/src/components/ui/split-button.d.ts +1 -0
- package/dist/src/components/ui/split-button.d.ts.map +1 -1
- package/dist/src/components/ui/split-button.js +4 -2
- package/dist/src/components/ui/split-button.js.map +1 -1
- package/dist/src/components/ui/switch.js +1 -1
- package/dist/src/components/ui/switch.js.map +1 -1
- package/dist/src/components/ui/table.js +2 -2
- package/dist/src/components/ui/table.js.map +1 -1
- package/dist/src/components/ui/tabs.js +1 -1
- package/dist/src/components/ui/toast.d.ts +6 -1
- package/dist/src/components/ui/toast.d.ts.map +1 -1
- package/dist/src/components/ui/toast.js +4 -2
- package/dist/src/components/ui/toast.js.map +1 -1
- package/dist/src/components/ui/toggle-group.js +1 -1
- package/dist/src/components/ui/toggle-group.js.map +1 -1
- package/dist/src/components/ui/tree-view.d.ts +10 -2
- package/dist/src/components/ui/tree-view.d.ts.map +1 -1
- package/dist/src/components/ui/tree-view.js +9 -4
- package/dist/src/components/ui/tree-view.js.map +1 -1
- package/dist/src/components/ui/user-menu.d.ts +12 -1
- package/dist/src/components/ui/user-menu.d.ts.map +1 -1
- package/dist/src/components/ui/user-menu.js +5 -3
- package/dist/src/components/ui/user-menu.js.map +1 -1
- package/dist/src/examples/project-detail/ProjectDetailPage.d.ts.map +1 -1
- package/dist/src/examples/project-detail/ProjectDetailPage.js +5 -3
- package/dist/src/examples/project-detail/ProjectDetailPage.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/i18n/context.d.ts +48 -0
- package/dist/src/lib/i18n/context.d.ts.map +1 -0
- package/dist/src/lib/i18n/context.js +157 -0
- package/dist/src/lib/i18n/context.js.map +1 -0
- package/dist/src/lib/i18n/dictionary.d.ts +148 -0
- package/dist/src/lib/i18n/dictionary.d.ts.map +1 -0
- package/dist/src/lib/i18n/dictionary.js +131 -0
- package/dist/src/lib/i18n/dictionary.js.map +1 -0
- package/dist/styles.css +44 -42
- package/package.json +3 -2
|
@@ -2,7 +2,7 @@ import * as React from "react";
|
|
|
2
2
|
type SearchInputProps = Omit<React.ComponentProps<"input">, "type"> & {
|
|
3
3
|
/** Called after the clear path resets the value and fires the synthesized `onChange("")`. */
|
|
4
4
|
onClear?: () => void;
|
|
5
|
-
/** Accessible name for the clear button. Only name assistive tech announces — native cancel button is suppressed. */
|
|
5
|
+
/** Accessible name for the clear button. Only name assistive tech announces — native cancel button is suppressed. Sourced from the i18n dictionary at key `"searchInput.clear"` when omitted. */
|
|
6
6
|
clearLabel?: string;
|
|
7
7
|
};
|
|
8
8
|
declare const SearchInput: React.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/search-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/search-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,KAAK,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG;IACpE,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iMAAiM;IACjM,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAwGF,QAAA,MAAM,WAAW,wGAEhB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
|
|
@@ -2,9 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { SearchIcon, XIcon } from "../../icons/lucide.js";
|
|
4
4
|
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
5
6
|
import { withRef } from "../../lib/with-ref.js";
|
|
6
7
|
import { Input } from "./input.js";
|
|
7
|
-
function SearchInputImpl({ ref, value, defaultValue, disabled, onChange, onClear, onKeyDown, clearLabel
|
|
8
|
+
function SearchInputImpl({ ref, value, defaultValue, disabled, onChange, onClear, onKeyDown, clearLabel, className, ...props }) {
|
|
9
|
+
const { t } = useC4Dictionary();
|
|
8
10
|
const inputRef = React.useRef(null);
|
|
9
11
|
const [internalValue, setInternalValue] = React.useState(defaultValue !== undefined ? String(defaultValue) : "");
|
|
10
12
|
const isControlled = value !== undefined;
|
|
@@ -50,7 +52,7 @@ function SearchInputImpl({ ref, value, defaultValue, disabled, onChange, onClear
|
|
|
50
52
|
// `className` sizes/positions the whole search affordance (wrapper), not the
|
|
51
53
|
// bare input — the clear button is absolutely positioned against this wrapper,
|
|
52
54
|
// so routing width here keeps the button pinned to the field's real edge.
|
|
53
|
-
_jsxs("div", { "data-slot": "search-input", className: cn("relative", className), children: [_jsx(SearchIcon, { "aria-hidden": "true", className: "pointer-events-none absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-neutral-foreground-subtle" }), _jsx(Input, { ...props, ref: setRefs, type: "search", role: "searchbox", value: currentValue, disabled: disabled, onChange: handleChange, onKeyDown: handleKeyDown, className: cn("pl-8 [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none", showClear && "pr-9") }), showClear && (_jsx("button", { type: "button", "aria-label": clearLabel, onClick: handleClear, className: "absolute right-2 top-1/2 inline-flex size-7 -translate-y-1/2 items-center justify-center rounded-sm text-neutral-foreground-subtle hover:text-neutral-foreground-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx(XIcon, { "aria-hidden": "true", className: "h-4 w-4" }) }))] }));
|
|
55
|
+
_jsxs("div", { "data-slot": "search-input", className: cn("relative", className), children: [_jsx(SearchIcon, { "aria-hidden": "true", className: "pointer-events-none absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-neutral-foreground-subtle" }), _jsx(Input, { ...props, ref: setRefs, type: "search", role: "searchbox", value: currentValue, disabled: disabled, onChange: handleChange, onKeyDown: handleKeyDown, className: cn("pl-8 [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none", showClear && "pr-9") }), showClear && (_jsx("button", { type: "button", "aria-label": clearLabel ?? t("searchInput.clear"), onClick: handleClear, className: "absolute right-2 top-1/2 inline-flex size-7 -translate-y-1/2 items-center justify-center rounded-sm text-neutral-foreground-subtle hover:text-neutral-foreground-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: _jsx(XIcon, { "aria-hidden": "true", className: "h-4 w-4" }) }))] }));
|
|
54
56
|
}
|
|
55
57
|
const SearchInput = withRef(SearchInputImpl);
|
|
56
58
|
export { SearchInput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-input.js","sourceRoot":"","sources":["../../../../src/components/ui/search-input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAShC,SAAS,eAAe,CAAC,EACvB,GAAG,EACH,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,
|
|
1
|
+
{"version":3,"file":"search-input.js","sourceRoot":"","sources":["../../../../src/components/ui/search-input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ declare function SheetOverlay({ className, ...props }: React.ComponentProps<type
|
|
|
9
9
|
declare const sheetVariants: (props?: ({
|
|
10
10
|
side?: "bottom" | "left" | "right" | "top" | null | undefined;
|
|
11
11
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
|
-
|
|
12
|
+
type SheetContentProps = React.ComponentProps<typeof SheetPrimitive.Content> & VariantProps<typeof sheetVariants> & {
|
|
13
13
|
showCloseButton?: boolean;
|
|
14
14
|
/**
|
|
15
15
|
* Element to refocus when the sheet closes, instead of the auto-captured
|
|
@@ -18,7 +18,10 @@ declare function SheetContent({ className, children, side, showCloseButton, onOp
|
|
|
18
18
|
* still-mounted element, typically the menu's own trigger.
|
|
19
19
|
*/
|
|
20
20
|
restoreFocusRef?: React.RefObject<HTMLElement | null>;
|
|
21
|
-
|
|
21
|
+
/** Accessible name for the close button. Sourced from the i18n dictionary, overridable via this prop. */
|
|
22
|
+
closeLabel?: string;
|
|
23
|
+
};
|
|
24
|
+
declare function SheetContent({ className, children, side, showCloseButton, onOpenAutoFocus, onCloseAutoFocus, restoreFocusRef, closeLabel, ...props }: SheetContentProps): React.JSX.Element;
|
|
22
25
|
declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
23
26
|
declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
24
27
|
declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAclE,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,qBAE5E;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,qBAErD;AAED,iBAAS,UAAU,CAAC,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,qBAEnD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,qBAEpD;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,qBAcrD;AAED,QAAA,MAAM,aAAa;;8EAelB,CAAC;AAEF,KAAK,iBAAiB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,GAC1E,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACtD,yGAAyG;IACzG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEJ,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,IAAa,EACb,eAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,GAAG,KAAK,EACT,EAAE,iBAAiB,qBA6CnB;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,qBAUnD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC,qBAQzD;AAED,OAAO,EACL,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,YAAY,GACb,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { Dialog as SheetPrimitive } from "radix-ui";
|
|
|
5
5
|
import { cva } from "class-variance-authority";
|
|
6
6
|
import { XIcon } from "../../icons/lucide.js";
|
|
7
7
|
import { cn } from "../../lib/utils.js";
|
|
8
|
+
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
8
9
|
import { composeCloseAutoFocus, composeOpenAutoFocus, useDialogFocusReturn, } from "../../lib/focus-visible-on-close.js";
|
|
9
10
|
import { C4Provider } from "./c4-provider.js";
|
|
10
11
|
import { Button } from "../ui/button.js";
|
|
@@ -28,7 +29,7 @@ function SheetOverlay({ className, ...props }) {
|
|
|
28
29
|
// plain dim is cleaner for a drawer. Duration matches the panel slide.
|
|
29
30
|
"fixed inset-0 isolate z-50 bg-black/20 duration-200 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
|
|
30
31
|
}
|
|
31
|
-
const sheetVariants = cva("fixed z-50 flex flex-col bg-popover text-sm text-popover-foreground ring-1 ring-border outline-none transition ease-in-out data-open:animate-in data-open:duration-200 data-closed:animate-out data-closed:duration-200", {
|
|
32
|
+
const sheetVariants = cva("fixed z-50 flex flex-col bg-popover text-sm text-popover-foreground ring-1 ring-border shadow-lg outline-none transition ease-in-out data-open:animate-in data-open:duration-200 data-closed:animate-out data-closed:duration-200", {
|
|
32
33
|
variants: {
|
|
33
34
|
side: {
|
|
34
35
|
left: "inset-y-0 left-0 h-full w-3/4 max-w-sm border-r border-border data-closed:slide-out-to-left data-open:slide-in-from-left",
|
|
@@ -39,8 +40,9 @@ const sheetVariants = cva("fixed z-50 flex flex-col bg-popover text-sm text-popo
|
|
|
39
40
|
},
|
|
40
41
|
defaultVariants: { side: "left" },
|
|
41
42
|
});
|
|
42
|
-
function SheetContent({ className, children, side = "left", showCloseButton = true, onOpenAutoFocus, onCloseAutoFocus, restoreFocusRef, ...props }) {
|
|
43
|
+
function SheetContent({ className, children, side = "left", showCloseButton = true, onOpenAutoFocus, onCloseAutoFocus, restoreFocusRef, closeLabel, ...props }) {
|
|
43
44
|
const dialogFocusReturn = useDialogFocusReturn(restoreFocusRef);
|
|
45
|
+
const { t } = useC4Dictionary();
|
|
44
46
|
return (_jsx(SheetPortal, { children: _jsxs(C4Provider, { children: [_jsx(SheetOverlay, {}), _jsxs(SheetPrimitive.Content, { "data-slot": "sheet-content", "data-side": side,
|
|
45
47
|
// #26413 — restore focus to the real launcher on close, even for
|
|
46
48
|
// controlled-`open` usage with no `SheetTrigger` (see
|
|
@@ -48,7 +50,7 @@ function SheetContent({ className, children, side = "left", showCloseButton = tr
|
|
|
48
50
|
onOpenAutoFocus: composeOpenAutoFocus(onOpenAutoFocus, dialogFocusReturn.onOpenAutoFocus),
|
|
49
51
|
// #259 — make the trigger's restored focus ring visible on a mouse
|
|
50
52
|
// close (see focus-visible-on-close).
|
|
51
|
-
onCloseAutoFocus: composeCloseAutoFocus(onCloseAutoFocus, dialogFocusReturn.onCloseAutoFocus), className: cn(sheetVariants({ side }), className), ...props, children: [children, showCloseButton && (_jsx(SheetPrimitive.Close, { "data-slot": "sheet-close", asChild: true, children: _jsxs(Button, { variant: "ghost", className: "absolute top-2 right-2", size: "icon-sm", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "
|
|
53
|
+
onCloseAutoFocus: composeCloseAutoFocus(onCloseAutoFocus, dialogFocusReturn.onCloseAutoFocus), className: cn(sheetVariants({ side }), className), ...props, children: [children, showCloseButton && (_jsx(SheetPrimitive.Close, { "data-slot": "sheet-close", asChild: true, children: _jsxs(Button, { variant: "ghost", className: "absolute top-2 right-2", size: "icon-sm", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: closeLabel ?? t("sheet.close") })] }) }))] })] }) }));
|
|
52
54
|
}
|
|
53
55
|
function SheetHeader({ className, ...props }) {
|
|
54
56
|
return (_jsx("div", { "data-slot": "sheet-header", className: cn("flex flex-col gap-1.5 p-4", className), ...props }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../src/components/ui/sheet.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,SAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAoD;IAC3E,OAAO,KAAC,cAAc,CAAC,IAAI,iBAAW,OAAO,KAAK,KAAK,GAAI,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EAC4C;IACpD,OAAO,KAAC,cAAc,CAAC,OAAO,iBAAW,eAAe,KAAK,KAAK,GAAI,CAAC;AACzE,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,GAAG,KAAK,EAC0C;IAClD,OAAO,KAAC,cAAc,CAAC,KAAK,iBAAW,aAAa,KAAK,KAAK,GAAI,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EAC2C;IACnD,OAAO,KAAC,cAAc,CAAC,MAAM,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EAC4C;IACpD,OAAO,CACL,KAAC,cAAc,CAAC,OAAO,iBACX,eAAe,EACzB,SAAS,EAAE,EAAE;QACX,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,6IAA6I,EAC7I,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,GAAG,CACvB,
|
|
1
|
+
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../src/components/ui/sheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sidebar-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sidebar-provider.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/sidebar-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAO9C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAID,8EAA8E;AAC9E,wBAAgB,UAAU,IAAI,mBAAmB,GAAG,IAAI,CAEvD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAaD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,eAAsB,EACtB,YAAsB,EACtB,iBAAyB,EACzB,cAAyB,EACzB,QAAQ,EAAE,YAAY,GACvB,EAAE,oBAAoB,qBA8DtB;AAED,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,mBAAmB,qBA2CrB"}
|
|
@@ -4,6 +4,7 @@ import * as React from "react";
|
|
|
4
4
|
import { Menu } from "../../icons/lucide.js";
|
|
5
5
|
import { useIsMobile } from "../../hooks/use-is-mobile.js";
|
|
6
6
|
import { Button } from "../ui/button.js";
|
|
7
|
+
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
7
8
|
import { cn } from "../../lib/utils.js";
|
|
8
9
|
const EXPANDED_STORAGE_KEY = "c4-sidebar-expanded";
|
|
9
10
|
const WIDTH_STORAGE_KEY = "c4-sidebar-width";
|
|
@@ -68,8 +69,11 @@ export function SidebarProvider({ children, defaultExpanded = true, defaultWidth
|
|
|
68
69
|
*/
|
|
69
70
|
export function SidebarTrigger({ onClick, children, className, ...props }) {
|
|
70
71
|
const ctx = useSidebar();
|
|
72
|
+
const { t } = useC4Dictionary();
|
|
71
73
|
const isOpen = ctx?.mobileOpen ?? false;
|
|
72
|
-
return (_jsx(Button, { variant: "ghost", size: "icon", "aria-label": isOpen
|
|
74
|
+
return (_jsx(Button, { variant: "ghost", size: "icon", "aria-label": isOpen
|
|
75
|
+
? t("sidebarProvider.closeNavigation")
|
|
76
|
+
: t("sidebarProvider.openNavigation"), ...props, "data-slot": "sidebar-trigger", "data-state": isOpen ? "open" : "closed", className: cn("data-[state=open]:bg-neutral-background-medium dark:data-[state=open]:bg-neutral-background-medium", className), onClick: (e) => {
|
|
73
77
|
onClick?.(e);
|
|
74
78
|
if (!e.defaultPrevented) {
|
|
75
79
|
ctx?.setMobileOpen(!isOpen);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-provider.js","sourceRoot":"","sources":["../../../../src/components/ui/sidebar-provider.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sidebar-provider.js","sourceRoot":"","sources":["../../../../src/components/ui/sidebar-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ type SplitButtonProps = {
|
|
|
8
8
|
variant?: VariantProps<typeof buttonVariants>["variant"];
|
|
9
9
|
size?: SplitButtonSize;
|
|
10
10
|
onPrimaryClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
11
|
+
/** Accessible name for the dropdown-trigger segment. Sourced from the i18n dictionary at key `"splitButton.moreOptions"` when omitted. */
|
|
11
12
|
dropdownLabel?: string;
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/split-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"split-button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/split-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,OAAO,EAAU,cAAc,EAAE,MAAM,UAAU,CAAC;AAOlD,KAAK,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAYtD,KAAK,gBAAgB,GAAG;IACtB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,cAAc,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,0IAA0I;IAC1I,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAqDF,QAAA,MAAM,WAAW,sGAA6D,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -3,6 +3,7 @@ import * as React from "react";
|
|
|
3
3
|
import {} from "class-variance-authority";
|
|
4
4
|
import { ChevronDown } from "../../icons/lucide.js";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
6
7
|
import { withRef } from "../../lib/with-ref.js";
|
|
7
8
|
import { Button, buttonVariants } from "./button.js";
|
|
8
9
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from "./dropdown.js";
|
|
@@ -12,9 +13,10 @@ const iconSizeMap = {
|
|
|
12
13
|
xs: "icon-xs",
|
|
13
14
|
lg: "icon-lg",
|
|
14
15
|
};
|
|
15
|
-
function SplitButtonImpl({ ref, label, variant = "default", size = "default", onPrimaryClick, dropdownLabel
|
|
16
|
+
function SplitButtonImpl({ ref, label, variant = "default", size = "default", onPrimaryClick, dropdownLabel, disabled = false, className, children, }) {
|
|
17
|
+
const { t } = useC4Dictionary();
|
|
16
18
|
const triggerSize = iconSizeMap[size];
|
|
17
|
-
return (_jsxs("div", { ref: ref, role: "group", "data-slot": "split-button", className: cn("inline-flex rounded-lg shadow-
|
|
19
|
+
return (_jsxs("div", { ref: ref, role: "group", "data-slot": "split-button", className: cn("inline-flex rounded-lg shadow-none", className), children: [_jsx(Button, { variant: variant, size: size, onClick: onPrimaryClick, disabled: disabled, className: "rounded-r-none border-r-0 shadow-none", children: label }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: variant, size: triggerSize, disabled: disabled, "aria-label": dropdownLabel ?? t("splitButton.moreOptions"), className: "rounded-l-none border-l border-l-primary-foreground/25 shadow-none", children: _jsx(ChevronDown, { "aria-hidden": "true" }) }) }), _jsx(DropdownMenuContent, { children: children })] })] }));
|
|
18
20
|
}
|
|
19
21
|
const SplitButton = withRef(SplitButtonImpl);
|
|
20
22
|
export { SplitButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-button.js","sourceRoot":"","sources":["../../../../src/components/ui/split-button.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAqB,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,GAGb;IACF,OAAO,EAAE,MAAM;IACf,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;CACd,CAAC;
|
|
1
|
+
{"version":3,"file":"split-button.js","sourceRoot":"","sources":["../../../../src/components/ui/split-button.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAqB,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,GAGb;IACF,OAAO,EAAE,MAAM;IACf,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;CACd,CAAC;AAeF,SAAS,eAAe,CAAC,EACvB,GAAG,EACH,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,cAAc,EACd,aAAa,EACb,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,QAAQ,GACS;IACjB,MAAM,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,eACF,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,aAE9D,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,uCAAuC,YAEhD,KAAK,GACC,EACT,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAI1B,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,QAAQ,gBACN,aAAa,IAAI,CAAC,CAAC,yBAAyB,CAAC,EACzD,SAAS,EAAC,oEAAoE,YAE9E,KAAC,WAAW,mBAAa,MAAM,GAAG,GAC3B,GACW,EACtB,KAAC,mBAAmB,cAAE,QAAQ,GAAuB,IACxC,IACX,CACP,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,OAAO,CAAmC,eAAe,CAAC,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -4,7 +4,7 @@ import * as React from "react";
|
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
5
|
import { Switch as SwitchPrimitive } from "radix-ui";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
|
-
const switchTrackVariants = cva("peer relative inline-block shrink-0 cursor-pointer rounded-full border-0 p-0 transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-
|
|
7
|
+
const switchTrackVariants = cva("peer relative inline-block shrink-0 cursor-pointer rounded-full border-0 p-0 transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-accent-action-default data-[state=unchecked]:bg-switch-background", {
|
|
8
8
|
variants: {
|
|
9
9
|
size: {
|
|
10
10
|
// 24×44 track, 20×20 thumb, +20px slide on check.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../src/components/ui/switch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,MAAM,mBAAmB,GAAG,GAAG,CAC7B,
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../src/components/ui/switch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,MAAM,mBAAmB,GAAG,GAAG,CAC7B,oSAAoS,EACpS;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,kDAAkD;YAClD,EAAE,EAAE,UAAU;YACd,kEAAkE;YAClE,8DAA8D;YAC9D,2CAA2C;YAC3C,EAAE,EAAE,SAAS;SACd;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAG;AAC7B,yEAAyE;AACzE,gEAAgE;AAChE,oEAAoE;AACpE,0EAA0E;AAC1E,4BAA4B;AAC5B,yUAAyU,EACzU;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,2CAA2C;YAC/C,EAAE,EAAE,2CAA2C;SAChD;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAC;AAKF,SAAS,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAe;IACxD,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,YAET,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAC5C,GACmB,CACxB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -25,7 +25,7 @@ function Table({ size = "md", className, containerClassName, ...props }) {
|
|
|
25
25
|
// is meant to own vertical scrolling — the page-level layout does.
|
|
26
26
|
// Pin `overflow-y` to `hidden` so only the intentional horizontal
|
|
27
27
|
// overflow (wide tables) ever scrolls here.
|
|
28
|
-
"relative w-full overflow-x-auto overflow-y-hidden rounded-xl border bg-neutral-background-subtle shadow-
|
|
28
|
+
"relative w-full overflow-x-auto overflow-y-hidden rounded-xl border bg-neutral-background-subtle shadow-sm", containerClassName), children: _jsx("table", { "data-slot": "table", "data-size": size,
|
|
29
29
|
// `border-collapse` is required for row-level `border-b` to render.
|
|
30
30
|
// c4 imports Tailwind without preflight, so `<table>` defaults to the
|
|
31
31
|
// browser's `border-separate` where borders on `<tr>` are ignored.
|
|
@@ -41,7 +41,7 @@ function TableFooter({ className, ...props }) {
|
|
|
41
41
|
return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("border-t bg-neutral-background-medium font-medium [&>tr]:last:border-b-0", className), ...props }));
|
|
42
42
|
}
|
|
43
43
|
function TableRow({ className, ...props }) {
|
|
44
|
-
return (_jsx("tr", { "data-slot": "table-row", className: cn("border-b transition-colors hover:bg-neutral-background-medium has-aria-expanded:bg-neutral-background-medium data-[state=selected]:bg-
|
|
44
|
+
return (_jsx("tr", { "data-slot": "table-row", className: cn("border-b transition-colors hover:bg-neutral-background-medium has-aria-expanded:bg-neutral-background-medium data-[state=selected]:bg-accent-background-subtle", className), ...props }));
|
|
45
45
|
}
|
|
46
46
|
function TableHead({ className, ...props }) {
|
|
47
47
|
const size = React.useContext(TableSizeContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/components/ui/table.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAY,IAAI,CAAC,CAAC;AAE9D,MAAM,eAAe,GAA8B;IACjD,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;CAChB,CAAC;AAEF,MAAM,eAAe,GAA8B;IACjD,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;CAChB,CAAC;AAEF,SAAS,KAAK,CAAC,EACb,IAAI,GAAG,IAAI,EACX,SAAS,EACT,kBAAkB,EAClB,GAAG,KAAK,EAIT;IACC,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YACpC,2BACY,iBAAiB,EAC3B,SAAS,EAAE,EAAE;YACX,6DAA6D;YAC7D,+DAA+D;YAC/D,gEAAgE;YAChE,kEAAkE;YAClE,kEAAkE;YAClE,iEAAiE;YACjE,mEAAmE;YACnE,kEAAkE;YAClE,4CAA4C;YAC5C,
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/components/ui/table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ function TabsList({ className, variant = "default", ...props }) {
|
|
|
21
21
|
return (_jsx(TabsPrimitive.List, { "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className), ...props }));
|
|
22
22
|
}
|
|
23
23
|
function TabsTrigger({ className, ...props }) {
|
|
24
|
-
return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn("relative inline-flex h-[calc(100%-2px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap text-neutral-foreground-strong transition-all duration-200 group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 dark:text-neutral-foreground-subtle group-data-[variant=default]/tabs-list:data-active:shadow-
|
|
24
|
+
return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn("relative inline-flex h-[calc(100%-2px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap text-neutral-foreground-strong transition-all duration-200 group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 dark:text-neutral-foreground-subtle group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "not-data-active:hover:bg-neutral-background-strong", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-neutral-background-subtle data-active:text-neutral-foreground-strong dark:data-active:border-input dark:data-active:text-neutral-foreground-strong", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className), ...props }));
|
|
25
25
|
}
|
|
26
26
|
function TabsContent({ className, ...props }) {
|
|
27
27
|
return (_jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn("flex-1 text-sm outline-none", className), ...props }));
|
|
@@ -2,6 +2,11 @@ import * as React from "react";
|
|
|
2
2
|
type ToastPosition = "top-left" | "top-right" | "top-center" | "bottom-left" | "bottom-right" | "bottom-center";
|
|
3
3
|
type ToasterProps = {
|
|
4
4
|
position?: ToastPosition;
|
|
5
|
+
/**
|
|
6
|
+
* Accessible name for every toast's close button. Sourced from the i18n
|
|
7
|
+
* dictionary at key `"toast.dismiss"` when omitted.
|
|
8
|
+
*/
|
|
9
|
+
dismissLabel?: string;
|
|
5
10
|
};
|
|
6
11
|
type ToastAction = {
|
|
7
12
|
label: string;
|
|
@@ -35,7 +40,7 @@ type ToastFn = {
|
|
|
35
40
|
* wrapper's public API, so no `withRef()` wrapping is needed (AGENTS.md Rule #4 applies
|
|
36
41
|
* only to components that forward a ref).
|
|
37
42
|
*/
|
|
38
|
-
declare function Toaster({ position }: ToasterProps): React.JSX.Element;
|
|
43
|
+
declare function Toaster({ position, dismissLabel }: ToasterProps): React.JSX.Element;
|
|
39
44
|
/**
|
|
40
45
|
* The callable used everywhere else — never sonner's own `toast` re-exported directly.
|
|
41
46
|
* `options.duration` resolution uses `??`, not `||`: sonner treats a literal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,KAAK,aAAa,GACd,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,cAAc,GACd,eAAe,CAAC;AAEpB,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAE1D,KAAK,YAAY,GAAG;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAC5B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CAChE,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACpE,OAAO,EAAE,CACP,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,CAAC,EAAE,YAAY,KACnB,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,MAAM,GAAG,MAAM,CAAC;IAC5E,OAAO,EAAE,CACP,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,CAAC,EAAE,YAAY,KACnB,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,MAAM,GAAG,MAAM,CAAC;IAC7E,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAyMF;;;;;;;GAOG;AACH,iBAAS,OAAO,CAAC,EAAE,QAAsB,EAAE,YAAY,EAAE,EAAE,YAAY,qBAiBtE;AA+BD;;;;;GAKG;AACH,QAAA,MAAM,KAAK,EAAE,OAuCZ,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,GACpB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import * as React from "react";
|
|
|
3
3
|
import { Toaster as SonnerToaster, toast as sonnerToast, } from "sonner";
|
|
4
4
|
import { CheckCircle2, CircleAlert, Info, Loader2, TriangleAlert, X, } from "../../icons/lucide.js";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
6
7
|
import { buttonVariants } from "./button.js";
|
|
7
8
|
import { typographyVariants } from "./typography.js";
|
|
8
9
|
// ── Styling contract — neutral floating surface, icon-only kind color ──────
|
|
@@ -167,13 +168,14 @@ const TOAST_ICONS = {
|
|
|
167
168
|
* wrapper's public API, so no `withRef()` wrapping is needed (AGENTS.md Rule #4 applies
|
|
168
169
|
* only to components that forward a ref).
|
|
169
170
|
*/
|
|
170
|
-
function Toaster({ position = "top-right" }) {
|
|
171
|
+
function Toaster({ position = "top-right", dismissLabel }) {
|
|
172
|
+
const { t } = useC4Dictionary();
|
|
171
173
|
return (_jsx(SonnerToaster, { position: position, richColors: false, closeButton: true, icons: TOAST_ICONS, toastOptions: {
|
|
172
174
|
unstyled: true,
|
|
173
175
|
classNames: TOAST_CLASSNAMES,
|
|
174
176
|
// Overrides sonner's native "Close toast" default — matches Alert's own
|
|
175
177
|
// dismiss button wording (confirmed by design review, see toast.specs.ts).
|
|
176
|
-
closeButtonAriaLabel: "
|
|
178
|
+
closeButtonAriaLabel: dismissLabel ?? t("toast.dismiss"),
|
|
177
179
|
} }));
|
|
178
180
|
}
|
|
179
181
|
// ── toast ────────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,GAGrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,OAAO,EACP,aAAa,EACb,CAAC,GACF,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { toggleVariants } from "./toggle.js";
|
|
|
10
10
|
// here would clobber those.
|
|
11
11
|
const ToggleGroupContext = React.createContext({});
|
|
12
12
|
function ToggleGroup({ className, variant = "default", size = "default", children, ...props }) {
|
|
13
|
-
return (_jsx(ToggleGroupPrimitive.Root, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, className: cn("group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-
|
|
13
|
+
return (_jsx(ToggleGroupPrimitive.Root, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, className: cn("group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-none", className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: children }) }));
|
|
14
14
|
}
|
|
15
15
|
function ToggleGroupItem({ className, children, variant, size, ...props }) {
|
|
16
16
|
const context = React.useContext(ToggleGroupContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAqB,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,8EAA8E;AAC9E,4EAA4E;AAC5E,4BAA4B;AAC5B,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAE5C,EAAE,CAAC,CAAC;AAEN,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,QAAQ,EACR,GAAG,KAAK,EAE2B;IACnC,OAAO,CACL,KAAC,oBAAoB,CAAC,IAAI,iBACd,cAAc,kBACV,OAAO,eACV,IAAI,EACf,SAAS,EAAE,EAAE,CACX,
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAqB,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,8EAA8E;AAC9E,4EAA4E;AAC5E,4BAA4B;AAC5B,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAE5C,EAAE,CAAC,CAAC;AAEN,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,QAAQ,EACR,GAAG,KAAK,EAE2B;IACnC,OAAO,CACL,KAAC,oBAAoB,CAAC,IAAI,iBACd,cAAc,kBACV,OAAO,eACV,IAAI,EACf,SAAS,EAAE,EAAE,CACX,0FAA0F,EAC1F,SAAS,CACV,KACG,KAAK,YAET,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAClD,QAAQ,GACmB,GACJ,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EAE2B;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACrD,0EAA0E;IAC1E,sEAAsE;IACtE,sCAAsC;IACtC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IACnD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAE1C,OAAO,CACL,KAAC,oBAAoB,CAAC,IAAI,iBACd,mBAAmB,kBACf,eAAe,eAClB,YAAY,EACvB,SAAS,EAAE,EAAE,CACX,cAAc,CAAC;YACb,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,YAAY;SACnB,CAAC,EACF,6LAA6L,EAC7L,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACiB,CAC7B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -48,15 +48,23 @@ export interface TreeViewProps {
|
|
|
48
48
|
size?: "xs" | "sm";
|
|
49
49
|
/** Activate @tanstack/react-virtual when visible node count exceeds this value. */
|
|
50
50
|
virtualizeThreshold?: number;
|
|
51
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Content rendered when data is empty. Sourced from the i18n dictionary at
|
|
53
|
+
* key `"treeView.noItems"` when omitted (`undefined`). Pass `null` to
|
|
54
|
+
* intentionally suppress the message entirely (the empty-state container
|
|
55
|
+
* still renders, just with no content) — that is a real, distinct value
|
|
56
|
+
* from omitting the prop, not treated as "unset".
|
|
57
|
+
*/
|
|
52
58
|
emptyState?: React.ReactNode;
|
|
53
59
|
/** Render skeleton rows instead of data. */
|
|
54
60
|
loading?: boolean;
|
|
55
61
|
loadingRowCount?: number;
|
|
62
|
+
/** Accessible label for the loading skeleton. Sourced from the i18n dictionary, overridable via this prop. */
|
|
63
|
+
loadingLabel?: string;
|
|
56
64
|
className?: string;
|
|
57
65
|
style?: React.CSSProperties;
|
|
58
66
|
id?: string;
|
|
59
67
|
}
|
|
60
68
|
export declare function TreeNode(_props: TreeNodeProps): null;
|
|
61
|
-
export declare function TreeView({ label, hideLabel, data: dataProp, children, selected: selectedProp, onSelect, onToggle, selectionMode, size, virtualizeThreshold, emptyState, loading, loadingRowCount, className, style, id, }: TreeViewProps): React.JSX.Element;
|
|
69
|
+
export declare function TreeView({ label, hideLabel, data: dataProp, children, selected: selectedProp, onSelect, onToggle, selectionMode, size, virtualizeThreshold, emptyState, loading, loadingRowCount, loadingLabel, className, style, id, }: TreeViewProps): React.JSX.Element;
|
|
62
70
|
//# sourceMappingURL=tree-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/tree-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/tree-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sFAAsF;IACtF,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IACrE,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8GAA8G;IAC9G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AA4BD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEpD;AAaD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAiB,EACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,EACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EACR,QAAQ,EACR,aAAwB,EACxB,IAAW,EACX,mBAAmB,EACnB,UAAU,EACV,OAAe,EACf,eAAmB,EACnB,YAAY,EACZ,SAAS,EACT,KAAK,EACL,EAAE,GACH,EAAE,aAAa,qBAknBf"}
|
|
@@ -4,6 +4,7 @@ import * as React from "react";
|
|
|
4
4
|
import { getCoreRowModel, getExpandedRowModel, useReactTable, } from "@tanstack/react-table";
|
|
5
5
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
6
6
|
import { ChevronRight } from "../../icons/lucide.js";
|
|
7
|
+
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
7
8
|
import { cn } from "../../lib/utils.js";
|
|
8
9
|
import { Checkbox } from "./checkbox.js";
|
|
9
10
|
import { Text, typographyVariants } from "./typography.js";
|
|
@@ -40,8 +41,9 @@ const ROW_HEIGHT = {
|
|
|
40
41
|
};
|
|
41
42
|
const isEnabledRow = (row) => !row.original.disabled;
|
|
42
43
|
// ── TreeView ──────────────────────────────────────────────────────────────
|
|
43
|
-
export function TreeView({ label, hideLabel = false, data: dataProp, children, selected: selectedProp, onSelect, onToggle, selectionMode = "single", size = "sm", virtualizeThreshold, emptyState, loading = false, loadingRowCount = 8, className, style, id, }) {
|
|
44
|
+
export function TreeView({ label, hideLabel = false, data: dataProp, children, selected: selectedProp, onSelect, onToggle, selectionMode = "single", size = "sm", virtualizeThreshold, emptyState, loading = false, loadingRowCount = 8, loadingLabel, className, style, id, }) {
|
|
44
45
|
const labelId = React.useId();
|
|
46
|
+
const { t } = useC4Dictionary();
|
|
45
47
|
// Resolve data: `data` prop wins over JSX children
|
|
46
48
|
const resolvedData = React.useMemo(() => {
|
|
47
49
|
if (dataProp !== undefined)
|
|
@@ -383,7 +385,9 @@ export function TreeView({ label, hideLabel = false, data: dataProp, children, s
|
|
|
383
385
|
if (node.disabled)
|
|
384
386
|
return;
|
|
385
387
|
handleSelect(node);
|
|
386
|
-
}, onClick: (e) => e.stopPropagation(), "aria-label":
|
|
388
|
+
}, onClick: (e) => e.stopPropagation(), "aria-label": t("treeView.selectNode", {
|
|
389
|
+
label: typeof node.label === "string" ? node.label : node.id,
|
|
390
|
+
}), className: "shrink-0" })), node.renderIcon && (_jsx(node.renderIcon, { "aria-hidden": true, className: cn("shrink-0 text-neutral-foreground-subtle", size === "xs" ? "size-3" : "size-4") })), _jsx("span", { className: "min-w-0 truncate", children: node.label })] }, row.id));
|
|
387
391
|
}, [
|
|
388
392
|
getCheckState,
|
|
389
393
|
getSiblingInfo,
|
|
@@ -393,6 +397,7 @@ export function TreeView({ label, hideLabel = false, data: dataProp, children, s
|
|
|
393
397
|
selected,
|
|
394
398
|
selectionMode,
|
|
395
399
|
size,
|
|
400
|
+
t,
|
|
396
401
|
tabStopId,
|
|
397
402
|
]);
|
|
398
403
|
// ── Render children group recursively using role="group" ──────────────
|
|
@@ -417,7 +422,7 @@ export function TreeView({ label, hideLabel = false, data: dataProp, children, s
|
|
|
417
422
|
const topLevelRows = allRows.filter((r) => r.depth === 0);
|
|
418
423
|
// ── Loading skeleton ──────────────────────────────────────────────────
|
|
419
424
|
if (loading) {
|
|
420
|
-
return (_jsxs("div", { "data-slot": "tree-view", id: id, className: cn("flex flex-col gap-0.5", className), style: style, children: [!hideLabel && (_jsx(Text, { as: "div", id: labelId, variant: "heading-xs", className: "mb-1", children: label })), _jsx("div", { role: "status", "aria-live": "polite", "aria-label":
|
|
425
|
+
return (_jsxs("div", { "data-slot": "tree-view", id: id, className: cn("flex flex-col gap-0.5", className), style: style, children: [!hideLabel && (_jsx(Text, { as: "div", id: labelId, variant: "heading-xs", className: "mb-1", children: label })), _jsx("div", { role: "status", "aria-live": "polite", "aria-label": loadingLabel ?? t("treeView.loading"), children: Array.from({ length: loadingRowCount }).map((_, i) => (_jsxs("div", { className: cn("flex items-center gap-2 rounded-sm px-2", size === "xs" ? "h-6" : "h-8"), children: [_jsx("div", { className: "h-3 w-3 animate-pulse rounded-sm bg-neutral-background-strong" }), _jsx("div", { className: "animate-pulse rounded bg-neutral-background-strong", style: { height: 12, width: `${40 + (i % 4) * 15}%` } })] }, i))) })] }));
|
|
421
426
|
}
|
|
422
427
|
// ── Empty state ───────────────────────────────────────────────────────
|
|
423
428
|
const isEmpty = resolvedData.length === 0;
|
|
@@ -428,7 +433,7 @@ export function TreeView({ label, hideLabel = false, data: dataProp, children, s
|
|
|
428
433
|
return (_jsxs("div", { "data-slot": "tree-view", id: id, className: cn("flex flex-col gap-0.5", className), style: style, children: [!hideLabel && (_jsx(Text, { as: "div", id: labelId, variant: "heading-xs", className: "mb-1", children: label })), isEmpty ? (
|
|
429
434
|
// role="tree" must be empty (no non-treeitem children) to pass axe
|
|
430
435
|
// aria-required-children. Render the visible empty state as a sibling.
|
|
431
|
-
_jsxs(_Fragment, { children: [_jsx("div", { role: "tree", ...treeAriaProps }), _jsx("div", { className: cn("py-4 text-center", typographyVariants({ variant: "body-subtle" })), children: emptyState
|
|
436
|
+
_jsxs(_Fragment, { children: [_jsx("div", { role: "tree", ...treeAriaProps }), _jsx("div", { className: cn("py-4 text-center", typographyVariants({ variant: "body-subtle" })), children: emptyState === undefined ? t("treeView.noItems") : emptyState })] })) : virtualize ? (
|
|
432
437
|
// ── Virtualized path ──────────────────────────────────────────
|
|
433
438
|
// ARIA tradeoff: useVirtualizer renders a flat absolute-positioned list.
|
|
434
439
|
// role="group" wrappers (required by ARIA APG for nested treeitems) cannot
|