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.
- package/dist/actions.js +0 -1
- package/dist/actions.js.map +1 -1
- package/dist/analytics/core.d.ts.map +1 -1
- package/dist/analytics/core.js +0 -1
- package/dist/analytics/core.js.map +1 -1
- package/dist/analytics/delegated-clicks.d.ts.map +1 -1
- package/dist/analytics/delegated-clicks.js +0 -1
- package/dist/analytics/delegated-clicks.js.map +1 -1
- package/dist/analytics/provider.d.ts +2 -2
- package/dist/analytics/provider.d.ts.map +1 -1
- package/dist/analytics/provider.js +0 -1
- package/dist/analytics/provider.js.map +1 -1
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/analytics.js +0 -1
- package/dist/container-animation/container-animation.d.ts +2 -2
- package/dist/container-animation/container-animation.d.ts.map +1 -1
- package/dist/container-animation/container-animation.js +1 -2
- package/dist/container-animation/container-animation.js.map +1 -1
- package/dist/container-animation.js +0 -1
- package/dist/date-field/DateField.d.ts +2 -2
- package/dist/date-field/DateField.d.ts.map +1 -1
- package/dist/date-field/DateField.js +0 -1
- package/dist/date-field/DateField.js.map +1 -1
- package/dist/date-field.js +0 -1
- package/dist/date-hour-field/DateHourField.d.ts +2 -2
- package/dist/date-hour-field/DateHourField.d.ts.map +1 -1
- package/dist/date-hour-field/DateHourField.js +0 -1
- package/dist/date-hour-field/DateHourField.js.map +1 -1
- package/dist/date-hour-field/time-wheel-column.js.map +1 -1
- package/dist/date-hour-field.js +0 -1
- package/dist/input-suggest/input-suggest.d.ts +2 -2
- package/dist/input-suggest/input-suggest.d.ts.map +1 -1
- package/dist/input-suggest/input-suggest.js +6 -7
- package/dist/input-suggest/input-suggest.js.map +1 -1
- package/dist/input-suggest.js +0 -1
- package/dist/kanban-dnd/constants.js +1 -4
- package/dist/kanban-dnd/constants.js.map +1 -1
- package/dist/kanban-dnd/context.d.ts +0 -4
- package/dist/kanban-dnd/context.d.ts.map +1 -1
- package/dist/kanban-dnd/context.js +0 -1
- package/dist/kanban-dnd/context.js.map +1 -1
- package/dist/kanban-dnd/drag-preview.js +4 -4
- package/dist/kanban-dnd/drag-preview.js.map +1 -1
- package/dist/kanban-dnd/drop-animation.js.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.d.ts +2 -2
- package/dist/kanban-dnd/kanban-card-item.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.js +0 -1
- package/dist/kanban-dnd/kanban-card-item.js.map +1 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.js +0 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.js.map +1 -1
- package/dist/kanban-dnd/kanban-dropzone.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dropzone.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-dropzone.js +0 -1
- package/dist/kanban-dnd/kanban-dropzone.js.map +1 -1
- package/dist/kanban-dnd/kanban-selector.d.ts +2 -2
- package/dist/kanban-dnd/kanban-selector.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-selector.js +0 -1
- package/dist/kanban-dnd/kanban-selector.js.map +1 -1
- package/dist/kanban-dnd/move-cards.d.ts.map +1 -1
- package/dist/kanban-dnd/move-cards.js.map +1 -1
- package/dist/kanban-dnd/types.d.ts.map +1 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.d.ts.map +1 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.js +0 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.js.map +1 -1
- package/dist/kanban-dnd/use-kanban-selector-auto-scroll.js.map +1 -1
- package/dist/kanban-dnd.d.ts +0 -1
- package/dist/kanban-dnd.js +0 -1
- package/dist/landing-text/client-landing-text.js +0 -1
- package/dist/landing-text/client-landing-text.js.map +1 -1
- package/dist/landing-text/landing-content.d.ts +0 -2
- package/dist/landing-text/landing-content.d.ts.map +1 -1
- package/dist/landing-text/landing-content.js.map +1 -1
- package/dist/landing-text/landing-text.d.ts +2 -2
- package/dist/landing-text/landing-text.d.ts.map +1 -1
- package/dist/landing-text/landing-text.js +1 -1
- package/dist/landing-text/landing-text.js.map +1 -1
- package/dist/landing-text/server-landing-text.d.ts +2 -2
- package/dist/landing-text/server-landing-text.d.ts.map +1 -1
- package/dist/landing-text/server-landing-text.js +1 -1
- package/dist/landing-text/server-landing-text.js.map +1 -1
- package/dist/landing-text/types.d.ts.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/types/index.d.ts +4 -0
- package/dist/node_modules/framer-motion/dist/types.d-DOCC-kZB.d.ts +1 -0
- package/dist/node_modules/motion/dist/react.d.ts +2 -0
- package/dist/node_modules/motion-dom/dist/index.d.ts +1001 -0
- package/dist/node_modules/motion-dom/dist/index.d.ts.map +1 -0
- package/dist/node_modules/motion-utils/dist/index.d.ts +17 -0
- package/dist/node_modules/motion-utils/dist/index.d.ts.map +1 -0
- package/dist/page-header/page-header.d.ts +2 -2
- package/dist/page-header/page-header.d.ts.map +1 -1
- package/dist/page-header/page-header.js.map +1 -1
- package/dist/page-header.js +0 -1
- package/dist/remote-selector/remote-selector.d.ts +3 -3
- package/dist/remote-selector/remote-selector.d.ts.map +1 -1
- package/dist/remote-selector/remote-selector.js +3 -4
- package/dist/remote-selector/remote-selector.js.map +1 -1
- package/dist/remote-selector.js +0 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js +6 -7
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js +0 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts.map +1 -1
- package/dist/server-infinite-scroll/types.d.ts.map +1 -1
- package/dist/split-text-poor/split-text-poor.d.ts.map +1 -1
- package/dist/split-text-poor/split-text-poor.js +1 -2
- package/dist/split-text-poor/split-text-poor.js.map +1 -1
- package/dist/split-text-poor.js +0 -1
- package/dist/src/hooks/get-mask-options.js.map +1 -1
- package/dist/src/hooks/is-server.js +1 -2
- package/dist/src/hooks/is-server.js.map +1 -1
- package/dist/src/hooks/use-money-input.js +1 -3
- package/dist/src/hooks/use-money-input.js.map +1 -1
- package/dist/src/hooks/with-mask.d.ts +0 -1
- package/dist/src/hooks/with-mask.d.ts.map +1 -1
- package/dist/src/hooks/with-mask.js +2 -2
- package/dist/src/hooks/with-mask.js.map +1 -1
- package/dist/text-field/TextField.d.ts +5 -5
- package/dist/text-field/TextField.d.ts.map +1 -1
- package/dist/text-field/TextField.js +8 -9
- package/dist/text-field/TextField.js.map +1 -1
- package/dist/text-field.js +0 -1
- package/dist/toggle-field/ToggleField.d.ts.map +1 -1
- package/dist/toggle-field/ToggleField.js +1 -2
- package/dist/toggle-field/ToggleField.js.map +1 -1
- package/dist/toggle-field/ToggleGroup.d.ts +6 -6
- package/dist/toggle-field/ToggleGroup.d.ts.map +1 -1
- package/dist/toggle-field/ToggleGroup.js +2 -3
- package/dist/toggle-field/ToggleGroup.js.map +1 -1
- package/dist/toggle-field.js +0 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/button.js +1 -1
- package/dist/ui/button.js.map +1 -1
- package/dist/ui/calendar.js +8 -9
- package/dist/ui/calendar.js.map +1 -1
- package/dist/ui/checkbox.js +1 -2
- package/dist/ui/checkbox.js.map +1 -1
- package/dist/ui/command.js +5 -6
- package/dist/ui/command.js.map +1 -1
- package/dist/ui/content-help.js.map +1 -1
- package/dist/ui/form.js +4 -5
- package/dist/ui/form.js.map +1 -1
- package/dist/ui/input-date-field.js +1 -1
- package/dist/ui/input-date-field.js.map +1 -1
- package/dist/ui/input-help.js +0 -1
- package/dist/ui/input-help.js.map +1 -1
- package/dist/ui/input.js +1 -1
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/label.js +1 -2
- package/dist/ui/label.js.map +1 -1
- package/dist/ui/popover.js +1 -2
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/scroll-area.js +1 -2
- package/dist/ui/scroll-area.js.map +1 -1
- package/dist/ui/selector.d.ts +0 -2
- package/dist/ui/selector.d.ts.map +1 -1
- package/dist/ui/selector.js +3 -4
- package/dist/ui/selector.js.map +1 -1
- package/dist/ui/tooltip.js +2 -3
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/tree-item-renderer.js +1 -3
- package/dist/ui/tree-item-renderer.js.map +1 -1
- package/package.json +16 -16
package/dist/ui/calendar.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 { 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
131
|
-
...props
|
|
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
|
|
150
|
-
...props
|
|
148
|
+
className,
|
|
149
|
+
...props,
|
|
151
150
|
children
|
|
152
151
|
});
|
|
153
152
|
}
|
package/dist/ui/calendar.js.map
CHANGED
|
@@ -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":";;;;;;;;;;;AAyBA,SAAS,SAAS,EAChB,WACA,YACA,kBAAkB,MAClB,YAAY,IACZ,gBACA,GAAG,SACa;CAChB,MAAM,CAAC,SAAS,cAAc,MAAM,SAA2B,OAAO;CACtE,MAAM,CAAC,cAAc,mBAAmB,MAAM,SAI5C,MAAM,cAAc;EAClB,MAAM,+BAAc,IAAI,MAAM,EAAC,aAAa;AAC5C,SAAO;GACL,MAAM,cAAc,KAAK,MAAM,YAAY,IAAI,EAAE;GACjD,IAAI,cAAc,KAAK,KAAK,YAAY,EAAE;GAC3C;IACA,CAAC,UAAU,CAAC,CAChB;CAED,MAAM,EAAE,aAAa,aAAa,YAAY,aAAa;CAE3D,MAAM,mBAAmB,YAAY,UAAU,IAAI;AAEnD,QACE,oBAAC,WAAD;EACE,WAAW,GAAG,OAAO,UAAU;EAC/B,YAAY;GACV,QAAQ;GACR,eAAe;GACf,UAAU;GACV,SAAS;GACT,OAAO;GACP,SAAS;GACT,eAAe;GACf,aAAa,GACX,eAAe;IACb,SAAS;IACT,WACE;IACH,CAAC,CACH;GACD,iBAAiB,GACf,eAAe;IACb,SAAS;IACT,WACE;IACH,CAAC,CACH;GACD,KAAK;GACL,YAAY;GACZ,MAAM;GACN,KAAK;GACL,YAAY,GACV,eAAe,EAAE,SAAS,SAAS,CAAC,EACpC,2GACD;GACD,aAAa;GACb,WAAW;GACX,UACE;GACF,OAAO;GACP,SACE;GACF,UAAU;GACV,cACE;GACF,QAAQ;GACR,GAAG;GACJ;EACD,YAAY;GACV,UAAU,EAAE,kBAAkB;AAE5B,WAAO,oBADM,gBAAgB,SAAS,cAAc,cAC7C,EAAM,WAAU,WAAY;;GAErC,MAAM,EAAE,WAAW,UAAU,GAAG,YAAY;IAC1C,MAAM,EAAE,WAAW,eAAe,cAAc,cAAc;IAE9D,MAAM,4BAA4B;AAChC,SAAI,YAAY,QACd,QACG,cACC,yBACE,IAAI,KAAK,aAAa,OAAO,GAAG,GAAG,EAAE,EACrC,WACD,GAAG,KACL,YACC,yBACE,IAAI,KAAK,aAAa,OAAO,GAAG,GAAG,EAAE,EACrC,SACD,GAAG;AAGV,YAAO,CAAC;QACN;IAEJ,MAAM,wBAAwB;AAC5B,SAAI,YAAY,QACd,QACG,cACC,yBACE,IAAI,KAAK,aAAa,KAAK,GAAG,GAAG,EAAE,EACnC,WACD,GAAG,KACL,YACC,yBACE,IAAI,KAAK,aAAa,KAAK,GAAG,GAAG,EAAE,EACnC,SACD,GAAG;AAGV,YAAO,CAAC;QACN;IAEJ,MAAM,sBAAsB,MAAM,kBAAkB;AAClD,SAAI,CAAC,cAAe;AACpB,SAAI,YAAY,SAAS;AACvB,uBAAiB,UAAU;OACzB,MAAM,KAAK,QAAQ,KAAK,KAAK,KAAK,OAAO;OACzC,IAAI,KAAK,MAAM,KAAK,KAAK,KAAK,OAAO;OACtC,EAAE;AACH,oBACE,IAAI,KACF,aAAa,QAAQ,aAAa,KAAK,aAAa,OACpD,GACA,EACD,CACF;AACD;;AAEF,eAAU,cAAc;AACxB,mBAAc,cAAc;OAC3B,CAAC,eAAe,UAAU,CAAC;IAE9B,MAAM,kBAAkB,MAAM,kBAAkB;AAC9C,SAAI,YAAY,SAAS;AACvB,uBAAiB,UAAU;OACzB,MAAM,KAAK,QAAQ,KAAK,KAAK,KAAK,OAAO;OACzC,IAAI,KAAK,MAAM,KAAK,KAAK,KAAK,OAAO;OACtC,EAAE;AACH,oBACE,IAAI,KACF,aAAa,QAAQ,aAAa,KAAK,aAAa,OACpD,GACA,EACD,CACF;AACD;;AAEF,SAAI,CAAC,UAAW;AAChB,eAAU,UAAU;AACpB,mBAAc,UAAU;OACvB,CAAC,WAAW,UAAU,CAAC;AAE1B,WACE,qBAAC,OAAD;KAAK,WAAW,GAAG,qBAAqB,UAAU;eAAlD,CACE,oBAAC,QAAD;MACE,cACE,YAAY,UACR,sBACE,aAAa,KAAK,aAAa,OAAO,EACvC,UACD,cAAc,cAAc;MAElC,WAAU;MACV,UAAU;MACV,SAAS;MACT,UAAU,qBAAqB,SAAY;MAC3C,MAAK;MACL,SAAQ;gBAER,oBAAC,aAAD,EAAa,WAAU,WAAY;MAC5B,GAET,oBAAC,QAAD;MACE,cACE,YAAY,UACR,kBACE,aAAa,KAAK,aAAa,OAAO,EACvC,UACD,UAAU,UAAU;MAE1B,WAAU;MACV,UAAU;MACV,SAAS;MACT,UAAU,iBAAiB,SAAY;MACvC,MAAK;MACL,SAAQ;gBAER,oBAAC,cAAD,EAAc,WAAU,WAAY;MAC7B,EACL;;;GAGV,eAAe,EAAE,eACf,oBAAC,QAAD;IACE,WAAU;IACV,eACE,YAAY,SAAU,SAAS,SAAS,UAAU,OAAQ;IAE5D,MAAK;IACL,SAAQ;cAEP,YAAY,SACT,WACA,aAAa,OAAO,QAAQ,aAAa;IACtC;GAEX,YAAY,EAAE,WAAW,UAAU,GAAG,YAAY;IAChD,MAAM,EAAE,cAAc,cAAc;AACpC,QAAI,YAAY,QACd,QACE,oBAAC,OAAD;KACE,WAAW,GAAG,4BAA4B,UAAU;KACpD,GAAI;eAEH,MAAM,KACL,EAAE,QAAQ,aAAa,KAAK,aAAa,OAAO,GAAG,GAClD,GAAG,MAAM;MACR,MAAM,WACJ,yBACE,IAAI,KAAK,aAAa,OAAO,GAAG,IAAI,GAAG,EACvC,WACD,GAAG;MAEN,MAAM,UACJ,yBACE,IAAI,KAAK,aAAa,OAAO,GAAG,GAAG,EAAE,EACrC,SACD,GAAG;MAEN,MAAM,aAAa,YAAY;AAC/B,aACE,oBAAC,QAAD;OACE,WAAW,GACT,mDACA,aAAa,OAAO,uBAAM,IAAI,MAAM,EAAC,aAAa,IAChD,+CACH;OACD,UAAU,YAAY,UAAU,aAAa;OAE7C,eAAe;AACb,mBAAW,OAAO;AAClB,kBACE,IAAI,KACF,aAAa,OAAO,oBACpB,IAAI,MAAM,EAAC,UAAU,CACtB,CACF;;OAEH,SAAQ;iBAEP,aAAa,OAAO;OACd,EAbF,EAaE;OAGd;KACG;AAGV,WACE,oBAAC,SAAD;KAAkB;KAAW,GAAI;KAC9B;KACK;;GAGb;EACD,gBAAgB;EACC;EACjB,OAAO,EACL,OAAO,SAAS,oBAAoB,KAAK,MAC1C;EACD,GAAI;EACJ;;AAGN,SAAS,cAAc"}
|
package/dist/ui/checkbox.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 * 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
|
|
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);
|
package/dist/ui/checkbox.js.map
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/ui/command.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 "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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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",
|
package/dist/ui/command.js.map
CHANGED
|
@@ -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":"
|
|
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":["
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|
package/dist/ui/form.js.map
CHANGED
|
@@ -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":"
|
|
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
|
|
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":[
|
|
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"}
|
package/dist/ui/input-help.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-help.js","names":[
|
|
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
|
|
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",
|
package/dist/ui/input.js.map
CHANGED
|
@@ -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,
|
|
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
|
|
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",
|
package/dist/ui/label.js.map
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/ui/popover.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 { 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
|
|
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),
|
package/dist/ui/popover.js.map
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/ui/scroll-area.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 { 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"
|
|
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":"
|
|
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"}
|
package/dist/ui/selector.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.d.ts","names":[],"sources":["../../src/components/ui/selector.tsx"],"
|
|
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"}
|
package/dist/ui/selector.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 { 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
|
|
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
|
|
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(
|
|
147
|
+
treeRender ? items.length > 0 && /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(TreeItemRenderer, {
|
|
149
148
|
childrenKey,
|
|
150
149
|
disabledKey: fieldDisabled,
|
|
151
150
|
groupBy,
|