@shipfox/react-ui 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/.turbo/turbo-check.log +2 -2
  3. package/.turbo/turbo-type.log +1 -1
  4. package/CHANGELOG.md +12 -0
  5. package/dist/components/button/button.js +14 -11
  6. package/dist/components/button/button.js.map +1 -1
  7. package/dist/components/dropdown-menu/dropdown-menu.d.ts +58 -0
  8. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  9. package/dist/components/dropdown-menu/dropdown-menu.js +280 -0
  10. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  11. package/dist/components/dropdown-menu/dropdown-menu.stories.js +462 -0
  12. package/dist/components/dropdown-menu/dropdown-menu.stories.js.map +1 -0
  13. package/dist/components/dropdown-menu/index.d.ts +3 -0
  14. package/dist/components/dropdown-menu/index.d.ts.map +1 -0
  15. package/dist/components/dropdown-menu/index.js +3 -0
  16. package/dist/components/dropdown-menu/index.js.map +1 -0
  17. package/dist/components/dynamic-item/dynamic-item.d.ts +1 -1
  18. package/dist/components/dynamic-item/dynamic-item.d.ts.map +1 -1
  19. package/dist/components/dynamic-item/dynamic-item.js +4 -4
  20. package/dist/components/dynamic-item/dynamic-item.js.map +1 -1
  21. package/dist/components/dynamic-item/dynamic-item.stories.js +11 -1
  22. package/dist/components/dynamic-item/dynamic-item.stories.js.map +1 -1
  23. package/dist/components/icon/icon.d.ts +3 -17
  24. package/dist/components/icon/icon.d.ts.map +1 -1
  25. package/dist/components/icon/icon.js +21 -13
  26. package/dist/components/icon/icon.js.map +1 -1
  27. package/dist/components/icon/remixicon-registry.d.ts +5 -0
  28. package/dist/components/icon/remixicon-registry.d.ts.map +1 -0
  29. package/dist/components/icon/remixicon-registry.js +14 -0
  30. package/dist/components/icon/remixicon-registry.js.map +1 -0
  31. package/dist/components/index.d.ts +1 -0
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/components/index.js +1 -0
  34. package/dist/components/index.js.map +1 -1
  35. package/dist/styles.css +1 -1
  36. package/package.json +3 -3
  37. package/src/components/button/button.tsx +12 -12
  38. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +384 -0
  39. package/src/components/dropdown-menu/dropdown-menu.tsx +416 -0
  40. package/src/components/dropdown-menu/index.ts +29 -0
  41. package/src/components/dynamic-item/dynamic-item.stories.tsx +6 -1
  42. package/src/components/dynamic-item/dynamic-item.tsx +9 -3
  43. package/src/components/icon/icon.tsx +23 -13
  44. package/src/components/icon/remixicon-registry.ts +24 -0
  45. package/src/components/index.ts +1 -0
@@ -1,12 +1,12 @@
1
1
   WARN  Issue while reading "/runner/_work/tooling/tooling/.npmrc". Failed to replace env in config: ${NPM_ACCESS_TOKEN}
2
2
 
3
- > @shipfox/react-ui@0.9.0 build /runner/_work/tooling/tooling/libs/react/ui
3
+ > @shipfox/react-ui@0.11.0 build /runner/_work/tooling/tooling/libs/react/ui
4
4
  > swc && pnpm run build:css
5
5
 
6
- Successfully compiled: 119 files with swc (333.36ms)
6
+ Successfully compiled: 123 files with swc (685.7ms)
7
7
   WARN  Issue while reading "/runner/_work/tooling/tooling/.npmrc". Failed to replace env in config: ${NPM_ACCESS_TOKEN}
8
8
 
9
- > @shipfox/react-ui@0.9.0 build:css /runner/_work/tooling/tooling/libs/react/ui
9
+ > @shipfox/react-ui@0.11.0 build:css /runner/_work/tooling/tooling/libs/react/ui
10
10
  > vite build --config vite.css.config.ts && rm -f dist/css-entry.js dist/css-entry.js.map
11
11
 
12
12
  vite v7.2.4 building client environment for production...
@@ -14,6 +14,6 @@ transforming...
14
14
  ✓ 2 modules transformed.
15
15
  rendering chunks...
16
16
  computing gzip size...
17
- dist/styles.css 85.04 kB │ gzip: 13.51 kB
17
+ dist/styles.css 87.48 kB │ gzip: 13.97 kB
18
18
  dist/css-entry.js  0.00 kB │ gzip: 0.02 kB
19
- ✓ built in 505ms
19
+ ✓ built in 2.01s
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/runner/_work/tooling/tooling/.npmrc". Failed to replace env in config: ${NPM_ACCESS_TOKEN}
2
2
 
3
- > @shipfox/react-ui@0.9.0 check /runner/_work/tooling/tooling/libs/react/ui
3
+ > @shipfox/react-ui@0.11.0 check /runner/_work/tooling/tooling/libs/react/ui
4
4
  > biome-check --fix
5
5
 
6
- Checked 138 files in 244ms. No fixes applied.
6
+ Checked 142 files in 453ms. No fixes applied.
@@ -1,5 +1,5 @@
1
1
   WARN  Issue while reading "/runner/_work/tooling/tooling/.npmrc". Failed to replace env in config: ${NPM_ACCESS_TOKEN}
