@nattstack/ui 0.0.45 → 0.0.47

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.
@@ -1,5 +1,5 @@
1
1
  import { CSSProperties, ComponentProps, ElementType, JSX, ReactNode } from "react";
2
- import { Drawer, OTPFieldPreview, Switch as Switch$1, Tabs as Tabs$1, Tooltip as Tooltip$1 } from "@base-ui/react";
2
+ import { Drawer, Menu as Menu$1, OTPFieldPreview, Switch as Switch$1, Tabs as Tabs$1, Tooltip as Tooltip$1 } from "@base-ui/react";
3
3
 
4
4
  //#region src/components/button/button.d.ts
5
5
  interface ButtonIconProps extends ButtonInternalProps {
@@ -126,6 +126,135 @@ declare const LABEL_CLASS_NAME: {
126
126
  readonly BASE: string;
127
127
  };
128
128
  //#endregion
129
+ //#region src/components/menu/menu.d.ts
130
+ interface MenuProps extends Omit<Menu$1.Root.Props, "disabled" | "onOpenChange" | "open"> {
131
+ isDisabled?: Menu$1.Root.Props["disabled"];
132
+ isOpen?: Menu$1.Root.Props["open"];
133
+ onIsOpenChange?: Menu$1.Root.Props["onOpenChange"];
134
+ }
135
+ declare function Menu(props: MenuProps): JSX.Element;
136
+ declare const createMenuHandle: typeof Menu$1.createHandle;
137
+ //#endregion
138
+ //#region src/components/menu/menu-checkbox-item.d.ts
139
+ interface MenuCheckboxItemProps extends Omit<Menu$1.CheckboxItem.Props, "checked" | "className" | "defaultChecked" | "disabled"> {
140
+ className?: string;
141
+ iconEnd?: ReactNode;
142
+ indicator?: ReactNode;
143
+ isChecked?: Menu$1.CheckboxItem.Props["checked"];
144
+ isDefaultChecked?: Menu$1.CheckboxItem.Props["defaultChecked"];
145
+ isDisabled?: Menu$1.CheckboxItem.Props["disabled"];
146
+ }
147
+ declare function MenuCheckboxItem(props: MenuCheckboxItemProps): JSX.Element;
148
+ //#endregion
149
+ //#region src/components/menu/menu-class-names.d.ts
150
+ declare const MENU_CLASS_NAME: {
151
+ readonly ARROW: string;
152
+ readonly ARROW_ICON: string;
153
+ readonly CHECKBOX_ITEM: string;
154
+ readonly CONTENT: string;
155
+ readonly CONTENT_POSITIONER: string;
156
+ readonly GROUP: string;
157
+ readonly GROUP_LABEL: string;
158
+ readonly ITEM: string;
159
+ readonly ITEM_ICON: string;
160
+ readonly ITEM_INDICATOR: string;
161
+ readonly ITEM_LABEL: string;
162
+ readonly LINK_ITEM: string;
163
+ readonly RADIO_GROUP: string;
164
+ readonly RADIO_ITEM: string;
165
+ readonly SEPARATOR: string;
166
+ readonly SUBMENU_TRIGGER: string;
167
+ readonly TRIGGER: string;
168
+ readonly VIEWPORT: string;
169
+ };
170
+ //#endregion
171
+ //#region src/components/menu/menu-content.d.ts
172
+ interface MenuContentProps extends Omit<Menu$1.Popup.Props, "className">, Pick<Menu$1.Positioner.Props, "align" | "alignOffset" | "anchor" | "arrowPadding" | "collisionAvoidance" | "collisionBoundary" | "collisionPadding" | "disableAnchorTracking" | "positionMethod" | "side" | "sideOffset" | "sticky"> {
173
+ className?: string;
174
+ container?: Menu$1.Portal.Props["container"];
175
+ keepMounted?: Menu$1.Portal.Props["keepMounted"];
176
+ showArrow?: boolean;
177
+ }
178
+ declare function MenuContent(props: MenuContentProps): JSX.Element;
179
+ //#endregion
180
+ //#region src/components/menu/menu-group.d.ts
181
+ interface MenuGroupProps extends Omit<Menu$1.Group.Props, "className"> {
182
+ className?: string;
183
+ }
184
+ declare function MenuGroup(props: MenuGroupProps): JSX.Element;
185
+ //#endregion
186
+ //#region src/components/menu/menu-group-label.d.ts
187
+ interface MenuGroupLabelProps extends Omit<Menu$1.GroupLabel.Props, "className"> {
188
+ className?: string;
189
+ }
190
+ declare function MenuGroupLabel(props: MenuGroupLabelProps): JSX.Element;
191
+ //#endregion
192
+ //#region src/components/menu/menu-item.d.ts
193
+ interface MenuItemProps extends Omit<Menu$1.Item.Props, "className" | "disabled"> {
194
+ className?: string;
195
+ iconEnd?: ReactNode;
196
+ iconStart?: ReactNode;
197
+ isDisabled?: Menu$1.Item.Props["disabled"];
198
+ }
199
+ declare function MenuItem(props: MenuItemProps): JSX.Element;
200
+ //#endregion
201
+ //#region src/components/menu/menu-link-item.d.ts
202
+ interface MenuLinkItemProps extends Omit<Menu$1.LinkItem.Props, "className"> {
203
+ className?: string;
204
+ iconEnd?: ReactNode;
205
+ iconStart?: ReactNode;
206
+ }
207
+ declare function MenuLinkItem(props: MenuLinkItemProps): JSX.Element;
208
+ //#endregion
209
+ //#region src/components/menu/menu-radio-group.d.ts
210
+ interface MenuRadioGroupProps extends Omit<Menu$1.RadioGroup.Props, "className" | "disabled"> {
211
+ className?: string;
212
+ isDisabled?: Menu$1.RadioGroup.Props["disabled"];
213
+ }
214
+ declare function MenuRadioGroup(props: MenuRadioGroupProps): JSX.Element;
215
+ //#endregion
216
+ //#region src/components/menu/menu-radio-item.d.ts
217
+ interface MenuRadioItemProps extends Omit<Menu$1.RadioItem.Props, "className" | "disabled"> {
218
+ className?: string;
219
+ iconEnd?: ReactNode;
220
+ indicator?: ReactNode;
221
+ isDisabled?: Menu$1.RadioItem.Props["disabled"];
222
+ }
223
+ declare function MenuRadioItem(props: MenuRadioItemProps): JSX.Element;
224
+ //#endregion
225
+ //#region src/components/menu/menu-separator.d.ts
226
+ interface MenuSeparatorProps extends Omit<Menu$1.Separator.Props, "className"> {
227
+ className?: string;
228
+ }
229
+ declare function MenuSeparator(props: MenuSeparatorProps): JSX.Element;
230
+ //#endregion
231
+ //#region src/components/menu/menu-submenu.d.ts
232
+ interface MenuSubmenuProps extends Omit<Menu$1.SubmenuRoot.Props, "disabled" | "onOpenChange" | "open"> {
233
+ isDisabled?: Menu$1.SubmenuRoot.Props["disabled"];
234
+ isOpen?: Menu$1.SubmenuRoot.Props["open"];
235
+ onIsOpenChange?: Menu$1.SubmenuRoot.Props["onOpenChange"];
236
+ }
237
+ declare function MenuSubmenu(props: MenuSubmenuProps): JSX.Element;
238
+ //#endregion
239
+ //#region src/components/menu/menu-submenu-trigger.d.ts
240
+ interface MenuSubmenuTriggerProps extends Omit<Menu$1.SubmenuTrigger.Props, "className" | "disabled"> {
241
+ className?: string;
242
+ iconEnd?: ReactNode;
243
+ iconStart?: ReactNode;
244
+ isDisabled?: Menu$1.SubmenuTrigger.Props["disabled"];
245
+ }
246
+ declare function MenuSubmenuTrigger(props: MenuSubmenuTriggerProps): JSX.Element;
247
+ //#endregion
248
+ //#region src/components/menu/menu-trigger.d.ts
249
+ interface MenuTriggerProps extends Menu$1.Trigger.Props {}
250
+ declare function MenuTrigger(props: MenuTriggerProps): JSX.Element;
251
+ //#endregion
252
+ //#region src/components/menu/menu-viewport.d.ts
253
+ interface MenuViewportProps extends Omit<Menu$1.Viewport.Props, "className"> {
254
+ className?: string;
255
+ }
256
+ declare function MenuViewport(props: MenuViewportProps): JSX.Element;
257
+ //#endregion
129
258
  //#region src/components/otp-field/otp-field.d.ts
130
259
  interface OTPFieldProps extends Omit<OTPFieldPreview.Root.Props, "disabled"> {
131
260
  isDisabled?: OTPFieldPreview.Root.Props["disabled"];
@@ -293,4 +422,4 @@ declare function TooltipProvider(props: TooltipProviderProps): JSX.Element;
293
422
  interface TooltipTriggerProps extends Tooltip$1.Trigger.Props {}
294
423
  declare function TooltipTrigger(props: TooltipTriggerProps): JSX.Element;
295
424
  //#endregion
296
- export { BUTTON_CLASS_NAME, Button, ButtonIconProps, ButtonLink, ButtonLinkProps, ButtonProps, COLUMN_CLASS_NAME, Column, ColumnProps, DIALOG_RESPONSIVE_POPUP_CLASS_NAME, DialogResponsive, DialogResponsivePopup, DialogResponsivePopupProps, DialogResponsiveProps, DialogResponsiveTrigger, DialogResponsiveTriggerProps, INPUT_CLASS_NAME, Input, InputProps, LABEL_CLASS_NAME, Label, LabelProps, OTPField, OTPFieldInput, OTP_FIELD_CLASS_NAME, OTP_FIELD_INPUT_CLASS_NAME, ROW_CLASS_NAME, Row, RowProps, SPACER_CLASS_NAME, SWITCH_CLASS_NAME, Spacer, SpacerProps, Switch, SwitchProps, TABS_CLASS_NAME, TABS_PANEL_CLASS_NAME, TABS_PILL_LIST_CLASS_NAME, TABS_PILL_TAB_CLASS_NAME, TABS_SEGMENTED_LIST_CLASS_NAME, TABS_SEGMENTED_TAB_CLASS_NAME, TABS_UNDERLINE_LIST_CLASS_NAME, TABS_UNDERLINE_TAB_CLASS_NAME, TEXTAREA_CLASS_NAME, TOOLTIP_CONTENT_CLASS_NAME, Tabs, TabsPanel, TabsPanelProps, TabsPillList, TabsPillListProps, TabsPillTab, TabsPillTabProps, TabsProps, TabsSegmentedList, TabsSegmentedListProps, TabsSegmentedTab, TabsSegmentedTabProps, TabsUnderlineList, TabsUnderlineListProps, TabsUnderlineTab, TabsUnderlineTabProps, Textarea, TextareaProps, Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipTrigger, TooltipTriggerProps };
425
+ export { BUTTON_CLASS_NAME, Button, ButtonIconProps, ButtonLink, ButtonLinkProps, ButtonProps, COLUMN_CLASS_NAME, Column, ColumnProps, DIALOG_RESPONSIVE_POPUP_CLASS_NAME, DialogResponsive, DialogResponsivePopup, DialogResponsivePopupProps, DialogResponsiveProps, DialogResponsiveTrigger, DialogResponsiveTriggerProps, INPUT_CLASS_NAME, Input, InputProps, LABEL_CLASS_NAME, Label, LabelProps, MENU_CLASS_NAME, Menu, MenuCheckboxItem, MenuCheckboxItemProps, MenuContent, MenuContentProps, MenuGroup, MenuGroupLabel, MenuGroupLabelProps, MenuGroupProps, MenuItem, MenuItemProps, MenuLinkItem, MenuLinkItemProps, MenuProps, MenuRadioGroup, MenuRadioGroupProps, MenuRadioItem, MenuRadioItemProps, MenuSeparator, MenuSeparatorProps, MenuSubmenu, MenuSubmenuProps, MenuSubmenuTrigger, MenuSubmenuTriggerProps, MenuTrigger, MenuTriggerProps, MenuViewport, MenuViewportProps, OTPField, OTPFieldInput, OTP_FIELD_CLASS_NAME, OTP_FIELD_INPUT_CLASS_NAME, ROW_CLASS_NAME, Row, RowProps, SPACER_CLASS_NAME, SWITCH_CLASS_NAME, Spacer, SpacerProps, Switch, SwitchProps, TABS_CLASS_NAME, TABS_PANEL_CLASS_NAME, TABS_PILL_LIST_CLASS_NAME, TABS_PILL_TAB_CLASS_NAME, TABS_SEGMENTED_LIST_CLASS_NAME, TABS_SEGMENTED_TAB_CLASS_NAME, TABS_UNDERLINE_LIST_CLASS_NAME, TABS_UNDERLINE_TAB_CLASS_NAME, TEXTAREA_CLASS_NAME, TOOLTIP_CONTENT_CLASS_NAME, Tabs, TabsPanel, TabsPanelProps, TabsPillList, TabsPillListProps, TabsPillTab, TabsPillTabProps, TabsProps, TabsSegmentedList, TabsSegmentedListProps, TabsSegmentedTab, TabsSegmentedTabProps, TabsUnderlineList, TabsUnderlineListProps, TabsUnderlineTab, TabsUnderlineTabProps, Textarea, TextareaProps, Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipTrigger, TooltipTriggerProps, createMenuHandle };
@@ -1,7 +1,7 @@
1
1
  import './style.css';
2
2
  import { createElement } from "react";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- import { Drawer, OTPFieldPreview, Switch as Switch$1, Tabs as Tabs$1, Tooltip as Tooltip$1 } from "@base-ui/react";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import { Drawer, Menu as Menu$1, OTPFieldPreview, Switch as Switch$1, Tabs as Tabs$1, Tooltip as Tooltip$1 } from "@base-ui/react";
5
5
  //#region src/utils/normalize-whitespace.ts
6
6
  /**
7
7
  * Collapses consecutive whitespace characters into single spaces and trims
@@ -316,6 +316,346 @@ function Label(props) {
316
316
  }
317
317
  const LABEL_CLASS_NAME = { BASE: label_module_default.label };
318
318
  //#endregion
319
+ //#region src/components/menu/menu.tsx
320
+ function Menu(props) {
321
+ const { isDisabled = false, isOpen = void 0, onIsOpenChange = void 0, ...rest } = props;
322
+ return /* @__PURE__ */ jsx(Menu$1.Root, {
323
+ "data-slot": "menu",
324
+ disabled: isDisabled,
325
+ onOpenChange: onIsOpenChange,
326
+ open: isOpen,
327
+ ...rest
328
+ });
329
+ }
330
+ const createMenuHandle = Menu$1.createHandle;
331
+ //#endregion
332
+ //#region src/components/menu/menu.module.css
333
+ var menu_module_default = {
334
+ "menu_checkbox_item": "menu-module_menu_checkbox_item_PqTckW",
335
+ "menu_content": "menu-module_menu_content_PqTckW",
336
+ "menu_content_arrow": "menu-module_menu_content_arrow_PqTckW",
337
+ "menu_content_arrow__icon": "menu-module_menu_content_arrow__icon_PqTckW",
338
+ "menu_content_positioner": "menu-module_menu_content_positioner_PqTckW",
339
+ "menu_group": "menu-module_menu_group_PqTckW",
340
+ "menu_group_label": "menu-module_menu_group_label_PqTckW",
341
+ "menu_item": "menu-module_menu_item_PqTckW",
342
+ "menu_item__icon": "menu-module_menu_item__icon_PqTckW",
343
+ "menu_item__indicator": "menu-module_menu_item__indicator_PqTckW",
344
+ "menu_item__label": "menu-module_menu_item__label_PqTckW",
345
+ "menu_link_item": "menu-module_menu_link_item_PqTckW",
346
+ "menu_radio_group": "menu-module_menu_radio_group_PqTckW",
347
+ "menu_radio_item": "menu-module_menu_radio_item_PqTckW",
348
+ "menu_separator": "menu-module_menu_separator_PqTckW",
349
+ "menu_submenu_trigger": "menu-module_menu_submenu_trigger_PqTckW",
350
+ "menu_trigger": "menu-module_menu_trigger_PqTckW",
351
+ "menu_viewport": "menu-module_menu_viewport_PqTckW"
352
+ };
353
+ //#endregion
354
+ //#region src/components/menu/menu-class-names.ts
355
+ const MENU_CLASS_NAME = {
356
+ ARROW: menu_module_default.menu_content_arrow,
357
+ ARROW_ICON: menu_module_default.menu_content_arrow__icon,
358
+ CHECKBOX_ITEM: menu_module_default.menu_checkbox_item,
359
+ CONTENT: menu_module_default.menu_content,
360
+ CONTENT_POSITIONER: menu_module_default.menu_content_positioner,
361
+ GROUP: menu_module_default.menu_group,
362
+ GROUP_LABEL: menu_module_default.menu_group_label,
363
+ ITEM: menu_module_default.menu_item,
364
+ ITEM_ICON: menu_module_default.menu_item__icon,
365
+ ITEM_INDICATOR: menu_module_default.menu_item__indicator,
366
+ ITEM_LABEL: menu_module_default.menu_item__label,
367
+ LINK_ITEM: menu_module_default.menu_link_item,
368
+ RADIO_GROUP: menu_module_default.menu_radio_group,
369
+ RADIO_ITEM: menu_module_default.menu_radio_item,
370
+ SEPARATOR: menu_module_default.menu_separator,
371
+ SUBMENU_TRIGGER: menu_module_default.menu_submenu_trigger,
372
+ TRIGGER: menu_module_default.menu_trigger,
373
+ VIEWPORT: menu_module_default.menu_viewport
374
+ };
375
+ //#endregion
376
+ //#region src/components/menu/menu-utils.ts
377
+ function getMenuClassName(baseClassName, customClassName) {
378
+ return normalizeWhitespace(`
379
+ ${baseClassName}
380
+ ${customClassName}
381
+ `);
382
+ }
383
+ //#endregion
384
+ //#region src/components/menu/menu-checkbox-item.tsx
385
+ function MenuCheckboxItem(props) {
386
+ const { children, className: customClassName = "", iconEnd = void 0, indicator = void 0, isChecked = void 0, isDefaultChecked = false, isDisabled = false, ...rest } = props;
387
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.CHECKBOX_ITEM, customClassName);
388
+ const currentIndicator = indicator ?? /* @__PURE__ */ jsx("svg", {
389
+ fill: "none",
390
+ height: "16",
391
+ viewBox: "0 0 16 16",
392
+ width: "16",
393
+ children: /* @__PURE__ */ jsx("path", {
394
+ d: "M3.5 8.5L6.5 11.5L12.5 4.5",
395
+ stroke: "currentColor",
396
+ strokeWidth: "2"
397
+ })
398
+ });
399
+ return /* @__PURE__ */ jsxs(Menu$1.CheckboxItem, {
400
+ checked: isChecked,
401
+ className: combinedClassName,
402
+ "data-slot": "menu-checkbox-item",
403
+ defaultChecked: isDefaultChecked,
404
+ disabled: isDisabled,
405
+ ...rest,
406
+ children: [
407
+ /* @__PURE__ */ jsx(Menu$1.CheckboxItemIndicator, {
408
+ className: MENU_CLASS_NAME.ITEM_INDICATOR,
409
+ children: currentIndicator
410
+ }),
411
+ /* @__PURE__ */ jsx("span", {
412
+ className: MENU_CLASS_NAME.ITEM_LABEL,
413
+ children
414
+ }),
415
+ iconEnd && /* @__PURE__ */ jsx("span", {
416
+ className: MENU_CLASS_NAME.ITEM_ICON,
417
+ children: iconEnd
418
+ })
419
+ ]
420
+ });
421
+ }
422
+ //#endregion
423
+ //#region src/components/menu/menu-content.tsx
424
+ function MenuContent(props) {
425
+ const { align = "start", alignOffset = void 0, anchor = void 0, arrowPadding = void 0, children, className: customClassName = "", collisionAvoidance = void 0, collisionBoundary = void 0, collisionPadding = void 0, container = void 0, disableAnchorTracking = void 0, keepMounted = void 0, positionMethod = void 0, showArrow = false, side = "bottom", sideOffset = 8, sticky = void 0, ...rest } = props;
426
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.CONTENT, customClassName);
427
+ return /* @__PURE__ */ jsx(Menu$1.Portal, {
428
+ container,
429
+ keepMounted,
430
+ children: /* @__PURE__ */ jsx(Menu$1.Positioner, {
431
+ align,
432
+ alignOffset,
433
+ anchor,
434
+ arrowPadding,
435
+ className: MENU_CLASS_NAME.CONTENT_POSITIONER,
436
+ collisionAvoidance,
437
+ collisionBoundary,
438
+ collisionPadding,
439
+ disableAnchorTracking,
440
+ positionMethod,
441
+ side,
442
+ sideOffset,
443
+ sticky,
444
+ children: /* @__PURE__ */ jsxs(Menu$1.Popup, {
445
+ className: combinedClassName,
446
+ "data-slot": "menu-content",
447
+ ...rest,
448
+ children: [showArrow && /* @__PURE__ */ jsx(Menu$1.Arrow, {
449
+ className: MENU_CLASS_NAME.ARROW,
450
+ children: /* @__PURE__ */ jsx("svg", {
451
+ className: MENU_CLASS_NAME.ARROW_ICON,
452
+ fill: "none",
453
+ height: "6",
454
+ viewBox: "0 0 12 6",
455
+ width: "12",
456
+ children: /* @__PURE__ */ jsx("path", { d: "M0 6L5.15 0.85C5.62 0.38 6.38 0.38 6.85 0.85L12 6H0Z" })
457
+ })
458
+ }), children]
459
+ })
460
+ })
461
+ });
462
+ }
463
+ //#endregion
464
+ //#region src/components/menu/menu-group.tsx
465
+ function MenuGroup(props) {
466
+ const { className: customClassName = "", ...rest } = props;
467
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.GROUP, customClassName);
468
+ return /* @__PURE__ */ jsx(Menu$1.Group, {
469
+ className: combinedClassName,
470
+ "data-slot": "menu-group",
471
+ ...rest
472
+ });
473
+ }
474
+ //#endregion
475
+ //#region src/components/menu/menu-group-label.tsx
476
+ function MenuGroupLabel(props) {
477
+ const { className: customClassName = "", ...rest } = props;
478
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.GROUP_LABEL, customClassName);
479
+ return /* @__PURE__ */ jsx(Menu$1.GroupLabel, {
480
+ className: combinedClassName,
481
+ "data-slot": "menu-group-label",
482
+ ...rest
483
+ });
484
+ }
485
+ //#endregion
486
+ //#region src/components/menu/menu-item-content.tsx
487
+ function MenuItemContent(props) {
488
+ const { children, iconEnd = void 0, iconStart = void 0 } = props;
489
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
490
+ iconStart && /* @__PURE__ */ jsx("span", {
491
+ className: MENU_CLASS_NAME.ITEM_ICON,
492
+ children: iconStart
493
+ }),
494
+ /* @__PURE__ */ jsx("span", {
495
+ className: MENU_CLASS_NAME.ITEM_LABEL,
496
+ children
497
+ }),
498
+ iconEnd && /* @__PURE__ */ jsx("span", {
499
+ className: MENU_CLASS_NAME.ITEM_ICON,
500
+ children: iconEnd
501
+ })
502
+ ] });
503
+ }
504
+ //#endregion
505
+ //#region src/components/menu/menu-item.tsx
506
+ function MenuItem(props) {
507
+ const { children, className: customClassName = "", iconEnd = void 0, iconStart = void 0, isDisabled = false, ...rest } = props;
508
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.ITEM, customClassName);
509
+ return /* @__PURE__ */ jsx(Menu$1.Item, {
510
+ className: combinedClassName,
511
+ "data-slot": "menu-item",
512
+ disabled: isDisabled,
513
+ ...rest,
514
+ children: /* @__PURE__ */ jsx(MenuItemContent, {
515
+ iconEnd,
516
+ iconStart,
517
+ children
518
+ })
519
+ });
520
+ }
521
+ //#endregion
522
+ //#region src/components/menu/menu-link-item.tsx
523
+ function MenuLinkItem(props) {
524
+ const { children, className: customClassName = "", iconEnd = void 0, iconStart = void 0, ...rest } = props;
525
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.LINK_ITEM, customClassName);
526
+ return /* @__PURE__ */ jsx(Menu$1.LinkItem, {
527
+ className: combinedClassName,
528
+ "data-slot": "menu-link-item",
529
+ ...rest,
530
+ children: /* @__PURE__ */ jsx(MenuItemContent, {
531
+ iconEnd,
532
+ iconStart,
533
+ children
534
+ })
535
+ });
536
+ }
537
+ //#endregion
538
+ //#region src/components/menu/menu-radio-group.tsx
539
+ function MenuRadioGroup(props) {
540
+ const { className: customClassName = "", isDisabled = false, ...rest } = props;
541
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.RADIO_GROUP, customClassName);
542
+ return /* @__PURE__ */ jsx(Menu$1.RadioGroup, {
543
+ className: combinedClassName,
544
+ "data-slot": "menu-radio-group",
545
+ disabled: isDisabled,
546
+ ...rest
547
+ });
548
+ }
549
+ //#endregion
550
+ //#region src/components/menu/menu-radio-item.tsx
551
+ function MenuRadioItem(props) {
552
+ const { children, className: customClassName = "", iconEnd = void 0, indicator = void 0, isDisabled = false, ...rest } = props;
553
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.RADIO_ITEM, customClassName);
554
+ const currentIndicator = indicator ?? /* @__PURE__ */ jsx("svg", {
555
+ fill: "none",
556
+ height: "16",
557
+ viewBox: "0 0 16 16",
558
+ width: "16",
559
+ children: /* @__PURE__ */ jsx("circle", {
560
+ cx: "8",
561
+ cy: "8",
562
+ fill: "currentColor",
563
+ r: "3"
564
+ })
565
+ });
566
+ return /* @__PURE__ */ jsxs(Menu$1.RadioItem, {
567
+ className: combinedClassName,
568
+ "data-slot": "menu-radio-item",
569
+ disabled: isDisabled,
570
+ ...rest,
571
+ children: [
572
+ /* @__PURE__ */ jsx(Menu$1.RadioItemIndicator, {
573
+ className: MENU_CLASS_NAME.ITEM_INDICATOR,
574
+ children: currentIndicator
575
+ }),
576
+ /* @__PURE__ */ jsx("span", {
577
+ className: MENU_CLASS_NAME.ITEM_LABEL,
578
+ children
579
+ }),
580
+ iconEnd && /* @__PURE__ */ jsx("span", {
581
+ className: MENU_CLASS_NAME.ITEM_ICON,
582
+ children: iconEnd
583
+ })
584
+ ]
585
+ });
586
+ }
587
+ //#endregion
588
+ //#region src/components/menu/menu-separator.tsx
589
+ function MenuSeparator(props) {
590
+ const { className: customClassName = "", ...rest } = props;
591
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.SEPARATOR, customClassName);
592
+ return /* @__PURE__ */ jsx(Menu$1.Separator, {
593
+ className: combinedClassName,
594
+ "data-slot": "menu-separator",
595
+ ...rest
596
+ });
597
+ }
598
+ //#endregion
599
+ //#region src/components/menu/menu-submenu.tsx
600
+ function MenuSubmenu(props) {
601
+ const { isDisabled = false, isOpen = void 0, onIsOpenChange = void 0, ...rest } = props;
602
+ return /* @__PURE__ */ jsx(Menu$1.SubmenuRoot, {
603
+ "data-slot": "menu-submenu",
604
+ disabled: isDisabled,
605
+ onOpenChange: onIsOpenChange,
606
+ open: isOpen,
607
+ ...rest
608
+ });
609
+ }
610
+ //#endregion
611
+ //#region src/components/menu/menu-submenu-trigger.tsx
612
+ function MenuSubmenuTrigger(props) {
613
+ const { children, className: customClassName = "", iconEnd = void 0, iconStart = void 0, isDisabled = false, ...rest } = props;
614
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.SUBMENU_TRIGGER, customClassName);
615
+ const currentIconEnd = iconEnd ?? /* @__PURE__ */ jsx("svg", {
616
+ fill: "none",
617
+ height: "16",
618
+ viewBox: "0 0 16 16",
619
+ width: "16",
620
+ children: /* @__PURE__ */ jsx("path", {
621
+ d: "M6 3.5L10.5 8L6 12.5",
622
+ stroke: "currentColor",
623
+ strokeWidth: "1.75"
624
+ })
625
+ });
626
+ return /* @__PURE__ */ jsx(Menu$1.SubmenuTrigger, {
627
+ className: combinedClassName,
628
+ "data-slot": "menu-submenu-trigger",
629
+ disabled: isDisabled,
630
+ ...rest,
631
+ children: /* @__PURE__ */ jsx(MenuItemContent, {
632
+ iconEnd: currentIconEnd,
633
+ iconStart,
634
+ children
635
+ })
636
+ });
637
+ }
638
+ //#endregion
639
+ //#region src/components/menu/menu-trigger.tsx
640
+ function MenuTrigger(props) {
641
+ const { ...rest } = props;
642
+ return /* @__PURE__ */ jsx(Menu$1.Trigger, {
643
+ "data-slot": "menu-trigger",
644
+ ...rest
645
+ });
646
+ }
647
+ //#endregion
648
+ //#region src/components/menu/menu-viewport.tsx
649
+ function MenuViewport(props) {
650
+ const { className: customClassName = "", ...rest } = props;
651
+ const combinedClassName = getMenuClassName(MENU_CLASS_NAME.VIEWPORT, customClassName);
652
+ return /* @__PURE__ */ jsx(Menu$1.Viewport, {
653
+ className: combinedClassName,
654
+ "data-slot": "menu-viewport",
655
+ ...rest
656
+ });
657
+ }
658
+ //#endregion
319
659
  //#region src/components/otp-field/otp-field.module.css
