@trsys-tech/matrix-library 1.1.1-canary.0 → 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 (78) 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/lib/hooks/use-mobile.d.ts.map +1 -1
  57. package/dist/multiselect.es.js +121 -130
  58. package/dist/multiselect.es.js.map +1 -1
  59. package/dist/rating.es.js +47 -50
  60. package/dist/rating.es.js.map +1 -1
  61. package/dist/sidebar.es.js +46 -48
  62. package/dist/sidebar.es.js.map +1 -1
  63. package/dist/styles.css +1 -1
  64. package/dist/switch.es.js +5 -5
  65. package/dist/switch.es.js.map +1 -1
  66. package/dist/tabs.es.js +25 -26
  67. package/dist/tabs.es.js.map +1 -1
  68. package/dist/textfield.es.js +18 -18
  69. package/dist/textfield.es.js.map +1 -1
  70. package/dist/timeline.es.js +182 -0
  71. package/dist/timeline.es.js.map +1 -0
  72. package/dist/timepickercontent.es.js +39 -42
  73. package/dist/timepickercontent.es.js.map +1 -1
  74. package/dist/tooltip.es.js +15 -13
  75. package/dist/tooltip.es.js.map +1 -1
  76. package/dist/use-mobile.es.js +15 -10
  77. package/dist/use-mobile.es.js.map +1 -1
  78. package/package.json +7 -1
