@rovula/ui 0.0.23 → 0.0.25

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 (35) hide show
  1. package/dist/cjs/bundle.css +113 -0
  2. package/dist/cjs/bundle.js +3 -3
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/DropdownMenu/DropdownMenu.d.ts +27 -0
  5. package/dist/cjs/types/components/DropdownMenu/DropdownMenu.stories.d.ts +54 -0
  6. package/dist/cjs/types/index.d.ts +1 -0
  7. package/dist/components/DropdownMenu/DropdownMenu.js +74 -0
  8. package/dist/components/DropdownMenu/DropdownMenu.stories.js +116 -0
  9. package/dist/components/Tabs/Tabs.js +0 -1
  10. package/dist/components/Text/Text.js +2 -0
  11. package/dist/esm/bundle.css +113 -0
  12. package/dist/esm/bundle.js +3 -3
  13. package/dist/esm/bundle.js.map +1 -1
  14. package/dist/esm/types/components/DropdownMenu/DropdownMenu.d.ts +27 -0
  15. package/dist/esm/types/components/DropdownMenu/DropdownMenu.stories.d.ts +54 -0
  16. package/dist/esm/types/index.d.ts +1 -0
  17. package/dist/index.d.ts +27 -1
  18. package/dist/index.js +1 -0
  19. package/dist/src/theme/global.css +189 -1
  20. package/dist/theme/themes/xspector/baseline.css +2 -1
  21. package/dist/theme/themes/xspector/color.css +2 -1
  22. package/dist/theme/themes/xspector/components/dropdown-menu.css +28 -0
  23. package/dist/theme/tokens/baseline.css +2 -1
  24. package/dist/theme/tokens/components/dropdown-menu.css +27 -0
  25. package/package.json +8 -3
  26. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +394 -0
  27. package/src/components/DropdownMenu/DropdownMenu.tsx +222 -0
  28. package/src/components/Tabs/Tabs.tsx +0 -1
  29. package/src/components/Text/Text.tsx +2 -0
  30. package/src/index.ts +1 -0
  31. package/src/theme/themes/xspector/baseline.css +2 -1
  32. package/src/theme/themes/xspector/color.css +2 -1
  33. package/src/theme/themes/xspector/components/dropdown-menu.css +28 -0
  34. package/src/theme/tokens/baseline.css +2 -1
  35. package/src/theme/tokens/components/dropdown-menu.css +27 -0
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
3
+ declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
4
+ declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
6
+ declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
7
+ declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
8
+ declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
9
+ declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
10
+ inset?: boolean | undefined;
11
+ } & React.RefAttributes<HTMLDivElement>>;
12
+ declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
+ declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
15
+ inset?: boolean | undefined;
16
+ } & React.RefAttributes<HTMLDivElement>>;
17
+ declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
18
+ declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
+ declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
20
+ inset?: boolean | undefined;
21
+ } & React.RefAttributes<HTMLDivElement>>;
22
+ declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
23
+ declare const DropdownMenuShortcut: {
24
+ ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): import("react/jsx-runtime").JSX.Element;
25
+ displayName: string;
26
+ };
27
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
@@ -0,0 +1,54 @@
1
+ import React from "react";
2
+ declare const meta: {
3
+ title: string;
4
+ component: React.FC<import("@radix-ui/react-dropdown-menu").DropdownMenuProps>;
5
+ parameters: {
6
+ layout: string;
7
+ };
8
+ decorators: ((Story: import("@storybook/types").PartialStoryFn<import("@storybook/react").ReactRenderer, {
9
+ children?: React.ReactNode;
10
+ dir?: ("ltr" | "rtl") | undefined;
11
+ open?: boolean | undefined;
12
+ defaultOpen?: boolean | undefined;
13
+ onOpenChange?: ((open: boolean) => void) | undefined;
14
+ modal?: boolean | undefined;
15
+ }>) => import("react/jsx-runtime").JSX.Element)[];
16
+ };
17
+ export default meta;
18
+ export declare const Default: {
19
+ args: {};
20
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
21
+ };
22
+ export declare const WithIcon: {
23
+ args: {};
24
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
25
+ };
26
+ export declare const WithLabel: {
27
+ args: {};
28
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
29
+ };
30
+ export declare const Checkboxes: {
31
+ args: {};
32
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
33
+ };
34
+ export declare const SubMenu: {
35
+ args: {};
36
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
37
+ };
38
+ export declare const OnIcon: {
39
+ args: {};
40
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
41
+ };
42
+ export declare const AsChild: {
43
+ args: {};
44
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
45
+ };
46
+ export declare const Position: {
47
+ args: {
48
+ side: string;
49
+ align: string;
50
+ sideOffset: number;
51
+ alignOffset: number;
52
+ };
53
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
54
+ };
@@ -25,6 +25,7 @@ export * from "./components/AlertDialog/AlertDialog";
25
25
  export * from "./components/Search/Search";