320
660
  var otp_field_module_default = {
321
661
  "otp_field": "otp-field-module_otp_field_l-Sakq",
@@ -746,4 +1086,4 @@ function TooltipTrigger(props) {
746
1086
  });
747
1087
  }
748
1088
  //#endregion
749
- export { BUTTON_CLASS_NAME, Button, ButtonLink, COLUMN_CLASS_NAME, Column, DIALOG_RESPONSIVE_POPUP_CLASS_NAME, DialogResponsive, DialogResponsivePopup, DialogResponsiveTrigger, INPUT_CLASS_NAME, Input, LABEL_CLASS_NAME, Label, OTPField, OTPFieldInput, OTP_FIELD_CLASS_NAME, OTP_FIELD_INPUT_CLASS_NAME, ROW_CLASS_NAME, Row, SPACER_CLASS_NAME, SWITCH_CLASS_NAME, Spacer, Switch, TABS_CLASS_NAME, TABS_PANEL_CLASS_NAME, TABS_PILL_LIST_CLASS_NAME, TABS_PILL_TAB_CLASS_NAME, TABS_SEGMENTED_LIST_CLASS_NAME, TABS_SEGMENTED_TAB_CLASS_NAME, TABS_UNDERLINE_LIST_CLASS_NAME, TABS_UNDERLINE_TAB_CLASS_NAME, TEXTAREA_CLASS_NAME, TOOLTIP_CONTENT_CLASS_NAME, Tabs, TabsPanel, TabsPillList, TabsPillTab, TabsSegmentedList, TabsSegmentedTab, TabsUnderlineList, TabsUnderlineTab, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
1089
+ export { BUTTON_CLASS_NAME, Button, ButtonLink, COLUMN_CLASS_NAME, Column, DIALOG_RESPONSIVE_POPUP_CLASS_NAME, DialogResponsive, DialogResponsivePopup, DialogResponsiveTrigger, INPUT_CLASS_NAME, Input, LABEL_CLASS_NAME, Label, MENU_CLASS_NAME, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuLinkItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, MenuViewport, OTPField, OTPFieldInput, OTP_FIELD_CLASS_NAME, OTP_FIELD_INPUT_CLASS_NAME, ROW_CLASS_NAME, Row, SPACER_CLASS_NAME, SWITCH_CLASS_NAME, Spacer, Switch, TABS_CLASS_NAME, TABS_PANEL_CLASS_NAME, TABS_PILL_LIST_CLASS_NAME, TABS_PILL_TAB_CLASS_NAME, TABS_SEGMENTED_LIST_CLASS_NAME, TABS_SEGMENTED_TAB_CLASS_NAME, TABS_UNDERLINE_LIST_CLASS_NAME, TABS_UNDERLINE_TAB_CLASS_NAME, TEXTAREA_CLASS_NAME, TOOLTIP_CONTENT_CLASS_NAME, Tabs, TabsPanel, TabsPillList, TabsPillTab, TabsSegmentedList, TabsSegmentedTab, TabsUnderlineList, TabsUnderlineTab, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, createMenuHandle };
@@ -434,6 +434,213 @@
434
434
  width: fit-content;
435
435
  font-size: 14px;
436
436
  }
