@trsys-tech/matrix-library 1.1.1 → 1.1.3

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 (75) hide show
  1. package/dist/accordion.es.js +21 -19
  2. package/dist/accordion.es.js.map +1 -1
  3. package/dist/avatar.es.js +19 -19
  4. package/dist/avatar.es.js.map +1 -1
  5. package/dist/breadcrumb.es.js +7 -7
  6. package/dist/breadcrumb.es.js.map +1 -1
  7. package/dist/calendar.es.js +40 -33
  8. package/dist/calendar.es.js.map +1 -1
  9. package/dist/chip.es.js +28 -22
  10. package/dist/chip.es.js.map +1 -1
  11. package/dist/command.es.js +35 -32
  12. package/dist/command.es.js.map +1 -1
  13. package/dist/components/accordion/Accordion.d.ts.map +1 -1
  14. package/dist/components/chip/Chip.d.ts.map +1 -1
  15. package/dist/components/command/Command.d.ts.map +1 -1
  16. package/dist/components/date-picker/DesktopDatePicker.d.ts +1 -1
  17. package/dist/components/date-picker/DesktopDatePicker.d.ts.map +1 -1
  18. package/dist/components/date-picker/DesktopTimePicker.d.ts +2 -2
  19. package/dist/components/date-picker/DesktopTimePicker.d.ts.map +1 -1
  20. package/dist/components/date-picker/TimePickerContent.d.ts.map +1 -1
  21. package/dist/components/date-picker/calendar.d.ts.map +1 -1
  22. package/dist/components/gantt-chart/GanttChart.d.ts +104 -0
  23. package/dist/components/gantt-chart/GanttChart.d.ts.map +1 -0
  24. package/dist/components/gantt-chart/GanttToolbar.d.ts +14 -0
  25. package/dist/components/gantt-chart/GanttToolbar.d.ts.map +1 -0
  26. package/dist/components/gantt-chart/gantt-chart.types.d.ts +45 -0
  27. package/dist/components/gantt-chart/gantt-chart.types.d.ts.map +1 -0
  28. package/dist/components/gantt-chart/gantt-chart.utils.d.ts +34 -0
  29. package/dist/components/gantt-chart/gantt-chart.utils.d.ts.map +1 -0
  30. package/dist/components/multi-select/MultiSelect.d.ts +0 -8
  31. package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
  32. package/dist/components/rating/Rating.d.ts +1 -0
  33. package/dist/components/rating/Rating.d.ts.map +1 -1
  34. package/dist/components/sidebar/Sidebar.d.ts +1 -1
  35. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  36. package/dist/components/tabs/Tabs.d.ts +5 -3
  37. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  38. package/dist/components/timeline/Timeline.d.ts +40 -0
  39. package/dist/components/timeline/Timeline.d.ts.map +1 -0
  40. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  41. package/dist/desktopdatepicker.es.js +2 -2
  42. package/dist/desktopdatepicker.es.js.map +1 -1
  43. package/dist/desktoptimepicker.es.js.map +1 -1
  44. package/dist/duration.es.js +1 -1
  45. package/dist/duration.es.js.map +1 -1
  46. package/dist/gantt-chart.es.js +93 -0
  47. package/dist/gantt-chart.es.js.map +1 -0
  48. package/dist/ganttchart.es.js +337 -0
  49. package/dist/ganttchart.es.js.map +1 -0
  50. package/dist/gantttoolbar.es.js +49 -0
  51. package/dist/gantttoolbar.es.js.map +1 -0
  52. package/dist/index.d.ts +2 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.es.js +191 -187
  55. package/dist/index.es.js.map +1 -1
  56. package/dist/multiselect.es.js +121 -130
  57. package/dist/multiselect.es.js.map +1 -1
  58. package/dist/rating.es.js +47 -50
  59. package/dist/rating.es.js.map +1 -1
  60. package/dist/sidebar.es.js +1 -1
  61. package/dist/sidebar.es.js.map +1 -1
  62. package/dist/styles.css +1 -1
  63. package/dist/switch.es.js +5 -5
  64. package/dist/switch.es.js.map +1 -1
  65. package/dist/tabs.es.js +25 -26
  66. package/dist/tabs.es.js.map +1 -1
  67. package/dist/textfield.es.js +18 -18
  68. package/dist/textfield.es.js.map +1 -1
  69. package/dist/timeline.es.js +182 -0
  70. package/dist/timeline.es.js.map +1 -0
  71. package/dist/timepickercontent.es.js +39 -42
  72. package/dist/timepickercontent.es.js.map +1 -1
  73. package/dist/tooltip.es.js +15 -13
  74. package/dist/tooltip.es.js.map +1 -1
  75. package/package.json +7 -1
package/dist/rating.es.js CHANGED
@@ -1,9 +1,9 @@
1
- import { jsxs as p, jsx as m } from "react/jsx-runtime";
2
- import u from "react";
1
+ import { jsxs as g, jsx as m } from "react/jsx-runtime";
2
+ import f from "react";
3
3
  import { cn as a } from "./utils.es.js";
