maquinaweb-ui 2.75.0 → 2.75.2

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 (175) hide show
  1. package/dist/actions.js +0 -1
  2. package/dist/actions.js.map +1 -1
  3. package/dist/analytics/core.d.ts.map +1 -1
  4. package/dist/analytics/core.js +0 -1
  5. package/dist/analytics/core.js.map +1 -1
  6. package/dist/analytics/delegated-clicks.d.ts.map +1 -1
  7. package/dist/analytics/delegated-clicks.js +0 -1
  8. package/dist/analytics/delegated-clicks.js.map +1 -1
  9. package/dist/analytics/provider.d.ts +2 -2
  10. package/dist/analytics/provider.d.ts.map +1 -1
  11. package/dist/analytics/provider.js +0 -1
  12. package/dist/analytics/provider.js.map +1 -1
  13. package/dist/analytics/types.d.ts.map +1 -1
  14. package/dist/analytics.js +0 -1
  15. package/dist/container-animation/container-animation.d.ts +2 -2
  16. package/dist/container-animation/container-animation.d.ts.map +1 -1
  17. package/dist/container-animation/container-animation.js +1 -2
  18. package/dist/container-animation/container-animation.js.map +1 -1
  19. package/dist/container-animation.js +0 -1
  20. package/dist/date-field/DateField.d.ts +2 -2
  21. package/dist/date-field/DateField.d.ts.map +1 -1
  22. package/dist/date-field/DateField.js +0 -1
  23. package/dist/date-field/DateField.js.map +1 -1
  24. package/dist/date-field.js +0 -1
  25. package/dist/date-hour-field/DateHourField.d.ts +2 -2
  26. package/dist/date-hour-field/DateHourField.d.ts.map +1 -1
  27. package/dist/date-hour-field/DateHourField.js +0 -1
  28. package/dist/date-hour-field/DateHourField.js.map +1 -1
  29. package/dist/date-hour-field/time-wheel-column.js.map +1 -1
  30. package/dist/date-hour-field.js +0 -1
  31. package/dist/input-suggest/input-suggest.d.ts +2 -2
  32. package/dist/input-suggest/input-suggest.d.ts.map +1 -1
  33. package/dist/input-suggest/input-suggest.js +6 -7
  34. package/dist/input-suggest/input-suggest.js.map +1 -1
  35. package/dist/input-suggest.js +0 -1
  36. package/dist/kanban-dnd/constants.js +1 -4
  37. package/dist/kanban-dnd/constants.js.map +1 -1
  38. package/dist/kanban-dnd/context.d.ts +0 -4
  39. package/dist/kanban-dnd/context.d.ts.map +1 -1
  40. package/dist/kanban-dnd/context.js +0 -1
  41. package/dist/kanban-dnd/context.js.map +1 -1
  42. package/dist/kanban-dnd/drag-preview.js +4 -4
  43. package/dist/kanban-dnd/drag-preview.js.map +1 -1
  44. package/dist/kanban-dnd/drop-animation.js.map +1 -1
  45. package/dist/kanban-dnd/kanban-card-item.d.ts +2 -2
  46. package/dist/kanban-dnd/kanban-card-item.d.ts.map +1 -1
  47. package/dist/kanban-dnd/kanban-card-item.js +0 -1
  48. package/dist/kanban-dnd/kanban-card-item.js.map +1 -1
  49. package/dist/kanban-dnd/kanban-dnd-monitor.d.ts +2 -2
  50. package/dist/kanban-dnd/kanban-dnd-monitor.d.ts.map +1 -1
  51. package/dist/kanban-dnd/kanban-dnd-monitor.js +0 -1
  52. package/dist/kanban-dnd/kanban-dnd-monitor.js.map +1 -1
  53. package/dist/kanban-dnd/kanban-dropzone.d.ts +2 -2
  54. package/dist/kanban-dnd/kanban-dropzone.d.ts.map +1 -1
  55. package/dist/kanban-dnd/kanban-dropzone.js +0 -1
  56. package/dist/kanban-dnd/kanban-dropzone.js.map +1 -1
  57. package/dist/kanban-dnd/kanban-selector.d.ts +2 -2
  58. package/dist/kanban-dnd/kanban-selector.d.ts.map +1 -1
  59. package/dist/kanban-dnd/kanban-selector.js +0 -1
  60. package/dist/kanban-dnd/kanban-selector.js.map +1 -1
  61. package/dist/kanban-dnd/move-cards.d.ts.map +1 -1
  62. package/dist/kanban-dnd/move-cards.js.map +1 -1
  63. package/dist/kanban-dnd/types.d.ts.map +1 -1
  64. package/dist/kanban-dnd/use-kanban-column-dnd.d.ts.map +1 -1
  65. package/dist/kanban-dnd/use-kanban-column-dnd.js +0 -1
  66. package/dist/kanban-dnd/use-kanban-column-dnd.js.map +1 -1
  67. package/dist/kanban-dnd/use-kanban-selector-auto-scroll.js.map +1 -1
  68. package/dist/kanban-dnd.d.ts +0 -1
  69. package/dist/kanban-dnd.js +0 -1
  70. package/dist/landing-text/client-landing-text.js +0 -1
  71. package/dist/landing-text/client-landing-text.js.map +1 -1
  72. package/dist/landing-text/landing-content.d.ts +0 -2
  73. package/dist/landing-text/landing-content.d.ts.map +1 -1
  74. package/dist/landing-text/landing-content.js.map +1 -1
  75. package/dist/landing-text/landing-text.d.ts +2 -2
  76. package/dist/landing-text/landing-text.d.ts.map +1 -1
  77. package/dist/landing-text/landing-text.js +1 -1
  78. package/dist/landing-text/landing-text.js.map +1 -1
  79. package/dist/landing-text/server-landing-text.d.ts +2 -2
  80. package/dist/landing-text/server-landing-text.d.ts.map +1 -1
  81. package/dist/landing-text/server-landing-text.js +1 -1
  82. package/dist/landing-text/server-landing-text.js.map +1 -1
  83. package/dist/landing-text/types.d.ts.map +1 -1
  84. package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js +0 -1
  85. package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js.map +1 -1
  86. package/dist/node_modules/framer-motion/dist/types/index.d.ts +4 -0
  87. package/dist/node_modules/framer-motion/dist/types.d-DOCC-kZB.d.ts +1 -0
  88. package/dist/node_modules/motion/dist/react.d.ts +2 -0
  89. package/dist/node_modules/motion-dom/dist/index.d.ts +1001 -0
  90. package/dist/node_modules/motion-dom/dist/index.d.ts.map +1 -0
  91. package/dist/node_modules/motion-utils/dist/index.d.ts +17 -0
  92. package/dist/node_modules/motion-utils/dist/index.d.ts.map +1 -0
  93. package/dist/page-header/page-header.d.ts +2 -2
  94. package/dist/page-header/page-header.d.ts.map +1 -1
  95. package/dist/page-header/page-header.js.map +1 -1
  96. package/dist/page-header.js +0 -1
  97. package/dist/remote-selector/remote-selector.d.ts +3 -3
  98. package/dist/remote-selector/remote-selector.d.ts.map +1 -1
  99. package/dist/remote-selector/remote-selector.js +3 -4
  100. package/dist/remote-selector/remote-selector.js.map +1 -1
  101. package/dist/remote-selector.js +0 -1
  102. package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts +2 -2
  103. package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts.map +1 -1
  104. package/dist/server-infinite-scroll/server-infinite-scroll-items.js.map +1 -1
  105. package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts +2 -2
  106. package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts.map +1 -1
  107. package/dist/server-infinite-scroll/server-infinite-scroll-list.js +6 -7
  108. package/dist/server-infinite-scroll/server-infinite-scroll-list.js.map +1 -1
  109. package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts +2 -2
  110. package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts.map +1 -1
  111. package/dist/server-infinite-scroll/server-infinite-scroll-observer.js +0 -1
  112. package/dist/server-infinite-scroll/server-infinite-scroll-observer.js.map +1 -1
  113. package/dist/server-infinite-scroll/server-infinite-scroll.d.ts +2 -2
  114. package/dist/server-infinite-scroll/server-infinite-scroll.d.ts.map +1 -1
  115. package/dist/server-infinite-scroll/types.d.ts.map +1 -1
  116. package/dist/split-text-poor/split-text-poor.d.ts.map +1 -1
  117. package/dist/split-text-poor/split-text-poor.js +1 -2
  118. package/dist/split-text-poor/split-text-poor.js.map +1 -1
  119. package/dist/split-text-poor.js +0 -1
  120. package/dist/src/hooks/get-mask-options.js.map +1 -1
  121. package/dist/src/hooks/is-server.js +1 -2
  122. package/dist/src/hooks/is-server.js.map +1 -1
  123. package/dist/src/hooks/use-money-input.js +1 -3
  124. package/dist/src/hooks/use-money-input.js.map +1 -1
  125. package/dist/src/hooks/with-mask.d.ts +0 -1
  126. package/dist/src/hooks/with-mask.d.ts.map +1 -1
  127. package/dist/src/hooks/with-mask.js +2 -2
  128. package/dist/src/hooks/with-mask.js.map +1 -1
  129. package/dist/text-field/TextField.d.ts +5 -5
  130. package/dist/text-field/TextField.d.ts.map +1 -1
  131. package/dist/text-field/TextField.js +8 -9
  132. package/dist/text-field/TextField.js.map +1 -1
  133. package/dist/text-field.js +0 -1
  134. package/dist/toggle-field/ToggleField.d.ts.map +1 -1
  135. package/dist/toggle-field/ToggleField.js +1 -2
  136. package/dist/toggle-field/ToggleField.js.map +1 -1
  137. package/dist/toggle-field/ToggleGroup.d.ts +6 -6
  138. package/dist/toggle-field/ToggleGroup.d.ts.map +1 -1
  139. package/dist/toggle-field/ToggleGroup.js +2 -3
  140. package/dist/toggle-field/ToggleGroup.js.map +1 -1
  141. package/dist/toggle-field.js +0 -1
  142. package/dist/ui/badge.js +1 -1
  143. package/dist/ui/badge.js.map +1 -1
  144. package/dist/ui/button.js +1 -1
  145. package/dist/ui/button.js.map +1 -1
  146. package/dist/ui/calendar.js +8 -9
  147. package/dist/ui/calendar.js.map +1 -1
  148. package/dist/ui/checkbox.js +1 -2
  149. package/dist/ui/checkbox.js.map +1 -1
  150. package/dist/ui/command.js +5 -6
  151. package/dist/ui/command.js.map +1 -1
  152. package/dist/ui/content-help.js.map +1 -1
  153. package/dist/ui/form.js +4 -5
  154. package/dist/ui/form.js.map +1 -1
  155. package/dist/ui/input-date-field.js +1 -1
  156. package/dist/ui/input-date-field.js.map +1 -1
  157. package/dist/ui/input-help.js +0 -1
  158. package/dist/ui/input-help.js.map +1 -1
  159. package/dist/ui/input.js +1 -1
  160. package/dist/ui/input.js.map +1 -1
  161. package/dist/ui/label.js +1 -2
  162. package/dist/ui/label.js.map +1 -1
  163. package/dist/ui/popover.js +1 -2
  164. package/dist/ui/popover.js.map +1 -1
  165. package/dist/ui/scroll-area.js +1 -2
  166. package/dist/ui/scroll-area.js.map +1 -1
  167. package/dist/ui/selector.d.ts +0 -2
  168. package/dist/ui/selector.d.ts.map +1 -1
  169. package/dist/ui/selector.js +3 -4
  170. package/dist/ui/selector.js.map +1 -1
  171. package/dist/ui/tooltip.js +2 -3
  172. package/dist/ui/tooltip.js.map +1 -1
  173. package/dist/ui/tree-item-renderer.js +1 -3
  174. package/dist/ui/tree-item-renderer.js.map +1 -1
  175. package/package.json +16 -16
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import { Button, buttonVariants } from "./button.js";
6
5
  import * as React from "react";