2
2
 
3
- > @shipfox/react-ui@0.9.0 type /runner/_work/tooling/tooling/libs/react/ui
3
+ > @shipfox/react-ui@0.11.0 type /runner/_work/tooling/tooling/libs/react/ui
4
4
  > tsc-emit
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @shipfox/react-ui
2
2
 
3
+ ## 0.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2fb16bb: Add dropdown component
8
+
9
+ ## 0.10.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 43f0699: Enhance Icon Component
14
+
3
15
  ## 0.9.0
4
16
 
5
17
  ### Minor Changes
@@ -27,17 +27,18 @@ export const buttonVariants = cva('rounded-6 inline-flex items-center justify-ce
27
27
  size: 'md'
28
28
  }
29
29
  });
30
- const spinnerSizeMap = {
31
- '2xs': 'size-10',
32
- xs: 'size-10',
33
- sm: 'size-12',
34
- md: 'size-14',
35
- lg: 'size-16',
36
- xl: 'size-18'
30
+ const iconSizeMap = {
31
+ '2xs': 'size-14',
32
+ xs: 'size-16',
33
+ sm: 'size-20',
34
+ md: 'size-20',
35
+ lg: 'size-20',
36
+ xl: 'size-20'
37
37
  };
38
38
  export function Button({ className, variant, size, asChild = false, children, iconLeft, iconRight, isLoading = false, disabled, ...props }) {
39
39
  const Comp = asChild ? Slot : 'button';
40
- const spinnerSize = spinnerSizeMap[size ?? 'md'];
40
+ const resolvedSize = size ?? 'md';
41
+ const iconSize = iconSizeMap[resolvedSize];
41
42
  return /*#__PURE__*/ _jsxs(Comp, {
42
43
  "data-slot": "button",
43
44
  className: cn(buttonVariants({
@@ -55,13 +56,15 @@ export function Button({ className, variant, size, asChild = false, children, ic
55
56
  children: [
56
57
  isLoading ? /*#__PURE__*/ _jsx(Icon, {
57
58
  name: "spinner",
58
- className: spinnerSize
59
+ className: iconSize
59
60
  }) : iconLeft && /*#__PURE__*/ _jsx(Icon, {
60
- name: iconLeft
61
+ name: iconLeft,
62
+ className: iconSize
61
63
  }),
62
64
  children,
63
65
  iconRight && /*#__PURE__*/ _jsx(Icon, {
64
- name: iconRight
66
+ name: iconRight,
67
+ className: iconSize
65
68
  })
66
69
  ]
67
70
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/button/button.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon, type IconName} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const buttonVariants = cva(\n 'rounded-6 inline-flex items-center justify-center whitespace-nowrap transition-colors cursor-pointer disabled:pointer-events-none shrink-0 outline-none',\n {\n variants: {\n variant: {\n primary:\n 'bg-background-button-inverted-default text-foreground-contrast-primary shadow-button-inverted hover:bg-background-button-inverted-hover active:bg-background-button-inverted-pressed focus-visible:shadow-button-inverted-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n secondary:\n 'bg-background-button-neutral-default text-foreground-neutral-base shadow-button-neutral hover:bg-background-button-neutral-hover active:bg-background-button-neutral-pressed disabled:bg-background-neutral-disabled focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled disabled:shadow-none',\n danger:\n 'bg-background-button-danger-default text-foreground-neutral-on-color shadow-button-danger hover:bg-background-button-danger-hover active:bg-background-button-danger-pressed focus-visible:shadow-button-danger-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n success:\n 'bg-background-button-success-default text-foreground-neutral-on-color shadow-button-success hover:bg-background-button-success-hover active:bg-background-button-success-pressed focus-visible:shadow-button-success-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n transparent:\n 'bg-background-button-transparent-default text-foreground-neutral-base hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n transparentMuted:\n 'bg-background-button-transparent-default text-foreground-neutral-muted hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n },\n size: {\n '2xs': 'h-20 px-6 text-xs gap-4',\n xs: 'h-24 px-6 text-xs gap-4',\n sm: 'h-28 px-8 text-sm gap-6',\n md: 'h-32 px-10 text-md gap-8',\n lg: 'h-36 px-12 text-lg gap-8',\n xl: 'h-40 px-12 text-xl gap-10',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n },\n);\n\nconst spinnerSizeMap: Record<NonNullable<VariantProps<typeof buttonVariants>['size']>, string> = {\n '2xs': 'size-10',\n xs: 'size-10',\n sm: 'size-12',\n md: 'size-14',\n lg: 'size-16',\n xl: 'size-18',\n};\n\nexport function Button({\n className,\n variant,\n size,\n asChild = false,\n children,\n iconLeft,\n iconRight,\n isLoading = false,\n disabled,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n iconLeft?: IconName;\n iconRight?: IconName;\n isLoading?: boolean;\n }) {\n const Comp = asChild ? Slot : 'button';\n const spinnerSize =\n spinnerSizeMap[(size ?? 'md') as NonNullable<VariantProps<typeof buttonVariants>['size']>];\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({variant, size, className}))}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n aria-live={isLoading ? 'polite' : undefined}\n {...(asChild ? {'aria-disabled': disabled || isLoading} : {})}\n {...props}\n >\n {isLoading ? (\n <Icon name=\"spinner\" className={spinnerSize} />\n ) : (\n iconLeft && <Icon name={iconLeft} />\n )}\n {children}\n {iconRight && <Icon name={iconRight} />}\n </Comp>\n );\n}\n"],"names":["Slot","cva","Icon","cn","buttonVariants","variants","variant","primary","secondary","danger","success","transparent","transparentMuted","size","xs","sm","md","lg","xl","defaultVariants","spinnerSizeMap","Button","className","asChild","children","iconLeft","iconRight","isLoading","disabled","props","Comp","spinnerSize","data-slot","aria-busy","aria-live","undefined","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAsB,kBAAkB;AAEpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,iBAAiBH,IAC5B,2JACA;IACEI,UAAU;QACRC,SAAS;YACPC,SACE;YACFC,WACE;YACFC,QACE;YACFC,SACE;YACFC,aACE;YACFC,kBACE;QACJ;QACAC,MAAM;YACJ,OAAO;YACPC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfb,SAAS;QACTO,MAAM;IACR;AACF,GACA;AAEF,MAAMO,iBAA2F;IAC/F,OAAO;IACPN,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;AACN;AAEA,OAAO,SAASG,OAAO,EACrBC,SAAS,EACThB,OAAO,EACPO,IAAI,EACJU,UAAU,KAAK,EACfC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,YAAY,KAAK,EACjBC,QAAQ,EACR,GAAGC,OAOF;IACD,MAAMC,OAAOP,UAAUvB,OAAO;IAC9B,MAAM+B,cACJX,cAAc,CAAEP,QAAQ,KAAkE;IAE5F,qBACE,MAACiB;QACCE,aAAU;QACVV,WAAWnB,GAAGC,eAAe;YAACE;YAASO;YAAMS;QAAS;QACtDM,UAAUA,YAAYD;QACtBM,aAAWN;QACXO,aAAWP,YAAY,WAAWQ;QACjC,GAAIZ,UAAU;YAAC,iBAAiBK,YAAYD;QAAS,IAAI,CAAC,CAAC;QAC3D,GAAGE,KAAK;;YAERF,0BACC,KAACzB;gBAAKkC,MAAK;gBAAUd,WAAWS;iBAEhCN,0BAAY,KAACvB;gBAAKkC,MAAMX;;YAEzBD;YACAE,2BAAa,KAACxB;gBAAKkC,MAAMV;;;;AAGhC"}
1
+ {"version":3,"sources":["../../../src/components/button/button.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon, type IconName} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const buttonVariants = cva(\n 'rounded-6 inline-flex items-center justify-center whitespace-nowrap transition-colors cursor-pointer disabled:pointer-events-none shrink-0 outline-none',\n {\n variants: {\n variant: {\n primary:\n 'bg-background-button-inverted-default text-foreground-contrast-primary shadow-button-inverted hover:bg-background-button-inverted-hover active:bg-background-button-inverted-pressed focus-visible:shadow-button-inverted-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n secondary:\n 'bg-background-button-neutral-default text-foreground-neutral-base shadow-button-neutral hover:bg-background-button-neutral-hover active:bg-background-button-neutral-pressed disabled:bg-background-neutral-disabled focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled disabled:shadow-none',\n danger:\n 'bg-background-button-danger-default text-foreground-neutral-on-color shadow-button-danger hover:bg-background-button-danger-hover active:bg-background-button-danger-pressed focus-visible:shadow-button-danger-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n success:\n 'bg-background-button-success-default text-foreground-neutral-on-color shadow-button-success hover:bg-background-button-success-hover active:bg-background-button-success-pressed focus-visible:shadow-button-success-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n transparent:\n 'bg-background-button-transparent-default text-foreground-neutral-base hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n transparentMuted:\n 'bg-background-button-transparent-default text-foreground-neutral-muted hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n },\n size: {\n '2xs': 'h-20 px-6 text-xs gap-4',\n xs: 'h-24 px-6 text-xs gap-4',\n sm: 'h-28 px-8 text-sm gap-6',\n md: 'h-32 px-10 text-md gap-8',\n lg: 'h-36 px-12 text-lg gap-8',\n xl: 'h-40 px-12 text-xl gap-10',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n },\n);\n\nconst iconSizeMap: Record<NonNullable<VariantProps<typeof buttonVariants>['size']>, string> = {\n '2xs': 'size-14',\n xs: 'size-16',\n sm: 'size-20',\n md: 'size-20',\n lg: 'size-20',\n xl: 'size-20',\n};\n\nexport function Button({\n className,\n variant,\n size,\n asChild = false,\n children,\n iconLeft,\n iconRight,\n isLoading = false,\n disabled,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n iconLeft?: IconName;\n iconRight?: IconName;\n isLoading?: boolean;\n }) {\n const Comp = asChild ? Slot : 'button';\n const resolvedSize = (size ?? 'md') as NonNullable<VariantProps<typeof buttonVariants>['size']>;\n const iconSize = iconSizeMap[resolvedSize];\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({variant, size, className}))}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n aria-live={isLoading ? 'polite' : undefined}\n {...(asChild ? {'aria-disabled': disabled || isLoading} : {})}\n {...props}\n >\n {isLoading ? (\n <Icon name=\"spinner\" className={iconSize} />\n ) : (\n iconLeft && <Icon name={iconLeft} className={iconSize} />\n )}\n {children}\n {iconRight && <Icon name={iconRight} className={iconSize} />}\n </Comp>\n );\n}\n"],"names":["Slot","cva","Icon","cn","buttonVariants","variants","variant","primary","secondary","danger","success","transparent","transparentMuted","size","xs","sm","md","lg","xl","defaultVariants","iconSizeMap","Button","className","asChild","children","iconLeft","iconRight","isLoading","disabled","props","Comp","resolvedSize","iconSize","data-slot","aria-busy","aria-live","undefined","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAsB,kBAAkB;AAEpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,iBAAiBH,IAC5B,2JACA;IACEI,UAAU;QACRC,SAAS;YACPC,SACE;YACFC,WACE;YACFC,QACE;YACFC,SACE;YACFC,aACE;YACFC,kBACE;QACJ;QACAC,MAAM;YACJ,OAAO;YACPC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfb,SAAS;QACTO,MAAM;IACR;AACF,GACA;AAEF,MAAMO,cAAwF;IAC5F,OAAO;IACPN,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;AACN;AAEA,OAAO,SAASG,OAAO,EACrBC,SAAS,EACThB,OAAO,EACPO,IAAI,EACJU,UAAU,KAAK,EACfC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,YAAY,KAAK,EACjBC,QAAQ,EACR,GAAGC,OAOF;IACD,MAAMC,OAAOP,UAAUvB,OAAO;IAC9B,MAAM+B,eAAgBlB,QAAQ;IAC9B,MAAMmB,WAAWZ,WAAW,CAACW,aAAa;IAE1C,qBACE,MAACD;QACCG,aAAU;QACVX,WAAWnB,GAAGC,eAAe;YAACE;YAASO;YAAMS;QAAS;QACtDM,UAAUA,YAAYD;QACtBO,aAAWP;QACXQ,aAAWR,YAAY,WAAWS;QACjC,GAAIb,UAAU;YAAC,iBAAiBK,YAAYD;QAAS,IAAI,CAAC,CAAC;QAC3D,GAAGE,KAAK;;YAERF,0BACC,KAACzB;gBAAKmC,MAAK;gBAAUf,WAAWU;iBAEhCP,0BAAY,KAACvB;gBAAKmC,MAAMZ;gBAAUH,WAAWU;;YAE9CR;YACAE,2BAAa,KAACxB;gBAAKmC,MAAMX;gBAAWJ,WAAWU;;;;AAGtD"}
@@ -0,0 +1,58 @@
1
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import type { ComponentProps } from 'react';
4
+ import { type IconName } from '../icon';
5
+ declare function DropdownMenu({ ...props }: ComponentProps<typeof DropdownMenuPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
6
+ declare function DropdownMenuTrigger({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
7
+ declare function DropdownMenuPortal({ ...props }: ComponentProps<typeof DropdownMenuPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
8
+ declare const dropdownMenuContentVariants: (props?: ({
9
+ size?: "sm" | "md" | "lg" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
+ type DropdownMenuContentProps = ComponentProps<typeof DropdownMenuPrimitive.Content> & VariantProps<typeof dropdownMenuContentVariants> & {
12
+ container?: HTMLElement | null;
13
+ };
14
+ declare function DropdownMenuContent({ className, sideOffset, size, onCloseAutoFocus, container, ...props }: DropdownMenuContentProps): import("react/jsx-runtime").JSX.Element;
15
+ declare function DropdownMenuGroup({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
16
+ declare const dropdownMenuLabelVariants: (props?: ({
17
+ inset?: boolean | null | undefined;
18
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
+ type DropdownMenuLabelProps = ComponentProps<typeof DropdownMenuPrimitive.Label> & {
20
+ inset?: boolean;
21
+ };
22
+ declare function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelProps): import("react/jsx-runtime").JSX.Element;
23
+ declare const dropdownMenuItemVariants: (props?: ({
24
+ inset?: boolean | null | undefined;
25
+ variant?: "default" | null | undefined;
26
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
27
+ type DropdownMenuItemProps = ComponentProps<typeof DropdownMenuPrimitive.Item> & VariantProps<typeof dropdownMenuItemVariants> & {
28
+ icon?: IconName;
29
+ shortcut?: string;
30
+ closeOnSelect?: boolean;
31
+ iconStyle?: string;
32
+ };
33
+ declare function DropdownMenuItem({ className, inset, variant, icon, shortcut, children, closeOnSelect, iconStyle, onSelect, ...props }: DropdownMenuItemProps): import("react/jsx-runtime").JSX.Element;
34
+ type DropdownMenuCheckboxItemProps = ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {
35
+ icon?: IconName;
36
+ shortcut?: string;
37
+ closeOnSelect?: boolean;
38
+ };
39
+ declare function DropdownMenuCheckboxItem({ className, children, checked, icon, shortcut, closeOnSelect, onSelect, ...props }: DropdownMenuCheckboxItemProps): import("react/jsx-runtime").JSX.Element;
40
+ declare function DropdownMenuRadioGroup({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): import("react/jsx-runtime").JSX.Element;
41
+ type DropdownMenuRadioItemProps = ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {
42
+ icon?: IconName;
43
+ closeOnSelect?: boolean;
44
+ };
45
+ declare function DropdownMenuRadioItem({ className, children, icon, closeOnSelect, onSelect, ...props }: DropdownMenuRadioItemProps): import("react/jsx-runtime").JSX.Element;
46
+ declare function DropdownMenuSeparator({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
47
+ type DropdownMenuShortcutProps = ComponentProps<'span'>;
48
+ declare function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps): import("react/jsx-runtime").JSX.Element;
49
+ declare function DropdownMenuSub({ ...props }: ComponentProps<typeof DropdownMenuPrimitive.Sub>): import("react/jsx-runtime").JSX.Element;
50
+ type DropdownMenuSubTriggerProps = ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
51
+ inset?: boolean;
52
+ icon?: IconName;
53
+ };
54
+ declare function DropdownMenuSubTrigger({ className, inset, icon, children, ...props }: DropdownMenuSubTriggerProps): import("react/jsx-runtime").JSX.Element;
55
+ declare function DropdownMenuSubContent({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.SubContent>): import("react/jsx-runtime").JSX.Element;
56
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, dropdownMenuContentVariants, dropdownMenuItemVariants, dropdownMenuLabelVariants, };
57
+ export type { DropdownMenuContentProps, DropdownMenuLabelProps, DropdownMenuItemProps, DropdownMenuCheckboxItemProps, DropdownMenuRadioItemProps, DropdownMenuSubTriggerProps, DropdownMenuShortcutProps, };
58
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/dropdown-menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '../../utils/cn.js';
5
+ import { Icon } from '../icon/index.js';
6
+ function DropdownMenu({ ...props }) {
7
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Root, {
8
+ "data-slot": "dropdown-menu",
9
+ ...props
10
+ });
11
+ }
12
+ function DropdownMenuTrigger({ className, ...props }) {
13
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Trigger, {
14
+ "data-slot": "dropdown-menu-trigger",
15
+ className: cn('outline-none', className),
16
+ ...props
17
+ });
18
+ }
19
+ function DropdownMenuPortal({ ...props }) {
20
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Portal, {
21
+ "data-slot": "dropdown-menu-portal",
22
+ ...props
23
+ });
24
+ }
25
+ const dropdownMenuContentVariants = cva([
26
+ 'z-50 min-w-[180px] overflow-hidden rounded-10 p-4',
27
+ 'bg-background-neutral-overlay text-foreground-neutral-subtle',
28
+ 'shadow-tooltip',
29
+ 'data-[state=open]:animate-in data-[state=closed]:animate-out',
30
+ 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',
31
+ 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',
32
+ 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',
33
+ 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2'
34
+ ], {
35
+ variants: {
36
+ size: {
37
+ sm: 'min-w-[160px]',
38
+ md: 'min-w-[200px]',
39
+ lg: 'min-w-[240px]'
40
+ }
41
+ },
42
+ defaultVariants: {
43
+ size: 'md'
44
+ }
45
+ });
46
+ function DropdownMenuContent({ className, sideOffset = 4, size, onCloseAutoFocus, container, ...props }) {
47
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Portal, {
48
+ container: container,
49
+ children: /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Content, {
50
+ "data-slot": "dropdown-menu-content",
51
+ sideOffset: sideOffset,
52
+ className: cn(dropdownMenuContentVariants({
53
+ size
54
+ }), className),
55
+ onCloseAutoFocus: (e)=>{
56
+ e.preventDefault();
57
+ onCloseAutoFocus?.(e);
58
+ },
59
+ ...props
60
+ })
61
+ });
62
+ }
63
+ function DropdownMenuGroup({ className, ...props }) {
64
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Group, {
65
+ "data-slot": "dropdown-menu-group",
66
+ className: cn('flex flex-col', className),
67
+ ...props
68
+ });
69
+ }
70
+ const dropdownMenuLabelVariants = cva('px-8 py-4 text-xs leading-20 text-foreground-neutral-subtle select-none', {
71
+ variants: {
72
+ inset: {
73
+ true: 'pl-32'
74
+ }
75
+ }
76
+ });
77
+ function DropdownMenuLabel({ className, inset, ...props }) {
78
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Label, {
79
+ "data-slot": "dropdown-menu-label",
80
+ className: cn(dropdownMenuLabelVariants({
81
+ inset
82
+ }), className),
83
+ ...props
84
+ });
85
+ }
86
+ const dropdownMenuItemVariants = cva([
87
+ 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6',
88
+ 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',
89
+ 'focus:bg-background-components-hover',
90
+ 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled'
91
+ ], {
92
+ variants: {
93
+ inset: {
94
+ true: 'pl-32'
95
+ },
96
+ variant: {
97
+ default: ''
98
+ }
99
+ },
100
+ defaultVariants: {
101
+ variant: 'default'
102
+ }
103
+ });
104
+ function DropdownMenuItem({ className, inset, variant, icon, shortcut, children, closeOnSelect = true, iconStyle, onSelect, ...props }) {
105
+ return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.Item, {
106
+ "data-slot": "dropdown-menu-item",
107
+ className: cn(dropdownMenuItemVariants({
108
+ inset,
109
+ variant
110
+ }), className),
111
+ onSelect: (e)=>{
112
+ if (!closeOnSelect) e.preventDefault();
113
+ onSelect?.(e);
114
+ },
115
+ ...props,
116
+ children: [
117
+ icon && /*#__PURE__*/ _jsx(Icon, {
118
+ name: icon,
119
+ className: cn('size-16 shrink-0 text-foreground-neutral-subtle', iconStyle)
120
+ }),
121
+ /*#__PURE__*/ _jsx("span", {
122
+ className: "flex-1 truncate",
123
+ children: children
124
+ }),
125
+ shortcut && /*#__PURE__*/ _jsx(DropdownMenuShortcut, {
126
+ children: shortcut
127
+ })
128
+ ]
129
+ });
130
+ }
131
+ function DropdownMenuCheckboxItem({ className, children, checked, icon, shortcut, closeOnSelect = true, onSelect, ...props }) {
132
+ return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.CheckboxItem, {
133
+ "data-slot": "dropdown-menu-checkbox-item",
134
+ className: cn([
135
+ 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 py-6 pl-32 pr-8',
136
+ 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',
137
+ 'focus:bg-background-components-hover',
138
+ 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',
139
+ 'data-[state=checked]:text-foreground-neutral-base'
140
+ ], className),
141
+ checked: checked,
142
+ onSelect: (e)=>{
143
+ if (!closeOnSelect) e.preventDefault();
144
+ onSelect?.(e);
145
+ },
146
+ ...props,
147
+ children: [
148
+ /*#__PURE__*/ _jsx("span", {
149
+ className: "absolute left-8 flex size-16 items-center justify-center",
150
+ children: /*#__PURE__*/ _jsx(DropdownMenuPrimitive.ItemIndicator, {
151
+ children: /*#__PURE__*/ _jsx(Icon, {
152
+ name: "check",
153
+ className: "size-14 text-foreground-neutral-base"
154
+ })
155
+ })
156
+ }),
157
+ icon && /*#__PURE__*/ _jsx(Icon, {
158
+ name: icon,
159
+ className: "size-16 shrink-0 text-foreground-neutral-subtle"
160
+ }),
161
+ /*#__PURE__*/ _jsx("span", {
162
+ className: "flex-1 truncate",
163
+ children: children
164
+ }),
165
+ shortcut && /*#__PURE__*/ _jsx(DropdownMenuShortcut, {
166
+ children: shortcut
167
+ })
168
+ ]
169
+ });
170
+ }
171
+ function DropdownMenuRadioGroup({ className, ...props }) {
172
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.RadioGroup, {
173
+ "data-slot": "dropdown-menu-radio-group",
174
+ className: cn('flex flex-col', className),
175
+ ...props
176
+ });
177
+ }
178
+ function DropdownMenuRadioItem({ className, children, icon, closeOnSelect = true, onSelect, ...props }) {
179
+ return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.RadioItem, {
180
+ "data-slot": "dropdown-menu-radio-item",
181
+ className: cn([
182
+ 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 py-6 pl-32 pr-8',
183
+ 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',
184
+ 'focus:bg-background-components-hover',
185
+ 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',
186
+ 'data-[state=checked]:text-foreground-neutral-base'
187
+ ], className),
188
+ onSelect: (e)=>{
189
+ if (!closeOnSelect) e.preventDefault();
190
+ onSelect?.(e);
191
+ },
192
+ ...props,
193
+ children: [
194
+ /*#__PURE__*/ _jsx("span", {
195
+ className: "absolute left-8 flex size-16 items-center justify-center",
196
+ children: /*#__PURE__*/ _jsx(DropdownMenuPrimitive.ItemIndicator, {
197
+ children: /*#__PURE__*/ _jsx(Icon, {
198
+ name: "ellipseMiniSolid",
199
+ className: "size-6 text-foreground-neutral-base"
200
+ })
201
+ })
202
+ }),
203
+ icon && /*#__PURE__*/ _jsx(Icon, {
204
+ name: icon,
205
+ className: "size-16 shrink-0 text-foreground-neutral-subtle"
206
+ }),
207
+ /*#__PURE__*/ _jsx("span", {
208
+ className: "flex-1 truncate",
209
+ children: children
210
+ })
211
+ ]
212
+ });
213
+ }
214
+ function DropdownMenuSeparator({ className, ...props }) {
215
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Separator, {
216
+ "data-slot": "dropdown-menu-separator",
217
+ className: cn('relative -mx-4 my-4 h-px', 'bg-border-neutral-menu-top', 'after:absolute after:inset-x-0 after:top-px after:h-px', 'after:bg-border-neutral-menu-bottom', className),
218
+ ...props
219
+ });
220
+ }
221
+ function DropdownMenuShortcut({ className, ...props }) {
222
+ return /*#__PURE__*/ _jsx("span", {
223
+ "data-slot": "dropdown-menu-shortcut",
224
+ className: cn('ml-auto text-xs leading-20 text-foreground-neutral-muted tabular-nums', className),
225
+ ...props
226
+ });
227
+ }
228
+ function DropdownMenuSub({ ...props }) {
229
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Sub, {
230
+ "data-slot": "dropdown-menu-sub",
231
+ ...props
232
+ });
233
+ }
234
+ function DropdownMenuSubTrigger({ className, inset, icon, children, ...props }) {
235
+ return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.SubTrigger, {
236
+ "data-slot": "dropdown-menu-sub-trigger",
237
+ className: cn([
238
+ 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6',
239
+ 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',
240
+ 'focus:bg-background-components-hover',
241
+ 'data-[state=open]:bg-background-components-hover',
242
+ 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',
243
+ 'data-[state=checked]:text-foreground-neutral-base'
244
+ ], inset && 'pl-32', className),
245
+ ...props,
246
+ children: [
247
+ icon && /*#__PURE__*/ _jsx(Icon, {
248
+ name: icon,
249
+ className: "size-16 shrink-0 text-foreground-neutral-subtle"
250
+ }),
251
+ /*#__PURE__*/ _jsx("span", {
252
+ className: "flex-1 truncate",
253
+ children: children
254
+ }),
255
+ /*#__PURE__*/ _jsx(Icon, {
256
+ name: "chevronRight",
257
+ className: "ml-auto size-14 text-foreground-neutral-muted"
258
+ })
259
+ ]
260
+ });
261
+ }
262
+ function DropdownMenuSubContent({ className, ...props }) {
263
+ return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.SubContent, {
264
+ "data-slot": "dropdown-menu-sub-content",
265
+ className: cn([
266
+ 'z-50 min-w-180 overflow-hidden rounded-10 p-4',
267
+ 'bg-background-neutral-overlay text-foreground-neutral-subtle',
268
+ 'shadow-tooltip',
269
+ 'data-[state=open]:animate-in data-[state=closed]:animate-out',
270
+ 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',
271
+ 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',
272
+ 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',
273
+ 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2'
274
+ ], className),
275
+ ...props
276
+ });
277
+ }
278
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, dropdownMenuContentVariants, dropdownMenuItemVariants, dropdownMenuLabelVariants };
279
+
280
+ //# sourceMappingURL=dropdown-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\nimport {Icon, type IconName} from '../icon';\n\nfunction DropdownMenu({...props}: ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n className,\n ...props\n}: ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n className={cn('outline-none', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuPortal({...props}: ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nconst dropdownMenuContentVariants = cva(\n [\n 'z-50 min-w-[180px] overflow-hidden rounded-10 p-4',\n 'bg-background-neutral-overlay text-foreground-neutral-subtle',\n 'shadow-tooltip',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n ],\n {\n variants: {\n size: {\n sm: 'min-w-[160px]',\n md: 'min-w-[200px]',\n lg: 'min-w-[240px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\ntype DropdownMenuContentProps = ComponentProps<typeof DropdownMenuPrimitive.Content> &\n VariantProps<typeof dropdownMenuContentVariants> & {\n container?: HTMLElement | null;\n };\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n size,\n onCloseAutoFocus,\n container,\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal container={container}>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(dropdownMenuContentVariants({size}), className)}\n onCloseAutoFocus={(e) => {\n e.preventDefault();\n onCloseAutoFocus?.(e);\n }}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n className,\n ...props\n}: ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group\n data-slot=\"dropdown-menu-group\"\n className={cn('flex flex-col', className)}\n {...props}\n />\n );\n}\n\nconst dropdownMenuLabelVariants = cva(\n 'px-8 py-4 text-xs leading-20 text-foreground-neutral-subtle select-none',\n {\n variants: {\n inset: {\n true: 'pl-32',\n },\n },\n },\n);\n\ntype DropdownMenuLabelProps = ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n};\n\nfunction DropdownMenuLabel({className, inset, ...props}: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n className={cn(dropdownMenuLabelVariants({inset}), className)}\n {...props}\n />\n );\n}\n\nconst dropdownMenuItemVariants = cva(\n [\n 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6',\n 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',\n 'focus:bg-background-components-hover',\n 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',\n ],\n {\n variants: {\n inset: {\n true: 'pl-32',\n },\n variant: {\n default: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype DropdownMenuItemProps = ComponentProps<typeof DropdownMenuPrimitive.Item> &\n VariantProps<typeof dropdownMenuItemVariants> & {\n icon?: IconName;\n shortcut?: string;\n closeOnSelect?: boolean;\n iconStyle?: string;\n };\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant,\n icon,\n shortcut,\n children,\n closeOnSelect = true,\n iconStyle,\n onSelect,\n ...props\n}: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(dropdownMenuItemVariants({inset, variant}), className)}\n onSelect={(e) => {\n if (!closeOnSelect) e.preventDefault();\n onSelect?.(e);\n }}\n {...props}\n >\n {icon && (\n <Icon\n name={icon}\n className={cn('size-16 shrink-0 text-foreground-neutral-subtle', iconStyle)}\n />\n )}\n <span className=\"flex-1 truncate\">{children}</span>\n {shortcut && <DropdownMenuShortcut>{shortcut}</DropdownMenuShortcut>}\n </DropdownMenuPrimitive.Item>\n );\n}\n\ntype DropdownMenuCheckboxItemProps = ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n icon?: IconName;\n shortcut?: string;\n closeOnSelect?: boolean;\n};\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n icon,\n shortcut,\n closeOnSelect = true,\n onSelect,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n [\n 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 py-6 pl-32 pr-8',\n 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',\n 'focus:bg-background-components-hover',\n 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',\n 'data-[state=checked]:text-foreground-neutral-base',\n ],\n className,\n )}\n checked={checked}\n onSelect={(e) => {\n if (!closeOnSelect) e.preventDefault();\n onSelect?.(e);\n }}\n {...props}\n >\n <span className=\"absolute left-8 flex size-16 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Icon name=\"check\" className=\"size-14 text-foreground-neutral-base\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {icon && <Icon name={icon} className=\"size-16 shrink-0 text-foreground-neutral-subtle\" />}\n <span className=\"flex-1 truncate\">{children}</span>\n {shortcut && <DropdownMenuShortcut>{shortcut}</DropdownMenuShortcut>}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n className,\n ...props\n}: ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n className={cn('flex flex-col', className)}\n {...props}\n />\n );\n}\n\ntype DropdownMenuRadioItemProps = ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n icon?: IconName;\n closeOnSelect?: boolean;\n};\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n icon,\n closeOnSelect = true,\n onSelect,\n ...props\n}: DropdownMenuRadioItemProps) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n [\n 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 py-6 pl-32 pr-8',\n 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',\n 'focus:bg-background-components-hover',\n 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',\n 'data-[state=checked]:text-foreground-neutral-base',\n ],\n className,\n )}\n onSelect={(e) => {\n if (!closeOnSelect) e.preventDefault();\n onSelect?.(e);\n }}\n {...props}\n >\n <span className=\"absolute left-8 flex size-16 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Icon name=\"ellipseMiniSolid\" className=\"size-6 text-foreground-neutral-base\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {icon && <Icon name={icon} className=\"size-16 shrink-0 text-foreground-neutral-subtle\" />}\n <span className=\"flex-1 truncate\">{children}</span>\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\n 'relative -mx-4 my-4 h-px',\n 'bg-border-neutral-menu-top',\n 'after:absolute after:inset-x-0 after:top-px after:h-px',\n 'after:bg-border-neutral-menu-bottom',\n className,\n )}\n {...props}\n />\n );\n}\n\ntype DropdownMenuShortcutProps = ComponentProps<'span'>;\n\nfunction DropdownMenuShortcut({className, ...props}: DropdownMenuShortcutProps) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'ml-auto text-xs leading-20 text-foreground-neutral-muted tabular-nums',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({...props}: ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\ntype DropdownMenuSubTriggerProps = ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n icon?: IconName;\n};\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n icon,\n children,\n ...props\n}: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n className={cn(\n [\n 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6',\n 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',\n 'focus:bg-background-components-hover',\n 'data-[state=open]:bg-background-components-hover',\n 'data-disabled:pointer-events-none data-disabled:text-foreground-neutral-disabled',\n 'data-[state=checked]:text-foreground-neutral-base',\n ],\n inset && 'pl-32',\n className,\n )}\n {...props}\n >\n {icon && <Icon name={icon} className=\"size-16 shrink-0 text-foreground-neutral-subtle\" />}\n <span className=\"flex-1 truncate\">{children}</span>\n <Icon name=\"chevronRight\" className=\"ml-auto size-14 text-foreground-neutral-muted\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n [\n 'z-50 min-w-180 overflow-hidden rounded-10 p-4',\n 'bg-background-neutral-overlay text-foreground-neutral-subtle',\n 'shadow-tooltip',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n ],\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n dropdownMenuContentVariants,\n dropdownMenuItemVariants,\n dropdownMenuLabelVariants,\n};\n\nexport type {\n DropdownMenuContentProps,\n DropdownMenuLabelProps,\n DropdownMenuItemProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuRadioItemProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuShortcutProps,\n};\n"],"names":["DropdownMenuPrimitive","cva","cn","Icon","DropdownMenu","props","Root","data-slot","DropdownMenuTrigger","className","Trigger","DropdownMenuPortal","Portal","dropdownMenuContentVariants","variants","size","sm","md","lg","defaultVariants","DropdownMenuContent","sideOffset","onCloseAutoFocus","container","Content","e","preventDefault","DropdownMenuGroup","Group","dropdownMenuLabelVariants","inset","true","DropdownMenuLabel","Label","dropdownMenuItemVariants","variant","default","DropdownMenuItem","icon","shortcut","children","closeOnSelect","iconStyle","onSelect","Item","name","span","DropdownMenuShortcut","DropdownMenuCheckboxItem","checked","CheckboxItem","ItemIndicator","DropdownMenuRadioGroup","RadioGroup","DropdownMenuRadioItem","RadioItem","DropdownMenuSeparator","Separator","DropdownMenuSub","Sub","DropdownMenuSubTrigger","SubTrigger","DropdownMenuSubContent","SubContent"],"mappings":"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"}