@brijbyte/agentic-ui 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +183 -111
- package/dist/accordion/accordion.css +6 -10
- package/dist/accordion/accordion.module.js.map +1 -1
- package/dist/alert-dialog/alert-dialog.css +84 -0
- package/dist/alert-dialog/alert-dialog.d.ts +44 -0
- package/dist/alert-dialog/alert-dialog.d.ts.map +1 -0
- package/dist/alert-dialog/alert-dialog.js +46 -0
- package/dist/alert-dialog/alert-dialog.js.map +1 -0
- package/dist/alert-dialog/alert-dialog.module.css.d.ts +2 -0
- package/dist/alert-dialog/alert-dialog.module.js +14 -0
- package/dist/alert-dialog/alert-dialog.module.js.map +1 -0
- package/dist/alert-dialog/index.d.ts +3 -0
- package/dist/alert-dialog/index.js +4 -0
- package/dist/alert-dialog/parts.d.ts +28 -0
- package/dist/alert-dialog/parts.d.ts.map +1 -0
- package/dist/alert-dialog/parts.js +62 -0
- package/dist/alert-dialog/parts.js.map +1 -0
- package/dist/badge/badge.css +3 -7
- package/dist/badge/badge.module.js.map +1 -1
- package/dist/button/button.css +14 -14
- package/dist/button/button.module.js.map +1 -1
- package/dist/card/card.css +5 -9
- package/dist/card/card.module.js.map +1 -1
- package/dist/checkbox/checkbox.css +3 -7
- package/dist/checkbox/checkbox.module.js.map +1 -1
- package/dist/collapsible/collapsible.css +7 -11
- package/dist/collapsible/collapsible.module.js.map +1 -1
- package/dist/context-menu/context-menu.css +151 -0
- package/dist/context-menu/context-menu.d.ts +36 -0
- package/dist/context-menu/context-menu.d.ts.map +1 -0
- package/dist/context-menu/context-menu.js +54 -0
- package/dist/context-menu/context-menu.js.map +1 -0
- package/dist/context-menu/context-menu.module.css.d.ts +2 -0
- package/dist/context-menu/context-menu.module.js +18 -0
- package/dist/context-menu/context-menu.module.js.map +1 -0
- package/dist/context-menu/index.d.ts +3 -0
- package/dist/context-menu/index.js +4 -0
- package/dist/context-menu/parts.d.ts +38 -0
- package/dist/context-menu/parts.d.ts.map +1 -0
- package/dist/context-menu/parts.js +91 -0
- package/dist/context-menu/parts.js.map +1 -0
- package/dist/dialog/dialog.css +27 -22
- package/dist/dialog/dialog.d.ts +8 -0
- package/dist/dialog/dialog.d.ts.map +1 -1
- package/dist/dialog/dialog.js +7 -4
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/dialog/dialog.module.js +2 -0
- package/dist/dialog/dialog.module.js.map +1 -1
- package/dist/drawer/drawer.css +9 -13
- package/dist/drawer/drawer.module.js.map +1 -1
- package/dist/index.css +1630 -1353
- package/dist/index.d.ts +24 -18
- package/dist/index.js +10 -1
- package/dist/input/input.css +5 -9
- package/dist/input/input.module.js.map +1 -1
- package/dist/layer-order.css +22 -0
- package/dist/menu/menu.css +13 -17
- package/dist/menu/menu.module.js.map +1 -1
- package/dist/number-field/number-field.css +12 -16
- package/dist/number-field/number-field.module.js.map +1 -1
- package/dist/progress/progress.css +1 -5
- package/dist/progress/progress.module.js.map +1 -1
- package/dist/reset.css +6 -6
- package/dist/select/select.css +14 -16
- package/dist/select/select.d.ts +5 -2
- package/dist/select/select.d.ts.map +1 -1
- package/dist/select/select.js +11 -2
- package/dist/select/select.js.map +1 -1
- package/dist/select/select.module.js.map +1 -1
- package/dist/separator/separator.css +1 -5
- package/dist/separator/separator.module.js.map +1 -1
- package/dist/slider/index.d.ts +3 -0
- package/dist/slider/index.js +4 -0
- package/dist/slider/parts.d.ts +38 -0
- package/dist/slider/parts.d.ts.map +1 -0
- package/dist/slider/parts.js +69 -0
- package/dist/slider/parts.js.map +1 -0
- package/dist/slider/slider.css +97 -0
- package/dist/slider/slider.d.ts +38 -0
- package/dist/slider/slider.d.ts.map +1 -0
- package/dist/slider/slider.js +41 -0
- package/dist/slider/slider.js.map +1 -0
- package/dist/slider/slider.module.css.d.ts +2 -0
- package/dist/slider/slider.module.js +15 -0
- package/dist/slider/slider.module.js.map +1 -0
- package/dist/styles/reset.css +6 -6
- package/dist/styles/tokens.css +73 -71
- package/dist/switch/switch.css +2 -6
- package/dist/switch/switch.module.js.map +1 -1
- package/dist/tabs/tabs.css +5 -9
- package/dist/tabs/tabs.module.js.map +1 -1
- package/dist/tailwind-theme.css +23 -23
- package/dist/toast/toast.css +11 -15
- package/dist/toast/toast.module.js.map +1 -1
- package/dist/tokens.css +79 -75
- package/dist/tooltip/tooltip.css +7 -11
- package/dist/tooltip/tooltip.module.js.map +1 -1
- package/package.json +17 -1
- package/src/accordion/accordion.module.css +6 -20
- package/src/alert-dialog/alert-dialog.module.css +91 -0
- package/src/alert-dialog/alert-dialog.tsx +69 -0
- package/src/alert-dialog/index.ts +7 -0
- package/src/alert-dialog/parts.tsx +73 -0
- package/src/badge/badge.module.css +3 -13
- package/src/button/button.module.css +15 -51
- package/src/card/card.module.css +5 -16
- package/src/checkbox/checkbox.module.css +3 -14
- package/src/collapsible/collapsible.module.css +7 -20
- package/src/context-menu/context-menu.module.css +168 -0
- package/src/context-menu/context-menu.tsx +75 -0
- package/src/context-menu/index.ts +21 -0
- package/src/context-menu/parts.tsx +99 -0
- package/src/dialog/dialog.module.css +26 -33
- package/src/dialog/dialog.tsx +14 -1
- package/src/drawer/drawer.module.css +9 -58
- package/src/index.ts +48 -0
- package/src/input/input.module.css +5 -21
- package/src/menu/menu.module.css +13 -43
- package/src/number-field/number-field.module.css +12 -28
- package/src/progress/progress.module.css +1 -10
- package/src/select/select.module.css +14 -35
- package/src/select/select.tsx +14 -5
- package/src/separator/separator.module.css +1 -5
- package/src/slider/index.ts +14 -0
- package/src/slider/parts.tsx +90 -0
- package/src/slider/slider.module.css +110 -0
- package/src/slider/slider.tsx +68 -0
- package/src/styles/layer-order.css +22 -0
- package/src/styles/reset.css +6 -6
- package/src/styles/tailwind-theme.css +23 -23
- package/src/styles/tokens.css +79 -75
- package/src/switch/switch.module.css +2 -12
- package/src/tabs/tabs.module.css +5 -18
- package/src/toast/toast.module.css +11 -51
- package/src/tooltip/tooltip.module.css +7 -18
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
@layer theme, base;
|
|
2
|
-
|
|
3
1
|
@layer components {
|
|
4
2
|
.root_rWN60G {
|
|
5
3
|
flex-direction: column;
|
|
@@ -14,9 +12,9 @@
|
|
|
14
12
|
font-family: var(--font-mono);
|
|
15
13
|
font-size: var(--font-size-sm);
|
|
16
14
|
font-weight: var(--font-weight-medium);
|
|
17
|
-
color: var(--color-
|
|
15
|
+
color: var(--color-primary);
|
|
18
16
|
background: var(--color-surface-1);
|
|
19
|
-
border: var(--border-width-base) solid var(--color-
|
|
17
|
+
border: var(--border-width-base) solid var(--color-line);
|
|
20
18
|
border-radius: var(--radius-md);
|
|
21
19
|
cursor: pointer;
|
|
22
20
|
text-align: left;
|
|
@@ -40,7 +38,7 @@
|
|
|
40
38
|
}
|
|
41
39
|
|
|
42
40
|
.trigger_rWN60G:hover {
|
|
43
|
-
background-color: var(--color-
|
|
41
|
+
background-color: var(--color-hover);
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
.trigger_rWN60G:focus-visible {
|
|
@@ -53,7 +51,7 @@
|
|
|
53
51
|
}
|
|
54
52
|
|
|
55
53
|
.trigger-icon_rWN60G {
|
|
56
|
-
color: var(--color-
|
|
54
|
+
color: var(--color-tertiary);
|
|
57
55
|
transition: transform var(--duration-normal) var(--easing-standard);
|
|
58
56
|
flex-shrink: 0;
|
|
59
57
|
}
|
|
@@ -80,13 +78,11 @@
|
|
|
80
78
|
padding: var(--space-3) var(--space-3) var(--space-3) var(--space-3);
|
|
81
79
|
font-family: var(--font-mono);
|
|
82
80
|
font-size: var(--font-size-sm);
|
|
83
|
-
color: var(--color-
|
|
81
|
+
color: var(--color-secondary);
|
|
84
82
|
line-height: var(--line-height-relaxed);
|
|
85
|
-
border: var(--border-width-base) solid var(--color-
|
|
83
|
+
border: var(--border-width-base) solid var(--color-line);
|
|
86
84
|
border-radius: 0 0 var(--radius-md) var(--radius-md);
|
|
87
|
-
background: var(--color-
|
|
85
|
+
background: var(--color-elevated);
|
|
88
86
|
border-top: none;
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
|
-
|
|
92
|
-
@layer utilities;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.module.js","names":[],"sources":["../../src/collapsible/collapsible.module.css"],"sourcesContent":["@layer
|
|
1
|
+
{"version":3,"file":"collapsible.module.js","names":[],"sources":["../../src/collapsible/collapsible.module.css"],"sourcesContent":["@layer components {\n .root {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\n .trigger {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n padding: var(--space-2) var(--space-3);\n font-family: var(--font-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-primary);\n background: var(--color-surface-1);\n border: var(--border-width-base) solid var(--color-line);\n border-radius: var(--radius-md);\n cursor: pointer;\n outline: none;\n text-align: left;\n user-select: none;\n transition:\n background-color var(--duration-fast) var(--easing-standard),\n border-bottom-left-radius var(--duration-normal) var(--easing-standard) var(--duration-normal),\n border-bottom-right-radius var(--duration-normal) var(--easing-standard) var(--duration-normal),\n border-bottom-color var(--duration-normal) var(--easing-standard) var(--duration-normal);\n }\n .trigger[data-panel-open] {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-bottom-color: transparent;\n transition:\n background-color var(--duration-fast) var(--easing-standard),\n border-bottom-left-radius var(--duration-normal) var(--easing-standard),\n border-bottom-right-radius var(--duration-normal) var(--easing-standard),\n border-bottom-color var(--duration-normal) var(--easing-standard);\n }\n .trigger:hover {\n background-color: var(--color-hover);\n }\n .trigger:focus-visible {\n box-shadow: var(--shadow-focus);\n }\n .trigger[data-disabled] {\n opacity: 0.44;\n cursor: not-allowed;\n }\n .trigger-icon {\n color: var(--color-tertiary);\n flex-shrink: 0;\n transition: transform var(--duration-normal) var(--easing-standard);\n }\n .trigger[data-panel-open] .trigger-icon {\n transform: rotate(90deg);\n }\n .panel {\n height: var(--collapsible-panel-height);\n overflow: hidden;\n transition: height var(--duration-normal) var(--easing-standard);\n }\n /* hide when not using hidden=\"until-found\" */\n .panel[hidden]:not([hidden=\"until-found\"]) {\n display: none;\n }\n .panel[data-starting-style],\n .panel[data-ending-style] {\n height: 0;\n }\n .panel-content {\n padding: var(--space-3) var(--space-3) var(--space-3) var(--space-3);\n font-family: var(--font-mono);\n font-size: var(--font-size-sm);\n color: var(--color-secondary);\n line-height: var(--line-height-relaxed);\n border: var(--border-width-base) solid var(--color-line);\n border-top: none;\n border-radius: 0 0 var(--radius-md) var(--radius-md);\n background: var(--color-elevated);\n }\n}\n"],"mappings":";AAUA,IAAA,6BAAa;CAAG,SAAQ;CAAe,iBAAG;CAAA,QAAA;CAAA,WAAA;CAAA,gBAAA;CAAA"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.positioner_U19WMG {
|
|
3
|
+
z-index: var(--z-dropdown);
|
|
4
|
+
outline: none;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.popup_U19WMG {
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
padding: var(--space-1) 0;
|
|
10
|
+
border-radius: var(--radius-lg);
|
|
11
|
+
background-color: var(--color-overlay);
|
|
12
|
+
border: var(--border-width-base) solid var(--color-line);
|
|
13
|
+
box-shadow: var(--shadow-popover);
|
|
14
|
+
color: var(--color-primary);
|
|
15
|
+
font-family: var(--font-sans);
|
|
16
|
+
font-size: var(--font-size-md);
|
|
17
|
+
min-width: 220px;
|
|
18
|
+
transform-origin: var(--transform-origin);
|
|
19
|
+
transition: opacity .15s var(--easing-ease-out),
|
|
20
|
+
transform .15s var(--easing-ease-out);
|
|
21
|
+
outline: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@supports (backdrop-filter: blur(20px)) {
|
|
25
|
+
.popup_U19WMG {
|
|
26
|
+
-webkit-backdrop-filter: blur(20px) saturate(1.8);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.popup_U19WMG[data-starting-style] {
|
|
31
|
+
opacity: 0;
|
|
32
|
+
transform: scale(.97);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.popup_U19WMG[data-ending-style] {
|
|
36
|
+
opacity: 0;
|
|
37
|
+
transition: opacity 75ms var(--easing-ease-in),
|
|
38
|
+
transform 75ms var(--easing-ease-in);
|
|
39
|
+
transform: scale(.99);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.trigger_U19WMG {
|
|
43
|
+
-webkit-user-select: none;
|
|
44
|
+
user-select: none;
|
|
45
|
+
cursor: default;
|
|
46
|
+
outline: none;
|
|
47
|
+
display: block;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.item_U19WMG {
|
|
51
|
+
align-items: center;
|
|
52
|
+
gap: var(--space-2);
|
|
53
|
+
padding: var(--space-1) var(--space-4);
|
|
54
|
+
font-family: var(--font-sans);
|
|
55
|
+
font-size: var(--font-size-md);
|
|
56
|
+
color: var(--color-primary);
|
|
57
|
+
cursor: default;
|
|
58
|
+
user-select: none;
|
|
59
|
+
outline: none;
|
|
60
|
+
transition: none;
|
|
61
|
+
display: flex;
|
|
62
|
+
position: relative;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.item_U19WMG[data-highlighted] {
|
|
66
|
+
background-color: var(--color-accent);
|
|
67
|
+
color: var(--color-on-accent);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.item_U19WMG[data-disabled] {
|
|
71
|
+
opacity: .36;
|
|
72
|
+
cursor: not-allowed;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.item-icon_U19WMG {
|
|
76
|
+
width: 16px;
|
|
77
|
+
height: 16px;
|
|
78
|
+
color: inherit;
|
|
79
|
+
flex-shrink: 0;
|
|
80
|
+
justify-content: center;
|
|
81
|
+
align-items: center;
|
|
82
|
+
display: flex;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.item-label_U19WMG {
|
|
86
|
+
flex: 1;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.item-shortcut_U19WMG {
|
|
90
|
+
margin-left: var(--space-8);
|
|
91
|
+
font-size: var(--font-size-sm);
|
|
92
|
+
color: var(--color-tertiary);
|
|
93
|
+
flex-shrink: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.item_U19WMG[data-highlighted] .item-shortcut_U19WMG {
|
|
97
|
+
color: color-mix(in srgb, var(--color-on-accent) 60%, transparent);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.submenu-icon_U19WMG {
|
|
101
|
+
color: var(--color-tertiary);
|
|
102
|
+
flex-shrink: 0;
|
|
103
|
+
margin-left: auto;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.item_U19WMG[data-highlighted] .submenu-icon_U19WMG, .submenu-trigger_U19WMG[data-highlighted] .submenu-icon_U19WMG {
|
|
107
|
+
color: color-mix(in srgb, var(--color-on-accent) 70%, transparent);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.submenu-trigger_U19WMG {
|
|
111
|
+
align-items: center;
|
|
112
|
+
gap: var(--space-2);
|
|
113
|
+
padding: var(--space-1) var(--space-4);
|
|
114
|
+
font-family: var(--font-sans);
|
|
115
|
+
font-size: var(--font-size-md);
|
|
116
|
+
color: var(--color-primary);
|
|
117
|
+
cursor: default;
|
|
118
|
+
user-select: none;
|
|
119
|
+
outline: none;
|
|
120
|
+
transition: none;
|
|
121
|
+
display: flex;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.submenu-trigger_U19WMG[data-highlighted], .submenu-trigger_U19WMG[data-popup-open] {
|
|
125
|
+
background-color: var(--color-accent);
|
|
126
|
+
color: var(--color-on-accent);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.submenu-trigger_U19WMG[data-disabled] {
|
|
130
|
+
opacity: .36;
|
|
131
|
+
cursor: not-allowed;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.group-label_U19WMG {
|
|
135
|
+
padding: var(--space-1) var(--space-4) var(--space-0-5);
|
|
136
|
+
font-family: var(--font-sans);
|
|
137
|
+
font-size: var(--font-size-xs);
|
|
138
|
+
font-weight: var(--font-weight-semibold);
|
|
139
|
+
color: var(--color-tertiary);
|
|
140
|
+
text-transform: uppercase;
|
|
141
|
+
letter-spacing: var(--letter-spacing-wide);
|
|
142
|
+
cursor: default;
|
|
143
|
+
user-select: none;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.separator_U19WMG {
|
|
147
|
+
margin: var(--space-1) var(--space-4);
|
|
148
|
+
height: var(--border-width-base);
|
|
149
|
+
background-color: var(--color-line-subtle);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import styles from "./context-menu.module.css";
|
|
4
|
+
|
|
5
|
+
//#region src/context-menu/context-menu.d.ts
|
|
6
|
+
interface ContextMenuItemDef {
|
|
7
|
+
type?: "item";
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
icon?: ReactNode;
|
|
10
|
+
shortcut?: string;
|
|
11
|
+
onSelect?: () => void;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface ContextMenuSeparatorDef {
|
|
15
|
+
type: "separator";
|
|
16
|
+
}
|
|
17
|
+
interface ContextMenuGroupDef {
|
|
18
|
+
type: "group";
|
|
19
|
+
label?: ReactNode;
|
|
20
|
+
items: ContextMenuItemDef[];
|
|
21
|
+
}
|
|
22
|
+
type ContextMenuEntry = ContextMenuItemDef | ContextMenuSeparatorDef | ContextMenuGroupDef;
|
|
23
|
+
interface ContextMenuProps {
|
|
24
|
+
/** The element that can be right-clicked / long-pressed to open the menu. */
|
|
25
|
+
children: ReactElement;
|
|
26
|
+
items: ContextMenuEntry[];
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
declare function ContextMenu({
|
|
30
|
+
children,
|
|
31
|
+
items,
|
|
32
|
+
className
|
|
33
|
+
}: ContextMenuProps): react_jsx_runtime0.JSX.Element;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { ContextMenu, ContextMenuEntry, ContextMenuGroupDef, ContextMenuItemDef, ContextMenuProps, ContextMenuSeparatorDef, styles };
|
|
36
|
+
//# sourceMappingURL=context-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-menu.d.ts","names":[],"sources":["../../src/context-menu/context-menu.tsx"],"mappings":";;;;;UAIiB,kBAAA;EACf,IAAA;EACA,KAAA,EAAO,SAAA;EACP,IAAA,GAAO,SAAA;EACP,QAAA;EACA,QAAA;EACA,QAAA;AAAA;AAAA,UAGe,uBAAA;EACf,IAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,KAAA,GAAQ,SAAA;EACR,KAAA,EAAO,kBAAA;AAAA;AAAA,KAGG,gBAAA,GAAmB,kBAAA,GAAqB,uBAAA,GAA0B,mBAAA;AAAA,UAE7D,gBAAA;EAZuB;EActC,QAAA,EAAU,YAAA;EACV,KAAA,EAAO,gBAAA;EACP,SAAA;AAAA;AAAA,iBAac,WAAA,CAAA;EAAc,QAAA;EAAU,KAAA;EAAO;AAAA,GAAa,gBAAA,GAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import context_menu_module_default from "./context-menu.module.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ContextMenu } from "@base-ui/react/context-menu";
|
|
4
|
+
//#region src/context-menu/context-menu.tsx
|
|
5
|
+
function RenderItem({ item, i }) {
|
|
6
|
+
return /* @__PURE__ */ jsxs(ContextMenu.Item, {
|
|
7
|
+
className: context_menu_module_default.item,
|
|
8
|
+
disabled: item.disabled,
|
|
9
|
+
onClick: item.onSelect,
|
|
10
|
+
children: [
|
|
11
|
+
item.icon && /* @__PURE__ */ jsx("span", {
|
|
12
|
+
className: context_menu_module_default["item-icon"],
|
|
13
|
+
children: item.icon
|
|
14
|
+
}),
|
|
15
|
+
/* @__PURE__ */ jsx("span", {
|
|
16
|
+
className: context_menu_module_default["item-label"],
|
|
17
|
+
children: item.label
|
|
18
|
+
}),
|
|
19
|
+
item.shortcut && /* @__PURE__ */ jsx("span", {
|
|
20
|
+
className: context_menu_module_default["item-shortcut"],
|
|
21
|
+
children: item.shortcut
|
|
22
|
+
})
|
|
23
|
+
]
|
|
24
|
+
}, i);
|
|
25
|
+
}
|
|
26
|
+
function ContextMenu$1({ children, items, className }) {
|
|
27
|
+
return /* @__PURE__ */ jsxs(ContextMenu.Root, { children: [/* @__PURE__ */ jsx(ContextMenu.Trigger, {
|
|
28
|
+
className: `${context_menu_module_default.trigger} ${className ?? ""}`,
|
|
29
|
+
render: children
|
|
30
|
+
}), /* @__PURE__ */ jsx(ContextMenu.Portal, { children: /* @__PURE__ */ jsx(ContextMenu.Positioner, {
|
|
31
|
+
className: context_menu_module_default.positioner,
|
|
32
|
+
children: /* @__PURE__ */ jsx(ContextMenu.Popup, {
|
|
33
|
+
className: context_menu_module_default.popup,
|
|
34
|
+
children: items.map((entry, i) => {
|
|
35
|
+
if (entry.type === "separator") return /* @__PURE__ */ jsx(ContextMenu.Separator, { className: context_menu_module_default.separator }, i);
|
|
36
|
+
if (entry.type === "group") return /* @__PURE__ */ jsxs(ContextMenu.Group, { children: [entry.label && /* @__PURE__ */ jsx(ContextMenu.GroupLabel, {
|
|
37
|
+
className: context_menu_module_default["group-label"],
|
|
38
|
+
children: entry.label
|
|
39
|
+
}), entry.items.map((item, j) => /* @__PURE__ */ jsx(RenderItem, {
|
|
40
|
+
item,
|
|
41
|
+
i: j
|
|
42
|
+
}, j))] }, i);
|
|
43
|
+
return /* @__PURE__ */ jsx(RenderItem, {
|
|
44
|
+
item: entry,
|
|
45
|
+
i
|
|
46
|
+
}, i);
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
}) })] });
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { ContextMenu$1 as ContextMenu };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=context-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-menu.js","names":["BaseContextMenu","styles","ContextMenu"],"sources":["../../src/context-menu/context-menu.tsx"],"sourcesContent":["import type { ReactNode, ReactElement } from \"react\";\nimport { ContextMenu as BaseContextMenu } from \"@base-ui/react/context-menu\";\nimport styles from \"./context-menu.module.css\";\n\nexport interface ContextMenuItemDef {\n type?: \"item\";\n label: ReactNode;\n icon?: ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n disabled?: boolean;\n}\n\nexport interface ContextMenuSeparatorDef {\n type: \"separator\";\n}\n\nexport interface ContextMenuGroupDef {\n type: \"group\";\n label?: ReactNode;\n items: ContextMenuItemDef[];\n}\n\nexport type ContextMenuEntry = ContextMenuItemDef | ContextMenuSeparatorDef | ContextMenuGroupDef;\n\nexport interface ContextMenuProps {\n /** The element that can be right-clicked / long-pressed to open the menu. */\n children: ReactElement;\n items: ContextMenuEntry[];\n className?: string;\n}\n\nfunction RenderItem({ item, i }: { item: ContextMenuItemDef; i: number }) {\n return (\n <BaseContextMenu.Item key={i} className={styles.item} disabled={item.disabled} onClick={item.onSelect}>\n {item.icon && <span className={styles[\"item-icon\"]}>{item.icon}</span>}\n <span className={styles[\"item-label\"]}>{item.label}</span>\n {item.shortcut && <span className={styles[\"item-shortcut\"]}>{item.shortcut}</span>}\n </BaseContextMenu.Item>\n );\n}\n\nexport function ContextMenu({ children, items, className }: ContextMenuProps) {\n return (\n <BaseContextMenu.Root>\n <BaseContextMenu.Trigger className={`${styles.trigger} ${className ?? \"\"}`} render={children} />\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner className={styles.positioner}>\n <BaseContextMenu.Popup className={styles.popup}>\n {items.map((entry, i) => {\n if (entry.type === \"separator\") {\n return <BaseContextMenu.Separator key={i} className={styles.separator} />;\n }\n if (entry.type === \"group\") {\n return (\n <BaseContextMenu.Group key={i}>\n {entry.label && (\n <BaseContextMenu.GroupLabel className={styles[\"group-label\"]}>{entry.label}</BaseContextMenu.GroupLabel>\n )}\n {entry.items.map((item, j) => (\n <RenderItem key={j} item={item} i={j} />\n ))}\n </BaseContextMenu.Group>\n );\n }\n return <RenderItem key={i} item={entry} i={i} />;\n })}\n </BaseContextMenu.Popup>\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n </BaseContextMenu.Root>\n );\n}\n\nexport { styles as ContextMenuStyles };\n"],"mappings":";;;;AAgCA,SAAS,WAAW,EAAE,MAAM,KAA8C;AACxE,QACE,qBAACA,YAAgB,MAAjB;EAA8B,WAAWC,4BAAO;EAAM,UAAU,KAAK;EAAU,SAAS,KAAK;YAA7F;GACG,KAAK,QAAQ,oBAAC,QAAD;IAAM,WAAWA,4BAAO;cAAe,KAAK;IAAY,CAAA;GACtE,oBAAC,QAAD;IAAM,WAAWA,4BAAO;cAAgB,KAAK;IAAa,CAAA;GACzD,KAAK,YAAY,oBAAC,QAAD;IAAM,WAAWA,4BAAO;cAAmB,KAAK;IAAgB,CAAA;GAC7D;IAJI,EAIJ;;AAI3B,SAAgBC,cAAY,EAAE,UAAU,OAAO,aAA+B;AAC5E,QACE,qBAACF,YAAgB,MAAjB,EAAA,UAAA,CACE,oBAACA,YAAgB,SAAjB;EAAyB,WAAW,GAAGC,4BAAO,QAAQ,GAAG,aAAa;EAAM,QAAQ;EAAY,CAAA,EAChG,oBAACD,YAAgB,QAAjB,EAAA,UACE,oBAACA,YAAgB,YAAjB;EAA4B,WAAWC,4BAAO;YAC5C,oBAACD,YAAgB,OAAjB;GAAuB,WAAWC,4BAAO;aACtC,MAAM,KAAK,OAAO,MAAM;AACvB,QAAI,MAAM,SAAS,YACjB,QAAO,oBAACD,YAAgB,WAAjB,EAAmC,WAAWC,4BAAO,WAAa,EAAlC,EAAkC;AAE3E,QAAI,MAAM,SAAS,QACjB,QACE,qBAACD,YAAgB,OAAjB,EAAA,UAAA,CACG,MAAM,SACL,oBAACA,YAAgB,YAAjB;KAA4B,WAAWC,4BAAO;eAAiB,MAAM;KAAmC,CAAA,EAEzG,MAAM,MAAM,KAAK,MAAM,MACtB,oBAAC,YAAD;KAA0B;KAAM,GAAG;KAAK,EAAvB,EAAuB,CACxC,CACoB,EAAA,EAPI,EAOJ;AAG5B,WAAO,oBAAC,YAAD;KAAoB,MAAM;KAAU;KAAK,EAAxB,EAAwB;KAChD;GACoB,CAAA;EACG,CAAA,EACN,CAAA,CACJ,EAAA,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/context-menu/context-menu.module.css
|
|
2
|
+
var context_menu_module_default = {
|
|
3
|
+
"group-label": "group-label_U19WMG",
|
|
4
|
+
"item": "item_U19WMG",
|
|
5
|
+
"item-icon": "item-icon_U19WMG",
|
|
6
|
+
"item-label": "item-label_U19WMG",
|
|
7
|
+
"item-shortcut": "item-shortcut_U19WMG",
|
|
8
|
+
"popup": "popup_U19WMG",
|
|
9
|
+
"positioner": "positioner_U19WMG",
|
|
10
|
+
"separator": "separator_U19WMG",
|
|
11
|
+
"submenu-icon": "submenu-icon_U19WMG",
|
|
12
|
+
"submenu-trigger": "submenu-trigger_U19WMG",
|
|
13
|
+
"trigger": "trigger_U19WMG"
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { context_menu_module_default as default };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=context-menu.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-menu.module.js","names":[],"sources":["../../src/context-menu/context-menu.module.css"],"sourcesContent":["@layer components {\n .positioner {\n outline: none;\n z-index: var(--z-dropdown);\n }\n\n .popup {\n box-sizing: border-box;\n padding: var(--space-1) 0;\n border-radius: var(--radius-lg);\n background-color: var(--color-overlay);\n border: var(--border-width-base) solid var(--color-line);\n box-shadow: var(--shadow-popover);\n color: var(--color-primary);\n font-family: var(--font-sans);\n font-size: var(--font-size-md);\n min-width: 220px;\n transform-origin: var(--transform-origin);\n outline: none;\n transition:\n opacity 150ms var(--easing-ease-out),\n transform 150ms var(--easing-ease-out);\n }\n\n @supports (backdrop-filter: blur(20px)) {\n .popup {\n backdrop-filter: blur(20px) saturate(1.8);\n -webkit-backdrop-filter: blur(20px) saturate(1.8);\n }\n }\n\n .popup[data-starting-style] {\n opacity: 0;\n transform: scale(0.97);\n }\n\n .popup[data-ending-style] {\n opacity: 0;\n transform: scale(0.99);\n transition:\n opacity 75ms var(--easing-ease-in),\n transform 75ms var(--easing-ease-in);\n }\n\n /* ─── Trigger area ───────────────────────────────────────────── */\n\n .trigger {\n display: block;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n cursor: default;\n }\n\n /* ─── Item ───────────────────────────────────────────────────── */\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n /* Full-width — no inset margin */\n padding: var(--space-1) var(--space-4);\n font-family: var(--font-sans);\n font-size: var(--font-size-md);\n color: var(--color-primary);\n cursor: default;\n outline: none;\n user-select: none;\n position: relative;\n transition: none;\n }\n\n .item[data-highlighted] {\n background-color: var(--color-accent);\n color: var(--color-on-accent);\n }\n\n .item[data-disabled] {\n opacity: 0.36;\n cursor: not-allowed;\n }\n\n /* ─── Item internals ─────────────────────────────────────────── */\n\n .item-icon {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n }\n\n .item-label {\n flex: 1;\n }\n\n .item-shortcut {\n margin-left: var(--space-8);\n font-size: var(--font-size-sm);\n color: var(--color-tertiary);\n flex-shrink: 0;\n }\n\n .item[data-highlighted] .item-shortcut {\n color: color-mix(in srgb, var(--color-on-accent) 60%, transparent);\n }\n\n .submenu-icon {\n margin-left: auto;\n color: var(--color-tertiary);\n flex-shrink: 0;\n }\n\n .item[data-highlighted] .submenu-icon,\n .submenu-trigger[data-highlighted] .submenu-icon {\n color: color-mix(in srgb, var(--color-on-accent) 70%, transparent);\n }\n\n /* ─── Submenu trigger ────────────────────────────────────────── */\n\n .submenu-trigger {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n padding: var(--space-1) var(--space-4);\n font-family: var(--font-sans);\n font-size: var(--font-size-md);\n color: var(--color-primary);\n cursor: default;\n outline: none;\n user-select: none;\n transition: none;\n }\n\n .submenu-trigger[data-highlighted],\n .submenu-trigger[data-popup-open] {\n background-color: var(--color-accent);\n color: var(--color-on-accent);\n }\n\n .submenu-trigger[data-disabled] {\n opacity: 0.36;\n cursor: not-allowed;\n }\n\n /* ─── Group label ────────────────────────────────────────────── */\n\n .group-label {\n padding: var(--space-1) var(--space-4) var(--space-0-5);\n font-family: var(--font-sans);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n color: var(--color-tertiary);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing-wide);\n cursor: default;\n user-select: none;\n }\n\n /* ─── Separator ──────────────────────────────────────────────── */\n .separator {\n margin: var(--space-1) var(--space-4);\n height: var(--border-width-base);\n background-color: var(--color-line-subtle);\n }\n}\n"],"mappings":";AAsBA,IAAA,8BAAE;CAAA,eAAA;CAAA,QAAA;CAAA,aAAA;CAAA,cAAA;CAAA,iBAAA;CAAA,SAAA;CAAA,cAAA;CAAA,aAAA;CAAA,gBAAA;CAAA,mBAAA;CAAA,WAAA;CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ContextMenu, ContextMenuEntry, ContextMenuGroupDef, ContextMenuItemDef, ContextMenuProps, ContextMenuSeparatorDef, styles } from "./context-menu.js";
|
|
2
|
+
import { ContextMenuGroup, ContextMenuGroupLabel, ContextMenuGroupLabelProps, ContextMenuGroupProps, ContextMenuItem, ContextMenuItemProps, ContextMenuPopup, ContextMenuPopupProps, ContextMenuSeparator, ContextMenuSeparatorProps, ContextMenuSubmenuTrigger, ContextMenuSubmenuTriggerProps } from "./parts.js";
|
|
3
|
+
export { ContextMenu, type ContextMenuEntry, ContextMenuGroup, type ContextMenuGroupDef, ContextMenuGroupLabel, type ContextMenuGroupLabelProps, type ContextMenuGroupProps, ContextMenuItem, type ContextMenuItemDef, type ContextMenuItemProps, ContextMenuPopup, type ContextMenuPopupProps, type ContextMenuProps, ContextMenuSeparator, type ContextMenuSeparatorDef, type ContextMenuSeparatorProps, styles as ContextMenuStyles, ContextMenuSubmenuTrigger, type ContextMenuSubmenuTriggerProps };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import context_menu_module_default from "./context-menu.module.js";
|
|
2
|
+
import { ContextMenu } from "./context-menu.js";
|
|
3
|
+
import { ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPopup, ContextMenuSeparator, ContextMenuSubmenuTrigger } from "./parts.js";
|
|
4
|
+
export { ContextMenu, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPopup, ContextMenuSeparator, context_menu_module_default as ContextMenuStyles, ContextMenuSubmenuTrigger };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as react from "react";
|
|
2
|
+
import { ComponentPropsWithoutRef } from "react";
|
|
3
|
+
import { ContextMenu } from "@base-ui/react/context-menu";
|
|
4
|
+
|
|
5
|
+
//#region src/context-menu/parts.d.ts
|
|
6
|
+
type BasePopupProps = ComponentPropsWithoutRef<typeof ContextMenu.Popup>;
|
|
7
|
+
type BaseItemProps = ComponentPropsWithoutRef<typeof ContextMenu.Item>;
|
|
8
|
+
type BaseSeparatorProps = ComponentPropsWithoutRef<typeof ContextMenu.Separator>;
|
|
9
|
+
type BaseGroupProps = ComponentPropsWithoutRef<typeof ContextMenu.Group>;
|
|
10
|
+
type BaseGroupLabelProps = ComponentPropsWithoutRef<typeof ContextMenu.GroupLabel>;
|
|
11
|
+
type BaseSubmenuTriggerProps = ComponentPropsWithoutRef<typeof ContextMenu.SubmenuTrigger>;
|
|
12
|
+
interface ContextMenuPopupProps extends Omit<BasePopupProps, "className"> {
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
interface ContextMenuItemProps extends Omit<BaseItemProps, "className"> {
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
interface ContextMenuSeparatorProps extends Omit<BaseSeparatorProps, "className"> {
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
interface ContextMenuGroupProps extends Omit<BaseGroupProps, "className"> {
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
interface ContextMenuGroupLabelProps extends Omit<BaseGroupLabelProps, "className"> {
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
interface ContextMenuSubmenuTriggerProps extends Omit<BaseSubmenuTriggerProps, "className"> {
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
declare const ContextMenuPopup: react.ForwardRefExoticComponent<ContextMenuPopupProps & react.RefAttributes<HTMLDivElement>>;
|
|
31
|
+
declare const ContextMenuItem: react.ForwardRefExoticComponent<ContextMenuItemProps & react.RefAttributes<HTMLElement>>;
|
|
32
|
+
declare const ContextMenuSeparator: react.ForwardRefExoticComponent<ContextMenuSeparatorProps & react.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
declare const ContextMenuGroup: react.ForwardRefExoticComponent<ContextMenuGroupProps & react.RefAttributes<HTMLDivElement>>;
|
|
34
|
+
declare const ContextMenuGroupLabel: react.ForwardRefExoticComponent<ContextMenuGroupLabelProps & react.RefAttributes<HTMLDivElement>>;
|
|
35
|
+
declare const ContextMenuSubmenuTrigger: react.ForwardRefExoticComponent<ContextMenuSubmenuTriggerProps & react.RefAttributes<HTMLElement>>;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ContextMenuGroup, ContextMenuGroupLabel, ContextMenuGroupLabelProps, ContextMenuGroupProps, ContextMenuItem, ContextMenuItemProps, ContextMenuPopup, ContextMenuPopupProps, ContextMenuSeparator, ContextMenuSeparatorProps, ContextMenuSubmenuTrigger, ContextMenuSubmenuTriggerProps };
|
|
38
|
+
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","names":[],"sources":["../../src/context-menu/parts.tsx"],"mappings":";;;;;KA4BK,cAAA,GAAiB,wBAAA,QAAgC,WAAA,CAAgB,KAAA;AAAA,KACjE,aAAA,GAAgB,wBAAA,QAAgC,WAAA,CAAgB,IAAA;AAAA,KAChE,kBAAA,GAAqB,wBAAA,QAAgC,WAAA,CAAgB,SAAA;AAAA,KACrE,cAAA,GAAiB,wBAAA,QAAgC,WAAA,CAAgB,KAAA;AAAA,KACjE,mBAAA,GAAsB,wBAAA,QAAgC,WAAA,CAAgB,UAAA;AAAA,KACtE,uBAAA,GAA0B,wBAAA,QAAgC,WAAA,CAAgB,cAAA;AAAA,UAE9D,qBAAA,SAA8B,IAAA,CAAK,cAAA;EAClD,SAAA;AAAA;AAAA,UAEe,oBAAA,SAA6B,IAAA,CAAK,aAAA;EACjD,SAAA;AAAA;AAAA,UAEe,yBAAA,SAAkC,IAAA,CAAK,kBAAA;EACtD,SAAA;AAAA;AAAA,UAEe,qBAAA,SAA8B,IAAA,CAAK,cAAA;EAClD,SAAA;AAAA;AAAA,UAEe,0BAAA,SAAmC,IAAA,CAAK,mBAAA;EACvD,SAAA;AAAA;AAAA,UAEe,8BAAA,SAAuC,IAAA,CAAK,uBAAA;EAC3D,SAAA;AAAA;AAAA,cAGW,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,qBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOhB,eAAA,EAAe,KAAA,CAAA,yBAAA,CAAA,oBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAOf,oBAAA,EAAoB,KAAA,CAAA,yBAAA,CAAA,yBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAMpB,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,qBAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAOhB,qBAAA,EAAqB,KAAA,CAAA,yBAAA,CAAA,0BAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAMrB,yBAAA,EAAyB,KAAA,CAAA,yBAAA,CAAA,8BAAA,GAAA,KAAA,CAAA,aAAA,CAAA,WAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import context_menu_module_default from "./context-menu.module.js";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { ContextMenu } from "@base-ui/react/context-menu";
|
|
5
|
+
//#region src/context-menu/parts.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Styled primitives for ContextMenu.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu';
|
|
12
|
+
* import { ContextMenuPopup, ContextMenuItem, ContextMenuSeparator } from '@brijbyte/agentic-ui/context-menu';
|
|
13
|
+
*
|
|
14
|
+
* <BaseContextMenu.Root>
|
|
15
|
+
* <BaseContextMenu.Trigger render={<div>Right click me</div>} />
|
|
16
|
+
* <BaseContextMenu.Portal>
|
|
17
|
+
* <BaseContextMenu.Positioner>
|
|
18
|
+
* <ContextMenuPopup>
|
|
19
|
+
* <ContextMenuItem>Cut</ContextMenuItem>
|
|
20
|
+
* <ContextMenuItem>Copy</ContextMenuItem>
|
|
21
|
+
* <ContextMenuSeparator />
|
|
22
|
+
* <ContextMenuItem>Paste</ContextMenuItem>
|
|
23
|
+
* </ContextMenuPopup>
|
|
24
|
+
* </BaseContextMenu.Positioner>
|
|
25
|
+
* </BaseContextMenu.Portal>
|
|
26
|
+
* </BaseContextMenu.Root>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
const ContextMenuPopup = forwardRef(function ContextMenuPopup({ className, ...props }, ref) {
|
|
30
|
+
return /* @__PURE__ */ jsx(ContextMenu.Popup, {
|
|
31
|
+
ref,
|
|
32
|
+
className: `${context_menu_module_default.popup} ${className ?? ""}`,
|
|
33
|
+
...props
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
const ContextMenuItem = forwardRef(function ContextMenuItem({ className, ...props }, ref) {
|
|
37
|
+
return /* @__PURE__ */ jsx(ContextMenu.Item, {
|
|
38
|
+
ref,
|
|
39
|
+
className: `${context_menu_module_default.item} ${className ?? ""}`,
|
|
40
|
+
...props
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const ContextMenuSeparator = forwardRef(function ContextMenuSeparator({ className, ...props }, ref) {
|
|
44
|
+
return /* @__PURE__ */ jsx(ContextMenu.Separator, {
|
|
45
|
+
ref,
|
|
46
|
+
className: `${context_menu_module_default.separator} ${className ?? ""}`,
|
|
47
|
+
...props
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
const ContextMenuGroup = forwardRef(function ContextMenuGroup({ className, ...props }, ref) {
|
|
51
|
+
return /* @__PURE__ */ jsx(ContextMenu.Group, {
|
|
52
|
+
ref,
|
|
53
|
+
className,
|
|
54
|
+
...props
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
const ContextMenuGroupLabel = forwardRef(function ContextMenuGroupLabel({ className, ...props }, ref) {
|
|
58
|
+
return /* @__PURE__ */ jsx(ContextMenu.GroupLabel, {
|
|
59
|
+
ref,
|
|
60
|
+
className: `${context_menu_module_default["group-label"]} ${className ?? ""}`,
|
|
61
|
+
...props
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
const ContextMenuSubmenuTrigger = forwardRef(function ContextMenuSubmenuTrigger({ className, children, ...props }, ref) {
|
|
65
|
+
return /* @__PURE__ */ jsxs(ContextMenu.SubmenuTrigger, {
|
|
66
|
+
ref,
|
|
67
|
+
className: `${context_menu_module_default["submenu-trigger"]} ${className ?? ""}`,
|
|
68
|
+
...props,
|
|
69
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
70
|
+
style: { flex: 1 },
|
|
71
|
+
children
|
|
72
|
+
}), /* @__PURE__ */ jsx("svg", {
|
|
73
|
+
width: "10",
|
|
74
|
+
height: "10",
|
|
75
|
+
viewBox: "0 0 10 10",
|
|
76
|
+
fill: "none",
|
|
77
|
+
className: context_menu_module_default["submenu-icon"],
|
|
78
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
79
|
+
d: "M3.5 9L7.5 5L3.5 1",
|
|
80
|
+
stroke: "currentColor",
|
|
81
|
+
strokeWidth: "1.5",
|
|
82
|
+
strokeLinecap: "round",
|
|
83
|
+
strokeLinejoin: "round"
|
|
84
|
+
})
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//#endregion
|
|
89
|
+
export { ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPopup, ContextMenuSeparator, ContextMenuSubmenuTrigger };
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","names":["BaseContextMenu","styles"],"sources":["../../src/context-menu/parts.tsx"],"sourcesContent":["/**\n * Styled primitives for ContextMenu.\n *\n * @example\n * ```tsx\n * import { ContextMenu as BaseContextMenu } from '@base-ui/react/context-menu';\n * import { ContextMenuPopup, ContextMenuItem, ContextMenuSeparator } from '@brijbyte/agentic-ui/context-menu';\n *\n * <BaseContextMenu.Root>\n * <BaseContextMenu.Trigger render={<div>Right click me</div>} />\n * <BaseContextMenu.Portal>\n * <BaseContextMenu.Positioner>\n * <ContextMenuPopup>\n * <ContextMenuItem>Cut</ContextMenuItem>\n * <ContextMenuItem>Copy</ContextMenuItem>\n * <ContextMenuSeparator />\n * <ContextMenuItem>Paste</ContextMenuItem>\n * </ContextMenuPopup>\n * </BaseContextMenu.Positioner>\n * </BaseContextMenu.Portal>\n * </BaseContextMenu.Root>\n * ```\n */\nimport { forwardRef } from \"react\";\nimport type { ComponentRef, ComponentPropsWithoutRef } from \"react\";\nimport { ContextMenu as BaseContextMenu } from \"@base-ui/react/context-menu\";\nimport styles from \"./context-menu.module.css\";\n\ntype BasePopupProps = ComponentPropsWithoutRef<typeof BaseContextMenu.Popup>;\ntype BaseItemProps = ComponentPropsWithoutRef<typeof BaseContextMenu.Item>;\ntype BaseSeparatorProps = ComponentPropsWithoutRef<typeof BaseContextMenu.Separator>;\ntype BaseGroupProps = ComponentPropsWithoutRef<typeof BaseContextMenu.Group>;\ntype BaseGroupLabelProps = ComponentPropsWithoutRef<typeof BaseContextMenu.GroupLabel>;\ntype BaseSubmenuTriggerProps = ComponentPropsWithoutRef<typeof BaseContextMenu.SubmenuTrigger>;\n\nexport interface ContextMenuPopupProps extends Omit<BasePopupProps, \"className\"> {\n className?: string;\n}\nexport interface ContextMenuItemProps extends Omit<BaseItemProps, \"className\"> {\n className?: string;\n}\nexport interface ContextMenuSeparatorProps extends Omit<BaseSeparatorProps, \"className\"> {\n className?: string;\n}\nexport interface ContextMenuGroupProps extends Omit<BaseGroupProps, \"className\"> {\n className?: string;\n}\nexport interface ContextMenuGroupLabelProps extends Omit<BaseGroupLabelProps, \"className\"> {\n className?: string;\n}\nexport interface ContextMenuSubmenuTriggerProps extends Omit<BaseSubmenuTriggerProps, \"className\"> {\n className?: string;\n}\n\nexport const ContextMenuPopup = forwardRef<ComponentRef<typeof BaseContextMenu.Popup>, ContextMenuPopupProps>(function ContextMenuPopup(\n { className, ...props },\n ref,\n) {\n return <BaseContextMenu.Popup ref={ref} className={`${styles.popup} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const ContextMenuItem = forwardRef<ComponentRef<typeof BaseContextMenu.Item>, ContextMenuItemProps>(function ContextMenuItem(\n { className, ...props },\n ref,\n) {\n return <BaseContextMenu.Item ref={ref} className={`${styles.item} ${className ?? \"\"}`} {...props} />;\n});\n\nexport const ContextMenuSeparator = forwardRef<ComponentRef<typeof BaseContextMenu.Separator>, ContextMenuSeparatorProps>(\n function ContextMenuSeparator({ className, ...props }, ref) {\n return <BaseContextMenu.Separator ref={ref} className={`${styles.separator} ${className ?? \"\"}`} {...props} />;\n },\n);\n\nexport const ContextMenuGroup = forwardRef<ComponentRef<typeof BaseContextMenu.Group>, ContextMenuGroupProps>(function ContextMenuGroup(\n { className, ...props },\n ref,\n) {\n return <BaseContextMenu.Group ref={ref} className={className} {...props} />;\n});\n\nexport const ContextMenuGroupLabel = forwardRef<ComponentRef<typeof BaseContextMenu.GroupLabel>, ContextMenuGroupLabelProps>(\n function ContextMenuGroupLabel({ className, ...props }, ref) {\n return <BaseContextMenu.GroupLabel ref={ref} className={`${styles[\"group-label\"]} ${className ?? \"\"}`} {...props} />;\n },\n);\n\nexport const ContextMenuSubmenuTrigger = forwardRef<ComponentRef<typeof BaseContextMenu.SubmenuTrigger>, ContextMenuSubmenuTriggerProps>(\n function ContextMenuSubmenuTrigger({ className, children, ...props }, ref) {\n return (\n <BaseContextMenu.SubmenuTrigger ref={ref} className={`${styles[\"submenu-trigger\"]} ${className ?? \"\"}`} {...props}>\n <span style={{ flex: 1 }}>{children}</span>\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" className={styles[\"submenu-icon\"]}>\n <path d=\"M3.5 9L7.5 5L3.5 1\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </BaseContextMenu.SubmenuTrigger>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,MAAa,mBAAmB,WAA8E,SAAS,iBACrH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACA,YAAgB,OAAjB;EAA4B;EAAK,WAAW,GAAGC,4BAAO,MAAM,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EACtG;AAEF,MAAa,kBAAkB,WAA4E,SAAS,gBAClH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,YAAgB,MAAjB;EAA2B;EAAK,WAAW,GAAGC,4BAAO,KAAK,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EACpG;AAEF,MAAa,uBAAuB,WAClC,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;AAC1D,QAAO,oBAACD,YAAgB,WAAjB;EAAgC;EAAK,WAAW,GAAGC,4BAAO,UAAU,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAEjH;AAED,MAAa,mBAAmB,WAA8E,SAAS,iBACrH,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAACD,YAAgB,OAAjB;EAA4B;EAAgB;EAAW,GAAI;EAAS,CAAA;EAC3E;AAEF,MAAa,wBAAwB,WACnC,SAAS,sBAAsB,EAAE,WAAW,GAAG,SAAS,KAAK;AAC3D,QAAO,oBAACA,YAAgB,YAAjB;EAAiC;EAAK,WAAW,GAAGC,4BAAO,eAAe,GAAG,aAAa;EAAM,GAAI;EAAS,CAAA;EAEvH;AAED,MAAa,4BAA4B,WACvC,SAAS,0BAA0B,EAAE,WAAW,UAAU,GAAG,SAAS,KAAK;AACzE,QACE,qBAACD,YAAgB,gBAAjB;EAAqC;EAAK,WAAW,GAAGC,4BAAO,mBAAmB,GAAG,aAAa;EAAM,GAAI;YAA5G,CACE,oBAAC,QAAD;GAAM,OAAO,EAAE,MAAM,GAAG;GAAG;GAAgB,CAAA,EAC3C,oBAAC,OAAD;GAAK,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,MAAK;GAAO,WAAWA,4BAAO;aAC5E,oBAAC,QAAD;IAAM,GAAE;IAAqB,QAAO;IAAe,aAAY;IAAM,eAAc;IAAQ,gBAAe;IAAU,CAAA;GAChH,CAAA,CACyB;;EAGtC"}
|
package/dist/dialog/dialog.css
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
@layer theme, base;
|
|
2
|
-
|
|
3
1
|
@layer components {
|
|
4
2
|
.backdrop_VsZA5W {
|
|
5
3
|
z-index: var(--z-overlay);
|
|
@@ -15,14 +13,14 @@
|
|
|
15
13
|
|
|
16
14
|
.popup_VsZA5W {
|
|
17
15
|
z-index: var(--z-modal);
|
|
18
|
-
background-color: var(--color-
|
|
19
|
-
border: var(--border-width-base) solid var(--color-
|
|
16
|
+
background-color: var(--color-elevated);
|
|
17
|
+
border: var(--border-width-base) solid var(--color-line);
|
|
20
18
|
border-radius: var(--radius-2xl);
|
|
21
19
|
box-shadow: var(--shadow-xl);
|
|
22
|
-
padding: var(--space-6);
|
|
23
|
-
width: min(
|
|
20
|
+
padding: var(--space-5) var(--space-6) var(--space-5);
|
|
21
|
+
width: min(440px, calc(100vw - var(--space-8)));
|
|
24
22
|
max-height: min(640px, calc(100vh - var(--space-8)));
|
|
25
|
-
gap: var(--space-
|
|
23
|
+
gap: var(--space-3);
|
|
26
24
|
transition: opacity .2s var(--easing-ease-out),
|
|
27
25
|
transform .2s var(--easing-spring);
|
|
28
26
|
outline: none;
|
|
@@ -48,25 +46,25 @@
|
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
.header_VsZA5W {
|
|
51
|
-
gap: var(--space-
|
|
49
|
+
gap: var(--space-2);
|
|
50
|
+
text-align: center;
|
|
52
51
|
flex-direction: column;
|
|
53
52
|
display: flex;
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
.title_VsZA5W {
|
|
57
|
-
font-family: var(--font-
|
|
56
|
+
font-family: var(--font-sans);
|
|
58
57
|
font-size: var(--font-size-lg);
|
|
59
|
-
font-weight: var(--font-weight-
|
|
60
|
-
color: var(--color-
|
|
58
|
+
font-weight: var(--font-weight-bold);
|
|
59
|
+
color: var(--color-primary);
|
|
61
60
|
line-height: var(--line-height-tight);
|
|
62
61
|
letter-spacing: var(--letter-spacing-tight);
|
|
63
|
-
padding-right: var(--space-6);
|
|
64
62
|
}
|
|
65
63
|
|
|
66
64
|
.description_VsZA5W {
|
|
67
|
-
font-family: var(--font-
|
|
68
|
-
font-size: var(--font-size-
|
|
69
|
-
color: var(--color-
|
|
65
|
+
font-family: var(--font-sans);
|
|
66
|
+
font-size: var(--font-size-md);
|
|
67
|
+
color: var(--color-secondary);
|
|
70
68
|
line-height: var(--line-height-relaxed);
|
|
71
69
|
}
|
|
72
70
|
|
|
@@ -76,7 +74,7 @@
|
|
|
76
74
|
border-radius: var(--radius-sm);
|
|
77
75
|
width: 24px;
|
|
78
76
|
height: 24px;
|
|
79
|
-
color: var(--color-
|
|
77
|
+
color: var(--color-tertiary);
|
|
80
78
|
cursor: pointer;
|
|
81
79
|
transition: background-color var(--duration-fast) var(--easing-standard),
|
|
82
80
|
color var(--duration-fast) var(--easing-standard);
|
|
@@ -90,8 +88,8 @@
|
|
|
90
88
|
}
|
|
91
89
|
|
|
92
90
|
.close_VsZA5W:hover {
|
|
93
|
-
background-color: var(--color-
|
|
94
|
-
color: var(--color-
|
|
91
|
+
background-color: var(--color-hover);
|
|
92
|
+
color: var(--color-primary);
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
.close_VsZA5W:focus-visible {
|
|
@@ -101,7 +99,7 @@
|
|
|
101
99
|
.body_VsZA5W {
|
|
102
100
|
font-family: var(--font-mono);
|
|
103
101
|
font-size: var(--font-size-sm);
|
|
104
|
-
color: var(--color-
|
|
102
|
+
color: var(--color-secondary);
|
|
105
103
|
line-height: var(--line-height-relaxed);
|
|
106
104
|
flex: 1;
|
|
107
105
|
overflow-y: auto;
|
|
@@ -112,9 +110,16 @@
|
|
|
112
110
|
align-items: center;
|
|
113
111
|
gap: var(--space-2);
|
|
114
112
|
padding-top: var(--space-2);
|
|
115
|
-
border-top: var(--border-width-base) solid var(--color-border-subtle);
|
|
116
113
|
display: flex;
|
|
117
114
|
}
|
|
118
|
-
}
|
|
119
115
|
|
|
120
|
-
|
|
116
|
+
.footer-split_VsZA5W {
|
|
117
|
+
justify-content: space-between;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.footer-end_VsZA5W {
|
|
121
|
+
align-items: center;
|
|
122
|
+
gap: var(--space-2);
|
|
123
|
+
display: flex;
|
|
124
|
+
}
|
|
125
|
+
}
|
package/dist/dialog/dialog.d.ts
CHANGED
|
@@ -12,7 +12,14 @@ interface DialogProps {
|
|
|
12
12
|
title?: ReactNode;
|
|
13
13
|
description?: ReactNode;
|
|
14
14
|
children?: ReactNode;
|
|
15
|
+
/** Buttons aligned to the right (cancel, confirm). */
|
|
15
16
|
footer?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Content anchored to the left of the footer — intended for a destructive
|
|
19
|
+
* action (e.g. Delete). When present the footer switches to space-between
|
|
20
|
+
* layout, matching the macOS dialog pattern.
|
|
21
|
+
*/
|
|
22
|
+
footerStart?: ReactNode;
|
|
16
23
|
className?: string;
|
|
17
24
|
dismissible?: boolean;
|
|
18
25
|
}
|
|
@@ -22,6 +29,7 @@ declare function Dialog({
|
|
|
22
29
|
description,
|
|
23
30
|
children,
|
|
24
31
|
footer,
|
|
32
|
+
footerStart,
|
|
25
33
|
className,
|
|
26
34
|
dismissible,
|
|
27
35
|
onOpenChange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","names":[],"sources":["../../src/dialog/dialog.tsx"],"mappings":";;;;;UAIiB,WAAA;EACf,IAAA;EACA,WAAA;EAFe;EAIf,YAAA,IAAgB,IAAA,WAAe,YAAA;EAC/B,OAAA,GAAU,YAAA;EACV,KAAA,GAAQ,SAAA;EACR,WAAA,GAAc,SAAA;EACd,QAAA,GAAW,SAAA;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","names":[],"sources":["../../src/dialog/dialog.tsx"],"mappings":";;;;;UAIiB,WAAA;EACf,IAAA;EACA,WAAA;EAFe;EAIf,YAAA,IAAgB,IAAA,WAAe,YAAA;EAC/B,OAAA,GAAU,YAAA;EACV,KAAA,GAAQ,SAAA;EACR,WAAA,GAAc,SAAA;EACd,QAAA,GAAW,SAAA;EAAA;EAEX,MAAA,GAAS,SAAA;EAMK;;;;;EAAd,WAAA,GAAc,SAAA;EACd,SAAA;EACA,WAAA;AAAA;AAAA,iBAWc,MAAA,CAAA;EACd,OAAA;EACA,KAAA;EACA,WAAA;EACA,QAAA;EACA,MAAA;EACA,WAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EAAA,GACG;AAAA,GACF,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|