@devfellowship/components 0.2.0 → 1.1.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
@@ -3,27 +3,46 @@ import { ReactNode } from 'react';
3
3
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
4
4
  import * as class_variance_authority_types from 'class-variance-authority/types';
5
5
  import { VariantProps } from 'class-variance-authority';
6
- import * as AvatarPrimitive from '@radix-ui/react-avatar';
7
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
7
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
8
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
9
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
10
+ import { DayPicker } from 'react-day-picker';
11
+ import useEmblaCarousel, { UseEmblaCarouselType } from 'embla-carousel-react';
12
+ import * as RechartsPrimitive from 'recharts';
8
13
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
14
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
15
+ import { Command as Command$1 } from 'cmdk';
9
16
  import * as DialogPrimitive from '@radix-ui/react-dialog';
17
+ import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
18
+ import { Drawer as Drawer$1 } from 'vaul';
10
19
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
11
20
  import * as _radix_ui_react_slot from '@radix-ui/react-slot';
12
21
  import * as react_hook_form from 'react-hook-form';
13
22
  import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
14
23
  import * as LabelPrimitive from '@radix-ui/react-label';
24
+ import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
25
+ import { OTPInput } from 'input-otp';
26
+ import * as MenubarPrimitive from '@radix-ui/react-menubar';
27
+ import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
15
28
  import * as PopoverPrimitive from '@radix-ui/react-popover';
16
29
  import * as ProgressPrimitive from '@radix-ui/react-progress';
17
30
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
31
+ import * as ResizablePrimitive from 'react-resizable-panels';
18
32
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
19
33
  import * as SelectPrimitive from '@radix-ui/react-select';
20
34
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
21
35
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
36
+ import * as SliderPrimitive from '@radix-ui/react-slider';
37
+ import { ToasterProps } from 'sonner';
22
38
  import * as SwitchPrimitives from '@radix-ui/react-switch';
23
39
  import * as TabsPrimitive from '@radix-ui/react-tabs';
40
+ import * as ToastPrimitives from '@radix-ui/react-toast';
41
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
42
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
24
43
  import { LucideIcon } from 'lucide-react';
25
44
  export { c as cn } from './utils-Cbsgs0XP.js';
26
- export { ToastProps, ToastVariant, toast, useIsMobile, useToast } from './hooks.js';
45
+ export { ToastProps, ToastVariant, toast, useIframeAuth, useIframeNavigate, useIsMobile, useToast } from './hooks.js';
27
46
  export { A as AuthContextType, a as AuthProvider, b as AuthProviderProps, U as UserProfile, u as useAuth, c as useSession } from './use-auth-DdapDv2H.js';
28
47
  export { FeatureFlagProvider, FeatureFlagProviderProps, FeatureFlags, useFeatureFlag, useFeatureFlags } from './providers.js';
29
48
  import 'clsx';
@@ -40,6 +59,26 @@ declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HT
40
59
  declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
41
60
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
42
61
 
62
+ declare const AlertDialog: React$1.FC<AlertDialogPrimitive.AlertDialogProps>;
63
+ declare const AlertDialogTrigger: React$1.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
64
+ declare const AlertDialogPortal: React$1.FC<AlertDialogPrimitive.AlertDialogPortalProps>;
65
+ declare const AlertDialogOverlay: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
66
+ declare const AlertDialogContent: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
67
+ declare const AlertDialogHeader: {
68
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
69
+ displayName: string;
70
+ };
71
+ declare const AlertDialogFooter: {
72
+ ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
73
+ displayName: string;
74
+ };
75
+ declare const AlertDialogTitle: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
76
+ declare const AlertDialogDescription: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
77
+ declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
78
+ declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
79
+
80
+ declare function AspectRatio({ ...props }: React$1.ComponentProps<typeof AspectRatioPrimitive.Root>): react_jsx_runtime.JSX.Element;
81
+
43
82
  declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
44
83
  declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
45
84
  declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
@@ -69,15 +108,39 @@ declare const BreadcrumbEllipsis: {
69
108
  displayName: string;
70
109
  };
71
110
 
111
+ /**
112
+ * Button — DFL Design System v0
113
+ *
114
+ * Tokens consumed:
115
+ * --c-button-radius, --c-button-font-weight
116
+ * --c-button-{primary,secondary,ghost,destructive,success}-{bg,fg,border,bg-hover,border-hover,bg-active}
117
+ * --s-brand-ring (focus ring)
118
+ *
119
+ * Variants: primary (default), secondary, outline, ghost, destructive, success, link
120
+ * Sizes: sm (28px), default (34px — DS v0 spec), lg (40px), icon (square 34)
121
+ *
122
+ * Additive props (v1.0.0):
123
+ * loading — disables button + shows spinner + keeps width
124
+ * kbd — renders <kbd> hint at the right (e.g. ⌘K)
125
+ * asChild — render as a child Slot (Radix pattern, kept from shadcn)
126
+ */
72
127
  declare const buttonVariants: (props?: ({
73
- variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
74
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
128
+ variant?: "link" | "default" | "destructive" | "primary" | "secondary" | "outline" | "ghost" | "success" | null | undefined;
129
+ size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
75
130
  } & class_variance_authority_types.ClassProp) | undefined) => string;