26
26
  export * from "./components/Slider/Slider";
27
27
  export * from "./components/Switch/Switch";
28
+ export * from "./components/DropdownMenu/DropdownMenu";
28
29
  export type { ButtonProps } from "./components/Button/Button";
29
30
  export type { InputProps } from "./components/TextInput/TextInput";
30
31
  export type { DropdownProps, Options } from "./components/Dropdown/Dropdown";
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
12
12
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
13
13
  import * as SliderPrimitive from '@radix-ui/react-slider';
14
14
  import * as SwitchPrimitives from '@radix-ui/react-switch';
15
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
15
16
  import { ClassValue } from 'clsx';
16
17
 
17
18
  type ButtonProps = {
@@ -398,6 +399,31 @@ type SliderProps = React.ComponentProps<typeof Slider>;
398
399
 
399
400
  declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
400
401
 
402
+ declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
403
+ declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
404
+ declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
405
+ declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
406
+ declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
407
+ declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
408
+ declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
409
+ inset?: boolean | undefined;
410
+ } & React.RefAttributes<HTMLDivElement>>;
411
+ declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
412
+ declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
413
+ declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
414
+ inset?: boolean | undefined;
415
+ } & React.RefAttributes<HTMLDivElement>>;
416
+ declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
417
+ declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
418
+ declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
419
+ inset?: boolean | undefined;
420
+ } & React.RefAttributes<HTMLDivElement>>;
421
+ declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
422
+ declare const DropdownMenuShortcut: {
423
+ ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
424
+ displayName: string;
425
+ };
426
+
401
427
  declare const resloveTimestamp: (timestamp: number) => number;
402
428
  declare const getStartDateOfDay: (date: Date) => Date;
403
429
  declare const getEndDateOfDay: (date: Date) => Date;
@@ -409,4 +435,4 @@ declare const getTimestampUTC: (date: Date) => number;
409
435
 
410
436
  declare function cn(...inputs: ClassValue[]): string;
411
437
 
412
- export { ActionButton, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, Button, type ButtonProps, Calendar, Checkbox, Collapsible, DataTable, type DataTableProps, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dropdown, type DropdownProps, Icon, Input, type InputProps, Label, Loading, Navbar, type NavbarProps, type Options, Popover, PopoverContent, PopoverTrigger, ProgressBar, Search, type SearchProps, Slider, type SliderProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, ForwardedText as Text, TextInput, cn, getEndDateOfDay, getStartDateOfDay, getStartEndTimestampOfDay, getTimestampUTC, resloveTimestamp };
438
+ export { ActionButton, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, Button, type ButtonProps, Calendar, Checkbox, Collapsible, DataTable, type DataTableProps, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type DropdownProps, Icon, Input, type InputProps, Label, Loading, Navbar, type NavbarProps, type Options, Popover, PopoverContent, PopoverTrigger, ProgressBar, Search, type SearchProps, Slider, type SliderProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, ForwardedText as Text, TextInput, cn, getEndDateOfDay, getStartDateOfDay, getStartEndTimestampOfDay, getTimestampUTC, resloveTimestamp };
package/dist/index.js CHANGED
@@ -27,6 +27,7 @@ export * from "./components/AlertDialog/AlertDialog";
27
27
  export * from "./components/Search/Search";
28
28
  export * from "./components/Slider/Slider";
29
29
  export * from "./components/Switch/Switch";