@@ -1 +1 @@
1
- {"version":3,"file":"timepickercontent.es.js","sources":["../src/components/date-picker/TimePickerContent.tsx"],"sourcesContent":["import { HTMLAttributes, useEffect, useRef, useState } from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n/**\r\n * Public value used by the time pickers.\r\n *\r\n * In 12-hour mode, provide hour values from 1-12 and include ampm.\r\n * In 24-hour mode, provide hour values from 0-23 and omit ampm.\r\n */\r\ntype Time = {\r\n /** Hour segment of the time value. */\r\n hour: number;\r\n /** Minute segment of the time value. */\r\n minute: number;\r\n /** Optional meridiem used in 12-hour mode. */\r\n ampm?: \"AM\" | \"PM\";\r\n};\r\n\r\n/**\r\n * Props for the shared time picker content.\r\n *\r\n * This is the scrollable selector used by both the desktop and mobile wrappers.\r\n */\r\ntype TimePickerContentProps = {\r\n /** Current time value. */\r\n time: Time | undefined;\r\n /** Indicates whether the surrounding popover or drawer is open. */\r\n isOpen: boolean;\r\n /** Enables 24-hour mode and hides the AM/PM column when true. */\r\n is24HourMode?: boolean;\r\n /** Called whenever the user changes the selected time. */\r\n onTimeChange: (time: Time | undefined) => void;\r\n /** Props forwarded to the content container. */\r\n slotsProps?: {\r\n /** Props forwarded to the main content element. */\r\n content?: HTMLAttributes<HTMLDivElement>;\r\n };\r\n};\r\n\r\nconst getNow = (): Time => {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n\r\n return { hour: hour % 12 || 12, minute: now.getMinutes(), ampm: hour < 12 ? \"AM\" : \"PM\" };\r\n};\r\n\r\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\r\n\r\nconst getDefaultTime = (is24HourMode: boolean): Time => {\r\n return is24HourMode ? { hour: 0, minute: 0 } : getNow();\r\n};\r\n\r\nconst normalizeTime = (time: Time | undefined, is24HourMode: boolean): Time => {\r\n if (!time) {\r\n return getDefaultTime(is24HourMode);\r\n }\r\n\r\n const minute = clamp(time.minute, 0, 59);\r\n const hourFromAmpm = time.ampm ? (time.hour % 12) + (time.ampm === \"PM\" ? 12 : 0) : time.hour;\r\n\r\n if (is24HourMode) {\r\n return { hour: clamp(hourFromAmpm, 0, 23), minute };\r\n }\r\n\r\n const hour = hourFromAmpm % 12 || 12;\r\n\r\n return {\r\n hour,\r\n minute,\r\n ampm: time.ampm ?? (hourFromAmpm >= 12 ? \"PM\" : \"AM\"),\r\n };\r\n};\r\n\r\n/**\r\n * Shared time picker content used by the desktop popover and mobile drawer variants.\r\n * It normalizes values based on 12-hour or 24-hour mode and emits updates as the user picks segments.\r\n */\r\nconst TimePickerContent: React.FC<TimePickerContentProps> = ({ isOpen, time, is24HourMode = false, onTimeChange, slotsProps }) => {\r\n const [selectedTime, setSelectedTime] = useState<Time>(() => normalizeTime(time, is24HourMode));\r\n const selectedTimeRef = useRef<Time>(selectedTime);\r\n\r\n const hourRef = useRef<HTMLDivElement>(null);\r\n const minuteRef = useRef<HTMLDivElement>(null);\r\n\r\n const itemHeight = 32;\r\n const marginBetweenItems = 8;\r\n\r\n const hourOptions = is24HourMode ? Array.from({ length: 24 }, (_, index) => index) : Array.from({ length: 12 }, (_, index) => index + 1);\r\n\r\n const scrollToHour = (index: number) => {\r\n hourRef?.current?.scrollTo({\r\n top: index * (itemHeight + marginBetweenItems),\r\n behavior: \"smooth\",\r\n });\r\n };\r\n\r\n const scrollToMinute = (index: number) => {\r\n minuteRef?.current?.scrollTo({\r\n top: index * (itemHeight + marginBetweenItems),\r\n behavior: \"smooth\",\r\n });\r\n };\r\n\r\n const updateSelectedTime = (nextTime: Time) => {\r\n const normalizedTime = normalizeTime(nextTime, is24HourMode);\r\n selectedTimeRef.current = normalizedTime;\r\n setSelectedTime(normalizedTime);\r\n onTimeChange(normalizedTime);\r\n };\r\n\r\n const handleSetHour = (hour: number) => {\r\n updateSelectedTime({ ...selectedTimeRef.current, hour });\r\n };\r\n\r\n const handleSetMinute = (minute: number) => {\r\n updateSelectedTime({ ...selectedTimeRef.current, minute });\r\n };\r\n\r\n const handleSetAMPM = (ampm: \"AM\" | \"PM\") => {\r\n updateSelectedTime({ ...selectedTimeRef.current, ampm });\r\n };\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n const nextTime = normalizeTime(time, is24HourMode);\r\n selectedTimeRef.current = nextTime;\r\n setSelectedTime(nextTime);\r\n }\r\n }, [isOpen, time, is24HourMode]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n return;\r\n }\r\n\r\n const timeoutId = window.setTimeout(() => {\r\n scrollToHour(is24HourMode ? selectedTimeRef.current.hour : selectedTimeRef.current.hour - 1);\r\n scrollToMinute(selectedTimeRef.current.minute);\r\n });\r\n\r\n return () => window.clearTimeout(timeoutId);\r\n }, [isOpen, is24HourMode]);\r\n\r\n return (\r\n <div\r\n {...(slotsProps?.content ?? {})}\r\n className={cn(\"mtx-py-2 mtx-px-0 mtx-h-52 mtx-w-full mtx-flex mtx-justify-center mtx-gap-1\", slotsProps?.content?.className)}\r\n >\r\n <div className=\"mtx-w-24 mtx-px-2 mtx-h-full mtx-relative mtx-overflow-auto mtx-thin-scrollbar\" ref={hourRef}>\r\n {hourOptions.map(hour => (\r\n <button\r\n style={{ height: itemHeight, marginBottom: marginBetweenItems }}\r\n className={cn(\r\n \"mtx-w-full mtx-flex mtx-justify-center mtx-items-center mtx-rounded-full mtx-text-xs mtx-font-bold mtx-text-text-400\",\r\n hour === selectedTime.hour && \"mtx-bg-secondary\",\r\n )}\r\n key={hour}\r\n onClick={() => handleSetHour(hour)}\r\n type=\"button\"\r\n >\r\n {hour.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <div className=\"mtx-h-full mtx-w-24 mtx-px-2 mtx-relative mtx-overflow-auto mtx-thin-scrollbar\" ref={minuteRef}>\r\n {Array.from({ length: 60 }, (_, i) => i).map(minute => (\r\n <button\r\n style={{ height: itemHeight, marginBottom: marginBetweenItems }}\r\n className={cn(\r\n \"mtx-w-full mtx-flex mtx-justify-center mtx-items-center mtx-rounded-full mtx-text-xs mtx-font-bold mtx-text-text-400\",\r\n minute === selectedTime.minute && \"mtx-bg-secondary\",\r\n )}\r\n key={minute}\r\n onClick={() => handleSetMinute(minute)}\r\n type=\"button\"\r\n >\r\n {minute.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {!is24HourMode && (\r\n <div className=\"mtx-h-full mtx-w-24 mtx-px-2 mtx-relative mtx-overflow-auto mtx-thin-scrollbar\">\r\n {[\"AM\", \"PM\"].map(ampm => (\r\n <button\r\n style={{ height: itemHeight, marginBottom: marginBetweenItems }}\r\n className={cn(\r\n \"mtx-w-full mtx-flex mtx-justify-center mtx-items-center mtx-rounded-full mtx-text-xs mtx-font-bold mtx-text-text-400\",\r\n ampm === selectedTime.ampm && \"mtx-bg-secondary\",\r\n )}\r\n key={ampm}\r\n onClick={() => handleSetAMPM(ampm as \"AM\" | \"PM\")}\r\n type=\"button\"\r\n >\r\n {ampm}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport { TimePickerContent, type TimePickerContentProps, type Time };\r\n"],"names":["getNow","now","hour","clamp","value","min","max","getDefaultTime","is24HourMode","normalizeTime","time","minute","hourFromAmpm","TimePickerContent","isOpen","onTimeChange","slotsProps","selectedTime","setSelectedTime","useState","selectedTimeRef","useRef","hourRef","minuteRef","itemHeight","marginBetweenItems","hourOptions","_","index","scrollToHour","scrollToMinute","updateSelectedTime","nextTime","normalizedTime","handleSetHour","handleSetMinute","handleSetAMPM","ampm","useEffect","timeoutId","jsxs","cn","jsx","i"],"mappings":"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"}
1
+ {"version":3,"file":"timepickercontent.es.js","sources":["../src/components/date-picker/TimePickerContent.tsx"],"sourcesContent":["import { HTMLAttributes, useEffect, useMemo, useRef } from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n/**\r\n * Public value used by the time pickers.\r\n *\r\n * In 12-hour mode, provide hour values from 1-12 and include ampm.\r\n * In 24-hour mode, provide hour values from 0-23 and omit ampm.\r\n */\r\ntype Time = {\r\n /** Hour segment of the time value. */\r\n hour: number;\r\n /** Minute segment of the time value. */\r\n minute: number;\r\n /** Optional meridiem used in 12-hour mode. */\r\n ampm?: \"AM\" | \"PM\";\r\n};\r\n\r\n/**\r\n * Props for the shared time picker content.\r\n *\r\n * This is the scrollable selector used by both the desktop and mobile wrappers.\r\n */\r\ntype TimePickerContentProps = {\r\n /** Current time value. */\r\n time: Time | undefined;\r\n /** Indicates whether the surrounding popover or drawer is open. */\r\n isOpen: boolean;\r\n /** Enables 24-hour mode and hides the AM/PM column when true. */\r\n is24HourMode?: boolean;\r\n /** Called whenever the user changes the selected time. */\r\n onTimeChange: (time: Time | undefined) => void;\r\n /** Props forwarded to the content container. */\r\n slotsProps?: {\r\n /** Props forwarded to the main content element. */\r\n content?: HTMLAttributes<HTMLDivElement>;\r\n };\r\n};\r\n\r\nconst getNow = (): Time => {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n\r\n return { hour: hour % 12 || 12, minute: now.getMinutes(), ampm: hour < 12 ? \"AM\" : \"PM\" };\r\n};\r\n\r\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\r\n\r\nconst getDefaultTime = (is24HourMode: boolean): Time => {\r\n return is24HourMode ? { hour: 0, minute: 0 } : getNow();\r\n};\r\n\r\nconst normalizeTime = (time: Time | undefined, is24HourMode: boolean): Time => {\r\n if (!time) {\r\n return getDefaultTime(is24HourMode);\r\n }\r\n\r\n const minute = clamp(time.minute, 0, 59);\r\n const hourFromAmpm = time.ampm ? (time.hour % 12) + (time.ampm === \"PM\" ? 12 : 0) : time.hour;\r\n\r\n if (is24HourMode) {\r\n return { hour: clamp(hourFromAmpm, 0, 23), minute };\r\n }\r\n\r\n const hour = hourFromAmpm % 12 || 12;\r\n\r\n return {\r\n hour,\r\n minute,\r\n ampm: time.ampm ?? (hourFromAmpm >= 12 ? \"PM\" : \"AM\"),\r\n };\r\n};\r\n\r\n/**\r\n * Shared time picker content used by the desktop popover and mobile drawer variants.\r\n * It normalizes values based on 12-hour or 24-hour mode and emits updates as the user picks segments.\r\n */\r\nconst TimePickerContent: React.FC<TimePickerContentProps> = ({ isOpen, time, is24HourMode = false, onTimeChange, slotsProps }) => {\r\n const selectedTime = useMemo(() => normalizeTime(time, is24HourMode), [time, is24HourMode]);\r\n const selectedTimeRef = useRef<Time>(selectedTime);\r\n\r\n const hourRef = useRef<HTMLDivElement>(null);\r\n const minuteRef = useRef<HTMLDivElement>(null);\r\n\r\n const itemHeight = 32;\r\n const marginBetweenItems = 8;\r\n\r\n const hourOptions = is24HourMode ? Array.from({ length: 24 }, (_, index) => index) : Array.from({ length: 12 }, (_, index) => index + 1);\r\n\r\n const scrollToHour = (index: number) => {\r\n hourRef?.current?.scrollTo({\r\n top: index * (itemHeight + marginBetweenItems),\r\n behavior: \"smooth\",\r\n });\r\n };\r\n\r\n const scrollToMinute = (index: number) => {\r\n minuteRef?.current?.scrollTo({\r\n top: index * (itemHeight + marginBetweenItems),\r\n behavior: \"smooth\",\r\n });\r\n };\r\n\r\n const updateSelectedTime = (nextTime: Time) => {\r\n const normalizedTime = normalizeTime(nextTime, is24HourMode);\r\n selectedTimeRef.current = normalizedTime;\r\n onTimeChange(normalizedTime);\r\n };\r\n\r\n const handleSetHour = (hour: number) => {\r\n updateSelectedTime({ ...selectedTimeRef.current, hour });\r\n };\r\n\r\n const handleSetMinute = (minute: number) => {\r\n updateSelectedTime({ ...selectedTimeRef.current, minute });\r\n };\r\n\r\n const handleSetAMPM = (ampm: \"AM\" | \"PM\") => {\r\n updateSelectedTime({ ...selectedTimeRef.current, ampm });\r\n };\r\n\r\n useEffect(() => {\r\n selectedTimeRef.current = selectedTime;\r\n }, [selectedTime]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n return;\r\n }\r\n\r\n const timeoutId = window.setTimeout(() => {\r\n scrollToHour(is24HourMode ? selectedTimeRef.current.hour : selectedTimeRef.current.hour - 1);\r\n scrollToMinute(selectedTimeRef.current.minute);\r\n });\r\n\r\n return () => window.clearTimeout(timeoutId);\r\n }, [isOpen, is24HourMode]);\r\n\r\n return (\r\n <div\r\n {...(slotsProps?.content ?? {})}\r\n className={cn(\"mtx-py-2 mtx-px-0 mtx-h-52 mtx-w-full mtx-flex mtx-justify-center mtx-gap-1\", slotsProps?.content?.className)}\r\n >\r\n <div className=\"mtx-w-24 mtx-px-2 mtx-h-full mtx-relative mtx-overflow-auto mtx-thin-scrollbar\" ref={hourRef}>\r\n {hourOptions.map(hour => (\r\n <button\r\n style={{ height: itemHeight, marginBottom: marginBetweenItems }}\r\n className={cn(\r\n \"mtx-w-full mtx-flex mtx-justify-center mtx-items-center mtx-rounded-full mtx-text-xs mtx-font-bold mtx-text-text-400\",\r\n hour === selectedTime.hour && \"mtx-bg-secondary\",\r\n )}\r\n key={hour}\r\n onClick={() => handleSetHour(hour)}\r\n type=\"button\"\r\n >\r\n {hour.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <div className=\"mtx-h-full mtx-w-24 mtx-px-2 mtx-relative mtx-overflow-auto mtx-thin-scrollbar\" ref={minuteRef}>\r\n {Array.from({ length: 60 }, (_, i) => i).map(minute => (\r\n <button\r\n style={{ height: itemHeight, marginBottom: marginBetweenItems }}\r\n className={cn(\r\n \"mtx-w-full mtx-flex mtx-justify-center mtx-items-center mtx-rounded-full mtx-text-xs mtx-font-bold mtx-text-text-400\",\r\n minute === selectedTime.minute && \"mtx-bg-secondary\",\r\n )}\r\n key={minute}\r\n onClick={() => handleSetMinute(minute)}\r\n type=\"button\"\r\n >\r\n {minute.toString().padStart(2, \"0\")}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {!is24HourMode && (\r\n <div className=\"mtx-h-full mtx-w-24 mtx-px-2 mtx-relative mtx-overflow-auto mtx-thin-scrollbar\">\r\n {[\"AM\", \"PM\"].map(ampm => (\r\n <button\r\n style={{ height: itemHeight, marginBottom: marginBetweenItems }}\r\n className={cn(\r\n \"mtx-w-full mtx-flex mtx-justify-center mtx-items-center mtx-rounded-full mtx-text-xs mtx-font-bold mtx-text-text-400\",\r\n ampm === selectedTime.ampm && \"mtx-bg-secondary\",\r\n )}\r\n key={ampm}\r\n onClick={() => handleSetAMPM(ampm as \"AM\" | \"PM\")}\r\n type=\"button\"\r\n >\r\n {ampm}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport { TimePickerContent, type TimePickerContentProps, type Time };\r\n"],"names":["getNow","now","hour","clamp","value","min","max","getDefaultTime","is24HourMode","normalizeTime","time","minute","hourFromAmpm","TimePickerContent","isOpen","onTimeChange","slotsProps","selectedTime","useMemo","selectedTimeRef","useRef","hourRef","minuteRef","itemHeight","marginBetweenItems","hourOptions","_","index","scrollToHour","scrollToMinute","updateSelectedTime","nextTime","normalizedTime","handleSetHour","handleSetMinute","handleSetAMPM","ampm","useEffect","timeoutId","jsxs","cn","jsx","i"],"mappings":"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"}
@@ -1,15 +1,17 @@
1
- import { jsx as t, jsxs as d } from "react/jsx-runtime";
2
- import * as s from "react";
3
- import { Root as x, Provider as n, Trigger as l, Portal as p, Content as o, Arrow as f } from "@radix-ui/react-tooltip";
1
+ import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
+ import * as d from "react";
3
+ import { Root as s, Provider as x, Trigger as n, Portal as l, Content as p, Arrow as f } from "@radix-ui/react-tooltip";
4
4
  import { cn as c } from "./utils.es.js";
