@mbao01/common 0.0.48 → 0.0.50

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 (76) hide show
  1. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +20 -0
  2. package/dist/types/components/Breadcrumb/constants.d.ts +6 -0
  3. package/dist/types/components/Breadcrumb/index.d.ts +1 -0
  4. package/dist/types/components/Breadcrumb/types.d.ts +12 -0
  5. package/dist/types/components/Command/Command.d.ts +6 -6
  6. package/dist/types/components/Form/MultiSelect/MultiSelect.d.ts +2 -2
  7. package/dist/types/components/Sidebar/Sidebar.d.ts +39 -0
  8. package/dist/types/components/Sidebar/SidebarContext.d.ts +2 -0
  9. package/dist/types/components/Sidebar/SidebarGroup.d.ts +13 -0
  10. package/dist/types/components/Sidebar/SidebarMenu.d.ts +30 -0
  11. package/dist/types/components/Sidebar/constants.d.ts +48 -0
  12. package/dist/types/components/Sidebar/hooks/index.d.ts +1 -0
  13. package/dist/types/components/Sidebar/hooks/useSidebar/index.d.ts +1 -0
  14. package/dist/types/components/Sidebar/hooks/useSidebar/useSidebar.d.ts +1 -0
  15. package/dist/types/components/Sidebar/index.d.ts +4 -0
  16. package/dist/types/components/Sidebar/stories/examples/Sidebar.example.d.ts +57 -0
  17. package/dist/types/components/Sidebar/stories/examples/components/AppMain.d.ts +3 -0
  18. package/dist/types/components/Sidebar/stories/examples/components/AppSidebar.d.ts +6 -0
  19. package/dist/types/components/Sidebar/stories/examples/components/SearchForm.d.ts +1 -0
  20. package/dist/types/components/Sidebar/stories/examples/components/VersionSwitcher.d.ts +4 -0
  21. package/dist/types/components/Sidebar/types.d.ts +55 -0
  22. package/dist/types/hooks/index.d.ts +1 -0
  23. package/dist/types/hooks/useIsMobile/index.d.ts +1 -0
  24. package/dist/types/hooks/useIsMobile/useIsMobile.d.ts +1 -0
  25. package/dist/types/index.d.ts +3 -1
  26. package/package.json +3 -3
  27. package/src/components/Anchor/Anchor.tsx +2 -2
  28. package/src/components/Breadcrumb/Breadcrumb.tsx +99 -0
  29. package/src/components/Breadcrumb/constants.ts +15 -0
  30. package/src/components/Breadcrumb/index.ts +1 -0
  31. package/src/components/Breadcrumb/types.ts +19 -0
  32. package/src/components/Calendar/Calendar.tsx +1 -1
  33. package/src/components/Carousel/Carousel.tsx +1 -1
  34. package/src/components/Chart/stories/examples/LineChart.tsx +2 -2
  35. package/src/components/Combobox/Combobox.tsx +2 -2
  36. package/src/components/Command/Command.tsx +2 -2
  37. package/src/components/DatePicker/DatePicker.tsx +2 -2
  38. package/src/components/DatePicker/DateRangePicker.tsx +2 -2
  39. package/src/components/DatePicker/MultipleDatesPicker.tsx +2 -2
  40. package/src/components/Dialog/Dialog.tsx +2 -2
  41. package/src/components/FileUploader/FileUploader.tsx +2 -2
  42. package/src/components/Form/DatetimeInput/DatetimeCalendar.tsx +2 -2
  43. package/src/components/Form/MultiSelect/MultiSelect.tsx +2 -2
  44. package/src/components/Form/Select/Select.tsx +1 -1
  45. package/src/components/Form/TagsInput/TagsInput.tsx +2 -2
  46. package/src/components/Menu/ContextMenu/ContextMenu.tsx +2 -2
  47. package/src/components/Menu/DropdownMenu/DropdownMenu.tsx +2 -2
  48. package/src/components/Menu/Menubar/Menubar.tsx +2 -2
  49. package/src/components/Menu/NavigationMenu/NavigationMenu.tsx +1 -1
  50. package/src/components/Pagination/Pagination.tsx +2 -2
  51. package/src/components/Sidebar/Sidebar.tsx +326 -0
  52. package/src/components/Sidebar/SidebarContext.tsx +6 -0
  53. package/src/components/Sidebar/SidebarGroup.tsx +72 -0
  54. package/src/components/Sidebar/SidebarMenu.tsx +205 -0
  55. package/src/components/Sidebar/constants.ts +206 -0
  56. package/src/components/Sidebar/hooks/index.ts +1 -0
  57. package/src/components/Sidebar/hooks/useSidebar/index.ts +1 -0
  58. package/src/components/Sidebar/hooks/useSidebar/useSidebar.ts +11 -0
  59. package/src/components/Sidebar/index.ts +4 -0
  60. package/src/components/Sidebar/stories/examples/Sidebar.example.tsx +155 -0
  61. package/src/components/Sidebar/stories/examples/components/AppMain.tsx +35 -0
  62. package/src/components/Sidebar/stories/examples/components/AppSidebar.tsx +531 -0
  63. package/src/components/Sidebar/stories/examples/components/SearchForm.tsx +26 -0
  64. package/src/components/Sidebar/stories/examples/components/VersionSwitcher.tsx +45 -0
  65. package/src/components/Sidebar/types.ts +74 -0
  66. package/src/components/Widget/Widgets.example.tsx +2 -2
  67. package/src/hooks/index.ts +1 -0
  68. package/src/hooks/useIsMobile/index.ts +1 -0
  69. package/src/hooks/useIsMobile/useIsMobile.ts +19 -0
  70. package/src/index.ts +4 -1
  71. package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +0 -3
  72. package/dist/types/components/Breadcrumbs/index.d.ts +0 -1
  73. package/dist/types/components/Breadcrumbs/types.d.ts +0 -2
  74. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -13
  75. package/src/components/Breadcrumbs/index.ts +0 -1
  76. package/src/components/Breadcrumbs/types.ts +0 -3
