@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.
Files changed (135) hide show
  1. package/README.md +183 -111
  2. package/dist/accordion/accordion.css +6 -10
  3. package/dist/accordion/accordion.module.js.map +1 -1
  4. package/dist/alert-dialog/alert-dialog.css +84 -0
  5. package/dist/alert-dialog/alert-dialog.d.ts +44 -0
  6. package/dist/alert-dialog/alert-dialog.d.ts.map +1 -0
  7. package/dist/alert-dialog/alert-dialog.js +46 -0
  8. package/dist/alert-dialog/alert-dialog.js.map +1 -0
  9. package/dist/alert-dialog/alert-dialog.module.css.d.ts +2 -0
  10. package/dist/alert-dialog/alert-dialog.module.js +14 -0
  11. package/dist/alert-dialog/alert-dialog.module.js.map +1 -0
  12. package/dist/alert-dialog/index.d.ts +3 -0
  13. package/dist/alert-dialog/index.js +4 -0
  14. package/dist/alert-dialog/parts.d.ts +28 -0
  15. package/dist/alert-dialog/parts.d.ts.map +1 -0
  16. package/dist/alert-dialog/parts.js +62 -0
  17. package/dist/alert-dialog/parts.js.map +1 -0
  18. package/dist/badge/badge.css +3 -7
  19. package/dist/badge/badge.module.js.map +1 -1
  20. package/dist/button/button.css +14 -14
  21. package/dist/button/button.module.js.map +1 -1
  22. package/dist/card/card.css +5 -9
  23. package/dist/card/card.module.js.map +1 -1
  24. package/dist/checkbox/checkbox.css +3 -7
  25. package/dist/checkbox/checkbox.module.js.map +1 -1
  26. package/dist/collapsible/collapsible.css +7 -11
  27. package/dist/collapsible/collapsible.module.js.map +1 -1
  28. package/dist/context-menu/context-menu.css +151 -0
  29. package/dist/context-menu/context-menu.d.ts +36 -0
  30. package/dist/context-menu/context-menu.d.ts.map +1 -0
  31. package/dist/context-menu/context-menu.js +54 -0
  32. package/dist/context-menu/context-menu.js.map +1 -0
  33. package/dist/context-menu/context-menu.module.css.d.ts +2 -0
  34. package/dist/context-menu/context-menu.module.js +18 -0
  35. package/dist/context-menu/context-menu.module.js.map +1 -0
  36. package/dist/context-menu/index.d.ts +3 -0
  37. package/dist/context-menu/index.js +4 -0
  38. package/dist/context-menu/parts.d.ts +38 -0
  39. package/dist/context-menu/parts.d.ts.map +1 -0
  40. package/dist/context-menu/parts.js +91 -0
  41. package/dist/context-menu/parts.js.map +1 -0
  42. package/dist/dialog/dialog.css +27 -22
  43. package/dist/dialog/dialog.d.ts +8 -0
  44. package/dist/dialog/dialog.d.ts.map +1 -1
  45. package/dist/dialog/dialog.js +7 -4
  46. package/dist/dialog/dialog.js.map +1 -1
  47. package/dist/dialog/dialog.module.js +2 -0
  48. package/dist/dialog/dialog.module.js.map +1 -1
  49. package/dist/drawer/drawer.css +9 -13
  50. package/dist/drawer/drawer.module.js.map +1 -1
  51. package/dist/index.css +1630 -1353
  52. package/dist/index.d.ts +24 -18
  53. package/dist/index.js +10 -1
  54. package/dist/input/input.css +5 -9
  55. package/dist/input/input.module.js.map +1 -1
  56. package/dist/layer-order.css +22 -0
  57. package/dist/menu/menu.css +13 -17
  58. package/dist/menu/menu.module.js.map +1 -1
  59. package/dist/number-field/number-field.css +12 -16
  60. package/dist/number-field/number-field.module.js.map +1 -1
  61. package/dist/progress/progress.css +1 -5
  62. package/dist/progress/progress.module.js.map +1 -1
  63. package/dist/reset.css +6 -6
  64. package/dist/select/select.css +14 -16
  65. package/dist/select/select.d.ts +5 -2
  66. package/dist/select/select.d.ts.map +1 -1
  67. package/dist/select/select.js +11 -2
  68. package/dist/select/select.js.map +1 -1
  69. package/dist/select/select.module.js.map +1 -1
  70. package/dist/separator/separator.css +1 -5
  71. package/dist/separator/separator.module.js.map +1 -1
  72. package/dist/slider/index.d.ts +3 -0
  73. package/dist/slider/index.js +4 -0
  74. package/dist/slider/parts.d.ts +38 -0
  75. package/dist/slider/parts.d.ts.map +1 -0
  76. package/dist/slider/parts.js +69 -0
  77. package/dist/slider/parts.js.map +1 -0
  78. package/dist/slider/slider.css +97 -0
  79. package/dist/slider/slider.d.ts +38 -0
  80. package/dist/slider/slider.d.ts.map +1 -0
  81. package/dist/slider/slider.js +41 -0
  82. package/dist/slider/slider.js.map +1 -0
  83. package/dist/slider/slider.module.css.d.ts +2 -0
  84. package/dist/slider/slider.module.js +15 -0
  85. package/dist/slider/slider.module.js.map +1 -0
  86. package/dist/styles/reset.css +6 -6
  87. package/dist/styles/tokens.css +73 -71
  88. package/dist/switch/switch.css +2 -6
  89. package/dist/switch/switch.module.js.map +1 -1
  90. package/dist/tabs/tabs.css +5 -9
  91. package/dist/tabs/tabs.module.js.map +1 -1
  92. package/dist/tailwind-theme.css +23 -23
  93. package/dist/toast/toast.css +11 -15
  94. package/dist/toast/toast.module.js.map +1 -1
  95. package/dist/tokens.css +79 -75
  96. package/dist/tooltip/tooltip.css +7 -11
  97. package/dist/tooltip/tooltip.module.js.map +1 -1
  98. package/package.json +17 -1
  99. package/src/accordion/accordion.module.css +6 -20
  100. package/src/alert-dialog/alert-dialog.module.css +91 -0
  101. package/src/alert-dialog/alert-dialog.tsx +69 -0
  102. package/src/alert-dialog/index.ts +7 -0
  103. package/src/alert-dialog/parts.tsx +73 -0
  104. package/src/badge/badge.module.css +3 -13
  105. package/src/button/button.module.css +15 -51
  106. package/src/card/card.module.css +5 -16
  107. package/src/checkbox/checkbox.module.css +3 -14
  108. package/src/collapsible/collapsible.module.css +7 -20
  109. package/src/context-menu/context-menu.module.css +168 -0
  110. package/src/context-menu/context-menu.tsx +75 -0
  111. package/src/context-menu/index.ts +21 -0
  112. package/src/context-menu/parts.tsx +99 -0
  113. package/src/dialog/dialog.module.css +26 -33
  114. package/src/dialog/dialog.tsx +14 -1
  115. package/src/drawer/drawer.module.css +9 -58
  116. package/src/index.ts +48 -0
  117. package/src/input/input.module.css +5 -21
  118. package/src/menu/menu.module.css +13 -43
  119. package/src/number-field/number-field.module.css +12 -28
  120. package/src/progress/progress.module.css +1 -10
  121. package/src/select/select.module.css +14 -35
  122. package/src/select/select.tsx +14 -5
  123. package/src/separator/separator.module.css +1 -5
  124. package/src/slider/index.ts +14 -0
  125. package/src/slider/parts.tsx +90 -0
  126. package/src/slider/slider.module.css +110 -0
  127. package/src/slider/slider.tsx +68 -0
  128. package/src/styles/layer-order.css +22 -0
  129. package/src/styles/reset.css +6 -6
  130. package/src/styles/tailwind-theme.css +23 -23
  131. package/src/styles/tokens.css +79 -75
  132. package/src/switch/switch.module.css +2 -12
  133. package/src/tabs/tabs.module.css +5 -18
  134. package/src/toast/toast.module.css +11 -51
  135. 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-text-primary);
