@braintwopoint0/playback-commons 0.1.14 → 0.1.15

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/ui/index.js CHANGED
@@ -1675,15 +1675,640 @@ function getPayloadConfigFromPayload(config, payload, key) {
1675
1675
  return configLabelKey in config ? config[configLabelKey] : config[key];
1676
1676
  }
1677
1677
 
1678
+ // src/ui/skeleton.tsx
1679
+ import { jsx as jsx18 } from "react/jsx-runtime";
1680
+ function Skeleton({ className, ...props }) {
1681
+ return /* @__PURE__ */ jsx18("div", { className: cn("animate-pulse rounded-md bg-muted", className), ...props });
1682
+ }
1683
+
1684
+ // src/ui/separator.tsx
1685
+ import * as React16 from "react";
1686
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
1687
+ import { jsx as jsx19 } from "react/jsx-runtime";
1688
+ var Separator2 = React16.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx19(
1689
+ SeparatorPrimitive.Root,
1690
+ {
1691
+ ref,
1692
+ decorative,
1693
+ orientation,
1694
+ className: cn(
1695
+ "shrink-0 bg-border",
1696
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
1697
+ className
1698
+ ),
1699
+ ...props
1700
+ }
1701
+ ));
1702
+ Separator2.displayName = SeparatorPrimitive.Root.displayName;
1703
+
1704
+ // src/ui/tabs.tsx
1705
+ import * as React17 from "react";
1706
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
1707
+ import { jsx as jsx20 } from "react/jsx-runtime";
1708
+ var Tabs = TabsPrimitive.Root;
1709
+ var TabsList = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1710
+ TabsPrimitive.List,
1711
+ {
1712
+ ref,
1713
+ className: cn(
1714
+ "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
1715
+ className
1716
+ ),
1717
+ ...props
1718
+ }
1719
+ ));
1720
+ TabsList.displayName = TabsPrimitive.List.displayName;
1721
+ var TabsTrigger = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1722
+ TabsPrimitive.Trigger,
1723
+ {
1724
+ ref,
1725
+ className: cn(
1726
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
1727
+ className
1728
+ ),
1729
+ ...props
1730
+ }
1731
+ ));
1732
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
1733
+ var TabsContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1734
+ TabsPrimitive.Content,
1735
+ {
1736
+ ref,
1737
+ className: cn(
1738
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
1739
+ className
1740
+ ),
1741
+ ...props
1742
+ }
1743
+ ));
1744
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
1745
+
1746
+ // src/ui/checkbox.tsx
1747
+ import * as React18 from "react";
1748
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
1749
+ import { jsx as jsx21 } from "react/jsx-runtime";
1750
+ var Checkbox = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1751
+ CheckboxPrimitive.Root,
1752
+ {
1753
+ ref,
1754
+ className: cn(
1755
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background 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",
1756
+ className
1757
+ ),
1758
+ ...props,
1759
+ children: /* @__PURE__ */ jsx21(CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: /* @__PURE__ */ jsx21(
1760
+ "svg",
1761
+ {
1762
+ xmlns: "http://www.w3.org/2000/svg",
1763
+ viewBox: "0 0 24 24",
1764
+ fill: "none",
1765
+ stroke: "currentColor",
1766
+ strokeWidth: "3",
1767
+ strokeLinecap: "round",
1768
+ strokeLinejoin: "round",
1769
+ className: "h-3.5 w-3.5",
1770
+ children: /* @__PURE__ */ jsx21("polyline", { points: "20 6 9 17 4 12" })
1771
+ }
1772
+ ) })
1773
+ }
1774
+ ));
1775
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
1776
+
1777
+ // src/ui/switch.tsx
1778
+ import * as React19 from "react";
1779
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
1780
+ import { jsx as jsx22 } from "react/jsx-runtime";
1781
+ var Switch = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
1782
+ SwitchPrimitives.Root,
1783
+ {
1784
+ className: cn(
1785
+ "peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
1786
+ className
1787
+ ),
1788
+ ...props,
1789
+ ref,
1790
+ children: /* @__PURE__ */ jsx22(
1791
+ SwitchPrimitives.Thumb,
1792
+ {
1793
+ className: cn(
1794
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
1795
+ )
1796
+ }
1797
+ )
1798
+ }
1799
+ ));
1800
+ Switch.displayName = SwitchPrimitives.Root.displayName;
1801
+
1802
+ // src/ui/collapsible.tsx
1803
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
1804
+ var Collapsible = CollapsiblePrimitive.Root;
1805
+ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
1806
+ var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
1807
+
1808
+ // src/ui/sheet.tsx
1809
+ import * as React20 from "react";
1810
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
1811
+ import { cva as cva4 } from "class-variance-authority";
1812
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
1813
+ var Sheet = SheetPrimitive.Root;
1814
+ var SheetTrigger = SheetPrimitive.Trigger;
1815
+ var SheetClose = SheetPrimitive.Close;
1816
+ var SheetPortal = SheetPrimitive.Portal;
1817
+ var SheetOverlay = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
1818
+ SheetPrimitive.Overlay,
1819
+ {
1820
+ className: cn(
1821
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1822
+ className
1823
+ ),
1824
+ ...props,
1825
+ ref
1826
+ }
1827
+ ));
1828
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
1829
+ var sheetVariants = cva4(
1830
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1831
+ {
1832
+ variants: {
1833
+ side: {
1834
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1835
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1836
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
1837
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
1838
+ }
1839
+ },
1840
+ defaultVariants: {
1841
+ side: "right"
1842
+ }
1843
+ }
1844
+ );
1845
+ var SheetContent = React20.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(SheetPortal, { children: [
1846
+ /* @__PURE__ */ jsx23(SheetOverlay, {}),
1847
+ /* @__PURE__ */ jsxs12(
1848
+ SheetPrimitive.Content,
1849
+ {
1850
+ ref,
1851
+ className: cn(sheetVariants({ side }), className),
1852
+ ...props,
1853
+ children: [
1854
+ children,
1855
+ /* @__PURE__ */ jsxs12(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1856
+ /* @__PURE__ */ jsxs12(
1857
+ "svg",
1858
+ {
1859
+ xmlns: "http://www.w3.org/2000/svg",
1860
+ width: "16",
1861
+ height: "16",
1862
+ viewBox: "0 0 24 24",
1863
+ fill: "none",
1864
+ stroke: "currentColor",
1865
+ strokeWidth: "2",
1866
+ strokeLinecap: "round",
1867
+ strokeLinejoin: "round",
1868
+ children: [
1869
+ /* @__PURE__ */ jsx23("path", { d: "M18 6 6 18" }),
1870
+ /* @__PURE__ */ jsx23("path", { d: "m6 6 12 12" })
1871
+ ]
1872
+ }
1873
+ ),
1874
+ /* @__PURE__ */ jsx23("span", { className: "sr-only", children: "Close" })
1875
+ ] })
1876
+ ]
1877
+ }
1878
+ )
1879
+ ] }));
1880
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
1881
+ var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx23("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props });
1882
+ SheetHeader.displayName = "SheetHeader";
1883
+ var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx23(
1884
+ "div",
1885
+ {
1886
+ className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
1887
+ ...props
1888
+ }
1889
+ );
1890
+ SheetFooter.displayName = "SheetFooter";
1891
+ var SheetTitle = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
1892
+ SheetPrimitive.Title,
1893
+ {
1894
+ ref,
1895
+ className: cn("text-lg font-semibold text-foreground", className),
1896
+ ...props
1897
+ }
1898
+ ));
1899
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
1900
+ var SheetDescription = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
1901
+ SheetPrimitive.Description,
1902
+ {
1903
+ ref,
1904
+ className: cn("text-sm text-muted-foreground", className),
1905
+ ...props
1906
+ }
1907
+ ));
1908
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
1909
+
1910
+ // src/ui/textarea.tsx
1911
+ import * as React21 from "react";
1912
+ import { jsx as jsx24 } from "react/jsx-runtime";
1913
+ var Textarea = React21.forwardRef(
1914
+ ({ className, ...props }, ref) => {
1915
+ return /* @__PURE__ */ jsx24(
1916
+ "textarea",
1917
+ {
1918
+ className: cn(
1919
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
1920
+ className
1921
+ ),
1922
+ ref,
1923
+ ...props
1924
+ }
1925
+ );
1926
+ }
1927
+ );
1928
+ Textarea.displayName = "Textarea";
1929
+
1930
+ // src/ui/tooltip.tsx
1931
+ import * as React22 from "react";
1932
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
1933
+ import { jsx as jsx25 } from "react/jsx-runtime";
1934
+ var TooltipProvider = TooltipPrimitive.Provider;
1935
+ var Tooltip2 = TooltipPrimitive.Root;
1936
+ var TooltipTrigger = TooltipPrimitive.Trigger;
1937
+ var TooltipContent = React22.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx25(
1938
+ TooltipPrimitive.Content,
1939
+ {
1940
+ ref,
1941
+ sideOffset,
1942
+ className: cn(
1943
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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",
1944
+ className
1945
+ ),
1946
+ ...props
1947
+ }
1948
+ ));
1949
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
1950
+
1951
+ // src/ui/avatar.tsx
1952
+ import * as React23 from "react";
1953
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
1954
+ import { jsx as jsx26 } from "react/jsx-runtime";
1955
+ var Avatar = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
1956
+ AvatarPrimitive.Root,
1957
+ {
1958
+ ref,
1959
+ className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className),
1960
+ ...props
1961
+ }
1962
+ ));
1963
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
1964
+ var AvatarImage = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
1965
+ AvatarPrimitive.Image,
1966
+ {
1967
+ ref,
1968
+ className: cn("aspect-square h-full w-full", className),
1969
+ ...props
1970
+ }
1971
+ ));
1972
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1973
+ var AvatarFallback = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
1974
+ AvatarPrimitive.Fallback,
1975
+ {
1976
+ ref,
1977
+ className: cn(
1978
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
1979
+ className
1980
+ ),
1981
+ ...props
1982
+ }
1983
+ ));
1984
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1985
+
1986
+ // src/ui/page-shell.tsx
1987
+ import { jsx as jsx27 } from "react/jsx-runtime";
1988
+ var maxWidthClasses = {
1989
+ sm: "max-w-screen-sm",
1990
+ md: "max-w-screen-md",
1991
+ lg: "max-w-screen-lg",
1992
+ xl: "max-w-screen-xl",
1993
+ "2xl": "max-w-screen-2xl",
1994
+ full: "max-w-full"
1995
+ };
1996
+ function PageShell({ maxWidth = "xl", className, children, ...props }) {
1997
+ return /* @__PURE__ */ jsx27(
1998
+ "div",
1999
+ {
2000
+ className: cn(
2001
+ "min-h-screen bg-[var(--night)] text-[var(--timberwolf)]",
2002
+ className
2003
+ ),
2004
+ ...props,
2005
+ children: /* @__PURE__ */ jsx27("div", { className: cn("mx-auto w-full px-4 py-6 sm:px-6 lg:px-8", maxWidthClasses[maxWidth]), children })
2006
+ }
2007
+ );
2008
+ }
2009
+
2010
+ // src/ui/stats-grid.tsx
2011
+ import { jsx as jsx28, jsxs as jsxs13 } from "react/jsx-runtime";
2012
+ var colorClasses = {
2013
+ default: "text-[var(--timberwolf)]",
2014
+ green: "text-emerald-400",
2015
+ yellow: "text-amber-400",
2016
+ red: "text-red-400",
2017
+ blue: "text-sky-400"
2018
+ };
2019
+ var columnClasses = {
2020
+ 2: "grid-cols-2",
2021
+ 3: "grid-cols-2 sm:grid-cols-3",
2022
+ 4: "grid-cols-2 sm:grid-cols-4",
2023
+ 6: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-6"
2024
+ };
2025
+ function StatsGrid({ stats, columns = 4, className, ...props }) {
2026
+ return /* @__PURE__ */ jsx28("div", { className: cn("grid gap-3", columnClasses[columns], className), ...props, children: stats.map((stat) => /* @__PURE__ */ jsxs13(
2027
+ "div",
2028
+ {
2029
+ className: cn(
2030
+ "rounded-lg border border-[var(--border)] bg-card p-4",
2031
+ stat.alert && "border-red-500/50"
2032
+ ),
2033
+ children: [
2034
+ /* @__PURE__ */ jsx28("p", { className: "text-xs text-muted-foreground", children: stat.label }),
2035
+ /* @__PURE__ */ jsx28(
2036
+ "p",
2037
+ {
2038
+ className: cn(
2039
+ "mt-1 text-2xl font-semibold",
2040
+ colorClasses[stat.color || "default"]
2041
+ ),
2042
+ children: stat.value
2043
+ }
2044
+ )
2045
+ ]
2046
+ },
2047
+ stat.label
2048
+ )) });
2049
+ }
2050
+
2051
+ // src/ui/section-card.tsx
2052
+ import * as React24 from "react";
2053
+ import { jsx as jsx29, jsxs as jsxs14 } from "react/jsx-runtime";
2054
+ function SectionCard({
2055
+ icon,
2056
+ title,
2057
+ count,
2058
+ defaultOpen = true,
2059
+ collapsible = true,
2060
+ className,
2061
+ children,
2062
+ ...props
2063
+ }) {
2064
+ const [open, setOpen] = React24.useState(defaultOpen);
2065
+ return /* @__PURE__ */ jsxs14(
2066
+ "div",
2067
+ {
2068
+ className: cn("rounded-lg border border-[var(--border)] bg-card", className),
2069
+ ...props,
2070
+ children: [
2071
+ /* @__PURE__ */ jsxs14(
2072
+ "button",
2073
+ {
2074
+ type: "button",
2075
+ onClick: () => collapsible && setOpen(!open),
2076
+ className: cn(
2077
+ "flex w-full items-center gap-3 p-4 text-left",
2078
+ collapsible && "cursor-pointer hover:bg-muted/50"
2079
+ ),
2080
+ children: [
2081
+ icon && /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground", children: icon }),
2082
+ /* @__PURE__ */ jsx29("span", { className: "flex-1 text-sm font-medium text-[var(--timberwolf)]", children: title }),
2083
+ count !== void 0 && /* @__PURE__ */ jsx29("span", { className: "rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground", children: count }),
2084
+ collapsible && /* @__PURE__ */ jsx29(
2085
+ "svg",
2086
+ {
2087
+ xmlns: "http://www.w3.org/2000/svg",
2088
+ width: "16",
2089
+ height: "16",
2090
+ viewBox: "0 0 24 24",
2091
+ fill: "none",
2092
+ stroke: "currentColor",
2093
+ strokeWidth: "2",
2094
+ strokeLinecap: "round",
2095
+ strokeLinejoin: "round",
2096
+ className: cn(
2097
+ "text-muted-foreground transition-transform duration-200",
2098
+ open && "rotate-180"
2099
+ ),
2100
+ children: /* @__PURE__ */ jsx29("path", { d: "m6 9 6 6 6-6" })
2101
+ }
2102
+ )
2103
+ ]
2104
+ }
2105
+ ),
2106
+ open && /* @__PURE__ */ jsx29("div", { className: "border-t border-[var(--border)] p-4", children })
2107
+ ]
2108
+ }
2109
+ );
2110
+ }
2111
+
2112
+ // src/ui/empty-state.tsx
2113
+ import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
2114
+ function EmptyState({ icon, title, description, action, className, ...props }) {
2115
+ return /* @__PURE__ */ jsxs15(
2116
+ "div",
2117
+ {
2118
+ className: cn("flex flex-col items-center justify-center py-12 text-center", className),
2119
+ ...props,
2120
+ children: [
2121
+ icon && /* @__PURE__ */ jsx30("div", { className: "mb-4 text-muted-foreground", children: icon }),
2122
+ /* @__PURE__ */ jsx30("h3", { className: "text-lg font-medium text-[var(--timberwolf)]", children: title }),
2123
+ description && /* @__PURE__ */ jsx30("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: description }),
2124
+ action && /* @__PURE__ */ jsx30("div", { className: "mt-4", children: action })
2125
+ ]
2126
+ }
2127
+ );
2128
+ }
2129
+
2130
+ // src/ui/search-bar.tsx
2131
+ import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
2132
+ function SearchBar({ value, onChange, onClear, className, placeholder = "Search...", ...props }) {
2133
+ return /* @__PURE__ */ jsxs16("div", { className: cn("relative", className), children: [
2134
+ /* @__PURE__ */ jsxs16(
2135
+ "svg",
2136
+ {
2137
+ xmlns: "http://www.w3.org/2000/svg",
2138
+ width: "16",
2139
+ height: "16",
2140
+ viewBox: "0 0 24 24",
2141
+ fill: "none",
2142
+ stroke: "currentColor",
2143
+ strokeWidth: "2",
2144
+ strokeLinecap: "round",
2145
+ strokeLinejoin: "round",
2146
+ className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground",
2147
+ children: [
2148
+ /* @__PURE__ */ jsx31("circle", { cx: "11", cy: "11", r: "8" }),
2149
+ /* @__PURE__ */ jsx31("path", { d: "m21 21-4.3-4.3" })
2150
+ ]
2151
+ }
2152
+ ),
2153
+ /* @__PURE__ */ jsx31(
2154
+ "input",
2155
+ {
2156
+ type: "text",
2157
+ value,
2158
+ onChange: (e) => onChange(e.target.value),
2159
+ placeholder,
2160
+ className: "h-10 w-full rounded-md border border-input bg-background pl-9 pr-9 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
2161
+ ...props
2162
+ }
2163
+ ),
2164
+ value && /* @__PURE__ */ jsx31(
2165
+ "button",
2166
+ {
2167
+ type: "button",
2168
+ onClick: () => {
2169
+ onChange("");
2170
+ onClear?.();
2171
+ },
2172
+ className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
2173
+ children: /* @__PURE__ */ jsxs16(
2174
+ "svg",
2175
+ {
2176
+ xmlns: "http://www.w3.org/2000/svg",
2177
+ width: "14",
2178
+ height: "14",
2179
+ viewBox: "0 0 24 24",
2180
+ fill: "none",
2181
+ stroke: "currentColor",
2182
+ strokeWidth: "2",
2183
+ strokeLinecap: "round",
2184
+ strokeLinejoin: "round",
2185
+ children: [
2186
+ /* @__PURE__ */ jsx31("path", { d: "M18 6 6 18" }),
2187
+ /* @__PURE__ */ jsx31("path", { d: "m6 6 12 12" })
2188
+ ]
2189
+ }
2190
+ )
2191
+ }
2192
+ )
2193
+ ] });
2194
+ }
2195
+
2196
+ // src/ui/data-row.tsx
2197
+ import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
2198
+ var statusColors = {
2199
+ green: "bg-emerald-400",
2200
+ yellow: "bg-amber-400",
2201
+ red: "bg-red-400",
2202
+ gray: "bg-zinc-500"
2203
+ };
2204
+ function DataRow({ status, primary, secondary, trailing, className, ...props }) {
2205
+ return /* @__PURE__ */ jsxs17(
2206
+ "div",
2207
+ {
2208
+ className: cn(
2209
+ "flex items-center gap-3 rounded-md px-3 py-2.5 hover:bg-muted/50 transition-colors",
2210
+ className
2211
+ ),
2212
+ ...props,
2213
+ children: [
2214
+ status && /* @__PURE__ */ jsx32("span", { className: cn("h-2 w-2 shrink-0 rounded-full", statusColors[status]) }),
2215
+ /* @__PURE__ */ jsxs17("div", { className: "min-w-0 flex-1", children: [
2216
+ /* @__PURE__ */ jsx32("p", { className: "truncate text-sm text-[var(--timberwolf)]", children: primary }),
2217
+ secondary && /* @__PURE__ */ jsx32("p", { className: "truncate text-xs text-muted-foreground", children: secondary })
2218
+ ] }),
2219
+ trailing && /* @__PURE__ */ jsx32("div", { className: "shrink-0", children: trailing })
2220
+ ]
2221
+ }
2222
+ );
2223
+ }
2224
+
2225
+ // src/ui/motion-presets.ts
2226
+ var fadeInUp = {
2227
+ initial: { opacity: 0, y: 20 },
2228
+ animate: { opacity: 1, y: 0 },
2229
+ transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] }
2230
+ };
2231
+ var fadeInDown = {
2232
+ initial: { opacity: 0, y: -20 },
2233
+ animate: { opacity: 1, y: 0 },
2234
+ transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] }
2235
+ };
2236
+ var staggerContainer = {
2237
+ initial: {},
2238
+ animate: { transition: { staggerChildren: 0.06 } }
2239
+ };
2240
+ var staggerItem = {
2241
+ initial: { opacity: 0, y: 12 },
2242
+ animate: { opacity: 1, y: 0, transition: { duration: 0.3 } }
2243
+ };
2244
+ var pageTransition = {
2245
+ initial: { opacity: 0 },
2246
+ animate: { opacity: 1 },
2247
+ exit: { opacity: 0 },
2248
+ transition: { duration: 0.25 }
2249
+ };
2250
+ var hoverScale = {
2251
+ whileHover: { scale: 1.02 },
2252
+ whileTap: { scale: 0.98 },
2253
+ transition: { type: "spring", stiffness: 400, damping: 25 }
2254
+ };
2255
+ var hoverLift = {
2256
+ whileHover: { y: -2 },
2257
+ transition: { type: "spring", stiffness: 400, damping: 25 }
2258
+ };
2259
+ var springBounce = {
2260
+ type: "spring",
2261
+ stiffness: 300,
2262
+ damping: 20
2263
+ };
2264
+ var easeSmooth = [0.25, 0.46, 0.45, 0.94];
2265
+
2266
+ // src/ui/fade-in.tsx
2267
+ import * as React25 from "react";
2268
+ import { jsx as jsx33 } from "react/jsx-runtime";
2269
+ function FadeIn({ children, className, delay = 0, direction = "up", ...props }) {
2270
+ const ref = React25.useRef(null);
2271
+ const [visible, setVisible] = React25.useState(false);
2272
+ React25.useEffect(() => {
2273
+ const el = ref.current;
2274
+ if (!el) return;
2275
+ const observer = new IntersectionObserver(
2276
+ ([entry]) => {
2277
+ if (entry.isIntersecting) {
2278
+ setVisible(true);
2279
+ observer.disconnect();
2280
+ }
2281
+ },
2282
+ { threshold: 0.1 }
2283
+ );
2284
+ observer.observe(el);
2285
+ return () => observer.disconnect();
2286
+ }, []);
2287
+ return /* @__PURE__ */ jsx33(
2288
+ "div",
2289
+ {
2290
+ ref,
2291
+ className: cn(
2292
+ "transition-all duration-500 ease-out",
2293
+ visible ? "opacity-100 translate-y-0 translate-x-0" : direction === "left" ? "opacity-0 -translate-x-5" : "opacity-0 translate-y-6",
2294
+ className
2295
+ ),
2296
+ style: delay ? { transitionDelay: `${delay}ms` } : void 0,
2297
+ ...props,
2298
+ children
2299
+ }
2300
+ );
2301
+ }
2302
+
1678
2303
  // src/ui/footer.tsx
