@vikram-hegde/skeletal 0.0.1

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 (118) hide show
  1. package/README.md +35 -0
  2. package/dist/alert-dialog/index.d.ts +2 -0
  3. package/dist/alert-dialog/index.js +2 -0
  4. package/dist/alert-dialog-1hxVC_5N.js +71 -0
  5. package/dist/badge/index.d.ts +2 -0
  6. package/dist/badge/index.js +2 -0
  7. package/dist/badge-C3p1L0E7.css +53 -0
  8. package/dist/badge-C3p1L0E7.js +32 -0
  9. package/dist/button/index.d.ts +2 -0
  10. package/dist/button/index.js +2 -0
  11. package/dist/button-B48UNbaC.css +152 -0
  12. package/dist/button-B48UNbaC.js +46 -0
  13. package/dist/button-Dvd4n2U4.d.ts +56 -0
  14. package/dist/checkbox/index.d.ts +2 -0
  15. package/dist/checkbox/index.js +2 -0
  16. package/dist/checkbox-wh2BoiSj.css +76 -0
  17. package/dist/checkbox-wh2BoiSj.js +112 -0
  18. package/dist/cluster-BJ4m5uGN.css +9 -0
  19. package/dist/cluster-BJ4m5uGN.js +21 -0
  20. package/dist/combobox/index.d.ts +2 -0
  21. package/dist/combobox/index.js +2 -0
  22. package/dist/combobox-DWH7uSsx.css +389 -0
  23. package/dist/combobox-DWH7uSsx.js +327 -0
  24. package/dist/command-palette/index.d.ts +2 -0
  25. package/dist/command-palette/index.js +2 -0
  26. package/dist/command-palette-DF4XJ8qz.css +164 -0
  27. package/dist/command-palette-DF4XJ8qz.js +191 -0
  28. package/dist/dialog/index.d.ts +6 -0
  29. package/dist/dialog/index.js +2 -0
  30. package/dist/dialog-C4yqxII_.js +73 -0
  31. package/dist/dialog-footer-Br9KZP4v.js +29 -0
  32. package/dist/dialog-footer-bNVIVPbu.d.ts +56 -0
  33. package/dist/dialog-portal-B21WFYkQ.css +131 -0
  34. package/dist/dialog-portal-B21WFYkQ.js +26 -0
  35. package/dist/dialog-portal-BF89FBeX.d.ts +15 -0
  36. package/dist/dialog-title-DRYRIxCp.js +35 -0
  37. package/dist/dialog-title-jyf86Q8C.d.ts +36 -0
  38. package/dist/dialog-viewport-CaMWJrCJ.d.ts +42 -0
  39. package/dist/dialog-viewport-vpbsq7Ib.js +21 -0
  40. package/dist/drawer/index.d.ts +2 -0
  41. package/dist/drawer/index.js +2 -0
  42. package/dist/drawer-DQmz_uCP.css +214 -0
  43. package/dist/drawer-DQmz_uCP.js +180 -0
  44. package/dist/icon/index.d.ts +2 -0
  45. package/dist/icon/index.js +2 -0
  46. package/dist/icon-DBOdxNvH.css +6 -0
  47. package/dist/icon-DBOdxNvH.js +20 -0
  48. package/dist/index-A2QmU5r9.d.ts +37 -0
  49. package/dist/index-B0uNLS7z.d.ts +301 -0
  50. package/dist/index-B63PSP58.d.ts +94 -0
  51. package/dist/index-BBOkTl3h.d.ts +261 -0
  52. package/dist/index-BLFVnve3.d.ts +53 -0
  53. package/dist/index-BXPUT5u-.d.ts +72 -0
  54. package/dist/index-BngvATZx.d.ts +35 -0
  55. package/dist/index-Br2NrBW_.d.ts +444 -0
  56. package/dist/index-CUy-9csi.d.ts +135 -0
  57. package/dist/index-CbMW32E9.d.ts +82 -0
  58. package/dist/index-CyTcR6iv.d.ts +433 -0
  59. package/dist/index-CznsZ_1M.d.ts +85 -0
  60. package/dist/index-D-6gOciw.d.ts +350 -0
  61. package/dist/index-DdqDyczP.d.ts +209 -0
  62. package/dist/index-GOGpFujX.d.ts +144 -0
  63. package/dist/index-W3ozKcis.d.ts +245 -0
  64. package/dist/index-kpw3_4q_.d.ts +50 -0
  65. package/dist/index-rH7TJeJt.d.ts +334 -0
  66. package/dist/index-rQ7sRkqg.d.ts +122 -0
  67. package/dist/index.css +93 -0
  68. package/dist/index.d.ts +26 -0
  69. package/dist/index.js +26 -0
  70. package/dist/input/index.d.ts +2 -0
  71. package/dist/input/index.js +2 -0
  72. package/dist/input-CQ_ean8e.css +129 -0
  73. package/dist/input-CQ_ean8e.js +65 -0
  74. package/dist/layout/index.d.ts +2 -0
  75. package/dist/layout/index.js +4 -0
  76. package/dist/layout-qoyutnKU.css +181 -0
  77. package/dist/layout-qoyutnKU.js +169 -0
  78. package/dist/menu/index.d.ts +2 -0
  79. package/dist/menu/index.js +2 -0
  80. package/dist/menu-DRdGMI_-.css +236 -0
  81. package/dist/menu-DRdGMI_-.js +243 -0
  82. package/dist/merge-class-name-C4KJJGuK.js +15 -0
  83. package/dist/popover/index.d.ts +2 -0
  84. package/dist/popover/index.js +2 -0
  85. package/dist/popover-CenynT0Z.css +139 -0
  86. package/dist/popover-CenynT0Z.js +174 -0
  87. package/dist/radio/index.d.ts +2 -0
  88. package/dist/radio/index.js +2 -0
  89. package/dist/radio-BJrvdkga.css +80 -0
  90. package/dist/radio-BJrvdkga.js +75 -0
  91. package/dist/scroll-area/index.d.ts +2 -0
  92. package/dist/scroll-area/index.js +2 -0
  93. package/dist/scroll-area-DkORxJE9.css +175 -0
  94. package/dist/scroll-area-DkORxJE9.js +114 -0
  95. package/dist/select/index.d.ts +2 -0
  96. package/dist/select/index.js +2 -0
  97. package/dist/select-BaqBHUac.css +273 -0
  98. package/dist/select-BaqBHUac.js +254 -0
  99. package/dist/skeleton/index.d.ts +2 -0
  100. package/dist/skeleton/index.js +2 -0
  101. package/dist/skeleton-W6fwO5pf.css +88 -0
  102. package/dist/skeleton-W6fwO5pf.js +97 -0
  103. package/dist/spinner/index.d.ts +2 -0
  104. package/dist/spinner/index.js +2 -0
  105. package/dist/spinner-DB6ap8Si.css +43 -0
  106. package/dist/spinner-DB6ap8Si.js +27 -0
  107. package/dist/stack-BzFVrsmT.css +12 -0
  108. package/dist/stack-BzFVrsmT.js +52 -0
  109. package/dist/style-vars-ZSrCUzKx.js +13 -0
  110. package/dist/switch/index.d.ts +2 -0
  111. package/dist/switch/index.js +2 -0
  112. package/dist/switch-DizP31iF.css +76 -0
  113. package/dist/switch-DizP31iF.js +58 -0
  114. package/dist/tooltip/index.d.ts +2 -0
  115. package/dist/tooltip/index.js +2 -0
  116. package/dist/tooltip-CQk2WjUS.css +92 -0
  117. package/dist/tooltip-CQk2WjUS.js +138 -0
  118. package/package.json +68 -0
