@j3m-quantum/ui 1.3.1 → 1.4.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.
package/dist/index.cjs CHANGED
@@ -31,13 +31,13 @@ var TooltipPrimitive = require('@radix-ui/react-tooltip');
31
31
  var sonner = require('sonner');
32
32
  var cmdk = require('cmdk');
33
33
  var DialogPrimitive = require('@radix-ui/react-dialog');
34
+ var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
34
35
  var MenubarPrimitive = require('@radix-ui/react-menubar');
35
36
  var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
36
37
  var ContextMenuPrimitive = require('@radix-ui/react-context-menu');
37
38
  var vaul = require('vaul');
38
39
  var PopoverPrimitive = require('@radix-ui/react-popover');
39
40
  var HoverCardPrimitive = require('@radix-ui/react-hover-card');
40
- var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
41
41
  var CollapsiblePrimitive = require('@radix-ui/react-collapsible');
42
42
  var ResizablePrimitive = require('react-resizable-panels');
43
43
  var dateFns = require('date-fns');
@@ -83,12 +83,12 @@ var AlertDialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(AlertDialog
83
83
  var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
84
84
  var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
85
85
  var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
86
+ var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
86
87
  var MenubarPrimitive__namespace = /*#__PURE__*/_interopNamespace(MenubarPrimitive);
87
88
  var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
88
89
  var ContextMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(ContextMenuPrimitive);
89
90
  var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
90
91
  var HoverCardPrimitive__namespace = /*#__PURE__*/_interopNamespace(HoverCardPrimitive);
91
- var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
92
92
  var CollapsiblePrimitive__namespace = /*#__PURE__*/_interopNamespace(CollapsiblePrimitive);
93
93
  var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespace(ResizablePrimitive);
94
94
 
@@ -2222,7 +2222,7 @@ function TabsList({
2222
2222
  {
2223
2223
  "data-slot": "tabs-list",
2224
2224
  className: cn(
2225
- "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px] dark:bg-[#1a1a1a]",
2225
+ "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
2226
2226
  className
2227
2227
  ),
2228
2228
  ...props
@@ -3762,6 +3762,59 @@ function DialogDescription({
3762
3762
  }
3763
3763
  );
3764
3764
  }
3765
+ function ScrollArea({
3766
+ className,
3767
+ children,
3768
+ ...props
3769
+ }) {
3770
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3771
+ ScrollAreaPrimitive__namespace.Root,
3772
+ {
3773
+ "data-slot": "scroll-area",
3774
+ className: cn("relative", className),
3775
+ ...props,
3776
+ children: [
3777
+ /* @__PURE__ */ jsxRuntime.jsx(
3778
+ ScrollAreaPrimitive__namespace.Viewport,
3779
+ {
3780
+ "data-slot": "scroll-area-viewport",
3781
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
3782
+ children
3783
+ }
3784
+ ),
3785
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
3786
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
3787
+ ]
3788
+ }
3789
+ );
3790
+ }
3791
+ function ScrollBar({
3792
+ className,
3793
+ orientation = "vertical",
3794
+ ...props
3795
+ }) {
3796
+ return /* @__PURE__ */ jsxRuntime.jsx(
3797
+ ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
3798
+ {
3799
+ "data-slot": "scroll-area-scrollbar",
3800
+ orientation,
3801
+ className: cn(
3802
+ "flex touch-none p-px transition-colors select-none",
3803
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
3804
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
3805
+ className
3806
+ ),
3807
+ ...props,
3808
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3809
+ ScrollAreaPrimitive__namespace.ScrollAreaThumb,
3810
+ {
3811
+ "data-slot": "scroll-area-thumb",
3812
+ className: "bg-border relative flex-1 rounded-full"
3813
+ }
3814
+ )
3815
+ }
3816
+ );
3817
+ }
3765
3818
  function Command({
3766
3819
  className,
3767
3820
  ...props
@@ -3831,17 +3884,17 @@ function CommandList({
3831
3884
  className,
3832
3885
  ...props
3833
3886
  }) {
3834
- return /* @__PURE__ */ jsxRuntime.jsx(
3887
+ return /* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { className: "max-h-[300px]", children: /* @__PURE__ */ jsxRuntime.jsx(
3835
3888
  cmdk.Command.List,
3836
3889
  {
3837
3890
  "data-slot": "command-list",
3838
3891
  className: cn(
3839
- "max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
3892
+ "scroll-py-1",
3840
3893
  className
3841
3894
  ),
3842
3895
  ...props
3843
3896
  }
3844
- );
3897
+ ) });
3845
3898
  }
3846
3899
  function CommandEmpty({
3847
3900
  ...props
@@ -4848,59 +4901,6 @@ function HoverCardContent({
4848
4901
  }
4849
4902
  ) });
4850
4903
  }