4
- import { tv as $ } from "tailwind-variants";
5
- import { Star as C } from "@trsys-tech/matrix-icons";
6
- const E = $({
4
+ import { tv as R } from "tailwind-variants";
5
+ import { Star as z } from "@trsys-tech/matrix-icons";
6
+ const E = R({
7
7
  base: "mtx-flex mtx-items-center mtx-gap-0",
8
8
  variants: {
9
9
  variant: {
@@ -25,77 +25,74 @@ const E = $({
25
25
  variant: "default",
26
26
  size: "md"
27
27
  }
28
- }), P = u.forwardRef((s, t) => {
28
+ }), D = f.forwardRef((o, t) => {
29
29
  const {
30
- precision: l = "full",
30
+ precision: s = "full",
31
31
  variant: r,
32
32
  size: n,
33
33
  readOnly: x = !1,
34
- onValueChange: o,
35
- value: e = 0,
34
+ onValueChange: l,
35
+ value: e,
36
+ defaultValue: p = 0,
36
37
  className: _,
37
- children: k,
38
- max: i = 5,
39
- Icon: y = C,
40
- disabled: b,
41
- ...d
42
- } = s, [v, h] = u.useState(e), [w, N] = u.useState(null), f = w ?? v;
43
- u.useEffect(() => {
44
- h(e);
45
- }, [e]);
46
- const M = (c) => {
47
- x || (h(c), o?.(c));
48
- }, S = (c) => {
49
- x || N(c);
38
+ children: d,
39
+ max: u = 5,
40
+ Icon: k = z,
41
+ disabled: y,
42
+ ...b
43
+ } = o, w = e !== void 0, [N, V] = f.useState(p), v = e !== void 0 ? e : N, [M, S] = f.useState(null), i = M ?? v, C = (c) => {
44
+ x || (w || V(c), l?.(c));
45
+ }, $ = (c) => {
46
+ x || S(c);
50
47
  };
51
- return /* @__PURE__ */ p(
48
+ return /* @__PURE__ */ g(
52
49
  "div",
53
50
  {
54
51
  className: a(E({ variant: r, size: n, className: _ })),
55
52
  role: "slider",
56
53
  "data-value": v,
57
- "aria-valuenow": f,
54
+ "aria-valuenow": i,
58
55
  "aria-valuemin": 0,
59
- "aria-valuemax": i,
60
- "aria-valuetext": `${f} out of ${i}`,
61
- ...d,
56
+ "aria-valuemax": u,
57
+ "aria-valuetext": `${i} out of ${u}`,
58
+ ...b,
62
59
  ref: t,
63
60
  children: [
64
- Array.from({ length: i }).map((c, g) => /* @__PURE__ */ m(
65
- R,
61
+ Array.from({ length: u }).map((c, h) => /* @__PURE__ */ m(
62
+ L,
66
63
  {
67
- Icon: y,
68
- index: g,
69
- displayedValue: f,
70
- onHover: S,
71
- onValueChange: M,
72
- precision: l,
64
+ Icon: k,
65
+ index: h,
66
+ displayedValue: i,
67
+ onHover: $,
68
+ onValueChange: C,
69
+ precision: s,
73
70
  readOnly: x,
74
- disabled: b
71
+ disabled: y
75
72
  },
76
- g
73
+ h
77
74
  )),
78
- k
75
+ d
79
76
  ]
80
77
  }
81
78
  );
82
- }), R = ({ Icon: s, index: t, displayedValue: l, onHover: r, onValueChange: n, precision: x, readOnly: o, disabled: e }) => x === "half" ? /* @__PURE__ */ p(
79
+ }), L = ({ Icon: o, index: t, displayedValue: s, onHover: r, onValueChange: n, precision: x, readOnly: l, disabled: e }) => x === "half" ? /* @__PURE__ */ g(
83
80
  "div",
84
81
  {
85
82
  className: a(
86
83
  "mtx-relative hover:mtx-scale-125 mtx-transition-transform mtx-px-0.5",
87
- o && "hover:mtx-scale-100",
84
+ l && "hover:mtx-scale-100",
88
85
  e && "hover:mtx-scale-100 mtx-opacity-70"
89
86
  ),
90
87
  children: [
91
- /* @__PURE__ */ m(s, { className: a("mtx-stroke-gray-500") }),
88
+ /* @__PURE__ */ m(o, { className: a("mtx-stroke-gray-500") }),
92
89
  /* @__PURE__ */ m(
93
90
  "button",
94
91
  {
95
92
  type: "button",
96
93
  className: a(
97
94
  "mtx-absolute mtx-top-0 mtx-w-[calc(50%+2px)] mtx-left-0 mtx-overflow-hidden mtx-h-full",
98
- o && "mtx-cursor-default",
95
+ l && "mtx-cursor-default",
99
96
  e && "mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70"
100
97
  ),
101
98
  onClick: () => n(t + 0.5),
@@ -104,11 +101,11 @@ const E = $({
104
101
  disabled: e,
105
102
  "aria-label": `Set rating to ${t + 0.5}`,
106
103
  children: /* @__PURE__ */ m(
107
- s,
104
+ o,
108
105
  {
109
106
  className: a(
110
107
  "mtx-stroke-none mtx-absolute mtx-left-0.5 mtx-top-0 mtx-[mask-image:linear-gradient(to_right,_black_50%,_transparent_50%)]",
111
- l >= t + 0.5 && "mtx-stroke-current mtx-fill-current"
108
+ s >= t + 0.5 && "mtx-stroke-current mtx-fill-current"
112
109
  )
113
110
  }
114
111
  )
@@ -120,7 +117,7 @@ const E = $({
120
117
  type: "button",
121
118
  className: a(
122
119
  "mtx-absolute mtx-top-0 mtx-w-[calc(50%+2px)] mtx-right-0 mtx-overflow-hidden mtx-h-full",
123
- o && "mtx-cursor-default",
120
+ l && "mtx-cursor-default",
124
121
  e && "mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70"
125
122
  ),
126
123
  onClick: () => n(t + 1),
@@ -129,11 +126,11 @@ const E = $({
129
126
  disabled: e,
130
127
  "aria-label": `Set rating to ${t + 1}`,
131
128
  children: /* @__PURE__ */ m(
132
- s,
129
+ o,
133
130
  {
134
131
  className: a(
135
132
  "mtx-stroke-none mtx-absolute mtx-right-0.5 mtx-top-0 mtx-[mask-image:linear-gradient(to_left,_black_50%,_transparent_50%)]",
136
- l >= t + 1 && "mtx-stroke-current mtx-fill-current"
133
+ s >= t + 1 && "mtx-stroke-current mtx-fill-current"
137
134
  )
138
135
  }
139
136
  )
@@ -150,15 +147,15 @@ const E = $({
150
147
  onMouseLeave: () => r(null),
151
148
  className: a(
152
149
  "hover:mtx-scale-125 mtx-px-0.5 mtx-transition-transform",
153
- o && "mtx-cursor-default hover:mtx-scale-100",
150
+ l && "mtx-cursor-default hover:mtx-scale-100",
154
151
  e && "mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70"
155
152
  ),
156
153
  disabled: e,
157
154
  "aria-label": `Set rating to ${t + 1}`,
158
- children: /* @__PURE__ */ m(s, { className: a("mtx-stroke-gray-500", l >= t + 1 && "mtx-stroke-current mtx-fill-current") })
155
+ children: /* @__PURE__ */ m(o, { className: a("mtx-stroke-gray-500", s >= t + 1 && "mtx-stroke-current mtx-fill-current") })
159
156
  }
160
157
  );
161
158
  export {
162
- P as Rating
159
+ D as Rating
163
160
  };
164
161
  //# sourceMappingURL=rating.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rating.es.js","sources":["../src/components/rating/Rating.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\nimport { Star } from \"@trsys-tech/matrix-icons\";\r\n\r\nconst ratingVariants = tv({\r\n base: \"mtx-flex mtx-items-center mtx-gap-0\",\r\n variants: {\r\n variant: {\r\n default: \"mtx-text-yellow-400\",\r\n primary: \"mtx-text-primary\",\r\n secondary: \"mtx-text-secondary\",\r\n success: \"mtx-text-success\",\r\n danger: \"mtx-text-danger\",\r\n warning: \"mtx-text-warning\",\r\n info: \"mtx-text-info\",\r\n },\r\n size: {\r\n sm: \"[&_*_svg]:mtx-h-5 [&_*_svg]:mtx-w-5\",\r\n md: \"[&_*_svg]:mtx-h-6 [&_*_svg]:mtx-w-6\",\r\n lg: \"[&_*_svg]:mtx-h-8 [&_*_svg]:mtx-w-8\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n },\r\n});\r\n\r\ninterface RatingProps extends React.HTMLAttributes<HTMLDivElement> {\r\n precision?: \"half\" | \"full\";\r\n variant?: VariantProps<typeof ratingVariants>[\"variant\"];\r\n size?: VariantProps<typeof ratingVariants>[\"size\"];\r\n readOnly?: boolean;\r\n value?: number;\r\n onValueChange?: (value: number) => void;\r\n children?: React.ReactNode;\r\n disabled?: boolean;\r\n max?: number;\r\n Icon?: React.JSXElementConstructor<React.SVGProps<SVGSVGElement>>;\r\n}\r\n\r\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>((props, ref) => {\r\n const {\r\n precision = \"full\",\r\n variant,\r\n size,\r\n readOnly = false,\r\n onValueChange,\r\n value: _value = 0,\r\n className,\r\n children,\r\n max = 5,\r\n Icon = Star,\r\n disabled,\r\n ...restProps\r\n } = props;\r\n\r\n const [value, setValue] = React.useState(_value);\r\n const [hoveredValue, setHoveredValue] = React.useState<number | null>(null);\r\n\r\n const displayedValue = hoveredValue ?? value;\r\n\r\n React.useEffect(() => {\r\n setValue(_value);\r\n }, [_value]);\r\n\r\n const handleValueChange = (newValue: number) => {\r\n if (readOnly) return;\r\n setValue(newValue);\r\n onValueChange?.(newValue);\r\n };\r\n\r\n const handleHover = (newValue: number | null) => {\r\n if (readOnly) return;\r\n setHoveredValue(newValue);\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(ratingVariants({ variant, size, className }))}\r\n role=\"slider\"\r\n data-value={value}\r\n aria-valuenow={displayedValue}\r\n aria-valuemin={0}\r\n aria-valuemax={max}\r\n aria-valuetext={`${displayedValue} out of ${max}`}\r\n {...restProps}\r\n ref={ref}\r\n >\r\n {Array.from({ length: max }).map((_, index) => (\r\n <RatingItem\r\n Icon={Icon}\r\n index={index}\r\n key={index}\r\n displayedValue={displayedValue}\r\n onHover={handleHover}\r\n onValueChange={handleValueChange}\r\n precision={precision}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n />\r\n ))}\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\ntype RatingItemProps = {\r\n Icon: React.JSXElementConstructor<React.SVGProps<SVGSVGElement>>;\r\n index: number;\r\n onHover: (value: number | null) => void;\r\n onValueChange: (value: number) => void;\r\n displayedValue: number;\r\n precision: \"half\" | \"full\";\r\n readOnly: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\nconst RatingItem = ({ Icon, index, displayedValue, onHover, onValueChange, precision, readOnly, disabled }: RatingItemProps) => {\r\n if (precision === \"half\") {\r\n return (\r\n <div\r\n className={cn(\r\n \"mtx-relative hover:mtx-scale-125 mtx-transition-transform mtx-px-0.5\",\r\n readOnly && \"hover:mtx-scale-100\",\r\n disabled && \"hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n >\r\n <Icon className={cn(\"mtx-stroke-gray-500\")} />\r\n <button\r\n type=\"button\"\r\n className={cn(\r\n \"mtx-absolute mtx-top-0 mtx-w-[calc(50%+2px)] mtx-left-0 mtx-overflow-hidden mtx-h-full\",\r\n readOnly && \"mtx-cursor-default\",\r\n disabled && \"mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n onClick={() => onValueChange(index + 0.5)}\r\n onMouseEnter={() => onHover(index + 0.5)}\r\n onMouseLeave={() => onHover(null)}\r\n disabled={disabled}\r\n aria-label={`Set rating to ${index + 0.5}`}\r\n >\r\n <Icon\r\n className={cn(\r\n \"mtx-stroke-none mtx-absolute mtx-left-0.5 mtx-top-0 mtx-[mask-image:linear-gradient(to_right,_black_50%,_transparent_50%)]\",\r\n displayedValue >= index + 0.5 && \"mtx-stroke-current mtx-fill-current\",\r\n )}\r\n />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={cn(\r\n \"mtx-absolute mtx-top-0 mtx-w-[calc(50%+2px)] mtx-right-0 mtx-overflow-hidden mtx-h-full\",\r\n readOnly && \"mtx-cursor-default\",\r\n disabled && \"mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n onClick={() => onValueChange(index + 1)}\r\n onMouseEnter={() => onHover(index + 1)}\r\n onMouseLeave={() => onHover(null)}\r\n disabled={disabled}\r\n aria-label={`Set rating to ${index + 1}`}\r\n >\r\n <Icon\r\n className={cn(\r\n \"mtx-stroke-none mtx-absolute mtx-right-0.5 mtx-top-0 mtx-[mask-image:linear-gradient(to_left,_black_50%,_transparent_50%)]\",\r\n displayedValue >= index + 1 && \"mtx-stroke-current mtx-fill-current\",\r\n )}\r\n />\r\n </button>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={() => onValueChange(index + 1)}\r\n onMouseEnter={() => onHover(index + 1)}\r\n onMouseLeave={() => onHover(null)}\r\n className={cn(\r\n \"hover:mtx-scale-125 mtx-px-0.5 mtx-transition-transform\",\r\n readOnly && \"mtx-cursor-default hover:mtx-scale-100\",\r\n disabled && \"mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n disabled={disabled}\r\n aria-label={`Set rating to ${index + 1}`}\r\n >\r\n <Icon className={cn(\"mtx-stroke-gray-500\", displayedValue >= index + 1 && \"mtx-stroke-current mtx-fill-current\")} />\r\n </button>\r\n );\r\n};\r\n\r\nexport { Rating, type RatingProps };\r\n"],"names":["ratingVariants","tv","Rating","React","props","ref","precision","variant","size","readOnly","onValueChange","_value","className","children","max","Icon","Star","disabled","restProps","value","setValue","hoveredValue","setHoveredValue","displayedValue","handleValueChange","newValue","handleHover","jsxs","cn","_","index","jsx","RatingItem","onHover"],"mappings":"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"}
1
+ {"version":3,"file":"rating.es.js","sources":["../src/components/rating/Rating.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\nimport { Star } from \"@trsys-tech/matrix-icons\";\r\n\r\nconst ratingVariants = tv({\r\n base: \"mtx-flex mtx-items-center mtx-gap-0\",\r\n variants: {\r\n variant: {\r\n default: \"mtx-text-yellow-400\",\r\n primary: \"mtx-text-primary\",\r\n secondary: \"mtx-text-secondary\",\r\n success: \"mtx-text-success\",\r\n danger: \"mtx-text-danger\",\r\n warning: \"mtx-text-warning\",\r\n info: \"mtx-text-info\",\r\n },\r\n size: {\r\n sm: \"[&_*_svg]:mtx-h-5 [&_*_svg]:mtx-w-5\",\r\n md: \"[&_*_svg]:mtx-h-6 [&_*_svg]:mtx-w-6\",\r\n lg: \"[&_*_svg]:mtx-h-8 [&_*_svg]:mtx-w-8\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n },\r\n});\r\n\r\ninterface RatingProps extends React.HTMLAttributes<HTMLDivElement> {\r\n precision?: \"half\" | \"full\";\r\n variant?: VariantProps<typeof ratingVariants>[\"variant\"];\r\n size?: VariantProps<typeof ratingVariants>[\"size\"];\r\n readOnly?: boolean;\r\n value?: number;\r\n defaultValue?: number;\r\n onValueChange?: (value: number) => void;\r\n children?: React.ReactNode;\r\n disabled?: boolean;\r\n max?: number;\r\n Icon?: React.JSXElementConstructor<React.SVGProps<SVGSVGElement>>;\r\n}\r\n\r\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>((props, ref) => {\r\n const {\r\n precision = \"full\",\r\n variant,\r\n size,\r\n readOnly = false,\r\n onValueChange,\r\n value: controlledValue,\r\n defaultValue = 0,\r\n className,\r\n children,\r\n max = 5,\r\n Icon = Star,\r\n disabled,\r\n ...restProps\r\n } = props;\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const [internalValue, setInternalValue] = React.useState(defaultValue);\r\n const value = controlledValue !== undefined ? controlledValue : internalValue;\r\n const [hoveredValue, setHoveredValue] = React.useState<number | null>(null);\r\n\r\n const displayedValue = hoveredValue ?? value;\r\n\r\n const handleValueChange = (newValue: number) => {\r\n if (readOnly) return;\r\n if (!isControlled) {\r\n setInternalValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n };\r\n\r\n const handleHover = (newValue: number | null) => {\r\n if (readOnly) return;\r\n setHoveredValue(newValue);\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(ratingVariants({ variant, size, className }))}\r\n role=\"slider\"\r\n data-value={value}\r\n aria-valuenow={displayedValue}\r\n aria-valuemin={0}\r\n aria-valuemax={max}\r\n aria-valuetext={`${displayedValue} out of ${max}`}\r\n {...restProps}\r\n ref={ref}\r\n >\r\n {Array.from({ length: max }).map((_, index) => (\r\n <RatingItem\r\n Icon={Icon}\r\n index={index}\r\n key={index}\r\n displayedValue={displayedValue}\r\n onHover={handleHover}\r\n onValueChange={handleValueChange}\r\n precision={precision}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n />\r\n ))}\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\ntype RatingItemProps = {\r\n Icon: React.JSXElementConstructor<React.SVGProps<SVGSVGElement>>;\r\n index: number;\r\n onHover: (value: number | null) => void;\r\n onValueChange: (value: number) => void;\r\n displayedValue: number;\r\n precision: \"half\" | \"full\";\r\n readOnly: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\nconst RatingItem = ({ Icon, index, displayedValue, onHover, onValueChange, precision, readOnly, disabled }: RatingItemProps) => {\r\n if (precision === \"half\") {\r\n return (\r\n <div\r\n className={cn(\r\n \"mtx-relative hover:mtx-scale-125 mtx-transition-transform mtx-px-0.5\",\r\n readOnly && \"hover:mtx-scale-100\",\r\n disabled && \"hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n >\r\n <Icon className={cn(\"mtx-stroke-gray-500\")} />\r\n <button\r\n type=\"button\"\r\n className={cn(\r\n \"mtx-absolute mtx-top-0 mtx-w-[calc(50%+2px)] mtx-left-0 mtx-overflow-hidden mtx-h-full\",\r\n readOnly && \"mtx-cursor-default\",\r\n disabled && \"mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n onClick={() => onValueChange(index + 0.5)}\r\n onMouseEnter={() => onHover(index + 0.5)}\r\n onMouseLeave={() => onHover(null)}\r\n disabled={disabled}\r\n aria-label={`Set rating to ${index + 0.5}`}\r\n >\r\n <Icon\r\n className={cn(\r\n \"mtx-stroke-none mtx-absolute mtx-left-0.5 mtx-top-0 mtx-[mask-image:linear-gradient(to_right,_black_50%,_transparent_50%)]\",\r\n displayedValue >= index + 0.5 && \"mtx-stroke-current mtx-fill-current\",\r\n )}\r\n />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={cn(\r\n \"mtx-absolute mtx-top-0 mtx-w-[calc(50%+2px)] mtx-right-0 mtx-overflow-hidden mtx-h-full\",\r\n readOnly && \"mtx-cursor-default\",\r\n disabled && \"mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n onClick={() => onValueChange(index + 1)}\r\n onMouseEnter={() => onHover(index + 1)}\r\n onMouseLeave={() => onHover(null)}\r\n disabled={disabled}\r\n aria-label={`Set rating to ${index + 1}`}\r\n >\r\n <Icon\r\n className={cn(\r\n \"mtx-stroke-none mtx-absolute mtx-right-0.5 mtx-top-0 mtx-[mask-image:linear-gradient(to_left,_black_50%,_transparent_50%)]\",\r\n displayedValue >= index + 1 && \"mtx-stroke-current mtx-fill-current\",\r\n )}\r\n />\r\n </button>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={() => onValueChange(index + 1)}\r\n onMouseEnter={() => onHover(index + 1)}\r\n onMouseLeave={() => onHover(null)}\r\n className={cn(\r\n \"hover:mtx-scale-125 mtx-px-0.5 mtx-transition-transform\",\r\n readOnly && \"mtx-cursor-default hover:mtx-scale-100\",\r\n disabled && \"mtx-cursor-default hover:mtx-scale-100 mtx-opacity-70\",\r\n )}\r\n disabled={disabled}\r\n aria-label={`Set rating to ${index + 1}`}\r\n >\r\n <Icon className={cn(\"mtx-stroke-gray-500\", displayedValue >= index + 1 && \"mtx-stroke-current mtx-fill-current\")} />\r\n </button>\r\n );\r\n};\r\n\r\nexport { Rating, type RatingProps };\r\n"],"names":["ratingVariants","tv","Rating","React","props","ref","precision","variant","size","readOnly","onValueChange","controlledValue","defaultValue","className","children","max","Icon","Star","disabled","restProps","isControlled","internalValue","setInternalValue","value","hoveredValue","setHoveredValue","displayedValue","handleValueChange","newValue","handleHover","jsxs","cn","_","index","jsx","RatingItem","onHover"],"mappings":"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"}
@@ -76,7 +76,7 @@ const q = i.forwardRef(({ side: t = "left", variant: e = "sidebar", collapsible:
76
76
  ...f,
77
77
  children: o
78
78
  }
79
- ) : l ? /* @__PURE__ */ r(G, { open: h, onOpenChange: S, ...f, children: /* @__PURE__ */ v(
79
+ ) : l || e === "sheet" ? /* @__PURE__ */ r(G, { open: h, onOpenChange: S, ...f, children: /* @__PURE__ */ v(
80
80
  H,
81
81
  {
82
82
  "data-sidebar": "sidebar",
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.es.js","sources":["../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, tv } from \"tailwind-variants\";\r\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Skeleton } from \"../skeleton/Skeleton\";\r\nimport { Separator } from \"../separator/Separator\";\r\nimport { useIsMobile } from \"../../lib/hooks/use-mobile\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip/Tooltip\";\r\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"4rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContext = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\r\n const isMobile = useIsMobile();\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return setOpen(open => !open);\r\n }, [setOpen]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContext>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={{ ...style } as React.CSSProperties}\r\n className={cn(\"mtx-group/sidebar-wrapper mtx-flex mtx-h-full mtx-w-full has-[[data-variant=inset]]:mtx-bg-gray-50\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\ntype SidebarProviderProps = React.ComponentProps<typeof SidebarProvider>;\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n width?: string;\r\n widthIcon?: string;\r\n widthMobile?: string;\r\n }\r\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, width, widthIcon, widthMobile, style, ...props }, ref) => {\r\n const { isMobile, state, open, setOpen } = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\r\n \"mtx-flex mtx-h-full data-[side=left]:mtx-w-[--sidebar-left-width] data-[side=right]:mtx-w-[--sidebar-right-width] mtx-flex-col mtx-bg-gray-50\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet open={open} onOpenChange={setOpen} {...props}>\r\n <SheetContent\r\n data-sidebar=\"sidebar\"\r\n data-mobile=\"true\"\r\n data-side={side}\r\n className=\"data-[side=left]:mtx-w-[--sidebar-left-width] data-[side=right]:mtx-w-[--sidebar-right-width] mtx-bg-gray-50 mtx-p-0 [&>button]:mtx-hidden\"\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }\r\n : {\r\n \"--sidebar-right-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }),\r\n } as React.CSSProperties\r\n }\r\n side={side}\r\n >\r\n <VisuallyHidden>\r\n <SheetHeader>\r\n <SheetTitle> </SheetTitle>\r\n <SheetDescription> </SheetDescription>\r\n </SheetHeader>\r\n </VisuallyHidden>\r\n <div className=\"mtx-flex mtx-h-full mtx-w-full mtx-flex-col\">{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"mtx-group mtx-peer mtx-hidden md:mtx-block mtx-relative\"\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n >\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"mtx-duration-200 mtx-relative mtx-h-full group-data-[side=left]:mtx-w-[--sidebar-left-width] group-data-[side=right]:mtx-w-[--sidebar-right-width] mtx-bg-transparent mtx-transition-[width] mtx-ease-linear\",\r\n \"group-data-[side=left]:group-data-[collapsible=offcanvas]:mtx-w-0 group-data-[side=right]:group-data-[collapsible=offcanvas]:mtx-w-0\",\r\n \"group-data-[side=right]:mtx-rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4))] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[--sidebar-right-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"mtx-duration-200 mtx-absolute mtx-inset-y-0 mtx-z-10 mtx-hidden mtx-h-full group-data-[side=left]:mtx-w-[--sidebar-left-width] group-data-[side=right]:mtx-w-[--sidebar-right-width] mtx-transition-[left,right,width] mtx-ease-linear md:mtx-flex\",\r\n side === \"left\"\r\n ? \"mtx-left-0 group-data-[collapsible=offcanvas]:mtx-left-[calc(var(--sidebar-left-width)*-1)]\"\r\n : \"mtx-right-0 group-data-[collapsible=offcanvas]:mtx-right-[calc(var(--sidebar-right-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"mtx-p-2 group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[--sidebar-right-width-icon] group-data-[side=left]:mtx-border-r group-data-[side=right]:mtx-border-l\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div\r\n data-sidebar=\"sidebar\"\r\n className=\"mtx-flex mtx-h-full mtx-w-full mtx-flex-col mtx-bg-gray-50 group-data-[variant=floating]:mtx-rounded-lg group-data-[variant=floating]:mtx-border group-data-[variant=floating]:mtx-shadow\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\ntype SidebarProps = React.ComponentProps<typeof Sidebar>;\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<\"button\">, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, onClick, asChild, ...props }, ref) => {\r\n const { toggleSidebar, state } = useSidebar();\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-state={state}\r\n data-sidebar=\"trigger\"\r\n className={cn(\"mtx-h-7 mtx-w-7\", className)}\r\n onClick={event => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\ntype SidebarTriggerProps = React.ComponentProps<typeof SidebarTrigger>;\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({ className, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-sidebar=\"rail\"\r\n aria-label=\"Toggle Sidebar\"\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title=\"Toggle Sidebar\"\r\n className={cn(\r\n \"mtx-absolute mtx-inset-y-0 mtx-z-20 mtx-hidden mtx-w-4 -mtx-translate-x-1/2 mtx-transition-all mtx-ease-linear after:mtx-absolute after:mtx-inset-y-0 after:mtx-left-1/2 after:mtx-w-[2px] hover:after:mtx-bg-gray-50-border group-data-[side=left]:-mtx-right-4 group-data-[side=right]:mtx-left-0 sm:mtx-flex\",\r\n \"[[data-side=left]_&]:mtx-cursor-w-resize [[data-side=right]_&]:mtx-cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:mtx-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:mtx-cursor-w-resize\",\r\n \"group-data-[collapsible=offcanvas]:mtx-translate-x-0 group-data-[collapsible=offcanvas]:after:mtx-left-full group-data-[collapsible=offcanvas]:hover:mtx-bg-gray-50\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-mtx-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-mtx-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarRail.displayName = \"SidebarRail\";\r\ntype SidebarRailProps = React.ComponentProps<typeof SidebarRail>;\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"mtx-relative mtx-flex mtx-h-full mtx-flex-1 mtx-flex-col mtx-bg-background\",\r\n \"peer-data-[variant=inset]:mtx-min-h-[calc(100%-theme(spacing.4))] md:peer-data-[variant=inset]:mtx-m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:mtx-ml-2 md:peer-data-[variant=inset]:mtx-ml-0 md:peer-data-[variant=inset]:mtx-rounded-xl md:peer-data-[variant=inset]:mtx-shadow\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\ntype SidebarInsetProps = React.ComponentProps<typeof SidebarInset>;\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"mtx-flex mtx-flex-col mtx-gap-2 mtx-p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\ntype SidebarHeaderProps = React.ComponentProps<typeof SidebarHeader>;\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"mtx-flex mtx-flex-col mtx-gap-2 mtx-p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\ntype SidebarFooterProps = React.ComponentProps<typeof SidebarFooter>;\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({ className, ...props }, ref) => {\r\n return <Separator ref={ref} data-sidebar=\"separator\" className={cn(\"mtx-mx-2 mtx-w-auto mtx-bg-gray-50-border\", className)} {...props} />;\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\ntype SidebarSeparatorProps = React.ComponentProps<typeof SidebarSeparator>;\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"content\"\r\n className={cn(\r\n \"mtx-flex mtx-min-h-0 mtx-flex-1 mtx-flex-col mtx-gap-2 mtx-overflow-auto group-data-[collapsible=icon]:mtx-overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\ntype SidebarContentProps = React.ComponentProps<typeof SidebarContent>;\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-sidebar=\"group\" className={cn(\"mtx-relative mtx-flex mtx-w-full mtx-min-w-0 mtx-flex-col mtx-py-2\", className)} {...props} />\r\n );\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\ntype SidebarGroupProps = React.ComponentProps<typeof SidebarGroup>;\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-label\"\r\n className={cn(\r\n \"mtx-duration-200 mtx-flex mtx-h-8 mtx-shrink-0 mtx-items-center mtx-rounded-md mtx-px-2 mtx-text-xs mtx-font-medium mtx-outline-none mtx-transition-[margin,opacity] mtx-ease-linear focus-visible:mtx-ring-2 [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n \"group-data-[collapsible=icon]:-mtx-mt-8 group-data-[collapsible=icon]:mtx-opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\ntype SidebarGroupLabelProps = React.ComponentProps<typeof SidebarGroupLabel>;\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-action\"\r\n className={cn(\r\n \"mtx-absolute mtx-right-3 mtx-top-3.5 mtx-flex mtx-aspect-square mtx-w-5 mtx-items-center mtx-justify-center mtx-rounded-md mtx-p-0 mtx-outline-none mtx-transition-transform hover:mtx-bg-gray-50-accent focus-visible:mtx-ring-2 [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:mtx-absolute after:-mtx-inset-2 after:md:mtx-hidden\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\ntype SidebarGroupActionProps = React.ComponentProps<typeof SidebarGroupAction>;\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div ref={ref} data-sidebar=\"group-content\" className={cn(\"mtx-w-full mtx-text-sm\", className)} {...props} />\r\n));\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\ntype SidebarGroupContentProps = React.ComponentProps<typeof SidebarGroupContent>;\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul ref={ref} data-sidebar=\"menu\" className={cn(\"mtx-flex mtx-w-full mtx-min-w-0 mtx-flex-col mtx-gap-4\", className)} {...props} />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\ntype SidebarMenuProps = React.ComponentProps<typeof SidebarMenu>;\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"mtx-group/menu-item mtx-relative mtx-ps-2\", className)} {...props} />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\ntype SidebarMenuItemProps = React.ComponentProps<typeof SidebarMenuItem>;\r\n\r\nconst sidebarMenuButtonVariants = tv({\r\n base: [\r\n \"mtx-peer/menu-button mtx-flex mtx-w-full mtx-items-center mtx-gap-2 mtx-overflow-hidden mtx-rounded-s-md mtx-rounded-e-none mtx-p-2 mtx-text-left mtx-text-sm mtx-text-text-400 mtx-font-medium mtx-outline-none mtx-transition-[width,height,padding] hover:mtx-bg-gray-50 disabled:mtx-pointer-events-none disabled:mtx-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:mtx-pr-8 aria-disabled:mtx-pointer-events-none aria-disabled:mtx-opacity-50\",\r\n \"data-[active=true]:mtx-bg-primary data-[active=true]:mtx-text-gray-0 data-[active=true]:mtx-font-bold group-data-[collapsible=icon]:mtx-size-10 group-data-[collapsible=icon]:mtx-w-14 group-data-[collapsible=icon]:mtx-p-2 group-data-[collapsible=icon]:mtx-pl-4 [&>span:last-child]:mtx-truncate\",\r\n \"[&>svg]:mtx-size-6 [&>svg]:mtx-shrink-0 [&>svg]:data-[active=true]:mtx-text-secondary group-data-[collapsible=icon]:[&>svg]:mtx-me-2\",\r\n \"data-[active=true]:before:mtx-[content:''] data-[active=true]:before:mtx-absolute data-[active=true]:before:mtx-start-0 data-[active=true]:before:mtx-h-10 data-[active=true]:before:mtx-w-1 data-[active=true]:before:mtx-bg-secondary data-[active=true]:before:mtx-rounded-e-md\",\r\n \"mtx-overflow-ellipsis mtx-whitespace-nowrap\",\r\n ].join(\" \"),\r\n variants: {\r\n variant: {\r\n default: \"hover:mtx-bg-gray-50\",\r\n outline: \"mtx-bg-background mtx-shadow-[oklch(var(--gray--300))] hover:mtx-bg-gray-50 hover:mtx-shadow-[oklch(var(--gray-400))]\",\r\n },\r\n size: {\r\n default: \"mtx-h-10 mtx-text-sm\",\r\n sm: \"mtx-h-7 mtx-text-xs\",\r\n lg: \"mtx-h-12 mtx-text-sm group-data-[collapsible=icon]:mtx-!p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n});\r\n\r\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n } & VariantProps<typeof sidebarMenuButtonVariants>\r\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const { isMobile, state } = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\ntype SidebarMenuButtonProps = React.ComponentProps<typeof SidebarMenuButton>;\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-action\"\r\n className={cn(\r\n \"mtx-absolute mtx-right-1 mtx-top-1.5 mtx-flex mtx-aspect-square mtx-w-5 mtx-items-center mtx-justify-center mtx-rounded-md mtx-p-0 mtx-outline-none mtx-transition-transform hover:mtx-bg-gray-50-accent focus-visible:mtx-ring-2 [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:mtx-absolute after:-mtx-inset-2 after:md:mtx-hidden\",\r\n \"peer-data-[size=sm]/menu-button:mtx-top-1\",\r\n \"peer-data-[size=default]/menu-button:mtx-top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:mtx-top-2.5\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n showOnHover &&\r\n \"group-focus-within/menu-item:mtx-opacity-100 group-hover/menu-item:mtx-opacity-100 data-[state=open]:mtx-opacity-100 md:mtx-opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\ntype SidebarMenuActionProps = React.ComponentProps<typeof SidebarMenuAction>;\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-badge\"\r\n className={cn(\r\n \"mtx-absolute mtx-right-1 mtx-flex mtx-h-5 mtx-min-w-5 mtx-items-center mtx-justify-center mtx-rounded-md mtx-px-1 mtx-text-xs mtx-font-medium mtx-tabular-nums mtx-select-none mtx-pointer-events-none\",\r\n \"peer-data-[size=sm]/menu-button:mtx-top-1\",\r\n \"peer-data-[size=default]/menu-button:mtx-top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:mtx-top-2.5\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\ntype SidebarMenuBadgeProps = React.ComponentProps<typeof SidebarMenuBadge>;\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({ className, showIcon = false, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-skeleton\"\r\n className={cn(\"mtx-rounded-md mtx-h-8 mtx-flex mtx-gap-2 mtx-px-2 mtx-items-center\", className)}\r\n {...props}\r\n >\r\n {showIcon && <Skeleton className=\"mtx-size-4 mtx-rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <Skeleton\r\n className=\"mtx-h-4 mtx-flex-1 mtx-max-w-[--skeleton-width]\"\r\n data-sidebar=\"menu-skeleton-text\"\r\n style={\r\n {\r\n \"--skeleton-width\": \"70%\",\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\ntype SidebarMenuSkeletonProps = React.ComponentProps<typeof SidebarMenuSkeleton>;\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar=\"menu-sub\"\r\n className={cn(\"mtx-flex mtx-min-w-0 mtx-translate-x-px mtx-flex-col mtx-gap-1\", \"group-data-[collapsible=icon]:mtx-hidden\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\ntype SidebarMenuSubProps = React.ComponentProps<typeof SidebarMenuSub>;\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ ...props }, ref) => <li ref={ref} {...props} />);\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\ntype SidebarMenuSubItemProps = React.ComponentProps<typeof SidebarMenuSubItem>;\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-sub-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"mtx-flex mtx-h-10 mtx-min-w-0 -mtx-translate-x-px mtx-items-center mtx-gap-2 mtx-overflow-hidden mtx-rounded-s-md mtx-ps-10 mtx-text-sm mtx-text-text-400 mtx-font-medium mtx-outline-none hover:mtx-bg-gray-50 disabled:mtx-pointer-events-none disabled:mtx-opacity-50 aria-disabled:mtx-pointer-events-none aria-disabled:mtx-opacity-50 [&>span:last-child]:mtx-truncate [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n \"data-[active=true]:mtx-bg-gray-100 data-[active=true]:mtx-text-text\",\r\n size === \"sm\" && \"mtx-text-xs\",\r\n size === \"md\" && \"mtx-text-sm\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\ntype SidebarMenuSubButtonProps = React.ComponentProps<typeof SidebarMenuSubButton>;\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n type SidebarProps,\r\n type SidebarContentProps,\r\n type SidebarFooterProps,\r\n type SidebarGroupProps,\r\n type SidebarGroupActionProps,\r\n type SidebarGroupContentProps,\r\n type SidebarGroupLabelProps,\r\n type SidebarHeaderProps,\r\n type SidebarInsetProps,\r\n type SidebarMenuProps,\r\n type SidebarMenuActionProps,\r\n type SidebarMenuBadgeProps,\r\n type SidebarMenuButtonProps,\r\n type SidebarMenuItemProps,\r\n type SidebarMenuSkeletonProps,\r\n type SidebarMenuSubProps,\r\n type SidebarMenuSubButtonProps,\r\n type SidebarMenuSubItemProps,\r\n type SidebarProviderProps,\r\n type SidebarRailProps,\r\n type SidebarSeparatorProps,\r\n type SidebarTriggerProps,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","width","widthIcon","widthMobile","Sheet","jsxs","SheetContent","VisuallyHidden","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","asChild","Slot","SidebarRail","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.es.js","sources":["../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, tv } from \"tailwind-variants\";\r\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Skeleton } from \"../skeleton/Skeleton\";\r\nimport { Separator } from \"../separator/Separator\";\r\nimport { useIsMobile } from \"../../lib/hooks/use-mobile\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip/Tooltip\";\r\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"4rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContext = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\r\n const isMobile = useIsMobile();\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return setOpen(open => !open);\r\n }, [setOpen]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContext>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={{ ...style } as React.CSSProperties}\r\n className={cn(\"mtx-group/sidebar-wrapper mtx-flex mtx-h-full mtx-w-full has-[[data-variant=inset]]:mtx-bg-gray-50\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\ntype SidebarProviderProps = React.ComponentProps<typeof SidebarProvider>;\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\" | \"sheet\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n width?: string;\r\n widthIcon?: string;\r\n widthMobile?: string;\r\n }\r\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, width, widthIcon, widthMobile, style, ...props }, ref) => {\r\n const { isMobile, state, open, setOpen } = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\r\n \"mtx-flex mtx-h-full data-[side=left]:mtx-w-[--sidebar-left-width] data-[side=right]:mtx-w-[--sidebar-right-width] mtx-flex-col mtx-bg-gray-50\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile || variant === \"sheet\") {\r\n return (\r\n <Sheet open={open} onOpenChange={setOpen} {...props}>\r\n <SheetContent\r\n data-sidebar=\"sidebar\"\r\n data-mobile=\"true\"\r\n data-side={side}\r\n className=\"data-[side=left]:mtx-w-[--sidebar-left-width] data-[side=right]:mtx-w-[--sidebar-right-width] mtx-bg-gray-50 mtx-p-0 [&>button]:mtx-hidden\"\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }\r\n : {\r\n \"--sidebar-right-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }),\r\n } as React.CSSProperties\r\n }\r\n side={side}\r\n >\r\n <VisuallyHidden>\r\n <SheetHeader>\r\n <SheetTitle> </SheetTitle>\r\n <SheetDescription> </SheetDescription>\r\n </SheetHeader>\r\n </VisuallyHidden>\r\n <div className=\"mtx-flex mtx-h-full mtx-w-full mtx-flex-col\">{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"mtx-group mtx-peer mtx-hidden md:mtx-block mtx-relative\"\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n >\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"mtx-duration-200 mtx-relative mtx-h-full group-data-[side=left]:mtx-w-[--sidebar-left-width] group-data-[side=right]:mtx-w-[--sidebar-right-width] mtx-bg-transparent mtx-transition-[width] mtx-ease-linear\",\r\n \"group-data-[side=left]:group-data-[collapsible=offcanvas]:mtx-w-0 group-data-[side=right]:group-data-[collapsible=offcanvas]:mtx-w-0\",\r\n \"group-data-[side=right]:mtx-rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4))] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[--sidebar-right-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"mtx-duration-200 mtx-absolute mtx-inset-y-0 mtx-z-10 mtx-hidden mtx-h-full group-data-[side=left]:mtx-w-[--sidebar-left-width] group-data-[side=right]:mtx-w-[--sidebar-right-width] mtx-transition-[left,right,width] mtx-ease-linear md:mtx-flex\",\r\n side === \"left\"\r\n ? \"mtx-left-0 group-data-[collapsible=offcanvas]:mtx-left-[calc(var(--sidebar-left-width)*-1)]\"\r\n : \"mtx-right-0 group-data-[collapsible=offcanvas]:mtx-right-[calc(var(--sidebar-right-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"mtx-p-2 group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:mtx-w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:mtx-w-[--sidebar-right-width-icon] group-data-[side=left]:mtx-border-r group-data-[side=right]:mtx-border-l\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div\r\n data-sidebar=\"sidebar\"\r\n className=\"mtx-flex mtx-h-full mtx-w-full mtx-flex-col mtx-bg-gray-50 group-data-[variant=floating]:mtx-rounded-lg group-data-[variant=floating]:mtx-border group-data-[variant=floating]:mtx-shadow\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\ntype SidebarProps = React.ComponentProps<typeof Sidebar>;\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<\"button\">, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, onClick, asChild, ...props }, ref) => {\r\n const { toggleSidebar, state } = useSidebar();\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-state={state}\r\n data-sidebar=\"trigger\"\r\n className={cn(\"mtx-h-7 mtx-w-7\", className)}\r\n onClick={event => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\ntype SidebarTriggerProps = React.ComponentProps<typeof SidebarTrigger>;\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({ className, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-sidebar=\"rail\"\r\n aria-label=\"Toggle Sidebar\"\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title=\"Toggle Sidebar\"\r\n className={cn(\r\n \"mtx-absolute mtx-inset-y-0 mtx-z-20 mtx-hidden mtx-w-4 -mtx-translate-x-1/2 mtx-transition-all mtx-ease-linear after:mtx-absolute after:mtx-inset-y-0 after:mtx-left-1/2 after:mtx-w-[2px] hover:after:mtx-bg-gray-50-border group-data-[side=left]:-mtx-right-4 group-data-[side=right]:mtx-left-0 sm:mtx-flex\",\r\n \"[[data-side=left]_&]:mtx-cursor-w-resize [[data-side=right]_&]:mtx-cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:mtx-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:mtx-cursor-w-resize\",\r\n \"group-data-[collapsible=offcanvas]:mtx-translate-x-0 group-data-[collapsible=offcanvas]:after:mtx-left-full group-data-[collapsible=offcanvas]:hover:mtx-bg-gray-50\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-mtx-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-mtx-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarRail.displayName = \"SidebarRail\";\r\ntype SidebarRailProps = React.ComponentProps<typeof SidebarRail>;\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"mtx-relative mtx-flex mtx-h-full mtx-flex-1 mtx-flex-col mtx-bg-background\",\r\n \"peer-data-[variant=inset]:mtx-min-h-[calc(100%-theme(spacing.4))] md:peer-data-[variant=inset]:mtx-m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:mtx-ml-2 md:peer-data-[variant=inset]:mtx-ml-0 md:peer-data-[variant=inset]:mtx-rounded-xl md:peer-data-[variant=inset]:mtx-shadow\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\ntype SidebarInsetProps = React.ComponentProps<typeof SidebarInset>;\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"mtx-flex mtx-flex-col mtx-gap-2 mtx-p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\ntype SidebarHeaderProps = React.ComponentProps<typeof SidebarHeader>;\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"mtx-flex mtx-flex-col mtx-gap-2 mtx-p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\ntype SidebarFooterProps = React.ComponentProps<typeof SidebarFooter>;\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({ className, ...props }, ref) => {\r\n return <Separator ref={ref} data-sidebar=\"separator\" className={cn(\"mtx-mx-2 mtx-w-auto mtx-bg-gray-50-border\", className)} {...props} />;\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\ntype SidebarSeparatorProps = React.ComponentProps<typeof SidebarSeparator>;\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"content\"\r\n className={cn(\r\n \"mtx-flex mtx-min-h-0 mtx-flex-1 mtx-flex-col mtx-gap-2 mtx-overflow-auto group-data-[collapsible=icon]:mtx-overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\ntype SidebarContentProps = React.ComponentProps<typeof SidebarContent>;\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div ref={ref} data-sidebar=\"group\" className={cn(\"mtx-relative mtx-flex mtx-w-full mtx-min-w-0 mtx-flex-col mtx-py-2\", className)} {...props} />\r\n );\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\ntype SidebarGroupProps = React.ComponentProps<typeof SidebarGroup>;\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-label\"\r\n className={cn(\r\n \"mtx-duration-200 mtx-flex mtx-h-8 mtx-shrink-0 mtx-items-center mtx-rounded-md mtx-px-2 mtx-text-xs mtx-font-medium mtx-outline-none mtx-transition-[margin,opacity] mtx-ease-linear focus-visible:mtx-ring-2 [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n \"group-data-[collapsible=icon]:-mtx-mt-8 group-data-[collapsible=icon]:mtx-opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\ntype SidebarGroupLabelProps = React.ComponentProps<typeof SidebarGroupLabel>;\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-action\"\r\n className={cn(\r\n \"mtx-absolute mtx-right-3 mtx-top-3.5 mtx-flex mtx-aspect-square mtx-w-5 mtx-items-center mtx-justify-center mtx-rounded-md mtx-p-0 mtx-outline-none mtx-transition-transform hover:mtx-bg-gray-50-accent focus-visible:mtx-ring-2 [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:mtx-absolute after:-mtx-inset-2 after:md:mtx-hidden\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\ntype SidebarGroupActionProps = React.ComponentProps<typeof SidebarGroupAction>;\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div ref={ref} data-sidebar=\"group-content\" className={cn(\"mtx-w-full mtx-text-sm\", className)} {...props} />\r\n));\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\ntype SidebarGroupContentProps = React.ComponentProps<typeof SidebarGroupContent>;\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul ref={ref} data-sidebar=\"menu\" className={cn(\"mtx-flex mtx-w-full mtx-min-w-0 mtx-flex-col mtx-gap-4\", className)} {...props} />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\ntype SidebarMenuProps = React.ComponentProps<typeof SidebarMenu>;\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"mtx-group/menu-item mtx-relative mtx-ps-2\", className)} {...props} />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\ntype SidebarMenuItemProps = React.ComponentProps<typeof SidebarMenuItem>;\r\n\r\nconst sidebarMenuButtonVariants = tv({\r\n base: [\r\n \"mtx-peer/menu-button mtx-flex mtx-w-full mtx-items-center mtx-gap-2 mtx-overflow-hidden mtx-rounded-s-md mtx-rounded-e-none mtx-p-2 mtx-text-left mtx-text-sm mtx-text-text-400 mtx-font-medium mtx-outline-none mtx-transition-[width,height,padding] hover:mtx-bg-gray-50 disabled:mtx-pointer-events-none disabled:mtx-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:mtx-pr-8 aria-disabled:mtx-pointer-events-none aria-disabled:mtx-opacity-50\",\r\n \"data-[active=true]:mtx-bg-primary data-[active=true]:mtx-text-gray-0 data-[active=true]:mtx-font-bold group-data-[collapsible=icon]:mtx-size-10 group-data-[collapsible=icon]:mtx-w-14 group-data-[collapsible=icon]:mtx-p-2 group-data-[collapsible=icon]:mtx-pl-4 [&>span:last-child]:mtx-truncate\",\r\n \"[&>svg]:mtx-size-6 [&>svg]:mtx-shrink-0 [&>svg]:data-[active=true]:mtx-text-secondary group-data-[collapsible=icon]:[&>svg]:mtx-me-2\",\r\n \"data-[active=true]:before:mtx-[content:''] data-[active=true]:before:mtx-absolute data-[active=true]:before:mtx-start-0 data-[active=true]:before:mtx-h-10 data-[active=true]:before:mtx-w-1 data-[active=true]:before:mtx-bg-secondary data-[active=true]:before:mtx-rounded-e-md\",\r\n \"mtx-overflow-ellipsis mtx-whitespace-nowrap\",\r\n ].join(\" \"),\r\n variants: {\r\n variant: {\r\n default: \"hover:mtx-bg-gray-50\",\r\n outline: \"mtx-bg-background mtx-shadow-[oklch(var(--gray--300))] hover:mtx-bg-gray-50 hover:mtx-shadow-[oklch(var(--gray-400))]\",\r\n },\r\n size: {\r\n default: \"mtx-h-10 mtx-text-sm\",\r\n sm: \"mtx-h-7 mtx-text-xs\",\r\n lg: \"mtx-h-12 mtx-text-sm group-data-[collapsible=icon]:mtx-!p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n});\r\n\r\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n } & VariantProps<typeof sidebarMenuButtonVariants>\r\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const { isMobile, state } = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\ntype SidebarMenuButtonProps = React.ComponentProps<typeof SidebarMenuButton>;\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-action\"\r\n className={cn(\r\n \"mtx-absolute mtx-right-1 mtx-top-1.5 mtx-flex mtx-aspect-square mtx-w-5 mtx-items-center mtx-justify-center mtx-rounded-md mtx-p-0 mtx-outline-none mtx-transition-transform hover:mtx-bg-gray-50-accent focus-visible:mtx-ring-2 [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:mtx-absolute after:-mtx-inset-2 after:md:mtx-hidden\",\r\n \"peer-data-[size=sm]/menu-button:mtx-top-1\",\r\n \"peer-data-[size=default]/menu-button:mtx-top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:mtx-top-2.5\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n showOnHover &&\r\n \"group-focus-within/menu-item:mtx-opacity-100 group-hover/menu-item:mtx-opacity-100 data-[state=open]:mtx-opacity-100 md:mtx-opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\ntype SidebarMenuActionProps = React.ComponentProps<typeof SidebarMenuAction>;\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-badge\"\r\n className={cn(\r\n \"mtx-absolute mtx-right-1 mtx-flex mtx-h-5 mtx-min-w-5 mtx-items-center mtx-justify-center mtx-rounded-md mtx-px-1 mtx-text-xs mtx-font-medium mtx-tabular-nums mtx-select-none mtx-pointer-events-none\",\r\n \"peer-data-[size=sm]/menu-button:mtx-top-1\",\r\n \"peer-data-[size=default]/menu-button:mtx-top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:mtx-top-2.5\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\ntype SidebarMenuBadgeProps = React.ComponentProps<typeof SidebarMenuBadge>;\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({ className, showIcon = false, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-skeleton\"\r\n className={cn(\"mtx-rounded-md mtx-h-8 mtx-flex mtx-gap-2 mtx-px-2 mtx-items-center\", className)}\r\n {...props}\r\n >\r\n {showIcon && <Skeleton className=\"mtx-size-4 mtx-rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <Skeleton\r\n className=\"mtx-h-4 mtx-flex-1 mtx-max-w-[--skeleton-width]\"\r\n data-sidebar=\"menu-skeleton-text\"\r\n style={\r\n {\r\n \"--skeleton-width\": \"70%\",\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\ntype SidebarMenuSkeletonProps = React.ComponentProps<typeof SidebarMenuSkeleton>;\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar=\"menu-sub\"\r\n className={cn(\"mtx-flex mtx-min-w-0 mtx-translate-x-px mtx-flex-col mtx-gap-1\", \"group-data-[collapsible=icon]:mtx-hidden\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\ntype SidebarMenuSubProps = React.ComponentProps<typeof SidebarMenuSub>;\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ ...props }, ref) => <li ref={ref} {...props} />);\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\ntype SidebarMenuSubItemProps = React.ComponentProps<typeof SidebarMenuSubItem>;\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-sub-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"mtx-flex mtx-h-10 mtx-min-w-0 -mtx-translate-x-px mtx-items-center mtx-gap-2 mtx-overflow-hidden mtx-rounded-s-md mtx-ps-10 mtx-text-sm mtx-text-text-400 mtx-font-medium mtx-outline-none hover:mtx-bg-gray-50 disabled:mtx-pointer-events-none disabled:mtx-opacity-50 aria-disabled:mtx-pointer-events-none aria-disabled:mtx-opacity-50 [&>span:last-child]:mtx-truncate [&>svg]:mtx-size-4 [&>svg]:mtx-shrink-0\",\r\n \"data-[active=true]:mtx-bg-gray-100 data-[active=true]:mtx-text-text\",\r\n size === \"sm\" && \"mtx-text-xs\",\r\n size === \"md\" && \"mtx-text-sm\",\r\n \"group-data-[collapsible=icon]:mtx-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\ntype SidebarMenuSubButtonProps = React.ComponentProps<typeof SidebarMenuSubButton>;\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n type SidebarProps,\r\n type SidebarContentProps,\r\n type SidebarFooterProps,\r\n type SidebarGroupProps,\r\n type SidebarGroupActionProps,\r\n type SidebarGroupContentProps,\r\n type SidebarGroupLabelProps,\r\n type SidebarHeaderProps,\r\n type SidebarInsetProps,\r\n type SidebarMenuProps,\r\n type SidebarMenuActionProps,\r\n type SidebarMenuBadgeProps,\r\n type SidebarMenuButtonProps,\r\n type SidebarMenuItemProps,\r\n type SidebarMenuSkeletonProps,\r\n type SidebarMenuSubProps,\r\n type SidebarMenuSubButtonProps,\r\n type SidebarMenuSubItemProps,\r\n type SidebarProviderProps,\r\n type SidebarRailProps,\r\n type SidebarSeparatorProps,\r\n type SidebarTriggerProps,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","width","widthIcon","widthMobile","Sheet","jsxs","SheetContent","VisuallyHidden","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","asChild","Slot","SidebarRail","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}