15
+ color: var(--color-primary);
18
16
  background: var(--color-surface-1);
19
- border: var(--border-width-base) solid var(--color-border-base);
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-surface-hover);
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-text-tertiary);
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-text-secondary);
81
+ color: var(--color-secondary);
84
82
  line-height: var(--line-height-relaxed);
85
- border: var(--border-width-base) solid var(--color-border-base);
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-bg-elevated);
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 theme, base, components, utilities;\n\n@layer components {\n .root {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\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-text-primary);\n background: var(--color-surface-1);\n border: var(--border-width-base) solid var(--color-border-base);\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\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\n .trigger:hover {\n background-color: var(--color-surface-hover);\n }\n\n .trigger:focus-visible {\n box-shadow: var(--shadow-focus);\n }\n\n .trigger[data-disabled] {\n opacity: 0.44;\n cursor: not-allowed;\n }\n\n .trigger-icon {\n color: var(--color-text-tertiary);\n flex-shrink: 0;\n transition: transform var(--duration-normal) var(--easing-standard);\n }\n\n .trigger[data-panel-open] .trigger-icon {\n transform: rotate(90deg);\n }\n\n .panel {\n height: var(--collapsible-panel-height);\n overflow: hidden;\n transition: height var(--duration-normal) var(--easing-standard);\n }\n\n /* hide when not using hidden=\"until-found\" */\n .panel[hidden]:not([hidden=\"until-found\"]) {\n display: none;\n }\n\n .panel[data-starting-style],\n .panel[data-ending-style] {\n height: 0;\n }\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-text-secondary);\n line-height: var(--line-height-relaxed);\n border: var(--border-width-base) solid var(--color-border-base);\n border-top: none;\n border-radius: 0 0 var(--radius-md) var(--radius-md);\n background: var(--color-bg-elevated);\n }\n}\n"],"mappings":";AAUA,IAAA,6BAAa;CAAA,SAAI;CAAA,iBAAA;CAAA,QAAA;CAAA,WAAA;CAAA,gBAAA;CAAA"}
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,2 @@
1
+ declare const styles: Record<string, string | undefined>;
2
+ export default styles;
@@ -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"}
@@ -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-bg-elevated);
19
- border: var(--border-width-base) solid var(--color-border-base);
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(480px, calc(100vw - var(--space-8)));
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-4);
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-1);
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-mono);
56
+ font-family: var(--font-sans);
58
57
  font-size: var(--font-size-lg);
59
- font-weight: var(--font-weight-semibold);
60
- color: var(--color-text-primary);
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-mono);
68
- font-size: var(--font-size-sm);
69
- color: var(--color-text-secondary);
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-text-tertiary);
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-surface-hover);
94
- color: var(--color-text-primary);
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-text-secondary);
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
- @layer utilities;
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
+ }
@@ -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;EACX,MAAA,GAAS,SAAA;EACT,SAAA;EACA,WAAA;AAAA;AAAA,iBAWc,MAAA,CAAA;EACd,OAAA;EACA,KAAA;EACA,WAAA;EACA,QAAA;EACA,MAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EAAA,GACG;AAAA,GACF,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
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"}