30
+ export * from "./components/DropdownMenu/DropdownMenu";
30
31
  // UTILS
31
32
  export { resloveTimestamp, getStartDateOfDay, getEndDateOfDay, getStartEndTimestampOfDay, getTimestampUTC, } from "./utils/datetime";
32
33
  export { cn } from "./utils/cn";
@@ -1057,6 +1057,26 @@
1057
1057
  --navbar-text-color: var(--primary-foreground);
1058
1058
  --navbar-border-color: var(--primary-foreground);
1059
1059
  --navbar-gap: 16px;
1060
+ /* ------------------------------------------------------------------ */
1061
+ /* DropdownMenu Component Tokens */
1062
+ /* ------------------------------------------------------------------ */
1063
+ /* Naming Convention: --[component]-[state]-[property] */
1064
+ /* Element: [default, hover, selected, disabled] */
1065
+ /* ------------------------------------------------------------------ */
1066
+ --dropdown-menu-seperator-bg: var(--base-color-workspace-stroke);
1067
+ --dropdown-menu-shadow: 0px 2px 24px 0px rgba(145, 158, 171, 0.24);
1068
+ /* Default State */
1069
+ --dropdown-menu-default-bg: transparent;
1070
+ --dropdown-menu-default-text: inherit;
1071
+ /* Hover State */
1072
+ --dropdown-menu-hover-bg: var(--state-color-primary-hover-bg);
1073
+ --dropdown-menu-hover-text: inherit;
1074
+ /* Selected State */
1075
+ --dropdown-menu-selected-bg: transparent;
1076
+ --dropdown-menu-selected-text: inherit;
1077
+ /* Disabled State */
1078
+ --dropdown-menu-disabled-bg: transparent;
1079
+ --dropdown-menu-disabled-text: var(--state-color-disable-outline);
1060
1080
  }
1061
1081
 
1062
1082
  :root[data-theme="xspector"]{
@@ -1277,6 +1297,7 @@
1277
1297
  --base-color-bg2: #282c31;
1278
1298
  --base-color-bg3: #d8d8d8;
1279
1299
  --base-color-workspace-stroke: #e2e2e2;
1300
+ --base-color-guideline-stroke: #c5c5c5;
1280
1301
  --base-color-popup: #2d2e30;
1281
1302
  --base-color-popup-hightlight: #343638;
1282
1303
  --base-color-popup-curtain: rgba(0 0 0 / 0.6);
@@ -1310,7 +1331,7 @@
1310
1331
  --surface-foreground: var(--common-white);
1311
1332
  --primary-foreground: var(--common-white);
1312
1333
  --secondary-foreground: var(--common-white);
1313
- --base-color-popup-foreground: var(--common-white);
1334
+ --base-color-popup-foreground: var(--text-grey-light);
1314
1335
  --main-transparency-primary-8: rgba(221 205 0 / 0.08);
1315
1336
  --main-transparency-primary-12: rgba(221 205 0 / 0.12);
1316
1337
  --main-transparency-primary-16: rgba(221 205 0 / 0.16);
@@ -1485,6 +1506,26 @@
1485
1506
  /* ------------------------------------------------------------------ */
1486
1507
  --loading-process-color: var(--primary);
1487
1508
  --loading-track-color: #9E9E9E7A;
1509
+ /* ------------------------------------------------------------------ */
1510
+ /* DropdownMenu Component Tokens */
1511
+ /* ------------------------------------------------------------------ */
1512
+ /* Naming Convention: --[component]-[state]-[property] */
1513
+ /* Element: [default, hover, selected, disabled] */
1514
+ /* ------------------------------------------------------------------ */
1515
+ --dropdown-menu-seperator-bg: var(--other-transparency-white-08);
1516
+ --dropdown-menu-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.12);
1517
+ /* Default State */
1518
+ --dropdown-menu-default-bg: transparent;
1519
+ --dropdown-menu-default-text: inherit;
1520
+ /* Hover State */
1521
+ --dropdown-menu-hover-bg: var(--other-transparency-white-08);
1522
+ --dropdown-menu-hover-text: inherit;
1523
+ /* Selected State */
1524
+ --dropdown-menu-selected-bg: var(--grey-grey-150);
1525
+ --dropdown-menu-selected-text: inherit;
1526
+ /* Disabled State */
1527
+ --dropdown-menu-disabled-bg: transparent;
1528
+ --dropdown-menu-disabled-text: var(--grey-grey-140);
1488
1529
  }
