@powerhousedao/design-system 6.2.0-dev.9 → 6.2.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{command-vPaCve7_.d.ts → command-tFzjgzge.d.ts} +8 -8
- package/dist/{command-vPaCve7_.d.ts.map → command-tFzjgzge.d.ts.map} +1 -1
- package/dist/connect/components/toast/toast.d.ts.map +1 -1
- package/dist/connect/components/toast/toast.js +5 -5
- package/dist/connect/components/toast/toast.js.map +1 -1
- package/dist/connect/index.d.ts +24 -3
- package/dist/connect/index.d.ts.map +1 -1
- package/dist/connect/index.js +641 -584
- package/dist/connect/index.js.map +1 -1
- package/dist/{enum-field-UxIet5Lp.d.ts → enum-field-CwZVs3Ux.d.ts} +2 -2
- package/dist/{enum-field-UxIet5Lp.d.ts.map → enum-field-CwZVs3Ux.d.ts.map} +1 -1
- package/dist/id-autocomplete-list-option-CB5B07Hi.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/json-viewer-DaTgmzkS.d.ts.map +1 -1
- package/dist/{src-BrrPQVce.js → src-CfIIbIOi.js} +11 -11
- package/dist/src-CfIIbIOi.js.map +1 -0
- package/dist/style.css +79 -16
- package/dist/ui/components/button/button.js +1 -1
- package/dist/ui/components/button/button.js.map +1 -1
- package/dist/ui/components/character-counter/character-counter.js +6 -6
- package/dist/ui/components/character-counter/character-counter.js.map +1 -1
- package/dist/ui/components/checkbox/checkbox-base.js +1 -1
- package/dist/ui/components/checkbox/checkbox-base.js.map +1 -1
- package/dist/ui/components/checkbox/checkbox.js +1 -1
- package/dist/ui/components/checkbox/checkbox.js.map +1 -1
- package/dist/ui/components/command/command.d.ts +1 -1
- package/dist/ui/components/command/command.js +5 -5
- package/dist/ui/components/command/command.js.map +1 -1
- package/dist/ui/components/enum-field/enum-field.d.ts +1 -1
- package/dist/ui/components/form-description/form-description.js +1 -1
- package/dist/ui/components/form-description/form-description.js.map +1 -1
- package/dist/ui/components/form-label/form-label.js +3 -3
- package/dist/ui/components/form-label/form-label.js.map +1 -1
- package/dist/ui/components/form-message/form-message.js +3 -3
- package/dist/ui/components/form-message/form-message.js.map +1 -1
- package/dist/ui/components/form-message/message-list.js +3 -3
- package/dist/ui/components/form-message/message-list.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js +3 -3
- package/dist/ui/components/id-autocomplete/id-autocomplete-input-container.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js +10 -10
- package/dist/ui/components/id-autocomplete/id-autocomplete-list-option.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list.js +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete-list.js.map +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete.js +1 -1
- package/dist/ui/components/id-autocomplete/id-autocomplete.js.map +1 -1
- package/dist/ui/components/index.d.ts +2 -2
- package/dist/ui/components/input/input.js +1 -1
- package/dist/ui/components/input/input.js.map +1 -1
- package/dist/ui/components/input/splitted-input-diff.js +2 -2
- package/dist/ui/components/input/splitted-input-diff.js.map +1 -1
- package/dist/ui/components/input/subcomponent/input-diff.js +1 -1
- package/dist/ui/components/input/subcomponent/input-diff.js.map +1 -1
- package/dist/ui/components/input/subcomponent/text-diff.js +3 -3
- package/dist/ui/components/input/subcomponent/text-diff.js.map +1 -1
- package/dist/ui/components/json-viewer/json-viewer.js +6 -5
- package/dist/ui/components/json-viewer/json-viewer.js.map +1 -1
- package/dist/ui/components/popover/popover.js +1 -1
- package/dist/ui/components/popover/popover.js.map +1 -1
- package/dist/ui/components/radio-group-field/radio.js +3 -3
- package/dist/ui/components/radio-group-field/radio.js.map +1 -1
- package/dist/ui/components/search-autocomplete/search-autocomplete.js +13 -13
- package/dist/ui/components/search-autocomplete/search-autocomplete.js.map +1 -1
- package/dist/ui/components/select-field/content.js +8 -8
- package/dist/ui/components/select-field/content.js.map +1 -1
- package/dist/ui/components/select-field/select-field.js +1 -1
- package/dist/ui/components/select-field/select-field.js.map +1 -1
- package/dist/ui/components/select-field/selected-content.js +7 -7
- package/dist/ui/components/select-field/selected-content.js.map +1 -1
- package/dist/ui/components/select-field/subcomponents/CommandItemList.d.ts.map +1 -1
- package/dist/ui/components/select-field/subcomponents/CommandItemList.js +9 -9
- package/dist/ui/components/select-field/subcomponents/CommandItemList.js.map +1 -1
- package/dist/ui/components/sidebar/sidebar.js +5 -5
- package/dist/ui/components/sidebar/sidebar.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-content-area.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-header.js +3 -3
- package/dist/ui/components/sidebar/subcomponents/sidebar-header.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-item.js +7 -7
- package/dist/ui/components/sidebar/subcomponents/sidebar-item.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-pinning-area.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-navigation-arrow.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js +4 -4
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/search-result-counter.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js +5 -5
- package/dist/ui/components/sidebar/subcomponents/sidebar-search/sidebar-search.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js +2 -2
- package/dist/ui/components/sidebar/subcomponents/sidebar-skeleton-item.js.map +1 -1
- package/dist/ui/components/sidebar/subcomponents/status-icon.js +6 -6
- package/dist/ui/components/sidebar/subcomponents/status-icon.js.map +1 -1
- package/dist/ui/components/tooltip/tooltip.js +1 -1
- package/dist/ui/components/tooltip/tooltip.js.map +1 -1
- package/dist/ui/index.d.ts +2 -2
- package/package.json +23 -8
- package/theme.css +145 -17
- package/dist/src-BrrPQVce.js.map +0 -1
|
@@ -10,7 +10,7 @@ type EnumFieldProps = ({
|
|
|
10
10
|
} & RadioGroupFieldProps) | ({
|
|
11
11
|
variant: "Select";
|
|
12
12
|
} & SelectFieldProps);
|
|
13
|
-
declare const EnumField: React.ForwardRefExoticComponent<EnumFieldProps & React.RefAttributes<
|
|
13
|
+
declare const EnumField: React.ForwardRefExoticComponent<EnumFieldProps & React.RefAttributes<HTMLButtonElement | HTMLDivElement>>;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { EnumFieldProps as n, EnumField as t };
|
|
16
|
-
//# sourceMappingURL=enum-field-
|
|
16
|
+
//# sourceMappingURL=enum-field-CwZVs3Ux.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-field-
|
|
1
|
+
{"version":3,"file":"enum-field-CwZVs3Ux.d.ts","names":[],"sources":["../src/ui/components/enum-field/enum-field.tsx"],"mappings":";;;;;KAUY,cAAA;EAEN,OAAA;AAAA,KACG,oBAAA,GAAuB,gBAAA;EAE1B,OAAA;AAAA,IACE,oBAAA;EAEF,OAAA;AAAA,IACE,gBAAA;AAAA,cAEK,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA,GAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-autocomplete-list-option-CB5B07Hi.d.ts","names":[],"sources":["../src/ui/components/id-autocomplete/id-autocomplete-list-option.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"id-autocomplete-list-option-CB5B07Hi.d.ts","names":[],"sources":["../src/ui/components/id-autocomplete/id-autocomplete-list-option.tsx"],"mappings":";;;;KAyEK,6BAAA;EACH,OAAA,EAAS,mBAAA;EACT,aAAA;EACA,SAAA;EACA,uBAAA;EACA,yBAAA,IAA6B,KAAA;EAC7B,yBAAA;EACA,SAAA;EACA,eAAA,GAAkB,QAAA,GAAW,KAAA,CAAM,YAAA;AAAA,IACjC,oBAAA,CAAqB,MAAA;AAAA,cAEnB,wBAAA,EAA0B,KAAA,CAAM,EAAA,CAAG,6BAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { _ as DropdownMenuTrigger, a as useExitAnimation, c as SidebarHeader, d as PackageAnimation, f as Modal, g as DropdownMenuLabel, h as DropdownMenuItem, i as useEnterAnimation, l as SidebarPanel, m as DropdownMenuContent, n as usePagination, o as Sidebar, p as DropdownMenu, r as useAnimation, s as SidebarFooter, t as useWindowSize, u as Pagination, v as PowerhouseButton } from "./src-
|
|
1
|
+
import { _ as DropdownMenuTrigger, a as useExitAnimation, c as SidebarHeader, d as PackageAnimation, f as Modal, g as DropdownMenuLabel, h as DropdownMenuItem, i as useEnterAnimation, l as SidebarPanel, m as DropdownMenuContent, n as usePagination, o as Sidebar, p as DropdownMenu, r as useAnimation, s as SidebarFooter, t as useWindowSize, u as Pagination, v as PowerhouseButton } from "./src-CfIIbIOi.js";
|
|
2
2
|
import { i as iconNames, n as getDimensions, r as iconComponents, t as Icon } from "./icon-C4QOpsdI.js";
|
|
3
3
|
export { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, Icon, Modal, PackageAnimation, Pagination, PowerhouseButton, Sidebar, SidebarFooter, SidebarHeader, SidebarPanel, getDimensions, iconComponents, iconNames, useAnimation, useEnterAnimation, useExitAnimation, usePagination, useWindowSize };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-viewer-DaTgmzkS.d.ts","names":[],"sources":["../src/ui/components/json-viewer/json-viewer.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"json-viewer-DaTgmzkS.d.ts","names":[],"sources":["../src/ui/components/json-viewer/json-viewer.tsx"],"mappings":";;;;iBAqFgB,UAAA,CAAW,KAAA,EAAO,KAAA,GAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -10,11 +10,11 @@ import ReactDOM from "react-dom";
|
|
|
10
10
|
const PowerhouseButton = /* @__PURE__ */ forwardRef(function PowerhouseButton(props, ref) {
|
|
11
11
|
const { color = "dark", size = "medium", className = "", children, icon, iconPosition = "left", ...delegatedProps } = props;
|
|
12
12
|
return /* @__PURE__ */ jsxs("button", {
|
|
13
|
-
className: twMerge("flex items-center justify-center gap-2 border border-none transition outline-none disabled:
|
|
14
|
-
light: "bg-
|
|
15
|
-
dark: "bg-
|
|
16
|
-
red: "bg-
|
|
17
|
-
blue: "bg-
|
|
13
|
+
className: twMerge("flex items-center justify-center gap-2 border border-none transition outline-none disabled:disabled-effect", twJoin({
|
|
14
|
+
light: "bg-secondary text-foreground hover:hover-effect active:active-effect disabled:disabled-effect",
|
|
15
|
+
dark: "bg-primary text-primary-foreground hover:hover-effect active:active-effect disabled:disabled-effect",
|
|
16
|
+
red: "bg-destructive text-destructive-foreground hover:hover-effect active:active-effect disabled:disabled-effect disabled:opacity-100",
|
|
17
|
+
blue: "bg-info text-info-foreground hover:hover-effect active:active-effect disabled:disabled-effect disabled:opacity-100"
|
|
18
18
|
}[color], {
|
|
19
19
|
small: "px-2 py-1.5 text-xs rounded-md font-medium",
|
|
20
20
|
medium: "px-6 py-3 text-base rounded-xl font-semibold tracking-wide"
|
|
@@ -51,11 +51,11 @@ function Modal(props) {
|
|
|
51
51
|
open,
|
|
52
52
|
children: /* @__PURE__ */ jsx(Portal$1, { children: /* @__PURE__ */ jsx(Overlay, {
|
|
53
53
|
...overlayProps,
|
|
54
|
-
className: twMerge("fixed inset-0 grid place-items-center overflow-y-auto bg-
|
|
54
|
+
className: twMerge("fixed inset-0 grid place-items-center overflow-y-auto bg-background/50 data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in", overlayProps?.className),
|
|
55
55
|
children: /* @__PURE__ */ jsxs(Content$1, {
|
|
56
56
|
...delegated,
|
|
57
57
|
...contentProps,
|
|
58
|
-
className: twMerge("overflow-hidden rounded-3xl bg-
|
|
58
|
+
className: twMerge("overflow-hidden rounded-3xl bg-background data-[state=closed]:animate-zoom-out data-[state=open]:animate-zoom-in", contentProps?.className),
|
|
59
59
|
children: [/* @__PURE__ */ jsxs(Root$2, { children: [/* @__PURE__ */ jsx(Title, { children: title || "Modal" }), /* @__PURE__ */ jsx(Description, { children: title || "Modal" })] }), children]
|
|
60
60
|
})
|
|
61
61
|
}) })
|
|
@@ -451,7 +451,7 @@ const PaginationButton = ({ active = false, ...props }) => {
|
|
|
451
451
|
return /* @__PURE__ */ jsx(PowerhouseButton, {
|
|
452
452
|
color: "light",
|
|
453
453
|
size: "small",
|
|
454
|
-
className: twMerge("h-8 min-w-8 border border-solid border-
|
|
454
|
+
className: twMerge("h-8 min-w-8 border border-solid border-border bg-background px-3 py-1 text-xs text-foreground hover:hover-effect", !active && "border-0", typeof propClassName === "string" && propClassName),
|
|
455
455
|
...restProps,
|
|
456
456
|
children: props.children
|
|
457
457
|
});
|
|
@@ -525,7 +525,7 @@ function SidebarPanel({ className, children, ...props }) {
|
|
|
525
525
|
};
|
|
526
526
|
}, []);
|
|
527
527
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
528
|
-
className: twMerge("scrollbar-none flex-1 overflow-auto text-
|
|
528
|
+
className: twMerge("scrollbar-none flex-1 overflow-auto text-foreground transition-shadow", className),
|
|
529
529
|
onScroll: (e) => checkContentScroll(e.currentTarget),
|
|
530
530
|
ref: containerRef,
|
|
531
531
|
...props,
|
|
@@ -553,7 +553,7 @@ function Sidebar({ maxWidth: _maxWidth = "304px", minWidth = "80px", className,
|
|
|
553
553
|
const ref = useRef(null);
|
|
554
554
|
return /* @__PURE__ */ jsx("div", {
|
|
555
555
|
...props,
|
|
556
|
-
className: twMerge(`group z-1 flex h-full flex-col bg-
|
|
556
|
+
className: twMerge(`group z-1 flex h-full flex-col bg-sidebar text-sidebar-foreground`, className),
|
|
557
557
|
ref,
|
|
558
558
|
style: { width: minWidth },
|
|
559
559
|
children
|
|
@@ -707,4 +707,4 @@ const useWindowSize = () => {
|
|
|
707
707
|
//#endregion
|
|
708
708
|
export { DropdownMenuTrigger as _, useExitAnimation as a, SidebarHeader as c, PackageAnimation as d, Modal as f, DropdownMenuLabel as g, DropdownMenuItem as h, useEnterAnimation as i, SidebarPanel as l, DropdownMenuContent as m, usePagination as n, Sidebar as o, DropdownMenu as p, useAnimation as r, SidebarFooter as s, useWindowSize as t, Pagination as u, PowerhouseButton as v };
|
|
709
709
|
|
|
710
|
-
//# sourceMappingURL=src-
|
|
710
|
+
//# sourceMappingURL=src-CfIIbIOi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src-CfIIbIOi.js","names":["forwardRef","twJoin","twMerge","PowerhouseButton","props","ref","color","size","className","children","icon","iconPosition","delegatedProps","sizeStyles","small","medium","colorStyles","light","dark","red","blue","colorAndSizeStyle","finalClassName","Content","Item","Label","Portal","Root","Trigger","forwardRef","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","children","delegatedProps","forwardedRef","DropdownMenuLabel","DropdownMenuItem","Content","Description","Overlay","Portal","Root","Title","VisuallyHidden","twMerge","Modal","props","title","open","onOpenChange","contentProps","overlayProps","children","delegated","className","useEffect","useRef","useState","FRAME_DURATION","HOLD_LAST_FRAME","frames","color","PackageAnimation","animate","loop","size","onComplete","frameIndex","setFrameIndex","timerRef","isRunning","current","totalFrames","length","tick","setTimeout","clearTimeout","display","alignItems","justifyContent","width","height","flexShrink","transform","transformOrigin","twMerge","PowerhouseButton","PaginationButton","active","props","className","propClassName","restProps","mergedClassName","children","Icon","PaginationButton","Pagination","props","pages","goToFirstPage","goToLastPage","goToNextPage","goToPreviousPage","goToPage","isNextPageAvailable","isPreviousPageAvailable","hiddenNextPages","firstPageLabel","lastPageLabel","nextPageLabel","previousPageLabel","map","page","active","index","number","useEffect","useRef","useState","twMerge","SidebarPanel","className","children","props","hasScroll","setHasScroll","checkContentScroll","target","scrollHeight","scrollTop","clientHeight","containerRef","current","observer","ResizeObserver","entries","entry","pop","observe","disconnect","e","currentTarget","boxShadow","useRef","twMerge","SidebarHeader","className","props","SidebarFooter","Sidebar","maxWidth","_maxWidth","minWidth","children","ref","width","useCallback","useLayoutEffect","useRef","useState","ReactDOM","useEnterAnimation","ref","isReady","isEntering","setEntering","useAnimation","useExitAnimation","isOpen","isExiting","setExiting","exitState","setExitState","current","isActive","onEnd","prevAnimation","window","getComputedStyle","animation","computedStyle","animationName","onAnimationEnd","e","target","element","removeEventListener","flushSync","addEventListener","useCallback","useMemo","useState","usePagination","items","options","itemsPerPage","initialPage","pageRange","currentPage","setCurrentPage","pageCount","Math","ceil","length","isNextPageAvailable","isPreviousPageAvailable","goToNextPage","prev","goToPreviousPage","goToLastPage","goToFirstPage","goToPage","page","pageOffset","floor","availableRange","min","maxStartIndex","max","startIndex","pages","range","i","push","index","active","number","pageItems","slice","hiddenNextPages","useEffect","useState","useWindowSize","windowSize","setWindowSize","innerWidth","window","innerHeight","windowSizeHandler","addEventListener","removeEventListener"],"sources":["../src/powerhouse/components/button/button.tsx","../src/powerhouse/components/dropdown-menu/dropdown-menu.tsx","../src/powerhouse/components/modal/modal.tsx","../src/powerhouse/components/package-animation/package-animation.tsx","../src/powerhouse/components/pagination/pagination-button.tsx","../src/powerhouse/components/pagination/pagination.tsx","../src/powerhouse/components/sidebar/sidebar-panel.tsx","../src/powerhouse/components/sidebar/sidebar.tsx","../src/powerhouse/hooks/animation.ts","../src/powerhouse/hooks/usePagination.ts","../src/powerhouse/hooks/useWindowSize.ts"],"sourcesContent":["import type { ComponentPropsWithRef, ForwardedRef } from \"react\";\nimport { forwardRef } from \"react\";\nimport { twJoin, twMerge } from \"tailwind-merge\";\n\nexport type PowerhouseButtonProps = ComponentPropsWithRef<\"button\"> & {\n readonly color?: \"light\" | \"dark\" | \"red\" | \"blue\";\n readonly size?: \"small\" | \"medium\";\n readonly icon?: React.JSX.Element;\n readonly iconPosition?: \"left\" | \"right\";\n};\n\nexport const PowerhouseButton = forwardRef(function PowerhouseButton(\n props: PowerhouseButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const {\n color = \"dark\",\n size = \"medium\",\n className = \"\",\n children,\n icon,\n iconPosition = \"left\",\n ...delegatedProps\n } = props;\n\n const sizeStyles = {\n small: \"px-2 py-1.5 text-xs rounded-md font-medium\",\n medium: \"px-6 py-3 text-base rounded-xl font-semibold tracking-wide\",\n };\n\n const colorStyles = {\n light:\n \"bg-secondary text-foreground hover:hover-effect active:active-effect disabled:disabled-effect\",\n dark: \"bg-primary text-primary-foreground hover:hover-effect active:active-effect disabled:disabled-effect\",\n red: \"bg-destructive text-destructive-foreground hover:hover-effect active:active-effect disabled:disabled-effect disabled:opacity-100\",\n blue: \"bg-info text-info-foreground hover:hover-effect active:active-effect disabled:disabled-effect disabled:opacity-100\",\n };\n\n const colorAndSizeStyle = twJoin(colorStyles[color], sizeStyles[size]);\n\n const finalClassName = twMerge(\n \"flex items-center justify-center gap-2 border border-none transition outline-none disabled:disabled-effect\",\n colorAndSizeStyle,\n className,\n );\n\n return (\n <button className={finalClassName} ref={ref} {...delegatedProps}>\n {iconPosition === \"left\" && icon}\n {children}\n {iconPosition === \"right\" && icon}\n </button>\n );\n});\n","import type {\n DropdownMenuContentProps,\n DropdownMenuProps,\n} from \"@radix-ui/react-dropdown-menu\";\nimport {\n Content,\n Item,\n Label,\n Portal,\n Root,\n Trigger,\n} from \"@radix-ui/react-dropdown-menu\";\nimport type { ForwardedRef } from \"react\";\nimport { forwardRef } from \"react\";\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> = Root;\nexport const DropdownMenuTrigger = Trigger;\n\nexport const DropdownMenuContent = forwardRef(function DropdownMenuContent(\n { children, ...delegatedProps }: DropdownMenuContentProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <Portal>\n <Content {...delegatedProps} ref={forwardedRef}>\n {children}\n </Content>\n </Portal>\n );\n});\n\nexport const DropdownMenuLabel = Label;\nexport const DropdownMenuItem = Item;\n","import {\n Content,\n Description,\n Overlay,\n Portal,\n Root,\n Title,\n} from \"@radix-ui/react-dialog\";\nimport { Root as VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n readonly title?: string;\n readonly children?: React.ReactNode;\n readonly open?: boolean;\n readonly onOpenChange?: (open: boolean) => void;\n readonly overlayProps?: ComponentPropsWithoutRef<typeof Overlay>;\n readonly contentProps?: ComponentPropsWithoutRef<typeof Content>;\n};\nexport function Modal(props: Props) {\n const {\n title,\n open,\n onOpenChange,\n contentProps,\n overlayProps,\n children,\n ...delegated\n } = props;\n return (\n <Root defaultOpen={open} onOpenChange={onOpenChange} open={open}>\n <Portal>\n <Overlay\n {...overlayProps}\n className={twMerge(\n \"fixed inset-0 grid place-items-center overflow-y-auto bg-background/50 data-[state=closed]:animate-fade-out data-[state=open]:animate-fade-in\",\n overlayProps?.className,\n )}\n >\n <Content\n {...delegated}\n {...contentProps}\n className={twMerge(\n \"overflow-hidden rounded-3xl bg-background data-[state=closed]:animate-zoom-out data-[state=open]:animate-zoom-in\",\n contentProps?.className,\n )}\n >\n <VisuallyHidden>\n <Title>{title || \"Modal\"}</Title>\n <Description>{title || \"Modal\"}</Description>\n </VisuallyHidden>\n {children}\n </Content>\n </Overlay>\n </Portal>\n </Root>\n );\n}\n","import { useEffect, useRef, useState } from \"react\";\n\nconst FRAME_DURATION = 60;\nconst HOLD_LAST_FRAME = 800;\n\nconst frames = [\n // frame 1\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15.3998 27.782C15.6431 27.9224 15.919 27.9963 16.1998 27.9963C16.4807 27.9963 16.7566 27.9224 16.9998 27.782L22.5997 24.5821C22.8427 24.4418 23.0445 24.24 23.1849 23.9971C23.3253 23.7542 23.3994 23.4787 23.3996 23.1981V16.7982C23.3994 16.5177 23.3253 16.2421 23.1849 15.9992C23.0445 15.7563 22.8427 15.5546 22.5997 15.4143L16.9998 12.2144C16.7566 12.0739 16.4807 12 16.1998 12C15.919 12 15.6431 12.0739 15.3998 12.2144L9.79998 15.4143C9.557 15.5546 9.35518 15.7563 9.21476 15.9992C9.07435 16.2421 9.00029 16.5177 9 16.7982V23.1981C9.00029 23.4787 9.07435 23.7542 9.21476 23.9971C9.35518 24.24 9.557 24.4418 9.79998 24.5821L15.3999 27.782Z\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.1997 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.23193 15.9985L16.1998 19.9984L23.1676 15.9985\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12.6001 13.8145L19.7999 17.9344\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n // frame 2\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.7996 13.8145L16.8801 15.5\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12.9998 14L18.9998 17.5\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M16.1998 27.9963C16.4807 27.9963 16.7566 27.9224 16.9998 27.782L22.5997 24.5821C22.8427 24.4418 23.0445 24.24 23.1849 23.9971C23.3253 23.7542 23.3994 23.4787 23.3997 23.1981V16.7982C23.3994 16.5177 23.3253 16.2421 23.1849 15.9992C23.0445 15.7563 22.8427 15.5546 22.5997 15.4143L16.9998 12.2144C16.7566 12.0739 16.4807 12 16.1998 12C15.919 12 15.6431 12.0739 15.3999 12.2144L9.79999 15.4143C9.55701 15.5546 9 16 9 16.5L9.00001 20.5V23.1981C9.0003 23.4787 9.07436 23.7542 9.21477 23.9971C9.35518 24.24 9.55701 24.4418 9.79999 24.5821L15.3999 27.782C15.6431 27.9224 15.919 27.9963 16.1998 27.9963Z\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.1997 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M23.1677 15.9985L16.1999 19.9984L9.23207 15.9985\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.001 11.8061V9.76617C16.001 8.98888 16.8489 8.50877 17.5155 8.90867L22.4298 11.8572C23.0322 12.2186 23.4008 12.8697 23.4008 13.5722V16.8833\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n // frame 3\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.00001 20.5V23.1981C9.0003 23.4787 9.07436 23.7542 9.21477 23.9971C9.35518 24.24 9.55701 24.4418 9.79999 24.5821L15.3999 27.782C15.6431 27.9224 15.919 27.9963 16.1998 27.9963C16.4807 27.9963 16.7566 27.9224 16.9998 27.782L22.5997 24.5821C22.8427 24.4418 23.0445 24.24 23.1849 23.9971C23.3253 23.7542 23.3994 23.4787 23.3997 23.1981V16.7982C23.3994 16.5177 23.3253 16.2421 23.1849 15.9992C23.0445 15.7563 22.8427 15.5546 22.5997 15.4143L16.9998 12.2144C16.7566 12.0739 16.4807 12 16.1998 12C15.919 12 15.6431 12.0739 15.3999 12.2144\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.2 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M23.1677 15.9985L16.1999 19.9984L9.23207 15.9985\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19.7998 13.8145L16.0143 16\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.5002 19.7472L24.1167 15.3498C24.385 15.1982 24.6081 14.978 24.7634 14.7118C24.9187 14.4456 25.0005 14.143 25.0005 13.8348C25.0005 13.5266 24.9187 13.224 24.7634 12.9578C24.6081 12.6916 24.385 12.4715 24.1167 12.3198L20.3291 10.1915C20.1045 10.0659 19.8515 10 19.5941 10C19.3368 10 19.0837 10.0659 18.8591 10.1915L12.5487 13.8348\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.00024 20.8833V13.7662C9.00024 12.9889 9.84821 12.5088 10.5147 12.9087L15.2265 15.7357C15.8289 16.0971 16.1975 16.7481 16.1975 17.4507V20.7618\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n // frame 4\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.79998 15.4143L15.3998 12.2144C15.6431 12.0739 15.919 12 16.1998 12C16.4807 12 16.7566 12.0739 16.9998 12.2144L22.5997 15.4143C22.8427 15.5546 23.0445 15.7563 23.1849 15.9992C23.3253 16.2421 23.3994 16.5177 23.3996 16.7982V23.1981C23.3994 23.4787 23.3253 23.7542 23.1849 23.9971C23.0445 24.24 22.8427 24.4418 22.5997 24.5821L16.9998 27.782C16.7566 27.9224 16.4807 27.9963 16.1998 27.9963C15.919 27.9963 15.6431 27.9224 15.3998 27.782L9.79998 24.5821C9.557 24.4418 9.35518 24.24 9.21476 23.9971C9.07435 23.7542 9.00029 23.4787 9 23.1981V19.9982\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.1997 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.23193 15.9985L16.1998 19.9984L23.1676 15.9985\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19.0996 14L12.5997 17.7527\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.8589 10.0099C19.0835 9.8843 19.3365 9.81836 19.5939 9.81836C19.8512 9.81836 20.1042 9.8843 20.3289 10.0099L24.1165 12.1381C24.3847 12.2898 24.6079 12.51 24.7632 12.7762C24.9185 13.0424 25.0003 13.345 25.0003 13.6532C25.0003 13.9613 24.9185 14.264 24.7632 14.5301C24.6079 14.7963 24.3847 15.0165 24.1165 15.1682L13.1324 21.3546C12.9071 21.4831 12.6522 21.5506 12.3929 21.5506C12.1335 21.5506 11.8787 21.4831 11.6534 21.3546L7.88378 19.2263C7.61553 19.0746 7.39237 18.8544 7.23709 18.5883C7.08182 18.3221 7 18.0194 7 17.7113C7 17.4031 7.08182 17.1005 7.23709 16.8343C7.39237 16.5681 7.61553 16.3479 7.88378 16.1963L18.8589 10.0099Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.2463 11.1364L16.2179 8.7419C16.2087 7.96996 15.3654 7.49911 14.7034 7.89629L9.98488 10.7274C9.37494 11.0933 9.00526 11.7557 9.01401 12.467L9.04907 15.3181\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n // frame 5\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M23.1849 15.9993C23.3253 16.2422 23.3994 16.5177 23.3996 16.7983V23.1982C23.3994 23.4787 23.3253 23.7543 23.1849 23.9972C23.0445 24.2401 22.8427 24.4418 22.5997 24.5821L16.9998 27.782C16.7566 27.9225 16.4807 27.9964 16.1998 27.9964C15.919 27.9964 15.6431 27.9225 15.3998 27.782L9.79998 24.5821C9.557 24.4418 9.35518 24.2401 9.21476 23.9972C9.07435 23.7543 9.00029 23.4787 9 23.1982V20.5001\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.1997 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.8589 10.2045C19.0835 10.0789 19.3365 10.0129 19.5939 10.0129C19.8512 10.0129 20.1042 10.0789 20.3289 10.2045L24.1165 12.3327C24.3847 12.4844 24.6079 12.7046 24.7632 12.9708C24.9185 13.2369 25.0003 13.5396 25.0003 13.8477C25.0003 14.1559 24.9185 14.4585 24.7632 14.7247C24.6079 14.9909 24.3847 15.2111 24.1165 15.3628L13.1324 21.5491C12.9071 21.6776 12.6522 21.7452 12.3929 21.7452C12.1335 21.7452 11.8787 21.6776 11.6534 21.5491L7.88378 19.4209C7.61553 19.2692 7.39237 19.049 7.23709 18.7828C7.08182 18.5167 7 18.214 7 17.9059C7 17.5977 7.08182 17.2951 7.23709 17.0289C7.39237 16.7627 7.61553 16.5425 7.88378 16.3908L18.8589 10.2045Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.8649 13.5L13.1414 10.1956C12.9176 10.0674 12.6642 10 12.4064 10C12.1485 10 11.8952 10.0674 11.6714 10.1956L7.88378 12.3328C7.61553 12.4845 7.39237 12.7047 7.23709 12.9709C7.08182 13.2371 7 13.5397 7 13.8479C7 14.156 7.08182 14.4587 7.23709 14.7248C7.39237 14.991 7.61553 15.2112 7.88378 15.3629L16 20\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M23.1972 15.5L23.1972 12.7662C23.1972 11.9889 22.3493 11.5088 21.6827 11.9087L16.971 14.7357C16.3686 15.0971 16 15.7482 16 16.4507L16.0001 19.5\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n // frame 6\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M23.3996 20V23.1982C23.3994 23.4788 23.3253 23.7543 23.1849 23.9972C23.0445 24.2401 22.8427 24.4419 22.5997 24.5821L16.9998 27.7821C16.7566 27.9225 16.4807 27.9964 16.1998 27.9964C15.919 27.9964 15.6431 27.9225 15.3998 27.7821L9.79998 24.5821C9.557 24.4419 9.35518 24.2401 9.21476 23.9972C9.07435 23.7543 9.00029 23.4788 9 23.1982V20.5001\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.1997 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.8589 10.2045C19.0835 10.0789 19.3365 10.0129 19.5939 10.0129C19.8512 10.0129 20.1042 10.0789 20.3289 10.2045L24.1165 12.3327C24.3847 12.4844 24.6079 12.7046 24.7632 12.9708C24.9185 13.2369 25.0003 13.5396 25.0003 13.8477C25.0003 14.1559 24.9185 14.4585 24.7632 14.7247C24.6079 14.9909 24.3847 15.2111 24.1165 15.3628L13.1324 21.5491C12.9071 21.6776 12.6522 21.7452 12.3929 21.7452C12.1335 21.7452 11.8787 21.6776 11.6534 21.5491L7.88378 19.4209C7.61553 19.2692 7.39237 19.049 7.23709 18.7828C7.08182 18.5167 7 18.214 7 17.9059C7 17.5977 7.08182 17.2951 7.23709 17.0289C7.39237 16.7627 7.61553 16.5425 7.88378 16.3908L18.8589 10.2045Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M24.1162 19.4209C24.3845 19.2693 24.6076 19.0491 24.7629 18.7829C24.9182 18.5167 25 18.2141 25 17.9059C25 17.5978 24.9182 17.2951 24.7629 17.029C24.6076 16.7628 24.3845 16.5426 24.1162 16.3909L13.1413 10.1955C12.9175 10.0674 12.6642 10 12.4063 10C12.1485 10 11.8951 10.0674 11.6713 10.1955L7.88377 12.3328C7.61552 12.4845 7.39236 12.7047 7.23709 12.9709C7.08182 13.237 7 13.5397 7 13.8478C7 14.156 7.08182 14.4586 7.23709 14.7248C7.39236 14.991 7.61552 15.2112 7.88377 15.3629L18.8677 21.5492C19.0914 21.6777 19.3448 21.7453 19.6027 21.7453C19.8606 21.7453 20.114 21.6777 20.3377 21.5492L24.1162 19.4209Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ),\n // frame 7\n (color: string) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M23.3996 20V23.1982C23.3994 23.4788 23.3253 23.7543 23.1849 23.9972C23.0445 24.2401 22.8427 24.4419 22.5997 24.5821L16.9998 27.7821C16.7566 27.9225 16.4807 27.9964 16.1998 27.9964C15.919 27.9964 15.6431 27.9225 15.3998 27.7821L9.79998 24.5821C9.557 24.4419 9.35518 24.2401 9.21476 23.9972C9.07435 23.7543 9.00029 23.4788 9 23.1982V20.5001\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.1997 27.9979V19.998\"\n stroke={color}\n strokeWidth=\"1.59996\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.8589 10.2045C19.0835 10.0789 19.3365 10.0129 19.5939 10.0129C19.8512 10.0129 20.1042 10.0789 20.3289 10.2045L24.1165 12.3327C24.3847 12.4844 24.6079 12.7046 24.7632 12.9708C24.9185 13.2369 25.0003 13.5396 25.0003 13.8477C25.0003 14.1559 24.9185 14.4585 24.7632 14.7247C24.6079 14.9909 24.3847 15.2111 24.1165 15.3628L13.1324 21.5491C12.9071 21.6776 12.6522 21.7452 12.3929 21.7452C12.1335 21.7452 11.8787 21.6776 11.6534 21.5491L7.88378 19.4209C7.61553 19.2692 7.39237 19.049 7.23709 18.7828C7.08182 18.5167 7 18.214 7 17.9059C7 17.5977 7.08182 17.2951 7.23709 17.0289C7.39237 16.7627 7.61553 16.5425 7.88378 16.3908L18.8589 10.2045Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M24.1162 19.4209C24.3845 19.2693 24.6076 19.0491 24.7629 18.7829C24.9182 18.5167 25 18.2141 25 17.9059C25 17.5978 24.9182 17.2951 24.7629 17.029C24.6076 16.7628 24.3845 16.5426 24.1162 16.3909L13.1413 10.1955C12.9175 10.0674 12.6642 10 12.4063 10C12.1485 10 11.8951 10.0674 11.6713 10.1955L7.88377 12.3328C7.61552 12.4845 7.39236 12.7047 7.23709 12.9709C7.08182 13.237 7 13.5397 7 13.8478C7 14.156 7.08182 14.4586 7.23709 14.7248C7.39236 14.991 7.61552 15.2112 7.88377 15.3629L18.8677 21.5492C19.0914 21.6777 19.3448 21.7453 19.6027 21.7453C19.8606 21.7453 20.114 21.6777 20.3377 21.5492L24.1162 19.4209Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16 7V4\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M19 8L21 7\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M13 8L11 7\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </svg>\n ),\n];\n\nexport interface PackageAnimationProps {\n readonly animate?: boolean;\n readonly loop?: boolean;\n readonly color?: string;\n readonly size?: number;\n readonly onComplete?: () => void;\n}\n\nexport function PackageAnimation({\n animate = false,\n loop = false,\n color = \"currentColor\",\n size = 32,\n onComplete,\n}: PackageAnimationProps) {\n const [frameIndex, setFrameIndex] = useState(0);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isRunning = useRef(false);\n\n useEffect(() => {\n if (!animate || isRunning.current) return;\n\n isRunning.current = true;\n setFrameIndex(0);\n\n let current = 0;\n const totalFrames = frames.length;\n\n const tick = () => {\n current += 1;\n if (current < totalFrames - 1) {\n setFrameIndex(current);\n timerRef.current = setTimeout(tick, FRAME_DURATION);\n } else {\n setFrameIndex(totalFrames - 1);\n timerRef.current = setTimeout(() => {\n if (loop) {\n current = 0;\n setFrameIndex(0);\n timerRef.current = setTimeout(tick, FRAME_DURATION);\n } else {\n isRunning.current = false;\n onComplete?.();\n }\n }, HOLD_LAST_FRAME);\n }\n };\n\n timerRef.current = setTimeout(tick, FRAME_DURATION);\n return () => {\n isRunning.current = false;\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, [animate, loop]);\n\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: size,\n height: size,\n flexShrink: 0,\n }}\n >\n <span\n style={{\n transform: `scale(${size / 32})`,\n transformOrigin: \"center\",\n display: \"block\",\n width: 32,\n height: 32,\n }}\n >\n {frames[frameIndex](color)}\n </span>\n </span>\n );\n}\n","import { twMerge } from \"tailwind-merge\";\nimport {\n PowerhouseButton,\n type PowerhouseButtonProps,\n} from \"../button/button.js\";\n\nexport interface PaginationButtonProps extends PowerhouseButtonProps {\n readonly active?: boolean;\n}\n\nexport const PaginationButton: React.FC<PaginationButtonProps> = ({\n active = false,\n ...props\n}) => {\n const { className: propClassName, ...restProps } = props;\n const mergedClassName = twMerge(\n \"h-8 min-w-8 border border-solid border-border bg-background px-3 py-1 text-xs text-foreground hover:hover-effect\",\n !active && \"border-0\",\n typeof propClassName === \"string\" && propClassName,\n );\n\n return (\n <PowerhouseButton\n color=\"light\"\n size=\"small\"\n className={mergedClassName}\n {...restProps}\n >\n {props.children}\n </PowerhouseButton>\n );\n};\n","import type {\n PageItem,\n UsePaginationBaseResult,\n} from \"../../hooks/usePagination.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { PaginationButton } from \"./pagination-button.js\";\n\nexport type PaginationEvent = {\n event: \"first\" | \"previous\" | \"next\" | \"last\";\n};\n\nexport type PaginationPageEvent = {\n event: \"page\";\n page: PageItem;\n};\n\nexport interface PaginationProps extends Omit<\n UsePaginationBaseResult,\n \"pageCount\" | \"currentPage\"\n> {\n displayPagesLeftIndicator?: boolean;\n firstPageLabel?: React.ReactNode;\n lastPageLabel?: React.ReactNode;\n nextPageLabel?: React.ReactNode;\n previousPageLabel?: React.ReactNode;\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n pages = [],\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n goToPage,\n isNextPageAvailable,\n isPreviousPageAvailable,\n hiddenNextPages,\n firstPageLabel = \"First\",\n lastPageLabel = \"Last\",\n nextPageLabel = \"Next\",\n previousPageLabel = \"Previous\",\n } = props;\n\n return (\n <div className=\"flex gap-x-1\">\n {firstPageLabel ? (\n <PaginationButton\n disabled={!isPreviousPageAvailable}\n onClick={() => goToFirstPage()}\n >\n {firstPageLabel}\n </PaginationButton>\n ) : null}\n {previousPageLabel ? (\n <PaginationButton\n disabled={!isPreviousPageAvailable}\n onClick={() => goToPreviousPage()}\n >\n <Icon className=\"rotate-90\" name=\"ChevronDown\" size={16} />\n {previousPageLabel}\n </PaginationButton>\n ) : null}\n {pages.map((page) => (\n <PaginationButton\n active={page.active}\n key={page.index}\n onClick={() => goToPage(page.index)}\n >\n {page.number}\n </PaginationButton>\n ))}\n {hiddenNextPages ? (\n <span className=\"flex items-center justify-center px-2\">...</span>\n ) : null}\n {nextPageLabel ? (\n <PaginationButton\n disabled={!isNextPageAvailable}\n onClick={() => goToNextPage()}\n >\n {nextPageLabel}\n <Icon className=\"-rotate-90\" name=\"ChevronDown\" size={16} />\n </PaginationButton>\n ) : null}\n {lastPageLabel ? (\n <PaginationButton\n disabled={!isNextPageAvailable}\n onClick={() => goToLastPage()}\n >\n {lastPageLabel}\n </PaginationButton>\n ) : null}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport type SidebarPanelProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function SidebarPanel({\n className,\n children,\n ...props\n}: SidebarPanelProps) {\n const [hasScroll, setHasScroll] = useState(false);\n\n function checkContentScroll(target: Element) {\n setHasScroll(\n target.scrollHeight - target.scrollTop - target.clientHeight > 1,\n );\n }\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n // listen for resize events to update shadow\n useEffect(() => {\n if (!containerRef.current) {\n return;\n }\n\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n const entry = entries.pop();\n if (!entry) {\n return;\n }\n\n const { target } = entry;\n checkContentScroll(target);\n });\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <>\n <div\n className={twMerge(\n \"scrollbar-none flex-1 overflow-auto text-foreground transition-shadow\",\n className,\n )}\n onScroll={(e) => checkContentScroll(e.currentTarget)}\n ref={containerRef}\n {...props}\n >\n {children}\n </div>\n {hasScroll ? (\n <div\n className=\"pointer-events-none z-10 -mt-12 h-12 w-full\"\n style={{\n boxShadow: \"inset 0px -33px 32px -16px rgba(0,0,0,0.1)\",\n }}\n />\n ) : null}\n </>\n );\n}\n","import { useRef, type HTMLAttributes } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function SidebarHeader({\n className,\n ...props\n}: HTMLAttributes<HTMLElement>) {\n return <div className={twMerge(\"shrink-0\", className)} {...props} />;\n}\n\nexport function SidebarFooter({\n className,\n ...props\n}: HTMLAttributes<HTMLElement>) {\n return <div className={twMerge(\"shrink-0\", className)} {...props} />;\n}\n\ntype SidebarProps = HTMLAttributes<HTMLElement> & {\n maxWidth: string;\n minWidth: string;\n};\nexport function Sidebar({\n maxWidth: _maxWidth = \"304px\",\n minWidth = \"80px\",\n className,\n children,\n ...props\n}: SidebarProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <div\n {...props}\n className={twMerge(\n `group z-1 flex h-full flex-col bg-sidebar text-sidebar-foreground`,\n className,\n )}\n ref={ref}\n style={{\n width: minWidth,\n }}\n >\n {children}\n </div>\n );\n}\n","/*\n * https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/utils.tsx#L215\n */\n\nimport type { RefObject } from \"react\";\nimport { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\n\nexport function useEnterAnimation(ref: RefObject<HTMLElement>, isReady = true) {\n const [isEntering, setEntering] = useState(true);\n useAnimation(\n ref,\n isEntering && isReady,\n useCallback(() => setEntering(false), []),\n );\n return isEntering && isReady;\n}\n\nexport function useExitAnimation(ref: RefObject<HTMLElement>, isOpen: boolean) {\n // State to trigger a re-render after animation is complete, which causes the element to be removed from the DOM.\n // Ref to track the state we're in, so we don't immediately reset isExiting to true after the animation.\n const [isExiting, setExiting] = useState(false);\n const [exitState, setExitState] = useState(\"idle\");\n\n // If isOpen becomes false, set isExiting to true.\n if (!isOpen && ref.current && exitState === \"idle\") {\n setExiting(true);\n setExitState(\"exiting\");\n }\n\n // If we exited, and the element has been removed, reset exit state to idle.\n if (!ref.current && exitState === \"exited\") {\n setExitState(\"idle\");\n }\n\n useAnimation(\n ref,\n isExiting,\n useCallback(() => {\n setExitState(\"exited\");\n setExiting(false);\n }, []),\n );\n\n return isExiting;\n}\n\nexport function useAnimation(\n ref: RefObject<HTMLElement>,\n isActive: boolean,\n onEnd: () => void,\n) {\n const prevAnimation = useRef<string | null>(null);\n if (isActive && ref.current) {\n // This is ok because we only read it in the layout effect below, immediately after the commit phase.\n // We could move this to another effect that runs every render, but this would be unnecessarily slow.\n // We only need the computed style right before the animation becomes active.\n prevAnimation.current = window.getComputedStyle(ref.current).animation;\n }\n\n useLayoutEffect(() => {\n if (isActive && ref.current) {\n // Make sure there's actually an animation, and it wasn't there before we triggered the update.\n const computedStyle = window.getComputedStyle(ref.current);\n if (\n computedStyle.animationName !== \"none\" &&\n computedStyle.animation !== prevAnimation.current\n ) {\n const onAnimationEnd = (e: AnimationEvent) => {\n if (e.target === ref.current) {\n element.removeEventListener(\"animationend\", onAnimationEnd);\n ReactDOM.flushSync(() => {\n onEnd();\n });\n }\n };\n\n const element = ref.current;\n element.addEventListener(\"animationend\", onAnimationEnd);\n return () => {\n element.removeEventListener(\"animationend\", onAnimationEnd);\n };\n } else {\n onEnd();\n }\n }\n }, [ref, isActive, onEnd]);\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nexport type PageItem = {\n index: number;\n number: number;\n active: boolean;\n};\n\nexport interface UsePaginationOptions {\n pageRange?: number;\n initialPage?: number;\n itemsPerPage?: number;\n}\n\nexport interface UsePaginationBaseResult {\n pages: PageItem[];\n goToPage: (page: number) => void;\n pageCount: number;\n currentPage: number;\n goToLastPage: () => void;\n goToFirstPage: () => void;\n goToNextPage: () => void;\n goToPreviousPage: () => void;\n isNextPageAvailable: boolean;\n isPreviousPageAvailable: boolean;\n hiddenNextPages: boolean;\n}\nexport interface UsePaginationResult<T> extends UsePaginationBaseResult {\n pageItems: T[];\n}\n\n/**\n * Custom hook for pagination.\n *\n * @template T - The type of items in the pagination.\n * @param {T[]} items - The array of items to paginate.\n * @param {UsePaginationOptions} [options] - The pagination options.\n * @returns {{\n * pages: PageItem[]; - The array of page items.\n * goToPage: (page: number) => void; - The function to go to a specific page.\n * pageItems: T[]; - The array of items for the current page.\n * pageCount: number; - The total number of pages.\n * currentPage: number; - The current page index.\n * goToLastPage: () => void; - The function to go to the last page.\n * goToFirstPage: () => void; - The function to go to the first page.\n * goToNextPage: () => void; - The function to go to the next page.\n * goToPreviousPage: () => void; - The function to go to the previous page.\n * isNextPageAvailable: boolean; - The flag to indicate if the next page is available.\n * isPreviousPageAvailable: boolean; - The flag to indicate if the previous page is available.\n * }} - The pagination object with various functions and properties.\n */\n\nexport function usePagination<T>(\n items: T[],\n options?: UsePaginationOptions,\n): UsePaginationResult<T> {\n const { itemsPerPage = 20, initialPage = 0, pageRange = 3 } = options || {};\n\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const pageCount = Math.ceil(items.length / itemsPerPage);\n const isNextPageAvailable = currentPage < pageCount - 1;\n const isPreviousPageAvailable = currentPage > 0;\n\n const goToNextPage = useCallback(() => {\n if (isNextPageAvailable) {\n setCurrentPage((prev) => prev + 1);\n }\n }, [isNextPageAvailable, setCurrentPage]);\n\n const goToPreviousPage = useCallback(() => {\n if (isPreviousPageAvailable) {\n setCurrentPage((prev) => prev - 1);\n }\n }, [isPreviousPageAvailable, setCurrentPage]);\n\n const goToLastPage = useCallback(() => {\n setCurrentPage(pageCount - 1);\n }, [pageCount]);\n\n const goToFirstPage = useCallback(() => {\n setCurrentPage(0);\n }, []);\n\n const goToPage = useCallback(\n (page: number) => {\n if (page >= 0 && page < pageCount) {\n setCurrentPage(page);\n }\n },\n [pageCount],\n );\n\n const pageOffset = Math.floor((pageRange - 1) / 2);\n const availableRange = Math.min(pageRange, pageCount);\n const maxStartIndex = Math.max(pageCount - availableRange);\n const startIndex = Math.min(\n maxStartIndex,\n Math.max(currentPage - pageOffset, 0),\n );\n\n const pages = useMemo(() => {\n const range: PageItem[] = [];\n for (let i = startIndex; i < availableRange + startIndex; i++) {\n range.push({\n index: i,\n active: i === currentPage,\n number: i + 1,\n });\n }\n return range;\n }, [availableRange, startIndex, currentPage]);\n\n const pageItems = items.slice(\n currentPage * itemsPerPage,\n (currentPage + 1) * itemsPerPage,\n );\n\n const hiddenNextPages =\n pages.length > 0 && pages.slice(-1)[0].index < pageCount - 1;\n\n return {\n pages,\n goToPage,\n pageItems,\n pageCount,\n currentPage,\n goToLastPage,\n goToFirstPage,\n goToNextPage,\n hiddenNextPages,\n goToPreviousPage,\n isNextPageAvailable,\n isPreviousPageAvailable,\n };\n}\n","import { useEffect, useState } from \"react\";\n\nexport const useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n\n useEffect(() => {\n const windowSizeHandler = () => {\n setWindowSize({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n };\n\n window.addEventListener(\"resize\", windowSizeHandler);\n\n return () => {\n window.removeEventListener(\"resize\", windowSizeHandler);\n };\n }, []);\n\n return windowSize;\n};\n"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -805,6 +805,69 @@
|
|
|
805
805
|
._1prJR {
|
|
806
806
|
color: rgb(38, 139, 210);
|
|
807
807
|
}
|
|
808
|
+
:root {
|
|
809
|
+
--background: var(--color-gray-50);
|
|
810
|
+
--foreground: var(--color-gray-800);
|
|
811
|
+
--card: var(--color-white);
|
|
812
|
+
--card-foreground: var(--color-gray-800);
|
|
813
|
+
--popover: var(--color-white);
|
|
814
|
+
--popover-foreground: var(--color-gray-800);
|
|
815
|
+
--primary: var(--color-gray-800);
|
|
816
|
+
--primary-foreground: var(--color-white);
|
|
817
|
+
--secondary: var(--color-gray-200);
|
|
818
|
+
--secondary-foreground: var(--color-gray-700);
|
|
819
|
+
--muted: var(--color-gray-100);
|
|
820
|
+
--muted-foreground: var(--color-gray-500);
|
|
821
|
+
--accent: var(--color-gray-100);
|
|
822
|
+
--accent-foreground: var(--color-gray-800);
|
|
823
|
+
--border: var(--color-gray-200);
|
|
824
|
+
--input: var(--color-gray-200);
|
|
825
|
+
--ring: var(--color-blue-500);
|
|
826
|
+
--hover: 0.95;
|
|
827
|
+
--active: 0.9;
|
|
828
|
+
--disabled: 0.5;
|
|
829
|
+
--destructive: var(--color-red-900);
|
|
830
|
+
--destructive-foreground: var(--color-white);
|
|
831
|
+
--info: var(--color-blue-900);
|
|
832
|
+
--info-foreground: var(--color-white);
|
|
833
|
+
--success: var(--color-green-900);
|
|
834
|
+
--success-foreground: var(--color-white);
|
|
835
|
+
--warning: var(--color-orange-900);
|
|
836
|
+
--warning-foreground: var(--color-white);
|
|
837
|
+
--chart-1: var(--color-blue-600);
|
|
838
|
+
--chart-2: var(--color-green-600);
|
|
839
|
+
--chart-3: var(--color-orange-600);
|
|
840
|
+
--chart-4: var(--color-purple-600);
|
|
841
|
+
--chart-5: var(--color-red-600);
|
|
842
|
+
--sidebar: var(--background);
|
|
843
|
+
--sidebar-foreground: var(--foreground);
|
|
844
|
+
--sidebar-primary: var(--primary);
|
|
845
|
+
--sidebar-primary-foreground: var(--primary-foreground);
|
|
846
|
+
--sidebar-accent: var(--accent);
|
|
847
|
+
--sidebar-accent-foreground: var(--accent-foreground);
|
|
848
|
+
--sidebar-border: var(--border);
|
|
849
|
+
--sidebar-ring: var(--ring);
|
|
850
|
+
}
|
|
851
|
+
.dark {
|
|
852
|
+
--background: var(--color-slate-800);
|
|
853
|
+
--foreground: var(--color-slate-100);
|
|
854
|
+
--card: var(--color-slate-700);
|
|
855
|
+
--card-foreground: var(--color-slate-100);
|
|
856
|
+
--popover: var(--color-slate-700);
|
|
857
|
+
--popover-foreground: var(--color-slate-100);
|
|
858
|
+
--primary: var(--color-slate-100);
|
|
859
|
+
--primary-foreground: var(--color-slate-900);
|
|
860
|
+
--secondary: var(--color-slate-600);
|
|
861
|
+
--secondary-foreground: var(--color-slate-100);
|
|
862
|
+
--muted: var(--color-slate-700);
|
|
863
|
+
--muted-foreground: var(--color-slate-300);
|
|
864
|
+
--accent: var(--color-slate-700);
|
|
865
|
+
--accent-foreground: var(--color-slate-100);
|
|
866
|
+
--border: var(--color-slate-500);
|
|
867
|
+
--input: var(--color-slate-500);
|
|
868
|
+
--hover: 1.25;
|
|
869
|
+
--active: 1.4;
|
|
870
|
+
}
|
|
808
871
|
:root {
|
|
809
872
|
--toastify-toast-min-height: 48px;
|
|
810
873
|
--toastify-toast-bd-radius: 8px;
|
|
@@ -865,7 +928,7 @@ input[type="number"] {
|
|
|
865
928
|
line-height: var(--leading-tight, 1.25);
|
|
866
929
|
--tw-font-weight: var(--font-weight-bold, 700);
|
|
867
930
|
font-weight: var(--font-weight-bold, 700);
|
|
868
|
-
color: var(--
|
|
931
|
+
color: var(--foreground);
|
|
869
932
|
}
|
|
870
933
|
.ph-default-styles h2 {
|
|
871
934
|
margin-top: calc(var(--spacing, 0.25rem) * 5);
|
|
@@ -877,7 +940,7 @@ input[type="number"] {
|
|
|
877
940
|
line-height: var(--leading-tight, 1.25);
|
|
878
941
|
--tw-font-weight: var(--font-weight-bold, 700);
|
|
879
942
|
font-weight: var(--font-weight-bold, 700);
|
|
880
|
-
color: var(--
|
|
943
|
+
color: var(--foreground);
|
|
881
944
|
}
|
|
882
945
|
.ph-default-styles h3 {
|
|
883
946
|
margin-top: calc(var(--spacing, 0.25rem) * 4);
|
|
@@ -889,7 +952,7 @@ input[type="number"] {
|
|
|
889
952
|
line-height: var(--leading-tight, 1.25);
|
|
890
953
|
--tw-font-weight: var(--font-weight-bold, 700);
|
|
891
954
|
font-weight: var(--font-weight-bold, 700);
|
|
892
|
-
color: var(--
|
|
955
|
+
color: var(--foreground);
|
|
893
956
|
}
|
|
894
957
|
.ph-default-styles p {
|
|
895
958
|
font-family: var(--font-sans);
|
|
@@ -899,7 +962,7 @@ input[type="number"] {
|
|
|
899
962
|
line-height: var(--leading-tight, 1.25);
|
|
900
963
|
--tw-font-weight: var(--font-weight-normal, 400);
|
|
901
964
|
font-weight: var(--font-weight-normal, 400);
|
|
902
|
-
color: var(--
|
|
965
|
+
color: var(--foreground);
|
|
903
966
|
}
|
|
904
967
|
.ph-default-styles small {
|
|
905
968
|
font-family: var(--font-sans);
|
|
@@ -909,7 +972,7 @@ input[type="number"] {
|
|
|
909
972
|
line-height: 1;
|
|
910
973
|
--tw-font-weight: var(--font-weight-normal, 400);
|
|
911
974
|
font-weight: var(--font-weight-normal, 400);
|
|
912
|
-
color: var(--
|
|
975
|
+
color: var(--foreground);
|
|
913
976
|
}
|
|
914
977
|
.ph-default-styles input[type="text"], .ph-default-styles input[type="email"], .ph-default-styles input[type="password"], .ph-default-styles input[type="search"], .ph-default-styles input[type="tel"], .ph-default-styles input[type="url"], .ph-default-styles input[type="number"], .ph-default-styles textarea {
|
|
915
978
|
margin-bottom: calc(var(--spacing, 0.25rem) * 2.5);
|
|
@@ -918,8 +981,8 @@ input[type="number"] {
|
|
|
918
981
|
border-radius: var(--radius-md, 0.375rem);
|
|
919
982
|
border-style: var(--tw-border-style);
|
|
920
983
|
border-width: 1px;
|
|
921
|
-
border-color: var(--
|
|
922
|
-
background-color: var(--
|
|
984
|
+
border-color: var(--input);
|
|
985
|
+
background-color: var(--card);
|
|
923
986
|
padding-inline: calc(var(--spacing, 0.25rem) * 3);
|
|
924
987
|
padding-block: calc(var(--spacing, 0.25rem) * 1.75);
|
|
925
988
|
font-family: var(--font-sans);
|
|
@@ -929,22 +992,22 @@ input[type="number"] {
|
|
|
929
992
|
line-height: calc(var(--spacing, 0.25rem) * 5);
|
|
930
993
|
--tw-font-weight: var(--font-weight-normal, 400);
|
|
931
994
|
font-weight: var(--font-weight-normal, 400);
|
|
932
|
-
color: var(--
|
|
995
|
+
color: var(--foreground);
|
|
933
996
|
}
|
|
934
997
|
.ph-default-styles textarea {
|
|
935
998
|
min-height: calc(var(--spacing, 0.25rem) * 9);
|
|
936
999
|
resize: vertical;
|
|
937
1000
|
}
|
|
938
1001
|
.ph-default-styles input[type="text"]:is([readonly], [disabled]), .ph-default-styles input[type="email"]:is([readonly], [disabled]), .ph-default-styles input[type="password"]:is([readonly], [disabled]), .ph-default-styles input[type="search"]:is([readonly], [disabled]), .ph-default-styles input[type="tel"]:is([readonly], [disabled]), .ph-default-styles input[type="url"]:is([readonly], [disabled]), .ph-default-styles input[type="number"]:is([readonly], [disabled]), .ph-default-styles textarea:is([readonly], [disabled]) {
|
|
939
|
-
background-color: var(--
|
|
940
|
-
color: var(--
|
|
1002
|
+
background-color: var(--background);
|
|
1003
|
+
color: var(--muted-foreground);
|
|
941
1004
|
}
|
|
942
1005
|
.ph-default-styles a {
|
|
943
|
-
color: var(--
|
|
1006
|
+
color: var(--info);
|
|
944
1007
|
text-decoration-line: none;
|
|
945
1008
|
}
|
|
946
1009
|
.ph-default-styles a:hover {
|
|
947
|
-
color: var(--
|
|
1010
|
+
color: var(--info);
|
|
948
1011
|
text-decoration-line: underline;
|
|
949
1012
|
--tw-brightness: brightness(50%);
|
|
950
1013
|
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
@@ -952,9 +1015,9 @@ input[type="number"] {
|
|
|
952
1015
|
.ph-default-styles a:focus {
|
|
953
1016
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
954
1017
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
955
|
-
--tw-ring-color:
|
|
1018
|
+
--tw-ring-color: var(--ring);
|
|
956
1019
|
@supports (color: color-mix(in lab, red, red)) {
|
|
957
|
-
--tw-ring-color: color-mix(in oklab, var(--
|
|
1020
|
+
--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);
|
|
958
1021
|
}
|
|
959
1022
|
--tw-ring-offset-width: 2px;
|
|
960
1023
|
--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
@@ -971,14 +1034,14 @@ input[type="number"] {
|
|
|
971
1034
|
font-family: var(--font-sans);
|
|
972
1035
|
--tw-font-weight: var(--font-weight-medium, 500);
|
|
973
1036
|
font-weight: var(--font-weight-medium, 500);
|
|
974
|
-
color: var(--
|
|
1037
|
+
color: var(--foreground);
|
|
975
1038
|
}
|
|
976
1039
|
.ph-default-styles hr {
|
|
977
1040
|
margin-block: calc(var(--spacing, 0.25rem) * 4);
|
|
978
1041
|
height: 1px;
|
|
979
1042
|
border-style: var(--tw-border-style);
|
|
980
1043
|
border-width: 0px;
|
|
981
|
-
background-color: var(--
|
|
1044
|
+
background-color: var(--border);
|
|
982
1045
|
}
|
|
983
1046
|
}
|
|
984
1047
|
@layer base {
|
|
@@ -4,7 +4,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
4
4
|
import { Slot } from "@radix-ui/react-slot";
|
|
5
5
|
import { cva } from "class-variance-authority";
|
|
6
6
|
//#region src/ui/components/button/button.tsx
|
|
7
|
-
const buttonVariants = cva(twMerge("inline-flex items-center justify-center gap-2", "rounded-md text-sm font-medium whitespace-nowrap", "transition-colors", "focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "disabled:
|
|
7
|
+
const buttonVariants = cva(twMerge("inline-flex items-center justify-center gap-2", "rounded-md text-sm font-medium whitespace-nowrap", "transition-colors", "focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "disabled:disabled-effect", "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0"), {
|
|
8
8
|
variants: { variant: {
|
|
9
9
|
default: "",
|
|
10
10
|
outline: "border",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","names":["twMerge","Slot","cva","forwardRef","buttonVariants","variants","variant","default","outline","ghost","defaultVariants","Button","className","asChild","props","ref","Comp"],"sources":["../../../../src/ui/components/button/button.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nconst buttonVariants = cva(\n twMerge(\n \"inline-flex items-center justify-center gap-2\",\n \"rounded-md text-sm font-medium whitespace-nowrap\",\n \"transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\",\n \"disabled:
|
|
1
|
+
{"version":3,"file":"button.js","names":["twMerge","Slot","cva","forwardRef","buttonVariants","variants","variant","default","outline","ghost","defaultVariants","Button","className","asChild","props","ref","Comp"],"sources":["../../../../src/ui/components/button/button.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n\nconst buttonVariants = cva(\n twMerge(\n \"inline-flex items-center justify-center gap-2\",\n \"rounded-md text-sm font-medium whitespace-nowrap\",\n \"transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\",\n \"disabled:disabled-effect\",\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n ),\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border\",\n ghost: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant, className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={twMerge(buttonVariants({ variant, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nexport { Button, buttonVariants };\n"],"mappings":";;;;;;AAMA,MAAMI,iBAAiBF,IACrBF,QACE,iDACA,oDACA,qBACA,+EACA,4BACA,8DACD,EACD;CACEK,UAAU,EACRC,SAAS;EACPC,SAAS;EACTC,SAAS;EACTC,OAAO;EACT,EACD;CACDC,iBAAiB,EACfJ,SAAS,WACX;CAEJ,CAAC;AASD,MAAMK,SAASR,4BACZ,EAAEG,SAASM,WAAWC,UAAU,OAAO,GAAGC,SAASC,QAAQ;AAE1D,QACE,oBAFWF,UAAUZ,OAAO,UAE5B;EACE,WAAWD,QAAQI,eAAe;GAAEE;GAASM;GAAW,CAAC,CAAC;EACrDG;EACL,GAAID;EACJ,CAAA;EAGP"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
//#region src/ui/components/character-counter/character-counter.tsx
|
|
3
3
|
const counterVariants = {
|
|
4
|
-
normal: "text-
|
|
5
|
-
warning: "text-
|
|
6
|
-
error: "text-
|
|
4
|
+
normal: "text-muted-foreground",
|
|
5
|
+
warning: "text-warning",
|
|
6
|
+
error: "text-destructive"
|
|
7
7
|
};
|
|
8
8
|
const maxLengthVariants = {
|
|
9
|
-
normal: "text-
|
|
10
|
-
warning: "text-
|
|
11
|
-
error: "text-
|
|
9
|
+
normal: "text-primary-foreground",
|
|
10
|
+
warning: "text-warning",
|
|
11
|
+
error: "text-destructive"
|
|
12
12
|
};
|
|
13
13
|
const CharacterCounter = ({ maxLength, value }) => {
|
|
14
14
|
const remaining = value.length / maxLength * 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-counter.js","names":["counterVariants","normal","warning","error","maxLengthVariants","CharacterCounter","maxLength","value","remaining","length","state"],"sources":["../../../../src/ui/components/character-counter/character-counter.tsx"],"sourcesContent":["export interface CharacterCounterProps {\n maxLength: number;\n value: string;\n}\n\nconst counterVariants = {\n normal: \"text-
|
|
1
|
+
{"version":3,"file":"character-counter.js","names":["counterVariants","normal","warning","error","maxLengthVariants","CharacterCounter","maxLength","value","remaining","length","state"],"sources":["../../../../src/ui/components/character-counter/character-counter.tsx"],"sourcesContent":["export interface CharacterCounterProps {\n maxLength: number;\n value: string;\n}\n\nconst counterVariants = {\n normal: \"text-muted-foreground\",\n warning: \"text-warning\",\n error: \"text-destructive\",\n};\n\nconst maxLengthVariants = {\n normal: \"text-primary-foreground\",\n warning: \"text-warning\",\n error: \"text-destructive\",\n};\n\nexport const CharacterCounter: React.FC<CharacterCounterProps> = ({\n maxLength,\n value,\n}) => {\n const remaining = (value.length / maxLength) * 100;\n const state =\n remaining < 90 ? \"normal\" : remaining <= 100 ? \"warning\" : \"error\";\n\n return (\n <div className=\"flex items-center text-xs/3\">\n <span className={counterVariants[state]}>{value.length}</span>\n <span className={maxLengthVariants[state]}>/{maxLength}</span>\n </div>\n );\n};\n"],"mappings":";;AAKA,MAAMA,kBAAkB;CACtBC,QAAQ;CACRC,SAAS;CACTC,OAAO;CACR;AAED,MAAMC,oBAAoB;CACxBH,QAAQ;CACRC,SAAS;CACTC,OAAO;CACR;AAED,MAAaE,oBAAqD,EAChEC,WACAC,YACI;CACJ,MAAMC,YAAaD,MAAME,SAASH,YAAa;CAC/C,MAAMI,QACJF,YAAY,KAAK,WAAWA,aAAa,MAAM,YAAY;AAE7D,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,QAAD;GAAM,WAAWR,gBAAgBU;aAASH,MAAME;GAAa,CAAA,EAC7D,qBAAC,QAAD;GAAM,WAAWL,kBAAkBM;aAAnC,CAA2C,KAAEJ,UAAgB;KACzD"}
|
|
@@ -5,7 +5,7 @@ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
|
5
5
|
//#region src/ui/components/checkbox/checkbox-base.tsx
|
|
6
6
|
const CheckboxBase = /* @__PURE__ */ React$1.forwardRef(({ className, checked, invalid, ...props }, ref) => /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
|
|
7
7
|
ref,
|
|
8
|
-
className: twMerge("peer size-4 shrink-0 rounded-sm", "border shadow-sm shadow-
|
|
8
|
+
className: twMerge("peer size-4 shrink-0 rounded-sm", "border shadow-sm shadow-foreground/4", "transition-shadow", "focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "disabled:disabled-effect", "data-state:border-foreground", "data-[state=checked]:bg-primary data-[state=indeterminate]:bg-primary", "data-[state=checked]:text-primary-foreground data-[state=indeterminate]:text-primary-foreground", !props.disabled && "group-hover:hover-effect", "data-[invalid=true]:data-state:border-destructive! data-[invalid=true]:data-[state=checked]:bg-destructive! data-[invalid=true]:data-[state=indeterminate]:bg-destructive!", "", className),
|
|
9
9
|
checked,
|
|
10
10
|
"data-invalid": invalid,
|
|
11
11
|
...props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox-base.js","names":["
|
|
1
|
+
{"version":3,"file":"checkbox-base.js","names":["CheckboxPrimitive","React","twMerge","CheckboxBase","forwardRef","className","checked","invalid","props","ref","disabled","displayName"],"sources":["../../../../src/ui/components/checkbox/checkbox-base.tsx"],"sourcesContent":["import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype CheckboxValue = boolean | \"indeterminate\";\n\ntype CheckboxBaseProps = React.ComponentPropsWithoutRef<\n typeof CheckboxPrimitive.Root\n> & {\n invalid?: boolean;\n};\n\nconst CheckboxBase = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxBaseProps\n>(({ className, checked, invalid, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={twMerge(\n // Base styles\n \"peer size-4 shrink-0 rounded-sm\",\n // Border & Shadow\n \"border shadow-sm shadow-foreground/4\",\n // Background & Ring\n \"transition-shadow\",\n // Focus styles\n \"focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\",\n // Disabled state\n \"disabled:disabled-effect\",\n // Checked & Indeterminate states\n \"data-state:border-foreground\",\n \"data-[state=checked]:bg-primary data-[state=indeterminate]:bg-primary\",\n \"data-[state=checked]:text-primary-foreground data-[state=indeterminate]:text-primary-foreground\",\n // hover states\n !props.disabled && \"group-hover:hover-effect\",\n // Error state\n \"data-[invalid=true]:data-state:border-destructive! data-[invalid=true]:data-[state=checked]:bg-destructive! data-[invalid=true]:data-[state=indeterminate]:bg-destructive!\",\n \"\",\n className,\n )}\n checked={checked}\n data-invalid={invalid}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {checked === \"indeterminate\" ? (\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"currentcolor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.75 4.5C0.75 4.08579 1.08579 3.75 1.5 3.75H7.5C7.91421 8.25 4.5C8.25 4.91421 7.91421 5.25 7.5 5.25H1.5C1.08579 0.75 4.5Z\"\n />\n </svg>\n ) : checked ? (\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"currentcolor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.53547 0.62293C8.88226 0.849446 8.97976 1.3142 8.75325 1.66099L4.5083 8.1599C4.38833 8.34356 4.19397 8.4655 3.9764 8.49358C3.75883 8.52167 3.53987 8.45309 3.3772 8.30591L0.616113 5.80777C0.308959 5.52987 0.285246 5.05559 0.563148 4.74844C0.84105 4.44128 1.31533 4.41757 1.62249 4.69547L3.73256 6.60459L7.49741 0.840706C7.72393 0.493916 8.18868 0.396414 8.53547 0.62293Z\"\n />\n </svg>\n ) : null}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\n\nCheckboxBase.displayName = \"CheckboxBase\";\n\nexport { CheckboxBase, type CheckboxValue };\n"],"mappings":";;;;;AAYA,MAAMG,eAAeF,wBAAMG,YAGxB,EAAEC,WAAWC,SAASC,SAAS,GAAGC,SAASC,QAC5C,oBAAC,kBAAkB,MAAnB;CACOA;CACL,WAAWP,QAET,mCAEA,wCAEA,qBAEA,+EAEA,4BAEA,gCACA,yEACA,mGAEA,CAACM,MAAME,YAAY,4BAEnB,8KACA,IACAL,UACD;CACQC;CACT,gBAAcC;CACd,GAAIC;WAEJ,oBAAC,kBAAkB,WAAnB;EAA6B,WAAU;YACpCF,YAAY,kBACX,oBAAC,OAAD;GACE,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GACL,OAAM;aAEN,oBAAC,QAAD;IACE,UAAS;IACT,UAAS;IACT,GAAE;IAA4H,CAAA;GAE5H,CAAA,GACJA,UACF,oBAAC,OAAD;GACE,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GACL,OAAM;aAEN,oBAAC,QAAD;IACE,UAAS;IACT,UAAS;IACT,GAAE;IAAqX,CAAA;GAErX,CAAA,GACJ;EACuB,CAAA;CAEhC,CAAA,CAAC;AAEFH,aAAaQ,cAAc"}
|
|
@@ -36,7 +36,7 @@ const Checkbox = /* @__PURE__ */ React.forwardRef(({ id: idProp, name, label, va
|
|
|
36
36
|
disabled,
|
|
37
37
|
hasError,
|
|
38
38
|
description,
|
|
39
|
-
className: twMerge(!disabled && "group-hover:
|
|
39
|
+
className: twMerge(!disabled && "group-hover:hover-effect"),
|
|
40
40
|
inline: true,
|
|
41
41
|
children: label
|
|
42
42
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","names":["twMerge","React","useId","FormLabel","FormMessageList","CheckboxBase","Checkbox","forwardRef","id","idProp","name","label","value","defaultValue","disabled","required","description","errors","warnings","onChange","className","props","ref","generatedId","hasError","length","castValue","displayName"],"sources":["../../../../src/ui/components/checkbox/checkbox.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport React, { useId } from \"react\";\nimport type { InputBaseProps } from \"../../types.js\";\nimport { FormLabel } from \"../form-label/form-label.js\";\nimport { FormMessageList } from \"../form-message/message-list.js\";\nimport type { CheckboxValue } from \"./checkbox-base.js\";\nimport { CheckboxBase } from \"./checkbox-base.js\";\n\ntype CheckboxBaseProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n keyof InputBaseProps<CheckboxValue> | \"onChange\"\n>;\n\nexport interface CheckboxProps\n extends CheckboxBaseProps, InputBaseProps<CheckboxValue> {\n onChange?: ((checked: CheckboxValue) => void) | ((checked: boolean) => void);\n}\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n id: idProp,\n name,\n label,\n value,\n defaultValue,\n disabled,\n required,\n description,\n errors,\n warnings,\n onChange,\n className,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const hasError = !!errors?.length;\n\n const castValue = (value: unknown) => {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return value;\n };\n\n return (\n <div className={twMerge(\"flex flex-col gap-2\")}>\n <div\n className={twMerge(\"group flex items-center space-x-2\", className)}\n >\n <CheckboxBase\n id={id}\n name={name}\n checked={castValue(value ?? defaultValue) as CheckboxValue}\n disabled={disabled}\n onCheckedChange={onChange}\n required={required}\n invalid={hasError}\n aria-invalid={hasError}\n ref={ref}\n {...props}\n />\n <FormLabel\n htmlFor={id}\n required={required}\n disabled={disabled}\n hasError={hasError}\n description={description}\n className={twMerge(!disabled && \"group-hover:
|
|
1
|
+
{"version":3,"file":"checkbox.js","names":["twMerge","React","useId","FormLabel","FormMessageList","CheckboxBase","Checkbox","forwardRef","id","idProp","name","label","value","defaultValue","disabled","required","description","errors","warnings","onChange","className","props","ref","generatedId","hasError","length","castValue","displayName"],"sources":["../../../../src/ui/components/checkbox/checkbox.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport React, { useId } from \"react\";\nimport type { InputBaseProps } from \"../../types.js\";\nimport { FormLabel } from \"../form-label/form-label.js\";\nimport { FormMessageList } from \"../form-message/message-list.js\";\nimport type { CheckboxValue } from \"./checkbox-base.js\";\nimport { CheckboxBase } from \"./checkbox-base.js\";\n\ntype CheckboxBaseProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n keyof InputBaseProps<CheckboxValue> | \"onChange\"\n>;\n\nexport interface CheckboxProps\n extends CheckboxBaseProps, InputBaseProps<CheckboxValue> {\n onChange?: ((checked: CheckboxValue) => void) | ((checked: boolean) => void);\n}\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n id: idProp,\n name,\n label,\n value,\n defaultValue,\n disabled,\n required,\n description,\n errors,\n warnings,\n onChange,\n className,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const hasError = !!errors?.length;\n\n const castValue = (value: unknown) => {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return value;\n };\n\n return (\n <div className={twMerge(\"flex flex-col gap-2\")}>\n <div\n className={twMerge(\"group flex items-center space-x-2\", className)}\n >\n <CheckboxBase\n id={id}\n name={name}\n checked={castValue(value ?? defaultValue) as CheckboxValue}\n disabled={disabled}\n onCheckedChange={onChange}\n required={required}\n invalid={hasError}\n aria-invalid={hasError}\n ref={ref}\n {...props}\n />\n <FormLabel\n htmlFor={id}\n required={required}\n disabled={disabled}\n hasError={hasError}\n description={description}\n className={twMerge(!disabled && \"group-hover:hover-effect\")}\n inline\n >\n {label}\n </FormLabel>\n </div>\n {warnings && <FormMessageList type=\"warning\" messages={warnings} />}\n {errors && <FormMessageList type=\"error\" messages={errors} />}\n </div>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n"],"mappings":";;;;;;;AAkBA,MAAMM,WAAWL,sBAAMM,YAEnB,EACEC,IAAIC,QACJC,MACAC,OACAC,OACAC,cACAC,UACAC,UACAC,aACAC,QACAC,UACAC,UACAC,WACA,GAAGC,SAELC,QACG;CACH,MAAMC,cAAcrB,OAAO;CAC3B,MAAMM,KAAKC,UAAUc;CACrB,MAAMC,WAAW,CAAC,CAACP,QAAQQ;CAE3B,MAAMC,aAAad,UAAmB;AACpC,MAAIA,UAAU,OAAQ,QAAO;AAC7B,MAAIA,UAAU,QAAS,QAAO;AAC9B,SAAOA;;AAGT,QACE,qBAAC,OAAD;EAAK,WAAWZ,QAAQ,sBAAsB;YAA9C;GACE,qBAAC,OAAD;IACE,WAAWA,QAAQ,qCAAqCoB,UAAU;cADpE,CAGE,oBAAC,cAAD;KACMZ;KACEE;KACN,SAASgB,UAAUd,SAASC,aAA8B;KAChDC;KACV,iBAAiBK;KACPJ;KACV,SAASS;KACT,gBAAcA;KACTF;KACL,GAAID;KAAM,CAAA,EAEZ,oBAAC,WAAD;KACE,SAASb;KACCO;KACAD;KACAU;KACGR;KACb,WAAWhB,QAAQ,CAACc,YAAY,2BAA2B;KAC3D,QAAA;eAECH;KACQ,CAAA,CACR;;GACJO,YAAY,oBAAC,iBAAD;IAAiB,MAAK;IAAU,UAAUA;IAAY,CAAA;GAClED,UAAU,oBAAC,iBAAD;IAAiB,MAAK;IAAQ,UAAUA;IAAU,CAAA;GACzD;;EAGX;AAEDX,SAASqB,cAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as CommandItem, i as CommandInput, n as CommandEmpty, o as CommandList, r as CommandGroup, s as CommandLoading, t as Command } from "../../../command-
|
|
1
|
+
import { a as CommandItem, i as CommandInput, n as CommandEmpty, o as CommandList, r as CommandGroup, s as CommandLoading, t as Command } from "../../../command-tFzjgzge.js";
|
|
2
2
|
export { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading };
|
|
@@ -11,22 +11,22 @@ const Command = /* @__PURE__ */ React.forwardRef(({ className, ...props }, ref)
|
|
|
11
11
|
}));
|
|
12
12
|
Command.displayName = Command$1.displayName;
|
|
13
13
|
const CommandInput = /* @__PURE__ */ React.forwardRef(({ wrapperClassName, className, ...props }, ref) => /* @__PURE__ */ jsxs("div", {
|
|
14
|
-
className: twMerge("group relative flex items-center border-b", "border-b-
|
|
14
|
+
className: twMerge("group relative flex items-center border-b", "border-b-border", "hover:hover-effect", "focus-within:border-b-border", "focus-within:bg-accent", wrapperClassName),
|
|
15
15
|
"cmdk-input-wrapper": "",
|
|
16
16
|
children: [/* @__PURE__ */ jsx(Icon, {
|
|
17
17
|
name: "Search",
|
|
18
18
|
size: 16,
|
|
19
|
-
className: twMerge("pointer-events-none absolute top-3.5 left-2 text-
|
|
19
|
+
className: twMerge("pointer-events-none absolute top-3.5 left-2 text-muted-foreground", "group-hover:hover-effect", "group-focus-within:text-foreground!")
|
|
20
20
|
}), /* @__PURE__ */ jsx(Command$1.Input, {
|
|
21
21
|
ref,
|
|
22
|
-
className: twMerge("flex w-full bg-transparent pt-3 pr-3 pb-2 pl-8 text-sm/5 font-normal outline-none", "
|
|
22
|
+
className: twMerge("flex w-full bg-transparent pt-3 pr-3 pb-2 pl-8 text-sm/5 font-normal outline-none", "text-foreground placeholder:text-muted-foreground disabled:disabled-effect", "group-hover:hover-effect", "disabled:disabled-effect", className),
|
|
23
23
|
...props
|
|
24
24
|
})]
|
|
25
25
|
}));
|
|
26
26
|
CommandInput.displayName = Command$1.Input.displayName;
|
|
27
27
|
const CommandList = /* @__PURE__ */ React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Command$1.List, {
|
|
28
28
|
ref,
|
|
29
|
-
className: twMerge("max-h-75 overflow-x-hidden overflow-y-auto", "focus:outline-none", "scrollbar-thin", "scrollbar-track-transparent", "scrollbar-thumb-
|
|
29
|
+
className: twMerge("max-h-75 overflow-x-hidden overflow-y-auto", "focus:outline-none", "scrollbar-thin", "scrollbar-track-transparent", "scrollbar-thumb-border hover:scrollbar-thumb-border", "scrollbar-thumb-rounded-md", className),
|
|
30
30
|
...props
|
|
31
31
|
}));
|
|
32
32
|
CommandList.displayName = Command$1.List.displayName;
|
|
@@ -48,7 +48,7 @@ const CommandGroup = /* @__PURE__ */ React.forwardRef(({ className, ...props },
|
|
|
48
48
|
CommandGroup.displayName = Command$1.Group.displayName;
|
|
49
49
|
const CommandItem = /* @__PURE__ */ React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Command$1.Item, {
|
|
50
50
|
ref,
|
|
51
|
-
className: twMerge("relative flex items-center justify-between select-none", "h-8 gap-2 rounded-md py-1.5 pr-2.5 pl-1.5", "text-sm/4 text-
|
|
51
|
+
className: twMerge("relative flex items-center justify-between select-none", "h-8 gap-2 rounded-md py-1.5 pr-2.5 pl-1.5", "text-sm/4 text-foreground outline-none", "border-y-2 border-border", "data-[disabled=true]:disabled-effect", "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
|
|
52
52
|
...props
|
|
53
53
|
}));
|
|
54
54
|
CommandItem.displayName = Command$1.Item.displayName;
|