1679
- import Image from "next/image";
2304
+ import Image2 from "next/image";
1680
2305
  import Link2 from "next/link";
1681
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
2306
+ import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
1682
2307
  function Footer() {
1683
- return /* @__PURE__ */ jsxs12("footer", { className: "container mx-auto flex p-5 items-center justify-between border-t border-[var(--timberwolf)]", children: [
1684
- /* @__PURE__ */ jsxs12("div", { className: "flex gap-4", children: [
1685
- /* @__PURE__ */ jsx18(Link2, { href: "https://www.instagram.com/playback_global", target: "_blank", children: /* @__PURE__ */ jsx18(
1686
- Image,
2308
+ return /* @__PURE__ */ jsxs18("footer", { className: "container mx-auto flex p-5 items-center justify-between border-t border-[var(--timberwolf)]", children: [
2309
+ /* @__PURE__ */ jsxs18("div", { className: "flex gap-4", children: [
2310
+ /* @__PURE__ */ jsx34(Link2, { href: "https://www.instagram.com/playback_global", target: "_blank", children: /* @__PURE__ */ jsx34(
2311
+ Image2,
1687
2312
  {
1688
2313
  src: "/assets/instagram.png",
1689
2314
  alt: "PLAYBACK Instagram",
@@ -1692,8 +2317,8 @@ function Footer() {
1692
2317
  className: "h-9 w-9"
1693
2318
  }
1694
2319
  ) }),
1695
- /* @__PURE__ */ jsx18(Link2, { href: "https://youtube.com/@playback_global", target: "_blank", children: /* @__PURE__ */ jsx18(
1696
- Image,
2320
+ /* @__PURE__ */ jsx34(Link2, { href: "https://youtube.com/@playback_global", target: "_blank", children: /* @__PURE__ */ jsx34(
2321
+ Image2,
1697
2322
  {
1698
2323
  src: "/assets/youtube.png",
1699
2324
  alt: "PLAYBACK YouTube",
@@ -1702,8 +2327,8 @@ function Footer() {
1702
2327
  className: "h-9 w-9"
1703
2328
  }
1704
2329
  ) }),
1705
- /* @__PURE__ */ jsx18(Link2, { href: "https://www.tiktok.com/@playback_global", target: "_blank", children: /* @__PURE__ */ jsx18(
1706
- Image,
2330
+ /* @__PURE__ */ jsx34(Link2, { href: "https://www.tiktok.com/@playback_global", target: "_blank", children: /* @__PURE__ */ jsx34(
2331
+ Image2,
1707
2332
  {
1708
2333
  src: "/assets/tiktok.png",
1709
2334
  alt: "PLAYBACK TikTok",
@@ -1712,13 +2337,13 @@ function Footer() {
1712
2337
  className: "h-9 w-9"
1713
2338
  }
1714
2339
  ) }),
1715
- /* @__PURE__ */ jsx18(
2340
+ /* @__PURE__ */ jsx34(
1716
2341
  Link2,
1717
2342
  {
1718
2343
  href: "https://www.linkedin.com/company/playbacksports/",
1719
2344
  target: "_blank",
1720
- children: /* @__PURE__ */ jsx18(
1721
- Image,
2345
+ children: /* @__PURE__ */ jsx34(
2346
+ Image2,
1722
2347
  {
1723
2348
  src: "/assets/linkedin.png",
1724
2349
  alt: "PLAYBACK LinkedIn",
@@ -1730,18 +2355,21 @@ function Footer() {
1730
2355
  }
1731
2356
  )
1732
2357
  ] }),
1733
- /* @__PURE__ */ jsxs12("h2", { className: "text-lg", children: [
2358
+ /* @__PURE__ */ jsxs18("h2", { className: "text-lg", children: [
1734
2359
  "by",
1735
2360
  " ",
1736
- /* @__PURE__ */ jsx18(Link2, { href: "https://www.braintwopoint0.com", children: /* @__PURE__ */ jsxs12("span", { style: { fontFamily: "AvertaStd-Semibold" }, children: [
2361
+ /* @__PURE__ */ jsx34(Link2, { href: "https://www.braintwopoint0.com", children: /* @__PURE__ */ jsxs18("span", { style: { fontFamily: "AvertaStd-Semibold" }, children: [
1737
2362
  "BRAIN",
1738
- /* @__PURE__ */ jsx18("span", { style: { fontFamily: "AvertaStd-Thin" }, children: "2.0" })
2363
+ /* @__PURE__ */ jsx34("span", { style: { fontFamily: "AvertaStd-Thin" }, children: "2.0" })
1739
2364
  ] }) })
1740
2365
  ] })
1741
2366
  ] });
1742
2367
  }
1743
2368
  export {
1744
2369
  AnimatedTooltip,
2370
+ Avatar,
2371
+ AvatarFallback,
2372
+ AvatarImage,
1745
2373
  Badge,
1746
2374
  Button,
1747
2375
  Calendar,
@@ -1758,6 +2386,11 @@ export {
1758
2386
  ChartStyle,
1759
2387
  ChartTooltip,
1760
2388
  ChartTooltipContent,
2389
+ Checkbox,
2390
+ Collapsible,
2391
+ CollapsibleContent2 as CollapsibleContent,
2392
+ CollapsibleTrigger2 as CollapsibleTrigger,
2393
+ DataRow,
1761
2394
  DatePicker,
1762
2395
  DateTimePicker,
1763
2396
  Dialog,
@@ -1770,6 +2403,8 @@ export {
1770
2403
  DialogPortal,
1771
2404
  DialogTitle,
1772
2405
  DialogTrigger,
2406
+ EmptyState,
2407
+ FadeIn,
1773
2408
  FlipWords,
1774
2409
  Footer,
1775
2410
  HeroHighlight,
@@ -1780,10 +2415,13 @@ export {
1780
2415
  HoverEffect,
1781
2416
  Input,
1782
2417
  Label,
2418
+ PageShell,
1783
2419
  Popover,
1784
2420
  PopoverAnchor,
1785
2421
  PopoverContent,
1786
2422
  PopoverTrigger,
2423
+ SearchBar,
2424
+ SectionCard,
1787
2425
  Select,
1788
2426
  SelectContent,
1789
2427
  SelectGroup,
@@ -1794,8 +2432,40 @@ export {
1794
2432
  SelectSeparator,
1795
2433
  SelectTrigger,
1796
2434
  SelectValue,
2435
+ Separator2 as Separator,
2436
+ Sheet,
2437
+ SheetClose,
2438
+ SheetContent,
2439
+ SheetDescription,
2440
+ SheetFooter,
2441
+ SheetHeader,
2442
+ SheetOverlay,
2443
+ SheetPortal,
2444
+ SheetTitle,
2445
+ SheetTrigger,
2446
+ Skeleton,
2447
+ StatsGrid,
2448
+ Switch,
2449
+ Tabs,
2450
+ TabsContent,
2451
+ TabsList,
2452
+ TabsTrigger,
2453
+ Textarea,
1797
2454
  TimePicker,
2455
+ Tooltip2 as Tooltip,
2456
+ TooltipContent,
2457
+ TooltipProvider,
2458
+ TooltipTrigger,
1798
2459
  badgeVariants,
1799
- buttonVariants
2460
+ buttonVariants,
2461
+ easeSmooth,
2462
+ fadeInDown,
2463
+ fadeInUp,
2464
+ hoverLift,
2465
+ hoverScale,
2466
+ pageTransition,
2467
+ springBounce,
2468
+ staggerContainer,
2469
+ staggerItem
1800
2470
  };
1801
2471
  //# sourceMappingURL=index.js.map