437
+ .menu-module_menu_trigger_PqTckW {
438
+ background-color: var(--color-gray-2);
439
+ box-shadow: 0 0 0 1px var(--color-gray-4) inset;
440
+ color: var(--color-text-primary);
441
+ cursor: pointer;
442
+ font-family: var(--font-body);
443
+ outline-color: var(--color-primary-9);
444
+ outline-offset: 2px;
445
+ user-select: none;
446
+ background-image: linear-gradient(oklab(0% none none / 0) 50%, oklab(0% none none / .0196078) 50%);
447
+ border-style: none;
448
+ border-radius: 10px;
449
+ outline-width: 0;
450
+ outline-style: solid;
451
+ flex-shrink: 0;
452
+ justify-content: safe center;
453
+ align-items: safe center;
454
+ column-gap: 8px;
455
+ width: max-content;
456
+ height: 40px;
457
+ padding: 0 14px;
458
+ font-size: 14px;
459
+ font-weight: 500;
460
+ line-height: 1.5;
461
+ transition-property: background-color, opacity, translate;
462
+ transition-duration: .15s;
463
+ display: inline-flex;
464
+ overflow: hidden;
465
+ }
466
+
467
+ .menu-module_menu_trigger_PqTckW:hover:not(:disabled), .menu-module_menu_trigger_PqTckW[data-popup-open] {
468
+ background-color: var(--color-gray-3);
469
+ }
470
+
471
+ .menu-module_menu_trigger_PqTckW:active:not(:disabled), .menu-module_menu_trigger_PqTckW[data-pressed] {
472
+ translate: 0 1px;
473
+ }
474
+
475
+ .menu-module_menu_trigger_PqTckW:disabled {
476
+ cursor: not-allowed;
477
+ opacity: .5;
478
+ }
479
+
480
+ .menu-module_menu_trigger_PqTckW:focus-visible {
481
+ outline-width: 2px;
482
+ }
483
+
484
+ .menu-module_menu_trigger_PqTckW > svg {
485
+ --size-icon: 20px;
486
+ height: var(--size-icon);
487
+ width: var(--size-icon);
488
+ }
489
+
490
+ .dark .menu-module_menu_trigger_PqTckW {
491
+ background-image: linear-gradient(oklab(100% 0 5.96046e-8 / .00990099) 50%, oklab(0% 0 0 / 0) 50%);
492
+ }
493
+
494
+ .menu-module_menu_content_positioner_PqTckW {
495
+ isolation: isolate;
496
+ z-index: 50;
497
+ }
498
+
499
+ .menu-module_menu_content_PqTckW {
500
+ background-color: var(--color-bg-primary);
501
+ box-shadow: 0 0 0 1px var(--color-border) inset,
502
+ 0 16px 32px oklab(0% none none / .16);
503
+ color: var(--color-text-primary);
504
+ font-family: var(--font-body);
505
+ max-height: min(var(--available-height), 480px);
506
+ max-width: min(var(--available-width), 320px);
507
+ outline-color: var(--color-primary-9);
508
+ outline-offset: -2px;
509
+ min-width: 180px;
510
+ transform-origin: var(--transform-origin);
511
+ will-change: opacity, transform;
512
+ border-radius: 12px;
513
+ outline-width: 0;
514
+ outline-style: solid;
515
+ flex-direction: column;
516
+ padding: 4px;
517
+ transition-property: opacity, transform;
518
+ transition-duration: .15s;
519
+ display: flex;
520
+ overflow: auto;
521
+ }
522
+
523
+ .menu-module_menu_content_PqTckW:focus-visible {
524
+ outline-width: 2px;
525
+ }
526
+
527
+ .menu-module_menu_content_PqTckW[data-ending-style], .menu-module_menu_content_PqTckW[data-starting-style] {
528
+ opacity: 0;
529
+ transform: scale(.975);
530
+ }
531
+
532
+ .menu-module_menu_content_PqTckW[data-side="top"][data-ending-style], .menu-module_menu_content_PqTckW[data-side="top"][data-starting-style] {
533
+ transform: scale(.975) translateY(4px);
534
+ }
535
+
536
+ .menu-module_menu_content_PqTckW[data-side="bottom"][data-ending-style], .menu-module_menu_content_PqTckW[data-side="bottom"][data-starting-style] {
537
+ transform: scale(.975) translateY(-4px);
538
+ }
539
+
540
+ .menu-module_menu_content_PqTckW[data-side="left"][data-ending-style], .menu-module_menu_content_PqTckW[data-side="left"][data-starting-style], .menu-module_menu_content_PqTckW[data-side="inline-start"][data-ending-style], .menu-module_menu_content_PqTckW[data-side="inline-start"][data-starting-style] {
541
+ transform: scale(.975) translateX(4px);
542
+ }
543
+
544
+ .menu-module_menu_content_PqTckW[data-side="right"][data-ending-style], .menu-module_menu_content_PqTckW[data-side="right"][data-starting-style], .menu-module_menu_content_PqTckW[data-side="inline-end"][data-ending-style], .menu-module_menu_content_PqTckW[data-side="inline-end"][data-starting-style] {
545
+ transform: scale(.975) translateX(-4px);
546
+ }
547
+
548
+ .menu-module_menu_content_arrow_PqTckW {
549
+ color: var(--color-bg-primary);
550
+ display: flex;
551
+ }
552
+
553
+ .menu-module_menu_content_arrow__icon_PqTckW {
554
+ fill: currentColor;
555
+ filter: drop-shadow(0 -1px 0 var(--color-border));
556
+ display: block;
557
+ }
558
+
559
+ .menu-module_menu_content_arrow_PqTckW[data-side="top"] {
560
+ rotate: 180deg;
561
+ }
562
+
563
+ .menu-module_menu_content_arrow_PqTckW[data-side="left"], .menu-module_menu_content_arrow_PqTckW[data-side="inline-start"] {
564
+ rotate: 90deg;
565
+ }
566
+
567
+ .menu-module_menu_content_arrow_PqTckW[data-side="right"], .menu-module_menu_content_arrow_PqTckW[data-side="inline-end"] {
568
+ rotate: -90deg;
569
+ }
570
+
571
+ .menu-module_menu_checkbox_item_PqTckW, .menu-module_menu_item_PqTckW, .menu-module_menu_link_item_PqTckW, .menu-module_menu_radio_item_PqTckW, .menu-module_menu_submenu_trigger_PqTckW {
572
+ color: var(--color-text-primary);
573
+ cursor: pointer;
574
+ user-select: none;
575
+ border-radius: 8px;
576
+ outline: none;
577
+ align-items: safe center;
578
+ column-gap: 8px;
579
+ min-height: 32px;
580
+ padding: 0 8px;
581
+ font-size: 14px;
582
+ font-weight: 500;
583
+ line-height: 1.5;
584
+ text-decoration: none;
585
+ display: flex;
586
+ position: relative;
587
+ }
588
+
589
+ .menu-module_menu_checkbox_item_PqTckW[data-highlighted], .menu-module_menu_item_PqTckW[data-highlighted], .menu-module_menu_link_item_PqTckW[data-highlighted], .menu-module_menu_radio_item_PqTckW[data-highlighted], .menu-module_menu_submenu_trigger_PqTckW[data-highlighted], .menu-module_menu_submenu_trigger_PqTckW[data-popup-open] {
590
+ background-color: var(--color-gray-3);
591
+ }
592
+
593
+ .menu-module_menu_checkbox_item_PqTckW[data-disabled], .menu-module_menu_item_PqTckW[data-disabled], .menu-module_menu_radio_item_PqTckW[data-disabled], .menu-module_menu_submenu_trigger_PqTckW[data-disabled] {
594
+ cursor: not-allowed;
595
+ opacity: .5;
596
+ }
597
+
598
+ .menu-module_menu_item__icon_PqTckW, .menu-module_menu_item__indicator_PqTckW {
599
+ color: var(--color-text-secondary);
600
+ flex-shrink: 0;
601
+ justify-content: safe center;
602
+ align-items: safe center;
603
+ width: 16px;
604
+ height: 16px;
605
+ display: flex;
606
+ }
607
+
608
+ .menu-module_menu_item__indicator_PqTckW {
609
+ color: var(--color-primary-9);
610
+ }
611
+
612
+ .menu-module_menu_item__icon_PqTckW > svg, .menu-module_menu_item__indicator_PqTckW > svg {
613
+ width: 16px;
614
+ height: 16px;
615
+ }
616
+
617
+ .menu-module_menu_item__label_PqTckW {
618
+ text-overflow: ellipsis;
619
+ white-space: nowrap;
620
+ flex: auto;
621
+ min-width: 0;
622
+ overflow: hidden;
623
+ }
624
+
625
+ .menu-module_menu_group_PqTckW, .menu-module_menu_radio_group_PqTckW, .menu-module_menu_viewport_PqTckW {
626
+ flex-direction: column;
627
+ display: flex;
628
+ }
629
+
630
+ .menu-module_menu_group_label_PqTckW {
631
+ color: var(--color-text-secondary);
632
+ padding: 6px 8px 4px;
633
+ font-size: 12px;
634
+ font-weight: 600;
635
+ line-height: 1.5;
636
+ }
637
+
638
+ .menu-module_menu_separator_PqTckW {
639
+ background-color: var(--color-border);
640
+ flex-shrink: 0;
641
+ height: 1px;
642
+ margin: 4px;
643
+ }
437
644
  .otp-field-module_otp_field_l-Sakq {
438
645
  flex-wrap: wrap;
439
646
  justify-content: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nattstack/ui",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "description": "A collection of reusable React components built with Base UI, TypeScript, and CSS Modules",
5
5
  "keywords": [
6
6
  "base-ui",