@@ -0,0 +1,74 @@
1
+ import type { TooltipProviderProps } from "@radix-ui/react-tooltip";
2
+ import type { HTMLAttributes } from "react";
3
+ import type { VariantProps } from "../../libs";
4
+ import type { TooltipContentProps } from "../Tooltip/types";
5
+ import { getSidebarMenuButtonClasses } from "./constants";
6
+
7
+ export type SidebarContextProps = {
8
+ state: "expanded" | "collapsed";
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
11
+ openMobile: boolean;
12
+ setOpenMobile: (open: boolean) => void;
13
+ isMobile: boolean;
14
+ toggleSidebar: () => void;
15
+ };
16
+
17
+ export type SidebarProps = HTMLAttributes<HTMLDivElement> &
18
+ Partial<{
19
+ side: "left" | "right";
20
+ variant: "sidebar" | "floating" | "inset";
21
+ collapsible: "offcanvas" | "icon" | "none";
22
+ }>;
23
+
24
+ export type SidebarProviderProps = HTMLAttributes<HTMLDivElement> & {
25
+ defaultOpen?: boolean;
26
+ open?: boolean;
27
+ onOpenChange?: (open: boolean) => void;
28
+ tooltipProvider?: TooltipProviderProps;
29
+ };
30
+
31
+ export type SidebarGroupProps = HTMLAttributes<HTMLDivElement>;
32
+
33
+ export type SidebarGroupLabelProps = HTMLAttributes<HTMLDivElement> & Partial<{ asChild: boolean }>;
34
+
35
+ export type SidebarGroupActionProps = HTMLAttributes<HTMLButtonElement> &
36
+ Partial<{ asChild: boolean }>;
37
+
38
+ export type SidebarGroupContentProps = HTMLAttributes<HTMLDivElement>;
39
+
40
+ export type SidebarMenuProps = HTMLAttributes<HTMLUListElement>;
41
+
42
+ export type SidebarMenuItemProps = HTMLAttributes<HTMLLIElement>;
43
+
44
+ export type SidebarMenuButtonProps = HTMLAttributes<HTMLButtonElement> &
45
+ Partial<{
46
+ asChild: boolean;
47
+ isActive: boolean;
48
+ tooltip: string | TooltipContentProps;
49
+ }> &
50
+ VariantProps<typeof getSidebarMenuButtonClasses>;
51
+
52
+ export type SidebarMenuActionProps = HTMLAttributes<HTMLButtonElement> &
53
+ Partial<{
54
+ asChild: boolean;
55
+ showOnHover: boolean;
56
+ }>;
57
+
58
+ export type SidebarMenuBadgeProps = HTMLAttributes<HTMLDivElement>;
59
+
60
+ export type SidebarMenuSkeletonProps = HTMLAttributes<HTMLDivElement> &
61
+ Partial<{
62
+ showIcon: boolean;
63
+ }>;
64
+
65
+ export type SidebarMenuSubProps = HTMLAttributes<HTMLUListElement>;
66
+
67
+ export type SidebarMenuSubItemProps = HTMLAttributes<HTMLLIElement>;
68
+
69
+ export type SidebarMenuSubButtonProps = HTMLAttributes<HTMLAnchorElement> &
70
+ Partial<{
71
+ asChild: boolean;
72
+ size: "sm" | "md";
73
+ isActive: boolean;
74
+ }>;
@@ -1,5 +1,5 @@
1
1
  import { useState } from "react";