@@ -10,7 +9,7 @@ import { differenceInCalendarDays } from "date-fns";
10
9
  import { DayPicker, labelNext, labelPrevious, useDayPicker } from "react-day-picker";
11
10
 
12
11
  //#region src/components/ui/calendar.tsx
13
- function Calendar({ className, classNames, showOutsideDays = true, yearRange = 12, numberOfMonths,...props }) {
12
+ function Calendar({ className, classNames, showOutsideDays = true, yearRange = 12, numberOfMonths, ...props }) {
14
13
  const [navView, setNavView] = React.useState("days");
15
14
  const [displayYears, setDisplayYears] = React.useState(React.useMemo(() => {
16
15
  const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
@@ -58,7 +57,7 @@ function Calendar({ className, classNames, showOutsideDays = true, yearRange = 1
58
57
  Chevron: ({ orientation }) => {
59
58
  return /* @__PURE__ */ jsx(orientation === "left" ? ChevronLeft : ChevronRight, { className: "h-4 w-4" });
60
59
  },
61
- Nav: ({ className: className$1, children,...props$1 }) => {
60
+ Nav: ({ className, children, ...props }) => {
62
61
  const { nextMonth, previousMonth, goToMonth } = useDayPicker();
63
62
  const isPreviousDisabled = (() => {
64
63
  if (navView === "years") return startMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0 || endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0;
@@ -95,7 +94,7 @@ function Calendar({ className, classNames, showOutsideDays = true, yearRange = 1
95
94
  onNextClick?.(nextMonth);
96
95
  }, [goToMonth, nextMonth]);
97
96
  return /* @__PURE__ */ jsxs("nav", {
98
- className: cn("flex items-center", className$1),
97
+ className: cn("flex items-center", className),
99
98
  children: [/* @__PURE__ */ jsx(Button, {
100
99
  "aria-label": navView === "years" ? `Go to the previous ${displayYears.to - displayYears.from + 1} years` : labelPrevious(previousMonth),
101
100
  className: "absolute left-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100",
@@ -124,11 +123,11 @@ function Calendar({ className, classNames, showOutsideDays = true, yearRange = 1
124
123
  variant: "ghost",
125
124
  children: navView === "days" ? children : displayYears.from + " - " + displayYears.to
126
125
  }),
127
- MonthGrid: ({ className: className$1, children,...props$1 }) => {
126
+ MonthGrid: ({ className, children, ...props }) => {
128
127
  const { goToMonth } = useDayPicker();
129
128
  if (navView === "years") return /* @__PURE__ */ jsx("div", {
130
- className: cn("grid grid-cols-4 gap-y-1", className$1),
131
- ...props$1,
129
+ className: cn("grid grid-cols-4 gap-y-1", className),
130
+ ...props,
132
131
  children: Array.from({ length: displayYears.to - displayYears.from + 1 }, (_, i) => {
133
132
  const isBefore = differenceInCalendarDays(new Date(displayYears.from + i, 12, 31), startMonth) < 0;
134
133
  const isAfter = differenceInCalendarDays(new Date(displayYears.from + i, 0, 0), endMonth) > 0;
@@ -146,8 +145,8 @@ function Calendar({ className, classNames, showOutsideDays = true, yearRange = 1
146
145
  })
147
146
  });
148
147
  return /* @__PURE__ */ jsx("table", {
149
- className: className$1,
150
- ...props$1,
148
+ className,
149
+ ...props,
151
150
  children
152
151
  });
153
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","names":["props","className"],"sources":["../../src/components/ui/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Button, buttonVariants } from '@/components/ui/button';\n\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { differenceInCalendarDays } from 'date-fns';\nimport {\n DayPicker,\n labelNext,\n labelPrevious,\n useDayPicker,\n} from 'react-day-picker';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker> & {\n /**\n * In the year view, the number of years to display at once.\n * @default 12\n */\n yearRange?: number;\n};\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n yearRange = 12,\n numberOfMonths,\n ...props\n}: CalendarProps) {\n const [navView, setNavView] = React.useState<'days' | 'years'>('days');\n const [displayYears, setDisplayYears] = React.useState<{\n from: number;\n to: number;\n }>(\n React.useMemo(() => {\n const currentYear = new Date().getFullYear();\n return {\n from: currentYear - Math.floor(yearRange / 2 - 1),\n to: currentYear + Math.ceil(yearRange / 2),\n };\n }, [yearRange])\n );\n\n const { onNextClick, onPrevClick, startMonth, endMonth } = props;\n\n const columnsDisplayed = navView === 'years' ? 1 : numberOfMonths;\n\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col relative sm:flex-row gap-y-4 sm:gap-y-0',\n month_caption: 'flex justify-center h-7 mx-10 relative items-center',\n weekdays: 'flex flex-row',\n weekday: 'text-muted-foreground w-8 font-normal text-[0.8rem]',\n month: 'gap-y-4 overflow-x-hidden w-full',\n caption: 'flex justify-center pt-1 relative items-center',\n caption_label: 'text-sm font-medium truncate',\n button_next: cn(\n buttonVariants({\n variant: 'outline',\n className:\n 'absolute right-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n })\n ),\n button_previous: cn(\n buttonVariants({\n variant: 'outline',\n className:\n 'absolute left-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n })\n ),\n nav: 'flex items-start',\n month_grid: 'mt-4',\n week: 'flex w-full mt-1',\n day: 'p-0 transition-colors size-8 text-sm flex-1 flex items-center justify-center has-[button]:hover:bg-accent/90! rounded-md has-[button]:hover:aria-selected:bg-primary/50! has-[button]:hover:text-foreground has-[button]:hover:aria-selected:text-foreground',\n day_button: cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-8 p-0 font-normal transition-none hover:bg-transparent hover:text-inherit aria-selected:opacity-100'\n ),\n range_start: 'day-range-start rounded-s-md',\n range_end: 'day-range-end rounded-e-md',\n selected:\n 'bg-primary text-primary-foreground hover:bg-primary! hover:text-primary-foreground focus:bg-primary! focus:text-primary-foreground',\n today: 'bg-accent text-accent-foreground',\n outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n range_middle:\n 'aria-selected:bg-accent hover:aria-selected:bg-accent! rounded-none aria-selected:text-accent-foreground hover:aria-selected:text-accent-foreground',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => {\n const Icon = orientation === 'left' ? ChevronLeft : ChevronRight;\n return <Icon className=\"h-4 w-4\" />;\n },\n Nav: ({ className, children, ...props }) => {\n const { nextMonth, previousMonth, goToMonth } = useDayPicker();\n\n const isPreviousDisabled = (() => {\n if (navView === 'years') {\n return (\n (startMonth &&\n differenceInCalendarDays(\n new Date(displayYears.from - 1, 0, 1),\n startMonth\n ) < 0) ||\n (endMonth &&\n differenceInCalendarDays(\n new Date(displayYears.from - 1, 0, 1),\n endMonth\n ) > 0)\n );\n }\n return !previousMonth;\n })();\n\n const isNextDisabled = (() => {\n if (navView === 'years') {\n return (\n (startMonth &&\n differenceInCalendarDays(\n new Date(displayYears.to + 1, 0, 1),\n startMonth\n ) < 0) ||\n (endMonth &&\n differenceInCalendarDays(\n new Date(displayYears.to + 1, 0, 1),\n endMonth\n ) > 0)\n );\n }\n return !nextMonth;\n })();\n\n const handlePreviousClick = React.useCallback(() => {\n if (!previousMonth) return;\n if (navView === 'years') {\n setDisplayYears((prev) => ({\n from: prev.from - (prev.to - prev.from + 1),\n to: prev.to - (prev.to - prev.from + 1),\n }));\n onPrevClick?.(\n new Date(\n displayYears.from - (displayYears.to - displayYears.from),\n 0,\n 1\n )\n );\n return;\n }\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [previousMonth, goToMonth]);\n\n const handleNextClick = React.useCallback(() => {\n if (navView === 'years') {\n setDisplayYears((prev) => ({\n from: prev.from + (prev.to - prev.from + 1),\n to: prev.to + (prev.to - prev.from + 1),\n }));\n onNextClick?.(\n new Date(\n displayYears.from + (displayYears.to - displayYears.from),\n 0,\n 1\n )\n );\n return;\n }\n if (!nextMonth) return;\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [goToMonth, nextMonth]);\n\n return (\n <nav className={cn('flex items-center', className)}>\n <Button\n aria-label={\n navView === 'years'\n ? `Go to the previous ${\n displayYears.to - displayYears.from + 1\n } years`\n : labelPrevious(previousMonth)\n }\n className=\"absolute left-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100\"\n disabled={isPreviousDisabled}\n onClick={handlePreviousClick}\n tabIndex={isPreviousDisabled ? undefined : -1}\n type=\"button\"\n variant=\"outline\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n\n <Button\n aria-label={\n navView === 'years'\n ? `Go to the next ${\n displayYears.to - displayYears.from + 1\n } years`\n : labelNext(nextMonth)\n }\n className=\"absolute right-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100\"\n disabled={isNextDisabled}\n onClick={handleNextClick}\n tabIndex={isNextDisabled ? undefined : -1}\n type=\"button\"\n variant=\"outline\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </nav>\n );\n },\n CaptionLabel: ({ children }) => (\n <Button\n className=\"h-7 w-full truncate text-sm font-medium capitalize\"\n onClick={() =>\n setNavView((prev) => (prev === 'days' ? 'years' : 'days'))\n }\n size=\"sm\"\n variant=\"ghost\"\n >\n {navView === 'days'\n ? children\n : displayYears.from + ' - ' + displayYears.to}\n </Button>\n ),\n MonthGrid: ({ className, children, ...props }) => {\n const { goToMonth } = useDayPicker();\n if (navView === 'years') {\n return (\n <div\n className={cn('grid grid-cols-4 gap-y-1', className)}\n {...props}\n >\n {Array.from(\n { length: displayYears.to - displayYears.from + 1 },\n (_, i) => {\n const isBefore =\n differenceInCalendarDays(\n new Date(displayYears.from + i, 12, 31),\n startMonth!\n ) < 0;\n\n const isAfter =\n differenceInCalendarDays(\n new Date(displayYears.from + i, 0, 0),\n endMonth!\n ) > 0;\n\n const isDisabled = isBefore || isAfter;\n return (\n <Button\n className={cn(\n 'h-10 w-full text-sm font-normal text-foreground',\n displayYears.from + i === new Date().getFullYear() &&\n 'bg-accent font-medium text-accent-foreground'\n )}\n disabled={navView === 'years' ? isDisabled : undefined}\n key={i}\n onClick={() => {\n setNavView('days');\n goToMonth(\n new Date(\n displayYears.from + i,\n new Date().getMonth()\n )\n );\n }}\n variant=\"ghost\"\n >\n {displayYears.from + i}\n </Button>\n );\n }\n )}\n </div>\n );\n }\n return (\n <table className={className} {...props}>\n {children}\n </table>\n );\n },\n }}\n numberOfMonths={columnsDisplayed}\n showOutsideDays={showOutsideDays}\n style={{\n width: 248.8 * (columnsDisplayed ?? 1) + 'px',\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n"],"mappings":"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"}
1
+ {"version":3,"file":"calendar.js","names":[],"sources":["../../src/components/ui/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { Button, buttonVariants } from '@/components/ui/button';\n\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { differenceInCalendarDays } from 'date-fns';\nimport {\n DayPicker,\n labelNext,\n labelPrevious,\n useDayPicker,\n} from 'react-day-picker';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker> & {\n /**\n * In the year view, the number of years to display at once.\n * @default 12\n */\n yearRange?: number;\n};\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n yearRange = 12,\n numberOfMonths,\n ...props\n}: CalendarProps) {\n const [navView, setNavView] = React.useState<'days' | 'years'>('days');\n const [displayYears, setDisplayYears] = React.useState<{\n from: number;\n to: number;\n }>(\n React.useMemo(() => {\n const currentYear = new Date().getFullYear();\n return {\n from: currentYear - Math.floor(yearRange / 2 - 1),\n to: currentYear + Math.ceil(yearRange / 2),\n };\n }, [yearRange])\n );\n\n const { onNextClick, onPrevClick, startMonth, endMonth } = props;\n\n const columnsDisplayed = navView === 'years' ? 1 : numberOfMonths;\n\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col relative sm:flex-row gap-y-4 sm:gap-y-0',\n month_caption: 'flex justify-center h-7 mx-10 relative items-center',\n weekdays: 'flex flex-row',\n weekday: 'text-muted-foreground w-8 font-normal text-[0.8rem]',\n month: 'gap-y-4 overflow-x-hidden w-full',\n caption: 'flex justify-center pt-1 relative items-center',\n caption_label: 'text-sm font-medium truncate',\n button_next: cn(\n buttonVariants({\n variant: 'outline',\n className:\n 'absolute right-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n })\n ),\n button_previous: cn(\n buttonVariants({\n variant: 'outline',\n className:\n 'absolute left-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n })\n ),\n nav: 'flex items-start',\n month_grid: 'mt-4',\n week: 'flex w-full mt-1',\n day: 'p-0 transition-colors size-8 text-sm flex-1 flex items-center justify-center has-[button]:hover:bg-accent/90! rounded-md has-[button]:hover:aria-selected:bg-primary/50! has-[button]:hover:text-foreground has-[button]:hover:aria-selected:text-foreground',\n day_button: cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-8 p-0 font-normal transition-none hover:bg-transparent hover:text-inherit aria-selected:opacity-100'\n ),\n range_start: 'day-range-start rounded-s-md',\n range_end: 'day-range-end rounded-e-md',\n selected:\n 'bg-primary text-primary-foreground hover:bg-primary! hover:text-primary-foreground focus:bg-primary! focus:text-primary-foreground',\n today: 'bg-accent text-accent-foreground',\n outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n range_middle:\n 'aria-selected:bg-accent hover:aria-selected:bg-accent! rounded-none aria-selected:text-accent-foreground hover:aria-selected:text-accent-foreground',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => {\n const Icon = orientation === 'left' ? ChevronLeft : ChevronRight;\n return <Icon className=\"h-4 w-4\" />;\n },\n Nav: ({ className, children, ...props }) => {\n const { nextMonth, previousMonth, goToMonth } = useDayPicker();\n\n const isPreviousDisabled = (() => {\n if (navView === 'years') {\n return (\n (startMonth &&\n differenceInCalendarDays(\n new Date(displayYears.from - 1, 0, 1),\n startMonth\n ) < 0) ||\n (endMonth &&\n differenceInCalendarDays(\n new Date(displayYears.from - 1, 0, 1),\n endMonth\n ) > 0)\n );\n }\n return !previousMonth;\n })();\n\n const isNextDisabled = (() => {\n if (navView === 'years') {\n return (\n (startMonth &&\n differenceInCalendarDays(\n new Date(displayYears.to + 1, 0, 1),\n startMonth\n ) < 0) ||\n (endMonth &&\n differenceInCalendarDays(\n new Date(displayYears.to + 1, 0, 1),\n endMonth\n ) > 0)\n );\n }\n return !nextMonth;\n })();\n\n const handlePreviousClick = React.useCallback(() => {\n if (!previousMonth) return;\n if (navView === 'years') {\n setDisplayYears((prev) => ({\n from: prev.from - (prev.to - prev.from + 1),\n to: prev.to - (prev.to - prev.from + 1),\n }));\n onPrevClick?.(\n new Date(\n displayYears.from - (displayYears.to - displayYears.from),\n 0,\n 1\n )\n );\n return;\n }\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [previousMonth, goToMonth]);\n\n const handleNextClick = React.useCallback(() => {\n if (navView === 'years') {\n setDisplayYears((prev) => ({\n from: prev.from + (prev.to - prev.from + 1),\n to: prev.to + (prev.to - prev.from + 1),\n }));\n onNextClick?.(\n new Date(\n displayYears.from + (displayYears.to - displayYears.from),\n 0,\n 1\n )\n );\n return;\n }\n if (!nextMonth) return;\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [goToMonth, nextMonth]);\n\n return (\n <nav className={cn('flex items-center', className)}>\n <Button\n aria-label={\n navView === 'years'\n ? `Go to the previous ${\n displayYears.to - displayYears.from + 1\n } years`\n : labelPrevious(previousMonth)\n }\n className=\"absolute left-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100\"\n disabled={isPreviousDisabled}\n onClick={handlePreviousClick}\n tabIndex={isPreviousDisabled ? undefined : -1}\n type=\"button\"\n variant=\"outline\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n\n <Button\n aria-label={\n navView === 'years'\n ? `Go to the next ${\n displayYears.to - displayYears.from + 1\n } years`\n : labelNext(nextMonth)\n }\n className=\"absolute right-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100\"\n disabled={isNextDisabled}\n onClick={handleNextClick}\n tabIndex={isNextDisabled ? undefined : -1}\n type=\"button\"\n variant=\"outline\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </nav>\n );\n },\n CaptionLabel: ({ children }) => (\n <Button\n className=\"h-7 w-full truncate text-sm font-medium capitalize\"\n onClick={() =>\n setNavView((prev) => (prev === 'days' ? 'years' : 'days'))\n }\n size=\"sm\"\n variant=\"ghost\"\n >\n {navView === 'days'\n ? children\n : displayYears.from + ' - ' + displayYears.to}\n </Button>\n ),\n MonthGrid: ({ className, children, ...props }) => {\n const { goToMonth } = useDayPicker();\n if (navView === 'years') {\n return (\n <div\n className={cn('grid grid-cols-4 gap-y-1', className)}\n {...props}\n >\n {Array.from(\n { length: displayYears.to - displayYears.from + 1 },\n (_, i) => {\n const isBefore =\n differenceInCalendarDays(\n new Date(displayYears.from + i, 12, 31),\n startMonth!\n ) < 0;\n\n const isAfter =\n differenceInCalendarDays(\n new Date(displayYears.from + i, 0, 0),\n endMonth!\n ) > 0;\n\n const isDisabled = isBefore || isAfter;\n return (\n <Button\n className={cn(\n 'h-10 w-full text-sm font-normal text-foreground',\n displayYears.from + i === new Date().getFullYear() &&\n 'bg-accent font-medium text-accent-foreground'\n )}\n disabled={navView === 'years' ? isDisabled : undefined}\n key={i}\n onClick={() => {\n setNavView('days');\n goToMonth(\n new Date(\n displayYears.from + i,\n new Date().getMonth()\n )\n );\n }}\n variant=\"ghost\"\n >\n {displayYears.from + i}\n </Button>\n );\n }\n )}\n </div>\n );\n }\n return (\n <table className={className} {...props}>\n {children}\n </table>\n );\n },\n }}\n numberOfMonths={columnsDisplayed}\n showOutsideDays={showOutsideDays}\n style={{\n width: 248.8 * (columnsDisplayed ?? 1) + 'px',\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import * as React from "react";
6
5
  import { jsx } from "react/jsx-runtime";
@@ -8,7 +7,7 @@ import { Checkbox, Indicator } from "@radix-ui/react-checkbox";
8
7
  import * as motion from "motion/react-m";
9
8
 
10
9
  //#region src/components/ui/checkbox.tsx
11
- function Checkbox$1({ className, onCheckedChange,...props }) {
10
+ function Checkbox$1({ className, onCheckedChange, ...props }) {
12
11
  const [isChecked, setIsChecked] = React.useState(props?.checked ?? props?.defaultChecked ?? false);
13
12
  React.useEffect(() => {
14
13
  if (props?.checked !== void 0) setIsChecked(props.checked);
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":["Checkbox","CheckboxPrimitive","CheckboxIndicatorPrimitive"],"sources":["../../src/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport {\n Indicator as CheckboxIndicatorPrimitive,\n Checkbox as CheckboxPrimitive,\n} from '@radix-ui/react-checkbox';\n\nimport { cn } from '@/lib/utils';\nimport type { HTMLMotionProps } from 'motion/react';\nimport * as motion from 'motion/react-m';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive> &\n HTMLMotionProps<'button'>;\n\nfunction Checkbox({ className, onCheckedChange, ...props }: CheckboxProps) {\n const [isChecked, setIsChecked] = React.useState(\n props?.checked ?? props?.defaultChecked ?? false\n );\n\n React.useEffect(() => {\n if (props?.checked !== undefined) setIsChecked(props.checked);\n }, [props?.checked]);\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n setIsChecked(checked);\n onCheckedChange?.(checked);\n },\n [onCheckedChange]\n );\n\n return (\n <CheckboxPrimitive {...props} asChild onCheckedChange={handleCheckedChange}>\n <motion.span\n className={cn(\n 'peer size-4 flex items-center justify-center shrink-0 rounded-[3px] border border-primary transition-colors duration-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground cursor-pointer',\n className\n )}\n data-slot=\"checkbox\"\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n {...props}\n >\n <CheckboxIndicatorPrimitive asChild forceMount>\n <motion.svg\n animate={isChecked ? 'checked' : 'unchecked'}\n className={cn('size-3', isChecked && 'text-primary-foreground')}\n data-slot=\"checkbox-indicator\"\n fill=\"none\"\n initial=\"unchecked\"\n stroke=\"currentColor\"\n strokeWidth=\"3.5\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n d=\"M4.5 12.75l6 6 9-13.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n variants={{\n checked: {\n pathLength: 1,\n opacity: 1,\n transition: {\n duration: 0.2,\n delay: 0.2,\n },\n },\n unchecked: {\n pathLength: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n }}\n />\n </motion.svg>\n </CheckboxIndicatorPrimitive>\n </motion.span>\n </CheckboxPrimitive>\n );\n}\n\nexport { Checkbox, type CheckboxProps };\n"],"mappings":";;;;;;;;;;AAgBA,SAASA,WAAS,EAAE,WAAW,gBAAiB,GAAG,SAAwB;CACzE,MAAM,CAAC,WAAW,gBAAgB,MAAM,SACtC,OAAO,WAAW,OAAO,kBAAkB,MAC5C;AAED,OAAM,gBAAgB;AACpB,MAAI,OAAO,YAAY,OAAW,cAAa,MAAM,QAAQ;IAC5D,CAAC,OAAO,QAAQ,CAAC;CAEpB,MAAM,sBAAsB,MAAM,aAC/B,YAAqB;AACpB,eAAa,QAAQ;AACrB,oBAAkB,QAAQ;IAE5B,CAAC,gBAAgB,CAClB;AAED,QACE,oBAACC;EAAkB,GAAI;EAAO;EAAQ,iBAAiB;YACrD,oBAAC,OAAO;GACN,WAAW,GACT,4WACA,UACD;GACD,aAAU;GACV,YAAY,EAAE,OAAO,MAAM;GAC3B,UAAU,EAAE,OAAO,KAAM;GACzB,GAAI;aAEJ,oBAACC;IAA2B;IAAQ;cAClC,oBAAC,OAAO;KACN,SAAS,YAAY,YAAY;KACjC,WAAW,GAAG,UAAU,aAAa,0BAA0B;KAC/D,aAAU;KACV,MAAK;KACL,SAAQ;KACR,QAAO;KACP,aAAY;KACZ,SAAQ;KACR,OAAM;eAEN,oBAAC,OAAO;MACN,GAAE;MACF,eAAc;MACd,gBAAe;MACf,UAAU;OACR,SAAS;QACP,YAAY;QACZ,SAAS;QACT,YAAY;SACV,UAAU;SACV,OAAO;SACR;QACF;OACD,WAAW;QACT,YAAY;QACZ,SAAS;QACT,YAAY,EACV,UAAU,IACX;QACF;OACF;OACD;MACS;KACc;IACjB;GACI"}
1
+ {"version":3,"file":"checkbox.js","names":["Checkbox","CheckboxPrimitive","CheckboxIndicatorPrimitive"],"sources":["../../src/components/ui/checkbox.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport {\n Indicator as CheckboxIndicatorPrimitive,\n Checkbox as CheckboxPrimitive,\n} from '@radix-ui/react-checkbox';\n\nimport { cn } from '@/lib/utils';\nimport type { HTMLMotionProps } from 'motion/react';\nimport * as motion from 'motion/react-m';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive> &\n HTMLMotionProps<'button'>;\n\nfunction Checkbox({ className, onCheckedChange, ...props }: CheckboxProps) {\n const [isChecked, setIsChecked] = React.useState(\n props?.checked ?? props?.defaultChecked ?? false\n );\n\n React.useEffect(() => {\n if (props?.checked !== undefined) setIsChecked(props.checked);\n }, [props?.checked]);\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n setIsChecked(checked);\n onCheckedChange?.(checked);\n },\n [onCheckedChange]\n );\n\n return (\n <CheckboxPrimitive {...props} asChild onCheckedChange={handleCheckedChange}>\n <motion.span\n className={cn(\n 'peer size-4 flex items-center justify-center shrink-0 rounded-[3px] border border-primary transition-colors duration-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground cursor-pointer',\n className\n )}\n data-slot=\"checkbox\"\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n {...props}\n >\n <CheckboxIndicatorPrimitive asChild forceMount>\n <motion.svg\n animate={isChecked ? 'checked' : 'unchecked'}\n className={cn('size-3', isChecked && 'text-primary-foreground')}\n data-slot=\"checkbox-indicator\"\n fill=\"none\"\n initial=\"unchecked\"\n stroke=\"currentColor\"\n strokeWidth=\"3.5\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n d=\"M4.5 12.75l6 6 9-13.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n variants={{\n checked: {\n pathLength: 1,\n opacity: 1,\n transition: {\n duration: 0.2,\n delay: 0.2,\n },\n },\n unchecked: {\n pathLength: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n }}\n />\n </motion.svg>\n </CheckboxIndicatorPrimitive>\n </motion.span>\n </CheckboxPrimitive>\n );\n}\n\nexport { Checkbox, type CheckboxProps };\n"],"mappings":";;;;;;;;;AAgBA,SAASA,WAAS,EAAE,WAAW,iBAAiB,GAAG,SAAwB;CACzE,MAAM,CAAC,WAAW,gBAAgB,MAAM,SACtC,OAAO,WAAW,OAAO,kBAAkB,MAC5C;AAED,OAAM,gBAAgB;AACpB,MAAI,OAAO,YAAY,OAAW,cAAa,MAAM,QAAQ;IAC5D,CAAC,OAAO,QAAQ,CAAC;CAEpB,MAAM,sBAAsB,MAAM,aAC/B,YAAqB;AACpB,eAAa,QAAQ;AACrB,oBAAkB,QAAQ;IAE5B,CAAC,gBAAgB,CAClB;AAED,QACE,oBAACC,UAAD;EAAmB,GAAI;EAAO;EAAQ,iBAAiB;YACrD,oBAAC,OAAO,MAAR;GACE,WAAW,GACT,4WACA,UACD;GACD,aAAU;GACV,YAAY,EAAE,OAAO,MAAM;GAC3B,UAAU,EAAE,OAAO,KAAM;GACzB,GAAI;aAEJ,oBAACC,WAAD;IAA4B;IAAQ;cAClC,oBAAC,OAAO,KAAR;KACE,SAAS,YAAY,YAAY;KACjC,WAAW,GAAG,UAAU,aAAa,0BAA0B;KAC/D,aAAU;KACV,MAAK;KACL,SAAQ;KACR,QAAO;KACP,aAAY;KACZ,SAAQ;KACR,OAAM;eAEN,oBAAC,OAAO,MAAR;MACE,GAAE;MACF,eAAc;MACd,gBAAe;MACf,UAAU;OACR,SAAS;QACP,YAAY;QACZ,SAAS;QACT,YAAY;SACV,UAAU;SACV,OAAO;SACR;QACF;OACD,WAAW;QACT,YAAY;QACZ,SAAS;QACT,YAAY,EACV,UAAU,IACX;QACF;OACF;MACD;KACS;IACc;GACjB;EACI"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import "react";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -8,14 +7,14 @@ import { SearchIcon } from "lucide-react";
8
7
  import { Command } from "cmdk";
9
8
 
10
9
  //#region src/components/ui/command.tsx
11
- function Command$1({ className,...props }) {
10
+ function Command$1({ className, ...props }) {
12
11
  return /* @__PURE__ */ jsx(Command, {
13
12
  className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className),
14
13
  "data-slot": "command",
15
14
  ...props
16
15
  });
17
16
  }
18
- function CommandInput({ className,...props }) {
17
+ function CommandInput({ className, ...props }) {
19
18
  return /* @__PURE__ */ jsxs("div", {
20
19
  className: "flex h-9 items-center gap-2 border-b px-3",
21
20
  "data-slot": "command-input-wrapper",
@@ -26,7 +25,7 @@ function CommandInput({ className,...props }) {
26
25
  })]
27
26
  });
28
27
  }
29
- function CommandList({ className,...props }) {
28
+ function CommandList({ className, ...props }) {
30
29
  return /* @__PURE__ */ jsx(Command.List, {
31
30
  className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
32
31
  "data-slot": "command-list",
@@ -40,14 +39,14 @@ function CommandEmpty({ ...props }) {
40
39
  ...props
41
40
  });
42
41
  }
43
- function CommandGroup({ className,...props }) {
42
+ function CommandGroup({ className, ...props }) {
44
43
  return /* @__PURE__ */ jsx(Command.Group, {
45
44
  className: cn("text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
46
45
  "data-slot": "command-group",
47
46
  ...props
48
47
  });
49
48
  }
50
- function CommandItem({ className,...props }) {
49
+ function CommandItem({ className, ...props }) {
51
50
  return /* @__PURE__ */ jsx(Command.Item, {
52
51
  className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
53
52
  "data-slot": "command-item",
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","names":["Command","CommandPrimitive"],"sources":["../../src/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n data-slot=\"command-input-wrapper\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className\n )}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n className=\"py-6 text-center text-sm\"\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"],"mappings":";;;;;;;;;;AASA,SAASA,UAAQ,EACf,UACA,GAAG,SAC6C;AAChD,QACE,oBAACC;EACC,WAAW,GACT,6FACA,UACD;EACD,aAAU;EACV,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,UACA,GAAG,SACmD;AACtD,QACE,qBAAC;EACC,WAAU;EACV,aAAU;aAEV,oBAAC,cAAW,WAAU,+BAA+B,EACrD,oBAACA,QAAiB;GAChB,WAAW,GACT,4JACA,UACD;GACD,aAAU;GACV,GAAI;IACJ;GACE;;AAIV,SAAS,YAAY,EACnB,UACA,GAAG,SACkD;AACrD,QACE,oBAACA,QAAiB;EAChB,WAAW,GACT,+DACA,UACD;EACD,aAAU;EACV,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,GAAG,SACmD;AACtD,QACE,oBAACA,QAAiB;EAChB,WAAU;EACV,aAAU;EACV,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,UACA,GAAG,SACmD;AACtD,QACE,oBAACA,QAAiB;EAChB,WAAW,GACT,2NACA,UACD;EACD,aAAU;EACV,GAAI;GACJ;;AAiBN,SAAS,YAAY,EACnB,UACA,GAAG,SACkD;AACrD,QACE,oBAACA,QAAiB;EAChB,WAAW,GACT,uYACA,UACD;EACD,aAAU;EACV,GAAI;GACJ"}
1
+ {"version":3,"file":"command.js","names":["Command","CommandPrimitive"],"sources":["../../src/components/ui/command.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n data-slot=\"command-input-wrapper\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className\n )}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n className=\"py-6 text-center text-sm\"\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"],"mappings":";;;;;;;;;AASA,SAASA,UAAQ,EACf,WACA,GAAG,SAC6C;AAChD,QACE,oBAACC,SAAD;EACE,WAAW,GACT,6FACA,UACD;EACD,aAAU;EACV,GAAI;EACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,qBAAC,OAAD;EACE,WAAU;EACV,aAAU;YAFZ,CAIE,oBAAC,YAAD,EAAY,WAAU,8BAA+B,GACrD,oBAACA,QAAiB,OAAlB;GACE,WAAW,GACT,4JACA,UACD;GACD,aAAU;GACV,GAAI;GACJ,EACE;;;AAIV,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAACA,QAAiB,MAAlB;EACE,WAAW,GACT,+DACA,UACD;EACD,aAAU;EACV,GAAI;EACJ;;AAIN,SAAS,aAAa,EACpB,GAAG,SACmD;AACtD,QACE,oBAACA,QAAiB,OAAlB;EACE,WAAU;EACV,aAAU;EACV,GAAI;EACJ;;AAIN,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;AACtD,QACE,oBAACA,QAAiB,OAAlB;EACE,WAAW,GACT,2NACA,UACD;EACD,aAAU;EACV,GAAI;EACJ;;AAiBN,SAAS,YAAY,EACnB,WACA,GAAG,SACkD;AACrD,QACE,oBAACA,QAAiB,MAAlB;EACE,WAAW,GACT,uYACA,UACD;EACD,aAAU;EACV,GAAI;EACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-help.js","names":["ContentHelp: React.FC<{\n children: React.ReactNode;\n help?: React.ReactNode | string;\n className?: string;\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n}>","TooltipPortal"],"sources":["../../src/components/ui/content-help.tsx"],"sourcesContent":["import { Portal as TooltipPortal } from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/lib/utils';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\n\nconst ContentHelp: React.FC<{\n children: React.ReactNode;\n help?: React.ReactNode | string;\n className?: string;\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n}> = ({ children, help, className, side = 'top', sideOffset = 10 }) => {\n return help ? (\n <Tooltip delayDuration={250}>\n <TooltipTrigger asChild>{children as any}</TooltipTrigger>\n <TooltipPortal>\n <TooltipContent\n className={cn('flex items-center px-2 leading-none', className)}\n side={side}\n sideOffset={10}\n >\n <p className=\"w-full text-wrap whitespace-break-spaces\">{help}</p>\n </TooltipContent>\n </TooltipPortal>\n </Tooltip>\n ) : (\n children\n );\n};\n\nexport { ContentHelp };\n"],"mappings":";;;;;;AAKA,MAAMA,eAMA,EAAE,UAAU,MAAM,WAAW,OAAO,OAAO,aAAa,SAAS;AACrE,QAAO,OACL,qBAAC;EAAQ,eAAe;aACtB,oBAAC;GAAe;GAAS;IAAiC,EAC1D,oBAACC,oBACC,oBAAC;GACC,WAAW,GAAG,uCAAuC,UAAU;GACzD;GACN,YAAY;aAEZ,oBAAC;IAAE,WAAU;cAA4C;KAAS;IACnD,GACH;GACR,GAEV"}
1
+ {"version":3,"file":"content-help.js","names":["TooltipPortal"],"sources":["../../src/components/ui/content-help.tsx"],"sourcesContent":["import { Portal as TooltipPortal } from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/lib/utils';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\n\nconst ContentHelp: React.FC<{\n children: React.ReactNode;\n help?: React.ReactNode | string;\n className?: string;\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n}> = ({ children, help, className, side = 'top', sideOffset = 10 }) => {\n return help ? (\n <Tooltip delayDuration={250}>\n <TooltipTrigger asChild>{children as any}</TooltipTrigger>\n <TooltipPortal>\n <TooltipContent\n className={cn('flex items-center px-2 leading-none', className)}\n side={side}\n sideOffset={10}\n >\n <p className=\"w-full text-wrap whitespace-break-spaces\">{help}</p>\n </TooltipContent>\n </TooltipPortal>\n </Tooltip>\n ) : (\n children\n );\n};\n\nexport { ContentHelp };\n"],"mappings":";;;;;;AAKA,MAAM,eAMA,EAAE,UAAU,MAAM,WAAW,OAAO,OAAO,aAAa,SAAS;AACrE,QAAO,OACL,qBAAC,SAAD;EAAS,eAAe;YAAxB,CACE,oBAAC,gBAAD;GAAgB;GAAS;GAAiC,GAC1D,oBAACA,QAAD,YACE,oBAAC,gBAAD;GACE,WAAW,GAAG,uCAAuC,UAAU;GACzD;GACN,YAAY;aAEZ,oBAAC,KAAD;IAAG,WAAU;cAA4C;IAAS;GACnD,GACH,EACR;MAEV"}
package/dist/ui/form.js CHANGED
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import { Label } from "./label.js";
6
5
  import { useFormContext, useFormState } from "react-hook-form";
@@ -34,7 +33,7 @@ const useFormField = () => {
34
33
  };
35
34
  };
36
35
  const FormItemContext = React.createContext({});
37
- function FormItem({ className,...props }) {
36
+ function FormItem({ className, ...props }) {
38
37
  const id = React.useId();
39
38
  return /* @__PURE__ */ jsx(FormItemContext.Provider, {
40
39
  value: { id },
@@ -45,7 +44,7 @@ function FormItem({ className,...props }) {
45
44
  })
46
45
  });
47
46
  }
48
- function FormLabel({ className,...props }) {
47
+ function FormLabel({ className, ...props }) {
49
48
  const { error, formItemId } = useFormField();
50
49
  return /* @__PURE__ */ jsx(Label, {
51
50
  className: cn("data-[error=true]:text-destructive", className),
@@ -55,7 +54,7 @@ function FormLabel({ className,...props }) {
55
54
  ...props
56
55
  });
57
56
  }
58
- function FormDescription({ className,...props }) {
57
+ function FormDescription({ className, ...props }) {
59
58
  const { formDescriptionId } = useFormField();
60
59
  return /* @__PURE__ */ jsx("p", {
61
60
  className: cn("text-muted-foreground text-sm", className),
@@ -64,7 +63,7 @@ function FormDescription({ className,...props }) {
64
63
  ...props
65
64
  });
66
65
  }
67
- function FormMessage({ className,...props }) {
66
+ function FormMessage({ className, ...props }) {
68
67
  const { error, formMessageId } = useFormField();
69
68
  const body = error ? String(error?.message ?? "") : props.children;
70
69
  if (!body) return null;
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","names":[],"sources":["../../src/components/ui/form.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\n\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport { Label } from '@/components/ui/label';\n\nimport { cn } from '@/lib/utils';\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nexport const FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n);\n\nconst FormContext = React.createContext<{\n onSubmit?: (data?: FieldValues) => void;\n helper?: Record<string, string>;\n}>({});\n\nexport const useFormContextSubmit = () => {\n const context = React.useContext(FormContext);\n if (!context) {\n return {};\n }\n return context;\n};\n\nconst Form: React.FC<\n React.ComponentProps<typeof FormProvider<FieldValues>> & {\n onSubmit?: (data?: FieldValues) => void;\n helper?: Record<string, string>;\n }\n> = ({ onSubmit, helper, ...props }) => {\n return (\n <FormContext.Provider value={{ onSubmit, helper }}>\n <FormProvider {...props} />\n </FormContext.Provider>\n );\n};\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n className={cn('flex flex-col gap-1', className)}\n data-slot=\"form-item\"\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n className={cn('data-[error=true]:text-destructive', className)}\n data-error={!!error}\n data-slot=\"form-label\"\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n className={cn('text-muted-foreground text-sm', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-destructive text-xs', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"mappings":";;;;;;;;;;;AA2BA,MAAa,mBAAmB,MAAM,cACpC,EAAE,CACH;AAED,MAAM,cAAc,MAAM,cAGvB,EAAE,CAAC;AAEN,MAAa,6BAA6B;CACxC,MAAM,UAAU,MAAM,WAAW,YAAY;AAC7C,KAAI,CAAC,QACH,QAAO,EAAE;AAEX,QAAO;;AA6BT,MAAM,qBAAqB;CACzB,MAAM,eAAe,MAAM,WAAW,iBAAiB;CACvD,MAAM,cAAc,MAAM,WAAW,gBAAgB;CACrD,MAAM,EAAE,kBAAkB,gBAAgB;CAC1C,MAAM,YAAY,aAAa,EAAE,MAAM,aAAa,MAAM,CAAC;CAC3D,MAAM,aAAa,cAAc,aAAa,MAAM,UAAU;AAE9D,KAAI,CAAC,aACH,OAAM,IAAI,MAAM,iDAAiD;CAGnE,MAAM,EAAE,OAAO;AAEf,QAAO;EACL;EACA,MAAM,aAAa;EACnB,YAAY,GAAG,GAAG;EAClB,mBAAmB,GAAG,GAAG;EACzB,eAAe,GAAG,GAAG;EACrB,GAAG;EACJ;;AAOH,MAAM,kBAAkB,MAAM,cAC5B,EAAE,CACH;AAED,SAAS,SAAS,EAAE,UAAW,GAAG,SAAsC;CACtE,MAAM,KAAK,MAAM,OAAO;AAExB,QACE,oBAAC,gBAAgB;EAAS,OAAO,EAAE,IAAI;YACrC,oBAAC;GACC,WAAW,GAAG,uBAAuB,UAAU;GAC/C,aAAU;GACV,GAAI;IACJ;GACuB;;AAI/B,SAAS,UAAU,EACjB,UACA,GAAG,SACgD;CACnD,MAAM,EAAE,OAAO,eAAe,cAAc;AAE5C,QACE,oBAAC;EACC,WAAW,GAAG,sCAAsC,UAAU;EAC9D,cAAY,CAAC,CAAC;EACd,aAAU;EACV,SAAS;EACT,GAAI;GACJ;;AAuBN,SAAS,gBAAgB,EAAE,UAAW,GAAG,SAAoC;CAC3E,MAAM,EAAE,sBAAsB,cAAc;AAE5C,QACE,oBAAC;EACC,WAAW,GAAG,iCAAiC,UAAU;EACzD,aAAU;EACV,IAAI;EACJ,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,UAAW,GAAG,SAAoC;CACvE,MAAM,EAAE,OAAO,kBAAkB,cAAc;CAC/C,MAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,GAAG,GAAG,MAAM;AAE1D,KAAI,CAAC,KACH,QAAO;AAGT,QACE,oBAAC;EACC,WAAW,GAAG,4BAA4B,UAAU;EACpD,aAAU;EACV,IAAI;EACJ,GAAI;YAEH;GACC"}
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../src/components/ui/form.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\n\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport { Label } from '@/components/ui/label';\n\nimport { cn } from '@/lib/utils';\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nexport const FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n);\n\nconst FormContext = React.createContext<{\n onSubmit?: (data?: FieldValues) => void;\n helper?: Record<string, string>;\n}>({});\n\nexport const useFormContextSubmit = () => {\n const context = React.useContext(FormContext);\n if (!context) {\n return {};\n }\n return context;\n};\n\nconst Form: React.FC<\n React.ComponentProps<typeof FormProvider<FieldValues>> & {\n onSubmit?: (data?: FieldValues) => void;\n helper?: Record<string, string>;\n }\n> = ({ onSubmit, helper, ...props }) => {\n return (\n <FormContext.Provider value={{ onSubmit, helper }}>\n <FormProvider {...props} />\n </FormContext.Provider>\n );\n};\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n className={cn('flex flex-col gap-1', className)}\n data-slot=\"form-item\"\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n className={cn('data-[error=true]:text-destructive', className)}\n data-error={!!error}\n data-slot=\"form-label\"\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n className={cn('text-muted-foreground text-sm', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-destructive text-xs', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,mBAAmB,MAAM,cACpC,EAAE,CACH;AAED,MAAM,cAAc,MAAM,cAGvB,EAAE,CAAC;AAEN,MAAa,6BAA6B;CACxC,MAAM,UAAU,MAAM,WAAW,YAAY;AAC7C,KAAI,CAAC,QACH,QAAO,EAAE;AAEX,QAAO;;AA6BT,MAAM,qBAAqB;CACzB,MAAM,eAAe,MAAM,WAAW,iBAAiB;CACvD,MAAM,cAAc,MAAM,WAAW,gBAAgB;CACrD,MAAM,EAAE,kBAAkB,gBAAgB;CAC1C,MAAM,YAAY,aAAa,EAAE,MAAM,aAAa,MAAM,CAAC;CAC3D,MAAM,aAAa,cAAc,aAAa,MAAM,UAAU;AAE9D,KAAI,CAAC,aACH,OAAM,IAAI,MAAM,iDAAiD;CAGnE,MAAM,EAAE,OAAO;AAEf,QAAO;EACL;EACA,MAAM,aAAa;EACnB,YAAY,GAAG,GAAG;EAClB,mBAAmB,GAAG,GAAG;EACzB,eAAe,GAAG,GAAG;EACrB,GAAG;EACJ;;AAOH,MAAM,kBAAkB,MAAM,cAC5B,EAAE,CACH;AAED,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;CACtE,MAAM,KAAK,MAAM,OAAO;AAExB,QACE,oBAAC,gBAAgB,UAAjB;EAA0B,OAAO,EAAE,IAAI;YACrC,oBAAC,OAAD;GACE,WAAW,GAAG,uBAAuB,UAAU;GAC/C,aAAU;GACV,GAAI;GACJ;EACuB;;AAI/B,SAAS,UAAU,EACjB,WACA,GAAG,SACgD;CACnD,MAAM,EAAE,OAAO,eAAe,cAAc;AAE5C,QACE,oBAAC,OAAD;EACE,WAAW,GAAG,sCAAsC,UAAU;EAC9D,cAAY,CAAC,CAAC;EACd,aAAU;EACV,SAAS;EACT,GAAI;EACJ;;AAuBN,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,MAAM,EAAE,sBAAsB,cAAc;AAE5C,QACE,oBAAC,KAAD;EACE,WAAW,GAAG,iCAAiC,UAAU;EACzD,aAAU;EACV,IAAI;EACJ,GAAI;EACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAoC;CACvE,MAAM,EAAE,OAAO,kBAAkB,cAAc;CAC/C,MAAM,OAAO,QAAQ,OAAO,OAAO,WAAW,GAAG,GAAG,MAAM;AAE1D,KAAI,CAAC,KACH,QAAO;AAGT,QACE,oBAAC,KAAD;EACE,WAAW,GAAG,4BAA4B,UAAU;EACpD,aAAU;EACV,IAAI;EACJ,GAAI;YAEH;EACC"}
@@ -5,7 +5,7 @@ import { jsx } from "react/jsx-runtime";
5
5
  import { isValid, parse } from "date-fns";
6
6
 
7
7
  //#region src/components/ui/input-date-field.tsx
8
- const InputDateField = ({ field, disabled, onFinish, id, dateOnly,...props }) => {
8
+ const InputDateField = ({ field, disabled, onFinish, id, dateOnly, ...props }) => {
9
9
  const [inputValue, setInputValue] = useState("");
10
10
  const handleChange = (e) => {
11
11
  const parts = e.target.value.split("/");
@@ -1 +1 @@
1
- {"version":3,"file":"input-date-field.js","names":["InputDateField: React.FC<\n {\n field: ControllerRenderProps<any, string>;\n disabled?: boolean;\n onFinish?: () => void;\n id?: string;\n dateOnly?: boolean;\n } & ComponentProps<typeof Input>\n>"],"sources":["../../src/components/ui/input-date-field.tsx"],"sourcesContent":["import { ComponentProps, useEffect, useState } from 'react';\n\nimport type { ControllerRenderProps } from 'react-hook-form';\nimport withMask from '@/hooks/with-mask';\n\nimport { isValid, parse } from 'date-fns';\nimport { Input } from './input';\n\nconst InputDateField: React.FC<\n {\n field: ControllerRenderProps<any, string>;\n disabled?: boolean;\n onFinish?: () => void;\n id?: string;\n dateOnly?: boolean;\n } & ComponentProps<typeof Input>\n> = ({ field, disabled, onFinish, id, dateOnly, ...props }) => {\n const [inputValue, setInputValue] = useState('');\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const parts = e.target.value.split('/');\n let day = parts[0];\n let month = parts[1];\n if (day && Number(day) > 31) {\n parts[0] = day.slice(0, 1).padStart(2, '0');\n }\n if (month && Number(month) > 12) {\n parts[1] = month.slice(0, 1).padStart(2, '0');\n }\n\n const newValue = parts.join('/');\n setInputValue(parts.join('/'));\n\n if (newValue.length === 10) {\n const parsedDate = parse(newValue, 'dd/MM/yyyy', new Date());\n if (isValid(parsedDate)) {\n if (dateOnly) {\n const year = parsedDate.getFullYear();\n const monthStr = String(parsedDate.getMonth() + 1).padStart(2, '0');\n const dayStr = String(parsedDate.getDate()).padStart(2, '0');\n field.onChange(`${year}-${monthStr}-${dayStr}`);\n } else {\n field.onChange(parsedDate);\n }\n onFinish?.();\n }\n }\n };\n\n useEffect(() => {\n if (field.value) {\n const value =\n typeof field.value === 'string'\n ? parse(field.value, 'yyyy-MM-dd', new Date())\n : field.value;\n\n if (isValid(value)) {\n setInputValue(value.toLocaleDateString('pt-BR'));\n }\n } else {\n setInputValue('');\n }\n }, [field.value]);\n\n return (\n <Input\n autoComplete=\"off\"\n className=\"w-full outline-hidden\"\n id={id}\n onChange={handleChange}\n placeholder=\"Selecione a data\"\n readOnly={disabled}\n ref={\n withMask('99/99/9999', {\n undoOnEscape: false,\n }) as any\n }\n value={inputValue}\n {...props}\n />\n );\n};\n\nexport { InputDateField };\n"],"mappings":";;;;;;;AAQA,MAAMA,kBAQD,EAAE,OAAO,UAAU,UAAU,IAAI,SAAU,GAAG,YAAY;CAC7D,MAAM,CAAC,YAAY,iBAAiB,SAAS,GAAG;CAEhD,MAAM,gBAAgB,MAA2C;EAC/D,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI;EACvC,IAAI,MAAM,MAAM;EAChB,IAAI,QAAQ,MAAM;AAClB,MAAI,OAAO,OAAO,IAAI,GAAG,GACvB,OAAM,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;AAE7C,MAAI,SAAS,OAAO,MAAM,GAAG,GAC3B,OAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;EAG/C,MAAM,WAAW,MAAM,KAAK,IAAI;AAChC,gBAAc,MAAM,KAAK,IAAI,CAAC;AAE9B,MAAI,SAAS,WAAW,IAAI;GAC1B,MAAM,aAAa,MAAM,UAAU,8BAAc,IAAI,MAAM,CAAC;AAC5D,OAAI,QAAQ,WAAW,EAAE;AACvB,QAAI,UAAU;KACZ,MAAM,OAAO,WAAW,aAAa;KACrC,MAAM,WAAW,OAAO,WAAW,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;KACnE,MAAM,SAAS,OAAO,WAAW,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI;AAC5D,WAAM,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS;UAE/C,OAAM,SAAS,WAAW;AAE5B,gBAAY;;;;AAKlB,iBAAgB;AACd,MAAI,MAAM,OAAO;GACf,MAAM,QACJ,OAAO,MAAM,UAAU,WACnB,MAAM,MAAM,OAAO,8BAAc,IAAI,MAAM,CAAC,GAC5C,MAAM;AAEZ,OAAI,QAAQ,MAAM,CAChB,eAAc,MAAM,mBAAmB,QAAQ,CAAC;QAGlD,eAAc,GAAG;IAElB,CAAC,MAAM,MAAM,CAAC;AAEjB,QACE,oBAAC;EACC,cAAa;EACb,WAAU;EACN;EACJ,UAAU;EACV,aAAY;EACZ,UAAU;EACV,KACE,SAAS,cAAc,EACrB,cAAc,OACf,CAAC;EAEJ,OAAO;EACP,GAAI;GACJ"}
1
+ {"version":3,"file":"input-date-field.js","names":[],"sources":["../../src/components/ui/input-date-field.tsx"],"sourcesContent":["import { ComponentProps, useEffect, useState } from 'react';\n\nimport type { ControllerRenderProps } from 'react-hook-form';\nimport withMask from '@/hooks/with-mask';\n\nimport { isValid, parse } from 'date-fns';\nimport { Input } from './input';\n\nconst InputDateField: React.FC<\n {\n field: ControllerRenderProps<any, string>;\n disabled?: boolean;\n onFinish?: () => void;\n id?: string;\n dateOnly?: boolean;\n } & ComponentProps<typeof Input>\n> = ({ field, disabled, onFinish, id, dateOnly, ...props }) => {\n const [inputValue, setInputValue] = useState('');\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const parts = e.target.value.split('/');\n let day = parts[0];\n let month = parts[1];\n if (day && Number(day) > 31) {\n parts[0] = day.slice(0, 1).padStart(2, '0');\n }\n if (month && Number(month) > 12) {\n parts[1] = month.slice(0, 1).padStart(2, '0');\n }\n\n const newValue = parts.join('/');\n setInputValue(parts.join('/'));\n\n if (newValue.length === 10) {\n const parsedDate = parse(newValue, 'dd/MM/yyyy', new Date());\n if (isValid(parsedDate)) {\n if (dateOnly) {\n const year = parsedDate.getFullYear();\n const monthStr = String(parsedDate.getMonth() + 1).padStart(2, '0');\n const dayStr = String(parsedDate.getDate()).padStart(2, '0');\n field.onChange(`${year}-${monthStr}-${dayStr}`);\n } else {\n field.onChange(parsedDate);\n }\n onFinish?.();\n }\n }\n };\n\n useEffect(() => {\n if (field.value) {\n const value =\n typeof field.value === 'string'\n ? parse(field.value, 'yyyy-MM-dd', new Date())\n : field.value;\n\n if (isValid(value)) {\n setInputValue(value.toLocaleDateString('pt-BR'));\n }\n } else {\n setInputValue('');\n }\n }, [field.value]);\n\n return (\n <Input\n autoComplete=\"off\"\n className=\"w-full outline-hidden\"\n id={id}\n onChange={handleChange}\n placeholder=\"Selecione a data\"\n readOnly={disabled}\n ref={\n withMask('99/99/9999', {\n undoOnEscape: false,\n }) as any\n }\n value={inputValue}\n {...props}\n />\n );\n};\n\nexport { InputDateField };\n"],"mappings":";;;;;;;AAQA,MAAM,kBAQD,EAAE,OAAO,UAAU,UAAU,IAAI,UAAU,GAAG,YAAY;CAC7D,MAAM,CAAC,YAAY,iBAAiB,SAAS,GAAG;CAEhD,MAAM,gBAAgB,MAA2C;EAC/D,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI;EACvC,IAAI,MAAM,MAAM;EAChB,IAAI,QAAQ,MAAM;AAClB,MAAI,OAAO,OAAO,IAAI,GAAG,GACvB,OAAM,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;AAE7C,MAAI,SAAS,OAAO,MAAM,GAAG,GAC3B,OAAM,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;EAG/C,MAAM,WAAW,MAAM,KAAK,IAAI;AAChC,gBAAc,MAAM,KAAK,IAAI,CAAC;AAE9B,MAAI,SAAS,WAAW,IAAI;GAC1B,MAAM,aAAa,MAAM,UAAU,8BAAc,IAAI,MAAM,CAAC;AAC5D,OAAI,QAAQ,WAAW,EAAE;AACvB,QAAI,UAAU;KACZ,MAAM,OAAO,WAAW,aAAa;KACrC,MAAM,WAAW,OAAO,WAAW,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI;KACnE,MAAM,SAAS,OAAO,WAAW,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI;AAC5D,WAAM,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS;UAE/C,OAAM,SAAS,WAAW;AAE5B,gBAAY;;;;AAKlB,iBAAgB;AACd,MAAI,MAAM,OAAO;GACf,MAAM,QACJ,OAAO,MAAM,UAAU,WACnB,MAAM,MAAM,OAAO,8BAAc,IAAI,MAAM,CAAC,GAC5C,MAAM;AAEZ,OAAI,QAAQ,MAAM,CAChB,eAAc,MAAM,mBAAmB,QAAQ,CAAC;QAGlD,eAAc,GAAG;IAElB,CAAC,MAAM,MAAM,CAAC;AAEjB,QACE,oBAAC,OAAD;EACE,cAAa;EACb,WAAU;EACN;EACJ,UAAU;EACV,aAAY;EACZ,UAAU;EACV,KACE,SAAS,cAAc,EACrB,cAAc,OACf,CAAC;EAEJ,OAAO;EACP,GAAI;EACJ"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import { useFormContextSubmit } from "./form.js";
6
5
  import { ContentHelp } from "./content-help.js";
@@ -1 +1 @@
1
- {"version":3,"file":"input-help.js","names":["InputHelp: React.FC<{\n help?: string;\n name?: string;\n className?: string;\n}>"],"sources":["../../src/components/ui/input-help.tsx"],"sourcesContent":["'use client';\n\nimport { ContentHelp } from '@/components/ui/content-help';\n\nimport { Info } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { useFormContextSubmit } from './form';\n\nconst InputHelp: React.FC<{\n help?: string;\n name?: string;\n className?: string;\n}> = ({ help, name, className }) => {\n const { helper } = useFormContextSubmit();\n const helpText = (name && helper?.[name]) || help;\n\n return (\n helpText && (\n <ContentHelp\n className={cn(\n 'whitespace-pre-line leading-relaxed max-w-96 text-[13px]'\n )}\n help={helpText}\n >\n <button\n className={cn('mb-0.5 size-fit hover:bg-muted rounded-sm', className)}\n type=\"button\"\n >\n <Info className=\"size-3.5\" />\n </button>\n </ContentHelp>\n )\n );\n};\nexport { InputHelp };\n"],"mappings":";;;;;;;;;;AASA,MAAMA,aAIA,EAAE,MAAM,MAAM,gBAAgB;CAClC,MAAM,EAAE,WAAW,sBAAsB;CACzC,MAAM,WAAY,QAAQ,SAAS,SAAU;AAE7C,QACE,YACE,oBAAC;EACC,WAAW,GACT,2DACD;EACD,MAAM;YAEN,oBAAC;GACC,WAAW,GAAG,6CAA6C,UAAU;GACrE,MAAK;aAEL,oBAAC,QAAK,WAAU,aAAa;IACtB;GACG"}
1
+ {"version":3,"file":"input-help.js","names":[],"sources":["../../src/components/ui/input-help.tsx"],"sourcesContent":["'use client';\n\nimport { ContentHelp } from '@/components/ui/content-help';\n\nimport { Info } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { useFormContextSubmit } from './form';\n\nconst InputHelp: React.FC<{\n help?: string;\n name?: string;\n className?: string;\n}> = ({ help, name, className }) => {\n const { helper } = useFormContextSubmit();\n const helpText = (name && helper?.[name]) || help;\n\n return (\n helpText && (\n <ContentHelp\n className={cn(\n 'whitespace-pre-line leading-relaxed max-w-96 text-[13px]'\n )}\n help={helpText}\n >\n <button\n className={cn('mb-0.5 size-fit hover:bg-muted rounded-sm', className)}\n type=\"button\"\n >\n <Info className=\"size-3.5\" />\n </button>\n </ContentHelp>\n )\n );\n};\nexport { InputHelp };\n"],"mappings":";;;;;;;;;AASA,MAAM,aAIA,EAAE,MAAM,MAAM,gBAAgB;CAClC,MAAM,EAAE,WAAW,sBAAsB;CACzC,MAAM,WAAY,QAAQ,SAAS,SAAU;AAE7C,QACE,YACE,oBAAC,aAAD;EACE,WAAW,GACT,2DACD;EACD,MAAM;YAEN,oBAAC,UAAD;GACE,WAAW,GAAG,6CAA6C,UAAU;GACrE,MAAK;aAEL,oBAAC,MAAD,EAAM,WAAU,YAAa;GACtB;EACG"}
package/dist/ui/input.js CHANGED
@@ -2,7 +2,7 @@ import { cn } from "../src/lib/utils.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ui/input.tsx
5
- function Input({ className, type,...props }) {
5
+ function Input({ className, type, ...props }) {
6
6
  return /* @__PURE__ */ jsx("input", {
7
7
  className: cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/75 focus-visible:ring-[2px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive ring-offset-[2px] transition-all duration-300", className),
8
8
  "data-slot": "input",
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","names":[],"sources":["../../src/components/ui/input.tsx"],"sourcesContent":["import type * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n className={cn(\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/75 focus-visible:ring-[2px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive ring-offset-[2px] transition-all duration-300',\n className\n )}\n data-slot=\"input\"\n type={type}\n {...props}\n />\n );\n}\n\nexport { Input };\n"],"mappings":";;;;AAIA,SAAS,MAAM,EAAE,WAAW,KAAM,GAAG,SAAwC;AAC3E,QACE,oBAAC;EACC,WAAW,GACT,mcACA,iFACA,wJACA,UACD;EACD,aAAU;EACJ;EACN,GAAI;GACJ"}
1
+ {"version":3,"file":"input.js","names":[],"sources":["../../src/components/ui/input.tsx"],"sourcesContent":["import type * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n className={cn(\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/75 focus-visible:ring-[2px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive ring-offset-[2px] transition-all duration-300',\n className\n )}\n data-slot=\"input\"\n type={type}\n {...props}\n />\n );\n}\n\nexport { Input };\n"],"mappings":";;;;AAIA,SAAS,MAAM,EAAE,WAAW,MAAM,GAAG,SAAwC;AAC3E,QACE,oBAAC,SAAD;EACE,WAAW,GACT,mcACA,iFACA,wJACA,UACD;EACD,aAAU;EACJ;EACN,GAAI;EACJ"}
package/dist/ui/label.js CHANGED
@@ -1,13 +1,12 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import "react";
6
5
  import * as LabelPrimitive from "@radix-ui/react-label";
7
6
  import { jsx } from "react/jsx-runtime";
8
7
 
9
8
  //#region src/components/ui/label.tsx
10
- function Label({ className,...props }) {
9
+ function Label({ className, ...props }) {
11
10
  return /* @__PURE__ */ jsx(LabelPrimitive.Root, {
12
11
  className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
13
12
  "data-slot": "label",
@@ -1 +1 @@
1
- {"version":3,"file":"label.js","names":[],"sources":["../../src/components/ui/label.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '@/lib/utils';\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n className={cn(\n 'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n className\n )}\n data-slot=\"label\"\n {...props}\n />\n );\n}\n\nexport { Label };\n"],"mappings":";;;;;;;;;AAQA,SAAS,MAAM,EACb,UACA,GAAG,SACgD;AACnD,QACE,oBAAC,eAAe;EACd,WAAW,GACT,uNACA,UACD;EACD,aAAU;EACV,GAAI;GACJ"}
1
+ {"version":3,"file":"label.js","names":[],"sources":["../../src/components/ui/label.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '@/lib/utils';\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n className={cn(\n 'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n className\n )}\n data-slot=\"label\"\n {...props}\n />\n );\n}\n\nexport { Label };\n"],"mappings":";;;;;;;;AAQA,SAAS,MAAM,EACb,WACA,GAAG,SACgD;AACnD,QACE,oBAAC,eAAe,MAAhB;EACE,WAAW,GACT,uNACA,UACD;EACD,aAAU;EACV,GAAI;EACJ"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import { Fragment, useMemo } from "react";
6
5
  import { jsx } from "react/jsx-runtime";
@@ -19,7 +18,7 @@ function PopoverTrigger({ ...props }) {
19
18
  ...props
20
19
  });
21
20
  }
22
- function PopoverContent({ className, align = "center", sideOffset = 4, withPortal = false,...props }) {
21
+ function PopoverContent({ className, align = "center", sideOffset = 4, withPortal = false, ...props }) {
23
22
  return /* @__PURE__ */ jsx(useMemo(() => withPortal ? PopoverPrimitive.Portal : Fragment, [withPortal]), { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
24
23
  align,
25
24
  className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","names":[],"sources":["../../src/components/ui/popover.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, useMemo } from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n withPortal = false,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n withPortal?: boolean;\n}) {\n const Container = useMemo(() => withPortal ? PopoverPrimitive.Portal : (Fragment as any), [withPortal]);\n\n return (\n <Container>\n <PopoverPrimitive.Content\n align={align}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n data-slot=\"popover-content\"\n sideOffset={sideOffset}\n {...props}\n />\n </Container>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"],"mappings":";;;;;;;;;AAQA,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QAAO,oBAAC,iBAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,oBAAC,iBAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,aAAa,MACb,GAAG,SAGF;AAGD,QACE,oBAHgB,cAAc,aAAa,iBAAiB,SAAU,UAAkB,CAAC,WAAW,CAAC,cAInG,oBAAC,iBAAiB;EACT;EACP,WAAW,GACT,keACA,UACD;EACD,aAAU;EACE;EACZ,GAAI;GACJ,GACQ"}
1
+ {"version":3,"file":"popover.js","names":[],"sources":["../../src/components/ui/popover.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, useMemo } from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n withPortal = false,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n withPortal?: boolean;\n}) {\n const Container = useMemo(() => withPortal ? PopoverPrimitive.Portal : (Fragment as any), [withPortal]);\n\n return (\n <Container>\n <PopoverPrimitive.Content\n align={align}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n data-slot=\"popover-content\"\n sideOffset={sideOffset}\n {...props}\n />\n </Container>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"],"mappings":";;;;;;;;AAQA,SAAS,QAAQ,EACf,GAAG,SACkD;AACrD,QAAO,oBAAC,iBAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;EAAS;;AAGjE,SAAS,eAAe,EACtB,GAAG,SACqD;AACxD,QAAO,oBAAC,iBAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;EAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,aAAa,OACb,GAAG,SAGF;AAGD,QACE,oBAHgB,cAAc,aAAa,iBAAiB,SAAU,UAAkB,CAAC,WAAW,CAG1F,EAAV,YACE,oBAAC,iBAAiB,SAAlB;EACS;EACP,WAAW,GACT,keACA,UACD;EACD,aAAU;EACE;EACZ,GAAI;EACJ,GACQ"}
@@ -1,13 +1,12 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import "react";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
7
6
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
8
7
 
9
8
  //#region src/components/ui/scroll-area.tsx
10
- function ScrollBar({ className, orientation = "vertical",...props }) {
9
+ function ScrollBar({ className, orientation = "vertical", ...props }) {
11
10
  return /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, {
12
11
  className: cn("flex touch-none p-px transition-colors select-none", orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", className),
13
12
  "data-slot": "scroll-area-scrollbar",
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.js","names":[],"sources":["../../src/components/ui/scroll-area.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n className={cn('relative', className)}\n data-slot=\"scroll-area\"\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n className={cn(\n 'flex touch-none p-px transition-colors select-none',\n orientation === 'vertical' &&\n 'h-full w-2.5 border-l border-l-transparent',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent',\n className\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className=\"bg-border relative flex-1 rounded-full\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n"],"mappings":";;;;;;;;;AA+BA,SAAS,UAAU,EACjB,WACA,cAAc,WACd,GAAG,SACoE;AACvE,QACE,oBAAC,oBAAoB;EACnB,WAAW,GACT,sDACA,gBAAgB,cACd,8CACF,gBAAgB,gBACd,gDACF,UACD;EACD,aAAU;EACG;EACb,GAAI;YAEJ,oBAAC,oBAAoB;GACnB,WAAU;GACV,aAAU;IACV;GACsC"}
1
+ {"version":3,"file":"scroll-area.js","names":[],"sources":["../../src/components/ui/scroll-area.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n className={cn('relative', className)}\n data-slot=\"scroll-area\"\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n className={cn(\n 'flex touch-none p-px transition-colors select-none',\n orientation === 'vertical' &&\n 'h-full w-2.5 border-l border-l-transparent',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent',\n className\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className=\"bg-border relative flex-1 rounded-full\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n"],"mappings":";;;;;;;;AA+BA,SAAS,UAAU,EACjB,WACA,cAAc,YACd,GAAG,SACoE;AACvE,QACE,oBAAC,oBAAoB,qBAArB;EACE,WAAW,GACT,sDACA,gBAAgB,cACd,8CACF,gBAAgB,gBACd,gDACF,UACD;EACD,aAAU;EACG;EACb,GAAI;YAEJ,oBAAC,oBAAoB,iBAArB;GACE,WAAU;GACV,aAAU;GACV;EACsC"}
@@ -1,8 +1,6 @@
1
- import "react/jsx-runtime";
2
1
  import { PopoverProps } from "@radix-ui/react-popover";
3
2
 
4
3
  //#region src/components/ui/selector.d.ts
5
-
6
4
  type SelectorProps<T> = {
7
5
  type?: 'single' | 'multiple';
8
6
  value?: T | T[];
@@ -1 +1 @@
1
- {"version":3,"file":"selector.d.ts","names":[],"sources":["../../src/components/ui/selector.tsx"],"sourcesContent":[],"mappings":";;;;;AAsCwB,KAHZ,aAGY,CAAA,CAAA,CAAA,GAAA;EAId,IAAM,CAAA,EAAA,QAAA,GAAA,UAAA;EACP,KAAA,CAAA,EANC,CAMD,GANK,CAML,EAAA;EACW,QAAA,CAAA,EAAA,CAAA,IAAA,EANA,CAMA,GANI,CAMJ,EAAA,GAAA,SAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAED,MAAA,CAAA,EAAA,MAAA;EACD,QAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAEM,WAAA,CAAA,EAAA,MAAA;EACF,KAAA,CAAA,EARZ,KAAA,CAAM,SAQM;EACE,KAAA,EARf,CAQe,EAAA;EAOd,UAAM,EAAA,MAdI,CAcJ;EAKM,UAAA,CAAA,EAAA,OAAA;EAAI,QAAA,CAAA,EAAA,MAjBP,CAiBO;EACnB,OAAA,CAAA,EAAA,MAjBW,CAiBX;EAKc,UAAA,CAAA,EAAA,OAAA;EACG,aAAA,CAAA,EAAA,MArBA,CAqBA;EACG,WAAA,CAAA,EAAA,MArBL,CAqBK;EACC,aAAA,CAAA,EAAA,MArBJ,CAqBI;EAAM,QAAM,CAAA,EAAA,OAAA;EAIpC,iBAAA,CAAA,EAAA,MAAA;EAAY,KAAA,CAAA,EAAA,MAAA;;;;UAlBN,KAAA,CAAM;;;;oCAKM,IAAI,oCACnB;;;;;qBAKc;wBACG;2BACG;4BACC,MAAM,KAAA,CAAM;;;;IAIpC"}
1
+ {"version":3,"file":"selector.d.ts","names":[],"sources":["../../src/components/ui/selector.tsx"],"mappings":";;;KAmCY,aAAA;EACV,IAAA;EACA,KAAA,GAAQ,CAAA,GAAI,CAAA;EACZ,QAAA,IAAY,IAAA,EAAM,CAAA,GAAI,CAAA;EACtB,MAAA;EACA,QAAA,IAAY,MAAA;EACZ,WAAA;EACA,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,KAAA,EAAO,CAAA;EACP,UAAA,QAAkB,CAAA;EAClB,UAAA;EACA,QAAA,SAAiB,CAAA;EACjB,OAAA,SAAgB,CAAA;EAChB,UAAA;EACA,aAAA,SAAsB,CAAA;EACtB,WAAA,SAAoB,CAAA;EACpB,aAAA,SAAsB,CAAA;EACtB,QAAA;EACA,iBAAA;EACA,KAAA;EACA,IAAA;EACA,SAAA;EACA,QAAA;EACA,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,gBAAA;EACA,IAAA;EACA,KAAA;EACA,YAAA,IACE,QAAA,IAAY,IAAA,EAAM,CAAA,GAAI,CAAA,mCACnB,OAAA;EACL,IAAA;EACA,OAAA,IAAW,IAAA;EACX,gBAAA;EACA,EAAA;EACA,UAAA,SAAmB,CAAA;EACnB,aAAA,SAAsB,CAAA;EACtB,eAAA,IAAmB,IAAA,EAAM,CAAA;EACzB,gBAAA,IAAoB,IAAA,EAAM,CAAA,KAAM,KAAA,CAAM,SAAA;EACtC,QAAA;EACA,OAAA;EACA,SAAA;AAAA,IACE,YAAA"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import { InputHelp } from "./input-help.js";
6
5
  import { Badge } from "./badge.js";
@@ -9,7 +8,7 @@ import { Checkbox } from "./checkbox.js";
9
8
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "./command.js";
10
9
  import { Popover, PopoverContent, PopoverTrigger } from "./popover.js";
11
10
  import { ScrollBar } from "./scroll-area.js";
12
- import tree_item_renderer_default from "./tree-item-renderer.js";
11
+ import TreeItemRenderer from "./tree-item-renderer.js";
13
12
  import { useEffect, useMemo } from "react";
14
13
  import { jsx, jsxs } from "react/jsx-runtime";
15
14
  import { Check, ChevronsUpDown, Loader2, Package, X } from "lucide-react";
@@ -17,7 +16,7 @@ import { ScrollArea, ScrollAreaViewport } from "@radix-ui/react-scroll-area";
17
16
  import { useInView } from "react-intersection-observer";
18
17
 
19
18
  //#region src/components/ui/selector.tsx
20
- function Selector({ type = "single", value, onChange, search, onSearch, items, withPortal = true, label, placeholder, fieldLabel, fieldKey, groupBy, treeRender = false, fieldChildren, fieldParent, fieldDisabled, searchPlaceholder, name, empty = "Nenhuma opção encontrada...", disabled = false, className, required, error, selectFirstIsOne, help, extra, extraOnClick, open, setOpen, maxVisibleBadges = 3, id, imageField, disabledField, onDisabledClick, itemRightElement, loadMore, hasMore, isLoading,...props }) {
19
+ function Selector({ type = "single", value, onChange, search, onSearch, items, withPortal = true, label, placeholder, fieldLabel, fieldKey, groupBy, treeRender = false, fieldChildren, fieldParent, fieldDisabled, searchPlaceholder, name, empty = "Nenhuma opção encontrada...", disabled = false, className, required, error, selectFirstIsOne, help, extra, extraOnClick, open, setOpen, maxVisibleBadges = 3, id, imageField, disabledField, onDisabledClick, itemRightElement, loadMore, hasMore, isLoading, ...props }) {
21
20
  const itemKey = fieldKey || fieldLabel;
22
21
  const childrenKey = fieldChildren || "children";
23
22
  const parentKey = fieldParent || "parent";
@@ -145,7 +144,7 @@ function Selector({ type = "single", value, onChange, search, onSearch, items, w
145
144
  className: "text-sm p-3 text-foreground/60",
146
145
  children: empty
147
146
  }),
148
- treeRender ? items.length > 0 && /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(tree_item_renderer_default, {
147
+ treeRender ? items.length > 0 && /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(TreeItemRenderer, {
149
148
  childrenKey,
150
149
  disabledKey: fieldDisabled,
151
150
  groupBy,