1489
1530
 
1490
1531
  /* ! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com */
@@ -2189,11 +2230,21 @@ body {
2189
2230
  margin: 0px;
2190
2231
  }
2191
2232
 
2233
+ .-mx-2 {
2234
+ margin-left: -0.5rem;
2235
+ margin-right: -0.5rem;
2236
+ }
2237
+
2192
2238
  .mx-auto {
2193
2239
  margin-left: auto;
2194
2240
  margin-right: auto;
2195
2241
  }
2196
2242
 
2243
+ .my-2 {
2244
+ margin-top: 0.5rem;
2245
+ margin-bottom: 0.5rem;
2246
+ }
2247
+
2197
2248
  .ml-2 {
2198
2249
  margin-left: 0.5rem;
2199
2250
  }
@@ -2206,6 +2257,10 @@ body {
2206
2257
  margin-left: 1rem;
2207
2258
  }
2208
2259
 
2260
+ .ml-auto {
2261
+ margin-left: auto;
2262
+ }
2263
+
2209
2264
  .mr-2 {
2210
2265
  margin-right: 0.5rem;
2211
2266
  }
@@ -2413,6 +2468,10 @@ body {
2413
2468
  height: 100%;
2414
2469
  }
2415
2470
 
2471
+ .h-px {
2472
+ height: 1px;
2473
+ }
2474
+
2416
2475
  .h-screen {
2417
2476
  height: 100vh;
2418
2477
  }
@@ -2429,6 +2488,10 @@ body {
2429
2488
  width: 2.5rem;
2430
2489
  }
2431
2490
 
2491
+ .w-2 {
2492
+ width: 0.5rem;
2493
+ }
2494
+
2432
2495
  .w-4 {
2433
2496
  width: 1rem;
2434
2497
  }
@@ -2493,6 +2556,10 @@ body {
2493
2556
  min-width: 18rem;
2494
2557
  }
2495
2558
 
2559
+ .min-w-\[154px\] {
2560
+ min-width: 154px;
2561
+ }
2562
+
2496
2563
  .max-w-lg {
2497
2564
  max-width: 32rem;
2498
2565
  }
@@ -2550,6 +2617,10 @@ body {
2550
2617
  animation: spin 1s linear infinite;
2551
2618
  }
2552
2619
 
2620
+ .cursor-default {
2621
+ cursor: default;
2622
+ }
2623
+
2553
2624
  .cursor-pointer {
2554
2625
  cursor: pointer;
2555
2626
  }
@@ -3024,6 +3095,18 @@ body {
3024
3095
  background-color: rgb(var(--navbar-bg-color));
3025
3096
  }
3026
3097
 