76
131
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
77
132
  asChild?: boolean;
133
+ loading?: boolean;
134
+ kbd?: React$1.ReactNode;
78
135
  }
79
136
  declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
80
137
 
138
+ type CalendarProps = React$1.ComponentProps<typeof DayPicker>;
139
+ declare function Calendar({ className, classNames, showOutsideDays, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
140
+ declare namespace Calendar {
141
+ var displayName: string;
142
+ }
143
+
81
144
  declare const Card: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
82
145
  declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
83
146
  declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
@@ -85,8 +148,66 @@ declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAtt
85
148
  declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
86
149
  declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
87
150
 
151
+ type CarouselApi = UseEmblaCarouselType[1];
152
+ type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
153
+ type CarouselOptions = UseCarouselParameters[0];
154
+ type CarouselPlugin = UseCarouselParameters[1];
155
+ type CarouselProps = {
156
+ opts?: CarouselOptions;
157
+ plugins?: CarouselPlugin;
158
+ orientation?: "horizontal" | "vertical";
159
+ setApi?: (api: CarouselApi) => void;
160
+ };
161
+ declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: React$1.ComponentProps<"div"> & CarouselProps): react_jsx_runtime.JSX.Element;
162
+ declare function CarouselContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
163
+ declare function CarouselItem({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
164
+ declare function CarouselPrevious({ className, variant, size, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
165
+ declare function CarouselNext({ className, variant, size, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
166
+
167
+ declare const THEMES: {
168
+ readonly light: "";
169
+ readonly dark: ".dark";
170
+ };
171
+ type ChartConfig = {
172
+ [k in string]: {
173
+ label?: React$1.ReactNode;
174
+ icon?: React$1.ComponentType;
175
+ } & ({
176
+ color?: string;
177
+ theme?: never;
178
+ } | {
179
+ color?: never;
180
+ theme: Record<keyof typeof THEMES, string>;
181
+ });
182
+ };
183
+ declare function ChartContainer({ id, className, children, config, ...props }: React$1.ComponentProps<"div"> & {
184
+ config: ChartConfig;
185
+ children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
186
+ }): react_jsx_runtime.JSX.Element;
187
+ declare const ChartStyle: ({ id, config }: {
188
+ id: string;
189
+ config: ChartConfig;
190
+ }) => react_jsx_runtime.JSX.Element | null;
191
+ declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
192
+ declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React$1.ComponentProps<typeof RechartsPrimitive.Tooltip> & React$1.ComponentProps<"div"> & {
193
+ hideLabel?: boolean;
194
+ hideIndicator?: boolean;
195
+ indicator?: "line" | "dot" | "dashed";
196
+ nameKey?: string;
197
+ labelKey?: string;
198
+ }): react_jsx_runtime.JSX.Element | null;
199
+ declare const ChartLegend: typeof RechartsPrimitive.Legend;
200
+ declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React$1.ComponentProps<"div"> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
201
+ hideIcon?: boolean;
202
+ nameKey?: string;
203
+ }): react_jsx_runtime.JSX.Element | null;
204
+
88
205
  declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
89
206
 
207
+ declare function Collapsible({ ...props }: React$1.ComponentProps<typeof CollapsiblePrimitive.Root>): react_jsx_runtime.JSX.Element;
208
+ declare function CollapsibleTrigger({ ...props }: React$1.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>): react_jsx_runtime.JSX.Element;
209
+ declare function CollapsibleContent({ ...props }: React$1.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>): react_jsx_runtime.JSX.Element;
210
+
90
211
  declare const Dialog: React$1.FC<DialogPrimitive.DialogProps>;
91
212
  declare const DialogTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
92
213
  declare const DialogPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
@@ -104,6 +225,53 @@ declare const DialogFooter: {
104
225
  declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
105
226
  declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
106
227
 
228
+ declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
229
+ declare function CommandDialog({ title, description, children, ...props }: React$1.ComponentProps<typeof Dialog> & {
230
+ title?: string;
231
+ description?: string;
232
+ }): react_jsx_runtime.JSX.Element;
233
+ declare function CommandInput({ className, ...props }: React$1.ComponentProps<typeof Command$1.Input>): react_jsx_runtime.JSX.Element;
234
+ declare function CommandList({ className, ...props }: React$1.ComponentProps<typeof Command$1.List>): react_jsx_runtime.JSX.Element;
235
+ declare function CommandEmpty({ ...props }: React$1.ComponentProps<typeof Command$1.Empty>): react_jsx_runtime.JSX.Element;
236
+ declare function CommandGroup({ className, ...props }: React$1.ComponentProps<typeof Command$1.Group>): react_jsx_runtime.JSX.Element;
237
+ declare function CommandSeparator({ className, ...props }: React$1.ComponentProps<typeof Command$1.Separator>): react_jsx_runtime.JSX.Element;
238
+ declare function CommandItem({ className, ...props }: React$1.ComponentProps<typeof Command$1.Item>): react_jsx_runtime.JSX.Element;
239
+ declare function CommandShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
240
+
241
+ declare function ContextMenu({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Root>): react_jsx_runtime.JSX.Element;
242
+ declare function ContextMenuTrigger({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
243
+ declare function ContextMenuGroup({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Group>): react_jsx_runtime.JSX.Element;
244
+ declare function ContextMenuPortal({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Portal>): react_jsx_runtime.JSX.Element;
245
+ declare function ContextMenuSub({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Sub>): react_jsx_runtime.JSX.Element;
246
+ declare function ContextMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>): react_jsx_runtime.JSX.Element;
247
+ declare function ContextMenuSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
248
+ inset?: boolean;
249
+ }): react_jsx_runtime.JSX.Element;
250
+ declare function ContextMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.SubContent>): react_jsx_runtime.JSX.Element;
251
+ declare function ContextMenuContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Content>): react_jsx_runtime.JSX.Element;
252
+ declare function ContextMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Item> & {
253
+ inset?: boolean;
254
+ variant?: "default" | "destructive";
255
+ }): react_jsx_runtime.JSX.Element;
256
+ declare function ContextMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>): react_jsx_runtime.JSX.Element;
257
+ declare function ContextMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.RadioItem>): react_jsx_runtime.JSX.Element;
258
+ declare function ContextMenuLabel({ className, inset, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Label> & {
259
+ inset?: boolean;
260
+ }): react_jsx_runtime.JSX.Element;
261
+ declare function ContextMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Separator>): react_jsx_runtime.JSX.Element;
262
+ declare function ContextMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
263
+
264
+ declare function Drawer({ ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
265
+ declare function DrawerTrigger({ ...props }: React$1.ComponentProps<typeof Drawer$1.Trigger>): react_jsx_runtime.JSX.Element;
266
+ declare function DrawerPortal({ ...props }: React$1.ComponentProps<typeof Drawer$1.Portal>): react_jsx_runtime.JSX.Element;
267
+ declare function DrawerClose({ ...props }: React$1.ComponentProps<typeof Drawer$1.Close>): react_jsx_runtime.JSX.Element;
268
+ declare function DrawerOverlay({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Overlay>): react_jsx_runtime.JSX.Element;
269
+ declare function DrawerContent({ className, children, ...props }: React$1.ComponentProps<typeof Drawer$1.Content>): react_jsx_runtime.JSX.Element;
270
+ declare function DrawerHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
271
+ declare function DrawerFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
272
+ declare function DrawerTitle({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime.JSX.Element;
273
+ declare function DrawerDescription({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime.JSX.Element;
274
+
107
275
  declare const DropdownMenu: React$1.FC<DropdownMenuPrimitive.DropdownMenuProps>;
108
276
  declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
109
277
  declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -149,9 +317,137 @@ declare const FormControl: React$1.ForwardRefExoticComponent<Omit<_radix_ui_reac
149
317
  declare const FormDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
150
318
  declare const FormMessage: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
151
319
 
320
+ declare function HoverCard({ ...props }: React$1.ComponentProps<typeof HoverCardPrimitive.Root>): react_jsx_runtime.JSX.Element;
321
+ declare function HoverCardTrigger({ ...props }: React$1.ComponentProps<typeof HoverCardPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
322
+ declare function HoverCardContent({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof HoverCardPrimitive.Content>): react_jsx_runtime.JSX.Element;
323
+
324
+ /**
325
+ * IconButton — DFL Design System v0 (NEW in v1.0.0).
326
+ *
327
+ * Square, icon-only. 4 sizes × 4 variants. Ghost-by-default. When
328
+ * `aria-pressed` is set, paints with --s-brand-subtle background and
329
+ * --s-brand-fg text — Toolbar's "active" state.
330
+ *
331
+ * Sizes: xs (20×20), sm (28×28), default (34×34), lg (40×40).
332
+ *
333
+ * Always accepts a single icon as child:
334
+ * <IconButton aria-label="Search"><SearchIcon /></IconButton>
335
+ *
336
+ * Tokens consumed:
337
+ * --c-button-radius, --s-brand-subtle, --s-brand-fg, --s-brand-ring,
338
+ * --c-button-ghost-fg, --c-button-ghost-bg-hover, --s-ink-primary,
339
+ * --s-surface-raised, --s-border-subtle, --s-border-strong.
340
+ */
341
+ declare const iconButtonVariants: (props?: ({
342
+ variant?: "destructive" | "outline" | "ghost" | "solid" | null | undefined;
343
+ size?: "default" | "sm" | "lg" | "xs" | null | undefined;
344
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
345
+ interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof iconButtonVariants> {
346
+ asChild?: boolean;
347
+ /** Required for accessibility — icon-only buttons need a name. */
348
+ "aria-label": string;
349
+ }
350
+ declare const IconButton: React$1.ForwardRefExoticComponent<IconButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
351
+
352
+ /**
353
+ * Input — DFL Design System v0
354
+ *
355
+ * Tokens consumed:
356
+ * --c-input-{bg,fg,placeholder,border,border-hover,border-focus,ring-focus,border-error,radius}
357
+ *
358
+ * DS v0 spec: 36px height, surface-raised bg, 12px horizontal padding,
359
+ * border-focus ring (3px brand-ring) on :focus-visible.
360
+ */
152
361
  declare const Input: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
153
362
 
154
- declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: class_variance_authority_types.ClassProp | undefined) => string> & React$1.RefAttributes<HTMLLabelElement>>;
363
+ declare function InputOTP({ className, containerClassName, ...props }: React$1.ComponentProps<typeof OTPInput> & {
364
+ containerClassName?: string;
365
+ }): react_jsx_runtime.JSX.Element;
366
+ declare function InputOTPGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
367
+ declare function InputOTPSlot({ index, className, ...props }: React$1.ComponentProps<"div"> & {
368
+ index: number;
369
+ }): react_jsx_runtime.JSX.Element;
370
+ declare function InputOTPSeparator({ ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
371
+
372
+ /**
373
+ * Kbd — DFL Design System v0 (NEW in v1.0.0).
374
+ *
375
+ * Single-key chip. Combine like:
376
+ * <Kbd>⌘</Kbd><Kbd>K</Kbd>
377
+ *
378
+ * Also exposed as the `kbd` prop on <Button /> for inline shortcut hints.
379
+ *
380
+ * Tokens consumed:
381
+ * --s-surface-raised, --s-border-subtle, --s-ink-muted, --p-radius-sm,
382
+ * --s-font-mono.
383
+ */
384
+ declare const kbdVariants: (props?: ({
385
+ size?: "default" | "sm" | "lg" | null | undefined;
386
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
387
+ interface KbdProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof kbdVariants> {
388
+ }
389
+ declare const Kbd: React$1.ForwardRefExoticComponent<KbdProps & React$1.RefAttributes<HTMLElement>>;
390
+
391
+ /**
392
+ * Label — DFL Design System v0
393
+ *
394
+ * DS v0 spec: 12px, weight 500, leading 1.4. Two variants:
395
+ * default — Inter, sentence case for form fields.
396
+ * mono — JetBrains Mono uppercase, used for "meta about meta" (KeyValueList keys, table headers).
397
+ */
398
+ declare const labelVariants: (props?: ({
399
+ variant?: "default" | "mono" | null | undefined;
400
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
401
+ declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: ({
402
+ variant?: "default" | "mono" | null | undefined;
403
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLLabelElement>>;
404
+
405
+ declare function Menubar({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Root>): react_jsx_runtime.JSX.Element;
406
+ declare function MenubarMenu({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Menu>): react_jsx_runtime.JSX.Element;
407
+ declare function MenubarGroup({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Group>): react_jsx_runtime.JSX.Element;
408
+ declare function MenubarPortal({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Portal>): react_jsx_runtime.JSX.Element;
409
+ declare function MenubarRadioGroup({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.RadioGroup>): react_jsx_runtime.JSX.Element;
410
+ declare function MenubarTrigger({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
411
+ declare function MenubarContent({ className, align, alignOffset, sideOffset, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Content>): react_jsx_runtime.JSX.Element;
412
+ declare function MenubarItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Item> & {
413
+ inset?: boolean;
414
+ variant?: "default" | "destructive";
415
+ }): react_jsx_runtime.JSX.Element;
416
+ declare function MenubarCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.CheckboxItem>): react_jsx_runtime.JSX.Element;
417
+ declare function MenubarRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.RadioItem>): react_jsx_runtime.JSX.Element;
418
+ declare function MenubarLabel({ className, inset, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Label> & {
419
+ inset?: boolean;
420
+ }): react_jsx_runtime.JSX.Element;
421
+ declare function MenubarSeparator({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Separator>): react_jsx_runtime.JSX.Element;
422
+ declare function MenubarShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
423
+ declare function MenubarSub({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Sub>): react_jsx_runtime.JSX.Element;
424
+ declare function MenubarSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
425
+ inset?: boolean;
426
+ }): react_jsx_runtime.JSX.Element;
427
+ declare function MenubarSubContent({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.SubContent>): react_jsx_runtime.JSX.Element;
428
+
429
+ declare function NavigationMenu({ className, children, viewport, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
430
+ viewport?: boolean;
431
+ }): react_jsx_runtime.JSX.Element;
432
+ declare function NavigationMenuList({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.List>): react_jsx_runtime.JSX.Element;
433
+ declare function NavigationMenuItem({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Item>): react_jsx_runtime.JSX.Element;
434
+ declare const navigationMenuTriggerStyle: (props?: class_variance_authority_types.ClassProp | undefined) => string;
435
+ declare function NavigationMenuTrigger({ className, children, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
436
+ declare function NavigationMenuContent({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Content>): react_jsx_runtime.JSX.Element;
437
+ declare function NavigationMenuViewport({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): react_jsx_runtime.JSX.Element;
438
+ declare function NavigationMenuLink({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Link>): react_jsx_runtime.JSX.Element;
439
+ declare function NavigationMenuIndicator({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): react_jsx_runtime.JSX.Element;
440
+
441
+ declare function Pagination({ className, ...props }: React$1.ComponentProps<"nav">): react_jsx_runtime.JSX.Element;
442
+ declare function PaginationContent({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
443
+ declare function PaginationItem({ ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
444
+ type PaginationLinkProps = {
445
+ isActive?: boolean;
446
+ } & Pick<React$1.ComponentProps<typeof Button>, "size"> & React$1.ComponentProps<"a">;
447
+ declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
448
+ declare function PaginationPrevious({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
449
+ declare function PaginationNext({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
450
+ declare function PaginationEllipsis({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
155
451
 
156
452
  declare const Popover: React$1.FC<PopoverPrimitive.PopoverProps>;
157
453
  declare const PopoverTrigger: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -162,6 +458,12 @@ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive
162
458
  declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
163
459
  declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
164
460
 
461
+ declare function ResizablePanelGroup({ className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelGroup>): react_jsx_runtime.JSX.Element;
462
+ declare function ResizablePanel({ ...props }: React$1.ComponentProps<typeof ResizablePrimitive.Panel>): react_jsx_runtime.JSX.Element;
463
+ declare function ResizableHandle({ withHandle, className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
464
+ withHandle?: boolean;
465
+ }): react_jsx_runtime.JSX.Element;
466
+
165
467
  declare const ScrollArea: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
166
468
  declare const ScrollBar: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
167
469
 
@@ -184,7 +486,7 @@ declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dial
184
486
  declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
185
487
  declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
186
488
  declare const sheetVariants: (props?: ({
187
- side?: "top" | "right" | "bottom" | "left" | null | undefined;
489
+ side?: "top" | "bottom" | "right" | "left" | null | undefined;
188
490
  } & class_variance_authority_types.ClassProp) | undefined) => string;
189
491
  interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
190
492
  }
@@ -270,6 +572,10 @@ declare const SidebarMenuSubButton: React$1.ForwardRefExoticComponent<Omit<React
270
572
 
271
573
  declare function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
272
574
 
575
+ declare function Slider({ className, defaultValue, value, min, max, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
576
+
577
+ declare const SonnerToaster: ({ ...props }: ToasterProps) => react_jsx_runtime.JSX.Element;
578
+
273
579
  declare const Switch: React$1.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
274
580
 
275
581
  declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & React$1.RefAttributes<HTMLTableElement>>;
@@ -288,8 +594,36 @@ declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.
288
594
 
289
595
  interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaElement> {
290
596
  }
597
+ /**
598
+ * Textarea — DFL Design System v0
599
+ *
600
+ * Shares Input tokens (--c-input-*). Multi-line, 80px min height.
601
+ */
291
602
  declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
292
603
 
604
+ declare const ToastProvider: React$1.FC<ToastPrimitives.ToastProviderProps>;
605
+ declare const ToastViewport: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastViewportProps & React$1.RefAttributes<HTMLOListElement>, "ref"> & React$1.RefAttributes<HTMLOListElement>>;
606
+ declare const Toast: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastProps & React$1.RefAttributes<HTMLLIElement>, "ref"> & VariantProps<(props?: ({
607
+ variant?: "default" | "destructive" | null | undefined;
608
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLLIElement>>;
609
+ declare const ToastAction: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
610
+ declare const ToastClose: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastCloseProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
611
+ declare const ToastTitle: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastTitleProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
612
+ declare const ToastDescription: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastDescriptionProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
613
+ type ToastComponentProps = React$1.ComponentPropsWithoutRef<typeof Toast>;
614
+ type ToastActionElement = React$1.ReactElement<typeof ToastAction>;
615
+
616
+ declare function Toaster(): react_jsx_runtime.JSX.Element;
617
+
618
+ declare const toggleVariants: (props?: ({
619
+ variant?: "default" | "outline" | null | undefined;
620
+ size?: "default" | "sm" | "lg" | null | undefined;
621
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
622
+ declare function Toggle({ className, variant, size, ...props }: React$1.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
623
+
624
+ declare function ToggleGroup({ className, variant, size, children, ...props }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
625
+ declare function ToggleGroupItem({ className, children, variant, size, ...props }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
626
+
293
627
  interface ProtectedRouteProps {
294
628
  children: ReactNode;
295
629
  /** Called when user is not authenticated. Redirect or render fallback here. */
@@ -299,6 +633,59 @@ interface ProtectedRouteProps {
299
633
  }
300
634
  declare const ProtectedRoute: ({ children, onUnauthenticated, loadingFallback, }: ProtectedRouteProps) => react_jsx_runtime.JSX.Element;
301
635
 
636
+ interface DflRemoteProps {
637
+ src: string;
638
+ title: string;
639
+ authToken?: string | null;
640
+ supabaseSession?: {
641
+ access_token: string;
642
+ user?: {
643
+ id: string;
644
+ };
645
+ } | null;
646
+ onNavigate?: (path: string) => void;
647
+ onReady?: () => void;
648
+ fallback?: React.ReactNode;
649
+ className?: string;
650
+ style?: React.CSSProperties;
651
+ allow?: string;
652
+ }
653
+ declare function DflRemote({ src, title, authToken, supabaseSession, onNavigate, onReady, fallback, className, style, allow, }: DflRemoteProps): react_jsx_runtime.JSX.Element;
654
+
655
+ interface IframeAwareProps {
656
+ children: React.ReactNode;
657
+ allowedOrigins?: RegExp[];
658
+ }
659
+ declare function IframeAware({ children, allowedOrigins }: IframeAwareProps): react_jsx_runtime.JSX.Element;
660
+
661
+ interface IframeContextValue {
662
+ token: string | null;
663
+ userId: string | null;
664
+ ready: boolean;
665
+ }
666
+ declare const IframeContext: React$1.Context<IframeContextValue>;
667
+
668
+ declare const ALLOWED_ORIGINS: RegExp[];
669
+ type IframeMessageType = "DFL_SET_TOKEN" | "DFL_NAVIGATE" | "DFL_READY" | "DFL_RESIZE";
670
+ interface DflSetTokenMessage {
671
+ type: "DFL_SET_TOKEN";
672
+ token: string;
673
+ userId?: string;
674
+ }
675
+ interface DflNavigateMessage {
676
+ type: "DFL_NAVIGATE";
677
+ path: string;
678
+ }
679
+ interface DflReadyMessage {
680
+ type: "DFL_READY";
681
+ }
682
+ interface DflResizeMessage {
683
+ type: "DFL_RESIZE";
684
+ height: number;
685
+ }
686
+ type DflIframeMessage = DflSetTokenMessage | DflNavigateMessage | DflReadyMessage | DflResizeMessage;
687
+ declare function isAllowedOrigin(origin: string): boolean;
688
+
302
689
  interface LoginPageProps {
303
690
  /** Logo element or image src string. Defaults to DFL logo. */
304
691
  logo?: ReactNode | string;
@@ -319,6 +706,158 @@ interface LoginPageProps {
319
706
  }
320
707
  declare function LoginPage({ logo, title, redirectUrl, onSuccess, onError, defaultMode, termsUrl, className, }: LoginPageProps): react_jsx_runtime.JSX.Element;
321
708
 
709
+ interface LoginScreenProps {
710
+ /** Logo element or image src. Defaults to the DFL logomark. */
711
+ logo?: React$1.ReactNode | string;
712
+ /** Heading. Defaults to "welcome, fellow!". */
713
+ title?: React$1.ReactNode;
714
+ /** Sub-heading shown under the title. */
715
+ subtitle?: React$1.ReactNode;
716
+ /** Email field label. Defaults to "Email". */
717
+ emailLabel?: string;
718
+ /** Password field label. Defaults to "Password". */
719
+ passwordLabel?: string;
720
+ /** Submit button label. Defaults to "Sign In". */
721
+ submitLabel?: string;
722
+ /** Called with the entered credentials. May be async. */
723
+ onSubmit?: (email: string, password: string) => void | Promise<void>;
724
+ /** Error message rendered above the submit button. */
725
+ error?: string | null;
726
+ /** Loading state — disables fields and shows a spinner on submit. */
727
+ loading?: boolean;
728
+ /** Extra content under the form (e.g. "Sign up" / "Forgot password?" links). */
729
+ footer?: React$1.ReactNode;
730
+ /** Outer wrapper class. */
731
+ className?: string;
732
+ }
733
+ declare function LoginScreen({ logo, title, subtitle, emailLabel, passwordLabel, submitLabel, onSubmit, error, loading, footer, className, }: LoginScreenProps): react_jsx_runtime.JSX.Element;
734
+
735
+ /**
736
+ * PasswordInput organism
737
+ * Canonical password field with a show/hide reveal toggle.
738
+ * Generalised from dfl-reviews' atoms/password-input. Optional label/error/help.
739
+ * Uncontrolled-friendly: spreads native input props; `onValueChange` is a
740
+ * convenience on top of the standard `onChange`.
741
+ */
742
+
743
+ interface PasswordInputProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Input>, "type"> {
744
+ /** Optional field label rendered above the input. */
745
+ label?: React$1.ReactNode;
746
+ /** Error text — also flips the border to danger. */
747
+ error?: string;
748
+ /** Helper text shown when there's no error. */
749
+ helpText?: string;
750
+ /** Convenience callback receiving the raw string value. */
751
+ onValueChange?: (value: string) => void;
752
+ }
753
+ declare const PasswordInput: React$1.ForwardRefExoticComponent<PasswordInputProps & React$1.RefAttributes<HTMLInputElement>>;
754
+
755
+ /**
756
+ * UserAvatar organism
757
+ * Avatar with a deterministic member-palette fallback hue.
758
+ *
759
+ * Behavior-agnostic: pass `name` (and optional `src`). When no image loads,
760
+ * the initials are shown on one of the 10 `--member-*` hues, picked
761
+ * deterministically from a stable hash of `id ?? name`. The same person
762
+ * therefore always gets the same colour across every DFL app.
763
+ */
764
+
765
+ /** Number of member hues defined as `--member-1..N` in tokens.css. */
766
+ declare const MEMBER_PALETTE_SIZE = 10;
767
+ /** Up-to-two-letter uppercase initials from a display name. */
768
+ declare function getInitials(name: string): string;
769
+ /**
770
+ * Deterministic 1..MEMBER_PALETTE_SIZE index from an arbitrary seed string.
771
+ * Pure + stable (djb2). Same seed → same hue, on any platform.
772
+ */
773
+ declare function memberHueIndex(seed: string, paletteSize?: number): number;
774
+ /** The CSS var() expression for a seed's member hue (e.g. `var(--member-3)`). */
775
+ declare function memberHueVar(seed: string): string;
776
+ interface UserAvatarProps extends React$1.ComponentPropsWithoutRef<typeof Avatar> {
777
+ /** Display name — drives the initials and (by default) the hue. */
778
+ name: string;
779
+ /** Avatar image URL. Falls back to the coloured initials if absent/broken. */
780
+ src?: string | null;
781
+ /**
782
+ * Stable identity used to pick the hue (e.g. user id). Defaults to `name`.
783
+ * Pass a sticky id so the colour survives display-name changes.
784
+ */
785
+ colorSeed?: string;
786
+ }
787
+ /**
788
+ * <UserAvatar name="Ada Lovelace" src={url} colorSeed={userId} />
789
+ */
790
+ declare const UserAvatar: React$1.ForwardRefExoticComponent<UserAvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
791
+
792
+ interface UserMenuItem {
793
+ /** Visible label. */
794
+ label: string;
795
+ /** Optional leading icon (lucide component or any node). */
796
+ icon?: React$1.ReactNode;
797
+ /** Click handler. */
798
+ onSelect?: () => void;
799
+ /** Render as a destructive (danger-fg) item. */
800
+ destructive?: boolean;
801
+ /** Insert a separator before this item. */
802
+ separatorBefore?: boolean;
803
+ }
804
+ interface UserMenuProps {
805
+ /** Display name shown in the label + driving the avatar. */
806
+ name: string;
807
+ /** Optional email shown under the name. */
808
+ email?: string;
809
+ /** Avatar image URL. */
810
+ avatarUrl?: string | null;
811
+ /** Stable identity for the avatar hue (defaults to name). */
812
+ colorSeed?: string;
813
+ /** Show the name + chevron next to the avatar (default true). */
814
+ showName?: boolean;
815
+ /**
816
+ * Custom menu items. When omitted, a default Profile / Settings / Sign out
817
+ * set is rendered from the convenience handlers below.
818
+ */
819
+ items?: UserMenuItem[];
820
+ /** Convenience: rendered as the "Profile" item when `items` is not given. */
821
+ onProfile?: () => void;
822
+ /** Convenience: rendered as the "Settings" item when `items` is not given. */
823
+ onSettings?: () => void;
824
+ /** Convenience: rendered as the destructive "Sign out" item. */
825
+ onSignOut?: () => void;
826
+ /** Dropdown alignment. Defaults to "end". */
827
+ align?: "start" | "center" | "end";
828
+ className?: string;
829
+ }
830
+ declare function UserMenu({ name, email, avatarUrl, colorSeed, showName, items, onProfile, onSettings, onSignOut, align, className, }: UserMenuProps): react_jsx_runtime.JSX.Element;
831
+
832
+ interface ConfirmDialogProps {
833
+ /** Dialog heading. */
834
+ title: React$1.ReactNode;
835
+ /** Body / description. Optional. */
836
+ body?: React$1.ReactNode;
837
+ /** Confirm button label. Defaults to "Confirm". */
838
+ confirmLabel?: string;
839
+ /** Cancel button label. Defaults to "Cancel". */
840
+ cancelLabel?: string;
841
+ /**
842
+ * Visual intent of the confirm button.
843
+ * "default" → brand primary; "destructive" → danger styling.
844
+ */
845
+ variant?: "default" | "destructive";
846
+ /** Called when the user confirms. May be async. */
847
+ onConfirm?: () => void | Promise<void>;
848
+ /** Called when the user cancels / dismisses. */
849
+ onCancel?: () => void;
850
+ /** Controlled open state. Omit to use the `trigger`. */
851
+ open?: boolean;
852
+ /** Controlled open-change handler. */
853
+ onOpenChange?: (open: boolean) => void;
854
+ /** Element that opens the dialog (uncontrolled usage). */
855
+ trigger?: React$1.ReactNode;
856
+ /** Disable the confirm button (e.g. while a parent validates). */
857
+ confirmDisabled?: boolean;
858
+ }
859
+ declare function ConfirmDialog({ title, body, confirmLabel, cancelLabel, variant, onConfirm, onCancel, open, onOpenChange, trigger, confirmDisabled, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
860
+
322
861
  interface NavItem {
323
862
  title: string;
324
863
  url: string;
@@ -397,4 +936,79 @@ interface AppNavbarProps {
397
936
  }
398
937
  declare function AppNavbar({ breadcrumbs, userInfo, theme, onThemeToggle, onProfileClick, onSettingsClick, onSignOut, actions, className, }: AppNavbarProps): react_jsx_runtime.JSX.Element;
399
938
 
400
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEntry, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input, Label, LoginPage, type LoginPageProps, type NavGroup, type NavItem, type NavbarUserInfo, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, type ProtectedRouteProps, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UserInfo, badgeVariants, buttonVariants, useFormField, useSidebar };
939
+ /** Minimal subset of `@supabase/supabase-js` SupabaseClient we rely on.
940
+ * Kept structural so the package never hard-depends on supabase-js. */
941
+ interface PublishDrawerSupabase {
942
+ functions: {
943
+ invoke: (name: string, options?: {
944
+ body?: unknown;
945
+ method?: string;
946
+ }) => Promise<{
947
+ data: unknown;
948
+ error: {
949
+ message: string;
950
+ } | null;
951
+ }>;
952
+ };
953
+ }
954
+ /** A connected platform account, as returned by dfl-publisher-list-accounts. */
955
+ interface PublisherAccount {
956
+ id: string;
957
+ platform: string;
958
+ account_id: string;
959
+ account_name: string | null;
960
+ is_active?: boolean;
961
+ }
962
+ type PublishStatus = "idle" | "loading-accounts" | "rendering-thumb" | "publishing" | "done" | "error";
963
+ interface PublishResult {
964
+ zernio_post_id: string;
965
+ post_url?: string;
966
+ status: string;
967
+ log_id?: string;
968
+ lesson_id?: string;
969
+ }
970
+ interface PublishDrawerProps {
971
+ /** Controls drawer visibility. */
972
+ open: boolean;
973
+ /** Called when the drawer requests to open/close. */
974
+ onOpenChange: (open: boolean) => void;
975
+ /** Injected Supabase client (carries the user session JWT). */
976
+ supabase: PublishDrawerSupabase;
977
+ /** URL of the rendered video to publish. Required. */
978
+ videoUrl: string;
979
+ /** Optional transcript (passed through to register-lesson / create-post). */
980
+ transcript?: string;
981
+ /** Optional pre-filled title (creator can edit). */
982
+ suggestedTitle?: string;
983
+ /** Optional pre-filled description (creator can edit). */
984
+ suggestedDescription?: string;
985
+ /** Optional pre-filled thumbnail URL (e.g. already rendered). */
986
+ suggestedThumbnailUrl?: string;
987
+ /** Optional Thumbify template id — when set, a "Generate thumbnail" button
988
+ * calls render-design-template with this id. */
989
+ thumbnailTemplateId?: string;
990
+ /** Optional BU id, passed through to the edge fns. */
991
+ buId?: string;
992
+ /** Whether to also register the lesson in Course Shaper after publishing.
993
+ * Defaults to true. */
994
+ registerLesson?: boolean;
995
+ /** Called on a successful publish round-trip. */
996
+ onPublished?: (result: PublishResult) => void;
997
+ /** Called on error. */
998
+ onError?: (error: Error) => void;
999
+ className?: string;
1000
+ }
1001
+ /** Parse a comma/space-separated tag/keyword string into a clean array. */
1002
+ declare function parseTags(raw: string): string[];
1003
+ /** v1: only YouTube accounts are publishable. */
1004
+ declare function filterPublishableAccounts(accounts: PublisherAccount[]): PublisherAccount[];
1005
+ /** Validate the form is ready to publish. Returns an error code or null. */
1006
+ declare function validatePublishForm(input: {
1007
+ videoUrl: string;
1008
+ title: string;
1009
+ description: string;
1010
+ accountId: string | null;
1011
+ }): string | null;
1012
+ declare function PublishDrawer({ open, onOpenChange, supabase, videoUrl, transcript, suggestedTitle, suggestedDescription, suggestedThumbnailUrl, thumbnailTemplateId, buId, registerLesson, onPublished, onError, className, }: PublishDrawerProps): react_jsx_runtime.JSX.Element;
1013
+
1014
+ export { ALLOWED_ORIGINS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEntry, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type DflIframeMessage, type DflNavigateMessage, type DflReadyMessage, DflRemote, type DflRemoteProps, type DflResizeMessage, type DflSetTokenMessage, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, type IconButtonProps, IframeAware, type IframeAwareProps, IframeContext, type IframeContextValue, type IframeMessageType, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, type KbdProps, Label, LoginPage, type LoginPageProps, LoginScreen, type LoginScreenProps, MEMBER_PALETTE_SIZE, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type NavGroup, type NavItem, type NavbarUserInfo, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, type ProtectedRouteProps, PublishDrawer, type PublishDrawerProps, type PublishDrawerSupabase, type PublishResult, type PublishStatus, type PublisherAccount, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SonnerToaster, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast, ToastAction, type ToastActionElement, ToastClose, type ToastComponentProps, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatar, type UserAvatarProps, type UserInfo, UserMenu, type UserMenuItem, type UserMenuProps, badgeVariants, buttonVariants, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, toggleVariants, useFormField, useSidebar, validatePublishForm };