@bloomkit/react 0.1.6 → 0.2.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/index.d.ts CHANGED
@@ -206,4 +206,29 @@ type SkeletonVariants = Parameters<typeof skeletonVariants>[0];
206
206
  type SkeletonProps = HTMLAttributes<HTMLDivElement> & SkeletonVariants;
207
207
  declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
208
208
 
209
- export { Alert, AlertDescription, type AlertProps, AlertTitle, type AlertVariants, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarVariants, Badge, type BadgeProps, type BadgeVariants, Button, type ButtonProps, type ButtonVariants, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, type CardVariants, DatePicker, type DatePickerProps, Dropdown, DropdownItem, type DropdownItemProps, type DropdownProps, DropdownSeparator, type DropdownSeparatorProps, Input, type InputProps, Modal, type ModalProps, Progress, ProgressCircular, type ProgressCircularProps, type ProgressProps, Skeleton, type SkeletonProps, type SkeletonVariants, Slider, type SliderProps, Tabs, TabsContent, TabsList, type TabsListProps, type TabsListVariants, TabsTrigger, Textarea, type TextareaProps, ToastProvider, type ToastVariants, Toggle, type ToggleProps, Tooltip, type TooltipProps, TooltipProvider, alertVariants, avatarVariants, badgeVariants, bloomSpring, bloomTransition, bloomTransitionFast, bloomTransitionSlow, buttonVariants, cardHoverLift, cardVariants, cn, fadeIn, hoverLift, inputVariants, progressFillVariants, progressTrackVariants, skeletonVariants, slideUp, tabsListVariants, toastVariants, useBreathing, useReducedMotion, useToast };
209
+ type ColorMode = "light" | "dark" | "system";
210
+ interface BloomPalette {
211
+ name: string;
212
+ light?: Record<string, string>;
213
+ dark?: Record<string, string>;
214
+ }
215
+ interface ThemeContextValue {
216
+ colorMode: ColorMode;
217
+ resolvedMode: "light" | "dark";
218
+ setColorMode: (mode: ColorMode) => void;
219
+ toggleColorMode: () => void;
220
+ palette: string;
221
+ setPalette: (name: string) => void;
222
+ palettes: string[];
223
+ }
224
+ declare function useTheme(): ThemeContextValue;
225
+ interface ThemeProviderProps {
226
+ children: ReactNode;
227
+ defaultColorMode?: ColorMode;
228
+ defaultPalette?: string;
229
+ palettes?: BloomPalette[];
230
+ storageKey?: string;
231
+ }
232
+ declare function ThemeProvider({ children, defaultColorMode, defaultPalette, palettes, storageKey, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
233
+
234
+ export { Alert, AlertDescription, type AlertProps, AlertTitle, type AlertVariants, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarVariants, Badge, type BadgeProps, type BadgeVariants, type BloomPalette, Button, type ButtonProps, type ButtonVariants, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, type CardVariants, DatePicker, type DatePickerProps, Dropdown, DropdownItem, type DropdownItemProps, type DropdownProps, DropdownSeparator, type DropdownSeparatorProps, Input, type InputProps, Modal, type ModalProps, Progress, ProgressCircular, type ProgressCircularProps, type ProgressProps, Skeleton, type SkeletonProps, type SkeletonVariants, Slider, type SliderProps, Tabs, TabsContent, TabsList, type TabsListProps, type TabsListVariants, TabsTrigger, Textarea, type TextareaProps, ThemeProvider, type ThemeProviderProps, ToastProvider, type ToastVariants, Toggle, type ToggleProps, Tooltip, type TooltipProps, TooltipProvider, alertVariants, avatarVariants, badgeVariants, bloomSpring, bloomTransition, bloomTransitionFast, bloomTransitionSlow, buttonVariants, cardHoverLift, cardVariants, cn, fadeIn, hoverLift, inputVariants, progressFillVariants, progressTrackVariants, skeletonVariants, slideUp, tabsListVariants, toastVariants, useBreathing, useReducedMotion, useTheme, useToast };
package/dist/index.js CHANGED
@@ -1213,6 +1213,144 @@ var Skeleton = forwardRef11(
1213
1213
  )
1214
1214
  );
1215
1215
  Skeleton.displayName = "Skeleton";
1216
+
1217
+ // src/components/theme/theme.tsx
1218
+ import {
1219
+ createContext as createContext2,
1220
+ useContext as useContext2,
1221
+ useState as useState5,
1222
+ useEffect as useEffect3,
1223
+ useCallback as useCallback2,
1224
+ useRef
1225
+ } from "react";
1226
+ import { jsx as jsx17 } from "react/jsx-runtime";
1227
+ var ThemeContext = createContext2(null);
1228
+ function useTheme() {
1229
+ const ctx = useContext2(ThemeContext);
1230
+ if (!ctx) throw new Error("useTheme must be used within <ThemeProvider>");
1231
+ return ctx;
1232
+ }
1233
+ function getSystemPreference() {
1234
+ if (typeof window === "undefined") return "light";
1235
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
1236
+ }
1237
+ function resolveMode(mode) {
1238
+ if (mode === "system") return getSystemPreference();
1239
+ return mode;
1240
+ }
1241
+ function ThemeProvider({
1242
+ children,
1243
+ defaultColorMode = "system",
1244
+ defaultPalette = "bloom",
1245
+ palettes = [],
1246
+ storageKey = "bloom-theme"
1247
+ }) {
1248
+ const paletteMap = useRef(
1249
+ new Map([
1250
+ ["bloom", { name: "bloom" }],
1251
+ ...palettes.map((p) => [p.name, p])
1252
+ ])
1253
+ );
1254
+ const [colorMode, setColorModeState] = useState5(() => {
1255
+ if (typeof window === "undefined") return defaultColorMode;
1256
+ const stored = localStorage.getItem(`${storageKey}-mode`);
1257
+ if (stored === "light" || stored === "dark" || stored === "system") return stored;
1258
+ return defaultColorMode;
1259
+ });
1260
+ const [palette, setPaletteState] = useState5(() => {
1261
+ if (typeof window === "undefined") return defaultPalette;
1262
+ const stored = localStorage.getItem(`${storageKey}-palette`);
1263
+ if (stored && paletteMap.current.has(stored)) return stored;
1264
+ return defaultPalette;
1265
+ });
1266
+ const [resolvedMode, setResolvedMode] = useState5(
1267
+ () => resolveMode(colorMode)
1268
+ );
1269
+ const setColorMode = useCallback2(
1270
+ (mode) => {
1271
+ setColorModeState(mode);
1272
+ localStorage.setItem(`${storageKey}-mode`, mode);
1273
+ },
1274
+ [storageKey]
1275
+ );
1276
+ const setPalette = useCallback2(
1277
+ (name) => {
1278
+ if (!paletteMap.current.has(name)) return;
1279
+ setPaletteState(name);
1280
+ localStorage.setItem(`${storageKey}-palette`, name);
1281
+ },
1282
+ [storageKey]
1283
+ );
1284
+ const toggleColorMode = useCallback2(() => {
1285
+ setColorMode(resolvedMode === "light" ? "dark" : "light");
1286
+ }, [resolvedMode, setColorMode]);
1287
+ useEffect3(() => {
1288
+ const root = document.documentElement;
1289
+ const resolved = resolveMode(colorMode);
1290
+ setResolvedMode(resolved);
1291
+ root.classList.remove("light", "dark");
1292
+ root.classList.add(resolved);
1293
+ const allKeys = /* @__PURE__ */ new Set();
1294
+ paletteMap.current.forEach((p) => {
1295
+ if (p.light) Object.keys(p.light).forEach((k) => allKeys.add(k));
1296
+ if (p.dark) Object.keys(p.dark).forEach((k) => allKeys.add(k));
1297
+ });
1298
+ allKeys.forEach((key) => root.style.removeProperty(key));
1299
+ const currentPalette = paletteMap.current.get(palette);
1300
+ if (currentPalette) {
1301
+ const vars = resolved === "dark" ? currentPalette.dark : currentPalette.light;
1302
+ if (vars) {
1303
+ Object.entries(vars).forEach(([key, value]) => {
1304
+ root.style.setProperty(key, value);
1305
+ });
1306
+ }
1307
+ }
1308
+ }, [colorMode, palette]);
1309
+ useEffect3(() => {
1310
+ if (colorMode !== "system") return;
1311
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
1312
+ const handler = () => {
1313
+ const resolved = resolveMode("system");
1314
+ setResolvedMode(resolved);
1315
+ const root = document.documentElement;
1316
+ root.classList.remove("light", "dark");
1317
+ root.classList.add(resolved);
1318
+ const allKeys = /* @__PURE__ */ new Set();
1319
+ paletteMap.current.forEach((p) => {
1320
+ if (p.light) Object.keys(p.light).forEach((k) => allKeys.add(k));
1321
+ if (p.dark) Object.keys(p.dark).forEach((k) => allKeys.add(k));
1322
+ });
1323
+ allKeys.forEach((key) => root.style.removeProperty(key));
1324
+ const currentPalette = paletteMap.current.get(palette);
1325
+ if (currentPalette) {
1326
+ const vars = resolved === "dark" ? currentPalette.dark : currentPalette.light;
1327
+ if (vars) {
1328
+ Object.entries(vars).forEach(([key, value]) => {
1329
+ root.style.setProperty(key, value);
1330
+ });
1331
+ }
1332
+ }
1333
+ };
1334
+ mq.addEventListener("change", handler);
1335
+ return () => mq.removeEventListener("change", handler);
1336
+ }, [colorMode, palette]);
1337
+ const paletteNames = Array.from(paletteMap.current.keys());
1338
+ return /* @__PURE__ */ jsx17(
1339
+ ThemeContext.Provider,
1340
+ {
1341
+ value: {
1342
+ colorMode,
1343
+ resolvedMode,
1344
+ setColorMode,
1345
+ toggleColorMode,
1346
+ palette,
1347
+ setPalette,
1348
+ palettes: paletteNames
1349
+ },
1350
+ children
1351
+ }
1352
+ );
1353
+ }
1216
1354
  export {
1217
1355
  Alert,
1218
1356
  AlertDescription,
@@ -1242,6 +1380,7 @@ export {
1242
1380
  TabsList,
1243
1381
  TabsTrigger,
1244
1382
  Textarea,
1383
+ ThemeProvider,
1245
1384
  ToastProvider,
1246
1385
  Toggle,
1247
1386
  Tooltip,
@@ -1268,6 +1407,7 @@ export {
1268
1407
  toastVariants,
1269
1408
  useBreathing,
1270
1409
  useReducedMotion,
1410
+ useTheme,
1271
1411
  useToast
1272
1412
  };
1273
1413
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/utils/motion-presets.ts","../src/hooks/use-reduced-motion.ts","../src/hooks/use-breathing.ts","../src/components/button/button.tsx","../src/components/button/button.variants.ts","../src/components/card/card.tsx","../src/components/card/card.variants.ts","../src/components/input/input.tsx","../src/components/input/input.variants.ts","../src/components/toggle/toggle.tsx","../src/components/badge/badge.tsx","../src/components/badge/badge.variants.ts","../src/components/alert/alert.tsx","../src/components/alert/alert.variants.ts","../src/components/avatar/avatar.tsx","../src/components/avatar/avatar.variants.ts","../src/components/tooltip/tooltip.tsx","../src/components/progress/progress.tsx","../src/components/progress/progress.variants.ts","../src/components/slider/slider.tsx","../src/components/modal/modal.tsx","../src/components/dropdown/dropdown.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs.variants.ts","../src/components/date-picker/date-picker.tsx","../src/components/toast/toast.tsx","../src/components/toast/toast.variants.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/skeleton.variants.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import type { Transition, Variants } from \"motion/react\";\n\nexport const bloomTransition: Transition = {\n duration: 0.5,\n ease: [0.4, 0, 0.2, 1],\n};\n\nexport const bloomTransitionSlow: Transition = {\n duration: 0.8,\n ease: [0.4, 0, 0.2, 1],\n};\n\nexport const bloomTransitionFast: Transition = {\n duration: 0.3,\n ease: [0.4, 0, 0.2, 1],\n};\n\nexport const bloomSpring: Transition = {\n type: \"spring\",\n stiffness: 200,\n damping: 20,\n};\n\nexport const hoverLift: Variants = {\n initial: { y: 0, scale: 1 },\n hover: { y: -2, scale: 1 },\n tap: { y: 0, scale: 0.98 },\n};\n\nexport const cardHoverLift: Variants = {\n initial: { y: 0 },\n hover: { y: -4 },\n};\n\nexport const fadeIn: Variants = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n};\n\nexport const slideUp: Variants = {\n initial: { opacity: 0, y: 12 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 12 },\n};\n","import { useState, useEffect } from \"react\";\n\nexport function useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(() => {\n if (typeof window === \"undefined\") return false;\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const hasClass = document.documentElement.classList.contains(\"bloom-reduced-motion\");\n return mq.matches || hasClass;\n });\n\n useEffect(() => {\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n\n const handleChange = () => {\n const hasClass = document.documentElement.classList.contains(\"bloom-reduced-motion\");\n setReduced(mq.matches || hasClass);\n };\n\n mq.addEventListener(\"change\", handleChange);\n\n const observer = new MutationObserver(() => {\n const hasClass = document.documentElement.classList.contains(\"bloom-reduced-motion\");\n setReduced(mq.matches || hasClass);\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => {\n mq.removeEventListener(\"change\", handleChange);\n observer.disconnect();\n };\n }, []);\n\n return reduced;\n}\n","import { useMemo } from \"react\";\n\ninterface UseBreathingOptions {\n duration?: number;\n animation?: string;\n}\n\ninterface BreathingStyle {\n animationName: string;\n animationDuration: string;\n animationDelay: string;\n animationTimingFunction: string;\n animationIterationCount: string;\n}\n\nexport function useBreathing(options?: UseBreathingOptions): BreathingStyle {\n const { duration = 6, animation = \"bloom-breathe\" } = options ?? {};\n\n return useMemo(() => {\n const delay = Math.random() * duration;\n return {\n animationName: animation,\n animationDuration: `${duration}s`,\n animationDelay: `${delay.toFixed(2)}s`,\n animationTimingFunction: \"ease-in-out\",\n animationIterationCount: \"infinite\",\n };\n }, [duration, animation]);\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../../utils/cn\";\nimport { buttonVariants, type ButtonVariants } from \"./button.variants\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &\n ButtonVariants & {\n asChild?: boolean;\n children: ReactNode;\n };\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant }), className)}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center\",\n \"font-[family-name:var(--bloom-font)] text-[14px] font-normal\",\n \"h-[44px] px-[28px]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"relative overflow-hidden cursor-pointer\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--bloom-accent1-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n secondary: [\n \"bg-[var(--bloom-surface)] text-[var(--bloom-text)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n ghost: [\n \"bg-transparent text-[var(--bloom-text)]\",\n \"hover:bg-[var(--bloom-surface)]\",\n \"active:scale-[0.98]\",\n ],\n accent: [\n \"bg-[var(--bloom-accent3-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n danger: [\n \"bg-[var(--bloom-accent4-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n warning: [\n \"bg-[var(--bloom-accent2-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n success: [\n \"bg-[var(--bloom-accent1-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n }\n);\n\nexport type ButtonVariants = Parameters<typeof buttonVariants>[0];\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { cardVariants, type CardVariants } from \"./card.variants\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> & CardVariants;\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, ...props }, ref) => (\n <div ref={ref} className={cn(cardVariants({ variant }), className)} {...props} />\n )\n);\nCard.displayName = \"Card\";\n\nexport const CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[var(--space-xl)] pb-0\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"font-[family-name:var(--bloom-font-display)] text-[18px] font-medium text-[var(--bloom-text)] leading-[var(--bloom-leading-heading)]\",\n className\n )}\n {...props}\n />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-[length:var(--bloom-text-caption)] color-[var(--bloom-text-secondary)] mt-[var(--space-xs)]\", className)}\n {...props}\n />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport const CardContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[var(--space-xl)]\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[var(--space-xl)] pt-0 flex items-center\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import { cva } from \"class-variance-authority\";\n\nexport const cardVariants = cva(\n [\n \"rounded-[var(--bloom-radius-lg)] bg-[var(--bloom-surface)]\",\n \"shadow-[var(--bloom-shadow)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"relative overflow-hidden\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n interactive: [\n \"cursor-pointer\",\n \"border border-transparent\",\n \"hover:border-[var(--bloom-surface2)]\",\n \"hover:-translate-y-[4px] hover:shadow-[var(--bloom-shadow-hover)]\",\n ],\n featured: [\n \"border border-[var(--bloom-accent1)]/30\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport type CardVariants = Parameters<typeof cardVariants>[0];\n","import { forwardRef, type InputHTMLAttributes, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { inputVariants } from \"./input.variants\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type = \"text\", ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(inputVariants(), \"h-[44px]\", className)}\n {...props}\n />\n )\n);\nInput.displayName = \"Input\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n className={cn(inputVariants(), \"min-h-[100px] resize-y\", className)}\n {...props}\n />\n )\n);\nTextarea.displayName = \"Textarea\";\n","import { cva } from \"class-variance-authority\";\n\nexport const inputVariants = cva([\n \"w-full\",\n \"rounded-[var(--bloom-radius)] bg-[var(--bloom-surface)]\",\n \"color-[var(--bloom-text)] text-[length:var(--bloom-text-body)]\",\n \"font-[family-name:var(--bloom-font)]\",\n \"px-[var(--space-lg)] py-[var(--space-md)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"placeholder:color-[var(--bloom-text-secondary)]/60\",\n \"focus:outline-none focus:ring-[4px] focus:ring-[var(--bloom-accent1)]/20 focus:border-[var(--bloom-accent1-deep)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n]);\n","import { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ToggleProps extends ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n label?: string;\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n ({ className, label, ...props }, ref) => (\n <label className=\"inline-flex items-center gap-[var(--space-md)]\">\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"peer inline-flex h-[28px] w-[50px] shrink-0 cursor-pointer items-center\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"border border-transparent\",\n \"bg-[var(--bloom-surface2)]\",\n \"transition-colors duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-[var(--bloom-accent1-deep)]\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-[22px] w-[22px] rounded-full bg-white\",\n \"shadow-[0_1px_4px_rgba(0,0,0,0.1)]\",\n \"transition-transform duration-[var(--bloom-duration-fast)] ease-[var(--bloom-ease)]\",\n \"data-[state=unchecked]:translate-x-[3px]\",\n \"data-[state=checked]:translate-x-[25px]\"\n )}\n />\n </SwitchPrimitive.Root>\n {label && (\n <span className=\"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text)]\">\n {label}\n </span>\n )}\n </label>\n )\n);\nToggle.displayName = \"Toggle\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { badgeVariants, type BadgeVariants } from \"./badge.variants\";\n\nconst dotColorMap = {\n sage: \"bg-[var(--bloom-accent1-deep)]\",\n sand: \"bg-[var(--bloom-accent2-deep)]\",\n lavender: \"bg-[var(--bloom-accent3-deep)]\",\n rose: \"bg-[var(--bloom-accent4-deep)]\",\n} as const;\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> &\n BadgeVariants & {\n dot?: boolean;\n };\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant = \"sage\", dot = false, children, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props}>\n {dot && (\n <span\n data-bloom-dot=\"\"\n className={cn(\n \"h-[6px] w-[6px] rounded-full\",\n \"animate-[bloom-breathe_5s_ease-in-out_infinite]\",\n dotColorMap[variant ?? \"sage\"]\n )}\n />\n )}\n {children}\n </span>\n )\n);\nBadge.displayName = \"Badge\";\n","import { cva } from \"class-variance-authority\";\n\nexport const badgeVariants = cva(\n [\n \"inline-flex items-center gap-[var(--space-xs)]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"px-[var(--space-md)] py-[var(--space-xs)]\",\n \"text-[var(--bloom-text-micro)] font-medium font-[family-name:var(--bloom-font)]\",\n \"tracking-[var(--bloom-letter-wide)] uppercase\",\n ],\n {\n variants: {\n variant: {\n sage: \"bg-[var(--bloom-accent1)]/20 text-[var(--bloom-accent1-deep)]\",\n sand: \"bg-[var(--bloom-accent2)]/20 text-[var(--bloom-accent2-deep)]\",\n lavender: \"bg-[var(--bloom-accent3)]/20 text-[var(--bloom-accent3-deep)]\",\n rose: \"bg-[var(--bloom-accent4)]/20 text-[var(--bloom-accent4-deep)]\",\n },\n },\n defaultVariants: {\n variant: \"sage\",\n },\n }\n);\n\nexport type BadgeVariants = Parameters<typeof badgeVariants>[0];\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { alertVariants, alertIconColors, type AlertVariants } from \"./alert.variants\";\n\nexport type AlertProps = HTMLAttributes<HTMLDivElement> & AlertVariants;\n\nconst variantIcons: Record<string, ReactNode> = {\n success: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M6.5 10.5L8.5 12.5L13.5 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ),\n error: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M7.5 7.5L12.5 12.5M12.5 7.5L7.5 12.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ),\n warning: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10 3L18 17H2L10 3Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M10 8.5V12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"14.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n info: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M10 9V14\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"info\", children, ...props }, ref) => (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\n <div className={cn(\"shrink-0 mt-px\", alertIconColors[variant ?? \"info\"])}>\n {variantIcons[variant ?? \"info\"]}\n </div>\n <div className=\"flex-1 min-w-0\">\n {children}\n </div>\n </div>\n )\n);\nAlert.displayName = \"Alert\";\n\nexport const AlertTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\n \"font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-body)] font-medium color-[var(--bloom-text)]\",\n className\n )}\n {...props}\n />\n )\n);\nAlertTitle.displayName = \"AlertTitle\";\n\nexport const AlertDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-[length:var(--bloom-text-caption)] color-[var(--bloom-text-secondary)] mt-[var(--space-xs)]\", className)}\n {...props}\n />\n )\n);\nAlertDescription.displayName = \"AlertDescription\";\n","import { cva } from \"class-variance-authority\";\n\nexport const alertVariants = cva(\n [\n \"relative flex gap-[var(--space-md)] items-start\",\n \"rounded-[var(--bloom-radius-lg)] p-[var(--space-lg)]\",\n \"font-[family-name:var(--bloom-font)]\",\n \"border\",\n ],\n {\n variants: {\n variant: {\n info: \"bg-[var(--bloom-accent3)]/10 border-[var(--bloom-accent3)]/20\",\n success: \"bg-[var(--bloom-accent1)]/10 border-[var(--bloom-accent1)]/20\",\n warning: \"bg-[var(--bloom-accent2)]/10 border-[var(--bloom-accent2)]/20\",\n error: \"bg-[var(--bloom-accent4)]/10 border-[var(--bloom-accent4)]/20\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n }\n);\n\nexport const alertIconColors = {\n info: \"color-[var(--bloom-accent3-deep)]\",\n success: \"color-[var(--bloom-accent1-deep)]\",\n warning: \"color-[var(--bloom-accent2-deep)]\",\n error: \"color-[var(--bloom-accent4-deep)]\",\n} as const;\n\nexport type AlertVariants = Parameters<typeof alertVariants>[0];\n","import { forwardRef, useState, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { avatarVariants, type AvatarVariants } from \"./avatar.variants\";\n\nexport type AvatarProps = HTMLAttributes<HTMLDivElement> &\n AvatarVariants & {\n initials?: string;\n src?: string;\n alt?: string;\n };\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size, initials, src, alt, ...props }, ref) => {\n const [imgError, setImgError] = useState(false);\n const showImage = src && !imgError;\n\n return (\n <div ref={ref} className={cn(avatarVariants({ size }), className)} {...props}>\n <span aria-hidden={showImage || undefined}>{initials}</span>\n {showImage && (\n <img\n src={src}\n alt={alt ?? initials ?? \"\"}\n onError={() => setImgError(true)}\n className=\"absolute inset-0 h-full w-full object-cover\"\n />\n )}\n </div>\n );\n }\n);\nAvatar.displayName = \"Avatar\";\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex -space-x-2\", className)}\n {...props}\n />\n )\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n","import { cva } from \"class-variance-authority\";\n\nexport const avatarVariants = cva(\n [\n \"relative inline-flex items-center justify-center\",\n \"rounded-full overflow-hidden\",\n \"bg-[var(--bloom-accent1)]/20 text-[var(--bloom-accent1-deep)]\",\n \"font-[family-name:var(--bloom-font)] font-medium\",\n \"select-none shrink-0\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[32px] w-[32px] text-[var(--bloom-text-micro)]\",\n md: \"h-[40px] w-[40px] text-[var(--bloom-text-caption)]\",\n lg: \"h-[56px] w-[56px] text-[var(--bloom-text-body)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport type AvatarVariants = Parameters<typeof avatarVariants>[0];\n","import { type ReactNode } from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../utils/cn\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps {\n content: ReactNode;\n children: ReactNode;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n className?: string;\n}\n\nexport function Tooltip({ content, children, side = \"top\", className }: TooltipProps) {\n return (\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n sideOffset={8}\n className={cn(\n \"bloom z-50 rounded-[var(--bloom-radius)]\",\n \"bg-[var(--bloom-surface)] color-[var(--bloom-text)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"px-[var(--space-md)] py-[var(--space-sm)]\",\n \"text-[length:var(--bloom-text-caption)] font-[family-name:var(--bloom-font)]\",\n \"shadow-[var(--bloom-shadow)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { progressTrackVariants, progressFillVariants } from \"./progress.variants\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value = 0, ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(progressTrackVariants(), className)}\n {...props}\n >\n <div\n className={progressFillVariants()}\n style={{ width: `${clampedValue}%` }}\n />\n </div>\n );\n }\n);\nProgress.displayName = \"Progress\";\n\nexport interface ProgressCircularProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n size?: number;\n strokeWidth?: number;\n}\n\nexport const ProgressCircular = forwardRef<HTMLDivElement, ProgressCircularProps>(\n ({ className, value = 0, size = 48, strokeWidth = 4, ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (clampedValue / 100) * circumference;\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\"inline-flex\", className)}\n {...props}\n >\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"var(--bloom-surface2)\"\n strokeWidth={strokeWidth}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"var(--bloom-accent1-deep)\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n style={{\n transition: `stroke-dashoffset var(--bloom-duration) var(--bloom-ease)`,\n }}\n />\n </svg>\n </div>\n );\n }\n);\nProgressCircular.displayName = \"ProgressCircular\";\n","import { cva } from \"class-variance-authority\";\n\nexport const progressTrackVariants = cva([\n \"relative w-full overflow-hidden\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"bg-[var(--bloom-surface2)]\",\n \"h-[6px]\",\n]);\n\nexport const progressFillVariants = cva([\n \"h-full rounded-[var(--bloom-radius-pill)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"bg-gradient-to-r from-[var(--bloom-accent1-deep)] to-[var(--bloom-accent1)]\",\n \"bg-[length:200%_100%] animate-[bloom-shimmer_3s_ease-in-out_infinite]\",\n]);\n","import { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface SliderProps extends ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {}\n\nexport const Slider = forwardRef<HTMLSpanElement, SliderProps>(\n ({ className, disabled, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n disabled={disabled}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n \"data-[disabled]:opacity-50 data-[disabled]:pointer-events-none\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n className={cn(\n \"relative h-[6px] w-full grow overflow-hidden\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"bg-[var(--bloom-surface2)]\"\n )}\n >\n <SliderPrimitive.Range\n className={cn(\n \"absolute h-full\",\n \"bg-[var(--bloom-accent1-deep)]\",\n \"rounded-[var(--bloom-radius-pill)]\"\n )}\n />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n aria-disabled={disabled ? true : undefined}\n className={cn(\n \"block h-[24px] w-[24px] rounded-full\",\n \"bg-white border-[2px] border-[var(--bloom-accent1-deep)]\",\n \"shadow-[0_1px_4px_rgba(0,0,0,0.1)]\",\n \"transition-transform duration-[var(--bloom-duration-fast)] ease-[var(--bloom-ease)]\",\n \"hover:scale-110\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"cursor-grab active:cursor-grabbing\"\n )}\n />\n </SliderPrimitive.Root>\n )\n);\nSlider.displayName = \"Slider\";\n","import { type ReactNode } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: string;\n description?: string;\n children: ReactNode;\n className?: string;\n}\n\nexport function Modal({ open, onOpenChange, title, description, children, className }: ModalProps) {\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/40 backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\"\n )}\n />\n <DialogPrimitive.Content\n className={cn(\n \"bloom fixed left-1/2 top-1/2 z-50\",\n \"-translate-x-1/2 -translate-y-1/2\",\n \"w-full max-w-[480px]\",\n \"rounded-[var(--bloom-radius-lg)]\",\n \"bg-[var(--bloom-surface)] p-[var(--space-xl)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"focus:outline-none\",\n className\n )}\n >\n {title && (\n <DialogPrimitive.Title\n className=\"font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-heading)] font-medium color-[var(--bloom-text)] mb-[var(--space-sm)]\"\n >\n {title}\n </DialogPrimitive.Title>\n )}\n {description && (\n <DialogPrimitive.Description\n className=\"text-[length:var(--bloom-text-body)] color-[var(--bloom-text-secondary)] mb-[var(--space-lg)]\"\n >\n {description}\n </DialogPrimitive.Description>\n )}\n {children}\n <DialogPrimitive.Close\n className={cn(\n \"absolute top-[var(--space-lg)] right-[var(--space-lg)]\",\n \"inline-flex items-center justify-center\",\n \"h-[32px] w-[32px] rounded-full\",\n \"color-[var(--bloom-text-secondary)] hover:color-[var(--bloom-text)]\",\n \"hover:bg-[var(--bloom-surface2)]\",\n \"transition-colors duration-[var(--bloom-duration-fast)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\"\n )}\n aria-label=\"Close\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12 4L4 12M4 4l8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n","import { type ReactNode, type ComponentPropsWithoutRef } from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface DropdownProps {\n trigger: ReactNode;\n children: ReactNode;\n className?: string;\n}\n\nexport function Dropdown({ trigger, children, className }: DropdownProps) {\n return (\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger asChild>{trigger}</DropdownMenuPrimitive.Trigger>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n sideOffset={8}\n className={cn(\n \"bloom z-50 min-w-[180px] overflow-hidden\",\n \"rounded-[var(--bloom-radius)]\",\n \"bg-[var(--bloom-surface)] p-[var(--space-xs)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n >\n {children}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n );\n}\n\nexport interface DropdownItemProps extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {}\n\nexport function DropdownItem({ className, ...props }: DropdownItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(\n \"relative flex items-center\",\n \"rounded-[var(--bloom-radius-sm)]\",\n \"px-[var(--space-md)] py-[var(--space-sm)]\",\n \"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text)]\",\n \"cursor-pointer select-none outline-none\",\n \"transition-colors duration-[var(--bloom-duration-fast)]\",\n \"data-[highlighted]:bg-[var(--bloom-surface2)]\",\n \"data-[disabled]:opacity-50 data-[disabled]:pointer-events-none\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport interface DropdownSeparatorProps extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator> {}\n\nexport function DropdownSeparator({ className, ...props }: DropdownSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n className={cn(\"h-px my-[var(--space-xs)] bg-[var(--bloom-surface2)]\", className)}\n {...props}\n />\n );\n}\n","import { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../utils/cn\";\nimport { tabsListVariants, type TabsListVariants } from \"./tabs.variants\";\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = ComponentPropsWithoutRef<typeof TabsPrimitive.List> &\n TabsListVariants;\n\nexport const TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, variant, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n);\nTabsList.displayName = \"TabsList\";\n\nexport const TabsTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap\",\n \"px-[var(--space-lg)] py-[var(--space-sm)]\",\n \"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)]\",\n \"color-[var(--bloom-text-secondary)]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"hover:text-[var(--bloom-text)]\",\n \"data-[state=active]:text-[var(--bloom-text)]\",\n \"data-[state=active]:bg-[var(--bloom-surface2)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\nexport const TabsContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-[var(--space-lg)]\",\n \"focus-visible:outline-none\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = \"TabsContent\";\n","import { cva } from \"class-variance-authority\";\n\nexport const tabsListVariants = cva(\n [\n \"inline-flex items-center gap-[var(--space-xs)]\",\n \"font-[family-name:var(--bloom-font)]\",\n ],\n {\n variants: {\n variant: {\n default: \"border-b border-[var(--bloom-surface2)]\",\n pill: [\n \"bg-[var(--bloom-surface)] p-[var(--space-xs)]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport type TabsListVariants = Parameters<typeof tabsListVariants>[0];\n","import { useState, useMemo } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface DatePickerProps {\n value?: Date;\n onChange?: (date: Date) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\nconst MONTH_NAMES = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nconst DAY_NAMES = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\n\nexport function DatePicker({ value, onChange, placeholder = \"Select date\", className }: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const [viewDate, setViewDate] = useState(() => value ?? new Date());\n const viewYear = viewDate.getFullYear();\n const viewMonth = viewDate.getMonth();\n\n const days = useMemo(() => {\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\n const cells: Array<number | null> = [];\n for (let i = 0; i < firstDay; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(d);\n return cells;\n }, [viewYear, viewMonth]);\n\n const isSelected = (day: number) => {\n if (!value) return false;\n return value.getFullYear() === viewYear && value.getMonth() === viewMonth && value.getDate() === day;\n };\n\n const prevMonth = () => setViewDate(new Date(viewYear, viewMonth - 1, 1));\n const nextMonth = () => setViewDate(new Date(viewYear, viewMonth + 1, 1));\n\n const selectDay = (day: number) => {\n const selected = new Date(viewYear, viewMonth, day);\n onChange?.(selected);\n setOpen(false);\n };\n\n const formattedValue = value\n ? value.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" })\n : null;\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <button\n className={cn(\n \"inline-flex items-center gap-[var(--space-sm)]\",\n \"h-[44px] px-[var(--space-lg)]\",\n \"rounded-[var(--bloom-radius)] bg-[var(--bloom-surface)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/20\",\n !formattedValue && \"color-[var(--bloom-text-secondary)]\",\n className\n )}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"2\" y=\"3\" width=\"12\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2 6h12\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5 1v3M11 1v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n {formattedValue ?? placeholder}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n sideOffset={8}\n className={cn(\n \"bloom z-50 w-[280px]\",\n \"rounded-[var(--bloom-radius-lg)]\",\n \"bg-[var(--bloom-surface)] p-[var(--space-lg)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n )}\n >\n <div className=\"flex items-center justify-between mb-[var(--space-md)]\">\n <button\n onClick={prevMonth}\n className=\"p-[var(--space-xs)] rounded-full hover:bg-[var(--bloom-surface2)] transition-colors\"\n aria-label=\"Previous month\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M10 4l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <span className=\"font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-body)] font-medium color-[var(--bloom-text)]\">\n {MONTH_NAMES[viewMonth]} {viewYear}\n </span>\n <button\n onClick={nextMonth}\n className=\"p-[var(--space-xs)] rounded-full hover:bg-[var(--bloom-surface2)] transition-colors\"\n aria-label=\"Next month\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <div className=\"grid grid-cols-7 gap-[2px] mb-[var(--space-xs)]\">\n {DAY_NAMES.map((d) => (\n <div key={d} className=\"text-center text-[length:var(--bloom-text-micro)] color-[var(--bloom-text-secondary)] font-medium py-[var(--space-xs)]\">\n {d}\n </div>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7 gap-[2px]\">\n {days.map((day, i) =>\n day === null ? (\n <div key={`empty-${i}`} />\n ) : (\n <button\n key={day}\n onClick={() => selectDay(day)}\n className={cn(\n \"h-[36px] w-[36px] rounded-full\",\n \"flex items-center justify-center\",\n \"text-[length:var(--bloom-text-caption)] font-[family-name:var(--bloom-font)]\",\n \"transition-colors duration-[var(--bloom-duration-fast)]\",\n \"hover:bg-[var(--bloom-accent1)]/20\",\n isSelected(day)\n ? \"bg-[var(--bloom-accent1-deep)] color-white\"\n : \"color-[var(--bloom-text)]\"\n )}\n >\n {day}\n </button>\n )\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n","import {\n createContext,\n useContext,\n useState,\n useCallback,\n useEffect,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { toastVariants, toastIconColors } from \"./toast.variants\";\n\ninterface ToastData {\n id: string;\n title: string;\n description?: string;\n duration?: number;\n variant?: \"info\" | \"success\" | \"warning\" | \"error\" | null;\n}\n\ninterface ToastContextValue {\n toast: (data: Omit<ToastData, \"id\">) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within <ToastProvider>\");\n return ctx;\n}\n\nlet toastId = 0;\n\nexport function ToastProvider({ children }: { children: ReactNode }) {\n const [toasts, setToasts] = useState<ToastData[]>([]);\n\n const toast = useCallback((data: Omit<ToastData, \"id\">) => {\n const id = String(++toastId);\n setToasts((prev) => [...prev, { ...data, id }]);\n }, []);\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n return (\n <ToastContext.Provider value={{ toast }}>\n {children}\n <div className=\"bloom fixed bottom-[var(--space-xl)] right-[var(--space-xl)] z-[100] flex flex-col gap-[var(--space-md)]\">\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} onDismiss={dismiss} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n\nconst variantIcons: Record<string, ReactNode> = {\n success: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M6.5 10.5L8.5 12.5L13.5 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ),\n error: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M7.5 7.5L12.5 12.5M12.5 7.5L7.5 12.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ),\n warning: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10 3L18 17H2L10 3Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M10 8.5V12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"14.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n info: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M10 9V14\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n};\n\nfunction ToastItem({ toast: t, onDismiss }: { toast: ToastData; onDismiss: (id: string) => void }) {\n const duration = t.duration ?? 4000;\n const variant = t.variant ?? \"info\";\n\n useEffect(() => {\n const timer = setTimeout(() => onDismiss(t.id), duration);\n return () => clearTimeout(timer);\n }, [t.id, duration, onDismiss]);\n\n return (\n <div className={cn(toastVariants({ variant: t.variant }))}>\n <div className={cn(\"shrink-0 mt-[1px]\", toastIconColors[variant])}>\n {variantIcons[variant]}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-[length:var(--bloom-text-body)] font-medium color-[var(--bloom-text)]\">\n {t.title}\n </p>\n {t.description && (\n <p className=\"text-[length:var(--bloom-text-caption)] color-[var(--bloom-text-secondary)] mt-[var(--space-xs)]\">\n {t.description}\n </p>\n )}\n </div>\n <button\n onClick={() => onDismiss(t.id)}\n className=\"color-[var(--bloom-text-secondary)] hover:color-[var(--bloom-text)] transition-colors shrink-0 rounded-full h-[28px] w-[28px] inline-flex items-center justify-center hover:bg-[var(--bloom-surface2)]\"\n aria-label=\"Dismiss\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12 4L4 12M4 4l8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n );\n}\n","import { cva } from \"class-variance-authority\";\n\nexport const toastVariants = cva(\n [\n \"relative flex items-center gap-[var(--space-md)]\",\n \"w-full max-w-[380px]\",\n \"rounded-[var(--bloom-radius-lg)]\",\n \"p-[var(--space-lg)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"border\",\n \"font-[family-name:var(--bloom-font)]\",\n \"overflow-hidden\",\n \"animate-in fade-in-0 slide-in-from-bottom-4\",\n ],\n {\n variants: {\n variant: {\n info: \"bg-[var(--bloom-surface)] border-[var(--bloom-surface2)]\",\n success: \"bg-[var(--bloom-accent1)]/10 border-[var(--bloom-accent1)]/20\",\n warning: \"bg-[var(--bloom-accent2)]/10 border-[var(--bloom-accent2)]/20\",\n error: \"bg-[var(--bloom-accent4)]/10 border-[var(--bloom-accent4)]/20\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n }\n);\n\nexport type ToastVariants = Parameters<typeof toastVariants>[0];\n\nexport const toastIconColors = {\n info: \"color-[var(--bloom-accent3-deep)]\",\n success: \"color-[var(--bloom-accent1-deep)]\",\n warning: \"color-[var(--bloom-accent2-deep)]\",\n error: \"color-[var(--bloom-accent4-deep)]\",\n} as const;\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { skeletonVariants, type SkeletonVariants } from \"./skeleton.variants\";\n\nexport type SkeletonProps = HTMLAttributes<HTMLDivElement> & SkeletonVariants;\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(skeletonVariants({ variant }), className)}\n aria-hidden=\"true\"\n {...props}\n />\n )\n);\nSkeleton.displayName = \"Skeleton\";\n","import { cva } from \"class-variance-authority\";\n\nexport const skeletonVariants = cva(\n [\n \"bg-[var(--bloom-surface2)]\",\n \"animate-[bloom-breathe_3s_ease-in-out_infinite]\",\n ],\n {\n variants: {\n variant: {\n text: \"h-[16px] w-full rounded-[var(--bloom-radius-sm)]\",\n card: \"h-[200px] w-full rounded-[var(--bloom-radius-lg)]\",\n avatar: \"h-[40px] w-[40px] rounded-full\",\n custom: \"\",\n },\n },\n defaultVariants: {\n variant: \"text\",\n },\n }\n);\n\nexport type SkeletonVariants = Parameters<typeof skeletonVariants>[0];\n"],"mappings":"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","names":["forwardRef","cva","jsx","forwardRef","forwardRef","cva","jsx","forwardRef","forwardRef","jsx","forwardRef","forwardRef","cva","jsx","jsxs","forwardRef","forwardRef","cva","jsx","jsxs","forwardRef","forwardRef","useState","cva","jsx","jsxs","forwardRef","useState","jsx","jsxs","forwardRef","cva","jsx","jsxs","forwardRef","forwardRef","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsxs","forwardRef","cva","jsx","forwardRef","useState","useMemo","jsx","jsxs","useState","useMemo","useState","useEffect","cva","jsx","jsxs","useState","variantIcons","useEffect","forwardRef","cva","jsx","forwardRef"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/utils/motion-presets.ts","../src/hooks/use-reduced-motion.ts","../src/hooks/use-breathing.ts","../src/components/button/button.tsx","../src/components/button/button.variants.ts","../src/components/card/card.tsx","../src/components/card/card.variants.ts","../src/components/input/input.tsx","../src/components/input/input.variants.ts","../src/components/toggle/toggle.tsx","../src/components/badge/badge.tsx","../src/components/badge/badge.variants.ts","../src/components/alert/alert.tsx","../src/components/alert/alert.variants.ts","../src/components/avatar/avatar.tsx","../src/components/avatar/avatar.variants.ts","../src/components/tooltip/tooltip.tsx","../src/components/progress/progress.tsx","../src/components/progress/progress.variants.ts","../src/components/slider/slider.tsx","../src/components/modal/modal.tsx","../src/components/dropdown/dropdown.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs.variants.ts","../src/components/date-picker/date-picker.tsx","../src/components/toast/toast.tsx","../src/components/toast/toast.variants.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/skeleton.variants.ts","../src/components/theme/theme.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import type { Transition, Variants } from \"motion/react\";\n\nexport const bloomTransition: Transition = {\n duration: 0.5,\n ease: [0.4, 0, 0.2, 1],\n};\n\nexport const bloomTransitionSlow: Transition = {\n duration: 0.8,\n ease: [0.4, 0, 0.2, 1],\n};\n\nexport const bloomTransitionFast: Transition = {\n duration: 0.3,\n ease: [0.4, 0, 0.2, 1],\n};\n\nexport const bloomSpring: Transition = {\n type: \"spring\",\n stiffness: 200,\n damping: 20,\n};\n\nexport const hoverLift: Variants = {\n initial: { y: 0, scale: 1 },\n hover: { y: -2, scale: 1 },\n tap: { y: 0, scale: 0.98 },\n};\n\nexport const cardHoverLift: Variants = {\n initial: { y: 0 },\n hover: { y: -4 },\n};\n\nexport const fadeIn: Variants = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n};\n\nexport const slideUp: Variants = {\n initial: { opacity: 0, y: 12 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 12 },\n};\n","import { useState, useEffect } from \"react\";\n\nexport function useReducedMotion(): boolean {\n const [reduced, setReduced] = useState(() => {\n if (typeof window === \"undefined\") return false;\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const hasClass = document.documentElement.classList.contains(\"bloom-reduced-motion\");\n return mq.matches || hasClass;\n });\n\n useEffect(() => {\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n\n const handleChange = () => {\n const hasClass = document.documentElement.classList.contains(\"bloom-reduced-motion\");\n setReduced(mq.matches || hasClass);\n };\n\n mq.addEventListener(\"change\", handleChange);\n\n const observer = new MutationObserver(() => {\n const hasClass = document.documentElement.classList.contains(\"bloom-reduced-motion\");\n setReduced(mq.matches || hasClass);\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => {\n mq.removeEventListener(\"change\", handleChange);\n observer.disconnect();\n };\n }, []);\n\n return reduced;\n}\n","import { useMemo } from \"react\";\n\ninterface UseBreathingOptions {\n duration?: number;\n animation?: string;\n}\n\ninterface BreathingStyle {\n animationName: string;\n animationDuration: string;\n animationDelay: string;\n animationTimingFunction: string;\n animationIterationCount: string;\n}\n\nexport function useBreathing(options?: UseBreathingOptions): BreathingStyle {\n const { duration = 6, animation = \"bloom-breathe\" } = options ?? {};\n\n return useMemo(() => {\n const delay = Math.random() * duration;\n return {\n animationName: animation,\n animationDuration: `${duration}s`,\n animationDelay: `${delay.toFixed(2)}s`,\n animationTimingFunction: \"ease-in-out\",\n animationIterationCount: \"infinite\",\n };\n }, [duration, animation]);\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../../utils/cn\";\nimport { buttonVariants, type ButtonVariants } from \"./button.variants\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &\n ButtonVariants & {\n asChild?: boolean;\n children: ReactNode;\n };\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, asChild = false, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant }), className)}\n ref={ref}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center\",\n \"font-[family-name:var(--bloom-font)] text-[14px] font-normal\",\n \"h-[44px] px-[28px]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"relative overflow-hidden cursor-pointer\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--bloom-accent1-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n secondary: [\n \"bg-[var(--bloom-surface)] text-[var(--bloom-text)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n ghost: [\n \"bg-transparent text-[var(--bloom-text)]\",\n \"hover:bg-[var(--bloom-surface)]\",\n \"active:scale-[0.98]\",\n ],\n accent: [\n \"bg-[var(--bloom-accent3-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n danger: [\n \"bg-[var(--bloom-accent4-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n warning: [\n \"bg-[var(--bloom-accent2-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n success: [\n \"bg-[var(--bloom-accent1-deep)] text-white\",\n \"hover:-translate-y-[2px] hover:shadow-[var(--bloom-shadow-hover)]\",\n \"active:translate-y-0 active:scale-[0.98]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n }\n);\n\nexport type ButtonVariants = Parameters<typeof buttonVariants>[0];\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { cardVariants, type CardVariants } from \"./card.variants\";\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> & CardVariants;\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, ...props }, ref) => (\n <div ref={ref} className={cn(cardVariants({ variant }), className)} {...props} />\n )\n);\nCard.displayName = \"Card\";\n\nexport const CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[var(--space-xl)] pb-0\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"font-[family-name:var(--bloom-font-display)] text-[18px] font-medium text-[var(--bloom-text)] leading-[var(--bloom-leading-heading)]\",\n className\n )}\n {...props}\n />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-[length:var(--bloom-text-caption)] color-[var(--bloom-text-secondary)] mt-[var(--space-xs)]\", className)}\n {...props}\n />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport const CardContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[var(--space-xl)]\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport const CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-[var(--space-xl)] pt-0 flex items-center\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import { cva } from \"class-variance-authority\";\n\nexport const cardVariants = cva(\n [\n \"rounded-[var(--bloom-radius-lg)] bg-[var(--bloom-surface)]\",\n \"shadow-[var(--bloom-shadow)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"relative overflow-hidden\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n interactive: [\n \"cursor-pointer\",\n \"border border-transparent\",\n \"hover:border-[var(--bloom-surface2)]\",\n \"hover:-translate-y-[4px] hover:shadow-[var(--bloom-shadow-hover)]\",\n ],\n featured: [\n \"border border-[var(--bloom-accent1)]/30\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport type CardVariants = Parameters<typeof cardVariants>[0];\n","import { forwardRef, type InputHTMLAttributes, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { inputVariants } from \"./input.variants\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type = \"text\", ...props }, ref) => (\n <input\n ref={ref}\n type={type}\n className={cn(inputVariants(), \"h-[44px]\", className)}\n {...props}\n />\n )\n);\nInput.displayName = \"Input\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n className={cn(inputVariants(), \"min-h-[100px] resize-y\", className)}\n {...props}\n />\n )\n);\nTextarea.displayName = \"Textarea\";\n","import { cva } from \"class-variance-authority\";\n\nexport const inputVariants = cva([\n \"w-full\",\n \"rounded-[var(--bloom-radius)] bg-[var(--bloom-surface)]\",\n \"color-[var(--bloom-text)] text-[length:var(--bloom-text-body)]\",\n \"font-[family-name:var(--bloom-font)]\",\n \"px-[var(--space-lg)] py-[var(--space-md)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"placeholder:color-[var(--bloom-text-secondary)]/60\",\n \"focus:outline-none focus:ring-[4px] focus:ring-[var(--bloom-accent1)]/20 focus:border-[var(--bloom-accent1-deep)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n]);\n","import { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ToggleProps extends ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n label?: string;\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n ({ className, label, ...props }, ref) => (\n <label className=\"inline-flex items-center gap-[var(--space-md)]\">\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"peer inline-flex h-[28px] w-[50px] shrink-0 cursor-pointer items-center\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"border border-transparent\",\n \"bg-[var(--bloom-surface2)]\",\n \"transition-colors duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-[var(--bloom-accent1-deep)]\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-[22px] w-[22px] rounded-full bg-white\",\n \"shadow-[0_1px_4px_rgba(0,0,0,0.1)]\",\n \"transition-transform duration-[var(--bloom-duration-fast)] ease-[var(--bloom-ease)]\",\n \"data-[state=unchecked]:translate-x-[3px]\",\n \"data-[state=checked]:translate-x-[25px]\"\n )}\n />\n </SwitchPrimitive.Root>\n {label && (\n <span className=\"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text)]\">\n {label}\n </span>\n )}\n </label>\n )\n);\nToggle.displayName = \"Toggle\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { badgeVariants, type BadgeVariants } from \"./badge.variants\";\n\nconst dotColorMap = {\n sage: \"bg-[var(--bloom-accent1-deep)]\",\n sand: \"bg-[var(--bloom-accent2-deep)]\",\n lavender: \"bg-[var(--bloom-accent3-deep)]\",\n rose: \"bg-[var(--bloom-accent4-deep)]\",\n} as const;\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> &\n BadgeVariants & {\n dot?: boolean;\n };\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant = \"sage\", dot = false, children, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props}>\n {dot && (\n <span\n data-bloom-dot=\"\"\n className={cn(\n \"h-[6px] w-[6px] rounded-full\",\n \"animate-[bloom-breathe_5s_ease-in-out_infinite]\",\n dotColorMap[variant ?? \"sage\"]\n )}\n />\n )}\n {children}\n </span>\n )\n);\nBadge.displayName = \"Badge\";\n","import { cva } from \"class-variance-authority\";\n\nexport const badgeVariants = cva(\n [\n \"inline-flex items-center gap-[var(--space-xs)]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"px-[var(--space-md)] py-[var(--space-xs)]\",\n \"text-[var(--bloom-text-micro)] font-medium font-[family-name:var(--bloom-font)]\",\n \"tracking-[var(--bloom-letter-wide)] uppercase\",\n ],\n {\n variants: {\n variant: {\n sage: \"bg-[var(--bloom-accent1)]/20 text-[var(--bloom-accent1-deep)]\",\n sand: \"bg-[var(--bloom-accent2)]/20 text-[var(--bloom-accent2-deep)]\",\n lavender: \"bg-[var(--bloom-accent3)]/20 text-[var(--bloom-accent3-deep)]\",\n rose: \"bg-[var(--bloom-accent4)]/20 text-[var(--bloom-accent4-deep)]\",\n },\n },\n defaultVariants: {\n variant: \"sage\",\n },\n }\n);\n\nexport type BadgeVariants = Parameters<typeof badgeVariants>[0];\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { alertVariants, alertIconColors, type AlertVariants } from \"./alert.variants\";\n\nexport type AlertProps = HTMLAttributes<HTMLDivElement> & AlertVariants;\n\nconst variantIcons: Record<string, ReactNode> = {\n success: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M6.5 10.5L8.5 12.5L13.5 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ),\n error: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M7.5 7.5L12.5 12.5M12.5 7.5L7.5 12.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ),\n warning: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10 3L18 17H2L10 3Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M10 8.5V12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"14.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n info: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M10 9V14\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant = \"info\", children, ...props }, ref) => (\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props}>\n <div className={cn(\"shrink-0 mt-px\", alertIconColors[variant ?? \"info\"])}>\n {variantIcons[variant ?? \"info\"]}\n </div>\n <div className=\"flex-1 min-w-0\">\n {children}\n </div>\n </div>\n )\n);\nAlert.displayName = \"Alert\";\n\nexport const AlertTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\n \"font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-body)] font-medium color-[var(--bloom-text)]\",\n className\n )}\n {...props}\n />\n )\n);\nAlertTitle.displayName = \"AlertTitle\";\n\nexport const AlertDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-[length:var(--bloom-text-caption)] color-[var(--bloom-text-secondary)] mt-[var(--space-xs)]\", className)}\n {...props}\n />\n )\n);\nAlertDescription.displayName = \"AlertDescription\";\n","import { cva } from \"class-variance-authority\";\n\nexport const alertVariants = cva(\n [\n \"relative flex gap-[var(--space-md)] items-start\",\n \"rounded-[var(--bloom-radius-lg)] p-[var(--space-lg)]\",\n \"font-[family-name:var(--bloom-font)]\",\n \"border\",\n ],\n {\n variants: {\n variant: {\n info: \"bg-[var(--bloom-accent3)]/10 border-[var(--bloom-accent3)]/20\",\n success: \"bg-[var(--bloom-accent1)]/10 border-[var(--bloom-accent1)]/20\",\n warning: \"bg-[var(--bloom-accent2)]/10 border-[var(--bloom-accent2)]/20\",\n error: \"bg-[var(--bloom-accent4)]/10 border-[var(--bloom-accent4)]/20\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n }\n);\n\nexport const alertIconColors = {\n info: \"color-[var(--bloom-accent3-deep)]\",\n success: \"color-[var(--bloom-accent1-deep)]\",\n warning: \"color-[var(--bloom-accent2-deep)]\",\n error: \"color-[var(--bloom-accent4-deep)]\",\n} as const;\n\nexport type AlertVariants = Parameters<typeof alertVariants>[0];\n","import { forwardRef, useState, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { avatarVariants, type AvatarVariants } from \"./avatar.variants\";\n\nexport type AvatarProps = HTMLAttributes<HTMLDivElement> &\n AvatarVariants & {\n initials?: string;\n src?: string;\n alt?: string;\n };\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size, initials, src, alt, ...props }, ref) => {\n const [imgError, setImgError] = useState(false);\n const showImage = src && !imgError;\n\n return (\n <div ref={ref} className={cn(avatarVariants({ size }), className)} {...props}>\n <span aria-hidden={showImage || undefined}>{initials}</span>\n {showImage && (\n <img\n src={src}\n alt={alt ?? initials ?? \"\"}\n onError={() => setImgError(true)}\n className=\"absolute inset-0 h-full w-full object-cover\"\n />\n )}\n </div>\n );\n }\n);\nAvatar.displayName = \"Avatar\";\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex -space-x-2\", className)}\n {...props}\n />\n )\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n","import { cva } from \"class-variance-authority\";\n\nexport const avatarVariants = cva(\n [\n \"relative inline-flex items-center justify-center\",\n \"rounded-full overflow-hidden\",\n \"bg-[var(--bloom-accent1)]/20 text-[var(--bloom-accent1-deep)]\",\n \"font-[family-name:var(--bloom-font)] font-medium\",\n \"select-none shrink-0\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[32px] w-[32px] text-[var(--bloom-text-micro)]\",\n md: \"h-[40px] w-[40px] text-[var(--bloom-text-caption)]\",\n lg: \"h-[56px] w-[56px] text-[var(--bloom-text-body)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport type AvatarVariants = Parameters<typeof avatarVariants>[0];\n","import { type ReactNode } from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../utils/cn\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps {\n content: ReactNode;\n children: ReactNode;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n className?: string;\n}\n\nexport function Tooltip({ content, children, side = \"top\", className }: TooltipProps) {\n return (\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n sideOffset={8}\n className={cn(\n \"bloom z-50 rounded-[var(--bloom-radius)]\",\n \"bg-[var(--bloom-surface)] color-[var(--bloom-text)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"px-[var(--space-md)] py-[var(--space-sm)]\",\n \"text-[length:var(--bloom-text-caption)] font-[family-name:var(--bloom-font)]\",\n \"shadow-[var(--bloom-shadow)]\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { progressTrackVariants, progressFillVariants } from \"./progress.variants\";\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value = 0, ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(progressTrackVariants(), className)}\n {...props}\n >\n <div\n className={progressFillVariants()}\n style={{ width: `${clampedValue}%` }}\n />\n </div>\n );\n }\n);\nProgress.displayName = \"Progress\";\n\nexport interface ProgressCircularProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n size?: number;\n strokeWidth?: number;\n}\n\nexport const ProgressCircular = forwardRef<HTMLDivElement, ProgressCircularProps>(\n ({ className, value = 0, size = 48, strokeWidth = 4, ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (clampedValue / 100) * circumference;\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\"inline-flex\", className)}\n {...props}\n >\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"var(--bloom-surface2)\"\n strokeWidth={strokeWidth}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"var(--bloom-accent1-deep)\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n style={{\n transition: `stroke-dashoffset var(--bloom-duration) var(--bloom-ease)`,\n }}\n />\n </svg>\n </div>\n );\n }\n);\nProgressCircular.displayName = \"ProgressCircular\";\n","import { cva } from \"class-variance-authority\";\n\nexport const progressTrackVariants = cva([\n \"relative w-full overflow-hidden\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"bg-[var(--bloom-surface2)]\",\n \"h-[6px]\",\n]);\n\nexport const progressFillVariants = cva([\n \"h-full rounded-[var(--bloom-radius-pill)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"bg-gradient-to-r from-[var(--bloom-accent1-deep)] to-[var(--bloom-accent1)]\",\n \"bg-[length:200%_100%] animate-[bloom-shimmer_3s_ease-in-out_infinite]\",\n]);\n","import { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface SliderProps extends ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {}\n\nexport const Slider = forwardRef<HTMLSpanElement, SliderProps>(\n ({ className, disabled, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n disabled={disabled}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n \"data-[disabled]:opacity-50 data-[disabled]:pointer-events-none\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n className={cn(\n \"relative h-[6px] w-full grow overflow-hidden\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"bg-[var(--bloom-surface2)]\"\n )}\n >\n <SliderPrimitive.Range\n className={cn(\n \"absolute h-full\",\n \"bg-[var(--bloom-accent1-deep)]\",\n \"rounded-[var(--bloom-radius-pill)]\"\n )}\n />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n aria-disabled={disabled ? true : undefined}\n className={cn(\n \"block h-[24px] w-[24px] rounded-full\",\n \"bg-white border-[2px] border-[var(--bloom-accent1-deep)]\",\n \"shadow-[0_1px_4px_rgba(0,0,0,0.1)]\",\n \"transition-transform duration-[var(--bloom-duration-fast)] ease-[var(--bloom-ease)]\",\n \"hover:scale-110\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"cursor-grab active:cursor-grabbing\"\n )}\n />\n </SliderPrimitive.Root>\n )\n);\nSlider.displayName = \"Slider\";\n","import { type ReactNode } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: string;\n description?: string;\n children: ReactNode;\n className?: string;\n}\n\nexport function Modal({ open, onOpenChange, title, description, children, className }: ModalProps) {\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/40 backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\"\n )}\n />\n <DialogPrimitive.Content\n className={cn(\n \"bloom fixed left-1/2 top-1/2 z-50\",\n \"-translate-x-1/2 -translate-y-1/2\",\n \"w-full max-w-[480px]\",\n \"rounded-[var(--bloom-radius-lg)]\",\n \"bg-[var(--bloom-surface)] p-[var(--space-xl)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"focus:outline-none\",\n className\n )}\n >\n {title && (\n <DialogPrimitive.Title\n className=\"font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-heading)] font-medium color-[var(--bloom-text)] mb-[var(--space-sm)]\"\n >\n {title}\n </DialogPrimitive.Title>\n )}\n {description && (\n <DialogPrimitive.Description\n className=\"text-[length:var(--bloom-text-body)] color-[var(--bloom-text-secondary)] mb-[var(--space-lg)]\"\n >\n {description}\n </DialogPrimitive.Description>\n )}\n {children}\n <DialogPrimitive.Close\n className={cn(\n \"absolute top-[var(--space-lg)] right-[var(--space-lg)]\",\n \"inline-flex items-center justify-center\",\n \"h-[32px] w-[32px] rounded-full\",\n \"color-[var(--bloom-text-secondary)] hover:color-[var(--bloom-text)]\",\n \"hover:bg-[var(--bloom-surface2)]\",\n \"transition-colors duration-[var(--bloom-duration-fast)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\"\n )}\n aria-label=\"Close\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12 4L4 12M4 4l8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n","import { type ReactNode, type ComponentPropsWithoutRef } from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface DropdownProps {\n trigger: ReactNode;\n children: ReactNode;\n className?: string;\n}\n\nexport function Dropdown({ trigger, children, className }: DropdownProps) {\n return (\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger asChild>{trigger}</DropdownMenuPrimitive.Trigger>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n sideOffset={8}\n className={cn(\n \"bloom z-50 min-w-[180px] overflow-hidden\",\n \"rounded-[var(--bloom-radius)]\",\n \"bg-[var(--bloom-surface)] p-[var(--space-xs)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n className\n )}\n >\n {children}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n );\n}\n\nexport interface DropdownItemProps extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> {}\n\nexport function DropdownItem({ className, ...props }: DropdownItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(\n \"relative flex items-center\",\n \"rounded-[var(--bloom-radius-sm)]\",\n \"px-[var(--space-md)] py-[var(--space-sm)]\",\n \"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text)]\",\n \"cursor-pointer select-none outline-none\",\n \"transition-colors duration-[var(--bloom-duration-fast)]\",\n \"data-[highlighted]:bg-[var(--bloom-surface2)]\",\n \"data-[disabled]:opacity-50 data-[disabled]:pointer-events-none\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport interface DropdownSeparatorProps extends ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator> {}\n\nexport function DropdownSeparator({ className, ...props }: DropdownSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n className={cn(\"h-px my-[var(--space-xs)] bg-[var(--bloom-surface2)]\", className)}\n {...props}\n />\n );\n}\n","import { forwardRef, type ComponentPropsWithoutRef } from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../utils/cn\";\nimport { tabsListVariants, type TabsListVariants } from \"./tabs.variants\";\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = ComponentPropsWithoutRef<typeof TabsPrimitive.List> &\n TabsListVariants;\n\nexport const TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, variant, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n);\nTabsList.displayName = \"TabsList\";\n\nexport const TabsTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap\",\n \"px-[var(--space-lg)] py-[var(--space-sm)]\",\n \"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)]\",\n \"color-[var(--bloom-text-secondary)]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"hover:text-[var(--bloom-text)]\",\n \"data-[state=active]:text-[var(--bloom-text)]\",\n \"data-[state=active]:bg-[var(--bloom-surface2)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\nexport const TabsContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-[var(--space-lg)]\",\n \"focus-visible:outline-none\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = \"TabsContent\";\n","import { cva } from \"class-variance-authority\";\n\nexport const tabsListVariants = cva(\n [\n \"inline-flex items-center gap-[var(--space-xs)]\",\n \"font-[family-name:var(--bloom-font)]\",\n ],\n {\n variants: {\n variant: {\n default: \"border-b border-[var(--bloom-surface2)]\",\n pill: [\n \"bg-[var(--bloom-surface)] p-[var(--space-xs)]\",\n \"rounded-[var(--bloom-radius-pill)]\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport type TabsListVariants = Parameters<typeof tabsListVariants>[0];\n","import { useState, useMemo } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface DatePickerProps {\n value?: Date;\n onChange?: (date: Date) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\nconst MONTH_NAMES = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nconst DAY_NAMES = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\n\nexport function DatePicker({ value, onChange, placeholder = \"Select date\", className }: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const [viewDate, setViewDate] = useState(() => value ?? new Date());\n const viewYear = viewDate.getFullYear();\n const viewMonth = viewDate.getMonth();\n\n const days = useMemo(() => {\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\n const cells: Array<number | null> = [];\n for (let i = 0; i < firstDay; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(d);\n return cells;\n }, [viewYear, viewMonth]);\n\n const isSelected = (day: number) => {\n if (!value) return false;\n return value.getFullYear() === viewYear && value.getMonth() === viewMonth && value.getDate() === day;\n };\n\n const prevMonth = () => setViewDate(new Date(viewYear, viewMonth - 1, 1));\n const nextMonth = () => setViewDate(new Date(viewYear, viewMonth + 1, 1));\n\n const selectDay = (day: number) => {\n const selected = new Date(viewYear, viewMonth, day);\n onChange?.(selected);\n setOpen(false);\n };\n\n const formattedValue = value\n ? value.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" })\n : null;\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <button\n className={cn(\n \"inline-flex items-center gap-[var(--space-sm)]\",\n \"h-[44px] px-[var(--space-lg)]\",\n \"rounded-[var(--bloom-radius)] bg-[var(--bloom-surface)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text)]\",\n \"transition-all duration-[var(--bloom-duration)] ease-[var(--bloom-ease)]\",\n \"focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/20\",\n !formattedValue && \"color-[var(--bloom-text-secondary)]\",\n className\n )}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"2\" y=\"3\" width=\"12\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2 6h12\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5 1v3M11 1v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n {formattedValue ?? placeholder}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n sideOffset={8}\n className={cn(\n \"bloom z-50 w-[280px]\",\n \"rounded-[var(--bloom-radius-lg)]\",\n \"bg-[var(--bloom-surface)] p-[var(--space-lg)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"border border-[var(--bloom-surface2)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n )}\n >\n <div className=\"flex items-center justify-between mb-[var(--space-md)]\">\n <button\n onClick={prevMonth}\n className=\"p-[var(--space-xs)] rounded-full hover:bg-[var(--bloom-surface2)] transition-colors\"\n aria-label=\"Previous month\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M10 4l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <span className=\"font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-body)] font-medium color-[var(--bloom-text)]\">\n {MONTH_NAMES[viewMonth]} {viewYear}\n </span>\n <button\n onClick={nextMonth}\n className=\"p-[var(--space-xs)] rounded-full hover:bg-[var(--bloom-surface2)] transition-colors\"\n aria-label=\"Next month\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <div className=\"grid grid-cols-7 gap-[2px] mb-[var(--space-xs)]\">\n {DAY_NAMES.map((d) => (\n <div key={d} className=\"text-center text-[length:var(--bloom-text-micro)] color-[var(--bloom-text-secondary)] font-medium py-[var(--space-xs)]\">\n {d}\n </div>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7 gap-[2px]\">\n {days.map((day, i) =>\n day === null ? (\n <div key={`empty-${i}`} />\n ) : (\n <button\n key={day}\n onClick={() => selectDay(day)}\n className={cn(\n \"h-[36px] w-[36px] rounded-full\",\n \"flex items-center justify-center\",\n \"text-[length:var(--bloom-text-caption)] font-[family-name:var(--bloom-font)]\",\n \"transition-colors duration-[var(--bloom-duration-fast)]\",\n \"hover:bg-[var(--bloom-accent1)]/20\",\n isSelected(day)\n ? \"bg-[var(--bloom-accent1-deep)] color-white\"\n : \"color-[var(--bloom-text)]\"\n )}\n >\n {day}\n </button>\n )\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n","import {\n createContext,\n useContext,\n useState,\n useCallback,\n useEffect,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { toastVariants, toastIconColors } from \"./toast.variants\";\n\ninterface ToastData {\n id: string;\n title: string;\n description?: string;\n duration?: number;\n variant?: \"info\" | \"success\" | \"warning\" | \"error\" | null;\n}\n\ninterface ToastContextValue {\n toast: (data: Omit<ToastData, \"id\">) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast must be used within <ToastProvider>\");\n return ctx;\n}\n\nlet toastId = 0;\n\nexport function ToastProvider({ children }: { children: ReactNode }) {\n const [toasts, setToasts] = useState<ToastData[]>([]);\n\n const toast = useCallback((data: Omit<ToastData, \"id\">) => {\n const id = String(++toastId);\n setToasts((prev) => [...prev, { ...data, id }]);\n }, []);\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n return (\n <ToastContext.Provider value={{ toast }}>\n {children}\n <div className=\"bloom fixed bottom-[var(--space-xl)] right-[var(--space-xl)] z-[100] flex flex-col gap-[var(--space-md)]\">\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} onDismiss={dismiss} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n\nconst variantIcons: Record<string, ReactNode> = {\n success: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M6.5 10.5L8.5 12.5L13.5 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ),\n error: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M7.5 7.5L12.5 12.5M12.5 7.5L7.5 12.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ),\n warning: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10 3L18 17H2L10 3Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M10 8.5V12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"14.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n info: (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M10 9V14\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n ),\n};\n\nfunction ToastItem({ toast: t, onDismiss }: { toast: ToastData; onDismiss: (id: string) => void }) {\n const duration = t.duration ?? 4000;\n const variant = t.variant ?? \"info\";\n\n useEffect(() => {\n const timer = setTimeout(() => onDismiss(t.id), duration);\n return () => clearTimeout(timer);\n }, [t.id, duration, onDismiss]);\n\n return (\n <div className={cn(toastVariants({ variant: t.variant }))}>\n <div className={cn(\"shrink-0 mt-[1px]\", toastIconColors[variant])}>\n {variantIcons[variant]}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-[length:var(--bloom-text-body)] font-medium color-[var(--bloom-text)]\">\n {t.title}\n </p>\n {t.description && (\n <p className=\"text-[length:var(--bloom-text-caption)] color-[var(--bloom-text-secondary)] mt-[var(--space-xs)]\">\n {t.description}\n </p>\n )}\n </div>\n <button\n onClick={() => onDismiss(t.id)}\n className=\"color-[var(--bloom-text-secondary)] hover:color-[var(--bloom-text)] transition-colors shrink-0 rounded-full h-[28px] w-[28px] inline-flex items-center justify-center hover:bg-[var(--bloom-surface2)]\"\n aria-label=\"Dismiss\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12 4L4 12M4 4l8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n );\n}\n","import { cva } from \"class-variance-authority\";\n\nexport const toastVariants = cva(\n [\n \"relative flex items-center gap-[var(--space-md)]\",\n \"w-full max-w-[380px]\",\n \"rounded-[var(--bloom-radius-lg)]\",\n \"p-[var(--space-lg)]\",\n \"shadow-[var(--bloom-shadow-hover)]\",\n \"border\",\n \"font-[family-name:var(--bloom-font)]\",\n \"overflow-hidden\",\n \"animate-in fade-in-0 slide-in-from-bottom-4\",\n ],\n {\n variants: {\n variant: {\n info: \"bg-[var(--bloom-surface)] border-[var(--bloom-surface2)]\",\n success: \"bg-[var(--bloom-accent1)]/10 border-[var(--bloom-accent1)]/20\",\n warning: \"bg-[var(--bloom-accent2)]/10 border-[var(--bloom-accent2)]/20\",\n error: \"bg-[var(--bloom-accent4)]/10 border-[var(--bloom-accent4)]/20\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n }\n);\n\nexport type ToastVariants = Parameters<typeof toastVariants>[0];\n\nexport const toastIconColors = {\n info: \"color-[var(--bloom-accent3-deep)]\",\n success: \"color-[var(--bloom-accent1-deep)]\",\n warning: \"color-[var(--bloom-accent2-deep)]\",\n error: \"color-[var(--bloom-accent4-deep)]\",\n} as const;\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { skeletonVariants, type SkeletonVariants } from \"./skeleton.variants\";\n\nexport type SkeletonProps = HTMLAttributes<HTMLDivElement> & SkeletonVariants;\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(skeletonVariants({ variant }), className)}\n aria-hidden=\"true\"\n {...props}\n />\n )\n);\nSkeleton.displayName = \"Skeleton\";\n","import { cva } from \"class-variance-authority\";\n\nexport const skeletonVariants = cva(\n [\n \"bg-[var(--bloom-surface2)]\",\n \"animate-[bloom-breathe_3s_ease-in-out_infinite]\",\n ],\n {\n variants: {\n variant: {\n text: \"h-[16px] w-full rounded-[var(--bloom-radius-sm)]\",\n card: \"h-[200px] w-full rounded-[var(--bloom-radius-lg)]\",\n avatar: \"h-[40px] w-[40px] rounded-full\",\n custom: \"\",\n },\n },\n defaultVariants: {\n variant: \"text\",\n },\n }\n);\n\nexport type SkeletonVariants = Parameters<typeof skeletonVariants>[0];\n","import {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useRef,\n type ReactNode,\n} from \"react\";\n\ntype ColorMode = \"light\" | \"dark\" | \"system\";\n\nexport interface BloomPalette {\n name: string;\n light?: Record<string, string>;\n dark?: Record<string, string>;\n}\n\ninterface ThemeContextValue {\n colorMode: ColorMode;\n resolvedMode: \"light\" | \"dark\";\n setColorMode: (mode: ColorMode) => void;\n toggleColorMode: () => void;\n palette: string;\n setPalette: (name: string) => void;\n palettes: string[];\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used within <ThemeProvider>\");\n return ctx;\n}\n\nfunction getSystemPreference(): \"light\" | \"dark\" {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nfunction resolveMode(mode: ColorMode): \"light\" | \"dark\" {\n if (mode === \"system\") return getSystemPreference();\n return mode;\n}\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n defaultColorMode?: ColorMode;\n defaultPalette?: string;\n palettes?: BloomPalette[];\n storageKey?: string;\n}\n\nexport function ThemeProvider({\n children,\n defaultColorMode = \"system\",\n defaultPalette = \"bloom\",\n palettes = [],\n storageKey = \"bloom-theme\",\n}: ThemeProviderProps) {\n const paletteMap = useRef(\n new Map<string, BloomPalette>([\n [\"bloom\", { name: \"bloom\" }],\n ...palettes.map((p) => [p.name, p] as const),\n ])\n );\n\n const [colorMode, setColorModeState] = useState<ColorMode>(() => {\n if (typeof window === \"undefined\") return defaultColorMode;\n const stored = localStorage.getItem(`${storageKey}-mode`);\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") return stored;\n return defaultColorMode;\n });\n\n const [palette, setPaletteState] = useState<string>(() => {\n if (typeof window === \"undefined\") return defaultPalette;\n const stored = localStorage.getItem(`${storageKey}-palette`);\n if (stored && paletteMap.current.has(stored)) return stored;\n return defaultPalette;\n });\n\n const [resolvedMode, setResolvedMode] = useState<\"light\" | \"dark\">(() =>\n resolveMode(colorMode)\n );\n\n const setColorMode = useCallback(\n (mode: ColorMode) => {\n setColorModeState(mode);\n localStorage.setItem(`${storageKey}-mode`, mode);\n },\n [storageKey]\n );\n\n const setPalette = useCallback(\n (name: string) => {\n if (!paletteMap.current.has(name)) return;\n setPaletteState(name);\n localStorage.setItem(`${storageKey}-palette`, name);\n },\n [storageKey]\n );\n\n const toggleColorMode = useCallback(() => {\n setColorMode(resolvedMode === \"light\" ? \"dark\" : \"light\");\n }, [resolvedMode, setColorMode]);\n\n // Apply color mode class + palette vars\n useEffect(() => {\n const root = document.documentElement;\n const resolved = resolveMode(colorMode);\n setResolvedMode(resolved);\n\n // Set dark/light class\n root.classList.remove(\"light\", \"dark\");\n root.classList.add(resolved);\n\n // Collect all var keys from all palettes to clear\n const allKeys = new Set<string>();\n paletteMap.current.forEach((p) => {\n if (p.light) Object.keys(p.light).forEach((k) => allKeys.add(k));\n if (p.dark) Object.keys(p.dark).forEach((k) => allKeys.add(k));\n });\n allKeys.forEach((key) => root.style.removeProperty(key));\n\n // Apply current palette vars for resolved mode\n const currentPalette = paletteMap.current.get(palette);\n if (currentPalette) {\n const vars = resolved === \"dark\" ? currentPalette.dark : currentPalette.light;\n if (vars) {\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n }\n }\n }, [colorMode, palette]);\n\n // Listen for OS theme changes when in system mode\n useEffect(() => {\n if (colorMode !== \"system\") return;\n\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = () => {\n const resolved = resolveMode(\"system\");\n setResolvedMode(resolved);\n const root = document.documentElement;\n root.classList.remove(\"light\", \"dark\");\n root.classList.add(resolved);\n\n // Re-apply palette for new mode\n const allKeys = new Set<string>();\n paletteMap.current.forEach((p) => {\n if (p.light) Object.keys(p.light).forEach((k) => allKeys.add(k));\n if (p.dark) Object.keys(p.dark).forEach((k) => allKeys.add(k));\n });\n allKeys.forEach((key) => root.style.removeProperty(key));\n\n const currentPalette = paletteMap.current.get(palette);\n if (currentPalette) {\n const vars = resolved === \"dark\" ? currentPalette.dark : currentPalette.light;\n if (vars) {\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n }\n }\n };\n\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, [colorMode, palette]);\n\n const paletteNames = Array.from(paletteMap.current.keys());\n\n return (\n <ThemeContext.Provider\n value={{\n colorMode,\n resolvedMode,\n setColorMode,\n toggleColorMode,\n palette,\n setPalette,\n palettes: paletteNames,\n }}\n >\n {children}\n </ThemeContext.Provider>\n );\n}\n"],"mappings":";;;AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ACHO,IAAM,kBAA8B;AAAA,EACzC,UAAU;AAAA,EACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB;AAEO,IAAM,sBAAkC;AAAA,EAC7C,UAAU;AAAA,EACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB;AAEO,IAAM,sBAAkC;AAAA,EAC7C,UAAU;AAAA,EACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB;AAEO,IAAM,cAA0B;AAAA,EACrC,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AACX;AAEO,IAAM,YAAsB;AAAA,EACjC,SAAS,EAAE,GAAG,GAAG,OAAO,EAAE;AAAA,EAC1B,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE;AAAA,EACzB,KAAK,EAAE,GAAG,GAAG,OAAO,KAAK;AAC3B;AAEO,IAAM,gBAA0B;AAAA,EACrC,SAAS,EAAE,GAAG,EAAE;AAAA,EAChB,OAAO,EAAE,GAAG,GAAG;AACjB;AAEO,IAAM,SAAmB;AAAA,EAC9B,SAAS,EAAE,SAAS,EAAE;AAAA,EACtB,SAAS,EAAE,SAAS,EAAE;AAAA,EACtB,MAAM,EAAE,SAAS,EAAE;AACrB;AAEO,IAAM,UAAoB;AAAA,EAC/B,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,EAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,EAC5B,MAAM,EAAE,SAAS,GAAG,GAAG,GAAG;AAC5B;;;AC5CA,SAAS,UAAU,iBAAiB;AAE7B,SAAS,mBAA4B;AAC1C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,MAAM;AAC3C,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,UAAM,KAAK,OAAO,WAAW,kCAAkC;AAC/D,UAAM,WAAW,SAAS,gBAAgB,UAAU,SAAS,sBAAsB;AACnF,WAAO,GAAG,WAAW;AAAA,EACvB,CAAC;AAED,YAAU,MAAM;AACd,UAAM,KAAK,OAAO,WAAW,kCAAkC;AAE/D,UAAM,eAAe,MAAM;AACzB,YAAM,WAAW,SAAS,gBAAgB,UAAU,SAAS,sBAAsB;AACnF,iBAAW,GAAG,WAAW,QAAQ;AAAA,IACnC;AAEA,OAAG,iBAAiB,UAAU,YAAY;AAE1C,UAAM,WAAW,IAAI,iBAAiB,MAAM;AAC1C,YAAM,WAAW,SAAS,gBAAgB,UAAU,SAAS,sBAAsB;AACnF,iBAAW,GAAG,WAAW,QAAQ;AAAA,IACnC,CAAC;AACD,aAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,YAAY;AAAA,MACZ,iBAAiB,CAAC,OAAO;AAAA,IAC3B,CAAC;AAED,WAAO,MAAM;AACX,SAAG,oBAAoB,UAAU,YAAY;AAC7C,eAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ACpCA,SAAS,eAAe;AAejB,SAAS,aAAa,SAA+C;AAC1E,QAAM,EAAE,WAAW,GAAG,YAAY,gBAAgB,IAAI,WAAW,CAAC;AAElE,SAAO,QAAQ,MAAM;AACnB,UAAM,QAAQ,KAAK,OAAO,IAAI;AAC9B,WAAO;AAAA,MACL,eAAe;AAAA,MACf,mBAAmB,GAAG,QAAQ;AAAA,MAC9B,gBAAgB,GAAG,MAAM,QAAQ,CAAC,CAAC;AAAA,MACnC,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,UAAU,SAAS,CAAC;AAC1B;;;AC5BA,SAAS,kBAA6D;AACtE,SAAS,YAAY;;;ACDrB,SAAS,WAAW;AAEb,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;AD3CM;AAJC,IAAM,SAAS;AAAA,EACpB,CAAC,EAAE,WAAW,SAAS,UAAU,OAAO,UAAU,GAAG,MAAM,GAAG,QAAQ;AACpE,UAAM,OAAO,UAAU,OAAO;AAC9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,eAAe,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,QACpD;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AE1BrB,SAAS,cAAAA,mBAAuC;;;ACAhD,SAAS,OAAAC,YAAW;AAEb,IAAM,eAAeA;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;ADpBI,gBAAAC,YAAA;AAFG,IAAM,OAAOC;AAAA,EAClB,CAAC,EAAE,WAAW,SAAS,GAAG,MAAM,GAAG,QACjC,gBAAAD,KAAC,SAAI,KAAU,WAAW,GAAG,aAAa,EAAE,QAAQ,CAAC,GAAG,SAAS,GAAI,GAAG,OAAO;AAEnF;AACA,KAAK,cAAc;AAEZ,IAAM,aAAaC;AAAA,EACxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAD,KAAC,SAAI,KAAU,WAAW,GAAG,4BAA4B,SAAS,GAAI,GAAG,OAAO;AAEpF;AACA,WAAW,cAAc;AAElB,IAAM,YAAYC;AAAA,EACvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,UAAU,cAAc;AAEjB,IAAM,kBAAkBC;AAAA,EAC7B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,oGAAoG,SAAS;AAAA,MAC1H,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,gBAAgB,cAAc;AAEvB,IAAM,cAAcC;AAAA,EACzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAD,KAAC,SAAI,KAAU,WAAW,GAAG,uBAAuB,SAAS,GAAI,GAAG,OAAO;AAE/E;AACA,YAAY,cAAc;AAEnB,IAAM,aAAaC;AAAA,EACxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAD,KAAC,SAAI,KAAU,WAAW,GAAG,8CAA8C,SAAS,GAAI,GAAG,OAAO;AAEtG;AACA,WAAW,cAAc;;;AEzDzB,SAAS,cAAAE,mBAAyE;;;ACAlF,SAAS,OAAAC,YAAW;AAEb,IAAM,gBAAgBA,KAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ADLG,gBAAAC,YAAA;AAFG,IAAM,QAAQC;AAAA,EACnB,CAAC,EAAE,WAAW,OAAO,QAAQ,GAAG,MAAM,GAAG,QACvC,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,GAAG,cAAc,GAAG,YAAY,SAAS;AAAA,MACnD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,MAAM,cAAc;AAIb,IAAM,WAAWC;AAAA,EACtB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,cAAc,GAAG,0BAA0B,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,SAAS,cAAc;;;AE7BvB,SAAS,cAAAE,mBAAiD;AAC1D,YAAY,qBAAqB;AAS7B,SAgBI,OAAAC,MAhBJ;AAFG,IAAM,SAASC;AAAA,EACpB,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QAC/B,qBAAC,WAAM,WAAU,kDACf;AAAA,oBAAAD;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACC,SACC,gBAAAA,KAAC,UAAK,WAAU,uGACb,iBACH;AAAA,KAEJ;AAEJ;AACA,OAAO,cAAc;;;AC5CrB,SAAS,cAAAE,mBAAuC;;;ACAhD,SAAS,OAAAC,YAAW;AAEb,IAAM,gBAAgBA;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;ADLI,SAEI,OAAAC,MAFJ,QAAAC,aAAA;AAdJ,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AACR;AAOO,IAAM,QAAQC;AAAA,EACnB,CAAC,EAAE,WAAW,UAAU,QAAQ,MAAM,OAAO,UAAU,GAAG,MAAM,GAAG,QACjE,gBAAAD,MAAC,UAAK,KAAU,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS,GAAI,GAAG,OACvE;AAAA,WACC,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,kBAAe;AAAA,QACf,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,YAAY,WAAW,MAAM;AAAA,QAC/B;AAAA;AAAA,IACF;AAAA,IAED;AAAA,KACH;AAEJ;AACA,MAAM,cAAc;;;AEjCpB,SAAS,cAAAG,mBAAuD;;;ACAhE,SAAS,OAAAC,YAAW;AAEb,IAAM,gBAAgBA;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;;;ADrBI,SACE,OAAAC,MADF,QAAAC,aAAA;AAFJ,IAAM,eAA0C;AAAA,EAC9C,SACE,gBAAAA,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,IACtE,gBAAAA,KAAC,UAAK,GAAE,+BAA8B,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ,gBAAe,SAAQ;AAAA,KAC7H;AAAA,EAEF,OACE,gBAAAC,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,IACtE,gBAAAA,KAAC,UAAK,GAAE,wCAAuC,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,KAC/G;AAAA,EAEF,SACE,gBAAAC,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,KAAC,UAAK,GAAE,uBAAsB,QAAO,gBAAe,aAAY,OAAM,gBAAe,SAAQ;AAAA,IAC7F,gBAAAA,KAAC,UAAK,GAAE,cAAa,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,IACnF,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,QAAO,GAAE,QAAO,MAAK,gBAAe;AAAA,KACzD;AAAA,EAEF,MACE,gBAAAC,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,IACtE,gBAAAA,KAAC,UAAK,GAAE,YAAW,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,IACjF,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,OAAM,GAAE,QAAO,MAAK,gBAAe;AAAA,KACxD;AAEJ;AAEO,IAAM,QAAQE;AAAA,EACnB,CAAC,EAAE,WAAW,UAAU,QAAQ,UAAU,GAAG,MAAM,GAAG,QACpD,gBAAAD,MAAC,SAAI,KAAU,MAAK,SAAQ,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS,GAAI,GAAG,OACpF;AAAA,oBAAAD,KAAC,SAAI,WAAW,GAAG,kBAAkB,gBAAgB,WAAW,MAAM,CAAC,GACpE,uBAAa,WAAW,MAAM,GACjC;AAAA,IACA,gBAAAA,KAAC,SAAI,WAAU,kBACZ,UACH;AAAA,KACF;AAEJ;AACA,MAAM,cAAc;AAEb,IAAM,aAAaE;AAAA,EACxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,WAAW,cAAc;AAElB,IAAM,mBAAmBE;AAAA,EAC9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,oGAAoG,SAAS;AAAA,MAC1H,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,iBAAiB,cAAc;;;AExE/B,SAAS,cAAAG,aAAY,YAAAC,iBAAqC;;;ACA1D,SAAS,OAAAC,YAAW;AAEb,IAAM,iBAAiBA;AAAA,EAC5B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;ADLM,SACE,OAAAC,MADF,QAAAC,aAAA;AANC,IAAM,SAASC;AAAA,EACpB,CAAC,EAAE,WAAW,MAAM,UAAU,KAAK,KAAK,GAAG,MAAM,GAAG,QAAQ;AAC1D,UAAM,CAAC,UAAU,WAAW,IAAIC,UAAS,KAAK;AAC9C,UAAM,YAAY,OAAO,CAAC;AAE1B,WACE,gBAAAF,MAAC,SAAI,KAAU,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,SAAS,GAAI,GAAG,OACrE;AAAA,sBAAAD,KAAC,UAAK,eAAa,aAAa,QAAY,oBAAS;AAAA,MACpD,aACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,KAAK,OAAO,YAAY;AAAA,UACxB,SAAS,MAAM,YAAY,IAAI;AAAA,UAC/B,WAAU;AAAA;AAAA,MACZ;AAAA,OAEJ;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;AAId,IAAM,cAAcE;AAAA,EACzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QACxB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,YAAY,cAAc;;;AE3C1B,YAAY,sBAAsB;AAc9B,SACE,OAAAI,MADF,QAAAC,aAAA;AAXG,IAAM,kBAAmC;AASzC,SAAS,QAAQ,EAAE,SAAS,UAAU,OAAO,OAAO,UAAU,GAAiB;AACpF,SACE,gBAAAA,MAAkB,uBAAjB,EACC;AAAA,oBAAAD,KAAkB,0BAAjB,EAAyB,SAAO,MAAE,UAAS;AAAA,IAC5C,gBAAAA,KAAkB,yBAAjB,EACC,0BAAAA;AAAA,MAAkB;AAAA,MAAjB;AAAA,QACC;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH,GACF;AAAA,KACF;AAEJ;;;ACtCA,SAAS,cAAAE,mBAAuC;;;ACAhD,SAAS,OAAAC,YAAW;AAEb,IAAM,wBAAwBA,KAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,uBAAuBA,KAAI;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ADOO,gBAAAC,MAiCA,QAAAC,aAjCA;AAbD,IAAM,WAAWC;AAAA,EACtB,CAAC,EAAE,WAAW,QAAQ,GAAG,GAAG,MAAM,GAAG,QAAQ;AAC3C,UAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;AACrD,WACE,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,WAAW,GAAG,sBAAsB,GAAG,SAAS;AAAA,QAC/C,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,qBAAqB;AAAA,YAChC,OAAO,EAAE,OAAO,GAAG,YAAY,IAAI;AAAA;AAAA,QACrC;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;AAQhB,IAAM,mBAAmBE;AAAA,EAC9B,CAAC,EAAE,WAAW,QAAQ,GAAG,OAAO,IAAI,cAAc,GAAG,GAAG,MAAM,GAAG,QAAQ;AACvE,UAAM,eAAe,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;AACrD,UAAM,UAAU,OAAO,eAAe;AACtC,UAAM,gBAAgB,IAAI,KAAK,KAAK;AACpC,UAAM,SAAS,gBAAiB,eAAe,MAAO;AAEtD,WACE,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,WAAW,GAAG,eAAe,SAAS;AAAA,QACrC,GAAG;AAAA,QAEJ,0BAAAC,MAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAS,OAAO,IAAI,IAAI,IAAI,IAC1D;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,IAAI,OAAO;AAAA,cACX,IAAI,OAAO;AAAA,cACX,GAAG;AAAA,cACH,MAAK;AAAA,cACL,QAAO;AAAA,cACP;AAAA;AAAA,UACF;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,IAAI,OAAO;AAAA,cACX,IAAI,OAAO;AAAA,cACX,GAAG;AAAA,cACH,MAAK;AAAA,cACL,QAAO;AAAA,cACP;AAAA,cACA,eAAc;AAAA,cACd,iBAAiB;AAAA,cACjB,kBAAkB;AAAA,cAClB,WAAW,cAAc,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,cAC7C,OAAO;AAAA,gBACL,YAAY;AAAA,cACd;AAAA;AAAA,UACF;AAAA,WACF;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,iBAAiB,cAAc;;;AEnF/B,SAAS,cAAAG,mBAAiD;AAC1D,YAAY,qBAAqB;AAO7B,SAiBI,OAAAC,OAjBJ,QAAAC,aAAA;AAFG,IAAM,SAASC;AAAA,EACpB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QAClC,gBAAAD;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEA,0BAAAA;AAAA,cAAiB;AAAA,cAAhB;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,iBAAe,WAAW,OAAO;AAAA,YACjC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AACA,OAAO,cAAc;;;AC/CrB,YAAY,qBAAqB;AAgBzB,gBAAAG,OAOA,QAAAC,aAPA;AAJD,SAAS,MAAM,EAAE,MAAM,cAAc,OAAO,aAAa,UAAU,UAAU,GAAe;AACjG,SACE,gBAAAD,MAAiB,sBAAhB,EAAqB,MAAY,cAChC,0BAAAC,MAAiB,wBAAhB,EACC;AAAA,oBAAAD;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,gBAAAC;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA,mBACC,gBAAAD;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UAED,eACC,gBAAAA;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UAED;AAAA,UACD,gBAAAA;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,cAAW;AAAA,cAEX,0BAAAA,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD,0BAAAA,MAAC,UAAK,GAAE,sBAAqB,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,GAC3F;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;;;ACxEA,YAAY,2BAA2B;AAWnC,SACE,OAAAE,OADF,QAAAC,aAAA;AAFG,SAAS,SAAS,EAAE,SAAS,UAAU,UAAU,GAAkB;AACxE,SACE,gBAAAA,MAAuB,4BAAtB,EACC;AAAA,oBAAAD,MAAuB,+BAAtB,EAA8B,SAAO,MAAE,mBAAQ;AAAA,IAChD,gBAAAA,MAAuB,8BAAtB,EACC,0BAAAA;AAAA,MAAuB;AAAA,MAAtB;AAAA,QACC,YAAY;AAAA,QACZ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH,GACF;AAAA,KACF;AAEJ;AAIO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAsB;AACvE,SACE,gBAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAIO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAA2B;AACjF,SACE,gBAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC,WAAW,GAAG,wDAAwD,SAAS;AAAA,MAC9E,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACjEA,SAAS,cAAAE,oBAAiD;AAC1D,YAAY,mBAAmB;;;ACD/B,SAAS,OAAAC,YAAW;AAEb,IAAM,mBAAmBA;AAAA,EAC9B;AAAA,IACE;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;ADTI,gBAAAC,aAAA;AAPG,IAAM,OAAqB;AAK3B,IAAM,WAAWC;AAAA,EACtB,CAAC,EAAE,WAAW,SAAS,GAAG,MAAM,GAAG,QACjC,gBAAAD;AAAA,IAAe;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACrD,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,SAAS,cAAc;AAEhB,IAAM,cAAcC,aAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAe;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAAc;AAEnB,IAAM,cAAcC,aAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAD;AAAA,EAAe;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAAc;;;AE5D1B,SAAS,YAAAE,WAAU,WAAAC,gBAAe;AAClC,YAAY,aAAa;AA0Ef,SACE,OAAAC,OADF,QAAAC,cAAA;AAhEV,SAAS,eAAe,MAAc,OAAuB;AAC3D,SAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAC9C;AAEA,SAAS,mBAAmB,MAAc,OAAuB;AAC/D,SAAO,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,OAAO;AACzC;AAEA,IAAM,cAAc;AAAA,EAClB;AAAA,EAAW;AAAA,EAAY;AAAA,EAAS;AAAA,EAAS;AAAA,EAAO;AAAA,EAChD;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAa;AAAA,EAAW;AAAA,EAAY;AACxD;AAEA,IAAM,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAEpD,SAAS,WAAW,EAAE,OAAO,UAAU,cAAc,eAAe,UAAU,GAAoB;AACvG,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AACtC,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,MAAM,SAAS,oBAAI,KAAK,CAAC;AAClE,QAAM,WAAW,SAAS,YAAY;AACtC,QAAM,YAAY,SAAS,SAAS;AAEpC,QAAM,OAAOC,SAAQ,MAAM;AACzB,UAAM,cAAc,eAAe,UAAU,SAAS;AACtD,UAAM,WAAW,mBAAmB,UAAU,SAAS;AACvD,UAAM,QAA8B,CAAC;AACrC,aAAS,IAAI,GAAG,IAAI,UAAU,IAAK,OAAM,KAAK,IAAI;AAClD,aAAS,IAAI,GAAG,KAAK,aAAa,IAAK,OAAM,KAAK,CAAC;AACnD,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,SAAS,CAAC;AAExB,QAAM,aAAa,CAAC,QAAgB;AAClC,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,YAAY,MAAM,YAAY,MAAM,SAAS,MAAM,aAAa,MAAM,QAAQ,MAAM;AAAA,EACnG;AAEA,QAAM,YAAY,MAAM,YAAY,IAAI,KAAK,UAAU,YAAY,GAAG,CAAC,CAAC;AACxE,QAAM,YAAY,MAAM,YAAY,IAAI,KAAK,UAAU,YAAY,GAAG,CAAC,CAAC;AAExE,QAAM,YAAY,CAAC,QAAgB;AACjC,UAAM,WAAW,IAAI,KAAK,UAAU,WAAW,GAAG;AAClD,eAAW,QAAQ;AACnB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,iBAAiB,QACnB,MAAM,mBAAmB,SAAS,EAAE,OAAO,SAAS,KAAK,WAAW,MAAM,UAAU,CAAC,IACrF;AAEJ,SACE,gBAAAF,OAAS,cAAR,EAAa,MAAY,cAAc,SACtC;AAAA,oBAAAD,MAAS,iBAAR,EAAgB,SAAO,MACtB,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,CAAC,kBAAkB;AAAA,UACnB;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAA,OAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,4BAAAD,MAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,YACxF,gBAAAA,MAAC,UAAK,GAAE,WAAU,QAAO,gBAAe,aAAY,OAAM;AAAA,YAC1D,gBAAAA,MAAC,UAAK,GAAE,iBAAgB,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,aACxF;AAAA,UACC,kBAAkB;AAAA;AAAA;AAAA,IACrB,GACF;AAAA,IACA,gBAAAA,MAAS,gBAAR,EACC,0BAAAC;AAAA,MAAS;AAAA,MAAR;AAAA,QACC,YAAY;AAAA,QACZ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,0BAAAA,OAAC,SAAI,WAAU,0DACb;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS;AAAA,gBACT,WAAU;AAAA,gBACV,cAAW;AAAA,gBAEX,0BAAAA,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD,0BAAAA,MAAC,UAAK,GAAE,kBAAiB,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ,gBAAe,SAAQ,GAChH;AAAA;AAAA,YACF;AAAA,YACA,gBAAAC,OAAC,UAAK,WAAU,2HACb;AAAA,0BAAY,SAAS;AAAA,cAAE;AAAA,cAAE;AAAA,eAC5B;AAAA,YACA,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS;AAAA,gBACT,WAAU;AAAA,gBACV,cAAW;AAAA,gBAEX,0BAAAA,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD,0BAAAA,MAAC,UAAK,GAAE,gBAAe,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ,gBAAe,SAAQ,GAC9G;AAAA;AAAA,YACF;AAAA,aACF;AAAA,UAEA,gBAAAA,MAAC,SAAI,WAAU,mDACZ,oBAAU,IAAI,CAAC,MACd,gBAAAA,MAAC,SAAY,WAAU,0HACpB,eADO,CAEV,CACD,GACH;AAAA,UAEA,gBAAAA,MAAC,SAAI,WAAU,8BACZ,eAAK;AAAA,YAAI,CAAC,KAAK,MACd,QAAQ,OACN,gBAAAA,MAAC,WAAS,SAAS,CAAC,EAAI,IAExB,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBAEC,SAAS,MAAM,UAAU,GAAG;AAAA,gBAC5B,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,WAAW,GAAG,IACV,+CACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,cAbI;AAAA,YAcP;AAAA,UAEJ,GACF;AAAA;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;;;AC5JA;AAAA,EACE;AAAA,EACA;AAAA,EACA,YAAAI;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,OAEK;;;ACPP,SAAS,OAAAC,YAAW;AAEb,IAAM,gBAAgBA;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAIO,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;;;ADUI,SAIM,OAAAC,OAJN,QAAAC,cAAA;AAvBJ,IAAM,eAAe,cAAwC,IAAI;AAE1D,SAAS,WAA8B;AAC5C,QAAM,MAAM,WAAW,YAAY;AACnC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8CAA8C;AACxE,SAAO;AACT;AAEA,IAAI,UAAU;AAEP,SAAS,cAAc,EAAE,SAAS,GAA4B;AACnE,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAsB,CAAC,CAAC;AAEpD,QAAM,QAAQ,YAAY,CAAC,SAAgC;AACzD,UAAM,KAAK,OAAO,EAAE,OAAO;AAC3B,cAAU,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;AAAA,EAChD,GAAG,CAAC,CAAC;AAEL,QAAM,UAAU,YAAY,CAAC,OAAe;AAC1C,cAAU,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAAA,EACrD,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAD,OAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,MAAM,GACnC;AAAA;AAAA,IACD,gBAAAD,MAAC,SAAI,WAAU,4GACZ,iBAAO,IAAI,CAAC,MACX,gBAAAA,MAAC,aAAqB,OAAO,GAAG,WAAW,WAA3B,EAAE,EAAkC,CACrD,GACH;AAAA,KACF;AAEJ;AAEA,IAAMG,gBAA0C;AAAA,EAC9C,SACE,gBAAAF,OAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,MAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,IACtE,gBAAAA,MAAC,UAAK,GAAE,+BAA8B,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ,gBAAe,SAAQ;AAAA,KAC7H;AAAA,EAEF,OACE,gBAAAC,OAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,MAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,IACtE,gBAAAA,MAAC,UAAK,GAAE,wCAAuC,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,KAC/G;AAAA,EAEF,SACE,gBAAAC,OAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,MAAC,UAAK,GAAE,uBAAsB,QAAO,gBAAe,aAAY,OAAM,gBAAe,SAAQ;AAAA,IAC7F,gBAAAA,MAAC,UAAK,GAAE,cAAa,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,IACnF,gBAAAA,MAAC,YAAO,IAAG,MAAK,IAAG,QAAO,GAAE,QAAO,MAAK,gBAAe;AAAA,KACzD;AAAA,EAEF,MACE,gBAAAC,OAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD;AAAA,oBAAAD,MAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM;AAAA,IACtE,gBAAAA,MAAC,UAAK,GAAE,YAAW,QAAO,gBAAe,aAAY,OAAM,eAAc,SAAQ;AAAA,IACjF,gBAAAA,MAAC,YAAO,IAAG,MAAK,IAAG,OAAM,GAAE,QAAO,MAAK,gBAAe;AAAA,KACxD;AAEJ;AAEA,SAAS,UAAU,EAAE,OAAO,GAAG,UAAU,GAA0D;AACjG,QAAM,WAAW,EAAE,YAAY;AAC/B,QAAM,UAAU,EAAE,WAAW;AAE7B,EAAAI,WAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,UAAU,EAAE,EAAE,GAAG,QAAQ;AACxD,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,EAAE,IAAI,UAAU,SAAS,CAAC;AAE9B,SACE,gBAAAH,OAAC,SAAI,WAAW,GAAG,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,GACtD;AAAA,oBAAAD,MAAC,SAAI,WAAW,GAAG,qBAAqB,gBAAgB,OAAO,CAAC,GAC7D,UAAAG,cAAa,OAAO,GACvB;AAAA,IACA,gBAAAF,OAAC,SAAI,WAAU,kBACb;AAAA,sBAAAD,MAAC,OAAE,WAAU,8EACV,YAAE,OACL;AAAA,MACC,EAAE,eACD,gBAAAA,MAAC,OAAE,WAAU,oGACV,YAAE,aACL;AAAA,OAEJ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM,UAAU,EAAE,EAAE;AAAA,QAC7B,WAAU;AAAA,QACV,cAAW;AAAA,QAEX,0BAAAA,MAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QACnD,0BAAAA,MAAC,UAAK,GAAE,sBAAqB,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,GAC3F;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;AEzHA,SAAS,cAAAK,oBAAuC;;;ACAhD,SAAS,OAAAC,aAAW;AAEb,IAAM,mBAAmBA;AAAA,EAC9B;AAAA,IACE;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;ADZI,gBAAAC,aAAA;AAFG,IAAM,WAAWC;AAAA,EACtB,CAAC,EAAE,WAAW,SAAS,GAAG,MAAM,GAAG,QACjC,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACtD,eAAY;AAAA,MACX,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,SAAS,cAAc;;;AEhBvB;AAAA,EACE,iBAAAE;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,OAEK;AAuKH,gBAAAC,aAAA;AAnJJ,IAAM,eAAeL,eAAwC,IAAI;AAE1D,SAAS,WAA8B;AAC5C,QAAM,MAAMC,YAAW,YAAY;AACnC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8CAA8C;AACxE,SAAO;AACT;AAEA,SAAS,sBAAwC;AAC/C,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,OAAO,WAAW,8BAA8B,EAAE,UAAU,SAAS;AAC9E;AAEA,SAAS,YAAY,MAAmC;AACtD,MAAI,SAAS,SAAU,QAAO,oBAAoB;AAClD,SAAO;AACT;AAUO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,WAAW,CAAC;AAAA,EACZ,aAAa;AACf,GAAuB;AACrB,QAAM,aAAa;AAAA,IACjB,IAAI,IAA0B;AAAA,MAC5B,CAAC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,MAC3B,GAAG,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAU;AAAA,IAC7C,CAAC;AAAA,EACH;AAEA,QAAM,CAAC,WAAW,iBAAiB,IAAIC,UAAoB,MAAM;AAC/D,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,UAAM,SAAS,aAAa,QAAQ,GAAG,UAAU,OAAO;AACxD,QAAI,WAAW,WAAW,WAAW,UAAU,WAAW,SAAU,QAAO;AAC3E,WAAO;AAAA,EACT,CAAC;AAED,QAAM,CAAC,SAAS,eAAe,IAAIA,UAAiB,MAAM;AACxD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,UAAM,SAAS,aAAa,QAAQ,GAAG,UAAU,UAAU;AAC3D,QAAI,UAAU,WAAW,QAAQ,IAAI,MAAM,EAAG,QAAO;AACrD,WAAO;AAAA,EACT,CAAC;AAED,QAAM,CAAC,cAAc,eAAe,IAAIA;AAAA,IAA2B,MACjE,YAAY,SAAS;AAAA,EACvB;AAEA,QAAM,eAAeE;AAAA,IACnB,CAAC,SAAoB;AACnB,wBAAkB,IAAI;AACtB,mBAAa,QAAQ,GAAG,UAAU,SAAS,IAAI;AAAA,IACjD;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,aAAaA;AAAA,IACjB,CAAC,SAAiB;AAChB,UAAI,CAAC,WAAW,QAAQ,IAAI,IAAI,EAAG;AACnC,sBAAgB,IAAI;AACpB,mBAAa,QAAQ,GAAG,UAAU,YAAY,IAAI;AAAA,IACpD;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,kBAAkBA,aAAY,MAAM;AACxC,iBAAa,iBAAiB,UAAU,SAAS,OAAO;AAAA,EAC1D,GAAG,CAAC,cAAc,YAAY,CAAC;AAG/B,EAAAD,WAAU,MAAM;AACd,UAAM,OAAO,SAAS;AACtB,UAAM,WAAW,YAAY,SAAS;AACtC,oBAAgB,QAAQ;AAGxB,SAAK,UAAU,OAAO,SAAS,MAAM;AACrC,SAAK,UAAU,IAAI,QAAQ;AAG3B,UAAM,UAAU,oBAAI,IAAY;AAChC,eAAW,QAAQ,QAAQ,CAAC,MAAM;AAChC,UAAI,EAAE,MAAO,QAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC;AAC/D,UAAI,EAAE,KAAM,QAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC;AAAA,IAC/D,CAAC;AACD,YAAQ,QAAQ,CAAC,QAAQ,KAAK,MAAM,eAAe,GAAG,CAAC;AAGvD,UAAM,iBAAiB,WAAW,QAAQ,IAAI,OAAO;AACrD,QAAI,gBAAgB;AAClB,YAAM,OAAO,aAAa,SAAS,eAAe,OAAO,eAAe;AACxE,UAAI,MAAM;AACR,eAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC7C,eAAK,MAAM,YAAY,KAAK,KAAK;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,CAAC;AAGvB,EAAAA,WAAU,MAAM;AACd,QAAI,cAAc,SAAU;AAE5B,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,UAAU,MAAM;AACpB,YAAM,WAAW,YAAY,QAAQ;AACrC,sBAAgB,QAAQ;AACxB,YAAM,OAAO,SAAS;AACtB,WAAK,UAAU,OAAO,SAAS,MAAM;AACrC,WAAK,UAAU,IAAI,QAAQ;AAG3B,YAAM,UAAU,oBAAI,IAAY;AAChC,iBAAW,QAAQ,QAAQ,CAAC,MAAM;AAChC,YAAI,EAAE,MAAO,QAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC;AAC/D,YAAI,EAAE,KAAM,QAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,QAAQ,IAAI,CAAC,CAAC;AAAA,MAC/D,CAAC;AACD,cAAQ,QAAQ,CAAC,QAAQ,KAAK,MAAM,eAAe,GAAG,CAAC;AAEvD,YAAM,iBAAiB,WAAW,QAAQ,IAAI,OAAO;AACrD,UAAI,gBAAgB;AAClB,cAAM,OAAO,aAAa,SAAS,eAAe,OAAO,eAAe;AACxE,YAAI,MAAM;AACR,iBAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC7C,iBAAK,MAAM,YAAY,KAAK,KAAK;AAAA,UACnC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,OAAG,iBAAiB,UAAU,OAAO;AACrC,WAAO,MAAM,GAAG,oBAAoB,UAAU,OAAO;AAAA,EACvD,GAAG,CAAC,WAAW,OAAO,CAAC;AAEvB,QAAM,eAAe,MAAM,KAAK,WAAW,QAAQ,KAAK,CAAC;AAEzD,SACE,gBAAAE;AAAA,IAAC,aAAa;AAAA,IAAb;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["forwardRef","cva","jsx","forwardRef","forwardRef","cva","jsx","forwardRef","forwardRef","jsx","forwardRef","forwardRef","cva","jsx","jsxs","forwardRef","forwardRef","cva","jsx","jsxs","forwardRef","forwardRef","useState","cva","jsx","jsxs","forwardRef","useState","jsx","jsxs","forwardRef","cva","jsx","jsxs","forwardRef","forwardRef","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsxs","forwardRef","cva","jsx","forwardRef","useState","useMemo","jsx","jsxs","useState","useMemo","useState","useEffect","cva","jsx","jsxs","useState","variantIcons","useEffect","forwardRef","cva","jsx","forwardRef","createContext","useContext","useState","useEffect","useCallback","jsx"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloomkit/react",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "An ambient, organic UI component library. Components that breathe.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",