4851
- function ScrollArea({
4852
- className,
4853
- children,
4854
- ...props
4855
- }) {
4856
- return /* @__PURE__ */ jsxRuntime.jsxs(
4857
- ScrollAreaPrimitive__namespace.Root,
4858
- {
4859
- "data-slot": "scroll-area",
4860
- className: cn("relative", className),
4861
- ...props,
4862
- children: [
4863
- /* @__PURE__ */ jsxRuntime.jsx(
4864
- ScrollAreaPrimitive__namespace.Viewport,
4865
- {
4866
- "data-slot": "scroll-area-viewport",
4867
- className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
4868
- children
4869
- }
4870
- ),
4871
- /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
4872
- /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
4873
- ]
4874
- }
4875
- );
4876
- }
4877
- function ScrollBar({
4878
- className,
4879
- orientation = "vertical",
4880
- ...props
4881
- }) {
4882
- return /* @__PURE__ */ jsxRuntime.jsx(
4883
- ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
4884
- {
4885
- "data-slot": "scroll-area-scrollbar",
4886
- orientation,
4887
- className: cn(
4888
- "flex touch-none p-px transition-colors select-none",
4889
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
4890
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
4891
- className
4892
- ),
4893
- ...props,
4894
- children: /* @__PURE__ */ jsxRuntime.jsx(
4895
- ScrollAreaPrimitive__namespace.ScrollAreaThumb,
4896
- {
4897
- "data-slot": "scroll-area-thumb",
4898
- className: "bg-border relative flex-1 rounded-full"
4899
- }
4900
- )
4901
- }
4902
- );
4903
- }
4904
4904
  function Collapsible({
4905
4905
  ...props
4906
4906
  }) {
@@ -7961,7 +7961,9 @@ function CalendarHeader({
7961
7961
  // Hidden by default, controlled via settings
7962
7962
  showToday = true,
7963
7963
  showAddButton = true,
7964
- onAddClick
7964
+ showSettings = true,
7965
+ onAddClick,
7966
+ onSettingsClick
7965
7967
  }) {
7966
7968
  const {
7967
7969
  selectedDate,
@@ -8110,9 +8112,22 @@ function CalendarHeader({
8110
8112
  }
8111
8113
  )
8112
8114
  ] }),
8113
- showAddButton && /* @__PURE__ */ jsxRuntime.jsxs(Button, { onClick: onAddClick, className: "w-full sm:w-auto", children: [
8114
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, {}),
8115
- "Add Event"
8115
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
8116
+ showSettings && /* @__PURE__ */ jsxRuntime.jsx(
8117
+ Button,
8118
+ {
8119
+ variant: "outline",
8120
+ size: "icon",
8121
+ onClick: onSettingsClick,
8122
+ className: "shrink-0",
8123
+ "aria-label": "Calendar settings",
8124
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" })
8125
+ }
8126
+ ),
8127
+ showAddButton && /* @__PURE__ */ jsxRuntime.jsxs(Button, { onClick: onAddClick, className: "w-full sm:w-auto", children: [
8128
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, {}),
8129
+ "Add Event"
8130
+ ] })
8116
8131
  ] })
8117
8132
  ] })
8118
8133
  ]
@@ -8122,7 +8137,9 @@ function CalendarHeader({
8122
8137
  function CalendarHeaderCompact({
8123
8138
  className,
8124
8139
  showAddButton = true,
8125
- onAddClick
8140
+ showSettings = true,
8141
+ onAddClick,
8142
+ onSettingsClick
8126
8143
  }) {
8127
8144
  const {
8128
8145
  selectedDate,
@@ -8202,7 +8219,18 @@ function CalendarHeaderCompact({
8202
8219
  }
8203
8220
  )
8204
8221
  ] }),
8205
- showAddButton && /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", onClick: onAddClick, className: "ml-2 size-8 p-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4" }) })
8222
+ showSettings && /* @__PURE__ */ jsxRuntime.jsx(
8223
+ Button,
8224
+ {
8225
+ variant: "outline",
8226
+ size: "icon",
8227
+ onClick: onSettingsClick,
8228
+ className: "ml-2 size-8",
8229
+ "aria-label": "Calendar settings",
8230
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" })
8231
+ }
8232
+ ),
8233
+ showAddButton && /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "sm", onClick: onAddClick, className: "size-8 p-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4" }) })
8206
8234
  ] })
8207
8235
  ]
8208
8236
  }
@@ -8666,24 +8694,59 @@ function ChangeWorkingHoursInput() {
8666
8694
  /* @__PURE__ */ jsxRuntime.jsx(Button, { className: "mt-4 w-fit", onClick: handleSave, children: "Apply" })
8667
8695
  ] });