3098
+ .bg-\[var\(--dropdown-menu-default-bg\)\] {
3099
+ background-color: var(--dropdown-menu-default-bg);
3100
+ }
3101
+
3102
+ .bg-\[var\(--dropdown-menu-selected-bg\)\] {
3103
+ background-color: var(--dropdown-menu-selected-bg);
3104
+ }
3105
+
3106
+ .bg-\[var\(--dropdown-menu-seperator-bg\)\] {
3107
+ background-color: var(--dropdown-menu-seperator-bg);
3108
+ }
3109
+
3027
3110
  .bg-action-button-icon-active {
3028
3111
  --tw-bg-opacity: 1;
3029
3112
  background-color: color-mix(in srgb, var(--action-button-icon-active-bg) calc(100% * var(--tw-bg-opacity)), transparent);
@@ -3462,6 +3545,11 @@ body {
3462
3545
  padding-right: 0.25rem;
3463
3546
  }
3464
3547
 
3548
+ .px-2 {
3549
+ padding-left: 0.5rem;
3550
+ padding-right: 0.5rem;
3551
+ }
3552
+
3465
3553
  .px-3 {
3466
3554
  padding-left: 0.75rem;
3467
3555
  padding-right: 0.75rem;
@@ -3527,6 +3615,11 @@ body {
3527
3615
  padding-bottom: 0.25rem;
3528
3616
  }
3529
3617
 
3618
+ .py-1\.5 {
3619
+ padding-top: 0.375rem;
3620
+ padding-bottom: 0.375rem;
3621
+ }
3622
+
3530
3623
  .py-14 {
3531
3624
  padding-top: 3.5rem;
3532
3625
  padding-bottom: 3.5rem;
@@ -3601,6 +3694,22 @@ body {
3601
3694
  padding-inline-end: 72px;
3602
3695
  }
3603
3696
 
3697
+ .pl-8 {
3698
+ padding-left: 2rem;
3699
+ }
3700
+
3701
+ .pl-9 {
3702
+ padding-left: 2.25rem;
3703
+ }
3704
+
3705
+ .pr-4 {
3706
+ padding-right: 1rem;
3707
+ }
3708
+
3709
+ .pr-xxl {
3710
+ padding-right: var(--spacing-spacing-xxl);
3711
+ }
3712
+
3604
3713
  .ps-11 {
3605
3714
  padding-inline-start: 2.75rem;
3606
3715
  }
@@ -3641,6 +3750,10 @@ body {
3641
3750
  vertical-align: middle;
3642
3751
  }
3643
3752
 
3753
+ .font-poppins {
3754
+ font-family: Poppins, sans-serif;
3755
+ }
3756
+
3644
3757
  .text-body1 {
3645
3758
  font-size: var(--body1-size, 16px);
3646
3759
  line-height: var(--body1-line-height, 20px);
@@ -3819,6 +3932,11 @@ body {
3819
3932
  line-height: 1.75rem;
3820
3933
  }
3821
3934
 
3935
+ .text-xs {
3936
+ font-size: 0.75rem;
3937
+ line-height: 1rem;
3938
+ }
3939
+
3822
3940
  .font-bold {
3823
3941
  font-weight: 700;
3824
3942
  }
@@ -3843,6 +3961,10 @@ body {
3843
3961
  letter-spacing: -0.025em;
3844
3962
  }
3845
3963
 
3964
+ .tracking-widest {
3965
+ letter-spacing: 0.1em;
3966
+ }
3967
+
3846
3968
  .\!text-primary-foreground {
3847
3969
  --tw-text-opacity: 1 !important;
3848
3970
  color: color-mix(in srgb, var(--primary-foreground) calc(100% * var(--tw-text-opacity)), transparent) !important;
@@ -3852,6 +3974,14 @@ body {
3852
3974
  color: rgb(var(--navbar-text-color));
3853
3975
  }
3854
3976
 
3977
+ .text-\[var\(--dropdown-menu-default-text\)\] {
3978
+ color: var(--dropdown-menu-default-text);
3979
+ }
3980
+
3981
+ .text-\[var\(--dropdown-menu-selected-text\)\] {
3982
+ color: var(--dropdown-menu-selected-text);
3983
+ }
3984
+
3855
3985
  .text-\[var\(--loading-process-color\)\] {
3856
3986
  color: var(--loading-process-color);
3857
3987
  }
@@ -4160,10 +4290,20 @@ body {
4160
4290
  caret-color: color-mix(in srgb, var(--state-color-primary-default) calc(100% * 1), transparent);
4161
4291
  }
4162
4292
 
4293
+ .opacity-60 {
4294
+ opacity: 0.6;
4295
+ }
4296
+
4163
4297
  .opacity-70 {
4164
4298
  opacity: 0.7;
4165
4299
  }
4166
4300
 
4301
+ .shadow-\[0px_2px_24px_0px_rgba\(145\2c _158\2c _171\2c _0\.24\)\] {
4302
+ --tw-shadow: 0px 2px 24px 0px rgba(145, 158, 171, 0.24);
4303
+ --tw-shadow-colored: 0px 2px 24px 0px var(--tw-shadow-color);
4304
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
4305
+ }
4306
+
4167
4307
  .shadow-lg {
4168
4308
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
4169
4309
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
@@ -4176,6 +4316,11 @@ body {
4176
4316
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
4177
4317
  }
4178
4318
 
4319
+ .shadow-\[var\(--dropdown-menu-shadow\)\] {
4320
+ --tw-shadow-color: var(--dropdown-menu-shadow);
4321
+ --tw-shadow: var(--tw-shadow-colored);
4322
+ }
4323
+
4179
4324
  .outline-none {
4180
4325
  outline: 2px solid transparent;
4181
4326
  outline-offset: 2px;
@@ -5073,6 +5218,15 @@ body {
5073
5218
  border-color: color-mix(in srgb, var(--input-color-default-stroke) calc(100% * var(--tw-border-opacity)), transparent);
5074
5219
  }
5075
5220
 
5221
+ .focus\:\!bg-\[var\(--dropdown-menu-hover-bg\)\]:focus {
5222
+ background-color: var(--dropdown-menu-hover-bg) !important;
5223
+ }
5224
+
5225
+ .focus\:bg-primary:focus {
5226
+ --tw-bg-opacity: 1;
5227
+ background-color: color-mix(in srgb, var(--state-color-primary-default) calc(100% * var(--tw-bg-opacity)), transparent);
5228
+ }
5229
+
5076
5230
  .focus\:pe-10:focus {
5077
5231
  padding-inline-end: 2.5rem;
5078
5232
  }
@@ -5085,6 +5239,10 @@ body {
5085
5239
  padding-inline-end: 2rem;
5086
5240
  }
5087
5241
 
5242
+ .focus\:\!text-\[var\(--dropdown-menu-hover-text\)\]:focus {
5243
+ color: var(--dropdown-menu-hover-text) !important;
5244
+ }
5245
+
5088
5246
  .focus\:text-input-filled-text:focus {
5089
5247
  --tw-text-opacity: 1;
5090
5248
  color: color-mix(in srgb, var(--input-color-filled-text) calc(100% * var(--tw-text-opacity)), transparent);
@@ -5692,6 +5850,10 @@ body {
5692
5850
  color: color-mix(in srgb, var(--text-dark) calc(100% * var(--tw-text-opacity)), transparent);
5693
5851
  }
5694
5852
 
5853
+ .active\:opacity-75:active {
5854
+ opacity: 0.75;
5855
+ }
5856
+
5695
5857
  .active\:ring-input-disable-stroke:active {
5696
5858
  --tw-ring-opacity: 1;
5697
5859
  --tw-ring-color: color-mix(in srgb, var(--input-color-disable-stroke) calc(100% * var(--tw-ring-opacity)), transparent);
@@ -6261,6 +6423,10 @@ body {
6261
6423
  opacity: 0.7;
6262
6424
  }
6263
6425
 
6426
+ .data-\[disabled\]\:pointer-events-none[data-disabled] {
6427
+ pointer-events: none;
6428
+ }
6429
+
6264
6430
  .data-\[state\=checked\]\:translate-x-4[data-state=checked] {
6265
6431
  --tw-translate-x: 1rem;
6266
6432
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -6381,6 +6547,10 @@ body {
6381
6547
  border-color: color-mix(in srgb, var(--state-color-primary-default) calc(100% * var(--tw-border-opacity)), transparent);
6382
6548
  }
6383
6549
 
6550
+ .data-\[disabled\]\:\!bg-\[var\(--dropdown-menu-disabled-bg\)\][data-disabled] {
6551
+ background-color: var(--dropdown-menu-disabled-bg) !important;
6552
+ }
6553
+
6384
6554
  .data-\[loading\=true\]\:bg-button-error-flat-active[data-loading=true] {
6385
6555
  --tw-bg-opacity: 1;
6386
6556
  background-color: color-mix(in srgb, var(--button-error-flat-active-bg) calc(100% * var(--tw-bg-opacity)), transparent);
@@ -6486,6 +6656,10 @@ body {
6486
6656
  background-color: color-mix(in srgb, var(--button-warning-solid-active-bg) calc(100% * var(--tw-bg-opacity)), transparent);
6487
6657
  }
6488
6658
 
6659
+ .data-\[state\=\'checked\'\]\:bg-\[var\(--dropdown-menu-selected-bg\)\][data-state='checked'] {
6660
+ background-color: var(--dropdown-menu-selected-bg);
6661
+ }
6662
+
6489
6663
  .data-\[state\=checked\]\:bg-primary[data-state=checked] {
6490
6664
  --tw-bg-opacity: 1;
6491
6665
  background-color: color-mix(in srgb, var(--state-color-primary-default) calc(100% * var(--tw-bg-opacity)), transparent);
@@ -6598,6 +6772,10 @@ body {
6598
6772
  fill: color-mix(in srgb, var(--button-warning-solid-active-text) calc(100% * 1), transparent);
6599
6773
  }
6600
6774
 
6775
+ .data-\[disabled\]\:\!text-\[var\(--dropdown-menu-disabled-text\)\][data-disabled] {
6776
+ color: var(--dropdown-menu-disabled-text) !important;
6777
+ }
6778
+
6601
6779
  .data-\[loading\=true\]\:text-button-error-flat-active[data-loading=true] {
6602
6780
  --tw-text-opacity: 1;
6603
6781
  color: color-mix(in srgb, var(--button-error-flat-active-text) calc(100% * var(--tw-text-opacity)), transparent);
@@ -6703,6 +6881,10 @@ body {
6703
6881
  color: color-mix(in srgb, var(--button-warning-solid-active-text) calc(100% * var(--tw-text-opacity)), transparent);
6704
6882
  }
6705
6883
 
6884
+ .data-\[state\=\'checked\'\]\:text-\[var\(--dropdown-menu-selected-text\)\][data-state='checked'] {
6885
+ color: var(--dropdown-menu-selected-text);
6886
+ }
6887
+
6706
6888
  .data-\[state\=checked\]\:text-primary-foreground[data-state=checked] {
6707
6889
  --tw-text-opacity: 1;
6708
6890
  color: color-mix(in srgb, var(--primary-foreground) calc(100% * var(--tw-text-opacity)), transparent);
@@ -6713,6 +6895,12 @@ body {
6713
6895
  color: color-mix(in srgb, var(--primary-foreground) calc(100% * var(--tw-text-opacity)), transparent);
6714
6896
  }
6715
6897
 
6898
+ .data-\[state\=\'checked\'\]\:typography-subtitile5[data-state='checked'] {
6899
+ font-size: var(--subtitle5-size, 14px);
6900
+ line-height: var(--subtitle5-line-height, 22px);
6901
+ font-weight: var(--subtitle5-weight, 500);
6902
+ }
6903
+
6716
6904
  @media (min-width: 640px) {
6717
6905
  .sm\:mt-0 {
6718
6906
  margin-top: 0px;
@@ -4,4 +4,5 @@
4
4
  @import url(transparent.css);
5
5
  @import url(typography.css);
6
6
  @import url(components/action-button.css);
7
- @import url(components/loading.css);
7
+ @import url(components/loading.css);
8
+ @import url(components/dropdown-menu.css);
@@ -23,6 +23,7 @@
23
23
  --base-color-bg2: #282c31;
24
24
  --base-color-bg3: #d8d8d8;
25
25
  --base-color-workspace-stroke: #e2e2e2;
26
+ --base-color-guideline-stroke: #c5c5c5;
26
27
  --base-color-popup: #2d2e30;
27
28
  --base-color-popup-hightlight: #343638;
28
29
  --base-color-popup-curtain: rgba(0 0 0 / 0.6);
@@ -63,5 +64,5 @@
63
64
  --primary-foreground: var(--common-white);
64
65
  --secondary-foreground: var(--common-white);
65
66
 
66
- --base-color-popup-foreground: var(--common-white);
67
+ --base-color-popup-foreground: var(--text-grey-light);
67
68
  }
@@ -0,0 +1,28 @@
1
+ :root[data-theme="xspector"] {
2
+ /* ------------------------------------------------------------------ */
3
+ /* DropdownMenu Component Tokens */
4
+ /* ------------------------------------------------------------------ */
5
+ /* Naming Convention: --[component]-[state]-[property] */
6
+ /* Element: [default, hover, selected, disabled] */
7
+ /* ------------------------------------------------------------------ */
8
+
9
+ --dropdown-menu-seperator-bg: var(--other-transparency-white-08);
10
+ --dropdown-menu-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.12);
11
+
12
+ /* Default State */
13
+ --dropdown-menu-default-bg: transparent;
14
+ --dropdown-menu-default-text: inherit;
15
+
16
+ /* Hover State */
17
+ --dropdown-menu-hover-bg: var(--other-transparency-white-08);
18
+ --dropdown-menu-hover-text: inherit;
19
+
20
+ /* Selected State */
21
+ --dropdown-menu-selected-bg: var(--grey-grey-150);
22
+ --dropdown-menu-selected-text: inherit;
23
+
24
+ /* Disabled State */
25
+ --dropdown-menu-disabled-bg: transparent;
26
+ --dropdown-menu-disabled-text: var(--grey-grey-140);
27
+
28
+ }
@@ -7,4 +7,5 @@
7
7
  @import url(components/button.css);
8
8
  @import url(components/action-button.css);
9
9
  @import url(components/loading.css);
10
- @import url(components/navbar.css);
10
+ @import url(components/navbar.css);
11
+ @import url(components/dropdown-menu.css);
@@ -0,0 +1,27 @@
1
+ :root {
2
+ /* ------------------------------------------------------------------ */
3
+ /* DropdownMenu Component Tokens */
4
+ /* ------------------------------------------------------------------ */
5
+ /* Naming Convention: --[component]-[state]-[property] */
6
+ /* Element: [default, hover, selected, disabled] */
7
+ /* ------------------------------------------------------------------ */
8
+
9
+ --dropdown-menu-seperator-bg: var(--base-color-workspace-stroke);
10
+ --dropdown-menu-shadow: 0px 2px 24px 0px rgba(145, 158, 171, 0.24);
11
+
12
+ /* Default State */
13
+ --dropdown-menu-default-bg: transparent;
14
+ --dropdown-menu-default-text: inherit;
15
+
16
+ /* Hover State */
17
+ --dropdown-menu-hover-bg: var(--state-color-primary-hover-bg);
18
+ --dropdown-menu-hover-text: inherit;
19
+
20
+ /* Selected State */
21
+ --dropdown-menu-selected-bg: transparent;
22
+ --dropdown-menu-selected-text: inherit;
23
+
24
+ /* Disabled State */
25
+ --dropdown-menu-disabled-bg: transparent;
26
+ --dropdown-menu-disabled-text: var(--state-color-disable-outline);
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovula/ui",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "main": "dist/cjs/bundle.js",
5
5
  "module": "dist/esm/bundle.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,14 +15,17 @@
15
15
  "public": "npm run build:package && npm publish --access=public",
16
16
  "storybook:serve-css": "npx tailwindcss -i ./src/theme/global.css -o ./dist/src/theme/global.css",
17
17
  "storybook": "storybook dev -p 6006",
18
- "build-storybook": "storybook build"
18
+ "build-storybook": "storybook build",
19
+ "chromatic": "npx chromatic --project-token=chpt_cee098dd3b9b3ee"
19
20
  },
20
21
  "files": [
21
22
  "dist/**/*",
22
23
  "src/**/*"
23
24
  ],
24
25
  "keywords": [],
25
- "author": "NuttapongSa",
26
+ "author": {
27
+ "name": "NuttapongSa"
28
+ },
26
29
  "license": "ISC",
27
30
  "devDependencies": {
28
31
  "@babel/core": "^7.24.5",
@@ -50,6 +53,7 @@
50
53
  "@types/node": "^20.12.12",
51
54
  "autoprefixer": "^10.4.19",
52
55
  "babel-loader": "^9.1.3",
56
+ "chromatic": "^11.7.1",
53
57
  "copyfiles": "^2.4.1",
54
58
  "css-loader": "^7.1.2",
55
59
  "postcss": "^8.4.38",
@@ -72,6 +76,7 @@
72
76
  "@radix-ui/react-avatar": "^1.1.0",
73
77
  "@radix-ui/react-checkbox": "^1.0.4",
74
78
  "@radix-ui/react-dialog": "^1.0.5",
79
+ "@radix-ui/react-dropdown-menu": "^2.1.1",
75
80
  "@radix-ui/react-label": "^2.0.2",
76
81
  "@radix-ui/react-popover": "^1.1.1",
77
82
  "@radix-ui/react-radio-group": "^1.1.3",