2
- import { MoveIcon, TrashIcon } from "@radix-ui/react-icons";
2
+ import { MoveIcon, OctagonXIcon } from "lucide-react";
3
3
  import { Draggable } from "../DragAndDrop";
4
4
  import { useWidgets } from "./hooks/useWidgets/useWidgets";
5
5
  import { Widget } from "./Widget";
@@ -103,7 +103,7 @@ const Widgets = () => {
103
103
  aria-label={`Delete widget ${widget.id}`}
104
104
  className="transition-all hover:text-error"
105
105
  >
106
- <TrashIcon />
106
+ <OctagonXIcon />
107
107
  </Draggable.Action>
108
108
  </div>
109
109
  )}
@@ -0,0 +1 @@
1
+ export { useIsMobile } from "./useIsMobile";
@@ -0,0 +1 @@
1
+ export { useIsMobile } from "./useIsMobile";
@@ -0,0 +1,19 @@
1
+ import { useEffect, useState } from "react";
2
+
3
+ const MOBILE_BREAKPOINT = 768;
4
+
5
+ export const useIsMobile = () => {
6
+ const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined);
7
+
8
+ useEffect(() => {
9
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
10
+ const onChange = () => {
11
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
12
+ };
13
+ mql.addEventListener("change", onChange);
14
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
15
+ return () => mql.removeEventListener("change", onChange);
16
+ }, []);
17
+
18
+ return Boolean(isMobile);
19
+ };
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /** actions */
2
2
  export * from "./components/Anchor";
3
3
  export * from "./components/Button";
4
- export * from "./components/Breadcrumbs";
4
+ export * from "./components/Breadcrumb";
5
5
  export * from "./components/Menu";
6
6
  export * from "./components/Pagination";
7
7
  export * from "./components/ThemeSwitch";
@@ -46,3 +46,6 @@ export * from "./components/HoverCard";
46
46
  export * from "./components/Popover";
47
47
  export * from "./components/Slot";
48
48
  export * from "./components/Widget";
49
+
50
+ /** molecules */
51
+ export * from "./components/Sidebar";
@@ -1,3 +0,0 @@
1
- import { BreadcrumbProps, BreadcrumbsProps } from './types';
2
- export declare const Breadcrumbs: (props: BreadcrumbsProps) => import("react/jsx-runtime").JSX.Element;
3
- export declare const Breadcrumb: (props: BreadcrumbProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export { Breadcrumbs } from './Breadcrumbs';
@@ -1,2 +0,0 @@
1
- export type BreadcrumbProps = React.HTMLAttributes<HTMLLIElement>;
2
- export type BreadcrumbsProps = React.HTMLAttributes<HTMLUListElement>;
@@ -1,13 +0,0 @@
1
- import type { BreadcrumbProps, BreadcrumbsProps } from "./types";
2
-
3
- export const Breadcrumbs = (props: BreadcrumbsProps) => {
4
- return (
5
- <div className="breadcrumbs -ml-1 w-fit px-1 text-sm">
6
- <ul {...props} />
7
- </div>
8
- );
9
- };
10
-
11
- export const Breadcrumb = (props: BreadcrumbProps) => {
12
- return <li {...props} />;
13
- };
@@ -1 +0,0 @@
1
- export { Breadcrumbs } from "./Breadcrumbs";
@@ -1,3 +0,0 @@
1
- export type BreadcrumbProps = React.HTMLAttributes<HTMLLIElement>;
2
-
3
- export type BreadcrumbsProps = React.HTMLAttributes<HTMLUListElement>;