8668
8696
  }
8669
- function CalendarSettingsPanel({
8697
+ function CalendarSettingsContent({
8670
8698
  className,
8671
8699
  showBadgeVariant = true,
8672
8700
  showVisibleHours = true,
8673
8701
  showWorkingHours = true
8674
8702
  }) {
8675
- return /* @__PURE__ */ jsxRuntime.jsx(Accordion, { type: "single", collapsible: true, className: cn("relative z-10 bg-background", className), children: /* @__PURE__ */ jsxRuntime.jsxs(AccordionItem, { value: "settings", className: "border-none", children: [
8676
- /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "flex-none gap-2 py-0 hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
8677
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" }),
8678
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-semibold", children: "Calendar settings" })
8679
- ] }) }),
8680
- /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex flex-col gap-6", children: [
8681
- showBadgeVariant && /* @__PURE__ */ jsxRuntime.jsx(ChangeBadgeVariantInput, {}),
8682
- showVisibleHours && /* @__PURE__ */ jsxRuntime.jsx(ChangeVisibleHoursInput, {}),
8683
- showWorkingHours && /* @__PURE__ */ jsxRuntime.jsx(ChangeWorkingHoursInput, {})
8684
- ] }) })
8703
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-6", className), children: [
8704
+ showBadgeVariant && /* @__PURE__ */ jsxRuntime.jsx(ChangeBadgeVariantInput, {}),
8705
+ showVisibleHours && /* @__PURE__ */ jsxRuntime.jsx(ChangeVisibleHoursInput, {}),
8706
+ showWorkingHours && /* @__PURE__ */ jsxRuntime.jsx(ChangeWorkingHoursInput, {})
8707
+ ] });
8708
+ }
8709
+ function CalendarSettingsDialog({
8710
+ open,
8711
+ onOpenChange,
8712
+ showBadgeVariant = true,
8713
+ showVisibleHours = true,
8714
+ showWorkingHours = true
8715
+ }) {
8716
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "max-w-md", children: [
8717
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
8718
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogTitle, { className: "flex items-center gap-2", children: [
8719
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-5" }),
8720
+ "Calendar Settings"
8721
+ ] }),
8722
+ /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { children: "Customize your calendar view and preferences." })
8723
+ ] }),
8724
+ /* @__PURE__ */ jsxRuntime.jsx(
8725
+ CalendarSettingsContent,
8726
+ {
8727
+ showBadgeVariant,
8728
+ showVisibleHours,
8729
+ showWorkingHours
8730
+ }
8731
+ )
8685
8732
  ] }) });
8686
8733
  }
