@techsio/ui-kit 0.47.0 → 0.48.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.
@@ -0,0 +1,15 @@
1
+ import { createContext, useContext } from "react";
2
+ const VerticalNavigationContext = createContext(null);
3
+ const VerticalNavigationDepthContext = createContext(0);
4
+ const VerticalNavigationBranchContext = createContext(null);
5
+ function useVerticalNavigationContext() {
6
+ const context = useContext(VerticalNavigationContext);
7
+ if (!context) throw new Error("VerticalNavigation parts must be used within VerticalNavigation.Root");
8
+ return context;
9
+ }
10
+ function useVerticalNavigationBranchContext() {
11
+ const context = useContext(VerticalNavigationBranchContext);
12
+ if (!context) throw new Error("VerticalNavigation branch parts must be used within VerticalNavigation.Branch");
13
+ return context;
14
+ }
15
+ export { VerticalNavigationBranchContext, VerticalNavigationContext, VerticalNavigationDepthContext, useVerticalNavigationBranchContext, useVerticalNavigationContext };
@@ -0,0 +1,68 @@
1
+ import { tv } from "../../utils.js";
2
+ const verticalNavigationStyles = tv({
3
+ slots: {
4
+ root: "min-w-0 text-vertical-navigation-fg",
5
+ list: "flex min-w-0 list-none flex-col gap-vertical-navigation-list",
6
+ item: "min-w-0",
7
+ row: "vertical-navigation-row flex min-w-0 items-start gap-vertical-navigation-row rounded-vertical-navigation-item bg-vertical-navigation-item-bg data-current-path:font-vertical-navigation-path",
8
+ link: "vertical-navigation-control focus-visible:vertical-navigation-focus flex min-w-0 flex-1 items-center justify-start gap-vertical-navigation-row whitespace-normal rounded-vertical-navigation-item bg-vertical-navigation-item-bg text-start text-inherit hover:bg-vertical-navigation-item-bg-hover data-current:bg-vertical-navigation-item-bg-current data-current-path:font-vertical-navigation-path data-current:font-vertical-navigation-current data-current:text-vertical-navigation-item-fg-current data-disabled:text-vertical-navigation-item-fg-disabled data-disabled:hover:bg-vertical-navigation-item-bg",
9
+ trigger: "vertical-navigation-control focus-visible:vertical-navigation-focus flex w-full min-w-0 items-center justify-between whitespace-normal rounded-vertical-navigation-item bg-vertical-navigation-item-bg text-start text-inherit hover:bg-vertical-navigation-item-bg-hover disabled:text-vertical-navigation-item-fg-disabled disabled:hover:bg-vertical-navigation-item-bg",
10
+ indicator: "inline-flex shrink-0 data-[state=open]:rotate-180",
11
+ content: "data-guide:vertical-navigation-guide min-w-0 rounded-vertical-navigation-group py-vertical-navigation-group data-indented:ms-vertical-navigation-indent",
12
+ group: "flex min-w-0 flex-col gap-vertical-navigation-group rounded-vertical-navigation-group p-vertical-navigation-group",
13
+ groupLabel: "mb-vertical-navigation-label font-vertical-navigation-label text-vertical-navigation-label-fg text-vertical-navigation-label-sm",
14
+ separator: "my-vertical-navigation-group h-vertical-navigation-separator border-0 bg-vertical-navigation-separator-bg"
15
+ },
16
+ variants: {
17
+ variant: {
18
+ primary: {},
19
+ secondary: {}
20
+ },
21
+ size: {
22
+ sm: {
23
+ root: "text-vertical-navigation-sm",
24
+ link: "min-h-vertical-navigation-item-sm px-vertical-navigation-item-x-sm py-vertical-navigation-item-y-sm",
25
+ trigger: "min-h-vertical-navigation-item-sm px-vertical-navigation-item-x-sm py-vertical-navigation-item-y-sm",
26
+ indicator: "text-vertical-navigation-icon-sm",
27
+ groupLabel: "px-vertical-navigation-item-x-sm"
28
+ },
29
+ md: {
30
+ root: "text-vertical-navigation-md",
31
+ link: "min-h-vertical-navigation-item-md px-vertical-navigation-item-x-md py-vertical-navigation-item-y-md",
32
+ trigger: "min-h-vertical-navigation-item-md px-vertical-navigation-item-x-md py-vertical-navigation-item-y-md",
33
+ indicator: "text-vertical-navigation-icon-md",
34
+ groupLabel: "px-vertical-navigation-item-x-md"
35
+ }
36
+ },
37
+ tone: {
38
+ plain: {
39
+ content: "bg-vertical-navigation-group-bg-plain text-vertical-navigation-group-fg-plain",
40
+ group: "bg-vertical-navigation-group-bg-plain text-vertical-navigation-group-fg-plain"
41
+ },
42
+ subtle: {
43
+ content: "bg-vertical-navigation-group-bg-subtle text-vertical-navigation-group-fg-subtle",
44
+ group: "bg-vertical-navigation-group-bg-subtle text-vertical-navigation-group-fg-subtle"
45
+ },
46
+ accent: {
47
+ content: "bg-vertical-navigation-group-bg-accent text-vertical-navigation-group-fg-accent",
48
+ group: "bg-vertical-navigation-group-bg-accent text-vertical-navigation-group-fg-accent"
49
+ }
50
+ }
51
+ },
52
+ compoundVariants: [
53
+ {
54
+ tone: "accent",
55
+ variant: "secondary",
56
+ class: {
57
+ content: "bg-vertical-navigation-group-bg-secondary text-vertical-navigation-group-fg-secondary",
58
+ group: "bg-vertical-navigation-group-bg-secondary text-vertical-navigation-group-fg-secondary"
59
+ }
60
+ }
61
+ ],
62
+ defaultVariants: {
63
+ size: "md",
64
+ tone: "plain",
65
+ variant: "primary"
66
+ }
67
+ });
68
+ export { verticalNavigationStyles };
@@ -0,0 +1,228 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { mergeProps, normalizeProps, useMachine } from "@zag-js/react";
4
+ import { useContext, useId } from "react";
5
+ import { Button } from "../atoms/button.js";
6
+ import { Icon } from "../atoms/icon.js";
7
+ import { LinkButton } from "../atoms/link-button.js";
8
+ import { VerticalNavigationBranchContext, VerticalNavigationContext, VerticalNavigationDepthContext, useVerticalNavigationBranchContext, useVerticalNavigationContext } from "../internal/molecules/vertical-navigation.context.js";
9
+ import { verticalNavigationStyles } from "../internal/molecules/vertical-navigation.styles.js";
10
+ import * as __rspack_external__zag_js_collapsible_508ff486 from "@zag-js/collapsible";
11
+ function VerticalNavigation({ size = "md", maxIndentDepth = 3, dir, className, children, ...props }) {
12
+ return /*#__PURE__*/ jsx(VerticalNavigationContext.Provider, {
13
+ value: {
14
+ size,
15
+ maxIndentDepth,
16
+ dir
17
+ },
18
+ children: /*#__PURE__*/ jsx(VerticalNavigationDepthContext.Provider, {
19
+ value: 0,
20
+ children: /*#__PURE__*/ jsx(VerticalNavigationBranchContext.Provider, {
21
+ value: null,
22
+ children: /*#__PURE__*/ jsx("nav", {
23
+ ...props,
24
+ className: verticalNavigationStyles({
25
+ size
26
+ }).root({
27
+ className
28
+ }),
29
+ "data-part": "root",
30
+ "data-scope": "vertical-navigation",
31
+ dir: dir,
32
+ children: children
33
+ })
34
+ })
35
+ })
36
+ });
37
+ }
38
+ VerticalNavigation.Root = VerticalNavigation;
39
+ VerticalNavigation.List = function({ children, className, ...props }) {
40
+ useVerticalNavigationContext();
41
+ const depth = useContext(VerticalNavigationDepthContext);
42
+ return /*#__PURE__*/ jsx(VerticalNavigationDepthContext.Provider, {
43
+ value: depth + 1,
44
+ children: /*#__PURE__*/ jsx("ul", {
45
+ ...props,
46
+ className: verticalNavigationStyles().list({
47
+ className
48
+ }),
49
+ "data-depth": depth,
50
+ "data-part": "list",
51
+ "data-scope": "vertical-navigation",
52
+ children: children
53
+ })
54
+ });
55
+ };
56
+ VerticalNavigation.Item = function({ className, ...props }) {
57
+ useVerticalNavigationContext();
58
+ return /*#__PURE__*/ jsx(VerticalNavigationBranchContext.Provider, {
59
+ value: null,
60
+ children: /*#__PURE__*/ jsx("li", {
61
+ ...props,
62
+ className: verticalNavigationStyles().item({
63
+ className
64
+ }),
65
+ "data-part": "item",
66
+ "data-scope": "vertical-navigation"
67
+ })
68
+ });
69
+ };
70
+ VerticalNavigation.Row = function({ className, ...props }) {
71
+ useVerticalNavigationContext();
72
+ const branch = useContext(VerticalNavigationBranchContext);
73
+ return /*#__PURE__*/ jsx("div", {
74
+ ...props,
75
+ className: verticalNavigationStyles().row({
76
+ className
77
+ }),
78
+ "data-current-path": branch?.containsCurrent || void 0,
79
+ "data-part": "row",
80
+ "data-scope": "vertical-navigation"
81
+ });
82
+ };
83
+ VerticalNavigation.Link = function({ current = false, className, ...props }) {
84
+ const { size } = useVerticalNavigationContext();
85
+ const branch = useContext(VerticalNavigationBranchContext);
86
+ return /*#__PURE__*/ jsx(LinkButton, {
87
+ ...props,
88
+ "aria-current": current ? "page" : void 0,
89
+ className: verticalNavigationStyles({
90
+ size
91
+ }).link({
92
+ className
93
+ }),
94
+ "data-current": current || void 0,
95
+ "data-current-path": branch?.containsCurrent || void 0,
96
+ "data-part": "link",
97
+ "data-scope": "vertical-navigation",
98
+ size: "current",
99
+ theme: "unstyled"
100
+ });
101
+ };
102
+ VerticalNavigation.Branch = function({ id, open, defaultOpen, onOpenChange, disabled, getRootNode, containsCurrent = false, children, className, ...props }) {
103
+ const { dir } = useVerticalNavigationContext();
104
+ const generatedId = useId();
105
+ const service = useMachine(__rspack_external__zag_js_collapsible_508ff486.machine, {
106
+ id: id ?? generatedId,
107
+ dir,
108
+ open,
109
+ defaultOpen,
110
+ onOpenChange,
111
+ disabled,
112
+ getRootNode
113
+ });
114
+ const api = __rspack_external__zag_js_collapsible_508ff486.connect(service, normalizeProps);
115
+ return /*#__PURE__*/ jsx(VerticalNavigationBranchContext.Provider, {
116
+ value: {
117
+ api,
118
+ containsCurrent
119
+ },
120
+ children: /*#__PURE__*/ jsx("li", {
121
+ ...mergeProps(props, api.getRootProps()),
122
+ className: verticalNavigationStyles().item({
123
+ className
124
+ }),
125
+ "data-current-path": containsCurrent || void 0,
126
+ "data-part": "branch",
127
+ "data-scope": "vertical-navigation",
128
+ children: children
129
+ })
130
+ });
131
+ };
132
+ VerticalNavigation.BranchTrigger = function({ className, disabled, ...props }) {
133
+ const { size } = useVerticalNavigationContext();
134
+ const { api } = useVerticalNavigationBranchContext();
135
+ return /*#__PURE__*/ jsx(Button, {
136
+ ...mergeProps(props, api.getTriggerProps()),
137
+ className: verticalNavigationStyles({
138
+ size
139
+ }).trigger({
140
+ className
141
+ }),
142
+ "data-part": "branch-trigger",
143
+ "data-scope": "vertical-navigation",
144
+ disabled: disabled || api.disabled,
145
+ size: "current",
146
+ theme: "unstyled"
147
+ });
148
+ };
149
+ VerticalNavigation.BranchIndicator = function({ className, ...props }) {
150
+ const { size } = useVerticalNavigationContext();
151
+ const { api } = useVerticalNavigationBranchContext();
152
+ return /*#__PURE__*/ jsx("span", {
153
+ ...mergeProps(props, api.getIndicatorProps()),
154
+ "aria-hidden": "true",
155
+ className: verticalNavigationStyles({
156
+ size
157
+ }).indicator({
158
+ className
159
+ }),
160
+ "data-part": "branch-indicator",
161
+ "data-scope": "vertical-navigation",
162
+ children: /*#__PURE__*/ jsx(Icon, {
163
+ icon: "token-icon-vertical-navigation-chevron",
164
+ size: "current"
165
+ })
166
+ });
167
+ };
168
+ VerticalNavigation.BranchContent = function({ tone = "plain", variant = "primary", indent = true, showGuide = false, className, ...props }) {
169
+ const { maxIndentDepth } = useVerticalNavigationContext();
170
+ const { api } = useVerticalNavigationBranchContext();
171
+ const depth = useContext(VerticalNavigationDepthContext);
172
+ return /*#__PURE__*/ jsx("div", {
173
+ ...mergeProps(props, api.getContentProps()),
174
+ className: verticalNavigationStyles({
175
+ tone,
176
+ variant
177
+ }).content({
178
+ className
179
+ }),
180
+ "data-guide": showGuide || void 0,
181
+ "data-indented": indent && depth <= maxIndentDepth || void 0,
182
+ "data-part": "branch-content",
183
+ "data-scope": "vertical-navigation",
184
+ "data-tone": tone,
185
+ "data-variant": variant
186
+ });
187
+ };
188
+ VerticalNavigation.Group = function({ tone = "plain", variant = "primary", className, ...props }) {
189
+ useVerticalNavigationContext();
190
+ return /*#__PURE__*/ jsx("div", {
191
+ ...props,
192
+ className: verticalNavigationStyles({
193
+ tone,
194
+ variant
195
+ }).group({
196
+ className
197
+ }),
198
+ "data-part": "group",
199
+ "data-scope": "vertical-navigation",
200
+ "data-tone": tone,
201
+ "data-variant": variant
202
+ });
203
+ };
204
+ VerticalNavigation.GroupLabel = function({ className, ...props }) {
205
+ const { size } = useVerticalNavigationContext();
206
+ return /*#__PURE__*/ jsx("h2", {
207
+ ...props,
208
+ className: verticalNavigationStyles({
209
+ size
210
+ }).groupLabel({
211
+ className
212
+ }),
213
+ "data-part": "group-label",
214
+ "data-scope": "vertical-navigation"
215
+ });
216
+ };
217
+ VerticalNavigation.Separator = function({ className, ...props }) {
218
+ useVerticalNavigationContext();
219
+ return /*#__PURE__*/ jsx("hr", {
220
+ ...props,
221
+ className: verticalNavigationStyles().separator({
222
+ className
223
+ }),
224
+ "data-part": "separator",
225
+ "data-scope": "vertical-navigation"
226
+ });
227
+ };
228
+ export { VerticalNavigation };
@@ -0,0 +1,25 @@
1
+ import type { Api } from "@zag-js/collapsible";
2
+ import type { PropTypes } from "@zag-js/react";
3
+ export type VerticalNavigationSize = "sm" | "md";
4
+ export type VerticalNavigationTone = "plain" | "subtle" | "accent";
5
+ export type VerticalNavigationVariant = "primary" | "secondary";
6
+ export declare const VerticalNavigationContext: import("react").Context<{
7
+ size: VerticalNavigationSize;
8
+ maxIndentDepth: number;
9
+ dir?: "ltr" | "rtl";
10
+ } | null>;
11
+ export declare const VerticalNavigationDepthContext: import("react").Context<number>;
12
+ export declare const VerticalNavigationBranchContext: import("react").Context<{
13
+ api: Api<PropTypes>;
14
+ containsCurrent: boolean;
15
+ } | null>;
16
+ export declare function useVerticalNavigationContext(): {
17
+ size: VerticalNavigationSize;
18
+ maxIndentDepth: number;
19
+ dir?: "ltr" | "rtl";
20
+ };
21
+ export declare function useVerticalNavigationBranchContext(): {
22
+ api: Api<PropTypes>;
23
+ containsCurrent: boolean;
24
+ };
25
+ //# sourceMappingURL=vertical-navigation.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-navigation.context.d.ts","sourceRoot":"","sources":["../../../../src/internal/molecules/vertical-navigation.context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAA;AAChD,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAClE,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,WAAW,CAAA;AAE/D,eAAO,MAAM,yBAAyB;UAC9B,sBAAsB;oBACZ,MAAM;UAChB,KAAK,GAAG,KAAK;SACN,CAAA;AACf,eAAO,MAAM,8BAA8B,iCAAmB,CAAA;AAC9D,eAAO,MAAM,+BAA+B;SACrC,GAAG,CAAC,SAAS,CAAC;qBACF,OAAO;SACX,CAAA;AAEf,wBAAgB,4BAA4B;UAVpC,sBAAsB;oBACZ,MAAM;UAChB,KAAK,GAAG,KAAK;EAgBpB;AAED,wBAAgB,kCAAkC;SAd3C,GAAG,CAAC,SAAS,CAAC;qBACF,OAAO;EAqBzB"}
@@ -0,0 +1,143 @@
1
+ export declare const verticalNavigationStyles: import("tailwind-variants").TVReturnType<{
2
+ variant: {
3
+ primary: {};
4
+ secondary: {};
5
+ };
6
+ size: {
7
+ sm: {
8
+ root: string;
9
+ link: string;
10
+ trigger: string;
11
+ indicator: string;
12
+ groupLabel: string;
13
+ };
14
+ md: {
15
+ root: string;
16
+ link: string;
17
+ trigger: string;
18
+ indicator: string;
19
+ groupLabel: string;
20
+ };
21
+ };
22
+ tone: {
23
+ plain: {
24
+ content: string;
25
+ group: string;
26
+ };
27
+ subtle: {
28
+ content: string;
29
+ group: string;
30
+ };
31
+ accent: {
32
+ content: string;
33
+ group: string;
34
+ };
35
+ };
36
+ }, {
37
+ root: string;
38
+ list: string;
39
+ item: string;
40
+ row: string;
41
+ link: string;
42
+ trigger: string;
43
+ indicator: string;
44
+ content: string;
45
+ group: string;
46
+ groupLabel: string;
47
+ separator: string;
48
+ }, undefined, {
49
+ variant: {
50
+ primary: {};
51
+ secondary: {};
52
+ };
53
+ size: {
54
+ sm: {
55
+ root: string;
56
+ link: string;
57
+ trigger: string;
58
+ indicator: string;
59
+ groupLabel: string;
60
+ };
61
+ md: {
62
+ root: string;
63
+ link: string;
64
+ trigger: string;
65
+ indicator: string;
66
+ groupLabel: string;
67
+ };
68
+ };
69
+ tone: {
70
+ plain: {
71
+ content: string;
72
+ group: string;
73
+ };
74
+ subtle: {
75
+ content: string;
76
+ group: string;
77
+ };
78
+ accent: {
79
+ content: string;
80
+ group: string;
81
+ };
82
+ };
83
+ }, {
84
+ root: string;
85
+ list: string;
86
+ item: string;
87
+ row: string;
88
+ link: string;
89
+ trigger: string;
90
+ indicator: string;
91
+ content: string;
92
+ group: string;
93
+ groupLabel: string;
94
+ separator: string;
95
+ }, import("tailwind-variants").TVReturnType<{
96
+ variant: {
97
+ primary: {};
98
+ secondary: {};
99
+ };
100
+ size: {
101
+ sm: {
102
+ root: string;
103
+ link: string;
104
+ trigger: string;
105
+ indicator: string;
106
+ groupLabel: string;
107
+ };
108
+ md: {
109
+ root: string;
110
+ link: string;
111
+ trigger: string;
112
+ indicator: string;
113
+ groupLabel: string;
114
+ };
115
+ };
116
+ tone: {
117
+ plain: {
118
+ content: string;
119
+ group: string;
120
+ };
121
+ subtle: {
122
+ content: string;
123
+ group: string;
124
+ };
125
+ accent: {
126
+ content: string;
127
+ group: string;
128
+ };
129
+ };
130
+ }, {
131
+ root: string;
132
+ list: string;
133
+ item: string;
134
+ row: string;
135
+ link: string;
136
+ trigger: string;
137
+ indicator: string;
138
+ content: string;
139
+ group: string;
140
+ groupLabel: string;
141
+ separator: string;
142
+ }, undefined, unknown, unknown, undefined>>;
143
+ //# sourceMappingURL=vertical-navigation.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-navigation.styles.d.ts","sourceRoot":"","sources":["../../../../src/internal/molecules/vertical-navigation.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAyEnC,CAAA"}
@@ -0,0 +1,44 @@
1
+ import * as collapsible from "@zag-js/collapsible";
2
+ import { type ComponentProps, type ElementType } from "react";
3
+ import { Button } from "../atoms/button.js";
4
+ import { type LinkButtonProps } from "../atoms/link-button.js";
5
+ import { type VerticalNavigationSize, type VerticalNavigationTone, type VerticalNavigationVariant } from "../internal/molecules/vertical-navigation.context.js";
6
+ export type { VerticalNavigationSize, VerticalNavigationTone, VerticalNavigationVariant, } from "../internal/molecules/vertical-navigation.context.js";
7
+ export type VerticalNavigationProps = Omit<ComponentProps<"nav">, "dir"> & {
8
+ size?: VerticalNavigationSize;
9
+ dir?: "ltr" | "rtl";
10
+ /** Maximum cumulative indent; the semantic nesting is never flattened. */
11
+ maxIndentDepth?: number;
12
+ };
13
+ export declare function VerticalNavigation({ size, maxIndentDepth, dir, className, children, ...props }: VerticalNavigationProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare namespace VerticalNavigation {
15
+ var Root: typeof VerticalNavigation;
16
+ var List: ({ children, className, ...props }: ComponentProps<"ul">) => import("react/jsx-runtime").JSX.Element;
17
+ var Item: ({ className, ...props }: ComponentProps<"li">) => import("react/jsx-runtime").JSX.Element;
18
+ var Row: ({ className, ...props }: ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
19
+ var Link: <T extends ElementType = "a">({ current, className, ...props }: VerticalNavigationLinkProps<T>) => import("react/jsx-runtime").JSX.Element;
20
+ var Branch: ({ id, open, defaultOpen, onOpenChange, disabled, getRootNode, containsCurrent, children, className, ...props }: VerticalNavigationBranchProps) => import("react/jsx-runtime").JSX.Element;
21
+ var BranchTrigger: ({ className, disabled, ...props }: VerticalNavigationBranchTriggerProps) => import("react/jsx-runtime").JSX.Element;
22
+ var BranchIndicator: ({ className, ...props }: ComponentProps<"span">) => import("react/jsx-runtime").JSX.Element;
23
+ var BranchContent: ({ tone, variant, indent, showGuide, className, ...props }: VerticalNavigationBranchContentProps) => import("react/jsx-runtime").JSX.Element;
24
+ var Group: ({ tone, variant, className, ...props }: ComponentProps<"div"> & {
25
+ tone?: VerticalNavigationTone;
26
+ variant?: VerticalNavigationVariant;
27
+ }) => import("react/jsx-runtime").JSX.Element;
28
+ var GroupLabel: ({ className, ...props }: ComponentProps<"h2">) => import("react/jsx-runtime").JSX.Element;
29
+ var Separator: ({ className, ...props }: ComponentProps<"hr">) => import("react/jsx-runtime").JSX.Element;
30
+ }
31
+ export type VerticalNavigationLinkProps<T extends ElementType = "a"> = Omit<LinkButtonProps<T>, "size" | "theme" | "variant" | "block" | "uppercase"> & {
32
+ current?: boolean;
33
+ };
34
+ export type VerticalNavigationBranchProps = Omit<ComponentProps<"li">, "onChange" | "dir"> & Pick<collapsible.Props, "open" | "defaultOpen" | "onOpenChange" | "disabled" | "getRootNode"> & {
35
+ containsCurrent?: boolean;
36
+ };
37
+ export type VerticalNavigationBranchTriggerProps = Omit<ComponentProps<typeof Button>, "size" | "theme" | "variant" | "block" | "uppercase">;
38
+ export type VerticalNavigationBranchContentProps = ComponentProps<"div"> & {
39
+ tone?: VerticalNavigationTone;
40
+ variant?: VerticalNavigationVariant;
41
+ indent?: boolean;
42
+ showGuide?: boolean;
43
+ };
44
+ //# sourceMappingURL=vertical-navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-navigation.d.ts","sourceRoot":"","sources":["../../../src/molecules/vertical-navigation.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,WAAW,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAqB,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC/B,MAAM,mDAAmD,CAAA;AAG1D,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mDAAmD,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG;IACzE,IAAI,CAAC,EAAE,sBAAsB,CAAA;IAC7B,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACnB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAW,EACX,cAAkB,EAClB,GAAG,EACH,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAkBzB;yBAzBe,kBAAkB;;kDAiC/B,cAAc,CAAC,IAAI,CAAC;wCAqBpB,cAAc,CAAC,IAAI,CAAC;uCAiBpB,cAAc,CAAC,KAAK,CAAC;eAoBtB,CAAC,SAAS,WAAW,0CACqB,2BAA2B,CAAC,CAAC,CAAC;iIAuCvE,6BAA6B;2DAqC7B,oCAAoC;mDAoBlC,cAAc,CAAC,MAAM,CAAC;mFA8BxB,oCAAoC;wDAyBpC,cAAc,CAAC,KAAK,CAAC,GAAG;QACzB,IAAI,CAAC,EAAE,sBAAsB,CAAA;QAC7B,OAAO,CAAC,EAAE,yBAAyB,CAAA;KACpC;8CAmBE,cAAc,CAAC,IAAI,CAAC;6CAepB,cAAc,CAAC,IAAI,CAAC;;AAnMvB,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,IAAI,IAAI,CACzE,eAAe,CAAC,CAAC,CAAC,EAClB,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CACrD,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAuBzB,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,cAAc,CAAC,IAAI,CAAC,EACpB,UAAU,GAAG,KAAK,CACnB,GACC,IAAI,CACF,WAAW,CAAC,KAAK,EACjB,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa,CACrE,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAyCnC,MAAM,MAAM,oCAAoC,GAAG,IAAI,CACrD,cAAc,CAAC,OAAO,MAAM,CAAC,EAC7B,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CACrD,CAAA;AA0CD,MAAM,MAAM,oCAAoC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACzE,IAAI,CAAC,EAAE,sBAAsB,CAAA;IAC7B,OAAO,CAAC,EAAE,yBAAyB,CAAA;IACnC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA"}
@@ -2,6 +2,7 @@ export type * as Accordion from "@zag-js/accordion";
2
2
  export type * as Carousel from "@zag-js/carousel";
3
3
  export type * as CascadeSelect from "@zag-js/cascade-select";
4
4
  export type * as Checkbox from "@zag-js/checkbox";
5
+ export type * as Collapsible from "@zag-js/collapsible";
5
6
  export type * as Combobox from "@zag-js/combobox";
6
7
  export type * as Dialog from "@zag-js/dialog";
7
8
  export type * as Drawer from "@zag-js/drawer";
@@ -1 +1 @@
1
- {"version":3,"file":"zag.d.ts","sourceRoot":"","sources":["../../../src/types/zag.ts"],"names":[],"mappings":"AAAA,YAAY,KAAK,SAAS,MAAM,mBAAmB,CAAA;AACnD,YAAY,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AACjD,YAAY,KAAK,aAAa,MAAM,wBAAwB,CAAA;AAC5D,YAAY,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AACjD,YAAY,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AACjD,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACtD,YAAY,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC/C,YAAY,KAAK,IAAI,MAAM,cAAc,CAAA;AACzC,YAAY,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACxD,YAAY,KAAK,UAAU,MAAM,oBAAoB,CAAA;AACrD,YAAY,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC/C,YAAY,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACtD,YAAY,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACxD,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,KAAK,MAAM,eAAe,CAAA;AAC3C,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,IAAI,MAAM,cAAc,CAAA;AACzC,YAAY,KAAK,KAAK,MAAM,eAAe,CAAA;AAC3C,YAAY,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC/C,YAAY,KAAK,IAAI,MAAM,cAAc,CAAA;AACzC,YAAY,KAAK,QAAQ,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"zag.d.ts","sourceRoot":"","sources":["../../../src/types/zag.ts"],"names":[],"mappings":"AAAA,YAAY,KAAK,SAAS,MAAM,mBAAmB,CAAA;AACnD,YAAY,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AACjD,YAAY,KAAK,aAAa,MAAM,wBAAwB,CAAA;AAC5D,YAAY,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AACjD,YAAY,KAAK,WAAW,MAAM,qBAAqB,CAAA;AACvD,YAAY,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AACjD,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACtD,YAAY,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC/C,YAAY,KAAK,IAAI,MAAM,cAAc,CAAA;AACzC,YAAY,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACxD,YAAY,KAAK,UAAU,MAAM,oBAAoB,CAAA;AACrD,YAAY,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC/C,YAAY,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACtD,YAAY,KAAK,WAAW,MAAM,sBAAsB,CAAA;AACxD,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,KAAK,MAAM,eAAe,CAAA;AAC3C,YAAY,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAC7C,YAAY,KAAK,IAAI,MAAM,cAAc,CAAA;AACzC,YAAY,KAAK,KAAK,MAAM,eAAe,CAAA;AAC3C,YAAY,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC/C,YAAY,KAAK,IAAI,MAAM,cAAc,CAAA;AACzC,YAAY,KAAK,QAAQ,MAAM,mBAAmB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"changelog.stories.d.ts","sourceRoot":"","sources":["../../../stories/changelog/changelog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAiOtD,iBAAS,SAAS,4CAUjB;AAED,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAKhC,CAAA;AAED,eAAe,IAAI,CAAA;AAEnB,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,SAAS,CAAM,CAAA"}
1
+ {"version":3,"file":"changelog.stories.d.ts","sourceRoot":"","sources":["../../../stories/changelog/changelog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAyOtD,iBAAS,SAAS,4CAUjB;AAED,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAKhC,CAAA;AAED,eAAe,IAAI,CAAA;AAEnB,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,OAAO,SAAS,CAAM,CAAA"}
@@ -0,0 +1,75 @@
1
+ import type { StoryObj } from "@storybook/react";
2
+ import "./vertical-navigation.stories.css";
3
+ type NavigationStoryProps = {
4
+ size: "sm" | "md";
5
+ tone: "plain" | "subtle" | "accent";
6
+ variant: "primary" | "secondary";
7
+ indent: boolean;
8
+ showGuide: boolean;
9
+ dir: "ltr" | "rtl";
10
+ };
11
+ declare function NavigationStory(args: NavigationStoryProps): import("react/jsx-runtime").JSX.Element;
12
+ declare const meta: {
13
+ title: string;
14
+ component: typeof NavigationStory;
15
+ tags: string[];
16
+ parameters: {
17
+ layout: string;
18
+ docs: {
19
+ description: {
20
+ component: string;
21
+ };
22
+ };
23
+ };
24
+ argTypes: {
25
+ variant: {
26
+ control: "select";
27
+ options: string[];
28
+ if: {
29
+ arg: string;
30
+ eq: string;
31
+ };
32
+ description: string;
33
+ };
34
+ size: {
35
+ control: "select";
36
+ options: string[];
37
+ };
38
+ tone: {
39
+ control: "select";
40
+ options: string[];
41
+ description: string;
42
+ };
43
+ indent: {
44
+ control: "boolean";
45
+ };
46
+ showGuide: {
47
+ control: "boolean";
48
+ };
49
+ dir: {
50
+ control: "select";
51
+ options: string[];
52
+ };
53
+ };
54
+ args: {
55
+ size: "md";
56
+ tone: "subtle";
57
+ variant: "primary";
58
+ indent: true;
59
+ showGuide: false;
60
+ dir: "ltr";
61
+ };
62
+ };
63
+ export default meta;
64
+ type Story = StoryObj<typeof meta>;
65
+ export declare const Playground: Story;
66
+ export declare const Variants: Story;
67
+ export declare const Sizes: Story;
68
+ export declare const States: Story;
69
+ export declare const SevenLevels: Story;
70
+ export declare const Controlled: Story;
71
+ export declare const WithinDrawer: Story;
72
+ export declare const WithinSidebar: Story;
73
+ export declare const RTL: Story;
74
+ export declare const AkrosCatalog: Story;
75
+ //# sourceMappingURL=vertical-navigation.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-navigation.stories.d.ts","sourceRoot":"","sources":["../../../stories/molecules/vertical-navigation.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAQtD,OAAO,mCAAmC,CAAA;AAE1C,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACnC,OAAO,EAAE,SAAS,GAAG,WAAW,CAAA;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,KAAK,GAAG,KAAK,CAAA;CACnB,CAAA;AAoGD,iBAAS,eAAe,CAAC,IAAI,EAAE,oBAAoB,2CAMlD;AAED,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC8B,CAAA;AAExC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,UAAU,EAAE,KAAU,CAAA;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAyBtB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAanB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAuEpB,CAAA;AA+ID,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAA;AA2DD,eAAO,MAAM,UAAU,EAAE,KAGxB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAyB1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KA4B3B,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,KAAgC,CAAA;AAwGlD,eAAO,MAAM,YAAY,EAAE,KAY1B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vertical-navigation.behavior.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-navigation.behavior.spec.d.ts","sourceRoot":"","sources":["../../test/vertical-navigation.behavior.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /** Focused behavior checks against an already running Storybook. */
2
+ declare const _default: import("@playwright/test").PlaywrightTestConfig<{}, {}>;
3
+ export default _default;
4
+ //# sourceMappingURL=vertical-navigation.playwright.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertical-navigation.playwright.config.d.ts","sourceRoot":"","sources":["../../test/vertical-navigation.playwright.config.ts"],"names":[],"mappings":"AAEA,oEAAoE;;AACpE,wBAeE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techsio/ui-kit",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -109,6 +109,7 @@
109
109
  "@zag-js/carousel": "1.43.3",
110
110
  "@zag-js/cascade-select": "1.43.3",
111
111
  "@zag-js/checkbox": "1.43.3",
112
+ "@zag-js/collapsible": "1.43.3",
112
113
  "@zag-js/combobox": "1.43.3",
113
114
  "@zag-js/date-input": "1.43.3",
114
115
  "@zag-js/date-picker": "1.43.3",
@@ -44,6 +44,7 @@
44
44
  @import "./molecules/_toast.css";
45
45
  @import "./molecules/_tour.css";
46
46
  @import "./molecules/_tree-view.css";
47
+ @import "./molecules/_vertical-navigation.css";
47
48
 
48
49
  @import "./organisms/_table.css";
49
50
  @import "./organisms/_data-table.css";
@@ -0,0 +1,155 @@
1
+ @theme static {
2
+ /* BASE COLOR MAPPING */
3
+ --color-vertical-navigation-surface: var(--color-fill-surface);
4
+ --color-vertical-navigation-foreground: var(--color-fg-primary);
5
+ --color-vertical-navigation-accent: var(--color-bg-primary-base);
6
+ --color-vertical-navigation-secondary: var(--color-bg-secondary-base);
7
+ --color-vertical-navigation-accent-light: color-mix(
8
+ in oklab,
9
+ var(--color-vertical-navigation-accent) 15%,
10
+ var(--color-vertical-navigation-surface)
11
+ );
12
+
13
+ /* DERIVED COLORS */
14
+ --color-vertical-navigation-fg: var(--color-vertical-navigation-foreground);
15
+ --color-vertical-navigation-item-bg: transparent;
16
+ --color-vertical-navigation-label-fg: var(
17
+ --color-vertical-navigation-foreground
18
+ );
19
+ --color-vertical-navigation-guide-border: var(--color-border-primary);
20
+ --color-vertical-navigation-separator-bg: var(--color-border-primary);
21
+
22
+ /* STATE VARIATIONS */
23
+ --color-vertical-navigation-item-bg-hover: var(--color-fill-hover);
24
+ --color-vertical-navigation-indicator-fg-hover: color-mix(
25
+ in oklab,
26
+ var(--color-fg-accent-primary) 60%,
27
+ var(--color-vertical-navigation-foreground)
28
+ );
29
+ --color-vertical-navigation-item-bg-current: color-mix(
30
+ in oklab,
31
+ var(--color-vertical-navigation-accent) 30%,
32
+ var(--color-vertical-navigation-surface)
33
+ );
34
+ --color-vertical-navigation-item-fg-current: var(
35
+ --color-vertical-navigation-foreground
36
+ );
37
+
38
+ /* COMPONENT VARIANTS */
39
+ --color-vertical-navigation-group-bg-plain: transparent;
40
+ --color-vertical-navigation-group-fg-plain: var(
41
+ --color-vertical-navigation-foreground
42
+ );
43
+ --color-vertical-navigation-group-bg-subtle: var(
44
+ --color-vertical-navigation-surface
45
+ );
46
+ --color-vertical-navigation-group-fg-subtle: var(
47
+ --color-vertical-navigation-foreground
48
+ );
49
+ --color-vertical-navigation-group-bg-accent: var(
50
+ --color-vertical-navigation-accent-light
51
+ );
52
+ --color-vertical-navigation-group-fg-accent: var(
53
+ --color-vertical-navigation-foreground
54
+ );
55
+
56
+ --color-vertical-navigation-group-bg-secondary: color-mix(
57
+ in oklab,
58
+ var(--color-vertical-navigation-secondary) 15%,
59
+ var(--color-vertical-navigation-surface)
60
+ );
61
+ --color-vertical-navigation-group-fg-secondary: var(
62
+ --color-vertical-navigation-foreground
63
+ );
64
+
65
+ /* DISABLED STATES */
66
+ --color-vertical-navigation-item-fg-disabled: var(--color-fg-disabled);
67
+
68
+ /* SPACING */
69
+ --spacing-vertical-navigation-list: var(--dimension-2);
70
+ --spacing-vertical-navigation-row: var(--spacing-50);
71
+ --spacing-vertical-navigation-group: var(--spacing-100);
72
+ --spacing-vertical-navigation-indent: var(--dimension-12);
73
+ --spacing-vertical-navigation-label: var(--dimension-8);
74
+ --spacing-vertical-navigation-item-sm: var(--height-form-control-sm);
75
+ --spacing-vertical-navigation-item-md: var(--dimension-36);
76
+ --spacing-vertical-navigation-separator: var(--border-width-sm);
77
+ --padding-vertical-navigation-item-x-sm: var(--padding-popup-item-x-sm);
78
+ --padding-vertical-navigation-item-x-md: var(--padding-popup-item-x-md);
79
+ --padding-vertical-navigation-item-y-sm: var(--padding-popup-item-y-sm);
80
+ --padding-vertical-navigation-item-y-md: var(--padding-popup-item-y-md);
81
+ --padding-vertical-navigation-group: var(--dimension-0);
82
+
83
+ /* TYPOGRAPHY */
84
+ --text-vertical-navigation-sm: var(--text-sm);
85
+ --text-vertical-navigation-md: var(--text-base);
86
+ --text-vertical-navigation-label-sm: var(--text-xs);
87
+ --text-vertical-navigation-icon-sm: var(--text-icon-control-sm);
88
+ --text-vertical-navigation-icon-md: var(--text-icon-control-md);
89
+ --font-weight-vertical-navigation-current: var(--font-weight-semibold);
90
+ --font-weight-vertical-navigation-label: var(--font-weight-semibold);
91
+ --font-weight-vertical-navigation-path: var(--font-weight-medium);
92
+
93
+ /* BORDERS & RADIUS */
94
+ --border-width-vertical-navigation: var(--border-width-sm);
95
+ --radius-vertical-navigation-item: var(--radius-sm);
96
+ --radius-vertical-navigation-group: var(--radius-none);
97
+
98
+ /* FOCUS RINGS */
99
+ --color-vertical-navigation-focus-border: var(--color-ring);
100
+ }
101
+
102
+ @utility vertical-navigation-focus {
103
+ outline-style: var(--default-ring-style);
104
+ outline-width: var(--default-ring-width);
105
+ outline-color: var(--color-vertical-navigation-focus-border);
106
+ outline-offset: var(--default-ring-offset);
107
+ }
108
+
109
+ @utility vertical-navigation-guide {
110
+ border-inline-start: var(--border-width-vertical-navigation) solid
111
+ var(--color-vertical-navigation-guide-border);
112
+ }
113
+
114
+ @utility vertical-navigation-row {
115
+ & > [data-part="link"],
116
+ & > [data-part="branch-trigger"] {
117
+ &,
118
+ &:hover,
119
+ &[data-current] {
120
+ background-color: transparent;
121
+ }
122
+ }
123
+
124
+ & > [data-part="branch-trigger"] {
125
+ width: auto;
126
+ flex-shrink: 0;
127
+ }
128
+
129
+ @media (hover: hover) {
130
+ &:hover:not(:has(> [data-part="link"][data-current])):has(
131
+ > [data-part="link"]:not([data-disabled]),
132
+ > [data-part="branch-trigger"]:not(:disabled)
133
+ ) {
134
+ background-color: var(--color-vertical-navigation-item-bg-hover);
135
+ }
136
+
137
+ &
138
+ > [data-part="branch-trigger"]:not(:disabled):hover
139
+ > [data-part="branch-indicator"] {
140
+ color: var(--color-vertical-navigation-indicator-fg-hover);
141
+ }
142
+ }
143
+
144
+ &:has(> [data-part="link"][data-current]) {
145
+ background-color: var(--color-vertical-navigation-item-bg-current);
146
+ }
147
+ }
148
+
149
+ @utility vertical-navigation-control {
150
+ overflow-wrap: anywhere;
151
+ }
152
+
153
+ @utility token-icon-vertical-navigation-chevron {
154
+ @apply token-icon-chevron-down;
155
+ }