@@ -0,0 +1,236 @@
1
+ @layer skeletal {
2
+ .At2ArW_menu__backdrop {
3
+ z-index: 40;
4
+ background-color: light-dark(oklch(0% 0 0 / .25), oklch(0% 0 0 / .5));
5
+ transition: opacity .2s ease-out;
6
+ position: fixed;
7
+ inset: 0;
8
+
9
+ @supports (-webkit-touch-callout: none) {
10
+ position: absolute;
11
+ }
12
+
13
+ &[data-starting-style], &[data-ending-style] {
14
+ opacity: 0;
15
+ }
16
+
17
+ @media (prefers-reduced-motion: reduce) {
18
+ transition: none;
19
+ }
20
+ }
21
+
22
+ .At2ArW_menu__portal {
23
+ display: contents;
24
+ }
25
+
26
+ .At2ArW_menu__positioner {
27
+ z-index: 50;
28
+ inline-size: var(--positioner-width);
29
+ block-size: var(--positioner-height);
30
+ max-inline-size: var(--available-width);
31
+ max-block-size: var(--available-height);
32
+ outline: none;
33
+ }
34
+
35
+ .At2ArW_menu__popup {
36
+ z-index: 50;
37
+ min-inline-size: 10rem;
38
+ inline-size: var(--popup-width, auto);
39
+ block-size: var(--popup-height, auto);
40
+ border: 1px solid var(--sk-border);
41
+ border-radius: var(--sk-radius);
42
+ background-color: var(--sk-popover);
43
+ color: var(--sk-popover-foreground);
44
+ box-shadow: var(--sk-shadow-md);
45
+ transform-origin: var(--transform-origin);
46
+ grid-template-columns: 1.25rem 1fr;
47
+ padding: .25rem;
48
+ transition: scale .15s ease-out, opacity .15s ease-out;
49
+ display: grid;
50
+ position: relative;
51
+
52
+ &[data-starting-style], &[data-ending-style] {
53
+ opacity: 0;
54
+ scale: .98;
55
+ }
56
+
57
+ @media (prefers-reduced-motion: reduce) {
58
+ transition: none;
59
+ }
60
+ }
61
+
62
+ .At2ArW_menu__item, .At2ArW_menu__link-item, .At2ArW_menu__radio-item, .At2ArW_menu__checkbox-item, .At2ArW_menu__submenu-trigger {
63
+ border-radius: var(--sk-radius);
64
+ min-block-size: 2.25rem;
65
+ inline-size: 100%;
66
+ color: var(--sk-foreground);
67
+ text-align: start;
68
+ cursor: pointer;
69
+ user-select: none;
70
+ background: none;
71
+ border: none;
72
+ outline: none;
73
+ grid-column: 1 / -1;
74
+ align-items: center;
75
+ gap: .5rem;
76
+ padding-block: .375rem;
77
+ padding-inline: .625rem;
78
+ font-family: inherit;
79
+ font-size: .875rem;
80
+ line-height: 1.25;
81
+ display: flex;
82
+
83
+ &[data-highlighted] {
84
+ background: var(--sk-accent);
85
+ color: var(--sk-accent-foreground);
86
+ }
87
+
88
+ &[data-disabled] {
89
+ color: var(--sk-muted-foreground);
90
+ cursor: default;
91
+ }
92
+
93
+ &:focus-visible {
94
+ outline: 2px solid var(--sk-ring);
95
+ outline-offset: -2px;
96
+ }
97
+ }
98
+
99
+ .At2ArW_menu__link-item {
100
+ text-decoration: none;
101
+ }
102
+
103
+ .At2ArW_menu__radio-item, .At2ArW_menu__checkbox-item {
104
+ grid-template-columns: 1.25rem 1fr;
105
+ align-items: center;
106
+ column-gap: .5rem;
107
+ padding-block: .375rem;
108
+ padding-inline: .625rem;
109
+ display: grid;
110
+ }
111
+
112
+ .At2ArW_menu__radio-item:before, .At2ArW_menu__checkbox-item:before {
113
+ content: "";
114
+ grid-area: 1 / 1;
115
+ }
116
+
117
+ .At2ArW_menu__item--danger {
118
+ color: var(--sk-destructive);
119
+
120
+ &[data-highlighted] {
121
+ background: var(--sk-destructive);
122
+ color: var(--sk-destructive-foreground);
123
+ }
124
+ }
125
+
126
+ .At2ArW_menu__submenu-trigger {
127
+ position: relative;
128
+
129
+ &:after {
130
+ content: "";
131
+ border-block-start: 1.5px solid;
132
+ border-inline-end: 1.5px solid;
133
+ block-size: .375rem;
134
+ inline-size: .375rem;
135
+ margin-inline-start: auto;
136
+ transform: rotate(45deg);
137
+ }
138
+
139
+ &[data-popup-open] {
140
+ background: var(--sk-accent);
141
+ color: var(--sk-accent-foreground);
142
+ }
143
+ }
144
+
145
+ .At2ArW_menu__group, .At2ArW_menu__radio-group {
146
+ display: contents;
147
+ }
148
+
149
+ .At2ArW_menu__separator {
150
+ background-color: var(--sk-border);
151
+ grid-column: 1 / -1;
152
+ block-size: 1px;
153
+ margin-block: .375rem;
154
+ margin-inline: -.25rem;
155
+ }
156
+
157
+ .At2ArW_menu__group-label {
158
+ color: var(--sk-muted-foreground);
159
+ user-select: none;
160
+ grid-column: 1 / -1;
161
+ padding-block: .5rem .25rem;
162
+ padding-inline: .625rem;
163
+ font-size: .75rem;
164
+ font-weight: 500;
165
+ line-height: 1.25;
166
+ }
167
+
168
+ .At2ArW_menu__radio-item-indicator, .At2ArW_menu__checkbox-item-indicator {
169
+ color: var(--sk-muted-foreground);
170
+ grid-area: 1 / 1;
171
+ justify-content: center;
172
+ align-items: center;
173
+ transition: scale .1s ease-out, opacity .1s ease-out;
174
+ display: inline-flex;
175
+
176
+ &[data-checked] {
177
+ color: var(--sk-foreground);
178
+ }
179
+
180
+ &[data-starting-style], &[data-ending-style] {
181
+ opacity: 0;
182
+ scale: .5;
183
+ }
184
+
185
+ @media (prefers-reduced-motion: reduce) {
186
+ transition: none;
187
+ }
188
+ }
189
+
190
+ .At2ArW_menu__arrow {
191
+ block-size: 6px;
192
+ inline-size: 12px;
193
+ display: block;
194
+ position: absolute;
195
+ overflow: clip;
196
+
197
+ &:before {
198
+ content: "";
199
+ border: 1px solid var(--sk-border);
200
+ background-color: var(--sk-popover);
201
+ block-size: 8.49px;
202
+ inline-size: 8.49px;
203
+ position: absolute;
204
+ inset-block-end: 0;
205
+ inset-inline-start: 50%;
206
+ transform: translate(-50%, 50%) rotate(45deg);
207
+ }
208
+
209
+ &[data-side="bottom"] {
210
+ inset-block-start: -6px;
211
+ }
212
+
213
+ &[data-side="left"] {
214
+ inset-inline-end: -9px;
215
+ transform: rotate(90deg);
216
+ }
217
+
218
+ &[data-side="right"] {
219
+ inset-inline-start: -9px;
220
+ transform: rotate(-90deg);
221
+ }
222
+
223
+ &[data-side="top"] {
224
+ inset-block-end: -6px;
225
+ transform: rotate(180deg);
226
+ }
227
+ }
228
+
229
+ .At2ArW_menu__viewport {
230
+ grid-column: 1 / -1;
231
+ block-size: 100%;
232
+ inline-size: 100%;
233
+ padding: 0;
234
+ overflow: clip;
235
+ }
236
+ }
@@ -0,0 +1,243 @@
1
+ import './menu-DRdGMI_-.css';
2
+ import { t as mergeClassName } from "./merge-class-name-C4KJJGuK.js";
3
+ import { t as Button } from "./button-B48UNbaC.js";
4
+ import { clsx } from "clsx";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import { Menu } from "@base-ui/react/menu";
7
+ //#region src/menu/menu.module.css
8
+ var menu_module_default = {
9
+ "menu__arrow": "At2ArW_menu__arrow",
10
+ "menu__backdrop": "At2ArW_menu__backdrop",
11
+ "menu__checkbox-item": "At2ArW_menu__checkbox-item",
12
+ "menu__checkbox-item-indicator": "At2ArW_menu__checkbox-item-indicator",
13
+ "menu__group": "At2ArW_menu__group",
14
+ "menu__group-label": "At2ArW_menu__group-label",
15
+ "menu__item": "At2ArW_menu__item",
16
+ "menu__item--danger": "At2ArW_menu__item--danger",
17
+ "menu__link-item": "At2ArW_menu__link-item",
18
+ "menu__popup": "At2ArW_menu__popup",
19
+ "menu__portal": "At2ArW_menu__portal",
20
+ "menu__positioner": "At2ArW_menu__positioner",
21
+ "menu__radio-group": "At2ArW_menu__radio-group",
22
+ "menu__radio-item": "At2ArW_menu__radio-item",
23
+ "menu__radio-item-indicator": "At2ArW_menu__radio-item-indicator",
24
+ "menu__separator": "At2ArW_menu__separator",
25
+ "menu__submenu-trigger": "At2ArW_menu__submenu-trigger",
26
+ "menu__viewport": "At2ArW_menu__viewport"
27
+ };
28
+ //#endregion
29
+ //#region src/menu/menu-arrow.tsx
30
+ function MenuArrow({ className, ...props }) {
31
+ return /* @__PURE__ */ jsx(Menu.Arrow, {
32
+ className: mergeClassName(menu_module_default.menu__arrow, className),
33
+ ...props
34
+ });
35
+ }
36
+ //#endregion
37
+ //#region src/menu/menu-backdrop.tsx
38
+ function MenuBackdrop({ className, ...props }) {
39
+ return /* @__PURE__ */ jsx(Menu.Backdrop, {
40
+ className: mergeClassName(menu_module_default.menu__backdrop, className),
41
+ ...props
42
+ });
43
+ }
44
+ //#endregion
45
+ //#region src/menu/menu-checkbox-item.tsx
46
+ function MenuCheckboxItem({ className, ...props }) {
47
+ return /* @__PURE__ */ jsx(Menu.CheckboxItem, {
48
+ className: mergeClassName(menu_module_default["menu__checkbox-item"], className),
49
+ ...props
50
+ });
51
+ }
52
+ //#endregion
53
+ //#region src/menu/menu-checkbox-item-indicator.tsx
54
+ function MenuCheckboxItemIndicator({ className, ...props }) {
55
+ return /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, {
56
+ className: mergeClassName(menu_module_default["menu__checkbox-item-indicator"], className),
57
+ ...props
58
+ });
59
+ }
60
+ //#endregion
61
+ //#region src/menu/menu-group.tsx
62
+ function MenuGroup({ className, ...props }) {
63
+ return /* @__PURE__ */ jsx(Menu.Group, {
64
+ className: mergeClassName(menu_module_default.menu__group, className),
65
+ ...props
66
+ });
67
+ }
68
+ //#endregion
69
+ //#region src/menu/menu-group-label.tsx
70
+ function MenuGroupLabel({ className, ...props }) {
71
+ return /* @__PURE__ */ jsx(Menu.GroupLabel, {
72
+ className: mergeClassName(menu_module_default["menu__group-label"], className),
73
+ ...props
74
+ });
75
+ }
76
+ //#endregion
77
+ //#region src/menu/menu-item.tsx
78
+ function MenuItem({ className, danger = false, ...props }) {
79
+ return /* @__PURE__ */ jsx(Menu.Item, {
80
+ className: mergeClassName(clsx(menu_module_default.menu__item, danger && menu_module_default["menu__item--danger"]), className),
81
+ ...props
82
+ });
83
+ }
84
+ //#endregion
85
+ //#region src/menu/menu-link-item.tsx
86
+ function MenuLinkItem({ className, ...props }) {
87
+ return /* @__PURE__ */ jsx(Menu.LinkItem, {
88
+ className: mergeClassName(menu_module_default["menu__link-item"], className),
89
+ ...props
90
+ });
91
+ }
92
+ //#endregion
93
+ //#region src/menu/menu-popup.tsx
94
+ function MenuPopup({ className, ...props }) {
95
+ return /* @__PURE__ */ jsx(Menu.Popup, {
96
+ className: mergeClassName(menu_module_default.menu__popup, className),
97
+ ...props
98
+ });
99
+ }
100
+ //#endregion
101
+ //#region src/menu/menu-portal.tsx
102
+ function MenuPortal({ className, ...props }) {
103
+ return /* @__PURE__ */ jsx(Menu.Portal, {
104
+ className: mergeClassName(menu_module_default.menu__portal, className),
105
+ ...props
106
+ });
107
+ }
108
+ //#endregion
109
+ //#region src/menu/menu-positioner.tsx
110
+ function MenuPositioner({ className, sideOffset = 8, ...props }) {
111
+ return /* @__PURE__ */ jsx(Menu.Positioner, {
112
+ className: mergeClassName(menu_module_default.menu__positioner, className),
113
+ sideOffset,
114
+ ...props
115
+ });
116
+ }
117
+ //#endregion
118
+ //#region src/menu/menu-radio-group.tsx
119
+ function MenuRadioGroup({ className, ...props }) {
120
+ return /* @__PURE__ */ jsx(Menu.RadioGroup, {
121
+ className: mergeClassName(menu_module_default["menu__radio-group"], className),
122
+ ...props
123
+ });
124
+ }
125
+ //#endregion
126
+ //#region src/menu/menu-radio-item.tsx
127
+ function MenuRadioItem({ className, ...props }) {
128
+ return /* @__PURE__ */ jsx(Menu.RadioItem, {
129
+ className: mergeClassName(menu_module_default["menu__radio-item"], className),
130
+ ...props
131
+ });
132
+ }
133
+ //#endregion
134
+ //#region src/menu/menu-radio-item-indicator.tsx
135
+ function MenuRadioItemIndicator({ className, ...props }) {
136
+ return /* @__PURE__ */ jsx(Menu.RadioItemIndicator, {
137
+ className: mergeClassName(menu_module_default["menu__radio-item-indicator"], className),
138
+ ...props
139
+ });
140
+ }
141
+ //#endregion
142
+ //#region src/menu/menu-root.tsx
143
+ function MenuRoot(props) {
144
+ return /* @__PURE__ */ jsx(Menu.Root, { ...props });
145
+ }
146
+ //#endregion
147
+ //#region src/menu/menu-separator.tsx
148
+ function MenuSeparator({ className, ...props }) {
149
+ return /* @__PURE__ */ jsx(Menu.Separator, {
150
+ className: mergeClassName(menu_module_default.menu__separator, className),
151
+ ...props
152
+ });
153
+ }
154
+ //#endregion
155
+ //#region src/menu/menu-submenu-root.tsx
156
+ function MenuSubmenuRoot(props) {
157
+ return /* @__PURE__ */ jsx(Menu.SubmenuRoot, { ...props });
158
+ }
159
+ //#endregion
160
+ //#region src/menu/menu-submenu-trigger.tsx
161
+ function MenuSubmenuTrigger({ className, ...props }) {
162
+ return /* @__PURE__ */ jsx(Menu.SubmenuTrigger, {
163
+ className: mergeClassName(menu_module_default["menu__submenu-trigger"], className),
164
+ ...props
165
+ });
166
+ }
167
+ //#endregion
168
+ //#region src/menu/menu-trigger.tsx
169
+ function MenuTrigger({ className, variant = "outline", size = "md", fullWidth = false, ...props }) {
170
+ return /* @__PURE__ */ jsx(Menu.Trigger, {
171
+ render: /* @__PURE__ */ jsx(Button, {
172
+ variant,
173
+ size,
174
+ fullWidth,
175
+ className
176
+ }),
177
+ ...props
178
+ });
179
+ }
180
+ //#endregion
181
+ //#region src/menu/menu-viewport.tsx
182
+ function MenuViewport({ className, ...props }) {
183
+ return /* @__PURE__ */ jsx(Menu.Viewport, {
184
+ className: mergeClassName(menu_module_default.menu__viewport, className),
185
+ ...props
186
+ });
187
+ }
188
+ //#endregion
189
+ //#region src/menu/index.ts
190
+ /**
191
+ * Compound component for dropdown menus.
192
+ *
193
+ * Assemble the parts as properties of the object:
194
+ *
195
+ * ```tsx
196
+ * import { Menu } from '@vikram-hegde/skeletal'
197
+ *
198
+ * <Menu.Root>
199
+ * <Menu.Trigger>Options</Menu.Trigger>
200
+ * <Menu.Portal>
201
+ * <Menu.Positioner sideOffset={8} align="start">
202
+ * <Menu.Popup>
203
+ * <Menu.Item onClick={…}>Edit</Menu.Item>
204
+ * <Menu.Separator />
205
+ * <Menu.Item danger>Delete</Menu.Item>
206
+ * </Menu.Popup>
207
+ * </Menu.Positioner>
208
+ * </Menu.Portal>
209
+ * </Menu.Root>
210
+ * ```
211
+ *
212
+ * Composition follows the Base UI anatomy — `Menu.Positioner` floats the
213
+ * popup against the trigger and handles collision avoidance; `Menu.Portal`
214
+ * moves it to `<body>`.
215
+ *
216
+ * All parts are thin styled wrappers over Base UI's `Menu`, so every Base UI
217
+ * prop, `render` override, and ref behaves the same. Part prop types are
218
+ * exported separately (`MenuItemProps`, `MenuPopupProps`, etc.).
219
+ */
220
+ const Menu$1 = {
221
+ Root: MenuRoot,
222
+ Trigger: MenuTrigger,
223
+ Portal: MenuPortal,
224
+ Backdrop: MenuBackdrop,
225
+ Positioner: MenuPositioner,
226
+ Popup: MenuPopup,
227
+ Item: MenuItem,
228
+ LinkItem: MenuLinkItem,
229
+ Separator: MenuSeparator,
230
+ Group: MenuGroup,
231
+ GroupLabel: MenuGroupLabel,
232
+ SubmenuRoot: MenuSubmenuRoot,
233
+ SubmenuTrigger: MenuSubmenuTrigger,
234
+ RadioGroup: MenuRadioGroup,
235
+ RadioItem: MenuRadioItem,
236
+ RadioItemIndicator: MenuRadioItemIndicator,
237
+ CheckboxItem: MenuCheckboxItem,
238
+ CheckboxItemIndicator: MenuCheckboxItemIndicator,
239
+ Arrow: MenuArrow,
240
+ Viewport: MenuViewport
241
+ };
242
+ //#endregion
243
+ export { Menu$1 as t };
@@ -0,0 +1,15 @@
1
+ import { clsx } from "clsx";
2
+ //#region src/lib/merge-class-name.ts
3
+ /**
4
+ * Combines a static design-system class with a consumer-supplied `className`.
5
+ *
6
+ * Base UI's `className` prop accepts either a plain string or a function of the
7
+ * component's state. This helper preserves both shapes so styled wrappers can
8
+ * add their own BEM class without dropping the state-driven variant.
9
+ */
10
+ function mergeClassName(base, className) {
11
+ if (typeof className === "function") return (state) => clsx(base, className(state));
12
+ return clsx(base, className);
13
+ }
14
+ //#endregion
15
+ export { mergeClassName as t };
@@ -0,0 +1,2 @@
1
+ import { a as PopoverTitleProps, c as PopoverPositionerProps, d as PopoverCloseProps, f as PopoverBackdropProps, i as PopoverTriggerProps, l as PopoverPortalProps, n as PopoverHandle, o as PopoverProps, p as PopoverArrowProps, r as PopoverViewportProps, s as PopoverPopupProps, t as Popover, u as PopoverDescriptionProps } from "../index-W3ozKcis.js";
2
+ export { Popover, type PopoverArrowProps, type PopoverBackdropProps, type PopoverCloseProps, type PopoverDescriptionProps, PopoverHandle, type PopoverPopupProps, type PopoverPortalProps, type PopoverPositionerProps, type PopoverProps, type PopoverTitleProps, type PopoverTriggerProps, type PopoverViewportProps };
@@ -0,0 +1,2 @@
1
+ import { t as Popover } from "../popover-CenynT0Z.js";
2
+ export { Popover };
@@ -0,0 +1,139 @@
1
+ @layer skeletal {
2
+ .K9_uLa_popover__portal {
3
+ display: contents;
4
+ }
5
+
6
+ .K9_uLa_popover__backdrop {
7
+ z-index: 40;
8
+ background-color: light-dark(oklch(0% 0 0 / .25), oklch(0% 0 0 / .5));
9
+ transition: opacity .2s ease-out;
10
+ position: fixed;
11
+ inset: 0;
12
+
13
+ @supports (-webkit-touch-callout: none) {
14
+ position: absolute;
15
+ }
16
+
17
+ &[data-starting-style], &[data-ending-style] {
18
+ opacity: 0;
19
+ }
20
+
21
+ @media (prefers-reduced-motion: reduce) {
22
+ transition: none;
23
+ }
24
+ }
25
+
26
+ .K9_uLa_popover__positioner {
27
+ z-index: 50;
28
+ inline-size: var(--positioner-width);
29
+ block-size: var(--positioner-height);
30
+ max-inline-size: var(--available-width);
31
+ max-block-size: var(--available-height);
32
+ outline: none;
33
+ }
34
+
35
+ .K9_uLa_popover__popup {
36
+ z-index: 50;
37
+ inline-size: var(--popup-width, auto);
38
+ max-inline-size: min(22rem, 100vi - 2rem);
39
+ max-block-size: var(--available-height, none);
40
+ border: 1px solid var(--sk-border);
41
+ border-radius: var(--sk-radius);
42
+ background-color: var(--sk-popover);
43
+ color: var(--sk-popover-foreground);
44
+ box-shadow: var(--sk-shadow-md);
45
+ transform-origin: var(--transform-origin);
46
+ outline: none;
47
+ flex-direction: column;
48
+ gap: .375rem;
49
+ padding: 1rem;
50
+ transition: scale .15s ease-out, opacity .15s ease-out;
51
+ display: flex;
52
+ position: relative;
53
+ overflow: visible;
54
+
55
+ &[data-starting-style], &[data-ending-style] {
56
+ opacity: 0;
57
+ scale: .98;
58
+ }
59
+
60
+ &[data-instant] {
61
+ transition: none;
62
+ }
63
+
64
+ @media (prefers-reduced-motion: reduce) {
65
+ transition: none;
66
+ }
67
+ }
68
+
69
+ .K9_uLa_popover__title {
70
+ color: var(--sk-foreground);
71
+ margin: 0;
72
+ font-size: .875rem;
73
+ font-weight: 600;
74
+ line-height: 1.4;
75
+ }
76
+
77
+ .K9_uLa_popover__description {
78
+ color: var(--sk-muted-foreground);
79
+ margin: 0;
80
+ font-size: .875rem;
81
+ line-height: 1.5;
82
+ }
83
+
84
+ .K9_uLa_popover__arrow {
85
+ block-size: 6px;
86
+ inline-size: 12px;
87
+ display: block;
88
+ position: absolute;
89
+ overflow: clip;
90
+
91
+ &:before {
92
+ content: "";
93
+ border: 1px solid var(--sk-border);
94
+ background-color: var(--sk-popover);
95
+ block-size: 8.49px;
96
+ inline-size: 8.49px;
97
+ position: absolute;
98
+ inset-block-end: 0;
99
+ inset-inline-start: 50%;
100
+ transform: translate(-50%, 50%) rotate(45deg);
101
+ }
102
+
103
+ &[data-side="bottom"] {
104
+ inset-block-start: -6px;
105
+ }
106
+
107
+ &[data-side="left"] {
108
+ inset-inline-end: -9px;
109
+ transform: rotate(90deg);
110
+ }
111
+
112
+ &[data-side="right"] {
113
+ inset-inline-start: -9px;
114
+ transform: rotate(-90deg);
115
+ }
116
+
117
+ &[data-side="inline-start"] {
118
+ inset-inline-end: -9px;
119
+ transform: rotate(90deg);
120
+ }
121
+
122
+ &[data-side="inline-end"] {
123
+ inset-inline-start: -9px;
124
+ transform: rotate(-90deg);
125
+ }
126
+
127
+ &[data-side="top"] {
128
+ inset-block-end: -6px;
129
+ transform: rotate(180deg);
130
+ }
131
+ }
132
+
133
+ .K9_uLa_popover__viewport {
134
+ block-size: 100%;
135
+ inline-size: 100%;
136
+ padding: 0;
137
+ overflow: clip;
138
+ }
139
+ }