8734
+ function CalendarSettingsButton({
8735
+ onClick,
8736
+ className
8737
+ }) {
8738
+ return /* @__PURE__ */ jsxRuntime.jsx(
8739
+ Button,
8740
+ {
8741
+ variant: "outline",
8742
+ size: "icon",
8743
+ onClick,
8744
+ className: cn("shrink-0", className),
8745
+ "aria-label": "Calendar settings",
8746
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" })
8747
+ }
8748
+ );
8749
+ }
8687
8750
  function useMediaQuery(query) {
8688
8751
  const [matches, setMatches] = React15__namespace.useState(false);
8689
8752
  React15__namespace.useEffect(() => {
@@ -8739,6 +8802,7 @@ function BigCalendarInner({
8739
8802
  }) {
8740
8803
  const { view, setView } = useEventCalendar();
8741
8804
  const [dialogOpen, setDialogOpen] = React15__namespace.useState(false);
8805
+ const [settingsDialogOpen, setSettingsDialogOpen] = React15__namespace.useState(false);
8742
8806
  const [selectedEvent, setSelectedEvent] = React15__namespace.useState(null);
8743
8807
  const [dialogMode, setDialogMode] = React15__namespace.useState("add");
8744
8808
  const [defaultDate, setDefaultDate] = React15__namespace.useState(/* @__PURE__ */ new Date());
@@ -8750,6 +8814,9 @@ function BigCalendarInner({
8750
8814
  setDefaultDate(/* @__PURE__ */ new Date());
8751
8815
  setDialogOpen(true);
8752
8816
  };
8817
+ const handleSettingsClick = () => {
8818
+ setSettingsDialogOpen(true);
8819
+ };
8753
8820
  const handleEventClick = (event) => {
8754
8821
  setSelectedEvent(event);
8755
8822
  setDialogMode("edit");
@@ -8773,45 +8840,46 @@ function BigCalendarInner({
8773
8840
  const Wrapper = bordered ? Card : "div";
8774
8841
  const Content14 = bordered ? CardContent : "div";
8775
8842
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8776
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-4 relative", className), children: [
8777
- /* @__PURE__ */ jsxRuntime.jsxs(
8778
- Wrapper,
8779
- {
8780
- className: cn(
8781
- "flex min-h-[600px] flex-col overflow-hidden rounded-sm",
8782
- !bordered && "border border-border bg-card"
8783
- ),
8784
- children: [
8785
- showHeader && (isCompact ? /* @__PURE__ */ jsxRuntime.jsx(
8786
- CalendarHeaderCompact,
8787
- {
8788
- showAddButton,
8789
- onAddClick: handleAddClick
8790
- }
8791
- ) : /* @__PURE__ */ jsxRuntime.jsx(
8792
- CalendarHeader,
8793
- {
8794
- showAddButton,
8795
- onAddClick: handleAddClick
8796
- }
8797
- )),
8798
- /* @__PURE__ */ jsxRuntime.jsx(Content14, { className: cn("flex-1 overflow-hidden", bordered ? "p-0" : ""), children: /* @__PURE__ */ jsxRuntime.jsx(
8799
- CalendarView,
8800
- {
8801
- view,
8802
- weekStartsOn,
8803
- maxEventsPerDay,
8804
- onEventClick: handleEventClick,
8805
- onDateClick: handleDateClick,
8806
- onMoreClick: handleMoreClick,
8807
- onTimeClick: handleTimeClick
8808
- }
8809
- ) })
8810
- ]
8811
- }
8812
- ),
8813
- showSettings && /* @__PURE__ */ jsxRuntime.jsx(CalendarSettingsPanel, {})
8814
- ] }),
8843
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-4 relative", className), children: /* @__PURE__ */ jsxRuntime.jsxs(
8844
+ Wrapper,
8845
+ {
8846
+ className: cn(
8847
+ "flex min-h-[600px] flex-col overflow-hidden rounded-sm",
8848
+ !bordered && "border border-border bg-card"
8849
+ ),
8850
+ children: [
8851
+ showHeader && (isCompact ? /* @__PURE__ */ jsxRuntime.jsx(
8852
+ CalendarHeaderCompact,
8853
+ {
8854
+ showAddButton,
8855
+ showSettings,
8856
+ onAddClick: handleAddClick,
8857
+ onSettingsClick: handleSettingsClick
8858
+ }
8859
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
8860
+ CalendarHeader,
8861
+ {
8862
+ showAddButton,
8863
+ showSettings,
8864
+ onAddClick: handleAddClick,
8865
+ onSettingsClick: handleSettingsClick
8866
+ }
8867
+ )),
8868
+ /* @__PURE__ */ jsxRuntime.jsx(Content14, { className: cn("flex-1 overflow-hidden", bordered ? "p-0" : ""), children: /* @__PURE__ */ jsxRuntime.jsx(
8869
+ CalendarView,
8870
+ {
8871
+ view,
8872
+ weekStartsOn,
8873
+ maxEventsPerDay,
8874
+ onEventClick: handleEventClick,
8875
+ onDateClick: handleDateClick,
8876
+ onMoreClick: handleMoreClick,
8877
+ onTimeClick: handleTimeClick
8878
+ }
8879
+ ) })
8880
+ ]
8881
+ }
8882
+ ) }),
8815
8883
  /* @__PURE__ */ jsxRuntime.jsx(
8816
8884
  EventDialog,
8817
8885
  {
@@ -8821,6 +8889,13 @@ function BigCalendarInner({
8821
8889
  event: selectedEvent,
8822
8890
  defaultDate
8823
8891
  }
8892
+ ),
8893
+ showSettings && /* @__PURE__ */ jsxRuntime.jsx(
8894
+ CalendarSettingsDialog,
8895
+ {
8896
+ open: settingsDialogOpen,
8897
+ onOpenChange: setSettingsDialogOpen
8898
+ }
8824
8899
  )
8825
8900
  ] });
8826
8901
  }
@@ -8959,7 +9034,9 @@ exports.CalendarContext = CalendarContext;
8959
9034
  exports.CalendarDayButton = CalendarDayButton;
8960
9035
  exports.CalendarHeader = CalendarHeader;
8961
9036
  exports.CalendarHeaderCompact = CalendarHeaderCompact;
8962
- exports.CalendarSettingsPanel = CalendarSettingsPanel;
9037
+ exports.CalendarSettingsButton = CalendarSettingsButton;
9038
+ exports.CalendarSettingsContent = CalendarSettingsContent;
9039
+ exports.CalendarSettingsDialog = CalendarSettingsDialog;
8963
9040
  exports.Card = Card;
8964
9041
  exports.CardContent = CardContent;
8965
9042
  exports.CardDescription = CardDescription;