5
- const y = n, w = x, N = l, g = s.forwardRef(({ className: m, sideOffset: a = 4, children: e, ...r }, i) => /* @__PURE__ */ t(p, { children: /* @__PURE__ */ d(
6
- o,
5
+ const w = x, N = s, g = n;
6
+ g.displayName = "TooltipTrigger";
7
+ const T = d.forwardRef(({ className: o, sideOffset: m = 4, children: e, ...r }, a) => /* @__PURE__ */ t(l, { children: /* @__PURE__ */ i(
8
+ p,
7
9
  {
8
- ref: i,
9
- sideOffset: a,
10
+ ref: a,
11
+ sideOffset: m,
10
12
  className: c(
11
13
  "mtx-z-50 mtx-rounded-sm mtx-bg-primary-900 mtx-px-3 mtx-py-1.5 mtx-text-xs mtx-text-primary-foreground mtx-animate-in mtx-fade-in-0 mtx-zoom-in-95 data-[state=closed]:mtx-animate-out data-[state=closed]:mtx-fade-out-0 data-[state=closed]:mtx-zoom-out-95 data-[side=bottom]:mtx-slide-in-from-top-2 data-[side=left]:mtx-slide-in-from-right-2 data-[side=right]:mtx-slide-in-from-left-2 data-[side=top]:mtx-slide-in-from-bottom-2",
12
- m
14
+ o
13
15
  ),
14
16
  ...r,
15
17
  children: [
@@ -18,11 +20,11 @@ const y = n, w = x, N = l, g = s.forwardRef(({ className: m, sideOffset: a = 4,
18
20
  ]
19
21
  }
20
22
  ) }));
21
- g.displayName = o.displayName;
23
+ T.displayName = "TooltipContent";
22
24
  export {
23
- w as Tooltip,
24
- g as TooltipContent,
25
- y as TooltipProvider,
26
- N as TooltipTrigger
25
+ N as Tooltip,
26
+ T as TooltipContent,
27
+ w as TooltipProvider,
28
+ g as TooltipTrigger
27
29
  };
28
30
  //# sourceMappingURL=tooltip.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.es.js","sources":["../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n Root,\r\n Provider,\r\n Trigger,\r\n Portal,\r\n Content,\r\n TooltipContentProps as ContentProps,\r\n Arrow,\r\n TooltipProps,\r\n TooltipProviderProps,\r\n TooltipTriggerProps,\r\n} from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst TooltipProvider = Provider;\r\n\r\nconst Tooltip = Root;\r\n\r\nconst TooltipTrigger = Trigger;\r\n\r\nconst TooltipContent = React.forwardRef<React.ElementRef<typeof Content>, ContentProps>(({ className, sideOffset = 4, children, ...props }, ref) => (\r\n <Portal>\r\n <Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"mtx-z-50 mtx-rounded-sm mtx-bg-primary-900 mtx-px-3 mtx-py-1.5 mtx-text-xs mtx-text-primary-foreground mtx-animate-in mtx-fade-in-0 mtx-zoom-in-95 data-[state=closed]:mtx-animate-out data-[state=closed]:mtx-fade-out-0 data-[state=closed]:mtx-zoom-out-95 data-[side=bottom]:mtx-slide-in-from-top-2 data-[side=left]:mtx-slide-in-from-right-2 data-[side=right]:mtx-slide-in-from-left-2 data-[side=top]:mtx-slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <Arrow data-role=\"arrow\" className=\"mtx-w-2 mtx-h-1.5\" />\r\n </Content>\r\n </Portal>\r\n));\r\nTooltipContent.displayName = Content.displayName;\r\ntype TooltipContentProps = ContentProps & { ref: React.Ref<React.ElementRef<typeof Content>> };\r\n\r\nexport {\r\n Tooltip,\r\n TooltipTrigger,\r\n TooltipContent,\r\n TooltipProvider,\r\n type TooltipProps,\r\n type TooltipContentProps,\r\n type TooltipTriggerProps,\r\n type TooltipProviderProps,\r\n};\r\n"],"names":["TooltipProvider","Provider","Tooltip","Root","TooltipTrigger","Trigger","TooltipContent","React","className","sideOffset","children","props","ref","Portal","jsxs","Content","cn","jsx","Arrow"],"mappings":";;;;AAkBA,MAAMA,IAAkBC,GAElBC,IAAUC,GAEVC,IAAiBC,GAEjBC,IAAiBC,EAAM,WAA2D,CAAC,EAAE,WAAAC,GAAW,YAAAC,IAAa,GAAG,UAAAC,GAAU,GAAGC,EAAA,GAASC,wBACzIC,GAAA,EACC,UAAA,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,KAAAH;AAAA,IACA,YAAAH;AAAA,IACA,WAAWO;AAAA,MACT;AAAA,MACAR;AAAA,IAAA;AAAA,IAED,GAAGG;AAAA,IAEH,UAAA;AAAA,MAAAD;AAAA,MACD,gBAAAO,EAACC,GAAA,EAAM,aAAU,SAAQ,WAAU,oBAAA,CAAoB;AAAA,IAAA;AAAA,EAAA;AACzD,GACF,CACD;AACDZ,EAAe,cAAcS,EAAQ;"}
1
+ {"version":3,"file":"tooltip.es.js","sources":["../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n Root,\r\n Provider,\r\n Trigger,\r\n Portal,\r\n Content,\r\n TooltipContentProps as ContentProps,\r\n Arrow,\r\n TooltipProps,\r\n TooltipProviderProps,\r\n TooltipTriggerProps,\r\n} from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst TooltipProvider = Provider;\r\n\r\nconst Tooltip = Root;\r\n\r\nconst TooltipTrigger = Trigger;\r\nTooltipTrigger.displayName = \"TooltipTrigger\";\r\n\r\nconst TooltipContent = React.forwardRef<React.ElementRef<typeof Content>, ContentProps>(({ className, sideOffset = 4, children, ...props }, ref) => (\r\n <Portal>\r\n <Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"mtx-z-50 mtx-rounded-sm mtx-bg-primary-900 mtx-px-3 mtx-py-1.5 mtx-text-xs mtx-text-primary-foreground mtx-animate-in mtx-fade-in-0 mtx-zoom-in-95 data-[state=closed]:mtx-animate-out data-[state=closed]:mtx-fade-out-0 data-[state=closed]:mtx-zoom-out-95 data-[side=bottom]:mtx-slide-in-from-top-2 data-[side=left]:mtx-slide-in-from-right-2 data-[side=right]:mtx-slide-in-from-left-2 data-[side=top]:mtx-slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <Arrow data-role=\"arrow\" className=\"mtx-w-2 mtx-h-1.5\" />\r\n </Content>\r\n </Portal>\r\n));\r\nTooltipContent.displayName = \"TooltipContent\";\r\ntype TooltipContentProps = ContentProps & { ref: React.Ref<React.ElementRef<typeof Content>> };\r\n\r\nexport {\r\n Tooltip,\r\n TooltipTrigger,\r\n TooltipContent,\r\n TooltipProvider,\r\n type TooltipProps,\r\n type TooltipContentProps,\r\n type TooltipTriggerProps,\r\n type TooltipProviderProps,\r\n};\r\n"],"names":["TooltipProvider","Provider","Tooltip","Root","TooltipTrigger","Trigger","TooltipContent","React","className","sideOffset","children","props","ref","Portal","jsxs","Content","cn","jsx","Arrow"],"mappings":";;;;AAkBA,MAAMA,IAAkBC,GAElBC,IAAUC,GAEVC,IAAiBC;AACvBD,EAAe,cAAc;AAE7B,MAAME,IAAiBC,EAAM,WAA2D,CAAC,EAAE,WAAAC,GAAW,YAAAC,IAAa,GAAG,UAAAC,GAAU,GAAGC,EAAA,GAASC,wBACzIC,GAAA,EACC,UAAA,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,KAAAH;AAAA,IACA,YAAAH;AAAA,IACA,WAAWO;AAAA,MACT;AAAA,MACAR;AAAA,IAAA;AAAA,IAED,GAAGG;AAAA,IAEH,UAAA;AAAA,MAAAD;AAAA,MACD,gBAAAO,EAACC,GAAA,EAAM,aAAU,SAAQ,WAAU,oBAAA,CAAoB;AAAA,IAAA;AAAA,EAAA;AACzD,GACF,CACD;AACDZ,EAAe,cAAc;"}
@@ -1,14 +1,19 @@
1
- import * as o from "react";
2
- function r() {
3
- const [s, n] = o.useState(void 0), e = 640;
4
- return o.useEffect(() => {
5
- const t = window.matchMedia(`(max-width: ${e - 1}px)`), i = () => {
6
- n(window.innerWidth < e);
7
- };
8
- return t.addEventListener("change", i), n(window.innerWidth < e), () => t.removeEventListener("change", i);
9
- }, [e]), !!s;
1
+ import * as r from "react";
2
+ const t = 640;
3
+ function i(e) {
4
+ const n = window.matchMedia(`(max-width: ${t - 1}px)`);
5
+ return n.addEventListener("change", e), () => n.removeEventListener("change", e);
6
+ }
7
+ function o() {
8
+ return window.innerWidth < t;
9
+ }
10
+ function s() {
11
+ return !1;
12
+ }
13
+ function a() {
14
+ return r.useSyncExternalStore(i, o, s);
10
15
  }
11
16
  export {
12
- r as useIsMobile
17
+ a as useIsMobile
13
18
  };
14
19
  //# sourceMappingURL=use-mobile.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-mobile.es.js","sources":["../src/lib/hooks/use-mobile.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\nexport function useIsMobile() {\r\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\r\n const mobileBreakpoint = 640;\r\n\r\n React.useEffect(() => {\r\n const mql = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);\r\n const onChange = () => {\r\n setIsMobile(window.innerWidth < mobileBreakpoint);\r\n };\r\n mql.addEventListener(\"change\", onChange);\r\n setIsMobile(window.innerWidth < mobileBreakpoint);\r\n return () => mql.removeEventListener(\"change\", onChange);\r\n }, [mobileBreakpoint]);\r\n\r\n return !!isMobile;\r\n}\r\n"],"names":["useIsMobile","isMobile","setIsMobile","React","mobileBreakpoint","mql","onChange"],"mappings":";AAEO,SAASA,IAAc;AAC5B,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAM,SAA8B,MAAS,GACvEC,IAAmB;AAEzB,SAAAD,EAAM,UAAU,MAAM;AACpB,UAAME,IAAM,OAAO,WAAW,eAAeD,IAAmB,CAAC,KAAK,GAChEE,IAAW,MAAM;AACrB,MAAAJ,EAAY,OAAO,aAAaE,CAAgB;AAAA,IAClD;AACA,WAAAC,EAAI,iBAAiB,UAAUC,CAAQ,GACvCJ,EAAY,OAAO,aAAaE,CAAgB,GACzC,MAAMC,EAAI,oBAAoB,UAAUC,CAAQ;AAAA,EACzD,GAAG,CAACF,CAAgB,CAAC,GAEd,CAAC,CAACH;AACX;"}
1
+ {"version":3,"file":"use-mobile.es.js","sources":["../src/lib/hooks/use-mobile.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\nconst MOBILE_BREAKPOINT = 640;\r\n\r\nfunction subscribe(onStoreChange: () => void) {\r\n const mediaQuery = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\r\n mediaQuery.addEventListener(\"change\", onStoreChange);\r\n return () => mediaQuery.removeEventListener(\"change\", onStoreChange);\r\n}\r\n\r\nfunction getSnapshot() {\r\n return window.innerWidth < MOBILE_BREAKPOINT;\r\n}\r\n\r\nfunction getServerSnapshot() {\r\n return false;\r\n}\r\n\r\nexport function useIsMobile() {\r\n return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\r\n}\r\n"],"names":["MOBILE_BREAKPOINT","subscribe","onStoreChange","mediaQuery","getSnapshot","getServerSnapshot","useIsMobile","React"],"mappings":";AAEA,MAAMA,IAAoB;AAE1B,SAASC,EAAUC,GAA2B;AAC5C,QAAMC,IAAa,OAAO,WAAW,eAAeH,IAAoB,CAAC,KAAK;AAC9E,SAAAG,EAAW,iBAAiB,UAAUD,CAAa,GAC5C,MAAMC,EAAW,oBAAoB,UAAUD,CAAa;AACrE;AAEA,SAASE,IAAc;AACrB,SAAO,OAAO,aAAaJ;AAC7B;AAEA,SAASK,IAAoB;AAC3B,SAAO;AACT;AAEO,SAASC,IAAc;AAC5B,SAAOC,EAAM,qBAAqBN,GAAWG,GAAaC,CAAiB;AAC7E;"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@trsys-tech/matrix-library",
3
3
  "description": "MatrixUI Library",
4
4
  "private": false,
5
- "version": "1.1.1-canary.0",
5
+ "version": "1.1.3",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.es.js",
@@ -24,6 +24,7 @@
24
24
  "scripts": {
25
25
  "dev": "vite",
26
26
  "build": "tsc -p tsconfig.build.json && vite build",
27
+ "test": "npm run build && node --test tests/*.test.mjs",
27
28
  "build:styles": "npx tailwindcss -i ./src/index.css -o ./dist/style.css --watch",
28
29
  "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
29
30
  "sb": "storybook dev -p 6006",
@@ -129,5 +130,10 @@
129
130
  "extends": [
130
131
  "plugin:storybook/recommended"
131
132
  ]
133
+ },
134
+ "allowScripts": {
135
+ "esbuild@0.28.1": true,
136
+ "esbuild@0.25.12": true,
137
+ "fsevents@2.3.3": true
132
138
  }
133
139
  }